NAKAMURA Minoru の日記 (2011年12月)

先月の日記(2011年11月) 今月の日記(2011年12月)
2002 | 10 | 11 | 12
2003 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12
2004 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12
2005 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12
2006 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12
2007 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12
2008 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12
2009 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12
2010 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12
2011 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12
2012 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12
2013 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12
2014 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12
2015 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12
2016 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12
2017 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10
ホームページ | 最新のコメント50
インデックス: 食べ歩き | Java | プログラム | UNIX | 画像
最新の日記へのリンク | この日記ページをはてなアンテナに追加 この日記ページをはてなブックマークに追加
はてな ダイアリー アンテナ ブックマーク ブログ
Twitter | mixi | Facebook | Google+
slideshare | github | Qiita



12/29 (木)

[Food] スペイン料理 アマポーラ@横浜店ルミネ (公式ぐるなび)

横浜ルミネ内にあるスペイン料理店。


オリーブ

エスカルゴの香草バター焼き

イカ墨と海鮮のパエリア

12/26 (月)

シュトレン

ドイツのクリスマス菓子シュトレンを友達に送って貰ったので、職場に持って行って食べる。 山口県のトロアメゾンというお店のシュトレンだそうな。

シュトレンは表面に砂糖をまぶしたパウンドケーキですな。 美味しいですが、かなり甘いです。

[Food] イタリア食堂ピアチェーレ Trattorla Piacereabc@武蔵中原

お昼ごはん。 このお店のランチを頼むと、セルフサービスでボロネーゼソース風カレーを自由食べれます。


12/25 (日)

[Movie] ミッション・インポッシブル/ゴースト・プロトコル

タンタンの冒険 の 3D 版を観たくて川崎チネチッタで行くが、スケジュール的に朝の早くと夜遅くの数回しか上映されていなかった。

替わりにミッション・インポッシブルを観てみる。

[Food] カレーショップ・トップス@ラゾーナ川崎店 (公式)

ラゾーナ川崎を徘徊。 カレーショップ・トップスでタンドリーチキンカレーを食べる。


12/24 (土)

秋葉原散策

仮面ライダーシリーズ40周年(!)をお祝いするクリスマスツリー(?)が飾られていました。

Fate/Zero に出てくるセイバー・モータード・キュイラッシェの実物大模型。 模型と言うか本物のヤマハのバイクを改造したものかしら?

[Food] メーヤウ@神田神保町

神田神保町にあるメーヤウに初めて入る。 早稲田にあるのは辛〜いタイカレーの店と言う印象があるのだが、神保町店はそんな雰囲気がしない店だった。

看板
看板
辛口バターチキンカレー
辛口バターチキンカレー

12/22 (木)

富士通川崎工場のクリスマスイベント

武蔵中原駅前の富士通川崎工場が一般開放してクリスマスイベントを実施しています。 庭園は色々なライトアップで飾られ、本館の壁に地域住民・社員から募集されたイラストが投影されます。

屋台が出ていました。


秋田名物きりたんぽ

インド風チャーハン

12/20 (月)

VMware Player や複数ゲスト起動ができるのね

これまで VMware Workstation と違って VMware Player はゲストを一つだけしか起動できないと思っていた。 なぜなら VMware Workstation の場合、1度起動すると Multi Document Interface(MDI) の中で複数のゲスト VM を起動する操作が可能だが、VMware Player は Single Document Interface(SDI) で同時に一つしかゲスト VM を起動できないからだ。

しかし VMware Player 自身を複数起動すれば、別々のゲスト VM を起動可能だった。

ただし 2つ VMware Player を起動すると、最大化の操作が独立に実行できない。 片方の VMware Player を最大化すると、もう片方も連動して最大化されてしまう。


12/19 (月)

[Linux] Btrfs の固有機能を使う

btrfs は ioctl を使うことによって btrfs の固有機能を利用することができる。

トランザクション

Btrfs はトランザクション書き込み機能を持っている。 これはファイルシステムに一連の書き込みを「トランザクション」として扱い、マシンシャットダウン等で「トランザクション」が中断された場合は一連の書き込みを全て破棄する機能である。

プログラムとしては以下のように btrfs 内のファイルまたはディレクトリを open して、それに BTRFS_IOC_TRANS_STARTioctl を実行する。 これが開始の宣言となり、以降 BTRFS_IOC_TRANS_END を指定して ioctl までが一つのトランザクションとなる。

トランザクションの対象となるのは fd を含む btrfs ファイルシステムとなる。 複数の btrfs ファイルシステムがマウントされている場合は、open するパスで区別する。

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/ioctl.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <errno.h>

#define BTRFS_IOCTL_MAGIC      0x94
#define BTRFS_IOC_TRANS_START  _IO(BTRFS_IOCTL_MAGIC, 6)
#define BTRFS_IOC_TRANS_END    _IO(BTRFS_IOCTL_MAGIC, 7)

