"Blog"에 해당하는 글들
페이지:«1...22232425262728...46»

하늘이 특별활동비 영수증 – 소울이터 버전

2009-03-04   //   alexken작성   //   하늘이  //  No Comments

하늘이가 드디어 만 3세. 구립 어린이집에서 배우는 러닝 아이템 4개 추가. 영어, 체육, 과학, 미술.

근데 가장 중요한 과목인 마법은 빠졌있다.

잘못된 選挙로 인해, 10년간 封印(봉인)되었던 売国과 独裁의 結界(결계)가 풀려 사악한 악령이 지배하는 좌우 대칭의 시메토리(Symetric)의 바란스가 붕괴된 이 도시를 데스사이즈의 武器가 되어 職人(장인)의 영혼의 파장과 공명하여 鬼神과 魔女로 부터 魂(영혼)을 구하라. 이성으로 규율을 지키며 강해질수 있다는 것이 착각이 아니라는 것을 증명하라.

건전한 영혼은 건전한 정신과 건전한 육체에 담긴다.

Safari4 그리고 이미지 그라데이션.

2009-02-25   //   alexken작성   //   기술  //  1 Comment

평상시 RSS 피드를 구독하는 미남이의 이러쿵저러쿵사이트에서 Safari4에 대한 소개글을 봤다. 어제 Safari4 beta를 설치해서 사용하는 지라 그냥 넘어가려는 찰라 Welcome to Safari4라는 이미지 밑에 그라데이션에 눈이 갔다. 통이미지 일줄 알았는데, 영역 선택해 보니까 그렇지 않았다. 그래서 소스 보기를 해보니 img 태그에 style에 못보던 속성이 들어있어

아예 CSS에 통으로 적용해 버렸다.

img {
    -webkit-box-reflect: below 0 
    -webkit-gradient(linear, left top, left bottom, 
                     from(transparent), 
                     color-stop(0.5, transparent), 
                     to(rgba(255, 255, 255, 0.4)));
}

이렇게 말이다.

아마도 webkit을 사용하는 Safari와 Chrome에만 적용될거 같은데 이전 포스트의 그림은 이렇게 보이게 된다.

좀 사용해보고 유치하다 느껴지면 그때 내려야 겠다.

PERFECT BALANCE

2009-02-14   //   alexken작성   //   인생  //  No Comments

회사 동료가 우연히 발견해 알려준 게임 아침에 몰래하다 팀장님께 걸린 게임 점심시간에 다시오셔 아까하던 게임 URL 알려달라 하신 게임

PERFECT BALANCE

게임 방법은 따로 설명할 필요 없이 지구에서 하루이상 살아본 사람이면 직관적으로 바로 플레이 할 수 있다. 많은 물리 법칙이 동원된다.

중력, 마찰, 아치교의 원리, 무게중심…

퇴근후 3시간 정도 걸려 마침 클리어.. HARMONY 모드 40판을 다 깨면 INFERNO 모드 40판이 활성화 된다.

INFERNO모드 클리어 후 그 인증 샷

MacOSX에서 flac파일을 mp3로 transcoding 하기

2009-02-12   //   alexken작성   //   기술  //  No Comments

이전글에 이어서 flac을 mp3로 바꾸는 방법

하드를 정리하다 보니 flac파일이 나왔다. 이를 iTunes에 등록하기 위해 뒤져보니 xld라는 툴이 있었다.

xld에 가서 UI없는 Command-line version을 다운 받아서 /usr/local/bin에 복사해두고

sudo mv xld /usr/local/bin

이전과 마찬가지로

flac --> wav --> mp3

xld를 통해 wav로 변경후 lame으로 다시 mp3로 변경하는 방식을 취했다.

굳이 내가 사용한 명령어를 적어보자면

find . -name "*.flac" -exec xld {} \;
find . -name "*.wav" -exec lame -h --vbr-new -V2 {} {}.mp3 \;

로 했는데, 자주 사용할꺼라면 bash로 묶는것도….

MacOSX에서 ogg파일을 mp3로 transcoding 하기

2009-02-08   //   alexken작성   //   기술  //  1 Comment

ogg파일로 받은 파일이 있어서 iTunes에서 듣기 위해 mp3로 변경할 필요가 있었다.

port가 깔려 있다면

sudo port install vorbis-tools
sudo port install lame

port가 깔려 있지 않다면 http://www.macupdate.com/info.php/id/18882

ogg를 먼저 wav로 풀고

oggdec file.ogg

wav를 다시 mp3로 변경

lame -h –vbr-new -V2 file.wav file.mp3

iCal을 이용한 EPG

2009-01-31   //   alexken작성   //   기술  //  3 Comments

EPG(Electronic Program Guide) 방송 편성표를 어떻게 하면 쉽게 볼 수 있을까 하다가,

  1. xml을 xslt를 이용해 html로 변환
  2. RSS형태로 publishing

을 생각하다가 iCal에서 사용하는 ics 형태로 하면 iCal이 알아서 다 표현도 해줄것이고,

  • MacOSX에서는 iCal에서 구독 하면 되고
  • iCal과 동기되는 iPod Touch/iPhone에서도 볼수 있고
  • Windows Vista도 ics를 지원하는 캘린더가 기본 포함 되었고, 아마 Outlook도 지원할것이고
  • Google Calender도 같은 ics를 구독하면 언제 어디서나 볼수 있고

그래서 EPG 데이터를 ICS 포맷으로 변환하면 멋지겠다는 생각이 들었다.

방송사 별로 ICS를 생성하고 각 방송사 별로 ICS는 최대한 추려서 다음과 같이 쓰기로 했다.

BEGIN:VCALENDAR
PRODID:-//TTA//EPG DATA//KO
VERSION:2.0
CALSCALE:GREGORIAN
METHOD:PUBLISH
X-WR-TIMEZONE:Asia/Seoul
X-WR-CALNAME:MBC
BEGIN:VEVENT
DTSTART:20090131T223500
DTEND:20090131T235500
UID:MBC20090131T223500
CLASS:PUBLIC
DESCRIPTION:장르 : 연예/오락-토크쇼
출연 : 윤종신,김국진,김구라,김성주,신정환,이하늘,박미선
연출 : 여운혁,김유곤
SUMMARY:명랑 히어로
TRANSP:OPAQUE
END:VEVENT
END:VCALENDAR

ruby로 만든 ics를 iCal에서 읽어보니 결과는 일단 성공…

대충 상상했던 EPG형태로 보여주기는 하나, 실생활에 편히 쓸만큼 보기 편한거 같지는 않다.

그리고, 당장 쓰기에는 또 다른 문제가 좀 있다.

  1. 주기적으로 책임감 있게 변환 script를 돌려줄 서버가 필요하고,
  2. CalDAV로 iCal에서 쓰려면 WebDAV 호스팅이 되어야 하는데, 그렇지 아니하고,
  3. ics로 변환해서 그냥 web에 두고 google calendar에서 구독하면 그걸 다시 iCal에서 불러올 수 있다. 그래서 google calendar에서 읽어보니 한글이 깨진다… (분명 UTF-8으로 저장되어 있는데, KSX1001을 UTF-8으로 읽었을때 처럼 깨진다..)

OTL 일단 오늘은 여기까지…..

XSLT로 만든 XMLViewer

2009-01-30   //   alexken작성   //   기술  //  No Comments

xml의 많은 장점에도 불구하고 떨어지는 readability엔 불만이다. 업무상 xml을 자주 만지다 보니 xml 내의 정보를 쉽게 보는 도구가 간절했고, 그래서 예전에 java로 만든 TreeView 형태의 XmlViewer도 만들었다.

이번에는 xlst로 만들었는데 생각보다 깔끔하고 맘에 든다. TreeView 형태보다 쉽게 포함관계를 표현한다.

맨 처음, element와 attribute를 일일히 지정하면서 xslt를 작성하다 보니 1000라인이 넘어 섰다. 그래서 거의 90% 완성된 시점에서 처음부터 다시 시작해 element와 attribute의 이름을 지정하지 않는 형태로 바꾸었더니 css, javascript를 포함해서 120라인 가량으로 끝낼 수 있을 뿐더러 특정 dtd/schema의 xml 뿐만 아니라 범용 XMLViewer로 사용가능해 졌다.

