The qDecoder Project

About qDecoder


What's qDecoder?

qDecoder는 C/C++용 웹 어플리케이션 인터페이스로서, 개발자를 위한 솔루션 제품 입니다. Linked-list에 기반한 qDecoder의 Query Fetch 알고리즘은 COOKIE/GET/POST(파일 업로딩 포함)에 상관없이 심플한 라이브러리 인터페이스로 하위 레이어와의 투명성을 제공하기 때문에 웹 어플리케이션(CGI)이 더욱 직관적으로 설계되고 구현될 수 있도록 합니다. qDecoder는 Free Software 모델에 따라 개발되며 공개 배포됩니다.

Why C/C++ language is necessary for developing web applications?

근래의 JSP, ASP, Perl, PHP와 같은 언어는 웹 프로그램을 더욱 손쉽게 함이 사실입니다. 이러한 저작 언어들은 간략한 코드로 데이터베이스 연동을 손쉽게 하며 CPAN 등을 통해 풍부한 라이브러리 또한 제공 됩니다. 이러한 상황에서 우리는 때때로 ``어렵고 복잡한 C/C++ 언어로 굳이 웹 어플리케이션을 개발 할 필요가 있을까?''라는 생각을 하게 됩니다.

실로 많은 일반적 경우에 우리는 PHP와 같이 빠른 개발속도를 보장해주는 손쉬운 도구를 선택하여 개발에 임하게 되지만 몇몇 크리티컬한 요구 사항이 충족되어야만 할 경우에 많은 개발자들은 여전히 산업계 표준 언어인 C/C++을 개발 언어로 선택하고 싶어합니다.

동시 다발적인 프로세스로 인한 레이스 컨디션 상황에서의 파일 잠금 기법과 같은 임계 영역 처리, 프로세스간 통신 및 파이핑 처리, 병목 루핑 코드에 대한 퍼포먼스 보장, 저수준 컨트롤, 캐릭터/비트 단위 조작 등은 한 예가 될 수 있습니다. 또한 C/C++로 제작된 프로그램은 가장 넓은 플랫폼에 별다른 의존성 없이 손쉽게 이식이 가능하다는 장점을 갖습니다.

그 선택의 가장 큰 갈림길은 무엇보다 C/C++ 언어 특유의 까다로움으로 인한 개발 지연과 구현의 번거로움에 대한 두려움일 것입니다. 언어는 창조를 위한 도구일 뿐인데, 필요에 의해 만들어진 도구가 역으로 창조성에 제약을 준다면 이는 실로 주객이 전도된 상황이 아니라 할 수 없겠죠.

1996년 초 NCSA의 ``util.c''를 비롯해 공개된 몇몇 C/C++ CGI 라이브러리를 접하며 마음에 꼭 맞는 라이브러리를 찾지 못하던 즈음에 작성하기 시작한 qDecoder의 초벌 코드는 5.0에 접어들며 이제 어느정도 기본 골격을 갖추어 웬만한 프로그램은 C/C++ 만의 장점을 최대한 살린체 PHP나 Perl처럼 빠르게 프로그램할 수 있을 정도가 되었습니다. (아직 보강되어야 할 부분이 많이 남아 있지만, 적어도 저자에게는 틀림없는 사실 입니다.)

손쉬운 저작 도구는 계속 발전 할 터이이지만, C/C++만의 영역은 여전히 존재할 것입니다. 그것이 qDecoder가 존재하는 의미이며 지속적으로 개발되고 유지되는 이유입니다.

자, 우리가 C/C++ 옹호자가 아니며, 왜 JSP와 같은 편리한 도구가 있음에도 여전히 qDecoder와 같은 C/C++ 웹 어플리케이션 인터페이스가 필요한지에 대해서는 충분히 설명을 한 듯 합니다. 귀하의 개발이 C/C++의 특성을 필요로 할 때 qDecoder가 조그마한 도움이 될 수 있고, 우리가 배운 Free Software의 교훈을 미약하나마 실천할 수 있다면, qDecoder는 환호할 것입니다.

Inspected Compatible Platforms

qDecoder는 다음 환경에서 개발되고 실험됩니다.

License Agreement

qDecoder is a Free Software. And qDecoder is distributed under the GNU Lesser General Public License since the version of 6.0(May 8, 2000).

Free software is a matter of liberty(in other word, freedom), not price. So, the purpose of this License is to make a software free to assure everyone the effective freedom to copy and redistribute it, with or without modifying it, either commercially or non-commercially.

The GNU Project provides two principal licenses for libraries for Free Software. One is the GNU Lesser General Public License (Simply Lesser GPL or LGPL) and the other is the ordinary GNU General Public License (Simply GPL). Using the Lesser GPL permits use of the library in proprietary programs and using the ordinary GPL for a library makes it available only for free programs.

The GNU group advises not to use GNU Lesser GPL because it does less to protect the user's freedom than the ordinary GPL. It's right, Lesser GPL is not a strong copyleft license. But in case of qDecoder, permitting of linking with non-free modules can bring some kinds of other advantages to users. That's why qDecoder has been distributed under Lesser GPL.

SUMMARY: qDecoder is a Free Software and distributed under GNU Lesser General Public License. This is a free software license, but not a strong copyleft license, because it permits linking with non-free modules. It is compatible with the GNU GPL.

NOTE: It's very good idea to use one of GNU Licenses for your free software. It will protect your rights and future problems.

Copyright

qDecoder - Web Application Interface for C/C++   

Copyright (C) 2007 Seung-young Kim.

This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as published
by the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public License
along with this program.  If not, see .

Project Contributors (Alphabetic Order)


[Home] [About] [Examples] [Changes] [Download] [SVN Repository] [Install] [Reference]