Ajax を使った Microsoft Word ライクなワードプロセッサ ajaxWrite

  http://ajaxwrite.com/

  ajaxWrite

  Ajax を使った MS Word ライクなワープロアプリケーション.XUL ベース のため Firefox 1.5 (以上) 専用.
  いわゆるワープロなんだけど,面白いのは,ファイルを保存できて,それは MS Word で開くことができる.
  逆に,MS Word で作ったファイルも読み込むこともできる.

  読み込みに対応しているのは,MS Word,MS Works,Word Perfect,OpenOffice,StarOffice などの形式.
  また,サポートしている機能は,埋め込みの画像,テーブル,脚注などいろいろある.

- via: Ajaxian
  http://ajaxian.com/archives/ajaxwrite-a-microsoft-word-lookalike-online-ed ...

Write Great Code〈Vol.1〉ハードウェアを知り、ソフトウェアを書く

  4839918201
  amazon.co.jp 詳細ページへ
  Randall Hyde (著), 鵜飼 文敏 (翻訳), まつもと ゆきひろ (翻訳), 後藤 正徳 (翻訳), トップスタジオ (翻訳)
  毎日コミュニケーションズ
  ISBN: 4839918201
  2005/12
  5,040 円

PHP 用 YAML パーサ spyc の結果をキャッシュする方法

<?php
class CacheYAML
{
    var $cache_dir;
    var $filename;
    var $cache_filename;

    function CacheYAML($cache_dir, $filename)
    {
        $this->cache_dir = $cache_dir;
        $this->filename = $filename;
        $this->cache_filename = $cache_dir . DIRECTORY_SEPARATOR . md5($filename);
    }

    function getData()
    {
        return $this->isCached() ? $this->load() : $this->store();
    }

    function isCached()
    {
        clearstatcache();
        return file_exists($this->cache_filename) && (filemtime($this->filename) <= filemtime($this->cache_filename));
    }

    function load()
    {
        return unserialize(file_get_contents($this->cache_filename));
    }

    function store()
    {
        $data = Spyc::YAMLLoad($this->filename);
        $f = fopen($this->cache_filename, 'wb');
        fwrite($f, serialize($data));
        fclose($f);
        return $data;
    }
}
?>


- 使い方

// 使用前
$config = Spyc::YAMLLoad($file);

// 使用後
$yaml = new CacheYAML('path/to/cache_dir', $file);
$config = $yaml->getData();


  元ネタの記事では,parse_ini_file() をキャッシュしていたので,いつも遅いと感じていた spyc の結果をキャッシュするようにしてみた.
  体感できるくらい速くなりました.

  PHP 5.x を使っている場合は,fopen ... fclose の部分を file_put_contents() で置き換えることができます.

  # ところで YAML ってなんて読むんだろう?わいえーえむえる?やむる?

- file_put_contents
  http://php.net/file_put_contents

- ref.: Sooey - CachedIni class
  http://www.sooey.com/journal/2006/03/15/100/

Firefox のブックマークのアイコンを好きなアイコンに変更する拡張機能 Favicon Picker

  http://forums.mozillazine.org/viewtopic.php?t=321562

  Favicon Picker

  コメント欄で教えてもらいました.ありがとうございます.

  使い方は,拡張をインストールして,ブックマークのプロパティを開くと,上記のような画面が出てきます.
  Icon が追加されていますので,[Browse...] で好きな画像を登録することができます.
  選択した画像は,16x16 に拡大縮小されるみたいです.

  これを手動でする方法として,

- Firefox ブックマークに動く Favicon を
  http://www.kuribo.info/2006/02/firefox-favicon.html

  という記事も教えてもらいました.

  とにかく,[2006-03-14-1] の記事のように面倒な手順が要りません!


- 追記
  Firefox 2.0 に対応したバージョン
  https://addons.mozilla.org/firefox/3176

風が吹いたら桶屋がもうかる

  4087472213
  amazon.co.jp 詳細ページへ
  井上 夢人 (著)
  集英社
  ISBN: 4087472213
  2000/07
  560 円

