2013ë…„ 5ì›” 9ì¼
by aduris
1 Comment

Facebook 스타ì¼ì˜ SNS 서비스 아키í…ì³

Facebook 스타ì¼ì˜ SNS 서비스를 만들시 유용한 소스입니다. ì „ì ìœ¼ë¡œ 믿지 마시고 잘 ì‘용하시면 ì¢‹ì€ ì•„í‚¤í…처를 ì–»ì„ ìˆ˜ ìžˆì„ ë“¯ 합니다.

- Facebook Style Messaging System Database Design - http://bit.ly/11Dq2bj
- Facebook Style Wall Database Design - http://bit.ly/owFQRj

2013ë…„ 4ì›” 22ì¼
by aduris
0 comments

ë°œìƒì˜ 전환

ë°œìƒì˜ 전환

â—ì•„ë¹ : ë„Œ ë‚´ê°€ 정해주는 ì—¬ìžëž‘ 결혼해ë¼.
â—아들: ì‹«ì–´ìš”!
â—ì•„ë¹ : ê·¸ ì—¬ìžëŠ” 빌게ì´ì¸ ì˜ 딸ì´ëž€ë‹¤.
â—아들: 그럼 좋아요.

ì•„ë¹ ê°€ 빌게ì´ì¸ ë¥¼ 찾아간다.

â—ì•„ë¹ : ë‹¹ì‹ ì˜ ë”¸ê³¼ ë‚´ ì•„ë“¤ì„ ê²°í˜¼ì‹œí‚µì‹œë‹¤.
â—빌게ì´ì¸ : 싫소!
â—ì•„ë¹ : ë‚´ ì•„ë“¤ì€ ì›”ë“œë±…í¬ CEOìš”.
â—빌게ì´ì¸ : 그럼 좋소.

ì•„ë¹ ê°€ ì›”ë“œë±…í¬ íšŒìž¥ì„ ì°¾ì•„ê°„ë‹¤.

â—ì•„ë¹ : ë‚´ ì•„ë“¤ì„ ì›”ë“œë±…í¬ CEOë¡œ 임명해주시오.
â—ì›”ë“œë±…í¬ íšŒìž¥: 싫소!
â—ì•„ë¹ : ë‚´ ì•„ë“¤ì€ ë¹Œê²Œì´ì¸ ì˜ 사위요.
â—ì›”ë“œë±…í¬ íšŒìž¥: 그럼 좋소.

ì´ê²ƒì´ 비지니스다..

‘ìžì‚´’ ì„ ê±°ê¾¸ë¡œ ì½ìœ¼ë©´ ‘ì‚´ìž’ ê°€ ë˜ê³ ,
‘ì—­ê²½’ ì„ ê±°ê¾¸ë¡œ ì½ìœ¼ë©´ ‘경력’ ì´ ë˜ê³ ,
‘ì¸ì—°’ ì„ ê±°ê¾¸ë¡œ ì½ìœ¼ë©´ ‘연츒 ì´ ë˜ê³ ,
‘ë‚´ 힘들다’ 를 거꾸로 ì½ìœ¼ë©´ ‘다들 힘내’ ê°€ ëœë‹¤.
ëª¨ë“ ê²ƒì€ ì–´ë–»ê²Œ ìƒê°í•˜ëŠëƒì— 달렸다
♬♬힘냅시다! ♬♬

2013ë…„ 4ì›” 22ì¼
by aduris
0 comments

ì›¹ë¡œì§ ìŠ¤ë ˆë“œ 순서

ì›¹ë¡œì§ ìŠ¤ë ˆë“œ 순서
Standby : 준비, Active : 실행, Hogging : 지연, Stuck : 정지(?)

Standby => Active => Standby : ì •ìƒì²˜ë¦¬
Standby => Active => Hogging => Standby : ì•½ê°„ì˜ ì§€ì—°ì²˜ë¦¬
Standby => Active => Hogging => Stuck => Standby : 왕창 지연ë으나 처리는 완료
Standby => Active => Hogging => Stuck : 처리가 안ë˜ê³  있는 ìƒíƒœ

Hogging 스레드 부터는 문제가 ë°œìƒí•  ìœ„í—˜ì´ ìžˆìŠµë‹ˆë‹¤. 

Hogging 스레드 ê°€ ë°œìƒì‹œ 웹로ì§ì—서는 경고를 í˜¸ì¶œí•˜ëŠ”ë° Hogging 스레드가

Stuck 쓰레드로 전환시 해당 관련 ë¡œì§ì€ í–‰. 즉 정지 ìƒíƒœê°€ ë˜ë²„린다. 

ì´ ìƒíƒœê°€ 오랜 시간 후 í˜¹ì€ ë°”ë¡œ 처리가 ë˜ë©´ ìƒê´€ì´ 없지만 지ì†ìœ¼ë¡œ Stuck ìƒíƒœê°€

ë  ê²½ìš° ê²°ë¡ ì ìœ¼ë¡œ 시스템ìƒì— 문제가 ë°œìƒ í•˜ê²Œ ëœë‹¤. 

그러므로 ë¡œì§ ì ê²€ì„ ê¼­ 해보길 ë°”ëžë‹ˆë‹¤. 그리고 스레드를 보는 ë°©ë²•ì€ ìŠ¤ë ˆë“œ ë¤í”„

를 ë– ì„œ jstack, 사무ë¼ì´ 등등 툴로 ë³´ë©´ 편하게 ë³¼ 수 있습니다.

2013ë…„ 4ì›” 10ì¼
by aduris
0 comments

HTML5 Front-End 별천지 세미나

모임정보

모임기간 : 5ì›” 4ì¼ (토) 13ì‹œ 00분 ~ 18ì‹œ 00분
등ë¡ê¸°ê°„ : 3ì›” 30ì¼ (토) 21ì‹œ 00분 ~ 5ì›” 3ì¼ (금) 18ì‹œ 30분
모임장소 : 서울시여성가족재단 아트홀봄
* ì´ ëª¨ì§‘ì¸ì› : 180명 | í˜„ìž¬ì°¸ì—¬ìž 93명 | 대기 97명

[세미나 제목]

  • “HTML5 Front-End 별천지 세미나 powered by SK플래닛”
    • HTML5 Front-End ì˜ í™”ë ¤í•˜ê³  신기한 ê¸°ìˆ ë“¤ì˜ ì„¸ìƒ(별천지)ì„ ì˜ë¯¸

[세미나 구성]

  • 주최 : 한국센차유저그룹 (sencha.or.kr , facebook.com/groups/korea.sencha)
  • ë©”ì¸ í›„ì› : SK플래닛
  • í›„ì› : 미래웹기술연구소

[ì¼ìž]

  • 2013ë…„ 5ì›” 4ì¼(토) 오후 1ì‹œ~6ì‹œ

[장소]

  • 서울시 여성가족 재단 – 아트홀 ë´„
  • 주소 : 서울 ë™ìž‘구 ëŒ€ë°©ë™ 345-1. (1호선 대방역 3번출구ì—ì„œ 1분)

[세미나 - Agendar]

  • ì˜¤í”„ë‹ : 30분
    • ì˜¤í”„ë‹ ë° í•œêµ­ì„¼ì°¨ìœ ì €ê·¸ë£¹ í™œë™ ë° í”„ë¡œì íŠ¸ 소개
  • 1êµì‹œ : 50분
    • 주제 : Sencha ë¡œ ë장내는 HTML5 Front-End 개발과 Architect
    • ë‚´ìš© : 모바ì¼ê³¼ ë°ìŠ¤í¬íƒ‘ì—ì„œ HTML5 Front-End ê°œë°œì´ ì‰¬ìš´ ìž‘ì—…ì´ ì•„ë‹ˆë‹¤. ì´ëŸ¬í•œ ì–´ë ¤ì›€ì„ Sencha ì†”ë£¨ì…˜ì„ í†µí•´ 풀어보고, Mobile/Desktop ê°œë°œì´ ê°€ëŠ¥í•œ Sencha Architect 를 통해 새로운 HTML5 Front-End 개발 ë°©ì•ˆì„ ì œì‹œ 한다.
    • ë°œí‘œìž : 김종광 수ì„연구ì›. 한국센차유저그룹 ìš´ì˜ìž
  • 2êµì‹œ : 50분
    • 주제 : Webkit 엔진 ë¶„ì„ ë° ê³ ì„±ëŠ¥ 웹 어플리케ì´ì…˜ 개발
    • ë‚´ìš© : 웹 어플리케ì´ì…˜ 최ì í™” ê´€ì ì—ì„œ 필수ì ìœ¼ë¡œ 알아야 할 WebKit ì—”ì§„ì˜ êµ¬ì¡°ë¥¼ 살펴보고, ì´ë¥¼ 기반으로 웹 어플리케ì´ì…˜ì˜ ì„±ëŠ¥ì„ ìµœì í™” 시 ì ìš© 가능한 ë°©ë²•ë“¤ì— ëŒ€í•´ì„œ 실무 ì ìš© 가능한 기술위주로 설명한다.
    • ë°œí‘œìž : ìž„ìƒì„ 매니저 (SK플래닛, 모바ì¼SW 개발1팀)
  • Coffee Break : 30분
  • 3êµì‹œ : 50분
    • 주제 : CSS3 애니메ì´ì…˜ìœ¼ë¡œ 구현하는 Front-End 별천지 세ìƒ
    • ë‚´ìš© : CSS3ì˜ ê¸°ëŠ¥ì€ ìž˜ 활용ë˜ì§€ 못하고 있는 ê²ƒì´ í˜„ì‹¤ì´ë‹¤. 강력한 CSS3 애니메ì´ì…˜ì„ 위해서는 HTML/CSS/JavaScript 3ë°•ìžë¥¼Â ëª¨ë‘ 능숙히 다뤄야 하기 때문ì´ë‹¤. CSS3 애니메ì´ì…˜ì— 대해 발표하며 Front-Endì˜Â  별천지 세ìƒì„ ë³´ì—¬ 줄 것ì´ë‹¤.
    • ë°œí‘œìž : 김양귀 선임연구ì›, (미래웹기술연구소 R&D팀)
  • 4êµì‹œ : 50분
    • 주제 : HTML5 is Ready : Fastbook 왜 빠른가? ê¸°ìˆ ì  ë¶„ì„
    • ë‚´ìš© :Â ë§ˆí¬ ì£¼ì»¤ë²„ê·¸ê°€ Facebook ì•±ì„ ë„¤ì´í‹°ë¸Œ 앱으로 변경하면서 HTML5ì„ ì„ íƒí–ˆë˜ ê²ƒì€ ì‹¤ìˆ˜ì˜€ë‹¤ê³  ì¸ì •í•œ ì‚¬ê±´ì´ ìžˆì—ˆë‹¤. ì´ì— 정면으로 반대하며 기술ì ì¸ 근거를 제시한 ì„¼ì°¨ì˜ Fastbookì— 대해서 알아보고, ì´ë¥¼ 분ì„하여 네ì´í‹°ë¸Œ ì•±ì— ë²„ê¸ˆê°€ëŠ”Â HTML5 ì•±ì„ ì œìž‘í•˜ê¸° 위한 ê¸°ìˆ ë“¤ì— ëŒ€í•´ 알아본다.
    • ë°œí‘œìž : 김준기 매니저 (SK플래닛, 모바ì¼SW 개발1팀)

 

 

출처 : http://onoffmix.com/event/13892

2013ë…„ 4ì›” 10ì¼
by aduris
0 comments

펌]ìƒë°˜ë˜ëŠ” 개발 과정

그냥 웃어보아요~ㅋㅋㅋㅋ

ì›ë¬¸ : http://wangsy.com/blog/2012/01/how-to-make-totally-shitty-things/

2013ë…„ 4ì›” 10ì¼
by aduris
0 comments

