• このエントリーをはてなブックマークに追加

ss-1325810374

はじめに

ここ2年ほどで,未実施なプロジェクトリスト == 紙の束を持ち運ぶのが大変になってきたり,毎度紙におこすのがメンドかったりと,週次レビューに対するモチベーションが,本題とは外れた部分をきっかけに下がり始めてきたので,ちょっとツールを切り替えてみようかな,などと思い立ちました.

で,これまでやってきたオレオレ週次レビューの流れをそれなりに活かせそうな形で,「GTDme」というツールを作り始めてみてます.ネーミングは気にしない.

多少形になってきたので,以下,現状での紹介など.

そもそもGTDって何?

ここでは省略.

まずは実践してみることをオススメします.「脳はHDDではなくCPUである」という考えに賛同できれば,コンセプトは吸収しやすいんじゃないかな,と思います.

現状をざっと詳細

認証

Twitter な OAuth のみサポートしています.個人レベルでの利用とかいいながら,認証はソーシャルっぽく.

ナビゲーション

ss-1325807388

GTDにおいて,一般的に「準備しよう」とされている各種の「リスト(フォルダ)」に相当するようにナビゲーションを置いてます.だいたい次のような感じです:

Home
「次に取るべき行動」リスト
Inbox
「In-box」
Calendar
「カレンダー」.オレオレ的に,特定日(期間)もの,週次反復もの,月次反復もの,と分割していたり
Background
「連絡待ち」リスト
Materials
「資料」.単語に違和感><
Someday
「多分やる・いつかやる」リスト
Projects
「プロジェクト」リスト

Add to Inbox?

ss-1325807448

どのページにも,右上のあたりに「Add to Inbox?」という,ボタンのようなものを置いてます.これをクリックすると...

ss-1325807658

...何か入力フォームが表示されるので,頭に浮かんだ気になったことを書いて Enter すれば,その内容が Inbox に入ります.

Inbox

ss-1325808195

こんな感じで,「Add to Inbox」した内容がいろいろたまります.それらにマウスを乗せると...
続きを読む »

  • このエントリーをはてなブックマークに追加

はじめに

ちょっと必要になって10分ほどで書いてみました.リハビリ.

「ジョブ」の定義とかよく知りません><

使い方

var jobseq = new JobSequencer({ interval: 1000 });
 
jobseq.push(function (o) {
    console.log( o.id );  // 1
});
 
jobseq.push(function (o) {
    console.log( o.id );  // 2
}, 500);
 
jobseq.start();
jobseq.stop();

コールバック関数を順番で追加していき, start メソッドでその順番に,指定したインターバルをおいて実行される感じです.

すべて完了する前に stop メソッドを呼ぶことで,中断することもできます.その後 start メソッドを再度呼ぶことで再開します.

ソースコード

冒頭のリンクを参照頂ければよいのですが,ページ稼ぎのためこちらにもw

window.JobSequencer = function () { return this.init.apply(this, arguments); };
JobSequencer.prototype = {
    init: function (params) {
        params = params || {};
 
        var self = this;
        self._queue   = [];
        self._stopped = false;
        self._count   = 0;
        self.interval = params.interval || 0;
 
        return self;
    },
 
    push: function (f, sec) {
        this._queue.push({ f: f, s: sec || this.interval });
    },
 
    shift: function () {
        return this._queue.shift();
    },
 
    start: function () {
        this._stopped = false;
        return this._exec();
    },
 
    stop: function () {
        this._stopped = true;
    },
 
    _exec: function () {
        var self = this;
        var f_this = arguments.callee;
 
        if ( self._stopped ) { return }
 
        var o = self.shift();
        if ( typeof o !== 'undefined' ) {
            var params = {
                id: ++self._count
            };
 
            setTimeout(function () {
                o.f(params);
                f_this.call(self, []);
            }, o.s);
        }
    }
};

おわりに

順番に追加していった関数を,その順番に実行していく JobSequencer っていう JavaScriptなクラスを書いてみたお話でした.

Amazonさん

まだ読んでない><

  • このエントリーをはてなブックマークに追加

ss-1324860051

はじめに

どのブランチがどのブランチの上に乗っかるか,というルールが複数定義されたファイルを読んでひたすら git rebase を行うためのツール「git-rebase-matsuri」というのを書いてみたので,本エントリで軽く紹介します.

※ とあるコミットポイントにおいてちょっとした主要なコミットが発生したおかげで,そこから派生していたすべてのブランチに対して git rebaase する作業が発生することを,私は勝手に「rebase祭り」などと呼んでおります.

背景

「この機能の実装を進めて」「ちょっとあれを直してほしい」先方からそんな要求がくるたびに,その数だけトピックブランチを,公開状態のコミットポイントから生やして作業しています.で,こちらが作業を完了して報告,公開向けの準備の指示を仰ぐのですが,そこから返信がこなくなります.(まぁお忙しいのでしょうね.)その結果,「公開待ち」な状態のブランチが増えてきます.

コミットツリーは次のような感じになります:

ss-1324859692

そこで飛び込んでくる「これ,あのお客さんにどうしても対応したいから,すぐに実装して反映してほしい」といった要求.私の少量メモリな脳内ではスワップを起こしていますが,対応しなければなりません.そしてその修正を先に公開します.

(本エントリを書いている最中にも,何か1件飛び込んできましたw)

コミットツリーは次のような感じになります:

ss-1324860051

さて,本来の開発作業に戻りますか.しかし,安心して開発を再開するには,コミットツリーを次のようにしておきたいところですね:

ss-1324860499

まぁ git rebase しまくればよいだけですが,いかんせんメンドイ!

使い方

インストール

続きを読む »

  • このエントリーをはてなブックマークに追加

...というタイトルで,Perl Advent Calendar 2011Casual Track に,13日目のエントリを書かせていただきました.

  • このエントリーをはてなブックマークに追加

今回の皆既月食,雲だらの名古屋でこのUstを見ていました:

幸い名古屋でも皆既のあたりから雲が切れ始め,お仕事場前の道路から見上げたら,肉眼ではっきりと見ることができました.

そんなわけで,手持ちのカメラで撮ったものをざっとまとめてみました.

IMGP6399
IMGP6426
IMGP6436
IMGP6455
IMGP6465
IMGP6485
IMGP6524
IMGP6532
IMGP6536
IMGP6553
IMGP6569
IMGP6586

他にも重複してるっぽい写真を含め,Flickrに上がってますのでよろしければ:

30 of 1221...1020...2829303132...405060...122