int fd, ret;

fd = open("a file in btrfs", O_RDONLY);
if (fd < 0) {
    int eno = errno;
    fprintf(stderr, "open = %d\n", eno);
    exit(EXIT_FAILURE);
}
    
ret = ioctl(fd, BTRFS_IOC_TRANS_START);
if (ret < 0) {
    int eno = errno;
    fprintf(stderr, "ioctl(fd, BTRFS_IOC_TRANS_START) = %d\n", eno);
    exit(EXIT_FAILURE);
}
    
// 適当な書き込み

ioctl(fd, BTRFS_IOC_TRANS_END);
close(fd);

ファイルクローニング(file cloning)

Btrfs はファイルのクローニング(cloning)をすることができる。 ファイルのクローニングは一種のファイルのコピーだが、copy-on-write の手法でクローニング直後はコピー元ファイルとコピー先ファイルはデータブロックを共有する。 そのためディスク消費が小さく、一瞬でクローニングすることが可能である。

クローニング以降にコピー元ファイルまたはコピー先ファイルに変更が加えられると、二つのファイルの共有部分は徐々に減ってゆくので容量は増えてゆく。

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/ioctl.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <errno.h>

#define BTRFS_IOCTL_MAGIC      0x94
#define BTRFS_IOC_CLONE        _IOW(BTRFS_IOCTL_MAGIC, 9, int)

int main(int argc, const char **argv)
{
    int in, out;
    
    in  = open(argv[1], O_RDONLY);
    out = open(argv[2], O_CREAT|O_TRUNC|O_WRONLY, 0644);

    if (ioctl(out, BTRFS_IOC_CLONE, in) == -1) {
        int eno = errno;
        fprintf(stderr, "ioctl error = %u\n", eno);
        exit(EXIT_FAILURE);
    }

    close(in);
    close(out);

    return 0;
}

とはいえ最近の cp コマンドは --reflink オプションを付けることによって同じ効果を出すことができるので、わざわざプログラムを書く必要はない。


12/12 (月)

[Prog] C++ でコンパイラ時値範囲チェック

Ceph のソースコードを読んでいるうちに見たチェックコード。 v が -1 から 200 の範囲までに入っていることをチェックし、範囲を外れていればコンパイラエラーを表示させる。

#define dout_impl(cct, v) \
    if (0) {\
        char __array[((v >= -1) && (v <= 200)) ? 0 : -1] __attribute__((unused)); \
    }\

char __array[(condition) ? 0 : -1]を使わない方法としては、GCC の built-in 関数と関数 attributes を使う方法がある。

extern void error_message() __attribute__((error("message")));

inline void check_value(int v)
{
    if (__builtin_constant_p(v))
        if ((v >= -1) && (v <= 200))
            return;
    error_message();
}

上記の方法の場合、check_value(100)のようなコードを挟んだ上で、gcc の最適化レベルを -O1 以上に上げてコンパイルするとチェックがかかる。 ただし -O0 だと範囲内の値でもコンパイルエラーが出てしまう。 南無三。

コメントを書き込む
[1] [名無しさん] 2015-04-17 02:26:57
例の
if (-1 >= v && v >= 200)

if (v >= -1 && v >= 200)
ですよね?

googleで「sigaction linux SEGV_MAPERR」の検索をしてずいぶん前の記事をみつけたのですが、あまりに面白いのでここまで読んできて上記間違いを見つけました。

linux mmap SEGV
[2] [nminoru] 2015-06-01 01:08:36
ご指摘ありがとうございます。
日記の内容を修正しました。

12/11 (日)

[Movie] タンタンの冒険 (公式)

川崎チネチッタで「タンタンの冒険」を観てきた。 時間の都合で通常吹き替え版になったが、他に通常字幕版と 3D 字幕版と 3D 吹き替え版がある。

モーションキャプチャーで実写に限りなく近い CG を作っている。 そのせいで主人公タンタンと犬のスノーウィは CG 的な造形なのだが、敵方のサッカリンはリアルすぎて実写取り込みなんじゃないかと疑わせる。 というか実写だろうオマエ。 とはいえ、リアルな背景の中に不気味の谷の手前にいる CG キャラクタを登場させるというのが、今後の主流になっていくのかもしれない。

ストーリーは随所にギャグが散りばめられて、劇中観客席から笑い声があがる。 視聴後感が爽やかなファミリー映画でした。


12/10 (土)

月食

今日は月食。 Canon の IXY 10S で撮った中で一番月食ぽく見えるものをあげておく。


12/09 (金)

[Food] 四季懐石 たらふく@武蔵中原 (公式食べログ)

会社の部署の歓迎会。 場所はいつもの料理屋「たらふく」(2010年9月13日2011年1月26日2011年6月17日)


12/8 (木)

