개발자 2분법
프로그램 개발을 업으로 살아가는 사람들을 두 종류로 나눠볼 수 있습니다.
일단 첫번째 기준은 돈많은 개발자와 돈없는 개발자입니다. 돈많은 개발자는 돈 많이 버는 개발자와는 다릅니다. 즉 돈을 벌기 위해 개발하느냐 아니냐에 따라서 개발자의 모든 부분에 영향을 받습니다.
일자리를 구할 때도 재밌는 일을 할 것이냐 돈을 많이 주는 곳으로 갈 것이냐의 판단 기준이 됩니다. 일을 하는 태도도 돈을 벌기 위한 개발이라면 별일을 다 당해도 버텨봅니다. 일에서 받는 스트레스도 심한 편입니다. 다 돈을 벌기 위해서이죠.
돈이 많은 개발자는 생각의 기준이 틀립니다. 농담 반 섞어서 얘기하자면 집에서 놀기 미안하니까 회사 다닌다고도 할 수 있겠죠.

개발이 취미삼아 할 수 있다면 더 많은 창의적인 작품이 나오리라 믿습니다.
밥벌이 개발자들이 스트레스를 덜 받는 그날이 빨리 왔으면 좋겠습니다.

운영중인 톰캣에 배치
Deploying on a running Tomcat server

만약 host의 "autoDeploy" 프로퍼티가 true이면, 호스트는 필요할 때마다 동적으로 웹 애플리케이션을 배치 또는 업데이트하려고 시도합니다. host는 자동 리로딩 작업에 필요한 백그라운드 처리가 필요할 것인데, 기본적으로 설정되어 있습니다.
If the host "autoDeploy" property is true, the host will attempt to deploy and update web applications dynamically, as needed. The host will need to have background processing enabled for automatic reloading to work, which is the default.

다음을 포함합니다:

  • host appBase 폴더에 복사된 WAR파일의 배치
  • host appBase 폴더에 복사된 펼쳐진 웹 애플리케이션의 배치
  • WAR파일이 갱신되었을 경우 WAR파일로부터 배치된 웹 애플리케이션의 재배치:
    펼쳐있는 웹 애플리케이션이 제거되고, WAR파일이 다시 압축이 풀립니다. 만약 host의 옵션이 WAR파일은 압축해제되지 않도록 설정되었다면 그렇게 되지 않고, 그런 경우에는 웹 애플리케이션은 단순이 재배치 됩니다.
  • /WEB-INF/web.xml 파일이 갱신된 경우 웹 애플리케이션의 재배치
  • 배치된 웹 애플리케이션의 컨텍스트 XML 파일이 갱신된 경우 웹 애플리케이션의 재배치
  • $CATALINA_HOME/conf/[enginename]/[hostname]/ 폴더에 컨텍스트 XML 파일(이전에 배치된 애플리케이션의 컨텍스트 경로와 일치하는 이름을 가진)이 추가된 경우 웹 애플리케이션의 재배치

주의: 웹 애플리케이션 리로딩은 로더에서 설정될 수 있고, 그런 경우 로드된 클래스는 변경에 대해서 추적됩니다.

This includes:
Deployment of WARs which are copied to the host appBase.
Deployment of expanded web applications which are copied to the host appBase.
Redeployment of a web application which has been deployed from a WAR when the WAR is updated: the expanded web application is removed, and the WAR is expanded again. This will not happen if the host is configured so that WARs are not expanded, in which case the webapp will be simply redeployed.
Redeployment of the web application if the /WEB-INF/web.xml file is updated.
Redeployment of the web application if the context XML file from which the web application has been deployed is updated.
Redeployment of the web application if a context XML file (with a name corresponding to the context path of the previously deployed application) is added in the $CATALINA_HOME/conf/[enginename]/[hostname]/ folder.
Note: Web application reloading can also be configured in the loader, in which case loaded classes will be tracked for changes.
from: http://tomcat.apache.org/tomcat-5.0-doc/deployer-howto.html

개발자 임금과 더불어 시간사용에 관하여 저의 딜레마가 하나 있습니다.
바로 밤시간의 활용에 관한 것인데, 밤에 잠을 안자고, 요괴인간 벰, 베라, 베로처럼 활동한다는 것이죠.
사용자 삽입 이미지

