IE8의 첫번째 공개 베타 버전이 나왔다. 뭐가 얼마나 달라졌길래... 마이너 업데이트 한번없이 바로 8.0인가? 자세한 내용은 MS의 공식 홈페이지를 참조하면 될 것이고... 가장 기대가 되는 것은 역시 표준 지원과 성능이다. 나만 그런 것이 아닌듯... 벌써 벤치마킹 결과가 나오기 시작했다. 시대가 시대이니 만큼 브라우져의 성능은 결국 네트웍, 자바스크립트, DOM의 성능으로 귀결되는데... 자바스크립트 쪽 성능을 비교한 그림을 보면: IE8... IE7과 별차이가 없구려... 완전 실망입니다요~ 사파리가 괜히 뜨는게 아니었다. 파이어폭스 3의 엄청난 향상도 눈에 띈다. 의외인것은 성능빼면 남는게 없는 오페라가 캐안습한 결과를 보인것인데... 테스트에 포함된 코드가 이벤트 프로퍼게이션 모델의 영향을 ..
한국 developerWorks에 기고한 번역문 원문: The Geronimo renegade: Using integrated packages: GlassFish JSTL 1.2 and Apache Geronimo 2.0 번역: Geronimo의 배신: GlassFish JSTL 1.2와 Apache Geronimo 2.0 통합 패키지 사용하기 장황한 제목의 기고문은 제목과 무관하게... 자바 웹 기술 발전사를 다룬 글이다. 내용을 요약하면: ServletJSP JSP + Serlvet (Model 2) JSP + JSTL JSP + JSTL + EL JSP + JSF JSP + JSF + JSTL + Unified EL결론을 요약하면: "Apache Genonimo도 위의 마지막 7번 조합을 지원하니 ..
한국 developerWorks에 기고한 번역문 + 보너스 원문: Monitor and diagnose performance in Java SE 6 번역: Java SE 6의 성능 모니터링 및 진단 자바 6가 2006년 12월에 나왔으니까... 벌써 2년이 넘었다. 그런데, 주변을 보면 Java 6의 새로운 기능들을 활용하는 경우를 거의 보지 못했다. 오히려 프로젝트에 Java 6을 쓰겠다고 하면 안정성이 검증되지 않은 플랫폼을 선택하는 것은 너무 위험하다는 걱정아닌 걱정을 듣기도 했다. 흠... 이 얘기는 나중에 따로 하고 -,.-; 자바 6에서 언어적인 측면을 빼고 가장 크게 달라진 부분이 JConsole이다. JConsole은 한마디로 요약하면 스윙으로 만든 JMX 클라이언트 어플리케이션이다. 생긴..
주소도 참 멋지구리~ http://labs.thinkfree.com/ labs가 머하는 사이트인지는 지민아빠네 해처리가 가면 잘 나와 있으니... 대충 넘어가고... 뒷담화기 몇가지... 사이트를 준비(기획이 아니고 준비다. 기획같은건 하지도 않았다)할 때는 incubator라고 불렀다. 다른 넘들이 다들 labs라고 해서... 우리도 labs로 할려니 좀 따라쟁이같은 느낌이어서... 일부러 바꿔본건데... 반응이 어째 영 -,.-;;; 그래서 그냥 labs로 했다. 아는 사람은 알겠지만 incubator도 결국 apache보고 따라한거다. 디자인할 능력도 안되고... 회사 공식 프로젝트로 진행하기엔 번거롭고... 그래서 디자인은 ThinkFree Blog의 것을 그대로 가져다 썼다. 첫 페이지의 배너(..
새로운 이클립스용 Maven2 플러그인 Q.. 줄여서 q4e가 등장했다.(고 하기엔 좀 오래된 얘기일지도...) 현재로썬(0.4) WTP 지원이 원할하지 않아서 M2WTP나 libcopy같은 플러그인과 같이 써야한다.(m2eclipse도 예전에는 비슷한 삽질이 필요했는데 최근 버전은 WTP와 잘 붙는다.) 대신 mavenide(넷빈즈용 maven 플러그인)에 있던 의존성 그래프같은 기능을 갖고 있다. 이클립스 공식 프로젝트로 제안됐는데... 글쎄... http://www.eclipse.org/proposals/iam/ 나름대로 이유가 있긴하지만, m2eclipse가 어느 정도 자리를 잡아가는 시점에서 이렇게 fork하는 모양새가 그닥 좋아보이진 않는다. 예전에 써두었다가 포스팅 안했던 건데, 포스팅할거리..
500+개의 버그를 고쳤다는데... 그럼 도대체 버그가 몇개였다는 얘기? 3월 1일 정식이 나오고, 4월 1일 첫번째 마이너 업데이트(1.1.1)가 나올 예정이니까, 실무에 적용하는건 4월 이후에나 가능하겠다. 바뀐 내용을 좀 살펴보면: dijit 테마를 수정CSS 최적화 옵션등 빌드 스크립트 개선BorderContainer 와 ExpandoPane 레이아웃 컨테이너 추가dojo.gfx에 애니메이션 추가dojox.fx에 지우기 기능 추가dojox.highlight에 문법 강조 기능 추가dojox.dt에 Django 문법 추가 및 dojo.data와 grid/tree간의 연동 개선, dojox.data에 JsonPath, SnapLogic 등의 구현 추가. Firefox3의 WAI-ARIA 지원을 포함한 ..
JCO라고 불리우는 정체 불명의 단체가 주관하는 아홉번째 자바 개발자 컨퍼런스~ 순선옹의 이적 후 첫 공식 데뷔 무대가 재밌을 꺼 같네~ 우후훗~ 시간 내용 10:30 ~ 11:30 접수 및 입장 11:30 ~ 11:40 개회사 11:40 ~ 12:10 기조연설#1 기조연설 #2 12:10 ~ 12:30 2007 대한민국 소프트웨어 공모대전 (제7회 JCO 자바 소프트웨어 공모전) 시상식 12:30 ~ 12:40 쉬는 시간 및 트랙 준비, 이동 시간 트랙 주제 Java Practice java Technology Enterprise Computing Software Engineering Data Management & Business 사회자 김소리 김홍회 최진호 전영민 김형배 12:40 ~ 13:20 N..
기사: Mylyn 2.0: 태스크 중심 프로그래밍 지난 주에 한국 developerWorks에 기고한 기획 기사 요약문이다. 지금 내가 쓰고 있는 자바 개발 환경은 (당연하게도) Eclipse다. 버전은 현재 최신 안정 버전, 3.3.x이다. 이클립스 3.3이 처음 나왔을때 Mylyn이라는 녀석이 기본으로 포함되었다는 얘기는 들었지만, 뭔가 명확한 설명없이 좋은거다라는 식의 소개 글들을 보고 무시했었다. 내가 3.3으로 업그레이드한 유일한 이유는 WTP 2.0에 새로 추가된 "Serve modules without publishing" 때문이었다. (다른 많은 사람들과 마찬가지로) 이클립스의 지지부진한 업그레이드에 (약간) 실망하여, NetBeans로 전환을 모색하고 있었다.(NetBeans용 maven..
기사: 중급 자바 개발자의 난관, 클래스 로딩 문제 분석하기 얼마 전에 한국 developerWorks에서 기획 기사 요약문을 써달라고 해서 기고한 글이다. 내 이름이 들어가서가 아니고(어차피 내가 쓴 것도 아니지만), 꽤 볼만한 글이다. 필자의 회사에서 만든 제품도 커스텀 클래스로더를 써서 현란한 짓거리(?!)를 좀 하는데... 대다수의 사람들이 그 코드를 이해하지 못하고 있어서 안타까웠던 기억이 있다. 요즘 자바 웹 개발자들이라면 톰캣을 많이 쓸텐데... 톰캣의 클래스로딩 정책을 정확하게 이해하지 못한 탓에 $CATALINA_HOME/server/lib에 넣어야할 라이브러리, $CATALINA_HOME/shared/lib에 넣어야할 라이브러리, $CATALINA_HOME/common/lib에 넣어야할..
엄밀하게 말하면 eclipse용 maven플러그인의 문제라기보다는 maven-embedder의 문제인데... 몇 가지 해결책이 있다. 1. m2eclipse의 홈페이지 FAQ에 나오는 방법... pom.xml에 다음의 내용을 추가해 준다: com.sun tools 1.5.0 system ${java.home}/../lib/tools.jar 이 방법이 제일 간단한 방법이지만, jdk를 기본 경로(예: c:\Program Files\Java\jdk1.5.0_13)에 설치하지 않았다면 제대로 동작하지 않는다. 내 경우가 바로 그런 경우인데(예: d:\devel\jdk1.5.0_13), 다행이도 JAVA_HOME 환경 변수가 저 디렉토리를 가리키고 있어서 다음과 같이 수정했다: ${env.JAVA_HOME}/l..
기존 프로젝트를 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..
제 5 장 OOP 지원 javascript는 prototype 기반 언어이다. 가장 널리 쓰이고 있는(제목에도 포함된) prototype 라이브러리의 이름이 여기에서 유래된 것이다. 문제는 이 prototype 기반 언어가 대부분의 개발자가 익숙한 클래스 기반 언어와 미묘하게(?) 다르다는 것인데... 그래서 대부분의 자바스크립트 라이브러리들이 이 차이점을 완화하기 위한 도구들을 제공하고 있다. 모질라 홈페이지의 문서에 prototype과 dojo의 예를 추가해보자. 설명은 없고 영양가없는 소스만 길게 늘어놓았는데... 중간 중간 색깔과 코멘트를 넣어두었다. 만들려는 녀석은 대충 이런 식이다: * java public class Employee { public String name; public Stri..
제 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..
썬의 홈페이지에 실린 인터뷰 기사를 보다가... 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..
- Total
- Today
- Yesterday
- CSS
- ***
- Prototype
- webapp
- ****
- docker
- 독후감
- JavaScript
- 장필순
- 자바스크립트
- Java
- ***1/2
- DeveloperWorks
- HTML5
- 영화
- **
- 책
- web
- nodejs
- maven
- 여행
- Ajax
- 자전거
- 해남
- 땅끝마을
- Eclipse
- Dojo
- 노래
- jQuery
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |