2015/03/26

URL パラメーターを連想配列で取得する

JavaScript で URL パラメータを取りたい場合の関数。連想配列で返してくるので、キー値で値を取りたい場合にに。
// ベーシックな、URL パラメータの取得方法。2 バイト文字対応。
// http://ww1.exsample.com/test.html?id=hoge&name=たろう
var obj = GetQueryString();
if (obj != null) {
 // 結果:hoge
 alert(obj['id']);
 // 結果:たろう
 alert(obj['name']);
}

function GetQueryString() {
 var url = document.location.search.substring(1);
 if (url.length == 0) {
  return null;
 }
 url = decodeURIComponent(url);
 var parameters = url.split('&');

 var obj = new Object();
 for (var i = 0; i < parameters.length; i++) {
  var element = parameters[i].split('=');
        var Key = element[0];
  obj[Key] = element[1];
 }
    return obj;
}

2015/03/25

ASP.NET が認識できる User-Agent の最大文字数

ASP.NET が認識できる User-Agent の長さが 512 文字に拡張されました
http://blogs.msdn.com/b/d99/archive/2010/02/16/9964117.aspx

ASP.NET において User-Agent は Request.UserAgent で簡単に取得できるのだが、この値は文字列の制限値が存在し、かつ、.NET Framework のバージョンによって異なるらしい。

  • ASP.NET 1.1
    今さらこのバージョンを使っているケースはないだろうが…256 文字を超えた場合は "Unknown" となり、JavaScript が無効なブラウザというような「最低レベルのブラウザ」に対応したレンダリングを行うらしい。
    System.Web.dll のバージョンが古い場合は、色々と問題が発生する可能性がある。
  • ASP.NET 2.0
    256 文字まで認識する(それ以降は切り捨て)。ASP.NET 1.1 の時のような最低レベルのレンダリングは行われないらしい。
  • ASP.NET 4.0 (以降も)
    512 文字まで。それ以降は切り捨て。
ただ、ASP.NET 1.1, 2.0 においても、最大文字長を 512  文字に拡張するモジュールがリリースされている……らしいが、肝心のモジュールがどこにあるか不明だ。

