2011년 3월 23일 수요일

google snappy

http://code.google.com/p/snappy/
reddit

오.. 기억해둘만한 라이브러리.
다음번에는 zlib 말고 이놈을 써보자.

2011년 3월 3일 목요일

mysql stored procedure 에 유니코드를 인자로 넘기기

내가 보통 mysql 사용시 필드 타입을 char() 으로 잡기 때문에 sp 에서도 인자 타입을 char() 로 잡았었는데 이럴경우 sp 에 유니코드(한글)을 넘길때 에러가 나네. 아 쉬바.

결국 sp 에서는 nchar 로 잡아줘야만 한다.


코드 적어보면 아래 testme sp 를 만들고 call testme('한글') 을 부르면 깨지고

drop procedure if exists `testme` $$
create procedure `testme` (s nchar(40))
begin
        select s;
end $$

s 타입을 nchar(40) 으로 바꾸고 testme('한글') 을 부르면 오키.

http://dev.mysql.com/doc/refman/5.5/en/charset-national.html

2011년 1월 26일 수요일

킨들3 관련 링크 몇개

http://www.instapaper.com/
http://kinstant.com/
http://www.kindlefeeder.com/
http://foosoft.net/mangle/

인스타페이퍼만 써본 상태.
나머지는.. 흠. 일단 적어는 두는데 내가 쓸일은 아마 없을듯?

추가.
http://wiki.mobileread.com/wiki/Visual_Kindle_Guide
http://wiki.mobileread.com/wiki/MOBI

추가.
pandoc 이 현재 epub 는 지원하는데 mobi 는 미지원. 흠...

2011년 1월 25일 화요일

킨들3 지른거 도착

누트1 은 무용지물이 된지 오래.
한동안 지하철에서 익뮤로 글읽으면서 아이패드2 를 기다렸는데
지난 20일경에 그냥 킨들3 wifi 버전을 질렀다.
그지새퀴라 케이스 없이 본체만 달랑.

대략 185$ 인가 뜬거 같고..
오늘(25일) 배송이 온걸 보니...


우왕ㅋ굳ㅋ
사길잘했군.

2011년 1월 12일 수요일

mysql 에 stored procedure 쓰는건 고통스럽네.

SP does not accept variables in LIMIT clause

형편없는 에러메시지,디버깅,프로파일링 힘든건 뭐 그렇다 치더라도
오늘 보니 sp 안에서 limit 문을 쓰는게 너무 제약이 심하다.
검색해보니 이문제는 2005년부터 제시된것인데 2010년에서나 해결된듯.
커멘트 읽어보면 이 이슈처리 자체가 매우 병신같음.

우리는 아직 5.1 을 쓰고 있어서 여전히 문제가남은 상태.
5.5 로 올리거나 저기서 소개된대로 sp 안에서 sql 만들어 쓰거나 아니면 그냥 일부 경우에는 sp 안쓰거나 식으로 해결해야 할것 같은데 세가지 다 짜증나네.


당연히 지원될거라고 생각했던게 안되서 시간을 버려야 한다니..
다음번엔 mysql + sp 조합은 피해야겠다.

2011년 1월 4일 화요일

redis mingw 포팅 링크

https://github.com/dmajkic/redis

redis 는 win32 쪽에서 쓰기엔 껄쩍지근 하겠군.
API 형태나 소스가 그리 길지 않다는점, internal 문서를 제공한다는 점 등등이 맘에 드는데..
아쉽군.
이쪽 문서 읽다보니 libevent 나 libev 를 쓰지 않고 독자구현 했던데 후에 한번 구경해보자.
위 링크에 언급된 redis 포트가 iocp 까지 붙여놨는지는 확인 안해봤다.
아마 안했겠지..

참고로 이쪽 뒤져보다가 mongodb 의 네트웍 처리가 궁금해서 잠깐 코드 읽어봤는데 그냥 select 에 소켓당 쓰레드 모델을 썼네... 근데 이친구들은 boost 류파라서 후에 asio 붙여줄듯. 주석에도 언급이 있다...

