艦これ:ランカーへの道 1週目

※たまにはこんな内容のブログでもいいかなーと

戦果を稼ぎつつ月次内で500位以内に入るとランキング報酬としてレアな装備や装備の先行配布が行われるのですが、第六駆逐隊攻略とかやっていたのでランキング報酬については今まで全然意識していませんでした。戦果は月跨ぎである程度引き継がれるので、継続してランキング入りしている人がやや有利な形になっており、途中から参加する場合は若干不利になります。

しかし、年跨ぎでは戦果はリセットされ 1 から始まるので全員平等に始められるようになっています。なので今回試しに 500位以内のランカーに入れるかどうか挑戦してみようと思いました。

せっかくなので1週ごとにランキングで今何位なのかブログに書いていこうと思います。土日に書くつもりなのですが、1週目の週末はちーたんタッチボードのリリースとかで割と手が付かなったので今日書いています。

さて、1週目といっても4日ぐらいしかなかったのですが、現在の戦果ランキングを見てみるとこの位置にいました。

KanColle-150105-20533320_2

372ポイントで 865位についています。ここからまずは 500位を目指すのですが、その500位を見てみると…、

KanColle-150105-20533777_2

27ポイント差、結構近いですね・・・。

なんとなくなのですが 500位以内は割と簡単そうなので、今月の目標は 100位以内を目指そうかと思います。ただ、100位のポイントは見ることができないので地道に順位をあげて確認していくしかないようです。(他の人に聞くというのもありですが・・・)

 

さて、今回はここまでにして次回は2週目の戦果報告をしたいと思います。まだ実験段階なので今回は書かないのですが、次回あたりにでも戦果稼ぎ方法について書いてみたいと思います。

]]>

ソフトウェアキーボード&マウスパッドアプリ「ちーたんタッチボード Ver 0.30」公開しました

ちーたんタッチボード Ver 0.30 を公開しました。当初はちょっとしたプログラム改修のみを行う予定だったのですが、なんだかんだ手を入れていったらやや大きめの改修になってしまいました。なので Ver 0.30 です。

代表的な改修点は以下のものになります。

  • ボード作成 Excel ツール
  • ボードの前回の位置を記憶
  • 修飾キー(Shift や Ctrl)の動作を Windows 標準のタッチキーボードに準拠
  • ボードコンテナの設定に「KeyReleaseTimingWhenActiveWindowChange」を追加し、アクティブウィンドウを切り替えたときにトグルキーの解除タイミングを設定できるようにした
  • IME 変更時にボードの色が変更するタイミングを 200ms ほど遅延させました。これにより頻繁にボードの背景色が変更されるのを防ぎます。
  • Windows XP で起動エラーになっていた問題
  • 設定画面において色の変更が正しくなかった点
  • 設定画面で変更せずにキャンセルしても確認ダイアログが表示される問題修正(初回保存前は例外)
  • ボードやキーの「ImageRenderMode」パラメータの「Fill」の動作が「Uniform」に変更されます

ボード作成 Excel ツール

ようやくというかやっとできました。初めてちーたんタッチボードを作ってから約8か月になります。

以前の投稿でも書いたのですが当初は XAML ファイルからボードの定義を作成するように考えていました。しかし、ちーたんタッチボード用に拡張パラメータを設定しようとすると XAML だけでは限界があったので、いろいろ悩んだ結果 Excel ツールとして作成することにしました。

Excel なら図形も使えるしセルも使えるしマクロも使えるしフォームも使えると割となんでもできます。今回はレイアウトを図形で作成し、パラメータはセルにテーブル形式で入力するようにしました。そしてそれらの入力情報からマクロでボードコンテナ定義ファイル(JSON ファイル)として出力するようにしました。

ツールはダウンロードページから、使い方は別途専用ページを作成しましたのでそちらをご覧ください。

Excel 最強。

ボードの前回の位置を記憶

割と要望が多かった前回のボードの位置を記憶する機能を追加しました。これはボードを切り替えた時やちーたんタッチボードを起動したときなどに適用されます。

なぜ今まで実装していなかったのかというと、ボード切り替えのタイミングでボードが初期位置にないとボード切り替えボタンが毎回異なる場所に配置されてしまうため、連続でボードを切り替える場合に結構面倒だと思ったからです。

今回その対策については特に行っておりませんが、ボードの前回の位置を記憶するかどうかは設定画面で切り替え可能です。

修飾キー(Shift や Ctrl)の動作を Windows 標準のタッチキーボードに準拠

