Search Results for '시즌2/프로그래밍'

6 POSTS

  1. 2008/05/02 학교 식당 메뉴를 문자로 받기! (4)
  2. 2008/04/30 C++0x : 새로운 C++의 문법
  3. 2008/04/06 나의 첫 Ruby 사용기 (4)
  4. 2008/02/22 구문 강조과 정규표현식
  5. 2008/02/13 Emacs: Color Theme, Python Mode
  6. 2008/02/04 i++보다 ++i가 더 빠르다? (1)

문자로 받은 화면 몇일전, 학교에서 수업시간에 어느 선배님이 "학교 식당의 식단을 문자로 받는 프로그램"에 대한 이야기를 들려주셨습니다. 파이썬으로 만든 프로그램이었는데, Beautiful Soup를 사용하면 엄청나게! 쉽다고 하셨었죠.

그래서 이틀전에, 시험 공부를 하려다가 뜬금없이.. 구글링을 해봤습니다. -_-; 파이썬 마을에서 Twill을 사용해서 문자를 보내는 예제를 찾았고, Beautiful Soup의 공식 도큐먼트를 보니깐.. 간단히 될 것 같더군요!

그래서... 만들어버렸습니다.

숭실대 정보대 식당의 식단을 문자로 받아보는 프로그램입니다.

food2sms.py : http://jong10.springnote.com/pages/1144338.xhtml

간략히 설명하면,
Beautiful Soup를 사용해서 특정 사이트에서 식단 정보를 긁어오고,
Twill을 사용해서, 문자천국 사이트에 접속 및 로그인 하고,
문자천국 사이트에서 내용을 기입한 후에..
보내기 버튼을 클릭하는 방식입니다.

보다 자세한 정보와 소스코드는 위의 링크에 있습니다. Copyleft입니다.

Beautiful Soup 라이브러리는.. 쫌.. 개사기더군요. -_-; 이거 뭐, 발로도 파싱을 할 수 있게 해놨네요. Twill 라이브러리도 상당히 만족스럽습니다. 쿠키를 지원하지 않는 듯 한게 흠이지만요.. 파이썬으로 프로그래밍을 해본 것이 처음인데, 꽤 만족스럽습니다. 그래도 루비의 보다 더 깔끔한 객체지향적인 문법이 더 마음에 들긴 합니다.

-- Jong10


Trackback URL : http://www.jong10.com/trackback/247

  1. # 신용불량 2008/05/03 02:12 Delete Reply

    결국 만들었구나-_-;

    1. Re: # jong10 2008/05/03 12:43 Delete

      응. 아침 10시 25분마다 나한테 문자로 보내줘. ㅋㅋㅋ

  2. # 지구인 2008/05/13 09:53 Delete Reply

    근데..이거..일요일에도 문자오드라..??ㅋㅋ
    내용은 아무것도 없이..
    12시만 되면 문자 세개가 연달아서 오는 센스??ㅋㅋ

    1. Re: # jong10 2008/05/13 23:56 Delete

      일요일은 안가. 월요일이었겠지 ㅎㅎ
      공휴일은 구분 못해.... -_-;;
      월-금은 무조껀 가;;

Leave a comment

C++ 창시자. Bjarne Stroustrup 할아버지

C++의 마지막 표준은 1998년도에 제정된 C++98이었습니다. 현재는 C++0x가 제정중입니다. 2008년에 나오면 C++08이 되고, 2009년에 나오면 C++09라고 불리우겠죠. 아무튼, 류광님의 블로그에도 가끔씩 소식이 올라오고, 여기저기서 소식이 들리고 있습니다. 항간에는 2000년대에 안나오고, 2010년대로 넘어간다는 소문도 있습니다. (C++1x 라고.. -_-;)

이번에 바뀌는 부분에 대해선, 정말 마음에 드는 부분들이 많이 있는데, 간단히 몇가지 살펴봤습니다.

#include <vector>
typedef std::vector<std::vector<int> > Table;  // OK
typedef std::vector<std::vector<bool>> Flags;  // error

위에서 >> 에서 에러가 납니다. >> 를 Right Shift 연산자로 인식하기 때문이죠. 에러가 나지 않으려면, >와 >의 사이를 띄워서, > > 라고 해야합니다. 처음 이 현상을 만났을 때에는 정말 헤메었습니다. C++98에서 >>가 되면 Right Shift로 인식하기로 한 것은 여러가지 복합적인 이유가 있다고 합니다. 그럼에도, 이에 대한 수요가 많아져서, C++0x에는 저것도 파싱단계에서 처리를 해주도록 하기로 했다고 합니다.

C++0x에는 Lisp에서 시작되어 수많은 언어들에 영향을 끼친 람다도 추가됩니다.

[](int x, int y) { return x + y }

이에 따라서, for_each를 위해서 별도의 메소드를 만들어야하는 귀찮음은 없어진 것 같습니다. 진작에 이런게 있었어야 해요. ㅠㅠ

std::vector<int> someList;
int total = 0;
std::for_each(someList.begin(), someList.end(), [&total](int x) {
  total += x
});
std::cout << total;

위처럼 해버리면 됩니다. 람다의 경우는 Boost를 통해 이미 사용할 수는 있었지만, 언어 레벨에서 지원해주는 것과, 별도의 라이브러리에서 지원해주는 것은 굉장히 큰 의미가 있습니다. (Perl의 CPAN이나 Ruby의 gems같은 라이브러리를 쉽게 설치 가능한 형태도 아니고요.)

요즘, 프로그래밍 언어들의 춘추전국시대를 맞이하여, 람다나 클로저는 유행이 되어가고 있는 것 같습니다. 자바도 Java 7 에서는 클로저가 추가된다는 소문이 있습니다. :-)

템플릿에 대한 typedef도 있습니다. 아래와 같습니다.

template<typename first, typename second, int third> class SomeType;
template<typename second> using TypedefName = SomeType<OtherType, second, 5>;

네임스페이스 선언에서 사용하던 기존의 using 키워드를 사용합니다.

UTF-8이나 UTF-16과 같은 특정 인코딩의 문자열 리터럴을 지원합니다. 요러코롬 씁니다.

u8"I'm a UTF-8 string."
u"This is a UTF-16 string."
U"This is a UTF-32 string."

정말 너무나도 필요했던 기능입죠. ㅠㅠ

또한, 멀티태스킹을 위한 메모리 모델을 계획하고 있다면서 쓰레드 어쩌구 하는 항목도 있는데, 이건 잘 모르겠네요; -_-a 그리고, C99에서 추가된 64비트 Integer 타입인 long long int 타입을 지원합니다. 사실, g++이나 몇몇 컴파일러는 미리 지원하긴 했었죠.

그리고, sizeof(SomeType::member); 이렇게 생긴 sizeof는 지원하지 않았는데, C++0x에는 추가 된다고 하고요. 튜플(tuple)도 생기고, 정규표현식(regex)도 공식적으로 지원합니다. (Boost::regex랑 GRETA같은 대안이 있긴 했지만요.) 다만, C++에서의 문자열은 큰따옴표로 감싸지는 형태밖에 없기 때문에, 정규식을 쓰려면 좀 불편한데요! C++0x에서는 raw string이라는 형태를 추가함으로써 이를 해결한다고 하네요!! 와우~ GRETA로 정규식 사용할때 그놈의 백스페이스 때문에 X고생 했는데;; (사실, 정규식은 TR1에서 포함되었습니다.)

STL 컨테이너 안에 넣을수도 없었던 auto_ptr 같은거 말고 -_-;; TR1에서 결정된 shared_ptr 라는 좀 제대로 된 스마트 포인터도 제공하고요. 함수를 호출할 때에, 호출부에서는 레퍼런스타입(&)인지 복사생성인지 알기 어려운데요. g( f, ref(i) ) ; 이런 식으로, 레퍼런스를 지정해서 호출할 수도 있다는군요. (사실, 이건 호출부에서 결정하는게 좀 더 타당한 것 같아요!)

그리고 가장 맘에 드는 것.. auto라는 키워드로, 이터레이터의 적당한!! 타입을 담을 수 있게 되었습니다. (당연히 컴파일 타임에 결정될테고요.) 아래와 같던 보기 싫던 문장을..

for (vector<int>::const_iterator itr = myvec.begin(); itr != myvec.end(); ++itr)

아래처럼 깔끔쌈빡하게 표현할 수 있게 되었습니다!

for (auto itr = myvec.begin(); itr != myvec.end(); ++itr)

이 기능은 정말 죽이네요.. ㅠㅠ STL을 두어개만 겹쳐써도, map<string, vector<string> >::iterator iter = hashStr2VecStr.begin()처럼 굉장히 길어져서, 정작 for문의 평가식을 보기 힘들었는데, 정말 좋아졌네요.

자바는 5.0부터 지원했고, Perl, Python, Ruby 등등은 옛날부터 지원하던 향상된 반복문이지만.. C++도 이제 아래와 같은 반복문을 지원합니다.

int my_array[5] = {1, 2, 3, 4, 5};
for(int &x : my_array)
{
  x *= 2;
}

여기서 &x가 아니고 x로 쓰면, 복사생성이 되나보네요;; 어쩔 수 없죠 뭐.. 그 편이 좀 더 의미 전달이 확실하니깐.

비야네 스트로스트럽 할아버지가 작성하신, C++0x 특징을 한데 모은 소스가 있는데요;;

template<class T> using Vec = vector<T,My_alloc<T>>;
Vec<double> v = { 2.3, 1.2, 6.7, 4.5  };
sort(v);
for(auto p = v.begin(); p!=v.end(); ++p)
    cout << *p << endl;

요기 둘쨋줄을 보면.. 허걱. initilize를 리스트를 보내서 할 수 있습니다. -_-)=b 진작 이게 있었어야지!!

