taskMapの紹介screenCastをYouTubeに
March 25th, 2007 | Published in Uncategorized
しました。
作成には、
を使用しました。2時間くらいの作業でした。
Mac OSXで使えるキャプチャソフトは、SnapProXやiShowUといった商用のものが有名どころのようです。 今回は、ちゃちゃっとつくってさっさとアップしたかったので、フリーのものを探してCapture Me で済ませました。
Capture Meには、
- 1度に60秒しかキャプチャできない
- マウスポインタが記録されない
といった点があります。 もっとばりばりとscreenCastをするようになれば、商用のものを検討してもよさそうです。
キャプチャした素材をiMovieに放りこんで、クリップをつないでタイトルをつけて共有 → Quicktime → CD-ROM とすると、YouTubeへのアップロードに適した形式になるみたいです。
YouTubeに投稿するのは初めての体験でした。存外簡単にアップできるのですね。 若干のタイムラグがあるのは、致し方ないところでしょうか。
リサとガスパールのおかいものエコバッグ
March 24th, 2007 | Published in Uncategorized
来ました。到着まで2〜3週間とあったのですが、1週間もしないうちに届きました。 これで快適素敵なエコライフを送るのです。
Pasconet
taskMap 0.1.0
March 21st, 2007 | Published in hack
cartesianTaskを公開してみます。 ほんとまだまだの出来なんですけれど、公開することに意味があると思うので。
既知のバグがたくさんあるので、多少のことには目をつぶれる寛容な方のみお試しください。
cartesiantask専用ページ → こちら
(x,y)の属性 → Note
どうやって(x,y)の値を保持するか? と考えた結果、各TaskのNoteを用いることにしました。
- すべてのTaskに(taskMapX, taskMapY)という2つのタイトルのNoteを追加します。
- taskMapを試して、もういいやと思ったら menu にある reset を押してください。
注意事項
- 初回起動時がもの凄く遅い (すべてのTaskにNoteを加えるため)
- resetがものもの凄く遅い (すべてのTaskからNoteをはぎとるため) 。タイムアウトしてしまうと、いくつかのTaskにNoteが残ったままになってしまう場合がある
懸念事項
すべてのTaskのNoteにアクセスを行うため、RTMから怒られるかもしれません。 RTM APIの注意事項には、平均して1秒間に1回のAPIアクセスにせよとあるので。
このへんは、0.2.0リリースあたりでうまく解決する予定です。
関連エントリ
-
taskMap – Taskを2次元で可視化
-
taskMap (2)
追記
- 公開してから6時間で22アクセス、少しでも試して頂いた人は2人。
- 1日たち、69アクセス、試して頂いた人は12人。
cartesianTask
March 21st, 2007 | Published in Uncategorized
cartesianTask は、Remember the MilkのTaskを二次元座標にドラッグアンドドロップで配置することにより、重要度や緊急度をひとめで分かるようにするものです。
旧名称 : taskMap
紹介ビデオ
更新情報
0.1.0 を公開しました。
免責
自分ではたくさんテストを行っていますが、いかんせん1人で行っているので漏れがあると思います。
TaskやListを消したりはしませんが、Noteのadd/deleteは行っています。 cartesianTaskの管理外のNoteは触れていませんが、万が一NoteやTask、Listが消失しても勘弁してください。
2007.05/26 追記
taskMapという名称は、商標登録されているとのことなので、名前を変更しました。 taskMap → cartesianTask
rtmProgress 復活
March 21st, 2007 | Published in hack
ここ数日、rtmProgressがダウンしていましたが、復活させました。
ダウンしていた理由は、rtmProgressがbackendで用いているrtmilkというライブラリのバージョンを0.3.0に上げたからです。rtmilk 0.3.0 では、それまでのバージョンとの互換性をぶったぎってしまったので、rtmProgressが動かなくなってしまっていたという不恰好な顛末でした。
契約による設計 in C++
March 17th, 2007 | Published in Uncategorized
を読んでいます。 契約による設計という考えに触発され、自分でもやってみようと思いたちました。
単純なマクロ
さっそく、C++でやってみようということで、
#define REQUIRE
#define ENSURE
といった空マクロを用意しました。
int square10(int x) { 10
REQUIRE {
assert(0 < x);
assert(10 > x);
}
int ret(x * x);
ENSURE {
assert(x == sqrt(ret));
}
return ret;
}
と、一応は書けます。
しかし、本来ならヘッダファイル内の宣言に含めて インターフェイスとしてクライアントに提示したいものです。 さらに欲を言えば、Doxygenなどで自動的に抽出してほしい。
実現のために
- それぞれの関数の入口/出口に、制約条件をチェックするhookを仕掛ける
- 制約条件を関数/クラス宣言内に書ける
- Doxygenのタグを拡張
といったことが必要になりそうです。
1を実現するには、auto変数をうまく利用すればいいんじゃない? と思いました。 2を実現するには、それぞれの制約条件を表現するクラスを、クラス内クラスとして定義すればよさそう。 3はどうしたらいいんだろう…
NDEBUG環境では、制約条件のオブジェクトを生成しないように、マクロを使えばよさそうです。
例
#include
#ifdef NDEBUG
#define CONSTRAIN(method)
#else
#define CONSTRAIN(method)
method##_constrain _constrain(*this)
#endif
class Bird {
public:
Bird() :
flying_(false),
sleeping_(false) {}
void fly() {
CONSTRAIN(fly);
flying_ = true;
}
void sleep() {
CONSTRAIN(sleep);
sleeping_ = true;
}
friend class fly_constrain;
friend class sleep_constrain;
private:
bool flying_;
bool sleeping_;
class fly_constrain {
public:
fly_constrain(Bird &b) : bird_(b) {
assert(false == bird_.flying_);
assert(false == bird_.sleeping_);
};
~fly_constrain() {
assert(true == bird_.flying_);
assert(false == bird_.sleeping_);
}
private:
Bird &bird_;
};
class sleep_constrain {
public:
sleep_constrain(Bird &b) : bird_(b) {
assert(false == bird_.sleeping_);
assert(false == bird_.flying_);
};
~sleep_constrain() {
assert(true == bird_.sleeping_);
assert(false == bird_.flying_);
}
private:
Bird &bird_;
};
};
int main(int argc, char *argv[]) {
Bird piyoko;
piyoko.fly();
piyoko.sleep();
return 0;
}
実行結果
% c++ -Wall -g dbc.cxx
% ./a.out
dbc.cxx:57: failed assertion `false == bird_.flying_'
zsh: abort ./a.out
鳥は飛びながら眠ることはできないという制約にひっかかっているの図です。
まとめ
C++でも契約による設計は実現できそうです。 しかしC++らしく手間がやたらとかかると。 CONSTRAIN
マクロは、メソッド名を自動抽出できればもう少しうまく書けそう。
他にも良いアイデアがあればぜひ教えてください。
参考リンク
バートランド・メイヤー 酒匂 寛
翔泳社 (2007/01/10)
売り上げランキング: 13136
おすすめ度の平均:
オブジェクト指向の基礎からみっちり学べる
rtm.lists.delete が追加された
March 8th, 2007 | Published in Uncategorized
Remember the Milk APIの話題。
これまで、rtm.lists API にadd はあるのに delete がありませんでした。 何が問題かというと、テストが書きづらいということです。 UnitTestで、setup/tearDown にて List の add/delete をしたいわけですが、これまではできませんでした。 なので、addしたListをあとでRTMの設定画面から手動で消して回らなければならないという手間がありました。
にて、delete追加してよー、とお願いしてみたら、さっき「追加したよ」と返事があり、さっそくAPIのページを見にいってみたらちゃんとありました。
ゆってみるもんだなぁと感じたというお話でした。英語重要。
Typo -> WordPress
March 3rd, 2007 | Published in Uncategorized
これまで、長いあいだTypoというBlogエンジンをつかっていたのですが、思いきってWordpressに乗り換えました。 合わせて、MySQLdも4.1 -> 5.0.33 にアップグレードしました。
Motivation
なぜ乗り換えたかというと。
- Typoがあまりに動作が緩慢だったから
- めっちゃメモリを食うから
- どうも開発が滞っているようだから
- unstable感がいつまでたっても拭えないから
- MySQL4.1のrootパスワードを壊してしまったから
Typoにもいいところはあって。
しかし、Wordpressをつかってみると、その完成度の高さに気付きます。
乗り換えにつかったツール
Automatic migration from typo to WordPress
Typoのdbをwpのdbにロードして、migartion SQL を走らせるだけ。とっても簡単だけど、見事にmigrationに成功しました。
インストールしたプラグイン