最近買った本

去年の11月頃に転職してWeb屋さんから組込屋さんになったので、購入する本のジャンルが若干変化したわけだが、データシート読んでる時間の方が長いかも知れない。ただCQ出版の本には特にこれからお世話になりそうな予感。Interface ( インターフェース ) 増…

Cでハッシュテーブル

http://github.com/cubicdaiya/fnv なんとなくCでハッシュテーブルを実装してみた。使い方はこんな感じ。 /* main.c */ #include <stdio.h> #include "fnv.h" int main (int argc, char *argv[]) { fnv_t tbl[FNV_TBL_CNT]; const char *key = "KEY"; const char *val</stdio.h>…

車輪の再発明をしなければならなくなる時

http://d.hatena.ne.jp/tt_clown/20091228/1261996214 http://d.hatena.ne.jp/Isoparametric/20091230/1262134418なんか昨年末の話で、反応するには少々遅い気がするけど、個人的に車輪の再発明をするに至る場合や理由について考えてみる。 勉強のために既に…

Cリファレンスマニュアル

S・P・ハービソン3世とG・L・スティール・ジュニアのCリファレンスマニュアル作者: 3世,サムエル・P.ハービソン,ガイ・L.,ジュニアスティール,3,Samuel P. Harbison,Guy L.,Jr. Steele,玉井浩出版社/メーカー: エスアイビーアクセス発売日: 2008/10メデ…

情報科学苦手の会

DiffView more presentations from cubicdaiya. 情報科学苦手の会でDiffのアルゴリズムについて話してきました。↑はその時の資料です。苦手かどうかはともかく非常に内容の濃い勉強会でとても楽しめました。

dtl-1.04

http://code.google.com/p/dtl-cpp/ dtl-1.04をリリースしました。前回と同じく、ライブラリ自体の変更はほとんどありませんが、 googletestを使ったテストコードを追加しています。テスト結果はこんな感じ。 $ cd dtl-1.04/test $ make && make test g++ -c…

Goで編集距離