음. 여기까지가 이미 알려진 C++0x의 내용중 눈에 띄는 것 몇개 골라봤고요. 그 밖에도 constexpr이라던가, 배열의 선언시에 사이즈에 constexpr의 값은 넣을 수 있다던가(사실 #define으로 구현할 수 있는 부분이긴 합니다.), enum class의 도입이나, 템플릿 alias의 방법이나, STL의 에러 메시지를 훨씬 간결하게 해줄 것 같은 static assertion에 대한 것 등등의 흥미진진한 내용들이 있습니다.

여기 사용된 코드들은 아래와 같은 사이트들에서 참조했습니다.

  1. http://occamsrazr.net/tt/tag/C++0x
  2. http://www.artima.com/cppsource/cpp0x.html (비야네 할아버지 글!)
  3. http://en.wikipedia.org/wiki/C++0x

아래와 같은 TR1(C++0x에 포함될 표준 라이브러리 확장)에 관한 책도 이미 있습니다. (Visual C++ 2008에선 TR1을 설치할 수도 있습니다.)

아아.. 비야네 스트로스트럽 할아버지는 아직 건장하시구나 싶습니다. 드래프트 들어간지 한참 된 것 같은데.. 얼렁 나와만 주세요! 1~2년 안에 나오면, Visual C++ 2012 정도에는 적용 되려나? -_-;; (g++은 야금야금 적용해줄테고!)

어떤분은, "C++은 C++0x가 제정되면서 MMORPG같은 언어가 되어버렸다."라고 하시던데 -_-;; 정말 이건 뭐, 절차지향 언어이면서, 객체지향 언어이면서, 제네릭 프로그래밍도 되면서, 메타프로그래밍도 되었는데, 이젠 그것도 모잘라서 람다도 되고, 이것저것 점점 뭔가 문법 자체가 난잡해지는 것 같습니다. 물론, 이런 편한 기능들이 추가된다는데 반기지 않을수야 없습니다만.. C++은 점점.. 어려운 언어가 되어가는 것 같아 안타깝기도 합니다. 제일 좋아하는 언어인데도, 알면 알수록 점점 어렵다고 느껴지네요.. OTL

-- Jong10

p.s. 틀린 부분 있으면 리플/트랙백 날려주세요. 수정할께요. =_=


Trackback URL : http://www.jong10.com/trackback/246

  1. C++0x : 새로운 C++의 문법

    Tracked from 이름없는 블로그 2008/05/10 20:43 Delete

    좋은 글이여서 퍼왔답니다! http://www.jong10.com/246 C++의 마지막 표준은 1998년도에 제정된 C++98이었습니다. 현재는 C++0x가 제정중입니다. 2008년에 나오면 C++08이 되고, 2009년에 나오면 C++09라고 불리우겠죠. 아무튼, 류광님의 블로그에도 가끔씩 소식이 올라오고, 여기저기서 소식이 들리고 있습니다. 항간에는 2000년대에 안나오고, 2010년대로 넘어간다는 소문도 있습니다. (C++1x 라고.. -_-..

Leave a comment

나의 첫 Ruby 사용기

2008/04/06 01:58

ruby 3일 전부터, 등하교길에 大山님의 웹 개발 2.0 루비 온 레일스를 읽기 시작했습니다. 그런데, 학교에서 Tokenizing하는 과제를 하나 던져주더군요. 한 줄을 읽어서, 예약어, 변수명, 숫자, 연산자 등등으로 쪼개어 화면에 찍어주는 간단한 과제입니다.

이래저래 몇번 해본 내용이고, 다른 과목에서도 비슷한 걸 해서, "또?!"하고 생각했었습니다만, 과목이 프로그래밍언어라서 그런지 교수님께서 떡밥을 던져주시더군요. "언어는 아무거나 써도 되요." 오오. 코딩하는 과제에 있어서 이보다 매력적인 조건이 또 뭐가 있겠어요? C++을 쓰면 훨~씬 편한데, 오직 C언어로만 하라는 다른 과목의 교수님은 정말 미웠다고요. -_-

게다가, 교수님께 따로 물어보니, 꼭 유한상태기계 방식으로 하진 않아도 된다고 하시길래, 루비에서 정규표현식으로 샤샤샥~해서 매우 짧은 코드를 만들기로 했습니다.

루비로 코딩을 해보는 것은 처음이었습니다만.. 곡괭이책(책버전/웹버전)을 뒤적여가면서 코드를 작성해나가는데, 이야아.. 자질구레한 것을 다 지원해주는 것이 참 마음에 들더군요. 처음 써보는 언어라서 라인수에 비해 굉장히 오래 걸리긴 했습니다만, C/C++로 했으면 150줄은 넘었을텐데, 처음 써 본 루비로 30줄로 끝내버려서 조금은 뿌듯합니다. (걸린 시간만 보면 500줄은 쓴 기분입니다만. -_-)

이런 말랑말랑한 언어들을 쓰다보면, 이렇게 문법이 유연한 native 언어도 있었으면 좋겠다는 생각을 자주 합니다. Haskell처럼 Script이면서 강타입인 언어가 있으면, native 컴파일 언어이면서 Duck타입인 언어도 있어야 하지 않겠어요? native로 컴파일 되면서, 말랑말랑한 뭐 그런 언어 없을까요? 뭐, py2exe 같은 것은 논외로 하고요.

-- Jong10


Trackback URL : http://www.jong10.com/trackback/241

  1. # 미친병아리 2008/04/07 04:03 Delete Reply

    저도 그런 스크립트 있었으면 합니다..

  2. # 홍민희 2008/04/15 09:55 Delete Reply

    Perl 6나 Boo에 대해서 알아보세요. 생각해보니 Boo는 네이티브 컴파일은 안되는군요;

  3. # 홍민희 2008/04/15 09:55 Delete Reply

    아. Perl 6도 그러고보니 네이티브 컴파일이 아니라 Parrot VM 위에서 돌아가는 바이트코드만 뱉는 거였네요. (ㅈㅅ)

  4. # jong10 2008/04/16 00:53 Delete Reply

    루비도 gem에 ruby2exe이란게 있긴 하더군요. rubyscript2exe이란 것도 있는 것 같고.. (같은건가?)
    다만, 이런 비공식 네이티브 컴파일러들은 공식 언어의 버전을 못따라가서 쫌.. ㅋ

Leave a comment

Emacs에는 Python Mode라는 것이 있습니다. 열혈강의 파이썬 개정판 ver2에서 예제를 쳐보던 중에 Emacs의 구문 강조 기능이 아래와 같이 이상하게 나오더군요. (뭐야.. 코드인데 왜 문자열로 인식하는거야 ㅠㅠ)

파이썬 문법은 맞지만, 제대로 인식하지 못하는 에디터

p = re.compile('''href=([^'"]\S+?)[\s>]|href="([^"]*?)"|href='([^']*?)\'''', re.I)

바로 요 한줄 때문에 바보가 되어버린 것입니다. 이게 뭐, 강조에만 문제가 생기면 그냥 무시하고 예제를 때렸겠습니다만, 아랫 부분들이 전부 문자열로 인식되버리니깐, Emacs의 TAB 기능이 마비되더군요. -_-; 스페이스바로 하나하나 indent를 맞출 수도 없는 노릇이고..

"아.. 이거 다른 에디터를 찾아봐야하나.."하고 고민하다가, 결국 위 코드를 요렇게 고쳤습니다. 작은 따옴표 3개로 감쌌던 문자열을, 큰 따옴표로 하고, 대신에 그 안에 있는 글자들에서 따옴표들에 역슬래쉬를 붙여준거죠.

p = re.compile("href=([^'\"]\S+?)[\s>]|href=\"([^\"]*?)\"|href='([^']*?)'", re.I)

요 지저분한 코드로 바꿨더니, 아래 그림처럼 잘~ 나오더군요.

에디터가 이해하기 쉽게 고쳐준 모습

Syntax Highlighting 기능은 대부분의 에디터에선 정규표현식으로 검사를 해요. 예를 들어, Editplus에서는 ^[a-z_].*\([^;]*$ 라는 정규식 패턴에 부합되는 부분을 함수 본체로 인식합니다. (그래서 자동 줄변환도 되죠!).

하지만, 언어들이 복잡해져감에 따라서 정규식으로는 모든 문법을 커버하는 것이 힘든가 봅니다.
이맥스 파이썬 모드.. 살짝 실망했어요. ㅠㅠ

-- Jong10

p.s. Windows Live Writer로 지금 이 글을 작성하고 있는데, 자꾸만 C-x C-s를 누르네요 -_-;


Trackback URL : http://www.jong10.com/trackback/235

Leave a comment

1원짜리 팁!

Emacs의 설정파일 .emacs에서 컬러테마를 적용할 때에는,

(setq load-path (cons (expand-file-name "C:/~생략~/.emacs.d/") load-path))
(load-library "color-theme")

(require 'color-theme)
(color-theme-initialize) ;; <-- 요걸 몰라서 삽질했네!!
(color-theme-charcoal-black) ;; 테마 이름

요러 코롬 합니다. 자세한 것은 EmacsWiki: Color Theme에 있어요.
참조했던 사이트에는 color-theme-initialize가 안나와있어서 한참 헤맸네요. ㅠㅠ
(Color Theme는 따로 받아서 깔아줘야 함.)

 

팁 하나 더,
Emacs에서 파이썬 모드 사용하는거..

파이썬모드 다운로드: http://sourceforge.net/projects/python-mode/

python-mode.el을 load-path에 추가하고,

(autoload 'python-mode "python-mode" "Python Mode." t)
(add-to-list 'auto-mode-alist '("\\.py\\'" . python-mode))
(add-to-list 'interpreter-mode-alist '("python" . python-mode))

아래의 훅!도 넣어주면 좋아요.

(add-hook 'python-mode-hook
           (lambda ()
             (set (make-variable-buffer-local 'beginning-of-defun-function)
                  'py-beginning-of-def-or-class)
             (setq outline-regexp "def\\|class ")))
역시 자세한 것은, EmacsWiki: Python Mode에 있어요.
 
-- Jong10

Trackback URL : http://www.jong10.com/trackback/232

Leave a comment

More Effective C++ C++에서 postfix보다 prefix가 더 빠르다는 말이 있습니다. 결론을 먼저 말하자면, 어떤 경우에는 맞는 말이고 다른 경우에는 그렇지 않습니다. 사실, 이는 MEC++항목 6에서 다루고 있는 주제입니다. 책에 나온 내용 말고는 얻을게 없으므로, 읽어보신 분은 skip하심 되겠습니다. :-)

저는 몇년전에 후위연산자보다 전위연산자가 더 빠르다는 말을 처음 들었을 때에, 도저히 이해하지 못했습니다. 제가 이해하지 못한 이유는, 컴파일된 어셈 코드가 ++i 쪽이 빠르다고 들었기 때문이죠. 지금 생각해보면, 이것은 상당한 오해였습니다. 당시에 Visual C++ 6.0에서 만들어진 어셈코드를 비교하면서, 멋대로 전위 연산자가 더 빠르다고 믿어버렸는데, 사실 어셈코드의 차이는 그것때문이 아니었습니다. 이에 대해 설명하기 시작하면 너무 장황해지므로 생략하고요.. 에, 또, Accelerated C++의 예제들에서도 별 다른 설명 없이 전위연산자를 선호했기 때문에 오해가 증폭된 점도 있었습니다만.

전위연산자든 후위연산자든 증가하려는 i라는 인스턴스가, char, int, double 따위의 내부 타입이라면, 속도는 다르지 않습니다. 실제로 몇몇 컴파일러들에서 컴파일을 하고 디스어셈블을 때려보면, 같은 코드가 나옵니다.

하지만, i가 객체의 인스턴스라면 얘기가 달라집니다. MEC++에 나오는 예제를 사용하겠습니다.

04: class UPInt {
05: public:
06:     UPInt& operator++();
07:     const UPInt operator++(int);
08: };

 

여기에서 참조를 반환하는 6번째 줄의 operator++()가 전위연산자이고, const을 반환하는 7번째 줄의 operator++(int)는 후위연산자입니다. 이 모습을 보면 3가지 의문점이 듭니다.

  1. 왜 후위연산자는 int 타입의 argument가 있는가?
  2. 후위연산자의 리턴타입은 왜 const인가?
  3. 전위연산자의 리턴은 참조인데, 후위연산자는 왜 값인가?

첫번째는, 단순히 함수를 구분하기 위함입니다. -_-; C++에서 호출될 함수를 구분하는 것은, 함수의 이름과 매개변수타입 말고는 없지요. 이거 뭐.. 언어 제약 안에서 힘겹게 저런 이상한 모습을 창조해낸 분들이 참 불쌍하게 느껴집니다.

두번째는, i++++ 같은 모양을 막기 위함입니다. i++의 결과가 참조라면, i++++ 이라고 해도 문법상 틀린 부분이 없습니다. i.operator++(0).operator++(0) 과 같은 말이거든요. C++은 int타입에 대해서 후위 증가 연산자를 두번 쓰는 것을 금하고 있기 때문에, 우리들의 클래스에서도 맞춰주는 쪽이 좋겠지요. 게다가 i++++ 이라고 하더라도, 2가 증가하지 않고 실제로는 1만 증가하게 될 수 있습니다. i++의 결과에서 ++를 하는 것인데, i++의 결과 자체가 일단 i의 값이잖아요.

마지막으로, 가장 중요한 부분입니다. 전위연산자는 참조를 리턴하는데, 후위연산자는 왜 값을 리턴하는가? 이 부분은 C++ 스펙에 공식적으로 설정된 모양새를 봐야합니다.

10: UPInt& UPInt::operator++()
11: {
12:     *this += 1;
13:     return *this;
14: }
15: 
16: const UPInt UPInt::operator++(int)
17: {
18:     const UPInt oldValue = *this;
19:     ++(*this);
20:     return oldValue;
21: }

 

보다시피, 후위연산자는 현재의 값을 리턴한 후에, 증가를 하는 특수한 작동방식으로 인해서, 구현상 내부에서 복사생성(18번줄)을 하게 됩니다. 저 클래스의 생성에 오버헤드가 별로 없다면 모르지만, 클래스의 크기가 커지면 좀 곤란하겠지요. 후위연산자로 ++를 할때마다 복사생성을 할테니깐요!

그래서.. 그래서, i가 클래스의 인스턴스인 경우는, ++i가 i++보다 빠를 수 밖에 없습니다. 정리하자면, 증가하는 인스턴스가,

  • 내부 타입의 경우는, 속도가 같습니다.
  • 객체인 경우는, postfix가 더 빠릅니다.

C++은 보면 볼수록, 땜빵을 수없이 해버린 언어라는 느낌이 들곤 합니다. 일관성이 결여된 부분도 은근히 많고, 좀 지저분하달까요. C++로 코딩을 하다보면 로직을 위한 부분보다는, 언어의 제약을 벗어나기 위한 꽁수가 더 많아지는 것 같기도 합니다. -_-;; 뭐, 그래도.. 템플릿과 STL이 있어서 참 좋지만...

-- Jong10

꼬랑지. ++Jong10 이란 블로그가 있다면, 저보다는 미묘하게 빠르겠군요?! =_=


Trackback URL : http://www.jong10.com/trackback/228

  1. # 기원 2008/02/04 00:52 Delete Reply

    그래서 그냥 ++i 로 통일 하려고
    C++은 자유롭고 지저분하지

Leave a comment


이 블로그 구독하기!!

Recent Posts

  1. 보헤미안 랩소디
  2. 학교 식당 메뉴를 문자로..
  3. C++0x : 새로운 C++의 문법
  4. Load balancing in my life
  5. 나의 첫 Ruby 사용기

Recent Comments

  1. 일요일은 안가. 월요일이었겠.. jong10 05/13
  2. 근데..이거..일요일에도 문자.. 지구인 05/13
  3. 응. 아침 10시 25분마다 나한.. jong10 05/03
  4. 결국 만들었구나-_-; 신용불량 05/03
  5. 3학년은 원래 그래... 원래 상.. 신용불량 04/23

Recent Trackbacks

  1. C++0x : 새로운 C++의 문법 이름없는 블로그 05/10
  2. 조엘, 중소S/W기업 사장님들에.. Effortless - 上善若水 - 상선.. 02/20
  3. 긴급재난문자정보 - 20일 OO지.. 용희의 블로그 2007
  4. 오 마이 갓! 3분전쯤에 지진;; Thyme; Weblog + [!] 2007
  5. 방금 전에 지진을 느꼈어!!! 에보니.Q 2007

Bookmarks

  1. Channy's Blog
  2. Daum DNA Lens
  3. Game Log
  4. LangDev
  5. likejazz.COM
  6. OpenLook :: 이야기
  7. Sherrad의 여백의美
  8. ▒ 제닉스의 사고뭉치 ▒
  9. 김국현의 낭만 IT
  10. 미친병아리가 삐약삐약
  11. 애자일 이야기
  12. 하루하루
Statistics Graph
Creative Commons License

이 저작물은 크리에이티브 커먼즈 코리아 저작자표시-비영리-동일조건변경허락 2.0 대한민국 라이선스에 따라 이용하실 수 있습니다.