목록Programming (46)
Dharma
앞으로 시절이 시절인 만큼, 공공 게시판에서 다양하게 의견을 주고 받을 수 없는 시절이 다가 올 수도 있습니다. 그래서 뜻이 맞는 사람들 (동지? ㅎㅎ) 끼리 모여서 이야기 할 수 있는 동호회 스러운 느낌의 게시판들이 성행할 수도 있습니다. 포탈은 어떻게든 내용이 새어나갈 수 있지만 , 이런 동호회 기반의 커뮤니티는 그런 염려가 없습니다. 저도 하나 가입해 있어서 어려울 때 심심찮은 위로가 됩니다. 그런데 그런 작은 규모의 게시판일 때는 제로보드가 문제 없이 동작하나 사람들의 접속이 많아지면 많아질 수록 힘들어 하는 것이 느껴집니다. 따라서 다수의 접속을 처리할 수 있도록 최근 뜨겁게 인기를 끌고 있는 event-driven 방식의 웹서비스가 필요하지 않을까 해서 만들어본 기초 프로젝트 입니다. 당연히 ..
What is this? 가 이것은 무엇인가요가 아닌 this 란 무엇인가요? 라는 말 장난을 쳐 둔 포스트의 내용이 있습니다. 객체지향 프로그래밍 (Object Oriented Programming) 언어에 보면 this 라는 애가 등장합니다. 여기서의 this 는 간단해서 Object 자신을 가르키고 있습니다. 다만 Javascript 의 this 는 이와 달라서 class 내에 선언된다고 해도 꼭 그 class 객체를 지정하지는 않습니다. 이 알송 달송한 javascript 의 this 를 체계적으로 잘 설명한 글 입니다. http://howtonode.org/what-is-this 왠만하면 번역을 해서 편하게 설명할 까 했는데 너무 양이 많아서 엄두가 나지 않는군요 ㅎㅎ;; 대신 결론 부분만 조금..
요즘 Node.js 로 프로젝트를 진행중입니다. 엄청나게 빠르고 편하게 개발할 수가 있는 좋은 개발 환경인데 단 하나의 장점이 너무 빠르게 개발해서 기획이나 클라이언트 개발과 페이스를 맞출 수 없는 단점 아닌 단점이 있습니다. 게다가 페어 프로그래밍 방식으로 일하는 친구마저 있으니 속도가 상상을 할 수 없을 만큼 빠릅니다. (최근에는 진짜 어려운 일이 아니면 페어도 그만두었습니다. 여유를 좀 가지고 일하자고 해서 ㅎㅎ ) 그러다 보니 딴 짓을 하게 되더군요. 지금 열심히 만들고 있는 게, DB 에 테스트 데이터를 랜덤으로 만들어서 집어넣는 프로그램을 만들었습니다. 아주 쓸만하더군요. (생각보다 괜찮음 ㅋㅋ) 그중에서 현재 날짜를 가지고 와서 주어진 포맷팅 형식으로 변환하여 String 타입으로 리턴하는 ..
예전 제 포스트 에서 언급된 개인용 GIT 을 설치해서 혼자 깨작 깨작 만드는 프로젝트나, 개인 emacs 설정 파일들을 올려두고 사용하고 있었습니다. 어쩌다 보니, 팀 단위로 작업을 하게 되었고, 개인용 GIT 만으로는 한계가 존재하더군요. (어떤 사람이 올린 소스가 잘못 됐는지 파악이 되야 '마녀 사냥'을 하지요 ㅎㅎ) 따라서 조금 찾아 봤더니 http://gitlabhq.com/ 이렇게 훌륭한 오픈 소스가 있더군요. http://github.com 과 사용법이 많이 유사합니다. 팀단위로 개발할 때 꼭 설치해서 관리해 주면 좋을 것 같습니다. 혼자 프로젝트 관리 하실 때도 좋구요. 설치한 환경은 (Ubuntu 12.10 과 Ubuntu 12.04 LTS ) 에 설치했습니다. 전자는 회사, 후자는 집입..
몇년전에 ROR (Ruby on Rails)이 이슈화 될때의 유명한 ScreenCast 가 생각납니다. '15분만에 블로그' 만들기 였는데, 그 뒤로 새로운 언어나, 새로운 웹프레임워크의 강력함을 설명하기 위해서 항상 블로그를 얼마만큼 빠르게 만들어 낼 수 있는가가 그 척도가 되는 듯 합니다. Node.js도 예외는 아닌듯 싶은데, 실제로도 빠르게 만들어 볼 수가 있으며, 사용하는 사람에게 프로그램을 짜는 즐거움까지 전달합니다. 제가 예전에 정리한 포스트 에서 마지막에 실전 예제라고 소개하는 직접 블로그 만들기에 관한 예제입니다. 소스가 예전 버젼에 맞춰져 있기 때문에 현행화를 조금 거쳤습니다. 환경 OSX Mountain Lion Node.js v0.8.14 express 3.0.1 jade 0.27...
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 ..
NodeJS 는 예전부터 C/C++ 이 차지하던 위치를 (최근에 Python 이 차지한 것 같은 이야기가 있습니다) 차지한 것 같은 언어 입니다. (C/C++ 에 비하여) 어렵지도 않고 아주 쉽고 편하게 서버 어플리케이션을 만들 수 있는 쉬운 언어 입니다. 그 쉬운 NodeJS 를 살펴볼 일이 있어서 잠깐 살펴보게 됐습니다. 설치법 여러가지 해줘야 하는 것이 있지만, 우리는 Ubuntu 를 쓰지 않겠습니까? 초 간단하게 설치가 가능합니다. (당연히 Mint 도 동일합니다) sudo apt-get install python-software-properties sudo apt-add-repository ppa:chris-lea/node.js sudo apt-get update sudo apt-get inst..
프로젝트를 만들다 보면 너무나 당연하게 디펜던시를 가지는 프로젝트가 생기게 됩니다. 메이븐은 기본적으로 디펜던시를 가져다가 프로젝트를 만들게 되는데 이를 수동으로 해야할 필요가 생긴다면 어떻게 할 것인가? 하는 문제가 있습니다. 즉 A : 실행파일이 만들어지는 프로젝트 B : A 가 참조하는 프로젝트 C : B 가 참조하는 프로젝트 A - - B - - C 이런식으로 아마 만들어지는 것이 지금까지의 일반적인 방법일 것입니다. 그러나 메이븐에서 관리를 하게 된다면 조금 다른 식이 됩니다. P (parent) 가 존재해서 P - A - B - C 같은 식으로 프로젝트가 존재하게 됩니다. 그리고 각각은 pom.xml 만 수정해서 프로젝트를 관리할 수가 있습니다. 그래서 수정해야 할 부분을 따라하기로 만들어 보..
힘들게 저번 포스트 에서 정리를 했더니 더 쉬운 방법이 있다고 알려줘서 정리를 해 둡니다. (시작할 때 왜 알려주지 않은건가여.. ) 저번과 거의 동일 합니다. 1. 아파치 설치하기 $ sudo apt-get install apache2 2. 톰캣 설치하기 $ sudo apt-get install tomcat7 tomcat7-docs tomcat7-admin tomcat7-examples 설치해두면 언젠가는 쓸모가 있으니 한꺼번에 설치해줍니다. 3. 제대로 설치됐는지 확인해보기 http://localhost 와 http://localhost:8080 으로 페이지가 제대로 뜨는지 확인해 줍니다. 만약 페이지가 제대로 뜬다면 apache2 와 tomcat7 은 제대로 설치된 것입니다. 여기까지는 동일하고..