Windows7 の復元ポイント

会社の個人 PC のバックアップを iSCSI をマウントしたドライブ上で行っていたのだが、1TB ほどの容量のあるディスクが数十MBを残していっぱいになった。

「ディスククリーンアップ」で起動して「詳細オプション」タグの中にある「システムの復元とシャドウコピー」の「クリーンアップ(C)」を選択し、iSCSI ドライブを指定して古い復元ポイントを削除すると 88.9GB 空いた。

しかし後で確認すると iSCSI ドライブの「システム保護」は無効になっている。 ディスククリーンアップは何を削除したんだろう? 空き容量が増えているので何かを削除しているのだろうが。

追記:12/15

バックアップデータ中のデータファイルのバックアップの履歴が問題のようだ。

「コントロールパネル」-「バックアップと復元」-「領域の管理(M)」を選択して、「Windowsバックアップディスク領域の管理」を呼び出し、データファイルのバックアップの「バックアップの表示(V)」を選択する。 新しいダイアログボックス中で「削除するバックアップの期間を選択します」とでるので、バックアップ期間から古いものを削除してゆくとディスクが空いてゆく。

これ手作業で削除しなくちゃならんのかしら? バックアップ容量を決めてディスクが溢れそうになった、適当に古い世代を消して欲しいところのなのだが。


12/4 (日)

本を買ったよ

神保町の三省堂で本を購入。 8冊ほど買い込んだので今月分はこれで足りるでしょう。

感想はぼちぼち書きます。

[Food] メナムのほとり ((公式食べログぐるなび)

カレーを食べたくて神保町を散策するも、日曜日は結構カレー屋が閉まっているのね。 結局、タイ料理店の「メナムのほとり」でグリーンカレーを食べました。

グリーンカレー
グリーンカレー
ココナツミルクジュース
ココナツミルクジュース
トムカーガイ
トムカーガイ

グリーンカレーは茄子が大量に入っている。もう少し小さく切って戴けるほうがありがたい。

トムカーガイは美味し。これは小カップだが、普通のサイズのを頼めばよかったかしら。


12/3 (土)

アパートに iTSCOM のモデムが来た

地上波アナログ放送の停波にアパートに iTSCOM のケーブルテレビが引かれたのだが、今度はアパート単位でインターネットも導入したようだ。 業者がモデムを持ってきて調整をしていった。

iTSCOM のインターネットの基本プランは大家持ちで 1Mbps の回線が使える。 自腹を切って追加プランに入れば 160Mbps になるようだが、うちはフレッツ光にすでに入っているからなぁ。 フレッツ光をやめて iTSCOM にすると固定 IP 回線引けないけど、それは nminoru.jp をレンタルサーバを移すという手はあるからなぁ…(以下沈思黙考)。

[Food] 手ごねハンバーグ ぐーばーぐ

元住吉にできた「手ごねハンバーグ ぐーばーぐ」に行ってみる。 新装開店の店にしては微妙に客の入りが悪く、並ばずに入れた。

土鍋ビーフシチューばーぐ
土鍋ビーフシチューばーぐ

「土鍋ビーフシチューばーぐ」にはアボカドを入れてみた。 入れた直後には少し後悔したが、意外にアボカドはあう、、、ような気がする。多分。


12/2 (金)

Amazon Product Advertising API の仕様変更

うちのサイトのISBN検索支援CGIが動かなくなって気づいたのだが、Amazon の Product Advertising API の仕様がまた変わったようだ。 Amazon アオシエイトプログラム オフィシャルブログの 2011/07/26 の記事 によると、AssociateTag が必須のパラメータとなったようだ。 そのほか SellerLookup、SellerListingLookup、SellerListingSearch オペレーションが使用できなくなった。 MerchantId パラメータも実質使えなくなったもよう。

前回の変更は2009年の11月(2009年6月22日の日記2009年11月11日の日記)だった。 結構、頻繁に仕様が更新されている印象がある。 もうそろそろメソッドを削る方向への仕様変更は止めて欲しいものだ。


先月の日記(2011年11月) 今月の日記(2011年12月)
2002 | 10 | 11 | 12
2003 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12
2004 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12
2005 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12
2006 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12
2007 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12
2008 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12
2009 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12
2010 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12
2011 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12
2012 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12
2013 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12
2014 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12
2015 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12
2016 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12
2017 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10
ホームページ | 最新のコメント50
インデックス: 食べ歩き | Java | プログラム | UNIX | 画像
最新の日記へのリンク | この日記ページをはてなアンテナに追加 この日記ページをはてなブックマークに追加
はてな ダイアリー アンテナ ブックマーク ブログ
Twitter | mixi | Facebook | Google+
slideshare | github | Qiita


Written by NAKAMURA Minoru, Email: nminoru atmark nminoru dot jp, Twitter:@nminoru_jp