Ditz on GitHub Page
April 17th, 2009 | Published in Uncategorized
I made it work Ditz on GitHub page, displaying Ditz contents like releases, tasks on GitHub site. Here’s how to do it:
1. create a GitHub page
follow the instruction in GitHub Pages::Project Pages to create your project page. In short, create origin/gh-pages tree
and push it to GitHub. It takes for up to ten minutes if you create it first time, so prepare for the next step.
Example: github.com/mootoh/milpon
2. generate static contents with Ditz
generate files of releases and tasks statically by ditz html [output-dir]
. Then `checkout gh-pages && add output-dir && commit && push origin gh-pages“.
3. That’s it!
You’ve done! So easy, isn’t it?
Example:
ToDo
-
Automation : use cron to publish ditz stuff periodically
- web interface to interact tickets
Happy Ditz & GitHub hacking!
Ditz のチケットを GitHub Page に表示する
April 16th, 2009 | Published in Uncategorized
GitHub には Trac みたいな BTS がついてないので、外部の BTS をつかってバグ管理をすることになります。 Lighthouse なんかと連携してもおしゃれですが、ぼくの場合はオフラインで開発をしてることが多いので Ditz を愛用しています。そんな Ditz のチケットを、 GitHub サイトで表示させることができた ので、やり方をシェアしておきます。
やり方
Github には GitHub Pages という機能があります。これは、 GitHub に push した web コンテンツを GitHub のドメインで表示できるというもの。 そして、 Ditz には ditz html
で release や task の一覧を HTML で出力する機能があります。これらを組み合わせましょう。
1. GitHub page をつくる
GitHub Pages::Project Pages で書かれている方法にしたがって、プロジェクトのページをつくります。早く言えば、 origin/gh-pages tree
をつくって push するだけ。最初に push してから GitHub に反映されるまでは 10分くらいかかるので、次のステップを進めておきましょう。
例: github.com/mootoh/milpon
2. Ditz でコンテンツを静的生成する
ditz html [output-dir]
で、 release や task の一覧がまとめられたファイル群を生成します。できたら、 checkout gh-pages && add output-dir && commit && push origin gh-pages
で GitHub に反映。
3. That’s it!
もうできてしまっています。かんたんですね!
例:
ToDo
-
自動化 : 定期的に ditz html するようなしくみを作る (cron?)
- Ditz の HTML に、 issue 登録のしくみを入れる (どうやるんだろう)
Happy Ditz & GitHub hacking!
あわせて読みたい
-
Ditz on Ruby 1.9
-
Ditz on Ruby 1.9 つづき
ToddleDatabase
April 15th, 2009 | Published in Uncategorized
ToddleDatabase という SQLite3 のラッパーライブラリを github に置きました。 iPhone での SQLite3 をつかった開発を多少ラクにするためのものです。 Milpon の beta07 からつかっています。
例: SELECT
例として、 (id, name, tag_id) というフィールドからなる table から、指定した tag_id をもつ (id, name) をひっぱってくることを考えます。
ベタに SQLite3 の C API をつかうと以下のようなかんじ。
/*
* collect (id, name) pairs from 'list' table by tag_id.
* table 'list' consits of (id, name, tag_id)
*/
void select_list(sqlite3 *handle, int tag_id)
{
// construct query
sqlite3_stmt *stmt = nil;
const char *query = "SELECT id,name from list where tag_id=?";
if (sqlite3_prepare_v2(handle, query, -1, &stmt, NULL) != SQLITE_OK) {
handle_error([NSString stringWithFormat:
@"Error: failed to prepare statement with message '%s'.",
sqlite3_errmsg([db handle])]);
return;
}
sqlite3_bind_int(stmt, 1, tag_id);
// send query and collect results
while (sqlite3_step(stmt) == SQLITE_ROW) {
NSNumber *iD = [NSNumber numberWithInt:sqlite3_column_int(stmt, 0)];
NSString *name = [NSString stringWithUTF8String:(char *)sqlite3_column_text(stmt, 1)];
}
sqlite3_finalize(stmt);
}
これ1つだけならいいんですが、アプリ内にこれと同じようなコードブロックが散在するのが悩みのタネでした。共通化しようにも、query として渡す引数の数はいくつになるかわからないし、型も不定。query の実行結果についても同様で、うまくまとめられません。
ToddleDatabase をつかうと以下のようになります。
(NSArray *) select_list:(ToddleDB *) db withTag:(NSNumber *)tag_id
{
NSDictionary *where = [NSDictionary
dictionaryWithObject:[NSString stringWithFormat:@"id=%d", [tag_id intValue]]
forKey:@"WHERE"];
NSArray *keys = [NSArray arrayWithObjects:@"id", @"name", nil]; // fields of table
NSArray *types = [NSArray arrayWithObjects:[NSNumber class], [NSString class], nil]; // types of each fields
NSDictionary *query = [NSDictionary dictionaryWithObjects:types forKeys:keys]; // run SQL SELECT
return [toddleDB select:query from:@"list" option:where];
}
かんたんですね!
抽象化したことでどれくらいパフォーマンスに影響が出ているかは、まだ計っていません。どうだろうかな。
アプリケーションのプロトタイピングにはこういうラッパーを使ってじゃっかん抽象度の高いレイヤで試行錯誤し、リリースするにあたっては SQLite3 API を直叩きする、というのがベストプラクティスなのかな。
もっとよい抽象あるよ! とか高速化のヒントなどあれば、ぜひぜひ fork するなりコメントなりでお知らせください。
Git bundle
April 11th, 2009 | Published in Uncategorized
Git つかって開発しているのですが、事情があってネットワークでつながっていないホストにもリポジトリをもっていかないといけなくなりました。github みたいな HUB があれば話はかんたんで、 git clone/pull/push/merge/… すればよいだけなのですが、そうはいかない。
どうしようかなーと、git-format-patch && git-am でやるか! と冴えない方法で運用しようとしていたところ、ふと Twitter でつぶやいてみると Vim 神であるところの からお告げが。
-
what I wanted to do is passing packed objects between separated site (not connected via internet, so push/pull does not work). from web
-
— this quote was brought to you by quoteurl
git-bundle(1) DESCRIPTION:
Some workflows require that one or more branches of development on one machine be replicated on another machine, but the two machines cannot be directly connected, and therefore the interactive git protocols (git, ssh, rsync, http) cannot be used. This command provides support for git-fetch and git-pull to operate by packaging objects and references in an archive at the originating machine, then importing those into another repository using git-fetch and git-pull after moving the archive by some means (i.e., by sneakernet). As no direct connection between the repositories exists, the user must specify a basis for the bundle that is held by the destination repository: the bundle assumes that all objects in the basis are already in the destination repository.
これだ! zsh 補完で git オプションを探していたのですが、bundle は出てこなかったですね。++
まとめ
Twitter すごい。Thank you my 846 followers for supporting me a lot! I will help you in return.
あと、 Git は奥がふかいですねえ…
mixi アプリ オープンβ に参加できない件を問い合せてみた
April 11th, 2009 | Published in Uncategorized
mixi アプリ オープンβ に参加できない で書いた件の続き。 mixi から回答がきたのですが、ダメなかんじでした。ちょっと長いですが、以下に引用します。
お問い合わせの件ですが、デベロッパー登録時の携帯認証の際、mixi でご指定可能な携帯メールアドレスのドメインは下記の通りとなっております。
- docomo.ne.jp
- ezweb.ne.jp
- softbank.ne.jp
- (d/h/t/c/k/r/n/s/q).vodafone.ne.jp
- disney.ne.jp
- (wm./di./dj./dk.)pdx.ne.jp
- willcom.com
上記以外のドメインを有するメールアドレスの場合、現在 mixi では携帯用のアドレスとして認識されない仕様となっており、ご登録を完了していただくことはできかねます。恐れ入りますが、なにとぞご了承くださいますようお願いいたします。
また、こちらの仕様は現在 mixi モバイルをお使いいただける携帯電話端末に準じた仕様でございます。対応機種につきましては、下記の手順にてヘルプページよりご確認いただけますでしょうか。
■パソコンからのアクセスの場合 mixiトップ画面(http://mixi.jp) → 画面上部の「ヘルプ」 → 「mixiモバイル」 → 「Q.mixiモバイルの対応機種は? 」をクリック。
■携帯からのアクセスの場合 mixiモバイルトップ画面(http://m.mixi.jp) → 画面下部の「対応機種」 をクリック。
ご期待に添う回答が差し上げられず心苦しく存じますが、今回いただいたご連絡は、今後の改善課題として参考にさせていただきます。しかしながら、開発の都合上、ご要望にお応えいたしかねる場合もございますので、ご理解、ご了承のほど、よろしくお願い申し上げます。
なお、mixi では、法人様を対象としたパートナーアカウントを発行いたしております。パートナーアカウントをご利用の場合は、デベロッパー登録は不要となります。パートナーアカウントの詳細につきましては、下記のページをご参照いただけますでしょうか。
http://developer.mixi.co.jp/support/partner_account
※個人の方はデベロッパー登録が必要となりますので、恐れ入りますが、あらかじめご了承ください。
どうにも了承できないのですが、縁がなかったということなのでしょう。仕方ないですね。
とはいえ、mixi アプリは、 mixi サイト内で動くwebアプリを JS+Markup or Flash でつくるものなので、iPhone 開発者から見るとちょっと違うかな、というのはありますね。どちらかというと、まだ公開されていない mixi Connect の方にうまみがある。こちらが公開されるのを期待しながら待つとしましょう。
Tags: mixi, sns
mixi アプリ オープンβ に参加できない
April 9th, 2009 | Published in Uncategorized
mixi アプリ カンファレンス に参加できることになりました。それまでに1つくらいアプリつくっとくかなーと、 Developer 登録しようとしてたのですが、ケータイメアドが必須とか。 iPhone しか持ってないし、 i.softbank.ne.jp しかないよ。しかし選択肢には softbank.ne.jp しかありません。こまった。
ひとまず、 mixi の Q&A フォームから質問を投げておきました。公式コミュニティ のトピックを覗いてみても、似たような人がいますね。近いうちに解決されることを期待。
Tags: mixi, sns