Vagrantをリモートで使いたい (けど妥協した)

VM で開発用のサーバを構築するにあたって、開発用PCではなく他の高スペックPCを母艦にしたいよねーという話。*1 で、とりあえず「vagrant リモート」でググってみれば、やはり同じことを考える人がいたようだ。VagrantでリモートのVirtualboxを実行するvagr…

他の Cookbook の Attribute を部分的に読み込ませたい (けど無理っぽい)

環境ごとに Attribute を定義したいのだけれども、Environment はバージョン管理できないっぽい*1し、Attribute を定義する Cookbook を環境の数だけ作るのも DRY ではないので、ひとつの Recipe で各環境用の Attribute File を用意し、他の Cookbook から…

wxWidgets のマニュアル翻訳始めました

知る人ぞ知る GUI ツールキット wxWidgets を最近使ってみようかと思っていて、その勉強がてら、かれこれ 4 年近く更新の止まっているwxWidgets (wxWindows) 日本語ドキュメントプロジェクト の後を引き継いでみようという無謀な試みお話。 新プロジェクトペ…

git push で自動デプロイ時に git pull は使わない方がいいかもしれない

Git

heroku みたいな git push で自動デプロイする方法として、よく post-recceive フックで git pull する方法が載っているけど、 自分の場合、それがうまくいかなかったことがあったのでメモ。 よくある post-receive フックの内容は以下の通り。 #!/bin/sh ( …

Gitlab 4.2 + Gitolite で Git フックを使う

Git

Gitlab で作ったプロジェクトでフックを使おうとしたら結構苦労したのでメモ。 以下のディレクトリ構成は Gitlab のインストール手順に従った場合のものなので、Gitolite を手動インストールしたような場合は適宜読み替えを。 まず、Gitolite の機能として、…

Quick JUnitで快適TestNG生活

