"기술"에 해당하는 글들
페이지:«1...9101112131415...21»

iPod touch 2세대 OS 3.0 정식 버전 설치

2009-06-18   //   alexken작성   //   기술  //  1 Comment

지금까지는 beta 였다가 오늘 정식 버전을 설치했다. 달라진건 아무것도 없어 보인다. 신기할 것도 없고…

하지만 beta때 돌지 않았던 다음맵도 돌고, 유료도 구입하고도 beta와 호환되지 않아 그동안 사용하지 못했던 iStella도 돌았다. 내가 사용하는 어플중에서 beta때 돌지 않았던 건 모두 돌아가니 불만이 없어졌다.

그리고 내친김에 지난번 실패했던 Philips SHB7100 블루투스 헤드셋과 연결해 보았는데, PIN 넘버 0000으로 페어링에도 성공했고, 사진에서 처럼 지난번과 다르게 블루투스에 불이 들어왔다.

하지만 여전히 itunes 소리는 내장 스피커로만 흘러나온다. 이거까지 성공했으면 대박인데, 오늘은 일단 여기까지…

아이폰나올때까지 좀더 가지고 놀아야 겠다.

한국어 Wikipedia가 금딱지 둘렀네…

2009-06-11   //   alexken작성   //   기술  //  No Comments
wikipedia wikipedia

오늘 무심코 Wikipedia를 보고 있는데, 왼쪽 상단의 Wikipedia 마크가 100000+ 을 축하하는 금딱지로 바뀌어 있었다.

언제부터였는지, 지금에 와서 이글을 쓰면 얼마나 뒷북일지는 모르지만, 혼자서 축하하면서 기념 포스팅…

다음에서 유료로 확보한 백과사전 컨텐츠를 Wikipedia 재단에 기증하고 Wikipedia 재단 이사장이 한국에 방문도 했다는 기억이 어렴풋이 났다.

비록, 일본 바로 다음이긴하지만 Top 클래스 국가에 들어갔다는게 , 다소 뒤늦은 감은 있지만 지금이라도 위안+축하

wikipedia

Mac 사용자의 최고의 Twitter Client – Google Quick Search Box

2009-06-11   //   alexken작성   //   기술  //  4 Comments

Spotlight 때문에 요즘은 시들해 졌지만, Mac 사용자라면 다 알만한 QuickSilver란 프로그램 있었다.

이거 만들던 사람이 Google 입사후 만들었다고 해서 설치해 보았다.

Google Quick Search Box

Quick Silver나 Spotlight 처럼 파일도 찾아주고 어플리케이션 런처로도 사용할 수 있고, 수식 입력하면 계산도 해주고…. 여기까지는 똑같다.

그런데 패키지 보기해서 plugin 폴더를 들여다 보면 뭔가 심상찮다.

그중에서 눈에 띄는게 Twitter.hgs 란 트위터 플러그인이 보인다.

사용방법은

  1. Preference에서 Twitter 계정을 입력해두고,
  2. Cmd + Cmd를 두번 눌러 Google Quick Search Box를 띄우고
  3. 트위팅 하려는 문장을 입력하고
  4. Google Search 서브 항목인 Send Twitter Status를 선택하면 끝.

길어보이지만 다시 정리하면

  1. Cmd+Cmd : 트위팅 하려는 문장 : ↓→↓ 화살키 : Enter키 순서로 입력하면 끝.

하지만 가능한 Twitter는 PC를 이용하기 보단, 지금처럼 iPod Touch를 이용해서 올릴려고 한다. 왜냐면 나에게 Twitter는 Blog라기 보다는 상태정보를 포함한 나의 Presence 정보라고 생각하기 때문이다.

추가

  1. Terminal.hgs, Weather.hgs 등등은 어떻게 쓰는지 궁금하다.
  2. 띄우고 인덱싱 시간 없이 바로 돌아가는거 봐서 SpotlightFiles.hgs로 서로 연동하는거 같다. (요구조건도 Leopard 이상을 요구하는 것도 그렇고…)

iPod touch 2세대 OS 3.0 beta 5 설치와 블루투스

2009-05-13   //   alexken작성   //   기술  //  3 Comments

iPod touch 2세대에 3.0 OS beta 5를 설치 하였다.

  1. MacOSX도 10.5.7로 업그레이드하고
  2. iTunes도 8.2 prerelease로 업그레이드하고서 했다.

3.0에서 블루투스가 들어간다는 소식은 알고 있었지만, 설정 메뉴에 보이니 반가왔다. 3.0 정식이 나오고 9$ 정도에 액티베이션 하고나서 사용가능하다고 알고 있었는데 혹시나 하는 호기심에 설정에서 블루투스를 켜고,

무선 헤드셋을 가져가니 찾는게 아닌가???

bt30

필립스 SHB7100이라고 마이크 내장된 헤드셋인데, 검색한 장비를 선택하면 PIN 넘버까지 물어본다. 0000을 입력하니, PIN이 잘못되었다고 나오는데 좋다가 말았다.

아마도 정식 나오고 활성화 되고 나서 연결가능할 거 같다. 위에 블루트스 상태도 흑백인 거 보니…

한가지 아쉬운 점은 검색모드에서 키보드, 핸드폰… 기타 블루투스 장비도 알짱 거려 보았는데 검색이 안되었다. 아마 헤드셋 프로파일만 추가된거 같다. 다른건 몰라도 블루트스 키보드 만큼은 추가되기 간절히 바랬건만….

그래도 아직 포기하지 않겠다. 정식때, 아님 추후라도 해주길 바라며….

PS. 주말에 장보면서 산 iPod용 마이크 달린 이어폰이 있으니 한동안은 이걸로 Skype 이용하면 될듯.

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에만 적용될거 같은데 이전 포스트의 그림은 이렇게 보이게 된다.

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

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


페이지:«1...9101112131415...21»