미국이나 한국이나 비슷한 상황인듯.. 우리는 열심히 살아야 한다..ㅠㅠ


도서목차
1 스타일은 언어 요소다
2 멍청한 사용자 인터페이스 부문 최우수상, 윈도우 검색
3 프로그래머 아웃소싱의 단점
4 엑셀은 데이터베이스가 아니라구요!
5 ICSOC04 강연 한 토막
6 환상 속에 고립된 소셜 소프트웨어
7 비정상적으로 행동하는 애플리케이션을 막지 않는 이유는?
8 환상적인 사용자 인터페이스
9 캐나다 인터넷을 WIPO의 손아귀에서 구출하라
10 EA: 휴먼 스토리
11 타입검사와 테스트
12 프로세싱
13 위대한 해커
14 도스창을 날려 버린 주소창
15 스타벅스에서 2단계 커밋을 사용하지 않는 이유
16 열정
17 C++, 잊혀진 트로이 목마
18 전구 하나 바꾸는 데 마이크로소프트 직원 몇 명이 필요할까?
19 엉망진창 꼬여버린 상황 돌파하기
20 래리의 소프트웨어공학 법칙 제2조: 테스터를 단순한 잣대로 평가하지 마십시오
21 팀 보상 제도
22 맥 워드 6.0
23 소셜 소프트웨어, 내부의 적을 경계하라!
24 사용자 집단 분석: 플레이밍을 방지하는 소셜 소프트웨어 설계
25 간격 좁히기, 제1부
26 간격 좁히기, 제2부
27 직원 채용에 대한 제언
28 파워포인트 재구성
29 (여우 캐릭터와 함께하는) 빠르고 쉬운 루비 강좌



[추천의 글]

물론 웹에서는 좋은 글들을 쉽게 구할 수 있다. 하지만 구석구석 웹을 뒤져 좋은 블로그 글을 찾는 번거로움을 덜고, 소프트웨어와 비즈니스와 관련된 수준 높은 글들을 한 군데서 읽을 수 있도록 엮은 이 멋진 책을 갖게 되어 정말 기쁘다.
- 메릴 K. 에반스 / meryl.net, 슬래시닷 기고가

조엘 스폴스키의 책은 언제나 재미있다. 이 책 역시 그 기대를 저버리지 않았으며, 내 직업에 관한 식견을 넓혀주는 흥미진진한 글들로 가득 찬 지식 보물창고와도 같다.
- 토마스 더프 / Duffbert’s Random Musings

감동을 받았다. 이 책에 실린 글들은 우리가 하고 있는 일에 대해 화두를 던져주고 있다. 이 책은 정말 처음부터 끝까지 환상 그 자체다!
웹에 떠돌던 내용이 종이에 인쇄돼 책으로 나왔으니 꼭 사서 보기 바란다.
- 가렛 루니 / 소프트웨어 엔지니어, 저술가

읽으면 읽을수록 더 마음에 드는 책이다. 블로그 글 중에서도 최고의 글들을 모아놓은 책인 만큼 반드시 소장해 읽어야 한다.
소프트웨어 개발자가 아닌 사람도 꼭 한 번 읽어 볼만한 가치가 있는 책!
- 데이빗 빈델 / Tea Total



진지한 기술에세이와 재기 발랄한 블로그가 만났다!
소프트웨어 개발 분야의 주옥 같은 글들을 한데 모은 최고의 역작!

조엘이 엄선한 소프트웨어 블로그 베스트 29선』은 화려한 필력으로 유명한 조엘 스폴스키가 소프트웨어 업계 전문가들의 블로그 글, 에세이, 강연 등 최고의 글들을 모아 한 권으로 엮은 책입니다. 이 책에서는 소프트웨어 개발 관련서답게 코딩 스타일, 프로그래머 아웃소싱, 프로그래밍 언어, 디지털 저작권 등 소프트웨어 개발에 대한 광범위한 주제를 다루고 있다. 배꼽을 잡고 웃게 만드는 재미있는 만화도 중간중간 곁들여 있습니다. 또한 팀 보상 제도, 초과 근무, 채용, 마케팅 등 비즈니스를 주제로 삼은 글들도 꽤 많습니다. 블로그, 미니홈피 등이 유행처럼 번지는 국내 상황에서도 꼭 생각해볼 만한 주제인 소셜 소프트웨어에 대한 글도 여럿 실려 있습니다. 게다가 조엘은 자신이 엄선한 글마다 특유의 장기인 재치 넘치는 촌철살인의 서문을 달아 독자들을 즐겁게 합니다. 이 서문에서는 각 저자의 글을 요약하고 용어 등을 재미있게 설명해서 독자의 이해를 높이고 있습니다. 각기 다른 식견과 관점을 뽐내며 날카롭게 펜대를 세운 26명 블로거가 쓴 29편의 글을 비교하며 읽는 것도 감상 포인트입니다. 이 책에서 개발자이자 블로거인 26명의 저자들은 자신의 전문 분야를 내세워 의견을 피력하며 자신이 생각하던 바를 마음껏 펼치고 있습니다. 사람들이 늘 화제에 올리는 주제를 다룬 에세이이기에, 다르게 생각해 본다면 모든 독자가 글에 나온 저자들의 논조에 천편일률적으로 동의하기 어려울 수도 있습니다. 사람마다 좋아하는 분야가 다르고 자신의 의견이 다르듯이 이 책을 읽는 독자마다 다양한 찬반양론이 있을 수 있기 때문입니다. 또한 조엘 스폴스키가 편저자로서 선정한 글들을 묶은 책이기에 그의 관점에서 완전히 자유롭지는 못할 것입니다. 따라서 이건 맞고 저건 틀렸다는 모범답안은 이 책에 없습니다. 답을 풀어가는 방식은 이 책을 읽는 독자의 손에 달려있습니다. 단지 저자가 던져놓은 화두를 따라가며 이들의 사고방식을 음미해가는 여로에 동참하는 것만으로도 어디서도 느낄 수 없는 이 책만의 매력에 빠져들 수밖에 없을 것입니다. 소프트웨어 개발자나 관리자라면 반드시 읽어야 하는 또 한 권의 필독서이자 소프트웨어 분야에 종사하지 않더라도 꼭 한번 읽어봐야 할 책. 2006년을 힘차게 여는 독자들에게 전하는 종합 선물세트. 소프트웨어 에세이 분야에서 이보다 더 훌륭하고 흥미로운 책은 당분간 만나기 힘들 것 같습니다.