밤에만 활동하는 요괴인간


image from: http://user.chollian.net/ ~candy3896/youkai.htm

이 글의 결론은 쉼없는 전진은 사상누각이라는 것입니다. 밤새 열심히 개발하고, 공부했다면 낯에 자고, 쉬어야 합니다.
낯에 열심히 움직였다면 밤에는 지친 몸을 쉬어야 합니다. 이런 리듬을 거스리는 경우 몸은 반란을 일으킵니다.

이런 주기가 일주일에 두번 이상 일어나지 않도록 조심해야겠습니다.

시간에 대한 욕심을 버려야겠네요.
is about myself.
It's not clear, but is still there.
My first step on painting is shameful.
But I wanna be a ...

사용자 삽입 이미지

first painting


클라이언트 디플로이어 패키지를 사용해서 디플로이하기
Deploying using the Client Deployer Package
번역 translated by kenu_AT_okjsp.pe.kr

클라이언트 디플로이어는 운영이나 개발 서버에 웹 애플리케이션을 검증, 컴파일, 배치시킬 수 있는 패키지입니다. 이 기능은 자동 배치를 위해서 톰캣 매니저를 사용한다는 것은 알아야 겠죠.
The client deployer is a package which can be used to validate, compile, and deploy a web application to a production or development server. It should be noted that this feature uses the Tomcat manager for automatic deployment.

이 디플로이어는 카탈리나 매니저 앤트 태스크, 배치 전에 JSP 컴파일을 하기 위한 재스퍼 페이지 컴파일러, 그리고 웹 애플리케이션 배치 기술서를 검증하는 태스크를 포함하고 있습니다. 검증 태스크(org.apache.catalina.ant.ValidatorTask 클래스)는 파라미터 하나만 받습니다: 웹 애플리케이션의 기본 경로
The deployer includes the Catalina manager Ant tasks, the Jasper page compiler for JSP compilation before deployment, as well as a task which validates the webapp's deployment descriptor. The validator task (class org.apache.catalina.ant.ValidatorTask) allows only one parameter: the base path of an expanded web application.

디플로이어는 입력으로 펼쳐진 웹 애플리케이션을 이용합니다(아래에 나와 있는 디플로이어의 프로퍼티 목록 참조). 디플로이어가 프로그램으로 배치하게 되는 웹 애플리케이션은 톰캣에 특화된 배치 설정을 포함할 수도 있습니다. /META-INF/context.xml 안에 있는 컨텍스트 설정 XML 파일이죠.
The deployer uses an unpacked web application as input (see the list of the properties used by the deployer below). A web application which is programatically deployed with the deployer may include Tomcat specific deployment configuration, by including a Context configuration XML file in /META-INF/context.xml.

디플로이어 패키지는 다음과 같은 앤트 스크립트 타겟을 사용할 수 있습니다:

  • compile (default): 웹 애플리케이션을 컴파일하고 검증합니다. 독립적으로 사용될 수 있고, 실행중인 톰캣 서버가 없어도 됩니다. 컴파일된 애플리케이션은 오직 관련된 톰캣 5.0.x버전의 서버에서만 실행됩니다. 다른 버전에서는 동작한다고 보장할 수 없습니다. 재스퍼에 의해 생성된 코드는 실행 컴포넌트에 의존하기 때문입니다. 또 하나 알아야 할 것은 이 compile 타겟은 웹 애플리케이션의 /WEB-INF/classes 폴더 안에 있는 모든 자바 소스는 자동으로 모두 컴파일 해 버린다는 것입니다.
  • deploy: (컴파일 되든 안되든) 웹 애플리케이션을 톰캣 서버로 배치합니다.
  • undeploy: 웹 애플리케이션을 제거.
  • start: 웹 애플리케이션을 시작.
  • reload: 웹 애플리케이션을 릴로드.
  • stop: 웹 애플리케이션을 정지.

The deployer package includes a ready to use Ant script, with the following targets:
compile (default): Compile and validate the web application. This can be used standalone, and does not need a running Tomcat server. The compiled application will only run on the associated Tomcat 5.0.x server release, and is not guaranteed to work on another Tomcat release, as the code generated by Jasper depends on its runtime component. It should also be noted that this target will also compile automatically any Java source file located in the /WEB-INF/classes folder of the web application.
deploy: Deploy a web application (compiled or not) to a Tomcat server
undeploy: Undeploy a web application
start: Start web application
reload: Reload web application
stop: Stop web application

