누가 봐도 감탄할 만한 한줄의 코드.


'Hello, world'


완벽한 코드를 향해 노력하는 프로그래머, 코드 디자이너가 되기 위해 노력하자.




바텐더
카테고리 만화 > 직업만화
지은이 Joh Araki(조 아라키) (학산문화사, 2006년)
상세보기


신의물방울.28
카테고리 만화 > 직업만화
지은이 TADASHI AGI (학산문화사, 2011년)
상세보기


'신의 글라스', '신의 물방울'을 보다가 뻘생각.


var telValidate = function(event) {
    var key = window.event ? event.keyCode : event.which;
    //alert(key);
    var keychar = String.fromCharCode(key);
    //alert(keychar);
    var reg = /[0-9]/;
    //alert(reg.test(keychar));
    return reg.test(keychar);
};




HTML5 에서 input 의 type attribute value 로 'tel'가 있다(참고 : http://www.w3schools.com/html5/tag_input.asp). 모바일 브라우저 상에서 input에 포커싱이 되면 숫자패드가 떠오르고,'(, ), -' 만 입력이 가능해진다. 일반 부라우저에서야 뭐... ㅡ_-);;


자바스크립트(아니 프로그래밍 언어)에서 중요한 것 중 하나는

 '정규 표현식(Regular expression)'을 제대로 이해하고 활용하는 것.


아직 정규식은 어렵구나. 빠른 시일 내에 정규식에 대해서 정리를 한번 싸악 해봐야겠다.

도메인주도설계소프트웨어의복잡성을다루는지혜
카테고리 컴퓨터/IT > 네트워크/보안
지은이 에릭 에반스 (위키북스, 2011년)
상세보기

목차마인드맵을 그려두는 것도 책의 흐름을 이해하는 데 꽤 도움이 된다.

  이전에 코드에 임포트한 패키지들을 정리하는 실장님을 보면서 

  '왜 임포트된 패키지를 .* 으로 정리하는건가요?' 

라고 물었다가 답을 들었던 기억이 흐릿해질 때쯤, 이 책을 읽다보니 나오기에 그 기록을 남긴다.

도메인주도설계소프트웨어의복잡성을다루는지혜
카테고리 컴퓨터/IT > 네트워크/보안
지은이 에릭 에반스 (위키북스, 2011년)
상세보기

자바에서는 의존성에 해당하는 임포트 구문(import)을 반드시 개별 클래스에 선언해야 한다. 모델링하는 사람들은 아마 패키지를 다른 패키지에 대한 의존성으로 생각하겠지만, 자바에서는 꼭 그렇지만도 않다.
널리 통용되는 코딩 관례에서는 개별 클래스에 대해 임포트 구문을 작성할 것을 권장하므로 코드는 아래와 같이 작성할 것이다.

import packageB.ClassB1;
import packageB.ClassB2;
import packageB.ClassB3;
import packageC.ClassC1;
import packageC.ClassC2;
import packageC.ClassC3;
...
아쉽게도 자바에서는 개별 클래스에다 임포트할 수밖에 없지만 적어도 한 번에 전체 패키지를 임포트할 수는 있다. 이렇게 하면 패키지명을 일제히 변경하는 노력도 줄어들면서 패키지가 대단히 응집력 있는 단위라는 의도가 반영되기도 한다.

import packageB.*;
import packageC.*;


사실 이 기법은 두 가지 척도(패키지에 의존하는 클래스)를 혼용한다는 것을 의미하지만 앞서 나온 클래스 목록을 나열한 것 이상, 즉 특정 Module에 대한 의존성이 만들어진다는 의도를 전해주기도 한다.


Racing Stars
Racing Stars by Andrew Stawarz 저작자 표시변경 금지


자바에서는 패키지단위로 클래스를 작성하고 관리하지만, 이것을 실제로 모듈화하여 관리하지는 않는다. 서로다른 모듈이라 하더라도, 사용할 때에는 실제적으로 내부적인 동일한 경로의 선상에 놓이게 된다. 이때문에 이클립스를 비롯한 IDE 에서는 관례적으로 임포트되는 클래스의 패키지 경로를 명시하는 형태로 나타난다. 

실제로 임포트 되는 것은 패키지내에 클래스들이겠지만, 

import pacakges.*;

문을 통해서 해당하는 패키지가 응집력있게 사용되는 것이라는 설명을 명시화할 수가 있다.


  준비가 많이 부족한 상황에서 '모바일 사이트'를 구축하는 프로젝트에 투입된지 4개월 정도 되어간다. 

스프링(http://www.springsource.org/), iBatis, 스프링시큐리티(http://static.springsource.org/spring-security/site/index.html), 프리마커(http://freemarker.sourceforge.net/), jQuery(http://jquery.com/) mobile(http://jquerymobile.com/), 메이븐(http://maven.apache.org/), 허드슨(http://wiki.hudson-ci.org/dashboard.action) ... 등등의 다양한 프레임워크와 템플릿 엔진, UI 프레임워크들을 아우르며 사용할 수 있는 경험을 얻게 되었다.

  @_@) 경험이 많이 부족하다보니, 짧고 많은 일을 해야하는 프로젝트 안에서 제대로 이해하고 적용하는 것에 문제가 좀 많다. ^^; 이런 상황 속에서 작성한 프로그램 코드들을 보면 불필요하거나 중복되는 기능이 겹치는 경우가 종종 발생한다. 

어제 코드 다르고, 오늘 코드 다르고, 내일 코드가 다르다.

랄까? 그래도 조금씩 자바라는 프로그래밍 언어가 가지고 있는 특징들에 대해서 느껴가는(알아가는이 아니고!?) 단계에 들어섰다고 생각합니다. 그동안 얼마나 내가 프로그래머로서의 이해능력과 자각이 부족했는지 여실히 깨닫게 되는 경험을 얻고 있다. 


  이번 프로젝트에서는 3개의 회사가 함께 진행되고 있다. 이 프로젝트에서 제일 중요한 것 중 하나는 '협.업(Cowork)' 이다. 

  나는 SI 프로젝트 경험이 그리 많지가 않다. 이번 프로젝트에서 아쉬운 부분이 있다면, 3개의 회사간의 협력이 잘 이루어지고 있지 않다는 점이랄까? 7월에 들어서면서 개발에 한창 속도를 올려야하는 상황인데 불협화음과 함께, 여러가지 요소에서 지연되는 상황들이 발생하면서 프로젝트의 진행상황도 지연되고 있는 상황이 아닐까라고 짐작하고 있다. 프로젝트에 대한 경험이 부족한 내가 딱 '이래서 늦어'라고 말할 수는 없다. 


  요즘 '무한도전'에서 조정을 하고 있는데, 계속 보면서 느끼는 거지만, 지금 팀 내에서 내 모습과 '현재 조정을 하면서 민폐라고 스스로 느끼고 있는 정형돈'의 모습이 겹쳐지고 있다. 개발경험은 부족하고... 개인적인 노력도 부족한... 부족한게 많은 초보 개발자다. 배워야할 것도 많고 알아야할 것도 많고 익혀야할 것도 참 많다.

  서두르지 말고 차근차근 가자.


+ Recent posts