[저자 서문]

네, 저도 잘 압니다. 프로그래머는 글 쓰는 걸 정말 싫어합니다. 하지만 때때로 프로그래머들이 어쩔 수 없이 글을 쓸 수 밖에 없는 상황이 닥치죠. 이들이 써놓은 글을 보고 있노라면 마치 휴대폰 수리 매뉴얼인 것 같기도 하고, 영문법 책에 나온 '이렇게 글을 쓰면 절대 안 된다'는 예제를 뽑아 모아 놓은 것 같기도 합니다.
우리 회사에는 원칙을 정해둔 게 하나 있습니다. 소프트웨어 개발자를 뽑을 때는 글을 쓸 수 있는 사람, 특히 글을 잘 쓰는 사람을 뽑아야 한다는 것입니다. 문법 오류가 있거나, 값싼 전자제품 매뉴얼 같은 겉 표지를 덧댄 이력서를 제게 한번 보내 보세요. 우리 회사에는 절대로 입사하지 못할 거라고 확신합니다.
이 책의 목적은 많이 알려진 주옥 같은 글들을 소개함으로써 여러분도 소프트웨어에 대한 생각을 제대로 피력할 수 있도록 도와주는 데 있습니다. 제가 원하는 것은 단순합니다. '뛰어난 글쓰기'입니다. 글쓰기는 정말 매력적인 일입니다. 글을 쓰는 작업은 재미있고 명쾌하고 중요하며, 글로 사람을 설득할 수도 있기 때문입니다. 저는 소프트웨어에 관한 글을 읽는 즐거움을 더 많이 누리고 싶습니다. 이런 좋은 글을 많이 읽음으로써 소프트웨어 개발자들도 사람들이 읽고 싶어하는 글을 쓸 수 있게 되고, 서로간 대화의 기술도 늘어나기를 바랍니다. 의사소통은 소프트웨어 개발에서 가장 간과되는 기술이기 때문입니다.
이 책에서 소개한 블로그 글들은 소프트웨어 개발에 대한 탁월한 생각을 많이 담고 있습니다. 저는 이 책에서 제가 봐온 글 중 가장 뛰어난 내용들을 골라봤습니다. 이 블로그 베스트는 매력적이고, 흥미로우며, 명쾌한 결론을 내놓고, 심금을 울리기도 하며, 재미도 있습니다. 많은 사람들이 이 책을 읽고 다가올 미래의 소프트웨어 개발에 많은 영향을 줄 수 있게 되길 바랍니다.
- 조엘 스폴스키

Posted by '김용환'
,
가장 쉬운 책은 무엇일까? 그리고, 가장 공부하기 좋은 책은 무엇일까? 라는 고민을 싹 풀어주는 좋은 책이었다.
개인적으로 나는 앞으로 그리고, 미래의 서적들이 잘 팔리기 위해서는 그림, 사진의 예가 반드시 깊이있는 내용과 함께 명시되어야 성공한다고 본다.
딱딱한 내용을 쉽고 재미있게 농축되어 있는 이원복 교수의 그림과 글이 어울어진 이 책은 주식 투자의 기본적인 내용을 잘 설명해 놓았고, 올바른 투자마인드를 제시하였다.
주식 투자의 기본적 내용까지 파헤치고 뇌리를 쎄리는 깊은 부분들이 없지만, 기본적인 내용을 다 다뤘다는 점에서 높이 칭찬할 만 하다.



책 소개
어느 책도 제대로 알려주지 않았던 주식투자자를 위한 투자 교육
투기와 대박, 거품과 오해를 걷어내고 올바른 투자마인드를 제시한다!
과거에 많은 사람들이 주식투자에서 적지 않은 손해를 경험하였다. 그러다 보니 보통사람들은 주식투자를 피해야 할 투기나 도박쯤으로 생각해왔다. 그러나 최근 은행의 금리는 지속적으로 하락하는 반면 기업의 이익실적은 계속 좋아지고 있어, 건전한 자산증식의 수단으로 주식투자가 부상하고 있다. 은행을 떠나 주식시장에 슬슬 나서보고자 하는 왕초보들에게 가장 시급한 것이 투자자 교육이다. 우리나라의 경제규모가 세계 10위권으로 성장하였는데도 주식시장은 선진화되지 못한 상황에서, 투자자의 올바른 투자 마인드에 대한 교육이 중요하다.
한국 교양만화의 선구자 이원복 교수가 <부자국민 일등경제>(송병락 공저)에 이어 만화경제학 2탄으로 출간한 <왕초보 주식교실>은 지금까지 어느 책도 제대로 일러주지 않았던 주식투자자를 위한 투자교육을 제시하고 있다. 어느 주식을 언제 사면 돈을 번다고 하는 투자 가이드가 아니다. 좋은 투자 마인드를 갖도록 도와주는 교육서이다. 위트와 통찰력이 빛나는 이원복의 만화와 함께 주식전문가 조홍래(동원증권 부사장)의 쉽고 명쾌한 해설을 함께 실은 이 책은 알짜배기 투자상식에서 한국경제에 대한 날카로운 분석, 세계증시 흐름까지 일목요연하게 짚어내어 투자안목과 경제관념을 높이는 경제교과서로서 가치를 더하고 있다. 주식투자의 본질에서부터 본격적인 실전투자전략에 이르기까지 주식투자에 있어 매우 핵심적이고 중요한 내용들을 111개의 키워드로 뽑아 만화와 함께주식전문가의 상세한 해설을 함께 읽어나가며 이해할 수 있도록 구성하였다. 주식시장을 이해하기 위해 알아두어야 하는 어려운 경제 개념들에 대한 설명 하나하나가 아주 날카롭고 잘 정제되어 있고, 골치아픈 주가차트의 흐름과 알쏭달쏭하기만 했던 경제뉴스의 가치와 의미를 읽어내는 안목을 높이고 있다.

왕초보 첫걸음 떼기에서 전문가를 위한 실전전략까지
112개의 키워드로 뽑아내어 어려운 주식공부를 명쾌하게!

