俺の簡単カレー2

自己流カレー第2弾。
第一弾はただ辛いだけのものになってしまったので今回はレッドペッパーの量を減らして、バターをタップリといれて、トマトジュースも使いました。

f:id:kaizawa2:20130608210457j:plain

材料(二人前)

  • 鶏肉…200g
  • 玉ねぎ…1玉
  • トマトジュース(食塩無添加)
  • プレーンヨーグルト…80g
  • バター…大さじ3
  • 調味料
    • 塩…小さじ2
    • クミン…小さじ3
    • ターメリック…小さじ3
    • レッドペッパー…小さじ1

f:id:kaizawa2:20130608184228j:plain

作り方

1. 鶏肉の皮を剥く

f:id:kaizawa2:20130608184153j:plain

2. 調味料をよく混ぜる

f:id:kaizawa2:20130608184202j:plain

3. 鶏肉と調味料、ヨーグルトをビニールに入れてよく揉む。

f:id:kaizawa2:20130608221924j:plain
その後しばらく寝かしておく

4. 玉ねぎをみじん切りにする
5. 鶏肉の皮をフライパンでパリパリになるまで炒めて脂を出す。出たら脂を残して皮を取り出す。
6. フライパンに玉ねぎ鍋にいれて20分ほど炒める
7. 玉ねぎがやわらかくなったらフライパンにバターを入れてバターが溶けるまでいためる
8. フライパンにトマトジュースをいれて軽く煮立たせる
9. フライパンに鶏肉と調味料を鍋に入れる

f:id:kaizawa2:20130608191238j:plain

10. 煮込む

f:id:kaizawa2:20130608215200j:plain

11. 完成

f:id:kaizawa2:20130608210457j:plain

俺の簡単カレー1

自己流カレー第一弾。
材料はかなり適当です。ヨーグルトはもっと多めに、レッドペッパーはもっと少なめの方が良かったかも。かなり辛かったです。

材料(二人前)

  • 鶏肉…100g
  • 玉ねぎ…1玉
  • 人参…小2本
  • 水…100cc
  • 調味料
    • 塩…大さじ2
    • ヨーグルト…大さじ2
    • クミン…小さじ3
    • ターメリック…小さじ3
    • レッドペッパー…大さじ2
    • リンゴ酢…小さじ2

作り方

  1. 鶏肉の皮を剥く
  2. 鶏肉にボールなどに入れて調味料を混ぜる
  3. 玉ねぎ、人参をみじん切りにする

f:id:kaizawa2:20130515200459j:plain

  1. 鶏肉の皮を鍋パリパリになるまで炒めて脂を出す。出たら皮を取り出す。
  2. 玉ねぎと人参を鍋にいれて炒める
  3. 玉ねぎがやわらかくなったら鶏肉と調味料を鍋に入れる
  4. 鶏肉に熱がはいったら水を入れる
  5. 煮込む
  6. 完成

f:id:kaizawa2:20130515224031j:plain

kotubu - Scala 製 Twitter クライアント

kotsubu(こつぶ)とは?

kotsub は Scala で書かれた Twitter クライアントです。

f:id:kaizawa2:20130427201423p:plain

前提条件

使っているPCに Java SE のバージョン6 以降がインストールされている必要があります。

利用方法

以下のURLにアクセスすれば自動的にアプリケーションがダウンロードされ実行されます。

http://www.whiteboard.ne.jp/~admin2/kotsubu/kotsubu.jnlp

初回起動の時だけはTwitterアカウントとの連携を行うため以下の作業が必要になります。

  1. セキュリティの警告のポップアップが表示されます。もし問題ないと思ったら「リスクを受け入れて、このアプリケーションを実行します」にチェックを入れて「実行」クリックします。f:id:kaizawa2:20130427202134p:plain
  2. ブラウザが起動しkotubuがTwitterアカウントを利用する事を許可する確認画面がでます。もしよければ「連携アプリを認証」をクリックします。f:id:kaizawa2:20130427202448p:plain
  3. kotubuにあなたのTwitterアカウントのアクセスを許可するためのPIN番号が表示されますのでこれをコピーします。f:id:kaizawa2:20130427202705p:plain
  4. コピーしたPIN番号をkotubuのポップアップにペーストしますf:id:kaizawa2:20130427202851p:plain

以上です

ソースコード

ソースコードGithub にアップロードされています。

ライセンス

kotsubu is provided under Apache License 2.0.
kotsubu is an open source software and free of charge.
You can use kotsubu freely for any commercial and non-commercial use.

This program uses twitter4j and Scala.

Twitter4J
Copyright (c) 2007, Yusuke Yamamoto All rights reserved.
http://twitter4j.org

Scala
Copyright (c) 2002-2011 EPFL, Lausanne, unless otherwise specified.
All rights reserved.
http://www.scala-lang.org/

Also, it uses free icons from FAMFAMFAM - Silk Icons.
http://www.famfamfam.com/lab/icons/silk/

exec 可能な Solaris 向け smbfsファイルシステム