2010년 12월 31일 금요일

NoSQL 구현체 비교

Cassandra vs MongoDB vs CouchDB vs Redis vs Riak vs HBase comparison

좋은글.
mongodb 도입을 검토하다 만적이 있는데 다음엔 redis 를 검토해봐야할듯.

추가. 2011/01/06
Visual Guide to NoSQL Systems

2010년 12월 30일 목요일

잼나는 디버깅 스토리

The Best Debugging Story I’ve Ever Heard
reddit

반전 쩐다.
지하철서 정말 잼나게 읽은 글.

2010년 12월 29일 수요일

upstart 를 이용해서 daemon 죽었을때 다시 띄우기

http://upstart.ubuntu.com/

서버등을 돌리다가 죽는경우 다시 띄우거나 하는 작업이 필요한데 개발중에는 repeat.sh 등을 만들어서 쓰고 있지만 데모용으로 띄울경우는 init 등에서의 작업이 필요. ubuntu 가 가진 upstart 를 쓸때의 간단한 사용법을 적어둔다.

  1. /tmp/a.out 에 데몬이 있다고 가정해보자.
  2. /etc/init/foo.conf 작성
    description "shit"
    exec /tmp/a.out
    respawn
  3. sudo initctl reload-configuration 으로 foo.conf 읽고
  4. sudo start foo 로 프로세스 돌리고
  5. initctl status foo 로 확인
  6. sudo stop foo 로 프로세스 정지
좀더 상세한 사항은 init(5), initctl 등의 manpage 참고

2010년 12월 28일 화요일

GNU screen

이전위키에 있던 내용을 옮겨왔다.
tmux 도 한번 써보고 싶은데 당장 급해서 일단 screen 쓰다가 옮겨놓은것.


관련링크

외워둘만한명령들

  • 도움말은 C-a ?
  • screen 상태에서 C-a C-d 로 디태치, screen -ls 로 세션들을 확인하고 screen -r 세션이름 을 통해 resume
  • 만약 디태치를 하는것을 깜박하고 장비앞을 떠났다면 screen -d 를 통해서 screen 세션 외부에서 디태치 가능
  • 로깅이 필요하면 C-a H 현 한화면만 잡으려면 C-a h
  • 새 창을 열려면 C-a c 또는 screen 안에서 screen vi 등으로 실행
  • 창간의 전환은 C-a C-a, C-a n, C-a C-p, 등으로 앞뒤로 움직이거나 C-a " 로 리스팅해서 전환 또는 C-a 숫자 로 전환
  • C-a 를 프로세스에 보내려면 C-a a
  • 브레이크를 보내려면 C-a C-b
  • clear 하려면 C-a C
  • 현재 창의 정보는 C-a i
  • 리플레시하려면 C-a l
  • 창을 나누려면 C-a S 나뉜 창간에 포커스 이동은 C-a TAB 현재창만 남기려면 C-a Q 현재창을 닫으려면 C-a X
  • copy 하려면 C-a [ paste 하려면 C-a ] 이쪽은 좀 복잡한 기능들이 많이 붙어있다.
이외에도 존내 많은 기능과 바인딩들이 있다. C-a 때문에 emacs 와 바인딩이 겹치는게 좀 피곤해서 잘 안쓰지만 외부장비에 접속했을경우엔 아주 도움되는 유틸리티.

.screenrc

http://gentoo-wiki.com/TIP_Using_screen 에서 따왔다.

startup_message off
hardstatus alwayslastline                                                                                                                        
hardstatus string '%{gk}[ %{G}%H %{g}][%= %{wk}%?%-Lw%?%{=b kR}(%{W}%n*%f %t%?(%u)%?%{=b kR})%{= kw}%?%+Lw%?%?%= %{g}][%{Y}%l%{g}]%{=b C}[ %m/%d %c ]%{W}'