레이블이 etc인 게시물을 표시합니다. 모든 게시물 표시
레이블이 etc인 게시물을 표시합니다. 모든 게시물 표시

2008년 8월 5일 화요일

Bang == !

!

Douglas Crockford 님의 "The JavaScript Programming Language 1/4"강의에서 !를 Bang이라고 하더군요.
Wikipedia에서 검색해보니 다음과 같이 불린다고 하는군요.
  • exclamation mark
  • exclamation point
  • screamer
  • bang - "Bang" is also common in computer programming slang
출처: Wikipedia, Douglas Crockford 님의 "The JavaScript Programming Language 1/4"

※ BANG 하니, 오랜만에 떠오르는 이 BANG도 있군요. (아.. 이놈의 덕후;;;)

2008년 7월 16일 수요일

서울한강체와 서울남산체

미남이님의 블로그에서 서울서체인, 서울한강체와 서울남산체를 소개하는 포스트를 보았습니다.

음.. 좋군요 ^^. 서울색이라는 항목도 있습니다.

http://design.seoul.go.kr/policy/data_view.php

출처


2008년 7월 6일 일요일

비즈니스 블로그 서밋 2008 후기

뒤늦은 '비즈니스 블로그 서밋 2008 후기'입니다. ^^;;;
비즈니스 블로그 서밋의 정식 명칭(?)은 "비즈니스 블로그 서밋 2008 소셜미디어, 블로그를 통한 PR과 마케팅"입니다. 개발자가 쌩뚱맞게 마케팅 행사에 왜 참여했냐고 하실 수도 있겠지만, 블로그가 어떤 방향으로 발전할 지, 어떤 개발이 필요할 지 궁금했기에 참석을 했습니다.

제가 들었던 세션 오전에 공통으로 진행되었던 General Session과 세션1 "PR, 미디어 환경의 변화와 사례발표" 이였습니다.

 공감이 가지 않았던 세션
가장 공감이 안가던 세션은 플래시먼힐러드 대표이신 박영숙님의 "Web 2.0과 PR, 미디어 환경의 변화"와 서울시청 뉴미디어홍보팀 김호길 님의 "서울 in Blog 사례발표"였는데요.

박영숙님의 세션의 경우 기억에 남는 얘기들은 플래시먼힐러드 "본사의 회장님께서 오셔서 Web 2.0에 대해서 이렇게 해야된다고 했다"라는 얘기가 대부분이고 본인의 입장에서 이야기를 풀지 못하였다는 점이 매우 아쉬웠습니다. (반대로, 한국의 시장에서 Web 2.0에 대한 공감이 발생하지 않았기 때문에 본인의 입장에서 풀지 못하셨을 수도 있겠다는 생각도 듭니다. 본 세션에서 가장 큰 비공감은 플래시먼힐러드 소개시간이 매우 길었다는 점일지도 모르겠습니다.)

서울 시청의 김호길님의 "서울 in Blog 사례발표"에서는 싼 값에 블로그의 내용이 포탈에 노출되었고 이를 통해 저렴한 비용으로 광고를 하였다.라는 얘기가 대부분이여서 공감이 많이 떨어지더군요. (사실, 세션 시작 전에 시청일이 바쁘셔서 많은 준비를하지 못하셨다고 양해를 구하셨습니다.)

 가장 공감이 갔는 세션
반대로 가장 공감이 갔던 세션은 더랩에이치의 대표이신 김호 님이 발표하셨던 "소셜미디어와 기업의 위기관리  - Bad News 2.0의 중심 맥락과 결론"과 태터앤미디어의 김창원님이 발표하셨던 "TNC 블로그의 과거 현재 미래"였습니다.

김호 님의 Bad News 2.0에서는 Log tail 법칙을 통하여 어떻게 Bad News 2.0이 등장하게 되었는 지 이들이 어떠한 영향력을 갖는 지를 설명을하고 이들에 대한 대처하기 위해서는 결국 기업이 소셜 미디어 기업이 되어야 한다는 결론을 얘기하셨는데요.
사용자 삽입 이미지

김호 님의 Bad News 2.0 발표 자료


  1. Long tail의 경제 법칙은 Bad News에도 적용될 수 있다.
  2. 생산도구(글 쓰는 도구)가 쉽고 저렴해질 수록 인기도가 높아지며, 꼬리가 더 길어진다.
  3. 주류 언론 중심으로 생산되었던 Bad News(Bad News 1.0)가 소셜미디어 중심의 Long Tail 부분에서도 발생하게 된다. (Bad News 2.0)
  4. Bad News 2.0(블로그) 각각은 Bad News 1.0(미디어)이 가졌던 영향력보다는 작지만 링크, 트랙백 등을 통하여 연결, 대화가 활발하게 발생하여 더 큰 영향력을 발휘할 수도 있다. (이러한 영향력은 Bad News 1.0과 상호 작용을 하게 된다.)
결론: 따라서, 기업은 Bad News 하나하나에 대해서가 아닌 Bad News의 Marketplace에 집중해야 한다.