とりあえず遊んでみたかったので、"An O(NP) Sequence Comparison Algorithm"をGoでササッと実装してみた。 まだまともにマニュアルを読んでないので、かなりテキトー。 /** * The algorithm implemented here is based on "An O(NP) Sequence Comparison Al…

MercurialのリポジトリをGithubにpushする

dtlは去年からずっとMercurialでバージョン管理してるんだけど、Githubに一応ミラーリングしておこうと思って変換ツールであるHgGitを使ってみた。 http://hg-git.github.com/ まず、HgGitを動作させるのに必要なdulwichをインストールする。 $ sudo apt-get…

メモリプール

http://github.com/cubicdaiya/mpool Cで至極簡単なメモリプールを実装してみた。 使い方はこんな感じ。(↑のgithubのexamplesにあるのと同じ物) #include <stdio.h> #include <string.h> #include <mpool.h> int main (int argc, char *argv[]) { mpool_t *pool; int *n = NULL; int *m =</mpool.h></string.h></stdio.h>…

液晶テレビとHDDレコーダー

大学の頃から約7年お世話になったビデオデッキ付きの14インチブラウン管テレビに別れを告げ、SHARPの20インチ液晶テレビ(AQUOS)を購入した。そういえば、ブラウン管テレビの方もSHARPだった気がする。 それが先月のことで今度は一昨日にHDDレコーダーも購入…

cpprefで候補が複数ある場合

http://d.hatena.ne.jp/antipop/20091009/1255087113 id:antipopさんの作ったcpprefが便利そうなので使ってみました。 普段は手元のリファレンス本をたまに見ながら調べていたので、 それに比べるととても快適です。ただ、候補が複数ある場合、例えばswapで…

dtl-1.03

http://code.google.com/p/dtl-cpp/ dtl-1.03をリリースしました。今回の変更は少なめで、元々1つだったヘッダファイルを複数に分割したことを除けば、LCSをvectorで取得できる関数を追加したくらいです。

EmacsLispで改行マッチ

string-matchとかで文字列でマッチさせるには単に「\n」でいいんだけど、query-replace(-regex)で改行にマッチさせる方法がわからなくてちょっと嵌った。調べてみたところ、C-q C-jで改行を入力できることがわかった。

"An O(NP) Sequence Comparison Algorithm" with C

http://github.com/cubicdaiya/onp/tree/master/c/ 少し前の話ですが、"An O(NP) Sequence Comparison Algorithm"をCでも実装してみました。今のところ、計算するのは編集距離のみです。ちなみにC99の勉強がてらに書いたので、gccだと-std=c99を付加しないと…

dtl-1.02

http://code.google.com/p/dtl-cpp/ dtl-1.02をリリースしました。今回の主な変更は以下の通りです。 要素列を比較する際、(dtl::Compareクラスを継承した)任意の関数オブジェクトを使用できるように 出力系の関数で出力先を引数として渡せるように std空間…

dtl-1.01

http://code.google.com/p/dtl-cpp/ dtl-1.01をリリースしました。今回はちょっとしたリファクタリングおよびconstや参照を多少厳密に付加した程度の変更です。

Pythonチュートリアル

Pythonチュートリアル作者: Guido van Rossum,鴨澤眞夫出版社/メーカー: オライリー・ジャパン発売日: 2007/09/22メディア: 単行本(ソフトカバー)購入: 5人 クリック: 113回この商品を含むブログ (57件) を見る前に買ってそのままずっと積んでいたので読み…

オープンソースソフトウェアの育て方

オープンソースソフトウェアの育て方作者: Karl Fogel,高木正弘,高岡芳成出版社/メーカー: オライリージャパン発売日: 2009/07/27メディア: 大型本購入: 1人 クリック: 165回この商品を含むブログ (34件) を見る 既に無料で全文が公開されている本書ですが、…

"An O(NP) Sequence Comparison Algorithm" with Python

近頃、「Pythonチュートリアル」を買って読み始めたんだけど、読んでるだけだと飽きて来たので、"An O(NP) Sequence Comparison Algorithm"で編集距離を計算するプログラムをPythonで実装してみた。以前書いたLuaのコードの部分的な写経なので、Pythonっぽく…

ソフトウェア開発で英語は必須だと改めて実感する瞬間

英語の技術書を読んでいる時 翻訳されるの待ってられない 日本人の開発者宛に英語でバグレポート書いている時 だって投稿フォーラム全体が英語なんだもん 日本人の開発者が作ったソフトウェアの仕様書を読んだら英語で書かれていた時 実際のところ、日本語版…

segmentation faultした際の出力

今日遭遇して「あれ?」と思ったんだけど、プログラムがsegmentation fault起こした際、シェルのリダイレクトがどう振る舞うのかというお話。まず、以下のように標準出力(以下stdout)と標準エラー出力(以下stderr)に文字列を出力するCプログラムがある。 /* …

dtlを各バージョン管理システムから使う

ふと思い立ってSubversion、Mercurial、Gitでdiffする際にdtlのサンプルプログラムであるunidiffを呼ぶようにしてみた。dtlを使ったunidiffはこんな感じ。dtl-1.00のexamplesにあるやつそのままなんだけど、改めて眺めてみるとちょっとテキトーだなあ。 #inc…

Mercurial Definitive Guide

Mercurial: The Definitive Guide作者: Bryan O'Sullivan出版社/メーカー: Oreilly & Associates Inc発売日: 2009/07/02メディア: ペーパーバック購入: 1人 クリック: 83回この商品を含むブログ (5件) を見る 度重なる発送延期を経てようやく到着。高い割に…

Mercurialのコマンドエイリアス

Subversionに比べればはるかに短いものの、Mercurialで「hg branch」とか「hg branches」と打つのもなんだか面倒なので、エイリアスを作ることにした。コマンドエイリアスを有効にするには↓を.hgrcに記述する。 [extensions] alias =しかし、相変わらずよく…

dtl-1.00

http://code.google.com/p/dtl-cpp/ dtl-1.00をリリースしました。 自分に必要な機能は大体揃った感じなので、バージョンを0.07から一気に1.00に上げました。0.07からの主な変更は以下の通りです。 コピーコンストラクタが正しく実行されるよう修正 本当は衝…

Programming in Lua

Programming in Lua作者: Roberto Ierusalimschy出版社/メーカー: Lua.Org発売日: 2006/03/05メディア: ペーパーバック購入: 1人 クリック: 11回この商品を含むブログ (5件) を見るさっき、読み終わりました。ライブラリの解説は割とテキトーに読み飛ばしま…

プログラマーのジレンマ〜夢と現実の狭間〜

プログラマーのジレンマ 夢と現実の狭間作者: スコット・ローゼンバーグ,伊豆原弓出版社/メーカー: 日経BP社発売日: 2009/05/21メディア: 単行本購入: 19人 クリック: 210回この商品を含むブログ (52件) を見る本書はChandlerという野心的なオープンソースの…

dtl on Windows

ふと思い立ってdtlをWindows上でビルドしてみた。早速Visual Studio Express Editionをインストールしようとするが、非常に時間がかかる。また、Visual Studioは過去に何度か触ったことがあるが、何年も前のことなので操作方法を99%ぐらい忘れていた。なので…

Git本

Version Control with Git作者: Jon Loeliger出版社/メーカー: Oreilly & Associates Inc発売日: 2009/06メディア: ペーパーバック購入: 1人 クリック: 35回この商品を含むブログ (6件) を見る 注文したのは3月だったが、二度の発送延期により、今日届いた。…

dtlのドキュメント

http://code.google.com/p/dtl-cpp/w/list ちまちまとGoogle Code上でドキュメントを書き始めた。使い方とかについても随時追加予定。元々自分が使うために作り始めたものだし*1、examplesのコード見れば何ができるのか大体わかるだろうからいいやという感じ…

dtl-0.07

http://code.google.com/p/dtl-cpp/ dtl-0.07をリリースしました。 今回は一部の関数の引数の数の変更および可読性向上のためのコード整理が行われています。

github

正直に言うが、僕はGitのコマンドラインインタフェースがどうしても好きになれないので、普段からCVSやSubversionに近い操作体系を持つMercurialを愛用している。とはいえ、今やフリーの分散型のバージョン管理システムといえばGitとMercurialの二強になりつ…

Mercurial on Google Code

Google CodeにてMercurialが正式にサポートされたようなのでdtlに使ってみた。全体的に良い感じではあるんだけど、push時になんだかよくわからない自動生成されたパスワードを入力しなきゃいけないのはどうにかならないんだろうか。自分で編集する方法がわか…

ハゲタカ

テレビドラマを見なくなって久しいですが、何年か前に見てとてもおもしろかったテレビドラマがあります。(「24」は断片的には見た) 「ハゲタカ」 企業買収をテーマにしたドラマなのですが、たった6話でこれほど濃密な展開や人間関係の描写ができるのかと驚い…

「diffの動作原理を知る」の記事に出てくるアルゴリズムの名前について

「diffの動作原理を知る」の記事に出てくるO(ND)とO(NP)という言葉ですが、記事中ではこれら2つの言葉をアルゴリズムの名前として扱っています。そして、私はこれは計算量とアルゴリズムの名前の両方を表しているんだとずっと思っていました。 しかし、何人…

Software Desgin2009年6月号

Software Design (ソフトウェア デザイン) 2009年 06月号 [雑誌]出版社/メーカー: 技術評論社発売日: 2009/05/18メディア: 雑誌購入: 2人 クリック: 6回この商品を含むブログ (11件) を見る 「どのようにして差分を導き出すのか〜diffの動作原理を知る〜」と…

デスクトップPC

自宅にあるデスクトップPCはもう長いこと使ってなかったのだが、フリーダムなマシンが1台欲しくなったので、DVDドライブ以外のパーツを全部買い換えて再稼働させてみた*1。前のCPUはAMDのAthlon64で、当時2万円弱で買ったのだが、今回買ったIntel Core 2 Duo…

dtl-0.06

http://code.google.com/p/dtl-cpp/ dtl-0.06をリリースしました。 主な変更点は以下の通りです。 mergeがテキトーだったのを修正 編集距離だけを記録するオプションを追加 mergeがテキトーだったのを修正 dtl-0.05のmergeがなんだかちゃんと動かないのは前…

今日はオフ

さて、部屋の掃除をするか。あと、コタツ片付けよう。

あるファイルの特定の行を別のファイルの内容に置換する

今日、「↑みたいなことをやりたいんだけど、どうすればいい」と聞かれたので、やってみた。 具体的には以下のようなtestというファイルがあり、 ... test ... test ... 上記のtestという文字列だけからなる行を以下のtest.inで置換する。 1 2 3 4 5 とりあえ…

Tokyo Cabinetでキーが重複したレコードを格納する

Tokyo Cabinetの仕様書を見ると、 B+木のデータベースでは、キーが重複する複数のレコードを格納することができます。このデータベースに対しては、ハッシュ表のデータベースと同様に、キーを指定してレコードを格納したり取り出したり削除したりすることが…

Mercurialのバージョンを調べようとしたら、

narazuya@bokkko% hg --version Mercurial - 分散構成管理ツール(バージョン unknown) Copyright (C) 2005-2008 Matt Mackall <mpm@selenic.com> and others This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABIL</mpm@selenic.com>…

イテレータループのマクロ

C++では例えば以下のようなイテレータを使ったループをよく書くわけですが、 for (std::vector<std::string>::iterator it=vec.begin();it!=vec.end();++it) { ・ ・ ・ } なんだか長いので、以下のようにtypedefを使ってちょっとでも短くしたくなります。 typedef std::v</std::string>…

Time Machineのバックアップ間隔

自宅のMacBookのデータのバックアップにはTime Machine + Time Capsuleを使っている。同じネットワーク上につないでちょっと設定するだけで後は自動的にバックアップをしてくれるので、非常に便利だ。ただ、ほぼ1時間毎にバックアップが走るので、HDDの書き…

シェルスクリプトのreturn

先週Amazonから届いたスターオーシャン4をやってるのだが、字が小さい。何でだろう?テレビが小さいからか?バトル画面で表示されているHPとかの数字がちゃんと読み取れないくらい小さいので、正直ちょっと困っている。それはそうと今日は、久々にシェルスク…

テイルズオブハーツ

ちょうど発売日(2008/12/18)ぐらいに買ったはずなんだけど、ラスダン目前で放置していたので、ついさっきクリアした。 クリアした感想としてはDSなので短いだろうと思ってたら、結構長かった。あと、DSでのアニメーションシーンはなんだか無理してる気がして…

椅子とHHKB Pro JPもう1つ

ついこの間までゴールド(有料)会員でないとダウンロードできなかったバイオハザード5の体験版がいつの間にかダウンロードできるようになっていたので、さっそくダウンロードしてプレイしてみたところ、主人公のクリスの人相が過去のシリーズと全然違っていて…

HHKB Professional JP

HHKB Professional JP(以下、Pro)を買いました。直前まで無印のを買おうかと思ってたんですが、やっぱり個人的に、英語配列が駄目なのとエンターキーが小さいのがネックでこっちにしました。既にHappy Hacking Keyboard Lite 2 for Mac(以下、Lite2)を持って…

Lua

地元の本屋に寄った際に「入門Luaプログラミング」を買った。 Luaは、つい最近までは「アプリケーションに組み込むための言語」、「小さくて動作が軽い」ぐらいの認識だったんだけど、実際に使ってみると、これがなかなかいい感じ。言語自体の簡潔さもさるこ…

boost::filesystem

ここのところ、お遊びとか何となくじゃなくて真面目にboostのライブラリ使ってC++のコードを書いてるんですが、改めてこのライブラリはいろんな意味でぶっ飛んでると思った。しかし、boostはfilesytemに限らず、全体的に変態(褒め言葉ですよ)で超便利なんだ…