麺屋 虎龍

歌舞伎町の札幌ラーメンの店。

辛味噌ラーメンを注文しました。辛いけどおいしいです。麺は太くないですが、油たっぷりで札幌ラーメン直系な感じです。

ただ、立地がすごい(新宿区役所の真裏)ので、昼じゃないと行くのが辛い感じです。あと客層も気になる。味はいいけど。

DropBoxについて大雑把にまとめてみる。

バックアップ領域がほしかったのと、簡単なファイル共有がしたかったので、いまさらながらDropBoxを使ってみました。

DropBoxとは

ファイル共有ツールです。

インストールすると、ローカルPCに同期フォルダを作ります。同期フォルダに置いたファイル・フォルダを自動的にDropBoxが自分のサーバの上にバックアップして保存してくれます。また、サーバ側のファイルが更新された時にも自動的にダウンロードして最新版を取得してくれます。

なぜDropBoxを使うか。

家で開発や作業をする体制を整えようとしていて、「バックアップをどうするか」と「PC間、および他人との作業成果をどう共有するか」という問題で困ってました。

DropBoxを使えば、作ったファイルを同期フォルダに置いておけば勝手にバックアップをとってくれるし、自分のマシンそれぞれにDropBoxをインストールしておけばマシン間の同期も勝手にとってくれるので楽かなあと。

