대충 상상했던 EPG형태로 보여주기는 하나, 실생활에 편히 쓸만큼 보기 편한거 같지는 않다.
그리고, 당장 쓰기에는 또 다른 문제가 좀 있다.
주기적으로 책임감 있게 변환 script를 돌려줄 서버가 필요하고,
CalDAV로 iCal에서 쓰려면 WebDAV 호스팅이 되어야 하는데, 그렇지 아니하고,
ics로 변환해서 그냥 web에 두고 google calendar에서 구독하면 그걸 다시 iCal에서 불러올 수 있다.
그래서 google calendar에서 읽어보니 한글이 깨진다…
(분명 UTF-8으로 저장되어 있는데, KSX1001을 UTF-8으로 읽었을때 처럼 깨진다..)
이번에는 xlst로 만들었는데 생각보다 깔끔하고 맘에 든다.
TreeView 형태보다 쉽게 포함관계를 표현한다.
맨 처음, element와 attribute를 일일히 지정하면서 xslt를 작성하다 보니 1000라인이 넘어 섰다.
그래서 거의 90% 완성된 시점에서 처음부터 다시 시작해 element와 attribute의 이름을 지정하지 않는 형태로 바꾸었더니 css, javascript를 포함해서 120라인 가량으로 끝낼 수 있을 뿐더러 특정 dtd/schema의 xml 뿐만 아니라 범용 XMLViewer로 사용가능해 졌다.
만들다 보니 포함관계만 표시하는 심플한 뷰, 모든정보를 빠짐없이 보여주는 뷰를 표현하기 위해 javascript를 이용했고 web에서 찾은 코드를 근간으로 했는데
원리는 숨기거나 보여질 영역을 < div class="ClassName" >으로 설정한뒤 해당 class를 가지는 element를 돌면서 처리하는 루틴이었다.
내 방에서는 TV를 MacOSX 상에 pinnacle HDTV stick과 eyetv로 보고 있다.
Windows에서 TV를 볼때는 마지 못해 보는거였지만, Mac에서는 TV로 보는거 보다 훨씬 더 편하고 좋다.
MacOS 탓이라기 보다는 EyeTV라는 프로그램이 훌륭해서다.
물론 신호 내의 한글로 된 EPG는 다 깨먹지만 말이다.
pinnacle HDTV stick용 리모콘이 요즘 안보인다. 하늘이 소행으로 보이지만 물증이 없다.
그래서 불편하던 차에, 원래 가지고 있던 AirClick으로 EyeTV를 컨트롤 하려고 찾아봤더니 insanelymac에 해당 정보를 찾았다.
Windows용은 컴파일해야 하지만, Mac은 script로 만들어 놓고, functions.plist만 편집하면 되는 형태.
앞으로도 다양한 용도로 활용 가능해 질거 같은 느낌이다….
functions.plist파일을
/Applications/AirClick.app/Contents/Resources/
나머지 applescript 파일들을
/Applications/AirClick.app/Contents/Resources/scripts/
폴더에 복사하면 된다.
1. 무작정 Visual Studio 2008을 띄우고 C# WinForm 프로젝트 생성
2. [Add Reference]에서 Microsoft.DirectX.AudioVideoPlayback를 추가해주고(DirectX는 깔려 있어야 함)
3. Form을 더블 클릭하고 다음과 같이 쳐준다.
using Microsoft.DirectX.AudioVideoPlayback;
private void Form1_Load(object sender, EventArgs e){
Video v = Video.FromFile(@"c:\test.avi");
v.Owner = this;
v.Play();
}
4. F5를 누른다.
근데 안된다.
[Debug]-[Exceptions]-[LoaderLock]의 Thrown 항목을 꺼준다.
5. F5를 누른다.
ㅋㅋㅋ 성공 ….
[잡설]
이번 일주일간 WDM 디바이스 드라이버 프로그래밍 교육중이다.
Kernel Mode 프로그램에서는 좀만 잘못하면 블루 스크린…
오랜만에 보는 VisualStudio… 안보던 사이 많이 바뀌었었네…
루비 공부 시작한지 다음날 문득
Unicode의 한글 영역을 전부 출력하는 프로그램을 ruby로 짜면 어떻게 될까 궁금해 졌다.
머리 속에서는 직관적으로
(가..힣).each{|x| print x}
란 코드가 떠 올랐다. 겁나 멋지다.
‘가’의 Unicode가 AC00인지 모르더라도 (‘힣’의 코드 값은 외우고 있지도 않다.) Range가 지원해주지 않을까?
다른 언어라면 분명 루프가 빙빙 돌고,
‘가’가 아닌 AC00부터 code값을 증가시키면서…. 어쩌구 저쩌구 하는 코드가 될터인데….
근데 안돈다.
더 정확히는 도는듯 하다 만다.
이유는 ruby String의 내부처리가 UTF-8이어서 그랬다.
이런 젠장….
UTF-8도 Unicode 인코딩 기법중 하나 맞고, 나름 장단이 있는 유니코드 인코딩이지만,
직렬화나, 네트웍 전송시에나 적합한 인코딩이고, 메모리 내부 처리는 UCS2나 하다 못해 UCS4로 처리함이 맞다고 본다.
그래야 기껏 Unicode에서 욕먹어 가면서 현대 한글 11072자 모두 할당 받아 한글 처리가 조합형처럼 처리가 가능하고, 한글 소팅 문제나…..
기타등등…(욕까진 안먹었나? 하지만 눈치 보면서…)
아마도 ASCII가 1byte로 인코딩되는 점 때문에 (영어권 프로그래머의…)힘에서 밀린듯 하다.
암튼 String succ메소드를 건드리고야 말았다.(별 바람직해 보이진 않지만…)
class String
def succ
head = self.unpack('U*')
tail = head.pop
return head.pack('U*') + [tail + 1].pack('U*')
end
end
("가".."힣").each{|x| print x}
("あ".."ん").each{|x| print x}
#"가나다".each_char {|x| print x}
puts "가나다".succ
회사 업무에, 용도에 따라 주로 다양한 언어를 사용하지만,
한번 쓰고 말거나, 간단한 처리는 주로 perl을 이용한다.
주로 하는 일이 UI가 필요없고,
주로 Unix환경인데다가,
text처리가 대부분이라 regula expression 이 강력해서 perl이야 말로 아주 적격이다.
ruby란 언어를 처음 접한건 1999년도 일본서 공부할때다.
자연어처리 연구실이라 그곳 역서 text처리가 대부분이다.
ruby 공부하던 인간도 몇 있었지만, 그저 취미 일뿐,
실용적인 측면에서는 그 연구실 조차 perl이었다.
그래서 나도 perl을 그곳에서 배우기 시작했다.
Unix + Emacs + Perl.
그랬던 ruby가 몇년 전 부터 하도 유행이라, 나도 공부해 보고 업무에도 적용해 보고 싶었지만,
팀에 초 고수 perl 본좌가 2명이나(noise & gogma) 있는 바람에
혼자서만 ruby코드를 양산할 수 없어서, 나도 친숙하고 모두가 다 아는 perl 이 주종이었다.
최근에 이 둘을 꼬셔서 루비 공부 시작…
꼬시는데 뭐 어려운거 없었다.
황대산 님의 20분짜리 가이드한번 보여줬더니
바로 루비 광신도로 변신…
회사 도서관에 있는 ‘Programming Ruby’를 죄다 빌려다 모두 공부 중.
근데 도대체 대충 읽을 수가 없다.
한줄 한줄 의미를 곱씹으니 아주 오묘하다는 것.
특히 문법 설계가 아주 예술이다.
예전에 신군이랑 메신저로 잠깐 나눴던, Code Block이랑 Meta Programming이 왜 필요한지 왜 써야 하는지 이해가 가지 않았는데,
이것참 물건이다.
어느 블로그나 검색 메뉴가 있다. 나의 경우는 show menu를 누르면 사이드 바가 뜨고 검색 메뉴가 있다. 혹은 사전을 위해서 dic.naver.com을 찾아가거나 한다.
매번 해당 블로그나 사이트에 가서 메뉴가 있는 곳 까지 찾아 가서 검색을 하는게 가끔 번거러울 때가 있다.
이를 좀더 쉽게 해보자.
safari
MacOSX의 사파리의 경우에는 예전부터 sogudi라는 플러그인이 있어서, 이미 잘 사용하고 있었다.
safari에 sogudi를 설치하면 다음과 같은 설정창에서
hanury -> http://hanury.net/wp/index.php?s=@@@
와 같이 검색할 파라미터를 @@@로 해서 검색 URL을 입력해 두면, 주소창에 URL 형태가 아닌 “hanury 검색어” 처럼 입력하면 @@@를 검색어로 치환해 주는 플러그인이다.
이를 이용해서, 영어 사전은 eng, 이미지 검색은 img 등으로 설정해서 편하게 사용해 왔다.
나에겐 MacOS 설치시 필수 항목으로 자리잡았다.
단점은 주소를 UTF-8으로 보내기 때문에 국내 사이트중 대부분이 KSC-5601_1987로만 받아서 깨지는 경우가 많다.
Naver도 그중 하나이다.
이런 와중에 OpenSearch에서 이런 부분을 xml 스키마 형태로 표준화 했고,
IE7과 FireFox가 지원하기 시작했다.
FireFox
OpenSearch에서 정의한 대로 Search Provider XML을 작성해서 searchplugins 폴더에 놔 두면 된다.
MacOSX용 FF의 경우라면 Package 내 Contents/MacOS/searchplugins/ 에 해당한다.
직접 편집하는 만큼 자유도가 높다.
재밌는건 아이콘을 넣을려면, Base64로 인코딩 된 스트링을 알아야 하는데, 내 경우에는 아이콘 파일을 나한테 보내서
메일 메시지의 [본문 원본보기] 로 알아냈다. (아마 더 낳은 방법이 있을거 같은데…. 암튼.)
Microsoft IE7 도 OpenSearch 표준에 참가해서 IE 7 부터 FF 와 같은 방식의 SearchProvider를 제공한다.
FF와 같은 표준을 구현하였기에 대략 비슷하지만 각각 차이가 있다.
FF가 icon을 제공하는데 반해 IE는 제공하지 않는다.
FF, IE 모두 남들(혹은 서비스 제공자)가 만들어 준 SearchProvider를 쉽게 추가할수 있다.
하지만 IE에 좀더 후한 점수를 주고 싶은 건 [Find more Provider] – [직접 만들기] 기능이다.
naver 사전이나, 가격 검색 등은 남들이 만들어 주겠지만, 나만을 위한 SearchProvider는 제공 받을리 만무 하다.
이럴때 FF는 내가 직접 XML을 편집해서 만들 수 있지만, xml 편집 조차 부담스러워 하는 사람들에게는 IE의 [직접 만들기] 기능은 상당히 매력적이다.
sogudi가 UTF-8만 지원하는데 반해, [직접만들기]-[여기를 클릭]을 누르면 입력 옵션이 더 늘어서 인코딩 등을 추가 설정해 줄수 있다.(국내 사이트를 위해서 중요하다.)
safari의 sogudi의 @@@ 처럼 검색어를 대문자 TEST로 해서 입력하고, 이름을 입력하고 바로 밑에 있는 [설치] 단추를 누르면 끝.
한동안 시장 점유율만 믿고, IE6에서 개발을 한동안 중단했던 거만함도, MS가 몇년전부터 노래부르던 UX를 위해 IE7을 통해, 그동안 아쉬웠던, TabBrowsing, RSS 지원, OpenSearch 등등 긍정적인 방향으로 나아가는거 같다.
본인의 경우는 각종 사전류, 회사 프로젝트에 사용하는 trac, 그리고 내 블로그 검색 용으로 개인용 SearchProvider를 만들어 사용하고 있다.
허접하지만 내가 만든 Xml Viewer이다. xml 파일을 끌어다 속성창에 떨어뜨리면 swing tree 보기로 보여주는데, exception 처리를 거의 하지 않아 외부 entity나, dtd를 참조하거나 하면 여지없이 exception 발생
암튼 본인 업무상 쓸일이 있어서 만들었다.
일반 macosx용 응용프로그램 처럼 보이지만 패키지 보기로 보면 jar로 묶인 자바 프로그램이란 걸 알 수 있다.
일반 macosx용 응용 프로그램 처럼 더블클릭으로 수행되며, 독에 포함 할 수도 있다.
ANT를 사용한다면 sorceforge에서 JarBundler라는 Task로 제공되어 쉽게 jar를 mac App로 만들어 주나 본데, 패키지 않에 있는 inpo.plist만 수정해주면 금망 jar로 mac App로 변신 가능
스크린 샷에서 처럼
Root-Java-
Unix스타일의 프로그램 파라미터 처리를 해주는 모듈이 Getopt인데
자주 사용하다 보니 codesnipet으로 사용하려고, 내가 사용하는 템플릿을 여기에 등록해 둔다.
main::HELP_MESSAGE(), main::VERSION_MESSAGE() 를 구현해 두면 – -help, – -version 옵션에 반응하고, getopts(c:hv)에 사용할 옵션들을 나열하면 된다.
위 예에서 c뒤에 : 의 의미는 파라미터를 받는 다는 의미이다.
입력된 파라미터는 $Getopt::Std::opt_c로 사용할 수 있다.
#!/usr/bin/perl
# vim: set sw=4 ts=4 si et nu:
use strict;
use Getopt::Std;
########################################################
# Global settings
########################################################
$Getopt::Std::STANDARD_HELP_VERSION = 1;
sub main::VERSION_MESSAGE(){
print "$0 Version 0.5 hyeonkwen@gmail.com";
}
sub main::HELP_MESSAGE(){
print <<END;
Description of this program.
Usage: $0 OPTION DIRECTORY
OPTION
-c description of c option
-h view help message
-v view version information
END
}
장마라, 별 볼일 없지만, 날씨 좋은날 주말이 다가오면 자주 찾아가는 곳 중의 하나가 기상청 위성 사진 페이지이다.
그래서 기상청에서 현재 위성 이미지를 가져와서 보여주는 페이지를 astro 메뉴 밑에 작성하려고 짜 보았다.
php에서 httprequest 같은거 없나 하고 한참을 찾았는데, 그냥 파일처럼 처리하면 되네…
역시 모르면 고생…