사무실을 이사후 몇년간 타지 못했던 자전거를 타고 출퇴근을 하고 있습니다.

2002년 1월에 구입을 했으니, 좀만 더 버티면 10년차 자전거가 되는군요.

많이 탈때는 1년에 5000km 까지 탔었는데.. 한참 안타서 odo 미터가 9766km 이네요.

올해 1만km 돌파할듯 합니다.






Posted by 키플러
,

- 법먹고 살라고 visual studio 로 코딩하고  (간혹 c++ builder 도 ㅎ)

- 가끔 디바이스 드라이버 만들려면 c 로 코딩해야 하고

- activex 만드려면 html 코딩도 좀 할줄 알고, javascript 도 필요한 만큼 쓰고

- 프로그램 패키징하려면 nsis 문법도 공부해야 하고

- 라이브러리 컴파일 하려면 cygwin 깔아서 gcc 로 컴파일 해야할 일도 있고 

- 서버 관리하려면 가끔 텔넷으로 서버 들어가서 vi 쓰면서 작업도 하고, 모니터링도 하고

- 디자이너랑 작업하려면 포토샵도 대충 쓸 줄 알고

- 사촌동생 java 숙제도 가끔 해주고

- 관리자 툴은 c# 으로 만들어 보기도 하고

- 해킹 막을려면 어셈블리나 리버스 엔지니어링도 좀 공부하고

- 친척들 컴퓨터도 조립해 주고


Posted by 키플러
,
멀티 쓰레드 프로그래밍의 첫번째 원칙
- 멀티 쓰레드를 안쓰고 프로그램을 짤 수 있으면 멀티 쓰레드를 쓰지 마라.

멀티쓰레드를 처음에 배우면 멀티 쓰레드라는게 무슨 마법 지팡이처럼 느껴지게 된다. 하지만 수년동안 멀티쓰레드에 대해서 이해를 제대로 못하고 수많은 버그를 만들고 그 버그에 지쳐보고 나서야 멀티 쓰레드는 조심해서 써야할 칼이라는걸 느끼게 된다.

하지만 점점 세월이 바뀌어서... 이제는 멀티코어를 고려하지 않고 프로그래밍을 할 수 없는 시대가 되었다. 멀티코어 환경에서 멀티 쓰레드 프로그래밍은 개발자가 반드시 거쳐야 할 난관이다. 

=============


http://www.yes24.com/24/goods/3858484

http://minjang.egloos.com/  블로그를 운영하는 김민장이라는 분이 블로그에 쓰던글을 정리해서(그랬나?) 책으로 낸것.

평소 블로그를 보면서 내공이 대단하다고 느껴서 책 소개를 보고 주저없이 구매를 했는데 표지의 사진을 보고 너무 어려(-.-) 보여서 깜놀

파이프라이닝 같은경우 학교에서 대충 배우고 말았는데, 다시 한번 책을 보니까 정리가 되서 좋았음.

프로그래머가 보통 하드웨어 CPU 에 대해서는 잘 모르거나 추상적으로 알거나, 어디서 주워들어서 알고 있는 경우가 많은데, 이건 CPU 에 대해서 쫙 정리를 해주니까 교양 능력이 올라간 느낌.

L1 캐시 L2 캐시등을 읽다가 보니 왠지 파코즈 하드웨어 매니아들이 교양 서적으로 읽어도 (물론 프로그래머가 아닌이상 접근하기 힘든 부분도 있지만) 좋지 않을까.... 라는 생각을 했음

책을 보면 왠지 병렬 프로그래밍에 관한 책이 아닐까 라고 ... 생각을 하게 되지만 프로그래밍 자체에 관련된 내용은 거의 없음. 하지만, 병렬 프로그래밍을 하는 사람들이 한번쯤 읽어볼만한책.


Posted by 키플러
,

* 나는 민족성이라는것을 별로 믿지 않는다. 단지 어떤 국가/민족에 공통적으로 발견할 수 있는 현상이나 경향은 존재한다고 본다. 

우리나라 사람은 정보를 수집하고 정리하는것을 별로 좋아하지 않는듯하다. 내가 대표적으로 느끼는것은 프로그램 리뷰이다. 대부분 프로그램 리뷰라고 올라온 글을 보면 전혀 과학적이지 않은 비교, 개인의 주관 느낌이 강한 ... 그리고 대충 짧게 쓴 글을 보기 쉽상이다. 

그러다가 간혹 외국의 소프트웨어 리뷰나 소개글등을 보면 정말 많은 시간과 열정을 들여서 글을 썼구나... 라고 생각이 들때가 많다.

예를 들자면

http://www26.atwiki.jp/kmgr/pages/69.html 일본의 반디캠 리뷰. 각 기능에 대한 설명 및 벤치마크, 타 프로그램과의 비교 등등 정말 세심한 글이다.

http://comicrack.cyolito.com/user-forum/7-general/7148-list-of-comic-and-manga-readers  만화뷰어에 대한 소개글. 각 뷰어에 대한 장점/단점등을 잘 정리해 놓았다. 당연히 홈페이지 링크도 빼먹지 않는다.


결론: 프로그램 리뷰 쓸라면 잘 쓰고, 대충 쓸라면 잘 쓴 글 링크나 해주자.

Posted by 키플러
,

* 보통 압축파일이라고 하면 zip, rar 등의 파일을 의미한다. 하지만 압축파일도 동영상 파일등과 마찬가지로  컨테이너+압축 알고리즘으로 구분을 할 수 있다.
예를 들자면 zip 파일 포맷은 보통 deflate 라는 알고리즘을 이용해서 압축을 하지만, 최근에는 bzip2 나 lzma 와 같은 알고리즘도 사용할 수 있다 (확장 정의되었다.)

