2009年 05月 28日

GDHM の「陽だまりを越えて」を買ってきた。これからも楽しみだなぁ。発売日を意識して買うアーティストは唯一 GDHM だけです。

したいことがあったら声に出せ、というのが印象に残っていて、微妙に実践しようと思ってどうすればいいかなーという感じだったけど、「GAE やるんよ、やりたいんよー」っていってたら datastore のクセのイメージをタイミングよく教えてもらえたらいしたので、こういうことなんだなぁと思った。

一番嫌なのはやっぱファイルが増える、ということなんだと実感した。Scala で Java ラップするために沢山クラス作っても別に嫌ではない。ファイルが増えるだけで普段の作業のオペレーションが増えるんだもんなぁ…… 開く・閉じる・選択する・grep する。

GAE はとりあえずローカルの開発サーバが起動して、Scala で書いた HttpServlet に dispatch は簡単にできた。java class の自動コンパイル・自動リロードとか、リクエストフィルタを使った URL の dispatch とかが解らなくてとまってる。Lift とか読みつつやってるけど、そもそも Java war の流儀がよくわからない。

Scala だと Java の資源が使えるのが本当にとてもよくて、Rhino とか使ってスクリプト実行させたりもできるし、JRuby をテンプレートエンジンのためだけに使う (謎の XML 書きたくないし……) とかいう贅沢もできそうで夢が広がる。

Java は単体で書きたいとは全く思わないけど、Scala は書いていてすごく楽しい。ピタっとハマっていく感じがする。Ruby とかにはない型厳密な関数っぽい感覚。でも関数型ほど新しい考えかたをしなくても書けるから気持ちいい。しかも Scala はコンパイルすると Java クラスに変換されて JVM で直接動くのだから、JVM もすごいなーと思った。

gerry++

三日連続

スカラクロウラ - アクター

うーんよくわからない。while(true)/receive と loop/react の違いもよくわからない (スレッド作るかそうじゃないかだけの違い?)

クローラっぽいのを練習がてら書いてみた。あんまりわかりやすくはないなぁという気もする。もっといい書きかたあるのかな。

  • 一度に走るリクエストは2つまで
    • あらかじめ2つリクエストを出す Actor を作ってそれのキューにいれていく
  • List あたりが微妙にわかりにくい。普通に shift/push したい

http://gist.github.com/119257

あれこれ最初、スカラクロウラとかエントリで言いたかっただけだったのに、全くそんなこと忘れてエントリ書いてた

MP3 ID3 文字コード関係を仕様書にあたってみる

仕様がどうなっていようと使ってるやつが対応してないと意味ないですけどね!!

ID3v1

http://mpgedit.org/mpgedit/mpeg_format/mpeghdr.htm#MPEGTAG

  • 文字コードについて記述なし
  • title, artist, album それぞれ 30bytes しか書けない

ID3v2

2.3

http://www.id3.org/id3v2.3.0

  • If nothing else is said a string is represented as ISO-8859-1 characters in the range $20 - $FF. Such strings are represented as , or if newlines are allowed, in the frame descriptions. All Unicode strings use 16-bit unicode 2.0 (ISO/IEC 10646-1:1993, UCS-2). Unicode strings must begin with the Unicode BOM ($FF FE or $FE FF) to identify the byte order.

要は

  • ISO-8859-1
  • UTF-16
  • UTF-16BE

でしか書けない。

2.4

http://www.id3.org/id3v2.4.0-structure

   Frames that allow different types of text encoding contains a text
   encoding description byte. Possible encodings:

     $00   ISO-8859-1 [ISO-8859-1]. Terminated with $00.
     $01   UTF-16 [UTF-16] encoded Unicode [UNICODE] with BOM. All
           strings in the same frame SHALL have the same byteorder.
           Terminated with $00 00.
     $02   UTF-16BE [UTF-16] encoded Unicode [UNICODE] without BOM.
           Terminated with $00 00.
     $03   UTF-8 [UTF-8] encoded Unicode [UNICODE]. Terminated with $00.
  • ISO-8859-1
  • UTF-16
  • UTF-16BE
  • UTF-8

で書ける。場合によっては ISO-8859-1 と UTF-8 でしか書けない場合がある? (Tag restriction あたり。よくわからない)

個人的なベスト

  • ID3v1 は書かない
    • 今時 ID3v2 に対応してないプレイヤーとか捨てればいい
    • 文字化けの元
  • ID3v2.3 にしておく
    • 文字コードは UTF-16(LE)
2009年 05月 27日

部分適用・メソッド呼びだしの syntax suger・デフォルト引数

メモメモ。簡単な Singleton Logger を実装してみる

//#!scala

object Logger {
	var level = 0

	def log (message: String, level: Int) {
		if (this.level <= level) {
			println(message)
		}
	}

	def log (message: String):Unit = log(message, 1)

	def debug = log(_: String, 0);
	def info  = log(_: String, 1);
	def warn  = log(_: String, 2);
	def error = log(_: String, 3);
	def fatal = log(_: String, 4);

	// この例の場合はこうしたほうがいい気がする
	// def log (message: String):Unit = info
}

Logger.level = 1

Logger debug "debug"
Logger info "info"
Logger warn "warn"

部分適用は _ と型さえ書けばいいっぽい? 引数の順番に制限はないようだ

Logger foo argLogger.foo(arg) の syntax sugar らしい。引数一つのときに省略ができるというルールではなくて、レシーバも含めた syntax sugar のようだ

デフォルト引数は Ruby とかのように仮引数に書くことはできなくて、overload で定義するっぽい。このとき overload する側のメソッドは、返り値の型の宣言が必要らしい

gerry++

二日連続

2009年 05月 26日

何の才能もなくても日記ぐらい書かないとクズにもならず無になってしまいます。

単純に熱狂的に好きになれる相手、あるいは何かが欲しいものです。3次元に限ったことではなくて、2次元でも1次元でも4次元でもいいのですが、どうにもこうにもそこまで熱狂的になれないなぁと思う次第です。ういちゃんおれだー! 結婚してくれー!

近ごろは何をやっても、全く何の「オレッテバスゲー」感を味わうことができないので、どうしようもなく、写真撮ってはダメだ、コード書いてはダメだ、と出力がままらないばかりか、写真見てはハースゴイナーナンデコンナノトレルンダー、コード読んではリカイデキネーイミワカラネーで入力もままなりません。

悪いことの列挙は簡単すぎるので最近あったいいことを列挙しようと思います。

  • 昨日の昼食にでたサカナの甘露煮がとても美味しかった
    • 姿形のある魚を食べる機会が極めて少ないこともあり……
  • 4人ぐらいでマリカーやった。楽しかった
    • もっとハンドルを練習します
  • 夜に外出たときちょうどいい気温
    • 散歩したい

わからないこと

  • DB 設計の感覚
  • デザインパターン
  • 小機能多クラス・多ファイル主義

全く分からないのは、小機能多クラス・多ファイル主義で、心の底から全く感覚が実感できない。何が嬉しいんだろう。100行ないファイルがたくさんあっても見るのがめんどくさい。バッファ選択がめんどうくさい。簡単なことを複雑にやっている感じがする。うまいこと納得できるワンフレーズみたいなのがあればいいんだけどなぁ。説得力がある説明が欲しいなぁ切実に…… それを「良い」と思わないとちゃんと書くことができない。

そんなことはどうでもいいし…… 何にしてもセンスがない…… 日記を書きはじめたときから言っている気がする。本当に何のセンスもない……

それよりも、もっと他人に手紙を書くことに慣れないといけない。多への発言に慣れすぎてしまって、特定の相手にメッセージを送ることができないのは、人生でとても損をするし、いろんな人にレスポンスがいまいち悪いやつだなぁと思われる(ないし思われている)ことだろう。

アイデアを思いついたときに記録する方式から、何が何でも1日に1個アイデアを出すようにしよう。無理矢理でも出さないと少しずつ感覚を忘れそうだ。もっとアイデアに敏感にならないと…… アイデアに理想を高く持たないことが重要だ

SSH のパスフレーズ入力時に毎回尋ねてきて、入力しないとダメなようになっていればいいよなぁ……

こんな日は女生徒でも読んで寝ます……

久しぶりに読んでみたら乃莉さんが想像される…… 乃莉さんと結婚したい!

珊瑚樹の青い葉が窓から覗いていて、一枚一枚の葉が、電燈の光を受けて、強く輝いている。空には星がキラキラ。なんど見直しても、キラキラ。

あれ、こんな文あったのか…… と思うことが多々ある。何度読みかえしても発見がある。いつも思うのだけど、本をたくさん読むより、好きな本をもっと深く読みたいと思う…… もちろんたくさんを、深く読めるにこしたことはないけれど、あんまり文章読めないからなぁ……

庭の向こうの原っぱで、おねえちゃん! と、半分泣きかけて呼ぶ他所の子供の声に、はっと胸を突かれた。私を呼んでいるのではないけれども、いまのあの子に泣きながら慕われているその「おねえちゃん」を羨しく思うのだ。私にだって、あんなに慕って甘えてくれる弟が、ひとりでもあったなら、私は、こんなに一日一日、みっともなく、まごついて生きてはいない。生きることに、ずいぶん張り合いも出て来るだろうし、一生涯を弟に捧げて、つくそうという覚悟だって、できるのだ。ほんとうに、どんなつらいことでも、堪えてみせる。

ぼくがいつも考えていることは「努力」をしない、ということだ。本当に、これだけは守らなければならない。いつもそういう「努力」という一言に片付けられた「何か」を探し求めていたのに、誰も答えを教えてはくれなかった。だから少なくともぼくは「努力」ではなく具体的な「何か」をしていかなければならないし、それを記録しなければならない。何の役にも、誰の役にも立たなくとも、必要なことだ。

バカの一つ覚えですよ! ハハ! ぼくはバカですから! バカであることを偉そうにいうな! ってアタマイイ人に言われます!

一番いま興味あるのはスケーリング方法かなぁ…… GAE とかも興味があって触ろうとしてるけどまだ手をつけてない。

調子が戻ってきた。いい感じだ。クズの自覚を持たないと生きていけない。

gerry++