<?xml version="1.0" encoding="UTF-8" ?> <rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>ホップ・ステップ・εミ(ο_ _)ο ドテッ</title><link>http://blogs.wankuma.com/youchi/</link><description>プログラミングの風景をちょいとぶつぶつ書きつづってみようというテスト</description><managingEditor>ゆーち</managingEditor><dc:language>ja-JP</dc:language><generator>.Text Version 0.95.2004.102</generator><item><dc:creator>ゆーち</dc:creator><title>youtube が動かない（２）</title><link>http://blogs.wankuma.com/youchi/archive/2012/06/19/278750.aspx</link><pubDate>Tue, 19 Jun 2012 12:10:00 GMT</pubDate><guid>http://blogs.wankuma.com/youchi/archive/2012/06/19/278750.aspx</guid><wfw:comment>http://blogs.wankuma.com/youchi/comments/278750.aspx</wfw:comment><comments>http://blogs.wankuma.com/youchi/archive/2012/06/19/278750.aspx#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://blogs.wankuma.com/youchi/comments/commentRss/278750.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/youchi/services/trackbacks/278750.aspx</trackback:ping><description>先週、Firefox上でflash系がぜんぜん表示されなくなってしまいました。&lt;br /&gt;
調べると、Shockwave flash アドオンが自動的にバージョンアップされてまして&lt;br /&gt;
11.3.300.257(2012/06/16)となってましたので、この辺があやしいのかな？&lt;br /&gt;
といろいろ調べた結果・・・&lt;br /&gt;
&lt;br /&gt;
RealPlayerの「環境設定」－「ダウンロードおよび録音」タブにある、&lt;br /&gt;
□次のインストールされているブラウザで Web ダウンロードおよび録音を無効化する&lt;br /&gt;
というチェックを外したら、表示されるようになりました。&lt;br /&gt;
&lt;br /&gt;
なんの関係もなさそうなところに影響するなんて、ねぇ・・・&lt;br /&gt;&lt;img src ="http://blogs.wankuma.com/youchi/aggbug/278750.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>ゆーち</dc:creator><title>youtube が動かない</title><link>http://blogs.wankuma.com/youchi/archive/2011/11/23/213909.aspx</link><pubDate>Wed, 23 Nov 2011 10:27:00 GMT</pubDate><guid>http://blogs.wankuma.com/youchi/archive/2011/11/23/213909.aspx</guid><wfw:comment>http://blogs.wankuma.com/youchi/comments/213909.aspx</wfw:comment><comments>http://blogs.wankuma.com/youchi/archive/2011/11/23/213909.aspx#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://blogs.wankuma.com/youchi/comments/commentRss/213909.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/youchi/services/trackbacks/213909.aspx</trackback:ping><description>家族で利用してるノートＰＣがしょっちゅうおかしくなるんです。&lt;br /&gt;
&lt;br /&gt;
youtube の動画を見ようとすると、ブラウザが固まってしまうようになります。&lt;br /&gt;
Windows 7 で IE9 と Firefox を使うことが多いんですがどちらのブラウザでも同じ症状。&lt;br /&gt;
&lt;br /&gt;
で、Adobe Flash Player を再インストールすると、これまで何回かは修復できたのに昨夜はダメでした。&lt;br /&gt;
&lt;br /&gt;
いろいろWEBを徘徊して調べた結果、&lt;br /&gt;
&lt;br /&gt;
【１】Adobe Flash Player のアンインストールを「管理者として実行」&lt;br /&gt;
【２】ＰＣ再起動&lt;br /&gt;
【３】Adobe Flash Player のインストールを「管理者として実行」&lt;br /&gt;
（ブラウザからプラグインをインストールする場合はブラウザを「管理者として実行」）&lt;br /&gt;
&lt;br /&gt;
これでうまくいくようになりました。&lt;br /&gt;
２時間半もかかった（笑）&lt;br /&gt;