陰日向に咲く

  4344011023
  amazon.co.jp 詳細ページへ
  劇団ひとり (著)
  幻冬舎
  ISBN: 4344011023
  2006/01
  1,470 円

Life Hacks PRESS デジタル世代の「カイゼン」術

  4774127280
  amazon.co.jp 詳細ページへ
  田口 元 (著), 安藤 幸央 (著), 平林 純 (著), 角 征典 (著), 和田 卓人 (著), 金子 順 (著), 角谷 信太郎 (著)
  技術評論社
  ISBN: 4774127280
  2006/03/23
  1,596 円

フリーランスを代表して 申告と節税について教わってきました。

  4534040016
  amazon.co.jp 詳細ページへ
  きたみ りゅうじ (著)
  日本実業出版社
  ISBN: 4534040016
  2005/12/08
  1,470 円

国家の品格

  4106101416
  amazon.co.jp 詳細ページへ
  藤原 正彦 (著)
  新潮社
  ISBN: 4106101416
  2005/11
  714 円

target="_blank" を使わないで新しいウィンドウでリンクを開く方法

<a href="foo.html" target="_blank">foo</a>


  を使えば新しいウィンドウでリンクが開きますが,これは XHTML 1.1 や XHTML Basic では採用されていません.
  ではどうするかというと,スクリプトを使うわけですが,

<a href="javascript:void(0)" onclick="window.open('foo.html');">foo</a>


  こうすると,一見解決したようですが,JavaScript が off の場合はリンク先に飛べません.
  しかも,ステータスバーにリンク先が出ないので不安になります.これを

<a href="foo.html" onclick="window.open('foo.html'); return false;">foo</a>


  とすれば,ステータスバーにリンク先が表示されるし,JavaScript が off でもリンク先に飛ぶことができます.

  ここまでは,AllAbout の受け売りなんですが,いちいちリンク先全部に onclick をつけるのは面倒です.
  しかも,onclick だけではなく onkeypress もつける必要があります.

  これを解決するのが以下のスクリプト.prototype.js 必須.

var PopupWindow = Class.create();
PopupWindow.prototype = {
    initialize: function(className, parentElement) {
        var elements = document.getElementsByClassName(className, parentElement);
        for (var i = 0, len = elements.length; i < len; i++) {
            Event.observe(elements[i], 'click', this.addPopupEvent.bindAsEventListener(this));
            Event.observe(elements[i], 'keypress', this.addPopupEvent.bindAsEventListener(this));
        }
    },
    addPopupEvent: function(event) {
        var element = Event.element(event);
        var link = element.getAttribute('href');
        window.open(link);
        Event.stop(event);
    }
};


  まず,getElementsByClassName() で指定した class を持つ要素を列挙します.それぞれの要素に対して
  click イベントと keypress イベントをバインドしています.

  イベントが発生すると,発生した要素の href 属性を取得して window.open() に渡してあげます.
  本来のイベントは止める必要があるので,Event.stop() しています.

使い方

Event.observe(window, 'load', function () {
    new PopupWindow('popup');
});

<a class="popup" href="foo.html">foo</a>


  この場合は class に popup を指定した a タグが全て別ウィンドウで開きます.class 名は自由に設定できますし,
  親エレメントを指定したければ,prototype.js の document.getElementsByClassName() に引数を渡しているだけなので

Event.observe(window, 'load', function () {
    new PopupWindow('popup', 'p');
});


  のように指定することも可能です.

  以上で,JavaScript が off の場合も同じウィンドウですがリンク先は開けますし,on の場合は別ウィンドウで開くことができます.
  また,いちいち onclick や onkeypress を html 内に記述する必要もありませんので,お手軽に利用することができます.
  そして,ステータスバーにリンク先が表示されるので利用者に不安を与えません.

- ref.: スクリプト OFF でもちゃんと閲覧できるように サブウインドウを開く弊害と対策
  http://allabout.co.jp/computer/hpcreate/closeup/CU20040118A/

注意

  本記事は,別ウィンドウで開くことを推奨しているわけではありません.別ウィンドウで開くことの是非とはまた別のお話です.
  XHTML 1.1 に準拠しながらも,別ウィンドウで開かざるを得ない状況と考えてください.

