2015년 5월 27일 수요일

훌륭한 프로그래머가 더 훌륭해지기 위한 방법 - 4단계

전문적인 개발자가 될수 있도록 노력한다.

훌륭한 프로그래머는 더 훌륭해지기 위한 방법을 지속적으로 찾는다. 우리 회사와 다른 회사에서는 다음과 같은 전문적인 개발 단계들을 고려한다.


1단계 초보자란 한가지 언어의 기본적인 기능들을 사용할 수 있는 프로그래머를 말한다. 초보자는 클래스와 루틴, 루프, 조건문을 작성할 수 있으며 해당 언어의 많은 기능들을 사용할 수 있다.

2단계 입문 초보 단계를 넘어온 중급 수준의 프로그래머는 여러 언어의 기본적인 기능들을 사용할 수 있으며 적어도 한 가지 언어를 능숙하게 다룬다.

3단계 유능한 프로그래머는 한 가지 언어나 환경 또는 둘 다에 전문적 기술을 갖고 있다. 이 단계에 있는 프로그래머는 J2EE의 모든 복잡한 부분들을 알고 있거나 Annotated C++ Reference Manual을 암기하고 있을 것이다. 이 단계에 있는 프로그래머들은 회사에서 중요한 위치에 있게 되는데, 많은 개발자들이 이 단계를 넘어서질 못한다.

4단계 리더는 3단계 프로그래머에 대한 전문적인 지식을 갖고 있다. 그리고 프로그램에서 컴퓨터와의 의사 소통은 오직 15%뿐이며 85%가 사람과의 의사 소통임을 알고 있다. 일반적인 프로그래머는 30% 정도만 혼자서 일한다(McCue 1978). 심지어는 그보다 더 적은 시간을 컴퓨터와 작업하는 데 보낸다. 전문가는 기계보다는 사람을 위해서 코드를 작성한다. 진정한 전문가 수준의 프로그래머는 보석처럼 명확한 코드를 작성하며 문서화한다. 그들은 한 줄의 주석으로 표현하여 이해할 수 있는 코드의 로직을 재작성하느라 머리를 쓰고 싶어하지 않는다.


"어떤 바보라도 자신의 실수에 대해서 정당성을 주장할 수 있으며 
대부분의 바보들이 그렇게 한다."   
- Dale Carnegie -


"전체 개발시간의 10%가 코드 작성의 90%를 차지하며, 
나머지 10%가 개발시간의 90%를 차지한다"  
- Tom Cargill -



출처: CODE COMPLETE SECONDE EDITION, Part7 소프트웨어 장인정신 p1126    - 스티브 맥코넬 저 -

파이썬에서 한글 사용하기

한글이 들어있는 파이썬 소스를 윈도우 커맨드 창(또은 리눅스 쉘)에서 그냥 실행하면 이런 에러가 뜨게 된다.

E:\python>python int2base.py
  File "int2base.py", line 11
SyntaxError: Non-ASCII character '\xc5' in file int2base.py on line 11, but no encoding declared; see http://www.python.org/peps/pep-0263.html for details

이때는 파이썬 소스의 처음부분(1,2번째줄)에 # -*- coding: cp949 -*-  을 추가하면 된다.

추가로 유닉스 계열 운영체제를 사용할때는 #!/usr/bin/python를 첫줄에 붙이면 실행파일 속성을 주고 바로 파이썬코드를 실행할수 있다.

2015년 5월 14일 목요일

구글블로거(Blogger)에 Syntax Highligher 추가하기

요즘 티스토리에서 구글블로그로 넘어와서 포스팅을 시작했는데, Syntax Highlighting 기능이 없어서 일반 텍스트로 넣었었는데, 혹시나 하고 검색해보니 역시나 해결방법이 있었다.
기본적으로 SyntaxHighlighter.css 파일과 js 파일들을 등록해놓고 사용할 수 있다.

SyntaxHighlighter.css 파일 입력

1) 디자인 -> HTML편집 -> <b:skin></b:skin> 사이에 입력
2) 디자인 -> 템플릿디자이너 -> 고급 -> CSS추가 에 입력



