"사랑하지 않으면 떠나라"(차드 파울러 지음, 송우일 옮김)


이 책은 2000 년대 판 개발자 처세술이다.
이제 더 이상 개발자들은 머리 좋은 괴짜들이 아니라
경영진의 눈치밥을 먹는 천덕꾸러기 일 뿐이다.

MBA 도 하고, 조직관리도 하고, ....일과 후에도 기술개발을 계속하라.

밥 벌이는 그렇게 힘든 것이다.

IE5 보다 5 배 빠르다고 한다.
직접 써보니 10 배는 빠른듯.

CVS 설치 후 보니까, 현지 시각 설정이 안되 어 있다. 즉 9 시간 느리다. 어떻게 설정하나?


-------
arbi9:/home/cts/src/pibc>date
2008년 2월 20일 수요일 17시 14분 47초

arbi9:/home/cts/src/pibc>cvs status -v pibd6221.c
===================================================================
File: pibd6221.c        Status: Up-to-date

   Working revision:    1.1.1.1 Tue Nov 18 02:09:33 2003
   Repository revision: 1.1.1.1 /home/cvs/src/pibc/pibd6221.c,v
   Sticky Tag:          (none)
   Sticky Date:         (none)
   Sticky Options:      (none)

   Existing Tags:
        start                           (revision: 1.1.1.1)
        INITIAL                         (branch: 1.1.1)



trac-admin

카테고리 없음 2008. 2. 20. 15:53

TOW_HOME=C:\TOW
PATH=C:\TOW\Subversion\bin;C:\TOW\Python;C:\TOW\Python\DLLs;C:\TOW\Python\Scripts;C:\TOW\Python\Lib;;C:\TOW\Apache\bin;C:\TOW\Apache\modules;C:\TOW\SQLite;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\Program Files\Intel\DMIX

trac-admin - The Trac Administration Console 0.10.4

Usage: trac-admin </path/to/projenv> [command [subcommand] [option ...]]

Invoking trac-admin without command starts interactive mode.
about
 -- Shows information about trac-admin

help
 -- Show documentation

initenv
 -- Create and initialize a new environment interactively

initenv <projectname> <db> <repostype> <repospath> <templatepath>
 -- Create and initialize a new environment from arguments

hotcopy <backupdir>
 -- Make a hot backup copy of an environment

resync
 -- Re-synchronize trac with the repository

resync <rev>
 -- Re-synchronize only the given <rev>

upgrade
 -- Upgrade database to current version

wiki list
 -- List wiki pages

wiki remove <name>
 -- Remove wiki page

wiki export <page> [file]
 -- Export wiki page to file or stdout

wiki import <page> [file]
 -- Import wiki page from file or stdin

wiki dump <directory>
 -- Export all wiki pages to files named by title

wiki load <directory>
 -- Import all wiki pages from directory

wiki upgrade
 -- Upgrade default wiki pages to current version

permission list [user]
 -- List permission rules

permission add <user> <action> [action] [...]
 -- Add a new permission rule

permission remove <user> <action> [action] [...]
 -- Remove permission rule

component list
 -- Show available components

component add <name> <owner>
 -- Add a new component

component rename <name> <newname>
 -- Rename a component

component remove <name>
 -- Remove/uninstall component

component chown <name> <owner>
 -- Change component ownership

ticket remove <number>
 -- Remove ticket

ticket_type list
 -- Show possible ticket types

ticket_type add <value>
 -- Add a ticket type

ticket_type change <value> <newvalue>
 -- Change a ticket type

ticket_type remove <value>
 -- Remove a ticket type

ticket_type order <value> up|down
 -- Move a ticket type up or down in the list

priority list
 -- Show possible ticket priorities

priority add <value>
 -- Add a priority value option

priority change <value> <newvalue>
 -- Change a priority value

priority remove <value>
 -- Remove priority value

priority order <value> up|down
 -- Move a priority value up or down in the list

severity list
 -- Show possible ticket severities

severity add <value>
 -- Add a severity value option

severity change <value> <newvalue>
 -- Change a severity value

severity remove <value>
 -- Remove severity value

severity order <value> up|down
 -- Move a severity value up or down in the list

version list
 -- Show versions

version add <name> [time]
 -- Add version

