오늘은 오랜 만에 개발 관련 포스팅을 가장한 투덜투덜. 뭔가 기술적인 내용을 기대했다면... 낚인거다. 구글 앱엔진이 자바를 지원하게 됐다는 소식은 꽤 오래된 얘기. 그동안 여유가 없어 못본척 넘어가다가, 지난 주에 짬을 내서 삽질을 좀 했다. 일단, 헬로월드... 훗~ 잘되네~ 속도도 짱 빠르고, 이클립스 플러그인도 있으니 금상첨화~ 오오~ 이거! 날로 먹는 톰캣 호스팅 서비슨가? ^O^ 그러나, 섣부른 판단은 금물. 고수일 수록 칼은 조심스럽게 고르는 법... 흠흠... 좀 더 그럴싸한 걸 만들어 보자. 뭘 만들까... 고민하다가 예전에 만들다 말았던 녀석을 옮겨 보기로 했다. (기대 만땅) 제대로 할려면 맥가이버칼(메이븐)이 필요한데... 흠흠... 구글 이클립스 플러그인이 만들어주는 프로젝트의 디..
JDBC 코딩할 때 골치아픈 것 중의 하나가 generate key(오라클의 sequence, MS SQL의 identity, MySQL의 auto_increment 등)을 다루는 것이다. JDBC 3.0부터는 여기에 대한 API가 추가(자바 1.4 이후에)되어 편하게 쓸 수 있지만... 아 글쎄~ 요즘세상에 JDBC를 날로 쓰는 경우가 어딨냐고-.-; 대부분의 ORM(JPA, Hibernate, iBATIS 등)에서는 여기에 대한 별도의 처리방법이 존재하지만, ORM까지 동원하기엔 좀 그렇고-.-, 그렇다고 JDBC를 날로 쓰기도 좀 그렇고... 이럴 땐, commons-dbutils나 spring-jdbc를 사용하게 된다. commons-dbutils를 사용하는 경우는 사실상 JDBC를 날로 쓸 때와..
한국 developerWorks에 기고한 번역문 원문: Use XQuery from a Java environment 번역: 자바 환경에서 XQuery 사용하기 XQuery를 처음 본게 2003년 무렵이었으니... 벌써 5년째... 작년에 W3C에 1.0 스펙이 올라왔고... 이제서야 큰 고생없이 써 볼 수 있게 됐다. 이 글에서는 설명의 편의상 XML 데이터베이스보다는 로컬 XML 파일을 대상으로 설명하고 있지만, 실제 XQuery의 유용함은 거대한 XML 노드들의 집합체, 즉 XML 데이터베이스를 대상으로 할 때 더욱 돋보인다. 튜토리얼 하나로 모든 것을 익힐 순 없겠지만, 이런 것도 있다는 맛보기로는 충분하다. 글에서는 상용 제품인 DataDirect XQuery를 사용했지만, 개인적으로는 SAXO..
한국 developerWorks에 기고한 번역문 원문: Develop AJAX applications like the pros, Part 3: Use DWR, Java, and the Dojo Toolkit to integrate Java and JavaScript 번역: 전문가다운 Ajax 애플리케이션 개발, Part 3: DWR, 자바, Dojo 툴킷을 사용하여 자바와 자바스크립트 통합하기 전형적인 디벨로퍼웍스 스타일의 제목... 원츄! -.-)b~ 제목과는 달리 dojo 얘기는 없다. 대신, 자바 개발자들을 위한 거져 먹는 Ajax! DWR이 있다. 정말~ 쉽고! 정말~ 편하다! 장담하건데... 기존에 자바로 구축된 웹 사이트에 간단한 Ajax를 추가하는 거라면 이 보다 더 좋은 솔루션은 없다. 百..
F3에 JavaFX라는 뜬금없는 이름을 붙이곤, 자바원 2008에서 그렇게 떠들어 대더니... JavaFX의 첫번째 프리뷰 SDK가 나왔다. 포함된 것들을 보면: 1) JavaFX Compiler & Runtime tools 2) 2D Graphics and Media Libraries 3) Tutorials API docs, and Sample Code 4) NetBeans Plug-in 5) Project Nile - a suite of tools and plug-ins(포토샵/일러스트레이터용!) 그렇다... 역시 넷빈즈 플러그인만 있다. 이클립스 플러그인은... 당근 없다. 하긴... 마티스가 없는 JavaFX는 FLEX Builder없는 FLEX! 뽀대 작살! (역시... OSX은 스샷을 위한 O..
한국 developerWorks에 기고한 번역문 원문: Use XStream to serialize Java objects into XML 번역: XStream으로 자바 객체를 XML로 직렬화하기 오랜만에 자바 기사 번역이다.-.-; 요즘은 완전 AJAX 전담 번역자가 된 듯... 직렬화(serialization)라고 하니까 거창해 보이지만, 정말 단순하면서도 유용한 라이브러리다. 다만, 너무 늦게 나왔다는 것이 문제라면 문제일까... XML이 자리를 잡기 시작할 무렵, 지저분한 SAX와 메모리 귀신 DOM 사이에서 갈등하던 시절에는 apache의 commons-digester가 나름대로 유용함을 인정받았지만, 지금은 어떨까? 왠만해서 XML를 직접 파싱할 필요도 없고, 필요하다고 해도 DOM의 메모리 ..
자바스크립트에는 URL 인코딩과 관련해서 4가지 함수가 있다. encodeURI(), encodeURIComponent(), escape()/unescape() 이 그것인데... 구글신께 여쭈었더니... 이렇게 다르다고 말씀해 주셨다. 정말? 일단, 실험을 해보기로 했다. 저 사이트에 나온 파일을 UTF-8과 EUC-KR로 각각 저장했다. test-utf8.html, test-euckr.html 그리고 각각의 파일의 헤더 영역에 다음의 메타 태그들을 끼워넣은 파일을 두개 더 만들었다. test-utf8-meta.html test-euckr-meta.html 그리고, 이 페이지들을 한글 IE7, 영문 IE6, 영문 IE7, FF 2.0 으로 브라우져로 테스트 했다. 혹시나 싶어서 IE의 경우엔 항상 "UT..
한국 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 클라이언트 어플리케이션이다. 생긴..
새로운 이클립스용 Maven2 플러그인 Q.. 줄여서 q4e가 등장했다.(고 하기엔 좀 오래된 얘기일지도...) 현재로썬(0.4) WTP 지원이 원할하지 않아서 M2WTP나 libcopy같은 플러그인과 같이 써야한다.(m2eclipse도 예전에는 비슷한 삽질이 필요했는데 최근 버전은 WTP와 잘 붙는다.) 대신 mavenide(넷빈즈용 maven 플러그인)에 있던 의존성 그래프같은 기능을 갖고 있다. 이클립스 공식 프로젝트로 제안됐는데... 글쎄... http://www.eclipse.org/proposals/iam/ 나름대로 이유가 있긴하지만, m2eclipse가 어느 정도 자리를 잡아가는 시점에서 이렇게 fork하는 모양새가 그닥 좋아보이진 않는다. 예전에 써두었다가 포스팅 안했던 건데, 포스팅할거리..
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..
기사: 중급 자바 개발자의 난관, 클래스 로딩 문제 분석하기 얼마 전에 한국 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..
최근에는 본의 아니게 AJAX로 먹고 살고 있지만, 내 밥줄은 기본적으로 자바다. 그리고, 내가 자바로 코딩할 때 가장 많이 사용하는 라이브러리(프레임웍을 포함해서) 중의 하나가 spring이다. 즐겨쓰던 IoC 컨테이너였던 avalon 프로젝트가 뽀개지면서 대안으로 spring 1.2.x를 처음 쓰기 시작했는데, 벌써(이제서야?) 2.5 버전이 나왔다. 프레임웍 라이브러리의 특성상(하위호환성이 무척 중요하다!) 큰 변화가 있기 힘들지만, 2.5에서는 호환성을 깨지 않으면서 많은 눈에 띄는 변화가 있었다. 이 글에서는 그 중에서 annotation 지원에 대해서 알아보겠다. 스테레오타입 어노테이션 클래스에 붙여서 해당 클래스가 컴포넌트 스캐닝의 대상이고, 스프링에 의해서 관리될 것임을 표시한다. 즉, X..
썬의 홈페이지에 실린 인터뷰 기사를 보다가... 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..
자바로 처음 개발하는 사람들은 .properties파일의 인코딩 때문에 헤맨 경험이 있을 것이다. native2ascii같은 프로그램을 사용해서 변환을 해줘야하는데... 그게 무척 번거롭기 때문이다. 이클립스를 주로 사용한다면 몇가지 선택이 있다. kenu님이 소개하신 propedit 플러그인 은 일괄적으로 한 언어를 주욱 편집할 때 편하고, 아래에 소개하는 ResourceBundleEditor 플러그인은 여러 개의 언어를 비교하면서 편집(교정/리팩토링)할 때 편하다. 개인적으로는 점으로 분리한 항목들을 계층 구조로 보여주는 기능때문에 ResourceBundleEditor를 선호하는 편이다. 또한, 모든 언어의 번역이 채워지지 않은 항목을 (위의 그림처럼) 노란색 삼각형 아이콘으로 표시해주는 기능도 무척..
싱글톤 패턴의 전형적인 자바 구현: public class Singleton { static Singleton instance; public static synchronized Singleton getInstance() { if (instance == null) { instance == new Singleton(); } return instance; } } 위의 구현의 문제점은 getInstance가 synchronized는 것이다. 그래서 좀 지저분하지만 현실적인 해결책으로: public static Singleton getInstance() { if (instance == null) { synchronized (Singleton.class) { if (instance == null) { instanc..
오늘 삽질하다가... 발견한 Sun의 Java6의 javax.xml.stream.?XMLOutputFactory 소스의 일부... -.-;;;;; public abstract class XMLOutputFactory { ... /** * Create a new instance of the factory using the default factory location * mechanism (check env. variable, jaxp.properties, jar services manifest, * in this order) * * @throws FactoryConfigurationError if an instance of this factory cannot be loaded */ public static..
거의 한 달동안 정체 불명의 스펙들 속에서 허우적 거리고 있다. DOM과 SAX로 모든걸 해결하던 배고픈 시절은 갔다고 굳게 믿었다. 넘쳐나는 스펙들을 보며 만세를 불렀다. 그리고, 그 스펙들의 공수표에 좌절하고 있다. 한달 동안 뒤적거린 XML 관련 스펙들을 나열해보자: DOM:굳이 설명이 필요없을 듯. SAX:상동 XSLT:상동 XPATH: 1.0 스펙까진 어느 정도 알고 있었다. 2.0은 그야말로.. 경천동지~ 상전벽해~ 말로만 하는거면 뭘 못하냐고-.-. ?XQuery:궁극의 해결책이라고 믿었다. 천만의 말씀 만만의 콩떡이더라. ?XUpdate:처음 봤을땐 이건 어디서 굴러먹던 개뼈다귀냐라고 생각했었지만... 정말 개뼈다귀다. -.-; ?XmlDb (XAPI): 정말 개뼈다귀다. -.-;; ?XQ..
기뻐할 일인가, 슬퍼할 일인가... 회사의 누구 말마따나 아직 Java5 공부도 다 못했는데... ㅠ.ㅠ 뭐가 달라졌나... 한 번 구경이나 해보세~ 웹서비스: 웹서비스 클라이언트 제작에 필요한 API. 스크립팅: 다양한 스크립트 언어 지원을 위한 프레임웍 + Rhino 자바스크립트 런타임. 데이터베이스: JDBC 4.0, SQLXML 그리고 ?JavaDB(derby)! 향상된 스윙: ?SwingWorker, 향상된 ?JTable 소팅/필터링, ?GroupLayout. 좀 더 빨라지고 예뻐진(?) 스윙. Vista에서 제대로 돌아감. 개선된 JMX와 ?JConsole 그리고 ?DTrace 연동! 컴파일러 API? javac 컴파일러를 프로그램을 통해 제어할 수 있다. 이제와서 33스럽게.. 그냥 ecj쓸..
JAVA가 마침내 GPL로 공개됐다. 많은 사람들이 오해하는 사실 중의 하나는 "지금까지 썬에서만 배포하고 있던 JRE/JDK를 마음대로 배포할 수 있을 것이다"라고 생각한다는 것인데... 그것은 사실과 다르다. 소스가 GPL이 된것이지 JRE/JDK의 설치 패키지가 GPL인 것은 아니기 때문이다. 다만 썬이 공개한 소스를(GPL에 의거하여) 컴파일하고 나름대로 패키징해서 배포하는 것은 무방하다. 비유하자면, RHEL는 GPL이지만 레드햇이 지정된 경로를 통해서만 배포할 수 있지만, 레드햇이 공개한 소스를(GPL에 의거하여) 컴파일하고 나름대로 패키징해서 나름대로의 이름으로 배포하는 ?CentOS같은 변종들이 있는 것과 같다. 단, 이 과정에서 썬이 공개한 소스에 수정을 가했다면, 그 소스도 GPL로 공..
?JavaKernel 이라는 이름으로 Java7에 포함될 듯... 말하자면, "처음으로" 애플릿을 실행하기 위해 필요한 런타임(JRE 플러그인 버전)의 용량을 줄이기 위해 rt.jar를 쪼개고, 그걸 on-demand로 다운로드 할 수 있도록 한다는 얘기다. 현재 Java6 런타임이 15M정도인데, 이렇게 하면 콘솔 버전 HelloWorld 정도를 돌리는 데는 2.6M, AWT 버전을 돌리는 데는 3.5M 정도면 된단다. 멋지군! 멋져! 그런데... 자바가 찬밥을 먹는 것이 런타임의 크기 때문일까? 크기 때문에... 윈도를 설치할 때 플래시와 함께 설치되지 않는 걸까? (조만간 리눅스는 gcj/classpath가 기본 설치될 것 같지만...) 주변에서 OSX을 쓰는 사람들을 살펴보면 (클래식부터 써온 x..
- Total
- Today
- Yesterday
- 여행
- Ajax
- 독후감
- 자전거
- ***1/2
- ****
- **
- 영화
- DeveloperWorks
- docker
- CSS
- Dojo
- Prototype
- 해남
- 책
- 장필순
- nodejs
- web
- Java
- 자바스크립트
- webapp
- HTML5
- ***
- 땅끝마을
- JavaScript
- jQuery
- maven
- 노래
- Eclipse
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |