개발하면서
-
Hashes개발하면서/코드보면서 2011. 11. 13. 21:09
"foo""bar""hello""world" 위의 모습은 foo : bar, hello : world 를 입력했을때 zipmap에 저장된 구조입니다. zmlen은 zipmap 의 실제 크기입니다. 1 byte를 사용하고, 크기가 254보다 크거나 같으면, 사용하지 않습니다. len은 1 byte 또는 5 byte를 사용합니다. 데이타의 길이가 0~252라면 1 byte가 사용되고, 253이면 다음 4 byte가 data의 길이가 됩니다. 255는 데이타의 끝을 나타냅니다. free는 수정후, 사용안한 byte의 크기를 나타냅니다. unsigned int형으로 8 bit입니다. 만약 8 bit가 넘는다면 zipmap 을 resize하게 됩니다. zmlen len key len free value len k..
-
zookeeper Cluster Server 구성하기개발하면서/etc 2011. 10. 24. 23:43
여러 대의 서버를 관리하는 게 참 복잡합니다. 초기 작은 규모로 운영되면 몰라도 데이터가 커지고, 사용자수도 증가하면서 관리해야 될 서버가 많아져서 신경 쓸게 더 많아졌습니다. 그래서 나온게 ZooKeeper~!!!. 이번에 20대정도의 서버로 개발을 하게 되었는데, 제가 ZooKeeper 쪽을 담당하게 되었습니다. ZooKeeper 서버가 죽을수 있으므로 여러 대를 두어야 합니다. 찾아봤더니, 역시..... 이미 되어있네요. 아래 링크 보면서 하면 진행하면 됩니다. 설명이 잘~~~ 되어있죠 http://sanjivblogs.blogspot.com/2011/04/deploying-zookeeper-ensemble.html 몇 개 헤맨 부분이 있는데요. 1. myid 설정하는 부분 좀 창피한 건데 제가 영..
-
python string 다루기개발하면서/코드보면서 2011. 10. 13. 08:07
PS를 하다보면 string을 자유롭게 다뤄야하는데 내가 직접 짜고 다른 사람이 짠 해답을 보면 built-in method로 깔끔하게 구현한게 있을때 현타가 온다. python string의 built-in method와 slices를 알아보고 대강 어떤게 있는지 살펴보기로 한다. built-in Method str.isXXX 알파벳, 숫자, 알파벳+숫자, 아스키 코드, 대/소문자 여부를 판단할때 사용한다. str.center(width, [fillchar]), str.ljust(width, [fillchar]), str.rjust(width, [fillchar]) 문자열 가운데 정렬/왼족 정렬/오른쪽 정렬 str.count(sub[, start[, end]]) 문자열 안에 sub이 발생하는 횟수 st..
-
[Fastcat] Search에 대해 알아보자 (1)개발하면서/코드보면서 2011. 9. 10. 14:45
지금까지 fastcat의 인덱싱, 사전에 대해 알아보았습니다. 남은건 Search.....훑어봤는데.....어후;;; 길어질것 같아요 ㅋㅋ 제가 학습한 것들을 최대한 알기 쉽게 설명하는게 이 블로그의 목적입니다. 제가 이해된 부분, 추측하는것들이 있으니 틀린점, 애매한점 이런거 알려주시면 감사하겠습니다. 환영합니다~! : ) 피드백 하나가 포스트에 힘을 실어줍니다 ㅋㅋㅋ Search에 대해 알아보도록 하겠습니다. (편의상 존댓말은 생략합니다.) -------------------------------------------------------------------------------------------- 우선 Search 부분의 class Diagram은 다음과 같다. loadSearcherAndRe..
-
[Fastcat] 사전에 대해서 알아보자.개발하면서/코드보면서 2011. 9. 9. 03:16
검색엔진을 만들다 보면, 색인어로 등록 하면 안될 키워드가 있고(섹스, 도박, 자살 등등) 서로 비슷한 키워드가 있다.(LG, 엘지, 앨지 이런것들...) fastcat에서는 한글 형태소 분석할때 사용하는 사전, 유의어 사전, 금지어 사전, 사용자 등록 사전이 있다. 그럼 이 사전을 어디다가 쓰느냐? 색인시, 키워드를 추출할때 사용하기도 하고, 검색 질의가 왔을때 질의를 분석할때 사용하기도 한다. 만약에 사전이 없다면 색인어로 나이키가 있는데, 사용자가 nike를 쳤을때 검색이 안되는 뭐 그런..(비유가 맞나?;;) SearchFieldReader.java, KoreanNounExtractor.java 에서 사용하고 있다. 사전의 용도를 알았으니 fastcat에서는 어떤 자료구조로 사전을 구성했는지 알아..
-
GDB로 STL 디버깅하기개발하면서/etc 2011. 9. 7. 00:39
알고리즘문제를 풀면서 C++를 조금씩 조금씩 하고있습니다. 데이타 저장하고 빼내고 하는 아주 단순한 수준으로만 사용하고 있는데, 이마저도 어버버 할때가 많네요;; C로 개발하면 GDB로 디버깅 할때 큰 불편 없이 진행할수 있는데 C++로 하니까 불편한게 있습니다. 바로 STL자료구조에 저장한 데이타를 보고 싶을때인데요, 예제 코드는 다음과 같습니다. //vector::push_back #include #include int main () { std::vector myvector; int myint; std::cout > myint; myvector.push_back (myint); } while (myint); std::cout
-
[Fastcat] FullIndex를 알아보자. (3)개발하면서/코드보면서 2011. 9. 3. 10:37
저번시간에 DocumentWriter에 이어서 이번에는 SearchWriter, SortWriter, GroupWriter 알아보려 한다. 우선 SearchWriter에 초기화 부분은 아래와 같다. for (int i = 0; i < indexSettingList.size(); i++) { IndexSetting is = indexSettingList.get(i); String handlerName = is.handler; logger.debug("is = "+is); Object t = IRSettings.classLoader.loadObject(handlerName); if(t != null){ tokenizers[i] = (Tokenizer)t; } else { throw new IOExceptio..
-
[Solr] core 여러개 만들기개발하면서/etc 2011. 8. 28. 09:47
http://apache.tt.co.kr/lucene/solr/3.3.0/ 에서 solr를 다운받습니다. ( 8/28 solr 3.3.0 version ) 1. port를 변경하여 두개의 solr를 실행하는 방법 ( http://wiki.apache.org/solr/DistributedSearch ) . example 폴더를 복사한다. . example7574\etc\jetty.xml에서 port를 변경한다. 50000 1500 false . 콘솔창을 두개 연다음 하나는 example\에 있는 start.jar 실행 다른 하나는 example7574에 있는 start.jar 실행 D:\temp\apache-solr-3.3.0\example7574> java -Dsolr.solr.home=d:\temp\a..