Inkscapeを0.48.2にアップデートした

Inkscape 0.48.2の公開自体は2か月ぐらい前に行われていたのですが、公式サイトで正式にニュースになったので、やっとこさ0.48.2を導入することにしました。

アップデートといっても、旧バージョンを削除して入れ直す作業になるのですが、Windowsなので特に困ることもなくあっさりと完了。
0.48.1と比較しても何が変わったのかわかりません。
唯一見つけた違いといえば、cairoライブラリのバージョンが1.8.8から1.10.2に上がったことぐらいでしょうか。

HTC Ariaがドナドナされた

スマートフォンはイーモバイルのAriaです。
テザリングとデータ通信の値段で、こいつを選びました。
本体の値段4万弱を入れるとどうなんだって話はさておき・・・

最近調子が悪く、画面ロック解除が反応しないことがありました。
なんどか電源ボタンを押して画面を点灯しなおすと、ロック解除できていたのでだましだまし使っていました。
今日になって、なんど電源ボタンを押しても反応しない。
電池を抜いて、再投入しても駄目。
仕方がないので、ビック池袋内のセンターまで持っていきました。

担当者もいろいろと試行錯誤するも駄目、
SIMカードを指し直しても駄目、
メモリーカードを抜いても駄目、
画面ロックを外せないのでソフトリセットも駄目、
初期化されるけど仕方がなくハードリセットするも駄目・・・

で、結局修理に出すことになり、代替機にPocket Wi-fi Sを預かってきました。
万が一紛失したら3万5千よこせって怖いのなんの。

本体は月315円で保障に入っているものの、最大1万5千の修理費が発生するとかこれは痛すぎで、保護シートもはがしたので700円ぐらいロスで、電車賃の往復320円も負担するわ、帰りにたこ焼き屋のくくるに行ったらすでに販売終了時間を過ぎていたとか、踏んだり蹴ったりな一日でした。

プリントライで封筒受注を開始しました

印刷受注サイト「プリントライ」にて、封筒の受注を開始しました。
サイズはまず長3のみ、クラフトと白のみです。
他のサイズ、ほかの色をご希望の場合は、個別にお問い合わせください。
詳しくは封筒(長3)をご覧ください。

ServersMan@VPSをまた借りた

今、請け負っている仕事にPHPExcelを使うものがあります。
これまでは、ファイルを書き出すだけで全然問題がなかったのですが、既存のexcelファイルを読み込んで編集する機能を使おうとすると、一部の関数が定義されていないと文句を言われて動きません。
開発環境はWindows7でほぼ最新版なのですが、Linuxではそうもいきません。
Date系の関数が実装されているPHP5.3の環境が必要になりました。

今までテスト鯖用にServersMan@VPSを使っていたのですが、PHPは5.1.6なので、これをアップデートしてしまってもよかったのですが、比較検証することができなくなるため、新しく借りることにしました。
使い慣れたSaaSesでいくかどうかちょっとだけ悩んだ結果、できるだけ同じ環境で比較できるようにと、またServersManを借りることにしました。
スペックはどうでもいいので、無難にEntryタイプを選択。

OSはCentOS5.4だったのを5.6に、PHPも5.3をいれて、ほかにも手当たり次第にupdateやupgradeをかけまくって、まだ途中だったりします。
そのうち終わりますよ、きっと。

たぶん、でめたし、でめたし?

CentOS6にRPMforgeを導入する

CentOS6は5と同じ要領では正常に進めません。
当然ですね、メジャーバージョンが違いますから。
簡単なパスの変更ですが、一応記録しておきます。

まずは、リポジトリのインストール

yum -y install yum-priorities
yum -y install yum-plugin-priorities

次に、リポジトリ設定ファイルの編集
vi /etc/yum.repos.d/CentOS-Base.repo
各セクションの末尾に
#add
priority=1

を追加。

GPGキーをインストール

wget http://apt.sw.be/RPM-GPG-KEY.dag.txt
rpm --import RPM-GPG-KEY.dag.txt

ここからがCentOS5と異なります。
RPMforgeリポジトリのインストール
64bitの場合

