<?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/"
	>

<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, 26 Apr 2012 00:35:30 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>MySQLのSOURCEでSQLファイルを扱う</title>
		<link>http://www.witkitty.com/wordpress/2012/04/26/use_source_mysql/</link>
		<comments>http://www.witkitty.com/wordpress/2012/04/26/use_source_mysql/#comments</comments>
		<pubDate>Thu, 26 Apr 2012 00:35:30 +0000</pubDate>
		<dc:creator>hiro</dc:creator>
				<category><![CDATA[プログラミング]]></category>
		<category><![CDATA[external SQL file]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[SOURCE]]></category>

		<guid isPermaLink="false">http://www.witkitty.com/wordpress/?p=750</guid>
		<description><![CDATA[MySQLで外部SQLファイルを読み込ませてデータベースやテーブルを作成するときによく使うのが、下記のコマンド。 mysql&#62; SOURCE &#60;外部ファイル名&#62;; この「SOURCE」がくせ者で、MyS &#8230;<p class="read-more"><a href="http://www.witkitty.com/wordpress/2012/04/26/use_source_mysql/">Read more &#187;</a></p>]]></description>
			<content:encoded><![CDATA[<p style="padding-left: 30px;">MySQLで外部SQLファイルを読み込ませてデータベースやテーブルを作成するときによく使うのが、下記のコマンド。</p>
<p style="padding-left: 30px;">
<pre>
mysql&gt; SOURCE &lt;外部ファイル名&gt;;
</pre>
</p>
<p style="padding-left: 30px;">この「SOURCE」が<span style="color: #ff0000;">くせ者</span>で、MySQL<strong>クライアント</strong>のビルドインツールなんですぅ。（ようは、MySQLクライアントの構文内でのみ有効ってこと）<br />
MySQL Connector/C++なんかでプログラムを組むときやMySQL Query Browserで試験的にクエリを実行したいとき、この「SOURCE」をクエリとして使えると勘違いしやすいんです。<br />
mysql クライアント上では<span style="color: #0000ff;"><em>さもクエリのように</em></span>振る舞うのに、プログラム内では「シンタックスエラー」となり、思考がスパイラル状態になります。</p>
<p style="padding-left: 30px;">どうしても、プログラム内から外部ファイルで管理されているSQLを実行したい場合は、</p>
<ul>
<ul>
<li>外部ファイルを読み込んでクエリをぶん投げる。<br />
[<span style="color: #ff0000;">難点</span>] 外部SQLファイルを同時配布したくない場合にどうするか。</li>
<li>mysql 構文をシェル（コンソール）プロセスに直接ぶん投げる。<br />
[<span style="color: #ff0000;">難点</span>] 外部プロセス発動になるので管理が面倒。</li>
<li>（時と場合によっては）ストアドプロシージャを使う。<br />
[<span style="color: #ff0000;">難点</span>] 後からアタッチするようなサブプログラムの場合、組み込むために外部からの供給が必要となり、堂々巡り。</li>
</ul>
</ul>
<p style="padding-left: 30px;">だと思う。（他にもあると思うが手っ取り早い順で・・・）</p>
<p style="padding-left: 30px;">開発にあたっていろいろ制約があり、外部SQLファイルは同時配布しないことになっていたので、外部のSQLファイルをプログラム内のリソースに取り込み、読み込んだリソーステキストをサーバにぶん投げることで「SOURCE」と同じような処理を実現したでやんす。まだ未検証だけど、読み込む外部ファイル（今回はリソースとして組み込んだファイル）のコメント等は無い方がいいか、もしくは読み込んだ先で余分なものを取っ払ってからクエリを投げた方が無難じゃないかなぁ～と思われ。</p>
<p style="padding-left: 30px;">今回特殊な事情で、MySQLの「CREATE～FEDERATED」を使用しなくちゃいけなかったんだが、その話はまた後で出来ればと。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.witkitty.com/wordpress/2012/04/26/use_source_mysql/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>キーボードを・・・いや、それは違うぞ</title>
		<link>http://www.witkitty.com/wordpress/2012/02/23/donnot_touch_keyboard/</link>
		<comments>http://www.witkitty.com/wordpress/2012/02/23/donnot_touch_keyboard/#comments</comments>
		<pubDate>Thu, 23 Feb 2012 02:22:59 +0000</pubDate>
		<dc:creator>hiro</dc:creator>
				<category><![CDATA[気まぐれ日記]]></category>

		<guid isPermaLink="false">http://www.witkitty.com/wordpress/?p=724</guid>
		<description><![CDATA[友人から相談が。それは、 「自分のパソコンから嫁を遠ざける方法」 聞いた瞬間、根本的な疑問が頭に浮かんだが、すぐに聞き出すと面白くないので話に乗ってみた。 友人曰く、自分が不在の時に嫁がパソコンを触っている節があるのだが &#8230;<p class="read-more"><a href="http://www.witkitty.com/wordpress/2012/02/23/donnot_touch_keyboard/">Read more &#187;</a></p>]]></description>
			<content:encoded><![CDATA[<p style="padding-left: 30px;">友人から相談が。それは、</p>
<p style="padding-left: 30px;">「<strong>自分のパソコンから嫁を遠ざける方法</strong>」</p>
<p style="padding-left: 30px;">聞いた瞬間、根本的な疑問が頭に浮かんだが、すぐに聞き出すと面白くないので話に乗ってみた。<br />
友人曰く、自分が不在の時に嫁がパソコンを触っている節があるのだが、触るなとも言えない。<br />
突っ込みどころ満載なわけだが、グッとこらえて、パソコンの使用環境や彼らのスキルを聞いてみた。</p>
<ul style="padding-left: 30px;">
<li>友人、嫁共にそれぞれ１台を有する（友人はデスクトップ、嫁はノート：共にOSはWindows）</li>
<li>嫁が友人のカードで買い物をしている節はない。</li>
<li>嫁はOSのセットアップやコマンドを駆使するようなスキルは持ち合わせていないが、ある程度のアプリ操作ぐらいはできる。</li>
<li>両者共に日本語以外は苦手</li>
</ul>
<p style="padding-left: 30px;">やんわり遠ざける方法として伝えたのは、</p>
<ul style="padding-left: 30px;">
<li>言語設定を英語にしろ。（言い訳：何となくかっこいいという自己満足風を装う）</li>
<li>キートップに日本語が刻印されていないキーボードに変更（言い訳：同上）</li>
<li>無刻印のキーボードを使う（言い訳：同上、もちろん古いキーボードは廃棄）</li>
</ul>
<p style="padding-left: 30px;">最後の無刻印キーボードの場合、ブラインドタッチができる人でない限り寄りつきません。最近のWindowsはほとんどマウス操作で事足りるのに、不思議なもので大方の人は道具が自分に合っていないと自分から遠ざかっていく。</p>
<p style="padding-left: 30px;">友人曰く、その手があったか！と驚いていたが、さてここからが私の本題。</p>
<p style="padding-left: 30px;"><span style="color: #ff0000;">私</span>：「触るな」と言えばいいじゃん。<br />
<span style="color: #0000ff;">友</span>：いろいろと勘ぐられるじゃん。<br />
<span style="color: #ff0000;">私</span>：勘ぐられてやましいことでもあんのか？<br />
<span style="color: #0000ff;">友</span>：・・・<br />
<span style="color: #ff0000;">私</span>：もしかして「エロ」系？<br />
<span style="color: #0000ff;">友</span>：いや、そうじゃないんだ。<br />
<span style="color: #0000ff;">友</span>：スマホの住所録をパソコンで管理＆同期しているから・・・<br />
<span style="color: #ff0000;">私</span>：もしかして、スマホのログインロック掛けて、頑なにログイン方法教えていないとか？<br />
<span style="color: #0000ff;">友</span>：うん、掛けてる<br />
<span style="color: #ff0000;">私</span>：あぁ～、この時点でグレーじゃん。そんで、やましい人でも登録してるの？<br />
<span style="color: #0000ff;">友</span>：・・・<br />
<span style="color: #ff0000;">私</span>：おまえさ～、もうその住所録ぶっこ抜かれてるよ。<br />
<span style="color: #ff0000;">私</span>：スマホの機種やOSが分かれば大体察しが付くだろ。諦めろ。<br />
<span style="color: #0000ff;">友</span>：まじかぁ～、・・・<br />
<span style="color: #ff0000;">私</span>：やましいことするんだったら、アナログ（自分の頭）を頼れ。デジタルを頼るな。<br />
<span style="color: #0000ff;">友</span>：「・・・、ところでおまえはどうしてるの？」<br />
<span style="color: #ff0000;">私</span>：アホタレ、世界中の男がおまえと同じだと思うな。<br />
<span style="color: #ff0000;">私</span>：全部オープンだよ、携帯もパソコンも。<br />
<span style="color: #ff0000;">私</span>：嫁はパソコン詳しくないけど、俺のスマホ触って電話掛けてるし。<br />
<span style="color: #0000ff;">友</span>：でも、おまえ仕事用の・・・<br />
<span style="color: #ff0000;">私</span>：あのなぁ～、個人用をオープンにしているから、「こっちは触るなよ」が通じるんだよ。<br />
<span style="color: #ff0000;">私</span>：それに、仕事用にやましいものぶち込んでばれたら、そっちの問題の方がでかいわ。<br />
<span style="color: #0000ff;">友</span>：「はぁ～」（ため息）<br />
<span style="color: #ff0000;">私</span>：まぁ～頑張れ。（何を？）</p>
<p style="padding-left: 30px;">この後、彼らがどういう結末を迎えたかは知らない。けれど、このネタを掲載するにあたり、彼の許可を得ることができたということは、大火事にはなっていないと思われ、消火に失敗した連絡もないし、嫁の連絡網にも引っかかってこないらしいので、大人の対応をしたんだろうと思われます。</p>
<p style="padding-left: 30px;">う～ん、何時の時代も「男はバカだねぇ～」と思う今日この頃。</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.witkitty.com/wordpress/2012/02/23/donnot_touch_keyboard/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<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>
		</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>
		</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>
		</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>
		</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>
		</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>
		</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>
		</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>
		</item>
	</channel>
</rss>

