kiyoka日記。OldType、Sumibi.org、日々の出来事など。
最新10件!kiyoka.blog   過去記事一覧!kiyoka.blog.list
[img]  
 このブログを書いている人: 西山 清香(kiyoka)   [img]   - twitter: @kiyoka
                           (似顔絵イラストメーカーで作りました)
----
 
 
* kiyoka.2008_04_27[ネコ][本] まこという名の不思議顔の猫
ネコ好きならみんな知ってる『まこ』ちゃんの写真集。
[Amazon 4123901638] まこという名の不思議顔の猫 : 前田 敬子,岡 優太郎
ペルシャ猫と日本猫の雑種だそうだ。
今日、まるごと猫フェスティバル2008 併催:まこの不思議顔大写真展に行ってきた。
そこで、この写真集に収録されている写真を、特大パネルで見ることができた。
可愛すぎるぞ。(まこという名の不思議顔の猫というサイトでも、いっぱい写真がみれる)
なんかうちの『ささみ』に似ているので親近感がわいた。
[img]  うちのペルシャ猫『ささみ』。まこにちょっと似てる?
 
ついでに、日本中の猫写真集が全て置いてあるんじゃないかというコーナーがあって、衝動買いしてしまった。
この『めめ』という子も殺人的な可愛さだ。
[Amazon 4812433266] [Amazon 433151305X]
 
めめのブログなどはこちら。めめぼん
----
 
 
* kiyoka.2008_04_23[Emacs] anything.el is everything!
今更ながら、anything.el を使いはじめた。
すごいすごいとはいろんなブログで読んでいたけど、これは本当にすごいわ。
いままでバッファを切りかえる際、バッファ一覧を C-xC-b で出して C-xC-o してバッファ一覧からインクリメンタル検索していたのが、
C-; してインクリメンタルするだけになった。
これは、Emacsの標準機能になるのも時間の問題だと思う。
rubikitchさんところの2007-07-25 - ’(rubikitch wanna be (a . lisper))が参考になる。
ちなみに、私の設定はこんな感じ。これでどんな状態からでも C-;でanythingが起動するぞ。
(iswitchb-mode 1)

