!kiyoka.blog.2008_01 RSSPLAIN

Related pages: !kiyoka.blog.list
031055555555555555555555555555555555555555555555555555555555444555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555522555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555
0

kiyoka日記。NendoSekkaの開発や、最近思うことなど

3

最新10件!kiyoka.blog   過去記事一覧!kiyoka.blog.list

1

kiyoka.blog_header 

0

このブログを書いている人: 西山 清香(kiyoka) - twitter: @kiyokaEXT

5

5

 

5

 

5

kiyoka.2008_01_31[OldType]OldTypeサイトの更新アカウント提供準備

5

Subversionのアカウント提供開始するための準備を進めている。

5

とにかく文章を書くだけの作業なのであんまり時間はかからないと思うが、やっているうちに、あれもこれもと芋蔓式に出てくるかも知れない。

5

gauche.nightEXTまでには余裕を持って提供開始したいと思う。

5

5

 

5

 

5

kiyoka.2008_01_30[OldType][Life]gauche.nightEXTに出場することが決定

5

3月8日(土曜日)のgauche.nightイベントで約5分でOldTypeをデモする予定。(gauche.gongというコーナー)

5

かっこいいデモができたらいいな。

5

GaucheKahua関係者の方にお会いしたことが無いのでそちらも楽しみ。

5

生Shiroさんも見れるぞ。

5

5

 

5

 

5

kiyoka.2008_01_29[Life]MacOS X Leopardにアップグレードした

5

10.3(Panther)から10.5(Leopard)にアップグレードしたけど、いろいろ不満点がある。

5

特に、Leopard用の新しいX11.appが気にいらない。

5

X11.appで起動したEmacsのWindowをアクティブにしようと思ったら、EmacsのWindowを2回目のクリックする必要がある。

5

X11以外は、画像や、PDFの内容のサムネイルがアイコンに表示されたり、使いやすくいて満足。

5

2226108414_32e02e26cd_d MacOSX用のCarbonEmacs + emacs-w3mでOldTypeのサイトを見ているところ

5

アップデートした一番の理由である、最新のCarbonEmacsのユニバーサルバイナリとSubversionのバイナリがそのまま動くのがいい。

5

Gauche/Kahuaの開発プラットフォームをDebianからMacOS Xに行こうしようかな。

5

5

 

5

 

5

kiyoka.2008_01_22[アイデア]見出し画像を返すRestAPI

5

引数に見出しの文章を渡したら、美しい見出しの画像が返ってくるRestAPIが欲しい。

5

モリサワフォントとかで返してくれたらうれしいね。

5

たぶん商用フォントのネットワークライセンスを持ってても、そんなの作ったら一文字づつ文字が盗まれるとか悪用されそうなのでそれは無理だろうけど、Debianに入っているフォントで作ればOKなんじゃないかと思う。

5

例えば、こんなURLで

5
 http://example.com/headline.cgi?str=見出し画像を作るRestAPI&point=32
5

以下のような画像が返ってくればうれしい。(文字列はutf-8がいいな^^)

5

kiyoka.headline_sample

5

誰かつくって欲しいなぁ。

5

OldTypeが一段落したら作るかも知れないけど。

5

5

 

5

 

5

kiyoka.2008_01_21[Life]dysonの掃除機が欲しい

5

毎日、床をガムテープでペタペタやって、雑巾がけをしている。

5

そう、猫と遊ぶため。

5

うちの猫のkiyoka.ささみは毎日餌を投げる遊びが大好き。

5

2130679694_d6715f30f4_m

5

リビングのフローリングの上をアイスホッケーの様に餌を投げると全力で捕まえて嬉しそうに食べる。

5

晩ごはんのうち半分(約40グラム)は必ずやらないと『ニャーニャー』と訴えてくる。

5

しょうがないので毎日、修行僧の様に雑巾がけすることになる。

5

 

5

そこで、ホコリの掃除だけでも掃除機を使いたい。

5

毎日掃除するので、故障しにくく長持ちする掃除機が欲しいなと思っている。

5

そう思ってdysonのWebサイト(ダイソン株式会社:デュアルサイクロンクリーナーなどの開発、製造、販売EXT)を見るとなかなかカッコイイのだこれが。

5

 

5

もしかして、メカ好きな男性の購買層を意識してサイト作っているんじゃないかと思えるよ。

4

 

4

high-speed-visualisation  rapid-prototyping

4

 

5

そんなわけで、実用面でもメカ系おもちゃとしても使ってみたい代物である。

5

5

 