Windowsの共有フォルダをマウントできるsmbfsファイルシステムmmap(2), exec(2) 可能なように変更しました。
この変更によってWindows共有上の Solaris の実行可能ファイルが実行できるようになりました!!

smbfs which supports access to mapped-file (英語ページ)

何を言ってるんだと思われるかもしれませんが、実はバンドルの smbfs ファイルシステムではマウントされたディレクトリ上に date コマンドなどの実行可能ファイルをコピーしても実行することはできないのです。これはプログラムの実行に必要なファイルシステムのいくつかの機能が未実装であることが原因で、それらを実装してやることで mmap(2) や exec(2) が可能になったということです。

実装された VNODE 関数

  • VOP_MAP
  • VOP_GETPAGE
  • VOP_PUTPAGE
  • VOP_ADDMAP
  • VOP_DELMAP

これにより実行可能になったシステムコール

ダウンロード

以下のリンクからソースコードをダウンロードすることができます。

smbfs.tar.gz

また、コードは github においてありますのでそこから参照、check-out することも可能です。

https://github.com/kaizawa/smbfs

コンパイル

展開されたディレクトリで configure, make を実行することでコンパイルできます。

$ ./configure
$ make 

使い方

このバージョンの smbfs をインストールする前に、バンドルの smbfs モジュールをアンロードおよび削除しておく必要があります。
なお、万一にそなえてオリジナルのsmbfsモジュールをコピーしておくことをお薦めします。というか是非やってください。

オリジナルモジュールのバックアップ

# cd /usr/kernel/fs/amd64/        
# cp smbfs smbfs.org

オリジナルのモジュールのアンロード

smbfsのアンロードはroot権限で make uninstall コマンドを実行することで行えます。

# make uninstall
cd usr/src/uts/common/fs/smbclnt/smbfs ; make uninstall
modunload.sh
rm /usr/kernel/fs/amd64/smbfs

もしくは直接 modinfo(1M) と modunload(1M) コマンドを叩いてもアンロードできます

# modinfo |grep smbfs                                    
274 fffffffff816b000  14850  22   1  smbfs (SMBFS filesystem)
# modunload -i 274

インストール

インストールは make install コマンドで行えます。

# make install
cd usr/src/uts/common/fs/smbclnt/smbfs ; make install
/usr/bin/ginstall -c -m 0644 -o root -g sys smbfs /usr/kernel/fs/amd64 
modload -p fs/amd64/smbfs

マウント

通常の smbfs の場合と全く同様に mount できます。詳しくは man mount_smbfs(1M)をご参照ください。

# mount -F smbfs -o dirperms=777,fileperms=777,user=myname,uid=myname //smbserver/data /mnt

以下のエントリでもマウント方法のご紹介をしているので参考にしてください。
Solaris11でSMB共有をマウントする

ご注意

本モジュールは十分にテストされていません。万一の場合システムがパニックしたり、最悪の場合既存のファイルを破壊したりする可能性もあります。くれぐれも重要なシステムに導入しないようにしてください。
本モジュールによるいかなる責任も負いかねます。ご使用は自己責任でお願いいたします。

でもフィードバックは大歓迎です。

Solaris 11でSMB共有をマウントする

Solaris11でいわゆるWindowsの共有フォルダをマウントしようとしたときに、ちょっと手間取ったのでメモしておきます。
元ネタはほぼこちらです。

How to Mount an SMB Share on a Directory You Own

  • 各コマンドは root 権限で実行されることを想定しています。
  • この例では「smbserver」がSMBサーバ名で「myname」がSMBサーバ上のユーザ名になります。

パッケージの確認

以下のコマンドを実行します。

$ pkg list | grep smb

以下の2つのパッケージがインストールされている事を確認します。

service/file-system/smb       0.5.11-0.175.1.0.0.24.2    i--
system/file-system/smb       0.5.11-0.175.1.0.0.24.2    i--

もしインストールされていなければ次の「パッケージのインストール」でインストールします。

パッケージのインストール

前の手順ですでにパッケージがインストールされていることがわかっていれば飛ばして構いません。

# pkg install pkg://solaris/system/file-system/smb
# pkg install pkg://solaris/service/file-system/smb

もしすでにパッケージがインストールされている場合には「No updates necessary for this image」と言われます。

サービスの有効化

SMBクライアントサービスを有効化します。

# svcadm enable -r svc:/network/smb/client:default

enable サブコマンドに -r オプションを付けて有効化すると依存するサービスも同時に有効化してくれるので楽です。

SMB共有の確認

もしSMB共有の共有名がわからない場合にはいかのコマンドで確認できます。
実行後パスワードを聞かれます。

# /usr/sbin/smbadm show-shares -t smbserver
Enter password: 
SHARE               DESCRIPTION
IPC$                
Data                
2 shares (total=2, read=2)

SMBパスワードの保存

マウント実行時に毎回パスワードを聞かれるのも億劫なのでパスワードをシステムに保存して置きます。

# /usr/sbin/smbadm add-key  -u myname@smbserver
Password for SMBSERVER/myname:

マウント

マウントを実行します。
この例では smbserver というサーバの /data という共有フォルダを Solaris 上の /mnt というディレクトリにマウントしています。

