Cufon은 font를 js 데이터로 변환해 canvas로 출력하는 방식으로, 기존 iFR, FIR, sFIR 처럼 텍스트를 그래픽 폰트로 변경해주는 도구다. canvas 기반이라 플래시보다 무겁진 않지만 글꼴의 끝부분이 다소 뭉개지는 현상이 있다. 한국어 폰트는 여전히 글자수가 많기 때문에 용량상 이득은 크게 없는 편이다.

Cufon에서 :hover를 사용하기 위해서는 다음과 같은 방법으로 작성해야 한다.

Cufon.replace('#navlist li a', { hover: true, fontFamily: 'MyFont' });
Cufon.replace('h2, h3, h4', { hover: true,  fontFamily: 'MyOtherFont'});

다음과 같이 작성하면 내용이 덮어져 :hover가 동작하지 않는다는 점을 유의하자.

Cufon.replace('#navlist li a', {hover: true});
Cufon.replace('#navlist li a', {fontFamily: 'MyFont'});

java 소스도 겨우 읽는데 tomcat 서버 설치하느라 고생했습니다. 상당히 단순한 절차인데도 개발자분이 올린 소스가 계속 에러가 나서 설치 문제인줄 알고 몇번이고 다시 설치를 시도했는데 다행히도(?) 폴더명이 문제였습니다. 지웠다가 재설치 하는 작업은 반복적으로 하면 서버가 지저분해지는 문제점(?)이 있어 싫어하는데 이번에 처음으로 해본 가상서버 호스팅은 간편하게 서버를 초기화 할 수 있어 엄청나게 편리했습니다. 이 내용은 centOS (64bit)를 기준으로 작성하였습니다.

  1. 먼저 jdk를 설치해야 합니다. http://java.sun.com/javase/downloads/index.jsp 로 가서 해당 환경에 맞는 버전을 내려 받아 설치합니다.

cd /usr/tmp

wget http://download.oracle.com/otn-pub/java/jdk/7u1-b08/jdk-7u1-linux-x64.rpm

rpm -Uvh jdk-7u1-linux-x64.rpm

위와 같이 입력하면 JDK 설치는 완료 됩니다.

  1. tomcat을 설치합니다. http://tomcat.apache.org/ 에 가서 사용하고자 할 버전에 맞춰 내려 받습니다.

wget http://apache.mirror.cdnetworks.com/tomcat/tomcat-7/v7.0.22/bin/apache-tomcat-7.0.22.tar.gz

tar xvfpz apache-tomcat-7.0.22.tar.gz

mv apache-tomcat-7.0.22 /usr/local/tomcat

  1. tomcat을 서비스로 등록해야합니다. 아래의 쉘 스크립트를 작성해서 /etc/rc.d/init.d/에 저장합니다.
#!/bin/sh

Startup script for Tomcat

chkconfig: 35 85 15

description: apache tomcat 6.x

processname: tomcat

Source function library.

export JAVA_HOME=/usr/java/default export CATALINA_HOME=/usr/local/tomcat export PATH=$PATH:$JAVA_HOME/bin:$CATALINA_HOME/bin

See how we were called.

case "$1" in start) echo -n "Starting tomcat: " $CATALINA_HOME/bin/catalina.sh start echo ;; stop) echo -n "Shutting down tomcat: " $CATALINA_HOME/bin/catalina.sh stop echo ;; restart) $0 stop sleep 2 $0 start ;; *) echo "Usage: $0 {start|stop|restart}" exit 1 esac exit 0

cat /etc/rc.d/init.d/tomcat #위 내용을 저장

chmod 755 /etc/rc.d/init.d/tomcat

  1. tomcat을 서비스로 등록한 후 서비스 시작을 해줍니다.

chkconfig –add tomcat

service tomcat start

apache-tomcat으로 설치해줬기 떄문에 웹서버 설정은 별도로 변경할 필요가 없습니다. http://localhost:8080 으로 접속하면 tomcat 고양이가 야옹거리며 기다리고 있습니다.

설정하면서 기억할만한 내용들은 아래와 같습니다.

  • web manager, host manager 를 지원하는데 /usr/local/tomcat/tomcat-user.xml 에 계정을 추가해주면 사용할 수 있다.
  • tomcat은 WAS(web application server) 개념이다. 각각의 프로젝트가 /usr/local/tomcat/webapps 에 각 디렉토리로 저장이 되는데 LAPM에서 계정발급 해주고 FTP 접속 열어주고 하는 것처럼 하려면 webapps 쪽으로 vsftp를 수정하기 보다는 기존 계정 발급과 동일하게 생성해주고 webapps 폴더에 해당 계정 디렉토리 심볼릭 링크를 걸어주는 편이 한결 간편하고 쉽다.

hero

