본문 바로가기

날리지/언어

[Maven] maven build error 잘실행되다가 어느순간 Maven을 Build를 하면.. [ERROR] COMPILATION ERROR : [INFO] -------------------------------------------------------------[ERROR] \eGovFrameDev-2.0.0-FullVer\workspace\PANTECH\src\main\java\egovframework\com\cmm\EgovComCrossSiteHndlr.java:[6,24] package javax.servlet.jsp does not exist[ERROR] \eGovFrameDev-2.0.0-FullVer\workspace\PANTECH\src\main\java\egovframework\com\cmm\EgovComCrossSiteH.. 더보기
루씬 색인 속도 향상하기 오픈소스를 가져다 쓸다면 "유지보수와 튜닝 문제"에 골치 아파질 때가 많다. 오픈소스 덕분에 빠르게 시작할 수 있지만 내부에 대한 이해 부족으로 해법을 찾기 어렵기 때문이다. 혹자는 오픈소스에는 개발자들이 많아 질문만 던지면 즉시 해결될 것이란 유언비어에 빠지는 분도 있는데, 실무에서 만나게 되는 시급한 문제에 대해서는 즉시 응대와 해결은 꿈도 꾸질 말아야 한다. 특히 국내 실정은 더하다. 루씬도 역시 오픈소스인 것 같다. 루씬 2.3.2 소스를 보고 있는데 색인어 추출 루틴들인 Analyzer 계열 클래스들의 복잡도가 만만치 않다. Payload란 실험적인 개념, PositionIncrement 개념, 수많은 클래스들 등이 주석과 함께 코드에 뒤범벅이 되어 있어 웬만한 내공이 아니면 이해하기 어렵다. .. 더보기
멀티 쓰레드 import java.util.concurrent.locks.Condition;import java.util.concurrent.locks.ReentrantLock; class Info { String name; int value; // toString을 오버라이드를 했는데 해당 클래스를 출력하면 toString에 있는 내용이 기본적으로 출력 @Override public String toString() { return (name +"(" + value +")"); }} class Goods { Info info; private boolean isUploaded; // lock을 위한 ReentrantLock private final ReentrantLock locker =new ReentrantLock.. 더보기
[git] eclipse 에서 커밋이 안 될때 git pull origin master git add -A git commit -m "modified code" git push origin master 더보기
[개발방법론] 전통적인 개발 방법론 전통적(고전적) 소프트웨어 개발방법(= 구조적 소프트웨어 개발방법)과거의 개발 경험을 토대로하여 제안한 것 요구사항 분석특징소프트웨어 개발의 실제 첫 단계개발 대상에 대한 사용자의 요구사항 이해 및 문서화분석 작업 단계문제 인식 : 사용자와 회의, 설문조사, 각종 문서 검토 등을 통해 요구사항 파악평가와 종합 : 요구사항에 대한 정보 평가 및 해결책 종합모델 제작문서화 및 검토 : 요구사항 분석 명세서 작성요구사항 분석의 한계대화 장벽사용자와 개발자 간의 의사소통 어려움솔루션 : 다이어그램, 프로토타입시스템 복잡도소프트웨어 체계화에 따른 새로운 개념 요구시스템 규모와 대상이 광범위해짐에 따른 소프트웨어 복잡화솔루션 : 구조적 분석, 객체지향 분석요구 변경요구 명세화요구사항 분석가의 자질요구사항 분석가 :.. 더보기
[Java] ThreadLocal 사용법 자바 1.2 버전부터 제공되고 있지만 아직 다수의 개발자들이 잘 몰라서 활용을 잘 못하는 기능이 하나 있는데, 그 기능이 바로 쓰레드 단위로 로컬 변수를 할당하는 기능이다. 이 기능은 ThreadLocal 클래스를 통해서 제공되는데, 본 글에서는 ThreadLocal 클래스의 기본적인 사용방법과 활용 방법을 살펴보도록 하겠다. ThreadLocal이란? 일반 변수의 수명은 특정 코드 블록(예, 메서드 범위, for 블록 범위 등) 범위 내에서만 유효하다. { int a = 10; ... // 블록 내에서 a 변수 사용 가능 } // 변수 a는 위 코드 블록이 끝나면 더 이상 유효하지 않다. (즉, 수명을 다한다.) 반면에 ThreadLocal을 이용하면 쓰레드 영역에 변수를 설정할 수 있기 때문에, 특정.. 더보기