흙을 안 묻히고 가면 진흙탕에 빠질 수 있다. 따라서 을 묻히면서 가는 홍보를 하는 수 밖에 없다. (Cool Crisis Communication, 2007.12.13. 비즈니스 블로그 마케팅 세미나, 김호)

  1. 통제보다는 소비자와의 대화를 통해서 우리 쪽으로 끌어들여라(Contain)
  2. Bad News에 대해서 피하기 보다는 언급(Address)해라.
  3. 흙이 묻었으면 묻었다고 해라. (Disclosure)
  4. CI(Corporate Identity)도 중요하지만 소셜미디어에서는 PI(People's Personality)가 더 중요하다.
  5. 보여주기보다는 소셜 네트워킹을 해라(대화를 통한 관계를 맺어라.)
Web 2.0 시대에 모든 기업은 소셜 미디어 기업이 되어야 한다. 따라서
기업 블로깅은 놀라울 정도로 중요하다.
김호 님의 세미나는 처음 들어봤었는데 매우 쉽게 왜 기업이 블로깅을 해야하는지 명쾌하게 설명을 하시더군요.

김창원 님의 "TNC 블로그의 과거 현재 미래"에서는 TNC의 Textcube.com이 어떠한 고민을 해왔고 이러한 고민들을 해결하기 위해서 이러한 기능들이 추가되었다는 발표를 하셨는데요.
사용자 삽입 이미지

발표자이신 김창원님의 블로그(http://memoriesreloaded.net/profile/)로 사용자의 프로필과 관심블로그를 통해 소통을 강조.


  1. 사람들은 누구나 창작의 욕구(UCC, Flickr, 홈페이지와 같은 미디어성 서비스)와 소통의 욕구(E-mail, 메신저, SNS, Twitter와 같은 관계성 서비스)를 가지고 있는데 기조에는 소통보다는 창작에 무게를 두었었다. (관심블로그 등록을 통한 네트워크 형성)
  2. 블로그가 소통하는 방법으로 댓글과 트랙백 등이 있으나 누구인지에 대해서는 알 수 있는 방법이 잘 없다. (Profile의 제공)
  3. 네트웤을 들여다보면 소수의 파워블로거들에만 네트웤이 집중되는 현상을 볼 수 있다. 우리 모두는 스타가 될 수는 없었지만, 누군가에게는 어느 분야에서는 스타가 될 수 있게 하고 싶었다. (관심 블로거를 시스템에서 추천)
  4. SNS가 알던 사람, 인맥 위주라면 블로그에서는 몰랐던 사람 관심사 위주로 모이게 된다. 개인의 관심사가 자동으로 추출되고, 이를 기반으로 소셜 네트워킹이 형성되고 싶었다. (Expert tag)
  5. 좀 더 쉬운 UI로 다가가고 싶었다.
이 외에도 다른 글에 다는 덧글을 자신의 블로깅으로 가지고 올 수 있는 기능(Comment Reblog), 꾸미기/위젯 기능에 대한 소개도 해주셨구요.

미래에는 Profile, Relationships, Activities, Business model의 Open과 자신의 URL이 E-mail, Social Network, 다른 블로그의 id 등으로 쓰일 수 있도록 브랜드를 갖출 수 있게 하는 방향과 대화를 이끌어내는 Long-form 형태의 건텐츠를 생성하겠다는 등의 얘기를 해주셨습니다.

자신만의 철학을 갖고 그 철학을 기능에까지 반영할 수 있는 TNC의 모습이 너무 부럽더군요.

 비슷하면서도 다른
이 외에도 명승은 님의 "Blog & Social Media"와 에델만 코리아의 이중대 님의 "비즈니스 블로그 운영 A부터 Z까지"도 재미있는 세미나였습니다. 재미있는 것은 두 세미나 모두 기업의 블로깅에서 강조를 하였지만 서로 반대되는 입장도 볼 수 있었는데요.

명승은 님은 "솔직하게 열린 자세"로 블로깅을 하려면 하고, "짧은 기간, 의도된 입소문, 긍정적 메시지만, 싼 값에, 경쟁사도 있으니, 하라고 해서, 임원 대신해서" 할거면 블로깅 해서는 안된다는 점을 강조하셨는데요.

반면에, 에델만코리아의 이중대 님은 비즈니스 블로그를 기업 PR의 새로운 도전 및 기회의 요소로 보면서 블로그 운영 정책을 통하여 블로깅하는 컨텐츠를 통제하고 댓글에 대한 필터링, 코멘트에 대한 가이드라인에 대한 강조를 하셨습니다.

재미있는 것은 Step 7: 코멘트 정책 마련하기라는 슬라이드를 설명하면서 덧글에 대한 비승인 또는 삭제하는 사유를 설명할 때 많은 청중들이 열심히 받아 적으시더군요. 아직은 블로깅이 기업과 고객의 대화창구, 네트웤이라기 보다는 PR의 한 요소로 고려되는 부분이 많이 아쉬웠습니다.

 그리고...
세미나의 스타는 역시... 자칭 왕자님(?)이셨던 김안과병원의 김성주 님이 아니셨나 싶습니다.
기업 블로깅에서 기쁨과 고민을 얘기해주셨던 김성주 님의 세미나도 많은 도움이 되었습니다. ^^
사용자 삽입 이미지

관련링크 : 한국블로그 산업협회(KBBA), 세미나 강의 자료

P.S > 블로그 글을 다 쓰고보니 한국블로그 산업협회의 블로그에 "본 자료의 저작권은 강연자에게 있으며, 무단전재나 강연자의 동의없이 이용을 하실 수 없습니다"라는 문구를 보았습니다. 혹시 문제가 되는 부분있으면 말씀해 주시면 삭제하겠습니다. (__)

2008년 7월 4일 금요일

D-Day

갑자기 궁금해져서 D-Day를 찾아봤습니다.
The initial D in D-Day has had various meanings in the past, while more recently it has obtained the connotation of "Day" itself, thereby creating the phrase "Day-Day", or "Day of Days".
D가 Day였군요. H-Hour도 있더군요. D 또는 H 뒤에 +-를 붙여서 D 또는 H의 시간에 발생할 사건 앞 뒤의 시간을 지정한다고 합니다. (음.. 다 아시는 얘기?) 그런데, Wikipedia에서 들어논 예시문을 보면, D-3은 3일 전 D+3은 3일 후, H-3은 3시간 전이 되는데, H+75는 사건 발생 후 한 시간 15(25)분 뒤군요.
Thus, H−3 means 3 hours before H-Hour, and D+3 means 3 days after D-Day. H+75 minutes means H-Hour plus 1 hour and 15 minutes.
이 뭥미;;;;

출처: D-Day from Wikipedia

2008년 5월 27일 화요일

CVS나 Subverion의 설명(Comment)을 어떻게 달 것인가?

CVS나 Subversion을 사용하여 소스를 커밋할 때, 개발자들의 각각의 취향에 따라서 설명(Annotation, Comment)를 취향대로 달게 됩니다. 어떤 분은 아무 내용없이 "."만 입력하시는 분도 있으며, 어떤 분은 "버그 수정"만 입력하시는 분도 있고 어떤 분은 "A라는 기능 추가와 B라는 기능의 부분 수정"이라는 추상적 기록을 남기시는 분도 있고 어떤 분은 "1. A의 기능 추가, 2. 어떤 기능 수정..." 등등 상세하게 기록하는 분들도 있습니다.

The Red Bit Blue Bit Blog의 "Subversion Check-in Comment - Great Practices" by John Uhri에 이러한 커밋 시 설명을 어떻게 달면 좋을 지에 대한 글이 올라왔는데요. 요약해서 정리하면 다음과 같습니다.
  1. 각각의 설명을 Added, Changed, Fixed, Deleted 네 가지의 카테고리로 나누어서 정리합니다.
  2. 각각의 설명이 트렉의 티켓이나 버그질라의 버그번호 등과 관련이 있는 경우 해당하는 링크를 함께 표기합니다.
사용자 삽입 이미지

이렇게 함으로써 얻는 효과는 큰 카테고리를 설정함으로 커밋된 내용이 어떤 내용인지를 한 번에 알 수 있게 해줍니다. 큰 카테고리 아래에 세부 사항을 적어야 하므로 기존 보다 좀 더 상세하게 적는 효과도 얻게 될 수 있습니다.

커밋 설명(Comment)를 어떻게 표기할 지 고민된다면 위의 방식을 도입해보는 것도 좋은 시도가 될 수 있을 것 같습니다. "버그 수정", "기능추가"로 끝나는 것보다 훨씬 낳겠죠? ^^

출처:


2008년 4월 1일 화요일

OAuth??

요즘 OAuth에 관한 얘기가 많이 들려서 검색을 해봤습니다.  ^^
두 분의 글을 읽으니 뭔가 감이 잡히는 것 같기는 한데 어렵네요;;;;

2008년 3월 3일 월요일

IDL(Interface Definition Language)의 상속(Inheritance)

DOM Core에서 DOM interface를 정의하는데 IDL(Interface Definition Language, 정확히는 OMGIDL)를 사용합니다. OMGIDL로 모두 정의되어 있는 내용은 DOM Core의 Appendix C- IDL Definitions에서 보실 수 있습니다.

사용자 삽입 이미지

위와 같은 코드를 영어로 표현하자면, 'Element interface is derived from Node interface'가 되겠지요. 즉, inherited로 표현이 됩니다. OMGIDL 스펙의 Interface Inheritance 항목을 보시면 상세히 보실 수 있습니다.

사용자 삽입 이미지
하고 싶은 얘기를 정리하자면, Element 인터페이스는 Node 인터페이스를 상속받았다는 얘기를 하고 싶을 따름입니다.

출처:

2008년 2월 6일 수요일

Graphviz

Graphviz(Graph Visualization Software)
Graphviz를 처음 접하게 된 것은 Doxygen 때문이었습니다. Java로 프로그램을 문서화할 때 클래스 다이어그램을 짚어넣어 주었으면 하는 바램으로 여러 툴을 찾아봤었는데 당시에는 Doxygen 밖에 없더군요. Doxygen에서는 그래프를 그려주기 위해서 이 Graphviz를 사용하고 있구요.

Introduction
요즘에 만들고 있는 JavaScript Bulid 툴(실제로는 JsDoc-toolkit과 JsLint, YUI-Compressor 등을 한 번에 구동하는 php 프로그램입니다.)에 클래스 다이어그램이 있으면 좋겠다는 개인적인 생각에, Graphviz를 다시 보게 되었습니다.
사용자 삽입 이미지

Wikipedia의 소개에 따르면,
  • Graphviz는 AT&T의 연구소에서 DOT 스크립트 언어를 사용하여, 다이어그램을 그리기 위해서 만들어진 프로그램이라고 합니다.
  • 오픈소스이며, CPL(Common Public License)를 사용하고 있습니다.
  • 다른 소프트웨어에서 라이브러리로 사용할 수 있는 기능도 제공되고 있습니다.
Graphviz는 그래프를 묘사하는 언어인 DOT language를 사용하여 Graph를 정의하고 이 정의한 내용을 필터를 통해서 다양한 이미지 포멧으로 생성하게 됩니다.

Usage
1. Graphviz를 사이트에서 다운로드하여 설치한 후에, GVedit을 실행하면 다음과 같은 창이 뜹니다.
사용자 삽입 이미지

2. File > New 또는 툴바의 세번째 아이콘(New File)을 클릭해서 Graphviz 새 창을 띄웁니다. 다음과 같이 입력 합니다.
사용자 삽입 이미지

3. Graphviz Settings 창을 띄워서 Layout Engine과 출력 파일에 대한 내용을 입력하고 OK 버튼을 누릅니다.
(레이아웃 엔진은 dot- command line tool, neato-undirected graph, twopi-radial graph, circo-circular graph, fdp, dotty, lefty 을 사용할 수 있습니다.)
사용자 삽입 이미지

4. 생성된  Graph를 확인한 후 이미지로 저장합니다. (dot을 레이아웃 엔진으로 사용하는 경우, undirected graph의 선이 그려지지 않는군요.)
사용자 삽입 이미지

DOT language
DOT 언어는 다이어그램을 정의하는 언어로 graphs, nodes, edges들을 정의할 수 있습니다. 그래프의 레이아웃은 크게 방향성 그래프(directed graph)와 비방향성 그래프인(undirected graph) 두가지로 나눌 수 있습니다. 각각은 digraph, graph 명령어를 사용하여 정의할 수 있습니다.

dot 레이아웃 엔진을 사용하게 되면 directed graph를 그릴 수 있고, neato를 사용하게 되면 undirected graph를 그릴 수 있습니다. 제가 본 튜토리얼이 dot을 사용하기 때문에, 모든 그래프는 digraph를 사용합니다.

directed graph의 간단한 사용 예제
// digraph는 방향성 그래프를 정의, digraph 뒤의 값은 그래프의 이름입니다.
digraph
GraphName {
    main -> parse -> execute;
    main -> init;
    /* 주석은 일반적인 주석 모두 동작합니다. */
    main -> cleanup;
    execute -> make_string;
    // 방향 선은 항상 '->' 붙여져서 선언되어야 합니다. '- >' 로 선언되면 처리가 안됩니다.
    execute -> printf;
    init -> make_string;
    main -> printf;
    execute -> compare;
}
결과:
사용자 삽입 이미지


 1. Node and Edge
Node의 디폴트 값은 shape=ellipse, width=.75 height=.5로 값이 설정되며, node의 이름이 label이 됩니다.
shape에 들어갈 수 있는 다른 값들은 box, circle, record, plaintext 등이 있습니다.

Node는 크게 두 종류의 도형으로 나뉠 수 있습니다. 하나는 다각형 기반(Polygon-based)의 도형과 리코드 기반(Record-based) 도형 두 가지로 나뉩니다.

1-1. Node와 관련된 기본적인 문법을 사용하는 경우
digraph GraphName {
    // graph의 크기를 설정합니다.
    size="3,3";

    // 전체 노드들에게 Verdana 폰트를 사용하도록 설정합니다.
    node [fontname="Tahoma", fontsize="10"];

    // main의 shape을 정의합니다.
    main [shape=box;];    

    // (integer)weight는 node와 node 사이의 간격을 정합니다.
    main -> parse [weight=0];   
    parse -> execute;

    // main과 init을 잊는 edge 스타일을 정의합니다. bold, filled 등의 값 설정 가능.
    main -> init [style=dotted];
    main -> cleanup;

    // execute->make_string;execute->printf;를 한 번에 표기합니다.
    execute -> {make_string; printf};
    init -> make_string;

    // label 설정 및 peripheries(표면)을 두 개의 선으로 처리합니다.
    // label의 값은 escape string처리됩니다. 공백도 '\ '로 입력해야 합니다.

    make_string [label="make a\n string",peripheries=2];

    // 이하로 설정되는 edge의 색을 red로 설정합니다.

    edge [color=red];

    // main과 printf를 잊는 edge의 label을 설정합니다.
    main -> printf [style=bold,label="100 times",fontname="arial"];

    // node의 도형을 설정합니다. 위에 설정된 node 값에 대한 설정은 상속
    node [shape=box,style=filled,color=".7 .3 1.0"];
    execute -> compare;
}
위의 다이어그램으로 생성한 결과는 다음과 같습니다.
사용자 삽입 이미지

Shape에 관한 기본적인 내용을 보시려면 여기, "Node Shapes" 항목을 참조해서 보시면 되고, Node, Edge, Graph에 설정할 수 있는 세부 속성들을 보시려면 여기, "Node, Edge and Graph Attributes"를 보시면 됩니다.

1-2. shape이 polygon인 여러 도형을 정의하는 경우
digraph G {
    // lightblue로 채워져 있고 3개의 선으로 둘러싸인 오각형 도형을 정의
    a [shape=polygon,sides=5,peripheries=3,color=lightblue,style=filled];
    // 사각형이나 40도 정도 기울어진 hello world 레이블을 가진 도형
    c [shape=polygon,sides=4,skew=.4,label="hello world"];
    // 엎어진 삼각형
    d [shape=invtriangle];
    // 아래 쪽으로 들어간, 뒤틀린 사각형
    e [shape=polygon,sides=4,distortion=.7];
    a ->b ->c;
    b ->d;
}
1-2의 예제의 결과
사용자 삽입 이미지
  2. Labels
node의 shape이 record와 Mrecord의 label을 사용하여서 shape 내부에 수직 또는 수평의 box를 넣을 수 있습니다.
  • label의 값을 구분하는 필드로 |를 사용할 수 있습니다. 연속하여 사용가능
    rlable -> field('|'field)*
  • 수직/수평의 방향은 {}를 사용하여 정의할 수 있으며, 중첩해서 선언이 가능합니다.
  • label 앞에 <>로 된 boxlabel을 선언할 수 있습니다.
    field->boxLabel|"rlabel"
    boxLabel -> ['<'string'>'][string]
digraph G {
     struct1 [shape=record, label="<f0> left|<f1> mid\ dle|<f2> right"];
    struct2 [shape=record, label="<f0> one|<f1>two"];
    // Mrecord는 모서리가 둥근 것을 제외하고는 record와 동일
    struct3 [shape=Mrecord, label="hello\nworld|{b|{c|<here> d|e}|f}|g|h"];
    struct4 [shape=record,
        label="{className|method1\nmethod2|property1\nproperty2}"]
    struct1 -> struct2;
    struct1 -> struct3;
    struct1:f2 -> struct4;
    left_indicator -> struct1:f0;
    right_indicator -> struct1:f2;
}
위 label의 결과는 다음과 같습니다.
사용자 삽입 이미지

 label을 이용하여 클래스 다이어그램 만들기 [예제 출처: UML Diagrams Using Graphviz Dot]
digraph G {
    // graph의 폰트 정의
    fontname = "Bitstream Vera Sans"
    fontsize = 8

    // node 공통의 폰트, shape 정의
    node [
        fontname = "Bitstream Vera Sans"
        fontsize = 8
        shape = "record"
    ]

    // edge 공통의 폰트, shape 정의
    edge [
        fontname = "Bitstream Vera Sans"
        fontsize = 8   
    ]

    // Anaimal node 정의 \l을 사용하여 label의 align 정의
    // \r을 사용하면 right align이 됩니다.
    Animal [
        label = "{Animal|+ name : string\l+ age : int\l|+ die() : void\l}"
    ]

    // subgraph clusterAnimalImpl 정의
    subgraph clusterAnimalImpl {
        // subgraph의 label을 정의합니다.
        label = "Package animal.impl"

        //Dog 클래스를 정의
        Dog [
            label = "{Dog||+ bark() : void\l}"
        ]
       
        // Cat 클래스를 정의
        Cat [
            label = "{Cat||+ meow() : void\l}"
        ]
    }

    // cluster 내에서 사용할 edge를 정의
    edge [
        arrowhead = "empty"
    ]

    Dog -> Animal
    Cat -> Animal

    // Dog에서 Cat으로 가는 edge를 정의
    edge [
        arrowhead = "none"
        // edge의 head/tail의 label을 정의
        headlabel = "0..*"
        taillabel = "0..*"
    ]
    Dog -> Cat
}
결과값
사용자 삽입 이미지
관련자료:

2008년 1월 30일 수요일

ip-address.com

사용자 삽입 이미지

부엉이님이 알려 준 IP 확인하는 My IP(ip-address.com) 사이트입니다. ip부터 회사, 지역, 사용자까지 알 수 있군요~ 몰랐어요 이런게 있는지 ㄷㄷㄷ -_-;;;;

2007년 10월 24일 수요일

ImageMagick

ImageMagick - GPL 라이센스, 이미지 타입변환, 크롭, 등등등 다양한 기능을 제공하고 있는 이미지 프로세싱 프로그램입니다. Command-line에서 실행할 수 있는 프로그램으로 다음과 같은 명령어들이 있습니다.
  • animate: animates an image sequence on any X server.
  • compare: mathematically and visually annotate the difference between an image and its reconstruction.
  • composite: overlaps one image over another.
  • conjure: interprets and executes scripts written in the Magick Scripting Language (MSL).
  • convert: 이미지의 포멧변환부터 크기조절, 썸네일, 필터링, 블루어(Blur), 크롭(Crop), 디더링(Dither), 그리기(Draw on), 이미지 합치기, GIF 프레임 처리 등등의 다양한 변환 작업을 (옵션을 사용하여 지정) 실행합니다.
  • display: displays an image or image sequence on any X server.
  • identify: 이미지 파일(들)의 포멧 또는 이미지 정보들을 표시해줍니다.
  • import: saves any visible window on an X server and outputs it as an image file. You can capture a single window, the entire screen, or any rectangular portion of the screen.
  • mogrify: resize an image, blur, crop, despeckle, dither, draw on, flip, join, re-sample, and much more. Mogrify overwrites the original image file, whereas, convert writes to a different image file.
  • montage: create a composite image by combining several separate images. The images are tiled on the composite image optionally adorned with a border, frame, image name, and more.
  • stream: a lightweight tool to stream one or more pixel components of the image or portion of the image to your choice of storage formats. It writes the pixel components as they are read from the input image a row at a time making stream desirable when working with large images or when you require raw pixel components.
이러한 명령어들과 명령어의 다양한 옵션(명령어를 클릭해서 들어가면 옵션을 보실 수 있습니다. )들로 이미지에 여러가지 효과를 줄 수가 있습니다.

Command line에서 실행은 명령어, 원본파일, 옵션명(옵션 값이 있으면 옵션 값을 같이 사용합니다.), 결과파일순으로 명령어를 입력한 후 실행시키면 됩니다.
C:\> convert src.gif -layers flatten dst.gif
위의 명령어는 움직이는 gif파일의 깜박임을 제거해주는 명령입니다.

관련링크 및 참고자료
※ 허접 포스팅입니다. ImageMagick 사용하기 위한 메모로 작성한 것이니 참고해주세요. -_-;;;

P.S.1. ImageMagick을 윈도우에서 설치할 때 Download로 들어가서 ImageMagick 외의 사이트에서 다운로드 받는 경우 바이너리 설치버전을 찾을 수 없더군요. 바이너리가 아닌 경우에는 컴파일해서 설치해야하는 복잡한 과정이 필요합니다.

P.S.2. php에서 exec()를 사용하여서 ImageMagick을 실행하는 경우, 세 번째 인자로 실행결과 값을 얻어올 수가 있습니다. 저의 경우 바이너리를 설치하고 바로 실행하였는데, 4가 리턴되면서 동작을 하지 않더군요. 고민 끝에 재부팅(!)을 하자 정상적으로 동작하더군요. -_-;;;;;

2007년 8월 21일 화요일

LBS 폰?

  • LBS = Location Based Service
  • PND = Personal Navigation Device
  • LBS 폰이 뜨는 이유
    1. 사용자들의 삶의 방식 변화(여가 생활 증대)로 관광지, 맛집 등에 대한 정보 수요 급증
    2. 유선 인터넷, PND등을 통해서 디지털 지도 경험이 축적
    3. 인프라의 확대 및 이용 가격의 하락(디바이스 포함)
    4. 위치정보에 대한 사회적 합의(위치정보 수집에 대한 합법화)
  • 통신사업자 또는 포털업체 대비 휴대폰 제조업체의 경쟁우위 요소
    1. 가격면에서 앞설 수 있다. 통신사업자 또는 포털업체에서는 통신망 접속을 기본으로 하고 있다.
    2. 휴대폰 기능과 지도 정보의 결합이 수월해지면서 보다 차별화된 부가 기능(지도와 연계된 주소록 등)을 제공할 수 있다.
    3. 사용자 인터페이스 측면에서 차별화가 가능하다. (기기에서 제공하는 최신 인터페이스를 사용할 수 있다.)
출처: LG ELIT - 차세대 휴대폰의 대표주자, LSB폰이 뜬다.

개인적인 생각:
  • LBS폰이 뜰거라는 점에서는 동감이 갑니다.
  • 그런데 경쟁우위 요소에는 전혀 공감이 가지 않네요. 맛집 등과 관련된 디지털 지도 정보에 대해서 너무 작게 보고 있는 것으로 생각되네요. (인터넷에서 크랙받아서 넣는 사람이 대부분이라면... -_- ;;)
  • 인터페이스가 폰마다 다르면... 플랫폼 다 따로 만들어야 할건데 폰에서 풀브라우징만 지원해주면 다 해결되는거 아닐런지...(주저리주저리)


2007년 6월 6일 수요일

변수의 이름을 정하는 몇가지 방법

Wrox의 Professional JavaScript for Web Developers 책을 다시 보다가 변수의 이름을 정하는 방법에 대해서 소개가 되어 있더군요. 고로.. 간단하게 정리해 보았습니다.
  • 낙타 표기법(CamelCase, Camel Notation 등등)은 변수를 나타내는 단어들의 첫 글자를 대문자로 표기합니다. (예외로 변수의 맨 첫 번째 글자는 소문자로 표기합니다.)

    var nomeOfVariable;

  • 파스칼 표기법(Pascal Notation)은 모든 단어들의 첫 글자를 대문자로 표기합니다. 변수의 맨 첫 번째 글자를 포함해서요.

    var NameOfVariable;

  • 헝가리안 표기법(Hungarian Notation)은 첫 번째 변수에 변수의 타입을 나타내는 소문자를 적어주고 나머지 부분은 파스칼 표기법처럼 명사의 첫 글자에 대문자를 사용합니다.

    var aNameOfVariables; // Array로 된 변수의 정의
    사용자 삽입 이미지
  • -표기법(Hyphen Notation) : 변수를 정의하는 단어와 단어 사이를 -를 사용하여 표시해줍니다. (Cobol, Lisp같은 언어에서 주로 사용)

    END-OF-FILE  // 일반적인 언어에서 -는 substract를 의미하므로 -표기에 제약을 받습니다.

  • _표기법(Underscore Notation): 변수를 정의하는 단어와 단어 사이를 _를 사용하여 표시하기도 합니다.

    var name_of_variable;
※ -, _ 표기법에 대해서는 Wikipedia의 Naming conventions 중 Word boundaries를 참고 하였습니다.
※※ 참고서적 Wrox의 Professional JavaScript for Web Developers

2007년 6월 1일 금요일

Arity

수학용어에서 Arity는 1진(unary), 2진(binary), 3진(ternary) 등등으로 올라가는 것을 의미합니다.
(The mathematical term "arity" sprang from words like unary, binary, ternary, etc.)

그러나, 컴퓨터 공학에서 arity는 함수(function)이나 연산(operation)에서 사용되는 함수의 인자(arguments) 또는 연산자(operand)의 개수를 의미합니다.
(In logic, mathematics, and computer science, the arity (synonyms include type, adicity, and rank) of a function or operation is the number of arguments or operands that the function takes.)
  • A nullary function takes no arguments.
  • A unary function takes one argument.
  • A binary function takes two arguments.
  • A ternary function takes three arguments.
  • An n-ary function takes n arguments.
출처: Arity in Wikipedia

P.S. 오늘도 공돌이 포스트군요. -_-;;

2007년 5월 25일 금요일

Slider의 부분이름을 뭐라 부를까요?

Slider를 만들 일이 있어서 js로 만들던 도중에 짓기가 어려워서 Java의 JSlider의 API문서를 좀 뒤져봤습니다.
Java로 프로그래밍할 때는 별생각 없이 사용했는데, 다양한 부분으로 구성이 되더군요 ^^
사용자 삽입 이미지

먼저, 슬라이더의 값을 설정하는 버튼을 knob(손잡이)라고 합니다. 그리고 값의 구간을 표시하는 부분을 track이라고 하구요.  아래 쪽의 값부분을 나타내는 선들은 tick이라고 합니다. (선 중에서 큰단위를 나타내는 긴 선은 major tick, 작은 선은 minor tick이라고 합니다.) 값을 표시해주는 부부은 label이라고 하구요.

상당히 공돌이틱한 포스트가 되어버렸지만, 변수이름 짓는것도 프로그래밍의 중요한 요소 중 하나니 알아두시면 좋겠죠? ^^

출처: JSlider(Java Platform SE6)

2007년 5월 8일 화요일

Fleuron(or leaf) - ❧ ❧ ❧

Jon Aquino씨의 블로그에 "How to write a fleuron character - useful for separating paragraphs of longhand"라는 글이 올라왔습니다. Fleuron(❧)이 뭔가 글을 읽어봤는데요.

Jon Aquino씨의 블로그에 Fleruron이란 생각에 변화가 생기거나 생각을 중단한 것을 나타내는 유용한 기호라고 합니다. 문단의 시작부에는 한번사용하는게 더 유용하긴하지만 기호를 세번 연달아 사용하는 경향이 있다하구요.

본문: The fleuron (or leaf) is a usefulsymbol for indicating a pause or change of thought. They tend to comein threes, though a single fleuron can be useful to indicate thebeginning of a paragraph.
Wikipedia에 Fleuron을 검색해보니 없더군요. 네이버 영어사전 검색에서는 "꽃무늬 장식"이라고 나오더군요.
(영문과이신 분은 아실지 모르겠네요 ^^;;)

Flickr에서 검색해보니 책과 관련된 fleuron 사진이 있기는 하더군요. 정확하게 무엇인지는 모르겠습니다만, 책속에 나오는 꽃처럼 생긴 기호들을 전부다 칭하는게 아닌가 하는 생각이 드네요.
출처:

2007년 3월 27일 화요일

단축키에 대한 잡생각



단축키, 프로그램을 사용하다보면 요즘 빼놓을 수 없는 기능 중 하나가 단축키일 것 같습니다.
[아니라구요?...본인의 가슴에 손을 얹고 나는 Ctrl+C/Ctrl+V도 모르는가를 반성해보세요 ^^;;]

단축키는 사용자들이 미리 정의한 동작들을 '키를 한번 누르거나' 또는 '여러키를 동시에 누름'으로서 실행하는 기능을 의미합니다. [1. Wikiepdia의 단축키, 2. 네이버 국어사전의 단축키]

단축키는 영어로, Shortcut Key(또는 Accelerator key, Hot key, key binding, keybinding, key combo)라고 부릅니다.

Microsoft(한글 Office)에서는 단축키를 다르게 부르는데요. '바로가기 키'라고도 부릅니다.

일반적으로 사용하는 프로그램에는 공통적으로 쓰이는 몇 개의 단축키들이 있습니다. 각각의 단축키들은 동작을 의미하는 영어단어의 첫번째 글자를 많이 사용합니다. (아닌 단축키들도 있습니다.) 외울 때, 각각의 동작과 단축키를 관련지어 생각하면 쉽게 외울 수 있습니다.
(공통적으로 사요되는 키목록-Wikipedia, MS Office)

Ctrl+C 복사 (Copy)
Ctrl+X 잘라내기 (Cut)
Ctrl+V 붙여넣기 (Paste)

Ctrl+B  굵게 (Bold)
Ctrl+I 기울임꼴 (Italic)
Ctrl+U 밑줄 (Underline)

Ctrl+R 오른쪽 맞춤 (Align Right)
Ctrl+E 가운데 맞춤 (Align Center)
Ctrl+L  왼쪽 맞춤 (Align Left)

Ctrl+A  문서 모두 선택 (Selet All)
Ctrl+O  열기 (Open)
Ctrl+P 인쇄 (Print)

Ctrl+Z  실행 취소 (Undo)
Ctrl+Y  다시 실행 (Redo)
Ctrl+S  저장 (Save)
Ctrl+F  찾기 (Find)

2007년 1월 15일 월요일

폰트 속성을 쉽게 찾아볼 수 있게해주는, Font properties extension

User inserted image

Microsoft의 홈페이지에는 Microsoft Typography라는 페이지가 있습니다.
TrueType, OpenType폰트에 대한 여러 정보와 프로그램이 제공되고 있는데요. 그 중에서 재미있는 프로그램이 하나 있습니다. Font properties extension이라는 프로그램인데요. 폰트안에 있는 여러가지 속성에 대해서 보여주는 프로그램입니다.


User inserted image

인코딩 정보, Font 및 Font Family Name, Vertical 폰트인지 여부, Embedding하여 사용할 수 있는 지 여부 등에 대한 정보를 볼 수 있습니다. (폰트 파일안에 있는 정보를 보기 쉽게 보여주는 거죠.)

MSDN을 검색할 때는 ie를 쓰자..

거의 대부분의 웹생활을 Firefox를 쓰다보니... 이런걸 놓치게 되는군요. -_-;;;



User inserted image

TextRange를 Firefox에서 본 화면




User inserted image

TextRange항목을 IE로 본화면

2007년 1월 4일 목요일

Excel에서 Random하게 정렬하기

Excel에서 Random하게 값을 뽑아내야할 일이 있었는데요. 검색을 해보다보니 상당히 쉬운 방법이 있었습니다. mrexcel.comRandomg Sorting tip인데요. 먼저 데이터를 준비하구요.

User inserted image

이 데이터의 C열에 Rand함수를 사용해서 Random값을 생성합니다.
User inserted image

그 다음에 드래그 & 드롭을해서 C열의 각 항목의 값들이 Random값이 들어가도록 합니다.
User inserted image

User inserted image

값을 다 채웠으면 C열을 기준으로 Sorting(정렬)을 하면 Random 정렬이 끝납니다.

User inserted image

오늘의 교훈!~! 조금만 돌아서 생각해보면 쉽게 풀린다~

출처 : http://www.mrexcel.com/tip093.shtml

2006년 12월 9일 토요일

미디어 파일 재생 시 다른 웹사이트로 이동하는 문제

Problem
asx파일은 '구조화된 ASF파일(확장자가 .asf)'을 가리키는 메타파일입니다. asx파일을 이용하여 특정 페이지 로딩 시 플러그인 설치 경고가 뜬 후 플러그인 설치 시 다른 페이지로 이동하는 문제가 발생.

Technology Issues
특정 페이지에서 embed 태그를 사용하여서 http://myfile.hanafos.com/~bbuma81/moviezone.wmv.wmx를 autoplay를 재생하도록 하였는데요. moviezone.wmv.wmx의 코드 내부를 살펴보면 다음의 asx태그로 구성되어 있습니다.
User inserted image

ref태그의 href값은 길어서 임의로 잘랐습니다.

asx파일의 ref element는 Windows Media Player가 재생할 파일을 가지고 있고, 플레이 될 때 해당하는 목록을 재생하게 됩니다. moviezone.wmv.wmx에 있는 ref의 경우에는 naver_player.swf라는 목록을 가지고 있었습니다. 이 파일을 재생하게 되는 경우 특정 페이지로 이동하도록 되어있었습니다. (현재는 이동하지는 않는 것 같습니다.)

Solution
Windows Media Player를 '도구> 옵션> 보안 > 콘텐츠 > 웹 페이지에서 플레이어를 실행하는 경우 스크립트 명령 및 리치 미디어 스트림 실행 안함'을 체크하는 경우 asx와 같은 메타파일에서 스크립트를 실행하는 것을 막을 수 있습니다.
User inserted image


관련자료: