programming

better gyp

仕事でごりごり gyp を使って早くも3年になる。いくつか個人的に痒いところを修正して公開してみた。 Github においてある修正版 okumura/gyp オリジナル gyp - Generate Your Projects - Google Project Hosting 修正は以下のとおり。 Android: 非 cygwin …

faster octree color quantization

256色画像全盛期はとっくに過ぎ去った感がありますが、今回は画像を256色以下に減色するという話です。減色された画像の画質を向上させる方法として誤差拡散法がありますが、今回はそれはやりません。 減色する方法は大昔から研究されていて有名なものがいく…

gyp でネイティブコードプロジェクトのビルドを多環境に対応させる

今回は「gyp でネイティブコードプロジェクトのビルドを多環境に対応させる」です。私がやっていることをメモしておきます。 背景 私は Windows のコードをよく書いていました。ある時から Android、Windows Mobile、Linux、Mac OS X、iOS でも動くように意…

tiny hash table

Cでコードを書いているとハッシュテーブル*1が欲しくなることが多々あります。というわけで小さいのを書いてみました。 https://github.com/okumura/thtbl ハッシュテーブルについて ハッシュテーブルは、あるキーをハッシュ関数を使ってマッピングし、それ…

画像の色数を求めたりヒストグラムを作るためのソートをいろいろ実装してみた

画像の色数を求めるにはハッシュ的なものを使うよりもソートした方が速いという話です。 http://blog.livedoor.jp/junki560/archives/21233822.html http://blog.livedoor.jp/junki560/archives/21305807.html また、ヒストグラムを高速に作ろうとすると色の…

bswap

今日のコード。Windows XPとMac OS X 10.6.8で動作することを確認しています。 https://github.com/okumura/bswap バイナリプログラミングをやっていると、エンディアンに応じてバイトオーダーをひっくり返す(バイトスワップ)というのがよくあります。バイ…

some points for HTTP client on native applications (1)

はじめに HTTP は利用頻度が高いネットワークプロトコルの一つだと思います。HTTP サーバを書くことはそんなに多くないと思いますが、HTTP クライアントは何らかの形で利用したり実装したりしたことがある人は多いのではないでしょうか。今回は、ネイティブ…

ナイスガイから教わった C でコードを書くときのほにゃらら 01

二年前に出会ったナイスガイから C でコードを書くときに大事なことをいくつか教わった。 教わったことは、何かしら自分でまとめて誰かに伝えていかねばと思っているのでぼちぼちまとめていく。 移植性を高くする 以前の私は環境限定のコードを書くことが多…

epoll と kqueue について思ったことの垂れ流し

C10K Problem では、epoll/kqueue は速く、select/poll などは遅い、というのをよく見かける。実際ベンチマーク結果を見ると、そのように見える。計算量的には、epoll/kqueue は O(log2N)、select/poll は O(N) のように見える。ベンチマーク結果は libevent…

yamake planned features

Command-Line Options debug or release MBCS or Unicode for Windows target host target CPU architecture support CFLAGS, CXXFLAGS Project Options support dependencies more target Platform freebsd openbsd target CPU architecture support CFLAGS…

state and status

プログラミングをしていると、状態管理をすることがよくあります。私がよく迷うのは、state、status の使い分け方です。 私の理解では、state = one of status です。例えば、HTTP レスポンスの最初の一行目*1には status code というものがありますが、これ…

Tools to build Google Chrome, gyp and Ninja

先日から yamake というオレオレメイクツールを作っている*1のですが、その直後のとあるツイートで gyp、Ninja というビルドシステムがあるということを知りました。どちらも、Chromium のビルドをより良くするために生まれたようです。知らなかったので、少…

Goodbye Eclipse, Hello Emacs.

気づけばあまり Eclipse のお世話になっていないので、Emacs でいいやと思うようになりました。で、Eclipse でお気に入りだった機能と最低限必要な機能をどうやって代替するかのメモを書いておきます。 タグジャンプ M-. 先に TAGS ファイルを作っておく必要…

C code directory style

C でコードを書くときのディレクトリの作り方の話です。これはまぁ好みの話ですね。私は大抵こうします。 contrib include lib src doc include xxx lib src samples tests contrib には、外部ライブラリを入れます。中に include と lib ディレクトリを作っ…

Thrift IDL part 1

RPC → シリアライズ → protobuf → MessagePack と見ているうちに、IDL がやりたくなってきました。MessagePack では、Thrift IDL が使えるようです。Thrift IDL*1 は facebook*2 で開発されたんですねー。 多言語開発の手法の一つとして、C/C++ で書いて SWI…

yamake is makefile generator from YAML

「yaml って Makefile を書くのに向いてるんじゃないか?」で書いたものを試しに作ってみた。 okumura/yamake - GitHub scons がお気に入りなので、Python で書いた*1。今のところ YAML から scons のスクリプトを出力することができるだけ。 これが・・・ p…