누가 주식에서 돈을 버는가. 주식투자는 사람을 해치는 것인가. 국내 증시는 투기세력과 돈 많은 외국인의 도박장인가. 주가의 본질적인 결정요인은 무엇인가. 거품 증시와 튤립투기, 보물선 사건은 무엇 때문에 일어나는가. 투자에 도움이 되는 뉴스와 그렇지 않은 뉴스는 어떻게 가려내는가. 경기변화에 따른 투자전략은. 주식시장에 절대 공짜는 없다는데. 투자자가 왕초보인지 프로인지 가리는 차이점은. 선진화된 주식시장이 되려면 무엇이 달라져야 하는가. 투자 게임의 승자와 패자들의 역사는 무엇을 보여주는가.
주식의 기본 개념부터 시작하여 주가 차트를 분석하고 기업의 가치를 측정하는 방식, 직접 주식투자를 하기 위해서 필요한 기본적인 소양과 지식, 바람직한 투자전략을 구사하고 시장의 흐름을 읽는 방법까지. ‘기업의 본질은 무엇인가, 경제의 흐름은 어떤가’에 대한 관심이 올바른 투자자가 지녀야 할 마인드이다. 결국 투자자들이 변해야 한다! 묻지마 투자, 덩달아 투자가 가장 큰 적. 경제를 읽어야 투자수익을 올릴 수 있다.
인터파크 제공 | 다른 쇼핑몰의 책 소개 보기
지은이 소개
이원복

서울대학교 경제학과 졸업, 미국 예일대학교(Yale University) 경제학 석사, 미국 예일대학교(Yale University) 경제학 박사 과정 수료, 현재 동원증권 부사장(리서치본부 본부장), 서울대학 언론정보학과를 졸업하였고, 동아일보 사회부 기자를 거쳤다. 현재 동아일보 경제부 기자(증권팀).

그림 / 이원복
1946년 충남 대전 출생. 1966년 서울대학교 공과대학 건축학과를 졸업. 1975년 독일 뮌스터 대학의 디자인학부에 유학, 졸업시 디플롬 디자이너(Dipl. Designer) 학위 취득과 함께 총장상을 수상하였으며, 같은 대학 철학부에서 서양미술사를 전공하였다.

대표작품으로 『21세기 먼나라이웃나라』(전12권)『부자국민 일등경제』『만화로 떠나는 21세기 미래여행』『나란나란 세계사 도란도란 한국사』『신의 나라 인간 나라』『현대문명진단』『세상만사유럽만사』등이 있다.
반디북 제공 | 다른 쇼핑몰의 지은이 소개 보기
목차

1. 주식과 주식의 거래
주식과 주주
기업의 자금조달
주주의 권리와 책임
배당
자본금의 변화
기업공개 1
기업공개 2
기업공개 3
주식거래시장 1
주식거래시장 2
증권회사
주식거래방법
가격변동의 제약
거래의 정지
주가지수

2. 주가 차트부터 시작하자
주가와 거래량
저항선
지지선
박스권
변곡점
이동평균선
이동평균선의 배열 1
이동평균선의 배열 2
봉차트 1
봉차트 2
기술적 분석의 기본

3. 기업의 본질이 주가를 결정
주가의 결정요인
효율적 시장 1
효율적 시장 2
효율적 시장 3
모멘텀
주가의 분석방법
재무제표 1
재무제표 2
기본적 분석 1
기본적 분석 2
PER
PSR와 PCR
PBR
기업 브랜드와 주가
CEO와 주가
주가의 거품
튤립 투기
보물선 사건
90년대 나스닥열풍
비이성적 열광

4. 주가는 결국 경제다
경제뉴스와 테마 1
경제뉴스와 테마 2
경기 방어주와 민감주 1
경기 방어주와 민감주 2
경기변화와 투자전략
내수주와 수출주 1
내수주와 수출주 2
진입장벽 1
진입장벽 2
시장지배력
산업의 라이프사이클 1
산업의 라이프사이클 2

5. 왕초보 주식투자의 첫걸음
투자의 원칙
매매 시점
투자전략의 기본
기술주와 전통주
대형주, 중형주, 소형주
성장주와 가치주
가치투자 1
가치투자 2
가치투자 3
수익률과 리스크 1
수익률과 리스크 2
포트폴리오 투자 1
포트폴리오 투자 2
헤징 1
헤징 2
꼬리가 몸통을 흔든다 1
꼬리가 몸통을 흔든다 2
간접투자방법

6. 왕초보가 전문가 되기
주가의 변동성 1
주가의 변동성 2
주가의 변동성 3
주가의 변동성 4
주가의 변동성 5
주식시장의 참여자 1
주식시장의 참여자 2
외국인의 투자방식 1
외국인의 투자방식 2
외국인 투자의 사례
주가의 추세판단 1
주가의 추세판단 2
강세장과 약세장
주가의 순환변동
주가의 조정 1
주가의 조정 2
약세장 랠리
순환매 1
순환매 2
물타기 1
물타기 2
적립식 투자 1
적립식 투자 2

7. 주식투자 선진국이 되려면
선진국지수 편입 1
선진국지수 편입 2
선진국지수 편입 3
주가 레벨업 1
주가 레벨얼 2
주식투자는 상생의 경제활동
주식투자는 기업을 보유하는 것
주식투자는 경제에 투자하는 것
한국 주식시장의 미래
주식시장 선진화의 길

부록 투자 게임의 승자와 패자들
투자 게임의 승자들
투자 게임의 패자들

Posted by '김용환'
,
예전같지 않은 주식시장.개미(일반투자자)의 눈과 귀는 바빠졌다. 미국시장의 프로그램 매물, 기업 실적점검, 투자지표들이 너무 많고 각기 다른 모습을 보여 너무 혼란스럽다는 등 최근 몇년간 주식시장을 둘러싼 주변 여건들은 매우 빠른 속도로 변하고 있고 투자의 앞서 고려해야할 상황도 너무나 다양해진 것이 현실이다.이젠 공부를 하지 않고서는 높은 수익을 챙기기 어려운 시대가 온 것이다.저자는 십여년의 증권사 생활과 시장 관찰자인 기자라는 직분으로 새롭게 증권시장을 바라보며 취재를 통해 얻은 노하우를 투자자들이 빠지기 쉬운 심리적 오류를 냉철하게 지적하며 주식투자가 결코 기술적 분석이나 정보에 의존해서는 성공할 수 없음을 알려준다.주식에 관련된 입문서나 전문서, 체험담을실은 책들이 많이 나와있고 그것을 참고하여 투자에 임했다가 큰 낭패를 본 투자자들도 다수 있다.저자는 많은 투자자들이 빠지기 쉬운 심리상태의 패턴을 수집, 분석, 원인을 규명하고 그 해결책을 명확하게 제시해 주고 있다. 본 서는 주식투자를 시작하는 초보투자자는 물론 실전 투자에서 시행착오를 줄이고 투자에 성공을 원하는 모든 이에게 큰 도움이 될 것으로 믿는다.