&lt;img src ="http://blogs.wankuma.com/youchi/aggbug/213909.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>ゆーち</dc:creator><title>PC切替器のキーボード認識エラー</title><link>http://blogs.wankuma.com/youchi/archive/2011/07/28/201297.aspx</link><pubDate>Thu, 28 Jul 2011 16:44:00 GMT</pubDate><guid>http://blogs.wankuma.com/youchi/archive/2011/07/28/201297.aspx</guid><wfw:comment>http://blogs.wankuma.com/youchi/comments/201297.aspx</wfw:comment><comments>http://blogs.wankuma.com/youchi/archive/2011/07/28/201297.aspx#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://blogs.wankuma.com/youchi/comments/commentRss/201297.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/youchi/services/trackbacks/201297.aspx</trackback:ping><description>某社のUSBパソコン切替器を使ってるんですが、たまに（というか頻繁に）キーボードを認識しなくなってしまいます。&lt;br /&gt;
ＷＥＢを検索すると、ＵＳＢを差し直すことで認識してくれるらしいのですが、あいにくあちきのＰＣは机の下に置いていてＵＳＢの抜き差しはめんどくさいんです。&lt;br /&gt;
で、うまくいくまでリセットを繰り返す・・・なんてことをしていました（笑）&lt;br /&gt;
&lt;br /&gt;
コントロールパネルのデバイスとキーボードのあたりから「トラブルシューティング」を選んでＵＳＢドライバを再起動させるといいです。&lt;br /&gt;
マウス操作だけで処理できますのでうまくいきます。&lt;br /&gt;
&lt;br /&gt;
マウスも認識できないときは困りものですが、いまのとこそんな症状は出てないです。&lt;br /&gt;
&lt;br /&gt;
切替機で電源供給すればうまくいくらしいのですが、切替機のＡＣアダプタが行方不明なんですｗ&lt;img src ="http://blogs.wankuma.com/youchi/aggbug/201297.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>ゆーち</dc:creator><title>XAMPP 1.7.4インストール</title><link>http://blogs.wankuma.com/youchi/archive/2011/07/24/201220.aspx</link><pubDate>Sun, 24 Jul 2011 01:47:00 GMT</pubDate><guid>http://blogs.wankuma.com/youchi/archive/2011/07/24/201220.aspx</guid><wfw:comment>http://blogs.wankuma.com/youchi/comments/201220.aspx</wfw:comment><comments>http://blogs.wankuma.com/youchi/archive/2011/07/24/201220.aspx#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://blogs.wankuma.com/youchi/comments/commentRss/201220.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/youchi/services/trackbacks/201220.aspx</trackback:ping><description>64bit Windows 7 な環境でXAMPP 1.7.4をインストールしたら、コンパネ起動時に&lt;br /&gt;
XAMPP Component Status Check failure [3]&lt;br /&gt;
ってエラーがでてました。&lt;br /&gt;
&lt;br /&gt;
ぐぐった結果レジストリを次のように編集したらうまくいったので、メモ。&lt;br /&gt;
&lt;br /&gt;
[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\xampp]&lt;br /&gt;
Install_Dir=C:\\xampp&lt;br /&gt;
&lt;br /&gt;
（c:\xamppとなっているところを、C:\\xamppに変更しました）
&lt;img src ="http://blogs.wankuma.com/youchi/aggbug/201220.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>ゆーち</dc:creator><title>Windowのサブクラス化</title><link>http://blogs.wankuma.com/youchi/archive/2011/06/18/200100.aspx</link><pubDate>Sat, 18 Jun 2011 23:39:00 GMT</pubDate><guid>http://blogs.wankuma.com/youchi/archive/2011/06/18/200100.aspx</guid><wfw:comment>http://blogs.wankuma.com/youchi/comments/200100.aspx</wfw:comment><comments>http://blogs.wankuma.com/youchi/archive/2011/06/18/200100.aspx#Feedback</comments><slash:comments>183</slash:comments><wfw:commentRss>http://blogs.wankuma.com/youchi/comments/commentRss/200100.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/youchi/services/trackbacks/200100.aspx</trackback:ping><description>お久しぶりのWIN32ですｗ。&lt;br /&gt;
&lt;br /&gt;
とあるプログラムで、ウィンドウハンドルをサブクラス化してたんですな。&lt;br /&gt;
サブクラスといっても、オブジェクト指向的な用語ではなく、Windows独特なので、知らない人も多いかもｗ&lt;br /&gt;
&lt;br /&gt;
ウィンドウのメッセージを処理するプロシージャを置き換えて別の挙動をさせたいときに使うワザとでもいいましょうか。&lt;br /&gt;
&lt;br /&gt;
こんな実装です。&lt;br /&gt;
&lt;pre&gt;
WNDPROC oldProc = ::GetWindowLong( WinHandle, GWL_WNDPROC );
::SetWindowLong( WinHandle, GWL_WNDPROC, (WNDPROC)&amp;MyProc );
&lt;/pre&gt;
その後、GetWindowLongPtr とか SetWindowLongPtr を使いましょうなどという別名みたいな推奨があったんですが、キャストが少なくなる程度でそれほど便利だとは思ってませんでした。&lt;/ br&gt;
&lt;br /&gt;
自前のプロシージャでは、自分が処理するメッセージ以外を元のウィンドウに処理させます。&lt;br /&gt;
&lt;pre&gt;
LRESULT CALLBACK MyProc( HWND Wnd, UINT Msg, WPARAM wParam, LPARAM lParam)
{
 if(Msg==自前処理)
 {
   return foo();
 }
 return ::CallWindowProc( oldProc, Wnd, Msg, wParam lParam );
}
&lt;/pre&gt;
こんな具合です。&lt;br /&gt;
&lt;br /&gt;
処理が必要なくなったときは、同様に SetWindowLong を使って、ウィンドウプロシージャを元に戻しておきます。&lt;br /&gt;
::SetWindowLong( WinHandle, GWL_WNDPROC, oldProc );&lt;br /&gt;
&lt;br /&gt;
と、そこに問題が。&lt;br /&gt;
アプリケーションの起動後にサブクラスした状態で、別の常駐プロセスが同様にサブクラス化をするんです。&lt;br /&gt;
&lt;br /&gt;
本来、プロシージャのチェインは、&lt;br /&gt;
「MyProc」－「oldProc」&lt;br /&gt;
のつながりになっているわけで、このまま終了時に戻せば問題なかったわけです。&lt;br /&gt;
&lt;br /&gt;
別のプロセスが同様にサブクラス化をすると、プロシージャのチェインがこうなります。&lt;br /&gt;
「別プロセス」－「MyProc」－「oldProc」&lt;br /&gt;
&lt;br /&gt;
この状態で自前部分の終了処理が実施されてしまうと、別プロセスは ::CallWindowProc で MyProc を呼び出してしまい、アクセス違反で異常終了してしまいます。&lt;br /&gt;
&lt;br /&gt;
サブクラス化を実施する手順と解除する手順が正しくないと必ずこうなってしまうわけです。&lt;br /&gt;
こりゃ困ったよ。&lt;br /&gt;
&lt;br /&gt;
で、結論。&lt;br /&gt;
SetWindowSubclass&lt;br /&gt;
RemoveWindowSubclass&lt;br /&gt;
DefSubclassProc&lt;br /&gt;
というAPIが追加されてました。&lt;br /&gt;
&lt;br /&gt;
Windows 2000 SP4 以降にしか対応してませんが、十分でしょうｗ&lt;br /&gt;
&lt;br /&gt;
ま、苦労しましたよ（笑