version rename <name> <newname>
 -- Rename version

version time <name> <time>
 -- Set version date (Format: "YYYY-MM-DD" or "now")

version remove <name>
 -- Remove version

milestone list
 -- Show milestones

milestone add <name> [due]
 -- Add milestone

milestone rename <name> <newname>
 -- Rename milestone

milestone due <name> <due>
 -- Set milestone due date (Format: "YYYY-MM-DD" or "now")

milestone completed <name> <completed>
 -- Set milestone completed date (Format: "YYYY-MM-DD" or "now")

milestone remove <name>
 -- Remove milestone



그냥 최대한 빨리 이슈 추적 시스템을 사용하세요.(49)

참고 사이트
CVS http://www.cvshome.org (<-- 현재 제대로 운영되지 않고 있다. http://www.nongnu.org/cvs/ 대신 이곳을 보라)

서브버전 http://subversion.tigris.org


참고 도서
"Mastering Regular Expressions", Jeffrey Friedl


"실용주의 프로그래머를 위한 버전관리 using  CVS", 데이비드 토머스, 앤드류 헌트 공저, 인사이트


* 코드가 어떻게 동작하는가 이해해야 하지만, 꼭 그 내용에 전문가가 될 필요는 없다...

* 팀원 가운데 한 사람이 코드가 너무 어려워서 다른 사람은 이해할 수 없다고 말한다면, 누구라도(원저자를 포함해서) 유지 보수하기가 힘들것이다. 단순화하라.

* 이해하지 않은 상태에고 코드를 고쳐서 못 쓰게 만들지 말라. 땜질식 수정 증후군은 처음엔 아주 천진난만하게 시작하지만 급격히 알아볼 수 없는 쓰레기가 된다. 증상이 아니라 문제를 고쳐라.

* 대부분의 복잡한시스템은 너무나 난해해서 한 사람이 시스템 전체를 이해하기 어렵다. 작업 중인 특정 부분에 대해 더 깊이 이해하는 것 외에도, 시스템의 각 부분이 서로 어떻게 상호작용하는 지 알기 위해 시스템의 대부분에 대하여 상당한 수준으로 이해할 필요가 있다.(44-45)

     매 주 팀원 중 한 명에게 토의를 이끌게 하자. 토의를 이끄는 사람은 개념을 제시하거나 툴 사용법을 보여주고, 그렇지 않더라도 팀의 관심을 끄는 것이면 무엇이든지 소개할 것이다. 여러분은 책 한 권을 골라서 그 책에서 특정 단원이나 항목, 실천방법들을 수행해 볼 수도 있다....

  그 주의 회의 주관자가 15 분 정도 얘기하는 것으로 시작하자....모두가 자신의 아이디어를 제안하고 프로젝트에 그 주제가 어떻게 연관되는지 토의할 수 있다.(64)

     다운로드해 얻을 수 있는 프로그램을 새로 만들지 말라. 환상적인 것을 만들고 있다면 ..., 정신 차리고 잘못하고 있음을 깨달아라. 코딩을 적게 할 수록 유지보수할 양이 적다.
     ..."객체 관계 매핑(Object Relational Mapping) 은 컴퓨터 과학의 베트남이다." 라고 테드 뉴워드(Ted Neward) 가 말한 것을 기억하라. 자신의 애플리케이션을 만드는 데 필요한 것만, 즉 도메인이나 애플리케이션에 국한된 프로그램을 만드는 데 더 많은 시간과 노력을 들여야 한다.(94)

프로젝트를 항상 릴리스 가능하게 하라.
프로젝트를 항상 컴파일할 수 있고, 실행할 수 있으며, 테스트하고 당장에 배치할 수 있게 하자.(99)
 
* 고객이 피드백들 주고 프로젝트를 조정하는데 데모의 목적이 있다.  기능이나 안정성이 부족해서 고객을 동요시키거나 화나게 해서는 안된다, 안정성이 없으면 보여주지 말라.(114)

   코드를 시험하는 단위테스트를 미리 작성하기 때문에 , 코드를 수정하거나 리팩터링할 땨마다 코드를 체크인 하기 전에 테스트 케이스를 시험한다.(141)

* 코드가 무슨 일을 하는지 주석을 다는 것은 그다지 유용하지 않다. 그러나 코드가 왜 그렇게 하느지 주석을 다는 것은 유용하다.(171)

