전체 글 227

[책] 뉴욕의 프로그래머

RSS를 통해 몇몇분들의 독서평을 보고, 뉴욕의 프로그래머를 읽어보았다. SI와 국내 전산업계의 한계에 실망해서 언제부터인가 프로그래밍이 재밌는 것이라는 사실을 잊고 살았던거 같다. 프로그램 버그나 장애를 해결하는 것이 이렇게 재밌을 수도 있구나..하는 생각과 함께 제대로 된 프로그래밍을 한번 해봐야 겠다는 생각을 하게 해 주었다. 강컴에서 찾아보니 임백준 저자의 다른 책들도 서평이 꽤 좋았다. 그래서, 내친김에 임백준씨가 쓴 책들을 찾아서 읽어보는 중이다. 매너리즘에 빠진 프로그래머들에게 자각을 일깨워주는 좋은 책이다.

책 이야기 2008.07.08

[20080702] php에서 c확장기능 구현

회사에서 인증등 보안이 필요한 부분에 대해 php내에서 zend기능을 통해 c확장기능을 구현해 놓고 쓴다. 그런데, 기존에 구현되어 있는 부분이라 소스도 복잡하고, 이 부분이 왜 들어갔을까 하는 부분을 알기 힘들기 때문에, 기존 소스에 구애받지 않고, 직접 간단하게 c확장기능을 구현하는 부분을 테스트 해보았다. 참고로, zend라고 검색을 하면 주로 php성능향상을 위해 zend사에서 내놓은 엔진에 대한 내용이 많은데, http://kr.php.net/manual/en/zend.php#zend.intro 위 사이트에서 보면 php에서 c와 같은 다른 언어의 함수등을 호출해서 쓸 수 있는 기능으로도 불린다.. 우선 다음과 같이 c로 test.c를 만든다. #include "php.h" ZEND_FUNCTI..

생활속의 프로그래밍 시작~

요즘 읽고 있는 책들이나 몇몇 동영상을 통해 생활 속의 프로그래밍, 즉 나를 위한 프로그래밍을 매일 조금씩 해봐야 겠다는 생각을 했다. 남들에게 보여주기 부끄러울지 모르지만, 하나하나 기본기를 연마하고 내 실력이나 생활에 유용한 프로그램을 해봐야 겠다. 프로그램은 1시간에서 2시간안에 끝날 수 있는 간단한 기능 위주로 해볼려고 한다. 게시물은 우선 비공개모드다; 나중에 이 카테고리가 좀 쌓이고, 먼가 그럴듯한 산출물이 나오면 카테고리 전체를 일괄 공개로 하는 목표를 삼아본다.

[리눅스] %iowait 에 대한 이해

운영하고 있는 MySQL 서버중에 트래픽 통계를 집계해서 보여주는 DB가 있는데, 매시간 배치작업이나 데이터 양으로 속도개선이 필요하다. 다음주에 Mysql 버전을 5.1.25로 올리면서 partitiong과 replication을 구현해서 올릴 예정이다. 대체 예정 서버에서 배치프로그램과 쿼리들을 실행시키면서 테스트를 하고 있다. 그런데, sar 명령등에서 %iowait이 배치작업 도중 25% 정도까지 올라가는 현상이 있었다. 기존 운영서버에서는 거의 0%인데, 대체서버에서 왜 올라가는 것일까? 혹시 추가로 꽂은 디스크쪽에 io가 문제가 있는게 아닐까 하는 생각이 들었다. 그러나, %iowait에 대해 좀더 확인해 보니, %iowait 의 의미는 CPU 가 idle 이지만 I/O 가 끝나기를 기다리는 ..

리눅스 및 DB 2008.06.26

[리눅스] vmstat 과 sar 명령

리눅스의 메모리, CPU, IO 등을 확인할 수 있는 유용한 명령어로 vmstat과 sar가 있다. 1. vmstat 5 와 같이 하면 5초 간격으로 모니터링 정보를 갱신하며 보여준다. 해당 항목들의 의미와 점검점은 다음과 같다. 구분 설명 proc r CPU에서 대기 중인 프로세스의 수를 의미한다. 이 값이 증가하거나 r 개수/cpu 개수의 값이 항상 2 이상 나온다면 CPU의 성능을 높여주어야 한다. b 동작하는 블럭 프로세스의 수 이 값이 높다면 블럭 디바이스의 속도를 높여야 한다. w swap out되는 프로세서의 수이다.w에 값이 증가하면 메모리가 매우 부족하다는 의미이므로 메모리를 늘려야 한다. memory(KB) swapd 현대 메모리가 부족해 swap을 사용하고 있는 양을 의미한다. 평소에..

리눅스 및 DB 2008.06.26

동시 다운로드 디폴트 개수와 개수 조정