[성공 투자자의 7가지 심리 습관]

1. 시세에 순응하는 심리: 일반 투자자는 매번 다르게 전개되는 주식시세를 보며 그때그때의 상황에 따라 특정변수를 중요하게 느낀다. 그런 변수를 판단하는 경우 십중팔구를 투자자의 임의적인 판단이 많이 작용한다.그러나 문제는 여기에 있다. 투자자가 임의로 판단한 상황이 정확하게 시장에 반영되는 경우는 흔치 않다. 시세는 투자자가 어떻게 생각하든 간에 현재의 흐름이 이어지는 특별한 이유를 숨기고 있다. 그래서 시세에 순응하는 습관이 필요하다.

2. 집단 심리에서 벗어나라: 모두가 주식에 매달려 '돌격! 앞으로!'를 외칠때 전문 투자가들은 수익을 챙기고 시장을 빠져나간다. 집단심리에 반대로 행동하는 지혜가 필요하다.우스운 소리지만 증시관계자들은 방송과 신문에서 '주식시장의 붕괴', '증시공항' 운운할때 주식을 사서 손해본 경우는 거의 없다는 것이다.

3. 자신이 불완전 하다는 것을 인정하는 심리: 스스로 불완전하다는 것을 인정하다보면 신중한 투자가 가능해진다. '몰빵 투자도 하지 않게 되고 계좌에 현금도 보유하여 최악의 주가하락에 대비하는 습관도 만들수 있다. 주식투자는 맞는지 틀리는지도 모르는 나만의 최선을 찾는 게임이 아니고 보통 사람들이 간과해 버린 중요한 사실을 먼저 찾아내는 보물찾기 일지도 모른다.

4. 부지런한 투자자가 수익을 챙긴다: 일반투자자에게도 전문가를 버금가는 정보네트워크가 많이 생겼다. 클릭 하나로 모두 볼 수 있다. 데이터베이스도 좋아져 관심종목에 대한 모든 사항을 노력만 하면 알아볼 수 있다. 정보력의 차이는 부지런함과 그렇지 않음에 따라 결정된다.

5. 결단력과 스스로의 판단에 따라 행동하라: 주식투자의 가장 부적합한 성격은 우유부단이다. 이러지도 저러지도 못하고 분명히 주가가 떨어질것으로 보면서도 혹시나 오를지 모른다는 생각에 매매를 망설인다면 결과는 참담한 패배뿐이다.스스로 판단한 것이 잘못됐더라도 판단한대로 행동하는 배짱이 필요하다. 실패는 원인을 찾아서 진단하면 되지만 스스로 판단한대로 행동하지 못했다는 자괴감은 두고두고 마음속에 남아 다음 매매까지 영향을 미치기 때문이다.

6. 복기를 생활화 하라: 주식시장은 '싸이클'을 형성하며 움직이는 속성이 있다.주식시장이 경기에 선행하고 경기는 싸이클을 형성하기 때문이다. 특히 실패한 매매일수록 그 원인을 찾아내 같은 실수를 반복하지 않도록 복기를 생활화 해야한다. 주식투자에서 복기는 곧 돈이다.

7. 주식투자를 즐겨라: 실패해서 내가 조급해 진다해서 상황이 달라지는 것은 아무것도 없다. 오히려 즐겨보자. 이번에 실패했다면 다음번에 성공하기 위해 어떻게 할 것인가를 고민하되 즐거운 마음으로 해야 한다. 즐기다보면 더 넓게 시장을 보게된다. 넓은 시야는 투자의 안목으로 이어지고 수익이라는 결과를 가져온다.

 

Posted by '김용환'
,
www.cs.umass.edu/~emery/pubs/04-15.pdf
 
(이 논문을 완벽히 이해하지도 못했지만, 어느 정도 이해한 바도 있고, 앞으로 계속 공부할 수 부분이 있기에 계속 시도할 것이다. 어려운 논문이다..)

가비지 콜렉션은 성능 문제가 가장 중요하다. c나 C++처럼 명시적인 힙 메모리 해제를 지원하지 않기 때문에, 어느 정도 시간이 되면, 자동으로 쓰이지 않은 힙 메모리에 대해서 compaction과 deallocation을 실시한다.
가비지 콜렉션은 mark -sweep이라는 방식, marking (sweep) * compaction, memory constrained copying(mc2) 이렇게 세개로 나누어진다.

또한 가비지 콜렉션 알고리즘에 따라 Mark-Sweep, Mark-Compaction, Copying, Generational collection 이렇게 4개로 카테고리로 나눌 수 있다. (nursey = young gen)

Mark-Copy 방법은 임베디드에서는 퍼포먼스가 나오지 않는다. copying 단계에서 메모리를 직접 map, unmap하는 부분에서 virtual memory를 써야 하는 부분, 콜렉터가 항상 old gen에서 복사를 함으로서, 효울성이 떨어진다는 점, 가비지 콜렉터시 pause 타임이 길다라는 단덤이 있다.

이런 단점을 최대한 줄인 MC2는 dynamic memory 정책과 table형태의 map, unmap 형태의 구조, indirect  addressing memory table을 가짐으로서, 최대한 장점을 가지려고 하고 있다. 이런 작업을 marking때 함으로서, 실제 map, unmap할 때의 시간적 소요를 최대한 줄일 수 있고, indirect이므로, 효율적으로 copy하는 복잡성을 제거할 수 있다.