다음 프로퍼티는 시스템 프로퍼티나 또는 디플로이어 패키지의 루트 폴더에 있는 deployer.properties 파일을 통해서 지정할 수 있습니다:

  • build: 기본적으로 사용되는 빌드 폴더는 ${build}/webapp${path} 입니다. compile 타겟의 실행이 마친 후, 웹 애플리케이션 WAR 파일은 ${build}/webapp${path}.war 에 만들어집니다.
  • webapp: 컴파일되고 검증되고, 압축이 풀린 웹 애플리케이션이 담길 폴더. 기본 폴더명은 myapp 입니다.
  • path: 웹 애플리케이션의 배치될 컨텍스트 경로. 기본값은 /myapp.
  • url: 실행중인 톰캣 서버의 매니저 웹애플리케이션에 접근할 수 있는 절대 URL. 여기를 통해서 웹 애플리케이션을 배치(설치) 또는 제거할 수 있습니다. 정해지지 않으면 디플로이어는 로컬호스트에서 돌아가는 톰캣인스턴스의 주소 http://localhost:8080/manager로 접근하려 할 것 입니다.
  • username: 톰캣 매니저 연결용 username.
  • password: 톰캣 매니저 연결용 password.

The following properties can be specified, either as system properties, or by using a deployer.properties file located in the root folder of the deployer package:
build: The build folder used will be, by default, ${build}/webapp${path}. After the end of the execution of the compile target, the web application WAR will be located at ${build}/webapp${path}.war.
webapp: Folder containing the expanded web application which will be compiled and validated. By default, the folder is myapp.
path: Deployed context path of the web application, by default /myapp.
url: Absolute URL to the manager web application of a running Tomcat server, which will be used to deploy and undeploy the web application. By default, the deployer will attempt to access a Tomcat instance running on localhost, at http://localhost:8080/manager.
username: Username to be used to connect to the Tomcat manager.
password: Password to be used to connect to the Tomcat manager.

from: http://tomcat.apache.org/tomcat-5.0-doc/deployer-howto.html

지난 포스트에 이미지만 작뜩 붙여놓고 설명을 하지 못했습니다.
하지만 김풍주님의 도움으로 더 좋은 방법을 알게 되었습니다. 그리고 근원적인 이유도 함께 말이죠.

http://www.eclipse.org/webtools/faq/TomcatServerFAQ.php#info_10
주소에 나와있는 것인데, 톰캣에 왜 META-INF 디렉토리가 있었나 생각했었는데, 컨텍스트 관련한 설치 정보를 넣을 수 있더군요.

곧 좋은 기사를 하나 내놓을 수 있을 듯 합니다. 급방긋 ^_^
오픈소스.
보기에 좋아보입니다.
회사에서 쓰려니 망설여집니다.
우선 매력적인 것이
1. 비용이 들지 않아서 손해날 것도 없다는 생각
2. 소스를 마음대로 들여다 볼 수 있어서 답답하지 않을 것이다
3. 기회만 되면 직접 커스터마이징도 가능할 것입니다.

하지만 걱정되는 것은
1. 프로젝트 납기일이 짧습니다.
2. 한글문제나 성능문제가 나타나면 많이 난감합니다.
3. 패치가 너무 자주 됩니다.
4. 윗선에서 별로 탐탁해하지 않습니다. 신뢰감이 없어 보인다는 것이죠.

그래도 오픈소스를 써야할까요?

말도 안되는 것이지만, 타당한 이유가 있습니다.

편집기 이상의 기능을 하는 이클립스의 Navigate 메뉴를 중심으로 편리하게 소스를 읽을 수 있도록 도와주는 기능들을 살펴봅니다.
이름하여 eclipse code navigation
부제는 코드 빨리 찾기

코드를 쉽게 읽을 수 있도록 도와주는 기능. 참조하는 소스코드들을 쉽게 찾아내는 기능입니다.
legend
ctrl :  ^
alt :  @
shift : ~

찾기/바꾸기
^ + F

