2009/07/18に第11回北海道開発オフがあったので参加してきた。
以前から存在は知っていたが、都合が合わず参加できないでいた。オープンソースカンファレンスで少しお話をして、これは参加しなければと思い行ってきた。
ただ自分はノートPCを持っていないため、開発する事はできない。そこで前に仕事で気分転換でやった「紙と鉛筆でコーディング」をやってみることにした。多分フルタイムそれでは飽きるので、先日購入した「初めてのPython」を持っていった。
場所はちょっと迷ってしまい、smokeymonkeyさんに助けてもらった。
午前中は「初めてのPython」を第3章を読んだ。ちょっとBlogネタを見つけたので後ほど書く。
午後からは、紙でコーディングを始めてみた。
ネタは、最近夜更かしが多くなってきたので「0時に強制的にシャットダウンするアプリケーション」を考えてみることにした。
ネットで探せば指定した時間にシャットダウンするフリーウェアは多く見つける事ができるが、ほとんどはスタートアップで起動して常駐するタイプ。用があるのは0時ジャストのみ、なのでそれ以外は黙っていてくれ、と。Windowsの場合はタスクスケジュールというのがある。指定時間に何かする、というのはこれで良い。
あとは実行したらシャットダウンするプログラムを作ればよいのだが、実はOS標準でそういった機能がある。
Windowsの場合は
> shutdown -s
のようなコマンドでシャットダウンできる。これをタスクスケジュールに登録すればもう要求は満たされてしまう。ただし、それで終わってしまっては面白くないので、あえて面倒くさい方法でつくってみる。言語はVB.NETでいくことにする。
簡単に仕様をまとめる
- 実行するとシャットダウンする
- シャットダウンまでは、数秒カウントダウンする
- カウントダウンは画面に表示する
- カウントダウンする秒数は指定可能にする
- シャットダウンのキャンセルは不可
必要そうなクラスを洗い出してみる。ムダにマルチプラットフォームを念頭にしたりした。
- Programクラス:アプリケーションのエントリポイントなどメインのクラス
- MainFormクラス:カウント状況を表示する画面
- CountDownクラス:カウントダウンするクラス
- Settingsクラス:アプリケーションの設定を表すクラス
- IShutdownインターフェイス:Shotdownメソッドを定義したインターフェース
- WinShutdownクラス:IShutdownインターフェースを実装。Windows用。
- ShutdownFactoryクラス:OSに該当するIShutdown実装クラスのオブジェクトを生成するクラス
このあたりで時間切れ。Windows用のShutdownは調べてみるとWinAPIで実装できるらしい、Linuxではどうやるんだろう?マルチプラットフォームを考えたのは本当に無駄になってしまうかも。
今回は紙でコーディングの楽しさなんて全く無かった。。これは行き詰ったときにやると良くて、最初からやるものではないらしい。
最後はみんなで成果発表。AmazonAPIの修正やUSBボードいじり・形態素解析によるTwitter Botの改変・ニコニコ動画の履歴の外部化など。USBは面白そう。
その他参考URL
カタンの開拓者たち:http://www.tgiw.info/catan/
コメント
コメントを投稿