http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.2-1.el6.rf.x86_64.rpm
rpm -ivh rpmforge-release-0.5.2-1.el6.rf.x86_64.rpm


32bitの場合

wget http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.2-1.el6.rf.i686.rpm
rpm -ivh rpmforge-release-0.5.2-1.el6.rf.i686.rpm

そして最後にyumをアップデート
yum -y update rpmforge-release

これで、RPMforgeのお世話になれます。
でめたし、でめたし。

CentOS6をネットワーク経由でインストールしようとして手が止まる

新しく鯖を手に入れました。
ウェブ鯖用なので、OSはCentOS6の64bitを選びました。
CentOS6の32bitはDVD1枚ですが、64bitはDVDで2枚になってしまうため、ネットワーク経由でインストールすることにしました。
ブートはUSBで、ネットワークインストールのISOをダウンロードしてブートイメージを書き込みます。
ブートするまでは特に問題ないでしょう。
インストールデバイスを選択する画面で手が止まりました。
見慣れたメニューと少し違います。
ローカルCD/DVD
ハードドライブ
NFSイメージ
FTP
HTTP
の、
FTPとHTTPがなくて、URLとなっています。
まぁ、想像は付くのですが、選択するとTCP/IPの設定画面が現れ、さらに進みます。
今までは、サイト名とディレクトリが分かれていましたが、URLを入力しろと言われます。
ここでhttpまたはFTPのプロトコルからの入力が必要になっています。
ま、大した変更ではありませんが、あえて統一した理由もよくわかりませんが。
そのあとはたぶん同じです。
変更があったかもしれませんが、その画面を利用するような設定ではなかったので。

待望のCentOS6をインストールしてみた

これまでサーバ用途にはCentOS一択でお世話になっています。
RedHatが6になり、6.1も出るのに、CentOSは6のアナウンスが全然ないとか、中心メンテナが離脱してScientificLinuxへの移行を勧めているとか、物騒な情報も流れ迷走している感じがしなくもありませんでした。

そんな中でいよいよリリースされたCentOS6。
早速、余っているPCにインストールしてみました。
デザインや設定画面がちょっと変更になっていましたが、インストール自体は特に問題なく完了。
再起動して、yumでアップデートして、再起動して、特に問題はなさそうでした。
個人的な利用範囲での大きな変更は、PHPが5.3になってたり、Perlが5.10になってたりしているぐらいでしょうか。
これといって問題になりそうな更新もないので、今後はCentOS6のお世話になろうと思います。

PHP5.3に怒られる

PHPを5.3にアップデートすると、今までのスクリプトが動かなかったりエラーが表示されるようになったりする。
特に、split関数を使うなコノヤローと、
「Deprecated: Function split() is deprecated in…」
と怒られるので、見逃してもらえるようphp.iniに呪文を唱える。
「error_reporting = E_ALL & ~E_NOTICE & ~E_DEPRECATED」
標準では、
「error_reporting = E_ALL」
となっているのでコメントアウトしておこう。
php.iniを保存して、httpdをリスタートさせれば、エラー表示が消えるはずです。
とりあえず、今後はsplitを使うのをやめて、explodeを使うように心がけよう。
でめたしでめたし。

郵便番号から都道府県を調べる

PHPで郵便番号から都道府県を導く処理が必要になりました。

郵便番号から住所を調べるには、日本郵便で公開されているCSVをDBに突っ込んで、クエリを投げるのですが、データサイズもでかいし、市区町村までは必要がないのでとりあえず都道府県だけを簡単に調べる方法がないか探していました。

適当に調べていたところ、郵便番号の先頭2桁を見ればいいだろうという記事が多いものの、一部の都道府県は他県に混ざっているものがあるらしいく、それに対応したコードが見つからなかったので、日本郵便の検索と格闘しながら新しくコードを用意することにしました。

で、以下のようになりました。
とりあえず動けばいいので、処理速度の最適化は確認していません。