파일 찾기
^ + ~ + R, @ + n u

문자열 포함된 소스 찾기
contextMenu + find
^ + H

코드 패턴 찾기
^ + j
^ + k, ^~ + k

파일과 파일 사이 이동
^ + f6

상속 관계 찾기
^ + t

메소드 찾기
^ + o

선언부 찾기
^ + leftClick
f3

참조 소스 목록
ctrl + shift + g
contextMenu > References > Project

같은 변수 찾기
형광펜

method 집중해서 보기
형광펜 옆

라인번호로 이동
^ + L

중괄호({} brace) 처음과 끝
ctrl + shift + p
@ + ~ + 좌우화살표

코드 비교하기
compare with...
replace with...

...

편집

코드를 쉽게 짤 수 있는 기능들입니다.

copy & paste
^ + insert / ~ + insert
^ + c / ^ + v
^ + @ + 상하 화살표

method copy/remove
outline view에서 copy/remove

refactoring
집중 분석 필요


팀장님의 소개로 듣게된 콩입니다.
http://www.kbs.co.kr/radio/kong/
주로 듣는게 비슷한 코드인 윤도현, 메이비, 안재욱, 차태현의 시간입니다. TV가 등장했을 때 미디어의 변화로 인해 사라질 줄 알았는데, 자동차의 필수 요소로 자리를 잡았습니다.
사용자 삽입 이미지

메이비의 볼륨을 높여요 2부


인터넷이 등장했을 때 mp3가 활개를 칠 때 또 한 번의 위기로 생각했지만, 보이는 라디오라는 컨셉으로 생존하고 있고, 이제는 인터넷의 즉흥성으로 청취자들과 실시간 상호작용하면서 또 다른 재미를 만들어 내고 있습니다.
DJ의 패션, 습관, 보고 싶었던 게스트의 꾸미지 않은 모습 등을 볼 수 있으니 굉장한 재미라 아니할 수 없습니다.

저 아래 느끼한 사진 옆에 사연을 즉석으로 보낼 수 있습니다. 윤도현 님이 제 사연을 읽어줄때의 쾌감은 짜릿하더군요. "허광남님이 콩으로 보내주신 사연입니다. 일단 자리를 떠야합니다..."

네이버의 데스크탑이나 비스타의 사이드바 등으로도 접근이 가능합니다. 앞으로의 웹의 세계는 위젯과 가젯 같은 미니 어플리케이션의 시대이니 라디오의 컨셉과도 일맥상통하죠. mp3 당분간 멀리할 듯 합니다. 라이브가 좋아요. 라이브.

진화하는 자 동시대의 사람들에게 사랑받으리니, 라디오의 부흥을 기대해봅니다.

한 남자가 있습니다.
애인을 만들고 싶어합니다.
그래서 집을 나섰습니다.
한 사람을 만났습니다. 그리고 물었죠.
남: 여자입니까?
여: 넵.
남: 사귑시다.
여: 뭐 이런 남자가 다 있어. 애인 있어요.
남: 안녕히 가세요.

남자는 테스트 조건을 하나 더했습니다.
애인 없는 여자!
남자는 다시 길을 나섰습니다.
또 만났죠
남: 여자맞죠.
여: 보면 몰라요? 왜요?
남: 애인 있어요?
여: 없어요.
남: 사귑시다.
여: 뭐 이런 남자가 다 있어. 변태같으니라고.
남: 안녕히 가세요.

또 하나의 테스트 조건이 생겼습니다.
나를 변태처럼 안 보는 여자!
남자는 다시 길을 나섰습니다.
또 만났죠
남: 저기요. 여자분이시죠.
여: 네. 그런데요.
남: 애인 있나요?
여: 아뇨.
남: 저 변태처럼 보이나요?
여: 아뇨. 정상인처럼 보이는데요.
남: 그럼 저와 사귀죠.
여: 제 스타일이 아닌데요. 안녕히 가세요.
남: 넵. 안녕히 가세요.

남자는 또 하나의 테스트 조건을 추가했습니다.
이렇게 남자는 여자 고르는 테스트 프레임워크를 만들어서 만나는 여자마다
쉽게 쉽게 테스트를 했습니다.

남자는 결국 웨딩플래너가 되었습니다.

+ Recent posts