&lt;img src ="http://blogs.wankuma.com/youchi/aggbug/200100.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>ゆーち</dc:creator><title>ソフトの導入は男性主導なのかな？</title><link>http://blogs.wankuma.com/youchi/archive/2011/06/07/199690.aspx</link><pubDate>Tue, 07 Jun 2011 11:02:00 GMT</pubDate><guid>http://blogs.wankuma.com/youchi/archive/2011/06/07/199690.aspx</guid><wfw:comment>http://blogs.wankuma.com/youchi/comments/199690.aspx</wfw:comment><comments>http://blogs.wankuma.com/youchi/archive/2011/06/07/199690.aspx#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://blogs.wankuma.com/youchi/comments/commentRss/199690.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/youchi/services/trackbacks/199690.aspx</trackback:ping><description>メールソフト Becky!で、メールの宛先に敬称をつけたりできるプラグインを公開してます&lt;br /&gt;
過去にもここに書いたけど、BkReplyer ってんです。&lt;br /&gt;
いちおう、&lt;a href="http://bit.ly/fgnZ6z" target="blank"&gt;「ここ」&lt;/a&gt;にリンク貼っときます。よろぴこ。&lt;br /&gt;
&lt;br /&gt;
たくさんの方々に使っていただいていますが、ちょっと気づいたことがあります。&lt;br /&gt;
登録された方の９５％の方が男性なんですなぁ。&lt;br /&gt;
ビジネスメール中心で使われるプラグインだからなのかな？&lt;br /&gt;
とも思うけど、なんとなく Becky! そのものを使う人に女性が少ないのではないかと・・・&lt;br /&gt;
&lt;br /&gt;
ダウンロードしてユーザー登録して使う必要のあるソフトウエアが、女性に敬遠されがちなのではないだろうか、と思ったのでした。&lt;br /&gt;
&lt;br /&gt;
考えてみると、あちきも女性のＰＣにいろいろソフトを導入してあげることが多いような気がするなぁ。&lt;br /&gt;
どんなソフトが便利だっつう情報は男性から手に入れることが、はるかに多いし・・・&lt;br /&gt;
&lt;br /&gt;
ということで。&lt;br /&gt;
世の男性諸君。使ってる便利なソフトをお隣の女性に教えて差し上げましょうね。&lt;br /&gt;
&lt;br /&gt;
久しぶりに書いたら、またとりとめのない内容になっちまった。orz
&lt;img src ="http://blogs.wankuma.com/youchi/aggbug/199690.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>ゆーち</dc:creator><title>SVNリポジトリが壊れちゃってるんですが・・・</title><link>http://blogs.wankuma.com/youchi/archive/2010/12/02/195438.aspx</link><pubDate>Thu, 02 Dec 2010 12:50:00 GMT</pubDate><guid>http://blogs.wankuma.com/youchi/archive/2010/12/02/195438.aspx</guid><wfw:comment>http://blogs.wankuma.com/youchi/comments/195438.aspx</wfw:comment><comments>http://blogs.wankuma.com/youchi/archive/2010/12/02/195438.aspx#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://blogs.wankuma.com/youchi/comments/commentRss/195438.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/youchi/services/trackbacks/195438.aspx</trackback:ping><description>SVNクライアント側で更新しようとすると&lt;br /&gt;
REPORT(URL:******):Could not read chunk size:&lt;br /&gt;
Secure connection truncated(https://****)&lt;br /&gt;
ってなエラーで更新できません。&lt;br /&gt;
&lt;br /&gt;
SVNサーバにある、VisualSVN Server Manager を起動して、問題となっているリポジトリのフォルダをクリックすると、Server Manager が固まってしまいます。&lt;br /&gt;
ＷＥＢで調べてみると、Linuxサーバのお話ばっかりのようで。&lt;br /&gt;
ＳＶＮサーバは Windows マシン(Win7)なんですなぁ。&lt;br /&gt;
&lt;br /&gt;
むーん・・・このリポジトリを復活させることはできないものだろうか・・・&lt;br /&gt;
こまったぞー・・・&lt;br /&gt;

&lt;img src ="http://blogs.wankuma.com/youchi/aggbug/195438.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>ゆーち</dc:creator><title>英語はむずかしいねぇ。</title><link>http://blogs.wankuma.com/youchi/archive/2010/09/14/192953.aspx</link><pubDate>Tue, 14 Sep 2010 11:23:00 GMT</pubDate><guid>http://blogs.wankuma.com/youchi/archive/2010/09/14/192953.aspx</guid><wfw:comment>http://blogs.wankuma.com/youchi/comments/192953.aspx</wfw:comment><comments>http://blogs.wankuma.com/youchi/archive/2010/09/14/192953.aspx#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://blogs.wankuma.com/youchi/comments/commentRss/192953.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/youchi/services/trackbacks/192953.aspx</trackback:ping><description>どうやら英会話教室に行き始めたようですｗ&lt;br /&gt;
英語はガキの頃から、超ニガテのままです。&lt;br /&gt;
英語の習得にはいくつかの切り口がありますね。&lt;br /&gt;
文法や構文を知る。&lt;br /&gt;
単語を覚える。&lt;br /&gt;
読む。&lt;br /&gt;
書く。&lt;br /&gt;
聞く。&lt;br /&gt;
特にダメダメなのが、『聞く』ってやつ。ヒアリングってのね。&lt;br /&gt;
たまに英語の番組とか映画とか見ますけど&lt;br /&gt;
v と b&lt;br /&gt;
z や s と th&lt;br /&gt;
h と f&lt;br /&gt;
とか聞き分けきれないから、脳内でスペル構築ができず何言ってるのかわかりませんｗ&lt;br /&gt;
&lt;br /&gt;
東洋の言語文化と西洋の言語文化の違いにその原因があるような気がします。&lt;br /&gt;
&lt;br /&gt;
東洋圏の言語では文字と発音がほぼ一対なのに西洋圏では多様性があります。&lt;br /&gt;
日本語の「せ」は se と発音しますが&lt;br /&gt;
英語の se は、続いてくる文字によって発音が変わってきます。&lt;br /&gt;
読み書きまでは何とかなっても、ヒアリングとなると脳内で sa? si? su? se? なんてるうちにあぼんｗ&lt;br /&gt;
&lt;br /&gt;
知ってる単語が少ないってのもでっかい壁だと言うこともわかってるんですけどね・・&lt;br /&gt;
&lt;br /&gt;
ある日目が覚めたら、突然聞き取れるようになったりしないかなぁ・・・（笑）&lt;br /&gt;
ま、ぼちぼちやり続けることにします（笑）&lt;img src ="http://blogs.wankuma.com/youchi/aggbug/192953.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>ゆーち</dc:creator><title>ＣｕｔｅにＱｔ</title><link>http://blogs.wankuma.com/youchi/archive/2010/08/18/192404.aspx</link><pubDate>Wed, 18 Aug 2010 14:38:00 GMT</pubDate><guid>http://blogs.wankuma.com/youchi/archive/2010/08/18/192404.aspx</guid><wfw:comment>http://blogs.wankuma.com/youchi/comments/192404.aspx</wfw:comment><comments>http://blogs.wankuma.com/youchi/archive/2010/08/18/192404.aspx#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://blogs.wankuma.com/youchi/comments/commentRss/192404.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/youchi/services/trackbacks/192404.aspx</trackback:ping><description>福岡でＱｔ勉強会を開催します。&lt;br /&gt;
&lt;br /&gt;
２０１０年９月４日（土曜日）&lt;br /&gt;
１５：００～１８：００&lt;br /&gt;
&lt;br /&gt;
今後の進め方も含めた、第０回勉強会です。&lt;br /&gt;
&lt;br /&gt;
あちきが参加する＝宴会も実施する。&lt;br /&gt;
ってことで、どぞ興味のある方はご参加ください。&lt;br /&gt;
&lt;br /&gt;
こちらで募集してます。&lt;br /&gt;
http://atnd.org/events/7338&lt;br /&gt;&lt;img src ="http://blogs.wankuma.com/youchi/aggbug/192404.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>ゆーち</dc:creator><title>SendInput API でマルチバイト文字</title><link>http://blogs.wankuma.com/youchi/archive/2010/07/26/191637.aspx</link><pubDate>Mon, 26 Jul 2010 12:43:00 GMT</pubDate><guid>http://blogs.wankuma.com/youchi/archive/2010/07/26/191637.aspx</guid><wfw:comment>http://blogs.wankuma.com/youchi/comments/191637.aspx</wfw:comment><comments>http://blogs.wankuma.com/youchi/archive/2010/07/26/191637.aspx#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://blogs.wankuma.com/youchi/comments/commentRss/191637.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/youchi/services/trackbacks/191637.aspx</trackback:ping><description>keybd_event 使って２バイト系文字列を処理するのって、結構大変だったんだよね・・・&lt;br /&gt;
いつの間にか、SendInput なるＡＰＩができているらしく、UNICODEで処理できるようになってました。&lt;br /&gt;
&lt;br /&gt;
つうことで、書き上げたモジュールをさらしておきます。&lt;br /&gt;
&lt;pre&gt;
#include &amp;lt;windows.h&amp;gt;
#include &amp;lt;vector&amp;gt;
#include &amp;lt;string&amp;gt;

// マルチバイト文字用(CP_ACP固定ｗ)
void KeyInput( const char *Text_ )
{
  std::wstring  wstr;
  int length = ::MultiByteToWideChar( CP_ACP, 0, Text_, -1, NULL, 0 );
  if( length == 0 )
  {
    return;
  }
  else
  {
    wstr.resize( length );
    ::MultiByteToWideChar( CP_ACP, 0, Text_, -1, &amp;wstr[ 0 ], length );
  }
  std::vector&amp;lt;INPUT&amp;gt;  inputs;
  for( int i = 0; i &lt; length; i++ )
  {
    for( int j = 0; j &lt; 2; j++ )
    {
      INPUT input;
      input.type        = INPUT_KEYBOARD;
      input.ki.wVk      = 0;
      input.ki.wScan      = wstr[ i ];
      input.ki.time     = 0;
      input.ki.dwExtraInfo  = 0;
      input.ki.dwFlags    = KEYEVENTF_UNICODE;
      if( j != 0 )
      {
        input.ki.dwFlags  |= KEYEVENTF_KEYUP;
      }
      inputs.push_back( input );
    }
  }
  ::SendInput( length * 2, &amp;inputs[ 0 ], sizeof( INPUT ) );
  return;
}

// VK_xxx 用
void VKeyInput( int *VKeys_, int Count_ )
{
  std::vector&amp;lt;INPUT&amp;gt;  inputs;
  for( int i = 0; i &lt; Count_; i++, VKeys_++ )
  {
    for( int j = 0; j &lt; 2; j++ )
    {
      INPUT input;
      input.type        = INPUT_KEYBOARD;
      input.ki.wVk      = *VKeys_;
      input.ki.wScan    = ::MapVirtualKey( *VKeys_, 0 );
      input.ki.time     = 0;
      input.ki.dwExtraInfo  = 0;
      input.ki.dwFlags    = KEYEVENTF_SCANCODE;
      if( j != 0 )
      {
        input.ki.dwFlags  |= KEYEVENTF_KEYUP;
      }
      inputs.push_back( input );
    }
  }
  ::SendInput( Count_ * 2, &amp;inputs[ 0 ], sizeof( INPUT ) );
  return;
}
&lt;/pre&gt;
動作検証するとき、デバッガでブレークポイントを貼ると、フォーカスがソース上に移るので、ソースが書き変わっちゃって困った（笑）&lt;img src ="http://blogs.wankuma.com/youchi/aggbug/191637.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>ゆーち</dc:creator><title>スタックとヒープ</title><link>http://blogs.wankuma.com/youchi/archive/2010/07/24/191536.aspx</link><pubDate>Sat, 24 Jul 2010 13:42:00 GMT</pubDate><guid>http://blogs.wankuma.com/youchi/archive/2010/07/24/191536.aspx</guid><wfw:comment>http://blogs.wankuma.com/youchi/comments/191536.aspx</wfw:comment><comments>http://blogs.wankuma.com/youchi/archive/2010/07/24/191536.aspx#Feedback</comments><slash:comments>6</slash:comments><wfw:commentRss>http://blogs.wankuma.com/youchi/comments/commentRss/191536.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/youchi/services/trackbacks/191536.aspx</trackback:ping><description>一時的に使用する文字列のための領域を new TCHAR[n] delete []とか、malloc(n), free() を繰り返し使うのは処理効率が落ちると思ってしまいます。&lt;br /&gt; 
せせこましい時代を過ごしてしまったものだから（笑）&lt;br /&gt;
&lt;br /&gt;
最近、よくこんな書き方をします。&lt;br /&gt;
&lt;pre&gt;
void foo( size_t Length_ )
{
  char buffer[ 512 ];
  char *data = ( Length_ &lt; sizeof( buffer ) ) ? buffer : new char[ Length_ ];

  // data について処理

  if( data != buffer )
  {
    delete [] data;
  }
}
&lt;/pre&gt;
わずかな領域のために確保と解放を繰り返すってのを避けられるはずだ、って思ってしまうんですなぁ。&lt;br /&gt;
（笑）&lt;img src ="http://blogs.wankuma.com/youchi/aggbug/191536.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>ゆーち</dc:creator><title>【C++】dynamic_cast でポインタの安全性を確認できる？</title><link>http://blogs.wankuma.com/youchi/archive/2010/06/11/190028.aspx</link><pubDate>Fri, 11 Jun 2010 10:49:00 GMT</pubDate><guid>http://blogs.wankuma.com/youchi/archive/2010/06/11/190028.aspx</guid><wfw:comment>http://blogs.wankuma.com/youchi/comments/190028.aspx</wfw:comment><comments>http://blogs.wankuma.com/youchi/archive/2010/06/11/190028.aspx#Feedback</comments><slash:comments>5</slash:comments><wfw:commentRss>http://blogs.wankuma.com/youchi/comments/commentRss/190028.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/youchi/services/trackbacks/190028.aspx</trackback:ping><description>こんなコードばっかりあるわけですよ。&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;
int Foo( SomeClass *Src_ ){
  int value;
  if( Src_ != NULL ){
    value = Src_-&gt;Value;
  }else{
    value = -1;
  }
  return value;
}
&lt;/pre&gt;
&lt;br /&gt;
Src_ が NULL かどうかはチェックできてるけど、妙な値だったりするとアウトですよね。&lt;br /&gt;
そこでこんな風に書いてみた。&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;
int Foo( SomeClass *Src_ ){
  int value;
  SomeClass *src = dynamic_cast＜SomeClass *＞( Src_ );
  if( src != NULL ){
    value = src-&gt;Value;
  }else{
    value = -1;
  }
  return value;
}
&lt;/pre&gt;
&lt;br /&gt;
こうすると、もうちょっとましなチェックができることになるのかな？&lt;br /&gt;
&lt;br /&gt;
＃もちろん RTTI 有効でコンパイルっての前提です。&lt;br /&gt;
&lt;img src ="http://blogs.wankuma.com/youchi/aggbug/190028.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>ゆーち</dc:creator><title>SUBST って Substance の略なのかな？</title><link>http://blogs.wankuma.com/youchi/archive/2010/05/31/189596.aspx</link><pubDate>Mon, 31 May 2010 18:16:00 GMT</pubDate><guid>http://blogs.wankuma.com/youchi/archive/2010/05/31/189596.aspx</guid><wfw:comment>http://blogs.wankuma.com/youchi/comments/189596.aspx</wfw:comment><comments>http://blogs.wankuma.com/youchi/archive/2010/05/31/189596.aspx#Feedback</comments><slash:comments>5</slash:comments><wfw:commentRss>http://blogs.wankuma.com/youchi/comments/commentRss/189596.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/youchi/services/trackbacks/189596.aspx</trackback:ping><description>_MAX_PATH ってのが 260 で定義されてるんだけど、ご存じの通り今のファイルシステムはそれ以上の長さのパス名が利用できます。&lt;br /&gt;
日本語のファイル名などが使われてるとよけいに長くなったりします。&lt;br /&gt;
&lt;br /&gt;
広く利用されている圧縮解凍のＤＬＬを使ってみると、パス名の領域に _MAX_PATH を使っているらしく、長いパス名が使われるとスタックを破壊したりするものがあるようです。&lt;br /&gt;
バグとして指摘されました(´･ω･`)&lt;br /&gt;
セキュリティホールとも言えますな・・・&lt;br /&gt;
&lt;br /&gt;
もちろん、カレントディレクトリを変更し、相対パスをつかって処理するという方法もありますが、複数のドライブ間に関わるケースとか後始末とかがややこしすぐる。&lt;br /&gt;
ってことで、SUBST コマンドと同様に動作するプログラムを作って対応しますた。&lt;br /&gt;
作業用に作ったフォルダを、単一ドライブとして割り当てておいて、ファイルを処理した後割り当てを解除するってな方法です&lt;br /&gt;
それはそれで妙なんだけどね（笑）&lt;br /&gt;
&lt;br /&gt;
とりあえず、うまく行くようになりましたので、書き上げたモジュールをさらしておきます。&lt;br /&gt;
どこかのだれかが重宝してくれるかもしれないしね・・・ｗ&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;
//=========================================================================
//  Substance Drive
//=========================================================================
#include &lt;windows.h&gt;
#include "TChar.h"
#include "SubstanceDrive.h" // プロトタイプの宣言
#pragma warning( disable : 4996  )
//=========================================================================
// 空きのドライブを取得する(-1=なし,0=A,1=B,...)
int  GetUsableDrive( int StartDrive_ )
{
    // 使用可能なドライブマップを取得 
    DWORD map = ::GetLogicalDrives();
    // 利用可能マップの後段からドライブNoを取得 
    int drive = StartDrive_;
    DWORD mask = ( 0x01 &lt;&lt; drive );
    for( ; mask != 0; mask &gt;&gt;= 1, drive-- )
    {
        if( ( map &amp; mask ) == 0 )
        {
            break;
        }
    }
    return ( drive &lt; 0 ) ? -1 : drive;
}
// 任意ドライブの割り当て
int Substance( const TCHAR *Path_ )
{
    int drive;
    int startDrive = 25;    // Z:
    // 空きドライブを見つけて割り当ててみる
    while( ( drive = GetUsableDrive( startDrive ) ) != -1 )
    {
        if( Substance( drive, Path_ ) == true )
        {
            return drive;
        }
        // エラーなら利用可能なドライブまで探し続ける
        startDrive = drive - 1;
    }
    return -1;
}
// 指定ドライブの割り当て
bool Substance( const int Drive_, const TCHAR *Path_ )
{
    TCHAR   drv[ 4 ];
    drv[ 0 ] = Drive_ + 'A';
    drv[ 1 ] = ':';
    drv[ 2 ] = '\0';
    BOOL rc = ::DefineDosDevice( 0, drv, Path_ ); 
    return rc != FALSE;
}
// 割り当てドライブの解除
bool RemoveSubstance( const int Drive_ )
{
    TCHAR   drv[ 4 ];
    drv[ 0 ] = Drive_ + 'A';
    drv[ 1 ] = ':';
    drv[ 2 ] = '\0';
    TCHAR   path[ _MAX_PATH ];
    BOOL rc = ::QueryDosDevice( drv, path, sizeof( path ) );
    if( rc == FALSE )
    {
        return false;
    }
    rc = ::DefineDosDevice( DDD_REMOVE_DEFINITION | DDD_EXACT_MATCH_ON_REMOVE | DDD_RAW_TARGET_PATH, drv, path );
    return rc != FALSE;
}
// ドライブ名に割り当てられているパス名を取得する
bool GetSubstancePath( const int Drive_, TCHAR *Path_, int Length_ )
{
    TCHAR   drv[ 4 ];
    drv[ 0 ] = Drive_ + 'A';
    drv[ 1 ] = ':';
    drv[ 2 ] = '\0';
    TCHAR   path[ _MAX_PATH ];
    BOOL rc = ::QueryDosDevice( drv, path, sizeof( path ) );
    if( rc == FALSE )
    {
        return false;
    }
    // 割り当てドライブの先頭に "\??\" などが付加されるので、取り除く
    TCHAR   *dvp = _tcschr( path, ':' );
    if( dvp != NULL )
    {
        _tcsncpy( Path_, dvp - 1, Length_ );
    }
    else
    {
        _tcsncpy( Path_, path, Length_ );
    }
    return true;
}
// パス名で割り当てられているドライブを取得する(-1=なし,0=A,1=B,...)
int  GetSubstance( const TCHAR *Path_ )
{
    if( Path_ == NULL )
    {
        return -1;
    }
    // Path_ の終端が '\\' の場合、比較の長さが変わるので変更する
    size_t  cmpLength = _tcslen( Path_ );
    if( cmpLength == 0 )
    {
        return -1;
    }
    if( Path_[ cmpLength -1 ] == '\\' )
    {
        cmpLength--;
    }
    // 使用可能なドライブマップを取得
    DWORD map = GetLogicalDrives();
    int   drive = 25;
    for( DWORD mask = ( 0x011 &lt;&lt; drive ); mask != 0; mask &gt;&gt;= 1, drive-- )
    {
        TCHAR   path[ _MAX_PATH ];
        if( GetSubstancePath( drive, path, sizeof( path ) ) == true )
        {
            size_t  len = _tcslen( path );
            if( 0 &lt; len )
            {
                if( path[ len -1 ] == '\\' )
                {
                    path[ len -1 ] = '\0';
                }
            }
            if( _tcsncmp( path, Path_, max( cmpLength, len ) ) == 0 )
            {
                return drive;
            }
        }
    }
    return -1;
}
&lt;/pre&gt;
&lt;img src ="http://blogs.wankuma.com/youchi/aggbug/189596.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>ゆーち</dc:creator><title>DialogBoxをクラス化してみたところ</title><link>http://blogs.wankuma.com/youchi/archive/2010/05/30/189560.aspx</link><pubDate>Sun, 30 May 2010 17:19:00 GMT</pubDate><guid>http://blogs.wankuma.com/youchi/archive/2010/05/30/189560.aspx</guid><wfw:comment>http://blogs.wankuma.com/youchi/comments/189560.aspx</wfw:comment><comments>http://blogs.wankuma.com/youchi/archive/2010/05/30/189560.aspx#Feedback</comments><slash:comments>8</slash:comments><wfw:commentRss>http://blogs.wankuma.com/youchi/comments/commentRss/189560.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/youchi/services/trackbacks/189560.aspx</trackback:ping><description>WIN32のダイアログボックスでメッセージマップを実現してみるってことで次のようなクラスをこさえたんですな。&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;
class SDialog : public SWinControl  // SWinControl は HWND のラッパークラスね。
{
protected:
    static SDialog  *Self; // ※ここ。
    const HMODULE   Module;
    const UINT  ResourceId;
private:
    SDialog();
    static  BOOL CALLBACK SDialogProc( HWND Handle_, UINT Message_, WPARAM Wparam_, LPARAM Lparam_ );
    virtual BOOL DialogProc( HWND Handle_, UINT Message_, WPARAM Wparam_, LPARAM Lparam_ );

// 派生クラスでメッセージマップ
#define BEGIN_DLG_MESSAGE_MAP   \
    virtual BOOL DialogProc( HWND Handle_, UINT Message_, WPARAM Wparam_, LPARAM Lparam_ ) \
    {   \
        switch( Message_ ){ \
//
#define DLG_MESSAGE_HANDLER( message, proc ) \
            case (message):{    \
                return (proc)( Handle_, Message_, Wparam_, Lparam_ );   \
            } \
            break;  \
//
#define END_DLG_MESSAGE_MAP \
            default:    \
                break;  \
        }   \
        return 0; \
    }
//
public:
    SDialog( HMODULE Handle_, HWND Parent_, UINT ResourceId_ );
    virtual ~SDialog();
    int  ShowModal();
};
&lt;/pre&gt;
んでもって、実装はこんな感じ&lt;br /&gt;
&lt;pre&gt;
// ダイアログプロシージャのエントリポイント
BOOL CALLBACK SDialog::SDialogProc( HWND Handle_, UINT Message_, WPARAM Wparam_, LPARAM Lparam_ )
{
    SDialog *userdata   = (SDialog *)::GetWindowLong( Handle_, GWL_USERDATA );
    if( userdata == NULL )
    {
        userdata        = SDialog::Self;
        ::SetWindowLong( Handle_, GWL_USERDATA, (LONG)SDialog::Self );
        SDialog::Self   = NULL; //　ねんのためｗ
    }
    SDialog *self       = dynamic_cast＜SDialog *＞( userdata );
    if( self != NULL )
    {
        return self-&gt;DialogProc( Handle_, Message_, Wparam_, Lparam_ );
    }
    return FALSE;
}

BOOL SDialog::DialogProc( HWND Handle_, UINT Message_, WPARAM Wparam_, LPARAM Lparam_)
{
    return FALSE;
}
int  SDialog::ShowModal()
{
    SDialog::Self   = this; // ※ここ。
    return ::DialogBox( Module, MAKEINTRESOURCE( ResourceId ), Parent, (DLGPROC)&amp;SDialogProc );
}
&lt;/pre&gt;
※ここ。って書いているところが苦肉の策（笑）&lt;br /&gt;
派生クラスに virtual BOOL DialogProc(); が実装できるようにするのが目的なんですが、DialogBox API で渡せるのが static なメソッドなため、オブジェクトを示す位置を渡せないんですなぁ。&lt;br /&gt;
&lt;br /&gt;
とりあえず、動いてるけど、なんとまぁみっともない・・・（笑）&lt;br /&gt;
複数の派生ダイアログが動作するようにしたいってところがミソです。&lt;br /&gt;
&lt;br /&gt;
ほかに良い方法ないかなぁ・・・と。&lt;br /&gt;&lt;img src ="http://blogs.wankuma.com/youchi/aggbug/189560.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>ゆーち</dc:creator><title>メッセージキューから特定のメッセージを消す</title><link>http://blogs.wankuma.com/youchi/archive/2010/05/27/189449.aspx</link><pubDate>Thu, 27 May 2010 11:51:00 GMT</pubDate><guid>http://blogs.wankuma.com/youchi/archive/2010/05/27/189449.aspx</guid><wfw:comment>http://blogs.wankuma.com/youchi/comments/189449.aspx</wfw:comment><comments>http://blogs.wankuma.com/youchi/archive/2010/05/27/189449.aspx#Feedback</comments><slash:comments>220</slash:comments><wfw:commentRss>http://blogs.wankuma.com/youchi/comments/commentRss/189449.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/youchi/services/trackbacks/189449.aspx</trackback:ping><description>先日の『わんくま同盟福岡勉強会＃１２』の最中に、デバッグしてましたｗ&lt;br /&gt;
お客さんにプログラムを送付したところ、バグが直っているとのことでした。&lt;br /&gt;
よかったｗｗｗ&lt;br /&gt;
&lt;br /&gt;
問題となったのは、非同期でスレッド動作させているウィンドウのメッセージキューにある特別なメッセージが不要になっていてキューに残っていると不都合が生じるってことなんですな。&lt;br /&gt;
で、あるタイミングで、別のメッセージ処理が動作する前に取り除かなきゃいけない。&lt;br /&gt;
&lt;br /&gt;
ということで、以下のようなコードを書いたのでした。&lt;br /&gt;
&lt;pre&gt;
        bool    findMsg     = false;
        std::vector&lt;MSG&gt;    MsgList;
        MSG msg;
        while( ::PeekMessage( &amp;msg, Handle, 特定のメッセージ開始値, 終了値, PM_REMOVE ) == TRUE )
        {
            if( メッセージの条件が一致するかどうか )
            {
                findMsg = true;
                break;
            }
            MsgList.push_back( msg );
        }
        // 取り出してしまったメッセージを再度格納する
        std::vector&lt;MSG&gt;::iterator  mit;
        for( mit = MsgList.begin(); mit != MsgList.end(); ++mit )
        {
            ::PostMessage( Handle, mit-&gt;message, mit-&gt;wParam, mit-&gt;lParam );
        }
        // キューに目的のメッセージがあった場合は完了
        if( findMsg == true )
        {
            return;
        }
&lt;/pre&gt;
&lt;br /&gt;
とりあえずはうまくいってるんだけど、これだと、メッセージキューの内容（順番）が変わっちゃうんですよねｗ&lt;br /&gt;
一発で特定して取り出す方法、ないんだろうか・・・&lt;br /&gt;
たしか、ないはずですよね？&lt;br /&gt;
&lt;br /&gt;
相変わらず、WIN32な話ですんません&lt;(＿ ＿)&gt;（笑）&lt;img src ="http://blogs.wankuma.com/youchi/aggbug/189449.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>ゆーち</dc:creator><title>ＧＷは、そけっとｗ</title><link>http://blogs.wankuma.com/youchi/archive/2010/05/05/188734.aspx</link><pubDate>Wed, 05 May 2010 17:55:00 GMT</pubDate><guid>http://blogs.wankuma.com/youchi/archive/2010/05/05/188734.aspx</guid><wfw:comment>http://blogs.wankuma.com/youchi/comments/188734.aspx</wfw:comment><comments>http://blogs.wankuma.com/youchi/archive/2010/05/05/188734.aspx#Feedback</comments><slash:comments>8</slash:comments><wfw:commentRss>http://blogs.wankuma.com/youchi/comments/commentRss/188734.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/youchi/services/trackbacks/188734.aspx</trackback:ping><description>不可解な現象に悩んでおります。&lt;br /&gt;
ソケット通信（っていうのかな？）クライアントソケットとサーバソケットを使ってるんです。&lt;br /&gt;
&lt;br /&gt;
マシン１：M1(Windows XP)&lt;br /&gt;
マシン２：M2(Windows Vista)&lt;br /&gt;
どちらもファイアーウォールを無効にしてます。&lt;br /&gt;
プログラム：A.EXE（サーバソケット）&lt;br /&gt;
プログラム：B.EXE（クライアントソケット）&lt;br /&gt;
&lt;br /&gt;
マシン２のローカルＩＰどうしでの通信&lt;br /&gt;
A.EXE(M2) ⇒ B.EXE(M2)&lt;br /&gt;
うまくいきます。&lt;br /&gt;
&lt;br /&gt;
マシン２からマシン１への送信&lt;br /&gt;
A.EXE(M2) ⇒ B.EXE(M1)&lt;br /&gt;
うまくいきます。&lt;br /&gt;
&lt;br /&gt;
マシン１のローカルＩＰどうしでの通信&lt;br /&gt;
A.EXE(M1) ⇒ B.EXE(M1)&lt;br /&gt;
うごきません。&lt;br /&gt;
&lt;br /&gt;
マシン１からマシン２への送信&lt;br /&gt;
A.EXE(M1) ⇒ B.EXE(M2)&lt;br /&gt;
うごきません。&lt;br /&gt;
&lt;br /&gt;
開発環境の問題で、デバッグできるのがマシン１だけ・・・という苦しい状況でして&lt;br /&gt;
３日間追いかけてますが、原因不明のままです。&lt;br /&gt;
『連休明けには納品します』&lt;br /&gt;
って言っちゃったのになぁ・・・orz&lt;br /&gt;
&lt;br /&gt;
なにか、思い当たるフシがある方、コメントお願いしますぅ。＜(＿ ＿)＞
&lt;img src ="http://blogs.wankuma.com/youchi/aggbug/188734.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>ゆーち</dc:creator><title>LANの通信速度ってのが。</title><link>http://blogs.wankuma.com/youchi/archive/2010/04/17/188118.aspx</link><pubDate>Sat, 17 Apr 2010 11:44:00 GMT</pubDate><guid>http://blogs.wankuma.com/youchi/archive/2010/04/17/188118.aspx</guid><wfw:comment>http://blogs.wankuma.com/youchi/comments/188118.aspx</wfw:comment><comments>http://blogs.wankuma.com/youchi/archive/2010/04/17/188118.aspx#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://blogs.wankuma.com/youchi/comments/commentRss/188118.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/youchi/services/trackbacks/188118.aspx</trackback:ping><description>ローカルコンピュータ上に２つのアプリケーションを置いてUDPでやりとり、ってなシステム。&lt;br /&gt;
それぞれが同じIPアドレスで別々のポート番号を使ってます。&lt;br /&gt;
で、いろいろマルチスレッドな作りになっていましてですね・・・&lt;br /&gt;
ま、そりゃいいんですが。&lt;br /&gt;
&lt;br /&gt;
ネットワークの通信設定で、DHCPサーバからのIP割り当て状態で試験して導入したシステムなんです。&lt;br /&gt;
&lt;br /&gt;
そいつを、IP決めうちに設定したら、通信速度がむちゃ速くなって、タイミングが変わるために動かなくなるというバグに遭遇orz&lt;br /&gt;
だれだよ。こんなコード書いたの・・・orz&lt;br /&gt;
&lt;br /&gt;
決めうちIPだとデフォルトゲートウェイってのが設定されません。&lt;br /&gt;
どーしてこんなに速度が違ってくるのでしょうかね？&lt;br /&gt;
&lt;br /&gt;
WindowsXP でやってます。Vista, 2003Server でも同じ現象でますね・・・&lt;br /&gt;&lt;img src ="http://blogs.wankuma.com/youchi/aggbug/188118.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>ゆーち</dc:creator><title>メールに敬称を付けてくれるプラグイン－その後－</title><link>http://blogs.wankuma.com/youchi/archive/2010/03/08/186909.aspx</link><pubDate>Mon, 08 Mar 2010 20:18:00 GMT</pubDate><guid>http://blogs.wankuma.com/youchi/archive/2010/03/08/186909.aspx</guid><wfw:comment>http://blogs.wankuma.com/youchi/comments/186909.aspx</wfw:comment><comments>http://blogs.wankuma.com/youchi/archive/2010/03/08/186909.aspx#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://blogs.wankuma.com/youchi/comments/commentRss/186909.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/youchi/services/trackbacks/186909.aspx</trackback:ping><description>福岡勉強会でちらっとお話しさせていただいた内容です...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
以前もここで紹介させていただきましたが、&lt;br /&gt;
返信メールの宛先に敬称を付けたり、&lt;br /&gt;
本文に宛先の会社名とか部署名あるいは敬称付きの名前を自動挿入したり、&lt;br /&gt;
ついでに添付ファイル漏れを判断して警告を出してくれたり&lt;br /&gt;
未登録のアドレスをアドレス帳にインポートしやすくしたり&lt;br /&gt;
とっても便利（自画自賛ｗ）なプラグインを提供してます。&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://www.vector.co.jp/soft/win95/net/se476325.html" target=top&gt;BkReplyer&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
徐々にではありますが、登録してくれるユーザーさんが増えてきました。（＾＾）&lt;br /&gt;
だいたい１ヶ月に２名くらいのペースで増えてますです。&lt;br /&gt;
&lt;br /&gt;
以前のバージョンはフリーウェアだったのですが、そのときの推定ユーザー数は&lt;br /&gt;
10,000人くらいいたはずなので、どのくらいの割合で登録してくれるのか&lt;br /&gt;
興味あるところです。&lt;br /&gt;
&lt;br /&gt;
シェアウェア版は 525円ってことにさせていただいております。&lt;br /&gt;
月に２本ペースですから、1,050円ってことです。&lt;br /&gt;
&lt;br /&gt;
登録された場合、確認の必要がありますので、銀行口座をＷＥＢで参照できる&lt;br /&gt;
サービスを利用してるんです。&lt;br /&gt;
そうしないとバスで移動して通帳に印字しなきゃいけなくなるんで。&lt;br /&gt;
&lt;br /&gt;
このサービス料が月額2,100円なんですよ。&lt;br /&gt;
&lt;br /&gt;
毎月、どんどん残高が減ってます（笑）&lt;br /&gt;

&lt;img src ="http://blogs.wankuma.com/youchi/aggbug/186909.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>ゆーち</dc:creator><title>.NET Frameworkが必要！？</title><link>http://blogs.wankuma.com/youchi/archive/2010/03/04/186799.aspx</link><pubDate>Thu, 04 Mar 2010 20:15:00 GMT</pubDate><guid>http://blogs.wankuma.com/youchi/archive/2010/03/04/186799.aspx</guid><wfw:comment>http://blogs.wankuma.com/youchi/comments/186799.aspx</wfw:comment><comments>http://blogs.wankuma.com/youchi/archive/2010/03/04/186799.aspx#Feedback</comments><slash:comments>17</slash:comments><wfw:commentRss>http://blogs.wankuma.com/youchi/comments/commentRss/186799.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/youchi/services/trackbacks/186799.aspx</trackback:ping><description>お仕事で、VS2008 C++ にてDLLを作りました。&lt;br /&gt;
で、配布先のPCで、DLLを認識してくれないPCがある、という連絡受けまして。&lt;br /&gt;
試行錯誤の（つかお客さんに試行錯誤していただいた(^^;）結果、.NET Framework 3.5 を動作させるとうまくいくようになったとのこと。&lt;br /&gt;
&lt;br /&gt;
DLLを読み込むAPもあちきのDLLも、そんな大それた機能は使わずに WIN32API だけで作ってるのに・・・&lt;br /&gt;
&lt;br /&gt;
あちきの開発環境では、VS2008でDLLプロジェクトを作ると、「共通プロパティ」の部分が .NET Framework3.5 になっていて、変更できません。&lt;br /&gt;
おそらく、このオプションで .NET Framework3.5 が必要になっているのかな・・・&lt;br /&gt;
&lt;br /&gt;
こまったなぁ・・・&lt;br /&gt;
この制限、とっぱらう方法、ないでしょうか？&lt;br /&gt;


&lt;img src ="http://blogs.wankuma.com/youchi/aggbug/186799.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>ゆーち</dc:creator><title>UTF8文字化け(perl CGI+TemplateとMySQL)</title><link>http://blogs.wankuma.com/youchi/archive/2010/02/02/185649.aspx</link><pubDate>Tue, 02 Feb 2010 18:10:00 GMT</pubDate><guid>http://blogs.wankuma.com/youchi/archive/2010/02/02/185649.aspx</guid><wfw:comment>http://blogs.wankuma.com/youchi/comments/185649.aspx</wfw:comment><comments>http://blogs.wankuma.com/youchi/archive/2010/02/02/185649.aspx#Feedback</comments><slash:comments>21</slash:comments><wfw:commentRss>http://blogs.wankuma.com/youchi/comments/commentRss/185649.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/youchi/services/trackbacks/185649.aspx</trackback:ping><description>ほんとーーーーに、日本語処理というのはめんどくさい（笑）&lt;br /&gt;
さんざんな目にあいましたよ（笑）&lt;br /&gt;
&lt;br /&gt;
数々の試行錯誤の結果、うまくいくようになったので記録しておきます。&lt;br /&gt;
【環境】&lt;br /&gt;
&lt;pre&gt;
perl 5.8.9
MySQL 5.1.30 (utf8_general_ci で設計)
use CGI;
use Template; #Template toolkit
perlソース：utf-8
htmlおよびtemplateファイル：utf-8
&lt;/pre&gt;
【問題１】出力、ＤＢ登録 html が文字化け。&lt;br /&gt;
これは、use encoding "utf8";&lt;br /&gt;
することで出力の方はうまくいくようになりました。&lt;br /&gt;
ところが。&lt;br /&gt;
&lt;br /&gt;
【問題２】ブラウザ側で＜FORM＞＜input type="text"＞からCGIに渡される文字列が化けてしまう。&lt;br /&gt;
そこで、【１】の use encoding "utf8"; を取っ払って&lt;br /&gt;
&lt;pre&gt;
use utf8;
&lt;/pre&gt;
を指定。&lt;br /&gt;
テキストファイルに出力すると、正しい文字を受け取っていることを確認できました。&lt;br /&gt;
&lt;br /&gt;
【問題３】入力変数の文字化け&lt;br /&gt;
ブラウザからの文字列を正しく受け取れるようになったのはいいけど、ふたたび出力は文字化け。&lt;br /&gt;
しかも受け取った文字をデータベースに登録すると同じように文字化けしてます。&lt;br /&gt;
CGIのパラメータを受け取る部分で&lt;br /&gt;
&lt;pre&gt;
my $param = {};
foreach my $key ( $cgi-&gt;param )
{
    my $value = $cgi-&gt;param( $key );
    utf8::decode( $value );  #ここを追加
    $$param{ $key } = $value;
}
&lt;/pre&gt;
これで、データベースへの登録とテンプレートパラメータが文字化けせずに出力されることを確認できました。&lt;br /&gt;
&lt;br /&gt;
【問題４】&lt;br /&gt;
utf8で書かれたテンプレートファイルに含まれる部分で文字化けが発生します。&lt;br /&gt;
【１】で指定した use encoding "utf8"; を復活させると、他の問題が再燃します。&lt;br /&gt;
さんざんWEB上を探し回り、試行錯誤の結果、テンプレートファイルの先頭にに、次の１行を追加。&lt;br /&gt;
&lt;p&gt;
[% RAWPERL %]use utf8;[% END %]
&lt;/p&gt;
これで、入力、ログ、ＤＢ、出力すべてで utf8 な処理ができるようになりました。&lt;br /&gt;
&lt;br /&gt;
なんで、こんなにややこしいんでしょうかね・・・・&lt;br /&gt;
あちきの時間を返せ！って言いたい。(・∀・)

&lt;img src ="http://blogs.wankuma.com/youchi/aggbug/185649.aspx" width = "1" height = "1" /&gt;</description></item></channel></rss>