類似サービスでSugarSync(https://www.sugarsync.com/)というツールもあるのですが、Linux版のクライアントがないので見送りました。

Linuxにインストール

Ubuntu9.04(x86)にインストールして見ました。

  1. DropBoxのページ(https://www.dropbox.com/)より、Download dropbox
  2. Dropbox for Linuxのページに飛ぶので、自分にあったディストリのインストーラーをクリックしてダウンロードする。今回はUbuntu 9.04 (x86) というそのままの選択肢があったので楽ちん。
  3. .debファイルがダウンロードされる。Ubuntuでは.debファイルをダブルクリックすればそのままインストールされる。
  4. しかし、この時点ではまだDropboxは使えない。メニューのアプリケーション->インターネット->Dropboxを選択して、初期設定。アカウント情報などを入れる。
  5. $HOMEの下にDropboxディレクトリが作られ、そこで同期が行われます。後はWindows版と同じように使えるはずです。

Windowsにインストール

なんか面倒になったので、あとで書く。
http://picolog.at.webry.info/200809/article_32.html

使ってみて気づいた点

Subversionの処理でエラーになる時がある。

実験でSubversionリポジトリDropBoxの管理フォルダに構築してみたのですが、大量のファイルをインポートするときなどに同期orインポートが失敗します。(Subversion側がimport時にファイルの生成・削除をくりかえすため?)
今回は初期インポートだったので、リポジトリごと一旦削除して作り直すという手順で乗りきりましたが、版を重ねた後でこの問題が起きたらどうしようかなと。

まあ、とりあえず自分用のテストプロジェクトで試用して、ある程度になったら別なサービスに乗り換えればいいや。

重い。

細かく測ったわけではないのですが、これ結構重い気がする。体感的にWindowsそのものの動作がもっさりしてきたように思えます。以前は起きなかったタイミングでスワップが発生しているように思えるし。

表示上は30〜50MB程度のメモリ使用料のはずですが、それ以上の重さを感じます。

細かくOn/Offを繰り替えせばいいのですが、それじゃバックアップツールとしての価値が減少するし。うーん・・・

カールじいさん3D

カールじいさんと空飛ぶ家
http://www.disney.co.jp/movies/carl-gsan/

3D上映に引かれて見に行ってきました。特殊メガネをかけると、絵が飛び出てくるアレです。

窓口でしょんぼりしたのですが、3D上映だけ、値段が高いです。2000円。しかも割引が利かない。あらかじめ前売り券(\1300)を準備していたのですが、しっかり差額の700円を徴収されました。下手に金券ショップとかで買うと、逆に高くつくかもしれないです。

劇場ではメガネを渡されます。こんなの。

さすがに赤青のメガネとかではないです。グレーっぽい色が入っているので、色味が若干暗く見えてしまうのはマイナス点。

3Dの効果は結構ありました。ただ、屋外のシーンがメインだったので、背景が後ろでキャラが若干前に見えるとか、その程度の見え方が多かったです。手前にモノがあって、奥の人に焦点が合っているようなシーンでは有効に働いていた気がします。(というか、当たり前か)。屋内のシーンが多い映画でもう一回見てみたいです。

ストーリーは、老人が旅をして、新たな人生を発掘するような話です。こういうの大好き。グラン・トリノもよかったし、老人映画はいい。

64bitWindows + C# でDLLが読み込めない。

結構はまったのでメモ。

64biWindowsを利用している場合、32bit設定でビルドされたDLLは読み込むことができません。

// hoge32.dll内にある、void HogeFunc()をインポートして、delegateに格納する例。
[DllImport("kernel32", CharSet = CharSet.Unicode, SetLastError = true)]
internal static extern IntPtr LoadLibrary(string lpFileName);
[DllImport("kernel32", SetLastError = true)]
internal static extern bool FreeLibrary(IntPtr hModule);
[DllImport("kernel32", CharSet = CharSet.Ansi, SetLastError = true, ExactSpelling = false)]
internal static extern IntPtr GetProcAddress(IntPtr hModule, string lpProcName);
//
private delegate void HogeFunc();
//
private void button1_Click(object sender, EventArgs e)
{
    // DLLを読み込む。
    IntPtr handle = LoadLibrary("hoge32.dll");
    if (handle == null) {
        // 64bitOSで32bitビルドのDLLを読み込んだ場合、ここでresult == 193が返ってくる。
        int result = System.Runtime.InteropServices.Marshal.GetLastWin32Error();
        System.Diagnostics.Debug.WriteLine(result);
    }
    IntPtr funcPtr = GetProcAddress(handle, "HogeFunc");
    //
    //
    HogeFunc hogefunc = (hogefunc)System.Runtime.InteropServices.Marshal.GetDelegateForFunctionPointer(funcPtr, typeof(hogefunc));
    hogefunc();
    FreeLibrary(handle);
}

しかし、C#のデフォルト設定では「Any CPU」に設定されており、動作するWindowsのバージョンにあわせて64/32bitのアプリケーション側で切り替えるようにビルドします。ある意味賢い。

しかし、そうなると64bit環境で動かす場合、DLLが読み込めなくなってしまいます。

これを何とかするには、以下の二つの方法があります。

  1. DLLを64bit環境でビルドしなおす。
  2. ビルド設定で切り替え機能を無効にし、32bitアプリケーションとして実行するように変更する。
  3. ビルド後のアプリケーションの設定を変更して、32bitアプリケーションとして実行するように変更する。

DLLをリビルドできる環境であれば、1.を試すべきですが、あいにく今回は取れない(Susieプラグインを読み込みたい)。
というわけで、2.を試してみたのですが、メニューのどこを見渡しても32/64bitのビルド切り替えが見つからない。

これは、デフォルト設定では隠しメニューなので出てこないのです。

やり方は(VC#2008で説明します)、

  1. Visual C# のメニューからツール->オプションを選択。
  2. 左下の「すべての設定を表示」にチェックを入れる。
  3. オプションダイアログの左のツリーから「プロジェクトおよびソリューション」の「全般」を選択。
  4. 「ビルド構成の詳細を表示」にチェックを入れる。
  5. これでCPUが選択できます。VisualC#のメニューから「ビルド->構成マネージャ」
  6. 「アクティブソリューションプラットフォーム」のコンボボックスから「新規作成」を選択。
  7. 「新しいプラットフォームを入力または選択してください」のドロップボックスからx86を選択。設定のコピー元は「Any CPU」を選択してOKを押す。
  8. あとはそのままビルド。32bit DLLの関数も実行できるはずです。