인력이 줄어든다:
2008년 현재
왠만한 자바 개발자는 모두 8~10년차 이상이고, 이 사람들 쓰자니 단가가 너무 높고, 그렇다고 이 사람이 프로젝트 성공시킨다는 보장도 없고.

학원 갓나와서 경력쌓고 싶어하는 인력은 많은데 나도 자바를 모르니 가르치면서 일 시킬 수도 없고,

어디 3~5년차 되면서 프로젝트 안정적으로 성공시킬만한 인력 없을까나

지난 2월 16일 JCO의 자바 개발자 컨퍼런스에 4,000 명정도의 국내 자바개발자들이 모였습니다. 점점 희귀해져 간다는 전산관련 학생들도 있었고, 전국에서 모여든 자바 프로그래밍과 관련있는 사람들이었습니다. 너무 많이 와서 짜증내면서 돌아간 분만 대략 1,000 명 가까이 되지 않나 개인적으로 생각해 봅니다.

이렇듯 아직도 개발자들이 멀쩡히 살아있는데, 왜 없다고 할까요.

이제 고급인력이 되어가는 2000년 전후의 학원출신 개발자들에 대한 대우가 부담스러운 것이 하나.
아웃소싱에서 인하우스 개발로 트렌드가 바뀌고 있기에 떠돌이 용병 개발자보다는 자체 전산인력으로 자리를 잡는 추세가 하나.
네이버, 다음 같은 포털의 자바 플랫폼을 개발표준으로 정하고, 2006년 대비 2~4배 가까이 자바개발자들을 흡수한 것이 하나.
티맥스가 솔루션 사업 외에도 SI 사업도 손을 뻗쳐서 블랙홀처럼 JEE관련 인력을 빨아들인 이유가 하나.
죽었다 깨어나도 공돌이가 잘 되어봐야 장영실이지 라는 명분주의의 한국 문화로 대학생들이 프로그래밍을 기피하는 현상이 하나.
MS는 대학교에 무지막지하게 투자를 하나, SunMicrosystems, BEA, 티맥스, IBM 등 자바관련 기업들의 대학생 교육 투자비를 모두 합쳐도 MS 못따라가는 현실에 교수들은 친MS적 커리큘럼을 짤 수 밖에 없는 현실이 하나.

무진장 이유가 많겠죠.

솔직히, 프로그래밍 직업, 어렵습니다.

어제 보낸 메일링리스트 답장이 왔습니다. Sun Microsystems에서 근무하시는 분이십니다. Aaron Houston 님.

그래서 답장 보냈습니다. ㅎㅎ 먼저 한글로 쓰고 번역기 돌렸습니다. 머릿속에 있는 ^^;

답신 내용은 이렇습니다.


고맙습니다.

기대하지 못했던 답장입니다.

이번 컨퍼런스는 한국 개발자들의 축제입니다. 5월에 열리는 자바원 2008 전세계 자바인의 축제인 것처럼요.

양수열 님은 2006년에 옥상훈 님에게 회장자리를 물려주었고, 2008년에는 최상훈 님으로 이어받게 됩니다.

 

조인영 에반젤리트께서 갑자기 아프다는 연락이 와서 이번에 참석을 못하게 됩니다.

그분의 쾌유를 빕니다.

 

한국에서는 엔터프라이즈 프로그래밍 언어로 자바가 주류입니다.

가끔씩 한국의 자바 커뮤니티 소식을 메일링리스트를 통해서 전달하겠습니다.

 

행복하세요.


아래가 진짜...

-------------------------

Thank you, Aaron Houston.

I'm appreciate for your reply that I unexpected.

 

This conference is a big festival for Korean Java Programmers, such as JavaOne 2008 in May for the World Java Programmers.

 

Mr. Sooyeol Yang passed Chairmanship to Mr. Sanghoon Ok in 2006, And Mr. Sanghoon Choi, who is vice chairman now will be the next in this year.

 

Unhappily, Evangelist Inyoung Cho's abrupt sickness make her absence this time.

She was expected to open a new java trend session.

I wish her getting well ASAP.

 

In Korea, many enterprise software projects are based in java technology.

So we train java programmers more and more.

Maybe it's almost 100,000 java programmers in Korea.

 

Now, I was encouraged for your reply.

So, I'll send Korean java community news occasionally.

I've subscribed this mailing list over 3 years. Just reading.

 

Sincerely,

 

Kenu, Heo

82-11-9595-2045

www.okjsp.pe.kr

 

 

-----Original Message-----

