tag:crieit.net,2005:https://crieit.net/tags/MayaPosch/feed 「MayaPosch」の記事 - Crieit Crieitでタグ「MayaPosch」に投稿された最近の記事 2019-07-02T19:43:14+09:00 https://crieit.net/tags/MayaPosch/feed tag:crieit.net,2005:PublicArticle/14937 2019-04-20T12:08:57+09:00 2019-07-02T19:43:14+09:00 https://crieit.net/posts/C-Cerflet C++ ベースのウェブアプリケーションサーバ Cerflet のご紹介 <h1 id="はじめに"><a href="#%E3%81%AF%E3%81%98%E3%82%81%E3%81%AB">はじめに</a></h1> <p><a target="_blank" rel="nofollow noopener" href="https://github.com/MayaPosch/Cerflet">Cerflet</a> は <a target="_blank" rel="nofollow noopener" href="https://github.com/MayaPosch">Maya Posch</a> さん作の C++ ベースのシンプルな Web Application server です<br /> Raspberry Pi でもサクサクに動いています</p> <p>python の tornado みたいにリクエストハンドラを書くだけで簡単に使える上に、<strong>オール C++</strong> かつ<strong>オンメモリ</strong>なので超高速が期待できます</p> <p>ちなみに Cerf はジビエ好きな方はピンと来るかと存じますが多分、フランス語の <strong>鹿(セール)</strong> なんじゃないかなと想像してます、Maya さんの他のプロダクトも動物の名前のが多いし、彼女の会社の名前からして <a target="_blank" rel="nofollow noopener" href="http://www.nyanko.ws">Nyanko</a> だし</p> <h1 id="実装"><a href="#%E5%AE%9F%E8%A3%85">実装</a></h1> <p>本体の<a target="_blank" rel="nofollow noopener" href="https://github.com/MayaPosch/Cerflet/blob/master/lib/httpcerflet.cpp">実装</a>は物凄くシンプルでコメント込で 80行ぐらいしかないです、すごい<br /> 私だったら C++ の80行ってコマンドライン処理するだけでもゆうに超えちゃったりします</p> <p>サーバの処理も実行時オプションの処理も <a target="_blank" rel="nofollow noopener" href="https://pocoproject.org/">POCO</a> の機能が有効に使われてて、POCO の凄さと、POCOを使えば Web Application でさえこんなにシンプルにつくれるという Maya さんのソフトウェア・アーキテクチャのセンスの良さに敬服いたしますとともに、Poco.Net のプラグマティックなチュートリアルとして大変ありがたく読ませていただきました次第でございます</p> <h1 id="How to try it"><a href="#How+to+try+it">How to try it</a></h1> <ol> <li>POCO を<a target="_blank" rel="nofollow noopener" href="https://pocoproject.org/download.html">インストール</a></li> <li>git clone https://github.com/MayaPosch/Cerflet.git</li> <li>cd Cerflet/sample</li> <li>make</li> <li>./hellocerflet</li> </ol> <p>「libPocoNet.so.60 がないよ」とかエラーになるようでしたら <a href="https://crieit.net/posts/POCO-error-while-loading-shared-libraries-libPocoNet-so-60-cannot-open-shared-object-file-No-such-file-or-directory">ldconfigして</a>みてください</p> <p>で、hellocerflet を起動したサーバの port 8080 番をブラウザで開くと</p> <p><a href="https://crieit.now.sh/upload_images/7cc81f710697ae3e872d25b283d8f9535cba83edb5f74.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/7cc81f710697ae3e872d25b283d8f9535cba83edb5f74.png?mw=700" alt="スクリーンショット 2019-04-20 11.27.15.png" /></a></p> <p><strong>ビックリするほど簡単</strong>です</p> <p><a target="_blank" rel="nofollow noopener" href="https://github.com/MayaPosch/Cerflet/blob/master/sample/HelloCerflet.cpp#L22">こちら</a> の HTTPRequestHandler の中身を変えて、たとえば ContentType を "text/html" じゃなくて <strong>"application/json"</strong> にして、<a target="_blank" rel="nofollow noopener" href="https://github.com/MayaPosch/Cerflet/blob/master/sample/HelloCerflet.cpp#L32">ostr</a> に <strong>json 文字列</strong>を返したら超高速かつコンパクトな API サーバーとしてすぐにでも大活躍しそうです</p> <h1 id="作者の御紹介"><a href="#%E4%BD%9C%E8%80%85%E3%81%AE%E5%BE%A1%E7%B4%B9%E4%BB%8B">作者の御紹介</a></h1> <p>作者の <a target="_blank" rel="nofollow noopener" href="https://github.com/MayaPosch">Maya Posch</a> さんですが、<a target="_blank" rel="nofollow noopener" href="http://www.mayaposch.com/autobiography.php">御本人のブログ</a>によると生まれつきに抱えるいくつかの問題、特に<strong>両性具有</strong>に起因する問題(当時のニュース番組が<a target="_blank" rel="nofollow noopener" href="https://www.youtube.com/watch?v=M4N-0CgUCX8">これ</a> とか <a target="_blank" rel="nofollow noopener" href="https://www.youtube.com/watch?v=DKW2c0H2iGw">これ</a> とか残ってます)で祖国オランダを離れざるを得ず、安住の地を求めて世界を旅しながら自分の会社 <a target="_blank" rel="nofollow noopener" href="http://www.nyanko.ws/">Nyanko</a> を運営しつつプログラミングと電子工作に関する<a target="_blank" rel="nofollow noopener" href="http://www.mayaposch.com/index.php">数々のプロダクトと著作</a>を世に出していらっしゃいます<br /> まるで物語みたいに数奇な人生を歩みながら outcomes を出されていることに正直圧倒されてしまいました、すごい人がいるもんなんだなぁ<br /> 翻って自分を鑑みるにいったい何をやってるんだと情けなく忸怩たる思いに至る次第です</p> <p>近著 <a target="_blank" rel="nofollow noopener" href="https://learning.oreilly.com/library/view/hands-on-embedded-programming/9781788629300/">Hands-On Embedded Programming with C++17</a> を魅力的なタイトルに惹かれて読んだのが彼女を知るきっかけだったんですが、この本も POCO の紹介をふくめて Raspberry Pi みたいなSBC でプロダクトをつくる上でのオリジナルな話題にあふれていてとても面白い本でした</p> <h1 id="感想"><a href="#%E6%84%9F%E6%83%B3">感想</a></h1> <p>数日前に<a href="https://crieit.net/posts/Nuitka-python-code">某所</a>で「C++でウェブアプリ書く気にはならないし」なんて言っちゃったの、謹んで取り消させてください</p> <p>読書は時として人の世界観をダイナミックに変えてしまうものなのです ^^;;;;;;;</p> Dr. Takeyuki Ueda