ì¢‹ì€ API ë””ìžì¸í•˜ê¸°, 왜 ê·¸ê²ƒì´ ì¤‘ìš”í•œê°€?

죠수아 블로치는 êµ¬ê¸€ì˜ ì†Œí”„íŠ¸ì›¨ì–´ 아키í…ì³ë¡œ 유명한 사람입니다.

아래 ë‚´ìš©ì€ 2007ë…„ 1ì›” 24ì¼ Google Tech Talks ì—ì„œ 발표한 내용입니다.

API 를 개발하면서 í•œ 번쯤 ê³ ë¯¼í–ˆë˜ ë‚´ìš©ë“¤ì´ ëª¨ë‘ ë“¤ì–´ìžˆìŠµë‹ˆë‹¤.

API 를 개발하는 개발ìžë¼ë©´ ê±°ì˜ í•˜ë‚˜ë„ ë†“ì¹  게 없는 경험ì´ë¼ê³  ìƒê°í•©ë‹ˆë‹¤.

ê·¸ë§Œí¼ ë§Žì´ ë²ˆì—­ë˜ê³  ë¸”ë¡œê·¸ì— í¼ì¡Œë˜ 글들입니다.

좀 길지만, ë§Žì€ ê°œë°œìžë“¤ì´ ë‘ê³ ë‘ê³  참조했으면 하는 ë°”ëžŒì´ ìžˆìŠµë‹ˆë‹¤.

ì›ì œ : How to Design a Good API and Why it Matters(Google Tech Talks, 2007.1.24)

ì €ìž : Joshua Bloch, Principal Software Engineer, Google

  • API ë””ìžì¸ì´ 왜 중요한가?

    API는 회사가 가진 중요한 ìžì‚°ì¼ 수 있다.

    - ê³ ê°ë“¤ì€ 무섭게 투ìží•œë‹¤ : 구매하고, 사용하고, 배운다.

    - ìš´ì˜ì¤‘ì¸ API를 중단시키는 ë¹„ìš©ì€ ì—„ë‘ë„ ë‚¼ 수 없다.

    - 성공ì ì¸ public API 는 ê³ ê°ì„ 잡는다.Public API 는 ì˜ì›í•˜ë‹¤. – ê·¸ê²ƒì„ ì œëŒ€ë¡œ 만들 기회는 ì˜¤ì§ ë”± í•œ 번 ë¿ì´ë‹¤.

  • API ê°€ 왜 당신ì—게 중요한가?

    ë‹¹ì‹ ì´ ë§Œì¼ í”„ë¡œê·¸ëž˜ë¨¸ë¼ë©´, ë‹¹ì‹ ì€ ì´ë¯¸ API ë””ìžì´ë„ˆì´ê¸° 때문ì´ë‹¤.

    - ì¢‹ì€ ì½”ë“œëŠ” 모듈화ë˜ì–´ 있고, 모든 ëª¨ë“ˆë“¤ì€ API 를 가지고 있다.유용한 ëª¨ë“ˆë“¤ì€ ìž¬ì‚¬ìš©ë˜ì–´ì§€ê¸° 때문ì´ë‹¤.

    - ì¼ë‹¨ ëª¨ë“ˆì´ ì‚¬ìš©ìžë¥¼ 가지기 시작하면, ìž„ì˜ë¡œ API를 바꿀 수 없다.

    - ì¢‹ì€ ë°©í–¥ìœ¼ë¡œ 재사용ë˜ì–´ì§€ëŠ” ëª¨ë“ˆë“¤ì€ íšŒì‚¬ì˜ ìžì‚°ì´ë‹¤.

    APIë¼ëŠ” ê´€ì ì—ì„œ ìƒê°í•˜ëŠ” ê²ƒì€ Code ì˜ Quality를 높ì´ê¸° 때문ì´ë‹¤.

  • ì¢‹ì€ APIì˜ íŠ¹ì§•

    배우기 쉬울 것

    문서가 ì—†ì–´ë„ ì‚¬ìš©í•˜ê¸° 쉬울 것.

    잘못 사용하기 어려울 것.

    ì½ê¸° 쉽고, API를 사용하는 코드를 유지보수하기 쉬울 것

    ìš”êµ¬ì‚¬í•­ì„ ë§Œì¡±ì‹œí‚¤ê¸°ì— ì¶©ë¶„ížˆ ê°•í•  것.

    확장하기 쉬울 것

    사용하는 ì‚¬ëžŒë“¤ì˜ ìˆ˜ì¤€ì— ë§žì„ ê²ƒ

첫째. The Process of API Design

  1. ì ë‹¹í•œ 수준ì—ì„œ 회ì˜ì  태ë„ë¡œ 요구사항 ìˆ˜ì§‘í•˜ê¸°ë‹¹ì‹ ì€ ì¢…ì¢… ì†”ë£¨ì…˜ë“¤ì„ ì œì•ˆë°›ì„ìˆ˜ë„ ìžˆë‹¤.

    - ë§Œì¼ ë” ë‚˜ì€ ì†”ë£¨ì…˜ë“¤ì´ ìžˆì„ ìˆ˜ 있다면,ë‹¹ì‹ ì˜ ì¼ì€ 진짜 ìš”êµ¬ì‚¬í•­ì„ ìˆ˜ì§‘í•˜ëŠ” 것ì´ì–´ì•¼ 한다.

    - 유즈케ì´ìŠ¤ 형태로 ìˆ˜ì§‘ì„ í•´ì•¼ 한다.

    ë” ì¼ë°˜ì ì¼ìˆ˜ë¡ ë” ì‰¬ì›Œì§€ê±°ë‚˜ ë” ë³´ìƒì´ ë  ìˆ˜ 있다.

  2. ì§§ì€ ìŠ¤íŽ™ìœ¼ë¡œ ì‹œìž‘í•˜ë¼ â€“ 1페ì´ì§€ëŠ” ì´ìƒì´ë‹¤.ì´ ë‹¨ê³„ì—서는 Agility ê°€ ì™„ë²½í•¨ì„ ì´ê¸´ë‹¤.

    가능한 ë§Žì€ ì‚¬ëžŒë“¤ë¡œë¶€í„° ë°˜ì‘ì„ ì‚´íŽ´ë¼.

    - ê·¸ë“¤ì˜ input ì— ëŒ€í•´ 귀기울여 듣고, 심ê°í•˜ê²Œ 받아들여ë¼.

    ìŠ¤íŽ™ì„ ìž‘ê²Œ 할수ë¡, 고치기 쉽다.

    ìžì‹ ê°ì„ ì–»ì„ ë•Œê¹Œì§€ ì‚´ì„ ë¶™ì—¬ë¼.

    - ì´ê²ƒì€ í•„ì—°ì ìœ¼ë¡œ ì½”ë”©ì„ í¬í•¨í•œë‹¤.

  3. 미리 ìžì£¼ API ì— ê¸€ì„ ì ì–´ë¼.(그냥 function ë‚´ì— í•„ìš”í•  ê¸°ëŠ¥ì„ ìŠ¤í¬ë¦½íŠ¸ 형ì‹ìœ¼ë¡œ ì ì–´ë„£ëŠ”다.)API를 구현하기 ì „ì— ì‹œìž‘í•˜ë¼.

    - 구현하는 ì‹œê°„ì„ ì ˆì•½í•´ì¤€ë‹¤.가능한 ìŠ¤íŽ™ì„ ìž¡ê¸° ì´ì „부터 시작하ë¼.

    - ìŠ¤íŽ™ì„ ìž¡ëŠ” ì‹œê°„ì„ ì ˆì•½í•´ì¤€ë‹¤.

    ì‚´ì´ ë¶™ì„ ë•Œê¹Œì§€ API ì— ê¸€ì„ ì ì–´ë¼.

    - ë”ì°í•œ 실패를 예방해준다.

    - 코드는 예제와 unit test 를 먹고 산다.

  4. SPI ì— ê¸€ì„ ì ëŠ” ê²ƒì€ ë” ì¤‘ìš”í•˜ë‹¤.Service Provider Interface (SPI)

    - í”ŒëŸ¬ê·¸ì¸ ë°©ì‹ì˜ ì¸í„°íŽ˜ì´ìŠ¤ëŠ” 여러 ê°œì˜ êµ¬í˜„ì„ ê°€ëŠ¥í•˜ê²Œ 한다.

    - 예 : Java Ctyptography Extension (JCE)ë°°í¬í•˜ê¸° ì „ì— multiple plug-in ë“¤ì„ ë§Œë“¤ì–´ë¼. (윌 íŠ¸ëž™ì€ â€œì„¸ê°œì˜ ë²•ì¹™â€ì´ë¼ê³  부른다.)

    - ë§Œì¼ í”ŒëŸ¬ê·¸ì¸ í•˜ë‚˜ë¥¼ 만들면, ì•„ë§ˆë„ APIê°€ 다른 ê²ƒì€ ì§€ì›í•˜ì§€ 못하게 ë  ê²ƒì´ë‹¤.

    - ë‘ ê°œë¥¼ 만든다면, 어렵게ë¼ë„ 여러개를 지ì›í•˜ê¸°ëŠ” í•  것ì´ë‹¤.

    - 세 개를 만든다면, ê·¸ê²ƒì€ ì•„ì£¼ 잘 ìž‘ë™í•  것ì´ë‹¤.

  5. í˜„ì‹¤ì  ê¸°ëŒ€ìˆ˜ì¤€ì„ ë°›ì•„ë“¤ì—¬ë¼.ëŒ€ë¶€ë¶„ì˜ API 설계는 지나치게 제약ë˜ì–´ 있다.

    - ë‹¹ì‹ ì€ ëª¨ë“  ì‚¬ëžŒì„ ë§Œì¡±ì‹œì¼œì¤„ 수 없다.

    - 모든 ì‚¬ëžŒë“¤ì„ ë˜‘ê°™ì´ ë¶ˆë§Œì¡±í•˜ê²Œ 만드는 ê²ƒì— ì´ˆì ì„ 맞추어ë¼.실수하기를 기대하ë¼

    - 몇 ë…„ ê°„ ì‹¤ì‚¬ìš©ì´ ë˜ë©´, 실수따위는 잊어버리게 ëœë‹¤.

    - 실수를 통해 API를 진화시켜ë¼.

둘째. General Principles (ì¼ë°˜ ì›ì¹™)

  1. API는 í•˜ë‚˜ì˜ ì¼ë§Œ 해야 하고, ê·¸ê²ƒì„ ì•„ì£¼ 잘 해야 한다.ê¸°ëŠ¥ì´ ì„¤ëª…í•˜ê¸° 쉬워야 한다.

    - ì´ë¦„짓기 힘들다면, 통ìƒì ìœ¼ë¡œ 잘못 만들어진 것ì´ë‹¤.

    - ì¢‹ì€ ì´ë¦„ì´ ìžì—°ìŠ¤ëŸ½ê²Œ 개발로 ì´ì–´ì§€ê²Œ 만든다.

    - ëª¨ë“ˆì„ ìª¼ê°œê±°ë‚˜ í•©ì¹  수 있어야 한다.

  2. API는 가능한한 작게 만들어야 하지만, ë” ìž‘ì•„ì ¸ì„œëŠ” 안ëœë‹¤.API는 ìš”êµ¬ì‚¬í•­ì„ ë§Œì¡±ì‹œì¼œì•¼ 한다.

    ì˜ì‹¬ì´ 들면 그대로 ë‘ì–´ë¼.

    - 기능, í´ëž˜ìŠ¤, ë©”ì˜ë“œ, 파ë¼ë¯¸í„°ê¹Œì§€.

    - 뭔가를 ë”í•  수는 있지만, ê²°ì½” 제거할 수는 없다. (ë°°í¬ë˜ë©´ 회수불가)ê°œë…ì ì¸ 무게가 규모보다 ë” ì¤‘ìš”í•˜ë‹¤.

    (APIì˜) 힘과 무게(power-to-weight ratio) ê°„ì˜ ê· í˜•ë¹„ë¥¼ 찾아ë¼.

  3. Implementation ì´ APIì— ì˜í–¥ì„ 주어서는 안ëœë‹¤.êµ¬í˜„ì´ ë„ˆë¬´ 세세해지면

    - 사용ìžë¥¼ 혼란스럽게 한다.

    - implemenation ì„ ë°”ê¿€ ìžìœ ë¥¼ 방해한다.세세한 êµ¬í˜„ì´ ë¬´ì—‡ì¸ì§€ë¥¼ 정확히 알아ë¼.

    - method behavior ìŠ¤íŽ™ì„ ë„ˆë¬´ 과하게 잡지 마ë¼.

    - 예를 들면 : hash function ë“¤ì€ ìŠ¤íŽ™í™”í•˜ì§€ 마ë¼.

    - 모든 íŠœë‹ íŒŒë¼ë¯¸í„°ë“¤ì€ ì˜ì‹¬í•´ì•¼ 한다. (ì´ê²Œ 많다고 ì¢‹ì€ APIê°€ 아니ë¼ëŠ” 뜻)

    세세한 êµ¬í˜„ì´ API ë¡œ í˜ëŸ¬ë“¤ì–´ê°€ê²Œ 해서는 안ëœë‹¤.

    - ë””ìŠ¤í¬ ìƒì´ë‚˜, ë„¤íŠ¸ì›Œí¬ ìƒì´ë‚˜, 예외로ë¼ë„ !!!

  4. 모든 ê²ƒì˜ ì ‘ê·¼ì„ ìµœì†Œí™”í•˜ë¼.가능한 private 하게 class 와 member를 만들어ë¼.

    public class ê°€ (ìƒìˆ˜ì— 대한 예외와 함께) public field를 가져서는 안ëœë‹¤.ì´ë ‡ê²Œ í•´ì„œ ì •ë³´ì€í를 최대화하ë¼. (밖으로 드러나지 않게 Capsulation 하ë¼ëŠ” 뜻.)

    ëª¨ë“ˆì´ ë…립ì ìœ¼ë¡œ debug ë˜ê³ , ì´í•´ë˜ì–´ì§€ê³ , 구축ë˜ì–´ì§€ê³ , 테스트 ë˜ì–´ì§€ë„ë¡ í•˜ë¼.

  5. ì´ë¦„ì´ ì¤‘ìš”í•˜ë‹¤. – API 는 ìž‘ì€ ì–¸ì–´ë‹¤.ì´ë¦„ì€ êµ³ì´ ì„¤ëª…í•˜ì§€ ì•Šì•„ë„ ì´í•´ë  수 있어야 한다.

    - 기호나 ì¶•ì•½ì„ ì‚¬ìš©í•˜ì§€ 마ë¼.Consistent 하게 í•˜ë¼ â€“ ë˜‘ê°™ì€ ë‹¨ì–´ëŠ” ê°™ì€ ê²ƒì´ì–´ì•¼ 한다.

    - API ì „ë°˜ì— ê±¸ì³ì„œ (API í”Œëž«í¼ ì „ë°˜ì— ê±¸ì³ì„œ!!!)

    규칙ì ì´ì–´ì•¼ 한다. – 대칭과 ê· í˜•ì„ ê°ˆêµ¬í•˜ë¼.

    코드는 산문처럼 ì½íž 수 있어야 한다. (얼마나 ì½ê¸° 쉬운가?)

    if (car.speed() > 2 * SPEED_LIMIT)

    generateAlert(“Watch out for cops!â€);

  6. 문서화가 중요하다.

    ìž¬ì‚¬ìš©ì„±ì€ â€œìž¬ì‚¬ìš©í•œë‹¤â€ëŠ” Action 보다 “재사용하겠다.â€ê³  쉽게 ë§í•  수 있는 ì–´ë–¤ 것ì´ì–´ì•¼ 한다. Action ì€ ì¢‹ì€ ë””ìžì¸ê³¼ ì¢‹ì€ ë¬¸ì„œë¥¼ 필요로 한다. ë¹„ë¡ ì•„ì£¼ ê°€ë” ìš°ë¦¬ê°€ ì¢‹ì€ ë””ìžì¸(설계, 아키í…ì³)ì„ ë³´ê²Œ ë˜ì—ˆë‹¤ê³  하ë”ë¼ë„, 우리가 문서 ì—†ì´ ìž¬ì‚¬ìš©ë˜ì–´ì§ˆ ì •ë„ë¡œ ì¢‹ì€ ì»´í¬ë„ŒíŠ¸ë¥¼ ë³¼ 수는 없다. – D.L.Parnas, Software Aging, 1994

  7. 종êµì²˜ëŸ¼ 문서화하ë¼.â€ëª¨ë“ â€ class, interface, method, constructor, parameter, and exception ì„ ë¬¸ì„œí™”í•˜ë¼.

    - class : instance í™” ë˜ëŠ” 것들

    - method : method 와 ê·¸ client ë“¤ê°„ì˜ ê³„ì•½ë“¤ì´ë‹¤.

    - parameter : units, form, ownership ë“±ì„ ì§€ì¹­í•œë‹¤.state-space(ìƒíƒœê³µê°„, ì „ì²´ì ì¸ ê²ƒì— ëŒ€í•´)ì„ ì£¼ì˜ê¹Šê²Œ 문서화하ë¼.

  8. API ë””ìžì¸ì— 대한 ì„±ëŠ¥ê²°ê³¼ì— ëŒ€í•´ 고려하ë¼.

    ë‚˜ìœ ì˜ì‚¬ê²°ì •ì€ 성능 한계를 ë§Œë“¤ê¸°ë„ í•œë‹¤.

    - type ì„ ìƒí˜¸ êµí™˜ê°€ëŠ¥í•˜ê²Œ 만들어ë¼.

    - static factory 대신 constructor 를 제공하ë¼.

    - interface ëŒ€ì‹ ì— implementation type ì„ ì‚¬ìš©í•˜ë¼.ì„±ëŠ¥ì„ ì–»ê¸° 위해 API를 뒤틀지 마ë¼. (변형하지 마ë¼)

    - 기본ì ì¸ 성능 ì´ìŠˆëŠ” ê³ ì³ì§ˆ 것ì´ë‹¤. 하지만 ë‘í†µì´ ê·¸ëŒ€ì™€ 함께 ì˜ì›í•  것ì´ë‹¤.

    - ì¢‹ì€ ë””ìžì¸ì€ ì¼ë°˜ì ìœ¼ë¡œ ì¢‹ì€ ì„±ëŠ¥ê³¼ ì¼ì¹˜í•œë‹¤.

  9. ì„±ëŠ¥ì„ ê³ ë ¤í•œ API 설계는 실질ì ì¸ 효과로 나타날 ë¿ ì•„ë‹ˆë¼ ì˜ì›í•˜ë‹¤.

    - Component.getSize()는 Dimensionì„ return 한다.

    - Dimension ì€ mutual 하다.

    - 모든 getSize call ì€ Dimensionì„ í• ë‹¹í•´ì•¼ë§Œ 한다.

    - ìˆ˜ë§Žì€ ë¶ˆí•„ìš”í•œ object allocation ì´ ë°œìƒí•œë‹¤.

    - ëŒ€ì²´ì•ˆì´ 1.2 ë²„ì „ì— ì¶”ê°€ëœë‹¤ : old client code 는 여전히 ëŠë¦¬ë‹¤.

  10. API 는 플랫í¼ê³¼ í‰í™”ì ìœ¼ë¡œ 공존해야만 한다.관습ì ì¸ ê²ƒì„ ë”°ë¼ë¼.

    - 표준 naming rule ì„ ë”°ë¼ë¼.

    - ë…ìžì ì¸ 파ë¼ë¯¸í„°ë‚˜ Return Typeì„ ì“°ì§€ë§ˆë¼.

    - 코어 API나 ì–¸ì–´ì— ìžˆëŠ” íŒ¨í„´ì„ í‰ë‚´ë‚´ì–´ ì¨ë¼.API 친화ì ì¸ íŠ¹ì§•ì„ ì´ìš©í•˜ë¼.

    - Generics, varargs, enums, default arguments

    API ì˜ ìœ„í—˜ê³¼ 단ì ë“¤ì„ 잘 알고 회피하ë¼.

    - Finalizers, public static final arrays

셋째. Class Design

  1. ë³€ê²½ì„ ìµœì†Œí™”í•˜ë¼.ë§Œì¼ ë‹¤ë¥¸ ì¼ì„ 해야 í•  충분한 ì´ìœ ê°€ 없다면, class 는 ë¶ˆë³€ì˜ ê²ƒì´ì–´ì•¼ 한다.

    - ìž¥ì  : simple, thread-safe, reusable

    - ë‹¨ì  : ê° value 별로 ë¶„ë¦¬ëœ object

    ë§Œì¼ ë³€ê²½í•´ì•¼ 한다면, ìƒíƒœê³µê°„(state-space)를 작게 유지하고, ì •ì˜ë¥¼ 잘 유지하ë¼.

    - 언제, ì–´ë–¤ method를 부르는게 합리ì ì¸ì§€ë¥¼ 명확히 하ë¼.

    Bad: Date, Calendar

    Good: TimerTask

  2. subclass는 substitutability (대체성)를 ì˜ë¯¸í•œë‹¤.

    - (..ì€..ì´ë‹¤)ë¼ëŠ” 관계가 존재할 때만 subclass 를 ì¨ë¼.

    - 그렇지 않으면, composition ì„ ì‚¬ìš©í•˜ë¼.Bad: Properties extends Hashtable, Stack extends Vector

    Good: Set extends Collection

  3. ìƒì†ì„ 위해 설계하고 문서를 남겨ë¼.

    설계가 그렇게 ë˜ì–´ 있지 ì•Šê³  문서가 없다면, ìƒì†ì„ 못하게 만들어ë¼.ìƒì†ì´ëž€ 캡ìŠí™”와 ìƒì¶©í•œë‹¤.

    - subclass 는 superclass ì˜ ì„¸ì„¸í•œ êµ¬í˜„ì— ë¯¼ê°í•˜ë‹¤.

    ë§Œì¼ subclass 를 í—ˆë½í•œë‹¤ë©´, self-use를 문서화하ë¼.

    - method가 어떻게 다른 method 를 사용하는지?

    보수ì ì¸ ì •ì±… : 모든 구체ì ì¸ class 는 final ì´ë‹¤.

    Bad: Many concrete classes in J2SE libraries

    Good: AbstractSet, AbstractMap

넷째. Method Design

  1. ëª¨ë“ˆì´ í•  수 있는 ê²ƒì„ client ê°€ 하게 하지 마ë¼.boilerplate code ì— ëŒ€í•œ 필요를 줄여ë¼.

    - boilerplate code 란 ì¼ë°˜ì ìœ¼ë¡œ cut-and-paste ë¡œ 행해지는 코드를 ë§í•œë‹¤.

    - (ëª¨ë“ˆì„ cut&pasteí•´ì„œ client ë‚´ì— ë„£ì–´ë²„ë¦¬ë©´) 아주 추하고 번거롭고, 오류 ë°œìƒì´ 잦다.

    import org.w3c.dom.*;

    import java.io.*;

    import javax.xml.transform.*;

    import javax.xml.transform.dom.*;

    import javax.xml.transform.stream.*;

    // DOM code to write an XML document to a specified output stream.

    private static final void writeDoc(Document doc, OutputStream out)throws IOException{

    try {

    Transformer t = TransformerFactory.newInstance().newTransformer();

    t.setOutputProperty(OutputKeys.DOCTYPE_SYSTEM, doc.getDoctype().getSystemId());

    t.transform(new DOMSource(doc), new StreamResult(out));

    } catch(TransformerException e) {

    throw new AssertionError(e); // Can’t happen!

    }

    }

  2. “사용ìžë¥¼ 놀ë¼ê²Œ 하지 않기†ì›ì¹™ì„ 준수하ë¼.

    API 사용ìžëŠ” behavior ì— ì˜í•´ 놀ë¼ì„œëŠ” 안ëœë‹¤.

    - 그렇게 하기 위해 êµ¬í˜„ì— ì¶”ê°€ì ì¸ ë…¸ë ¥ì„ ê¸°ìš¸ì¼ë§Œí•œ 가치가 있다.

    - 그리고, 조금 ì„±ëŠ¥ì„ ê¹Žì—¬ë„ ë ë§Œí•œ 가치가 있다.

    public class Thread implements Runnable {

    // Tests whether current thread has been interrupted.

    // Clears the interrupted status of current thread.

    public static boolean interrupted();

    }

  3. 빨리 ì‹¤íŒ¨í•˜ë¼ â€“ 장애가 ë°œìƒë˜ë©´ 가능한한 빨리 ì—러를 알려ë¼.ì»´íŒŒì¼ ì‹œê°„ì´ ì œì¼ ì¢‹ë‹¤. – static typing, generics

    런타임ì—, 첫 ìž˜ëª»ëœ method invocation ì´ ì œì¼ ì¢‹ë‹¤.

    - method 는 반드시 failure-atomic 해야 한다.

    // A Properties instance maps strings to strings

    public class Properties extends Hashtable {

    public Object put(Object key, Object value);

    // Throws ClassCastException if this properties

    // contains any keys or values that are not strings

    public void save(OutputStream out, String comments);

    }

  4. String í¬ë§·ìœ¼ë¡œ 있는 모든 ë°ì´í„°ë¥¼ 프로그램 구조로 바꾸어ë¼.그렇게 하지 않으면, client 는 string ì„ parse 해야 한다.

    - client 는 괴롭다.

    - ë” ë‚˜ìœ ê±´, string ì´ ì‚¬ì‹¤ìƒì˜ API ë¡œ 변질ë˜ì–´ 버린다.

    public class Throwable {

    public void printStackTrace(PrintStream s);

    public StackTraceElement[] getStackTrace(); // Since 1.4

    }

    public final class StackTraceElement {

    public String getFileName();

    public int getLineNumber();

    public String getClassName();

    public String getMethodName();

    public boolean isNativeMethod();

    }

  5. 주ì˜ë¥¼ 가지고 오버로딩 하ë¼.모호한 오버로드는 피하ë¼.

    - 여러 ê°œì˜ ì˜¤ë²„ë¡œë”©ì´ ë™ì‹œì— ì ìš©ë  수 있다.

    - 보수ì ì´ ë˜ì–´ë¼ : ë™ì¼í•œ argument 숫ìžê°€ ì—†ë„ë¡ í•˜ë¼.ë‹¹ì‹ ì´ ëª¨í˜¸í•œ ì˜¤ë²„ë¡œë”©ì„ ì œê³µí•´ì•¼ 한다면, ë™ì¼í•œ argumentsì— ëŒ€í•´ì„œëŠ” ë™ì¼í•œ behavior ê°€ ì¼ì–´ë‚˜ê²Œ 하ë¼.

    public TreeSet(Collection c); // Ignores order

    public TreeSet(SortedSet s); // Respects order

  6. ì ì ˆí•œ 파ë¼ë¯¸í„°ì™€ ë¦¬í„´íƒ€ìž…ì„ ì‚¬ìš©í•˜ë¼.Input ì„ ìœ„í•´ class ì „ë°˜ì— interface type ì„ ìž¥ë ¤í•˜ë¼.

    - 유연성과 ì„±ëŠ¥ì„ ì œê³µí•˜ë¼.가장 구체ì ì´ë©´ì„œ 가능한 input parameter type ë“¤ì„ ì‚¬ìš©í•˜ë¼.

    - 런타임 시간으로부터 ì»´íŒŒì¼ ì‹œê°„ê¹Œì§€ ì—러를 옮겨ë¼.

    ë” ì¢‹ì€ type ì´ ìžˆìœ¼ë©´, string ì„ ì‚¬ìš©í•˜ì§€ 마ë¼.

    - string ì€ ë¬´ê²ê³ , ì—러가 나기 쉽고, ëŠë¦¬ê¸°ê¹Œì§€ 하다.

    통화를 í‘œí˜„í•˜ëŠ”ë° floating point 를 사용하지 마ë¼

    - binary floating point 는 부정확한 결과를 야기시킨다.

    float(32 bits) 보다 double(64 bits)를 사용하ë¼.

    - 정확성 ì†ì‹¤ì€ 현실ì´ê³ , 성능 ì†ì‹¤ì€ 무시할만 하다.

  7. method ì „ë°˜ì— ê±¸ì³ ì¼ê´€ì ì¸ parameter odering ì„ ì‚¬ìš©í•˜ë¼.특히 parameter type ë“¤ì´ ë™ì¼í•  ë•Œ ë”ìš± 중요하다.

    #include

    char *strcpy (char *dest, char *src);

    void bcopy (void *src, void *dst, int n);

    java.util.Collections first parameter always collection to be modified or queried

    java.util.concurrent – time always specified as long delay, TimeUnit unit

  8. Avoid Long Parameter Lists세 ê°œ, ë˜ëŠ” ë” ì ì€ ìˆ˜ì˜ íŒŒë¼ë¯¸í„°ë“¤ì´ ì´ìƒì ì´ë‹¤.

    - ë” ë§Žë‹¤ë©´, 사용ìžë“¤ì€ 문서를 참조하려 í•  것ì´ë‹¤.ë˜‘ê°™ì´ íƒ€ì´í•‘ëœ íŒŒë¼ë¯¸í„°ë“¤ì˜ 긴 리스트는 위험하다.

    - í”„ë¡œê·¸ëž˜ë¨¸ë“¤ì´ parameter 순서를 실수로 바꾸어버릴 ìˆ˜ë„ ìžˆë‹¤.

    - í”„ë¡œê·¸ëž˜ë¨¸ë“¤ì´ ì—¬ì „ížˆ 컴파ì¼í•˜ê³ , 실행한다. 그러나 ê·¸ê²ƒì´ ìž˜ëª»ì¼ ìˆ˜ 있다.

    파ë¼ë¯¸í„° 리스트를 짧게할 수 있는 ë‘가지 ê¸°ë²•ì´ ìžˆë‹¤.

    - method 를 ë‘개로 나누어ë¼.

    - 파ë¼ë¯¸í„°ë¥¼ 유지할 수 있ë„ë¡ helper class 를 만들어ë¼.

    // Eleven parameters including four consecutive ints

    HWND CreateWindow(LPCTSTR lpClassName, LPCTSTR lpWindowName,

    DWORD dwStyle, int x, int y, int nWidth, int nHeight,

    HWND hWndParent, HMENU hMenu, HINSTANCE hInstance,

    LPVOID lpParam);

  9. 예외처리를 요구하는 return value를 만들지 마ë¼zero-length array를 리털하거나 빈 collection ì„ ë¦¬í„´í•˜ë¼. null ì„ ë¦¬í„´í•˜ì§€ 마ë¼.

    package java.awt.image;

    public interface BufferedImageOp {

    // Returns the rendering hints for this operation,

    // or null if no hints have been set.

    public RenderingHints getRenderingHints();

    }

다섯째. Exception Design

  1. 예외 ìƒí™©ì„ 표시하기 위해 exeption ì„ ë˜ì ¸ë¼.client ê°€ control flow 를 위해 exceptionì„ ì‚¬ìš©í•˜ë„ë¡ í•´ì„œëŠ” 안ëœë‹¤.

    private byte[] a = new byte[BUF_SIZE];

    void processBuffer (ByteBuffer buf) {

    try {

    while (true) {

    buf.get(a);

    processBytes(tmp, BUF_SIZE);

    }

    } catch (BufferUnderflowException e) {

    int remaining = buf.remaining();

    buf.get(a, 0, remaining);

    processBytes(bufArray, remaining);

    }

    }

    정반대로, 조용하게 fail ì´ ë‚˜ì„œëŠ” 안ëœë‹¤.

    ThreadGroup.enumerate(Thread[] list)

  2. Unchecked Exceptions ì„ ì‚¬ìš©í•˜ë¼.. Checked – client ê°€ recovery action ì„ í•´ì•¼ 한다

    . Unchecked – programming error

    . Checked exceptions ì˜ ê³¼í•œ ì‚¬ìš©ì€ boilerplate 를 야기시킨다.

    try {

    Foo f = (Foo) super.clone();

    ….

    } catch (CloneNotSupportedException e) {

    // This can’t happen, since we’re Cloneable

    throw new AssertionError();

    }

  3. 예외 ì•ˆì— ì—러정보(failure-capture information)를 í¬í•¨ì‹œì¼œë¼.ì§„ë‹¨ì„ í—ˆìš©í•˜ê³  repair 하거나 recovery 하ë¼.

    unchecked exceptionì— ëŒ€í•´ì„œëŠ” 메시지로 충분하다.

    checked exceptionì— ëŒ€í•´ì„œëŠ” accessor 를 제공하ë¼.

여섯째. Refactoring API Designs

  1. Sublist Operations in Vector

    public class Vector {

    public int indexOf(Object elem, int index);

    public int lastIndexOf(Object elem, int index);

    …

    }

    매우 파워풀하지 않다. – 단지 ê²€ìƒ‰ë§Œì„ ì§€ì›í•œë‹¤.

    ë¬¸ì„œì—†ì´ ì‚¬ìš©í•˜ê¸° 힘들다.

    * Sublist Operations Refactored

    public interface List {

    List subList(int fromIndex, int toIndex);

    …

    }

    매우 파워풀하다. 모든 ë™ìž‘ì„ ì§€ì›í•œë‹¤.

    ì¸í„°íŽ˜ì´ìŠ¤ ì‚¬ìš©ì´ ê°œë…ì  ë¬´ê²Œë¥¼ 작게한다.

    - power-to-weight ratio ê°€ 올ë¼ê°„다.

    문서 ì—†ì´ë„ 사용할 수 있다.

  2. Thread-Local Variables

    // Broken – inappropriate use of String as capability.

    // Keys constitute a shared global namespace.

    public class ThreadLocal {

    private ThreadLocal() { } // Non-instantiable

    // Sets current thread’s value for named variable.

    public static void set(String key, Object value);

    // Returns current thread’s value for named variable.

    public static Object get(String key);

    }

    * Thread-Local Variables Refactored (1)

    public class ThreadLocal {

    private ThreadLocal() { } // Noninstantiable

    public static class Key { Key() { } }

    // Generates a unique, unforgeable key

    public static Key getKey() { return new Key(); }

    public static void set(Key key, Object value);

    public static Object get(Key key);

    }

    ë™ìž‘하기는 한다. 그러나 사용하려면 boilerplate code ê°€ 필요하다.

    static ThreadLocal.Key serialNumberKey = ThreadLocal.getKey();

    ThreadLocal.set(serialNumberKey, nextSerialNumber());

    System.out.println(ThreadLocal.get(serialNumberKey));

    * Thread-Local Variables Refactored (2)

    public class ThreadLocal {

    public ThreadLocal() { }

    public void set(Object value);

    public Object get();

    }

    API나 client code 로부터 ìž¡ë™ì‚¬ë‹ˆë¥¼ 없애ë¼.

    static ThreadLocal serialNumber = new ThreadLocal();

    serialNumber.set(nextSerialNumber());

    System.out.println(serialNumber.get());

