목록프로그래밍 (74)
Dharma
앞으로 시절이 시절인 만큼, 공공 게시판에서 다양하게 의견을 주고 받을 수 없는 시절이 다가 올 수도 있습니다. 그래서 뜻이 맞는 사람들 (동지? ㅎㅎ) 끼리 모여서 이야기 할 수 있는 동호회 스러운 느낌의 게시판들이 성행할 수도 있습니다. 포탈은 어떻게든 내용이 새어나갈 수 있지만 , 이런 동호회 기반의 커뮤니티는 그런 염려가 없습니다. 저도 하나 가입해 있어서 어려울 때 심심찮은 위로가 됩니다. 그런데 그런 작은 규모의 게시판일 때는 제로보드가 문제 없이 동작하나 사람들의 접속이 많아지면 많아질 수록 힘들어 하는 것이 느껴집니다. 따라서 다수의 접속을 처리할 수 있도록 최근 뜨겁게 인기를 끌고 있는 event-driven 방식의 웹서비스가 필요하지 않을까 해서 만들어본 기초 프로젝트 입니다. 당연히 ..
이 질문에 대한 답변중에 공감이 가는 것을 http://stackoverflow.com/ 에서 봤습니다. Dive and Swim 이 그 답변이였습니다. 최근에 저도 새로운 무엇인가를 배우기 위해서 거의 일년 가까운 시간을 소비했습니다. 물론 그것만 한 것은 아니지만 차근 차근 공부할려고 정말 많은 시간을 투자 했는데 , 최근 일주일간 재미 있어 보이는 것을 만들어 볼려고 직접 만들어 본 것보다는 떨어지는 것 같습니다. 이래서 직접 경험해 보는 것보다 훌륭한 공부는 없다고 하나 봅니다. 아이디어보다 실천이 중요하듯이 공부도 실전을 병행해서 해보는 것이 훨씬 중요합니다. (입롤 백번 해봐야 실제로 한번 해보는 것보다 떨어집니다 ㅎㅎ) ps. 프로그래밍 언어에 관한 이야기 지만, 외국어도 별로 다르지 않겠지요?
What is this? 가 이것은 무엇인가요가 아닌 this 란 무엇인가요? 라는 말 장난을 쳐 둔 포스트의 내용이 있습니다. 객체지향 프로그래밍 (Object Oriented Programming) 언어에 보면 this 라는 애가 등장합니다. 여기서의 this 는 간단해서 Object 자신을 가르키고 있습니다. 다만 Javascript 의 this 는 이와 달라서 class 내에 선언된다고 해도 꼭 그 class 객체를 지정하지는 않습니다. 이 알송 달송한 javascript 의 this 를 체계적으로 잘 설명한 글 입니다. http://howtonode.org/what-is-this 왠만하면 번역을 해서 편하게 설명할 까 했는데 너무 양이 많아서 엄두가 나지 않는군요 ㅎㅎ;; 대신 결론 부분만 조금..
아직도 외국 리스퍼들 이나 커뮤니티에 가보면 Windows 에서 Lisp 개발 환경 꾸미느라 고생한다는 글이 종종 보이곤 합니다. 예전에 Weblock 프로젝트 개발 환경을 Windows 에서 구현하는 것이 의미 있다고 생각해서 정말 열심히 노력해서 8시간만에 세팅한 적이 있었습니다. 뭔가 모잘란 듯 하지만 잘 구성되서 만족하며 썼었습니다. 그 후로 잠시 잊고 있다가 , 다시 같은 개발 환경을 Ubuntu 에서 할 경우가 있었습니다. (CentOS 가 아닌 Ubuntu 입니다). 3분 걸리더군요.. 8시간대 3분 , 게다가 8시간짜리 환경은 완벽한 환경도 아니였습니다. SBCL 윈도우즈 버젼은 그 때 당시에는 쓰레드 지원이 안됐습니다. 제대로 되지도 않는 개발 환경을 세팅한다고 8시간을 허비해야 할 가치..
전통적인 프로그래밍 언어들에 있어서 프로그래밍 방식이란 순차적으로 실행되는 형식을 취합니다. 쉽게 말해서 var a = FunctionA () ; // 10 초 걸림 var b = FunctionB () ; // FunctionA 가 실행된지 10초 후에 실행됨 이러한 방식으로 앞에 실행된 것(FunctionA)이 완벽하게 끝나야지만 다음 것(FunctionB)이 실행됩니다. 너무나 당연한가요? 사실 순차적으로 실행되는 것은 Node.js 에서도 일반적인 방식입니다. 다만 약간의 차이가 있을 뿐입니다. Node.js 에서 위 함수가 실행되는 방식을 알아보기로 할까요? var a = FunctionA () ; // 10 초 걸림 var b = FunctionB () ; // FunctionA 가 실행된후 ..
지금 하고 있는 간단한 App 서버를 만들기 위해서 Node.js 를 사용해 보고 있는 중입니다. 빠르고 간단하고 아주 쉽게 App 서버를 만들 수 있는 강력한 툴이지만, 조금만 깊이 들어가면 골치 아픈 구조더군요. Async Hell 이라고 불리는 CallBack 이 CallBack 을 부르고 , 또 부르고 부르고 부르고.. 한 5단계 내려가게 되면 환장하겠더군요 지금까지 제가 익숙하게 다뤄온 언어들이 대부분 Event-Driven 방식이 아니라서 그런지 적응하는데 시간이 좀 걸릴거 같습니다.
몇년전에 ROR (Ruby on Rails)이 이슈화 될때의 유명한 ScreenCast 가 생각납니다. '15분만에 블로그' 만들기 였는데, 그 뒤로 새로운 언어나, 새로운 웹프레임워크의 강력함을 설명하기 위해서 항상 블로그를 얼마만큼 빠르게 만들어 낼 수 있는가가 그 척도가 되는 듯 합니다. Node.js도 예외는 아닌듯 싶은데, 실제로도 빠르게 만들어 볼 수가 있으며, 사용하는 사람에게 프로그램을 짜는 즐거움까지 전달합니다. 제가 예전에 정리한 포스트 에서 마지막에 실전 예제라고 소개하는 직접 블로그 만들기에 관한 예제입니다. 소스가 예전 버젼에 맞춰져 있기 때문에 현행화를 조금 거쳤습니다. 환경 OSX Mountain Lion Node.js v0.8.14 express 3.0.1 jade 0.27...
Node.js 와 Node.js 를 잘 활용하기 위한 웹 프레임워크까지 쭈욱 따라하기 식으로 하루만에 쫓아갈 수 있는 훌륭한 튜토리얼이 정리되어 있습니다. 비록 영어이긴 하지만 신기술은 번역되어 있는 것을 구하기 힘드니 여기서 쭈욱 따라가시면서 이해만 하시면 충분히 node.js 로 바로 웹 사이트 하나 만들 수 있는 실력을 구비하실 수 있을 것입니다. Node.js 설치하기 는 예전 제 포스트를 참조하시면 됩니다. 기본 (The Basics) (1-2 시간 소요) The Node Beginner Book 기본적인 문법과 Asynchronous 코딩에 대한 기본을 설명해주고 있는 훌륭한 책입니다. 정말 쭈욱 따라하시면 됩니다. 더 깊게 들어가기 (Going Deeper) (1 시간 소요) chapter7..
CLisp 이나 C++ 에서는 쉽게 설정하는 함수 인자 기본 값 (Default) 설정하는 방법에 관한 예제입니다. 일단 쉽게 설정하는 방법이 없는 듯 합니다. link | changes view sourceprint? 1 user=> (defn bar 2 ([a b] (bar a b 100)) 3 ([a b c] (* a b c))) 4 #'user/bar 5 user=> (bar 5 6) 6 3000 7 user=> (bar 5 6 2) 8 60 이 와 같은 식으로 가장 인자 수가 많은 함수를 내부에서 호출하는 형식으로 꾸며줍니다. 그 외에 다른 방식으로는 :keyword 형식으로 호출하는 등등이 있으나 위에 쓰여지는 방법이 그나마 다른 언어(Language)에 익숙한 방법이라 사료됩니다. defn ..
Parallelism Versus Concurrency Lest our discussion of concurrency and parallelism lead you to think they are the same thing, let’s disentangle the two notions. Concurrency is the coordination of multiple, usually interleaved threads of execution that are accessing or modifying some shared state. Parallelism involves state as well, but usually in the inverse. Being an optimization technique used ..