■ Anti-pattern우선 이에 대해 알아보기 전에 Anti-pattern에 대해 알아보도록 하겠습니다. 객체지향 프로그래밍에서는 싱글톤,옵저버 등 여러가지 디자인 패턴이 있습니다. 이러한 디자인 패턴은 객체지향 프로그래밍에 중요한 요소입니다. 하지만 이러한 디자인 패턴중에서 필요하거나 사용해야 하는 패턴도 있는 반면, 사용을 지양해야 하는 패턴들이 있습니다. 그런 패턴들을 Anti-pattern이라고 합니다. Anti-pattern은 실제 많이 사용되는 패턴일지라도 비효율적이거나 비생산적인 패턴을 의미합니다. 이러한 anti-pattern의 여러가지 예시를 알아보도록 하겠습니다. 1. God object하나의 클래스에 너무 많은 필드와 함수를 넣어서 너무 많은 것을 알고 너무 많은 것을 할 줄 아는..
■ 서론안녕하세요 박스여우입니다. 객체지향을 배울때 가장 혼동이 오고 무엇을 하는 개념이 될 수 있는 것들이 바로 인터페이스와 추상클래스가 아닐까 합니다. 이런 이유때문인지 회사의 면접을 볼때 객체지향을 잘 이해하고 있는지 확인하기 위한 단골 질문으로 나오는 문제이기도 합니다. 이번 포스팅에서는 인터페이스와 추상클래스에 대해 알아보도록 하겠습니다. ■ 인터페이스 - Interface인터페이스 무엇일까요? 우선 그 내용을 사전에서 찾아보도록 하겠습니다. 사물간 또는 사물과 인간 간의 의사소통이 가능하도록 일시적, 영속적인 접근을 목적으로 만들어진 매개체 라고 합니다. 위처럼 위키에서 서술된 내용이 사실 이번에 알아보고자 하는 인터페이스와 어느정도 일치하는 부분이 있습니다. 이에 대한 내용은 우선 인터페이스..
■ 직렬화 - Serialization여러 프로젝트를 진행하다보면 가끔씩 객체를 파일로 저장하거나 네트워크를 통해 전송하고 싶은 경우가 있습니다. 이럴경우 객체를 JSON으로 일일이 바꿔서 전송했는데요, 이처럼 불편한 방식을 사용하지 않고 정말 깔끔하게 객체그 자체를 저장하거나 전송할 수 있는 방법이 있습니다. 짐작하셨다싶이 그 방법은 바러 직렬화(Serialization)인데요, 이번 포스팅은 이 직렬화에 대해 알아보고 예제를 통해 사용 방법을 알아보도록 하겠습니다. ■ 직렬화란?직렬화라는 단어에는 무언가 일자로 늘어놓는것이 연상되는데요, 실제로 직렬화라는 개념은 이와 비슷합니다. 직렬화는 객체에 저장된 데이터를 스트림에 쓰기 위해 연속적인 데이터로 변환하는 것 입니다. 다시말해 객체의 내용을 바이트 ..
■ JVM - Java virtual machineJVM은 자바를 실행하기 위한 가상 머신입니다. java가 어떤 플랫폼에도 상관 없이 독립적으로 구동될 수 있는 비밀이 바로 이 JVM에 있습니다. Java로 작성된 프로그램은 모두 이 JVM이라는 가상 컴퓨터 위에서 구동되기 때문에 Java 애플리케이션이 실행되기 위해서는 받드시 JVM이 필요합니다. JVM은 Java의 컴파일에 관련하여 연관이 깊은데 이에 대한 내용은 이전 포스팅에서 이미 다뤘습니다. (http://boxfoxs.tistory.com/244) 이번 포스팅에서는 이러한 JVM의 메모리 구조에 대해서 알아보고자 합니다. ■ JVM의 메모리 구조응용프로그램이 실행되면, JVM은 시스템으로부터 프로그램을 수행하는데 필요한 메모리를 할당받고 J..
안녕하세요 박스여우입니다. 이번에는 JavaFX를 이용하여 가장 기본적인 버튼 클릭 이벤트를 구현해보도록 하겠습니다. ■ FXML & Controller지난 포스팅때도 말씀드렸다 싶이 JavaFX는 MVC 패턴을 사용하여 View를 FXML과 CSS로, 컨트롤러는 전달된 UI 컴포넌트를 의존성 주입 방식으로 활용하게 됩니다. 따라서 UI를 디자인 하는 디자이너와 프로그램을 개발하는 개발자 사이의 일을 명확하게 구별할 수 있습니다. 이번에는 이런 JavaFX의 기능들을 활용하여 FXML로 UI를 구현하고, 그 UI를 Controller로 다뤄보도록 하겠습니다. ■무작정 따라해보기지난 포스팅에서 진행한 eclipse에서의 JavaFX 셋팅을 진행해 주셔야 이번 과정을 수행하실 수 있습니다.eclipse에서 ..
안녕하세요 박스여우입니다. 오늘은 GUI 개발을 위한 JavaFX에 대해 알아보도록 하겠습니다. ■ Swing은 가라! JavaFX는 기존 Java의 표준 GUI 라이브러리인 Swing을 대체하기 위해 개발되었지만 훨씬 가볍고 강력합니다. GUI에서 컴포넌트를 호출할 때 애니메이션 전환, 흐림 효과나 drop shadow등과 같은 효과(effect)들은 유저 경험에 큰 변화를 만들 수 있는 중요한 요소 입니다. 이러한 요소들은 작고 디테일해서 크게 신경쓰지 않는 부분이지만, 응용 애플리케이션에 도입하게 되면 세련된 UI를 만들 수 있습니다. 이와같은 애니메이션과 전환 효과 등은 Swing으로 구현이 가능하지만 매우 고통스러운 작업을 거쳐야 구현이 가능합니다. 특별한 컴포넌트를 만들기 위해서는 셀 수도 없..
안녕하세요 박스여우입니다.최근 학교의 잔류조사 시스템 개발을 마무리 하고 있는데요, 사감선생님의 편의를 위해 조사된 결과를 엑셀 파일 형태로 출력해야 했습니다. 그래서 오늘은 Java에서 엑셀 파일(xls, xlsx)을 읽고 쓰는 방법을 소개해 드리려고 합니다. ■ Apache POI우선 엑셀파일을 텍스트 파일처럼 읽고 쓸수는 없습니다. 때문에 Java에서 엑셀파일을 다루기 위해 Apache POI 라이브러리를 사용해야 합니다. Apache POI 라이브러리를 다운받기 위해서는 https://poi.apache.org/download.html 요 주소로접속한 뒤에 스크롤을 내리다 보면위와같이 Binary Distribution 항목이 있습니다. 여기에서 빨간색 부분(poi-bin-3.15-beta2-....
해당 포스트는 윈도우를 기반으로 한 포스트 입니다. 리눅스가 아니니 리눅스를 찾아오신 분은 돌아가 주세요.. 안녕하세요 박스여우입니다.오늘은 java와 window command를 이용해서 프로세스를 다루는 방법을 알아보고자 합니다.갑자기 리눅스도 아니고 윈도우에서 프로세스를 다루려고 하는 이유는 한 회사에서 의뢰를 받아 프로그램을 개발중인데 만들다 보니 프로세스를 다뤄야 하는게 많더군요. 서버가 윈도우라 윈도우에서 하는 방법을 알아보고 있습니다. ■ 특정 포트 사용중인 프로세스 ID 찾기우선 cmd 창을 열고 netstat -a -o 요 명령어를 치면 현재 포트를 사용중인 프로세스에 대한 정보가 출력됩니다. 프로토콜,IP:포트,User,상태,프로세스 아이디 순으로 정렬되어 출력됩니다. 이를 이용해서 특..
안녕하세요 박스여우입니다. 오늘은 System.out(표준 출력)의 출력을 두개의 스트림으로 복제하거나 System.out 출력을 후킹하는 방법에 대해 알아보겠습니다. ■ System.out우선, Java의 System.out 스트림은 PrintStream 입니다.PrintStream에 대해 알아보자면 Java의 기본 출력 스트림인 OutputStream을 상속받고 있으며 일반적인 입출력 뿐만 아니라 파일 입출력에도 사용되는 스트림 입니다. System.setOut을 통해 System.out.print 등의 기본 시스템 출력을 다른 곳으로 돌릴 수 있습니다. 이를 이용해서 System.out 스트림을 후킹해 보도록 하겠습니다. 1234567891011121314151617181920212223242526..