IT이야기2008. 12. 10. 19:36
골빈해커님의 '역시 아직은 Perl 이 짱이에염~!'  글과 aero님의 'Wanna Kill Perl?'  글을 읽고, FreeBSD 6.4에서 perl 등의 스크립트가 몇개가 되는지 확인해봤다.  체크할 디렉토리는 스크립트에 나온 PATH 환경 변수( grep !m{^/home}, split /:/, $ENV{PATH} )를 그대로 사용했다. /usr/local/etc, /etc/ 등에 shell 스크립트가 다수 존재하지만 제외했다.

* PATH 환경 변수
PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/games:/usr/local/sbin:/usr/local/bin:/usr/X11R6/bin:/home/truefeel/bin

* 실행 결과 (FreeBSD)
bin                      885
perl                      47
ruby                      26
sh                        78

역시 FreeBSD에서도 perl이 많다. 그래 'No Perl, No Unix' 맞다. ^^

Posted by 좋은진호
일상2008. 12. 9. 21:01
두 장소의 큰 차이점은 누구에 의해 관람(공연) 시간이 결정되느냐이다.

1. 미술관, 박물관은...

관람자에 의해 시간이 결정되는 곳이다.

작품, 유물을 더 오래 살펴보고 싶어도, 여러명이 함께 가면 맘대로 되지 않는다. 몇몇 작품들에서 대해서는 서로들 엎치락 뒷치락 관람할 수는 있을 것이다. 그러나 더 오래 보고 싶어도(또는 그 반대인 경우), 결국 맘을 맞춰서 함께 나올 수밖에 없는 장소이다. 만약 내가 관심도가 높았다면, 아쉬움을 뒤로하고 나오게 될 것이다.

  • 혼자 가느냐 함께 가느냐는 '사람과의 만남을 중요시하느냐', '관람 자체를 중요시하느냐'에 따라 달라질 것 같다.
2. 공연장은...

공연자에 의해 시간이 결정되는 곳이다.

서로간의 관심도의 차이가 있어도 문제가 되지 않는다. 관심도가 높으면 열렬히 환호하면 되고, 낮으면 조용히 보고 나오면 된다. 내가 더 보고 싶다고 해서, 나에게만 공연시간이 더 주워지는게 아니다. 모두가 동일하다.

  • 혼자가도 되지만, 함께 가면 더 즐겁다.

3. 한편...

시간 결정권을 누가 쥐고 있느냐의 관점에서 보면 서점은 첫번째에 해당한다. 그래서 서점에 '함께 갈래?', '혼자 갈래?' 묻는다면... 난 혼자가는게 좋다. 빨리 나가자고 조르는 사람이 없기 때문이다. 단, 서점을 만남의 장소로 활용할 경우는 예외다.
Posted by 좋은진호
시스템이야기2008. 11. 27. 13:05
MySQL 5.1 Reference Manual, MySQL 5.1 HA 문서이며, MySQL Korea에 올라와 있습니다. 25일부터 서비스를 했나봅니다.

* 공지내용
11월 25일부터 MySQL 5.1 사용자 매뉴얼과 HA 매뉴얼을 한글로 제공해 드리고 있습니다.
5.1 사용자 매뉴얼은 패키지 구매시 함께 제공되는 것과 같은 내용입니다.
HA 매뉴얼은 리플리케이션과 클러스터 부분을 따로 분리하여 업데이트된 부분을 다시 번역하였습니다.
... 생략 ...

http://www.mysqlkorea.co.kr/sub.html?mcode=develop&scode=01_1&lang=k
Posted by 좋은진호
시스템이야기2008. 11. 26. 01:19
MySQL서버는 log 옵션(my.cnf에서 log=파일명. slow query는 log-slow-queries=파일명)을 통해서 실행된 DB 쿼리를 모두 파일로 저장할 수가 있다. 그러나 DB 서버에서 작은 사이트가 아니고선 엄청난 양의 실시간 쿼리를 모두 쌓는다는 것은 힘들다. DB 운영도중에 잠시동안 쿼리 로그를 쌓겠다고 MySQL 재실행할 수도 없는 노릇이다. MySQL 5.1에서는 재실행없이 로그를 쌓을 것인지 안할 것인지를 결정할 수 있지만, 이부분은 뒤에서 설명하기로 하고, 패킷 스니핑 방법으로 실시간으로 살펴보는 방법을 소개한다.

Poor man’s query logging (Posted by Maciej Dobrzanski) 에서 tcpdump와 perl의 정규표현으로 실시간 쿼리를 살펴보는 괜찮은 방법을 소개하고 있다.

* 위 블로그에 올라온 간단한 명령
     # tcpdump -i eth0 -s 0 -l -w - dst port 3306 | strings | perl -e '
while(<>) { chomp; next if /^[^ ]+[ ]*$/;
   if(/^(SELECT|UPDATE|DELETE|INSERT|SET|COMMIT|ROLLBACK|CREATE|DROP|ALTER)/i) {
      if (defined $q) { print “$q\n”; }
      $q=$_;
   } else {
      $_ =~ s/^[ \t]+//; $q.=” $_”;
   }
}’
    
