2008年2月29日

リニューアル

meigens.com をリニューアルしました。
といっても内部的なリニューアルで、ユーザの皆様がご利用される機能についてはほとんど変更ありません。一点だけ、新規の会員登録でメールアドレスの認証が必要となりました。ご不便をおかけいたしますが、何卒ご理解とご協力をお願いいたします。

2008年2月28日

移植

meigens.com を自作のフレームワークに移植していましたが、ほぼ完了しました。
ついでにいくつか新機能を実装しています。
現在テスト中です。

なお、手元の記録によると、およそ60時間もかかっています!
(フレームワーク自体の改修含む)

まだまだPHPerとしては、ひよっこですね。

2008年1月15日

ブックマークレットを作成しました

更新履歴です。
  • 名言登録のためのブックマークレットを作成
  • ブログパーツの幅がIE6で期待した値にならないバグを修正
  • 画像、CSSのキャッシュを制御する仕組みを導入
  • 名言登録画面に名言の改行を削除するリンクを追加
ブックマークレットを作成しましたので、よろしければお使いください!

2008年1月3日

JSONPで時々エラーになる

meigens.com で提供しているAPIはJSONPに対応しています。
これを使いブログパーツを実装しているのですが、時々コールバック関数の呼び出しが失敗します。今のところ原因不明です。

ブログパーツのJSONPの処理は以下のようになっています。
  • meigens_jsonpを呼び出すと、JSONPでデータを取得しに行き、コールバックを呼びます。
  • meigens_jsonp_get_nameは現時刻とカウンタをもとに生成した名前でJSONPの結果を受け取る関数を定義します。
  • meigens_jsonp_loadは指定されたURLに接続します。

var meigens_counter = 1;
var meigens_scripts = {};
var meigens_charset = 'utf-8';

function meigens_jsonp(url, callback)
{
var funcname = meigens_jsonp_get_name(callback);
var replaced = url.replace(/{callback}/, funcname);
meigens_jsonp_load(replaced, funcname);
};

function meigens_jsonp_get_name(callback)
{
var name = 'meigens_jsonp_callback_' + (new Date).getTime() + '_' + meigens_counter;
meigens_counter++;
var cb = function(json)
{
eval('delete ' + name);
callback(json);
var head = document.getElementsByTagName('head').item(0);
head.removeChild(meigens_scripts[name]);
delete meigens_scripts[name];
};
eval(name + ' = cb');
return name;
};

function meigens_jsonp_load(url, name)
{
var script = document.createElement('script');
script.type = 'text/javascript';
script.charset = meigens_charset;
script.src = url;
var head = document.getElementsByTagName('head').item(0);
head.appendChild(script);
meigens_scripts[name] = script;
};
レスポンスを受信完了した時点でmeigens_jsonp_get_nameで定義した関数が呼び出されるはずですが、呼び出されないことがあります。Firebugで調べてみると関数が見つからないようです。定義しているはずなのに……。

2007年12月29日

meigens.comをGoogleガジェットで

Googleガジェットを作ってみました。



よろしければ、是非お使いください!

2007年12月19日

タスクの優先順位

狩野分析法(参照)で現在のタスクの優先度を考えてみました。

あったら
  1. うれしい
  2. いいかも
  3. 特には
  4. 別にそれでも
  5. 困る
なかったら
  1. うれしい
  2. いいかも
  3. 特には
  4. 別にそれでも
  5. 困る
再生のカウントダウンと操作ボタンが離れているので、関連がわかりにくいかも。右寄せします。
→あったらいいかも、なかったら特には
→どっちでも

お気に入りに追加機能
→あったらいいかも、なかったら別に
→どっちでも

Google ガジェットを作る
→あったら嬉しい、なかったら別に
→魅力的

名言登録時に、Firefoxのみ同じリクエストが2回来る対応
→あったらいいかも、なかったら特には
→どっちでも

選択したテキストを登録するブックマークレット
→あったらいいかも、なかったら別に
→どっちでも

AJAXでの次の名言のロードが失敗することがある。時間をおいてリトライとかするか?
→あったら嬉しい、なかったら困る
→必須

通報ボタン。よろしくないものが登録された場合のため
→あったらいいかも、なかったら別に
→どっちでも

タグの区切りをカンマにする
→あったらいいかも、なかったら別に
→どっちでも

というわけで、AJAXのロード失敗時のリトライが1位、Googleガジェットが2位ですね。
これに従って開発することにします。

2007年11月30日

今後の予定

今後の meigens.com の開発予定&アイディア。

  • 再生のカウントダウンと操作ボタンが離れているので、関連がわかりにくいかも。
    →右寄せします
  • お気に入りに追加機能
  • どこかとコラボしてみたいなあ
    →名言を提供しますよ!
  • Google ガジェットを作る
    →誰か作りませんか(笑)
  • 名言登録時に、Firefoxのみ同じリクエストが2回来る
    →重複チェックしているので多重登録にはなっていないが気になる
    →名言の重複チェック用にハッシュのカラムを追加しようかな
  • 選択したテキストを登録するブックマークレット
    →これは早めに作ります
  • AJAXでの次の名言のロードが失敗することがある
    →時間をおいてリトライとかするか?
  • 通報ボタン
    →よろしくないものが登録された場合のため
  • タグの区切りをカンマにする
    →どうしよう……? 検討中。
ご意見ありましたら是非お聞かせください。