Java 를 기반으로 구현된 모든 코드에서 국제화 등을 이유로 리소스 파일 작성을 할때에, 문자열 등의 리소스 파일은 ascii 값의 ISO-8859-1 인코딩으로 작성해 주어야 합니다.
프로퍼티 파일들을 UTF-8 로 읽어주도록 변경되면 좋겠지만 어쨌든 현재는 그렇습니다.
이 때문에 jdk 에는 native2ascii 라는 실행파일이 들어 있는데( $JAVA_HOME/bin 에 들어있음 ) 이놈을 이용해서 프로퍼티 파일을 파라메터로 건내주거나 파일 실행 후 문자열을 입력해보면 Latin-1 인코딩의 ascii 값을 알 수 있습니다.
ANT에서도 native2ascii task 를 지원하기 때문에 일반적으로 컴파일 및 빌드 과정과는 별개로 native2ascii 를 이용해서 리소스 파일들을 바꾸어 주는 작업을 추가하게 됩니다.
Quick and Dirty Hack for UTF-8 Support in ResourceBundle 라는 포스팅을 보면 PropertyResourceBundle 의 wrapper class 구현이 있는데 이런 걸 이용하는 것이 편하긴 합니다. 다만 해당 포스팅의 아래쪽 comment 를 보면 3가지 정도의 bug case 에 대한 지적이 있는데 특히 Brian 이 지적한 내용은 반드시 적용해서 사용하셔야겠습니다.
Very cool however I found a bug in your impl. when asking for a resource bundle with a parent. This is how I fixed it. Notice the call to getString which makes sure to recursively go over the parent bundles. Also checking for null.
protected Object handleGetObject(String key) { String value = (String)bundle.getString(key); if (value==null) return null; try { return new String (value.getBytes("ISO-8859-1"),"UTF-8") ; } catch (UnsupportedEncodingException e) { // Shouldn't fail - but should we still add logging message? return null; } }
And another small thing: not all ISO-8859-1 chars are a subset of UTF-8. The (C) sign seems to clash. If I put a \u00a9 in a UTF-8 file, it fails. But if I put the actual sign, it works. For some reason it is encoded as two bytes even though it is below 192 decimal.
Not a big deal though. Still very cool solution.
첫번째 지적한 경우에 해당하는 문자는 저작권 표시와 유로화 표시, 그리고 무한대 표시 등이 있는 것 같네요.
이런 프로그래밍적인 것 말고 이클립스 플러그인 형태의 '편집기'를 원하는 분이라면 Properties Editor 라는 것을 추천합니다.
간만에 네이버 뮤직 결재하고 이것저것 들어보던 중 박정현이 뭔가 낼 때가 되었는데 조용하네 싶어 '박정현' 이란 이름을 검색에 넣어보았더니 no break 라는 곡이 뜨네요.
그것도 무려 며칠전에 나온 따끈따끈한 디지털 싱글!!
박정현과 크라운 J 가 함께 불렀군요. ( 크라운 J 는 뒤쪽에 간간이 비치는 랩이 전부라서 함께 불렀다고 하긴 좀 -_- )
뮤직비디오는 사귀는 남녀의 훈훈한 스틸컷 사진 위주로 만들어져 있어서 뮤비 자체의 감동 같은건 크지 않고 좀 저렴하게 만들었다는 표시는 팍팍 납니다.
디지털 싱글이었던 '위태로운 이야기' 와 비교해보자면 퀄리티 뿐만 아니라 내용 자체도 참 극과 극인듯 하고, 개인적으로 좋아하는 '미아' 라든지 '달' 과 같은 수준은 아니더라도 비슷한 느낌의 사랑노래인 3집의 'You mean everything to me' 정도 수준이라도 만들어 줬으면 좋았을 걸 그랬습니다...만...
뭐 어떻습니까? 그녀의 팬인 저로서는 간만에 그녀의 새 노래를 들어볼 수 있는걸로 충분히 만족합니다. :)
디지털 싱글의 2번트랙은 'Without you' 라는 노래인데, 'no break' 의 pop 버전이라고 적혀있습니다. 기본적으로는 동일한 곡입니다.
-P.S-
원래도 그랬지만 점점 주제없는 잡동사니 블로그로 흘러가는군요.
최근에는 뮤비 퍼오기와 날로 먹기로 일관하는 듯 싶은데... 반성 좀 하고 책 읽고 리뷰도 좀 올리고 해봐야겠습니다.
W&Whale 이라는 그룹명은 기존의 그룹 W에 Whale ( 박은경 ) 이 참여해서 W&Whale 이라고 부르는 것 같고 현재 "W & Whale HARDBOILED" 라는 앨범을 발매한 상태입니다. ( 오늘 박기영의 새 앨범과 함께 주문 고고싱~!! )
-P.S- 하지만 아무리 들어봐도 R.P.G Shine M/V 의 그것과 SK브로드밴드의 목소리는 살짝 다른게 느껴지는데... 혹시라도 김윤아의 목소리와 비슷하게 약간 샘플링하거나 그런 비슷한 효과를 노렸던 건 아닐까 하는 혼자만의 상상을 해 봅니다. ㅋㅋ 아무리 다시 들어봐도 SK브로드밴드 CF 송은 김윤아 목소리 같다는 -_-;;
며칠전에 '윤도현의 러브레터' 에 W&Whale 이 나왔었는데 아직 어린 아가씨라서 그런지 긴장해서 그런지 전혀 '김윤아'스럽지 않더군요. 성량은 좀 더 풍부한 것 같고 목소리 자체도 좀 더 굵은 저음인거 같은데... 아무리 들어도 정말 이 아가씨가 SK브로드밴드 CF삽입곡을 부른게 맞나 싶군요. ( SKT의 의도적인 노림수 편곡? )
Numeric Only : Max 7,089 characters Alphanumeric : Max 4,296 characters Binary(8bit) : Max 2,953 characters
만큼의 데이터를 담을 수 있어 일반적인 바코드보다 데이터 저장 용량이 크고 왜곡에 대해서도 강한 특징이 있습니다.
우선 서버에서 1) QR Code를 생성할 수 있어야 하고, 2) 사용자가 업로드한 QR Code 이미지로부터 데이터를 추출할 수 있어야 합니다.
About 2D Code QR Code.com 이 링크를 통해 들어가면 QR 저작툴 두개를 다운로드 받을 수 있는데 Trial 이니 Pro 니 하는걸로 봐서 돈주고 사야하는듯 하고 라이브러리가 아닌 사용자용 제품인 관계로 패스~
뒤지다 보니 http://qrcode.kaywa.com/ 라는 사이트에서 입력값으로 QR Code 이미지를 출력해줍니다. 가입절치 등도 없고 단순히 QR Code 의 이미지 사이즈를 선택하고(S/M/L/XL) URL/Text/Phone Number/SMS 중 하나를 선택한 다음 Generate! 를 누르면 QR Code 이미지가 생성됩니다.
이런 식이네요. 앞으로 QR code 만들때 유용하게 써먹을 수 있을 것 같습니다. ( 그나저나 iPhone 은 언제나와 ㅜ.ㅜ )
몇몇 국내 보급된 휴대폰이 이 QR Code 를 읽을 수 있는 듯 하지만 국내 보급률이 그렇게 높지 않아서 아마 갖고 계신 분이 거의 없을테고, 혹시라도 iPhone 을 쓰시는 분이라면 iMatrix 같은 것들이 나와있기 때문에 곧바로 메세지를 읽어보실 수 있겠군요. ( iPod Touch 는 카메라가 없어서 /애도 )
뭐 나름대로 괜찮군요. 하지만 이 오픈소스 라이브러리는 좀 길거나 복잡한 내용이 들어가거나, "안녕하세요? 제 RSS 주소는 http://www.potatosoft.com/tt/rss 입니다" 와 같은 식으로 입력해서 만든 QR Code 는 읽어들이지 못하는데.. 일단 생성시에 오류는 발생하지 않으니 Reader쪽에 문제가 있다고 보는게 맞을 것 같네요.
구글에서 AdSense 에 QR Code 를 적용하니 어쩌니 하는 기사를 봤던 것 같아서 뒤져보니 Google에서 Chart API 의 한 형태로 QR Code를 만들 수 있는 기능을 제공해줍니다. 럭키~
이런식으로 하면 되구요 EC Level 을 H 로, 차트 사이즈는 144pixel 로 설정했습니다.
보이기는 이런 식으로 보이게 되지요.
ZXing 은 android / j2se / j2me 등 다양한 환경의 코드를 제공해주는데 우선 core 라는 공통 라이브러리를 컴파일해야 하고, 이를 위해서는 WTK를 설치해야 합니다. ( 공통이면 모바일이든 웹이든 상관없이 돌아가 줘야 하는거 같은데 WTK에 의존한다는게 좀 -_-;; )
qrcode.sourceforge.jp 는 간단한 QR Code 만 가능했지만, 구글이 제공하는 chart api 로 QR Code 를 만들었으니 당연히 구글에서 제공하는 것으로 디코딩도 되리라는 믿음으로 WTK 를 설치하고 Eclipse 에서 core 를 컴파일 한 다음(build.xml 에 WTK-home 경로 지정), j2se 쪽 gui runner 를 실행시키기 위해 core.jar 를 library build 에 추가하고 실행해봅니다.
Google Chart API로 만든 QRCode 이미지를 파일로 저장한 다음 ZXing 에서 해당 파일을 읽어보니
깔끔하게 디코딩이 자~ㄹ 됩니다. QR Code 만들기 위해 상용 패키지 사서 쓰지 않아도 되겠군요. 우왕국~
깔끔한 이미지는 잘 읽는데, 그럼 실제 사용자들이 찍어 올리는 QR Code는 어느정도 인식을 할지 궁금해져서 테스트를 해봤습니다.
QR Code가 가장 널리 쓰이는 곳이 아무래도 일본이다 보니 이미지 대부분이 일본쪽 것들이군요.
실패 -_-;; 이런 건 인식 못하는군요. 옆에 이미지를 잘라내고 깔끔하게 만들어서 먹여줘봤습니다.
역시 실패 -_-;
웹검색을 하다 보니 이런 이미지도 있더군요. 그냥 해보면 당연히 에러가 나겠지 라는 새각으로 가운데 부분만 잘라서 인식시켜 보았습니다.
우왕 성공~!! 어떻게든 QR Code 의 흰색과 검은색만이 보이도록 사진을 찍어야 하는군요.
... 라고 생각하다가 이미지 패턴인식 형태이기 때문에 색깔이 문제가 아닐수도 있겠다 싶어 원본 이미지를 그대로 인식시켜 보았습니다.
우왕 -_-;; 이런것도 인식되는군요.
간단한 테스트였지만 이걸 만약에 사진을 찍어서 MMS로 전송한 다음 뭔가의 내용을 서버에서 처리하여 다시 사용자에게 SMS로 보내준다든지 하면 인식률 때문에 사용자들이 서비스를 쓰지 않을 것 같고, 사용자의 단말기에 QR Code 리더가 붙어있어야만 서비스가 활성화 될 가능성이 높아 보입니다. 그것도 별도의 리더를 붙인다든가 하는 게 아니라 휴대폰 카메라로 찍으면 바로 인식되는 형태의 built-in 으로 제공되어야 할 것 같군요.
Android 를 적용한 구글폰이나 iPhone 을 언제까지나 기다릴 순 없고.. -_-;;
QR Code 의 주요 활용 방안 중 하나라고 한다면 리더기로 해당 QR Code를 읽으면 곧바로 단말기가 무선인터넷 접속을 해서 관련 정보를 읽는 등의 용도로 쓰일 수 있는데(쿠폰을 바로 받는다든지), 국내의 이통사 3사에서는 아직까지 무선인터넷 요금을 내리실 생각이 별로 없기 때문에 향후로도 QR Code 가 활성화될 가능성은 거~의 없다고 봐도 되겠습니다.
정말 반갑습니다. 이제까지 QRCode에 관한 국내사이트를 찾아다녔지만 여기가 제일 상세하고 실전적이군요.
저는 사무실에서 사용하고자 하다가 QRCode에 관심을 가지게 되었습니다. Code39를 쓸까 했는데 너무 바코드가 길어서 서류에 추가하기가 쉽지않더군요.
시도하는 것은 해당거래처에 싸인을 받을 인수인계증(여기에는 업체코드등의 정보가 바코드와 일반 문자로 인쇄됨)을 싸인을 받고 서류를 스캔해서 서버에 보관할때. 기존에는 스캔한 파일을 하나하나 확인해서 서버의 해당코드업체에 등록해야 하지만. 만약 바코드를 응용하면 스캔한 파일을 디코더와 연계된 프로그램으로 자동으로 파일등록이 가능하겠죠.
문제는 제가 java가 아직초보라서 우울한딱다구리님 같이 쉽게 sourceforge의 파일을 사용할 수 없겠더군요. 윈도우기반 자바개발자를 위해서 CUIExample 부분을 다운에서 컴파일 까지 그 과정을 상세하게 알 수 있을까요?
우울한딱따구리 2008/10/22 14:31
CUIExample 은 qcode.sourceforge.jp 쪽으로부터 다운로드 받았는데 제가 잘 못해서 그런지 이놈은 간단한 것만 인식하고 복잡한 것은 인식하질 못합니다.
빌드 자체는 안에 빌드를 위한 bash 스크립츠 및 Makefile이 있기 때문에 유닉스/리눅스 혹은 윈도우상에서 cygwin 같은걸 설치해서 빌드시켜보실 수 있을겁니다.
후자에 실행시킨 것은 google code에서 다운로드받은 zxing 입니다.
이건 받아보시면 알겠지만 WTK가 필요한데, WTK는 sun 사이트에 가서 받으실 수 있습니다.
빌드 요령은
1. WTK 설치
2. 윈도우 또는 이클립스에서 zxing 의 core 부분을 빌드(이때 WTK 설치 경로를 설정해줘야 합니다. 자세한 내용은 build.xml 내부 참고 )
3. 2에서 만들어진 core.jar 를 각 플랫폼별(j2se, j2me, android 등등... ) 빌드시에 라이브러리로 추가 및 ANT 로 빌드
(제가 쓴 것은 j2se 용입니다)
java에 아직 익숙치 않으시면 당장은 컴파일을 위해서는 ANT가 필요합니다. 좀 더 편하게 하려면 Eclipse 를 쓰시는걸 추천드리고 싶습니다. 관련솔루션 개발이 아니라 활용이 목적이시라면 더존 C&T(http://www.duzoncnt.com/) 와 같은 몇몇 곳에서 이미 상용의 솔루션들을 판매하고 있으니 고려해보시는것도 좋을 듯 합니다.
추가로 문의 할 사항이 있어 글 드립니다.
혹시 QR code 내에 한글을 입력하고 리더기로 읽기가 가능한지요?
dBarcode라는 제품의 트라이얼 버젼으로 테스트 결과 영,숫자는 가능한데 한글은 안되더군요
말씀하신 http://qrcode.kaywa.com/ site에서도 입력한 문장중 영,숫자믄 가능하나 한글을 리더기가 인식하지 못했습니다.
혹시 아시는 내용 있으면 답변 부탁드립니다.
만일 한글 입/출력이 가능하다면 vb로 제작하여 직접 QR code를 인쇄하고 싶은데 가능한 콤포넌트를 제공하는 회사를 알려 주실순 없으신지요(유료도 관계없습니다)
두서없는 질문 죄송합니다.
우울한딱따구리 2008/12/03 10:21
Google Chart API 를 이용하실 수 있다면 본문에 소개드린 것처럼 char api 중 2d barcode 생성코드를 이용해서 한글을 입력하고 그 결과를 ZXing 으로 인식할 수 있습니다.
위의 URL 호출은 "만나서 반갑습니다" 라는 걸 utf-8로 넘긴 결과인데요.. 생성되는 이미지를 저장해서 ZXing 에서 인식시켜보면 결과가 제대로 인식됩니다. 생성된 이미지를 저장해서 출력하셔도 될 것 같구요... VB연동이시면 http 관련 컴포넌트나 소켓질(?)로 구글 api를 호출하고 결과물을 받아서 이미지로 저장하셔도 되겠네요.
솔루션을 원하신다면 더존C&T(http://www.duzoncnt.com/) 에 각종 s/w 및 h/w 제품군들이 있으니 금전적인 여유가 있으시다면 그쪽을 고려해 보시는 것도 좋을 것 같습니다.
얼마전부터 개인 프로젝트에 오픈소스 CI 서버인 Hudson 을 사용하고 있습니다. ( 라기보다는 Hudson 은 방금 막 깔았습니다. -_- )
위키북스에서 나온 "지속적인 통합" ( Continuous Integration ) 을 다시 처음부터 보다가 '자동화되고 지속적인 테스트가 없이는 CI를 한다고 할 수 없다' 라는 말에 동감한다는 저자의 글을 보고 나서 팀 프로젝트에 당장 적용하기는 이래저래 반발 또는 위험부담이 있으니 우선 선행학습 겸 개인 프로젝트에 활용해 보려고 Hudson 을 설치했습니다.(속으로는 넌 정말 100% 모든 case 별로 자동화 테스트를 진행하니? 라는 생각과 더불어... ) Bamboo 가 좋다고는 하는데 일단 Hudson은 무료의 오픈소스이니... 설치도 쉬웠구요 ( tomcat 의 webapp 에 복사하면 끝, 접근권한을 위한 기본적인 세팅은 물론 별도로 해주어야 하지만 ).
기존의 svn 쓰던 것이 있었기에 svn 으로 Hudson 을 연결시키고 간단한 app 하나 만든 다음, jUnit4 test case 를 만들고 이를 위한 ant 용 build.xml 스크립트를 작성해서 Hudson 에 target 을 등록시켰습니다.
이것 저것 끄적거리다 보니 Hudson >> Plugin Manager 에 emotional-hudson 이라는게 눈에 띄었는데, 설명에
This funny plugin changes the expression of Mr.Hudson in the background when your builds fail.
이라고 되어 있더군요.
전 솔직히 build 돌렸을때 실패하면 배경의 Mr.Hudson 그림이 flash로 바뀌면서 화를 낸다든지.. 뭔가 Active 한 것을 기대하고 이걸 설치했는데... build 를 일부러 실패시킨 다음에 해당 실패한 빌드를 눌러보니 Mr.Hudson 씨 표정이 그냥 좀 안좋군요. 안색도 불그스름하고..
댓글을 달아 주세요
1.5 부터 들어간 Properties.storeToXML(out, "hehe", "UTF-8"
도 사랑해주세요. ㅎㅎ
storeToXML 이라는게 있었군요 ㅎㅎ
ㄳㄳ