manywaypark's Blog
개발, 검색, 함수

[TIP] putty가 갑자기 멈출 때...

tips & tricks 2007.12.03 16:27 by manywaypark
putty를 이용하여 작업중에 연결이 끊긴 것도 아닌데 갑자기 멈추는 경우가 있을 수 있다.
ctrl-s를 누르면 XOFF 신호가 전송되는데 이때는 터미널에 입력되거나 출력되는 문자를 보여주지 않는다.
해법은 간단하다 ctrl-q 하면 XON 신호를 전송해서 그동안 안보여주던 입/출력들을 보여준다.

참고: Recovering from Ctrl-S in putty

2008-05-09: screen 세션에서는 XON은 ctrl-a q이다.

happy hackin'
TAG putty, unix
Window > Preferences... 의 왼쪽 패널에서 Java > Editor > Templates를 선택하면 다양한 template을 자바 에디터에서 사용할 수 있다.
예를 들어 내가 자주 사용하는 logger 관련 선언 자동 삽입은 다음 순서로 하면 쓸 수 있다.
  1. "New..."를 선택한다.
  2. Name에 "_l"을, Description에 "insert logger", Pattern에 "protected final static Log log = LogFactory.getLog(${enclosing_type}.class);"을 넣고 "OK"를 누른다.
    사용자 삽입 이미지
  3. java 편집기에서 _l을 타이핑한 후에 Content Assist 명령을 입력하면, 현재 클래스의 logger를 자동으로 삽입할 수 있다.
    Content Assist 명령은 emacs 모드의 경우 Alt + /이고 default 모드의 경우 Ctrl + Space이다.
참고: "Insert Variable..." 버튼을 눌러보면 다양한 context 관련 변수(현재 클래스명 및 메서드 관련 등) 및 유용한 변수들(날짜, 시간관련 등)을 Pattern에 넣을 수 있다.

happy hackin' with DRY
TAG dry, Eclipse, java
sqlite3 backend로 clsql을 쓸때 다음과 같은 에러가 나는 경우가 있다.
"Error 21 / library routine called out of sequence"
기본적으로 라이브러리를 잘못 사용하고 있다는 말인데, 현재 상황에 비추어 검색한 결과 thread safe 문제인듯했다. 아래 참고 링크에서 SQLite 사이트의 FAQ를 인용해 놓은 것을 보면,
It is never safe to use the same sqlite3 structure pointer in two or more threads.
라고 되어 있으나 현재의 FAQ에서는 찾아 볼 수 없다 (FAQ.6에 비슷한 말이 나온다. sqlite 3.3.1이전 버전은 sqlite3 structure를 같은 thread에서만 열어야하며 thread safe를 위해서는 3.3.1 이후 버전을 SQLITE_THREADSAFE = 1로 설정하고 컴파일을 해야만한다. 아쉽게도 dapper에 깔리는 sqlite3는 버전이 3.2.8-1ubuntu1로 좀 낮다).
개발 중인 프로그램이 multithread인데 이전 버전들(sbcl 1:0.9.14.0-2 + cl-sql 3.6.3-1 on edgy)의 조합에서는 나타나지 않던 문제였으나 얼마전 내가 만든 backport들 (sbcl 1.0 + cl-sql 3.7.8 on dapper)의 조합에서는 나타났다.

DB 연결부분을 다음과 같이 기존 연결이 있을 때는 경고를 내고 그것을 재사용하도록 한 것이 문제일 수도 있겠지만, 문제의 여지를 남겨두기 싫어서 필요할 때마다 연결하고 끊는 매크로를 사용하고, thread간에는 mutex를 사용해서 동기화 해버렸다.
(clsql:connect (list *db-file*) :database-type +DB-TYPE+ :if-exists :warn-old)

(기존 연결 재사용은  thread safe 버전의 sqlite3를 사용하면 간단히 해결될 수도 있을 것같다.)

참고:
http://trac.edgewall.org/ticket/2196

happy hackin'

TAG clsql, err, sqlite3
일단 잡담부터...
서버쪽에서는 하드웨어 문제나 안정성 때문에 웬만하면 그냥 Dapper LTS를 쓰려고했는데, sbcl이 0.9.8에서 더이상 버전이 안올라 가는 듯보였다. 내가 필요한 thread 및 timer기능이 온전하게 돌아가는 버전이 아니었다.

그래서 손쉬운 방법으로 서버 한대를 Edgy로 업그레이드를 해버렸다. 그런데, 이놈이 자주 죽는거 같더니 마지막으로는 부트파티션이 깨졌다. Orz.
아무래도 SATA RAID랑 궁합이 잘 안맞는다는 추측만 했다. 결론은 역시 LTS 버전이 안정적이라는 것.

이제 여기부터 backport이야기...
그래서 SBCL을 backport해보기로 했다.
날로 먹어버리겠다는 일념으로(좀 얍삽한가?) IDC에 있는 서버중에 동일 아키텍쳐(AMD64)에 Feisty가 깔려있는 곳에서 sbcl의 버전을 확인했더니 1.0이다. 충분하다! 그래서 그 머신에서 "apt-get source"로 소스를 받은 다음 통째로 Dapper LTS가 깔린 곳에 옮겨서 debian package를 만들었다.

"dpkg -i"".deb"파일을 설치하면 끝
이라고 생각했는데, 그게 아니였다. common-lisp-controller의 버전이 너무 낮다고 불평을 했다.
살짝 좌절했다. '이거 common-lisp-controller 하나만 더 가지고 온다고 될까? 그 놈을 설치하려면 또 다른 놈(들)에게 의존성이 걸려있는거 아닐까? 결국에는 시스템 전체 업그레이드?' 불안이 밀려왔다. 그래도 해보는데까지는 해보기로 했다. 어차피 내 잘못으로 빚어진 일이니 내 손으로 끝장을 봐야했다(데스크탑(edgy)에서 열심히 개발하고 서버(dapper)에 올리니 안돌아갔다. Orz).

비장한 각오로 common-lisp-controller를 위의 과정과 똑같이 backport했더니 그냥 해결됐다.
잠시 비장했던 마음가짐이 아까웠다.

잡설끝.

설치에 관한 간략한 설명:
  1. 먼저 dapper 박스에 sbcl이 안깔려 있다면 일단 깐다.
    ~$ sudo apt-get install sbcl
  2. 첨부파일을 다운로드 후에 적당한 곳에 압축을 풀고 패키지 두 개를 설치한다 (md5sum 체크도 한번 해주면 좋다).
    ~$ tar xvzf sbcl_1.0.0.0-1~dapper1_amd64.tgz
    ~$ sudo dpkg -i common-lisp-controller_6.1~dapper1_all.deb
    ~$ sudo dpkg -i sbcl_1.0.0.0-1~dapper1_amd64.deb
  3. 실행해보고 버전 확인한다.
    ~$ sbcl --version
    SBCL 1.0

대충 package cache 디렉토리 뒤져서 눈짐작으로 버전과 아키텍쳐사이에 ~dapper1을 넣는 것이 backport한 패키지의 명명법이란 것을 추측했는데 정확한 건지는 잘 모르겠다.
하고 나서 보니 backport라기보다는 build가 아닐까 하는 생각도 좀 든다. ^^;

happy hackin'

"apt-get install devscripts build-essential fakeroot" 으로 대충 build에 필요한 기본 패키지들을 깔고,
만약 less를 빌드한다면 다음과 같이 해서 소스 받고 build에 필요한(의존성이 있는) 패키지들을 깔고

~$ apt-get source less
~$ apt-get build-dep less
빌드한다.
~$ cd less-###/
~$ fakeroot ./debian/rules binary

"../less_###_XXX.deb"가 생성된다.

"dpkg -i less_###_XXX.deb" 로 시스템에 설치할 수 있다.

"dpkg-deb -c less_###_XXX.deb" 로 .deb 파일의 내용을 확인할 수도 있다 (다른 사람이 만들어 놓은 .deb 파일을 구했을 때는 한번 해보는 것이 좋을 듯).

참고: http://www.debian-administration.org/articles/20 (약간 오래된 글이라 ./debian/rules를 사용하지 않는 듯하다.)

