발생일: 2010.02.10 문제: 업무 공유를 위해 팀원끼리 사용할 간단한 게시판을 하나 만들고 있다. 한 게시물에 여러 개의 태그를 달 수 있는 게시판이며, 태그는 형태로 구성되어 있다. 또한 gmail 의 목록처럼, 전체 목록을 뿌릴 때 엮여 있는 모든 태그를 보여준다. 좌측 메뉴에서 태그를 선택할 경우, 아래와 같이 해당 태그에 해당하는 게시물만 필터링하려고 한다. 그러다 매핑 테이블에서 and 조건으로 조회를 하려다가 난관에 봉착했다. 매핑 테이블에서 AND 조건을 추가하기가 쉽지 않다. task 테이블과 tag 테이블이 존재하며 매핑 테이블은 아래와 같이 구성되어 있다. [task_tag_map] task_id tag_id 데이터 샘플은 아래와 같다. (task_..
발생일: 2010.01.19 문제: unix 에서 현재 날짜를 출력하려면 date 커맨드를 날리면 된다. 그렇다면 포맷은 어떻게 지정해야 할까? 해결책: How to format date for display or to use in a shell script 이 포스트에 굉장히 잘 정리되어 있으니 참고해보자. 간단하게, date +FORMAT 형태로 사용하면 된다. 예를 들어, 10-01-19 23:11:12 를 표시하고 싶을 경우, date "+%y-%m-%d %T" 와 같이 표현하면 된다.
발생일: 2009.01.06 문제: 진행 중인 미니 프로젝트에서 웹 어플리케이션이 로딩될 때 설정해야 할 것들이 있다. 여기서는 contextRealRoot 를 메모리에 미리 올려둘 목적으로 쓰려고 하는데, 그 외에도 리소스나, 권한 등 일반적으로도 초기화 때 설정할 사항들이 많다. 스트럿츠 프레임웍의 경우, 웹 어플리케이션의 초기 환경 설정을 위해 PlugIn 기능을 제공한다. 스트럿츠 프레임웍의 경우는 이런 식으로 사용한다. 스트럿츠 프레임웍은 웹 어플리케이션 환경 설정을 위해 Plug-In 기능을 제공하며, 컨텍스트 로드 시 해당 플러그인이 작동한다. 구현 방법은 아래와 같다. 1. PlugIn 인터페이스를 구현한 PlugIn 클래스를 만든다. init() 과 destroy() 메서드를 구현하면 된..
발생일: 2010.01.05 문제: 시스템에서 Fasoo DRM 이라는 암호화 모듈을 사용하고 있다. 내부적으로는 문서 다운로드 요청이 들어왔을 때, 암호화 처리를 한 후 돌려주는 방식으로 사용하고 있는데, 얼마 전 서버를 옮긴 이후부터 클래스 패스를 찾을 수 없다는 메세지가 나온다. javax.servlet.ServletException: no fasoopackager in java.library.path 서버는 JEUS 를 쓰는데, 업체에서 제공해준 jar 파일을 각 라이브러리 폴더(WEB-INF/lib, JEUS_HOME/lib/application 등)로 옮겨보며 테스트 해보아도 해결되지 않는다. 뭐가 문제일까...? 해결책: javax.servlet.ServletException: no faso..
발생일: 2009.12.31 문제: 내년부터는 마음 맞는 몇몇이 모여 루비(Ruby) 스터디를 해보려고 한다. 헌데 다들 바쁜 일이 많아 어떤 식으로 스터디를 진행해야 할 지 잘 감이 오지 않는다. 프로그래밍 그룹 스터디를 위한 좋은 방법이 있을까? 해결책: 검색해보니 다른 분들이 제안한 좋은 방법이 많다. 다른 팀원들에게 소개하기 위해 간단히 방법을 정리했다. 루비(Ruby)란? http://www.ruby-lang.org/ko/about/ - 인터프리터 형식으로 실행되는 고기능 스트립트 언어이자 뛰어난 객체 지향적 언어 - 루비에서는 모든 것이 객체다. - 가독성이 뛰어나며 인간 중심의 프로그래밍 언어 - 모든 객체에 대해 재정의가 가능하기 때문에 유연하다. - 클로저 기능이 지원되며, 열린 구조를 ..
발생일: 2009.12.30 문제: 이번 프로젝트에서는 S모 사에서 수집해준 데이터를 받아온다. 교육 과정에서 들은 이야기인데, 이 업체에서 만든 수집 엔진(웹 크롤러)는 문서의 수집 주기를 (인공지능이라고까지 하기는 뭐하고) 동적으로 설정한다고 한다. 어떤 방법일까? 해결책: 일단 최초 수집 시에는 기본 설정 단위 기간 (대략 5분 정도) 으로 같은 페이지에 접근해 수집한다. (IP 차단 등 블러킹에 대한 예외는 없다고 가정한다) 이후, 일정 시도만큼의 수집이 종료된 후에, 추가 수집된 데이터의 양을 고려해 최적화된 수집 주기를 설정하게 된다. 예를 들어, A 사이트에서 최근 5분 이내에 수집된 평균 데이터가 많을 경우 그에 따라 수집 주기를 단축하고, 수집된 평균 데이터가 수 건 정도라면 수집 주기를..
발생일: 2009.12.30 문제: 대형 쇼핑몰을 보면 메인 화면부터 물품 정보로 가득 차 있다. 메인 페이지의 경우 특히나 트래픽이 많을 것 같은데, 매번 물품 정보에 대한 내용을 DB 에서 가져오면 꽤 부담스러울 것 같다. 인기 모델이나 메인에 들어갈 모델을 따로 테이블로 뽑아 놓는다 하더라도, DB 커넥션에만 드는 비용을 무시할 수 없을 것 같다. 헌데 각 쇼핑몰에 접속해보면, 그닥 느리지 않다. 플래시나 html 을 그리는 데 시간이 걸리는 게 있어 좀 버벅거린다 싶을 뿐이지, 데이터를 로딩하는 데에는 문제가 없는 것 같다. 어떤 식으로 처리하는 걸까? 해결책: 얼마 전 프렌드 홍이 들었던 어떤 수업의 강사 분이 11번가 프로젝트에 참여했었다고 한다. 그 아저씨가 얘기해주시기를, 쇼핑몰 같이 트래..
발생일: 2009.12.24 문제: 독립적인 기능을 하는 자바스크립트 클래스를 하나 만들었다. 이 클래스를 싱글턴으로 사용하고 싶다. 또한, 일반적인 getInstance() 라는 스태틱 메서드를 사용하는 대신, 바로 생성자를 호출해서 객체를 만들도록(내부적으로 싱글턴 인스턴스를 리턴) 하려고 한다. 어떻게 하면 자바스크립트에서 생성자만으로 싱글턴을 구현할 수 있을까? 해결책: 한참을 고민해봤다. 이런 방법으로 구현해보면 어떨까? 클래스의 생성자에 대한 유효범위를 제한해두고, 그 유효범위 안에서 window 속성의 클래스 생성자(래퍼)를 다시 정의한다. (일종의 프록시 패턴이라고 할 수도 있겠다) window 속성의 클래스 생성자에서는 클래스의 유일한 인스턴스를 만들어 리턴하도록 싱글턴을 구현한다. 즉,..
발생일: 2009.12.17 문제: 이번 연구회 때 발표할 주제는 AJAX 다. 대부분 신입 사원들이라 XMLHttpRequest 객체 생성부터 다뤄보려고 한다. 얼마 전 읽은 John Resig 의 Pro Javascript Techniques 책에서 생성하는 방식으로 설명할까 하다가, 신입사원들이 알기에는 좀 어려울 것 같다는 생각이 들어 다른 튜토리얼이나 라이브러리 소스를 좀 열어봤다. 대부분 비슷하긴 한데, 다들 구현하는 방식이 조금씩 다르다. 그렇다면 어떤 방법으로 구현하는 게 가장 좋을까? 해결책: 일단 XMLHttpRequest 객체에 대해 간단하게 히스토리를 정리해보자. 비동기 통신 수단인 XMLHttp 는 인터넷 익스플로러에서 제일 먼저 제안하였으며, 최초 ActiveXObject 를 사..
발생일: 2009.12.15 문제: 친구 홍이 문제점에 봉착했다며 묻는다. Abstract Class 를 어떻게 Singleton 으로 만들 수 있을까? Abstract Class 를 상속한 클래스들은 다 싱글턴으로 구현되도록 해야 한다고 한다. 음... 그럼 Abstrac class 안에 싱글턴 패턴인 getInstance 를 구현하되, 그 안에 팩토리 메서드 패턴으로 동적 타입으로 만들 수 있게 하면 안될까...? private static AbstractSingleton uniqueInstance; public static AbstractSingleton getInstance(Class cls) { // uniqueInstance 가 존재하는지 확인 // 없을 경우, 동기화해서 class 에 따라 ..