어제에 이어, 자투리 시간에 Page Detailer를 띄우고 여기저기 사이트들을 열어보고 있다. Page Detailer 는 시작시점등이 너무 작게 나와서, 이게 동시에 시작된건지 앞 이미지에 대해 응답을 받고, 다음으로 시작된건지 구별하기가 힘들다. 그래서, Firebug의 Net탭으로 보는데 이미지들이 10개이상 동시에 요청이 되고 있었다. Http 1.1 표준에는 서버당 2개의 요청만 하도록 권장했는데, firefox3 에서는 디폴트값이 더 높아서 그런것이었다. 파폭의 about:config 에서 열어본 결과 network.http.max-connections-per-server 값이 15, network.http.max-persistent-connections-per-server를 6으로 설정되..

about Web 2008.06.26

헤더 만료기한(image cache)

요즘 웹사이트 최적화 기법 이라는 책을 보고 있다. 얼마전 Daum UI DevDay 에서 들은 내용이나 서평등을 보니 Daum에서 2008년 리뉴얼을 하면서 책 내용을 많이 참고한거 같다. 책 내용들이 적용하면 좋을 내용들이 많은데, 오늘은 "규칙3: 헤더에 만료기한을 추가하라"라는 부분을 보고 테스트해보고 있다. 현재 서비스 하고 있는 url들에 대해 firefox의 firebug의 Net탭으로 다운내역들을 확인해 보았다. 아니 그런데, 한번 받은 이미지에 대해 페이지 리로드시 304로 요청처리가 되어야 할 내용들이 요청이 없는 것이 아닌가.. 음 리뉴얼할때, Expire내용을 추가한건가 해서 response 헤더도 찍어봤는데, 분명 이미지들에 대해 Expire나 max-age 속성이 없었다. 이상해..

about Web 2008.06.25

Mysql(Out of resources when opening file)

Mysql partitiong 테스트로 구축해서 배치작업등을 돌려보고 있다. 오늘은 배치작업들이 다음과 같은 에러를 내면서 실패했다. Statement failed: error 23 (Out of resources when opening file './weblink/wl_img_ht_tbl_R#P#p22.MYD' (Errcode: 24)) 즉, 파일을 열 수 있는 제한에 다다랐다는 말이다. partitiong을 구현하면서 파일의 개수가 많아져서 에러가 발생한 것으로 보인다. 현재 5.1 버전에서의 파티셔닝에서 테이블 조회시 해당 파티셔닝에 해당하는 파일만 접근하는 것이 아니라, 해당 테이블의 모든 파일을 읽어들인다고 한다. open_files_limit 값을 증가시켜주기 위해 my.cnf에 open-fi..

리눅스 및 DB 2008.06.24

국내 웹기술과 서비스에 대한 감상

최근 2005~2007년의 3년간 DB나 서버단 기술에 비해 Front End 단의 기술변화가 참 많았던거 같다. 작년까지 주로 DB나 서버단 개발을 하다 최근에 웹관련해서도 관심을 가지는데.. 웹표준이나 Ajax기술, 브라우져의 변화 등에서많은 변화가 있었던거 같고 아주 흥미롭다. 그런데, 이러한 기술변화에 대해 국내에서는 naver, daum을 중심으로 한 대형포탈과 스프링노트, 미투데이 정도의 웹2.0 선두업체들만 민감하게 받아들였고, 내가 있는 회사를 비롯한 대부분의 회사들에서는 UI단의 기술변화에 대해 둔감했던거 같다. 이런 기술변화에 대한 민감도는 서비스를 사용하는 사용자에서도 볼 수 있을거 같은데.. 대부분 기존 서비스에 만족하고 사용하고 새로운 서비스에 대해 관심도가 낮았던거 같다. 그에 ..

about Web 2008.06.24

mysql bug(This could be because you hit a bug)

개발장비에 mysql 5.1.24를 깔아서 partitioning 등 기능을 테스트하고 있다. 오늘은 mysqldump를 받는데 장비가 hang이 걸려서 리붓이 됐다; 테이블사이즈가 커서 dump파일이 2G가 넘는게 몇개 있긴 했지만, 5.0버전에서 잘 돌고 있던 거라 dump를 다시 실행시켰다. out of memory 라는 메시지가 나와서 dump받던 프로세스를 kill 로 죽이고, my.cnf에서 mysqldump 실행시 max_allowed_packet 값을 좀 키운다음 mysql을 내렸다가 다시 올리려고 하는데.. 아래와 같은 에러가 나면서 mysqld이 안 올라간다;; my.cnf바꾼거 때문인가 해서 원복해도 안되고... 몇번의 삽질과 검색끝에.. mysql의 버그라고 한다; 최근에 5.1.2..

리눅스 및 DB 2008.06.18
반응형