미국시간으로 2011년 10월 5일 저녁, 애플社의 전 CEO 스티브 잡스가 세상을 떠났습니다. 가히 지구적 규모라고 볼 수 있을 정도로 전역에서 추모가 있었습니다. 시대의 아이콘이라는 표현이 농담이 아닌 실존하는 존재였으며 사익을 추구하는 기업의 수장임에도 모두에게 존경과 애도 속에 세상을 떠나간 것은 정말로 멋진 일이란 생각이 들었습니다.

부를 사회에 환원하기 위해 끊임없이 노력하는 공룡 기업도 많지만 그들이 깨끗하다는 인상은 전혀 심어주지 못하는 반면 애플이 외적으로 보여주는 부분은 단지 그들의 프로덕트 외에는 없음에도 세상을 변화시키는 기업으로의 긍정적인 포지션으로 인식된다는 것은 대단합니다. 그의 긍정성과 진정성은 앞으로도 수많은 사람들의 귀감으로 남을 것입니다.

수고하셨어요. 잘가세요, 스티브 잡스!

I’m convinced that the only thing that kept me going was that I loved what I did. You’ve got to find what you love. And that is as true for your work as it is for your lovers.

– Steve Jobs

 

내가 계속할 수 있었던 유일한 이유는 내가 하는 일을 사랑했기 때문이라 확신합니다. 여러분도 사랑하는 일을 찾으셔야 합니다. 당신이 사랑하는 사람을 찾아야 하듯 일 또한 마찬가지입니다.

– 스티브잡스

안내 : 이 글은 2011년에 작성한 글입니다1

최근에 @sh84ahn님이 관련 글을 작성하셔서 링크를 남깁니다.


개발에 Eclipse php development tools(PDT)를 사용했는데 syntax highlighter의 문제인지 들여쓰기를 조정하다보면 일부 부분들이 없어지는 현상이 자주 발생한다. 그런 이유로 Aptana를 설치하게 되었다.

Aptana studio는 웹개발에 최적화된 도구로 syntax highlighter도 잘 동작하고 들여쓰기 문제나 자동완성 부분도 상당히 편리하게 구성되어 있다. 요즘 유행하는 git도 별도의 설치 없이 바로 사용할 수 있고 remote(FTP)를 통해 프로젝트를 관리하기에도 상당히 편리하다. 하지만 SVN은 기본 설치가 되어 있지 않아 별도로 설치해줘야 한다. eclipse 설치하는 것과 같이 Help > Install New Software… 메뉴에 들어와 Work with에 아래의 주소를 입력한다.

http://subclipse.tigris.org/update_1.6.x

위 주소를 입력하고 아래에 해당 사항을 체크해 설치하면 된다. 기본 eclipse 값과 다른 부분이 있어서 그런지 모두 선택해서 설치하면 설치가 되지 않는다.

Subclipse Integration for mylyn 3.x (Optional)
Subversion Revision Graph

두가지 체크를 풀어 설치하면 바로 설치되어 사용할 수 있다.

Footnotes

  1. 오랜 기간이 지났는데도 신기하게 이 키워드로 검색 유입이 상당히 많습니다.

제주는 갑작스레 쌀쌀해져 긴 옷을 입고 다니고 해가 지면 더 쌀쌀해져 외투가 없으면 더욱 몸을 추스리게 되는, 진정 가을이 되었다. 그래서 그런지 밤중에 그냥 자기엔 아쉬운 생각이 들어 영화를 찾아 보게 되었다. 그 영화가 바로 <세 얼간이>와 <소셜 네트워크>.

두 영화는 등장인물도 묘하게 유사한 점이 많았으며 모두 교훈적으로 보게 되어 많은 생각을 할 수 있었다. <세 얼간이>는 란초와 두 친구가 인도 최고의 엔지니어링 대학인 ICE에서 벌어지는 일련의 사건과, 그 주변에 담겨진 이야기를 보여주는 영화다. 란초는 각 두 친구가 진정한 목표를 향해 달려갈 수 있도록 도와주었고 란초 스스로도 인도 최고의 엔지니어가 된다.

<소셜 네트워크>는 마크 주커버그의 이야기로 페이스북이 어떻게 시작되었고 진행되고 있는지 보여주는 영화다. 여자친구와의 이별을 술 마시고 놀아서 푼 것이 아니라 개발에 전력을 쏟았고 그 결과 페이스북이 나왔다는 식으로 이야기를 풀었는데 이권 다툼을 누군가 좋아하는 사람 때문에 나타난 것처럼 잘 미화하지 않았나 싶다.