JS 파일 인클루드

<head></head> 사이에 입력.
</head> 태그 바로 앞에 입력하면 된다.



스크립트 붙여넣기

<body></body> 사이에 입력.
</body> 태그 바로 앞에 입력하면 된다.



사용하기

글쓰기할때 HTML 편집모드로 해서 pre나 textarea 태그로 감싸면 된다.

참고로, HTML 코드를 넣기 위해서는 "<" 를 "&lt;", ">" 를 "&gt;" 로 변경하고 입력하면 된다.


지원언어

class 속성값으로 입력할 수 있는 언어
언어class
C/C++cpp, c, c++
C#c#, c-sharp, csharp
CSScss
Delphidelphi, pascal
Javajava
Java Scriptjs, jscript, javascript
PHPphp
Pythonpy, python
Rubyrb, ruby, rails, ror
Sqlsql
VBvb, vb.net
XML/HTMLxml, html, xhtml, xslt



출처: http://anshnote.blogspot.kr/2011/07/syntax-highlighter-blogger.html?showComment=1431567335717#c3433844348594219144

해외송금을 위한 시티은행 영문 계좌정보

해외송금을 위해서는 기본적으로 은행계좌의 영문정보가 필요하다. 여기서 중요한 게 SWIFT 코드인데 이 코드를 통해 은행으로 직접적인 송금이 이루어 진다고 한다.

예전에 만들어 둔 한국시티은행 계좌에 대한 정보이다.

은행명: CITIBANK KOREA INC
주소: #24, CHUNGGAECHEONRO, JUNG-GU, SEOUL, KOREA 100-180 C.P.O. Box 3949
SWIFT: CITIKRSX
IBAN: 한국시티은행은 IBAN 이나 short 코드 대신에 SWIFT 를 사용함. 입력할 필요 없음.


아래는 우리나라 은행들에 대한 SWIFT 코드표이다.
IDBank or InstitutionCityBranchSwift Code
1AGRICULTURAL BANK OF CHINA SEOUL BRANCHSEOULABOCKRSE
2AUSTRALIA AND NEW ZEALAND BANKING GROUP LIMITEDSEOULANZBKRSX
3BANCO BILBAO VIZCAYA ARGENTARIA SA.SEOULBBVAKRSE
4BANK OF AMERICA, N.A. SEOUL BRANCHSEOULBOFAKR2X
5BANK OF CHINA SEOUL BRANCHANSAN(ANSAN BRANCH)BKCHKRSEANS
6BANK OF CHINA SEOUL BRANCHDAEGU(DAEGU BRANCH)BKCHKRSEDAE
7BANK OF CHINA SEOUL BRANCHINCHEON(INCHEON BRANCH)BKCHKRSEICN
8BANK OF CHINA SEOUL BRANCHSEOUL(GURO BRANCH)BKCHKRSEGRO
9BANK OF CHINA SEOUL BRANCHSEOUL(GURO BRANCH)BKCHKRSEGUR
10BANK OF CHINA SEOUL BRANCHSEOULBKCHKRSE
11BANK OF COMMUNICATIONS CO. LTD SEOUL BRANCHSEOUL(SEOUL BRANCH (RMB CLEARING BANK))COMMKRSE888
12BANK OF COMMUNICATIONS CO. LTD SEOUL BRANCHSEOULCOMMKRSE
13BANK OF KOREASEOULBOKRKRST
14BANK OF KOREA, THESEOULBOKRKRSE
15BANK OF NOVA SCOTIA, THE, SEOUL BRANCHSEOULNOSCKRSE
16BANK OF TOKYO-MITSUBISHI UFJ, LTD., THESEOUL(SEOUL BRANCH)BOTKKRSX
17BARCLAYS BANK PLC, SEOUL BRANCHSEOULBARCKRSE
18BNP PARIBAS SEOUL BRANCHSEOULBNPAKRSE
19BUSAN BANKBUSANPUSBKR2P
20BUSAN BANKMASAN(MASAN BRANCH)PUSBKR2PMAS
21BUSAN BANKSEOUL(INTERNATIONAL DEPARTMENT SEOUL)PUSBKR2PINT
22BUSAN BANKSEOUL(SEOUL BRANCH)PUSBKR2PSEL
23CHEIL INDUSTRIES INC.UIWANG-SICIISKR22
24CHEIL WORLDWIDE, INCSEOULCIWWKRSE
25CHINA CONSTRUCTION BANK SEOUL BRANCHSEOULPCBCKRSE
26CITIBANK KOREA INCSEOUL(WORLDLINK OPERATION)CITIKRSXWLS
27CITIBANK KOREA INCSEOULCITIKRSX
28CONSTRUCTION GUARANTEE COOPERATIVESEOULKCGCKRSE
29CREDIT AGRICOLE CIBSEOULCRLYKRSE
30CREDIT SUISSE AG, SEOUL BRANCHSEOULCRESKRSE
31CREDIT SUISSE SECURITIES (EUROPE) LIMITED, SEOUL BRANCHSEOULCSFBKRSE
32DAEGU BANK, LTD.,THEDAEGUDAEBKR22
33DAEGU BANK, LTD.,THESEOULDAEBKR22SEL
34DAEWOO SECURITIES CO., LTD.SEOULDWSEKRSE
35DAIMLER TRUCKS KOREA LTD.SEOULDTKRKRSE
36DAISHIN SECURITES CO., LTDSEOULDSSCKRSE
37DBS BANK LTD, SEOUL BRANCHSEOUL(SEOUL BRANCH)DBSSKRSEIBD
38DBS BANK LTD, SEOUL BRANCHSEOULDBSSKRSE
39DEUTSCHE BANK AG, SEOUL BRANCHSEOULDEUTKRSE
40DEUTSCHE BANK AG, SEOUL BRANCHSEOULDEUTKRSEF4C
41ELAND WORLD LIMITEDSEOULELGTKRSE
42GOLDMAN SACHS (ASIA) L.L.C. SEOUL BRANCHSEOULGSALKRSE
43GOLDMAN SACHS INTERNATIONAL BANK, SEOUL BRANCHSEOULGSIBKRSE
44HANA BANKSEOULHNBNKRSE
45HANA BANKSEOULHNBNKRSETCS
46HANA DAETOO SECURITIESSEOULHNDTKRSE
47HANWHA LIFE INSURANCESEOULHWLIKRSE
48HONGKONG AND SHANGHAI BANKING CORPORATION LIMITED, THEBUSAN(BUSAN BRANCH)HSBCKRSEBSN
49HONGKONG AND SHANGHAI BANKING CORPORATION LIMITED, THESEOULHSBCKRSE
50HONGKONG AND SHANGHAI BANKING CORPORATION LIMITED, THESEOULHSBCKRSEC
출처: http://www.theswiftcodes.com/south-korea/

2015년 5월 13일 수요일

“Unmappable character for encoding UTF-8” 에러 대처 방법

오류사항

Android Studio 를 설치하고 몇년전에 이클립스로 만들었던 안드로이드 어플소스를 간만에 내려받아서 업데이트하려고 컴파일을 하니 아래와 같은 에러가 발생했다.
Error : Unmappable character for encoding UTF-8
여기저기 구글링을 해서 찾아보니깐, 한글인코딩이 인식을 못해서 발생하는 오류라고 한다. 그래서 좀더 찾아보니, 아래와 같은 해결책이 있었다.

해결방법

Android Studio 에서의 파일인코딩이 한글지원을 못해서 그런거라고 하는데, 정확한지는 좀더 찾아봐야 할 것같고, App 의 build.gradle 파일에 아래 라인 하나만 추가하면 해결된다고 한다.



build.gradle(Project 아님) 파일에 위 라인을 추가하면 오류가 사라진다.

