본문 바로가기

Code

구글 웹 툴킷(GWT) 개요 웹쪽 기술에 대해서 너무 관심이 없었던 터라, 스스로 제대로 로드맵을 못 그려내고 있음을 느꼈던 하루였다. 그래서 잠깐 짬내서 찾아봤던 자료에 대해 이해한 정도만 간략히 정리해 놓는다. 일단, 구글 웹 툴킷은 요약하면, "Java로 Javascript를 작성하는 도구"이다. (여기서부터 개인적인 판단이므로, 인용시 유의바랍니다.) 2006년 정도에 처음 발표되었는데, 이 당시에 자바스크립트는 언어라고 부르기에는 너무 체계가 없이 사용되었었다. 따라서 기존의 구조화된 언어를 작성하던 프로그래머들이 사용하기에는 자바스크립트의 자유분방함이 커다란 벽처럼 느껴지던 터였다. 이런 배경에서 기존의 자바 코드처럼 프로그램을 작성하고, 이를 컴파일 과정을 통해서 Javascript로 변환하는 과정이었으리라 생각된다. .. 더보기
배치파일(.bat)에서 날짜 구해서 변수로 쓰기 자동화 스크립트를 짜면서, 날짜별로 파일을 생성하면 좋겠다고 생각해서, 짧게 구글링 후, 작업을 하였다. 카피해서 붙이면 된다고 하는데, 국가별로 날짜 표시 형식이 달라서 약간의 수정이 필요하였다. 코드는 다음과 같이 사용하면 된다. FOR /F "TOKENS=1* DELIMS=-" %%A IN ('DATE/T') DO SET CDATE=%%A-%%B FOR /F "TOKENS=1,2 DELIMS=- " %%A IN ('DATE/T') DO SET mm=%%B FOR /F "TOKENS=2,3 DELIMS=- " %%A IN ('DATE/T') DO SET dd=%%B FOR /F "TOKENS=1* DELIMS=-" %%A IN ('DATE/T') DO SET yyyy=%%A echo %yyyy%%mm.. 더보기
엑셀로 역행렬 구하기 엑셀은 간편하게 수계산할 경우 유리한데, 행렬계산도 가능하단 사실은 잘(?) 알려진 사실. 그런 데 막상 써볼려고 하니, 어떻게 구하는 지 아는 사람이 드문 사실 역시 알게 되었다. 일단, 함수는 행렬(Matrix)의 첫 글자를 따서 역행렬은 MInverse(), 행렬곱은 MMult()이다. 인자로는 행렬의 영역을 지정하면 되는데, 문제는 여기서 부터이다. 일반적으로 엑셀의 결과는 하나의 셀에 표시되는 게 일반적이지만, 행렬은 결과 역시 행렬로 나와야 하기 때문에 여러 셀에 걸쳐서 나와야 한다. 그래서 값을 열심히 드래그하더라도 값이 제대로 나타나지 않는데, 방법은 이러하다. (이 말투는 오디오 북에서;;) 값이 나올 영역을 선택하고, (결과가 3x3짜리 행렬이면, 빈 칸을 3칸 3줄 드래그하고) 함수를.. 더보기
경량 DBMS 사용하기 데이터처리하는 프로그램을 작성하다보면, 데이터베이스를 이용하면 좀 더 간편하게 해결되는 문제들을 접하게 된다. 이런 경우에 DB 사용을 고려하지만, 설치 및 배포의 문제로 인하여(간단한 배치프로그램을 위해서 서버에 계정만들고, DB만들어서 자료처리하는 것이 번거롭다는 것), 경량 DB (보통 file기반 DB)라는 대안을 찾게 되었다. 물론 최근에 아이폰 개발 책을 보면서, 데이터처리를 위해서 sqlite를 쓴다는 것을 보면서, 간단한 프로그램을 만들때도 경량 DB를 임베드하는 형태로 개발하면 좋겠구나 생각이 들었다. 자바에서 이용할 수 있는 경량 DB로 sqlite를 염두해두고 googling를 했는데, Derby라는 아파치 프로젝트의 산출문이 더 낫다는 의견을 접할 수 있었다. 이에 간단하게 코드를 .. 더보기
Java 코드 내부에서 외부 프로그램 실행시키기 - exec(), ProcessBuilder Runtime.exec()와 ProcessBuilder 클래스를 이용하여, 구현할 수 있다. 그리고 apache 프로젝트에 'apache common exec'라는 라이브러리도 있다고 한다. 경험상 외부 프로그램 실행시에는 현재 실행 위치가 잘 안 먹는 경향이 있으니, 절대 경로를 이용해서 명령을 내려주는 것이 여러모로 편하다. String binDir_ = System.getProperty("user.dir") + "/exec/node3d/"; String[] cmdArray = new String[] { binDir_ + "nodes3d.exe", System.getProperty("user.dir") + "/" + inputFile }; try { Process p = new ProcessBuild.. 더보기
Java System Property 자바에서 외부 프로그램을 실행시키는 경우, 경로가 잘 안 먹는 경우가 생긴다. 이에 절대 경로를 적어주기 위해서 현재 위치를 알아야 하는 데, 현재 위치는 다음과 같이 System Property에서 구할 수 있다. System.getProperty("user.dir") 프로퍼티 속성은 다음 링크의 테이블을 참조하면 된다. http://blog.naver.com/strong_will/60059797418 더보기
엑셀에서 Scientific Notation 예를들어, 352.3를 3.523E2 와 같이 지수로 표시하는 것은 Scientific notation 이라고 하는데, 엑셀에서 '셀 서식 > 표시 형식 > 지수'를 이용하여 쉽게 표현할 수 있다. 이 때, 기본적으로 정수 부분이 1~9 의 숫자를 갖도록 설정이 되는데, 이를 0.325E3 과 같이 정수부분을 0으로 두고, 실수부분으로만 표시하고 싶은 때는 어떻게 해야할까? 어제 갑자기 이러한 질문에 방법이 없다고 생각했다가, 오늘 문득 방법이 생각나서 해보니 잘 되었다. 그 방법은 '셀 서식 > 표시 형식 > 사용자 지정'로 지정하고, 형식 값을 다음과 같이 기술한다. "0".000E+00 원하는 결과대로 표시됨을 확인할 수 있을 것이다. 더보기
Rosa 2000 - map toolbar isn't visible. 웹 기반 GIS 엔진인 Mapserver 의 rich-client 소스 중 하나인 rosa2000. 연구실에서 이 로사를 이용하여 맵서버를 구현해 놓았는데, 어느 날, 툴 바가 사라졌다. 로사 소스를 찾아보고 해도 최근에는 업데이트가 없었고, 가장 최근 소스를 구해서 소스를 분석해 보니, applet 에서 어느 순간인가(자바 1.4 전후로 생각된다.)부터 컴포넌트에 add() 메소드를 이용하여 추가한 컴포넌트를 그리는 순서가 달라진 것으로 생각된다. 이전 버젼까지는 먼저 추가된 것이 먼저(아래에) 그려졌다면, 최근 버젼에서는 먼저 추가된 것이 나중에(위에) 그려지도록 바뀐 것으로 추정된다. 아마 구현 내부에 priority를 설정하는 게 아닐까라는 생각을 해본다. 어찌되었건, 이와 관련해서 Rosa200.. 더보기
eclipse 부팅을 빠르게... 이클립스 쓰면서 프로그램 뜨는 게 답답해서 늘 이 옵션을 써놓는데, 컴퓨터 다시 깔 때마다 찾아야 해서, 이번에는 블로그에 남겨둘까 한다. -Xverify:none -XX:+UseParallelGC -XX:+AggressiveOpts -XX:-UseConcMarkSweepGC [출처] Eclipse 설정: 실행속도 빠르게 하기|작성자 슬렁슬렁 라고 eclipse.ini 파일에 추가해 주면 된다. 더보기
Java에서 splash 화면 구현하기 1.5 이하에는 따로 splash를 지원하지 않아서 구현하여 이용하였으나, 1.6 부터는 옵션을 통해 손쉽게 적용할 수 있다. 본인은 이미지를 프로그램에 지정하는 방식보다는 이미지를 지정하면 splash 화면이 뜰 수 있도록 Helper 개념의 클래스를 만들다보니 매번 바꾸게 해야 하기 때문에, 예전 방식을 이용하여 구현하게끔 하는 1.5 이하에서 사용하던 방식을 이용하였다. 1.5 이하 버젼에서는 JWindow에 JLabel를 넣어서 직접 구현하는 방식이고, 1.6 이상에서는 1) 커멘드라인에 -splash:splash-image.jpg 와 같은 옵션을 주거나, 2) .jar일 경우 manifest 파일에 정의할 수 있다. 원문은 아래와 같다. http://www.zdnetasia.com/how-to-.. 더보기