(Windowsの話です)
だらしない性格からなのか、効率を求めるためか、いつもウインドウをたくさん開いてしまいます。
僕は人生の合理化のため、
・整理しない
・整頓しない
・清掃しない
・清潔にしない
・しょうがない (通称5S)
をモットーに生きてます。
その方が効率いいし。
話は戻りますが、タスクバーを標準の位置においているとすぐ表示しきれなくなるので、僕は右側に移動して使ってます。
ところがこれでタスクバーはほぼ問題ないのですが、ウインドウを40~60個くらい開いたところでそれ以上開かなってしまいます。
そのくらい大丈夫だろと思うののですが、どうやら上限がある模様。
Windowsの仕組み上、普通のウインドウ以外にもエディットボックスやボタンその他部品(=コントロール)なども全てウインドウ扱いになるので、40個ウインドウを開いているつもりの状態でもコントロールの数自体は膨大になるのかもしれないです。(アプリケーションによって異なります)
なので、実際ウインドウをたくさん開いているとウインドウの一部分が表示されなかったりとかも起こります。
原因は恐らくデスクトップ・アプリケーション・ヒープの不足。
滅多に再起動しないのでメモリリークしてるヤツがいるのかもしれないと思いましたが、試しに再起動して直後に普段使う環境と同じようにウインドウ開いていくとやっぱり問題がおきるので、根本的にリソースが足りないようです。
Windows2K/XPのデフォルトのデスクトップ・アプリケーション・ヒープサイズは3MByte。
大きいサイズに変更してしまうことにします。
変更方法は以下にあるとおりです。
http://support.microsoft.com/kb/126962/ja
レジストリの以下の値を変更する。
キー:HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Manager\SubSystems
値: Windows
SharedSection=xxxx,yyyy(又はSharedSection=xxxx,yyyy,zzzz)の、yyyyの部分を変更して再起動する。
これをやるとパフォーマンスに影響を与えるらしいですが。しかもけっこう重大に。
(インストールするだけでパソコンを高速にするぜ!! みたいな市販されている怪しいソフトの類はこういうリソースのサイズを小さく設定しなおしたりするらしい)
とりあえず僕は5120(KByte)に設定してみました。
WindowsXPが開発された頃に比べればハードウエアは格段によくなっているのでそのくらい大丈夫だろうという判断。
少しつかった感じでは特にパフォーマンスへの影響も感じないしウインドウをたくさんひらいても大丈夫になりました。
ちなみに設定した環境は以下のとおり。
CPU Intel Core2Quad Q6600
M/B GIGABYTE GA-G33M-DS2R
VGA GIGABYTE GV-RX26P512H
RAM 4096MByte (32bit環境)
WindowsXP SP2 (x86)
#こまめにウインドウを閉じる躾を自分にしたほうがいいのかもしれませんが。。
最近、携帯電話のキャリア会社ですら「ケータイ」という言葉を使っていますね。
僕はどうしても「携帯」と聞いても携帯電話を連想できず、PDAとか、もしくは鞄とかそういうものを連想してしまいます。
むしろ僕が「携帯」で連想する電話はワイドスターとかです・・・。
ウィキペィアをウィキと略したり、ケーブルテレビをケーブルと略すとかに通じるものがある気がしますが・・・それぞれ独立した単語だっただけに略したら違う意味じゃん、みたいな。
さすがに「携帯」については慣れてきましたが、自分からはなかなか「携帯」という単語が出てこず単に「電話」って言ってしまうんですよね。
恐るべし自分の社会適用力の無さ。
Windows(Shift_JIS/マルチバイト環境)で文字コードをUTF-8に変換する方法です。
マルチバイトとUTF-8の変換APIは用意されていないのできっと面倒な事になるんだろうな・・・と予想していたのですが、一旦ワイド文字に変換すれば良いだけでしたね。
今iPhoneアプリを開発中なのですが、Windows環境とも通信するためUTF-8でやることにしましたが、Shift_JISのダメ文字(「表」とか)を気にしなくていいのでUTF-8楽です。
1 : 2 : //UTF8に変換する 3 : void shiftJisToUTF8( char* converted 4 : ,size_t converted_length 5 : ,const char* ascii ) 6 : { 7 : 8 : size_t sizeBuffer = strlen(ascii) *6; 9 : LPWSTR pwszBuf = new wchar_t[sizeBuffer]; 10 : 11 : MultiByteToWideChar( 12 : CP_ACP, 13 : 0, 14 : ascii, 15 : -1, 16 : pwszBuf, 17 : (int)sizeBuffer); 18 : 19 : 20 : WideCharToMultiByte( 21 : CP_UTF8, 22 : 0, 23 : pwszBuf, 24 : -1, 25 : converted, 26 : (int)converted_length, 27 : NULL, 28 : NULL); 29 : 30 : delete[] pwszBuf; 31 : return; 32 : } 33 : 34 : //ShiftJisに変換する 35 : void UTF8ToShiftJIS( char* converted 36 : ,size_t converted_length 37 : ,const char* ascii ) 38 : { 39 : 40 : size_t sizeBuffer = strlen(ascii) *6; 41 : LPWSTR pwszBuf = new wchar_t[sizeBuffer]; 42 : 43 : MultiByteToWideChar( 44 : CP_UTF8, 45 : 0, 46 : ascii, 47 : -1, 48 : pwszBuf, 49 : (int)sizeBuffer); 50 : 51 : 52 : WideCharToMultiByte( 53 : CP_ACP, 54 : 0, 55 : pwszBuf, 56 : -1, 57 : converted, 58 : (int)converted_length, 59 : NULL, 60 : NULL); 61 : 62 : delete[] pwszBuf; 63 : 64 : return; 65 : }
§ Suika [ボッタクリですよ。 食べ物持ち込むのならば「食物アレルギー」で押し通すしかありません(w ペットボトルは紙容器に移し..]
§ Suika [よし、行くときは賞味期限きれた食べ物をもっていってそこで処分してもらう事にしよう!(ぉ]