̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ IT ニュース&コラム 2012/1/9 通巻552号 ソフトウェアデザイン館 Sage Plaisir 21  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ 【年賀】 2012年も、よろしくお願いします。         ソフトウェアデザイン館 Sage Plaisir 21 について  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ホームページ  >>> http://www.sage-p.com/ メルマガ    >>> http://www.mag2.com/m/0000083983.html ブログ     >>> http://blog.livedoor.jp/sage_p/ ツイッター   >>> http://twitter.com/Ts_Neko ダウンロード  >>> http://www.sage-p.com/freesoft.htm サポート掲示板 >>> http://www.sage-p.com/kg_ban09/z6037C8.cgi 東日本大震災  >>> http://www.sage-p.com/saigai.html メール   >>> ts-neko◇sage-p.com ←◇を@に変えてください          緊急メールは件名に「うどんメール」を付けてください。                        News and Column  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄   docomo の spモードのメールアドレスが他人のものになる不具合 2011年 12月20日、docomo のスマートフォンを使って、spモードという タイプの電子メールを送ると、送った人とは別の人から送信したメール に変わってしまう不具合が発生した。 もし、このメールに返信をすると、 送った人とは別の人に返信されてしまう。 この状況は、約10万人の 利用者に発生し6時間続いた。    この不具合は、2011年に iPhone や Android のスマート    フォン(スマホ)が爆発的に普及したことが背景にある。    spモードの1つであるメール機能は、iモードのメール    アドレス(@docomo.ne.jp)が引き続き使えるうえ、    絵文字やデコメールも楽しめるメールサービスだ。    関西地区の中継伝送路に障害が発生して通信が2分間完全    に絶たれ、その後、回復のために端末(携帯電話機)から    中継伝送路に一斉に再接続要求があり、輻輳(ふくそう、    処理が極端に遅くなること)が発生した。その後、輻輳を    解消をするため通信規制を約2時間行い、回復したときに、    電話番号(spモードのメールアドレス)が持っている古い    IPアドレスが開放されないまま、別の電話番号にそのIP    アドレスをマッピングしてしまう不具合が発生した。 社会で使われているシステムのほとんどはテストが行われているが、レア ケースまで完全にテストが網羅できていると証明ができないことがある。 完全に網羅できるためのツールの1つに、状態遷移テーブルがあるが、 今回のケースでは、状態遷移テーブルを完全に埋めたとしても、網羅できて いないというケースに該当すると推測される。 このようなケースは、ストレステストや公開ベータテストなどを行う。 この場合、完全に網羅できていることを証明する方法は無い。 あるテストケースが偶然にも不具合の発見につながれば解決されるのだ。 つまり、正常稼動している期間の実績が信頼度の指標になる。 実績を 積むには狭い範囲、たとえば関西だけで行うのだが、今回の場合はIP アドレスを使っていることや、spモードがサービスの開始から1年半 しかたっていないのに、スマホが爆発的に普及してしまったために、 被害が大きくなってしまったのだろう。 今回のケースでは、非常用システムもうまく動かなかった。 いわゆる 想定外だったというわけだ。 素人には「想定外は許されない」と考える だろうが、コストとの兼ね合いだ。 東日本大震災の津波が発生したため、 現在では想定内になった 20メートルを超える津波だが、これを完全に 止める堤防は作ることができないのだ。 発生してしまった被害には、保険やお詫びのサービスなどによって補償する ことになるが、今回は補償に関する報道が少ないため、被害はあまり大きく なさそうだ。 参考リンク: http://internet.watch.impress.co.jp/docs/news/20111221_500801.html * The others Last week watched News  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ◇ Android OSから見たセキュリティ対策ソフトの制約。 http://www.itmedia.co.jp/enterprise/articles/1112/26/news015.html … 自己感染する(勝手に拡散する)タイプのウィルスは出現していない。 ◇ iPhone 4SやiPad 2のゲームを大画面で遊ぼう!Apple TVからプロジェクターまで。 http://game.watch.impress.co.jp/docs/series/iphone/20111229_502396.html … iPhone 4SやiPad 2 の AirPlay を使えば、大画面にそのまま表示できる。 ◇ 防衛省が対サイバー兵器、攻撃を逆探知し無力化。 http://www.yomiuri.co.jp/national/news/20111231-OYT1T00519.htm … 敵の基地を攻撃する爆撃機に相当するが、人命は奪わない。 ◇ セキュリティ強化のはずが逆効果? HTML5 サンドボックスの盲点。 http://techtarget.itmedia.co.jp/tt/news/1201/05/news03.html … この記事に関連する人は、不安を煽っているだけ。ブラウザメーカの仕事。 ◇ なぜ今、発送電分離なのかわからない。 http://eco.nikkeibp.co.jp/article/column/20110915/108401/?P=4 … その理由として、電力不足を挙げているが、木を見て森を見ていない。                      Snap Note 3 開発BLOG  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄  [ Visual C/C++ のメモリリークを追跡するには ] Java や C# などの多くの言語は、ガベージコレクション機能によって、 メモリリークは発生しないため、多くの開発者は心配しなくてよくなって きましたが、Google Chrome では Native Client 機能が追加されるなど、 まだ C言語を使う機会があり、メモリリーク問題と戦わなければならない かもしれません。 メモリリークとは、malloc 関数や new 演算子を使って確保した変数 (メモリ)を、free 関数や delete 演算子を使って開放することを 忘れることです。 短時間で終了するプログラムなら、プログラムが 終了するときに OS によってすべてを開放するために問題ないのですが、 長時間稼動するプログラムでは、いずれメモリ不足になってシステムが ダウンします。 Visual C++ では、プログラムの最後で、_CrtDumpMemoryLeaks 関数を 呼び出すと、メモリリークを一覧することができます。 その一覧には、 メモリ・ブロック(変数)の識別番号が含まれています。   Dumping objects ->   {738} normal block at 0x00A7EE60, 4096 bytes long. 上記の場合、メモリ・ブロックの識別番号は 738 です。 この番号を 使って、main 関数の最初で _CrtSetBreakAlloc 関数を呼び出せば、 そのメモリ・ブロックを確保した瞬間にブレークするようになります。   _CrtSetBreakAlloc( 738 ); コールスタックから呼び出し元の関数を調べていけば、メモリリークを 起こしている変数を発見することができます。 たとえば、コールスタック から下記のようなコードが見つかれば、var 変数の開放を忘れている ことになります。   var = malloc( 4096 ); 識別番号は、メモリを確保した順番に付けられるため、プログラムが 完全に同じ動きを再現できなければ、毎回プログラムを動かすたびに 識別番号が変わってしまうため、変数を特定することはできません。 たとえば、WM_TIMER という Window メッセージに応答するプログラム を使って、クリックしたときに確保したメモリがメモリリークを発生 させた場合、クリックするタイミングによって、識別番号が変わって しまいます。 この場合、クリックしたときの処理を開始したときから、相対的に 識別番号を指定すれば、変数を特定することができます。 すべて Window メッセージに応答する CMainFrame::WindowProc 関数 などに、下記のコードを埋め込んで実行すると、Window メッセージ の種類と、メッセージを受信した瞬間のメモリ・ブロックの識別番号が printf されます。 { // ここを通ってから、+0 番目にメモリ領域を確保したときにブレークさせる long malloc_ID; char* file_name; int line_num; void* heap_memory = malloc( 1 ); printf( "CMainFrame::WindowProc: (0x%04X)%s\n", message, WinX_getWMStr( message ) ); assert( _CrtIsMemoryBlock( heap_memory, 1, &malloc_ID, &file_name, &line_num ) ); printf( "_CrtIsMemoryBlock {%d} in %s(%d)\n", malloc_ID, __FILE__, __LINE__ ); if ( message == 0 ) _CrtSetBreakAlloc( malloc_ID + 0 ); free( heap_memory ); } Window メッセージの種類と、メモリ・ブロックの識別番号の相対値を、 if ( message == 0 ) _CrtSetBreakAlloc( malloc_ID + 0 ); の 0 の部分(2箇所)に埋め込んで再実行すれば、メモリ・ブロックを 確保した瞬間にブレークするようになります。         ソフトウェアデザイン館 Sage Plaisir 21 について  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ホームページ  >>> http://www.sage-p.com/ メルマガ    >>> http://www.mag2.com/m/0000083983.html ブログ     >>> http://blog.livedoor.jp/sage_p/ ツイッター   >>> http://twitter.com/Ts_Neko ダウンロード  >>> http://www.sage-p.com/freesoft.htm サポート掲示板 >>> http://www.sage-p.com/kg_ban09/z6037C8.cgi 東日本大震災  >>> http://www.sage-p.com/saigai.html メール   >>> ts-neko◇sage-p.com ←◇を@に変えてください          緊急メールは件名に「うどんメール」を付けてください。  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ このメルマガの登録・解除をするときは… >>> http://www.mag2.com/m/0000083983.htm  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ News & Column are composed by T's-Neko 2012  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