<?xml version="1.0" encoding="euc-jp"?>
<feed version="0.3" xmlns="http://purl.org/atom/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xml:lang="en">
  <title>blog@anytime</title>
  <link rel="alternate" type="text/html" href="http://www.anygiventime.net/blog/" />
  <modified>2006-10-25T13:50:58Z</modified>
  <tagline>とりとめもなく・・・あたらしもの好きだったり、中国のネタだったり、暇があれば本読んだり・・・</tagline>
  <id>tag:www.anygiventime.net,2006:/blog//2</id>
  <generator url="http://www.movabletype.org/" version="3.2-ja-2">Movable Type</generator>
  <copyright>Copyright (c) 2006, Yoshi</copyright>
  <entry>
    <title>StringBuffer @ J2SE 5.0</title>
    <link rel="alternate" type="text/html" href="http://www.anygiventime.net/blog/archives/000341.html" />
    <modified>2006-10-25T13:50:58Z</modified>
    <issued>2006-10-25T22:43:49+09:00</issued>
    <id>tag:www.anygiventime.net,2006:/blog//2.341</id>
    <created>2006-10-25T13:43:49Z</created>
    <summary type="text/plain">J2SE 5.0使っ...</summary>
    <author>
      <name>Yoshi</name>
      <url>http://www.anygiventime.net/</url>
      <email>mt@anygiventime.net</email>
    </author>
    <dc:subject>etc.</dc:subject>
    <content type="text/html" mode="escaped" xml:lang="en" xml:base="http://www.anygiventime.net/blog/">
      <![CDATA[<p>J2SE 5.0使ってみて気づいたんだけど、StringBufferクラスのメソッドでappendを使うとどうもUnhandled Exceptionが出て、どうもIOExceptionをtry {...} catch {...}しないといけないというエラーが。</p>

<p>APIドキュメントをじっくり読んでみると、StringBufferクラスがAppendableインターフェースのサブクラスになっていた。（1.4xとは仕様が変わったみたい。）<br />
どうやら、AppendableインターフェースのappendメソッドはIOExceptionをスローするらしい。</p>

<p>1.4.xと5.0でコンパイル時の動作が変わっていたので、原因究明は早かったけど、そんな仕様変更ってありですか？ｗ<br />
とりあえず、1.4.xに戻したら問題はなくなりました。</p>

<p>ついでに、久々にSunのページをぶらぶらしてたら・・・・J2SE 6.0がbeta2になってた・・・・。<br />
完全に時代に取り残されている。</p>

<p>最近サーバが重過ぎる。そろそろ移転でしょうかね。</p>]]>
      
    </content>
  </entry>
  <entry>
    <title>PHPEclipse</title>
    <link rel="alternate" type="text/html" href="http://www.anygiventime.net/blog/archives/000340.html" />
    <modified>2006-09-07T01:40:15Z</modified>
    <issued>2006-09-07T10:34:31+09:00</issued>
    <id>tag:www.anygiventime.net,2006:/blog//2.340</id>
    <created>2006-09-07T01:34:31Z</created>
    <summary type="text/plain">最近Dreamwea...</summary>
    <author>
      <name>Yoshi</name>
      <url>http://www.anygiventime.net/</url>
      <email>mt@anygiventime.net</email>
    </author>
    <dc:subject>Toys</dc:subject>
    <content type="text/html" mode="escaped" xml:lang="en" xml:base="http://www.anygiventime.net/blog/">
      <![CDATA[<p>最近Dreamweaverを使わなくなって、PHPEclipseを使うようになって来ました。<br />
PHPEclipseすごいです。JavaではEclipse2.0時代から使っていたし、PHPEclipseの存在は知っていましたが、Dreamweaverがあったので、PHPでは使ったことが無かった。前のエントリーでRubyOnRailsの使いやすい開発環境を探していて、ついでにPHPEclipseと統合されたeasyEclipseというEclipseのディストリビューションがあったのでこれとXAMPPを使ってみた。<br />
正しい設定をするためには、ApacheやMySQLの設定が必要なので、最初設定に戸惑いますが、そこを越えた後のメリットは、使うほどに実感してきます。<br />
これがタダだからすごい。<br />
近々Tipsをまとめてアップします。<br />
・・・その前にサーバ重いので移転しようかな。</p>]]>
      
    </content>
  </entry>
  <entry>
    <title>プログラミングRuby 第2版</title>
    <link rel="alternate" type="text/html" href="http://www.anygiventime.net/blog/archives/000339.html" />
    <modified>2006-08-14T10:05:58Z</modified>
    <issued>2006-08-14T18:56:39+09:00</issued>
    <id>tag:www.anygiventime.net,2006:/blog//2.339</id>
    <created>2006-08-14T09:56:39Z</created>
    <summary type="text/plain">先日、プログラミング...</summary>
    <author>
      <name>Yoshi</name>
      <url>http://www.anygiventime.net/</url>
      <email>mt@anygiventime.net</email>
    </author>
    <dc:subject>Web</dc:subject>
    <content type="text/html" mode="escaped" xml:lang="en" xml:base="http://www.anygiventime.net/blog/">
      <![CDATA[<p>先日、プログラミングRubyという、ちょっと古いですが、Rubyの良書と言われているやつを買いに、何件かの本屋をうろうろしてましたが、まったく見つかりませんでした。で、懲りずに、他の本を探していたら、8月26日にプログラミングRubyの改訂本が出ることになってました。買えなくてよかった。今回は言語編とライブラリ編の2冊に分かれて、内容充実とのことです。出たら即買いします。あわせて8000円。</p>

<p><a href="http://www.amazon.co.jp/exec/obidos/ASIN/4274066428/ref=nosim/mengine-22">プログラミングRuby 第2版 言語編</a><br />
<a href="http://www.amazon.co.jp/exec/obidos/ASIN/4274066436/ref=nosim/mengine-22">プログラミングRuby 第2版 ライブラリ編</a></p>]]>
      
    </content>
  </entry>
  <entry>
    <title>RailsによるアジャイルWebアプリケーション開発</title>
    <link rel="alternate" type="text/html" href="http://www.anygiventime.net/blog/archives/000338.html" />
    <modified>2006-08-02T14:35:18Z</modified>
    <issued>2006-08-02T23:04:14+09:00</issued>
    <id>tag:www.anygiventime.net,2006:/blog//2.338</id>
    <created>2006-08-02T14:04:14Z</created>
    <summary type="text/plain">「Railsによるア...</summary>
    <author>
      <name>Yoshi</name>
      <url>http://www.anygiventime.net/</url>
      <email>mt@anygiventime.net</email>
    </author>
    <dc:subject>Web</dc:subject>
    <content type="text/html" mode="escaped" xml:lang="en" xml:base="http://www.anygiventime.net/blog/">
      <![CDATA[<p><a href="http://www.amazon.co.jp/exec/obidos/ASIN/4274066401/ref=nosim/mengine-22"><img src="http://images.amazon.com/images/P/4274066401.09._PE00_OU09_SCMZZZZZZZ_.jpg" align="right" border="0" /></a><a href="http://www.amazon.co.jp/exec/obidos/ASIN/4274066401/ref=nosim/mengine-22">「RailsによるアジャイルWebアプリケーション開発」</a>で初めてrubyを触ってみてます。rubyはまったく分かりませんが、この<a href="http://www.rubyonrails.org/">Rails</a>というフレームワーク。なんか面白いことになっていますね。時間が無くて今まで触れていませんでしたが、微妙に眉唾と思っていた感もありました。<br />
もともとWebなんて、（基本的なプロトコルのレベルで）出来ることは限られているので、こういうフレームワークもありかもしれない。ある程度おきまりのコンポーネントを組み合わせて作るWebアプリぐらいなら、ruby初心者でも結構なものが出来てしまいそうな気を起こさせます。<br />
ただ、IDE慣れしてしまっているので、いまさらテキストエディタに本格的に戻れるだろうかというところが問題ですね。と思っているとすでにいろいろとIDEがあるとの事。お勉強するためにちょっといろいろメモしておきます。</p>

<p>RadRails<br />
<a href="http://www.radrails.org/">http://www.radrails.org/</a><br />
Shift+Ctrl+VとCtrl+Alt+Tがいいらしい。</p>

<p>RDT<br />
<a href="http://capsctrl.que.jp/kdmsnr/wiki/rdt/">http://capsctrl.que.jp/kdmsnr/wiki/rdt/</a><br />
Eclipseのプラグイン</p>

<p>RDE<br />
<a href="http://homepage2.nifty.com/sakazuki/rde/screenshots.html">http://homepage2.nifty.com/sakazuki/rde/screenshots.html</a><br />
わかりません</p>

<p>Komodo<br />
<a href="http://www.activestate.com/Products/Komodo/">http://www.activestate.com/Products/Komodo/</a><br />
名前は聞いたことあるけど、フリー？</p>

<p>基本的なWebアプリを作る分にはかなり楽が出来るフレームワークな気がしてきました。</p>

<p>問題はRailsから外れるようなことが出来るかどうかですね。出来るんでしょうけど、どのくらいのRubyスキルが身に付けばそれが出来るかですよね。Rails自体のソースに精通しないとやけどしそうな気がするので慎重に行きましょう。</p>]]>
      
    </content>
  </entry>
  <entry>
    <title>GoogleMapsで発射台</title>
    <link rel="alternate" type="text/html" href="http://www.anygiventime.net/blog/archives/000337.html" />
    <modified>2006-07-08T15:35:39Z</modified>
    <issued>2006-07-09T00:32:47+09:00</issued>
    <id>tag:www.anygiventime.net,2006:/blog//2.337</id>
    <created>2006-07-08T15:32:47Z</created>
    <summary type="text/plain"><![CDATA[&nbsp;Goog...]]></summary>
    <author>
      <name>Yoshi</name>
      <url>http://www.anygiventime.net/</url>
      <email>mt@anygiventime.net</email>
    </author>
    <dc:subject>Toys</dc:subject>
    <content type="text/html" mode="escaped" xml:lang="en" xml:base="http://www.anygiventime.net/blog/">
      <![CDATA[<p>&nbsp;GoogleMapsやGoogleEarthを使っていると、今の時期、必ずやってみたくなること・・・・発射台探し。
 でもよっぽどな情報源でも掴まない限り、見つかりはしないわけであきらめる。と思ってたら、<a href=
"http://satoshi.blogs.com/life/2006/07/post_1.html">Life is
beautiful</a>さんで見つけてくれていた。こいつはお助かり。</p>
<p>ちょっと前まで、一国の軍事施設の地図なんて、映画の中で架空の地図が拝められるぐらいの代物にしか思っていなかったのが、
今では問答無用で万人に・・・タダで供給されている。情報ってのは、
もうとどまるところ無く流れる方向にあるっていうのをつくづく感じてしまう。誰かが止めてもそれはもう一時的なもの、
無駄な抵抗でしかありえない・・・そんな風に思えてくる。</p>]]>
      
    </content>
  </entry>
  <entry>
    <title>（続）ボーナスでどーんと</title>
    <link rel="alternate" type="text/html" href="http://www.anygiventime.net/blog/archives/000336.html" />
    <modified>2006-07-08T14:44:17Z</modified>
    <issued>2006-07-08T23:40:09+09:00</issued>
    <id>tag:www.anygiventime.net,2006:/blog//2.336</id>
    <created>2006-07-08T14:40:09Z</created>
    <summary type="text/plain">ボーナスでどーんと買った Thinkpad t23。 とりあえず128MBのメモリでFedoraCore5を動かそうかと思ってたんですが、 まずインストールでテキストモードしか立ち上がりません。そして、おそるおそるXを起動してみましたが、 GNOMEがまともに動かず（正確には動くけど重い。）。無念。...</summary>
    <author>
      <name>Yoshi</name>
      <url>http://www.anygiventime.net/</url>
      <email>mt@anygiventime.net</email>
    </author>
    <dc:subject>Toys</dc:subject>
    <content type="text/html" mode="escaped" xml:lang="en" xml:base="http://www.anygiventime.net/blog/">
      <![CDATA[<p><a href=
"http://www.amazon.co.jp/exec/obidos/ASIN/B0002QNI0Q/ref=nosim/mengine-22">
<img alt="PC133-256MB"
     hspace="0"
     src=
     "http://images.amazon.com/images/P/B0002QNI0Q.09._PE22_OU09_SCMZZZZZZZ_.jpg"
     align="right"
     border="0" /></a>ボーナスでどーんと買った&nbsp;Thinkpad t23。
     とりあえず128MBのメモリでFedoraCore5を動かそうかと思ってたんですが、
     まずインストールでテキストモードしか立ち上がりません。そして、おそるおそるXを起動してみましたが、
     GNOMEがまともに動かず（正確には動くけど重い。）。無念。FC5の本を読んだら256MB以上って書いてありました。
     これまで、デスクトップ以外にLinuxディストリビューションをインストールしたことが無かったので、
     テキストモードでのインストールというものをはじめてみました。ということで、早速、第2弾、ボーナスでどーんと512MB 
     （PC133 256MB×2、写真みたいなものをこれよりはちょっと安い値段で購入。）に変更！
     サクッとインストールできました。ところで、PC133の256MB、 だいぶ古いメモリ規格ですが、
     意外と買いに行くと高いですね。1000円とかでジャンクが売ってるもとの思ってたけど、 Thinkpadの価格・品質・
     性能比でそこそこお買い得感があっただけに、心理的に痛い出費ですわ。何はともあれ、 これから勉強開始です。</p>]]>
      
    </content>
  </entry>
  <entry>
    <title>Dreamweaver8</title>
    <link rel="alternate" type="text/html" href="http://www.anygiventime.net/blog/archives/000335.html" />
    <modified>2006-07-06T12:20:03Z</modified>
    <issued>2006-07-05T23:52:46+09:00</issued>
    <id>tag:www.anygiventime.net,2006:/blog//2.335</id>
    <created>2006-07-05T14:52:46Z</created>
    <summary type="text/plain"> Dreamweaverをバージョン8にアップグレードしてつかっている。 ふとDBアクセスまわりの自動生成されるコードが変更されていることに気づいた。これで気持ちそこそこ大きめな違い3つ目。 たとえば、SQLにGETやPOST、SESSIONなどのパラメータをsprintfで埋め込む時のサニタイジン...</summary>
    <author>
      <name>Yoshi</name>
      <url>http://www.anygiventime.net/</url>
      <email>mt@anygiventime.net</email>
    </author>
    <dc:subject>Web</dc:subject>
    <content type="text/html" mode="escaped" xml:lang="en" xml:base="http://www.anygiventime.net/blog/">
      <![CDATA[<p><a href=
"http://www.amazon.co.jp/exec/obidos/ASIN/B000EMGEPO/ref=nosim/mengine-22">
<img alt=""
     hspace="0"
     src=
     "http://images-jp.amazon.com/images/P/B000EMGEPO.01._OU09_PE0_SCMZZZZZZZ_.jpg"
     align="right"
     border="0" /></a>&nbsp;<a href=
     "http://www.amazon.co.jp/exec/obidos/ASIN/B000EMGEPO/ref=nosim/mengine-22"
   target="_blank">Dreamweaver</a>をバージョン8にアップグレードしてつかっている。
   ふとDBアクセスまわりの自動生成されるコードが変更されていることに気づいた。これで気持ちそこそこ大きめな違い3つ目。
   たとえば、SQLにGETやPOST、SESSIONなどのパラメータをsprintfで埋め込む時のサニタイジング関数。
   Dreamweaverでは、PHPとDBの利用を想定してコーディングするとき、
   ある程度Dreamweaverのコードジェネレーション機能が使えます。でそのときセキュリティ用の関数として、
   GetSQLValueStringというサニタイジング関数が自動で吐き出されます。これはこれでけっこう便利な関数です。
   </p>
<p>これが、Dreamweaver MXでは、</p>]]>
      <![CDATA[<blockquote dir="ltr"
            style="MARGIN-RIGHT: 0px">
  <p>function GetSQLValueString($theValue, $theType,
  $theDefinedValue = "", $theNotDefinedValue = "")<br />
  {<br />
  &nbsp; $theValue = (!get_magic_quotes_gpc()) ?
  addslashes($theValue) : $theValue;</p>
  <p>&nbsp; switch ($theType) {<br />
  &nbsp;&nbsp;&nbsp; case "text":<br />
  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $theValue = ($theValue != "") ?
  "'" . $theValue . "'" : "NULL";<br />
  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break;&nbsp;&nbsp;&nbsp;<br />
  &nbsp;&nbsp;&nbsp; case "long":<br />
  &nbsp;&nbsp;&nbsp; case "int":<br />
  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $theValue = ($theValue != "") ?
  intval($theValue) : "NULL";<br />
  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break;<br />
  &nbsp;&nbsp;&nbsp; case "double":<br />
  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $theValue = ($theValue != "") ?
  "'" . doubleval($theValue) . "'" : "NULL";<br />
  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break;<br />
  &nbsp;&nbsp;&nbsp; case "date":<br />
  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $theValue = ($theValue != "") ?
  "'" . $theValue . "'" : "NULL";<br />
  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break;<br />
  &nbsp;&nbsp;&nbsp; case "defined":<br />
  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $theValue = ($theValue != "") ?
  $theDefinedValue : $theNotDefinedValue;<br />
  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break;<br />
  &nbsp; }<br />
  &nbsp; return $theValue;<br />
  }</p>
</blockquote>
<p dir="ltr">だったものが、Dreamweaver8では、</p>
<blockquote dir="ltr"
            style="MARGIN-RIGHT: 0px">
  <p dir="ltr"><u>if (!function_exists("GetSQLValueString"))
  {<br /></u>function GetSQLValueString($theValue, $theType,
  $theDefinedValue = "", $theNotDefinedValue = "")<br />
  {<br />
  &nbsp; $theValue = get_magic_quotes_gpc() ?
  <u>stripslashes($theValue)</u> : $theValue;</p>
  <p dir="ltr">&nbsp; <u>$theValue =
  function_exists("mysql_real_escape_string") ?
  mysql_real_escape_string($theValue) :
  mysql_escape_string($theValue);</u></p>
  <p dir="ltr">&nbsp; switch ($theType) {<br />
  &nbsp;&nbsp;&nbsp; case "text":<br />
  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $theValue = ($theValue != "") ?
  "'" . $theValue . "'" : "NULL";<br />
  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break;&nbsp;&nbsp;&nbsp;<br />
  &nbsp;&nbsp;&nbsp; case "long":<br />
  &nbsp;&nbsp;&nbsp; case "int":<br />
  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $theValue = ($theValue != "") ?
  intval($theValue) : "NULL";<br />
  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break;<br />
  &nbsp;&nbsp;&nbsp; case "double":<br />
  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $theValue = ($theValue != "") ?
  "'" . doubleval($theValue) . "'" : "NULL";<br />
  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break;<br />
  &nbsp;&nbsp;&nbsp; case "date":<br />
  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $theValue = ($theValue != "") ?
  "'" . $theValue . "'" : "NULL";<br />
  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break;<br />
  &nbsp;&nbsp;&nbsp; case "defined":<br />
  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $theValue = ($theValue != "") ?
  $theDefinedValue : $theNotDefinedValue;<br />
  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break;<br />
  &nbsp; }<br />
  &nbsp; return $theValue;<br />
  }<br />
  }</p>
</blockquote>
<p dir="ltr">この場合、主な違いは、MXで使用していたaddslashes関数ではなく、
mysql_real_escape_string関数になっていること。MySQLを指定してコードを書いている場合、
MySQL専用のサニタイジング関数が利用されることでより安全になっているはず。ただ、MXと8で生成したコードが混在すると、
余裕で冗長なコードが生成されてしまう。ので注意。関数定義の最初に</p>
<blockquote dir="ltr"
            style="MARGIN-RIGHT: 0px">
  <p dir="ltr">if (!function_exists("GetSQLValueString")) {</p>
</blockquote>
<p dir="ltr">の部分が来ていて、関数の2重定義だけは避けているだけ配慮されてるのかもしれないけど、
ちょっと醜いコードになってしまうのが頭痛のタネ。</p>
<blockquote dir="ltr"
            style="MARGIN-RIGHT: 0px">
  <p dir="ltr">if (!function_exists("GetSQLValueString")) {</p>
</blockquote>
<p dir="ltr">の部分を取り除いて古い関数と置き換えるのが妥当なところ。あと、
MXではINSERTやUPDATEのSQLをコードを自動生成したときは、代入する変数を、
このGetSQLValueStringでサニタイジングしていたんだけど、SELECT文では使っていなくて、
素人に使わせるには危険極まりないコードを吐き出していたんだけど。今回のバージョンアップで、
SELECT文に変数を代入するときでも自動でGetSQLValueString関数を適用しているようである。たとえば、</p>
<blockquote dir="ltr"
            style="MARGIN-RIGHT: 0px">
  <p dir="ltr">$resultset&nbsp;= sprintf("SELECT * FROM
  user_table WHERE id=%s", $uid);</p>
</blockquote>
<p dir="ltr">見たいなコードになっていた部分（さくっとSQLインジェクションされそうな気がします）が、</p>
<blockquote dir="ltr"
            style="MARGIN-RIGHT: 0px">
  <p dir="ltr">$resultset&nbsp;= sprintf("SELECT * FROM
  user_table WHERE id=%s", GetSQLValueString($uid, "int");</p>
</blockquote>
<p dir="ltr">のようになっています。これだけで、SQLインジェクション対策は多分出来ているので、
こういう単純なSQL実行時にはかなり助かります。</p>
<p dir="ltr">かといって、Dreamweaverで吐き出すコードがどれも安全かと言われると・・・・まったくもって、
そんなことはないので、注意してください。はっきりいってXSSやらCSSFはまったくもってほったらかしです。まあ、XSSやCSSFは、
 アプリケーションがやりたいことだったり、サーバ環境で攻撃方法にバリエーションがあって、単純に対策できないこともあるんでしょう。 
（どんな状況でもかならずXSSを防ぐ汎用的なサニタイジング関数があったら教えてほしいです。マジ切実に。）</p>
<p dir="ltr">よく分かっているところだけは効率化のために使いますけど、まあ、
ツールが吐き出すコードなんて信用して使うなって事ですけどね。</p>]]>
    </content>
  </entry>
  <entry>
    <title>ボーナスでど~んと</title>
    <link rel="alternate" type="text/html" href="http://www.anygiventime.net/blog/archives/000334.html" />
    <modified>2006-06-24T14:17:48Z</modified>
    <issued>2006-06-24T23:11:40+09:00</issued>
    <id>tag:www.anygiventime.net,2006:/blog//2.334</id>
    <created>2006-06-24T14:11:40Z</created>
    <summary type="text/plain">Thinkpad購入！秋葉原まで行こうかと思ったけど、もっと近くであったので、即決で購入。 スペックは、 Thinkpad T23 Pen† 1GHz Mem 128MB HDD 20GB CD-ROM Win2000 池袋の雑居ビル3階にある中古PCショップ。こういう雰囲気のお店に初めて足を踏み入...</summary>
    <author>
      <name>Yoshi</name>
      <url>http://www.anygiventime.net/</url>
      <email>mt@anygiventime.net</email>
    </author>
    <dc:subject>Toys</dc:subject>
    <content type="text/html" mode="escaped" xml:lang="en" xml:base="http://www.anygiventime.net/blog/">
      <![CDATA[<p><img style="WIDTH: 201px; HEIGHT: 155px"
     height="494"
     alt=""
     hspace="0"
     src=
     "http://www.anygiventime.net/blog//media/img_20060624T231047875.JPG"
     width="658"
     align="right"
     border="0" />Thinkpad購入！秋葉原まで行こうかと思ったけど、もっと近くであったので、即決で購入。
     スペックは、</p>
<ul>
  <li>Thinkpad T23</li>
  <li>Pen† 1GHz</li>
  <li>Mem 128MB</li>
  <li>HDD 20GB</li>
  <li>CD-ROM</li>
  <li>Win2000</li>
</ul>
<p>池袋の雑居ビル3階にある中古PCショップ。こういう雰囲気のお店に初めて足を踏み入れた。でも、
ちょっと壊してもいいPCがほしかったし。さすがに新品で遊ぶ気にならないし。そういう意味では手ごろなアイテム入手。中古屋さんの話では、
 なんかしんないけど今の時期1GHzクラスのTシリーズは結構状態のいいものがたくさん出回ってるそうな。
最近のLinuxディストリビューションだと1GHｚぐらい必要だしなんで、このクラスがたくさん残ってくれているのはとても助かる。
価格は・・・・4万円。まあまあかな。驚くほど安くもなく、高くもなく。予想通り。</p>
<p>しばらくいろいろ実験用に使える。</p>
<p>試しにフル充電にして、Win起動状態で1時間ぐらい放電してみたけど、まだバッテリー残量が70％以上。
意外とバッテリーの状態もよかった。</p>
<p>Win2000は早速消去。FedoraCore5を入れてみることに。</p>]]>
      
    </content>
  </entry>
  <entry>
    <title>GoogleMapsで大ハマり</title>
    <link rel="alternate" type="text/html" href="http://www.anygiventime.net/blog/archives/000333.html" />
    <modified>2006-06-20T13:51:40Z</modified>
    <issued>2006-06-20T22:50:38+09:00</issued>
    <id>tag:www.anygiventime.net,2006:/blog//2.333</id>
    <created>2006-06-20T13:50:38Z</created>
    <summary type="text/plain">GoogleMapsAPIの理解がまだまだ足りない。 GoogleMapsの設置で大ハマりしてました。といっても仕方がないような気がするんだけど...。 GoogleMapsではGoogleMapsに最初から付いていて、地図上に配置できるGMarkerとカスタムのアイコンをGMarkerの画像にして...</summary>
    <author>
      <name>Yoshi</name>
      <url>http://www.anygiventime.net/</url>
      <email>mt@anygiventime.net</email>
    </author>
    <dc:subject>Web</dc:subject>
    <content type="text/html" mode="escaped" xml:lang="en" xml:base="http://www.anygiventime.net/blog/">
      <![CDATA[<p><a href=
"http://www.amazon.co.jp/exec/obidos/ASIN/4797332646/ref=nosim/mengine-22">
<img alt=""
     src=
     "http://ec1.images-amazon.com/images/P/4797332646.09._PE00_OU09_SCMZZZZZZZ_.jpg"
     align="right"
     border="0" /></a>GoogleMapsAPIの理解がまだまだ足りない。
     GoogleMapsの設置で大ハマりしてました。といっても仕方がないような気がするんだけど...。</p>
<p>GoogleMapsではGoogleMapsに最初から付いていて、
地図上に配置できるGMarkerとカスタムのアイコンをGMarkerの画像にして、地図に配置する2種類のことが出来る。通常、
GMarkerを生成しただけだと、</p>
<blockquote dir="ltr"
            style="MARGIN-RIGHT: 0px">
  <code>&nbsp;var&nbsp;marker = new GMarker(new GPoint(lng,
  lat))<br />
  &nbsp;map.addOverlay(marker);<br />
  &nbsp;GEvent.addListener(marker, "click", function() {<br />
  &nbsp;&nbsp;var info="情報ウィンドウで表示する文字列";<br />
  &nbsp;&nbsp;info = "&lt;div style='width:190px'&gt;" + info +
  "&lt;/div&gt;";<br />
  &nbsp;&nbsp;marker.openInfoWindowHtml(info);<br />
  &nbsp;});</code>
</blockquote>
<p>といったコーディングでOpenInfoWindowHtml( )で情報ウィンドウを開くことが出来るんだけど、
カスタムアイコンでGMarkerにopenInfoWindowHtml( )を使おうとすると</p>
<blockquote dir="ltr"
            style="MARGIN-RIGHT: 0px">
  <p><code>&nbsp;var icon = new GIcon();<br />
  &nbsp;icon.image="アイコンのパス";<br />
  &nbsp;icon.iconSize = new GSize(50, 50);<br />
  &nbsp;icon.iconAnchor = new GPoint(25, 25);<br />
  &nbsp;<strong>icon.infoWindowAnchor = new GPoint(25,
  25);</strong>　&lt;==この部分<br />
  &nbsp;var marker = new GMarker(new GPoint(lng,
  lat),icon);<br />
  &nbsp;map.addOverlay(marker);<br />
  &nbsp;GEvent.addListener(marker, "click", function() {<br />
  &nbsp;&nbsp;var info="情報ウィンドウで表示する文字列";<br />
  &nbsp;&nbsp;info = "&lt;div style='width:190px'&gt;" + info +
  "&lt;/div&gt;";<br />
  &nbsp;&nbsp;marker.openInfoWindowHtml(info);<br />
  &nbsp;});</code></p>
</blockquote>
<p dir="ltr">という風に、infoWindowAnchor属性を設定して、
情報ウィンドウの先端がどこに来るかを指定してなければ情報ウィンドウが開いてくれないらしい。この仕様ってどうなの？
指定できるなら出来てもいいけど、
出来ないならアイコンの中心とかで初期値を設定しておいてくれるとハマらなくて済んだのにとちょっと思ってしまった。API
ver.2まだ試してないけど、そっちではどうなってるんだろう。近々試さなきゃ。や†。ハマった、ハマった。2wぐらいハマった。
普通の仕事でやったら相当叱られそうだ。</p>]]>
      
    </content>
  </entry>
  <entry>
    <title>Mapper Plugin</title>
    <link rel="alternate" type="text/html" href="http://www.anygiventime.net/blog/archives/000332.html" />
    <modified>2006-06-13T15:09:37Z</modified>
    <issued>2006-06-14T00:08:41+09:00</issued>
    <id>tag:www.anygiventime.net,2006:/blog//2.332</id>
    <created>2006-06-13T15:08:41Z</created>
    <summary type="text/plain">Geocodingネタのメモ Ogawa::wikiというサイトでMTに簡単に地図をつけることが出来るMapper Pluginなるもの これは、かなりやりたいことに近いので気になる。MTにおいてMTMapperタグという新しいタグを追加してくれて、 MTのテンプレート中に[map:address]...</summary>
    <author>
      <name>Yoshi</name>
      <url>http://www.anygiventime.net/</url>
      <email>mt@anygiventime.net</email>
    </author>
    <dc:subject>Web</dc:subject>
    <content type="text/html" mode="escaped" xml:lang="en" xml:base="http://www.anygiventime.net/blog/">
      <![CDATA[<p>Geocodingネタのメモ</p>
<ul>
  <li><a href=
  "http://as-is.net/wiki/Main_Page">Ogawa::wiki</a>というサイトでMTに簡単に地図をつけることが出来る<a href="http://as-is.net/wiki/Mapper_Plugin/ja">Mapper
  Plugin</a>なるもの</li>
</ul>
<p>これは、かなりやりたいことに近いので気になる。MTにおいてMTMapperタグという新しいタグを追加してくれて、
MTのテンプレート中に[map:address]といったようなタグを入れると、その部分を地図に置換して表示するスクリプト。ただし、
（個人的にはそれほど問題ない気がするけど）GoogleMapsの規約によると、「GoogleMapsをGeocodingとして使う」
 というやつにあたる可能性もあるとの注意書きも。 参考：</p>
<blockquote>
  <p>「This is not allowed by the API terms of use. You should not
  scrape Google Maps to generate geocodes. We will block services
  that do automated queries of our servers.」</p>
</blockquote>
<p>たぶん、ここで言っている"to generate geocodes"というのは、（番地などを網羅的に） あらゆる住所全て緯度、
経度に変換するツールとして使うような悪質なスクリプトやツールをブロックするといっているのではなかろうかと。</p>
<p>&nbsp;</p>]]>
      
    </content>
  </entry>
  <entry>
    <title>Dreamweaver8</title>
    <link rel="alternate" type="text/html" href="http://www.anygiventime.net/blog/archives/000331.html" />
    <modified>2006-06-13T12:47:36Z</modified>
    <issued>2006-06-13T21:47:13+09:00</issued>
    <id>tag:www.anygiventime.net,2006:/blog//2.331</id>
    <created>2006-06-13T12:47:13Z</created>
    <summary type="text/plain">ちゃくちゃくとwebまわりを近代化中。Dreamweaver8 を買いました。動機は、 blogテンプレートがいじれること FTPがバックグラウンドで動いてくれること あとは・・・それほどないなぁ。あんまりクライアントのせいだとは思いがたいけど、DreamweaverMXのころは、FTPのアップに失...</summary>
    <author>
      <name>Yoshi</name>
      <url>http://www.anygiventime.net/</url>
      <email>mt@anygiventime.net</email>
    </author>
    <dc:subject>Web</dc:subject>
    <content type="text/html" mode="escaped" xml:lang="en" xml:base="http://www.anygiventime.net/blog/">
      <![CDATA[<p><img alt=""
     hspace="0"
     src=
     "http://images-jp.amazon.com/images/P/B000EMGEPO.01._OU09_PE0_SCMZZZZZZZ_.jpg"
     align="right"
     border="0" />ちゃくちゃくとwebまわりを近代化中。<a href=
     "http://www.amazon.co.jp/exec/obidos/ASIN/B000EMGEPO/ref=nosim/mengine-22"
   target="_blank">Dreamweaver8</a> を買いました。動機は、</p>
<ul>
  <li>blogテンプレートがいじれること</li>
  <li>FTPがバックグラウンドで動いてくれること</li>
</ul>
<p>あとは・・・それほどないなぁ。あんまりクライアントのせいだとは思いがたいけど、DreamweaverMXのころは、
FTPのアップに失敗することが多。8にしてから安定した気がしないでもない。</p>]]>
      
    </content>
  </entry>
  <entry>
    <title>Geocodingやりたい</title>
    <link rel="alternate" type="text/html" href="http://www.anygiventime.net/blog/archives/000330.html" />
    <modified>2006-06-08T14:31:09Z</modified>
    <issued>2006-06-08T23:10:32+09:00</issued>
    <id>tag:www.anygiventime.net,2006:/blog//2.330</id>
    <created>2006-06-08T14:10:32Z</created>
    <summary type="text/plain">GoogleMapsを最近使ってるけど、GeoCodingがしたくなってきた。自分で作るべきか、他人のサービスを利用させてもらうか。とにかく情報収集が必要。 緯度、経度から住所 「invGeocoder のRESTを作ってみました。」＠ Nakamura-KU ADDICT http://www.k...</summary>
    <author>
      <name>Yoshi</name>
      <url>http://www.anygiventime.net/</url>
      <email>mt@anygiventime.net</email>
    </author>
    <dc:subject>Web</dc:subject>
    <content type="text/html" mode="escaped" xml:lang="en" xml:base="http://www.anygiventime.net/blog/">
      <![CDATA[<p>GoogleMapsを最近使ってるけど、GeoCodingがしたくなってきた。自分で作るべきか、
他人のサービスを利用させてもらうか。とにかく情報収集が必要。</p>
<p><strong>緯度、経度から住所</strong></p>
<ul>
  <li>&nbsp;「invGeocoder のRESTを作ってみました。」＠ <a accesskey="1"
     href="http://www.knya.net/">Nakamura-KU ADDICT</a> <a href=
     "http://www.knya.net/archives/2005/07/rest.html">http://www.knya.net/archives/2005/07/rest.html</a></li>
</ul>
<p><strong>住所から緯度、経度</strong></p>
<ul>
  <li>「Geocoding Tools &amp; Utilities」<a href=
  "http://pc035.tkl.iis.u-tokyo.ac.jp/~sagara/geocode/index.php">http://pc035.tkl.iis.u-tokyo.ac.jp/~sagara/geocode/index.php</a></li>
  <li>「geocoding.jp」<a href=
  "http://www.geocoding.jp/">http://www.geocoding.jp/</a></li>
</ul>
<p><strong>関連データソース</strong></p>
<ul>
  <li>
    <div class="title">
      街区レベル位置参照情報ダウンロードサービス（国土交通省）<a href=
      "http://nlftp.mlit.go.jp/isj/index.html">http://nlftp.mlit.go.jp/isj/index.html</a>
    </div>
  </li>
  <li>
    <div class="title">
      電子国土ポータル（国土交通省）<a href=
      "http://portal.cyberjapan.jp/portal.html">http://portal.cyberjapan.jp/portal.html</a>
    </div>
  </li>
  <li>
    <div class="title">
      郵便番号データダウンロード（ゆうびん）<a href=
      "http://www.post.japanpost.jp/zipcode/download.html">http://www.post.japanpost.jp/zipcode/download.html</a>
    </div>
  </li>
</ul>
<p><strong>その他の独り言的メモ</strong></p>
<p><a href=
"http://pc035.tkl.iis.u-tokyo.ac.jp/~sagara/geocode/modules/simple-geocode1/">
http://pc035.tkl.iis.u-tokyo.ac.jp/~sagara/geocode/modules/simple-geocode1/</a>で紹介している実験の説明でAjaxに使いやすいと書いてあるけど、
 Ajaxも使いたかったら結局、自ドメインでやるしかないんじゃないかな？なのでおそらく自分で作んなきゃいけないんだろうね。
ちょいめんどくさい。というかレンタルサーバで許してもらえる負荷で収まるかどうかが肝かな。</p>
<p>国土交通省で取得できるデータは世界測地系（<a href=
"http://nlftp.mlit.go.jp/isj/format.html">http://nlftp.mlit.go.jp/isj/format.html</a>）
なのでGoogleMapsでも問題なし。</p>
<p>本当にこれがGoogleが期待していることかどうかはともかく、確かにうまいよな。地図を公開するだけの価値はある気がする。
<a href=
"http://www.goodpic.com/mt/archives2/2005/07/google.html">http://www.goodpic.com/mt/archives2/2005/07/google.html</a></p>]]>
      
    </content>
  </entry>
  <entry>
    <title>ubicast Blogger</title>
    <link rel="alternate" type="text/html" href="http://www.anygiventime.net/blog/archives/000329.html" />
    <modified>2006-06-06T14:32:29Z</modified>
    <issued>2006-06-06T19:26:58+09:00</issued>
    <id>tag:www.anygiventime.net,2006:/blog//2.329</id>
    <created>2006-06-06T10:26:58Z</created>
    <summary type="text/plain">最近ブログを修理してから、いろいろとまたやりたくなってきました。ただ、その間作ったWEBサイトとかの管理もあって、そのうえいくつか日記があってそろそろちょっと面倒くさくなってきたので、ブログ投稿ツールがほしくなりました。いくつかあるみたいですが、そこそこ歴史もあってフリーで使えるということで、このエ...</summary>
    <author>
      <name>Yoshi</name>
      <url>http://www.anygiventime.net/</url>
      <email>mt@anygiventime.net</email>
    </author>
    <dc:subject>Web</dc:subject>
    <content type="text/html" mode="escaped" xml:lang="en" xml:base="http://www.anygiventime.net/blog/">
      <![CDATA[<p>最近ブログを修理してから、いろいろとまたやりたくなってきました。ただ、その間作ったWEBサイトとかの管理もあって、
そのうえいくつか日記があってそろそろちょっと面倒くさくなってきたので、
<strong>ブログ投稿ツール</strong>がほしくなりました。いくつかあるみたいですが、
そこそこ歴史もあってフリーで使えるということで、このエントリーでubicast Bloggerを初めて使ってみます。
htmlエディタが付いていないのはまずいかなと思ったんですがね。インターフェースもまあ難しくはないし、外部エディタも使えるし、
これはなんかいい感じですね。ちょっと楽しくなるかもしんないです。</p>
<p>私の場合、想定できる使い方は、やっぱりオフラインでのメモ書きをBlogにするっていう使い方ですかね。</p>
<p>ちょっと心配なのは、初めてブログを書き始めた人、特にMTとかを初めてインストールしたばっかりのひとが使うと、
実際のところWEB版ではどんな風に書いてるかとか、写真はどこに保存されているかとか、サムネイルがどうやって管理されているとか、
知らないまま使って、あとで困りそう。</p>
<p>そういう意味ではローカルのフォルダ構成とサーバ上の添付や画像のファイルを整理するような機能とかあるといいかもですね。
そもそもXMLRPCとやらなので、ツールへの要望というよりはMTへの要望かもしれないですけど。</p>]]>
      
    </content>
  </entry>
  <entry>
    <title>実践ハイパフォーマンスMySQL</title>
    <link rel="alternate" type="text/html" href="http://www.anygiventime.net/blog/archives/000327.html" />
    <modified>2006-06-11T14:11:00Z</modified>
    <issued>2006-06-04T21:48:34+09:00</issued>
    <id>tag:www.anygiventime.net,2006:/blog//2.327</id>
    <created>2006-06-04T12:48:34Z</created>
    <summary type="text/plain">今日は夏準備ということで、バルサンやっていたので、昼間、 お気に入りの喫茶店にいって一日中 「実践ハイパフォーマンスMySQL」 で勉強していました。やっぱり、しっかり勉強したら全然違いますわ。特にMySQLに関しては、 Oracleとかと違ってチューニングというテーマの情報が少ないのでとても参考に...</summary>
    <author>
      <name>Yoshi</name>
      <url>http://www.anygiventime.net/</url>
      <email>mt@anygiventime.net</email>
    </author>
    <dc:subject>Book &amp; Movie</dc:subject>
    <content type="text/html" mode="escaped" xml:lang="en" xml:base="http://www.anygiventime.net/blog/">
      <![CDATA[<p><a href=
"http://www.amazon.co.jp/exec/obidos/ASIN/4873112095/ref=nosim/mengine-22">
<img alt=""
     src=
     "http://ec1.images-amazon.com/images/P/4873112095.09._PE00_OU09_SCMZZZZZZZ_.jpg"
     align="right"
     border="0" /></a>今日は夏準備ということで、バルサンやっていたので、昼間、
     お気に入りの喫茶店にいって一日中 「<a href=
     "http://www.amazon.co.jp/exec/obidos/ASIN/4873112095/ref=nosim/mengine-22">実践ハイパフォーマンスMySQL</a>」
      で勉強していました。やっぱり、しっかり勉強したら全然違いますわ。特にMySQLに関しては、
     Oracleとかと違ってチューニングというテーマの情報が少ないのでとても参考になります。最近色々作ってきたけど、
     やらないといけないことがいろいろ見つかりました。 普段、
     適当にPHP+MySQL本とか読んでたらなかなかデータベースエンジンの違いで出来ること出来ないことがあるなんてほとんど意識しません。
      特にホスティングを使っているとそこで使えるデータベースエンジンは限られているので、違いを知らなければ結局、
     <strong>あるものを使う</strong>以外の考えに及ばない。でも、MySQLで言うとMyISAM、
     InnoDBヒープDB、NDBで何が出来て何が出来ないか知っていれば、
     ホスティングサーバであってもより満足のいく選択が出来る。（・・・
     といってもMySQLの特色を求めて使うならMyISAMがあれば結構大丈夫な気もするけど）
     たとえば頻繁に行のUPDATEが発生してトランザクションの制御が必要な場合はMyISAMよりもInnoDBの方が 
     （ロック範囲とかで）良いかもしれないとか。自由度の低い（あるいは普通の）
     共有ホスティングサーバだとmysqldumpが唯一のバックアップ手段だったりするけど、データの量によっては、
     負荷が高くてサーバ要領を消費するため、
     mysqldumpでは間に合わなくなるかもしれないので専用サーバを選ぶか自前サーバを立てるという選択になるかもしれない。
     あと、個人的には最近作ったサービスのクエリがいつまで耐えられるか自身がなかったので、パフォーマンスチューニングの章、
     MySQLのインデックスに対する挙動に関する細かい制御方法の章あたりは、何度も読んで生かして意向と思った。</p>]]>
      
    </content>
  </entry>
  <entry>
    <title>MTのBerkeleyDBの大量データのせいでMySQLへ移行できない人向け</title>
    <link rel="alternate" type="text/html" href="http://www.anygiventime.net/blog/archives/000326.html" />
    <modified>2006-06-03T11:31:47Z</modified>
    <issued>2006-06-03T20:29:09+09:00</issued>
    <id>tag:www.anygiventime.net,2006:/blog//2.326</id>
    <created>2006-06-03T11:29:09Z</created>
    <summary type="text/plain">おっし。下のエントリ...</summary>
    <author>
      <name>Yoshi</name>
      <url>http://www.anygiventime.net/</url>
      <email>mt@anygiventime.net</email>
    </author>
    <dc:subject>Web</dc:subject>
    <content type="text/html" mode="escaped" xml:lang="en" xml:base="http://www.anygiventime.net/blog/">
      <![CDATA[<p>おっし。下のエントリーがなんとかうまくいけたので、BerkeleyDBが大量データでMySQLに移行すら出来なくなってしまった場合のちょっとずつMySQLに移行するための手順をメモとして残しておきます。</p>

<p><u><strong>症状</strong></u></p>

<p>2ヶ月ぐらい前に、大量のコメントや丁Ｂにやられました。ＭＴのあるひとつのエントリーに30000を超えたＴＢが打ち込まれるという状態です。該当エントリーの静的ページは30ＭＢとかになっている状態です。<br />
ＭＴの管理メニューからＴＢを確認することも出来ないのでデータの削除も出来ません。dbフォルダのＴＢ関連のＤＢを削除してやろうかとも思いましたがデータの整合性が取れなくなる恐れがあるので怖くて出来ません。</p>

<p><u><strong>注意！</strong></u></p>

<p>この方法は決して<strong>オフィシャルな方法ではありません。</strong>正しいやり方かどうかもわかりません。すべては直感でやった方法です。<strong>Google神さまにお願いするともっといい方法があるかもしれません。</strong>この方法を試して何かあっても当方は一切責任をもちません。この方法を実行するにしても、かならずサイトの完全なバックアップを取るなど、万全の体制でやってください。やった作業は少しずつＢｅｒｋｅｌｅｙＤＢからＭｙＳＱＬに移行するという手順です。<br />
対象は<strong>MT3.2</strong>です。</p>]]>
      <![CDATA[<p><strong>補足</strong><br />
アップロードしたファイル等は全て、各ホスティングサービスにあわせたファイル属性を与えてください。</p>

<p><u><strong>簡易手順</strong></u><br />
<ol><br />
<li>mt-config.cgiにBerkeleyDBとMySQLの設定を行う</li><br />
<li>サーバ上のmt-db2sql.cgiにアクセスする（mt-db2sql.cgiでMySQLに移行する）</li><br />
<li>mt-db2sql.cgiがタイムアウトするようならmt-db2sql.cgiを編集する</li><br />
<li>「mt-db2sql.cgiでMySQLに移行する」からやり直す</li><br />
<li>mt-config.cgiをMySQL専用にする</li><br />
</ol></p>

<p><strong>手順１「mt-config.cgiにBerkeleyDBとMySQLの設定を行う」</strong><br />
mt-config.cgiを<a href="http://www.chat-jp.com/support/mt-mysql.html#3.2">MTのMySQL移行</a>などを参考に設定する。変更箇所</p>

<p>mt-config.cgiの以下の場所を設定<br />
<blockquote>ObjectDriver DBI::mysql<br />
Database データベース名<br />
DBUser ユーザ名<br />
DBPassword パスワード<br />
DBHost ホスト名</blockquote></p>

<p>mt-config.cgiの以下の場所を設定</p>

<blockquote>DataSource  /path/to/database/directory
（↑ふつうにMTをセットアップしたひとはここにDBパスが入っているはず。）</blockquote>

<p><strong>手順2「サーバ上のmt-db2sql.cgiにアクセスする」</strong></p>

<p>サーバ上のmt-db2sql.cgiにアクセスするとデータの移行がはじまります。<br />
<blockquote>Loading database schema...</p>

<p>**** WARNING: Subroutine Jcode::ucs2_euc redefined at extlib/Jcode/Unicode/NoXS.pm line 56.</p>

<p>**** WARNING: Subroutine Jcode::euc_ucs2 redefined at extlib/Jcode/Unicode/NoXS.pm line 71.</p>

<p>**** WARNING: Subroutine Jcode::euc_utf8 redefined at extlib/Jcode/Unicode/NoXS.pm line 87.</p>

<p>**** WARNING: Subroutine Jcode::utf8_euc redefined at extlib/Jcode/Unicode/NoXS.pm line 94.</p>

<p>**** WARNING: Subroutine Jcode::ucs2_utf8 redefined at extlib/Jcode/Unicode/NoXS.pm line 101.</p>

<p>**** WARNING: Subroutine Jcode::utf8_ucs2 redefined at extlib/Jcode/Unicode/NoXS.pm line 124.</p>

<p>Loading data...<br />
MT::Author<br />
    1</p>

<p>MT::Blog<br />
    2</p>

<p>MT::Category<br />
    1<br />
    10<br />
    11<br />
    12<br />
    4<br />
MT::Comment<br />
    1<br />
    10<br />
    11<br />
    11717<br />
    11718<br />
    11719<br />
　　　・<br />
　　　・<br />
　　　・</blockquote><br />
といったメッセージがでます。これはMTデフォルトのDBであるBerkeleyDBからMySQLへデータを移行しているところ。WARNINGは気にしないものらしい。そもそもBerkeleyDBに大量のスパムが溜まって障害をおこしているので、これが途中でタイムアウトを起こしてとまります。私の場合、まずMT::Commentが大量にあってこいつの実行中にタイムアウトします。</p>

<p><strong>手順3「mt-db2sql.cgiがタイムアウトするようならmt-db2sql.cgiを編集する」</strong><br />
mt-db2sql.cgiの29行目にある以下の行をコピーして、<br />
<blockquote>my @CLASSES = qw( MT::Author MT::Blog MT::Category MT::Comment MT::Entry<br />
                  MT::IPBanList MT::Log MT::Notification MT::Permission<br />
                  MT::Placement MT::Template MT::TemplateMap MT::Trackback<br />
                  MT::TBPing MT::Session MT::PluginData MT::Config );</blockquote><br />
以下のようにコメントアウトして保存しておき、<br />
<blockquote>#my @CLASSES = qw( MT::Author MT::Blog MT::Category MT::Comment MT::Entry<br />
#                  MT::IPBanList MT::Log MT::Notification MT::Permission<br />
#                  MT::Placement MT::Template MT::TemplateMap MT::Trackback<br />
#                  MT::TBPing MT::Session MT::PluginData MT::Config );<br />
my @CLASSES = qw( MT::Author MT::Blog MT::Category MT::Comment MT::Entry<br />
                  MT::IPBanList MT::Log MT::Notification MT::Permission<br />
                  MT::Placement MT::Template MT::TemplateMap MT::Trackback<br />
                  MT::TBPing MT::Session MT::PluginData MT::Config );</blockquote><br />
私の場合は、MT::Commentでタイムアウトするので、MT::Comment を削除する。（MT::Commentより前は既に移行されているのでMT::Commentより前を全部削除してもいい。）<br />
<blockquote>my @CLASSES = qw( MT::Author MT::Blog MT::Category (ここにあったものを削除) MT::Entry<br />
                  MT::IPBanList MT::Log MT::Notification MT::Permission<br />
                  MT::Placement MT::Template MT::TemplateMap MT::Trackback<br />
                  MT::TBPing MT::Session MT::PluginData MT::Config );</blockquote></p>

<p>これで、MT::Commentはひとまず、移行しないことになります。編集したファイルをサーバにアップして手順2にもどります。MT::Commentはすっ飛ばして、ほかのテーブルを移行することになります。<br />
手順2、手順3をくりかえして最後まで行ったらひとまず、救出できるものは救出し終わったことになります。</p>

<p>ですが、貴重なコメントなどを全部あきらめてしまうのは気が引けてしまいます。なので、mt-db2sql.cgiの該当場所を<br />
<blockquote>my @CLASSES = qw( MT::Trackback );</blockquote><br />
だけにしたものと、<br />
<blockquote>my @CLASSES = qw( MT::Comment );</blockquote><br />
だけにしたものだけで、もう一度手順2をしておきます。<br />
全ての復旧は出来ないかもしれませんが、コメントやトラックバック数百〜数千件ぐらなら救出できます。これでも古きよきBLOGを始めたころのデータですからかなり貴重です。あのころは良かった(-。-)y-゜゜゜</p>

<p><strong>手順4「mt-config.cgiをMySQL専用にする」</strong></p>

<p>mt-config.cgiの以下の場所をコメントアウトしてアップロードしてください。</p>

<blockquote># DataSource  /path/to/database/directory
（↑ふつうにMTをセットアップしたひとはここにDBパスが入っているはず。）</blockquote>

<p>これでおそらくいいんじゃないかなとおもいます。感ですけど。<br />
ログインしてみてください。</p>

<p>(補足)<br />
今のMTはUTF-8を使ってると思うんですが、むかしからMTを使っている人は、EUC-JPやSJISを使っていたりすると思います。もしもログインしてみて過去のエントリーが文字化けしているようなら、<br />
mt-config.cgiの<br />
<blockquote>PublishCharset utf-8</blockquote>を<br />
<blockquote>PublishCharset euc-jp</blockquote>などに替えてください。<br />
感ですがうまく動いています。</p>]]>
    </content>
  </entry>

</feed>