ì¼ê³±ì§¸. ê²°ë¡ 

  1. API ë””ìžì¸ì€ ìš°ì•„í•˜ë©´ì„œë„ ëˆì„ 벌 수 있는 행위ì´ë‹¤.

    - ë§Žì€ í”„ë¡œê·¸ëž˜ë¨¸ì™€ 사용ìžë“¤ê³¼ íšŒì‚¬ë“¤ì„ ì´ë¡­ê²Œ 한다.

  2. ì´ ì´ì•¼ê¸°ëŠ” ì–´ë–¤ ì˜ë¯¸ì—ì„œ 휴리스틱한 ê¸°ë²•ë“¤ì„ ë®ì–´ë²„린다.

    - ë…¸ì˜ˆê°™ì´ íœ´ë¦¬ìŠ¤í‹±í•œ ê¸°ìˆ ë“¤ì— ë‹¬ë¼ë¶™ì§€ 마ë¼.

    - 충분한 ì´ìœ ì—†ì´ ê·¸ë“¤ì„ ì¹¨ë²”í•˜ì§€ë„ ë§ˆë¼.

  3. API ë””ìžì¸ì€ 힘들다.

    - 혼ìží•˜ëŠ” ìž‘ì—…ì´ ì•„ë‹ˆë‹¤.

    - 완벽할 수 없다. 그러나 완벽해지려고 ì‹œë„하ë¼.

  4. 뻔뻔하게 스스로 Promotion 하ë¼.

About the author

김수보 팀장/로컬플랫í¼íŒ€ 플랫í¼ê°œë°œì‹¤ KTH

  • More at
  • logo image
  • logo image

2013ë…„ 4ì›” 10ì¼
by aduris
0 comments

ì§ê´€ì´ ì€íƒ„í™˜ì€ ì•„ë‹ˆì§€ë§Œ, 필수요건임ì—는 ìžëª…하다.

‘해봤다고’ 반드시 아는 ê²ƒì€ ì•„ë‹ˆì§€ë§Œ,

‘아예 안 해본 사람’ì€ ì£½ì—ˆë‹¤ ê¹¨ë„ ëª¨ë¥´ëŠ” 게 있다.

바로 ê·¸ ë¶„ì•¼ì— ëŒ€í•œ ‘ì§ê´€’ì´ë‹¤.

[ë”보기]

//

2013ë…„ 3ì›” 28ì¼
by aduris
0 comments

책추천]코딩 í˜¸ëŸ¬ì˜ ì´íŽ™í‹°ë¸Œ í”„ë¡œê·¸ëž˜ë° ìŠ¤íƒ ì˜¤ë²„í”Œë¡œìš° ê³µë™ ì°½ë¦½ìžê°€ 알려주는 소프트웨어 ê°œë°œì˜ ë¹„ë°€

코딩 í˜¸ëŸ¬ì˜ ì´íŽ™í‹°ë¸Œ 프로그래ë°

책소개

코딩 호러 ë¸”ë¡œê·¸ì˜ ìš´ì˜ìžê°€ 알려주는 소프트웨어 ê°œë°œì˜ ë¹„ë°€!

ìŠ¤íƒ ì˜¤ë²„í”Œë¡œìš° ê³µë™ ì°½ë¦½ìžê°€ 알려주는 소프트웨어 ê°œë°œì˜ ë¹„ë°€ 『코딩 í˜¸ëŸ¬ì˜ ì´íŽ™í‹°ë¸Œ 프로그래ë°ã€. ‘코딩 호러’와 â€˜ìŠ¤íƒ ì˜¤ë²„í”Œë¡œìš°â€™ ë‘ ì‚¬ì´íŠ¸ë¥¼ 탄ìƒì‹œí‚¨ ì €ìžì˜ 소프트웨어 개발과 ê´€ë ¨ëœ ì§€í˜œì™€ ì¡°ì–¸ì´ ê°€ê° ì—†ì´ ë‹´ê²¨ 있다. ê·¸ë™ì•ˆ 코딩 í˜¸ëŸ¬ì— ì‹¤ë¦° 글 중ì—ì„œ ì—„ì„ í•œ 글만 실린 ì´ ì±…ì€ ì†Œí”„íŠ¸ì›¨ì–´ ê°œë°œì— ê´€í•œ ì €ìžì˜ 통찰력과 실질ì ì¸ ì¡°ì–¸ì´ ìˆ˜ë¡ë˜ì–´ 있다.

[ì¸í„°ë„· êµë³´ë¬¸ê³  제공]

ì €ìžì†Œê°œ

제프 앳우드

ì €ìž : 제프 앳우드
ì €ìž ì œí”„ 앳우드는 캘리í¬ë‹ˆì•„ 버í´ë¦¬ì—ì„œ ì•„ë‚´, ë‘ ë§ˆë¦¬ ê³ ì–‘ì´, 세 ëª…ì˜ ì•„ì´ë“¤, 그리고 여러 ëŒ€ì˜ ì»´í“¨í„°ì™€ 함께 ì‚´ê³  있다. 그는 80년대 ìžì‹ ì˜ 첫 번째 마ì´í¬ë¡œì»´í“¨í„°ì˜€ë˜ í…사스 ì¸ìŠ¤íŠ¸ë£¨ë¨¼íŠ¸ì˜ TI-99/4A를 ì´ìš©í•´ 다양한 마ì´í¬ë¡œì†Œí”„트 ë² ì´ì§ í”„ë¡œê·¸ëž¨ì„ êµ¬í˜„í•˜ë©´ì„œ 소프트웨어 개발ìžì˜ ê¸¸ì„ ê±·ê¸° 시작했다. 90년대 초반까지 ê³„ì† PCìƒì—ì„œ 비주얼 ë² ì´ì§ 3.0ê³¼ 윈ë„ìš° 3.1ì„ ì‚¬ìš©í–ˆê³ , ë¸íŒŒì´ì˜ 최초 ë²„ì „ì„ ì´ìš©í•´ 파스칼 ì½”ë“œë„ ë§Žì´ ìž‘ì„±í–ˆë‹¤. 현재는 대소문ìžì— 민ê°í•œ 사악한 ì†ì„±ì—ë„ ë¶ˆêµ¬í•˜ê³  VB.NET í˜¹ì€ C# 프로그래ë°ì— ìµìˆ™í•˜ë‹¤. ì§€ê¸ˆì€ ë£¨ë¹„ë¥¼ ë°°ìš°ê³  있다. 앳우드는 개발ìžê°€ ì½ì–´ì•¼ í•  ë„ì„œ 목ë¡ì—ì„œ ë°ížŒ 것처럼 스스로를 소프트웨어 개발 ê³¼ì •ì— ì¡´ìž¬í•˜ëŠ” ì¸ê°„ì ì¸ ì¸¡ë©´ì— íŠ¹ë³„ížˆ ê´€ì‹¬ì´ ìžˆëŠ”, ìƒë‹¹ížˆ ê²½í—˜ì´ í’부한 윈ë„웹(WINDOWSWEB) 소프트웨어 개발ìžë¼ê³  ìƒê°í•œë‹¤. 그가 주장하는 ë°”ì— ë”°ë¥´ë©´ 컴퓨터는 놀ë¼ìš´ 기계ì´ì§€ë§Œ ì‚¬ì‹¤ìƒ ê·¸ê²ƒì„ ì‚¬ìš©í•˜ëŠ” ì‚¬ëžŒì„ ë‹¨ìˆœížˆ ë°˜ì˜í•˜ëŠ” ê¸°ê³„ì— ë¶ˆê³¼í•˜ë©°, 소프트웨어 ê°œë°œì˜ ê¸°ìˆ ì ì¸ ì¸¡ë©´ì€ ì½”ë“œë¥¼ 학습하는 것만으로는 충족ë˜ì§€ ì•Šê³  ì†Œí”„íŠ¸ì›¨ì–´ì˜ ë°°í›„ì— ì¡´ìž¬í•˜ëŠ” ì‚¬ëžŒë„ í•¨ê»˜ 연구해야 한다.

ì—­ìž : 임백준
ì—­ìž ìž„ë°±ì¤€ì€ ì„œìš¸ëŒ€í•™êµì—ì„œ ìˆ˜í•™ì„ ì „ê³µí•˜ê³ , ì¸ë””애나 주립대학ì—ì„œ 컴퓨터 사ì´ì–¸ìŠ¤ë¥¼ 공부했다. 삼성SDS, 뉴저지 소재 루슨트테í¬ë†€ë¡œì§€ìŠ¤ì—ì„œ 근무했고, ì§€ê¸ˆì€ ì›”ìŠ¤íŠ¸ë¦¬íŠ¸ì—ì„œ 금융 소프트웨어를 개발하고 있다. 뉴저지ì—ì„œ 아내와 ë‘ ë”¸ê³¼ 함께 ì‚´ê³  있다. 《누워서 ì½ëŠ” í¼ì¦ë¶ã€‹(2010), <프로그래ë°ì€ ìƒìƒì´ë‹¤ã€‹(2008), ã€Šë‰´ìš•ì˜ í”„ë¡œê·¸ëž˜ë¨¸ã€‹(2007), 《소프트웨어 산책》(2005), 《나는 프로그래머다》(2004), 《누워서 ì½ëŠ” 알고리즘》(2003), 《행복한 프로그래ë°ã€‹(2003, ì´ìƒ 한빛미디어), 《프로그래머 ê·¸ ë‹¤ìŒ ì´ì•¼ê¸°ã€‹(2011, 로드ë¶)ì„ ì§‘í•„í–ˆê³ , ë‹¤ìˆ˜ì˜ ì±…ì„ ë²ˆì—­í–ˆë‹¤.

[ì¸í„°ë„· êµë³´ë¬¸ê³  제공]

목차

