Blog/2014-07

Submitted by hyacinth @
신문과 잡지를 보면 기사를 잘 썼거나 내용이 인상적인 글이 있다. 그래서 몇 년 전에는 가위로 잘라서 스크랩하기도 했는데, 지금은 스마트폰으로 사진을 찍으면 아주 정리하기 편하다.
다음은 어제(7월 12일 토요일) 자 신문과 몇몇 잡지를 보며 얻은 수확물.

1. '30년 안에 없어질 직업'

지난 3월 17일 LA타임스는 지진 관련 소식을 전하는 속보 기사를 온라인에 냈다. 로봇이 쓴 속보 기사에 BBC 등 전 세계 언론은 민감하게 반응했다.

2. 코세라

코세라(Coursera)는 세계 최대 규모의 온라인 공개 강좌 컨소시엄이다. 지난 달에는 카이스트도 지난 해 10월에 있었던 코세라와의 협약에 따라 김양한 교수의 음향학 등 3개의 강좌를 공식 개설했다. 누구나 코세라 홈페이지를 통해 수강할 수 있다.
https://www.coursera.org/

3. "지금 왜 이걸 하고 있지" … 매일 스스로 질문 던져라


4. 사설

도덕적인 흠결과 거짓말은 차원이 다르다. 신뢰를 바탕으로 공무를 수행해야 할 공직 후보자로서 거짓말은 중대한 결격 사유다. 선진국의 윤리 관련 규정과 부패 방지 법규에는 ‘인테그리티(integrity)’라는 단어가 반드시 들어간다. 정직성과 청렴성, 또는 고결함으로 번역되는데 모두 인격과 관련되어 있는 말이다. 도덕적인 흠결과 거짓말은 차원이 다르다. 신뢰를 바탕으로 공무를 수행해야 할 공직 후보자로서 거짓말은 중대한 결격 사유다.
도덕적인 흠결과 거짓말은 차원이 다르다.



Submitted by @
Submitted by hyacinth @
최근 C/C++로 만들 수 있는 간단한 웹 서버를 찾게 되었는데 적절한 프로젝트를 찾아서 소개한다.

Civetweb


C/C++로 구현된 웹 서버. 프로젝트 저자는 임베디드 C++ 웹 서버라고 표현하고 있다.
기능이 단순해서 사용하기 쉽다. HTTP와 CGI, SSL, SSI, Lua 등을 지원한다.

Civetweb은 MIT 라이선스기 때문에 상용 소프트웨어도 제한없이 사용할 수 있다. Civetweb은 C로 구현된 웹 서버 mongoose 프로젝트(https://code.google.com/p/mongoose/)에서 fork되었다. mongoose는 원래 MIT 라이선스였으나 2013년 8월 GNU GPL v2 라이선스로 변경되었다. 즉, Civetweb은 mongoose가 GPL v2 라이선스를 가지게 됨에 따라 mongoose가 아직 MIT 라이선스일 때부터 fork 되어 MIT 라이선스를 유지하는 것이 Civetweb에서 명시하고 있는 프로젝트의 가장 큰 목적이다. (프로젝트에 기여하는 개발자들에게도 GPL 라이선스 변경 이후 mongoose 코드를 사용하지 말 것을 강조하고 있다. 최신 기능과 Sergey Lyubka(mongoose의 저자)가 작성한 훌륭한 기능들을 사용하고 싶으면 mongoose를 사용해 달라고 말하고 있다. 물론 GNU v2 라이선스를 유지할 수 있다면.)

따라서 GPL 라이선스 제약에서 자유롭고 싶으면 mongoose 대신 Civetweb은 강력한 대안이 될 것이다.


최종 사용자를 위한 서버 프로그램은 SourceForge에서 다운로드 받을 수 있다. https://sourceforge.net/projects/civetweb/
개발자를 위한 풀 소스 접근이나 기여는 GitHub에서 할 수 있다. https://github.com/bel2125/civetweb
토론은 구글 그룹에 열려있다. https://groups.google.com/d/forum/civetweb


Quick Start
다음은 C 프로젝트에서 Civetweb을 사용하여 HTTP 서버를 열어 Hello civetweb 페이지를 리턴하는 예제다. 사용하기 간단다는 것을 보여준다.

GitHub:bel2125/civetweb/tree/master/examples/hello

C 코드는 mongoose과 거의 같다. C++ 클래스로 랩핑된 버전도 있다.

CivetSevrer.cpp
civetweb.c
Civetserver.h
civetweb.h
 

MFC에서 사용하려면 각 헤더에 stdafx.h를 추가하고 civetweb.c 확장자를 .cpp로 변경하고 사소한 캐스팅 오류가 나는 몇 부분을 수정하면 된다.

CivetServer 클래스는 다음 같이 사용한다. 핸들러 클래스를 만들고 CivetServer 클래스를 선언해 핸들러를 등록하면 끝난다.


CGI, Lua, WebSocket 등도 프로젝트에 첨부된 예제를 보면 어렵지 않다.

Have fun!