| ◆ 構造を考える 〜ダウンロードカウンタ編〜 | 2012/05/14/(月)14:16 |
このホームページ設立以前からCGIのダウンロードカウンタを使っていて、これはそのCGIに任意のGETパラメータを付けてリクエストすると登録したアドレス(DLさせるファイル)へリダイレクトしてカウンターを回す、というもの。
これを見てるとその日のうち特定のファイルだけやたらDL数を稼いでるケースがちょくちょくあったりして、それを見て私は「もしかしてファイルがDL出来なくなってて何度も試してるのでは?」と不安になって時折クリックして試したりしてる。
つまり、今のCGIの方法だとファイルの有無まで確認は取らないため、見てくださってる方が正常にDL出来てるかどうかの確認が取れない。
ならきちんと有無を確認する方法とは?
- ログを読む
- サーバーは絶対にアクセスログを残す。それを読めば少なくともそのリクエストが正常に処理されたかどうかの確認は出来る。繋がらなかったときのケアは別途で出来るし。ただ、自宅鯖での運用になる。鯖が逝ったりドメイン解決出来ずにそれさえ使えなかったら論外
- クッションページを置く
- いわゆるダウンローダー的なやつ。一日一回くらいの生存期間でキャッシュ作るようにして、アクセスする度に対象のファイルの情報(ファイルサイズとか)を読み込むことで生存確認を取る。いや、確認さえ取れればいいからわざわざ毎回変わらないデータを読みに行くのは意味ないので……そんな感じ。
というわけで、まあファイルを別鯖に置いたことによってログの管理できるようになって、そのログを辿れば200になってるからきっとDL成功したのだろう、とか読むことは現時点でも出来ないことはないけど、もう少し上手く運用する方法はないかなと考え中。
webサービスってどうやって集計とかログの利用とかしてるのかね?外部のアクセス解析みたいにjs置いたりとかしてるのかな?それじゃブラウザ上で表示しないファイルのアクセスまでは辿れないし、やっぱりログから全部引っ張ってきてるのかな。今じゃfluentdなんてツールもあるようだし、ログの可視化するなんてのは難しくないのかも知れない。
zabbixとかもログ監視とかできるんだっけ?
| ◆ 世界樹2完クリ | 2012/05/06/(日)23:52 |
遂にフルコンプリートした。長かった……。
最後は殺戮の盾と八岐の蛇鞭だった。まあ定番っちゃ定番かも。
ともかく……長かった……
ひたすら6層にこもって狩りまくったり、意外に全然倒してなかった毒イモムシを虐待したり、隠しマップのFOEをオルボンかけて潰しまくったり。
でも間違いなく世界樹3よかは本編クリア後のやりこみに時間かけてないだろうなとは思う。
あれ裏ボス倒すためにただでさえ攻撃力の低いゾディ子を力の宝典使いまくってほぼカンストとかさせてたし。ペンギンにメテオ打ちまくってレベル上げとか。
後目指すはメルルの完クリ。
ぶっちゃけロロナもトトリも真エンドは見てないし、暁の女神に至ってはクリアすらしてないし、ゲームを消化するって閾値を下げると対象になるゲーム一気に増えるなあ。やりたいゲームだけやっていこ。義務化したゲームに面白さは期待できない。
| ◆ javascriptとTwitterOAuth認証つづき | 2012/05/04/(金)11:37 |
どん詰まり注意報(twitter編)
http://hpcgi2.nifty.com/oisinbo/diary/nicky.cgi?DT=20120422A?Mode=CPREVIEW
のつづき。
POSTで受け取ったデータを踏み台のperlのスクリプトが適当に置き換えてリクエストヘッダも追加して送る、みたいなのを考えてたんだけど実際それ人の目に見えるところに置いといたら文字通りスパムの踏み台にされるな、とか感じてセキュリティに関わる問題にまで発展しそうなところでなんとか喰いとめてる現在、
結局今の環境で全部なんとかやるのは無理でした。
というのも、niftyはperlライブラリの登録ができないのでLWP絡みのライブラリは使えず、xmlHttpReqestではクロスオリジンの都合上普通のブラウザでは送ることが出来ず、そしてJSONPだとリクエストヘッダに独自の要素を追加することはできない。
perl絡みは家のサーバを使えば、xmlHttpRequestの方はGreasemonkeyみたいなプラグインから飛ばすようにすれば対応できるが……。
nginxで運用してきた自宅鯖もApacheに乗り換える頃合いか。それともperlを動かす部分だけApacheに任せるか?なんにしてもめんどくさいなあ……。そこまでして動かそうと思ってたわけじゃないし……。
ちなみに、Twitter @Anywhereなんてのもあるらしく、これはtwitterドメインのページをiframeで呼び出してそこ経由でxmlHttpRequestを飛ばすことで外部からjavascriptで色々できるAPIも存在するらしい。
| ◆ 世界樹の迷宮2の進捗 | 2012/04/30/(月)01:31 |
絶賛虱潰し中。
ようやく全モンスターの全素材を入手した。最後の素材は氷竜の牙。ブレイバントや死人の法で攻撃力上げたブシドーにアイスオイルを塗って通常攻撃で撲殺するって方法だったんだけど、結構回復使われたりして調整に手間取った。
ディノゲーターも苦労したけど、なんとか腕縛り維持したりなんとかダク子生かしてトラッピングで削ったりしてゴリ押しで倒せたし、一番苦労したのは幼子だったなー当然だけど。
で、残りは武器類。
6層の敵をたんまり倒すとリストに載る類の武具防具はほとんど揃ってないし、カボチャ系や採掘系も微妙に残ってたり厄介極まりない。
……とは言うものの、1のアダマース(カリナン×50)とかよっかはマシかなあ……。
まあ劇的に厳しいモノもないし、地道に素材かき集めてたらクリアできるような状態だな。近いうちに終わらせたい。
ディノゲーターとは:
世界樹の迷宮2の30階の採取ポイントか固定エンカウントで稀に出てくる最強のザコキャラ。
攻撃パターンは単純で、基本は頭使用の甘噛み、縛られた場合は使用部位なしのじゃれるを使うというパターンのみ。甘噛みは全体ランダムの6回程度の物理攻撃、じゃれるは全体に全部位縛り(各部位ごとに判定)。
甘噛みの破壊力が尋常ではなく、幼子とガチバトルできる戦力のPTのパラディンでも素で貰ったら即死するレベル。レベル10のフロントガードで守れば前衛のブシドーやダクハン(それぞれHPブースト10)がかろうじて一発耐えるくらい。
物理耐性も高く、HPも10000と相当高いためまともに挑んでも戦線を維持するので精一杯になることうけあい。
そんなアホみたいな破壊力を誇るが表記上の攻撃力は80と同階に出るモケーレムベンベと10しか変わらない。ちなみに幼子は110。
死の間際になってもじゃれついてくる人懐っこさで多くの冒険者に死を振りまく悪魔のような存在。コイツとのエンカウント時は基本的に逃げられないので通常の開拓時に出会ったら災難だと思って諦めた方がいい。
ただ、ランダムエンカウント(低確率)なのでいざ迎撃の用意が出来てもなかなか会えなかったりする。そんな点も含めて世界樹2の中でもS度の高い要素。
| ◆ iPhoneの面白いアプリの色々 | 2012/04/27/(金)07:49 |
iphoneには面白いアプリが結構ある。
ちょっと前話題になった蛇腹型のスケジューラみたいなのじゃなくて、「これ、○○出来るのかな?」みたいな意味合いで。制約が多いハードだから細かい要素の一つ一つですらあらかじめ想定した上で買わないといけないって言うのは人にとっては「騙された!」ってなるかもしれないけど、私はなかなか楽しんでたりもする。
そんなソフトの一部を紹介。
- AcePlayer
- 色んな形式のメディアをどんな場所からも参照して再生できるよ!
っていう内容のプレイヤー。webから引っ張ったりSMBから引っ張ったりDLNAから引っ張ることも可能らしい。
実際SMBで共有してるNASから色んな形式の映像ファイルを再生してみたけど、フルHDのはカクカクで使えたものじゃなかった。SDのでかろうじて、なんだけど何故か美味しんぼのtsはCMは問題ないのに本編入ると途端にモタり始める。
結局まともに再生できたのは昔のmpegとMXの一部のts(ミルモ)くらいだった。x264でエンコした、ビルトインのプレイヤーで再生できるmp4は全部ダメ。再生する段まで行かない。
やったあ!これで録画溜めてたミルモを消化できるぞ!
ちなみに、ライト版は音声しか再生できない。画面には「2.99$出してフル版買おうぜ!」って出てくる。
映像だけ版、音声だけ版は85円でフル版は250円。まとめた分80円くらい割高。 - SonicMax pro
- 普段聞いてる曲の音が劇的によくなる、というBBEの音楽プレイヤー。
マキシマイザーとか作ってるBBEらしくステレオエンハンサーやEQだとか色んな機能をつまみを可能な限り少なくする方向で搭載していて、環境に応じて色々プリセットも用意されてるが大体ドンシャリ系。スピーカーの場合音割れしてた曲でも綺麗に通ったりするので悪くないと思う。
ちなみに私の使ってるヘッドフォンでは何使っても余計だった。やっぱり環境が比較的まともだとプロがその曲のために考えたミキシング、マスタリングの結果が一番よく聞こえるものなのね。
音をいじってる関係上ビルトインのプレイヤーを使うことも出来るはずがなく、プレイヤーやプレイリストの管理まで全部このアプリで行っている。
まあそれを考えると当然ながら、cloudscrobは使えない。
イヤフォンとかで聞いてるときは使いたい所なんだけど、そこだけが惜しい。
多分、再生回数のカウントとかもやってないと思う。cloudscrobも多分そこからscrobbingする曲のリスト読んでるんだと思うし。 - ゆるゆり 絵コンテアプリ
- なんとなく。
ただ、このアプリはすごい。
マルチタスク、ソフトウェア制御の向きのロック(横含む)、プロセス殺した後のレジューム機能などユーザーが潜在的に「こうなったらいいなあ」って思ってる挙動のほぼ全てをカバーしてる。
絵コンテからアイコンが付いてるカットをタップすると対象となる原画を見ることができて、その場合に限りめくる振る舞いなしで動きを確認できる機能とかはもう少し良くなる余地がありそうだけど現時点でも割と完成されてる。
カットの背景を合成してくれる機能もあればいいのにって思うのは原画アプリに対して贅沢言いすぎだな。
今は配信の更新が止まってて2話までしか公開されてない。配信直後の半額販売時ならマストバイ。 と言ったところ。
「まあ出来んだろうな……」
と思いながらホイホイ買ってみたけど想像通り出来ませんでした、という体験記のつもりだったんだけど2本だけじゃ説得力に欠けるから1本足したらなんかコンセプトがぶれてしまった。
割とAcePlayerは期待してたんだけどなあ。ありがちなオチになってしまった。
mp4の再生すら出来ないとなるとiphone用のmp4にエンコしてストリーミングできる鯖に置いとく方法取るしかないな……。
| ◆ 処理の分散と仮想化の話 | 2012/04/25/(水)08:49 |
タイトルだけ見るとたいそうな話だけど、2年前くらいに買った中古のノートパソコンが性能的にもう無理ってレベルに達してきてて、SSDでブートしてるからまだなんとか使えてるような感じになってる。
しかし、うちには優秀なパソコンがあるわけだし、ネット環境があるときはそっちに処理を移すことができればコイツもしばらく延命ができる、というよりは新しいwindowsのノートパソコンを買う必要がなくなる!
と思い一番最初に考えたのが「メイン機にOSを置いて処理を含めメイン機でやらせる」と言う手法。これが最初はまかり通るのではないかと割と本気で思ってた。
一応メモとして書いとくけど、全処理をメイン機に任せてその結果を受け取る方法って今のRDP7.0によるリモートデスクトップ(後述)と全く一緒だし、メモリだけローカルに置くような構造はCPU-メモリ間が特に高速であることを要求されることを考えたら不可能なことくらい3秒考えたら分かる。
ということで、色々調べてみるとネットワークブートの他にもリモートデスクトップを使った手法が最近の流行だと言うことも分かった。VDIという仮想化環境を作ってそこへRDPでアクセスする手法もあるらしい。
RDPなんて大したものじゃない、と経験上思っていたけどwindows7以降はRDP7.0という全く違うものになっているようで、都度描画する方法ではなく描画をコマンド化することでAeroにも対応できたし高パフォーマンスになったんだと。
しかしラスタな動画に関しては描画コマンドにできるはずもないので、ゆとりのできた帯域の分だけ動画の転送に割けるのか、というところが一番の問題。
実際私の環境でメイン機にアクセスかけてみると、普段の操作では気にならないことはないけどほとんど意識せず使えるけどFlashや動画を再生しようとすると途端に不安定になり、結局「家の有線LANで引いた場合ニコニコ動画のエコノミー回避してる動画くらいならまともに動く」くらいの感じだった。
ちなみにこの動画再生に関して、RDP7.0は「マルチメディアリダイレクト」という動画再生とかはクライアント側に任せる機能を積んでいる。まあ早い話がそういうことである。
ちなみにtcpmonitorとタスクマネージャをにらめっこしながら動画再生のテストしてたけどあまりCPUの負荷はかかってなかった。IE以外だと結果は悪かった。うちにある兄のメイン機からアクセスかけてみたらtsでも問題なく再生できたのでクライアント側のハードウェア依存の度合いは大きいと思う。
結論としては、クライアント側の起動ソフトを整理して帯域が確保できるところで使えるなら使えるかも?程度でこのノーパの延命としては正直どうかなって感じ。
しかし後々windows8ではHyper-Vを標準搭載するって言うしVDIの期待度は高い。
ちなみに、パフォーマンス的にはCitrixのICAという同列の技術の方がいいらしい。Xenの環境で満足にwin機動かすのってすごく骨なんだけどね……。VGAパススルー必須だし。
そして最後にネットワークブート。PXEって言葉も知ってたし、最初に考えてたブッ飛び構想と同じ流れを汲んでると思ってたのでこっちの方が処理分散で言ったら現実的?と思ってたけどやはり想像とは違った。
PXEはディスクレスでブートする方法で、クライアント側にftpやDHCPなどを前もって入れておき、起動したときに指定したサーバにリクエスト出してOSイメージを引っ張ってくるって言うのが基本的な流れ。その後の処理は全部クライアント側で行うのでどうしようもない。
結局どの道へ進んでも今使ってるノーパを延命させる方法は見つからなかったわけだけど、もうこれはこれとして諦めるしかないのか、まだ検証していないICAに思いを馳せればいいのか、なんとも難しい問題である……。
ちなみに余談だけど、弊校では去年まではPXEを使ってシンクラを実現していたためパフォーマンスはいいものの端末にそこそこの性能が要求され起動するまでの時間が糞長いという問題があったけど、今年からVDIに切り替わり端末の性能は大して必要なくなり起動時間も早くなった代わりに動画再生や細かな動きでティアリングが目立つようになった、ということも今回の調べ物で理解できたのでまあ。
| ◆ どん詰まり注意報(twitter編) | 2012/04/22/(日)18:20 |
TwitterクライアントとOAuthと回り道 - http://hpcgi2.nifty.com/oisinbo/diary/nicky.cgi?DT=20120415A?Mode=CPREVIEW#cp20120415A
でも触れたとおり『C#でTwitterクライアント作ろう』ってところから『認証のテストを行うためにperlでフォーム書こう』ってなって、『普段使ってるniftyではLWPとか使えなくてPOST送信するの難しそうだからjavascriptで書こう』ってなって、最終的に『じゃあXMLHttpRequestを使おう』ってなって現在未だ達成できず。
というのも、まず各ブラウザの互換で悩んだ。IE8以前ではdocument.getElementsByClassNameが無かったりXHR.openが動かなかったり。
多分その辺はjQなら対応してるんだろうけど、まず直打ちでやろうとか考えた結果互換性を全て切り捨てることに。FireFoxで動けばいいや。
そもそもXMLHttpRequestはよそのドメインのページのデータを取ってくるためには作られてはおらず、最近になってようやくXMLHttpRequest Lv.2とか言って対応するようになったらしい。
しかしinetspyやらFirebugなどでチェックするとおかしな動きしてるので色々調べると、twitter認証で必要なAuthorizationなどの独自のリクエストヘッダを付けるとOPTIONS形式で
Access-Control-Request-Method: POST
Access-Control-Request-Headers: header
と言った形で送られ、データの取得を許可するかどうかの伺いを立てる(preflight)のだそうだ。当然設定で許可されてなかったらそれまで。
twitterは許可されてない。
っていうところが現在。どこまで行けばいいんだろう……。
| ◆ 幼子倒した | 2012/04/19/(木)00:18 |
ってことで昼モード撃破。27ターン。
やったこと:
- 全員引退させてレベル上げ(一人ガンナー→レンジャーへ)
- アムリタ数個とアクセラ2十数個用意
- ハイクローラー相手にガードしまくってフォース溜める
- あとはひたすらアザステオルボン
って感じ。
パラディンはラストに動かすためにダガー装備してアザステオルボン打つターン中に即アクセラ2を注入する係。"去れ永遠に"の前までにポイント溜めること。自分だけ耐えられる攻撃が来るときはネクタルオールの準備(もっとも、死ぬとフォースとかハゲるから基本は縛って封じる方向で)。
ダークハンターは縛りが全部ハゲたらオルボン打ってエクスタシー。一部解けてるけど技は封じてる場合適当に、技打たれるときは場合に応じてトラッピングかアザステオルボンか。"孤独は尊ぶ"とか"我の〜"シリーズはとりあえず縛って止める。
ブシドーはいかなる時もツバメ返し。
メディックはアクセラやアクセラの補助と回復。回復も別ジョブ使ってアイテムで補完すればもっと早く倒せたかも。ほとんどレジストデッド機能しなかったし。
レンジャーはアザステ係。適当にサジ矢も。
みたいな感じでやった。割とオルボン打った後の縛り解け具合で状況が一変するルーチンだけどやれないことはなかった。
上で書いたとおりメディックを他のアタッカージョブに変えて(ガンナーとか)一部の攻撃を"敢えて"受け入れてトラッピングで返したりすればもっと早めにカタ付けることは出来たかも。
もっとも、これで全てが終わったわけじゃないので、あとはヘカトンさんのイベントとか、竜とかもしっかり倒さないと。
いくらなんでも4までには間に合うね。
↓倒したときのパーティ編成
| ◆ 諸王の聖杯 | 2012/04/16/(月)07:52 |
今更世界樹2やってる。
というのももう家にいられる時間も限られてるのでお残ししてるゲームを消化してしまおうという考えからなんだけど、やっぱりこれバランスブッ壊れてるよね。スタッフの根性が曲がりきってるというか。
ポッドキャストだったかブログだかで『1%』と明言されていたはずなのに5回のうち3回は引っかかる6階層採掘の『ああっと!』の発生率。しかも袋小路で、その2マス前にカボチャのPOPポイントがあるから先制された次のターンで逃げるの成功しないと乱入してきて逃げられなくなる。
他にも大半のFOEが持ってる即死級の全体攻撃や異常な耐性を持った敵とか、色々おかしい。初めてプレイした世界樹がこれだったら3階層で投げてた自信ある。
ともかく、今は条件ドロップやクエストを埋めているところ。
幼子?あれはもう……ラストでいいでしょ?どうしてもアレだったら裸カウンター使うし。
しかし、今再開してる世界樹もアトリエもどっちもあと数ヶ月したら新作出るんだよね。いい加減懲りたので限定版に手を出したりはしないつもりだけど。
| ◆ TwitterクライアントとOAuthと回り道 | 2012/04/15/(日)07:10 |
今私は色々やろうとしてたことをぶっちぎってtwitterクライアントを作るプログラミングをやっている。
気がついたらすごい回り道をしていた。
twitterはOAuthを使っているため、そのクライアントを作るためは熟知している必要があるわけだけれども、今はどの言語でも分かりやすく簡単に認証してくれるようなライブラリも出ている。
にもかかわらず僕はOAuthについて1から勉強を始めていた。
後々詳しい話は書くけど、twitterの認証ではPOSTによるリクエストが頻繁に使われるため、ならformを使えばいいんじゃないか、とperlの勉強。
今このホームページはniftyで運営されており、うちの自宅サーバの方もまだCGIをすぐに動かせるような状態じゃなかったのでniftyで動くようなCGIを作ってその上でOAuthの確認を行えるようなスクリプトを作ろうと思った。
結果は、というとフォーム以外の方法でPOSTリクエストを送る方法がなかった。
理由は致命的なライブラリ不足。基本的なモノまでごっそり削られてるniftyのCGIはuse strictすら許されず、ましてやLWPなんて使えるはずもない。
ということで表面上だけフォームであとはjavascriptでPOSTするようなスクリプトを作ろうと思っているんだけどそうなってしまうともはやperlである必要ないな、と本末転倒も本末転倒な事態が発生中。
明日はどっちだ。