スキップしてメイン コンテンツに移動

第11回北海道開発オフに参加してきた

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/

コメント

このブログの人気の投稿

VirtualBoxのUbuntu 18.04でNAT + ホストオンリーアダプター

VirtualBoxのVMにインストールしたUbuntu Server 18.04で、ネットワーク割当を「NAT」+「ホストオンリーアダプター」にする場合の設定についてメモ。 VMを作るとき、ゲストOSからインターネットに繋がって、かつホスト-ゲスト間でもつながる環境にしたいとき、VMのネットワーク割当は手っ取り早いのは「ブリッジアダプター」なんだけど、会社のネットワークでは都合がわるかったりするので「NAT」+「ホストオンリーアダプター」にしている。 アダプター1は「NAT」を選択 アダプター2は「ホストオンリーアダプター」を選択 ゲストOSであるUbuntuのネットワーク設定は、NATに該当するNICはDHPCで、ホストオンリーアダプターに該当するNICは固定IPとする。 Ubuntu 18.04ではネットワーク設定はNetplanで行う(Ubuntu 17.10から変わったようだ)。編集する設定ファイルは「/etc/netplan/50-cloud-init.yaml」 network: ethernets: {NATのNIC}: addresses: [] dhcp4: true optional: true {ホストオンリーアダプターのNIC}: addresses: [{固定IPアドレス}] dhcp4: no version: 2 ポイントは、ホストオンリーアダプターに該当するNICの固定アドレスを設定するときに、 ゲートウェイを設定しない こと。 以前に QiitaのVirtualBoxでNAT + Host-Only Network環境を構築する を参考にしていたのに、今回18.04で設定する際にすっかり忘れてはまってしまった。 IPアドレスは「192.168.0.2/24」のようにサブネットマスクも指定する。 NICに指定するデバイス名は以下コマンドで表示されるlogical nameが該当する。 > lshw -class network たいていは「enp0s3」「enp0s8」となるようだ。 設定ファイルを保存したら

画像を切り取って保存する

画像処理において、画像の一部を切り出すことをトリミングというらしい。画像編集ソフトなんかにも大抵「トリミング」機能が実装されているだろう。 そんな画像を切り取る処理を.NETでやってみる。 .NETでは画像を扱う際にはBitmapクラスを使用する。BitmapクラスのCloneメソッドでサイズを指定すれば、そのサイズのBitmapオブジェクトができるので、それを保存すればよい。Cloneメソッドの引数はRectangle構造体とPixelFormat列挙体。 Rectangle構造体とは四角形の位置とサイズを表したもの。元画像の左上を(0, 0)として(X座標, Y座標, 幅, 高さ)の値でRectangle構造体を作成して渡す。PixelFormat列挙体はヘルプを見てもよくわからなかった。とりあえずは元画像の値をそのまま渡す。 例えば photo by tsukacyi のようなユッケの画像をトリミングするプログラムは以下のように書ける '元画像 Dim source As Bitmap source = New Bitmap("source.jpg") '切り取るサイズ Dim rect As Rectangle rect = New Rectangle(30, 80, 400, 320) '切り取り後の画像 Dim trimed As Bitmap trimed = source.Clone(rect, source.PixelFormat) '保存 trimed.Save("trimed.jpg") source.Dispose() trimed.Dispose() トリミング後の画像は以下の通り。

「Lively」ベータ開始

Googleが3D仮想空間 「Lively」 のベータ版を開始したらしいので、試しにやってみた。 グラフィックボードを搭載していない、オンボードなPCなのだが、それなりに動作するのが驚いた。比較されるであろう「Second Life」はやったことなく、3D仮想空間とやらは初めてなのだが、なかなか面白い。 試しに 「Chuta's Room」 を作ってみた。中にいくつかこのエントリへのリンクも仕込んでおいた。もしLivelyから来られた方は、コメントでも残していただけると有難い。