happy hackin'
apache2에 mod_lisp2 를 설치하는 방법을 간단히 설명한다.
  1. mod_lisp2.c 다운로드 (http://www.fractalconcept.com/asp/html/mod_lisp.html)

  2. 컴파일 및 설치 (gcc, apxs2 필요):
    sudo apxs2 -i -c mod_lisp2.c
    /usr/lib/apache2/modulesmod_lisp2.so가 설치 되었는지 확인.

  3. apache2 설정:
    /etc/apache2/mods-available/ 에 다음 내용의 파일을 적당한 이름(lisp.load)으로 저장.
    LoadModule lisp_module /usr/lib/apache2/modules/mod_lisp2.so
    모듈 활성화:
    sudo ln -s /etc/apache2/mods-available/lisp.load /etc/apache2/mods-enabled/lisp.load
     
  4. apache2 재시작:
    sudo /etc/init.d/apache2 restart
    /var/log/apache2/error.log 파일에 다음과 같은 로그가 찍히는지 확인.
    [Mon Oct 08 22:00:38 2007] [notice] caught SIGTERM, shutting down
    [Mon Oct 08 22:00:39 2007] [notice] Apache/2.0.55 (Ubuntu) mod_lisp2/1.3.1 configured -- resuming normal operations

happy hackin'


방금 KLDP에 Debian Binary Package Building HOWTO 한글 번역을 올렸다.

happy hackin'

TAG debian, Linux, unix

Linux에서 java 한글 글꼴 설정

java 2007.10.01 16:30 by manywaypark
먼저 Windows의 윤곽선 글꼴을 쓰기 위해,
Windows의 %windir%\Fonts 디렉토리의 batang.ttc, gulim.ttc를 리눅스의 ~/.fonts 디렉토리로 복사한다.
http://bebop.emstone.com/research/linux/ubuntu_java15_hangul/view에서 다운로드 받은 fontconfig.properties 파일을 /usr/lib/jvm/java-1.5.0-sun/jre/lib에 복사한다.
fontconfig.properties 내의 /home/lethean/을  $HOME으로 변경한다.

java application에서 멋지게 나오는 한글을 감상한다.

happy hackin'




이젠 Lisp Hacker가 되고싶다.

잡담 2007.08.21 20:05 by manywaypark
아주 어렸을 적에 나는 프로그래머가 되고 싶었다.
92년 겨울, ARS로 지원한 대학의 전산과 합격을 확인하고부터 나는 프로그래머의 길에 들어서게되었다.
(사실, 중2때 아버지의 발주(?)로 베이직을 이용해 작은 프로그램을 만들어 드리고 당시 중학생으로서는 거금인 5만원을 받았을 때 이미 professional programmer였다고 가끔 주장하기도 한다.)

근래에 lisp을 현업에 적용하고 있다.
물론, 특유의 learning curve 때문에 좀 고생한 면이 있지만 현재로선 아주 만족스럽다.

이젠 Lisp Hacker가 되고싶다.
내 마지막 도구가 되어줄지도 모른다는 막연한 기대와 함께......

happy hackin'
TAG Lisp

산 자여 따르라.

잡담 2007.08.15 03:32 by manywaypark
새벽에 영화를 봤다.
마지막에 약간은 편곡된 그 곡이 흘렀다.

산 자여 따르라...
여기서 산자는 생물학적으로 산 사람이 아니다.
의식이 깨어 있는 사람이다.

사랑도, 명예도, 이름도 남김 없이...
약간은 억지스러운 스토리도 권력욕으로 학살을 자행한 놈들보다 억지스럽지는 않았다.

동지는 간데 없고 깃발만 나부껴...
동지들은 싸늘하게 식었거나, 이탈했다.
깃발은 우리가 다시 드높이 들어야한다.

그리고,
전 재산이 이씹팔만원인 전전통께서는 두발 뻗고 잘 주무시는지 참 궁금하다.
그 이씹팔만원 모을라고 그 많은 피를 봤던가?

1 ··· 24 25 26 27 28 29 30 
분류 전체보기 (298)
잡담 (20)
함수형 언어 (62)
emacs (16)
java (18)
tips & tricks (150)
사랑 (1)
가사 (0)
독서 (4)
mobile (6)
비함수형 언어 (2)