2003年 02月09日(Sun) 4連休2日目
_ このタイトル何も考えなくていいな(笑)。あと2日はこれでいこう。
_ 携帯Java(ezplus)。思ったよりも融通が利かない部分があるものの、いろいろな事が出来そう。しかしA5303Hは他の携帯と比べて実行速度が格段に早いなぁ。さすがSH-MOBILE。
2004年 02月09日(Mon) Fate攻略中
_ Webで拾ったネタ。コマンドプロンプトで (*´Д`)ハァハァ と打つと…なかなか笑える。皆さんもお試しあれ。
_ で、今月その2巻目が出るというので、昨日買いに行きました。そして今日買った本を開いてみると・・・間違って1巻買っちゃった事に気づいてみたり(T-T)
_ Fate。2つ目のシナリオ終了。彼の正体は1つ目のシナリオの時から怪しんでいたのですが、2つ目のシナリオでこれでもかこれでもかと証拠が出てくるので、もしやミスリードを狙っているのか? と逆に疑心暗鬼になったり。
_ そして最後のシナリオの扉が開きました。しかしシナリオは4つと思ってたけど3つだったのか。後はTRUE ENDとおまけがあるような気がしますが。
2006年 02月09日(Thu)
_ [プログラム]Javascriptでハマる(解決編)
何か昨日の日記はこれとバトンのせいで、ここ4年間のなかで最も長い日記だったような気が。 それはともかく昨日の続き。
さて、昨日はeachを使った途端に動かなくなっちゃうと言う話でしたが、これはeachの引数としてeachで呼び出す関数を渡してるんですが、これがC++の関数オブジェクト等とは性質が違うからです。
説明だけではなんですから例を挙げましょう。まずは昨日の例に新しいクラス定義を追加してみます。
var Counter2 = Class.create(); Counter2.prototype = { initialize: function() { this.count = 0; this.observers = new Array(); }, setCallback: function(callback) { this.callback = callback; }, addObserver: function(observer) { this.observers.push(observer); }, notifyObservers: function() { for(i = 0; i < this.observers.length; i++) { this.observers[i].update(this); } } };
こんな感じ。Counterクラスとの違いはcountUpが無いのと、その代わりに任意のコールバック関数をセットするsetCallbackがあるという点です。
で、インスタンス生成以降の部分は以下のように書き換えます。
var a = new ElementView('count1'); var b = new ElementView('count2'); var c = new Counter(); var d = new Counter2(); c.addObserver(a); d.addObserver(b); d.setCallback(c.countUp);
HTMLも上に合わせて書き換えましょう。
<html> <script type="text/javascript" src="./prototype.js" charset="UTF-8"></script> <script type="text/javascript" src="./test2.js" charset="UTF-8"></script> <div id='count1'>0</div><div id='count2'>0</div> <input type='button' value='count up 1' onclick='c.countUp()' /> <input type='button' value='count up 2' onclick='d.callback()' /> </html>
実際の例はこちら。ボタンが2個あってcount up 1を押すとc.countUpが呼ばれ、count up 2を押すとd.callbackが呼ばれる仕組み。
で、動かしてみると分かるんですが、count up 2を押すと下側の数字がカウントアップされていきます。あれ? d.callbackってc.countUpがセットされているだからcがカウントアップされるのでは?
そうなのです。Javascriptでは関数を呼び出したオブジェクトがthisに設定されるのであって、元のオブジェクトには関係ないのです。だから上の例でもcでは無く、dがカウントアップされるのは正しい動作と言えます。
でもそれだと困る事もあるんですよね。私はcのcountUpを登録したんだから、cがカウントアップして欲しいって場合だってあると思います。ここでは触れませんが特にイベントに対するコールバック等では良くあるケースだと思います。
で、私も上のような状況にハマってしまって悩んでいたんですが、これに対する回答がprototype.jsの中に存在しました。それがbindです。
bindを使うとある関数のthisを固定(束縛)することが出来ます*1。まあ例を挙げたほうが分かりやすいでしょう。先ほどの「d.setCallBack(c.countUp)」の部分を次のように書き換えます。
c.addObserver(a); d.addObserver(b); d.setCallback(c.countUp.bind(c));
実際の動作を見れば、count up 1でも、count up 2でもcがカウントアップしているのが分かると思います。これは「c.countUp.bind(c)」でc.countUpのthisをcに固定(束縛)しているからです。
さて最初の問題に戻りましょう。実はeachを使った途端に動かなくなってしまったのも、eachに渡した関数のthisが適切に設定されていなかったせいなのです。したがってCounter.notifyObserversを以下のように書き換えれば解決します。
notifyObservers: function() { this.observers.each( function(value, index) { value.update(this); }.bind(this) ); }
*1 かなり大雑把な説明ですが(^^;
2007年 02月09日(Fri)
_ [その他]青春18きっぷ
asahi.com:「青春18きっぷ」特別価格8千円で JR20周年記念 - 暮らし
ながらを利用するなら一人頭3200円+指定席代で東京往復が可能。4/1のアイマスライブの選択肢としては魅力的。
_ [ツッコミレス]まあ今日の夜までには決めます
>えりんさん氏
まだ土日のどっちにするか決めてないんだけどね。
>ひまわり氏
ねぎだく氏引き込むなら日曜の方がいいのかなぁ? あと歌人氏が興味津々のご様子。
_ [パチスロ]昨日のキュンキュン
1kで何ゲーム回るか計っていたら、中リール下段に葵を押してしまってカバン取りこぼす罠。あーやっぱり仕事帰りは疲れてるなぁ。おかげでその後中リール中段に葵が来てなおかつカバンが揃っても*1、次のゲームでもう一度中中葵になるまで自分を信じられなかったよ(^^;
で、BIGが終了して2ゲーム目に青ブルマ出現でAT入れず即死。心が折れたので即ヤメ。投資2k、回収6.6k。まあ電撃文庫代ゲットという事で。
*1 本来中中葵でチェリーじゃない場合は葵BIG確定。ただしカバン成立時に真ん中に葵をビタ押ししてしまった場合はその限りではない。
_ [その他]indigo氏がネット難民に
最近日記の更新もないし、Skypeにも現れないなぁと不思議がっていたら、indigo氏の一番弟子(?)、keikei氏がSkypeに出現。
あーそれでこの間突然通話切れたのか。でも何で?
だから某BBは止めておけと(ぉ まあできるだけ早いご帰還をお持ちしております。
_ [その他]○○かわいいよ○○
ねくろん「ああ、○○かわいいよ○○ってのはよくあるネット上のテンプレなんだよ。」
でも良く考えると元ネタ知らないや。こういう時はぐぐる先生に聞いてみよう。
で、出てきたのが以下。
九十九式 -log-: [Hello] 「○○かわいいよ○○」 「こんこんの事だからこんなに言うんだよ!」
今ではすっかり“ネット慣用句”として定着しているこの言葉、出展はハロプロネタである。 もともと、明石屋さんまがラジオ番組で、共演者のあさみ(カントリー娘。)の名前を忘れてしまい、それをごまかすために「かわいい子、と覚えていたから名前忘れた」という滅茶苦茶な言い訳をし、番組終了まで「あさみかわいいよあさみ」と念仏のように唱えつづけたことに由来する。その後、モー板を中心に流行し、声優系にも転用されるなどして定着した。
ハロプロ発祥だったのか。
2009年 02月09日(Mon)
_ [ツインエンジェル][パチスロ]PVとかマイスロ先行登録開始とか
マイスロ先行登録開始らしいです。壁紙とかもらえます。
そしてニコ動のPV紹介。
快盗天使ツインエンジェル2 PV 1/2 【高画質版】‐ニコニコ動画(ββ)
うはwww オレテラ養分wwwww
快盗天使ツインエンジェル2 PV 2/2 【高画質版】‐ニコニコ動画(ββ)
なんといううたわれすたーとw
2010年 02月09日(Tue)
_ [TCG][プログラム][ruby]ブシロードTCGカードリストリーダー
以前同じものを作ったんだけど、IEが7になったせいか、文字コードのあたりでエラー吐くようになってたので、クラスっぽく書き直した。本当は1行直すだけでOKな気がしたけど。
#coding: utf-8 require 'rubygems' require 'mechanize' require 'watir' module BushiroadTCGReader class ExpansionList include Enumerable def initialize(uri) @list = [] agent = WWW::Mechanize.new page = agent.get uri (page/"div[@id='expansionList'] a").to_a.each{|link| @list << CardList.new(uri, link.inner_text.strip) } self end def [](index) @list[index] end def each @list.each{|i| yield i } end end class CardList include Enumerable attr_reader :expansion def initialize(uri, expansion) @uri = uri @expansion = expansion @list = [] end def get ie = Watir::IE.new ie.goto @uri ie.link(:text, @expansion).click sleep 2 str = '' array = [] n = 0 begin flag = false ie.document.Links.each{|i| if i.Href =~ /cardno/ array << Card.new(i.Href) end if i.InnerText == '≫' flag = true end } ie.link(:text, '≫').click if flag end while flag ie.close @list = array self end def [](index) @list[index] end def each @list.each{|i| yield i } end end class Card include Enumerable def initialize(uri) @uri = uri @array = [] end def get agent = WWW::Mechanize.new page = agent.get @uri @array = (page/'table.status td').to_a.inject([]){ |array, e| array << e.inner_html } self end def [](index) @array[index] end def each @array.each{|i| yield i } end end end
Ruby1.9っぽいけど、Nokogiriが動かないので1.8.7でのみ確認。
#coding: utf-8 require 'bushiroad' require 'kconv' e = BushiroadTCGReader::ExpansionList.new( "http://svsm.jp/jsp/cardlist") e[3].get[7].get.each{|i| puts i.tosjis }
と書くとこんな結果。
<img src="../jsp-material/img/t044.gif" alt="カード"><br> <a href="javascript:void(0);" onclick="JavaScript:showQu estion('No_T044');">≫ このカードに関するQ&A</a> 浅倉 南<br><span class="kana">アサクラミナミ - マネージ ャー</span> <a href="cardlist?cardno=No_T045">上杉 達也</a><br><spa n class="kana">ウエスギタツヤ - スタート地点</span> No_T044 U サンデー タッチ <img src="../jsp-material/img/icon_woman.gif"> 2 2500 3000 【約束して、必ず勝つって】<br>【自】〔ベンチ〕このカード がサポートした時、<font color="red">あなたのリングに<img src="../jsp-material/img/icon_man_s.gif">がいて、あなた のリタイヤが相手より多いなら、</font>そのアタックはパート ナーアタックになる。<br><img src="../jsp-material/img/ic on_hiroin_b.gif"><img src="../jsp-material/img/icon_supo tu_r.gif"> -<br> - -
_ ひろゆ [要望を出した人登場wありがとです。 プログラム的な詳しいことは解らんけど、使いそうなカードは個人的に修正していきます..]
2011年 02月09日(Wed)
_ [アーケード]DIVA近況
金の聖夜のHARDでパフェ取るのに意外と苦労した。
Ex新曲ではchange meとカンタレラでパフェ取ったので、残ったパフェ未達成曲は以下。
- 迷的サイバネティックス
- カラフル×メロディ
- こっち向いてBaby
- 透明水彩
- 金の聖夜霜雪に朽ちて
- 多重未来のカルテット -Quartet Theme-
- SYMPHONIC DIVE -DIVA edit-
- 初音ミクの消失
- ロミオとシンデレラ
- いろは唄
- どうしてこうなった
- フキゲンワルツ
ちなみに順序は自分がパフェ達成できそうだと思っている難易度順。迷的とカラメロは連打部分で成功すればパフェ取れるところまで来ています。
逆に言えば連打ができないから未だにパフェ取れないわけですが。連打なんか嫌いだ。
Babyは理論接続はできてるので後は安定度の問題。
ロミシンはグレートも取っていない(というかルカ誕生祭ではVP優先してたので全然やっていない)ので、そろそろやらないと。
_ ひろゆ [チョップだ!チョップで全て解決できる!ww]
_ 大盛りねぎだく [日記コメントにも書いたけど、両日ともに無理です。 ていうかなぜに私を引きずり込むのかと小一時間(ry]