- ユニバーサルHTML/XHTML
  4839904545
  amazon.co.jp 詳細ページへ
  神崎 正英 (著)
  毎日コミュニケーションズ
  ISBN: 4839904545
  2000/11
  2,310 円

- 詳解 HTML & XHTML & CSS 辞典
  4798010030
  amazon.co.jp 詳細ページへ
  大藤 幹 (著)
  秀和システム
  ISBN: 4798010030
  2005/01
  1,890 円

プロが教える Movable Type の構造デザイン

  http://w3j.org/articles/MTstructuraldesign/

  iNTERNET magazine 2003年11月号の記事を PDF で公開.12 ページ.

  内容も細かそうなので,印刷してみてみよう.

- via: /home/pochi/ChangeLog
  http://www.pochi.cc/~sasaki/chalow/2006-03-14-2.html

- ref.: iNTERNET magazine 2003年11月号
  http://internet.impress.co.jp/im/bn/200311.htm

有名クリエイターがこっそり教えるFlash作成のウラ技

  4756147178
  amazon.co.jp 詳細ページへ
  Flashクリエイター26名 (著)
  アスキー
  ISBN: 4756147178
  2006/03
  2,730 円

自サイトへのリンクをハイライトする Greasemonkey スクリプト

  以前,自サイトへのリンクをハイライトする Bookmarklet というのを作ったが,これの Greasemonkey ユーザスクリプト版.
  リファラを見て,リンク先に見に行ったはいいけど,どこに張られているのか分からない人向け.

  自サイトへのリンクをハイライトする Greasemonkey スクリプト

  ソースは以下のようになっているので @exclude のところと,変数 uri のところを書き換えてください.

// ==UserScript==
// @name           Highlight your link
// @namespace      http://cl.pocari.org
// @description    Link to your site is highlighted.
// @include        http://*
// @exclude        http://*pocari.org*
//                 ^ your domain
// ==/UserScript==

(function () {
    var uri = 'pocari.org'; // your domain
    var link;
    for (var i = 0; link = document.links[i]; i++) {
        if (link.href.indexOf(uri) >= 0) {
            link.style.backgroundColor = 'yellow';
        }
    }
})();


  Greasemonky ユーザスクリプトを作るときの注意点は,ファイル名は,foo.user.js のように,user.js をつけなければいけないこと.
  これを知らずに,はじめ困った.


- ref.: mozdev.org - greasemonkey: authoring
  http://greasemonkey.mozdev.org/authoring.html

- ref.: Dive Into Greasemonkey
  http://diveintogreasemonkey.org/toc/

Firefox のブックマークのアイコンを好きなアイコンに変更する方法

  Firefox はブックマークのアイコンに favicon.ico を自動で表示してくれるので便利ですが,これを好きなアイコンに変える方法.
  変更しないと,なにが困るかと言うと,例えば,はてなわんわんワールドをブックマークしてブックマークツールバーフォルダに表示した場合
  はてらぼの favicon.ico が登録されてしまいます.

  「はてわん」はやっぱり「しなもん」だろうということで,こういうときに変更すると便利です.

  まず,しなもんの画像をはてわんから持ってきます.gif アニメーション形式なので適当に一つ切り出します.
  これをアイコンエディタなどでアイコンとして書き出します.

  次に,このファイルを base64 でエンコードしてあげます.例えば,Perl だと以下のようのワンライナーで書けます.

perl -MMIME::Base64 -0777 -ne 'print encode_base64($_, "")' < cinnamon.ico

  実行すると,次のようにbase64 でエンコードされた文字列が出てきます (表示のために 76 バイトで改行を入れていますが,実際は一行です).

