VM で開発用のサーバを構築するにあたって、開発用PCではなく他の高スペックPCを母艦にしたいよねーという話。*1 で、とりあえず「vagrant リモート」でググってみれば、やはり同じことを考える人がいたようだ。VagrantでリモートのVirtualboxを実行するvagr…
環境ごとに Attribute を定義したいのだけれども、Environment はバージョン管理できないっぽい*1し、Attribute を定義する Cookbook を環境の数だけ作るのも DRY ではないので、ひとつの Recipe で各環境用の Attribute File を用意し、他の Cookbook から…
知る人ぞ知る GUI ツールキット wxWidgets を最近使ってみようかと思っていて、その勉強がてら、かれこれ 4 年近く更新の止まっているwxWidgets (wxWindows) 日本語ドキュメントプロジェクト の後を引き継いでみようという無謀な試みお話。 新プロジェクトペ…
heroku みたいな git push で自動デプロイする方法として、よく post-recceive フックで git pull する方法が載っているけど、 自分の場合、それがうまくいかなかったことがあったのでメモ。 よくある post-receive フックの内容は以下の通り。 #!/bin/sh ( …
Gitlab で作ったプロジェクトでフックを使おうとしたら結構苦労したのでメモ。 以下のディレクトリ構成は Gitlab のインストール手順に従った場合のものなので、Gitolite を手動インストールしたような場合は適宜読み替えを。 まず、Gitolite の機能として、…
何を言っているのか分からねーと思うが(ry たまたま Quick JUnit を使う機会があって、テスティングペアの切り替えやテストの実行がワンタッチでできることにいたく感動したんだけれども、いかんせん JUnit ではパラメータ化テストが面倒くさい。 その点、Te…
free や delete に NULL を渡しても問題ないというのは有名な話*1だけど、Win32 API はどうなんだろうという話。 できれば公式情報として「問題ナイヨー」という保証が欲しいところだけど、いまいち MSDN を見てもよく分からない。 INVALID_HANDLE_VALUE に…
最近ようやく git bisectの使い方を学んだ。 ただ、git bisectを使っていて少し躓いたのが、コミットをckeckoutする順番によってはbadコミットの1つ手前でbisectが完了することだ。 具体的には、 A(good) → B(good) → X(bad) → Y(bad) → Z(bad)という履歴の…
変更をコミットする時に、大抵の人は git diff --cached なんかを使ってコミット内容を確認してからコミットすると思う*1。 ただ、この「コミット前に git diff --cached」作戦は、少なくとも commit --amend の時 squash する時 にはうまく適用できない*2。…
TiDD(チケット駆動開発)するにあたって、id:bleis-tiftが非常に便利なフックスクリプトを作ってくれている。 詳しくは Git+Redmineな人におすすめのフックスクリプト集 - みずぴー日記 が分りやすい。 ただ、トピックブランチ名のルール (id/*) や、追加され…
複数の文字コードが出てくるプログラムを書いていると、よく文字化けに遭遇するわけだけど、その度に元の文字コードを調べるのが結構めんどくさい。 というわけで、文章を入力するだけでリアルタイムに一覧を表示してくれる文字化け判定表を作ってみたよ。 …
前回作った掲示板では投稿後にすぐに一覧画面にリダイレクトするため、投稿完了メッセージを表示できなかった。 POST 後にメッセージを表示するための方法としては、セッションを使う方法がある。というわけで、今回はセッションを使ってみる。
今更ながら、Google App Engine に手を出してみた。 webサービスの入門といえば掲示板だろう、ということでまずは掲示板を作ってみる。 とりあえず最新版ということで、SDK は 1.4.3 、slim3 は 1.0.10 を使うことに。
ファイルの変更を取り消そうと思って $ git reset --hard fileとしたら fatal: Cannot do hard reset with paths.と怒られた。 $ git reset --hard HEAD fileとか $ git reset --hard HEAD -- fileとか試してもやっぱり怒られる。 じゃあどうすればファイル…
前回 git diff を図に書いてみたところ、自分の中で意外と整理できたので、これまたなんとなく使っていた git reset についてもまとめてみた。 とりあえず結論を先にまとめよう。 git reset とは? HEAD の位置を変更するコマンド。 オプションによってイン…
いままでなんとなく使ってきたけど、ようやく使い方が分かったような気がするのでメモ。 前提知識 インデックスとワーキングツリーが理解できていること HEAD が何か分かっていること git diff ワーキングツリーとインデックスの差分を表示。 git add した後…
いろいろあって Ubuntu から FreeBSDに乗り換えたので、前回使った無線LANアダプタを今回は FreeBSD で使えるようにしたのでメモ。 WLI-UC-G300N は Ralink 製のチップを使っているので、 FreeBSD では if_run を使えばいいらしい。 ただ、8.1-RELEASE につ…
前回の記事があまりにも適当だったので、もう少し詳しく書いてみる。 メモリ 8G 積むので、amd64 版の FreeBSD-8.1-RELEASE をインストールすることに。 それ以外の方針としては、 /usr/home は root とは違うプールにする プールはすべて mirror で作成 xor…
とりあえず gnome 入れて firefox 動くようになったのでメモ。
コピーを禁止するクラスを定義する際に Boost の noncopyable クラスや同様の自作クラスを使うことは多いと思う。 Boost の noncopyable は継承するだけで OK という手軽さがいいんだけど、More C++ Idioms/コピー禁止ミックスイン(Non-copyable Mixin) によ…
OMake を使うと下のような謎のエラーが出る。 omake: Symbol `FamErrlist' has different size in shared object, consider re-linking ビルドはちゃんとできているようだけど、どうも気持ち悪いのでなんとかしたい。 単刀直入に言うと、下記コマンドで直っ…
autotools(autoconf/automake/libtool) の設定のあまりの複雑さに挫折してしまった人にとって、OMake は救世主といっても過言ではないはず。 OMake とはなんぞやという人は以下のサイトを見るといいかも。 OMake つかったらC言語でプログラム書く手間がバカ…
以前、Boost.Xpressive と Boost.Spirit の速度比べをした際にちょっと調べたのでまとめておこう。 この書き方しかないわけではないので、もっと実行効率のいいルールを探すのもいいかもね。 ただ、Boost.Spirit は網羅的なマッチングをしないので要注意*1。…
Intel TBB 3.0 の exampels を見ていると、scalable_allocator と stdmalloc の性能比較ができるサンプル (exmaples/task/tree_sum) があったので、ついでに Google 謹製 tcmalloc とも比較してみた。 比較に使った PC のスペックは CPU: Core i5 750@2.67GH…
ちょっとした構文解析なら Xpressive でも充分だけど、ちゃんとした(?)構文解析器の Spirit と比べてどれだけ性能の差があるのか調べてみた。 どうせ比較するなら実用的なもので、というわけで RFC 2616 やらを参考に HTTP のリクエストヘッダをパースさせて…
boost::xpressiveを使って「コントロール文字を除いたUS-ASCII文字(0x20〜0x7e)」以外か判定しようとしたら、かなり恥ずかしい間違いをしたのでメモ。 元々次のような正規表現で判定をしようと思っていた。 #include <iostream> #include <boost/xpressive/xpressive.hpp> int main() { using namespac</boost/xpressive/xpressive.hpp></iostream>…
pipe や popen を使っていると、本来なら出力済みのはずの他プロセスの出力がなかなか取得できないことがある。 最初はpopenやpipeのせいかと思っていろいろ調べたけど、どうも出力時のバッファリングの影響のようだ。 自分のプログラム中でバッファリングの…
先日インストールした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…
折角なので、新しい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を使う場合、下記のようになる。 #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>…