▣ [1부] 들어가며
ê²°êµ­ 프로그래머가 ë˜ê³  ì‹¶ì€ ê±°ë¡œêµ°
í”„ë¡œê·¸ëž˜ë¨¸ì˜ ì—¬ëŸ ë‹¨ê³„
쓰지 않으면서 쓰기
â–£ [2부] 엉터리 ê°™ì€ ì¼ì„ 마무리하는 기술
거대하고 ë없는 바다
톱날 갈기
ì € 길로 ê°€ë¼. ì´ì•Œì²˜ëŸ¼.
멀티태스킹ì´ë¼ëŠ” 미신
â–£ [3부] ì¢‹ì€ í”„ë¡œê·¸ëž˜ë°ì˜ ì›ë¦¬
프로그래ë°ì˜ 첫 번째 ì›ë¦¬: ê·¸ê²ƒì€ ì–¸ì œë‚˜ ë‹¹ì‹ ì˜ ìž˜ëª»ì´ë‹¤.
ìµœì„ ì˜ ì½”ë“œëŠ” 아무 ì½”ë“œë„ ì—†ëŠ” 것ì´ë‹¤.
ì£¼ì„ ì—†ì´ ì½”ë”©í•˜ê¸°
루í¬, 소스를 ì½ëŠ” ë²•ì„ ë°°ìš°ê²Œ
고무오리 문제 해결법
ì•„ì´ë””ì–´ê°€ ì•„ë‹ˆë¼ íŒ€ì„ ê²½ìž‘í•˜ë¼
ë‹¹ì‹ ì˜ íŒ€ì€ ì—˜ë¦¬ë² ì´í„° 테스트를 통과할 수 있는가?
ì„±ëŠ¥ì€ ê¸°ëŠ¥ì´ë‹¤
▣ [4부] 프로그래머를 제대로 채용하는 법
프로그래머가 어째서 프로그래ë°ì„ 못하는 걸까?
프로그래머를 채용하는 방법
ì „í™” ì¸í„°ë·°ë¡œ 걸러내는 ê³¼ì •ì„ ì˜¬ë°”ë¡œ 수행하기
몇 ë…„ì´ë‚˜ 경험했는가, ë¼ëŠ” ì§ˆë¬¸ì— ë‹´ê¸´ 미신
프로그래머를 대ìƒìœ¼ë¡œ ì¸í„°ë·°í•˜ê¸°
ì¸í„°ë·° ì—­ì‚¬ìƒ ê°€ìž¥ 어려운 질문
â–£ [5부] íŒ€ì´ í•¨ê»˜ ì¼í•˜ë„ë¡ ë§Œë“¤ê¸°
ê·¸ë“¤ì´ ì–´ë–¤ ë§ì„ 하든 ê·¸ê²ƒì€ ê²°êµ­ 사람과 ê´€ë ¨ëœ ë¬¸ì œë‹¤
예를 통해 리드하기
뱀파ì´ì–´ 프로그래머 대 베어울프 시스템 관리ìž
ì§ í”„ë¡œê·¸ëž˜ë° ëŒ€ 코드 리뷰
회ì˜: ì¼ì´ 죽으러 가는 장소
ì©ì€ 사과를 다루는 방법
ì©ì€ 사과: 그룹 ì „ì²´ì˜ ë…4
ì›ê²©ê·¼ë¬´ì— 대해
â–£ [6부] ë‹¹ì‹ ì˜ ë°•ì¥ë™êµ´: 프로그래머를 위한 효율ì ì¸ ìž‘ì—… 공간
프로그래머 권리 장전
컴퓨터 워í¬ìŠ¤í…Œì´ì…˜ ì¸ì²´ê³µí•™
하나 ì´ìƒì˜ 모니터를 사용하면 ìƒì‚°ì„±ì´ í–¥ìƒë˜ëŠ”ê°€?
품질 ì¢‹ì€ í”„ë¡œê·¸ëž˜ë°ìš© ì˜ìžì— 투ìží•˜ê¸°
배경 조명
â–£ [7부] 사용ìžë¥¼ ì—¼ë‘ì— ë‘ê³  설계하기
ë‹¹ì‹ ì€ ê²°ì½” 충분한 치즈를 갖지 못할 것ì´ë‹¤
애플리케ì´ì…˜ì€ ê²°êµ­, ìž‘ì€ ë””í…Œì¼ì˜ 모ìŒì´ë‹¤
ì‚¬ìš©ìž ì¸í„°íŽ˜ì´ìŠ¤ê°€ 애플리케ì´ì…˜ì´ë‹¤
UI를 우선시하는소프트웨어 개발
ìª½ìˆ˜ë§¤ê¸°ê¸°ì˜ ì¢…ë§
사용ìžì˜ ì¢ì€ 시야 다루기
í´ë“œ 다시 살펴보기
í”¼ì¸ ì˜ ë²•ì¹™ê³¼ 무한한 ë„“ì´
ê¶ê·¹ì ì¸ 단위 테스트 실패
버전 1ì€ ì—‰ë§ì´ì•¼, 하지만 어쨌든 출시하ë¼ê³ 
â–£ [8부] ë³´ì•ˆì˜ ê¸°ì´ˆ: 사용ìžì˜ ë°ì´í„°ë¥¼ 보호하ë¼
웹 트래픽 전체를 암호화해야 하는가?
사전 공격 기초
빠른 해싱
웹 비밀번호를 둘러싼 불편한 진실
â–£ [9부] 코드를 테스트해서 ê·¸ê²ƒì´ í•„ìš” ì´ìƒìœ¼ë¡œ ì—‰ë§ì´ ë˜ì§€ 않게 만들기
ê³ ê°ì˜ ê³ í†µì„ ê³µìœ í•˜ê¸°
무질서한 ì›ìˆ­ì´ì™€ 함께 ì¼í•˜ê¸°
코드 리뷰: 그냥 하ë¼
무ì‹í•œ ë°©ì‹ì˜ 테스트
나는 단위 테스트를 작성하지 않는 바보들ì—게 ë™ì •ì„ 보낸다
단위 테스트 대 베타 테스트
싸구려 사용성 테스트
í¬ëž˜ì‰¬ë³´ë‹¤ ë” ë‚˜ìœ ê²ƒì€ë¬´ì—‡ì¸ê°€?
â–£ [10부] 커뮤니티를 만들고, 관리하고, 커뮤니티로부터 ì´ìµ 얻기
ì»¤ë®¤ë‹ˆí‹°ì˜ ì˜ê²¬ì„ 들어ë¼, 하지만 ê·¸ë“¤ì´ ë‹¹ì‹ ì´ ì–´ë–»ê²Œ 할지 ë§í•˜ê²Œ 하지 마ë¼.
반복한다: 사용ìžì˜ ë§ì„ 듣지 마ë¼
게임화
정지, 금지 í˜¹ì€ ì™„ì „ê¸ˆì§€?
â–£ [11부] 마케팅 사기꾼들, 그리고 어떻게 그런 ì‚¬ëžŒì´ ë˜ì§€ ì•Šì„ ìˆ˜ 있는가
마케팅 ì‚¬ê¸°ê¾¼ë“¤ì´ ë‹¹ì‹ ì„ ì†ì´ë ¤ê³  하는 9가지 방법
ì¸í„°ë„· ê´‘ê³ ì—서하지 ë§ì•„야 í•  ì¼
ê·¸ë¼ìš´ë“œí˜¸ê·¸ ë°ì´, í˜¹ì€ A/B í…ŒìŠ¤íŠ¸ì˜ ë¬¸ì œ
기업처럼 ë³´ì¸ë‹¤ë©´, ê·¸ê²ƒì„ ë³€í™”ì‹œì¼œë¼.
소프트웨어 가격 ì±…ì •: 우리는 ê·¸ê²ƒì„ ìž˜ëª» 하고 있는가?
▣ [12부] 우선순위를 제대로 관리하기
í–‰ë³µì„ êµ¬ë§¤í•˜ê¸°
빠르게 ì‚´ê³ , ì¼ì° 죽고, 지친 ìœ¡ì‹ ì„ ë‚¨ê¸°ê³ 

[ì¸í„°ë„· êµë³´ë¬¸ê³  제공]

2013ë…„ 3ì›” 28ì¼
by aduris
0 comments

ì±… 추천] 프로그래머로 사는 법 í”„ë¡œê·¸ëž˜ë¨¸ì˜ ê¸¸ì„ ê±¸ì–´ê°€ëŠ” ë‹¹ì‹ ì„ ìœ„í•œ 안내서

프로그래머로 사는 법

ì›ì œ Making it big in software : get the job. Work the org. Become great
페ì´ì§€ 608|ISBN ISBN 안내 ë ˆì´ì–´ 보기 9788979149623|íŒí˜• A5, 148*210mm|ì±…ì •ë³´
25,000ì› -> 19,500ì›(-22%)

책소개

성공하는 소프트웨어 프로그래머를 위한 경력 관리 비결!

『프로그래머로 사는 법ã€ì€ 소프트웨어 프로그래머로 취업하여 ê²½ë ¥ì„ ì‹œìž‘í•˜ëŠ” 방법부터 ì°½ì—…ì— ì´ë¥´ê¸°ê¹Œì§€ì˜ 단계별 ê²½ë ¥ì„ ì§‘ì•½í•œ ì±…ì´ë‹¤. IBMì—ì„œ 20ì—¬ ë…„ê°„ 프로그래머로 ì¼í•˜ë©°, ìˆ˜ë§Žì€ ê¸°ì—…ê³¼ 대학ì—ì„œ 소프트웨어 엔지니어 ì–‘ì„±ì— íž˜ì¨ ì˜¨ 샘 ë¼ì´íŠ¸ìŠ¤í†¤ì˜ í•™ìˆ ì  ì†Œì‚°ìœ¼ë¡œ, 경력관리가 필요한 프로그래머들ì—게 유용한 ì •ë³´ê°€ 담겨 있다. 소프트웨어 분야ì—ì„œ ê²½ë ¥ì„ ìŒ“ê¸° 위해 필요한 기본 구성 요소를 비롯하여 ì••ë°• 하ì—ì„œ 제대로 ì¼í•˜ëŠ” 방법, 전문가로서 ì •ì ì— ë„달하여 대가가 ë˜ëŠ”ë° í•„ìš”í•œ ê²½í—˜ì„ ìƒìƒí•œ 언어로 ì¼ê¹¨ìš´ë‹¤. ë˜í•œ, ì—…ì²´ 중역, 연구ìž, 업계 ë¦¬ë” ë“± 다양한 ì¸ë¬¼ì„ 대ìƒìœ¼ë¡œ ì„ ì •í•œ ì¸í„°ë·°ë¥¼ 수ë¡í•˜ì—¬ 유능한 프로그래머 리ë”ì˜ í‘œë³¸ì„ ë³´ì—¬ì£¼ê³  있다.

[ì¸í„°ë„· êµë³´ë¬¸ê³  제공]

ì €ìžì†Œê°œ

샘 ë¼ì´íŠ¸ìŠ¤í†¤

ì €ìž : 샘 ë¼ì´íŠ¸ìŠ¤í†¤
ì €ìž ìƒ˜ ë¼ì´íŠ¸ìŠ¤í†¤ì€ IBM 소프트웨어 ê·¸ë£¹ì˜ ìˆ˜ì„ì—°êµ¬ì› ë° í”„ë¡œê·¸ëž¨ 디렉터로 ì¼í•˜ë©´ì„œ 세계 ìµœëŒ€ì˜ ì†Œí”„íŠ¸ì›¨ì–´ ì—”ì§€ë‹ˆì–´ë§ íŒ€ ê°€ìš´ë° í•˜ë‚˜ì—ì„œ 제품 ì „ëžµ ë° R&D와 ê´€ë ¨ëœ ì¼ì„ 하고 있다. ìƒ˜ì€ ëŒ€ì¤‘ ê°•ì—° ë° ì €ìˆ  활ë™, 발명 활ë™ìœ¼ë¡œë„ 유명하며 여전히 업무 ì‹œê°„ì˜ ìƒë‹¹ ë¶€ë¶„ì„ ì†Œí”„íŠ¸ì›¨ì–´ 엔지니어를 선발하고 지ë„하는 ë° í• ì• í•˜ê³  있다. 수십 êµ°ë°ì˜ í¬ì¶˜ 500대 기업, 기술 전시회 ë° í•™íšŒ, 유수 대학 등ì—ì„œ 경력 개발, 기술 트렌드, ì‹ ê·œ 연구 í•„ìš” 분야 ë“±ì„ ì£¼ì œë¡œ ê°•ì—°ì„ í•´ 왔다. EWEEK, INFORMATIONWEEK, INFOWORLD, MIT TECHNOLOGY REVIEWì—ì„œë„ ë‹¤ìˆ˜ ì¸ìš©ë˜ì—ˆë‹¤. ì†Œê·œëª¨ì˜ ì‘용연구 팀ì—ì„œ ê°ì§€ì— 걸친 200ëª…ì´ ë„˜ëŠ” ì§ì›ì´ 참여하는 대규모 프로ì íŠ¸ì— ì´ë¥´ê¸°ê¹Œì§€ 다양한 프로ì íŠ¸ë¥¼ 관리해 왔다. ìžê°€ 관리 ë°ì´í„°ë² ì´ìŠ¤ ì‹œìŠ¤í…œì— ê´€í•œ IEEE ë°ì´í„° ì—”ì§€ë‹ˆì–´ë§ ì›Œí¬ê·¸ë£¹ì˜ 설립ìžì´ë©° ìžìœ¨ ìžë™ 컴퓨팅 ì‹œìŠ¤í…œì— ê´€í•œ IEEE 컴퓨터 소사ì´ì–´í‹° 기술위ì›íšŒì˜ êµ­ì œ ìžë¬¸ìœ„ì›ë‹¨ìœ¼ë¡œë„ 활ë™í•˜ê³  있다. 30개가 넘는 íŠ¹í—ˆì˜ ë°œëª…ì¸ìœ¼ë¡œ 등재ë˜ì–´ 있으며, 몇 ê¶Œì˜ ì±…ê³¼ ë…¼ë¬¸ì˜ ì €ìžì´ê¸°ë„ 하다. 퀸즈 ëŒ€í•™êµ ì „ê¸°ê³µí•™ë¶€ì—ì„œ ì‘용과학 학사 학위를 받았으며, 워털루 대학êµì—ì„œ ì „ì‚° ë° ì†Œí”„íŠ¸ì›¨ì–´ ì—”ì§€ë‹ˆì–´ë§ ì„사 학위를 받았다. 플뢰레 종목으로 전국대회ì—ì„œ 활약한 ê²½í—˜ì´ ìžˆëŠ” 펜싱 선수였으며, 여가 시간ì—는 가족과 ì‹œê°„ì„ ë³´ë‚´ê±°ë‚˜ ìžì „ê±°, 기타 ë“±ì„ ì·¨ë¯¸ë¡œ 하고 있다.

