トップ 最新 追記
RSS feed

ただのにっき


2007-01-13(土) [長年日記]

公園で遊ぶ子供たち

公園で遊ぶ子供たち 仲良く一列にならんで、DSのゲームに夢中

「家の中で遊べ!!」って思った。たぶん、お母さんに追い出されたんだろうなぁ。

「Zガンダム」を観はじめる

Animaxで1stに続いてZが始まったので、毎日録画して観はじめた。1stはいちおう全部見てるけど、Z以降はちゃんと見たことがなかったので(タツノコ派だったから)。ZZあたりまでは観ておくのが社会常識らしいので。

アニメと言えば、録画しておいたアニメ版「のだめカンタービレ」を夕べ観たけど、夫婦揃って「口ぽかーん」だったよ。なんだあれ。OP/EDが謎のJ-POPなので、原作に対する理解がゼロというのはよくわかったが、絵がまったく動いてねー。深夜アニメって、「のだめ」でもそんなに低予算なのか?

というわけで、録画予約からさくっと削除。まぁ、もうのだめ役は上野樹理上野樹里しかできなくなっちゃった状況でアニメやるのも気の毒ではあるが、あれはないだろう。

はてなグラフでダイエットに挑戦(2)

昨日の続き。ダイエットはいまだ始まらず。

はてなグラフのAPIで値が取得できないと、メール更新プログラムのロジックはこうなってしまう:

  1. メールを受信して、追加する値[A]を取り出す
  2. ローカルに保存してあった以前の値[B]を取り出す
  3. [A]と[B]を足し合わせた値で、グラフを更新(set)する
  4. [A]と[B]を足し合わせた値をローカルに保存する

値[B]がシステムローカルに置かれるので、別ルートで(例えばはてなグラフのWebページ上で対話式に)値を修正できなくなる。値を取得するAPIがあれば:

  1. メールを受信して、追加する値[A]を取り出す
  2. はてなグラフから以前の値[B]を取得(get)する
  3. [A]と[B]を足し合わせた値で、グラフを更新(set)する

厳密には取得から更新までの間をアトミックにしないといけないけど、現実的にはそこまでやる必要はない。つーか、setterしかないAPIって、ありえんだろ、ふつー。

と思ったのではてなアイデアで提案してみた(そしてTrackBackしたら見事に化けた……)。アイデアポイントとやらがどういう意味を持っているのか、ぜんぜん理解できず。以前似たようなアイデアが出ていたようだけど、なぜかキャンセルになってるなぁ。

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

 [それぞれの家庭で「DSは1日30分まで」とか制限があると、各家庭を30分ずつ巡回してDSやったりするようです。 で、..]

ef [s/上野樹理/上野樹里/]

ただただし [あぅ〜。ごめんよ! >樹里(呼び捨て)]

otsune [>絵がまったく動いてねー 確認したところ、作画枚数は普通かちょい多め。演出的にも出来るだけ動いてみえるように工夫して..]

ただただし [へえぇぇ〜。面白い情報ありがとうございます >otsune じゃあなんで動いてないように見えたのか……という分析はわ..]


2007-01-12(金) [長年日記]

はてなグラフでダイエットに挑戦(1)

  • 正月休みを怠惰に過ごしすぎてだいぶ体重が増えた
  • ダイエットでもするか。体重と摂取カロリーの管理をしよう
  • グラフがつけたいね。はてなグラフを使おう
  • 昼休みにAPIのRubyバインディングをGET
  • Ruby 1.8.4以降が必要と知って「ギャッ」と言う(Debian sargeは1.8.2)
  • Ruby 1.8.5-p12を持ってきてビルド
  • 動かそうとしたらproxyに対応してないことに気づき、パッチを作成↓
Index: graph.rb
===================================================================
--- graph.rb    (revision 4)
+++ graph.rb    (working copy)
@@ -48,7 +48,15 @@
         req = ::Net::HTTP::Post.new(url.path, headers)
         req.form_data = params
         req.basic_auth url.user, url.password if url.user
-        ::Net::HTTP.new(url.host, url.port).start {|http| http.request(req) }
+
+        proxy_host, proxy_port = (ENV['HTTP_PROXY'] || '').split(/:/)
+        ::Net::HTTP::Proxy(proxy_host, proxy_port.to_i).start(url.host, url.port) {|http|
+          http.request(req)
+        }
       end

       def wsse(username, password)
  • 体重の更新ができた
  • 摂取カロリーは、食事のたびに携帯から追加するようにしよう
  • はてなグラフは更新APIだけしかないことに気づく ←いまここ

なかなかダイエットにとりかかれません。

関連する日記: 2007-01-13(土)
本日のツッコミ(全1件) [ツッコミを入れる]

TrackBack [http://sho.tdiary.net/20070113.html#p03 ただのにっき はてなグラフでダイエッ..]


2007-01-11(木) [長年日記]

iPhone、欲しいか?

なんだかApple信者のたてるノイズが多すぎて、冷静に判断できない雰囲気。

でも、iPhoneの存在自体は秘密でもなんでもなかったし、全面タッチスクリーンのデザインも「第6世代iPod」として何度も流出している。こういうのが出るのはとっくに想像していたわけで、いささか騒ぎすぎだろうし、奇襲に成功とは思えないな。二本指が使えるUIだってMacに搭載済みだし。

で、仮に今使ってる「W32SA + W-ZERO3 + iPod shuffle」をiPhoneで置き換える(値段的に釣り合いがとれる置換案だろう)ことを冷静に考えてみたら、まだまだ欲しいと思わせるだけの出来ではないと思えてきた。

手探りで操作できない

余計なものがなにひとつ付いていない、相変わらず魅力的で所有欲をそそられるデザインはすばらしい。が、画面を見ないと何もできないということでもある。これってけっこう不便。

最近、朝の電車で乗り過ごすのを避けるために、8:26にバイブレータのアラームをかけているんだけど、止めるときは服の上から携帯のボタンをちょんと触るだけである。ポケットの中ではおそらく自動的にセンサーが切れるiPhoneではこれができない(※)。緊急時に、ポケットの中で手探り110番することもできない

かつてPDAと言えば全面タッチスクリーンというのが当たり前だったが、pilot(Palm)がその常識を覆して、最小限のボタンが非常に有用であることを示した。Jobsはボタンをふたたび否定したけど、Palm育ちのおれとしては、ボタンは必要だと思うのだな。iPod shuffleだって、しょっちゅう手探りで操作してるし。

あと、タッチスクリーンはフィードバックに乏しいので、文字入力が遅くなる。たとえ女子高生でも。それを補うためにうんと賢い予測変換を入れてもらいたいものだが、今回のiPhoneにはまだ増井テクノロジーが未搭載なので、たぶんまだまだショボいだろう。これも待ち要因になる。

ツッコミにも書いたが、ボタンが1個だけあるのを失念していた(知らなかったわけではない)。その意味ではこの例は不適切。個人的には、初代pilotと同じ、4個ないし5個のボタンが必要だと思う。この数はいみじくも、Apple唯一の「手探りデバイス」であるiPod shuffleが持つボタン数にほぼ等しい。

GPSがない

GSMではない日本での動向が気になるところだが、そんなもん、3社(WILLCOM入れて4社?)が競い合って対応させてくれと頼みに行っているところだろう。心配はいらないと思う。

ただし、3G端末で定額料金にしてもらわないと話にならない。そして、今年から3G端末はGPSを搭載すべしということになっている。ということは、今回発表になったiPhoneはGPSを搭載していないという理由で国内販売はなさそう、ということになる。

もっとも、(auユーザとしては)GPSを搭載していない端末なんてありえないと思うくらい、GPSは便利なものなので、そういう意味で今回のiPhoneには魅力がない。ぐだぐだ言ってないで最初から搭載しとけよ、と思う。

唯一の選択肢はGPSを搭載しなくてもいいWILLCOMから出ることだが……どうだろう。そうなるとauを手放せないことになるから、ちょっと困るな。

アプリを追加できない

インタビューによれば、iPhoneにはユーザアプリを追加できない。なぬー!? なんのためにMacOS Xを搭載したのよ。

現在使っているW-ZERO3に搭載されているWindows Mobileは、はっきりいって最低最悪のOSだ。他に選択肢がないからしかたなく使っている。だから、オルタナティブなOSを乗せた端末が出てくれれば、乗り換えるだけの強力な理由になる。

OS Xが載っているなら、当然RubyCocoaで自作ソフトを……って流れになるじゃないか。それができない!? ありえん。だったら、(標準ではダメダメながら)有志が作ったソフトウェアのおかげでなんとか使い物になっているWindows Mobileの方がまだ夢があるってもんだ。


ともかく、Windows Mobileは、ホントにホントにホントにホント〜〜にどうしようもないOSなので、Appleにはがんばって欲しいと思う。でも、もうちょっとなんとかしてくれないと買えない。

Tags: apple iphone

オブジェクト指向入門 第2版 原則・コンセプト (IT Architect’Archive クラシックモダン・コンピューティング)(バートランド・メイヤー)

via あちこち。昨日発売だったのか。とうとう出たんだ。感慨深いねぇ。

前の『オブジェクト指向入門 (ASCII SOFTWARE SCIENCE Programming Paradigm)(Bertrand Meyer)』は、それこそ人生に衝撃を与えた1冊と言ってもよいくらいの重要な本なので、新しいのも欲しいけど高いなぁ。そもそも今の仕事は、オブジェクト指向とかまったく関係ないし……。

ともあれ、これから/今まさにプログラミングに取り組んでいる人は、高くて厚いけど一度は読んでおくべき本だと思う。歯ごたえがあるけど、それだけに長期に渡って血となり肉となる。きっと後悔しないはず。買うときは、ぜひ上のリンクから(バキ)。

Tags: book

ISBN-13 ⇔ ISBN-10相互変換

↑のエントリを書こうとしたら、Amazonのページに新しいISBN-13が併記されていたので、変換ライブラリを書いてtDiaryのamazonプラグインに仕込んだ。それを使うために(大手術中で今はちょっと危ない)trunk HEADに追従してしまったよ。ビクビク。

置き場所がないのでここに貼っておこう。仕様書を読んでそのとーりに実装しただけの馬鹿正直・未最適化バージョン。

#
# isbn.rb: ISBN Library
# Copyright (C) 2007 by TADA Tadashi <sho@spc.gr.jp>
# Distributed by LGPL.
#

def isbn_10?( isbn )
   isbn.gsub( /[^\dX]/, '' ).length == 10
end

def isbn_13?( isbn )
   isbn.gsub( /[^\d]/, '' ).length == 13
end

def isbn_check_digit_13( isbn )
   raise ArgumentError::new( "#{isbn} is wrong ISBN-13" ) unless isbn_13?( isbn )

   odd, even = 0, 0
   isbn.gsub( /[^\d]/, '' ).chop.split( // ).each_with_index do |item, index|
      if index % 2 == 0 then
         odd += item.to_i
      else # even
         even += item.to_i
      end
   end
   check_digit = 10 - (odd + even * 3) % 10
   check_digit = 0 if check_digit == 10
   check_digit.to_s
end

def isbn_check_digit_10( isbn )
   raise ArgumentError::new( "#{isbn} is wrong ISBN-10" ) unless isbn_10?( isbn )

   sum = 0
   isbn.gsub( /[^\dX]/, '' ).chop.split( // ).each_with_index do |item, index|
      sum += item.to_i * (10 - index)
   end
   check_digit = 11 - sum % 11
   check_digit = case check_digit
   when 10; 'X'
   when 11; '0'
   else; check_digit.to_s
   end
   check_digit
end

def isbn_13to10( isbn13 )
   isbn10 = isbn13.gsub( /[^\d]/, '' )[3,10]
   check_digit = isbn_check_digit_10( isbn10 )
   isbn10[9] = check_digit
   isbn10
end

def isbn_10to13( isbn10, prefix = '978' )
   isbn13 = prefix + isbn10.gsub( /[^\dX]/, '' )
   check_digit = isbn_check_digit_13( isbn13 )
   isbn13[12] = check_digit
   isbn13
end

if __FILE__ == $0 then
   i13 = 'ISBN 978-4-798-11111-7'
   i10 = 'ISBN 4-798-11111-2'
   puts "#{i13} => #{isbn_13to10( i13 )}"
   puts "#{i10} => #{isbn_10to13( i10 )}"
end
Tags: ruby isbn
本日のツッコミ(全20件) [ツッコミを入れる]

Before...

TrackBack [http://watcher.moe-nifty.com/memo/2007/01/converter_isbn1...]

レジ [>W32SA + W-ZERO3 + iPod shuffle」をiPhoneで置き換える(値段的に釣り合いがとれる..]

ymer [>レジさん iPhoneの価格は「2年間の縛り込みで」$599ですよ。]

ただただし [レジさんの指摘は、日本国内のロジックとしては妥当な面もあるけど、相手は(見かけ上の値引きである)ポイント還元にすらい..]

レジ [>レスをくれた皆さん 日本国内の販売になるなら、必ず日本国内の方式になるとした自分の認識が甘かったようですね。 ..]

TrackBack [http://sho.tdiary.net/20070120.html#p01 ただのにっき ISBN-13 ⇔ I..]


トップ 最新 追記
RSS feed