何を言っているのか分からねーと思うが(ry たまたま Quick JUnit を使う機会があって、テスティングペアの切り替えやテストの実行がワンタッチでできることにいたく感動したんだけれども、いかんせん JUnit ではパラメータ化テストが面倒くさい。 その点、Te…

CloseHandle 系関数に INVALID_HANDLE_VALUE (またはNULL)を渡してはいけない

free や delete に NULL を渡しても問題ないというのは有名な話*1だけど、Win32 API はどうなんだろうという話。 できれば公式情報として「問題ナイヨー」という保証が欲しいところだけど、いまいち MSDN を見てもよく分からない。 INVALID_HANDLE_VALUE に…

git bisectで最初のbadコミットの情報を取得する

Git

最近ようやく git bisectの使い方を学んだ。 ただ、git bisectを使っていて少し躓いたのが、コミットをckeckoutする順番によってはbadコミットの1つ手前でbisectが完了することだ。 具体的には、 A(good) → B(good) → X(bad) → Y(bad) → Z(bad)という履歴の…

コミットメッセージ中に diff を表示したらいろいろ捗った

Git

変更をコミットする時に、大抵の人は git diff --cached なんかを使ってコミット内容を確認してからコミットすると思う*1。 ただ、この「コミット前に git diff --cached」作戦は、少なくとも commit --amend の時 squash する時 にはうまく適用できない*2。…

Redmine用Gitフックスクリプトをちょっとだけ汎用的に

Git

TiDD(チケット駆動開発)するにあたって、id:bleis-tiftが非常に便利なフックスクリプトを作ってくれている。 詳しくは Git+Redmineな人におすすめのフックスクリプト集 - みずぴー日記 が分りやすい。 ただ、トピックブランチ名のルール (id/*) や、追加され…

文字化け判定表を作ってみた

複数の文字コードが出てくるプログラムを書いていると、よく文字化けに遭遇するわけだけど、その度に元の文字コードを調べるのが結構めんどくさい。 というわけで、文章を入力するだけでリアルタイムに一覧を表示してくれる文字化け判定表を作ってみたよ。 …

Google App Engine を使ってみよう(2) 〜 セッションを使う

前回作った掲示板では投稿後にすぐに一覧画面にリダイレクトするため、投稿完了メッセージを表示できなかった。 POST 後にメッセージを表示するための方法としては、セッションを使う方法がある。というわけで、今回はセッションを使ってみる。

Google App Engine を使ってみよう(1) 〜 掲示板を作る

今更ながら、Google App Engine に手を出してみた。 webサービスの入門といえば掲示板だろう、ということでまずは掲示板を作ってみる。 とりあえず最新版ということで、SDK は 1.4.3 、slim3 は 1.0.10 を使うことに。

git reset --hard でファイルの変更は取り消せない

Git

ファイルの変更を取り消そうと思って $ git reset --hard fileとしたら fatal: Cannot do hard reset with paths.と怒られた。 $ git reset --hard HEAD fileとか $ git reset --hard HEAD -- fileとか試してもやっぱり怒られる。 じゃあどうすればファイル…

git reset についてもまとめてみる

Git

前回 git diff を図に書いてみたところ、自分の中で意外と整理できたので、これまたなんとなく使っていた git reset についてもまとめてみた。 とりあえず結論を先にまとめよう。 git reset とは? HEAD の位置を変更するコマンド。 オプションによってイン…

git diff の使い方がほんの少し理解できた

Git

いままでなんとなく使ってきたけど、ようやく使い方が分かったような気がするのでメモ。 前提知識 インデックスとワーキングツリーが理解できていること HEAD が何か分かっていること git diff ワーキングツリーとインデックスの差分を表示。 git add した後…

FreeBSD 8.1-RELEASEでWLI-UC-G300Nを使う

いろいろあって Ubuntu から FreeBSDに乗り換えたので、前回使った無線LANアダプタを今回は FreeBSD で使えるようにしたのでメモ。 WLI-UC-G300N は Ralink 製のチップを使っているので、 FreeBSD では if_run を使えばいいらしい。 ただ、8.1-RELEASE につ…

FreeBSD 8.1 on ZFS-boot

前回の記事があまりにも適当だったので、もう少し詳しく書いてみる。 メモリ 8G 積むので、amd64 版の FreeBSD-8.1-RELEASE をインストールすることに。 それ以外の方針としては、 /usr/home は root とは違うプールにする プールはすべて mirror で作成 xor…

FreeBSD on virtualbox インストールメモ

とりあえず gnome 入れて firefox 動くようになったのでメモ。

テンプレート版 noncopyable を使うときは要注意

コピーを禁止するクラスを定義する際に Boost の noncopyable クラスや同様の自作クラスを使うことは多いと思う。 Boost の noncopyable は継承するだけで OK という手軽さがいいんだけど、More C++ Idioms/コピー禁止ミックスイン(Non-copyable Mixin) によ…

omake: Symbol `FamErrlist' has different size in shared object, consider re-linking

OMake を使うと下のような謎のエラーが出る。 omake: Symbol `FamErrlist' has different size in shared object, consider re-linking ビルドはちゃんとできているようだけど、どうも気持ち悪いのでなんとかしたい。 単刀直入に言うと、下記コマンドで直っ…

汎用(?)OMakefile を作ってみた

autotools(autoconf/automake/libtool) の設定のあまりの複雑さに挫折してしまった人にとって、OMake は救世主といっても過言ではないはず。 OMake とはなんぞやという人は以下のサイトを見るといいかも。 OMake つかったらC言語でプログラム書く手間がバカ…

簡易版 Boost.Xpressive、Boost.Spirit の正規表現対応表

以前、Boost.Xpressive と Boost.Spirit の速度比べをした際にちょっと調べたのでまとめておこう。 この書き方しかないわけではないので、もっと実行効率のいいルールを探すのもいいかもね。 ただ、Boost.Spirit は網羅的なマッチングをしないので要注意*1。…

TBB3.0 scalable_allocator vs. TCMalloc

Intel TBB 3.0 の exampels を見ていると、scalable_allocator と stdmalloc の性能比較ができるサンプル (exmaples/task/tree_sum) があったので、ついでに Google 謹製 tcmalloc とも比較してみた。 比較に使った PC のスペックは CPU: Core i5 750@2.67GH…

Boost.XpressiveとBoost.Spiritの速度比べ

ちょっとした構文解析なら Xpressive でも充分だけど、ちゃんとした(?)構文解析器の Spirit と比べてどれだけ性能の差があるのか調べてみた。 どうせ比較するなら実用的なもので、というわけで RFC 2616 やらを参考に HTTP のリクエストヘッダをパースさせて…

boost::xpressiveのrangeでハマる

boost::xpressiveを使って「コントロール文字を除いたUS-ASCII文字(0x20〜0x7e)」以外か判定しようとしたら、かなり恥ずかしい間違いをしたのでメモ。 元々次のような正規表現で判定をしようと思っていた。 #include <iostream> #include <boost/xpressive/xpressive.hpp> int main() { using namespac</boost/xpressive/xpressive.hpp></iostream>…

LD_PRELOADで他プロセスのバッファリング無効化

pipe や popen を使っていると、本来なら出力済みのはずの他プロセスの出力がなかなか取得できないことがある。 最初はpopenやpipeのせいかと思っていろいろ調べたけど、どうも出力時のバッファリングの影響のようだ。 自分のプログラム中でバッファリングの…

Ubuntu 10.04でWLI-UC-G300Nを使う

先日インストールしたUbuntuでWLI-UC-G300Nを使おうとしたら 若干苦労したのでメモ。 参考サイト http://www.toy-poodle-four.net/cgi-bin/four_sb/log/eid1414.html https://forums.ubuntulinux.jp/viewtopic.php?id=7779 https://forums.ubuntulinux.jp/vi…

Ubuntu 10.04 インストール

折角なので、新しいPCに Ubuntu 10.04 デスクトップ版をインストールしてみた。 マシン構成 CPU Intel Core i5 750 M/B P7P55D Mem DDR3 1333 2GB GPU GF9800GT-E512HD/GE HDD 500GB 公式サイトからISOイメージをダウンロードして、 とりあえずHDDにインスト…

boost::units を少し使いやすくする

boost::unitsを使う場合、下記のようになる。 #include <boost/untis/systems/si.hpp> #include <boost/units/systems/prefixes.hpp> using namespace boost::units; quantity<si::time> x(1.0*si::second); // 1 s quantity<si::time> y(1.0*si::milli*si::meter); // 0.001 s この書き方にはいくつか気になる点がある。 まず、quantityで使って</si::time></si::time></boost/units/systems/prefixes.hpp></boost/untis/systems/si.hpp>…