Shift や Ctrl の押下動作は今まで独自に考えて実装していました。普通に使う分には特に問題ないのですが、例えばエクスプローラー上でファイルを複数選択する際に Shift キーを押しながらマウス操作を行っても複数選択することはできませんでした。これは Windows 標準の動作と異なる処理を行っていたからです。

Ver 0.30 では限りなく Windows 標準のタッチキーボードと同じ動作になるように実装したので、Shift キーとマウスパッドを同時に配置してエクスプローラーでファイルを複数するような動作ができるようになりました。もちろん Ctrl や Alt も同様です。また他のアプリケーションでも同じ動作ができるようになっています。

用は今までは内側(ちーたんタッチボード)だけしか考えていなかったのを、外部アプリケーションも考えて改修してみたということです。

実はまだ Windows 標準のタッチキーボードと動作が違うところがあるのですが、あまり気にならないところなのでおいおい直していきたいと思います。

ボードコンテナの設定に「KeyReleaseTimingWhenActiveWindowChange」を追加し、アクティブウィンドウを切り替えたときにトグルキーの解除タイミングを設定できるようにした

修飾キー以外、例えばペイントソフト用にスペースキーをトグルにしたとき、トグルを解除するのを忘れたまま他のウィンドウをアクティブにしてしまうと、そのままスペースが連続して入力されてしまうという現象が前のバージョンまでありました。

Ver 0.30 ではウィンドウが切り替わったことを検知してトグルキーを解除する機能を追加しました。この設定は標準では無効になっていますが、ボードの設定で有効にすることができます。(文字キーをトグルにすることはほとんどないため)

配布しているペイント用のボードにはこの設定を適用しています。

Windows XP で起動エラーになっていた問題

すみません、いつの間にかエラーになっていました。どうやら XP と WPF のアイコンの問題だったのでうまく回避するようにしました。

設定画面において色の変更が正しくなかった点

詳しくは前に投稿した記事をご覧ください。

 

他にも変更点はありますが詳しくは更新履歴のページを参照してください。

 

あと、ホームページの更新履歴のほうで「ちーたんタッチボードのページを40か国語に対応しました」って書いてしまったんですが実はまだ「概要」と「ダウンロード」ページしかできてません orz 。時間があれば追記していきたいと思います。

]]>

ASP.NET MVC アプリケーションをデバッグ実行したときに「CultureNotFoundException」が発生する現象を回避する

環境

  • Visual Studio 2013
  • .NET Framework 4
  • ASP.NET MVC 3 (or 4)

現象

いつのころからか、ASP.NET MVC アプリケーションをデバッグ実行しようとすると図のような「CultureNotFoundException」の例外が発生する様になりました。

1

このまま続行して動かしても全く問題ないのですが、デバッグ実行するたびに出てくるので (100% ではないが7~8割) 結構煩わしいです。

海外サイトを調べてみると「C:WindowsMicrosoft.NETFrameworkv4.0.30319Temporary ASP.NET Files」フォルダを削除すると直るような記述はあったのですが、それっぽいフォルダが削除してみましたが直りませんでした。(フォルダ名が若干違う)

現状例外を直接発生しないようにする方法が見つからなかったので、ここでは例外が発生してもそのまま無視できる方法について記載しています。この方法を試す場合は、例外を無視しても問題ない場合に行ってください。

手順

Visual Studio を起動したらメニューの「デバッグ」から「例外」を選択します。

2

右の「追加」ボタンをクリックします。

3

「新しい例外」ダイアログが表示されたら、型から「Common Language Runtime Exceptions」を選択し、例外名に「System.Globalization.CultureNotFoundException」と入力して OK ボタンをクリックします。

4

一覧に「System.Globalization.CultureNotFoundException」が表示されていることを確認し、例外が発生しても一時停止されないように「スローされるとき」のチェックを外します。OK ボタンをクリックし、実行しても例外で一時停止されないか確認してみてください。

5

]]>

「グローバルIPアドレス取得ツール」Ver 1.01 を公開しました

実行するとグローバルIPアドレスを取得してファイルに保存するツール「グローバルIPアドレス取得ツール」Ver 1.01 を公開しました。もともとは sorceryforce.com の方で公開していたのですが、プログラム改修にあたって sorceryforce.net の方に持ってきました。

使い方や用途などは専用ページの方に記載していますのでそちらをご覧ください。

]]>

