개발하면서
-
Key notification개발하면서/코드보면서 2013. 2. 12. 23:42
이 기능은 2013년 1월달에 unstable로 merge되었습니다. https://github.com/antirez/redis/commit/4cdbce341ebff64d392a42011f4a9258f8aa834f#src 처음 시작할때는 2.6으로 했는데 하;;; 시간을 너무 끌었네요. 뭐든지 한번할때 왕창해야겠어요. 간단하게 말하면, 이 기능의 요지는 key가 추가/수정/삭제가 되었을때 이벤트를 잡아서 client한테 알려주는것입니다 슬기로운 antirez는 redis에 있는 기능을 이용해서 간단하게 구현을 했습니다. 이 글을 보시기전에 Pub/Sub을 보시고 오시면 더 좋겠습니다. key에 대해 이벤트(추가/수정/삭제)가 발생하면, 어떤키인지, 그리고 어떤 이벤트인지 두가지로 나뉩니다. 체널명을 __..
-
N-Queen개발하면서/Algorithm,DS,PS 2013. 2. 2. 13:56
JM북과 함께 PS의 재미를 알게되고 삼주전? 부터인가 topcoder의 재미를 알게되었습니다. 지금까지는 그냥 단순한 알고리즘 이해 수준에 머물렀다면 앞으로는 PS를 많이 경험할 생각입니다. topcoder를 재미를 알게된 3주전부터 C++를 하고 다른사람의 C++소스도 보고 있는데 C랑 비슷하면서도 많이 틀린...그런 오묘한 기분이네요. C++공부하면서 STL도 써볼겸 NQUEEN 문제를 풀어봤습니다. #include #include #include #include using namespace std; #define MAX_N 12 struct Queen { int x, y; }; set ch; int solve(int row, int size, vector& queen); int main() { i..
-
import Lucene4.1 project in eclipse개발하면서/etc 2013. 1. 30. 21:56
팀내 과장님을 통해 루씬 4.1이 나온 걸 알았습니다. 이번 기회에 미루고 미루던 루씬이 내부적으로 어떻게 구성되는지 보려고 (아는 게 없으니, 무작정 해 보자라는 마음으로) 이클립스에 import 하려고 했습니다. http://softwaregeeks.org/2012/10/30/how-to-import-lucene40-in-eclipse/ 링크처럼 진행 했는데, 제가 뭘 잘못 건드렸는지는 모르겠지만 아래와 같은 오류가 발생 했습니다. (ant ivy-bootstrap resolve 까지 진행한 상태, ant 설정은 위 url 참고.) 이 글을 위의 화면 처럼 나오는 분들께 바칩니다. ㅎㅎ 우선 New -> Java Project 에서 lucene이라고 프로젝트를 하나 만듭니다. 그 다음 lucene 폴..
-
GDB로 multiprocess 디버깅할때개발하면서/etc 2012. 10. 28. 22:21
Redis의 aof에서 fork하는 부분이 있습니다. if (server.aof_child_pid != -1) return REDIS_ERR; start = ustime(); if ((childpid = fork()) == 0) { char tmpfile[256]; /* Child */ if (server.ipfd > 0) close(server.ipfd); if (server.sofd > 0) close(server.sofd); snprintf(tmpfile,256,"temp-rewriteaof-bg-%d.aof", (int) getpid()); if (rewriteAppendOnlyFile(tmpfile) == REDIS_OK) { exitFromChild(0); } else { exitFromChi..
-
Slowlog개발하면서/코드보면서 2012. 10. 4. 00:02
Slowlog는 지정한 시간이 넘어서는 command를 기록해서 나중에 관리차원에서 볼수있게 해줍니다. 설정으로 slowlog-log-slower-than, slowlog-max-len을 설정합니다. slowlog-log-slower-than는 microseconds단위로써, 지정한 시간보다 느린 command를 기록합니다. threshold같은거죠.음수로 지정하면 slowlog를 사용하지 않고, 0으로 하면 모든 command를 기록합니다.slowlog는 list 자료구조에 저장하는데, 이 List의 최대 크기를 지정하는 설정이 slowlog-max-len 입니다. (검색하면서 알았는데, MySQL Slow Query log 란게 있었네요. 이젠 소스 분석하는만큼 직접 만들어보는것도 시간을 쏟아야겠어요..
-
Bit operation개발하면서/코드보면서 2012. 10. 4. 00:02
Redis 2.6부터 Bit operation이 지원되었습니다. BITOP [NOT | AND | OR | XOR ], BITCOUNT, SETBIT, GETBIT 입니다. Bit operation에 쓰이는 자료형은 String입니다. String이 512MB가 제한입니다.그래서 bit offset 의 최대 길이는 0 ~ (512*1024*1024*8 -1 )입니다. SETBIT, GETBIT, BITCOUNT, BITOP 순으로 진행하겠습니다. 우선 SETBIT는 "SETBIT key offset bitvalue(0 | 1)" 입니다.offset이 위에서 말한 bit 범위인지, bitvalue는 맞게 들어왔는지 검사합니다. 그 후에 해당 key가 기존 DB 존재 여부를 판단하고, 없으면 String형을..