Increment makring이라는 방법을 통해서, full 콜렉션시 pause 시간을 최대한 줄일 수 있다. 이는 마킹하는 작업시, young gen에서 interleaving하는 방법을 통해서, 마킹시시 큐를 가지고 작업하고, 번호를 부여하는 remembered set이라는 데이터 자료형을 가지고 작업하게 된다. 순차적으로 번호를 부여하고, 콜렉션 할 때마다 오랫동안 살아남았는지 여부를 판단할 수 있는 근거가 됨으로서, 추후 old gen으로 promotion할 때 사용할 수 있도록 되어 있다. 이 때 사용되는 메모리의 단위는 window라고 하는 메모리 단위이다..

copy과정에서는 Increment copying이라는 방법을 사용한다. 이 부분에서 좀 복잡한 개념이 나오는데, write barrier라는 것이다. 이 부분은 명확하게 들어오지 않아서, 다른 논문을 읽고, 다시 정리하면서 공부하는 게 좋을 거 같아서 일단 패쓰한다.

실제 이를 RVM, linux로 구현을 해서, GC 알고리즘을 가지고, 얼마나 performance가 좋은 지를 확인하는 결과를 보여주고 있다. 전체적으로 MC2가 효율이 좋은 결과를 보이고 있다.
PC나 서버에서는 full 콜렉션시 긴 pause타임이 별 의미가 없다. 하지만, 임베디드 시스템에서는 얼마나 효율적으로 메모르를 잘 사용하고, pause 타임이 최소화해야 하는 알고리즘이 사용될 수 있어야 한다. 바로 MC2는 이에 대해 잘 언급이 되어 있다. 짧은 pause 타임과 좋은 성능을 제공하고, 실시간적인 요구사항이 필요한 임베디드 단말기에서 동작할 수 있는 형태의 알고리즘이 결과를 내세웠다.

실제로 MC2가 가장 좋은 알고리즘이라고 하지만, 구현 복잡성이 있어서, 대부분 generation gc 알고리즘을 사용한다고 한다.

GC 알고리즘 논문을 처음으로 본 게 가장 어려운 논문이라 나에게 조금 벅찬 듯 하지만, 계속 공부하기엔 좋은 레퍼런스를 제공한 것 같다. 찾아 볼 수 있는 레퍼런스를 통해서 계속 GC공부를 할 수 있도록 노력해야 겠다!!

Posted by '김용환'
,
내 나이 스물다섯, 1년에 2억 번다
책 소개
대학생이던 2001년 무일푼으로 인터넷에서 화장품을 판매해 금새 자기자본 100만 원을 모았다. 여기에 부친에게서 빌린 100만 원을 합한 단돈 200만 원을 가지고 자신의 방에서 컴퓨터 한 대로 인터넷 판매사업을 벌여 한 달에 100만 원씩 1년을 꾸준히 벌었다. 대학을 졸업한 2002년엔 실전 경험을 쌓기 위해 매장 판매점원으로 취직해 직장생활과 인터넷 판매사업을 병행했다. 얼마 가지 않아 1천500만 원의 종자돈이 모이자 2003년엔 3평짜리 화장품 가게를 창업했다. 차별화된 마케팅과 고객관리 기법으로 불과 1년 사이에 2억 원을 모았다. 저자가 세상의 주목을 받은 것은 그의 ‘쾌속’ 재테크가 다음 카페 ‘맞벌이 부부 10년에 10억 모으기’에서 폭발적인 화제가 되면서부터다. 이 책은 크게 두 부분으로 나누어 어떻게 무일푼에서 시작해 연수익 2억 원을 벌 수 있었는지 이야기하고, 부자가 되기 위해 저자가 공부하고 실천했던 모든 것을 정리하여 소개한다. 많은 책을 읽어가면서 정리하고 실천했던, 부자 스승들로부터 배운 삶의 자세와 지혜를 바탕으로 저자의 사업이야기를 생생하게 들려 준다.다음 10in10 카페, 모네타, 머니투데이 등에서 칼럼니스트로 활동하고 있는 인어공주의 ‘쾌속’ 재테크를 다룬 책. 갓 복학한 대학생이던 저자는 2001년 무일푼으로 자신의 방에서 컴퓨터 한 대로 인터넷 판매사업을 벌이고, 얼마 가지 않아 3평짜리 화장품 가게까지 창업해, 자신만의 차별화된 마케팅과 고객관리 기법으로 2003년 한 해에만 2억 원을 벌었다.

나이는 어리지만 꿈과 희망, 그리고 열정으로 월마트와 이마트, 여인닷컴 등 굴지의 기업들을 상대로 당당히 경쟁하고, 갖은 시련과 어려움 속에서도 사업을 일으켜나간 그는 ‘꿈과 희망만 가지면 누구든지 성공할 수 있다’는 값진 메시지를 생생하게 전한다. 상상이 아닌 실전에서 우러나온 저자의 글은 청년실업의 수렁에서 헤어나지 못하는 20대에게, 경제적 자유를 꿈꾸지만 여의치 않는 30대에게 열정적인 인생과 재테크의 길을 열어줄 것이다.

무일푼으로 시작해 1년에 2억을 벌기까지

저자는 2001년 무일푼으로 자신의 방에서 컴퓨터 한 대로 인터넷 판매사업을 벌여 한 달에 100만 원씩 1년을 꾸준히 벌었다. 대학을 졸업한 2002년엔 실전 경험을 쌓기 위해 매장 판매점원으로 취직해 직장생활과 인터넷 판매사업을 병행했다. 얼마 가지 않아 1천500만 원의 종자돈이 모이자 2003년엔 3평짜리 화장품 가게를 창업했다. 거래처의 배신과 가격 출혈경쟁으로 위기를 겪었으나 히트상품 개발 등으로 새로운 가능성을 찾아갔다. 차별화된 마케팅과 고객관리 기법으로 불과 1년 사이에 2억 원을 모았다.

이 책의 1부에는 이렇듯 저자의 지난 3년간의 이야기가 담겨 있다. 이 책은 크게 부를 이룬 사람의 이야기는 아니다. 아직도 현재 진행형인 한 젊은 청년의 담백한 자기고백이다. 단지 힘든 시기에 인생의 출발점에 선 사람들에게 ‘난 이렇게 출발을 했다’는 이야기가 도움이 되었으면 하는 게 저자의 집필 의도다. 나이는 이제 고작 스물다섯, 하지만 2003년 한 해에만 2억 원을 벌 수 있었던 모든 과정을 말해주고 싶었을 뿐이다.

