<?xml version="1.0" encoding="utf-8" ?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
<title>プログラミング日記</title>
<link>https://ameblo.jp/nx3nj3/</link>
<atom:link href="https://rssblog.ameba.jp/nx3nj3/rss20.xml" rel="self" type="application/rss+xml" />
<atom:link rel="hub" href="http://pubsubhubbub.appspot.com" />
<description>ブログの説明を入力します。</description>
<language>ja</language>
<item>
<title>C++が向いている分野、そうでない分野</title>
<description>
<![CDATA[ <p>C++は汎用的な言語であり、開発環境も多種多様そろっているため、本来、向き不向きというのはない。ただし、それでも以下のように、向き不向きが分かれるように考えられる。</p><p>&nbsp;</p><p>1.不向き</p><p>・Webアプリケーション、Webサービス</p><p>つまり、多くの場合phpやRuby、C#やJavaで作られるWebアプリケーションやWebサービスだ。別にC++で作れないわけではないが、C++の利点がまったく生きず、逆にデプロイの面倒さが足を引っ張るばかりで、C++を使う旨みがまったくない。</p><p>&nbsp;</p><p>・帳票出力</p><p>これもまた、C++で作れないわけではないが、そもそも作ったやつがいるのか？というぐらい、C++が使われない分野である。もしかすると、大量のPDFファイルを短時間で作るためにC++を使う、という選択が行われることがあるかもしれないが。</p><p>&nbsp;</p><p>・それほど速度や柔軟さが求められないデスクトップアプリケーション</p><p>画面のフォーマットが固定的であり、かつ、それほど速度が求められないデスクトップアプリケーションを作るのにC++を使うのは、牛刀を以ってなんとやらである。こういったジャンルはC#に任せておけばいい。MFCは、デスクトップアプリケーションを作るには旧式なライブラリになりつつあり、Windows10に積極的に対応する気配も見られない。</p><p>&nbsp;</p><p>2.向き</p><p>・サーバー</p><p>ApacheやnginxのようなWebサーバーは、C++の先祖であるCで作られている。１秒間に10000を超えるトランザクションをこなせる言語は、CやC++だけではないが、それほど多くはないのだ。</p><p>&nbsp;</p><p>・柔軟なデスクトップアプリケーション<br>C#が(そして、それを支える.net Frameworkが)着実な進歩を見せていても、依然、ExcelやWordはC++ベースで作られている。それはなぜか。ある一定の複雑さを超えると、.net Frameworkは、ある種の限界に達し、驚くほど動きが重くなるのだ。そして、C#は.net Frameworkの枠を超えて動くことはできない。それゆえ、多くのヘビー級デスクトップアプリケーションは、依然C++によって作られている。</p><p>&nbsp;</p><p>・重いデータ処理</p><p>　この場合のデータ処理は、以前挙げたXercesの例のような文書処理であったり、多くのデータを使用した統計計算である。データ量が少ないうちはJavaもC++も、それほど処理速度に変わりはないが、ある一点を超えると、Javaはいきなり遅くなる。データ量と処理速度の関係が１次関数的ではないのだ。</p><p>　事前にデータ量の見積もりが完全にできていれば何の問題もないが、そんなケースは存在しない。メモリやプロセッサのリソース過少による異常な遅延があってはならないので、多くの場合は多めに見積もることになる。結果、「実際には半分も使ってなかったね」、という結果に終わる。</p><p>&nbsp;</p><p>&nbsp;</p>
]]>
</description>
<link>https://ameblo.jp/nx3nj3/entry-12271508725.html</link>
<pubDate>Sun, 31 Dec 2017 00:00:00 +0900</pubDate>
</item>
<item>
<title>C/C++のプログラムでクラッシュダンプを採取する</title>
<description>
<![CDATA[ <p>かつて、C/C++のプログラムで不手際があると、ワトソン博士が登場して、クラッシュダンプを採取してくれたものだが、知らない間にワトソン博士はいなくなってしまった。</p><p>&nbsp;</p><p>今のWindowsでは、クラッシュダンプはこのように取るらしい。</p><ol><li>プログラムをクラッシュさせる。この例では、クラッシュボタンを押すと、メモリアクセス違反が起きるようになっている。<p><a href="https://stat.ameba.jp/user_images/20170507/12/nx3nj3/7c/74/p/o0576033913931496606.png"><img alt="" contenteditable="inherit" height="247" src="https://stat.ameba.jp/user_images/20170507/12/nx3nj3/7c/74/p/o0576033913931496606.png" width="420"></a></p></li><li>「XXXXは動作を停止しました」のダイアログが表示される。<p><a href="https://stat.ameba.jp/user_images/20170507/12/nx3nj3/9d/01/p/o0366018013931496637.png"><img alt="" contenteditable="inherit" height="180" src="https://stat.ameba.jp/user_images/20170507/12/nx3nj3/9d/01/p/o0366018013931496637.png" width="366"></a></p></li><li>デバッグ、プログラムの終了ボタンが表示されたら、タスクマネージャを起動する。<p><a href="https://stat.ameba.jp/user_images/20170507/12/nx3nj3/40/3f/p/o0366017013931496665.png"><img alt="" height="170" src="https://stat.ameba.jp/user_images/20170507/12/nx3nj3/40/3f/p/o0366017013931496665.png" width="366"></a></p></li><li>問題のプログラムの行でコンテキストメニューを表示させ、「ダンプファイルの作成(C)」を選択する。<p><a href="https://stat.ameba.jp/user_images/20170507/12/nx3nj3/e2/7c/p/o0667060513931496731.png"><img alt="" height="381" src="https://stat.ameba.jp/user_images/20170507/12/nx3nj3/e2/7c/p/o0667060513931496731.png" width="420"></a></p></li><li>しばらくしてダンプファイルの出力が完了したら、ダンプファイルのファイル名が表示される。<p><a href="https://stat.ameba.jp/user_images/20170507/14/nx3nj3/76/51/p/o0391018913931570980.png"><img alt="" height="189" src="https://stat.ameba.jp/user_images/20170507/14/nx3nj3/76/51/p/o0391018913931570980.png" width="391"></a></p></li><li>そのダンプファイルをVisual Studioで開いたら、ミニダンプファイルの概要というタイトルでダンプファイルの作成状況が表示されるので、「ネイティブのみでデバッグ」をクリックする。<p><a href="https://stat.ameba.jp/user_images/20170507/14/nx3nj3/73/ca/p/o0643042613931576040.png"><img alt="" height="278" src="https://stat.ameba.jp/user_images/20170507/14/nx3nj3/73/ca/p/o0643042613931576040.png" width="420"></a></p></li><li>例外が発生した状況がデバッガ上で復元される。この例では、crashmeという変数がnullptrであるために例外が起きていることがわかる。<p><a href="https://stat.ameba.jp/user_images/20170507/14/nx3nj3/cf/4f/p/o0890056413931578340.png"><img alt="" height="266" src="https://stat.ameba.jp/user_images/20170507/14/nx3nj3/cf/4f/p/o0890056413931578340.png" width="420"></a></p></li></ol><p>プログラムの開発環境では、このようにクラッシュダンプを採取し、デバッガがそれを利用することができるが、実際にプログラムを配布する先の環境では、どのようにダンプを採取したらいいのだろうか？</p>
]]>
</description>
<link>https://ameblo.jp/nx3nj3/entry-12272476937.html</link>
<pubDate>Sun, 07 May 2017 14:23:25 +0900</pubDate>
</item>
<item>
<title>アメブロはどうも重い</title>
<description>
<![CDATA[ <p>プログラミングに関する記録を残すために、このアメブロを使うことにしたが、どうにもこのアメブロの仕組みには２つ不満がある。</p><p>&nbsp;</p><p>１．「ブログを書く」画面が重くて仕方ない。</p><p>とにかく、この基本中の基本の機能が、遅い。とてつもなく。自分では、けっこういいパソコンを使っているつもりだが、それでも文字の入力に画面がついてこない。他のブロガーの方は、不満はないのだろうか？</p><p>&nbsp;</p><p>２．Flashが有効でないと使えない機能がある。</p><p>アメーバピグという、アバターの機能があるようだが、これが、ブラウザでFlashが有効でないと使えない。今時Flashに依存するなんて、なかなか時代錯誤ではないか？５年ぐらい前にタイムスリップした気分だ。</p><p>&nbsp;</p><p>どうも、スマホ用サイトにだけ注力していて、PC用サイトはろくに更新せずに、ほったらかしのような気がする。そういう時代なんだろうか。</p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p>
]]>
</description>
<link>https://ameblo.jp/nx3nj3/entry-12271485835.html</link>
<pubDate>Thu, 04 May 2017 09:57:01 +0900</pubDate>
</item>
<item>
<title>アメブロ、はじめました！</title>
<description>
<![CDATA[ <p style="text-align: left;">&nbsp;</p><h3 style="text-align: left;"><img alt="まじかるクラウン" draggable="false" height="24" src="https://stat100.ameba.jp/blog/ucs/img/char/char3/472.png" width="24">&nbsp;Q1.ニックネームは？</h3><p style="text-align: left;">またぬき</p><h3 style="text-align: left;"><img alt="ラブ" draggable="false" height="24" src="https://stat100.ameba.jp/blog/ucs/img/char/char3/026.png" width="24">&nbsp;Q2.最近のマイブームは？</h3><p style="text-align: left;">ライブ演奏が聞けるバーを探すこと</p><h3 style="text-align: left;"><img alt="バナナ" draggable="false" height="24" src="https://stat100.ameba.jp/blog/ucs/img/char/char3/248.png" width="24">&nbsp;Q1.好きな食べ物は？</h3><p style="text-align: left;">辛い物が大好き</p><p style="text-align: left;">&nbsp;</p><p style="text-align: left;">&nbsp;</p><p style="text-align: left;"><img alt="熊しっぽ" draggable="false" height="24" src="https://stat100.ameba.jp/blog/ucs/img/char/char3/209.png" width="24"><img alt="熊からだ" draggable="false" height="24" src="https://stat100.ameba.jp/blog/ucs/img/char/char3/210.png" width="24"><img alt="熊からだ" draggable="false" height="24" src="https://stat100.ameba.jp/blog/ucs/img/char/char3/210.png" width="24"><img alt="熊あたま" draggable="false" height="24" src="https://stat100.ameba.jp/blog/ucs/img/char/char3/211.png" width="24"><img alt="クマムシくん" draggable="false" height="24" src="https://stat100.ameba.jp/blog/ucs/img/char/char3/201.png" width="24"><img alt="音符" draggable="false" height="24" src="https://stat100.ameba.jp/blog/ucs/img/char/char3/143.png" width="24"></p><p style="text-align: left;">&nbsp;</p><p style="text-align: left;">&nbsp;</p><p style="text-align: left;">&nbsp;</p>
]]>
</description>
<link>https://ameblo.jp/nx3nj3/entry-12271482649.html</link>
<pubDate>Thu, 04 May 2017 09:43:38 +0900</pubDate>
</item>
</channel>
</rss>