* 문제를 문서화하는 것보다 해결하는데 더 많은 시간을 보내야 한다. 문제를 문서화하는 일을 가볍고 간단하게 유지하자. 출판할 정도로 문서화 하지 않아도 된다.

* 이전 해결책을 찾는 것이 중요하다. 따라서 필요하 때 목록을 찾는데 도움이 되도록 많은 키워드를 사용하자.(201)

모든 예외를 처리하거나 전달하라.
예외를 덮어 두지 말자. 임시로라도 말이다. 코드가 실패할 수 있다고 생각하며 작성하자
.(213).

* 어떤 사람도 홀로 설계하게 하지 마라. 특히 여러분 자신이 혼자서 설계해서는 안된다.(233)

코드 리뷰...아래의 최소 목록으로 시작해야 한다.
* 코드를 읽고 이해할 수 있는가?
* 명백한 에러는 없는가?
* 코드가 애플리케이션의 다른 부분에 바람직하지 않은 영향을 끼치는가?
*(코드 자체의 배부 섹션이나 시스템의 다른 부분과) 코드 중복이 있는가?
* 코드를 개선시키는 적당한 개선이나 리팩터링이 있는가?
(250)

.. 개발 기반(infrasctructure) 환경을 .. 도입해야 한다.....
* 버전관리
* 단위테스트
* 빌드 자동화
(259)

자료
여러분의 코드는 왜 형편없을가? (Why Your Code Sucks)
http://www.artima.com/weblogs/viewpost.jsp?thread=71730

이 책의 한국어 사이트
http://insightbook.springnote.com/pages/335290

영어판 참고 사이트
 http://www.pragmaticprogrammer.com

프로그램 매매

선물옵션 2008. 1. 22. 00:40

프로그램 매매(program trading)
 
선물을 이용한 재정거래에서 데이터, 계산, 판단 등의 프로그램이 컴퓨터에 입력되어 매입, 매도지시가 자동적으로 행해지는 것을 말한다.이 시스템은 실제의 지수선물가격이 이론상의 지수선물을 어느 정도 수준까지 상(하)회했을 경우에 매입(매도)프로그램이 작동하는 것이다. 매입 프로그램은 현물을 매입하고 선물을 매도하는 것을 말하며, 매도 프로그램은 그 반대의 경우이다. 한편 이론상의 지수선물가격은 현물지수가격에 자금조달코스트(단기금리)와 배당수입(주식수익률)의 차이를 더한 것을 말한다.    
 
(http://www.ksda.or.kr/invest/dictionary.cfm?number=1406&button=)


설치 후 로그인이 안되어서 삽질을 했다. 무려 열시간 http://pedokun.tistory.com/ 을 보고 해결방법을 알아냈다. PC hosts 파일에, localhost 에 덧붙여 임의의 도메인 (http://sapjil.com) 을 적고 브라우저에서도 똑같이 접속하니 로그인이 된다. 페도군에 감사를 ...

갑자기 생각이 나서 찾아봤다. 차이는...

" poll 은 select 를 개량하여 나온 것.... 성능상의 약간의 이점은 있지만 절대적이라고 말할 정도는 아닙니다. 하지만 될 수 있으면 select 보다는 poll을 사용하는 것이 좋습니다.
    우선 poll 은 ...자신이 관리하는 파일 기술자 번호를 struct pollfd 구조체에 넣어서 관리하므로 쓸데없이 감시하지 않는 파일 기술자까지 루프 문에서 검사할 필요는 없어집니다.. 하지만, 이도 기본적으로는 단번에 입출력 이벤트가 발생한 파일 기술자를 알 수는없으므로 루프 문을 돌면서 각 파일 기술자에 대해서 일일이 이벤트가 발생했는지 검사해야 하는 오버헤드는 피할 수 없습니다. 다만 select 에 비해서 루프의 횟수를 줄일 수 있는 .. 장점은..."
((Advanced!)리눅스 시스템 네트워크 프로그래밍 / 김선영 저, 286쪽)

아래 참조는 명쾌하지 않다.

http://kldp.org/node/35279
http://www.joinc.co.kr/modules/moniwiki/wiki.php/RTS