발생일: 2010.02.16 문제: 정확히 어디서부터 이 얘기가 시작되었는 지는 잘 모르겠다. 프렌드 홍과 스트럿츠의 복잡한 요청에 대한 ActionForm 구현에 대해 이야기하다가, 자연스럽게 관계형 DB 에서 지연 로딩 객체 구현에 대한 주제로 넘어가게 됐다. 일반적인 OR Mapping 툴에서 대부분 lazy loading 을 지원한다는데, (실제 사용해 본 적이 없어 정확히는 모르겠으나, iBatis 의 lazy loading 부분을 책에서 읽어봐 대충 감이 잡혀있긴 하다.) 얘네들은 아무래도 객체형 DB 에 적합할 것 같다는 생각이 들었다. 그럼 객체 자체에 지연 로딩을 적용해 보면 어떨까. 예를 들어, user 객체는 userId 만 가지고 있다가, userUserName() 과 같은 요청이 ..
발생일: 2009.12.30 문제: 이번 프로젝트에서는 S모 사에서 수집해준 데이터를 받아온다. 교육 과정에서 들은 이야기인데, 이 업체에서 만든 수집 엔진(웹 크롤러)는 문서의 수집 주기를 (인공지능이라고까지 하기는 뭐하고) 동적으로 설정한다고 한다. 어떤 방법일까? 해결책: 일단 최초 수집 시에는 기본 설정 단위 기간 (대략 5분 정도) 으로 같은 페이지에 접근해 수집한다. (IP 차단 등 블러킹에 대한 예외는 없다고 가정한다) 이후, 일정 시도만큼의 수집이 종료된 후에, 추가 수집된 데이터의 양을 고려해 최적화된 수집 주기를 설정하게 된다. 예를 들어, A 사이트에서 최근 5분 이내에 수집된 평균 데이터가 많을 경우 그에 따라 수집 주기를 단축하고, 수집된 평균 데이터가 수 건 정도라면 수집 주기를..
발생일: 2009.12.30 문제: 대형 쇼핑몰을 보면 메인 화면부터 물품 정보로 가득 차 있다. 메인 페이지의 경우 특히나 트래픽이 많을 것 같은데, 매번 물품 정보에 대한 내용을 DB 에서 가져오면 꽤 부담스러울 것 같다. 인기 모델이나 메인에 들어갈 모델을 따로 테이블로 뽑아 놓는다 하더라도, DB 커넥션에만 드는 비용을 무시할 수 없을 것 같다. 헌데 각 쇼핑몰에 접속해보면, 그닥 느리지 않다. 플래시나 html 을 그리는 데 시간이 걸리는 게 있어 좀 버벅거린다 싶을 뿐이지, 데이터를 로딩하는 데에는 문제가 없는 것 같다. 어떤 식으로 처리하는 걸까? 해결책: 얼마 전 프렌드 홍이 들었던 어떤 수업의 강사 분이 11번가 프로젝트에 참여했었다고 한다. 그 아저씨가 얘기해주시기를, 쇼핑몰 같이 트래..
발생일: 2009.12.09 문제: 친구 홍네 파트 연구회에서는 스윙으로 릴리즈 프로그램을 만들고 있다고 한다. 헌데, 아무래도 UI 가 문제인 모양이다. 다들 웹만 하다보니 스윙에는 그닥 익숙치 않아서인 듯 하다. 나도 스윙은 많이 해보지 못했지만 스윙의 UI 는 좀 답답하다. 게다가 간단한 프로그램만 만들려고 해도 영~ 촌스러운 게 모양이 잘 안나온다.ㅎㅎ 이클립스 플러그인으로 구현하면 좋을 듯 싶으나, 잘 모르겠다. -_-a 음... 그렇다면, 로컬 환경에서 브라우저와 자바 파일을 이용해 개발할 수 있는 방법이 있을까...? 생각해보자. 해결책: 로컬에서만 돌아갈 프로그램이라면 이런 방법도 괜찮겠다. 브라우저에서 UI를 구현하고, 브라우저에서 자바 파일을 실행(배치파일을 실행) 하게 하는 식으로 개..
발생일: 2009.12.03 문제: 담당하고 있는 시스템의 분석 엔진은 문장 분석 기능을 가지고 있다. '나는 아이스크림이 좋아요.' 라는 문장을 가지고, [나 - 아이스크림 - 좋다] 라는 (긍정의) 의미를 뽑아낼 수 있는 거다. 일전에 검색 세미나(STS 2009)에 다녀왔을 때, 시맨틱 웹과 온톨로지라는 개념에 대해 설명을 들었었는데... 아마, 우리 분석 엔진에서 사용한 게 바로 온톨로지라는 개념이 아닐까 싶다. 컴퓨터가 문장을 이해할 수 있도록 해준 게 아마 분석의 기반이 되는 '언어 사전'일 테고, 큰 맥락에서 이 사전이 온톨로지일 것이란 생각도 든다. 사전이 곧 정보의 개념과 관계에 대한 구체적인 설명을 해주니까... 시맨틱 웹에서는 태그 등을 통해 그 의미를 분석할 테고 말이다. 아... ..
발생일: 2009.11.20 문제: 프렌드 홍이 Google Wave 에 대한 내용에 들어있는 포스트 링크를 줬다. 커뮤니케이션의 미래, 구글 웨이브에게 물어봐?! (동영상도 재밌고 유익하다. 시간을 내서라도 쭉 보도록 하자.) 얘네들을 보면, 변경 사항이 각 페이지를 보고 있는 사용자에게 실시간으로 보여진다. Google Talk 이나 Google Doc 에도 이미 있는 기능이긴 하던데,.. 아마 서버 푸시 방식으로 요청을 처리하고 있는 것 같다. (옵저버 패턴처럼 말이다...) 이건 어떻게 구현하는 걸까? 해결책: 홍이 Resin 이라고, 이런 방식을 제공하는 서버가 있다며, 잘 정리된 포스트가 있다고 알려준다. 더불어, 이런 Server Push 방식을 Comet 이라고 한다고 알려줬다. Comet..
발생일: 2009.10.29 문제: 후배 P에게 아직 비밀번호 변경하기 기능이 구현이 되지 않은 시스템에 기능을 추가해보라고 했다. 그리고는 같이 네이버나 다음, 구글의 경우 어떤 식으로 로직을 처리하는지 한 번씩 찾아봤다. 해결책: 네이버는 다른 백업 메일을 가지고 있지 않아 다음과 구글만 확인해보기로 했다. 내부적으로 두 사이트 모두 전체적인 로직은 다음과 같다. (여기서는 메일을 이용해 찾는 기능만 고려했다) 비밀번호 찾기 ---> 백업 메일로 임시비밀번호 또는 비밀번호 찾기 링크 전송 ---> 전송받은 메일 페이지에서 비밀번호 변경 페이지로 이동 ---> 임시비밀번호를 통해(또는 링크로 전달된 값으로 자동 설정) 비밀번호 변경 다음과 구글의 차이가 있다면, 다음과 같다. [다음] 다음의 경우, 비..
발생일: 2009.06.30 문제: 구글 코드잼 문제를 풀다보니, 중국인의 나머지 정리(Chinese remainder theorem)가 적용되어야 했다. 중국인의 나머지 정리라... 당췌 이게 뭔지 모르겠다.... -_-a. 해결책: 중국인의 나머지 정리에 대해 쉽게 정리해 둔 블로그가 있다. 어느 정도 감이 잡히기는 하는데,... 아직 잘 모르겠다. @_@ 10 이하의 소수 중 하나(2 또는 3, 5, 7)로 나눠지는 수 x 가 있다. 근데 이 x의 수가 꽤 크다면, 아래와 같이 계산한 x' 도 10 이하의 소수 중 하나로 나눠진다고 한다. x' = x MOD (2 * 3 * 5 * 7) 왜 그런 걸까...... -_-a 알려주세요.... * 팁: 수학사랑 사이트에서 주요 수학 정리에 대해 잘 설명해..
발생일: 2009.05.29 문제: 인기도를 파악하여 현재 가장 인기있는 게시물을 보여주고자 한다. 단순히 조회수 순으로 보여주자니 한때 조회수가 많았던 데이터가 너무 오랫동안 탑을 차지한다. 뭔가 다른 효과적인 방법이 없을까? 해결책: 세계적인 사진 공유 사이트인 flickr에서는 사진의 인기 정도를 Interestingness 라고 정의했다. Interestingness. 즉 그 시점에서 얼마나 인기있는가? 재미있는가? 를 묻는 것이다. 그럼 어떻게 interestingness를 측정해야 할까...? 인기도를 적용하려는 사이트의 특성마다 다르겠지만, interestingness의 측정에 대해 토의한 포럼을 보니 좋은 아이디어가 많다. 생각을 보태서 정리해보면... Interestingness에 영향을..