霊安日記

jf_nights の霊安草子。

式姫の専ブラ開発日記(その1)

タイトルを 式姫の(ry にしようとしたら、(そのn) 部分があったために省略できなかったじぇにです。

いくつか進捗したので、書こうかなーっと。実はこんなことしてる場合じゃなくてレポートとか卒論の準備(何もしてない)とか院死(ry

キャッシュ

前回苦しんでいたキャッシュについてですが、部分的に解決しました!!!具体的には、起動時に特定のキャッシュ(今回の場合は units.json とか)を消去してサーバとのやり取りをするって感じです。これなら毎回全てのデータをサーバから受け取ったりすることなく、欲しいデータだけもらうことができますねぇ。思いついてしまえば簡単なことなのになぁ…。

しかし、ここで「よっしゃ、データをもらう方法が分かればもう出来たも同然!」と思ったところに問題が…

Windows8

はい、最近流行り(?)の Windows8 さんです…。win7で開発してたんですけど、そっちで動いてたコードが win8 では動かなくて…。

Environment.SpecialFolder.InternetCache が、まぁ名前の通りキャッシュのある場所を教えてくれます。だいたい、
C:\Users\なまえ\AppData\Local\Microsoft\Windows\Temporary Internet Files(\Content.IE5)
にあると思います。Content.IE5 は explorer とかでは見えないですがコマンドプロンプトからだと見えます*1。ぐえぐえ。で、↑ではこの Temporary Internet Files 以下のディレクトリで、今回なら
units*.json
にヒットするfileを探して消去してます。*2
……消去されるはずだったのです…というか、さっきも書いたように、win7 ならこれで万事上手く解決なのですが、win8 だとなんと↑の検索部分で「アクセスが拒否されました」とか言われてプログラムが落ちます。えぇぇぇ。権限とかいじってさわってみたんですがだめでした…。仕方が無いので、先に OS(のバージョン)を検出して、win8以降だったらキャッシュを全部削除とかいう感じにしました。ちなみに削除に参考にした(というかコピペした)ページがこちら。
[HOWTO] Visual C# .NET で WebBrowser コントロールをホストするアプリケーションからキャッシュをクリアする方法
…長いし意味分からんしぐえぎえでした。しかも、途中のファイルを総取り出ししてる感じなところのwhite(true)部分をそのまま書くとそこで無限ループに入って、結局while{ ~ }の括弧を消したらなんとか(全削除が)出来ました。

一体何と戦っているんだ…………

まぁなにはともあれ、これで win8 でも動くようになりました。ハイ。((((

その他

他にもいくつか気付いていないバグがいくつかあったのを修正してます。
例えば、式姫はいろいろサーバがあったりアカウントの認証方法がいろいろあったり… ガマニアアカウントでログインしてた人から、「ガマニアは対応してないの?」って訊かれて初めてその存在を知ったと思えば、探してみたりTwitterのフォロワーさんから mixi だとかなんとかの式姫を教えてもらったり…ウッ…現在時点で対応したのは本家・DMM・ニコニコ・ガマニアですね。ガマニアはアカウントの認証が特殊なだけで内部的というかサーバ自体は本家と一緒なのでまだ助かった感があります。ただその多様なログインにはちょっと対応する気が無くなったので、ログインぺージに飛ばすだけにしました…。

他には、どのサーバを選んでいても、これは完全に僕のコードのミスなのですが、絶対(そこのサーバの)1鯖を見に行くようになってて、結果的に右側の情報欄が反映されなかったりしてました。直したよ。

あとバグ以外にも要望みたいなので、今新しくタブを開こうとすると IE が開くという最悪な感じになっててどうにかしてほしい、みたいなのがあって、目下それに対応するコードを書いてる途中です。
それと同時に WindowsForm から WPF に移ろうかなーなんて思い始めたのが、まぁ運の尽きだったわけですが、


うおあ~
やっぱり変(?)なとこに気を使うのは非常にコストを使ってぐえぐえですね…。

さて、タブより上までの部分を version 0.1.2 として密かに置いてて、使ってみたい人には URL を伝えているので、もしつかいたかったら言ってください。まだまだ最高には程遠いですがっがっが。
(まだ一般に公開するには微妙すぎるβ版、という気分なので…)

ではでは~~~

*1:Explorer でもアドレス直打ちなら見えるっぽい?

*2:なんで*が付いてるかというと、実際には units[n].json(n にはランダムな数字が入る)という微妙な名前で保存されるからです~