5

 

5

kiyoka.2008_01_19[OldType]YouTube貼りつけを実現

5

RubyKaigi2007のYouTube動画を見ながらブログ記事を書いている間に、動画を貼りつけてみたくなった。

5
 ##(youtube videoid)
5

というコマンドをサポートした。(videoidはYouTubeのURLに入っているv=xxxxxのクエリ引数部分)

5

実際にYouTubeの動画貼るとこんな感じ。

5

 iPhoneのようなマルチタッチインターフェースの研究者ジェフ・ハン氏のデモ動画。

5

 

5

サポートするのはすごく簡単。

5

util.kahuaに(youtube)のブロックを追加するだけ。

5

Kahuaの凄い所は、それだけではなくて、本番環境にkahua-shellから接続してこの関数をevalできること。

5

他のフレームワークでこんな芸当は難しいでしょう。

5

こんな環境に慣れてしまったら他の環境には戻れない。

5
(define (oldtype:format-macro expr)
5
  (let ((command (car expr))
5
        (arg     (if (null? (cdr expr))
5
                     '()
5
                     (caadr expr))))
5
    (case command
5
      ((img)
5
       (img/ (@/ (src
5
                  (let1 str (symbol->string arg)
5
                        (if (#/^[.][.]/ str)
5
                            (string-append (oldtype:static-base-path) "img/" str)
5
                            str)))
5
                 (alt (oldtype:otpath->basename (symbol->string arg))))))
5
      ((todo)
5
       (img/ (@/ (src (string-append (oldtype:static-base-path) "icon:todo.png"))
5
                 (alt "TODO"))))
5
      ((done)
5
       (img/ (@/ (src (string-append (oldtype:static-base-path) "icon:done.png"))
5
                 (alt "DONE"))))
5
      ((info)
5
       (img/ (@/ (src (string-append (oldtype:static-base-path) "icon:info.png"))
5
                 (alt "INFO"))))
5
      ((edit)
5
       (img/ (@/ (src (string-append (oldtype:static-base-path) "icon:pencil.png"))
5
                 (alt "EDIT"))))
5
      ((youtube)
5
       (object/
5
        (@/ (width  "425")
5
            (height "355"))
5
        (param/
5
         (@/ (name  "movie")
5
             (value (format "~a" (symbol->string arg)))))
5
        (param/
5
         (@/ (name  "wmode")
5
             (value "transparent")))
5
        (embed/
5
         (@/ (src   (format "http://www.youtube.com/v/~a" (symbol->string arg)))
5
             (type  "application/x-shockwave-flash")
5
             (wmode "transparent")
5
             (width "425")
5
             (height"355")))))
5
      (else
5
       `(p/ ,(format "!!Error : no such macro \"~a\"!!" command))))))
5

本当は、シェルスクリプトでもこのようなプラグインを追加できるようにしたい。

5

今回は標準機能ということにしてWebアプリ側に機能追加した。

5

シェルスクリプトでプラグインをサポートした時に有利なのはPlagger等のバッチ処理や統計処理ができるという事。

5

プラグインにも数種類あるという形ににすればいいか。

5

5

 

5

 

5

kiyoka.2008_01_17[OldType]OldTypeのロゴとキャッチコピー

5

『Wiki of the OldType, by the OldType, for the OldType.』というコピーをロゴ画像の中に埋め込んでみた。

5

どうだろう。

5

kiyoka.oldtype_logo_2008_01_17

5

どんなロゴ画像にするかを考える時間は楽しい。

5

OldTypeの本家サイトは、UNIXや、関数型プログラミングを使いこなすOldTypeな先人から新しい事を学ぼうというサイトにできればと思っているので、本家限定で毛筆で『温故知新』と入れてもいいかも。

5

5

 

5

 

5

kiyoka.2008_01_14[プログラミング]Dave Thomasの講演を観て思ったこと

5

この有名な講演を、Gaucheユーザから見て思うことを中心に。

5

プログラミング関連のブログをグルっとひと巡りしてみるとRubyを愛している人は多いことに気づくだろう。

5

この講演の中で、(Haskell and Ruby) or (Ocaml and Python) という話が出てくる。

5

真中が 'or' ではなく 'and' の人は少数で、これは何でだろうという話。

5

Dave Thomasは、これはペットの趣向で例えると犬派、猫派が有るようなものでRuby派、Python派が有ると説明している。

5

なんか分かる気がする。

5

さて、無理矢理ここにLisp系を入れてみよう。

5

『(Haskell and Ruby) or (Ocaml and Python) or (CommonLisp and Scheme)』(笑) ということにしておこう。

5

Lisp系を使う人は、全部Lisp系でやってしまう感じを表現してみた(笑)

5

 

5

ところで、Rubyがプログラミング言語としてここまで愛されているのはPerl以来かもしれない。

5

Dave Thomasは自分の脳味噌の動きに近いという言いかたをしていし、周辺でもRubyが好きな人はだいたい同じような事を言っている気がする。

5

ちなみに私は、Scheme言語のなかでもとりわけGaucheを愛している。

5

残念ながら普及率は今ひとつだけど、今のところ問題ない。

5

もし、Dave Thomasのような熱い人がGaucheコミュニティーに出てきたらどんな感じなんだろうと想像してみたが、ちょっと有りそうにないよね。

5

Gauche本が出たあたりから、少しはコミュニティーが大きくなったりすればいいなと期待している。

5

 RubyKaigi2007 / Dave Thomas 1/4

5

 RubyKaigi2007 / Dave Thomas 2/4

5

 RubyKaigi2007 / Dave Thomas 3/4

5

 RubyKaigi2007 / Dave Thomas 4/4

5

5

 

5

 

5

kiyoka.2008_01_13[本][Life]『プロとアマの垣根』について

2
 4047100080  決断力 : 羽生 善治
2

を読んで。

5

NHK プロフェッショナル 仕事の流儀EXTでは無いけれども、『プロとアマの垣根』について触れている。

5
以下第五障『才能とは、継続できる情熱である』より引用。
5
 将棋の世界にかぎらず、今、プロとアマの垣根が低くなっている。
5

(略)

5
 プロらしさとは何か?と問われれば、私は、明らかにアマチュアとは違う特別なものを持っており、その力を、瞬間的ではなく持続できることだと思っている。
5
 私が大事にしているのは、年間を通しての成績である。
5

(略)

5
 どの世界においても、大切なのは実力を維持することである。
5
 そのためにモチベーションを持ち続けられる。
5
 地位や肩書は、その結果としてあとについてくるものだ。
5
 逆に考えてしまうと、どこかで行き詰まったり、いつか迷路にはまり込んでしまうのではないだろうか。
5
そういえば、ShiroEXTさんも同じことを書かれていた気がする。以下引用。
5
 プロとアマの違いは何だろうかと時々考えるのだけれど、ひとつ確実に言えるのは、プロはどんな場合でも仕事の質がある下限以上であることが期待されているということだ。
5
 フィールドによっては、アマチュアがプロよりも良い仕事をする場合がある。
5
 ただ、それは上のピークを見た場合。どんな人でも長く続けてれば波はあるもので、プロかどうかを分けるのは山の頂きではなく谷底の標高が一定の高さをクリアしていることではないかと思う。
5

納得。

5

持続するためには、仕事が好きでないといけないということがある。

5

しかし、好きなことでも続けてやっているとそうでもなくなってくるし、好きな対象も知らず知らずのうちに徐々にシフトしていく。

5

私は仕事ではそんなに超絶技巧は要求されないので(逆に言うと、チャレンジングな技術使用を許可されにくいので)、それだけやっているとモチベーションが維持できない。

5

そこで、プライベートでは自分が本当に面白いと思った技術で遊んだりしてバランスを取っている。

5

その遊びは、結果的に理論や概念の部分で、役に立ったことが多い。

5

そんな工夫をしながら仕事のパフォーマンス安定性とモチベーション維持を両立するのはプロとしての務めではないかと思う。

5

5

 

5

 

5

kiyoka.2008_01_12[本]『決断力 (角川oneテーマ21): 本: 羽生 善治』を読んで

5

読んだのはこの本。

5

4047100080  Amazon.co.jp: 決断力 (角川oneテーマ21): 羽生 善治: 本

5

ウェブ時代をゆく ─いかに働き、いかに学ぶかEXTの梅田 望夫さんがよく羽生さんのことを書かれているのでその関連で読んでみた。

5

この本が書かれる前に、『高速道路論』という言いかたがされていたかどうかは不明だが、それに通じる話が沢山でてくる。

5

将棋に限らず、一生勉強すべき職業に就ている人は参考になるに違いない。プログラマも同じだと思っている。

5

ちょっと引用してみる。

5

第四章『「選ぶ」情報、「捨てる」情報』より

5
 私は、今の時代は、いろいろなことが便利になり、近道が非常に増えた時代だと思っている。
5
 何かをやろうと思った時に、さまざまな情報があり、安易な道、やさしい道が目の前に数多くある。
5
 楽に進める環境も充実している。
5
 昔は遠い、一本の道しかなかった。
5

5
 しかし、遠まわりをすると目標に到達するのに時間はかかるだろうが、歩みの過程で思わぬ発見や出会いがあったりする。
5

5
 自分の力で吸収した考える力とか未知の局面にであったときの対処の方法とか、さまざまな事を学べたと思っている。
5
 私は、自ら努力せずに効率よくやろうとすると、身につくことが少ない気がしている。
5
 近道思考で、簡単に手に入れたものは、もしかしたらメッキかもしれない。
5
 メッキはすぐに剥げてしまうだろう。
5

最近関数型言語をやっていて、理論的側面が不足しているせいで、なかなか答えに辿りつけないことが多い。

5

手続き型プログラミングの世界では、騙し騙しコードを書くことができるが、関数型の場合はそうはいかないことがある。

5

モナドや、継続をベースとするAPIがあったりした場合、理論的背景が分かってないといくらドキュメントやソースコードを読んでも自然に分かったりしない。

5

毎日コツコツ勉強を続けて行くことで、『未知の局面』が来たときにも、解決方法が思いついたり、前に苦労してつかんだ理論が応用出来たりする。

5

高速道路の先の渋滞を抜けることができるのは、どこかの時点でじっくり腰を据えて努力をした人のみなんじゃないかと思う。

5

5

 

5

 

5

kiyoka.2008_01_09[OldType]Kahua対応の続き

5

結局、OldTypeのSXMLライクな中間コードを高階タグ関数に変換するコードはこうなった。

5

中間コードはdivタグとaタグの属性がalistになっているという変則的な形を取った。

5

また、p-normalや pre-quoteなど、OldType専用のタグを用意している。

5

そうすれば、この関数での変形処理がやりやすくなる。

5

マクロを使えばコード全体が少し短くなるとは思うが、これ以上変換プロセスを複雑にしたく無いので、quasi-quoteを多用する形にした。

5

これでやっとKahua上でアプリケーション開発する足場が固まった。

5
;; utility : internal sxml format to highger-order-tag
5
(define (sxml->higher-order-tag sxmls)
5
  (div/
5
   (node-set
5
    (let rec
5
        ((sxmls sxmls))
5
      (match sxmls
5
             (()  '())
5
             (((and (name . _) sxml) . rest) ;; generic node
5
              (let1 arg (cdr sxml)
5
                    (cons
5
                     (case name
5
                       ((div)
5
                        (let1 param (car arg) ;; param is assoc-list
5
                              `(,@(div/
5
                                   (@/
5
                                    (id (assq-ref param 'lineno))
5
                                    (class (format "new~d" (assq-ref param 'latest-rate))))
5
                                   (node-set (rec (cdr arg)))))))
5
                       ((a)   
5
                        (let1 param (car arg) ;; param is assoc-list
5
                              `(,@(a/
5
                                   (@/
5
                                    (href (assq-ref param 'href)))
5
                                   (node-set (rec (cdr arg)))))))
5
                       ((p-normal)    `(,@(p/   (@/ (class "oldtype"))    (node-set (rec arg)))))
5
                       ((pre-quote)   `(,@(pre/ (@/ (class "quote"))      (node-set (rec arg)))))
5
                       ((pre-verb)    `(,@(pre/ (@/ (class "verb"))       (node-set (rec arg)))))
5
                       ((pre-ul1)     `(,@(pre/ (@/ (class "ul1"))        (node-set (rec arg)))))
5
                       ((pre-ul2)     `(,@(pre/ (@/ (class "ul2"))        (node-set (rec arg)))))
5
                       ((pre-ul3)     `(,@(pre/ (@/ (class "ul3"))        (node-set (rec arg)))))
5
                       ((pre-ol1)     `(,@(pre/ (@/ (class "ol1"))        (node-set (rec arg)))))
5
                       ((pre-ol2)     `(,@(pre/ (@/ (class "ol2"))        (node-set (rec arg)))))
5
                       ((pre-ol3)     `(,@(pre/ (@/ (class "ol3"))        (node-set (rec arg)))))
5
                       ((h1)          `(,@(h1/  (@/ (id "h1"))            (node-set (rec arg)))))
5
                       ((h2)          `(,@(h2/  (@/ (id "h2"))            (node-set (rec arg)))))
5
                       ((h3)          `(,@(h3/  (@/ (id "h3"))            (node-set (rec arg)))))
5
                       ((h4)          `(,@(h4/  (@/ (id "h4"))            (node-set (rec arg)))))
5
                       ((h5)          `(,@(h5/  (@/ (id "h5"))            (node-set (rec arg)))))
5
                       ((h6)          `(,@(h6/  (@/ (id "h6"))            (node-set (rec arg)))))
5
                       ((wiki-macro)  `(,@(oldtype:format-macro (car arg))))
5
                       ((wiki-name)   `(,@(oldtype:expand-wiki-name (car arg))))
5
                       ((hr)          (hr/))
5
                       (else
5
                        `(p/ ,(format "!!Error : no such tag \"~a\"!!" name))))
5
                     (rec rest))))
5
             ((other . rest)
5
              (cons other (rec rest))))))))
5
5

5

 

5

 

5

kiyoka.2008_01_08[Sumibi]Sumibi.orgEXTがHDDクラッシュでサービス停止

5

Sumibi.orgEXTのサービスがハードウェア障害により停止した。原因はHDDのクラッシュ。

5

なんとか復旧させた。いい機会なのでDebian 3.1から4.0に上げ、Gacuheも0.8.7から0.8.12に上げた。

5

意外と時間がかかったのがSumibiの辞書DB。MySQLのSQLダンプを戻すのに約20時間くらいかかった。

5

だいぶ前に待機系マシンがハードウェアトラブルで停止したが、そのタイミングで待機系を廃止した。そのツケがまわってきた格好だ。

5

うーん、やっぱりサイトの維持はお金がかかる。手間はそんなにかからんけど。

5

維持費がある程度必要なことを家族に納得してもらうのが難しいという問題がある。

5

実は、AdSenseの収入では固定IP代しか出てない。

5

ユーザの皆さんにはそこんとこ、ご理解いただきたい。

5

5

 

5

 

5

kiyoka.2008_01_05[オープンソース]Kahua will never be A Ghetto.

5

スラッシュドット ジャパン / Ruby on RailsはゲットーだEXTを読んで。

5

TechCrunchの記事Zed Shaw Puts The Smack Down On The Rails CommunityEXTも参考に。

5

Zed Shaw氏の原文はちゃんと読んでいないけど、Ruby/Railsコミュニティーからはもう手を引くとのこと。

5

要するにPHPコミュニティー見たいに『A bunch of half-trained former PHP morons』が押し寄せてきてひどい状況になっているということらしい。

5

私もちょっとの間PHPメーリングリストを読んでいて、質の低さにウンザリした記憶があるので多少は納得できる。

5

一方のKahuaコミュニティーには、良くも悪くもS式暗号(過去のkiyoka日記より)EXTという高い参入障壁があるので、そうは成りそうにない。

5

要はバランスで、WebフレームワークのコミュニティーにはPHPコミュニティーからSeaside.stEXTコミュニティーまでいろいろあるが、ちょうど中間地点がいいと思う。

5

Kahuaはどちらかというと、Seasideよりだと思うので、もうちょっと中間地点側に寄せた方がいいと思う。

5

どうやって寄せるかは、キラーアプリを作って見せるのが一番だが、言語がSchemeだということもあって、それだけでは駄目なのかも知れない。

5

去年あたりから関数型言語の人気は(局所的には)高まっていると思われるので、Schemeだからという部分は多少緩和されるのかな。

5

Kahua関係者の皆様、今年は何とかしたいよね。

5

5

 

5

 

5

kiyoka.2008_01_04[Life]新しいことに挑戦するということ

5
enbug diary(2007-11-14)EXT
5

この気持ち、よくわかるよ。

5

特に今Wikiエンジンなどというものに挑戦しているけど、手垢まみれでアイデアの出つくした感のある世界でさらに新しい事をするのはすごく勇気がいる。

5
現状に至極満足しているので、新しいことをやる必要性を感じない。
5
新しいことに興味を感じない。
5
新しいことが恐ろしい。
5
新しいことをやって、失敗するのが恥ずかしい。
5

1番目と4番目が一番ひっかかっていたけど、今年はそのWikiエンジン開発とやらを臆せずやってみようと思う。

5

できあがったモノを見て、こういう考えかたも有りなのかと思ってもらえることを目指すよ。

5

Deron Sizemoreのブログエントリにも『挑戦と失敗』について書かれている。

5
It’s Better to Try and Fail Than to Have Never Tried At All - Random JabberEXT
5

今年も恐れず新しい事に挑戦しようと思う。

5

というわけで、今年もよろしくおねがいします。

5