2011-01-01から1年間の記事一覧

some points for HTTP client on native applications (1)

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

apache のミラーサイトに facebook が!

> Attempting to fetch apr-1.4.2.tar.bz2 from http://mirror.facebook.net/apache/apr

大工のようなプログラマ

私の父は大工である。二級建築士で、大抵は二階建ての木造住宅を建てている。 私が学生のころ、たまに小遣い稼ぎとして父の手伝いをしていた。建前、床張り、ベニヤ張り、天井張りなどのハードワークがメインだ。特に天井張りはよく覚えている。普段はひとり…

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

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

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

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

Android のソースコードの一部をサクっと入手する

Android のソースコードの一部をさくっと入手する方法を見つけたので紹介しておきます。 http://android.git.kernel.org/?p=platform/external/skia.git;a=snapshot;h=donut;sf=tgz こんな風に git レポジトリとヘッドを指定してやると、tar.gz がダウンロー…

しばらく日本語ブログをお休みします

最年少 Ruby コミッターが 14 歳というのにも衝撃を受けましたが、彼のブログは普通に全文英語だったりするのにも衝撃を受けました。私は年齢は彼の二倍ですが、悔しいのでしばらく日本語ブログをお休みします。英語のブログはこちら。 440 posting not allo…

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…

yaml って Makefile を書くのに向いてるんじゃないか?

設定ファイルとして、私は yaml がお気に入りです。 The Official YAML Web Site なんといっても記述量が少ない。DSL もいいですが、やっぱり特化型には敵わないと思います。また、ライブラリが豊富で主要なプログラミング言語のほとんどで使えるというのも…

GUI アプリケーションのエントリポイントを並べてみる

Delphi begin Application.Initialize; Application.CreateForm(TForm1, Form1); Application.Run; end. Lazarus begin {$I project1.lrs} Application.Initialize; Application.CreateForm(TForm1, Form1); Application.Run; end. Qt #include <qapplication.h> #include <qpushbutton.h> i</qpushbutton.h></qapplication.h>…

GUI とマルチスレッド、GUI ツールキットの振る舞い

はじめに プラットフォームによっては、GUI のコントロールはコントロールが所属しているスレッド以外から操作することは安全ではないことが多い*1。私が Windows でこのことを知ったが、どうやら大抵のプラットフォームで同じことが言える。これはおそらく…

エラーハンドリングに関する私なりのガイドライン

いつからか、通信に関するプログラミングを行う機会が多くなった。通信が成功することは奇跡なので、様々な状況で、様々な原因により、エラーが発生し、失敗する。プログラミングにおいてエラーハンドリングは重要だが、ネットワークプログラミングでも同様…

国際化ドメイン名 ( IDN ) について

国際化ドメイン名を使うと、ドメイン名にアルファベットや数字だけでなく日本語を含む様々な文字が利用出来るようになる。自分の書いたコードを、これに対応させるにはどうすればいいか?*1これは、ドメイン名から IP アドレスを得る話なので、名前解決の話…

MD5、MD4 のメモ

MD5 も Base64 の記事で書いたライブラリが大体実装している。MD4 は時代遅れなせいか、MD5 よりも実装が少ないようだ。MD4 が使われている例としては、Active Directory で活躍する Windows 統合認証などの基礎となる NTLM 認証などがある。 MD5 RFC http:/…

Base64 って結構カオス?

Base64 のライブラリをあまり調べたことがなかったので調べてみた。 RFC http://tools.ietf.org/html/rfc4648 標準で、一番あたらしいやつ http://tools.ietf.org/html/rfc3548 標準だが、obsoleted らしい http://tools.ietf.org/html/rfc2045 MIME 用 http…

C/C++ 開発のストレスを軽減する ( 2 )

今回は、Windows + ウイルスバスター環境でコードを変更せずにビルド時間を短縮する方法。 手順は簡単、ウイルスバスターを一時的にオフにするだけ。タスクトレイのアイコンを右クリックして終了、で OK。私の環境では、Visual Studio のビルド時間が半分に…

私のネイティブアプリプログラマとしての三種の神器

三種の神器といいつつ、分類毎に分けてるので三つ以上あります。前提条件としては、マルチプラットフォームに対応したネイティブアプリケーションを開発する、という感じです。 OS Mac OS X Windows Linux 言語 C/C++ Objective-C Lua IDE Eclipse Xcode Vis…

c-ares の大雑把な機能紹介

c-ares については過去の記事で少し触れた。c-ares は以下に詳細な API リファレンスが存在するが、Web サイトトップより詳しく、API リファレンスよりも大雑把な機能紹介がないのがもったいない。というわけで、c-ares を簡単に紹介しておく。まずは Web サ…

Mac OS X で GBA ゲームを作る (3)

今回は、前回ビルドしたコードのちょっとした解説です。このコードは以下のようになっています。 #include <gba_console.h> #include <gba_video.h> #include <gba_interrupt.h> #include <gba_systemcalls.h> #include <gba_input.h> #include <stdio.h> #include <stdlib.h> //----------------------------------------------------------------------------</stdlib.h></stdio.h></gba_input.h></gba_systemcalls.h></gba_interrupt.h></gba_video.h></gba_console.h>…

谷瀬の吊り橋にいってきた

正月明けてすぐ風邪を引き、風邪が治ったら仕事が忙しくなりましたが、ようやく一息つきました。正月は日本最長の鉄線の吊り橋である谷瀬の吊り橋にいってきました。 最初の一歩目で「大丈夫かこれ・・・」。渡っている最中に風がくるとぐらぐら揺れてかなり…

Mac OS X で GBA ゲームを作る (2)

今回はソースから ROM を作ってエミュレータで実行、というところまでやります。まずは必要なファイルを準備します。一から書くのは手間なので、examples/template をベースにするのが楽です。次の一連のコマンドを実行すれば準備完了です。ちなみにコマンド…

Mac OS X で GBA ゲームを作る (1)

昔からゲームを作るには GBA が一番面白そうだなと思っていた。開発環境が無料で手に入るし、エミュレータはいろんなプラットフォームで出回っているのでマルチプラットフォームへの対応が不要といってもいいだろう。まずは開発環境を整える。以下を参考にし…

サーバアプリの書き方

サーバアプリの書き方の話。私がこれまで書いたことのあるのは以下のような物。 Linux TCP/IP のアプリケーションサーバ SSL over TCP/IP のアプリケーションサーバ Windows 標準ユーザから特権を要する操作を実行するための名前つきパイプサービス どんなサ…

C/C++ 開発のストレスを軽減する

少し前に Eclipse から NetBeans に移行したが、再度 Eclipse にもどることにした。なぜかというと、Neteans は SVN コミットで日本語コメントを入れるとエラーになったりしてストレスを感じていたのだ*1。ありえないよね、もったいない・・・。いろいろと試…