압축 파일 컨테이너는 압축파일에 대한 정보(헤더) 와 실제 압축된 데이타(알고리즘) 를 파일에 어떻게 집어 넣을것인가 하는 정의를 말한다.

여기서는 압축 알고리즘은 제껴두고 압축 컨테이너의 특징중 생각나는것을 정리해 본다.


* zip: 제일 많이 쓰는 압축 포맷. 특이한 점으로 파일 헤더가 두군데 위치한다는 것이다.

: 헤더1 : 데이타1 : 헤더2 : 데이타2 : ........... 헤더n : 데이타n :  헤더1, 헤더2 ...... 헤더n

즉, 헤더와 데이타가 순서대로 나오다가 맨 마지막에 헤더를 쭉 몰아서 다시한번 더 나열을 하도록 되어 있다. 앞에 헤더는 로컬헤더라고 부르고 뒤에 헤더는 센트럴헤더라고 부르는데 내용은 약간 다르지만 기본적인 내용은 동일하다.

왜 이렇게 만들었을까?  장/단점을 꼽자견

단점: 파일의 크기가 커진다. 

장점: 
1. 파일을 순차적으로 만들 수 있다. 즉 스트리밍으로만 저장이 가능하거나 할 경우 (네트웍 전송, 테이프 저장장치) 로컬헤더에는 대충 정보를 적어놓고 (압축이 완료되기 전까지는 압축된 크기를 알수가 없다!) 센트럴 헤더에 완벽한 정보를 적는 식으로 만드는게 가능하다.
보통의 압축파일은 이런식으로 스트리밍으로 파일을 만드는게 불가능하지만(압축을 안하는 경우만 가능하다..), zip 파일은 가능하다. 

2. 파일 헤더가 뒤쪽에 몰려있기 때문에 파일 헤더분석 시간이 짧어진다. 파일이 한 10기가쯤 되고 파일이 1만개쯤 되면 그 차이를 몸으로 실감할 수 있게 된다.



* rar : 많이 쓰는 압축포맷..  

: 헤더1 : 데이타1 : 헤더2 : 데이타2 :.......... 헤더n : 데이타n

rar 도 도스시절부터 만들던 포맷이라서 포맷이 그지같다. 단지 winrar 와 같은 프로그램에서 처리를 잘해주고, 다양한 기능 (분할 압축, 솔리드 압축, 데이타 복원) 을 가지고 있기 때문에 많이 사용하고는 있지만.... 포맷 자체는 오래된 포맷에 계속 추가 기능을 추가한 덕분에 상당히 난해한 포맷이 되어버렸다.



* lzh : 일본에서 만든 포맷

이것도 rar 과 대동소이하게 헤더-데이타가 나열된 구조다. 단지 개발이 중지된 관계로 파일에 암호도 지원하지 않고, 분할압축에 대한 정의도 되어 있지 않다. 



* 7zip: 최강의 압축 포맷

최강의 압축알고리즘인 lzma 를 지원할 뿐만 아니라 컨테이너 자체도 최강이다. 보통 다른 컨테이너는 파일 사이즈를 저장하거나 할때 4byte 고정폭으로 저장해서 4GB 이상을 지원 못하던가 하는데, 7zip 은 모든 데이타를 가변폭으로 저장을 하기 때문에 이런 제약도 없고 헤더가 차지하는 크기도 매우 작다

또한 파일 포맷도

헤더 위치 | 파일 데이타 ................................ | 헤더1, 헤더2 ... 헤더 n

과 같이 되어 있다. 즉, 파일정보 헤더가 맨 뒤에 모여있기 때문에 파일 분석도 매우 빠르고, 헤더 크기도 작고, 솔리드 압축등을 처리할때도 유리하다.

단지 단점이라면, 파일의 맨 앞에 헤더의 위치를 저장해야 되기 때문에 스트리밍 형식으로 압축 파일은 만드는것이 불가능하지 않을까.... 싶기도 하고...... (사실 이거는 파일 뒤쪽 뒤져도 되기 때문에 테스트 안해봐서 잘 모르겠다. )


* hv3 : 내가 만든 포맷.. 

이놈은 특이하게 파일의 맨 앞에만 헤더가 존재한다. 즉

헤더1, 헤더2,...... 헤더 n | 데이타1, 데이타2...................... 데이타n

이런식으로 되어 있다. 장점으로는 파일의 헤더 분석 속도가 빠르고, 스트리밍으로 데이터를 전송받으면서 압축해제가 가능하다는 장점이 있다.

단점으로는 헤더가 앞에 존재하기 때문에 데이타를 압축하거나 할 경우 임시 폴더등에 데이타를 전부 압축한 다음에 다시 묶는 과정등이 필요하게 된다. 즉, 압축 해제는 쉬운데 압축파일 만들기가 지랄 같다.

따라서 일반적인 범용목적으로 사용하고자 만든것이 아니라, 특수 목적 - 스트리밍 적합, 파일 분석 쉬움 - 에 적합한 포맷이다.

헤더는 그 크기가 큰편에 속한다. 이유는 각각의 헤더를 마치 xml 처럼 저장할 수 있도록 만들어 놓았기 때문이다. 따라서 헤더는 일반적인 압축 포맷보다 불필요하게 커지기는 하지만 하위 호완성 및 확장성이 좋게 되어 있다.


Posted by 키플러
,