AAABAAEAEBAAAAEACABoBQAAFgAAACgAAAAQAAAAIAAAAAEACAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAxMT/AACgoAD+AP4Ab6/vAH+//wCPyf8AH1ePAABFSAAAP20AUFBQAGBgYABwcHAA
/v7+AICAgAD///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACggIAAAAAAAAAAAAAAAMCwkNBQgAAAAAAAAAAAAACwYL
CAUICgAAAAAAAAAAAAAACA0NDQYKAAAKCAAAAAEADQ0NBQUNBgoKDQUIAAAADQ0FBQUEBQQNCQkF
CAAODQ0FBQUEBwQFBA0EBQgAAA0FAAUEBAkEAgUEBQQJAAAFDQUFAggEAgQCBAIFBAACAAUICA0I
CQgCBAIEAgUAAg0IAAIFCAAACQgEAgUIAAIFCAACCAAAAAAACQgIAAACCAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//AAD4/wAA4H8AAOA/AADAGQAAgAAAAAAA
AAAAAAAAgAAAAIAAAACAAAAAiMAAAInxAACf/wAA//8AAP//AAA=

  そして,Firefox のプロファイルディレクトリにある bookmarks.html を見つけて開きます.
  該当するブックマークの個所を見つけて,

ICON="data:image/x-icon;base64,AAABA.../AAA="

  と上記の文字列を記入すれば OK です.Firefox を起動すると無事アイコンがしなもんになっていると思います.

  # この作業は Firefox を終了してから操作してください.

  しなもん

  とまあ,ここまでは,ネタ振りで本題はここから.

  ブックマークツールバーフォルダに Bookmarklet を置いている人は多いと思いますが,
  例えば,アイコンだけを表示したい場合は Bookmarlet だとディフォルトのアイコンになって区別がつきません.

  そこで,上記の方法を使えば,Bookmarklet だろうがアイコンを好きなものにつけることができます.

  たとえば,はてなブックマークに登録の [B!] もはてぶのページから [B!] の画像を持ってきて,アイコンに変更してしまえばいいわけです.
  アイコンに変更したら

perl -MMIME::Base64 -0777 -ne 'print encode_base64($_, "")' < append.ico

  [B!] のアイコンは以下のようにエンコードされます (表示のために 76 バイトで改行を入れていますが,実際は一行です).

AAABAAEAEBAAAAEABAAoAQAAFgAAACgAAAAQAAAAIAAAAAEABAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAD/AAAA/wD/AP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAMzMzMzMzMzMzMzMzMzMzMzAAAAAAAAADAiIiIiIiIiACIAAAAiACIAIgAiIA
IAIgAiACIgAiIiACIAIiACACIAIgAAACIAIgAiACIAIgAiACIAIgAiACIAIgAAAiIAIgAiIiIiIi
IiAwAAAAAAAAAzMzMzMzMzMzMzMzMzMzMzP//wAA//8AAIABAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAgAEAAP//AAD//wAA

  これも先ほどの手順で (Firefox を終了した状態で) bookmark.html に

ICON="data:image/x-icon;base64,AAABA...//wAA"

  と追加してしまえば,以下のように見やすくなります.

  しなもん

  これで,よく使う Bookmarklet もアイコンで見分けがつくようになります.

  あと,上記手順ではアイコン形式でやりましたが,image/x-icon を image/png にして png でやってあげてもうまくいきそうな予感がしますが,未確認です.

Google Maps からはてなわんわんワールドへジャンプする Bookmarklet その 2

はてなわんわんワールドへジャンプ

javascript:(function(){var q=location.search.substring(1).split('&'), h=new Array(); for (var i=0,l=q.length;i<l;i++) {var s=q[i].split('=');h[s[0]]=s[1];} ll=h['ll'].split(','); location.href='http://world.hatelabo.jp/?x='+ll[1]+'&y='+ll[0];})()


  Google Maps からはてなワンワンワールドへジャンプする Bookmarklet ([2006-03-03-2])
  が上手く動かない場合があったので修正.やっぱり強引過ぎたのが敗因.

  ちゃんとクエリを分解するようにした.prototype.js の toQueryParamas() 相当の処理をした.

  これで,http://maps.google.com/ で検索した結果からでも,わんわんワールドに飛べるようになった.
  動作確認したのは,Firefox 1.5.0.1,IE 6.0,Opera 8.52,Netscape 7.1.

外国為替相場一覧表 - 三菱東京 UFJ 銀行

  http://www.bk.mufg.jp/gdocs/kinri/list_j/kinri/kawase.html

  外貨 -> 日本円の場合
  ・現金取引の場合は,CASH B. が適用されて,全くの損.
  ・外貨の送金やトラベラーズチェックの場合は,T.T.B. が適用されてお得.
  ・トラベラーズチェックの場合は,A/S が適用されることもある.

Google Maps からはてなワンワンワールドへジャンプする Bookmarklet

はてなワンワンワールドへジャンプ

javascript:(function(){var l=location.search.substring(1).split('&')[0].split('=')[1].split(','); location.href='http://world.hatelabo.jp/?x='+l[1]+'&y='+l[0];})()


  Google Maps の面白そうな所のまとめページはいくつかあるけど,はてなワンワンワールドの面白そうな所のはまだない.
  そこで,Google Maps のページからはてなワンワンワールドのページにジャンプする Bookmarklet を作ってみた.

  かなり強引だけど,Forefox 1.5.0.1,IE 6.0 ではうまくいったみたい.
  これを利用していくつか面白そうなところ.

- 東京ディズニーランド
  http://world.hatelabo.jp/?x=139.88125562667847&y=35.63292746893609

- エジプトのピラミッド
  http://world.hatelabo.jp/?x=31.13521099090576&y=29.97746467819857

- モンサンミッシェル
  http://world.hatelabo.jp/?x=-1.5113496780395507&y=48.63611338244453

- パリの凱旋門
  http://world.hatelabo.jp/?x=2.294790744781494&y=48.873832671833476

  以下,Google Maps のまとめなどのページ

- ref.: Google Maps Satellite Links in Japan (Google ローカル日本国内リンク集)
  http://homepage3.nifty.com/hitopon/google_maps.html

- ref.: GoogleEarth 観光案内
  http://www7a.biglobe.ne.jp/~diagraph/column/googleearth/index.html

  http://kazz7.air-nifty.com/tekito/2005/09/google_earth_x.html

- ref.: Google マップ再び!
  http://d.hatena.ne.jp/hagex/20050714#p3

はてなワンワンワールド初体験

  http://world.hatelabo.jp

  なにやら,一部の方面でうけているらしい,はてなワンワンワールドを体験してみた.
  確かになんだか分からないけど面白い.
  初めてログインして何をしていいか分からなかったら,chalow のたつをさんがいて (アイコンで分かった),

もしボクのフキダシの枠が水色だったらクリックしてともだちにして欲しいワン。そうするとキミの言葉が読めるワン。
まずはここ見るといいワン。http://nais.to/163 充実のヘルプだワン!

  などと教えてくれたので,ようやく分かった.

  つまり,相手のアイコンをクリックすると「ともだち」のリクエストができて,その人には自分のメッセージが見える.
  逆に,相手から自分のアイコンをクリックされると「ともだち」へのリクエストがされて (「ともだちられ」る),その人のメッセージが見える.
  お互いがクリックすると晴れてともだち同士になると.

  これははまりそうで怖い.

- はてなワンワンワールド
  http://b.hatena.ne.jp/entry/http://world.hatelabo.jp/

- [を] はてなワンワンワールドはオンラインゲーム人気に火をつけるか
  http://nais.to/~yto/clog/2006-03-03-1.html

誰のためのデザイン?―認知科学者のデザイン原論新曜社認知科学選書

  478850362X
  amazon.co.jp 詳細ページへ
  ドナルド・A. ノーマン (著), 野島 久雄 (翻訳), D.A. ノーマン
  新曜社
  ISBN: 478850362X
  1990/02
  3,465 円

世紀の誤審 オリンピックからW杯まで

  4334032591
  amazon.co.jp 詳細ページへ
  生島 淳 (著)
  光文社
  ISBN: 4334032591
  2004/07/16
  735 円

RailsによるアジャイルWebアプリケーション開発

  4274066401
  amazon.co.jp 詳細ページへ
  前田 修吾 (翻訳)
  オーム社
  ISBN: 4274066401
  2006/02/25
  3,990 円

99.9% は仮説 思いこみで判断しないための考え方

  4334033415
  amazon.co.jp 詳細ページへ
  竹内 薫 (著)
  光文社
  ISBN: 4334033415
  2006/02/16
  735 円