부자가 되기 위해 공부하고 실천했던 것들

저자는 고등학교 시절부터 부자들이 쓴 책을 읽으며 공부했고, 그들의 말을 습관으로 만들고자 노력했다. 부자 스승을 두어야 부자가 될 수 있다는 신념 아래 틈날 때마다 도서관과 서점을 찾아 수많은 책을 보고 읽고 배웠다. 부자 목록을 뽑아 그들이 저술해낸 책들을 읽는가 하면, 저명한 부자들의 삶을 통해, 그들의 말을 습관으로 만들고자 노력했다. 사업과 자기계발, 그리고 부동산, 주식 등 재테크에 이르기까지 수많은 책들을 통해 간접 경험을 얻고 실천했다.

이 책의 2부에는 이렇듯 부자가 되기 위해 저자가 공부했고 실천했던 것들이 정리되어 있다. 저자는 부자가 되기 위해 부자들을 배우려 했고, 그들의 가르침을 몸소 실천하고자 노력했을 뿐이다. 즉 저자가 부자들에게 배웠듯이 출발선상에 있는 이들을 부자들의 사고방식으로 친절하게 인도하고자 할 뿐이다. 저자는 부자들의 사고방식과 일반 사람들의 사고방식의 차이를 언급하며 부자 되기를 꿈꾸는 사람은 부자 스승을 만나, 그들의 행적을 실천해보기를 권하고 있다.

프롤로그 _ 부자들의 사고방식을 배워야 부자가 됩니다

part 1 _ 무일푼으로 시작해 1년에 2억을 벌기까지
2001년, 무일푼으로 사업을 시작하다
3평 남짓한 방에서 경영혁신을 시도하다
2002년, 직장생활과 사업을 병행하다
2001~2002년, 2년간 사업을 하며 느낀 점
2003년, 3평짜리 점포의 CEO가 되다
거래처의 배신과 출혈경쟁으로 위기 맞다
나만의 히트상품으로 새로운 가능성을 찾다
큰 시장을 찾아 유통망을 구축하다
험난한 경쟁을 뚫고 작은 성공을 거두다
지난 3년간을 되돌아보며

part 2 _ 부자가 되기 위해 공부하고 실천했던 것들
간절히 원하면 꿈은 이루어진다 - 목표의 힘
부자 스승을 찾아 나서다 - 조언의 힘
나의 삶을 변화시키다 - 습관의 힘
1위 업체를 찾아 벤치마킹 하다 - 1인자의 힘
시대의 변화를 읽는다 - 트렌드의 힘
돈이 아닌 사람을 좇아라 - 사랑의 힘
하나를 주고 두 개를 얻는다 - 협상의 힘
돈의 흐름을 알아내다 - 이해의 힘
생각의 거인을 깨우다 - 사고의 힘
가난한 사람과 부자의 차이를 알다 - 투자의 힘

에필로그 _ 하루에 한 시간 투자로 부자 됩시다!

 

나랑 비슷한 사람이 있다는게. 놀랬다. 이 사람도 나의 스승중의 한 사람!!

 

Posted by '김용환'
,
KLDP에서.


좋은 프로그래머란 무엇인가에 대한 다양한 논점을 풀이한 노트이다.

초보자에게 맞는 다음과 같은 이야기를 알려준다.

디버그에 대한 얘기를 서두로 하여, 로그 및 성능, I/O, 메모리 관리, 설계 능력, 실행 하는 법을 얘기하고 있다.
시간 추정하는 법(일정 스케쥴), 정보를 찾는 법, 문서화하는 법과 같이 쉽게 지나칠 수 있는 부분을 다시 한 번 꼼꼼하게 챙기고 있다. 특히 재미있는 것은 막힐 때는 쉬라고 하고, 집에 갈 시간을 인지하는 방법도 나온다는 것이다. 특히, 가를 죽이고 싶은 충동이 있으면 집에 가라는 문구는 동감하는 바이다.
수동적인 성향이 강한 초보자에게 제대로 설명이 되어 있다.

중급자에게 알려주는 이야기는 다음과 같다.
역시 의욕문제, 신뢰 받는 법, 균영 잡는 법, 압박 검사를 하는 법, 간결성/추상성의 균형을 잡는 법, 신기능을 배우는 법, 통합검사를 하는 법, 의사소통을 하는 법등을 알려주고 있다.
또한 개발 시간을 관리하는 법, 타사의 위험부담을 아는 법, 컨설턴트를 아는 법, 적당하게 회의하는 법, 의존성을 관리하는 법, 완성도를 판단하는 법, 구입과 개발 사이를 결정하는 법, 전문가로 성장하는 법, 면접 대상자를 평가하는 법, 화려한 전산교육을 적용할 때를 아는 법등을 제시하고 있다.

이중, 재미있는 것은 요구사항과 관련된 부분이다. 비기술자들과 같이 일할 때, 기술자가 무질서에서 질서를, 혼동됨에서 명확함을 찾아내도록 훈련받은 부분에서 빠질 수 있는 더 좋은 종합적 해결책을 찾는 데 큰 도움을 받을 수 있다는 점이다. 아이디어와 그에 대한 비용 추정을 신속하게 짝지어서 비용과 이득이 최상으로 결합되는 아이디어를 찾을 수 있게 해 줄 수 있다는 것이다.

상급자에게 알려주는 글은 다음과 같다.
성공에 때한 뚜렷한 정의가 없다면 성공할 수 없다라는 것은 명제에 두고 있다.
내장 언어를 활용하는 방법을 제시하고 있다. 새로운 것을 만들기 전에 항상 기존에 쓰이던 언어가 있는 지 판단하고, 잘 사용하는 법이 좋을 수 있다는 것이다.
언어를 잘 선택해야 한다. 언어에 대한 독재는 그것이 주는 유익보다 거기에 드는 비용이 더 크다라는 사실이다.
사용자를 이해하는 법을 알아야 한다. 사용자들의 말을 듣는 것에 더하여 그들이 무엇을 하는지 관찰하는 것의 중요성을 강조한다.
진급하는 법을 알려주고 있다. 높은 직위로 진급하고 싶다면, 그에 걸맞는 그 직위에 기대되는 것이 무엇인지 파악하여 그것을 행해야 한다는 것이다. 스스로 무엇이 필요하다고 인식하는 것과 상사가 필요한 것이 다를 수 있기 때문에 명확히 하는 것이 중요하고, 그에 걸맞은 업무지식을 쌓아야 한다.

