Skip to main content

Posts

함토벤을 읽고나서

책을 처음 보았을 때 , 나는 한 자란 사람이 자기자랑삼아 자서전을 썼구나고 부정적인 생각을 했다 . 나 또한 학부 , 대학원과정을 해외에서 했고 , 소위 세계일류대에서 공부 및 연구를 해 보았다 . 그러나 , 책을 읽어가면서 나의 그에 대한 부정적인 시각이 긍정적인 시각으로 바뀌기 시작했고 , 보다 더 겸손해져 갔다 . 비슷한 상황에 처해 있을 때 , 그는 나 보다 더 훌륭하게 그 상황을 헤쳐 나갔을 뿐만 아니라 , 그 안 위기 상황을 뒤집어 기회로 삼으신 위인이다 . 내가 만약 학생시절 그와 같이 현명한 판단을 하고 그 대범한 용기와 투지가 있었다면 이런 나의 모습은 없었을 것 이다 . 이 책은 나에게 많은 삶의 과제를 주었고 , 이제부터라도 리셋을 해야겠다는 동기부여가 되는 것이다 . 아래 내용의 본인이 본 책을 읽으면서 특히 눈 여겨 본 글의 내용의 일부를 추출한 것이다 . 오케스트라 부흥사 절에서 저자는 이렇게 말하고 있다 . " 일이라는 건 열심히 해도 불평하는 사람들이 생기고 열심히 안 해도 비난을 받는다 . 기왕이면 열심히 하고 욕을 먹자 . 언제가 될 지 모르지만 내가 나중에 이 오케스트라를 떠날 때 ' 참 지독한 사람이다 . 그러나 음악은 정말 제대로 만든다 ' 는 소리를 들으면서 떠나자 " 나는 항상 그런 마음으로 일을 하고 있다 . ' 이루지 못할 것처럼 보이는 것을 이뤄내는 것 (to achieve the unachievable)', 삶이란 바로 그런 과정의 연속이라고 생각한다 . 이 말씀은 너무나도 나에게 와 닿는다 . 우리들은 늘 불평이 많...

Sqlite database is locked

sqlite는 embedded system에서 널리 사용되는 무료 dbms?(dbms라고 말하긴 좀 그렇지만, dbms라 불러주자 ㅎ) 이다. 특히 memory db 기능이 아주 유용하다. 그 밖의 dbms에서도 이 기능이 있으나, 이 기능이 지원되는 버전은 대부분 고가이다. 따라서, 무료인 sqlite를 많이들 애용하는 것 같다. 멀티쓰레드를 sqlite DB를 구현하고 롱런테스트를 하다보면, pthread_mutex_lock으로 쓰레드 간의 교착상태를 막아줘도, sqlite lock 에러가 간헐적으로 발생할 것이다. 이에 대해 본인은 다음과 같은 에러 처리 구문을 준비하여 사용하고 있다. sqlite Error가 발생하면, sqlite3_exception함수를 호출한다. 이 함수에서 sqlite error code를 구분하여, 만약, busy 또는 locked이면 최대 2초간 sleep 상태로 만드는 sqlite3_busy_timeout, busy handler를 호출한다. 그 다음, goto 구문으로 재차 sqlite3_exec를 실행한다. 단, sqlite3_exec는 transaction의 begin과 commit 또는 rollback 구문 사이에서 실행한다. 대부분 lock 에러가 발생하더라도 1~2번 실패 후에, 처리된다는 것이 본인의 테스트 결과이다. 단, journal를 WAL로 변경하였음. 기존 journal은 멀티쓰레드 지향적이지 않다는 점을 잊지마시길.... Error Code SQLITE_LOCKED (6): Database Is Locked This error code occurs when you try to do two incompatible things with a database at the same time from the same database connection. For example, if you are in the middle of a SELECT statement and y...

토머스 제퍼슨의 10가지 습관

1. 오늘 할 수 있는 일을 내일로 미루지 않는다.   제퍼슨은 매일 동트기 전에 자리에서 일어나   그 날 할 일에 대한 목록을 작성했다.   2. 당신 스스로 해결할 수 있는 일로 다른 사람을 괴롭히지 않는다.   제퍼슨은 정치적 독립뿐 아니라 개인의 독립 역시 중요하게 생각했다.   그는 개인의 독립은 자신의 문제를 스스로 해결하는 능력에서 비롯된다고   생각했다.   3. 번 만큼만 쓴다.   제퍼슨은 이것을 어렵게 배웠다.   즉 이 충고를 수차례 무시하여 그에 따른 혹독한 대가를 치르면서,    벌기 전에 돈을 써서는 안된다는 사실을 깨달았다.   4. 값이 싸다는 이유로 원하지도 않는 물건을 구입하지 않는다.   당신에게 의미가 있는 물건만을 구입한다.   제퍼슨은 물질을 단순한 물질이 아니라 경험을 얻는 수단으로 생각했다.   5. 자만은 허기, 갈증, 추위보다도 많은 대가를 요구한다.   오랫동안 권력의 중심에 있으면서 제퍼슨은   자만이 초래한 참담한 결과를 수없이 목격했다.   6. 소식(小食)을 후회하는 이는 없다.   제퍼슨이 유달리 건강한 생활을 할 수 있었던 것은   건강에 유익한 음식 섭취와 소식 습관 때문이었다.   7. 낙관적인 태도를 갖는다.   선천적으로 낙관적이었던 제퍼슨은 항상 가장 좋아보이는 것을 선택할 수   있었다. 그것은 그가 '당신이 선택한 것을 손에 넣고 싶다면 당신이 갖고 있는 것을 선택하면 된다'는 식의 사고방식을 갖고 있었기 때문이다.   8. 기우(杞憂)는 마음을 병들게 한다.   제퍼슨은 걱정은 무의미한 일임을 일깨워주고 있다. 그는 낙관적인 사고방식으로 미래에 대한 모든 근심걱정에서 벗어날 수 있었다.   9....

