전체 글
-
persistence AOF개발하면서/코드보면서 2012. 6. 17. 22:38
RDB는 snapshot같이 수행한 순간에 데이타를 파일에 기록합니다.여기서 문제점이 있는데 기록하는 순간에 컴퓨터 파워가 나가거나, kill -9 로 강제 종료한다면, 마지막 정상적인 rdb파일 이후에 들어온 데이타는 잃어버리게 됩니다. 그래서 append-only-fie을 사용하게 됩니다. 제가 생각한 AOF개념은 데이타를 파일에 쓸때 모든데이타를 한번에 쓰지말고( RDB), 버퍼를 만들어서 일정크기, 일정시간동안 입력들어온 데이타는 버퍼에 기록하다가 파일에 붙여 넣자입니다. 소스를 보니까 파일에 기록된 것 이후에 들어온 query는 파일에 append도 하지만 fork후 child process가 현재 dict에 저장되어있는 데이타를 파일에 기록하고, 기록 하는 동안에 client의 명령어들을 ao..
-
Set개발하면서/코드보면서 2012. 6. 17. 22:38
Set은 intset과 hashtable을 사용합니다. hashtable은 hashes에서 설명한것처럼 dict을 사용합니다. intset에 대해 알아보겠습니다. contents에 value값이 들어가고 encoding에는 현재 어떤 int형인지 (INTSET_ENC_INT16/32/64) length에는 현재 저장한 value의 갯수가 저장됩니다. insert할때는 binary search로 해당값이 있는지 확인하고 없으면 min 위치에 값을 저장합니다. 처음에 encoding은 int16_t로 하는데 그 범위에 벗어나는 값이 들어오면 전체 데이타를 다 수정합니다.;;; intsetUpgradeAndAdd 아~~ 같은값이 있으면 뭐 상관없는데, 아니라면 아래 작업을 수행합니다. resize후에 memm..
-
Maxmemory policy개발하면서/코드보면서 2012. 6. 17. 22:37
http://antirez.com/post/redis-as-LRU-cache.html http://eli.thegreenplace.net/2009/10/30/handling-out-of-memory-conditions-in-c/ 위 두개의 글을 참고한다음에 소스를 보면 더 이해가 쉽습니다. (저는 영어가 짧아 굵은글씨만 읽고 바로 소스로;;; 으헝헝~~) Redis는 메모리 기반 key-value시스템입니다. 메모리는 한정되어있기때문에 무한정 데이타를 저장할수가 없죠. 그래서 Redis에서 나름대로 몇가지 방법을 만들었습니다. /* Redis maxmemory strategies */ #define REDIS_MAXMEMORY_VOLATILE_LRU 0 #define REDIS_MAXMEMORY_VOLA..
-
6년전 지금살아가면서/생각하면서 2012. 6. 15. 03:36
나는 04년도에 군에 입대해서 06년도에 제대를 했다. 컴퓨터에 대해 하나도 모르고 그저 스타크래프트가 좋아 전산과를 갔고, print("hello world")만 하다가 입대를 했다.제대후, '알고리즘 트레이닝북'이라는 책으로 개발에 대한 경험, 개발자의 꿈을 꾸기 시작한걸로 기억된다. 한창, 포인터, 트리구조 구현하는 그때 그래픽 수업이 있었다. 팀프로젝트가 있었는데,OpenGL로 개발해서 간단한 게임을 만드는것이었다. 그때 한창 개발에 맛을 들여서 뭐든 할줄 알았는데 (사실 지금 생각해보면, 배열 index나, 포인터가지고 이놈저놈 찔러보는 수준...) OpenGL은 넘사벽이었다. 팀을짜는데 제대후 아저씨들과 놀아줄 사람은 없어서 나랑 동기 형이랑 그리고 어느 얼굴이 하얀 남학생과 같은 팀을 하게 ..
-
[Algorithm]Boyer-Moore작성할것 2012. 4. 12. 07:41
대상 문자열 : text 찾을 패턴 문자열 : pattern brute force 알고리즘은 http://ir.bagesoft.com/37 굉장히 비효율적이다. (하지만 구현이 빠르고 추가 연산이 필요 없다.) 그래서 사람들이 생각한 게, '어떻게 하면 적게 비교해서 pattern을 찾을까... 였다. Boyer-Moore알고리즘을 알아보려고 한다. (http://xenostudy.tistory.com/72 다른 자료도 많겠지만 여기보고 이 알고리즘을 이해했습니다. 제가 이해한걸 적어보려고 합니다. ) 먼저 접미사, 접두사에 대해 알아야 한다. 앞에 붙어있는 게 접두사, 뒤에 붙어있는 게 접미사 (조사하면서 영어공부도 같이했네요 ㅋㅋ http://jujubong.tistory.com/70) Boyer-M..
-
배운것과 내가 아는것은 다르구나......살아가면서/생각하면서 2012. 3. 23. 00:17
요새 회사에서 진행하는것 때문에 틈나는대로 Ruby를 보고 있다. 또 배우는김에 이번에 알고스팟에서 Ruby로도 문제를 풀수있게 되서 한번 해봤다. 문제 url : http://algospot.com/judge/problem/read/DRAWRECT 문제를 봤을때 더하고 빼고 해면 될것 같았는데 잘 안됐고, sort 남발, 경우의수 다 집어 넣어서 억지로 정답! 을 얻었다. 그 코드는.....후덜덜 Integer(gets).times{ x = [] y = [] 3.times { inputs = gets.chomp if inputs.respond_to?("split") input = inputs.split x.push(input[0].to_i) y.push(input[1].to_i) end } x = x...
-
Kernel Coding style개발하면서/타인글보면서 2012. 3. 21. 06:04
이번 포스트는 직독직해를 한게 아니라 내용중에 제가 필요한 부분만 적어보았습니다. 요새 고민하는게 있습니다. 무언가 배울때 생각하면서 배워야한다는점. 무조건 배우려고 하는건 아닌것같아요 : ) 이게 내가 능력도 안되는데 마냥 하고싶은건가, 해야되는건가, 하면 좋은건가! 뭐 이런 생각들이요 ㅎㅎ 잘못 썼거나 추가하면 좋은 글이 있다면 알려주시면 감사하겠습니다. Kernel Coding style 1. indentation 탭은 8글자, identation도 8글자 누군가는 8글자가 너무 오른쪽으로 치우지게 하는것 아니냐고 불평할수도 있다. 깊이 {, }가 3 이상일때 그렇게 되는데 해주고 싶은 말은, 프로그램을 고쳐라. (depth가 3 이상인건 잘못됐다는뜻;; 난 여차하면 4이상인데.....후덜덜) 한줄..