[C#] string.Trim メソッドでは「」を除去できない

メモ書きです。

あるプログラムで .aspx ファイルをいじっていて、そのファイルを直接プログラムで読み込んでみたらいくつかの行末に「」が付加されていました。原因はわかりませんがたぶんエンコードの問題ではないかと思います。

読み込んだ文字列は string.Trim を掛けていたので問題ないと思っていたのですが、処理上問題が発生していてデバッグしてみたら文字列の最後に「」が付いていたのが問題だったみたいです。string.Trim メソッドでは「」を削除できないようなので以下のようにして削除しました。

text.Replace("", "");
]]>

System.Windows.Media.Color の「scRGB」ってなんだ?

現在公開しているツール「ちーたんタッチボード」では、色情報を 0.0 ~ 1.0 の小数で持っているのですが、プログラムで ARGB として設定する際に 0 ~ 255 形式に変換する必要がありました。しかし、小数↔整数 の変換には誤差がつきものなのでどうにかならないのかなと思っていたのですが、WPF で使用されている System.Windows.Media.Color に「ScA」「ScR」のようなプロパティがあるのを見つけました。

MSDN で調べてみると渡す値は 0 ~ 1 と書いてあったので「0 ~ 255 の代わりに 0.0 ~ 1.0 の線形補間で色情報を渡せるんだ」と思い込んでしまったのが悪夢の始まりでした。

実は現在公開しているちーたんタッチボード Ver 0.23 では背景や文字の色設定を行うと設定するたびに微妙に色が変わったりする不具合が存在しています。もうお分かりかと思いますが、上記の誤解により発生している不具合です。(次に公開する Ver 0.30 では治ってます^^;)

当時原因がよくわからなくてほかのライブラリが原因なのではないかとか思ったりしていたのですが、最終的に Color 構造体に秘密があるのではないかと思い、値設定後の各パラメータのダンプを取ってみました。以下は ScX プロパティに 0.01 ずつ設定したものです。