find명령어

20일 이전의 파일을 삭제 {{{ $find -type f ! -mtime -20 -exec rm -rf {} \; }}} size가 0보다 큰 파일 $find /mnt/mp_single0/ -type f -size +0 -exec ls -ls {} \; 여러 파일명 패턴으로 검색 find Appl -type f | grep "\.c$\|\.h$"

유닉스 하드디스크 관련 명령어

fdisk fdisk -s /dev/sda1 [파티션] fdisk /dev/sda [장치명] badblocks 배드블럭 점검 badblocks -v /dev/sda1 -o 출력파일 -w [write 테스트; 기존 데이터 삭제, 시간이 많이 소요] hdparm hdparm은 IDE계열의 HDD (usb계열은 안 되는 것 같다) 의 파마미터를 설정하고 확인하는 명령어이다 -t 옵션은, 버퍼링없이 실제데이터 읽는 속도 측정 -T옵션은, 버퍼링데이터 읽는 속도 측정 -i 옵션은, HDD의 상세한 모델명등을 참조할 수 있다. [sikim@console mediamanager]$ sudo hdparm -t /dev/sda1 /dev/sda1:  Timing buffered disk reads:  222 MB in  3.00 seconds =  74.00 MB/sec [sikim@console mediamanager]$ sudo hdparm -T /dev/sda1 /dev/sda1:  Timing cached reads:   4188 MB in  2.00 seconds = 2094.98 MB/sec mkfs 파일시스템 작성 mke2fs mke2fs is  used to create an ext2/ext3 file system. ext3fs (third extended file system)은 ext2에 저널링 기능을 확장한 파일시스템이며, 2001년부터 linux에서 지원되고 있다. when No Raid) mke2fs -j -T fs_type (e.g., largefile) -b 4096 -v /dev/sda1 fs_type은, /etc/mke2fs.conf에 정의되어 있다. when RAID) mke2fs 로  RAID -4 나  RAID -5 장치를 포맷할 때 쓸 수 있는 특별한 옵션이 있습...

글로벌소프트웨어를 꿈꾸다 를 읽고나서

이 책은 , 앞으로 한국의 소프트웨어 회사에서 지향해야 할 것이 아주 자세히 기술되어 있다 . 책의 내용은 아주 간단하다 . 1) 코딩하기 이전에 SRS 를 적고 , 2) 소스관리시스템 , 3) 이슈 ( 버그 ) 관리시스템을 사용해야 한다는 것이다 . 너무 쉽고 너무나도 잘 알려져 있는 사항이다 . 그러나 그 것을 제대로 실행하고 있느냐가 문제이다 . 본인은 일본에서 8~9 년 가량 유학생활을 하면서 , 파트타임으로 일본의 중소기업 (50 명이내 ) 에서 소프트웨어를 개발해 왔다 . 그러나 , 그들의 일하는 패턴은 저자가 서술한 실리콘밸리에서의 근무형태와 비슷했다 . 사업이 시작되면 먼저 매니저가 고객과의 회의를 통해 전체적인 분석을 하고 문서화한다 . 그리고 그 문서를 가지고 다시 고객을 찾아가 토의한 다음 문서를 보다 더 구체화시킨다 . 최종적으로 고객과의 합의 된 문서를 기반으로 소프트웨어를 설계하기 시작한다 . 설계가 어느 정도 되면 다른 엔지니어와 함께 토의를 몇 차례 거처 설계문서를 완료한다 . 이 단계가 , 전체 공정 중 거의 절반 (50%) 이다 . 그 다음은 사내 인력과 외부인력 ( 아르바이트포함 ) 으로 실제 코딩작업에 들어간다 . 이 작업이 전체공정 중 약 3 분의 1 를 차지하게 되고 , 나머지는 납기일까지 unit 테스트 , 통합테스트를 거쳐 , 개발이 완료되고 , 고객에게 납품을 한다 . 여기서 프로젝트의 모든 업무가 완료된다 . 이 회사의 규모는 우리회사와 비교조차 되지 않는다 . 년간 매출이 100 배 이상 차이가 난다 . 하지만 , 그들의 업무형태와 효율은 우리보다 상당히 뛰어나다 . 우리가 앞으로 지향해야 할 것은 너무나도 뻔하다 .a 우리...