ì—­ìž : 서환수
ì—­ìž ì„œí™˜ìˆ˜ëŠ” ì„œìš¸ëŒ€í•™êµ ë¬¼ë¦¬í•™ê³¼ì—ì„œ 박사 학위를 받고 ì§€ê¸ˆì€ ê²½ê¸°ë„ ëª¨ì²˜ì˜ ê¸°ì—… 연구소ì—ì„œ ë‚˜ë…¸ê³¼í•™ì„ ì—°êµ¬í•˜ê³  있다. 유치ì›ì— 들어가기 전부터 ì•„ë¬´ê²ƒë„ ëª¨ë¥´ê³  ë¬¼ë¦¬í•™ì„ í•˜ê² ë‹¤ê³  마ìŒë¨¹ì€ ì´í›„ë¡œ, 30대 ì¤‘ë°˜ì— ì´ë¥¸ ì§€ê¸ˆê¹Œì§€ë„ â€œì–´ë–¤ ì‚¬ëžŒì´ ë˜ê³  싶으ëƒ?â€ë¼ëŠ” ì§ˆë¬¸ì„ ë°›ìœ¼ë©´ “훌륭한 과학ìžìš”â€ë¼ê³  대답하고 있다.『HEAD FIRST JAVA : 뇌 회로를 ìžê·¹í•˜ëŠ” ìžë°” 학습법 (개정íŒ)ã€, 『SLIDE : OLOGY – 위대한 프레젠테ì´ì…˜ì„ 만드는 예술과 과학ã€, ã€Ží”„ë¡œê·¸ëž˜ë° ë©´ì ‘ã€ì„ 비롯해서 한빛미디어와 함께 여러 ê¶Œì˜ ë²ˆì—­ì„œë¥¼ 냈다.

[ì¸í„°ë„· êµë³´ë¬¸ê³  제공]

목차

CHAPTER 1í¬ê²Œ 성공하기
__소프트웨어 ë¶„ì•¼ì˜ ê±°ì„±ë“¤ì€ ë¬´ìŠ¨ ì¼ì„ 할까?
__í–‰ë³µì„ ì¢‡ì•„ë¼
__ë­˜ ë§ì„¤ì´ëŠ”ê°€?
__ìƒê°ë³´ë‹¤ëŠ” 어렵지 않다
CHAPTER 2ì¢‹ì€ ì†Œí”„íŠ¸ì›¨ì–´ëž€?
__ë§ì³ë²„린 소프트웨어 프로ì íŠ¸ì™€ 무용담
__우리가 하는 모든 ì¼ì˜ ì›ë™ë ¥, 시장
__ê³ ê°: 기존 ê³ ê°ê³¼ ì‹ ê·œ ê³ ê°
__ì´ê¸°ëŠ” 전략과 전술
__ê³ ê°ì—게 ê·€ 기울ì´ê¸°(ë˜ëŠ” 그러지 않기)
__INTERVIEW__마리사 ë©”ì´ì–´
CHAPTER 3í•™êµ ëŒ€ ì§ìž¥
__ì œí•œëœ ë¹„ì „
__í•™êµëŠ” ì–´í•­ì´ë‹¤
__회사는 ì–´í•­ì´ë‹¤
__ì°¨ì´ë¥¼ 지렛대 삼아 …
__INTERVIEW__존 벤틀리
CHAPTER 4미션 임파서블? 소프트웨어 개발 분야 ì§ìž¥ 구하기
__현명하게 ì„ íƒí•˜ëŠ” 법
__ì‹ ê·œ ì·¨ì—…ìž ì´ë ¥ì„œì˜ 현실
__바람ì§í•œ 소프트웨어 ê°œë°œìž ì´ë ¥ì„œ
__ì´ë ¥ì„œë¥¼ 넘어서
__í•™ì ì˜ 가치
__과외 활ë™ì˜ 가치
__현장 실습과 ì¸í„´ì‹­
__훌륭한 ë©´ì ‘ì„ ìœ„í•œ 15가지 비결
__INTERVIEW__비야네 스트롭스트룹
CHAPTER 5소프트웨어 ê°œë°œìž ì´ˆê¸° 시절 활용법
__트레ì´ë“œí¬ëž˜í”„트
__소프트웨어 업계
__ë„ë©”ì¸ ì „ë¬¸ì„±
__온고지신
__리ë”로부터 배워ë¼
__ë„¤íŠ¸ì›Œí¬ êµ¬ì¶•
__ì–´ë–¤ ì‚¬ëžŒì´ ë  ê²ƒì¸ê°€?
__멘토
__재미와 성공
__INTERVIEW__리차드 스톨만
CHAPTER 6필수 역량
__업무 역량과 업무 외 역량
__ì„±ìž¥ì„ ìœ„í•œ 기술 역량
__í”„ë¡œê·¸ëž˜ë° ì–¸ì–´: 잘 나가는 언어와 그렇지 ì•Šì€ ì–¸ì–´
__디버깅
__ìƒì¡´ì„ 위한 규격, 설계 ë° ì½”ë“œ 검토
__성장 역량
__ì¡°ì§ ìµœìƒë¶€ì˜ 비업무 역량
__ê¶ê·¹ì˜ 비업무 역량: ê°ì„± 지능
__INTERVIEW__ë ˆì´ í†°ë¦°ìŠ¨
CHAPTER 7소프트웨어 R&D ì¡°ì§
__누가 무슨 ì¼ì„ 하나?
__ì¢‹ì€ ì„ ìˆ˜ì™€ 위대한 선수
__효과ì ì¸ ê²½ë ¥ì„ ìŒ“ê¸° 위한 세 가지
__ì—…ë¬´ìƒ ëŒ€í™”ì˜ ë„¤ 가지 모드
__절대로 ìƒì‚¬ë¥¼ 놀래키지 ë§ë¼
__ì¸ìƒê³¼ ì²´ì œ 순ì‘ë„
__INTERVIEW__피터 노빅
CHAPTER 8…(하략)

[ì¸í„°ë„· êµë³´ë¬¸ê³  제공]

출íŒì‚¬ ì„œí‰

1. ì´ ì±…ì´ ì œì‹œí•˜ëŠ” 핵심 ë‚´ìš©
프로그래머로 ì·¨ì§í•´ì„œ ê²½ë ¥ì„ ì‹œìž‘í•˜ëŠ” 방법부터 ì°½ì—…ì— ì´ë¥´ê¸°ê¹Œì§€ ê²½ë ¥ì˜ ëª¨ë“  ê²ƒì„ ì•Œë ¤ì¤€ë‹¤

2. ì–´ë–¤ ë…ìžë¥¼ 위한 ì±…ì¸ê°€?
-. ìžê¸° ê³„ë°œì— ê´€ì‹¬ 있는 프로그래머
-. 경력 관리가 필요한 프로그래머

3. ë„ì„œ 특징(ì±… 표지 글)
성공하는 프로그래머를 위한 ì¸ìƒ ì „ëžµ 특강
소프트웨어 업계ì—ì„œ ì·¨ì§í•˜ëŠ” 방법, ë†’ì€ ìžë¦¬ë¡œ 올ë¼ê°€ëŠ” 방법, 최고 ìžë¦¬ë¡œ 가는 방법처럼 프로그래머로 ê²½ë ¥ì„ ì‹œìž‘í•˜ëŠ”ë° í•„ìš”í•œ ì •ë³´ê°€ ëª¨ë‘ ë‹´ê²¨ 있다. í•™ì ì„ 잘 받거나 코드를 잘 짜는 것만으로는 성공하지 못하며, 리ë”ì‹­, 팀 관리, ì¸ê°„ 관계, 성장 역량, 제안서 작성법, ë°œí‘œì˜ ê¸°ìˆ , 시간 관리, ì¼ê³¼ ì‚¶ì˜ ê· í˜•, 소프트웨어 개발 방법론, 품질 관리와 ê°™ì€ ë‹¤ì–‘í•œ ì—­ëŸ‰ì´ ì„±ê³µì˜ ìš”ì†Œìž„ì„ ì„¤ëª…í•œë‹¤.
샘 ë¼ì´íŠ¸ìŠ¤í†¤ì€ IBMì—ì„œ 소프트웨어 아키í…트, ìˆ˜ì„ ê´€ë¦¬ìž, ì„ ìž„ 프로그래머로 20ë…„ê°„ ì¼í•˜ë©° ìˆ˜ë§Žì€ ê¸°ì—…ê³¼ 대학ì—ì„œ 진로, 신기술, ì‹ ê·œ 연구 분야를 지ë„했으며, 소프트웨어 엔지니어를 선발하고 멘토ë§í•˜ëŠ” ì¼ì— ì‹œê°„ì„ ìŸê³  있다. ì €ìžê°€ ê²½í—˜ì„ í†µí•´ í„°ë“í•œ êµí›ˆì„ ì´ ì±…ì— ëª¨ì•˜ë‹¤.

ã€ë…ì  ì¸í„°ë·°ã€‘
스티브 워즈니악 _애플 ì»´í“¨í„°ì˜ ì•„ë²„ì§€
제임스 ê³ ìŠ¬ë§ _ìžë°”ì˜ ì•„ë²„ì§€
마리사 ë©”ì´ì–´ _ì „ 구글 부사장, 현 야후! CEO
ì¡´ 슈왈츠 _ì „ 비즈니스 오브ì ì¸  CEO, 현 Visier CEO
리누스 토르발스 _리눅스 ìš´ì˜ì²´ì œ 커ë„ì˜ ì°½ì‹œìž
ë°ì´ë¹„ë“œ 바스케비치 _마ì´í¬ë¡œì†Œí”„트 CTO
리차드 스톨만 _ìžìœ  소프트웨어 ìš´ë™ ì°½ì‹œìž
피터 노빅 _구글 연구본부장
ë§ˆí¬ ë£¨ì‹œë…¸ë¹„ì¹˜ _마ì´í¬ë¡œì†Œí”„트 펠로우 ë° ìœˆë„ ì•„í‚¤í…트
ì¡´ 벤틀리 _『ìƒê°í•˜ëŠ” 프로그래ë°ã€ì˜ ì €ìž
톰 ë©€ë¡œì´ _ì–´ë„비 시스템즈 최고 소프트웨어 아키í…트
ë§ˆí¬ ë² ë‹ˆì˜¤í”„ _세ì¼ì¦ˆí¬ìŠ¤ë‹·ì»´ CEO
다ì´ì•¤ 그린 _VMware ê³µë™ì„¤ë¦½ìž, ì „ CEO
그래디 부치 _IBM 펠로우, ëž˜ì…”ë„ ì†Œí”„íŠ¸ì›¨ì–´ ê³µë™ì°½ì—…ìž
로버트 칸 _ì¸í„°ë„· ê³µë™ ë°œëª…ìž
ë ˆì´ í†°ë¦°ìŠ¨ _ì´ë©”ì¼ ì°½ì‹œìž
비야네 스트롭스트룹 _C++ì˜ ì•„ë²„ì§€