위 명령을 활용하여 SELECT/UPDATE/DELETE/INSERT 등을 highlight 하도록 작성했다. highlight 에 대한 자세한 글은 '로그 모니터링시 특정 문자를 highlight하기 (2008.1, 글 좋은진호)'를 살펴보기 바란다.

* query_sniff.sh 내려받기
* query_view.pl 내려받기

[ MySQL 쿼리를 스니핑한 후 highlight. 'count'문자도 함께 highlight ]


MySQL 5.1에서는 쿼리를 로깅할지 안할지 여부를 재실행없이 변경할 수 있는 기능이 있다. 다음과 같이 로그 저장을 ON으로 설정할 수 있고, 필요없을 때 다시 OFF를 하면 된다.

SET GLOBAL general_log = 'ON';
SET GLOBAL slow_query_log = 'ON';
... 생략 ...
SET GLOBAL general_log = 'OFF';
SET GLOBAL slow_query_log = 'OFF';

파일이 아닌 테이블로 로그를 저장하려면 다음과 같이 설정한다.
SET GLOBAL log_output = 'TABLE';

log_output= 설정 값으로는 FILE, TABLE, NONE (log_output = 'FILE', log_output = 'TABLE', ..)을 지정할 수 있다. DB 테이블로 쿼리를 저장하게 되면 쿼리 전체는 general_log 테이블에, slow 쿼리는 slow_log 테이블에 각각 저장된다. general_log 테이블의 스키마는 다음과 같으며, slow_log 테이블은 query_time, lock_time 등 다른 형식의 데이터들이 저장된다.

mysql> desc mysql.general_log;
+--------------+-------------+------+-----+-------------------+-----------------------------+
| Field        | Type        | Null | Key | Default           | Extra                       |
+--------------+-------------+------+-----+-------------------+-----------------------------+
| event_time   | timestamp   | NO   |     | CURRENT_TIMESTAMP | on update CURRENT_TIMESTAMP |
| user_host    | mediumtext  | NO   |     | NULL              |                             |
| thread_id    | int(11)     | NO   |     | NULL              |                             |
| server_id    | int(11)     | NO   |     | NULL              |                             |
| command_type | varchar(64) | NO   |     | NULL              |                             |
| argument     | mediumtext  | NO   |     | NULL              |                             |
+--------------+-------------+------+-----+-------------------+-----------------------------+
6 rows in set (0.00 sec)

보다 자세한 것은 커피닉스에 써둔 'MySQL 쿼리 실시간 모니터링 및 저장하기'를 살펴보기 바란다.
Posted by 좋은진호
일상2008. 11. 24. 20:41
내 방 한쪽 벽과 모니터, 스피커, 달력 뒷면에 붙어있는 메모들이다. 한장 한장 붙여갈 때 마다 나의 미래의 모습을 보는 것 같아 뿌듯해진다.



메모는 주로 책에서 읽은 내용 중 생각을 필요로 하고, 실천해야 할 것들을 주로 적어둔다. 이외 TV 대사(이를테면 드라마 '이산'에서 '가을이 깊어지면 열매는 떨어지는 법'이라는 대사가 나온다. '권불십년'처럼 권력은 영원하지 않으니 쥐고 있을 때 잘 하라는 의미로 쓴 말이다.)나 인터넷에서 봤던 내용을 적는다. 또 순간 생각난 것들, 해야할 일도 한쪽 구석에 붙여둔다.
 
012
 

'문장'으로 적어둔 것도 있고, 이야기를 끄집어 내기 위한 '단어' 하나로 적어둔 것도 있다. 이 중에 몇가지만 소개한다.

  • 지식은 실천에서 나와 실천으로 돌아가야 참다운 것 (신영복, '감옥으로부터의 사색' 중에서)
  • 들은 것을 지식으로 만들어 놓지 않으면 아무 것도 기억할 수 없다. (단테)
  • 나를 만드는 것은 바로 나 자신의 생활 습관이다. (법정스님, '홀로사는 즐거움' 중에서)
  • 시장 점유율이 아닌, 소비자의 마음을 훔치기 위한 마인드 점유율 시대다. ('콜래보 경제학' 중에서)
  • "양이 극에 달하면 음이 되고, 음도 극에 달하면 양이 된다."
           => 성공했을 때 자만하지 말고, 실패했을 때 포기하지 말라는 뜻 ('귀곡자' 중에서)
  • 인터넷의 본질은 지혜를 맡기면 이자를 붙여 돌려주는 은행 (하테나 창업자 '곤도준야', '웹진화론 2' 중에서)
  • 랜즈버거효과, 포지션 토크, 노마지지, 나그네쥐 레밍스, ... (이야기를 꺼내기 위해 '단어'로 적어둔것)

크기는 작지만, 매우 소중한 것들이다. 고맙다 메모지들아.

Posted by 좋은진호