[C#] 正規表現で括弧の中を取得

Regex クラスを使用して、正規表現でカッコの中を取り出す。半角カッコは \ マークで エスケープしなければならない。
全角カッコの場合は、エスケープする必要はない。
string target = "せいきひょうげんで(かっこのなか)をとります。";
Regex regex = new Regex(@"\((?.*?)\)");
Match match = regex.Match(target);
// value = かっこのなか
string value = match.Groups["Value"].Value;

string target2 = "せいきひょうげんで(大文字カッコの中)をとります。";
Regex regex2 = new Regex(@"((?.*?))");
Match match2 = regex2.Match(target2);
// value2 = 大文字カッコの中
string value2 = match2.Groups["Value"].Value;

2015/03/24

Chrome フォント固定


Google Chrome でウェブの表示フォントを完全に固定する拡張機能。
Change Font Family Style


「シークレットモードでの実行を許可する」をチェックすると、その名の通りシークレットモードでもフォントを固定できる。

オプションから、フォント名を指定する。フォント名が違う場合でも特にエラー等は出ないので、実際にウェブページを開いて確認するしかない。

2015/03/21

Google Chrome の豆腐文字を直す

Chrome 41 と MacType の環境で、メニューのフォントが豆腐化(□ 文字化け)してしまうことがある。Chrome は基本的に勝手にアップデートされるため、起動時にいきなり豆腐化していて驚く。

起動時のオプションに、--disable-directwrite-for-ui を付けて起動すると直る。

またアップデート時におかしくなる可能性はあるが、とりあえず解決した。

2015/03/19

文頭にある特定の文字列を消す

例えば住所データ。
データの持ち方によっては、都道府県名を削除して表示する際に、文頭にある指定した文字を消す必要が出てくる。

 "京都府京都市上京区岩栖院町4-15-6" → "京都市上京区岩栖院町4-15-6"

文字列の始まりということで、String.TrimStart メソッド が思いつくのだが、これは引数に char[] を取るため、どうしようかと迷ってしまう。
そこで String.ToCharArray メソッド が登場する。この方法は一見するとうまくいくように見えるかもしれないが、先に上げたテストデータではうまくいかないw

正解は、このような場合は正規表現で消すしかない。
string address1 = "京都府京都市上京区岩栖院町4-15-6 京都府";
string character1 = "京都府";
string character2 = @"^京都府+";

// 結果:市上京区岩栖院町4-15-6
string result1 = address1.TrimStart(character1.ToCharArray());
// 結果:京都市上京区岩栖院町4-15-6
string result2 = Regex.Replace(address1, character2, "");

// 文頭にあるはじめの文字だけ削除される。
string address2 = "京都府京都府京都市上京区岩栖院町4-15-6 京都府";
// 結果:京都府京都市上京区岩栖院町4-15-6 京都府
string result3 = Regex.Replace(address2, character2, "");
文字列を消すように使用したが、本来は文字列の置換のために用意されたメソッドであるので、色々と応用はできると思う。拡張メソッドで定義しておき、プロジェクト内で共有しておけば間違いがなくなるだろう。

Regex.Replace メソッド - https://msdn.microsoft.com/

[Chrome 41] MacType 使用時に文字欠け


Google Chrome が 41 にバージョンアップされると、ウェブページの一部の文字が欠けてしまう事がある。はじめはフォントの問題かと思ったのだが、調べてみると原因は MacType を使用している環境によるもののようだ。

Chrome41でMacTypeが効かない文字が出てくる件について
http://739j.hatenablog.com/entry/2015/03/15/002139
  1. Chrome のアドレスバーに chrome://flags/ と入力する。
  2. ワンコピー ラスタライザを有効にするを 無効 に設定する。
  3. GPU のラスター化を無効にするを 無効 に設定する。
ひとまずこれで様子見。

2015/03/09

VS 2013 の カラー変更

Visual Studio 2013 の外観テーマ(カラー)を簡単に変更したい場合は、Visual Studio 2013 Color Theme Editor 拡張機能をインストールする。

Visual Studio 2013 Color Theme Editer


この拡張機能をインストールすると、[ ツール ] - [ Change Color Theme ] メニューが追加され、エディタの配色を自由に変更することができるようになる。
デフォルトでは、Blue, Dark など 11 種類のテーマがインストールされるが、自分の好みにカスタマイズすることも可能。

2015/03/05

アップグレードした ASP.NET プロジェクトで「Web サーバーでデバッグを開始できません」が出る

Web サーバーでデバッグを開始できません。次の項目のうちの1つが発生していないかを確認して下さい。
  1. デバッグしようとしているアプリケーションが、デバッガがサポートしていないバージョンの Microsoft .NET Framework を使用しています。
  2. アプリケーションが使用しようとしている Microsoft .NET Framework のバージョンに関してデバッガが不適切な想定を行っています。
  3. デバッガに対して指定された Microsoft .NET Framework のバージョンが間違っています。
アプリケーションがデバッグに使用しようとしている Microsoft .NET Framework のバージョンを適切に指定するには、Visual Studio .NET デバッガのドキュメントを参照してください。

ASP.NET プロジェクトを新しいバージョンの Visual Studio で開くとアップグレードされるのだが、その際に対象となる .NET Framework もアップデートすると、今度は古いバージョンの Visual Studio でデバッグできなくなってしまう。
特に、IIS の設定がされている ASP.NET プロジェクトだと、IIS 側のフレームワークと異なっていてはデバッグができない。
古い Visual Studio 2005 などで作られたプロジェクトなどは設定が残ってしまい復旧できなくなる。

対象とする Framework を選択する - Visual Studio 2010

Framework は選べない - Visual Studio 2005
しかし、いったんフレームワークを選べるバージョンの Visual Studio で開き、2.0 に変更したあと、2005 で開き直すと設定が戻っている場合がある。
アップグレードは容易だが、戻すには少し気をつけなければならない。

2015/03/04

MobileControl は、MobilePage に含まれなければなりません。

モバイルコントロールという携帯(フィーチャーフォン)用のコントロールを使っている aspx に対して、コードビハインドで定義された .cs 側の継承元が System.Web.UI.Page であると発生。

エラーが出る継承元クラス
System.Web.UI.Page

正しいクラス
System.Web.UI.MobileControls.MobilePage

2015/03/02

OneDrive や Dropbox での文字化け対策

エンコードが Shift-JIS であるテキストファイル(.txt)をアップロードした際に、以下のクラウドサービスでは文字化けが発生するようだ。
  • OneDrive
  • Dropbox
Google Drive に関しては、文字化けは確認できなかった(正常表示される)。
どうやら Shift-JIS は今後使わないほうが良さそうだ。

テキストファイルは秀丸エディタで作ることが多いのだが、デフォルトのエンコードが Shift-JIS になっている。これを UTF-8 に変更する。
  1. その他 -> 動作環境(上級者向け設定がチェックオンであること)
  2. ファイル -> エンコード1 -> 標準のエンコードの種類(D) をクリック
  3. エンコードの種類(c) を "Unicode(UTF-8)" へ変更。
秀丸
秀丸 - 標準のエンコードの種類
改行コードと BOM はいずれも自動で良いのだが、これらも指定がある場合は設定する。
クラウドサービスにアップするだけなら自動で構わないが、Mac OS X や Linux ともファイルのやりとりをしたいなら LF に指定しておく。
BOM は 使用するアプリケーション等で指定がない限りは特に付けなくても問題はない。

Related Posts Plugin for WordPress, Blogger...