ã€ìš°ë¦¬ê°€ 개발ìžë¡œ 살아가는 ì´ì•¼ê¸°ã€‘
í•œìƒë ¬ _지방대 대학ìƒì˜ BPC 수ìƒê¸°
김민장 _유학ìƒì˜ 미국 소프트웨어 엔지니어 êµ¬ì§ ì¸í„°ë·°
ì´ì—°ë³µ _ì¢Œì¶©ìš°ëŒ ìŠ¤íƒ€íŠ¸ì—… ìƒì¡´ê¸°
서민구 _í”„ë¡œê·¸ëž˜ë¨¸ì˜ ê³µë¶€
ì´ì°½ì‹  _길고 구부러진 길
백창우 _엔지니어가 실수하는 것들
ë³€ì¢…ì› _대한민국ì—ì„œ ë‚˜ì´ ë§Žì€ ê°œë°œìžê°€ 살아남는 법
유ì˜ì°½ _어떻게 프로그래머로 살까?
ë°•ì˜ì£¼ _우연히 시작한 개발ìžì˜ 꿈, ì•„ì§ë„ 진행형

관리ìžë‚˜ ê²½ì˜ì§„ ì¤‘ì— í”„ë¡œê·¸ëž˜ë°ì„ ì¡°…(하략)

[ì¸í„°ë„· êµë³´ë¬¸ê³  제공]

ì±…ì†ìœ¼ë¡œ

관리ìžë‚˜ ê²½ì˜ì§„ ì¤‘ì— í”„ë¡œê·¸ëž˜ë°ì„ 조립 ë¼ì¸ì—ì„œ 하는 ì €ìˆ˜ì¤€ì˜ ì—…ë¬´ë¡œ 치부해 버리려는 ì‚¬ëžŒì´ ë„ˆë¬´ 많아요. – 비야네 스트롭스트룹

어려운 ê±´ 마찬가지예요. 다른 ë„구를 ì“°ê³  다른 ê°ì²´ë¥¼ ì“°ê³  다른 í”„ë¡œê·¸ëž˜ë° ì—”í‹°í‹°ë¥¼ ì“°ê³  다른 언어를 ì¨ë„ ê²°êµ­ì€ ê·¸ê²Œ 그거죠. 여전히 아귀가 잘 안 맞는 ê²ƒì„ ë§žì¶”ëŠ” ë°©ë²•ì„ ì°¾ì•„ë‚´ì„œ 조립하는 ì¼ì„ 해야만 하는 ê²ë‹ˆë‹¤. – ë ˆì´ í†°ë¦°ìŠ¨

í°ë¬¼ì—ì„œ 노는 게 중요합니다. 혼ìžì„œ 배우거나 ì´ë£° 수 있는 수준ì—는 한계가 있어요. 누구든 ì£¼ë³€ì— ìžˆëŠ” ë™ë£Œì˜ í‰ê·  ì •ë„ë§Œí¼ ì„±ìž¥í•˜ê²Œ 마련ì´ê¸° ë•Œë¬¸ì— í›Œë¥­í•œ ë™ë£Œê°€ 있는 게 중요합니다. – 피터 노빅

“목표를 높게 ìž¡ì•„ë¼â€, â€œí° ê¿ˆì„ ê°€ì ¸ë¼â€ ê°™ì€ ë§ì€ 전부 쓸ë°ì—†ëŠ” 소리ë¼ê³  ìƒê°í•´ìš”. ë‹¨ë²ˆì— ë†’ì€ ê±´ë¬¼ì„ ë›°ì–´ë„˜ì„ ìˆ˜ëŠ” 없어요. í•œ 계단 í•œ 계단씩 올ë¼ê°€ì•¼ 하죠. – 리누스 토르발스

전문 분야를 공부하러 ëŒ€í•™ì— ì§„í•™í•˜ì§€ë§Œ, ì •ìž‘ 대학ì—서는 쓸ë°ì—†ëŠ” 것만 잔뜩 가르친다. 안타ê¹ê²Œë„ í•™êµì—ì„œ 배우는 전형ì ì¸ êµìœ¡ê³¼ 성공ì ì¸ ì§ìž¥ìƒí™œì— 필요한 역량 사ì´ì—는 ìƒë‹¹í•œ ê°„ê·¹ì´ ìžë¦¬í•˜ê³  있다. – 샘 ë¼ì´íŠ¸ìŠ¤í†¤

í•™êµëŠ” ì—…ë¬´ëŸ‰ì´ ìƒëŒ€ì ìœ¼ë¡œ 잘 제어ë˜ê³ , 모든 참가ìžê°€ 유사한 ê²ƒì— ë„전하고, 다들 ê°ìž 단ë…으로 ì¼í•˜ëŠ” ê²ƒì´ ë°”ëžŒì§í•˜ê²Œ 여겨지는, ê³ ë„ë¡œ ì¸ìœ„ì ì¸ 환경ì´ë‹¤. í•™êµì—서는 ê°ìž 단ë…으로 ì¼í•´ì•¼ 하며 ê·¸ ê·œì¹™ì„ ì§€í‚¤ì§€ 않으면 퇴학당하거나 심한 ì§ˆì±…ì„ ë°›ëŠ” 반면ì—, 회사ì—서는 í•­ìƒ â€íŒ€ì›Œí¬â€ë¥¼ 우선해야 한다. í•™êµì—서는 개개ì¸ì˜ 노력으로 ì„±ê³µì´ ê²°ì •ë˜ì§€ë§Œ, 회사ì—ì„œ 팀워í¬ëŠ” 매우 í° ìš”ì†Œë¡œ 작용한다.— 「3장 í•™êµëŠ” ì–´í•­ì´ë‹¤ã€

소프트웨어 ê°œë°œìž ìžë¦¬ë¥¼ ì›í•˜ëŠ” 지ì›ìžë“¤ì˜ ì´ë ¥ì„œëŠ” ê±°ì˜ ëŒ€ë™ì†Œì´í•˜ë‹¤. 다들 ìš´ì˜ì²´ì œ, ìžë£Œêµ¬ì¡°, 알고리즘 ìˆ˜ì—…ì€ ë“£ê²Œ 마련ì´ë‹¤. ìžë°”, C, C++ ê°™ì€ í•µì‹¬ í”„ë¡œê·¸ëž˜ë° ì–¸ì–´ë„ ë‹¤ë“¤ 안다. 기계어 프로그래ë°, TCP/IP ê°™ì€ ê²ƒë„ ê°œë¡  ìˆ˜ì¤€ì˜ ìˆ˜ì—…ì€ ë‹¤ë“¤ 듣는다.— 「4장 ì‹ ê·œ ì·¨ì—…ìž ì´ë ¥ì„œì˜ 현실ã€

ì‹ ìž… 사ì›ìœ¼ë¡œì„œ ì •ë§ ë†€ëž„ 만한 ë¶€ë¶„ì€ ë°”ë¡œ 트레ì´ë“œí¬ëž˜í”„트(tradecraft) 스킬ì´ë‹¤. 여기서 “트레ì´ë“œí¬ëž˜í”„트â€ëž€ 본질ì ìœ¼ë¡œ 매우 전문ì ì¸ 스킬임ì—ë„ í•™êµì—서는 ìžì„¸ížˆ 가르ì³ì£¼ì§€ 않는 ê²ƒì„ ëœ»í•œë‹¤.— 「5장 트레ì´ë“œí¬ëž˜í”„트ã€

(관리, ê²½ì˜ ë°©ë©´ì—ì„œ) 그나마 잘하는 ê²ƒì„ í•˜ë‚˜ 꼽으ë¼ë©´, 저는 다른 사람한테 ì–´ë–¤ ì¼ì„ 하ë¼ëŠ” 얘길 잘 안 하는 편ì´ì—ìš”. 누군가가 ìžê¸°ê°€ 설계한 걸 가지고 ì™”ì„ ë•Œ 뭔가 문제가 있다는 ìƒê°ì´ 들면 “여기 ì´ê²Œ 문제가 있는 것 같네요.â€ ê°™ì€ ì‹ìœ¼ë¡œ 얘기하지 않습니다. 그러면 ë°©ì–´ì ì´ ë˜ê±°ë“ ìš”. 그럴 때는 그와 ê´€ë ¨ëœ ì§ˆë¬¸ì„ ë˜ì§€ê³  본ì¸ì´ 스스로 “아, 그게 좀 문제가 있겠네요.â€ë¼ê³  깨닫ë„ë¡ ìœ ë„합니다. — 「16장 업무지시 방법ã€

[YES24 제공]

2013ë…„ 3ì›” 25ì¼
by aduris
1 Comment

Free Mobile UI Kits and Website Wireframes Templates

Free Mobile UI Kits and Website Wireframes Templates

User interface kits are much more commonplace today than in previous years. Designers love to use pixel-perfect graphics when creating layout mockups or wireframes. This is especially true when it comes to mobile apps and mobile website layouts.

I have gone through Dribbble shots looking to collect all of the best freebie UI kits and wireframes. These include buttons, switches, forms, and a slew of other handy graphics. All of the freebies are offered in PSD or AI format and you can generally find the download links in the first comment. Be sure to check out a few examples and see if you can apply these GUI kits into your next project.

iOS/Browser Frames

iPhone iPad wireframes kit freebie

iPhone4 PSD

black white iPhone4 PSD model

iPhone UI PSD

iPhone custom blue texture tabbar interface kit

Wireframe/Blueprint Kit

wireframing blueprint kit design freebie download

Printable iPhone5 Templates

print iPhone 5 wireframe template sketches

Clean Wireframe Kit

clean white minimalist user interface kit elements

Free Calendar PSD

mobile calendar user interface kit freebie

Toggle Switch UI

freebie PSD switches download mobile iPhone interface

Slimer PSD UI Kit

green slimer user interface kit freebie

UI Design Mini Nav

mini icons navigation PSD freebie download

Icons Template

freebie iPhone icons homepage screen template wireframe

iPhone Sketches AI

iPhone app prototyping wireframes kit

Soft User Interface Kit

soft ui kit freebie download retina display

Dark Slider UI PSD

freebie PSD download slider knobs dribbble shot

iPhone Golden Ratio Grid System

free psd download iPhone grid system rule of thirds

Minimal Light User Interface

white minimalist ui kit design freebie

iOS Toggle PSD

freebie psd ios iphone icon switches

Free iPhone UI PSD

iphone cash register screen numbers input ios

Stopwatch

freebie iPhone psd user interface

iPhone4 Vector Illustration

freebie Illustrator vector artwork design

Light GUI Switches

graphical user interface mobile ios interface

Slider UI PSD

mobile iPhone slider user interface psd

Galaxy S III PSD

freebie Android devices Samsung Galaxy psd template

Android 4.0 UI

Android smartphone 4 user interface graphics

App Icon Freebie

free download psd app icon template outdoors

ICS Power Control

Android mobile user interface psd freebie

Login Freebie

iPhone iOS mobile user interface login screen

Mobile Downloads

user interface kit downloads freebie psd

iOS Retina Slider

iPhone iOS retina display graphics slider bar

Blue UI Kit

freebie psd user interface kit design

Bright Grey UI Kit

freebie downlaod user interface psd

Black UI Kit

black user interface kit design freebie psd

Magico UI Kit PSD

purple user interface kits design

Clean UI Kit

user interface clean elements kits

Lavender UI Kit

purple lavender user interface kit design freebie

Clean UI Kit Freebie

orange bright dark user interface kit elements

Smooth User Interface

mobile design user interface setup freebie psd

iOS SMS GUI Template

iPhone iPad texting iMessage sms template graphics

Mobile App Dashboard

mobile design user interface freebie psd

Path for iPad GUI PSD

iOS App Store Interface Path social network

Final Thoughts

As more designers are releasing freebies on the web it will be difficult to keep up. But don’t let yourself fall behind just because of data overload! This collection of UI kits is the perfect first step towards creating your next mobile app or responsive website layout. Be sure to keep searching around the web for new releases to find the best user interface kits for your needs.

Proudly powered by WordPress | Theme: Yoko by Elmastudio

Top