<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
		xmlns:xhtml="http://www.w3.org/1999/xhtml"
>

<channel>
	<title>Whimsical Kitteeeeen</title>
	<atom:link href="http://www.witkitty.com/wordpress/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.witkitty.com/wordpress</link>
	<description>日々繰り返される失敗談と、その失敗を冷ややかな眼差しで見守る気まぐれ猫たちの近況・・・</description>
	<lastBuildDate>Thu, 02 Feb 2012 07:32:57 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://www.witkitty.com/wordpress/feed/" />
		<item>
		<title>半年ぶりに更新・・・ぉぃ</title>
		<link>http://www.witkitty.com/wordpress/2012/02/02/update_after_so_long/</link>
		<comments>http://www.witkitty.com/wordpress/2012/02/02/update_after_so_long/#comments</comments>
		<pubDate>Thu, 02 Feb 2012 07:31:06 +0000</pubDate>
		<dc:creator>hiro</dc:creator>
				<category><![CDATA[気まぐれ日記]]></category>

		<guid isPermaLink="false">http://www.witkitty.com/wordpress/?p=716</guid>
		<description><![CDATA[はてさて、半年ぶりに更新・・・ かなりサボってましたな。 忙しかったと言えば忙しかったし、今も。 先週までは、固定IP追加で、宅内ネットワークの再構成とサーバ構築。サーバ構築ついでに、VMware ESXi をv5 に数 &#8230;<p class="read-more"><a href="http://www.witkitty.com/wordpress/2012/02/02/update_after_so_long/">Read more &#187;</a></p>]]></description>
			<content:encoded><![CDATA[<p style="padding-left: 30px;">はてさて、半年ぶりに更新・・・</p>
<p style="padding-left: 30px;">かなりサボってましたな。</p>
<p style="padding-left: 30px;">忙しかったと言えば忙しかったし、今も。</p>
<p style="padding-left: 30px;">先週までは、固定IP追加で、宅内ネットワークの再構成とサーバ構築。サーバ構築ついでに、VMware ESXi をv5 に数台をアップグレード、wordpressもアップグレード、その他多数。芋づる的にやることが増えてメモリと体力が上限に張り付いたまま・・・とほほ。</p>
<p style="padding-left: 30px;">とはいえ、いろいろとやらかしたので<strong><span style="color: #ff0000;">失敗ネタ</span></strong>は<strong>豊富</strong>です、ぼちぼち更新していこうかと。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.witkitty.com/wordpress/2012/02/02/update_after_so_long/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://www.witkitty.com/wordpress/2012/02/02/update_after_so_long/" />
	</item>
		<item>
		<title>awstatsでサブページがリンク切れ～</title>
		<link>http://www.witkitty.com/wordpress/2011/07/25/awstats_link_error/</link>
		<comments>http://www.witkitty.com/wordpress/2011/07/25/awstats_link_error/#comments</comments>
		<pubDate>Mon, 25 Jul 2011 03:45:27 +0000</pubDate>
		<dc:creator>hiro</dc:creator>
				<category><![CDATA[Linux]]></category>

		<guid isPermaLink="false">http://www.witkitty.com/wordpress/?p=703</guid>
		<description><![CDATA[当方のサイトはawstatsで簡単なアクセス解析をしているのですが、生成される解析結果のトップページからのサブページへのリンクと実際にawstatsがはき出すhtmlファイル名が異なっており、リンク切れを起こしておりまし &#8230;<p class="read-more"><a href="http://www.witkitty.com/wordpress/2011/07/25/awstats_link_error/">Read more &#187;</a></p>]]></description>
			<content:encoded><![CDATA[<div style="padding-left: 30px;">
<p style="text-indent:1em;">
当方のサイトはawstatsで簡単なアクセス解析をしているのですが、生成される解析結果のトップページからのサブページへのリンクと実際にawstatsがはき出すhtmlファイル名が異なっており、リンク切れを起こしておりました。まぁ、外部からはアクセスできないので、放置しておいても問題ないのだが・・・<br />
トップページ（index.html）からサブページのリンクは、「ホスト名.yyyymm.カテゴリ.html」なのだが、実際に作成されるファイル名は、「awstats.ホスト名.yyyymm.カテゴリ.html」。つまり、実際に作成されるファイルに「awstats」が付帯している。<br />
調べてみると、バージョン6.9.5以降のバグらしく、当方が使用しているバージョンは7.0.3 in Fedora15。ビンゴでした。<br />
さて、どうしたものかと思案した結果、awstatsのソースを弄っても、バージョンアップごとに手入れ部分を修正するのも面倒だったので、外的処置で逃げることに。<br />
そうです、生成されたindex.htmlのリンクを強制的に書き換える方法です。<br />
何らかのスクリプトで解析ページ生成をしていると思うので、そのスクリプトの最後に下記を挿入。<br />
（解析ページ保存先やホスト名は適当に書き換えてください）</p>
<pre>
pushd &lt;解析ページ生成ディレクトリ&gt;
sed -i &quot;s/href=\&quot;witkitty\.com\./href=\&quot;awstats\.witkitty\.com\./g&quot; index.html
popd
</pre>
<p>言わなくてもお分かりかと思いますが、注意点は「置換文字列中の特殊文字にご注意を！」です。<br />
上記sedコマンドでは、ダブルクォーテーション（&#8221;）とピリオド（.）は特殊文字になるので、特殊文字として認識しないようバックスラッシュ（\）で意図的に指定しています。</p>
<p>とまぁ、これで一時的に回避しておいて、また問題が出たらその時にでも。
</p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.witkitty.com/wordpress/2011/07/25/awstats_link_error/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://www.witkitty.com/wordpress/2011/07/25/awstats_link_error/" />
	</item>
		<item>
		<title>初めて遭遇</title>
		<link>http://www.witkitty.com/wordpress/2011/07/09/first_contact_sticky/</link>
		<comments>http://www.witkitty.com/wordpress/2011/07/09/first_contact_sticky/#comments</comments>
		<pubDate>Sat, 09 Jul 2011 01:04:47 +0000</pubDate>
		<dc:creator>hiro</dc:creator>
				<category><![CDATA[気まぐれ日記]]></category>

		<guid isPermaLink="false">http://www.witkitty.com/wordpress/?p=674</guid>
		<description><![CDATA[昨日当方がツイッターでフォローしている方のところで、「これこれ修正みてはいかが？」とお伝えし、その後当方の勘違いで直ったかのような返信をしたのですが、とあるユーザさんから、当方個人宛に、「まだ直っていないんだから、混乱の &#8230;<p class="read-more"><a href="http://www.witkitty.com/wordpress/2011/07/09/first_contact_sticky/">Read more &#187;</a></p>]]></description>
			<content:encoded><![CDATA[<p style="padding-left: 30px; text-indent:1em;">
昨日当方がツイッターでフォローしている方のところで、「これこれ修正みてはいかが？」とお伝えし、その後当方の勘違いで直ったかのような返信をしたのですが、とあるユーザさんから、当方個人宛に、「まだ直っていないんだから、混乱の元になるので&#8221;直っている発言&#8221;を訂正しろ」（要約）との長文メッセージが。<br />
まぁ、当方の勘違いなのでごもっともなご意見ではあるのだが、なぜ個人宛？<br />
個人レベルで敬意を表しつつもある程度フランクな発言が可能なのがツイッターの醍醐味。（会社やお役所の公式ツイッターではないのだから）<br />
なので、その方も混乱を避けさせたいのが主題であるならば、「まだ直ってませんよ～」と「有意義な」一言をフォロー元に返信してもらえればフォローしている皆さんは気づくと思うし、当方も「ありゃ、早とちりしてしまった、ごめんなさい」と謝っていたでしょう。<br />
その後、当方の読解力不足もあいまって、フォロー元に突然的外れな訂正を送ってしまい、フォロー元の方を混乱させてしまい、申し訳ないことをしてしまった。訂正メッセージはしっかりとお送りさせてもらったが、この場を使ってフォロー元の方には再度謝っておきたいと思う。（見ていないと思うけれどｗ）<br />
「<strong><span style="color: #3366ff; font-size:medium;">混乱を招きごめんなさい</span></strong>」
</p>
<p style="padding-left: 30px;">
話かわって、当方に訂正メッセージを送りつけてきた方が、どんな方をフォローしているのかちょいと興味が湧いたので辿ってみたら、<br />
<strong><span style="color: #dd0000; font-size:16px;">「このユーザは存在しません」(ﾟДﾟ;)</span></strong><br />
まだ時間も経ってないのにアカウント削除してる・・・<br />
当方がフォローしている方のツイートを見ているということは、本垢でフォローしていて、気にくわないことがことがあったらサブ垢で発信ってこと？サブ垢取ってまでメッセージ送りつけるメリットって何？<br />
辿っても分からないよ～、バリバリの（古ｗ）ツイッター使いだから。ってドヤ顔したいのかな？<br />
「ツイッター使いでござい～」だったら、ツイッターで円滑に進める術も知っているはず。と言うことはやはり憂さを晴らしたいだけのメッセージであると思われ。
</p>
<p style="padding-left: 30px;">
まぁ、このような方からメッセージが来たら、相対するのではなく、「はいはい、あんたが大将、あんたが全て正しい～」って徹底的に下手に出た対応をした方が得策。こっちの鼻っぱしを折りたくて送ってきたんだろうけれど、小さいやつに労力使う必要ないしね。
</p>
<p style="padding-left: 30px;">
とまぁ、初めて遭遇した「構ってちゃん」に対応してみました。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.witkitty.com/wordpress/2011/07/09/first_contact_sticky/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://www.witkitty.com/wordpress/2011/07/09/first_contact_sticky/" />
	</item>
		<item>
		<title>XPERIAとGoogleカレンダーの同期が・・・</title>
		<link>http://www.witkitty.com/wordpress/2011/06/04/sync_google-calendar_to_xperia/</link>
		<comments>http://www.witkitty.com/wordpress/2011/06/04/sync_google-calendar_to_xperia/#comments</comments>
		<pubDate>Sat, 04 Jun 2011 00:26:02 +0000</pubDate>
		<dc:creator>hiro</dc:creator>
				<category><![CDATA[Gadget]]></category>
		<category><![CDATA[Googleカレンダー]]></category>
		<category><![CDATA[sync]]></category>
		<category><![CDATA[XPERIA]]></category>
		<category><![CDATA[同期]]></category>

		<guid isPermaLink="false">http://www.witkitty.com/wordpress/?p=666</guid>
		<description><![CDATA[XPERIAのアプリ：ジョルテを使ってGoogleカレンダーと同期しているのだが、5月末あたりに何故かカレンダーが更新されない事象が発生。 なんで？といろいろアプリを変更して見るも同期せず。 しかし、Googleカレンダ &#8230;<p class="read-more"><a href="http://www.witkitty.com/wordpress/2011/06/04/sync_google-calendar_to_xperia/">Read more &#187;</a></p>]]></description>
			<content:encoded><![CDATA[<div style="padding-left: 30px;">
XPERIAのアプリ：ジョルテを使ってGoogleカレンダーと同期しているのだが、5月末あたりに何故かカレンダーが更新されない事象が発生。<br />
なんで？といろいろアプリを変更して見るも同期せず。<br />
しかし、Googleカレンダー側で新たに予定を入れるとそこだけ更新される・・・ということは、Googleカレンダーの過去データに何か問題が生じていると思われ、以下の手順で復旧を試みることに。（Googleカレンダー側のデータは表示されているのでどういう壊れ方をしたのかさっぱり検討がつかんｗ）</p>
<p>Googleカレンダー設定画面から、</p>
<ul>
<li>カレンダーをエクスポート（カレンダーデータをファイルとして保存）</li>
<li>カレンダーを削除</li>
<li>エクスポートしたデータをインポート（保存されたカレンダーデータを登録）</li>
</ul>
<p>ここで、おもむろにXPERIAから「カレンダー同期」を実行～。<br />
「むふふ、同期したぉ」</p>
<p>さて、では何故Googleカレンダー側のデータに問題が生じたかについては・・・・・「不明」です。<br />
もし再発するようであれば、その時の当方の操作も含め再現できたらなぁ～と。</p>
<p>同じ現象が出ている人はお試しあれ。
</p></div>
]]></content:encoded>
			<wfw:commentRss>http://www.witkitty.com/wordpress/2011/06/04/sync_google-calendar_to_xperia/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://www.witkitty.com/wordpress/2011/06/04/sync_google-calendar_to_xperia/" />
	</item>
		<item>
		<title>WP-Weatherプラグインの日本語化</title>
		<link>http://www.witkitty.com/wordpress/2011/05/23/translate_wp-weather_plugin/</link>
		<comments>http://www.witkitty.com/wordpress/2011/05/23/translate_wp-weather_plugin/#comments</comments>
		<pubDate>Mon, 23 May 2011 10:53:22 +0000</pubDate>
		<dc:creator>hiro</dc:creator>
				<category><![CDATA[WordPress]]></category>
		<category><![CDATA[WP Plugins]]></category>
		<category><![CDATA[translate]]></category>
		<category><![CDATA[wp-weather]]></category>
		<category><![CDATA[日本語訳]]></category>

		<guid isPermaLink="false">http://www.witkitty.com/wordpress/?p=629</guid>
		<description><![CDATA[当ブログのテーマを変えたついでに、ウェジットプラグインで使っているお天気情報表示プラグイン「WP-Weather」を日本語化してみました。このプラグインは国際化に対応しているので、ある程度はリソースだけを弄るだけで日本語 &#8230;<p class="read-more"><a href="http://www.witkitty.com/wordpress/2011/05/23/translate_wp-weather_plugin/">Read more &#187;</a></p>]]></description>
			<content:encoded><![CDATA[<p style="padding-left: 30px; text-indent:1em;">
当ブログのテーマを変えたついでに、ウェジットプラグインで使っているお天気情報表示プラグイン「WP-Weather」を日本語化してみました。このプラグインは国際化に対応しているので、ある程度はリソースだけを弄るだけで日本語化できます。
</p>
<p></p>
<div style="padding-left: 30px;">
大雑把な手順は以下の通り。（ちなみに訳等の作業はWindowsマシンで行っています）</p>
<ol>
<li>wp-weather-en_US.poをwp-weather-ja.poにコピーし、作業マシンに引っ張ってきます。</li>
<li>POEdit（<a href="http://www.poedit.net/" target="_blank">作者さんのサイト</a>）でこのファイルを開き、対訳を変更していきます。</li>
<li>対訳の変更が終わったら、カタログを作成します。（wp-weather-ja.moができあがります）</li>
<li>wp-weather-ja.moファイルをlocalizationディレクトリにコピーします。</li>
</ol>
</div>
<p></p>
<div style="padding-left: 30px;">
上記の方法で固定文字列が日本語化されます。しかし、私は欲張って日付の書式を日本式にしたり、動的に変わるお天気なども日本語化したくなり・・・<strong><span style="color: #000099; font-size:16px;">「はまりました・・・orz <img class="colorbox-629"  src="http://www.witkitty.com/wordpress/wp-includes/images/smilies/icon_cry.gif" alt="icon_cry.gif" />」</span></strong></div>
<p></p>
<div style="padding-left: 30px;">
このプラグインの流れは、「更新→weather.comに問い合わせ→wordpress DBのデータ更新→データ表示」となるわけです。当方は、「DBはUTF-8だし、wordpressやプラグインで使用する文字列もUTF-8なので問題ないだろう」と高をくくり、がしがしと動的に変わる文字列をpoファイルに登録・対訳し、ソースを変更していきました。そして、更新～。</div>
<div style="padding-left: 30px;">
<strong><span style="color: #dd0000; font-size:16px;">「・・・、対訳が出てこねぇ～ <img class="colorbox-629"  src="http://www.witkitty.com/wordpress/wp-includes/images/smilies/icon_evil.gif" alt="icon_evil.gif" />」</span></strong>
</div>
<div style="padding-left: 30px;">
ソース文字列をHexコードでチェックして見るも、特に変なコードが入っているわけでもなし。「う～ん、う～ん」と呻きながら小一時間。phpの文字列操作関数群を眺めながら、「おやっ、mb_～()？、もしやマルチバイト・・・」。<br />
ここまで足突っ込んじゃっているし、とりあえずマルチバイト系文字列に変換してみるか～とゴソゴソソースを修正＆更新～。<br />
<strong><span style="color: #555555; font-size:16px;">「うぉ、対訳出てきやがった <img class="colorbox-629"  src="http://www.witkitty.com/wordpress/wp-includes/images/smilies/icon_eek.gif" alt="icon_eek.gif" />」</span></strong><br />
う～ん、文字列はかなり癖あるなぁ～と。（当方の知識不足は棚上げしておきます、ぉぃ）
</div>
<p></p>
<div style="padding-left: 30px;">
DBのデータを一旦マルチバイト文字列に変換し、その文字列を変換用検索文字列として渡します。<br />
変更例は以下のよう感じ。</p>
<pre>
$htmlstring .= &#039;&lt;br /&gt;&#039;.__(mb_substr($xml-&gt;cc-&gt;t, 0, mb_strlen($xml-&gt;cc-&gt;t) ,&#039;UTF-8&#039;), &#039;wp-weather&#039;).&#039;&lt;br/&gt;&#039;;
</pre>
<p>また、日付を海外書式（Monday, May 23）から日本書式（5月23日 月曜日）へ変換したい場合の例はこんな感じ。</p>
<pre>
$htmlstring .= date_i18n('n月j日 l', strtotime($day_forecast->lsup));
</pre>
<p>上記の例の基のデータ（$day_forecast->lsup）はデータベースを覗くと[ <span style="color: #0000aa;">5/23/11 2:13 PM Local Time</span> ]な感じなんですが、date_i18n()とstrtotime()関数の組み合わせは結構融通が利くみたい。例えば[ <span style="color: #0000aa;">May 24</span> ]をstrtotime()に通した後、date_i18n()に通すと思い通りの書式で出力してくれる。もし、ソースを見る機会があったら覗いて見ようかと。ここまで融通が利くと結構バグがあるかもしれんしね。（ぉぃ、疑う前に知識身につけろ・・・ごもっとも）<br />
<strong><span style="color: #dd0000;">注：date_i18n()関数はwordpress固有の関数ですのでご注意を。</span></strong>
</div>
<p></p>
<div style="padding-left: 30px;">
さて最後に<br />
「<strong><span style="color: #dd0000; font-size:16px;">まだ日本語化終わっていません、ｷﾘｯ</span></strong>」</p>
<p>と言うのも、お天気の種類がいくつあるのか分からないので、出たとこ勝負で訳しています。<br />
作者に聞いてみようと思うので、進捗があったら更新します。<br />
それと、この変更はまだ作者に了解を取って行っているわけではないのでファイルは公開できません。上記の問い合わせとあわせて聞いてみますので、これも進捗があったら更新します、あしからず。
</p></div>
]]></content:encoded>
			<wfw:commentRss>http://www.witkitty.com/wordpress/2011/05/23/translate_wp-weather_plugin/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://www.witkitty.com/wordpress/2011/05/23/translate_wp-weather_plugin/" />
	</item>
		<item>
		<title>可変構造データの扱い</title>
		<link>http://www.witkitty.com/wordpress/2011/05/20/for_access_random_structure_data/</link>
		<comments>http://www.witkitty.com/wordpress/2011/05/20/for_access_random_structure_data/#comments</comments>
		<pubDate>Fri, 20 May 2011 14:32:59 +0000</pubDate>
		<dc:creator>hiro</dc:creator>
				<category><![CDATA[プログラミング]]></category>
		<category><![CDATA[C++]]></category>
		<category><![CDATA[openLDAP]]></category>
		<category><![CDATA[string]]></category>
		<category><![CDATA[vector]]></category>
		<category><![CDATA[構造体]]></category>

		<guid isPermaLink="false">http://www.witkitty.com/wordpress/?p=515</guid>
		<description><![CDATA[興味本位でWindowsでOpenLDAPのデータでも操作してみようかな～とプログラミングを開始してみた。基のソースはMicrosoft MSDNのライブラリからパクってきたのだが。（興味がある方はリンクにアクセスしてね &#8230;<p class="read-more"><a href="http://www.witkitty.com/wordpress/2011/05/20/for_access_random_structure_data/">Read more &#187;</a></p>]]></description>
			<content:encoded><![CDATA[<p style="padding-left: 30px; text-indent:1em;">
興味本位でWindowsでOpenLDAPのデータでも操作してみようかな～とプログラミングを開始してみた。基のソースはMicrosoft <a href="http://msdn.microsoft.com/en-us/library/aa367016%28v=VS.85%29.aspx" target="_blank">MSDNのライブラリ</a>からパクってきたのだが。（興味がある方はリンクにアクセスしてね）
</p>
<p></p>
<div style="padding-left: 30px;">
で、いきなりこのソースの注意点ですが、構造体：SEC_WINNT_AUTH_IDENTITYのPasswordは素のパスワードでは通用しないと思われ、HASH化した文字列が必要と思われます。パスワードのHASH化はslappasswdで得ることが可能ですので調べてくださいな。素のパスワードでアクセスしたい場合は、ldap_simple_bind_s()もしくはldap_simple_bind()を利用してくださいな。
</div>
<p></p>
<div style="padding-left: 30px;">
さて、順調にこのソースを咀嚼していき、何とか情報を引き出し表示させるまでに。そこで、表示されているデータをジッと見つめていると、アトリビュート（属性）数は可変だし、配下のデータ数も可変。<br />
さて、どうやってローカルに取り込もうか思いあぐねた結果、構造体＋std::vectorにすることに。理由は、vectorを利用することで可変データに対応するため。（無駄なメモリ使いたくないし、解放操作も面倒だしｗ）<br />
構造体は下記のような入れ子。（データ構造は本文最後の方で図を掲載してあります）
</div>
<p></p>
<div style="padding-left: 30px;">
<pre>
struct LDAP_ITEM
{
	string					attr;		// 属性名
	vector&lt;string&gt;		item;	// 属性配下のアイテム（vectorで可変に）
};

struct LDAP_DATA
{
	int						entrynum;	// エントリ番号
	vector&lt;LDAP_ITEM&gt;	data;		// エントリデータ内容（上記入れ子構造体をvectorで可変に）
};
</pre>
<p>で、次にどうやってこの構造体にデータをぶち込んでいるかは以下のソース。Microsoftのソースコードを基にしているので何を追加・変更しているかは大体察しが付くと思いますが、簡単にコメントも入れてみました。<br />
ソースが長いので、「ソースを表示」で伸張してくださいな。
</p></div>
<p></p>
<div style="padding-left: 30px;">
<pre>
	//----------------------------------------------------------
	// Get the number of entries returned.
	//----------------------------------------------------------
	ULONG numberOfEntries;

	numberOfEntries = ldap_count_entries(pLdapConnection, pSearchResult);

	if(numberOfEntries == NULL)
	{
		printf("ldap_count_entries failed with 0x%0lx \n",errorCode);
		ldap_unbind_s(pLdapConnection);
		if(pSearchResult != NULL)
			ldap_msgfree(pSearchResult);
			return -1;
	}
	else
		printf("ldap_count_entries succeeded \n");

	printf("The number of entries is: %d \n", numberOfEntries);

	//----------------------------------------------------------
	// Loop through the search entries, get, and output the
	// requested list of attributes and values.
	//----------------------------------------------------------
	LDAPMessage* pEntry = NULL;
	PCHAR pEntryDN = NULL;
	ULONG iCnt = 0;
	char* sMsg;
	BerElement* pBer = NULL;
	PCHAR pAttribute = NULL;
	PCHAR* ppValue = NULL;
	ULONG iValue = 0;

	// コメント：入れ子構造体データの一時的な保管場所。
	// これをあとで下の元データの一時的な構造体にpush_back。
	LDAP_ITEM		tmp_item;
	// コメント：元データの一時的な保管場所。あとで実データにpash_back。
	LDAP_DATA		tmp_ldap;

	for( iCnt=0; iCnt &lt; numberOfEntries; iCnt++ )
	{
		// Get the first/next entry.
		if( !iCnt )
			pEntry = ldap_first_entry(pLdapConnection, pSearchResult);
		else
			pEntry = ldap_next_entry(pLdapConnection, pEntry);

		// Output a status message.
		sMsg = (!iCnt ? "ldap_first_entry" : "ldap_next_entry");
		if( pEntry == NULL )
		{
			printf("%s failed with 0x%0lx \n", sMsg, LdapGetLastError());
			ldap_unbind_s(pLdapConnection);
			ldap_msgfree(pSearchResult);
			return -1;
		}

		tmp_ldap.entrynum = iCnt;    // コメント：エントリ番号を保存。

		// Get the first attribute name.
		pAttribute = ldap_first_attribute(pLdapConnection, pEntry, &amp;pBer);

		// Output the attribute names for the current object
		// and output values.

		while(pAttribute != NULL)
		{

			// コメント：一時的なアイテム保管場所。
			//                   アイテムがいくつあるか分からないのでvector使用。
			vector&lt;string&gt;		tmpItem;
			// コメント：属性を保存。
			tmp_item.attr = pAttribute;    

			// Get the string values.
			ppValue = ldap_get_values(pLdapConnection, pEntry, pAttribute);

			// Print status if no values are returned (NULL ptr)
			if(ppValue == NULL)
			{
				printf(": [NO ATTRIBUTE VALUE RETURNED]");
			}

			// Output the attribute values
			else
			{
				iValue = ldap_count_values(ppValue);
				if(!iValue)
				{
					printf(": [BAD VALUE LIST]");
				}
				else
				{
					tmpItem.push_back(*ppValue);    // コメント：最初のアイテムを保存。

					// Output more values if available
					ULONG z;
					for(z=1; z&lt;iValue; z++)
					{
						// コメント：残りのアイテムがあれば保存。
						tmpItem.push_back(ppValue[z]);
					}
					// コメント：push_backされてきたアイテムを入れ子構造体の
					//                   一時保管場所構造体データに。
					tmp_item.item = tmpItem;
					// コメント：一時的なアイテム保管場所のvector要素を消去。
					//                 （解放ではないですよ。かつ&lt;vector&gt;.clear()でもない）
					tmpItem.erase(tmpItem.begin(), tmpItem.end());
				}
			}
			// コメント：直前で入れ子の一時データができているので、
			//                   一時的な本営データ保管場所にpush_back。
			//                   なぜここで本営データに入れないかは本文で。
			tmp_ldap.data.push_back(tmp_item);    

			// Free memory.
			if(ppValue != NULL)
				ldap_value_free(ppValue);
			ppValue = NULL;
			ldap_memfree(pAttribute);

			// Get next attribute name.
			pAttribute = ldap_next_attribute(pLdapConnection, pEntry, pBer);
		}
		// コメント：本営データにpush_back。
		ldap_data-&gt;push_back(tmp_ldap);
		// コメント：本営データに入れたので一時データの要素を消去し、for続きへ。
		tmp_ldap.data.erase(tmp_ldap.data.begin(), tmp_ldap.data.end());    

		if( pBer != NULL )
			ber_free(pBer,0);
		pBer = NULL;
	}

	//----------------------------------------------------------
	// Normal cleanup and exit.
	//----------------------------------------------------------
	ldap_unbind(pLdapConnection);
	ldap_msgfree(pSearchResult);
	ldap_value_free(ppValue);
	return 0;
</pre>
<p>上のソースで、アイテムが全て揃ったところで、なぜ本営データにぶち込んでいないかと言えば、まだ属性データがあった場合、属性ごとに本営データができあがってしまい、意図する動作にならないためです。つまり、「１つのエントリに対し、複数の属性、１つの属性に対し複数のアイテム」といった可変データ（１ｘNｘN）構造と微妙に異なるからなんです。
</p></div>
<p></p>
<div style="padding-left: 30px;">
で、ここまできたところで、「ldap_data」ってどこで宣言してるんじゃ～ってお怒りかも知れませんが、本営データはこの関数に引数として渡ってきます。</p>
<pre>
int	GetLDAPData(const char* pHost, std::vector&lt;LDAP_DATA&gt; *ldap_data)
</pre>
<p>では、この関数の呼び元と出力事例のソースは以下の通りでやんす。<br />
ソースが長いので、「ソースを表示」で伸張してくださいな。</p>
<pre>
	// 本営データ作成（ここではメモリ確保もせずほったらかし）
	vector&lt;LDAP_DATA&gt;	ldap;
	// 本営データのアドレスを引数で渡してあげます
	GetLDAPData(ldap_host.c_str(), &#038;ldap);

	// データがあったら表示を開始します
	if(!ldap.empty())
	{
		// 本営データに対するイテレータを作成しポインターもどきにします
		for(vector&lt;LDAP_DATA&gt;::iterator iarray = ldap.begin(); iarray&lt;ldap.end() ; iarray++)
		{
			cout &lt;&lt; "ENTRY NUMBER: " &lt;&lt; iarray-&gt;entrynum &lt;&lt; endl;
			// 入れ子構造体データに対するイテレータを作成しポインターもどきにします
			for(vector&lt;LDAP_ITEM&gt;::iterator iattr = iarray-&gt;data.begin(); iattr&lt;iarray-&gt;data.end() ; iattr++)
			{
				cout &lt;&lt; "	ATTR: " &lt;&lt; iattr-&gt;attr &lt;&lt; ":";
				// アイテムデータに対しイテレータを作成しポインターもどきにします
				for(vector&lt;string&gt;::iterator iitem = iattr-&gt;item.begin(); iitem&lt;iattr-&gt;item.end() ; iitem++)
				{
					cout &lt;&lt; " " &lt;&lt; *iitem;
					if(iitem&lt;iattr-&gt;item.end()-1)
						cout &lt;&lt; ",";
				}
				cout &lt;&lt; endl;
			}
		}
	}
</pre>
<p>データ表示部分で、本営、入れ子構造体、アイテムに対しそれぞれイテレータを作成していますが、こうしておけば独立した形（表現は厳密ではないけれど）で各データにアクセス出来ます。配列カウンターで悩むことがないので便利なんです。まぁ、配列ポインタと変わりはないんですけど、プログラムを書く好みでdata[i][j][k]とか好きな方ではないので。OpenLDAPのデータ構造はこんな感じ。</p>
<div align=center><div id="attachment_625" class="wp-caption aligncenter" style="width: 160px"><a rel="lightbox" href="http://www.witkitty.com/wordpress/wp-content/uploads/2011/05/OpenLDAPDataStructure.jpg"><img src="http://www.witkitty.com/wordpress/wp-content/uploads/2011/05/OpenLDAPDataStructure-150x106.jpg" alt="" title="OpenLDAPDataStructure" width="150" height="106" class="size-thumbnail wp-image-625 colorbox-515" /></a><p class="wp-caption-text">OpenLDAPデータ構造</p></div></div>
<p>足早にざっと書いては見たけれど、OpenLDAPのアクセスなんて誰もやろうなんて考えないよね。と言うことで備忘録ということで。
</p></div>
]]></content:encoded>
			<wfw:commentRss>http://www.witkitty.com/wordpress/2011/05/20/for_access_random_structure_data/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://www.witkitty.com/wordpress/2011/05/20/for_access_random_structure_data/" />
	</item>
		<item>
		<title>DVDに焼くのはいいけれど・・・</title>
		<link>http://www.witkitty.com/wordpress/2011/05/12/even_wrote_dvd/</link>
		<comments>http://www.witkitty.com/wordpress/2011/05/12/even_wrote_dvd/#comments</comments>
		<pubDate>Thu, 12 May 2011 06:26:21 +0000</pubDate>
		<dc:creator>hiro</dc:creator>
				<category><![CDATA[気まぐれ日記]]></category>

		<guid isPermaLink="false">http://www.witkitty.com/wordpress/?p=505</guid>
		<description><![CDATA[親戚の家に遊びに行ったときのお話。 家人曰く、「このDVD、DVDプレイヤーで見れないんだよ。」 当方、ダビングされた円盤を見て絶句しながら、「・・・でしょうね」 家人曰く、「何とか見られるようにならない？」 当方曰く、 &#8230;<p class="read-more"><a href="http://www.witkitty.com/wordpress/2011/05/12/even_wrote_dvd/">Read more &#187;</a></p>]]></description>
			<content:encoded><![CDATA[<div style="padding-left: 30px;">
親戚の家に遊びに行ったときのお話。<br />
家人曰く、「このDVD、DVDプレイヤーで見れないんだよ。」<br />
当方、ダビングされた円盤を見て絶句しながら、「・・・でしょうね」<br />
家人曰く、「何とか見られるようにならない？」<br />
当方曰く、（やっぱりきたかと思いつつ）「ちょっとお借りしていきますね」
</div>
<p></p>
<div style="padding-left: 30px;">
親戚のDVDプレイヤーで見ることができない理由は、DVDプレイヤーが以下3つに対応していないから。</p>
<ul>
<li>DVD-RAM（DVD-VR形式）に対応していない</li>
<li>CPRM形式に対応していない</li>
<li>DVD-RWの未ファイナライズに対応していない（というか別プレイヤーだとデータ認識できないはず）</li>
</ul>
</div>
<p></p>
<div style="padding-left: 30px;">
とりあえず、持ち帰って当方のPCで形式をDVD-V形式に再変換して焼き直し～。
</div>
<p></p>
<div style="padding-left: 30px;">
デキシージャズライブのビデオなんだが、多分主催者がビデオテープからDVDレコーダーを通して円盤にダビングしたんだろうけれど、たまたま手元にあった適当な円盤に焼いたもんだからこんなことになったんでしょう。で、焼いた本人は再生を確認しているだろうけれど、ここが問題。焼いたレコーダーで再生を確認したところで、再生できるのは当たり前で、別のプレイヤーで確認しなきゃ再生確認したことにならない。
</div>
<p></p>
<div style="padding-left: 30px;">
というか、見えない作成者に、<br />
「焼く前にレコーダーの取説読め」<br />
と、小一時間問い詰めたい・・・ｗ</p>
<p>まぁ、私も買ってきたハードの取説読まないけれど・・・ぉぃ
</p></div>
]]></content:encoded>
			<wfw:commentRss>http://www.witkitty.com/wordpress/2011/05/12/even_wrote_dvd/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://www.witkitty.com/wordpress/2011/05/12/even_wrote_dvd/" />
	</item>
		<item>
		<title>また煽りか</title>
		<link>http://www.witkitty.com/wordpress/2011/03/25/troll/</link>
		<comments>http://www.witkitty.com/wordpress/2011/03/25/troll/#comments</comments>
		<pubDate>Fri, 25 Mar 2011 03:24:57 +0000</pubDate>
		<dc:creator>hiro</dc:creator>
				<category><![CDATA[気まぐれ日記]]></category>

		<guid isPermaLink="false">http://www.witkitty.com/wordpress/?p=495</guid>
		<description><![CDATA[放射能物質での土壌汚染記事で基準値の何倍～（元記事）と書かれていますが、土の採取方法の注釈が無い。 「飯舘村で採った土１キロあたりから、セシウムが～」と「放射線管理区域の基準値は１平方メートルあたり４万ベクレル」が記され &#8230;<p class="read-more"><a href="http://www.witkitty.com/wordpress/2011/03/25/troll/">Read more &#187;</a></p>]]></description>
			<content:encoded><![CDATA[<div style="padding-left: 30px;">
放射能物質での土壌汚染記事で基準値の何倍～（<a href="http://www.asahi.com/national/update/0323/TKY201103230215.html" target="_blank">元記事</a>）と書かれていますが、土の採取方法の注釈が無い。<br />
「飯舘村で採った土１キロあたりから、セシウムが～」と「放射線管理区域の基準値は１平方メートルあたり４万ベクレル」が記されているが、１キログラム採取した方法は、その土地を１平方メートルに区切って均等に採取したのか？<br />
母集団の標本採取方法が分からないのに比較して、果たしてこれが正しい情報なのか？<br />
多分言いたいことは、後半の「長期間、土壌が汚染されることにより、人体や農作物などに影響が出る可能性がある。 」のくだりだろうけれど、人づてに広がる場合、「やばいよ、何倍なんだって～」となる。<br />
単にセンセーショナルな記事書いて、煽るだけ煽って、言いっぱなし。それで国民の代弁者でござい～って、誰かを非難してドヤ顔。<br />
重箱の隅をつつくようで悪いのだが、非常時だからこそ情報のデッドラインを死守しなきゃいけないんじゃないのかな～。
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.witkitty.com/wordpress/2011/03/25/troll/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://www.witkitty.com/wordpress/2011/03/25/troll/" />
	</item>
		<item>
		<title>やはり</title>
		<link>http://www.witkitty.com/wordpress/2011/03/23/mineralwater2bab/</link>
		<comments>http://www.witkitty.com/wordpress/2011/03/23/mineralwater2bab/#comments</comments>
		<pubDate>Wed, 23 Mar 2011 12:20:23 +0000</pubDate>
		<dc:creator>hiro</dc:creator>
				<category><![CDATA[気まぐれ日記]]></category>

		<guid isPermaLink="false">http://www.witkitty.com/wordpress/?p=491</guid>
		<description><![CDATA[はじまりましたか、水の買い占め。 気をつけた方が良いのは、硬度の高いミネラルウォータで粉ミルクを溶かさない方が良いかなと。 粉ミルクは軟水で溶かすような成分調整がなされているし、硬水のミネラル分は高いので、乳幼児の排泄機 &#8230;<p class="read-more"><a href="http://www.witkitty.com/wordpress/2011/03/23/mineralwater2bab/">Read more &#187;</a></p>]]></description>
			<content:encoded><![CDATA[<div style="padding-left: 30px;">
はじまりましたか、水の買い占め。<br />
気をつけた方が良いのは、硬度の高いミネラルウォータで粉ミルクを溶かさない方が良いかなと。<br />
粉ミルクは軟水で溶かすような成分調整がなされているし、硬水のミネラル分は高いので、乳幼児の排泄機能に負担をかけ、お腹がゆるくなったりします。（多分出産の時に産婦人科で言われていることだと思いますけど）<br />
で、そのことをご存じない奥様方の行動は予想が付きます。<br />
「メーカーにクレーム」→「別の水を買い占め」を繰り返す。<br />
まぁ、これは被災地の方々へ水を送る場合も同じですね。<br />
送られた水を使う・飲むのは大人だけではありませんからね。
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.witkitty.com/wordpress/2011/03/23/mineralwater2bab/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://www.witkitty.com/wordpress/2011/03/23/mineralwater2bab/" />
	</item>
		<item>
		<title>マザーボードが・・・</title>
		<link>http://www.witkitty.com/wordpress/2011/03/19/broken_mb/</link>
		<comments>http://www.witkitty.com/wordpress/2011/03/19/broken_mb/#comments</comments>
		<pubDate>Sat, 19 Mar 2011 05:13:34 +0000</pubDate>
		<dc:creator>hiro</dc:creator>
				<category><![CDATA[コンピューター関連]]></category>

		<guid isPermaLink="false">http://www.witkitty.com/wordpress/?p=485</guid>
		<description><![CDATA[計画停電のため落としていた1台のESXiサーバのマザーボードが壊れた模様。今現在は新規にマシンを組み上げて、とりあえず復旧済み。 それにしても微妙な壊れ方（壊れ方に微妙も何も無いのだが）。 メモリーチップ4枚差し（合計8 &#8230;<p class="read-more"><a href="http://www.witkitty.com/wordpress/2011/03/19/broken_mb/">Read more &#187;</a></p>]]></description>
			<content:encoded><![CDATA[<div style="padding-left: 30px;">
計画停電のため落としていた1台のESXiサーバのマザーボードが壊れた模様。今現在は新規にマシンを組み上げて、とりあえず復旧済み。<br />
それにしても微妙な壊れ方（壊れ方に微妙も何も無いのだが）。<br />
メモリーチップ4枚差し（合計8GB）の時だけBIOSが立ち上がってこない。そこで、メモリーチップが壊れたのかと思いそれぞれ確認したがメモリーチップに問題は無かった。では、スロットかと思い、2枚単位でスロットを試したがこれも問題なし。<br />
メーカーに問い合わせたところ、オンサイト修理だとかなり費用がかかりそうなので見送り。しかし、このESXiサーバの中のホストはかなり重要なものばかりで、このままでは仕事に支障をきたすため、急遽マシンを組み上げることに。<br />
オンサイト修理費用と比べると安上がりではあったが、久しぶりにパーツを買う羽目になったため、ショップで右往左往。だんだん面倒になってきたので、店員にある程度の仕様を伝えて部品をそろえてもらった。<br />
ここで落とし穴が・・・<br />
Windows系のコンシューママシンを作るのであればネットワーク周り、ビデオ周りのドライバはあまり気にしないのだが、ESXi用のマシンのため、サポートが充実しているIntelのマザーボードを使ってきたのだが、当方の指示ミスでサードパーティー製のマザーボードを買い込んできてしまった。よって、ネットワーク系のデバイス（RTL-8111E）をESXiが認識せず孤立。かつ、買い込んできたマザーボードにはPCI-Eのスロットしか無く、手持ちのPCIスロット用ネットワークアダプタが使えない。そこでIntelのEXPI9301CTを急遽購入し、今現在に至るのであった。</p>
<p>う～ん、でも壊れたマシンに一言。<br />
「なんで今壊れるんだよ？」<br />
「そんなもんさ～、あんたの事情なんて知らんし」</p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.witkitty.com/wordpress/2011/03/19/broken_mb/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://www.witkitty.com/wordpress/2011/03/19/broken_mb/" />
	</item>
	</channel>
</rss>

