Monthly Archives: November 2008
さなぎの食堂
昨日、NHK のドキュメンタリー番組で「さなぎの食堂」が紹介された。この「さなぎの食堂」は横浜の寿町にある。寿町は山谷や釜ヶ崎とならぶドヤ街である。小生は生まれは両国で吾妻橋で育ったので山谷は身近な存在だった。「明日のジョー」を読めばどんなものか朧げながらわかると思う。
寿町はその存在は知っていたがまだ未経験だった。横浜の繁華街のそばにありながらある意味エアポケットのような街空間である。普通に出入りするような場所でもないので、機会があれば足を運んでみたいと思っていた。
「さなぎの食堂」の最大の特徴は、賞味期限ギリギリの食材や棚卸しで不要になった食材を集めて、調理して安価に提供することにある。ドヤ街と言うのは、少子高齢化の縮図のようなところでとにかく平均年齢が高く所得が低い。これらの人々は日に三度の食事もまともに摂れないことも珍しくない。食事がまともにとれないと、健康を害し結果的に精神的にも追いつめられていく…。
行ってみてびっくりしたのが値段の安さである。今回は「角煮定食」を食した。ドキュメンタリーを見ていたので、頭では理解していたが500円玉を出して、100円のお釣りと共に角煮定食が供されるのは不思議な気分である。味はドヤ街のせいだろうか?かなり濃いめの味付けだが、けっこううまい。角煮定食は横浜の別の場所で食べれば、700円ー900円位だと思うがそれらと比べても全く遜色がない。むしろ、副食がつく分だけ割安感が増幅される。
お客さんの年齢層がとにかく高い。これにもまたびっくり。
もう一つ違和感を覚えたのが、20人くらいのお客さんがいるわけだが携帯電話をいじっている人が一人もいない。飛行機の中ならともかく、吉野家を含めて食事をする場所で携帯電話をいじっている人がいないとこうも違和感を感じるとは思わなかった。
昭和にタイムスリップしたような錯覚を覚えた食事時間だった。
McCapFX2-20081130
実装しながら、色々と調べている。
まだ、取り切れていない不具合として、
録画終了後に以下のメッセージがコンソールに現れる。
_tsWorkerCallback : Callback failed
これがきっちり、以下の数分だけ現れる
#define TS_RESPONSE_SIZE 4
つまり、スレッドの脱出が1サイクル余計に実行されているっぽい。
この辺りを中心に修正していこうと思う。
今回の実装は
1. バカヨケ用のタイマが設定できるようになった。
2. ボタンの動作をメソッド化したので、外部からの呼び出しがやりやすくなった。
McCapFX2_20081130.lzh
次回の目標は
ファイルネームの自動生成
Preference の作成
ソケットの実装
Scheduler のガワ
McCapFX2 は録画に徹したシンプルな作りにするつもりなので、スケジューラは別に制作するつもりである。以前に作成したやつを少し作り替えている。いくつか API で自信がないところがあるので、それらをクリアした上で進めようと思う。
NSThread
NSThread を使う場合は、detach されるので現行の変数は out of scope になる。変数を使いたい場合は obj で渡す。
適当にやっていたら全然動かないので、かなり焦った。
GUI の基本的な部分は出来た
録画エンジンの GUI 化は出来た。まだ、いくつか不具合や改善ポイントがある。
不具合点:
1. 録画終了後 コールバック関数の不具合が約30秒間分出る。
改良点:
1. 録画時間を正確に測定できるようにする。
2. ファイルネームの自動生成
3. バカヨケ用の時間設定をコントローラ側で行えるようにし可変にする。
4. Preference の設定ウィンドウの構築方法の習得。
McCapFX2_20081128.lzh
Programming tips
McCapFX2 は操作の多くを segment control を利用している。どの操作モードに入っているかを視覚的に確認しやすい segment control は非常に便利である。
segment control を使うためには、IBOutlet, IBAction 共にモデルに接続しておく必要がある。
また、Apple が公開しているサンプルコード Button Madness は非常に参考になるので、見ておく事をお勧めします。
Button Madness より引用
すべてのセグメントを選ばれてない状態にする。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
// ------------------------------------------------------------------------------- // NSSegmentedControl category to unselect all segments. // // NSSegmentedControl won't unselect all segments if there is currently one // segment selected. So you have to go into the "Momentary tracking mode", unselect // each of the cells, then go back to its original mode. // ------------------------------------------------------------------------------- @interface NSSegmentedControl (SampleAddition) - (void)unselectAllSegments; @end @implementation NSSegmentedControl (SampleAddition) - (void)unselectAllSegments { NSSegmentSwitchTracking current; current = [[self cell] trackingMode]; [[self cell] setTrackingMode: NSSegmentSwitchTrackingMomentary]; int i; for (i = 0; i < [self segmentCount]; i++) { [self setSelected: NO forSegment: i]; } [[self cell] setTrackingMode: current]; } @end |
CotEditor
Windows がメインマシンの時のエディターは TeraPad を使っていた。フリーだし軽いしって感じでかなり手になじんでいた。Mac に移った時の最大級に困ったのがこのエディターをどうするかである。色々なエディターを試してみたけど、いまいちピンとこなかった。FEP もかなり困った問題だった。変換効率よりも挙動が違うのが問題だった。
Mac 用で最近見つけたのが、CotEditor である。
非常に軽くて使いやすい。これを今後は常用する事にする。
よく考えてみると…
Mac での地デジ録画は Cap_sts_OSX があるから、そんなに慌てて GUI 化することはなかったんだよな。それよりもスケジューラを作った方が便利に使えたかもしれないなぁー。
なんかそんな封に考えると急に萎えるな。でも、スケジューラに必要な機能を洗い出してみるか…。
McCapFX2-20081127
とりあえず、今までの分のコードを載せます。
本コードを開発するにあたって、capsts_osx_b1 をベースにさせていただきました。開発してアップしてくれた Novi 氏(コードの冒頭の CopyRight 部分の名前?)に感謝します。色々な部分を自分の今まで開発してきたコードに置き換えたので、CopyRight をどのようにつけるか悩んでいましたが、本ブログに明記します。
今後:
1. 時刻表示のためのスレッド
2. 録画のためのスレッド
3. 外部からのコマンドを受け付けるソケット
引き続き、一緒に開発していただける方を募集しています。mixi で TeamKNOx で検索していただいて、メッセージをいただけたらと思います。
McCapFX2_20081127.zip