/*==============================================================================
 郵便番号から、都道府県番号を取得する簡易版

	要素:
		郵便番号(nnn-nnnn or nnnnnnn)
	戻り値:
		都道府県番号

	※ 備考:
		1 	北海道
		2 	青森県
		3 	岩手県
		4 	宮城県
		5 	秋田県
		6 	山形県
		7 	福島県
		8 	茨城県
		9 	栃木県
		10 	群馬県
		11 	埼玉県
		12 	千葉県
		13 	東京都
		14 	神奈川県
		15 	新潟県
		16 	富山県
		17 	石川県
		18 	福井県
		19 	山梨県
		20 	長野県
		21 	岐阜県
		22 	静岡県
		23 	愛知県
		24 	三重県
		25 	滋賀県
		26 	京都府
		27 	大阪府
		28 	兵庫県
		29 	奈良県
		30 	和歌山県
		31 	鳥取県
		32 	島根県
		33 	岡山県
		34 	広島県
		35 	山口県
		36 	徳島県
		37 	香川県
		38 	愛媛県
		39 	高知県
		40 	福岡県
		41 	佐賀県
		42 	長崎県
		43 	熊本県
		44 	大分県
		45 	宮崎県
		46 	鹿児島県
		47 	沖縄県

 2011-06-06 新設
------------------------------------------------------------------------------*/
function _prefecture_from_zip( $zip ){

	     if( preg_match( '/^01/',     $zip ) ){ return  5; } // "秋田県";   }
	else if( preg_match( '/^02/',     $zip ) ){ return  3; } // "岩手県";   }
	else if( preg_match( '/^03/',     $zip ) ){ return  2; } // "青森県";   }
	else if( preg_match( '/^0[4-9]/', $zip ) ){ return  1; } // "北海道";   }
	else if( preg_match( '/^1[0-9]/', $zip ) ){ return 13; } // "東京都";   }
	// ^20は欠番
	else if( preg_match( '/^2[1-5]/', $zip ) ){ return 14; } // "神奈川県"; }
	else if( preg_match( '/^2[679]/', $zip ) ){ return 12; } // "千葉県";   }
	// ^28は欠番
	else if( preg_match( '/^3[01]/',  $zip ) ){ return  8; } // "茨城県";   }
	else if( preg_match( '/^32/',     $zip ) ){ return  9; } // "栃木県";   }
	else if( preg_match( '/^3[3-6]/', $zip ) ){ return 11; } // "埼玉県";   }
	else if( preg_match( '/^37/',     $zip ) ){ return 10; } // "群馬県";   }
	else if( preg_match( '/^3[89]/',  $zip ) ){ return 20; } // "長野県";   }
	else if( preg_match( '/^40/',     $zip ) ){ return 19; } // "山梨県";   }
	else if( preg_match( '/^4[1-3]/', $zip ) ){ return 22; } // "静岡県";   }
	else if( preg_match( '/^4[4-9]/', $zip ) ){ return 23; } // "愛知県";   }
	else if( preg_match( '/^50/',     $zip ) ){ return 21; } // "岐阜県";   }
	else if( preg_match( '/^51/',     $zip ) ){ return 24; } // "三重県";   }
	else if( preg_match( '/^520\-?046[1-5]$/', $zip ) ){ return 26; } // "京都府";   } // 特殊
	else if( preg_match( '/^52/',     $zip ) ){ return 25; } // "滋賀県";   }
	else if( preg_match( '/^5[3-9]/', $zip ) ){ return 27; } // "大阪府";   }
	else if( preg_match( '/^6[0-2]/', $zip ) ){ return 26; } // "京都府"; }
	else if( preg_match( '/^630\-?027[12]$/',  $zip ) ){ return 27; } // "大阪府"; } // 特殊
	else if( preg_match( '/^63/',     $zip ) ){ return 29; } // "奈良県"; }
	else if( preg_match( '/^64/',     $zip ) ){ return 30; } // "和歌山県"; }
	else if( preg_match( '/^6[5-7]/', $zip ) ){ return 28; } // "兵庫県"; }
	else if( preg_match( '/^68/',     $zip ) ){ return 31; } // "鳥取県"; }
	else if( preg_match( '/^69/',     $zip ) ){ return 32; } // "島根県"; }
	else if( preg_match( '/^7[01]/',  $zip ) ){ return 33; } // "岡山県"; }
	else if( preg_match( '/^7[23]/',  $zip ) ){ return 34; } // "広島県"; }
	else if( preg_match( '/^7[45]/',  $zip ) ){ return 35; } // "山口県"; }
	else if( preg_match( '/^76/',     $zip ) ){ return 37; } // "香川県"; }
	else if( preg_match( '/^77/',     $zip ) ){ return 36; } // "徳島県"; }
	else if( preg_match( '/^78/',     $zip ) ){ return 39; } // "高知県"; }
	else if( preg_match( '/^79/',     $zip ) ){ return 38; } //"愛媛県"; }
	else if( preg_match( '/^8[0-3]/', $zip ) ){ return 40; } // "福岡県"; }
	else if( preg_match( '/^84/',     $zip ) ){ return 41; } // "佐賀県"; }
	else if( preg_match( '/^85/',     $zip ) ){ return 42; } // "長崎県"; }
	else if( preg_match( '/^86/',     $zip ) ){ return 43; } // "熊本県"; }
	else if( preg_match( '/^87/',     $zip ) ){ return 44; } //"大分県"; }
	else if( preg_match( '/^88/',     $zip ) ){ return 45; } // "宮崎県"; }
	else if( preg_match( '/^89/',     $zip ) ){ return 46; } // "鹿児島県"; }
	else if( preg_match( '/^90/',     $zip ) ){ return 47; } // "沖縄県"; }
	else if( preg_match( '/^91/',     $zip ) ){ return 18; } // "福井県"; }
	else if( preg_match( '/^92/',     $zip ) ){ return 17; } // "石川県"; }
	else if( preg_match( '/^93/',     $zip ) ){ return 16; } // "富山県"; }
	else if( preg_match( '/^9[45]/',  $zip ) ){ return 15; } // "新潟県"; }
	else if( preg_match( '/^9[67]/',  $zip ) ){ return  7; } // "福島県"; }
	else if( preg_match( '/^98/',     $zip ) ){ return  4; } // "宮城県"; }
	else if( preg_match( '/^99/',     $zip ) ){ return  6; } // "山形県"; }
	return NULL;

}