두 영화에서 나오는 두 천재는 내면에 집중하느냐 혹은 관계에 집중하느냐. 두가지 방식을 통해 결론에 도달한다. 알 이즈 웰 이라고 자신의 마음을 속이며 모든 일이 생각하기 나름이라는 관점으로 접근하기도 하고, 본인 앞을 지나가는 기회를 정확히 포착해 잡아가는 방식으로 나아가기도 한다. 어느 하나가 우세하다고 말할 수 없겠지만, 살아가며 두 천재의 모습에서 어느 하나의 모습을 선택해야 할 때가 있고, 어느 한쪽에 편중된 것이 아닌, 양자의 기로에서 늘 때에 맞게 선택해야 하지 않나 생각이 든다.

수년간 회원가입용 메일로 사용해던 계정이 갑작스레 휴면으로 전환되어 곤란을 좀 겪고 있습니다. 간만에 스팸 비우러 로그인 하는데 휴면이라 하길래 그냥 쉽게 풀리겠지 생각했는데 그게 아니더군요. 최근에 갱신한 신용정보야 보기 쉽도록 다른 계정을 대표로 걸어둔 상태지만 항공사 마일리지나 몇 중요한 정보는 이전에 사용하던 메일에 연결되어 있어 조금은 곤란한 상태가 되고 말았네요. 회원가입 시 늘상 사용해오던 이메일이었는데 이런 사태를 겪게 될지는 생각도 못했습니다.

국내 포털에서 제공하던 이메일이었다면 주민등록번호를 기준으로 찾거나 휴대폰, 공인인증서, 하다못해 신분증 팩스로 보내기라도 해서 되찾을 수 있을텐데 해당 계정은 hotmail이라 본인임을 증명하기 위해선 자주 메일을 주고 받았던 사람이나 메일함의 이름 등 이메일 사용 패턴에 대한 실질적인 검증이 되어야만 된다고 합니다. 회원가입 용으로 사용하던 터라 스팸만 잔뜩 있고 중요한 메일은 그닥 없어 가끔 들어가 비워주는 정도의 소비 형태로는 사실상 검증하기 불가능하다고 봐야겠죠.

이를 통해 개인 정보와는 느슨한 형태의 서비스들에 대해 다시 생각해보게 되었습니다. 최근 보안 이슈를 통해 알 수 있듯 개인 정보와 결속이 강한 서비스들이 지속적인 크래킹의 대상이 되고 있어 점점 개인 정보와의 결속은 약해지고 있습니다. 하지만 개인의 삶에는 SNS라는 형태로 더욱 다가서게 되었습니다. 그렇다면 위와 같이 비밀번호를 분실하거나 (최악의 경우) 크래킹을 통해 비밀번호가 변경된 경우 되찾기 위한 도구로는 email 하나 밖에 존재하지 않습니다. 위 hotmail의 사례와는 다르게 개인에 대한 정보가 다 노출되어 있기 때문에 스스로에 대한 검증이 어렵습니다. 그렇다면 결국 계정이 방치되거나 누군가에 의해 도용(SNS의 누적된 정보를 기반으로 동일 인물처럼 행세할 수도 있습니다!) 당하게 된다면 정말 곤란하겠죠. 정보결속은 약해졌지만 생활결속은 강해지면서 기존의 인증체계에 대한 문제점도 재인식해봐야 할 시점입니다.

물론 최선의 방법은 비밀번호를 잘 유지관리하여 분실하지 않는 것이 중요하겠습니다. 머릿속에 적어두세요.

기존에 전반적인 업무를 보고 있던 사람이 퇴사하게 되어 얼떨결에 모든 업무가 저에게로 떠밀려와 일주일 내내 10시 이후(밤입니다. 밤!)에 퇴근하니 결국 일요일(주6일입니다..) 되어서 몸살이 났네요. 하루종일 골골대다 이제야 좀 멀쩡한 상태가 되어 머리는 멍한데 글 읽기엔 눈에 들어오지 않아 글이라도 쓰려고 컴퓨터를 켰습니다.

아무리 어려운 일이 있더라도 더 열심히 하면 되지, 내가 여기서 배우는 것이 더 많다고 생각하며 경험을 늘린다에 집중하고 지냈는데 지난 반 년을 되돌아보니 내 커리어라고 내세울 만큼 한 일도 없을 뿐더러 내 스스로 내적인 성장도 크게 느껴지지 않아 상실감이 컸습니다.

시간이 갈수록 내 담당만 늘어나서 최근 들어서는 웹퍼블리싱부터 각종 수정건, 프로그램 개발 및 신규 서버 관리, 기존 호스팅 관리, 각종 제출서류 작성 및 클라이언트 응대, 인터넷 안되요, 컴퓨터 안되요 처리까지. 아침에 출근해서 밤 11시까지 일하고 집에 들어와 누워보면 오늘 뭐했나 생각도 들고.

