■결정장애를 위한 패키지 구조 선택법안녕하세요 박스여우입니다. 얼마 전에 프로젝트를 진행하며 패키지를 어떻게 해야 효율적이고 예뻐 보일까 고민에 빠진 적이 있었습니다. 이렇게 할까, 저렇게 할까 고민하다 패키지구조를 몇 번이나 수정했는지 모르겠습니다... 그래서 이번 포스팅에서는! 조금 가벼운 주제로 저처럼 패키지 구조를 선택하는 대에 어려움을 겪고 계시는 분들을 위해 패키지의 구조와 어떤 구조가 적합한지 선택하는 방법에 대해서 알아보도록 하겠습니다. ■레이어 우선 구조우선 첫 번째 구조인 레이어 우선 구조입니다. 레이어 우선 구조는 각각의 이름을 가진 모듈을 하위에 두고 service, dto, dao 등 각 클래스들의 역할로 묶은 구조입니다. - com.boxfox.service.modulename-..
안녕하세요 박스여우입니다. 최근 들어 github를 본격적으로 사용하기 시작하면서 github에 대한 관심이 커지게 되었습니다. 현재 진행 중인 프로젝트도 github를 사용하여 개발하다 보니 정말 편리하더군요. 하지만, 프로젝트를 진행하면서 자꾸 branch를 사용하는 용도가 이게 맞는지, 더 깔끔하게 git을 사용하는 방법이 없는지 고민하게 되었습니다. 그러던 중 git flow라는 녀석을 알게 되었습니다. ■Git flow깃 흐름? git flow가 뭐냐고 물으신다면 브랜칭 기법이라고 말씀드릴 수 있습니다. 프로젝트를 진행하면서 수많은 브랜치를 생성하고 병합합니다. 이러한 수많은 브랜칭 작업을 규격화하여 브랜치를 쉽게 다룰 수 있도록 해 주는 규칙, 전략입니다. 브랜칭 모델은 여러 가지가 있지만 g..
안녕하세요 박스여우입니다. 이번 포스팅은 요즘 프로젝트를 진행하며 사용하고 있는 Spring에 대한 포스팅을 작성해 보도록 하겠습니다. Spring에서는 JDBC를 사용하지만, Mybatis라는 프레임워크를 사용합니다. 따라서 이번 포스팅에서는 Spring에서 Mybatis를 이용하여 Mysql을 사용하는 방법에 대해 알아보도록 하겠습니다. ■Mybatis란?우선 Mysql을 연동하기 전에 Mysql을 관리하게될 Mybatis라는 녀석에 대해서 알아보고 넘어가도록 하겠습니다. Mybatis는 JDBC로 처리하는 상당 부분의 작업을 대신해주고 SQL 문을 코드로부터 완전히 분리해줄 수 있는 퍼시스턴스 프레임워크 입니다. Spring에서 직접 JDBC를 사용하여 DB를 사용할 수 있지만, Mybatis를 사..
안녕하세요 박스여우입니다. 이번에는 드디어 제가 배우고 싶었던 Spring에 대해 알아보고 개발하기 전 셋팅을 진행해 보고자 합니다. 사실 주변 사람들한테 들은바로는 Spring 자체는 어렵지 않은데 개발환경을 셋팅하는게 힘들다고 하더군요. 그래서 이번 포스팅을 통해 셋팅 방법을 기록해 보고자 합니다. ■ Spring? 우선 Spring이 뭔지부터 개념을 잡아야 할것 같습니다. (봄?) Spring 은 Java EE 의 복잡한 개발을 단순화 시켜줄 수 있는 Framework 입니다. Spring Framework는 Java EE의 개발을 POJO(Plain Old Java Object) 기반으로 개발할 수 있게 해 주며 Spring Framework를 이용하면 MVC(Model-View-Controlle..
안녕하세요 박스여우입니다. 프로젝트를 진행하던 도중 Stack Overflow에서 한 소스를 봤는데, static import와 제네릭 메소드라는 개념을 이용하여 코드를 작성했더군요. 저는 왜 그동안 한번도 접해보지 못했던 개념들일까요. 제네릭 클래스는 사용해 봤지만 제네릭 메소드는 사용해보지 못했네요.. 그래서 이번에는 이것들을 배우고자 포스팅을 하게 되었습니다. ■ Static Importstatic import는 Java 5.0 부터 추가된 기능입니다. static 메소드나 static 변수에 접근하기 위해 사용하는 import인데요, 정확한 사용방법은 예제를 통해 살펴보도록 하겠습니다. 123456package com.boxfox.statics; public class StaticTest{ pub..
안녕하세요 박스여우입니다. 이번 포스팅에서는 일반 프로젝트의 Export > Runnable Jar 파일과 같이 실행 가능한 Jar 파일을 Maven을 통해서 생성하는 방법에 대해 알아보도록 하겠습니다. ※ 해당 포스팅은 이전 포스팅의 다중 모듈 프로젝트를 기반으로 진행됩니다! ■ MANIFEST.MF (수동)실행 가능한 Jar 파일을 생성하기 위해서 Main 클래스가 존재하는 Jar 파일을 열어 MANIFEST.MF를 수정해야 하는 아주 귀찮은 과정을 거쳐야 합니다.저기 보이는 MANIFEST.MF 파일을 메모장으로 열어 class path를 설정하여 모듈과 라이브러리들을 등록하고 Main 클래스도 적어 주어야 합니다. 바로 이렇게 말이죠! 게다가 프로젝트에 사용되는 다른 모듈들의 build 된 Jar..
안녕하세요. 박스여우입니다. 요즘 일도 그렇고 프로젝트도 그렇고 Maven을 사용할 일이 잦은 것 같습니다. 이번 포스팅은 현재 진행 중인 프로젝트로 인해 필요한 부분인데요, 팀 프로젝트이다 보니 라이브러리 경로에 관련돼서 문제가 발생하고 하나의 프로젝트를 여러 명이어서 다루다 보니 조금 불편하더군요.. 그래서! Maven을 통해 이를 해결하고자 합니다. 이번 포스팅에서는 Maven의 다중 모듈을 구성하고 라이브러리를 관리하도록 해보겠습니다! 우선 Maven 프로젝트를 구성하기 전에 이전 포스팅 에서 Maven을 설치해야 합니다. Maven 설치를 마쳤다면 가볍게 넘어가 주시면 됩니다. ■ 다중 모듈 Maven Project!이번 포스팅은 이클립스를 기반으로 진행하도록 하겠습니다. (사실 Maven 프로..
안녕하세요 박스여우입니다. 이번에는 간만에 가벼운 주제로 MS word에서 이미지에 번호를 매기고 간략한 설명을 할 수 있는 캡션을 추가하는 방법에 대해 알아보도록 하겠습니다. 그림을 위처럼 추가했다면 오른쪽에 이상한 모양의 버튼이 보이실겁니다. 텍스트와 이미지의 배치를 설정하는 버튼인데, 캡션을 추가하기 전에 저 버튼을 눌러 설정을 해 주셔야 해요텍스트 줄 안을 해도 무방하지만, 이미지를 기준으로 캡션을 가운데 정렬을 하시고 싶으시다면 다른 텍스트 배치를 선택해 주셔야 해요. 그나마 괜찮은게 텍스트 위/아래 입니다.설정을 하셨으면 이미지를 우클릭 하신 뒤에 나오는 캡션 삽입을 눌러 본격적으로 캡션을 추가해 보도록 합시다. 처음에 캡션 추가 창을 보면 요렇게 나오게 되는데요, 레이블은 해당 캡션의 이름,..
Android, Winform, Swing, JavaFX등 대부분의 GUI 프레임워크들은 GUI를 다룰때 단일 쓰레드만을 지원합니다. 물론 별도의 쓰레드를 통한 작업이 가능하지만, GUI를 다루기 위해서는 다시 GUI를 담당하는 EDT(Event Dispatch Thread)를 이용해야만 합니다. 그 이유는 무엇일까요? ■ 멀티쓰레딩을 위한 시도AWT는 일반적인 다중 쓰레드를 지원하는 java library 로 시작하였습니다. 하지만 AWT를 이용함으로써 발생하는 교착상태와 경쟁 조건(race condition)등의 문제점이 발견되면서 단일 쓰레딩으로 방향을 돌렸고 그 이후에 개발된 Swing에서는 멀티쓰레딩을 제한한 설계를 하게 되었습니다. AWT외에 다른 프레임워크들도 다중 쓰레드를 사용하고자 하는 ..
안녕하세요 박스여우입니다. 오랜만의 포스팅 입니다. 이번에는 Maven에 대해서 알아보고자 합니다. 저도 평소 프로젝트 할때는 전혀 필요가 없었는데, 다른 오픈소스를 살펴보다 Maven이 필요해서 사용하다보니 Maven을 사용한 프로젝트가 오히려 더 편리하게 느껴져서 정리해 보고자 합니다. ■ Maven프로젝트를 진행하게 되면 단순히 자신이 작성한 코드만으로 개발하는것이 아니라 많은 라이브러리들을 활용해서 개발을 하게 됩니다. 이 때 사용되는 라이브러리들의 수가 수십개가 훌쩍 넘어버리는 일이 발생해 이 많은 라이브러리들을 관리하는 것이 힘들어지는 경우가 종종 발생하곤 합니다. Maven은 이러한 문제를 해결해 줄 수 있는 도구 입니다. Maven은 내가 사용할 라이브러리 뿐만 아니라 해당 라이브러리가 작..