오랜만에 안드로이드 개발을 다시하려니, 기억도 잘 안나고 Android Studio 라는 놈이랑도 친해져야 해서 마음만 급하고 진도는 잘 나가지 않는다. 처음 Android Studio 를 접하고 gradle 이라는게 먼지 전혀 감이 안잡혀서 몇 일은 멘붕상태였다. 이제 슬슬 감이 잡히긴 하는데, 여전히 어렵다.

2015년 5월 7일 목요일

구글 엔지니어에 필요한 11가지 기술에 대한 칼럼을 읽고

구글 엔지니어에 필요한 11가지 기술에 대한 칼럼을 읽었는데, 유용한 정보인것 같아서 블로그에 남겨놓는다.

  1. 컴퓨터 과학 기초분야 습득
  2. 하나 이상의 객체지향 프로그래밍 언어: C++, 자바, 파이썬
  3. 다른 프로그래밍 언어: 자바스크립트, CSS, 루비, HTML
  4. 자신의 코드를 테스트
  5. 이론수학
  6. 자료구조 및 알고리즘 이해: 큐, 스택, 그래프정렬, 퀵정렬, 머지정렬, 힙정렬 등
  7. 운영체제에 대한 이해
  8. AI 에 대한 이해
  9. 컴파일러에 대한 이해
  10. 암호화
  11. 병렬 프로그래밍

이중에서 단 몇가지라도 갖춰놓아야 하겠지만 항상 생각 만으로 끝나는 것 같다. 

그리고, 이렇게 나열해보니 내자신이 개발자라고 하기엔 너무나도 많이 부족하다는 생각이 든다. 또한, 지금 개발자로서의 기본적인 소양도 갖춰지지 않은 상태에서 기획까지 손대고 있다. 그러면서 필연적으로 찾아오는 개발/기획에 대한 정체성도 흔들리면서 무엇 하나 제대로 못한다는 자괴감마저 들고 장기적인 슬럼프에 빠져있다.

어제 임백준님의 칼럼에서 본 내용중에 폴리그랏 프로그래머에 대한 내용이 나왔는데, 본인이 잘하는 그리고 사용하는 한가지 언어만 깊게 파고드는게 아니라 여러가지 언어를 골고루 사용할줄 아는게 요즘 프로그래머 트렌드라고 한다. 

“앞으로 프로그래머는 어느 하나의 언어에 안주할 수 없다. 패러다임을 달리 하는 여러 개의 언어를 자유롭게 구사하지 않으면 살아남을 수 없는 폴리글랏 프로그래밍의 시대가 되었기 때문이다. 자신의 포트폴리오를 어떤 언어로 구성하는지는 각자의 몫이다. 하지만 앞으로는 프로그래머가 어떤 언어에 대해서 얼마나 많이 알고 있는가 하는 것이 아니라 어떤 언어를 얼마나 빠르게 학습할 수 있는가 하는 것이 더 중요하다는 점을 기억하기 바란다.” 

또한 요즘 통섭형 인재(인간중심의 기술이 중요해지는 트렌드에 맞춰 인문학적 소양과 기술에 대한 이해를 동시에 갖춘 인재)라는 말이 많이 나오는데 개발자에게 있어서 통섭의 다른 이름은 폴리그랏이다. 서로 다른것들이 합쳐지면서 새로운 활로를 개척하는 것이 통섭이다.

폴리그랏, 통섭형 인재, 그리고 위에서 언급한 11가지 필요기술

현재 내가 추구해야 할 커리어패스에 가장 부합해 보인다.
그리고 그중에서 가장 중요하고 필요한 실행력

출처: http://techholic.co.kr/archives/30399?utm_source=twitterfeed&utm_medium=facebook

2015년 5월 1일 금요일

성공을 막는 13가지 작은 습관

  1. 맞춤법 실수
  2. 행동보단 말
  3. 성급한 결정
  4. 불평불만
  5. 허풍떨기
  6. 남 탓하기
  7. 요령찾기
  8. 열정있는 척
  9. 목적없이 살기
  10. 부탁 다 들어주기
  11. 인생을 쉽게 생각
  12. 생각없이 행동
  13. 현실부정