From: Aaron.Houston@Sun.COM [mailto:Aaron.Houston@Sun.COM]

Sent: Thursday, February 14, 2008 1:28 AM

To: jug-leaders@jugs.dev.java.net

Subject: Re: [jug-leaders] 9th Korea Java Conference will be open this Saturday.

 

Hello Kenu Heo...

 

And WELCOME to the JUG Leaders mailing list... Give my respects to your

Chairman: Mr. Sooyeol Yang. Good Luck on your Conference this weekend!

 

The Java Community Organization (JCO) is a very large JUG from Korea.

Our Evangelists Inyoung Cho and Sang Shin visit there often. They have a membership of over 8000 Java Developers....

 

Again....Welcome Aboard...Nice to have a representative from your community on this list.

 

 

Cordially,

 

Aaron Houston

Program Coordinator

Java User Groups

Java Champions

Technology Outreach

Sun Microsystems, Inc.

Menlo Park, Ca

 

 

허광남 wrote:

> 

> Hi. Jug-leaders

> 

> I’m Kenu Heo

> 

> I live in South Korea. Owner of JSP/Servlet Community Site,

> www.okjsp.pe.kr <http://www.okjsp.pe.kr> ,

> 

> JCO(www.jco.or.kr <http://www.jco.or.kr>) member site

> 

> This Saturday 16^th , Feb. We will open 9^th Korea Java Conference

> 

> “Enjoy Java! Change the World”

> 

> Site: http://www.jco.or.kr/conference/conferenceInfo9th.jsp

> 

> (sorry for all Korean Languange)

> 

> It’s free enterence, conference book will be sold in about $10 optionally.

> 

> We have 2 keynotes, and 30 sessions.

> 

> Until yesterday evening, about 4,500 korean java developers registered.

> 

> Many vendors sponsor this conference.

> 

> Let’s Enjoy Java! Change the World.

> 

> From South Korea

> 

> Kenu, Heo

> 

> 82-11-9595-2045

> 

> www.okjsp.pe.kr <http://www.okjsp.pe.kr>

> 



영어로 호들갑 떨고 있는 제 자신이 아직 어리게 느껴집니다. ^^; 환갑이 23년 남은 사람이 철없긴...

dev.java.net 이라는 사이트에 jugs.dev.java.net 이라는 그룹이 있습니다.
전 세계의 Java User Groups 의 모임이라고 할 수 있는데, 여기 메일링리스트를 3년째 구독해오고 있었죠. 오늘 처음으로 여기에 메일을 날렸습니다.

Hi. Jug-leaders

I’m Kenu Heo

I live in South Korea. Owner of JSP/Servlet Community Site, www.okjsp.pe.kr ,

JCO(www.jco.or.kr) member site

This Saturday 16th, Feb. We will open 9th Korea Java Conference

“Enjoy Java! Change the World”

Site: http://www.jco.or.kr/conference/conferenceInfo9th.jsp

(sorry for all Korean Languange)

 

Its free enterence, conference book will be sold in about $10 optionally.

We have 2 keynotes, and 30 sessions.

 

Until yesterday evening, about 4,500 korean java developers registered.

Many vendors sponsor this conference.

 

Lets Enjoy Java! Change the World.

 

From South Korea

Kenu, Heo

82-11-9595-2045

www.okjsp.pe.kr

 

세계에 내놓아도 손색없는 행사인데, 그노무 영어 때문에 너무 숨겨진 것 아닌가 생각됩니다.
힘내야죠.

2008년 제9회 JCO 자바컨퍼런스에서 발표할 내용입니다.
대략의 줄거리는 다음과 같습니다.

레거시 코드 관리 전략
허광남
GS이숍

목차
레거시 코드란?
남이 짠 코드 빨리 알아보기
리팩토링 방법
테스트케이스라굽쇼?
인터페이스의 역할
복사할 것인가 상속할 것인가
기능 추가 방법
팀역량

수많은 방법론 중에
개발 방법론은 넘쳐나지만 유지보수에 관한 방법론은 어디에?
소프트웨어의 변경주기는 짧아지고 있다.
웹 비즈니스 애플리케이션은 기민하고 안정적으로 변경하는 것이 관리의 목표

레거시 코드
누군가 나에게 맡겨놓은 코드
자기가 직접 짜지 않은 누군가가 만들어 놓은 코드
많은 의문의 그림자와 중압감을 내포한 코드
얽히고 설킨, 아둔하게 짜놓은, 갈아엎고 싶지만   그럴 자신이 안 생기는 코드

레거시 코드
기능 하나 추가하려면 몇 일 밤 새게 만드는 코드
어느 누구도 선뜻 나서지 않는 코드
손을 대면 댈수록 나락으로 빠져버리는 코드
“차라리 날 죽여줘”라고 절규하게 만드는 코드
개선한다는 생각 자체가 몸서리처지는 코드

남이 짠 코드 빨리 알아보기
들여쓰기 (Indent)
Code Formatter
IDE 코드 네비게이션 기능
- F3
- ctrl+K
- 형광펜

남이 짠 코드 빨리 알아보기
팀원간 용어의 일관성
변수명, 함수명의 기능에 따른 변경
- buy() -> order()
남이 짠 코드 빨리 알아보기
프레임워크 사용시 명명규칙은 절대적
- /order/order.jsp
- /js/order/order.js
- /css/order/order.css
- OrderController.java
- OrderService.java
Open Resources(ctrl+shift+R)
Convention over Configuration

리팩토링 방법
Re + Factor + ing
- 소스(Factor)의 재(Re)구성(ing)
Martin Fowler
- Refactoring, 1999
- 외부 동작은 바꾸지 않으면서    내부 구조를 개선하는 방법

사연 많은 JSP 리팩토링
JSP 파일 하나에 11,000 라인의 코드
7년간 산전화수전화 다 겪은 전설의 코드
그와 결부된 사촌형제 코드들 각각 6,7천라인
1차 프로젝트 Java와 Javascript의 분리
자바스크립트의 분리
객체를 이용하기

자바스크립트의 분리
함수에 파라미터를 통해 전달

자바스크립트의 분리
JSP, Javascript 스파게티 분리
리팩토링 고려사항
소스의 증가
- 선별적 js로딩으로 효율화
보안이슈
- 권한 및 로직 유효성 체크는 이중화 또는 서버단으로 이동
JS캐쉬 이슈
- 자주 변경되는 내용은 jsp 안에서 처리
- js파일에 날짜별 버전
서버단과 클라이언트단 혼재된 로직
- 로직을 단순화하거나 jsp에서 처리하고 분리하지 않는다.

JSP,JS 분리 효과
서버단의 속도 개선효과
  1005.352223 -> 757.8979948

javascript를 잘 하는?전문가가??js 파일을 따로 최적화 작업할 수 있다. (관리 포인트의 전문성 확보)

js 변경시 기존 jsp를 수정하지 않아도 된다.

전체 소스의 가독성과 이해력 향상 (jsp, js)

인터페이스의 역할

복사할 것인가 상속할 것인가

테스트케이스라굽쇼?

Edit & Pray
        vs
Cover & Modify

Backup, Cover Fire!
Acrobatic Net

기능 추가 방법

팀역량
깨진 유리창 비유
코드리뷰, 짝 프로그래밍
- 버그의 최소화
- 코딩 공감대 확장
- 더 이상 겁나지 않는 휴일 전화
낳은 정보다는 기른 정

정리
레거시 코드는 비운의 코드입니다.
좋은 유모를 만나서 제대로 리팩토링하면 버그 없고, 건강하게 자랄 수 있습니다.
함께 키우려면 코드 리뷰, 짝 프로그래밍 등을 이용하면 됩니다.
잘 키운 레거시 코드 하나, 열 개발자 안 부럽다

참고자료
Working Effectively With Legacy Code, Michael C. Feathers, Prentice Hall, 2005
리팩토링, 마틴 파울러, 대청, 2002
소프트웨어 공학의 사실과 오해, Robert L. Glass, 인사이트, 2004
GS이숍 주문리팩토링 보고서, 김현,김현기, GS이숍, 2008

CCL


OKJSP소스를 집과 회사에서 관리를 합니다. CVS update 후 에러가 보여서 확인해봤더니 모처럼만에 CVS Conflict가 났습니다.
아이콘이 이상하게 표시됩니다.

사용자 삽입 이미지



파일을 열어보면 <<<<<<< 표시와 >>>>>>> 표시가 보입니다.
사용자 삽입 이미지

의미상 ======= 을 기준으로 상단부분이 CVS update 이전 로컬에서 고쳐진 부분이고, 아랫부분에 >>>>>>> 1.2 위 까지 CVS 저장소에서 받아온 소스의 변경된 부분입니다. 같은 라인이네요. ^^; 아마도 로컬에서 작업하고 올리지 않고, 퇴근 후 작업해서 올렸기 때문에 회사에서 소스를 다시 동기화하니 발생한 문제 같습니다. null로 작업했는데, 그냥 writer로 굳혀버렸죠.


수정하는 방법은 다음과 같이 불필요한 부분을 다 지워주고, 에러가 없도록 정리해 줍니다. 그리고 커밋을 하면 됩니다.
사용자 삽입 이미지


만약 커밋이 필요없고, 로컬에 있는 내용을 모두 포기하려면 파일의 컨텍스트 메뉴에서 Replace With > Latest from HEAD 메뉴로 확 덮어씌우면 됩니다. 로컬에서 작업한 예전 내용은 대개의 경우 Compare With > History... 로 확인 가능합니다.
사용자 삽입 이미지

소스의 수정한 부분이 겹치지 않고 다른 부분이라면 Update할 때 eclipse에서 자동으로 Merge를 시켜줍니다.
겹치는 부분이 있다면 사람이 해결해야 되는 것이 맞죠.
java와 utf8 환경에서 한글 깨지는 현상에 대한 gruter님 질문 관련 포스팅입니다. 제한적인 상황이라는 것은 참고해주시면 좋겠습니다.

테스트는 다음과 같이 했습니다.
XP, jdk1.6.03, eclipse 3.3.1 JEE 환경
새로운 workspace 만들고 java project 하나 만들었습니다.
기본 설정에서 "한글UTF8" 문자열을 콘솔뷰에 찍는 프로그램을 만듭니다.
설정에서 java 소스파일의 인코딩타입을 utf8로 변경합니다.
사용자 삽입 이미지

사용자 삽입 이미지


콘솔에서 확인합니다.
사용자 삽입 이미지


인코딩 변환으로 소스의 한글이 깨어져 보이기 때문에 한글부분을 수정했습니다.
사용자 삽입 이미지

콘솔에서 확인합니다.
사용자 삽입 이미지


이 테스트에서 내릴 수 있는 결론은 파일 인코딩 타입 변환에 따른 한글이 깨어질 수 있다 정도입니다.

설정을 모두 해제하시고, 인코딩 변환 부분을 최소화 시켜서 작업하는 것이 좋을 것 같습니다.
자바 설치한 디렉토리를 기억합니다. 복사하면 좋구요.
예를 들면
C:\java\jdk1.6.0_04

내 컴퓨터 클릭하고 alt+Enter를 누르면 속성창이 뜹니다.
거기서 "고급" 탭을 클릭하고 하단의 "환경 변수" 버튼을 클릭 합니다.

사용자와 시스템이 상하로 나오는데,
시스템 쪽에 하는 것이 좋습니다.
새로 만드는 환경변수는 "JAVA_HOME" 입니다.
아까 복사한 자바 디렉토리를 아래 붙여 놓습니다.
사용자 삽입 이미지

그리고 하나 더 손 봐야 됩니다.
시스템 쪽에 Path 환경변수가 보입니다.

이것 열고 Home 키를 눌러서 맨 앞으로 가서
%JAVA_HOME%\bin;
을 추가합니다.

확인은 말이죠.
cmd 창 띄우고, 까만 화면에서
echo %Path%
하면 됩니다.

그리고
java -version
하면 버전도 보이죠.
메피스토(Mephistopheles)가 파우스트 간에 거래가 일어납니다.
"여기서 파우스트와 메피스토펠레의 문답이 시작되는데, 우주의 신비를 다 규명하지 못하고 늙어버리고만 파우스트는 청춘의 기쁨을 다시 얻는 대신, 지옥에서 메피스토펠레를 모시기로 계약을 맺고 그가 펼쳐 놓은 망토를 타고 악마의 여행에 나선다."
from:
 http://kmh.yeungnam-c.ac.kr/composers/08-PostRomantic1/opera/works2/mefistofele.htm

인간 욕망에 관한 대가지불로 저승에서의 행복한 삶(천국)을 포기하고 이승의 목표를 위해서 영혼을 판 것이죠.

돈을 벌려는 욕구는 사회적 인간의 기본적인 요소입니다. 상대적인 부를 누리기 위해서 노력하는 것이죠. 돈이란 사회적 가치로 표현될 수 있는데, 사회적 가치가 많은 사람에게는 돈이 자연적으로 모이게 됩니다. 이른 바 몸값이 되는 것이죠.

또래인 장동건이 나보다 많이 버는 것은 용인하지만 또래인 지상렬이 나보다 많이 버는 것은 탐탁치 않다고 농을 하고 다닙니다. 지상렬 보다 많이 벌기 위해서는 그의 사회적 가치, 즉 대중성을 뛰어넘는 무엇인가를 갖고 있어야 됩니다. 그래서 나도 유명해질거야 라고 얘기는 합니다만 정말 그만큼 유명해 질지는 장담하지 못합니다.

유명하다는 것에 대한 값을 치르는 것은 각오를 해야합니다. 쉽게 말하면 팬도 있고, 안티도 있다는 얘기입니다. 자신의 캐릭터에 대한 긍정적 평가와 부정적 평가, 더 나아가서는 적대적 평가에 대해서 감당해 내야 합니다. 이것이 메피스토에게 영혼을 판 것에 대한 전주곡이라고 할 수 있겠죠.



작년에는 "술"이 무엇인지 "세상"이 무엇인지 배우기 위해서 정신을 잃도록 퍼마셨습니다. 그 여파를 지금 겪고 있구요. (노트북 망가지고, 아이팟 터치 분실하고, 몸 상하고...) 가족에게는 너무 미안합니다. 세상의 이치를 알고 세상에 출사표를 던지려고 했던 용렬한 선택이었습니다. 모두 유명해지기 위한 몸부림이었습니다.

하지만 세상은 그리 만만한 것이 아니죠. 전략을 수정했습니다. 수신제가치국평천하라고 시작은 제 안에서 부터입니다. 제가 저를 제어하는 것이죠. 그것도 안 된 상태에서 세상에 가치를 주는 일이라고는 기획할 수 없겠죠.

영혼을 파는 짓은 이제 그만 두고 싶네요.

ps.
하루에 자바개발자 6,000명이 방문하는 okjsp 사이트를 통해서 약간 유명해졌습니다만, 이건 축에도 못 낀다는 것을 잘 알고 있습니다. 다만 자바 사이트가 제 역할을 하는 곳이 자바서비스넷 하나 밖에 안 보이고, 그도 예전에 비해서는 많이 쇠락한 듯하여 okjsp 사이트 없는 국내 자바커뮤니티는 어떻게 될까 궁금하기도 합니다.

한 분이 그러시더군요. 약속 지키기 위해서라도 사이트 문 닫지 말아달라고. 쉽지는 않지만 그러겠습니다.
jdk6 update3 를 설치하다 발견한 내용입니다.
다운로드 받은 패키지는 68메가인데, 설치 공간은 거의 600메가를 육박하는군요.
한번에 5가지가 설치됩니다. 옵션으로 조정이 가능하고 다음 화면에서 설치 경로와 5가지의 설치여부를 결정할 수 있습니다.

사용자 삽입 이미지

  1. 개발 도구 300메가입니다. 내부적으로 JRE포함하고 있습니다. Private JRE라고 합니다.
  2. 데모와 샘플 46메가입니다.
  3. 자바 API클래스에 대한 소스코드로 49메가입니다.
  4. 독립 JRE, Public JRE라고 173메가입니다. 브라우저 플러그인을 비롯해 배포용으로 사용되는 Java Web Start 포함합니다.
  5. Java DB 25메가입니다. 클라우드스케이프에서 아파치 더비로 변모했는데, 이것이 같이 설치됩니다.
압축이 꽤 많이 되었군요. 텍스트 형태의 소스가 많아서 그런듯 합니다.
참고하세요. ^^

java에서는 클래스의 생성자는 생략이 됩니다.
유명한 HelloWorld 소스입니다.

package net.okjsp;

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


이 유명한 소스에서 HelloWorld() 부분이 생략된 것이죠.

package net.okjsp;

public class HelloWorld {
 public HelloWorld() {
 }

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

 }
}

메소드처럼 ()은 붙어있지만, 리턴 타입이 없습니다. 바로 클래스 자신의 타입을 리턴하기 때문이죠.

언제 호출이 될까요. 바로 new 로 인스턴스를 만들 때입니다. 다음 소스를 실행해보세요.

package net.okjsp; public class HelloWorld {
 public HelloWorld() {
  System.out.println("생성자 호출");
 }
 public static void main(String[] args) {
  HelloWorld helloWorld = new HelloWorld();
  helloWorld.printOut();

 }
 public void printOut() {
  System.out.println("Hello World");
 }
}

결과는 다음과 같습니다.
생성자 호출
Hello World

파라미터를 준 생성자가 등장한다면 얘기는 흥미진진해집니다. 자바 스펙이라도 한 번 봐두면 좋을 듯 하네요.
 

+ Recent posts