불평불만 하지 말자. 늘 상황에서 최선을 다해 배울 줄 알아야 한다고 생각했었는데 요즘 그 원동력도 점점 잦아들고 힘들어지고. 이제 앞으로 다시 달려야 하는데 말이죠. 그래서 더욱 복학이나 편입에 대해 깊이 생각하게 되고. 마음만 더 급해지고 있습니다.

이제 또 시작되는 한 주. 다시 최선을 다해야겠습니다.

httpd -k restart

위 커맨드를 사용해서 httpd를 재시작해줬는데 오늘 봤더니 CBand에 기록된 트래픽도 초기화 되더군요. 깜짝 놀랐습니다 ;ㅅ; 검색해보니… graceful이란게 있더군요. (http://httpd.apache.org/docs/2.0/ko/stopping.html) httpd.conf가 변경될 때는 서버의 연속성을 유지하며 재시작(이 표현이 적절한지 모르겠습니다만) 하기 위해서는 아래와 같이 하시면 되겠습니다.

httpd -k graceful

오늘이 말복, 마지막 더위라고 지나가니 선선한 날씨가 반깁니다. 이번 가을 좋은 날씨에 집중해서 좋은 성과를 남겨야지 하는 마음이 생기네요. 남은 한 해의 목표를 정하고 다시 시작하는 기분으로, 2011년을 보람차게 마무리했단 글을 남길 수 있도록 노력해야겠습니다.

  • 워드프로세서, 컴퓨터활용능력 실기 응시하기
  • 토익 2회 응시 및 800점대 진입하기
  • ruby 습득하기
  • 인문서 5권 읽고 독후감 쓰기
  • 일기 꾸준히 쓰기

일상생활을 바꾸지 않는 한 인생은 바뀌지 않는다. – 마이크 머독

연재할 듯 글을 시작했으나 연재하지 않고 있습니다. (…)


이름 이쁜 프로그래밍 언어 루비. 루비 온 레일즈가 각광 받는데 궁금해서 전부터 배우고 싶었던 언어였고, 휴가를 이용해 배워보려고.

루비를 일단 설치해야 하는데 RoR이 최종 목표이므로 RoR 사이트(http://rubyonrails.org/)에서 win32 installer를 다운받아 설치하였다.

cmd를 시작 > 실행 해서 ruby를 실행하면 시스템변수로 선언이 안되어 있기에 당연히 안되고 그 설정 부분을 찾다찾다 보니까 별도의 설정이 아니라 Start Command prompt with Ruby를 이용해서 사용하면 되는 것이었다. 그것도 모르고 삽질을 ;ㅅ;

몇분 만에 블로그 만들기라는 이름으로 유명했던 RoR 튜토리얼 보고 해보려다가 rake db에 막혀서(sqlite3이 기본 db인데 어떻게 연결해야 하는지도 모르겠고;;) 루비 20분 가이드(http://www.ruby-lang.org/ko/documentation/quickstart/) 먼저 봤다. 베이직 언어 비슷한 느낌이 들지만 상당히 간편하고 개발 언어의 장점을 모아놓은 느낌. 뭐 튜토리얼 보고서 그런걸 한번에 알 순 없지만;;

20분 가이드의 결과물.

#!/usr/bin/env ruby

class MegaGreeter
  attr_accessor :names

  # Create the object
  def initialize(names = "World")
    @names = names
  end

  # Say hi to everybody
  def say_hi
    if @names.nil?
      puts "..."
    elsif @names.respond_to?("each")

      # @names is a list of some kind, iterate!
      @names.each do |name|
        puts "Hello #{name}!"
      end
    else
    puts "Hello #{@names}!"
    end
  end

  # Say bye to everybody
  def say_bye
    if @names.nil?
      puts "..."
    elsif @names.respond_to?("join")
      # Join the list elements with commas
      # 독특한 처리 방식, 값이 여럿(array인진 모르겠음;) 들어있으면 join이란 method가 생성
      # 이게 뭐 루비가 가지는 특성인 모양.
      puts "Goodbye #{@names.join(", ")}.  Come back soon!"
    else
      puts "Goodbye #{@names}.  Come back soon!"
    end
  end

end

if __FILE__ == $0
  mg = MegaGreeter.new
  mg.say_hi
  mg.say_bye

  # Change name to be "Zeke"
  mg.names = "Zeke"
  mg.say_hi
  mg.say_bye

  # Change the name to an array of names
  mg.names = ["Albert", "Brenda", "Charles",
    "Dave", "Englebert"]
  mg.say_hi
  mg.say_bye

  # Change to nil
  mg.names = nil
  mg.say_hi
  mg.say_bye
end

색상을 바꿔요

눈에 편한 색상을 골라보세요 :)

Darkreader 플러그인으로 선택한 색상이 제대로 표시되지 않을 수 있습니다.