재능을 개발해야 한다. 이는 리더쉽을 의미한다. 자신뿐 아니라, 자신을 거느리고 있는 팀원에게 동기 부여와 긴장유지를 위해서 힘써야 하고 칭찬은 공개적으로, 비판은 사적으로 해야 한다라는 간단한 원리를 머리속에 집어넣줘야 한다.
능력있는 팀원은 좀 더 어려운 과제를 줄 수 있어야 하는 부분을 통해서 팀원의 모두를 윈윈할 수 있는 전략을 넣어야 한다. 최대한 능력을 발휘할 수 있도록해야 한다. 자주 칭찬하되 분별없이는 하지 말구, 의견이 달라도 칭찬할 수 있는 용기 있는 사람이 되도록 해야 한다.
문제를 잘 나눌 수 있어야 한다. 따분한 과제를 다루는 법, 프로젝트 지원을 얻는 방법, 시스템이 자라게 하는 방법을 잊지 않도록 해야 한다.


이 글 전체적으로 상당히 경험에서 우러 나오는 말을 하고 있다. 이 하나하나를 마음 속에 두고, 제목을 볼 때마다 항상 내 자신에게 채찍질하며 열심히 프로그래머로서 살 수 있도록 노력해야 겠다..

Posted by '김용환'
,
CACM 2004.11에서

전자상거래 계획중 가장 중요한 부분은 고객을 최고의 우선순위(80%)로 둔다는 점이다.
디스플레이와 검색, 편한 UI가 고객에게 편리함을 제공할 터인데, visualization을 이용하면 놀라운 성과를 발휘할 수 있다. 2D또는 3D를 이용하여 ui를 살짝 바꿔주기만 해도 편리한 UI를 제공하여 고객에게 능동적인 검색이 가능할 수 있는 장점이 있다.

visiT, Firafa, Flamenco, Kartoo라는 싸이트에서 이미 이렇게 사용되고 있다.

실제 구글 맵의 경우는 BM을 잘 설정해 놓은 것 같다. 웹 기반의 검색을 지도에 잘 이용함으로서, 지금 여태까지 나온 서비스와는  차별화된 컨텐츠와 요깃거리를 제공함으로서 고객을 잡아놓는 형태를 추구하고 있다.

Visualization은 고객에게 가장 중요한 부분이다..
Posted by '김용환'
,
CACM 2005.2에서

OO 언어를 배울 때, 잘 못 배우고 있는 것이 있다.


즉, 자바 언어를 들어 보자.
대부분의 자바 언어 입문에서는 다음과 같은 코드로 되어 있다.


class HelloWorld {
   public static void main(String[] args) {
       System.out.println("Hello, World");
   }
}


위의 코드는 아래와 같은 코드가 바뀌는 것이 참 좋다.

class HelloWorld {
   public static void printHello() {
        System.outprintln("Hello World");
   }
}

class UseHelloWorld {
   public static void main(String[] args) {
      HelloWorld hw = new HelloWorld();
      hw.printHello();
   }
}

Objet-orient라는 개념이 어떤 뜻인지 잘 알려줘야할 입문서의 맨 앞에서는 그냥 출력에 대한 것만을 설명하고 있기 까닭에 OO에 대한 개념에 대한 설명을 잘 알 수가 없고, 다른 스트럭처 언어와 똑같은 형태라고 짐작하게 되는 안좋은 관습(?)이 있는 것 같다.

처음부터 객체 생성과 객체의 메소드를 호출하는 것을 이용하는 예제는 OO에 대한 마인드를 정립시켜 주며, 그 코드 하나로 계속적인 응용을 통해서 OO를 익히는 것이 중요하다.
너무 API, AWT의 위주의 입문서때문에 OO언어가 얼마나 많이 그 OO언의 철학적 의미를 상실되었는지는 정말 생각하고 싶지도 않다. 정말 후배들에게 알려줄 최고의 입문서가 나왔으면 하는 바램이다.. .

아니면, 내가 쓸까??
Posted by '김용환'
,
존 템플턴의 영혼이 있는 투자  vs 공병호의 부자의 생각, 빈자의 생각 읽고,

열악한 환경 속이더라도, 위기를 맞더라도 긍정적인 생각을 가져 남들과 다른 비젼과 목표의식을 가져야 한다는 것이다. 아무것도 안보이는 것처럼 보여도, 벼랑에 서 있어도, 호랑이를 만나도 정신만 집중하면 잘 이겨낼 수 있다.
긍정정인 마음음가짐의 자세를 통해서 넓은 사고를 가져야 한다.
주식시장에서 바닥이라고 생각할 때, 부자들은 산다고 한다. 저평가 되어 있다고 생각한다면 주저없이 산다고 한다. 그래서 오랫 기간동안 투자해서 그 가치를 주목할 수 있도록 한다고 한다.


자신에게 투자함을 소홀히 하지 말아야 한다. 스스로 공부하는 자세를 가져야 한다. 세상은 급변하고, 너무나 빠르게 변하는 데 반해, 나의 모습은 여전히 그대로다면, 후퇴하는 것이고, 빠른 속도로 내가 맞춰가야 현재를 맞출 수 있고, 더 빠른 속도로 움직일 때 세상을 바꿀 수 있을 것이다. 쉽게 생각할 수 있는 것이지만, 이것은 직접 깨닫지 못하면 이해할 수 없는 부분이 존재한다.
시장이 형성되지 않은 부분에서 시장을 만들고 먼저 제품을 내고 그 제품을 통해 독점적인 이윤을 낸다면, 좋은 모델로서 생각할 수 있을 것이다.


실수로부터 배우는 것은 인간에게 있어서 큰 축복이다. 실패의 아픔을 겪어 보지 못하면, 발전하기가 힘들다. 실패를 통해서 성공에 대한 열정과 성실, 인내를 배우는 것이 중요하다.
실제 많은 부자들과 성공한 사람들은 실수나 실패를 자주 겪었고, 그 실패가 그의 영광이 되었다고 한다.


기도를 통해 마음을 가라앉히고 통찰력을 얻으라. 이 내용은 존 템플턴외에는 보지 못한 내용이다. 힘들고 선택하기 어려울 때는 기도를 통해서 자신을 통제 할 수 있어야 하며, 마음의 평화를 얻을 수 있는 힘이 된다. 어떠한 상황에서 침착할 수 있는 힘은 기도에서 나온다.


베풀 줄 아는 사람이 되어야 한다. 공병호는 베푸는 것에 대해서 부정적인 반면 존 템플턴은 긍정적으로 보았다. 인간의 근본적인 행복은 자신의 것을 나눌 때에야 얻을 수 있음을 깨닫고, 그에 대한 보답은 반드시 온다고 생각하는 것이 중요하다. 가난한 자에게 자신의 재산을 나누어 이익 분배와 자아 실현의 가치를 높일 수 있는 놀라운 힘이라고 생각한다.


조직과 사회를 계약이라는 집합에서 본다. 계약이라는 것은 먼가를 이뤄서 만들어 질 때, 이루어 진다. 이 부분을 이해하기가 어려운 부분이 존재하다. 모든 것을 계약이라고 보기에는 어려운 부분이 존재하나, 반 정도는 맞기에.. 계약이라는 관점에서 세상을 사는 처세술이 필요하다.


인생을 사는 처세술을 내 나름대로 정리해 봤지만, 명확한 부분도 있고, 불명확한 부분도 존재할 수 있다. 인생을 사는 처세술의 기본을 정리하고, 행복한 마음으로 살리라.
Posted by '김용환'
,

네트웍 프로그램시 주의할 사항 (buggy 코드를 없애자!!)

1. 기반 프레임웍 개발시 유의할 점
+-----+
|  A  |
+-----+
|  B  |
+-----+
|  C  |
+-----+

C라고 하는 모듈(또는 클래스)를 B라는 모듈로 Wrapping하고, B라는 모듈을 A모듈로 Wrapping하는 아키텍쳐가 있다고 가정하자.

이 때 유의사항은 A가 C의 기능을 사용하지 않아도 될 정도로 B의 API가 General해야 한다.

하지만, B의 API가 General하게 디자인이 되지 않았을 경우 (일명 찜찜하게 설계된 경우 문제가 생길 소지가 있다.)
예를 들자면, C는 Telnet통신을 위한 모듈이다. Telnet은 read,write가 sync가 되지 않기 까닭에 쓰레드를 이용하여 write와 read를 따로 쓰이도록 한다.

이때 B는 이런 Telnet 통신에 대한 연결과 read, write에 대해서 general하게 디자인을 해놨다. A는 C를 생각하지 않아도 B의 API만을 가지고, Telnet 통신을 할 수 있도록 디자인이 되는 걸 전제로 B의 API를 이용하여 코딩을 하게 된다
문제는 바로 B의 API의 기능이 잘못될 경우이다.

먼저 예로 들었던 Telnet인 경우에 B모듈에 close(), connect(), connect(String ip, int port) 라는 Telnet 통신 프로토콜이 있다고 가정하자.
이때, close()는 read,write에 대한 thread를 종료하는 것이며, 두 connect는 read, write에 대한 thread를 생성하고 read,write를 받아들일 수 있도록 준비가 되는 코드가 만들어져야 한다.

즉, B의 일부 API인 connect()와 connect(String ip, int port)는 기본적인 기능은 같아야 불구하고도 같지않을때, buggy한 코드를 생성할 수 있다.



2. 노드간 통신

네트웍 프로그램에서 가장 중요한 것은 노드와 노드간의 연결성이다.

때에 따라서 항상 지속적으로 연결이 보장되어야 하는 경우도 있을 수 있고, 필요할 때마가 연결을 하는 경우가 있다.
필요할 때마다 연결을 하는 경우는 보통 문제가 명확한 반면, 항상 연결이 보장되어야 하는 경우의 통신 프로그래밍을 하는 경우는 상당히(개인적인 체험에서 나온 말이다.) 힘들 수도 있다.

low-level 통신인 경우에는 sync코드 와 crc외 각종 FEC등을 사용하여 Qos를 보장해야 하는 반면, high-level인 경우는 Qos를 보장한다고 가정하고, 여러 상황에 대한 대비책(?)을 강구해야 한다.

예를 들어, 계속 연결을 보장해야 하는 통신 노드간의 에러 상황에 대해서 처리하는 방법은 다음이 좋을 수도 있다.
더 좋은 방법이 있는지는 모르겠다.
          <--------
   A                      B
(client)    -------->    (server)


A노드의 클라이언트 프로세스가 B노드의 서버 프로세스가 제대로 동작되는지 확인하는 api를 잘 생각해 보자.

1. A노드에 B의 API인 ping 명령를 요청하여 B가 현재 제대로 동작 중인지를 확인한다.
  좀 더 확실하기 위해서 ping 명령어를 통해서 네트웍의 상황을 체크할 수도 있다.

2. 만약 B의 운영체제가 문제가 있어서 응답을 못할 수도 있고, B노드에서 동작중인 프로세스가 종료되는 경우가 있다.
  이 경우는 1번에서 요청한 ping명령에 대해서 무응답이 되기 까닭에 A와 B의 연결이 끊어졌으면 내버려 두고, A와 B의 연결이 되어 있는 경우는 socket 연결을 끊고, 다시 연결하도록 한다.

3. A노드는 B노드와 통신에 대한 effect를 고려해 플래그를 설정하여 A노드를 통해서 B노드에 요청해야 하는 상황에 대비하여 불필요한 경우에 대해서 접속을 시도 하지 않음으로서, 처리 속도를 높이고 리소스를 낭비하는 일이 없도록 한다.

4. 2번 마지막에서 A노드에서 B노드로 다시 연결을 요청하고 성공할 경우에 대해서 1번에서처럼 A노드의 클라이언트 프로세스가 B노드의 서버프로세스가 동작이 제대로 될 수 있는지 확인하는 ping 요청을 하도록 한다



3. 기반 운영체제

항상 endian를 조심하자. 운영체제마다 big-endian, middle-endian, little-endian을 사용한다.
Posted by '김용환'
,