生活リズムが乱れすぎ。どこかのタイミングで戻したいんだが。
ガルパン一挙放送とかあって日曜が潰れた。
屍者の帝国とか出てたので読んだ。
はじめの方は伊藤計畫だなーと思ったらパンツじゃないから恥ずかしくないもん!とかしれっと入ってきて最後にはしっかり円城塔だった。←なにこのあたまわるい感想。
円城塔はなんとなくほんわかして終わってしまうのが好きなのでいいんだけど、伊藤計畫だったらもっとなんかハードな終わり方したんだろうなあと思う。
ファイルのアップロード先をAmazon S3に移行した。
日本語のファイル名も上げられるようにしたんだがいろいろ苦労した。 上げること自体は何の問題もなくできるんだが、上げたファイルのURLを取得するのに一苦労。 Java APIのAmazonS3Client.getResourceUrlで取得すると日本語の部分が一切エスケープされてないURLが取得できる。 しかしそこにリダイレクトしようとすると日本語の部分以降が落とされたURLにリダイレクトされてしまう。誰だよそんなことすんの。 なんとなく調べた感じではWebサーバで落としちゃってるのかなぁと思うけど、そもそもレスポンスヘッダに日本語そのままつっこむのは無理なんじゃないかという気がするので当然かもしれん。
どうやってエスケープしたものかいろいろと考えたが、getResourceUrlを使うのをやめて自分でエスケープ済みのURLを組み立てることで解決した。http://バケット名.s3.amazonaws.com/オブジェクトのキー名
というだけのURLなので自分で組み立てても大したことないよね。あとはオブジェクトのキー名を/
で区切った要素毎にエスケープして/
で繋ぎ直せばおk。これでうまくいった。
ダウンロードは一旦WebアプリにアクセスされてからリダイレクトしてるのでS3から直接ダウンロードできるんだけど、アップロードはWebアプリに上げてもらってアプリからS3に上げてる。これは遅くてもったいないので直接S3に上げてもらいたい。ドキュメントにはHTMLフォームからのアップロードというのが書いてあるので出来るんだろうけどちょっとめんどくさそうだ。現状アップロード状況が見れないとかクライアント側で解決しないといけない問題もあるからアップロード周りは保留かなぁ。
既にDropboxに上がってたファイルはS3にコピーして最後にDB内のURL参照をS3にして移行完了した。これでやりたかった最低限のことはできたので一安心だ。
イベントに向けてブラウザゲー的なものを作り始めた。
置く場所はAzureでクライアントとはSignalRで通信するだけーという形でまずサーバ側を作る。 AzureのWebロールプロジェクトっとかいうテンプレートから作ったらめちゃくちゃでかいサイトが急に出来てびっくりした。 アカウント登録とかそんなのいらないですよ!
WCFプロジェクトが小さそうなのでこのあたりから始めよう。実行しようとするとAzureエミュレータが起動できんのでVisualStudioを管理者権限で立ち上げろ的なことが言われる。え、なんで……。日常的に管理者権限で開発させるとかありなんですかMSさん?WheelBallが使えなくなるのですげー痛いんだけどなんとかならんのかなぁ。
デバッグは開始できたものの、起動するとすぐ例外で落ちる。エラーメッセージは「error」とだけ書いてある。誰だこれ作った奴死ねよ。 調べるとログを書き出す先のローカルストレージとやらが設定されてないので落ちた模様。 作ったWebロールのプロパティで設定できるとのことで作ってあげたら起動した。 もう少し優しいメッセージでおねがいします。
SignalRを使ってみよう。これは難しいこともなくドキュメントをみながらなんとなく書いたらなんとなくできた。おわり。すてき!
DBもさすがに必要なんだよなぁ。RDBなんてめんどくさい物を使う気はしないのでAzureのStorage TableというKVS的なものを使う。 しかし調べるとADO.NETがどうこうと出てきて、これはべつにRDB使っても書き方は同じなのではという気がした。 実際そうなのかもしれんが、SQL Serverの設定とかめんどいからこれでいいか。
SignalRもADO.NETもさっぱりわからんまま見様見真似で書いてみたがたぶん書けた。まだ一回も実行してないいけど。クライアント側書いてないから実行できないんだよ。クライアント書くのめんどくせぇ。 いや今気付いたけどSignalRはJavaScriptクライアントだけじゃなくて.NETクライアントあるからこれ使ってテスト書けばいいんじゃないですか。そうしよう。
ルールの細かいところも決めないとな。ゲームはドンジャラ的な単純な絵合わせなんだけど1、カードの種類と役と点数を考えねばならん。カードの絵柄もどうしよう……。
コンプガチャ入れようとか言われたが、ルールの根幹自体が既にコンプガチャみたいなものだった。ただしガチャ要素はない(はず)。 ↩
WPF版GUIを作ったよ!というPull Requestを貰ってたのをついにマージした。
ちょっと起動時に失敗することがあったのでそれを修正したり、設定の保存方法を変えたのに追従させる程度で問題なく動いてくれてると思う。Windows.Forms版とは同等に動く、はず?
しかしこのあとどうするか悩ましい。Windows.Forms版と同等には動くんだけど、見た目も機能も同じに作ってくれたおかげで今こいつに移行する理由がない。 もちろんWindows.Formsなんて代物に比べて格段にいじりやすくなったので今後はこいつをいじっていくんだけど、ユーザにとってのメリットはまだないし、メリット出せるようにするにはちょっと時間かかりそうだなぁ。まだあまり使ってなくてバグ出せてもないのでリリースはもうちょいWindows.Forms版で続けていくか。
WPF版の問題はもう一個あって、確実にmonoで動かないことだ。Windows.Forms版はLinuxでは動いてるということで、実用的かどうかはともかくそれが無くなって悲しむ人もいるのかなぁと。……いないか?いなさそうな気がするな!解決!!
OSXではもともとWindows.Forms版も動いてないのでこっちは諦めてる。 Mono用にはタスクトレイに常駐してHTML UIを表示できるだけのようなものを作りたいんだけど、Gtk#で作るのはなんかやめた気がする。OSXで不具合があったからのような気もするがなんでだっけかなー。問題なければGtk#だけでOSXもLinux(とか)も対応できて嬉しいんだけど。
UIはともかく内部の整理とかいろいろいじったりしたいんだけど手をつける時間が作れないなぁ。早起きしたい。