C++

io.js on Travis-CIでNode.jsのC++アドオンのビルドが失敗する件

Node.jsのC++アドオンをTravis-CIでテストする際に、io.js@v3の環境でのみビルドエラーが発生していたので原因と対策を記録しておく。※バージョン等の情報は2015-08-19時点のものである。 事象 io.js@v3.0.0の環境で以下のようなビルドエラーが発生する。 /h…

LOUDS Trie ライブラリを書いた

C++ で LOUDS Trie を扱うライブラリhsds::Trieを書きました。GitHub - hideo55/cpp-HSDS: Succinct Data Structure Library Collection.Includes bit-vector/wavelet-matrix/trie. LOUDS Trieとは? Level-Order Unary Degree Sequence という木構造を表現…

Clib で cpp-HyperLogLog をインストールできるようにした

C++

C/C++ ライブラリマネージャ Clib で、cpp-HyperLogLog をインストールできるようにしました。作業としては以下の package.json をリポジトリのトップディレクトリに追加するだけでした。簡単ですね。 { "name": "hyperloglog", "version": "1.0.0", "repo":…

iglooのテスト結果をTAP形式で出力する

C++

C++ のテストフレームワーク igloo を使ってみた の続きです。iglooのテスト結果を出力する際は以下の様になります*1。 これはこれでシンプルでいいのですが、もう少し情報が欲しいです。そこでiglooを使ったテストでTAP形式*2で出力するTestLIstenerを書き…

C++ の BDD-Style なテストフレームワーク igloo を使ってみた

C++

C++ のテストフレームワーク igloo を使ってみました。Loading...

テンプレートクラスのメソッドをLD_PRELOADで上書きする

C++

動的にリンクされる共有ライブラリの挙動を変える方法として、有名なのがLD_PRELOADで事前に共有ライブラリをロードしておくことです。しかし、C++でテンプレートクラスの挙動を変更する必要があったのですが例があまり見当たらないので記録しておきます。

簡潔ビットベクトルライブラリを書いてみた

簡潔データ構造の勉強がてら、各種簡潔データ構造の核となる簡潔ビットベクトルを扱うC++ライブラリを書いてみました。GitHub - hideo55/cpp-HSDS: Succinct Data Structure Library Collection.Includes bit-vector/wavelet-matrix/trie. 簡潔データ構造と…

Node.js v0.11.0 以降におけるC++ Addon への影響

Node.js v0.11.0 で C++ Addon をコンパイルすると以下の様な warning が出るようになりました。 warning: 'New' is deprecated [-Wdeprecated-declarations] これは、Node.js v0.11.0 の V8 において V8::Persistent のメソッドで第1引数にv8::Isolateのイ…

Problem about exception handling without RTTI

C++

OSXにおいて、node-kyteaでlibkytea側でthrowされたstd::runtime_errorをキャッチできないという問題があり、はまってました。原因は、node-gypが生成するMakefileに -fno-rttiが記述されていることでした。 Linuxのgccでは問題ないのですが、OSXのgccで以下…

v8::ArgumentsのThis()とHolder()の違い

JavaScript関数の引数であるv8::ArgumentsのメソッドにThis()とHolder()というものがあります。この2つとも、通常は JavaScriptでの this に相当するv8::Objectを返すメソッドなのですが、違いがわかりにくいので調べてみました。 This() と Holder() は何が…

Node.js のモジュールをC++で書く際のメモ(2)

第1回から9ヶ月もたち、Node.jsの方もAPIに変更があったのでC++ Addon関連のメモをしておく。 バージョン関連 Nodeのバージョンによって処理を変える node_version.hに定数、マクロが定義されているのでこれを利用する。 #include <node.h> #include <node_version.h> #if NODE_VERSI</node_version.h></node.h>…

Node.js のモジュールをC++で書く際のメモ(1)

Node.jsのモジュールをC++で書く際に調べたことをメモ。