/ 最近 .rdf 追記 設定 本棚

log[2007-01-13]



20070113()

[Ruby][Hiki] Hiki-0.8.6トロールールinstall

まずローカルで試してからアップロドしたのだがローカルの ApacheRuby-1.9.0を呼ぶのでFrontPageの表示からログインまでを可能にするために加えた変更点のリトをメモしておく

 hiki/config.rb: Hiki::Config#initialize

-      instance_variables.each do |v|
+      instance_variables.each do |v| v = v.to_s;

vにシンボルが渡されて次の行で v.sub!したときにエラーになっていた

 hiki/command.rb: Hiki::Command#cmd_login

          if page && !page.empty?
-           redirect(@cgi, @conf.base_url + @plugin.hiki_url( page ), session_cookie( session.session_id ))
+           redirect(@cgi, @conf.base_url + @plugin.hiki_url( page ), [session_cookie( session.session_id )])
          else
-           redirect(@cgi, @conf.index_url, session_cookie( session.session_id ))
+           redirect(@cgi, @conf.index_url, [session_cookie( session.session_id )])

Cookiesession_id=SESSIONIDの形でなく SESSIONIDkey名なしの状態でブラウザにセトされるからログインに失敗していた

Hiki::Command#cmd_logoutでは同じ引数を [session_cookie(session_id, -1)] としていたので同じように配列にした

 hiki/storage.rb: Hiki::HikiDBBase#md5hex

-      Digest::MD5::new( s || '' ).hexdigest
+      Digest::MD5::hexdigest( s || '' )

リファレスマニュアルには Digest::MD5.new([str]) とあるが引数の数が 0でないと叱られる

 hiki/db/tmarshal.rb: TMarshal::dump_text

    when Array
-     "[\n"+obj.collect{|x| dump_text(x)+",\n"}.to_s+"]"
+     "[\n"+obj.collect{|x| dump_text(x)}.join(",\n")+"\n]"
    when Hash
-     "{\n"+obj.sort_by{|e| e[0].inspect}.collect{|k,v| "#{dump_text(k)} => #{dump_text(v)},\n"}.to_s+"}"
+     "{\n"+obj.sort_by{|e| e[0].inspect}.collect{|k,v| "#{dump_text(k)} => #{dump_text(v)}"}.join(",\n")+"\n}"

dumpに失敗していた

原因となった Array#to_sのバージョンによる出力の違い↓

Ruby-1.8.5p12> [1,2,3].to_s #=> "123"
Ruby-1.9.0 20061205> [1,2,3].to_s #=> "[1, 2, 3]"

リファレスマニュアルには

to_s
   self.join($,) と同じです。

と書いてあるから to_s(ある種) joinを代用していても仕方ない

と思ったがどちらにしろ Array#to_sの出力は $, に依存するので後で(loadするとき) evalすることを考えれば今回の to_sの使用は不適切

[Ruby][Hiki] 差分の表示

上のエトリFrontPageの表示とログインまでやったが差分の表示もおかしかったので Array#to_s らしき部分を join('') に書き換えまくったら直った模様

'string'.join は存在しなかったので書き換えてエラーにならないということは考えたとおり Array#to_sったかそのコドが実行されてなくて発覚してないが実は間違いだった(実行されたらNoMethodErrorになる)かのどちらか ^_^; こういう実行してみないとわからないところは javascriptと同じでレアなコドパスのデバッグを難しくするね

以下

 style/default/hikidoc.rb: HikiDoc#escape_meta_char

+if(defined? ' '.ord) # Ruby-1.9
   def escape_meta_char( text )
     text.gsub( META_CHAR_RE ) do |s|
+      '&#x%x;' % s[1].ord
+    end
+  end
+else
+  def escape_meta_char( text )
+    text.gsub( META_CHAR_RE ) do |s|
       '&#x%x;' % s[1]
     end
   end
+end

いきなり Array#to_sと関係ないが String#[index]Integerに代えて一文字の Stringを返すようになった対策

 hiki/util.rb: Hiki::Util#word_diff

      if digest
-        return View.new( diff, src.encoding, src.eol ).to_html_digest(overriding_tags, false).to_s.gsub( %r|<br />|, '' ).gsub( %r|\n</ins>|, "</ins>\n" )
+        return View.new( diff, src.encoding, src.eol ).to_html_digest(overriding_tags, false).join(\).gsub( %r|<br />|,  ).gsub( %r|\n</ins>|, "</ins>\n" )
      else
-        return View.new( diff, src.encoding, src.eol ).to_html(overriding_tags, false).to_s.gsub( %r|<br />|, '' ).gsub( %r|\n</ins>|, "</ins>\n" )
+        return View.new( diff, src.encoding, src.eol ).to_html(overriding_tags, false).join(\).gsub( %r|<br />|,  ).gsub( %r|\n</ins>|, "</ins>\n" )
      end

 hiki/util.rb: Hiki::Util#word_diff_text

      if digest
-        return View.new( diff, src.encoding, src.eol ).to_wdiff_digest({}, false).join.gsub( %r|\n\+\}|, "+}\n" )
+        return View.new( diff, src.encoding, src.eol ).to_wdiff_digest({}, false).join(nil).gsub( %r|\n\+\}|, "+}\n" )
      else
-        return View.new( diff, src.encoding, src.eol ).to_wdiff({}, false).join.gsub( %r|\n\+\}|, "+}\n" )
+        return View.new( diff, src.encoding, src.eol ).to_wdiff({}, false).join(nil).gsub( %r|\n\+\}|, "+}\n" )
      end

join('')join(nil)か統一しろよとセルフツッコミ

 hiki/util.rb: Hiki::Util#compare_by_line_word

-          before_change = Document.new(line[1].to_s,
+          before_change = Document.new(line[1].join(''),
                                       doc1.encoding, doc1.eol)
-          after_change  = Document.new(line[2].to_s,
+          after_change  = Document.new(line[2].join(''),
                                       doc2.encoding, doc2.eol)

 hiki/docdiff/view.rb: View#apply_style

       if block_given?
-        source = yield block[1].to_s
-        target = yield block[2].to_s
+        source = yield block[1].to_a.join ''
+        target = yield block[2].to_a.join ''
       else
-        source = block[1].to_s
-        target = block[2].to_s
+        source = block[1].to_a.join ''
+        target = block[2].to_a.join ''
       end

block[i]nilの可能性があるので to_a.join

 hiki/docdiff/view.rb: View#apply_style_digest

       if block_given?
-        source = yield entry[1].to_s
-        target = yield entry[2].to_s
+        source = yield entry[1].to_a.join ''
+        target = yield entry[2].to_a.join ''
       else
-        source = entry[1].to_s
-        target = entry[2].to_s
+        source = entry[1].to_a.join ''
+        target = entry[2].to_a.join ''
         end
       if  i == 0
         context_pre  = ""  # no pre context for the first entry
       else
-        context_pre  = @difference[i-1][1].to_s.scan(context_pre_pat).to_s
+        context_pre  = @difference[i-1][1].to_a.join('').scan(context_pre_pat).to_s
       end
       if (i + 1) == @difference.size
         context_post = ""  # no post context for the last entry
       else
-        context_post = @difference[i+1][1].to_s.scan(context_post_pat).to_s
+        context_post = @difference[i+1][1].to_a.join('').scan(context_post_pat).to_s
       end

 hiki/docdiff/view.rb: View#source_lines

   def source_lines()
     if @source_lines == nil
-      @source_lines = @difference.collect{|entry| entry[1]}.join.scan_lines(@eol)
+      @source_lines = @difference.collect{|entry| entry[1]}.join(nil).scan_lines(@eol)

 hiki/docdiff/view.rb: View#target_lines

   def target_lines()
     if @target_lines == nil
-      @target_lines = @difference.collect{|entry| entry[2]}.join.scan_lines(@eol)
+      @target_lines = @difference.collect{|entry| entry[2]}.join(nil).scan_lines(@eol)

[Hiki]セキュリエラー続発

Hikiの設置が一段落したようなのでページの編集に取りかかるこちらもすんなりとはいかないプラグイン記法でできることが著しく制限されているのだ

tDiaryは日記の著者を信用している(自分の日記を壊そうとする者はいないので著者!=管理者となるレンタルサービスでは話が違ってセキュアモドでシスムを守る必要があるが)のに対しHikiはページ編集者を全く信用することができない誰でも書き込めるのが Wikiだから

そんなわけでセキュリエラーが続発中プラグイン記法で許されるのは単一のプラグイン呼び出しだ任意の文字列を埋め込むこともプラグイン呼び出しを連ねることもRubyであれやこれやをすることもできない全てをプラグインの中に閉じこめてしまいHikiージではそれを呼び出すしかないわけだ(プラグインは Hikiの設置者が責任を持っているので信用されてい)

{{CGI::escapeHTML @hoge.inspect}}

どころか

 {{CGI::escapeHTML '<abc>'}}

ですら通らないんだからいやはや全く

 いやいやいやいや

SecurityError (Insecure: can't intern tainted string)

これは Ruby 1.9.0に固有のエラーじゃまいったら Hikiの方をちょこっと変更してもいいんじゃないか?

[Hiki][Ruby]プラグイン記法

 {{hoge a b 5}}      #=> hoge('a', 'b', 5)
 {{hoge 'a' b(5)}}   #=> hoge('a', 'b', 5)
 {{hoge ,a(, b)(5)}} #=> hoge('a', 'b', 5)
 {{hoge, a, b, 5}}   #=> PluginException('not plugin method: hoge,')
 {{hoge; hage}}      #=> PluginException

文法の緩さとか一つのメソドしか呼べないとか嫌すぎる

そりゃあ Ruby

require digest/md5

という風にライブラリ名をクーテーションで括らずに書けたら楽だなとかは考えるしSymbolStringのサブクラスになったときは

require :sqlite3

が通るのを一番に確認したけど

defined? printf
alias printg printf

を見て

  • printfって何?クラスは?
  • printgprintfの間にカンマがないけどどういう文法? alias専用ルール?

というのと同種の嫌悪を感じる


20070111()


20070109()

[BAD BOY]少し冷静になって考える

  • どの道のどの部分を走るか
  • どこに保管するか

車を運転することもある今では以前みたいに自分の安全を車ドライバー任せにしてしまうことの迷惑さにも頼りなさにも無自覚ではいられない(無法な運転は怖くてできない自分にとってドライバーにとっても怖)

十分な広さのない歩道は走れないしかといって車道にも十分な広さがないと身の危険か後続のイライラを感じることになるだろうし

いざ自転車に乗ろうと思うと走る場所に困る


20070108() 成人の日昔より一週間も早い海の日をハッピーマンデーの対象にしたのは間違いあれは 20夏休みの始まる前の日であることに意味があったのだから

[]手袋

ーボド用の手袋ドはやらないが柔らかいのでスキーにもバイクに乗るときにも使う

34年前に買った手袋が昨日ダメになったための予定外の出費

インナーとアウターの分かれてない防水手袋は乱暴に脱いでインナーの指先が裏返ったら終わりなのねん指先の粘着テープと防水シトが絡んで団子になってもう指が通らない

[BAD BOY] 買う今年は買う

DR250Rを買ったのが 2003年の 5月か 6その少し前の 4月か 5月にヤフオクで今乗ってる DRを見つけるまで悩んでたのがDJEBELを買うか BAD BOYを買う(DJEBELDR250Rの兄弟車で主なところではタンクの容量とラトが違)

DRを買ったので BAD BOYを買うお金はなくなったが今なら買える問題は保管場所と乗る機会人間は楽な方に流れていきますので機会が確保できるかどうガソリン高と運動不足が背中を押してくれるはず。なのだが運動しないからと体脂肪が増えてるわけでもなく*実のところどちらもあまり気にしていないどうなる?

もうひとつ購入をためらわせるのが BAD BOYの人気近所では見たことないのが救い

自分の持ってる iPodは三世代目だが当時はまだ猫も杓子も iPodという雰囲気ではなかったように思う仮に今 iPodを持っていなくて携帯音楽プレーヤーを探しているとしたらiPodを除外して良さそうなのを探した上でやっぱり iPodを買うと思うッテリーの保ち以外に勝るものが他のには無いからね

なんだやっぱり iPodを選ぶんじゃないかと書いて気付いたので迷わず BAD BOYを買ってこようと思います。BAD BOYの代わりは存在しないので

* そのからくりは昔から生活に運動が組み込まれていなくて運動しないのが常態だからです。


20070107() 掏摸読めなかったふと原題が目に入ったFINGERSMITH邦題の方が耽美な雰囲気があって好きだ


20070106() 12日に D言語 1.00 リリース

鼻から脳出島軍艦島

桜庭一樹 読書日記【第11回】を昨日読んだ

鼻から脳のエピソドでは語感の間抜けさ「さようなら初恋のミスマッチに笑いを堪えられなかった

その後桜庭氏が東京創元社の編集諸氏か「出島と呼ばれている話が続く

この話を読むまで長崎の島と言えば出島しか知らなかった自分は真似してこの作家「出島と呼ぶことはできない

何の話なのかというとスラッシト ジャパンで今日、 長崎の軍艦島来春から一般公開へという記事が出ていたよというだけのこと

物を知っている人というのは自分の知っていることに関連づけて更に効率的に知識を増やしていけるのではないか


20070105()

[][Amazon]いつのまにか* ISBN13桁になっていたASINと 新ISBNは一致してないみたいだしJAN(ISBN-13)を使って本を ItemLookupできるようになるのだろう

AmazonISBNASINが一致しなくなるのが一番痛いASINの桁数を増やしてくれるのが楽なんだけどAmazonにとっては楽じゃないんだろうなあ

気になる AWSでの ItemLookup 従来は [An ASIN]の部分に単に ISBNを入力するだけで本の情報を得ることができた

http://webservices.amazon.com/onca/xml?Service=AWSECommerceService
   &AWSAccessKeyId=[Your Access Key ID Here]
   &Operation=ItemLookup
   &ItemId=[An ASIN]

これに

   &IdType=EAN

というパラメーターを付ければ ItemIdとして ASINの代わりに JANを指定できる。新しい 13桁の ISBNJANと一致しておりまったねただし

If you select SKU, UPC, or EAN as the IdType for your request, you also need to include the SearchIndex parameter.

(IdTypeSKU, UPC, EANを選んだら SearchIndexも指定する必要があるよ)

SearchIndex is required any time you select SKU, UPC, or EAN as the IdType for your request.

(上と同じ内容だけど any time you select EANと書いてあってよりハッキリ)

書かれているので同時に SearchIndexも指定しなければならない

Amazon.co.jpで許されてる SearchIndexの値は以下の通り

  • Electronics
  • Music
  • Classical
  • DVD
  • Kitchen
  • Software
  • VideoGames

以上本がありませんね

2006-11-14版の ドキュメトによれば JANを使って ItemLookupすることはできないみたい

 amazon.co.jp アソシエト・トラルに答えがあるじゃない

https://affiliate.amazon.co.jp/gp/associates/network/help/t4/a7/

転載しちって良いかな?

自動化された方法またはプログラムを組むことによって13桁のISBNからアソシエト・リンクを作成することはできますか?

はい13桁のISBN(以下ISBNへの移行後はAmazon Webービスの一部であるAmazon E-Commerce Service (ECS) のシスムを利用してISBNをもとにアソシエト・リンクを生成することが可能になる予定です。Amazon Webービスでは現在ItemLookupの機能を利用して流通コドであるEANJANをキーにしたデータ参照が可能でありこの機能に新 ISBNを使用したマッチングを追加する予定です。こちらのサポト開始時期につきましてはE-Commerce Serviceの開発者フーラ(英語版または日本語版ースレターによりご案内しますので定期的にチックされることをお勧めします。なおAmazon Webービスのご利用には登録が必要です。登録がお済みでない方はこちらより登録IDを取得してください

見覚えがあるから一度は読んだはずなのに

* 2007年からです。知らなかったわけではありませんが忘れていました


20070103()

[FF12]340時間ぐらいプレイして (現在雪の降るブルオミシェイ)

本筋の戦闘はボスが倒せないなんてこともなくかつ戦闘がダルく感じるほど敵が弱いわけでもないそして本筋とは関係ないモブは全滅させられるほど強いお金は貯まりやすく減りやすいどれもうまくバラスがとれていると思う

序盤から普通の敵に混じって倒せない敵がうろついてるのも好ポイドラクエで橋を渡るときのような緊張感がドに生まれている本筋とは関係のない方向にどんどん歩いていって強めの敵と戦うこともできる

 1213では書けなかったガンビトについて

ガンビトはプレイヤーが

  • いかにケアルを選ぶ手間を省くか
  • いかに盗むを選ぶ手間を省くか
  • いかに密猟を選ぶ手間を省くか
  • いかにたたかうを選ぶ手間を省くか

考えるためのシスムだと思う

だから 12月に書いたようにタイミング良くボタンを押して攻撃をガドするというのはガンビトと方向性が反対向きなので FF12にそれを求めるのは無理だったかもしれない

ところで

  • 今の手持ちの条件ではチージを選ぶ手間は省けない沈黙の味方にボキャル猛毒の味方にポイゾナもできない
  • ボスに密猟をしかけないようにガンビトをオフにする手間も
  • 敵の弱点に合わせて使う攻撃魔法を選び直す手間も省けない

ガンビトの条件がさっぱり増えない

一度レジトされたら同じ敵に二度目は仕掛けない賢さがあってもよかったのでは?そしたらボスに効かない密猟を延々しかけることもないしレジトされることの多い補助魔法をガンビトに組み込むこともできるし

 FF12の戦闘は面白いのか?

大味な印象であまり面白くない

  • 敵の攻撃はかわせない
  • 敵も味方も離れた敵に攻撃を当てすぎ
  • そのくせ飛行タイプに分類される敵にはたとえその敵が降下してきていても攻撃を当てられない
  • 敵と味方の間に割り込んでいっても敵の攻撃が背後の味方に届くので盾になれない
  • だから HPの低い魔法使いは生き残れない役割分担ができない
  • 結局はコマトル立ち位置移動に意味はない
  • 敵味方で団子になって範囲魔法打ちっ放し最後まで立ってた方が勝ち

コマトルなのが悪いわけではなく無用な期待をさせるのが悪い見た感じFFTの地形や高低差を利用したり魔法の発動時間を考えて敵を誘い込むor押し留める戦略性やベイグラーリーのアクション要素を期待させるのにどちらも存在しない

 ついでにアナログコトローラDUALSHOCK2についての不満

PS2で導入されたアナログコトローラ「アナログの意味するところDUALSHOCK2(セレ/スタトを除いた)ボタンの押し具合が 256段階で表されることだったと思うけどRPGアナログコトローラDUALSHOCK2を使うと弊害が目立つ

つまり RPGでは 256段階の微妙な押し具合を判別する必要があるのは稀で殆どはどこかに閾値を設定してオンオフの二つに分けるのだと思うがこの閾値が高すぎるFF12を含めてプレイしたどの RPG*押してるつもりなのに押してないと判断されることが多くて疲れる

 瀕死パワーアップ

やりすぎ

攻撃回復MP回復のバラスを忙しく保ちながらボスの HPを削っていってあとちっとというところで必ず敵の攻撃が激しくなる死者続出で復活と回復に専念しても追いつかずわずかな余裕を見つけて攻撃してみたらそれまでの半分以下のダメージしか与えられない倒せないっての

これじゃあ余裕で倒せるか倒せないかのどちらかしかなくなるって(なんとか倒せそうだは大詰めで倒せないだと判明す)

 2007-01-11:トナックと召喚を

トナックと召喚を全く使っていない(覚えてすらいない)ことを書かなかったのはフェアじゃなかったかもしれない存在を忘れていたよ

トナックってそんなに強いの?

* そうでないゲームもあったかもしれないが記憶に残るのは不満のあったゲームだけということで


20070101() 気付けば 0時をまわっていた元旦である日が昇ってないからまだなのか?何にせよ今日は昨日の明日で明日の昨日でしかない俺は年末だからって掃除をしたりはしないっ!しなかったっ!嘘です。今も部屋の中をひっくり返してる最中です。もなかではありません


20061231() ミリオンダラー ベイビーはすごい映画こんなに集中してのめり込んで登場人物に寄り添って見た映画は思い当たらない


20061230()

[Ruby][iPod] ipodpl.rb

前々回(912)前回(1212)

結局

> ruby ipodpl.rb I:\ artist:"小松 未歩" rating:5 rating:4 or and --album-shuffle > temp.m3u

という形になった

最近は iPodから曲が溢れてきていてHDDが安いこともあって iPodに入ってる曲や溢れた曲全て PCに入っている

iPodが唯一のミージックライブラリだった 9月とは状況が変わっているので iPod内の曲を PCから検索できてもあまり嬉しくないiPodより多くの曲が PCに入っているから

一応、産物

予め iTunesDBから使えそうな情報を拾って SQLite3形式のデータベースに登録しておいて検索は SQL任せという仕様です。

 2007-02-11

Songbirdのデータベースは最初から SQLite良き哉良き哉


20061226()

[m.k]脳内ソング

冬になると Love gone今年は 愛してる...今日は雨だったので雨が降る度にと涙と One Side Loveった


20061220()

[DR250R] セルが回らん

断線してるみたいーブルを押したり引っ張ったりして繋がるのを待つ押しがけはできないがキックがあるので致命的ではないが冬はアドリング状態を維持できなくてすぐエトするので道の真ん中で慌てることになるかもしれない

 ックがあるから致命的ではないとか書いておきながら

セルが回らないときはキックでも火が飛ばない罠

キルスイッチが ON(OFF?)になってたりクラッチを握ってないとこうなるので原因は二つに絞られた