A R G B ScA ScR ScG ScB
0 0 0 0 0.00 0.00 0.00 0.00
3 25 25 25 0.01 0.01 0.01 0.01
5 39 39 39 0.02 0.02 0.02 0.02
8 48 48 48 0.03 0.03 0.03 0.03
10 56 56 56 0.04 0.04 0.04 0.04
13 63 63 63 0.05 0.05 0.05 0.05
15 69 69 69 0.06 0.06 0.06 0.06
18 75 75 75 0.07 0.07 0.07 0.07
20 80 80 80 0.08 0.08 0.08 0.08
23 85 85 85 0.09 0.09 0.09 0.09
26 89 89 89 0.10 0.10 0.10 0.10
28 93 93 93 0.11 0.11 0.11 0.11
31 97 97 97 0.12 0.12 0.12 0.12
33 101 101 101 0.13 0.13 0.13 0.13
36 105 105 105 0.14 0.14 0.14 0.14
38 108 108 108 0.15 0.15 0.15 0.15
41 111 111 111 0.16 0.16 0.16 0.16
43 115 115 115 0.17 0.17 0.17 0.17
46 118 118 118 0.18 0.18 0.18 0.18
48 121 121 121 0.19 0.19 0.19 0.19
51 124 124 124 0.20 0.20 0.20 0.20
54 126 126 126 0.21 0.21 0.21 0.21
56 129 129 129 0.22 0.22 0.22 0.22
59 132 132 132 0.23 0.23 0.23 0.23
61 134 134 134 0.24 0.24 0.24 0.24
64 137 137 137 0.25 0.25 0.25 0.25
66 139 139 139 0.26 0.26 0.26 0.26
69 142 142 142 0.27 0.27 0.27 0.27
71 144 144 144 0.28 0.28 0.28 0.28
74 147 147 147 0.29 0.29 0.29 0.29
77 149 149 149 0.30 0.30 0.30 0.30
79 151 151 151 0.31 0.31 0.31 0.31
82 153 153 153 0.32 0.32 0.32 0.32
84 155 155 155 0.33 0.33 0.33 0.33
87 158 158 158 0.34 < /td> 0.34 0.34 0.34
89 160 160 160 0.35 0.35 0.35 0.35
92 162 162 162 0.36 0.36 0.36 0.36
94 164 164 164 0.37 0.37 0.37 0.37
97 166 166 166 0.38 0.38 0.38 0.38
99 168 168 168 0.39 0.39 0.39 0.39
102 170 170 170 0.40 0.40 0.40 0.40
105 172 172 172 0.41 0.41 0.41 0.41
107 173 173 173 0.42 0.42 0.42 0.42
110 175 175 175 0.43 0.43 0.43 0.43
112 177 177 177 0.44 0.44 0.44 0.44
115 179 179 179 0.45 0.45 0.45 0.45
117 181 181 181 0.46 0.46 0.46 0.46
120 182 182 182 0.47 0.47 0.47 0.47
122 184 184 184 0.48 0.48 0.48 0.48
125 186 186 186 0.49 0.49 0.49 0.49
128 188 188 188 0.50 0.50 0.50 0.50
130 189 189 189 0.51 0.51 0.51 0.51
133 191 191 191 0.52 0.52 0.52 0.52
135 192 192 192 0.53 0.53 0.53 0.53
138 194 194 194 0.54 0.54 0.54 0.54
140 196 196 196 0.55 0.55 0.55 0.55
143 197 197 197 0.56 0.56 0.56 0.56
145 199 199 199 0.57 0.57 0.57 0.57
148 200 200 200 0.58 0.58 0.58 0.58
150 202 202 202 0.59 0.59 0.59 0.59
153 203 203 203 0.60 0.60 0.60 0.60
156 205 205 205 0.61 0.61 0.61 0.61
158 206 206 206 0.62 0.62 0.62 0.62
161 208 208 208 0.63 0.63 0.63 0.63
163 209 209 209 0.64 0.64 0.64 0.64
166 211 211 211 0.65 0.65 0.65 0.65
168 212 212 212 0.66 0.66 0.66 0.66
171 214 214 214 0.67 0.67 0.67 0.67
173 215 215 215 0.68 0.68 0.68 0.68
176 216 216 216 0.69 0.69 0.69 0.69
179 218 218 218 0.70 0.70 0.70 0.70
181 219 219 219 0.71 0.71 0.71 0.71
184 221 221 221 0.72 0.72 0.72 0.72
186 222 222 222 0.73 0.73 0.73 0.73
189 223 223 223 0.74 0.74 0.74 0.74
191 225 225 225 0.75 0.75 0.75 0.75
194 226 226 226 0.76 0.76 0.76 0.76
196 227 227 227 0.77 0.77 0.77 0.77
199 229 229 229 0.78 0.78 0.78 0.78
201 230 230 230 0.79 0.79 0.79 0.79
204 231 231 231 0.80 0.80 0.80 0.80
207 232 232 232 0.81 0.81 0.81 0.81
209 234 234 234 0.82 0.82 0.82 0.82
212 235 235 235 0.83 0.83 0.83 0.83
214 236 236 236 0.84 0.84 0.84 0.84
217 237 237 237 0.85 0.85 0.85 0.85
219 239 239 239 0.86 0.86 0.86 0.86
222 240 240 240 0.87 0.87 0.87 0.87
224 241 241 241 0.88 0.88 0.88 0.88
227 242 242 242 0.89 0.89 0.89 0.89
230 243 243 243 0.90 0.90 0.90 0.90
232 245 245 245 0.91 0.91 0.91 0.91
235 246 246 246 0.92 0.92 0.92 0.92
237 247 247 247 0.93 0.93 0.93 0.93
240 248 248 248 0.94 0.94 0.94 0.94
242 249 249 249 0.95 0.95 0.95 0.95
245 250 250 250 0.96 0.96 0.96 0.96
247 252 252 252 0.97 0.97 0.97 0.97
250 253 253 253 0.98 0.98 0.98 0.98
252 254 254 254 0.99 0.99 0.99 0.99
255 255 255 255 1.00 1.00 1.00 1.00

見事に線形ではありませんでした。

よくよく調べてみると ARGB のほうは sRGB という規格、ScA ScR ScG ScB のほうは scRGB という規格らしいです。scRGB については以下のサイトなどを参考にしてください。簡単にまとめると、sRGB(8bit) では表現できなかった色を 12bit や 16bit などに拡張してより多くの色情報を表現できるようにしたものです。

しかし、いろいろ調べてみても sRGB と scRGB の変換方法がよくわからなかったのでコードベースで情報がないか調べてみたところ以下のサイトがありました。

確かにこのコードに当てはめると Color 構造体で出力された結果と一致しました。ですが、この変換処理と scRGB について書かれている公式との関連性がよくわかりませんでした。Microsoft が独自に定義したものかもしれませんが、それについても文面を見つけることができませんでした。

まあとりあえず現状は 0.0~1.0 と 0~255 は単純に線形変換させて対応することにし、scRGB については今回の記事で参考になったという形にとどめておきたいと思います。なにか詳しい情報があればコメントいただければと思います。

]]>