만들다 보니 포함관계만 표시하는 심플한 뷰, 모든정보를 빠짐없이 보여주는 뷰를 표현하기 위해 javascript를 이용했고 web에서 찾은 코드를 근간으로 했는데 원리는 숨기거나 보여질 영역을

으로 설정한뒤 해당 class를 가지는 element를 돌면서 처리하는 루틴이었다.

문제는 C 스타일의 for 루프문

for( var i=0; i<max ; i++){
   BLOCK;
}

이 내가 주로 사용하는 브라우저인 safari에서는 돌지 않았다.

그래서

for( var i in Collection){
   BLOCK;
}

형태로 바꿔서 브라우저 의존성을 제거하고,

포함관계를 색상으로 표현하기 위해서 CSS에서

*              {background: none;}
div            {background: #6666ff;}
div>div        {background: #7777ff;}
div>div>div    {background: #8888ff;}

형태로 가능했다.

내가 javascript/CSS 쪽은 거의 문외한이라 이게 최적의 코드인지는 모르지만, 내가 원래 의도했던 기능이나 목표는 다 동작해서 맘에 든다.

그리고 지금까지

< xsl:apply-templates/>

는 select로 자식 element를 지정해야지만 되는줄 알았는데, 그냥 apply-templates만 불러주니 알아서 자식 element들을 알아서 불러주네…(오늘 첨 알았음 ^^;)

Simple View

Complex View







XML Viewer

div.element{
    float:      left; 
    display:    block; 
    padding:    1em;    
    border:     solid 1px black;    
    margin:     1em;
}

/* 
    element의 이름과 attr을 header-area로 싸는 이유
    attr 옆에 하위 element가 붙는게 보기 싫어서...
    정답은   overflow:auto;
*/
div.header-area{
    overflow:         auto;
    background:  none;
}

div.attr{
    float:            left; 
    margin-right:  2em;
    background:  none;
}

i.att_name{ color:  #333333}
i.att_value{ color: #666666}

/*
    nested elemement를 다른 색으로 표시하기
    이게 제일 좋은 방법인지는 모르겠지만...
*/
*                                        {background: none;}
div                                      {background: #6666ff;}
div>div                                  {background: #7777ff;}
div>div>div                              {background: #8888ff;}
div>div>div>div                          {background: #9999ff;}
div>div>div>div>div                      {background: #aaaaff;}
div>div>div>div>div>div                  {background: #bbbbff;}
div>div>div>div>div>div>div              {background: #ccccff;}
div>div>div>div>div>div>div>div          {background: #ddddff;}
div>div>div>div>div>div>div>div>div      {background: #eeeeff;}
div>div>div>div>div>div>div>div>div>div  {background: #ffffff;}


 

    function toggle(obj){
        if(obj.style.display != "block")
            obj.style.display = "block";
        else 
            obj.style.display = "none";
    }

    function toggle_all_attr(){
        var divs = document.getElementsByTagName('div');
        var tcl = " attr ";
        for( var i in divs ){
             var test = " " + divs[i].className + " ";
             if(test.indexOf(tcl) != -1){
                toggle(divs[i]);
             }
        }
    }




    

simple/complex


Perl One Liner

2009-01-28   //   alexken작성   //   기술  //  No Comments

주로 하는 짓거리가 텍스트를 가지고 조물락 거리는 거라, Unix에서 find, sed, awk 조합으로 어지간 한거는 bash/perl/ruby까지 가지 않고 처리하고 있지만,

파일을 열어, 수정하고, 다시 저장하려면, open 한 파일과 save할 파일이 동일해서, 파이프( | ) 를 이용해서 tmp파일을 만들고는 하지만, find -exec 속에서 파이프를 쓸 수가 없어서 이럴때는 perl one liner가 제격이다.

자주 쓰는 Perl one liner…

find . -name "file.*" -exec perl -i -pe 's|BEFORE|AFTER|g' {} ;

그 밖의 perl one liner 링크1, 링크2

페이지:«1...22232425262728...46»