(require 'anything-config)
(setq anything-sources (list anything-c-source-buffers
                             anything-c-source-bookmarks
;;                             anything-c-source-recentf
                             anything-c-source-file-name-history
                             anything-c-source-locate))
(define-key anything-map (kbd "C-p") 'anything-previous-line)
(define-key anything-map (kbd "C-n") 'anything-next-line)
(define-key anything-map (kbd "C-v") 'anything-next-source)
(define-key anything-map (kbd "M-v") 'anything-previous-source)
(global-set-key (kbd "C-;") 'anything)
(anything-iswitchb-setup)
この設定を動かすには、EmacsWiki: anything.elとEmacsWiki: anything-config.elの両方のインストールが必要。
Emacs使っている人はぜひ anything.el を使おう。
----
 
 
* kiyoka.2008_04_22[本] おもてなしの経営学 アップルがソニーを超えた理由: 中島 聡
[Amazon 4756151345]  おもてなしの経営学 アップルがソニーを超えた理由: 中島 聡
WindowsとInternet Explorerの設計者の中島 聡の本だ。ブログはLife is beautifulが有名だ。
かなりの部分、ブログからの記事と対談が占めるが、全体として一貫して『おもてなし』の重要性についての話が綴られている。
中島さんのブログにUser Experienceに対する日本語が思い浮かばないと書いたところ、次のようなコメントが入ったそうだ。
 User Experienceは『おもてなし』だと思っています。
なるほど、いい訳語だと思う。
私も、この本の『おもてなし』がこれからの時代に成功するプロダクトの要になるという意見には、賛成。
でも簡単に真似できないのが、この『おもてなし』であることも確か。
YouTubeにも関連動画がある。こちらも面白い。
[YouTube la_YmTMhAs4]   YouTube - 3.11 中島聡×海部美知トークイベント02:『おもてなしの経営学』執筆について
----
 
 
* kiyoka.2008_04_21[OldType] ツールチップを表示する(2)
CoolTips — Neat tooltips under the mouseを使ってツールチップ表示を実現した。
半透明のツールチップが出るのが、それっぽい。
行ごとのコミッターもアイコン表示されるようになったよ。
[img] 
これにて、OldType 0.2.1をリリース。
----
 
 
* kiyoka.2008_04_20[OldType] ツールチップを表示する(1)
CoolTips — Neat tooltips under the mouseを使ってツールチップを表示しようと画策中。
使い方が簡単なのと、OldTypeで使っているPrototype.jsとscript.aculo.usをベースにしているので選定した。
また、それら二つのソフトウェアとのライセンスの相性もいい。(ちなみに、ライセンスはPrototype.jsらと同じ)
ありとあらゆる場所をツールチップにしようとしているが、皆こういうライブラリを使って楽をしてたんだな。
----
 
 
* kiyoka.2008_04_19[本] My Job Went To India オフショア時代のソフトウェア開発者サバイバルガイド
[Amazon 4274066592]  My Job Went To India オフショア時代のソフトウェア開発者サバイバルガイド
タイトルからすると、もっと危機感を煽る本だと思ったが、そんな事はない。
現実的なアドバイスが書かれた、いい本だった。
でも、ベンチャー気質の人にはちょっと物足りないだろうと思う。
梅田望夫のように『これから、ベンチャーや個人の力が強くなる』というような未来の話ではなく、現在の多数の人に当てはまる内容になっている。
なので、それなりに大きな組織でプログラマとして働いている人は向いているだろう。
読んだ後のインパクトは強くないが、まあ納得感はある。
でもなぁー、やっぱり何か物足りない。
変化はそんなになだらかなではない気がする。
未来はもっと激しく変化するんじゃないかと思っているので、それに答え切れてない。
これを手始めにもっと他の本も読んでみよう。
----
 
 
* kiyoka.2008_04_17[Sumibi] ここ二ヶ月のAdsenseの収入が多い
多いと言っても固定IP代 x 2倍程度だが、いままで運用経費とトントンだったのに比べると大幅な進歩だと言える。
さて、何時まで続くやら...
----
 
 
* kiyoka.2008_04_16[オープンソース] Gaucheのsvnバインディング:調査編2
kiyoka.2008_04_15の話に続き、Pythonのbindingを調査してみた。
pysvn: Downloadsからダウンロードできる。中身を見てbindingを真面目に作るのは大変そうなことが分かった。
メソッド数が半端じゃない。
以下、psvn_client.cppのクラス定義部分の引用。

void pysvn_client::init_type()
{
    behaviors().name("Client");
    behaviors().doc( pysvn_client_doc );
    behaviors().supportGetattr();
    behaviors().supportSetattr();

    add_keyword_method("add", &pysvn_client::cmd_add, pysvn_client_add_doc );
    add_keyword_method("annotate", &pysvn_client::cmd_annotate, pysvn_client_annotate_doc );
    add_keyword_method("cat", &pysvn_client::cmd_cat, pysvn_client_cat_doc );
    add_keyword_method("checkin", &pysvn_client::cmd_checkin, pysvn_client_checkin_doc );
    add_keyword_method("checkout", &pysvn_client::cmd_checkout, pysvn_client_checkout_doc );
    add_keyword_method("cleanup", &pysvn_client::cmd_cleanup, pysvn_client_cleanup_doc );
    add_keyword_method("copy", &pysvn_client::cmd_copy, pysvn_client_copy_doc );
    add_keyword_method("diff", &pysvn_client::cmd_diff, pysvn_client_diff_doc );
#ifdef PYSVN_HAS_CLIENT_DIFF_PEG
    add_keyword_method("diff_peg", &pysvn_client::cmd_diff_peg, pysvn_client_diff_peg_doc );
#endif
#if defined( PYSVN_HAS_CLIENT_DIFF_SUMMARIZE )
    add_keyword_method("diff_summarize", &pysvn_client::cmd_diff_summarize, pysvn_client_diff_summarize_doc );
    add_keyword_method("diff_summarize_peg", &pysvn_client::cmd_diff_summarize_peg, pysvn_client_diff_summarize_peg_doc );
#endif
    add_keyword_method("export", &pysvn_client::cmd_export, pysvn_client_export_doc );
#if defined( PYSVN_HAS_WC_ADM_DIR )
    add_keyword_method("get_adm_dir", &pysvn_client::get_adm_dir, pysvn_client_get_adm_dir_doc );
#endif
    add_keyword_method("get_auth_cache", &pysvn_client::get_auth_cache, pysvn_client_get_auth_cache_doc );
    add_keyword_method("get_auto_props", &pysvn_client::get_auto_props, pysvn_client_get_auto_props_doc );
    add_keyword_method("get_default_password", &pysvn_client::get_default_password, pysvn_client_get_default_password_doc );
    add_keyword_method("get_default_username", &pysvn_client::get_default_username, pysvn_client_get_default_username_doc );
    add_keyword_method("get_interactive", &pysvn_client::get_interactive, pysvn_client_get_interactive_doc );
    add_keyword_method("get_store_passwords", &pysvn_client::get_store_passwords, pysvn_client_get_store_passwords_doc );
    add_keyword_method("import_", &pysvn_client::cmd_import, pysvn_client_import__doc );
    add_keyword_method("info", &pysvn_client::cmd_info, pysvn_client_info_doc );

#ifdef PYSVN_HAS_CLIENT_INFO
    add_keyword_method("info2", &pysvn_client::cmd_info2, pysvn_client_info2_doc );
#endif
#if defined( PYSVN_HAS_WC_ADM_DIR )
    add_keyword_method("is_adm_dir", &pysvn_client::is_adm_dir, pysvn_client_is_adm_dir_doc );
#endif
    add_keyword_method("is_url", &pysvn_client::is_url, pysvn_client_is_url_doc );
#ifdef PYSVN_HAS_CLIENT_LOCK
    add_keyword_method("lock", &pysvn_client::cmd_lock, pysvn_client_lock_doc );
#endif
    add_keyword_method("log", &pysvn_client::cmd_log, pysvn_client_log_doc );
#if defined( PYSVN_HAS_CLIENT_LIST )
    add_keyword_method("list", &pysvn_client::cmd_list, pysvn_client_list_doc );
#endif
    add_keyword_method("ls", &pysvn_client::cmd_ls, pysvn_client_ls_doc );
    add_keyword_method("merge", &pysvn_client::cmd_merge, pysvn_client_merge_doc );
    add_keyword_method("mkdir", &pysvn_client::cmd_mkdir, pysvn_client_mkdir_doc );
    add_keyword_method("move", &pysvn_client::cmd_move, pysvn_client_move_doc );
    add_keyword_method("propdel", &pysvn_client::cmd_propdel, pysvn_client_propdel_doc );
    add_keyword_method("propget", &pysvn_client::cmd_propget, pysvn_client_propget_doc );
    add_keyword_method("proplist", &pysvn_client::cmd_proplist, pysvn_client_proplist_doc );
    add_keyword_method("propset", &pysvn_client::cmd_propset, pysvn_client_propset_doc );
    add_keyword_method("relocate", &pysvn_client::cmd_relocate, pysvn_client_relocate_doc );
    add_keyword_method("remove", &pysvn_client::cmd_remove, pysvn_client_remove_doc );
    add_keyword_method("resolved", &pysvn_client::cmd_resolved, pysvn_client_resolved_doc );
    add_keyword_method("revert", &pysvn_client::cmd_revert, pysvn_client_revert_doc );
    add_keyword_method("revpropdel", &pysvn_client::cmd_revpropdel, pysvn_client_revpropdel_doc );
    add_keyword_method("revpropget", &pysvn_client::cmd_revpropget, pysvn_client_revpropget_doc );
    add_keyword_method("revproplist", &pysvn_client::cmd_revproplist, pysvn_client_revproplist_doc );
    add_keyword_method("revpropset", &pysvn_client::cmd_revpropset, pysvn_client_revpropset_doc );
#if defined( PYSVN_HAS_WC_ADM_DIR )
    add_keyword_method("set_adm_dir", &pysvn_client::set_adm_dir, pysvn_client_set_adm_dir_doc );
#endif
    add_keyword_method("set_auth_cache", &pysvn_client::set_auth_cache, pysvn_client_set_auth_cache_doc );
    add_keyword_method("set_auto_props", &pysvn_client::set_auto_props, pysvn_client_set_auto_props_doc );
    add_keyword_method("set_default_password", &pysvn_client::set_default_password, pysvn_client_set_default_password_doc );
    add_keyword_method("set_default_username", &pysvn_client::set_default_username, pysvn_client_set_default_username_doc );
    add_keyword_method("set_interactive", &pysvn_client::set_interactive, pysvn_client_set_interactive_doc );
    add_keyword_method("set_store_passwords", &pysvn_client::set_store_passwords, pysvn_client_set_store_passwords_doc );
    add_keyword_method("status", &pysvn_client::cmd_status, pysvn_client_status_doc );
    add_keyword_method("switch", &pysvn_client::cmd_switch, pysvn_client_switch_doc );
#ifdef PYSVN_HAS_CLIENT_LOCK
    add_keyword_method("unlock", &pysvn_client::cmd_unlock, pysvn_client_unlock_doc );
#endif
    add_keyword_method("update", &pysvn_client::cmd_update, pysvn_client_update_doc );
}

これだけでも結構気が遠くなる。
まずは、svnコマンドを使ってKahuaからsubversionアクセスするようにしてみて
限界を感じたら必要なメソッドだけを実装する方針でいこう。
----
 
 
* kiyoka.2008_04_15[オープンソース] Gaucheのsvnバインディング:調査編1
[Amazon 0596510330]  Version Control With Subversion: Ben Collins-Sussman,Brian W. Fitzpatrick: 洋書
をO'Reilly - Safari Books Onlineで読みながら、svnのバインディングの書きかたを調査中。
このブログにコメントを付けたいというのが、一番の動機。
本当は、svnコマンドをGaucheから子プロセスで起動すれば良いのだけど、
この本には、バインディングを書かないとちゃんとしたエラー処理はやりにくいよ、と書いてあったので
真に受けて調査してみている。
世間には、既にPythonとRubyのバインディングが存在するようだが、それにとらわれず、
Gaucheらしいバインディングが作れれば良いのだけど。
手始めに、もっと簡単なバインディングを書いて練習してみようかな。
----
 
 
* kiyoka.2008_04_14[オープンソース] Firefox 3 Beta 5にした
とりあえず気づいた点
# ページをレイアウトする速度が速い
# ページ全体のズームがサポートされた
以下Mozilla Japan - Firefox 3 Beta 5 リリースノートからの引用
 - ページ全体のズーム:
  [表示] メニューとキーボードショートカットから、新しいズーム機能によっ
  てページ全体をズームイン・ズームアウトして、レイアウトテキストおよび
  画像、またはオプションで文字サイズのみを拡大・縮小することができます。
  ここでの設定はサイトごとに記憶され、再びそのサイトを訪れると復元され
  ます。
OldTypeでこの機能をJavaScriptを使って実装しようと思っていたが、やっぱりやめた。
ブラウザでサポートされるんだったらもういいや。
----
 
 
* kiyoka.2008_04_08[プログラミング][言語][アイデア] RESTベースの関数型言語ライブラリ
[Amazon 4873111609]  Tomcatハンドブック
をKahuaと見比べながら読んだり、ricollab Web Tech Blog >> REST 入門(1 Web アプリケーションのアーキテクチャ)を読んだりした。
そうすると、なぜか頭の中で変な風に配線が繋がった。関数型言語でいうところの関数なら、1関数=1URLで表現できるんじゃないか。
RESTの基本はステートレスサーバ、つまりクライアントの状態をサーバーが管理せず、サーバが計算するために必要な全ての情報を毎回クライアントからもらう。
これって、関数型言語のimmutableな関数の考えかたじゃないか。
REST APIを数珠つなぎにすれば関数型プログラミングもできる。
# RESTでSchemeの関数を実装した例
例えば、S式のリストをソートする関数は次のURLで実行できるとすれば、
http://func.example.com/lib/sort
次のようなコードが書けると面白いのでは?
(use-rest-function "http://func.example.com/lib")
(sort '(1 5 2 4 7 6 8 9 3))
結果
(1 2 3 4 5 6 7 8 9)
RESTにしてうれしい物としては、英語の辞書とか、大きなデータベースを必要とするため
ローカルに置いておくよりも、皆で共有したほうが良いものとかかな。
他にも、画像処理などの重たい処理を簡単に分散処理・並列処理を実現する手段としても使えそう。
----
 
 
* kiyoka.2008_04_07[プログラミング][関数型] 関数型プログラミングの用語を使わずに関数型のメリットを説明する
この記事にはラムダ式というキーワード以外は関数型プログラミングの専門用語は出てこない。
第1回 ラムダ式 − @IT
[Thumb http://www.atmarkit.co.jp/fdotnet/csharp30/csharp30_01/csharp30_01_01.html] 
この記事で言いたいことは、『ラムダ式はリスト内包表記、高階関数と組み合せるとコードが驚くほど簡潔になる』という一言で表現できると思う。
ところで、川俣氏は関数型プログラミング言語でコードを書かれたことがあるんだろうか。
もし有るなら、確信犯的によく書かれた記事だと思う。
逆に、もし無いならかなりお気の毒な記事だと思う。さすがにプロのライターの方なので前者であると思うけど。
これくらい分かりやすい記事が書けないと仕事として成立しないんだなぁ。
----
 
 
* kiyoka.2008_04_06[Life] 不寛容な日本が進行
していると思う。日本の閉塞感と関係あると思うよ。もしかして日本だけじゃ無いのかしれないけど。
みんな余裕が無いんだよね。たぶん。
まずは人の事批判する前に自分の事やろうよ。
- 糸井さん、うまいこと説明しているね。
「屁尾下郎」氏のツッコミが世の中を詰まらせる (「公私混同」原論):NBonline(日経ビジネス オンライン)
- 村上龍氏も分かりやすい例を持ってきている。
 [YouTube tkE5ZMFj9uY]  YouTube - 村上龍X中田英寿 vol.5/5 世の中もっと寛容になったらいい
----
 
 
* kiyoka.2008_04_02[本][日本人] パラダイス鎖国
海部さんの本が出たので、早速買って読んだ。(後で、図書館に寄贈しときます)
[Amazon 4756151337] パラダイス鎖国 忘れられた大国・日本 : 海部 美知
日本国内のエンジニアが冷遇される問題や、国内ビジネスの鎖国状態について以前から興味があったので
海部さんのブログを追っ掛けていた。
関連エントリはたぶんこのリストで全部だと思う。
 
# パラダイス的新鎖国時代到来? - いいのかいけないのか?(その1) - Tech Mom from Silicon Valley
# パラダイス的新鎖国時代到来(その2) - 「ホテル・ルワンダ」vs.「亡国のイージス」 - Tech Mom from Silicon Valley
# パラダイス的新鎖国時代到来(その3)- なお超えがたき言語の壁 - Tech Mom from Silicon Valley
# パラダイス的新鎖国時代到来(その4)- 産業編・携帯電話端末のケーススタディ - Tech Mom from Silicon Valley
# パラダイス的新鎖国時代到来(その5)- 北カリフォルニア風アジアン・フュージョンにおける寿司の地位 - Tech Mom from Silicon Valley
# アンチ・パラダイス鎖国 (その6)--- 日本製アニメは「東洋の魔 - Tech Mom from Silicon Valley
# アンチ・パラダイス鎖国 (その7)--- 頑張れ、日本映画 - Tech Mom from Silicon Valley
# アンチ・パラダイス鎖国(その8)--- 問題は大企業のパラダイス鎖国 - Tech Mom from Silicon Valley
# パラダイス鎖国に関する補足 - Tech Mom from Silicon Valley
 
最近対談をされた様なので、こちらも見た。中島聡さんの話も興味深い。
[YouTube XTZGZP9Fb0w]  中島聡×海部美知トークイベント01
短く編集してあり、内容が濃いので観て損は無いよ。
[nolist]