突込みがある人は遠慮なくどうぞ。
とりあえず、これで一つ機能が追加できたので、でめたしでめたし。

夏に向けてCPUクーラーを換装した

開発予備機という名目で最近組み立てたBOINC機なのですが、CPUクーラーがリファレンスのままでした。

CPUはAMDでAM3ソケットタイプです。

さすがにこのままでは夏を越えられそうにもないので、新しくCPUクーラーを入手しました。

トップフローかサイドフローか悩みながらも、twitterでオススメされたので忍者3に決定。TWOTOPで3,280円、他のショップでは3,980円や3,380円もありましたが、おそらく底値でしょう。いい買い物しました。

ケースはKUROSUKEで、パーツの付け替えもしやすいハズだったのですが、見事に裏切られました。というか事前に確認していない自分の責任なのですが。

一応背面に穴が空いているのですが、マザーボードを固定するフレームが邪魔して外せませんでした。結局パーツを全部外してマザーボードを取り出し換装することに。


実際につけるとデカイですね。リファレンスと比べて4倍ぐらいの体積があるかもしれません。表面積も大きそうでよく冷えそうですね。

CPUクーラーの設置にはちょっと手間取ったものの、マザーボードを破壊することもなく無事に換装完了。

パーツを全て元に戻しました。配線も変更してスッキリさせてみました。

ここでファンの付け忘れに気づいたので、あわてて付け直すことにしました。

隙間が狭くて指が入らないので、奥はビニタイで固定、手前は用意されたパーツで固定しました。

実際にはケースに入れてからすぐに確認したのですが、ここでは最後に載せます。ちゃんと蓋が閉まるかどうか、予め確認してみました。

結構ギリギリで蓋を強く押すとぶつかるぐらいの隙間しか空いていませんでした。忍者3は高さが16センチですね。「KUROSUKEには16センチ」これテストに出ますよ!

というわけで、パーツが破損することもなく、生身に怪我をすることもなく無事換装が完了。回転数のボリュームがついてますが今は絞って稼働中。それでもそこそこの風量があるので、夏場は最大にでもすれば何とかなるでしょう。

でめたしでめたし。