トップ 最新 追記

Route 477



2009-07-02

[misc] chumbyを買ってみようかと思ったのだが

こんな但し書きが……。

91a24b0ec46ec972126db3481bba5490.png

「chumbyの日本語版ください」

「色はどれがよろしいですか?」

「じゃあ、青で」

「在庫の関係上インターナショナル版が届く場合があります。予めご了承下さい。」

「えっ」

「えっ」

「日本語版じゃないんですか?」

「日本語対応版chumbyが購入できます。」

「でもインターナショナル版かもしれないんですよね」

「在庫の関係によっては、そうなりますね」

「なにそれこわい」

「えっ」

「えっ」

あとブルーの拡大画像が青くないのもこわい。

(※上記の会話は妄想です)


何より「日本語対応版」と「インターナショナル版」の違いがわからないのがこわい。 インターナショナル版が届いても、手作業でアップデートすれば日本語対応版と同等になるっていう認識でいいのかな? そこを明示してくれないと上のような会話を妄想してしまう。


2009-07-03

[misc] 6月のサブブログ

Unicodeを活用したTODO管理方法
いろんなソフトウェアがUnicodeに対応している昨今なので、もっとUnicodeの絵記号が広く使われてもいいんじゃないかなと思って書いてみたらOpera(9.62)でうまく表示できなくて悲しい気分になるなどした。
家に帰ってから「あの人だったのか!」と言われないための勉強会用名刺
名刺の裏をどう使うかについて書いた。
「600万人の女性に支持されるクックパッドというビジネス 」
という本の書評を書こうと思ったのだが、書評とか書いたことないことに気づいて単に覚え書きみたいになった。

だいたいこれくらいのペース(週1弱)で書いていこうかなと思っています。飽きたらやめます。

[haskell][sinatra] SinatraのHaskell移植版があるらしいんだが

その名前はどうなのw

まあ文字列処理最強と言われるHaskellだし(Haskellのリスト処理は最強→Haskellでは文字列はリスト→Haskellの文字列処理は最強、という論理だったような)、 手軽にWebアプリを書いて遊べるとなると良い練習になるかも知れないですね。

experimentalと書いてますが、同じ作者によるRackのHaskell移植もある模様。

[scheme] 「継続」という概念がScheme発祥だと思ってた人の数→

→(1)

継続 (continuation) の概念は、元々は goto 文をもつ命令型言語の表示的意味論を定義するために発見された[18]。

[例外処理機構を備えた命令型言語のCPS変換とその定式化より引用]

なんだってー。

[18]の論文を探してみたのだけど、 無料で読めるところはなさそう。

[mac] Time Machineはじめました

「Time Machine」と呼ばれる、Mac OS X(Leopard)標準のバックアップシステムを稼働させてみた。あのpdumpfsみたいなやつです (元ネタの「dumpfsみたいなやつです」と言うべきか)。

まずは外付けHDDを買う。気づいたら、外付けでも1TBで1万円ちょっとですよ。安いなぁ…。

んで、半分くらいはWin機のバックアップに使う(かもしれない)ので、とりあえずパーティションを二個に分けて、前半をMacの、後半をWinのフォーマットに。 このへんはMac付属の「ディスクユーティリティ」で簡単にできる。

あとはTime Machineの設定でHDDを指定すれば、初回のバックアップが始まる。これが、全容量が120GBの癖に4時間くらい?かかった。 けどそれ以降は差分だけバックアップなので、1日作業してからHDDを繋いでも5分もかからない。

とりあえずさっき2回目のバックアップが済んで、例の「タイムマシーンに入る」ができるようになった。満足です(笑)。


2009-07-05

[ruby] Process.spawnを使ってみた

髪を切りに行ったら「痩せましたね」って言われたyharaですこんばんわ。俺の体重、どこいってしもたんや…。 早くRubyKaigiを終えて(健康的に)太りたいです。(本当は、この程度のプレッシャーで痩せたりしないようになりたいんですけど *1)

今日の調査。

といいつつ、今回は基本的な使い方を。

loop.rb

puts "starting loop with ruby #{RUBY_VERSION}.. / #{ENV['TEST']}"
sleep 2

runner.rb

puts "invoking loop.rb"
pid = Process.spawn({'TEST' => "hello"}, "ruby loop.rb")