# /usr/sbin/mount -F smbfs -o dirperms=755,fileperms=644,user=myname //smbserver/data /mnt

dirperms と fileperms はマウント後の各ディレクトリ、ファイルのアクセス権を設定します。これらはSMBサーバ側の実際のアクセス権とは無関係ですが、Solaris上ではこの設定によりアクセスが制限されます。(参: mount_smbfs(1M))
例えば、デフォルトではどちらも 700 となっているのでマウントを実行したユーザ、つまり root ユーザしかディレクトリに入ることもファイルを見ることも出来ません。

システム起動時に自動マウント

このままでは再起動後にもまた手動でmountを実行しなければなりませんので、/etc/vfstabにエントリを追記して起動時に自動的にマウントされるようにします。

//smbserver/data      -       /mnt   smbfs   -     yes     dirperms=755,fileperms=644,user=myname,uid=myname

Wireshark を使ってパケットデータをプログラムで利用

多機能さにいつも驚かされるネットワーク・プロトコル・アナライザの Wireshark ですが今回また便利機能を見つけたのでエントリ書いておきます。

キャプチャしたパケットを見ているとき「このEthernetフレームをそのままプログラムで再現したいなぁ」と思ったことはありませんか? たとえば、なんらかのテストのためにキャプチャしたパケットと同じ内容を RAW Socket 使ってネットワークに再送するとか。

そんなとき、Wireshark の Export 機能を使うと簡単に該当パケットのバイト列を C言語の配列のとして出力してくれるので簡単にプログラムからパケットデータを利用することができます。
使い方はとっても簡単。

  1. バイト配列として抜き出したいパケットを選択する
  2. File -> Export から「C Arrays(Packet bytes) file ...」を選ぶ
  3. 「Selected Packet Only」を選び Export to file: に書き出すファイル名を指定する


[f:id:kaizawa2:20120811225752p:plain

そうすると、指定したファイルに以下のような内容が得られます。

char pkt6[] = {
0x00, 0x0c, 0x29, 0x05, 0xa6, 0xcf, 0x00, 0x0b, 
0xa2, 0xc1, 0x47, 0x98, 0x08, 0x00, 0x45, 0x00, 
0x01, 0x60, 0x14, 0xc5, 0x40, 0x00, 0x32, 0x06, 
0x9c, 0xa0, 0x3c, 0x20, 0x98, 0x5a, 0xc0, 0xa8, 
0x01, 0x10, 0x00, 0x50, 0x88, 0xda, 0x0d, 0x99, 
0xcf, 0x57, 0x26, 0xe6, 0xbf, 0xeb, 0x80, 0x18, 
0xc5, 0x28, 0xd7, 0xa2, 0x00, 0x00, 0x01, 0x01, 
0x08, 0x0a, 0x31, 0xbe, 0x25, 0x17, 0x03, 0x1d, 
0x6b, 0x43, 0x48, 0x54, 0x54, 0x50, 0x2f, 0x31, 
...中略...
0x65, 0x65, 0x70, 0x2d, 0x41, 0x6c, 0x69, 0x76, 
0x65, 0x0d, 0x0a, 0x43, 0x6f, 0x6e, 0x74, 0x65, 
0x6e, 0x74, 0x2d, 0x54, 0x79, 0x70, 0x65, 0x3a, 
0x20, 0x74, 0x65, 0x78, 0x74, 0x2f, 0x68, 0x74, 
0x6d, 0x6c, 0x0d, 0x0a, 0x0d, 0x0a, 0xe3, 0x81, 
0x93, 0xe3, 0x82, 0x93, 0xe3, 0x81, 0xab, 0xe3, 
0x81, 0xa1, 0xe3, 0x81, 0xaf, 0x0a };

これなら C言語だけでなく Java などでも利用できますよね。
とっても便利です。

さらに、パケットのHEX出力見てて「あー、ここ日本語文字列臭いけどなんてかいてあるだろ?」なんてことありませんか?

f:id:kaizawa2:20120811231023p:plain

こんなときも Wireshark の Export 機能を使えば簡単に該当文字列だけを抜き出せます。

  1. 該当部分を選択
  2. File -> Export から「Selected Packet Bytes ...」を選ぶ
  3. Name: に書き出すファイル名を指定する


f:id:kaizawa2:20120811231520p:plain

これで指定したファイルに当該バイト列が書きだされます。
あとは、Emacs などのエディタで開けば日本語が確認できます。簡単ですねっ。

f:id:kaizawa2:20120811231954p:plain

CoCo壱番屋カレーふりかけで作る簡単カレーチャーハン

f:id:kaizawa2:20120811213749p:plain

材料

(*) 私の近所ではキャン・ドゥという100円ショップで売ってました

作り方

  1. フライパンに油をひき温める
  2. 溶いた卵をフライパンに入れ炒り卵にする
  3. ご飯をフライパンにいれ木べらなどでほぐす
  4. CoCo壱番屋カレーふりかけを入れて混ぜる
  5. できあがり!

f:id:kaizawa2:20120811130411j:plain

簡単でとっても美味しいですよ。お試しあれ。