ブログにアクセスカウンター設置してみました

WordPress の標準機能にアクセスカウンターの機能がなかったのでずっと放置していたのですが、久々に調べてみたらプラグインでいろいろ公開されているみたいだったのでサイドメニューに追加してみました。

使用したプラグインは「count per day」というもので、英語圏のプラグインなのですが、インストール後は自動的に日本語で表示されるので割と使いやすいです(一部英語のままですが)。プラグインインストール後はウィジェットから配置できます。

WordPress のアクセスカウンターなので sorceryforce.net や sorceryforce.com のアクセスカウントは含まれません。

]]>

Crystal Reports でデータベース フィールドの項目を最新にする (DataSet 版)

環境

  • Visual Studio : Visual Studio 2008
  • Crystal Reports : Crystal Reports Basic for Visual Studio 2008

概要

Crystal Reports のデータベース フィールドに DataSet のテーブルをバインドした後に、DataSet のテーブルの項目を変更してもデータベース フィールドには自動的に反映されません。最新の状態を反映させるには以下の手順を行います。

手順

  1. DataSet のテーブルの構成(列など)を変更
  2. 対象のプロジェクトをビルド
  3. Crystal Reports のフィールド エクスプローラーから「データベース フィールド」を右クリックし、「データベースの照合」を選択
  4. 確認ダイアログで「OK」をクリック
]]>

sorceryforce.net の多言語対応仕様を変更しました

気づいていた人はあんまりいないと思いますが、Web サイト「sorceryforce.net」では複数の言語で表示できるように構築していました。今回その動作仕様を変更しています。

今までは多言語対応は以下のようにしていました。

  1. HTTP ヘッダーで送信される言語情報によって表示される言語を切り替えていた
  2. クエリパラメータに「lang=XX」を追加することによって環境に依存せずに表示言語を切り替えられるようにしていた

しかし、上記の対応ではいくつか問題がありました。

まず 1 についてですが、ユーザーが意識せずに表示言語が自分の環境に合わせて変更されるというメリットがあるのですが、SEO 観点からみると、どんなに複数の言語に対応されていたとしても URL は一つであるため、言語数分の評価がされないということです。基本的には日本語がメインなのですが、代わりに英語で評価されたとした場合にコンテンツ力が低いとみなされると「http://sorceryforce.net/」の評価が下がってしまい、同時に日本語サイトとしての評価も下がってしまうことになります。

2 についても SEO 観点から見た場合、クエリパラメータによる多言語対応はあまり評価対象にはならないようです。

上記の理由から今回以下のように多言語対応の仕様を変更しました。

  1. 言語の変更は URL のドメインの直下で指定するようにした
  2. URL で言語を指定していなかった場合は、HTTP ヘッダーで指定された言語のページにリダイレクトする

1 については前の仕様のクエリパラメータによる言語指定をパスに移動させた形になります。これにより、言語単位で URL が決定するので SEO に対する評価も言語単位になります。クエリパラメータで指定した場合とどれぐらい評価が違うのかといわれると定かではありませんが、URL の見た目的にもユーザーに分かりやすい形になっていると思います。URL の言語部分を変えれば表示される言語も変わります。たぶん大手のサイトとかもこの形式を採用しているところが多いです。

2 については言語が、指定されていなかった場合、日本語がメインのサイトなので日本語のページを表示させようかと思いましたが、正直、URL に対して言語指定ありなしで言語表示を分岐させるのがめんどうだったのでやめました。また、せっかく英語環境で見に来ても日本語で表示されるとみてくれない可能性もあるので、そうであれば対応する言語のページに飛ばした方が有意義かなと思いました。URL を変えずに表示言語を変える方法は前回の使用の 1 に該当してしまうのでやっていません。

上記変更に伴い、せっかくなのでユーザーが言語を変更できるようにページの左側に言語を選択できるドロップダウンをつけてみました。これでいちいち URL を変更せずに直接見たい言語を選択できるようになりました。また、前の仕様ではページを切り替えるたびに URL で再度言語を入力しなければいけませんでしたが、今回の修正に伴い、表示されている言語のままほかのページへページングできるようにもしました。

 

さて、ここまでの話でなんだか大がかりな変更をしているようにも思えるかもしれませんが、実は中身のコンテンツに対してはあまり多言語対応していません orz。特に Tips 系は日本語のままなのでどうしようかなと思っています。実際 HTML の多言語化をどうすればいいのかなーと悩んでいる段階です。まあ、コンテンツについてはおいおい対応していきたいと思います。

]]>