Thread.new {
  ret = Process.waitpid2(pid)
  puts "process ended: #{ret.inspect}"
}
5.times do |i|
  puts "count #{i}"
  sleep 1
end

んで、実行結果が

D:\proj2\ruby-station>ruby runner.rb
invoking loop.rb
count 0
starting loop with ruby 1.9.1.. / hello
count 1
count 2
process ended: [1456, #<Process::Status: pid 1456 exit 0>]
count 3
count 4

のようになりました。Windowsです。いい感じですね。

*1 院試(2005)と就活(2007)の時も痩せてた気がするので、2年ごとに痩せる周期なのかも…


2009-07-06

[ruby][event] Shibuya Rubyists?

RubyKaigiまでしばらく日本にいるんだけど、誰かお茶しない?とのこと。※ただし英語に限る

本日のツッコミ(全1件) [ツッコミを入れる]

ujihisa [見てみた。チケットとれなかったお方なのかな]


2009-07-07

[mac] Time MachineがVMWareのイメージを毎回バックアップするので困ります

仕事行く→家帰る→外付けHDD繋ぐ→残り容量が5GB減る

これを週5回繰り返すと2週間で50GB、一月に100GB、一年もしないうちに1TBのHDDが埋まってしまう。やばい。

でかいファイルは差分バックアップだったら良かったなー、なんて…。重そうだけど。

(追記:そういや全回のバックアップが保存されるわけではなかった。 当日の分が最大24個、当月の分が最大30個、残りは1週間ごとなので、1TBに達するには146週が必要。)

[prog] Chrome(Chromium)の開発プロセスはGoogle社内のそれに近いらしい

という話をFSIJのイベントで聞いた。

ChromeはGoogleが開発しているブラウザで、開発初期は非公開プロジェクトだったわけだけど、 最初のリリースと同時期にオープンソースになり、「Chromium」という名前で開発が続いている。 現在のChromeのコードは、Chromiumのコードと「ほとんど違わない」そうだ(ロゴが違ったりするなど)。

そういう事情で、ChromiumはGoogle社内と似たようなプロセスで開発されているらしい。

本日のツッコミ(全2件) [ツッコミを入れる]

Layzie [VMWare使ってないんであれですが、TimeMachineの設定で、イメージファイルを除外してみてはどうでしょうか..]

yhara [除外するとバックアップが取れないのでそれはそれで困るんですよねw 「既にあるファイルはコピーしない(ファイル単位)」..]


2009-07-09

[ramaze] ramaze-usersの最近の更新

ドメイン取ってないのでタイトルから「.jp」を外しました。

DataMapper/Sequel/ActiveRecordの解説あたりは、SinatraとかMerb方面の人にも役立つんじゃないかなと思います。


2009-07-13

[mac][zsh][screen] Macのターミナルからクリップボードの読み書きをしたい

pbcopyというコマンドを使えばできる。のだけど、2点ほど罠が。

1. screen上だと駄目

最新版を自前でコンパイルしよう。screenのcopyでクリップボードにコピーできるようにするパッチもあるみたいだけど、それはお好みで。

縦分割(prefix + |)もできるようになってお得。

2. 日本語が通らない

zshの設定でいけるらしい。

使い方

$ svn di | pbcopy

とか

$ pbpaste > Rakefile

とか。


2009-07-14

[ruby] Ruby認定試験を受けたいのですが

まずプロメトリックのサイトで会員登録が必要な模様。どれどれ。

604c92fbf35dfd0927b4f74b87e23888.png

がーん。

どうやら会社名のローマ字表記が30文字を越えてるとこうなるみたいだけど、余裕で45文字なんですけど…

とりあえず途中まで入れておいた。


2009-07-15

[ruby] RunCodeRun : githubと連動した継続テストサーバが登場

githubにコミットするごとにサーバでビルド・テストを走らせ、結果をリポートしてくれるらしい。

テスト結果の例。

OSSプロジェクトは無料。有償で、非公開プロジェクトにも使えるらしい。


2009-07-16

[mac] iTouchでメモの同期ができるのだけど

iPod TouchのOSバージョンいくつかから、「メモ」で書いたテキストをPCと同期できるようになった。

が、iTunesを見渡してもどこに保存されているのか分からない。

どうもMail.appのメモ欄に保存されるらしい。

…いや、Mail.app使わないし!

これならEvernote使った方が便利かなぁ。

[esobook][event] サイン会のお知らせ

9784839927844

明日から始まるRubyKaigiの2日目、土曜の15:30-16:00の休憩時間に、「Rubyでつくる奇妙なプログラミング言語」の サイン会を行わせていただけることになりました。

まだお持ちでない方はこの機会にぜひ:-)

あと、Rubyist Magazine 0026号の読者プレゼントにもなっております。RubyKaigiに行けない方は、こちらを狙ってみるのも手かも。


2009-07-17

[ruby][event] RubyKaigi2009で発表予定の内容

について、一応書いておきます。日曜午後の1Fの部屋です。

一応、「Exerb」「RubyScript2Exe」「Ocra」「Crate」といった Rubyスクリプトをexe等の実行形式に固めるツールの紹介をするのですが、 実はそれはおまけで(なんでおまけなのかは当日話します)、 Rubyアプリをgem経由で配布するための環境「RubyStation」と、 「ブラウザをデスクトップアプリのGUIとして使う」という試みの提案が本題です。

松江Ruby会議01で話したものの実装ができましたよ、という話だと思ってもらえば良さそうです。 できましたよっていうか、まだリリースしてな……(省略されました

海外の方がけっこう多そうなので、スライド英語にした方がいいかなぁ。(喋るのは日本語です)


2009-07-19

[ruby][event] RubyKaigi2009

いやー終わった。終わりましたね!終わった終わった。とりあえずスライド。

今回はいろいろ環境を工夫して、予定通りの時間で進行することができました。これについてはあとで書くかも。

スタッフ・講演者・来場者の方々に感謝。

明日はお台場のガンダムでも見て帰るかなぁ。

[book] 大人買い

2刷の4822234312、

サイン入り4774138975、

「完成していたのか」4797337958、

「まずは計画」というコピー(とおまけ)に惹かれた4839924023、

そして、とりあえず買ってから考える4434133632。

あとアーロンさん(ひげの山男のほう)に自著を買わせるなどした。Seattle.rbの人たちはきっと気に入ってくれそうな気がするw

4839927847

本日のツッコミ(全1件) [ツッコミを入れる]

Yuya [R.I.P. Exerb!ww]


2009-07-21

[rubystation] Re: http://www.kumaryu.net/cgi-bin/diary/?date=20090721#p01

スピーカ権限でいただいたircのログを見たら、見事にzipがバズワード化していて満足した。

  • iTunesのAppStoreみたいな奴はぜひやりたいです。アプリの管理画面でアイコン画像が並んでるみたいにしたいんです。
  • gemについては、特にこだわってるわけではないので、もっと良い配布インフラができたら(ripとか)、そっちに移行することはあり得ます。
  • 「リンクを踏むとインストール」については、「http://localhost:2534/apps/add/someapp 」とか書いておけば今でもできそうですが(もちろん確認画面は必須)、ユーザがポート変えてたらどうするんかなぁ。

あとRubyでゲームがAwayということはつまりCHANGEであるということだから今回の趣旨にとても合致していたんではないでしょうか。


2009-07-22

[ruby][prog] Hello Worldの次に何を書けばいいかについて

やっぱりHello Worldじゃないですかね?

puts "Hello, world!"

Arrayを使ったHello World

ary = ["Hello", "world!"]
puts ary.join(" ")

Hashを使ったHello World

hash = {:greet => "Hello", :to => "world"}
puts "#{hash[:greet]}, #{hash[:to]}!"

Enumerableを使ったHello World

chars = %w(H e l l o , \  w o r l d ! \
)
chars.each{|c|
  print c
}

こういう感じで100個くらい書くといい練習になるんじゃないかと思った。

いろんなメソッドを使ってみるのが目的なので、冗長であっても構わないルールとする。

[opera] Operaのウィジェットで、プレゼン時間の管理用タイマーを作った

スクリーンショット。

RubyKaigiでは「20分弱で前半を終わり」「35分で後半も終わる」という計画に忠実にスライドを進めることができたが、 その主たる理由はこのタイマーがあったからだ。

a20f3c74aee62b911ef1ecbc0ff91eff.png

Opera Widgetとは、画面にフロートする小さなウィンドウを表示するOperaの機能である。最前面に表示したりもできるので、 現在時刻・経過時間を表示するプレゼンタイマーにはぴったりだ (もちろん、使うのにOperaが要るけど)。

作り方は、ソースを見ればわかるけど単なるHTML+CSS+JavaScriptだ。あとはconfig.xmlという設定ファイルを少し書くだけ。 一応Opera公式にも登録してみたけど(審査待ち)ここからzipを取ってきて、config.xmlをブラウザにD&Dすれば普通に使うことができる。

一応使い方を書いておくと、input boxにプレゼンの分数(今回は35だった)を入れて、input boxの外("min"のあたりとか)をクリックする。 すると時間がリセットされ、カウントアップが始まる。 (なんで残り時間ではなく経過時間を表示するのかというと、その方が使いやすいからだ。まあ好みかも知れんけど。)

余談だが最初はBiwaSlideを改造して同じ情報を表示してたのだけど、デモの間に時計が見えないことに気づいて、Opera Widgetを使う作戦に変更した。 すごく手軽に作れることが分かったので、何か画面上に常駐させたいものを作るにはいいんじゃないかな。


2009-07-24

[prog] githubにPHPの公式ミラーが

via http://github.com/blog/462-php-git

PHPソースの公式gitミラーがgithubに登場したようです。


2009-07-28

[book][lisp] Let Over Lambdaを読んでCommon Lispに興味を持った

途中まで読んだ。

4434133632

Lispマクロを使っていろいろ遊ぶぜ!という本。内容は濃いけど、章(テーマ)が7つあり、一つ一つの節は短めなので少しずつ読んでいくことができる。

Lisp方言には「Common Lisp」と「Scheme」(あとArcとかClojureとか)があるわけだけど、 本書で「Lisp」と書いてあればCommon Lispの方を指す。だからLispコンパイラの存在は当然だし、リーダーマクロもある。 第3のアンクオート「,.」とか全く知らなかったぜ。

んでまあ、マクロと関係ないんだけど、Schemeはシンプルさを取るために、Lispが持っていたいろいろなものを切り捨ててるんだなぁというのを今さら。 loopマクロとか、「Common Lisp使いの書くLispプログラム」を見てるとSchemeとは結構雰囲気が違って、昔のLispというか、伝統というか、「濃い」というか、 「"Lisp"らしい」雰囲気を感じた。

R6RSには構造体とかライブラリとか色んなものが入ったけど、CLはずっと前からそれを持っている。良いデザインをするためには時間が必要で(と最近思うようになった)、 成熟しているというのはそれだけで魅力的に見える。

Common Lispも面白そうだ。

おまけ

一応書いておくと全くもって初心者向けの本ではないので、Lisp知らないよっていう人は「On Lisp」…は読んでなくても大丈夫だけど「ANSI Common Lisp」か「実践Common Lisp」は 読んでおかないと意味不明かも。

4274066371

ボトムアップ(「リストとは何か」から始まるような)が好きな人は「ANSI」、手を動かしながら学びたい人は「実践」がいいよ。

4894714337

4274067211

[git] Gitのコマンド名はBitKeeper由来なのか?

LinuxカーネルはBitKeeperというVCSを長らく使っていたが、その有料化と共にGitに移行した。 という歴史を鑑みれば、Gitのコマンド名がBitKeeperの影響を受けていてもおかしくはない (そして、LinusのSubversion嫌いを考えればSubversionの影響が全くなくてもおかしくはない) のだけど、実際はどうなんでしょう。

BitKeeperのサイトのチートシートを見てみる。

リポジトリの複製が(svnのように)checkoutではなく、Gitと同じcloneになっている。 git cloneはここから取られた可能性は大きそうだ。

#ちなみにBitKeeperのコマンド名は「bk」。バッドノウハウにしか見えないw

svn/gitで意味が異なるコマンドというとあとはaddが思いつくのだけど、なんとbk addというコマンドは存在しないようだ。 ファイルの追加はbk newで行う。じゃあgit addじゃなく、git stageで良かったんじゃないかなぁ…。


2009-07-29

[ruby] RubyからJavaScriptのテストも行うためのライブラリあれこれ

RailsなどのWebフレームワークでは、「rake test」一発でWebアプリのテストが走ってくれて楽ちんなわけですが、 JavaScriptのテストは手作業でやってたりしませんか?

「rake test」でJavaScriptのテストもやってしまうためのライブラリがいろいろ出てきてるようなので、列挙してみました。

ブラウザを使うもの

実際にブラウザを起動し、それをRubyからコントロールすることでWebアプリのテストを行う。

Selenium

有名ですね。

調べてないんだけど、Rubyからも使えるし、JavaScriptを操作したりもできるんじゃないですかね(投げやり)。レポート求む。

Watir (RubyForge) #どっちが公式サイトなんだろう

Rubyからブラウザを起動し、操作する。

IE(Win)、Firefox(Win/Mac/Linux)、Safari(Mac)、Chrome(Win)をサポートしていると書いてある。充分ですね(Opera…)。あとFirefoxではFlashのテストもできると。

イベントの発火とかは簡単にできるみたい。 あとは、指定した要素が出現するまで1秒ずつ待ったりしてテストを行う。 (「ある座標の要素をクリック」とかになると結構大変そうだ。)

ブラウザを使わないもの

ブラウザは起動せず、spidermonkeyなどでJavaScriptをエミュレートすることでテストを行う。

Celenity

Java用のGUI-lessブラウザHtmlUnitをJRubyでラップしたもの。 JavaScriptのエミュレートにはRhinoを使用。jQueryやPrototype.jsなど、主要なライブラリは動作を確認しているそうで心強い。

WatirとのAPI互換を目指しているそうで、ブラウザを起動しない(ので速いはず)のがメリットか。

JRuby用のライブラリなので、Cの拡張を使ってるRailsアプリはテストできない…と思いきや、 JRubyでCelenityを、CRubyでRailsを動かし、その間を取り持ってくれるculerityというプロジェクトがある模様。 テストフレームワークはCucumber限定だけど、JRuby on Railsでうまく動かなかった場合には試すといいかも。

JSpec

JavaScript用のテストフレームワーク。…なのだけど、Rhinoを使ってコマンドラインからテストを実行する機能がある。

Railsから使う場合はjspec-railsを使うと簡単。

BlueRidge

JavaScriptのテストを行うためのRailsプラグイン。 JavaScriptのエミュレートにはRhinoを、ブラウザ環境のエミュレート(windowとかdocumentとか)には env.jsを使う。

JavaScriptのテストフレームワークにはScrew.Unitを、 モックライブラリにはSmokeを使う。 とりあえずサンプルアプリを動かしてみると良いです。

johnson + nokogiri + taka

NokogiriはHTMLパーサ、JohnsonはRubyで書かれたJSインタプリタ、TakaはRubyによるDOM実装。

まだ開発途上?

関係ないもの

Webrat

この日記でも一度紹介済み。Webアプリのテストを書きやすくしてくれるが、JSのテストはできない。

んで結局どれ使えばいいのさ

  • JRubyが使えるならCelenity
  • ブラウザ起動してもいいならWatir(かSelenium?)

ってとこですかねぇ。

まあThe Ruby Toolbox: Browser Testingで 人気のやつを使えばいいんじゃないの!

[ruby] Rakeを使って複数Rubyな環境を作る

ためのRakefileを書いてみた。

/Users/yhara/research/rubys % rake -T
(in /Users/yhara/research/rubys)
rake jruby     # install jruby
rake rubinius  # install rubinius
rake ruby185   # install ruby-1.8.5 p231
rake ruby186   # install ruby-1.8.6 p369
rake ruby187   # install ruby-1.8.7 p174
rake ruby191   # install ruby-1.9.1 p129

という感じです。実行すると~/bin/rubys 以下にインストールされ、~/bin/ruby185みたいなシンボリックリンクができる。

MacRubyもRakeで入れたかったんだけどうまく行かなかった…。IronRubyはまだ試してない。

本日のツッコミ(全2件) [ツッコミを入れる]

Yugui [SeleniumRC Spec ...]

yhara [http://yugui.jp/articles/700 ですね!]


2009-07-30

[web] OpenIDでログインするWebアプリの開発に、Operaは使えない

認証先から戻ってきたあとこうなるんだけど:

57fc26365f5ebec4e20ff7ce8fddc203.png

この警告切る方法って無いんでしょうか…