어느 팀에서 1년간 Node.js 로 작업을 하고나서 다시 python으로 돌아 갔다는 을 보고나서는 그럴 수 있다고 생각했다. nodejs에서 사용하는 Javascript는 기존의 Javascript와 설계 방식이 다르다. 모든 곳에서 비동기적인 상황을 고려해야한다. 정확히는 I/O가 일어나는 함수의 경우에서 비동기적인 처리를 고려해야한다.


Nodejs는 구글의 자바스크립트 엔진인 V8이 JIT 컴파일러를 도입하면서 괜찮은 성능을 제공하였기 때문에 가능한 프레임웍이었다. 그리고, 최대한 동기적인 작업을 설계에서 배제시켰고, 그에 따라 nodejs 생태계는 비동기 철학에 맞춰 확장이 되었다.


처음 nodejs가 나왔을 때 비동기적인 설계를 편하게 구현할 수 있는 자바스크립트의 문법적 기능으로는 closure 밖에는 없었던 것 같다. 지금은 co-routine을 구현하기 위한 generator가 들어가고, Promise가 들어가면서 지금과는 다른 설계방식이 앞으로는 유행하지 않을까 한다.


Nodejs는 javascript라는 것이 특징이 아니다. javascript가 클라이언트에서 사용되다가 비로소 서버에서도 사용되는 것에 열광할 일이 아니라는 것이다. 마이크로소프트의 ASP가 VB만이 아닌 Javascript로도 제공됐었다는 사실을 아시려나 모르겠다. npm 마저도 특징이 아니다. 요샌 다 패키지 매니저는 기본이지 않은가. Nodejs의 매력은 "비동기적인 설계를 강제"한 것에 있다. 만약, python이든, java든 php든 심지어 C++이라할지라도 비동기적인 함수로만 패키지의 생태계가 만들어진다면, 아마 열광할 요소가 있을 것이다. 그러나 전통강자가 있으니 아마 쉽지는 않을 것이다.



저작자 표시 동일 조건 변경 허락
신고
크리에이티브 커먼즈 라이선스
Creative Commons License

가장 잘 할 수 있는 것을, 내가 가장 익숙한 방법으로, 너무 깊이 생각하지 말고 행동하면 된다. 사업하는 사람들의 얘기지만, 이것은 뭔가를 배울 때도 마찬가지이고, 궁극적인 인간의 질문에 답을 찾아가는 길도 마찬가지이다.


내가 철학을 공부하거나 예술이나 미학을 공부하려한다해도, 누군가 차려놓은 연역적인 커리큘럼을 따라 갈 수도 있지만, 힘들고 지치고 결정적으로 재미가 없다.멀리 돌아가도 설사 잘못이해하고 나아가도, 가장 익숙한 방법으로, 생각해보 건데 가장 그럴싸한 방법대로 천천히 가는 것이 오래 갈 수 있는 방법이다. 즐길 수 있는 방법이다.


우주의 궁극적인 답 42를 찾는 길도 -- 못찾아도 무슨 상관인가 -- 가장 잘 할 수 있는 것에서, 가장 익숙한 방법으로 천천히 가는 것이다.


--


요즘 실서버에 올린 node.js 코드와 씨름하는 것이 즐겁다.

저작자 표시 동일 조건 변경 허락
신고
크리에이티브 커먼즈 라이선스
Creative Commons License

부팅과정에서 실행되는 init script 들은 모두 터미널이 없이 실행된다. 그러나 sudo 명령은 terminal이 필요한 명령이므로, su 를 사용해서 사용자 전환을 해야한다. 


sudo를 쓰고 싶은 욕망은 사용자 전환 후 실행될 명령을 전달하는데 있다.


sudo -u <user> <command> ...

su <user> -c "<command> ..."


뭔가 깔끔하지 않을듯해 보이는 복수개의 인자를 모두 하나의 -c 옵션에 넣어야하는 불편함이 있는 것이다. 헹여 인자가 길어지기라도 하면 상상만하도 못생기지 않나.


그러나, 부팅과정에서는 일반 계정으로 전환한답시고 sudo 를 사용하면 안되는 것이다.


며칠전 삽질이 생각나서 끄적임.

저작자 표시 동일 조건 변경 허락
신고
크리에이티브 커먼즈 라이선스
Creative Commons License

Javascript의 ECMAScript 6 이전 문법으로 비동기를 지원하기 위한 방식으로 async module은 참 잘 만들었다는 생각이 든다.


아마 generator 가 본격적으로 쓰여도 다른 것들 때문에라도 쓰지 않을까 하는 생각.

저작자 표시 동일 조건 변경 허락
신고
크리에이티브 커먼즈 라이선스
Creative Commons License

+ Recent posts