기존 프로젝트를 maven으로 마이그레이션할 때 디렉토리 구조를 어떻게 할 것인가 하는 문제때문에 늘 고민하게 된다. 결론부터 말하면, 두가지 방법이 있다. 1. 기존 디렉토리 구조를 그대로 두고, maven을 적절하게 설정한다. 2. 기존 디렉토리 구조를 maven의 표준(권장) 디렉토리 구조로 변경한다. 후자의 경우가 확실하긴 하지만, cvs를 쓰고 있다면 대략 낭패(?!)다. svn을 쓴다면 그나마 다행이지만... 여러 사람이 함께 작업하는 프로젝트라면 조금 귀찮은 문제들이 있다. 내가 기존에 사용하던 프로젝트의 디렉토리 구조는 (대충) 다음과 같다: srcjava : *.javares : *.properties 등의 리소스들...test: *Test.java 와 리소스들...buildclasses..
요렇게 해주면: $ = dojo = dojo.mixin(function(){ return dojo.query.apply(dojo, arguments); }, dojo); 요런 식으로 쓸 수 있게 된다: $.addOnLoad(function(){ console.debug($("div")); }); $("div").onclick(function() { alert("div clicked."); }); $.xhrPost({form: $("#myFormId")[0]}); 흠... 너무 prototype스럽군... -.-; 위의 방법 말고도 다양한 변형들이 있다. 요는 prototype의 $가 그렇게 대단한 무언가가 아니라는 거다.
최근에는 본의 아니게 AJAX로 먹고 살고 있지만, 내 밥줄은 기본적으로 자바다. 그리고, 내가 자바로 코딩할 때 가장 많이 사용하는 라이브러리(프레임웍을 포함해서) 중의 하나가 spring이다. 즐겨쓰던 IoC 컨테이너였던 avalon 프로젝트가 뽀개지면서 대안으로 spring 1.2.x를 처음 쓰기 시작했는데, 벌써(이제서야?) 2.5 버전이 나왔다. 프레임웍 라이브러리의 특성상(하위호환성이 무척 중요하다!) 큰 변화가 있기 힘들지만, 2.5에서는 호환성을 깨지 않으면서 많은 눈에 띄는 변화가 있었다. 이 글에서는 그 중에서 annotation 지원에 대해서 알아보겠다. 스테레오타입 어노테이션 클래스에 붙여서 해당 클래스가 컴포넌트 스캐닝의 대상이고, 스프링에 의해서 관리될 것임을 표시한다. 즉, X..
처음... 이 노래를 들었을때... 눈물이 나오는 걸 참느라고 애먹었다. 이리 저리 두리번 거리며 소포 한 뭉치 한 손엔 편지 몇 통 몇 반 작은 글씨는 돋보기 넘어 희뿌연 풍경 한 참 후 난 대문 앞에 놓여있던 아저씨 모자 눌러 쓰고서 이 골목 저 골목 누비며 빨간 자전거 타는 아저씨 지나가는 동네 아줌마 숨바꼭질 노는 꼬마 아이들 아, 이젠 눈에 띄는 우체통만 보이면 속을 들여다 보네 혹시 그 속에 숨어 계실까 빨간 자전거 타는 우체부 아저씨 난 기절 할 것 같아요 조금 뜬금없긴 하지만... 좀 지난 만화... 김동화 빨간자전거 나도 언젠가... 그녀처럼... 기절 할 것같은 세상 밖에서 살고 싶다.
극장은 예상 외로 만원... 예매할때 자리가 별로 남아있지 않아서 의아했는데... 여기 저기... 아저씨 아줌마... 어린애들은 없다. -.-;;; 같이 개봉한 마녀 배달부 키키(1989) 정말 대박인 것 같다. 추첨 같은 걸 해서 지지 인형을 주는 듯... 영화표를 예매하면서 기대보다는 걱정이 많았다. 미야자키 하야오의 역작 바람계곡의 나우시카(1984)를 극장에서 다시 봤을때 느꼈던... (세월앞에 장사없음을 확인시켜주는) 유치함... 그렇게 실망하게 될까 두려웠다. 그러나 이번엔 달랐다. 10년이 넘는 시간이 흐른 뒤에도... 시즈크와 세이지와 할아버지들이 부르는(연주하는) "컨트리로드"는 여전히 감동! 그 자체다. 상승 기류를 잡아 타고 위로 솟구쳐 오른 바론을 뒤로 하고 계단을 달려 내려가는 시..
제 5 장 OOP 지원 javascript는 prototype 기반 언어이다. 가장 널리 쓰이고 있는(제목에도 포함된) prototype 라이브러리의 이름이 여기에서 유래된 것이다. 문제는 이 prototype 기반 언어가 대부분의 개발자가 익숙한 클래스 기반 언어와 미묘하게(?) 다르다는 것인데... 그래서 대부분의 자바스크립트 라이브러리들이 이 차이점을 완화하기 위한 도구들을 제공하고 있다. 모질라 홈페이지의 문서에 prototype과 dojo의 예를 추가해보자. 설명은 없고 영양가없는 소스만 길게 늘어놓았는데... 중간 중간 색깔과 코멘트를 넣어두었다. 만들려는 녀석은 대충 이런 식이다: * java public class Employee { public String name; public Stri..
TV 프로에서 우연히 김광석의 노래 "서른 즈음에"가 음악평론가 임진모와 그 일당, 42인들이 선정한 90년 이후, 우리를 흔든 노랫말 TOP 30에서 1위로 선정되었다는 얘기를 들었다. 또 하루 멀어져 간다 내뿜은 담배 연기처럼 작기만한 내 기억 속에 무얼 채워 살고 있는지 점점 더 멀어져 간다 머물러 있는 청춘인 줄 알았는데 비어가는 내 가슴 속엔 더 아무 것도 찾을 수 없네 계절은 다시 돌아 오지만 떠나간 내 사랑은 어디에 내가 떠나 보낸 것도 아닌데 내가 떠나 온 것도 아닌데 조금씩 잊혀져 간다 머물러 있는 사랑인 줄 알았는데 또 하루 멀어져 간다 매일 이별하며 살고 있구나 매일 이별하며 살고 있구나 강승원이 작사/작곡/노래까지 했던 것을 나중에 김광석이 불러서 널리 알려졌지만, 노래가 빅히트한 ..
제 4 장 이벤트 javascript로 심각한 코딩을 해본 사람이라면 누구나 사소한 브라우져들간의 차이에 좌절한 경험이 있을 것이다. 문제는 prototype이나 dojo같은 멋진 넘들이 넘쳐나는 세상에도 여전히 과거의 코드에 매여있는 사람들이 있다는 것이다. 일단, 이런 HTML이 있다고 생각하자: ... OK! ... * DOM var okBtn = document.getElementById('okBtn'); if (okBtn.addEventListener) { okBtn.addEventListener('click', ok_onclick, true); } else { okBtn.attachEvent('onclick', ok_onclick); okBtn.captureEvents(Event.CLICK);..
제 3 장 XMLHttpRequest 계속해서, XMLHttpRequest 관련 함수들을 살펴 보자. BOM(Browser Object Model) 코드는... 열라 길다. -.-; 생략할려다가... prototype이나 dojo가 얼마나 많은 노가다를 줄여주는지 확인하는 차원에서 주욱 적어봤다. prototype과 dojo 코드는 얼추 비슷해 보이지만, 가만히 살펴보면 자질구레한 부분에서 조금씩 다르다: * BOM var xhr; try { xhr = new XMLHttpRequest(); } catch (e) { try { xhr = new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) { try { xhr = new ActiveXObject("Microsoft.XM..
제 2 장 utility functions 유틸리티 함수들을 살펴보자. dojo에는 아쉽게도(?) prototype사용자들이 제일 좋아하는 함수 $()가 없다. 대신 dojo.byId()가 있다. 이게 귀찮다고 생각하시는 분이 계시겠지만 dojo 개발팀에서도 꽤 오랜 고민과 토론 끝에 내린 결론이다. 관심있는 분은 메일링을 뒤져보시라. * 지정한 id를 가진 DOM node를 검색* dom var node = document.getElementById('abc'); * prototype var node = $('abc'); * dojo var node = dojo.byId('abc'); 너무 길다고? 익숙해지면 별 차이없다. document.getElementById()보다는 짧지않은가! 거기다 나는 $..
dojo 1.0 릴리즈 기념으로 몇 번에 걸쳐 잡담을 좀 하려고 한다. 제목은 거창하게 "prototype 사용자를 위한 dojo 입문"이지만... 글쎄... 그냥... dojo 0.4 이전 버전의 dojo에서 실망하거나 좌절하고, 두번 다시는 dojo를 거들떠 보지 않는 분들에게... dojo도 꽤 쓸만하다는(쓸만해졌다는?) 얘기를 하고 싶었다. 제대로 될지는 모르겠지만, 일단 시작해보자! 제 1 장 getting dojo prototype은 홈페이지에서 prototype.js를 받아서 로컬 웹서버에 올려놓고 참조했다. dojo도 마찬가지다. dojo도 홈페이지에서 http://download.dojotoolkit.org/release-1.0.0/dojo-release-1.0.0.zip 파일을 다운 받..
ajaxian.com에서 실시한 설문조사의 결과를 조금 뜯어보자: 사용을 검토하고 있는 브라우져 플러그인 Flash 71.9%Silverlight 12.2%기타 28.9%예상했던 결과다. 기타에 뭐가 있는지 더 봤으면 좋겠는데... 확실한건 자바도 기타에 속한다는 것이고, 12.2%보다는 적다는 것이다. 사용하고 있거나/검토하고 있는 AJAX 프레임웍/라이브러리 Prototype 68.4%Scriptaculous 58.7%jQuery 47.5%Yahoo UI 40.3%Dojo 38.3%Ext JS 33.8%Google Gears 22.0%Google Web Toolkit (GWT) 17.2%DWR 12.7%Symfony 4.6%Qooxdoo 3.2%Tibco GI 2.9%jMaki 1.5%ICEfaces..
오랜 만에 평촌 키넥스에서 본 영화... 허진호의 "행복"... 그렇다. 내가 기대했던 것은 임수정과 황정민의 행복이 아니고, 허진호의 행복이었다. 그러나 (모두가 알고 있는 것처럼) 영화는 보기 전에도, 보는 중에도 보고 나서도... 전혀 행복하지 않았다. 영화 자체와는 무관하게, 나는 슬펐다. 배우들의 눈물 한 방울 없이... 관객들을 눈물짓게 만들었던 8월의 크리스마스... 쉴새없이 눈물을 뽑아대는 배우들... 그런 영화를 멀뚱히 쳐다보는 관객들... 뽀뽀 한 번 없이도 사진처럼 선명했던 다림과 정원의 사랑... 어설픈 베드신까지 동원해도 뜬금없기만 한 은희와 영수의 사랑... "사랑이 어떻게 변하니"라고 나직히 속삭이던 상우... "개새끼 니가 사람이니"라며 거침없이 쏘아붙이다가, "잘할께~ 잘할..
썬의 홈페이지에 실린 인터뷰 기사를 보다가... Java의 오랜 미신 중에 하나... "String 더하기 보다 StringBuffer append가 빠르다!?" 예를 들어... 아래의 코드는: public static String concat1(String s1, String s2, String s3, String s4, String s5, String s6) { String result = ""; result += s1; result += s2; result += s3; result += s4; result += s5; result += s6; return result; } 이렇게 짜는게 좋다고... 가르치고 배운다. 나도 그렇게 배웠다: public static String concat2(Strin..
잘돌아가던 이클립스가 며칠 전 부터 계속 뻗기 시작했다. 가만히 생각해보니 3.3.1 업데이트 이후부터 그런것 같아서... 이런 저런 삽질하다가... eclipse.ini파일에 -XX:MaxPermSize 옵션을 넣어 주어서 해결했다. 잘 찾아보면... 이클립스 버그질라에 이미 올라와있다. 위키의 FAQ 페이지도 그저께 수정되었다. 지금 내가 쓰는 eclipse.ini 파일: -clean -showsplash org.eclipse.platform --launcher.XXMaxPermSize 256M -vmargs -XX:PermSize=256m -XX:MaxPermSize=256m -Xms40m -Xmx768m -Xverify:non 정리하면, 4~5째줄 --launcher.XXXMaxPermSize 2..
자바로 처음 개발하는 사람들은 .properties파일의 인코딩 때문에 헤맨 경험이 있을 것이다. native2ascii같은 프로그램을 사용해서 변환을 해줘야하는데... 그게 무척 번거롭기 때문이다. 이클립스를 주로 사용한다면 몇가지 선택이 있다. kenu님이 소개하신 propedit 플러그인 은 일괄적으로 한 언어를 주욱 편집할 때 편하고, 아래에 소개하는 ResourceBundleEditor 플러그인은 여러 개의 언어를 비교하면서 편집(교정/리팩토링)할 때 편하다. 개인적으로는 점으로 분리한 항목들을 계층 구조로 보여주는 기능때문에 ResourceBundleEditor를 선호하는 편이다. 또한, 모든 언어의 번역이 채워지지 않은 항목을 (위의 그림처럼) 노란색 삼각형 아이콘으로 표시해주는 기능도 무척..
며칠 전의 일이다. planner로 프로젝트 일정을 짜고 있었다. A: 이게 뭐에요? MS Project인 줄 알았는데 아니네~(야~ 신기하네~@..@) B: 리눅스/그놈용으로 만든 planner라는 이름의 오픈소스 소프트웨어를 윈도로 포팅한 거예요. A: 좋아요? B: 뭐 그럭 저럭 참고 쓸만해요. 자꾸 죽는것만 빼면^^; A: MS Project쓰면 되잖아요? B: 사주면 쓰죠 ^^; A: 파일 서버에 시리얼하고 다 있던데~ B: ... -.-;;;;; PC로 어떤 작업을 하려면 반드시 소프트웨어가 필요하다. 그 소프트웨어를 사용하기 위해서는 정당한 대가를 지불해야 한다. 당연한 얘기라고? 그런데 소프트웨어(그 중에서도 패키지)를 개발하는 회사에 다니는 사람들 조차도 불법 복제에 대해서 이중적인 태도..
DOMContentLoaded가 뭔지 모르신다면 신경끄셔도 무방한 아이템 되겠다. 그게 뭔지 아신다면... 그로 인한 고통도 자알 알고 계실터... 어처구니없는 해결책 하나 보시겠다: (출처: http://javascript.nwbox.com/IEContentLoaded/ ) (function (){ //check IE's proprietary DOM members if(!document.uniqueID && document.expando) return; //you can create any tagName, even customTag like var tempNode = document.createElement('document:ready'); try { //see if it throws errors un..
출처: http://blogs.zdnet.com/Stewart/?p=540 같은 그래프지만, 이해는 (AJAX 개발자인)내 맘대로~ 일단 RIA쪽에서 잘 나갈 것 같은 녀석들의 구인 기록을 분석해보자: 역시나, 예상대로 FLEX의 압승! OpenLaszlo는 FLEX덕분에 반사이익을 좀 보는 것 같고... JavaFX는 뭐야? 그런게 있기나 한거야? Silverlight가 너무 쳐지는 것 같아서 WPF도 추가해 봤는데: 어랏?! 이게 뭐야~ 거의 FLEX랑 막상막하네. Silverlight랑 합치면... -.-;;; 역전~ 호기심으로 AJAX도 추가해 봤다: 헉!! @..@ 뭐가 잘못된 거야? 원래 그런거야? 게임이 안되자나! 그럼 플래시는 어떨까: 흠냐-.-;;; 이게 뭔 시츄에이숀-.-;;; 차분히 ..
태초에 웹이 있었으되... 거기 넷스케잎이 있었더라. 썬의 개발자 블로그에서 이 그림을 보니 감회가 새롭다. 넷다이나믹스, 넷스케잎서버... 첫 직장에서 내가 담당했던 제품들이었다. 넷스케잎서버가 아이플래닛, 썬원어플리케이션서버를 거쳐 J2EE SDK에 번들로 끼워주던 SJAS(썬 자바 어플리케이션 서버), 그리고 오픈소스 프로젝트인 유리 물고기 기반의 SJAS 9까지... 그냥 옛날 생각이 나서 인용해 본건데... 썬의 개념없는 브랜딩과 마케팅을 단적으로 보여주는 그림일지도...
90년대 중반 "소프트웨어 1차 대전"이라고 불릴만한 일련의 사건들이 있었다. 패키지 소프트웨어를 주름잡던 수많은 제품들이 시장에서 사라져 버린 것이다. 기억을 더듬어 보자... 킬러 어플리케이션의 원조라고 할 수 있는 비지캘크, 워드스타, dBASE(애시톤테이트)로 시작한 PC용 오피스 소프트웨어들은, 이후 멀티플랜(MS), 워드퍼팩트, 하버드그래픽스, 1-2-3(로터스), 쿼트로(볼랜드; 터보C,델파이,투게더로 유명한 그 회사)등으로 이어지면서 춘추 전국 시대를 구가했다. Apple Works(요즘 애플에서 맥용으로 판매하고 있는 iWork와는 이름이나 개념말고는 기술적으로 별 상관없는)나 로터스의 심포니같은 통합 소프트웨어(그 당시엔 오피스 스위트(Office Suite)라는 말 대신 통합 소프트웨..
http://sitepen.com/pressReleases.php?item=20070917 dojo 0.9에서 가장 황당한 이슈 중의 하나가... grid위젯(dojo 0.4의 SortableTable/FilteringTable의 대체품)이 없다는 것이었는데... 결국, 모질라 재단, SitePen, Nexaweb, Redfin, SnapLogin 등이 공동으로 TurboAjax의 Grid를 사들여서 dojo 재단에 기증하기로 했다는 소식. TurboAjax는 dojo초창기부터 잘 다듬어서 상용으로 팔아먹던 회사였는데... 버틴 보람이 있군. 대충 훑어보면: General Features Browser support matching Dojo 1.0: IE6/7, Firefox 2/3, and Safari..
SVG가 사실상 웹표준임에도 불구하고 대다수의 브라우져에서 무시되고 있는게 현실~ 특히 IE에서는 VML이라는 해괴망측한 물건(이것도 표준이긴하지만)을 핑계로 SVG지원 요구를 무시하고 있었다. SVG와 VML이 둘다 XML이라는 점을 이용해서 SVG를 VML로 변환하는 XSLT를 만들려는 시도가 몇번 있었지만 결과는 신통치 않았는데... 이번엔 은빛을 이용해서 SVG를 XAML로 변환하는 XSLT가 나왔다. 과정이야 어찌됐건 결과만 놓고 보면: 파이어폭스 2+, IE7+은빛, 사파리3+, 오페라 9+에서 SVG를 모두 볼 수 있게 됐다. 자세한 내용은: http://ajaxian.com/archives/svg-on-ie-via-silverlight-via-xslt
http://blog.stevenlevithan.com/archives/faster-than-innerhtml /* This is much faster than using (el.innerHTML = value) when there are many existing descendants, because in some browsers, innerHTML spends much longer removing existing elements than it does creating new ones. */ function replaceHtml(el, html) { var oldEl = (typeof el === "string" ? document.getElementById(el) : el); /*@cc_on // Pu..
MavenEclipseWTP은 뭔가 삽스러웠다. 그래서 정석으로 파고들기 시도~ 준비물 eclipse 3.0+ 설치 maven 2.0+ 설치 http://maven.apache.org 윈도의 시스템 PATH 등록 m2eclipse 플러그인 설치 http://m2eclipse.codehaus.org/update-dev/ m2wtp 플러그인 설치 http://m2wtp.googlecode.com/svn/trunk/kr.javanese.devtools.m2wtp.update 명령행(cmd)에서 C:\workspace>mvn archetype:create -DgroupId=com.thinkfree.ajax -DartifactId=test -DarchetypeArtifactId=maven-archetype-web..
이거 어디서 퍼왔더라-.-;; 원 출처를 까먹었다.출처: http://livingash.wordpress.com/2007/08/13/back-to-the-future-when-eclispe-wtp-20-meets-maven-2/ 구질구질하긴 하지만... 뭐 어때~ 잘 돌아간다! 기본적인 절차는 대충 이렇다: 이클립스를 띄우고, "Dynamic Web Application" 프로젝트를 하나 만들고, 표준 maven 프로젝트를 기본 archetype으로 만들고, 모든 이클립스 설정 파일들을 maven 프로젝트로 복사한 다음, 프로젝트에 맞게 수정한다. 준비물: 이클립스 3.3 + WTP 2.0. M2Eclipse 플러그인(http://m2eclipse.codehaus.org/) 서블릿 컨테이너 런타임.(톰캣..
블로그라인에서 새 버전을 dojo만들고 있다고 해서... 후다닥 들어가 봤는데... 이게 생각보다 꽤 쓸만~ @..@ 구글 리더를 버리기로 결정~ P.S. C+U를 눌렀더니(직업병?)... 요런게 보인다~ Welcome to _ _ _ _ | |__ | | ___ __ _| (_)_ __ ___ ___ | '_ \| |/ _ \ / _` | | | '_ \ / _ \/ __| | |_) | | (_) | (_| | | | | | | __/\__ \ |_.__/|_|\___/ \__, |_|_|_| |_|\___||___/ |___/ v3.0 (beta) Proudly Made On Earth! 나도 따라해봐야쥐~
티스토리에 계정 만든지 꽤 시간이 지났지만... 블로그 쓴지도 꽤 오래됐고... (나 혼자쓰는) 모니위키 블로그 플러그인 코드 손 안본지도 오래됐고... 아무도 안 봐주는 블로그의 한계도 절감하고 있고... 아무튼 이런 저런 이유로 블로그도 잘 안쓰게 되고... 어제 자바로 한 20줄 정도 코딩해서 모니 블로그를 티스토리로 옮겼다. 쪽 팔리는 코드지만... -,.-;;;; (이젠 정말 없겠지만) 모니블로그 쓰시는 분들께... 모니블로그 개발자로써 최소한의 애프터서비스랄까... 링크나 태그들까지 정리할려고 했는데... 너무 귀찮아서 이 정도로 양해해주시길... import java.io.File; import java.io.PrintWriter; import java.net.URL; import java...
미투에 한 줄로 올리고 말랬는데... -.-; 손현숙의 새 앨범 을 알리는 포스트를 본 아무개씨는 내 취향이 특이하다고 했다. 그런가? 그 정도면 특이할 꺼 까진 없다고 생각했는데... 사실 특이한 노래들도 많이 듣는다. 그래도 그건 그냥 혼자 들을 때다. 특이한 넘으로 생각될까바... 대 놓고 듣는 노래는 나름 검열을 거친다. 세상 사는게 다 그런거 아니겠나...-.- 가끔 노래방에서 ?안치환/사람이꽃보다아름다워 같은 노래를 부르는건 일종의 팬서비스다. 개인적으로는 그의 노래 중에서 ?안치환/내가만일 다음으로 안 좋아하는 노래다. IMHO, 그녀의 첫 싱글은 그닥 만족스럽지 않지만(미얀마의 노래를 번안해서 불렀다는 ?손현숙/어머니의집이 가장 그녀의 노래답다), 세상 어딘가에선 이런 노래도 불려지고, 또..
- Total
- Today
- Yesterday
- webapp
- **
- 영화
- Dojo
- 노래
- DeveloperWorks
- Eclipse
- Java
- Prototype
- 여행
- 책
- web
- Ajax
- HTML5
- ***1/2
- ***
- ****
- CSS
- 땅끝마을
- JavaScript
- 독후감
- 자바스크립트
- maven
- 장필순
- jQuery
- 자전거
- 해남
- nodejs
- docker
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | |
7 | 8 | 9 | 10 | 11 | 12 | 13 |
14 | 15 | 16 | 17 | 18 | 19 | 20 |
21 | 22 | 23 | 24 | 25 | 26 | 27 |
28 | 29 | 30 |