2005年12月29日木曜日

エクセルで先頭の0(ゼロ)を消さないようにする

郵便番号とか電話番号など、先頭がゼロで始まる数字を扱う場合、事前にセルの書式を”文字列”とか”ユーザー定義”にしておかないと、エクセルが勝手に値を整数化してしまって「03→3」とか「0021→21」という具合に変換されてしまう。
これを回避する方法は、
・事前のセル書式指定(前述の通り)
・セルに値を入力する前に、「'」(シングルクォート)を入れる。 例)「'03」
・「="値"」とする 例)「="03"」
覚えておいて損は無いと思います。
それから「="値"」の方法であれば、自分が良く使う「HTMLのテーブルをエクセルで表示させる」場合でも使えます。
下記のサンプルをDLし、まずエクセルでファイルを開き、そして同時にテキストエディタ等でも開いて見比べてみてください。
Download file

mysqldumpでスキーマだけ出力する

スキーマだけ出力し、データ(insert文)は出力したくない、という場合は下記で対応可能。

mysqldump --no-data DBNAME > mysql.dump

InnoDBがDISABLEDになってしまう(InnoDB: Error: log file ./ib_logfile0 is of different size ....)

いま使っているMySQLのバージョンは5.0。InnoDBはバージョン4.0くらいからデフォルトでサポートされるようになっているので、--without-innodbのオプションでインストールしない限りは普通に使える。
が、突然InnoDBが使えなくなってしまった。
mysql> show engines;
とやってみると、InnoDBがDisabledになってる。なぜだろう。
errログを見てみると、
InnoDB: Error: log file ./ib_logfile0 is of different size 0 5242880 bytes
と書いてある。どうやら、my.cnfにあるInnoDBのファイルサイズと、実在するファイルサイズで整合性が取れなくなっているらしい。というわけで、
ib_logfile
ibdata
この2つのファイルを削除し、mysqldを再起動したら直った。

2005年12月26日月曜日

JavaScriptで、文字列を動的に変更する(innerText)

aaaa




ソース
<p id="hoge">aaaa</p>
<input type="button" onClick="hoge.innerText='bbbb';" value="文字列を変える">


こうすると、ボタンを押したら文字列「aaaa」の部分が「bbbb」に変わる。ただ、この機能はIE以外のブラウザでサポートしていなかったりするみたいなので注意が必要。

2005年12月24日土曜日

windows版MySQLで、テーブル名を大文字にするには

Windows版のMySQLは、デフォルトでテーブル名等が強制的に小文字にされてしまう。たとえば「TABLE」としたいのに、「table」になってしまうなど。
これを回避するには、my.iniの[mysqld]の項に
lower_case_table_names=0
を入れてやるだけ。MySQL再起動すれば解決です。
この値のデフォルトは、Windows では 1 で、Unix では 0 です。

2005年12月23日金曜日

MRTGを入れた

自宅サーバーに、MRTGを入れてみました。
「mrtg linux インストール」でググってみたら、なんだか面倒そう。しかしここ最近サーバーの調子が悪かったので頑張って入れてみることにした。
http://vine.1-max.net/net-snmp+MRTG.html
このサイトを参考に(というかほぼそのまんま)、インストールを進めたところ、特に何もひっかからずすんなりインストールできました。案ずるより産むがやすし。
今回は、apt-getが大活躍。net-snmp、zlib-devel、libpng-devel、gd-develなどをapt-getでインストールしましたが、とっても楽ちんでした。

MySQL : Error #1364 : Field '%s' doesn't have a default value

ローカルで開発しようと思い、Windowsにapache、php、mysql5.0を入れた。で、アプリを動かしてみたら、エラーが出る。調べてみたらSQLエラーらしい。
Error #1364 : Field '%s' doesn't have a default value
というエラーメッセージが。
insert into TABLE (aaa, bbb) values ('AAA', '');
という具合に、''で空白を挿入しようとするのがダメらしい。普段Linux上でMySQLを使ってるときはこんなエラー出たこと無いのに。。。
ググってみても、それらしきソースは見つからない。そこでmy.iniを見てみると、なんだか見慣れないオプションが設定されている。
sql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"
http://www.limy.org/program/db/mysql/mysql_option.html
↑このサイトによると、「他ベンダーのデータベースやバージョンの違うMySQLとの互換性の為に使用します。詳細は不明です。」とのこと。
とりあえずコメントアウトしてMySQL再起動してみたら、見事解決。。。
一体なんだったんだろう。よくわからないが、とりあえず良かった。

phpからMySQLへ接続するとき「Client does not support authentication protocol requested by server」というエラーが出る

Warning: mysql_connect(): Client does not support authentication protocol requested by server; consider upgrading MySQL client

こんな感じのエラーが出た場合は、

SET PASSWORD FOR root@localhost = OLD_PASSWORD('password_str');

で解決。
パスワード暗号化の互換性で起きる問題らしい。

2005年12月22日木曜日

phpのfsockopen関数でhttpsのサイトへ接続する

fsockopen関数でhttpsのサイトへ接続する場合、phpを --with-openssl のオプションをつけてコンパイルする必要がある。そうすると、phpinfo の Registered PHP Streams の項目に「https」が出てくる。
それをやらずにfsockopenでhttpsサイトにつなごうとすると、「no SSL support in this build」というエラーが出てしまう。
。。。
ウェブでいろいろ調べた結果、このことはわかったのだが、どーーーしてもうまくいかない。何度コンパイルしてもダメ。
なので、
・apacheを止める
・make distcleanする
・再コンパイル
・make&make install
これをやったらうまくいった。結局、半日くらい無駄にしてしまった。。。
phpを再コンパイルする場合は、必ずapacheは止める。更に、それでもダメな場合はいったんmake distcleanしてやる。
phpの再コンパイルで詰まったら、このことを思い出すようにしよう。。。

mysqldumpで文字コード(charset)を指定

mysqldump HOGE_DB --set-charset=ujis > HOGE.sql
という感じで、--set-charset=*** と指定してあげるだけ。

2005年12月21日水曜日

MySQL関数CASTで型変換する

select cast('-0008000' as signed);

-8000
と言う具合に変換できる。
asの後ろにつけられる引数は、以下の通り。
BINARY
CHAR
DATE
DATETIME
SIGNED (INTEGER)
TIME
UNSIGNED (INTEGER)
http://dev.mysql.com/doc/refman/4.1/ja/cast-functions.html

ImageMagickをソースからインストールする

MT用のImageMagick。何度か失敗したが、以下の手順でうまくインストールできた。
# tar zxvf ImageMagick-6.2.5.tar.gz
# cd ImageMagick-6.2.5
# env CPPFLAGS="-I/usr/local/include" LDFLAGS="-L/usr/local/lib" ./configure
# make
# make install
# cd PerlMagick
# perl Makefile.PL
# make
# make install

自分で作る blog ツール

ちょっと気になってる一冊。年末年始に読んでみようかな。

2005年12月20日火曜日

痛恨のサーバーダウン

どうも最近、自宅鯖の調子が悪い。
「うっ!httpの反応がない!」と思ったのに、ポート8080のzopeはサクサク動いてる。apacheがおかしいかな、と思ってmod_perlを外してみたりしてたら、次は家庭内のネットワークがおかしくなったりとトラブル続き。(未だに解決したかどうかすらわからない)
そして更に運の悪いことに、サーバーダウン中にクローラーが巡回していたようで、各検索エンジンの順位が下がってしまった!!
Google:3位→6位
Yahoo:10位→圏外。。
という下がりっぷり。特にYahooが圏外になったのはイタイ。。。_| ̄|○
これまで積み重ねてきたものが一瞬にして吹き飛びました。うぅ。。(;д⊂)
SEO以前に、インフラの安定が大前提ということが、身に染みて分かりました。。。

2005年12月17日土曜日

MySQLでSQL文をコメントアウトする

select
col1,
col2,
/*hoge*/
col3
from
TABLE;
という感じで、コメントアウトしたい部分を/**/で囲うとコメントアウトできる。

2005年12月15日木曜日

LinuxでUSBメモリを使う(お手軽バックアップ)

知り合いの自宅サーバーがクラッシュし、大事なデータがすべて消えて無くなったという話を聞いてからというもの、「バックアップをちゃんと取らなくちゃいけないなぁ」とずっと考えていた。

で、ある日突然「この、買ってはみたものの、ほとんど使ってないUSBメモリを使えばいいのでは?!」と思いつき、さっそく実行してみた。
「USBメモリ Linux」でググってみたら、いくつか参考になりそうなページが出てきた。それらによると、

# mkdir /mnt/usbfm
# mount -t vfat /dev/sda1 /mnt/usbfm/


すればいいとのこと。で、そのままやってみるけど、ダメ。

うーん、なんでだろ。と思いつつ、ls /mnt とやってみたら

/mnt/ClipDrive_______-sda1/

という、見慣れない名前のデバイスがマウントされてる。

/var/log/messages を見てみたら

murasaki.usb[11800]: usb device is added

というログが。なんだかよくわからないけれど、「murasaki」というのが自動でマウントしてくれた様子だ。さっそくUSBメモリにファイルの出し入れをしてみる。さすがUSB。速い。

これですべての準備は整ったので、バックアップ用のコマンドをcronに仕込む。バックアップを取るのはmysqlのdumpデータとpublic_html以下すべてをtar.gzで固めたもの。あわせて70MB弱なのでだいぶ余裕がある(使ってるUSBメモリは128MB)。cronの実行時刻は毎早朝4時にした。

。。。

翌朝起きて、USBメモリを見てみたら、バックアップファイルたちのタイムスタンプがきっちり4時になっていた。よしよし。

USBメモリでのバックアップ、かなりお手軽なのでオススメ。最悪の事態が起こったときでも大切なコンテンツは残るので、枕を高くして寝られますw。

あと、最近はGBクラスのUSBメモリも発売されてるので、画像など容量の大きいファイルのバックアップにも使えるかも。

ちなみにこの記事で使った環境は、

USBメモリ:バッファローのClipDrive 128MB
ハード:IBM NetVista M42 Slim
OS:VineLinux3.2

です。

Smarty Tips

◆ループが10,20,30,40...回目のときだけ特別な表示をする
{foreach from=$list item="list" name="hoge"}
{if $smarty.foreach.hoge.iteration % 10 == 0}
<tr>
<td colspan="3">10の倍数</td>
</tr>
{/if}
<tr>
<td>{$list.email}</td>
<td>{$list.id}</td>
<td>{$list.pass}</td>
</tr>
{/foreach}

2005年12月10日土曜日

phpで改行コードを置換する

str_replaceで置換してやるだけでできます。
CR:
LF:
/* CR+LF -> LF */
$text = str_replace("
", "
", $text);
/* CR -> LF */
$text = str_replace("
", "
", $text);
/* LF -> CR+LF */
$text = str_replace("
",'
',$text);

2005年12月8日木曜日

2005年12月7日水曜日

帰ってきた司馬遼太郎を読む(MSN)

ここしばらく、司馬遼太郎を読むがMSNで17位前後をうろうろしてたんですが、定位置の3位に帰ってきた。
しかも、ただ帰ってきただけじゃなく、「"shiba-ryo.com" から得た他の結果を表示します。」というリンクのおまけがついて帰ってきた。
帰ってきた司馬遼太郎を読む(MSN)
サイト内のインデックスされてるページをずらっと一覧表示してくれるものらしい。ページ数がある一定以上に達するとこのリンクがつく仕組みになってるのかな?

2005年12月5日月曜日

AWSが文字化け

サーバーを新調したら、MTのaws.plモジュールで文字化けするようになってしまった。ググってみたところ、どうやらPerl5.8で発生するエラーらしい。前のサーバーのPerlは古かったから大丈夫だったんだろう。
Perl5.8にはUTF-8フラグがどうのこうの、、、という問題があるみたい。なんだかめんどくさそうだったので、Perlを5.6にダウングレードして解決してしまった。
完全に枯れてると思ってたPerlも、ちょこちょこと細かい改善がされている様子。今後どんな方向に進んでいくんだろう。

2005年12月4日日曜日

自宅サーバー入れ替え完了

自宅サーバーのハード入れ替えが完了した。結構手間取るかな、と思っていたけど、これといって大きなトラブルもなく無事終了。
ちなみに Celeron 500GHz → Pen4 2.2GHz にスペックが上がったので、かなり処理が早くなりました。たとえば、MovableTypeがmod_perlなしでサクサク動くようになった、とか。そのうちメモリも増強してもうちょっとスペック上げようと思ってます。

2005年12月3日土曜日

phpでサイズの大きいファイルをアップする

phpで、ファイルをアップロードするスクリプトを書いた。
で、そのスクリプトで8.5MBのファイルをアップしようとすると途中で止まってしまってうまくいかない。
どうやら、php.iniの、
post_max_size
upload_max_filesize

が影響するようだ。
phpinfo();で見ると、デフォルトでは
post_max_size = 8M
upload_max_filesize = 2M
になってる
で、これをそれぞれ
post_max_size = 10M
upload_max_filesize = 10M
にしたら、うまくいきました。(かなり時間かかるけど)
php.ini変更したら、apacheの再起動も忘れずに。

2005年12月2日金曜日

MySQL5.0をインストール

ここからダウンロード
http://download.softagency.net/MySQL/downloads/mysql/5.0.html
解凍
# tar zxvf mysql-5.0.15.tar.gz
# cd mysql-5.0.15
configure , make , make install
# ./configure --prefix=/usr/local/mysql --with-charset=utf8
# make
# make install
※utf8しか使わないので、--with-charset=utf8にした
# ./script/mysql_install_db
# cp /usr/local/src/mysql-5.0.15/support-files/my-small.cnf /etc/my.cnf
# /usr/local/mysql/bin/mysqld_safe --user=root &
# /usr/local/mysql/bin/mysql --user=root
mysql> SHOW VARIABLES LIKE "char%";
+--------------------------+----------------------------------------+
| Variable_name | Value |
+--------------------------+----------------------------------------+
| character_set_client | latin1 |
| character_set_connection | latin1 |
| character_set_database | latin1 |
| character_set_results | latin1 |
| character_set_server | latin1 |
| character_set_system | utf8 |
| character_sets_dir | /usr/local/mysql/share/mysql/charsets/ |
+--------------------------+----------------------------------------+
 ↑--with-charsetの指定なし
mysql> SHOW VARIABLES LIKE "char%";
+--------------------------+----------------------------------------+
| Variable_name | Value |
+--------------------------+----------------------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | utf8 |
| character_set_results | utf8 |
| character_set_server | utf8 |
| character_set_system | utf8 |
| character_sets_dir | /usr/local/mysql/share/mysql/charsets/ |
+--------------------------+----------------------------------------+
これまで使っていた4.0では文字コードが統一しておらず、SJIS、EUC、UTF-8の3種類のDBが混在している。これらをすべて5.0に移行するのは大変そうな予感がしたので、SJISとEUCのデータは全部削除。ほとんど使ってないデータだったのでちょうど良かったのかも。今後扱うデータはすべてUTF-8で統一しようと思う。
4.0のデータをdumpして5.0に入れようとするが、どうもうまくいかない。
/usr/local/mysql/bin/mysql -uroot < dump.sql
みたいな感じのことをすると、unknown databaseというエラーが出てしまう。なのでDBは手動で作り、個々にDBを指定してデータを移しかえた。

2005年12月1日木曜日

自宅サーバー二代目を購入

2002年頃から使っている、初代自宅サーバーがやばい。
IBMのPC300というのの新古品をネットショッピングで購入。自分の部屋に、床にそのままおいてある。

で、その初代が大きめの地震のときに、「バタンッ」と倒れてしまった。それ以降「ウィーーーーーンッ」という、かなりアヤシイ音を発するようになった。。

うるさいし、データ吹っ飛んだら怖いし、、、というわけで二代目購入を決意。

さっそくネットで適当なのを見つけた。

購入したのはIBMのNetVista M42 Slim。中古で25,000。黒くてかっこいい。
スペックはPen4の1.9Ghz。Mem256M。メモリはPC133なのでかなり古めだが、あまってるメモリがそのまま使えるので良しとする。

今回はじめて中古PCを買ったが、けっこう汚かった。
ケースの細かいキズはしょうがないが、内部に埃がいっぱい貯まっていた。
中古屋で掃除してくれているものだと思ってたのでちょっと残念だった。

たぶん、下取りして外側だけ雑巾でふいてそのまま出荷してるものと思われる。
そう考えると中古PC販売って相当儲かりそうな気がする。

とりあえず、VineLinux3.2インストール完了。
続いてApacheやMySQL、phpなどをインストール中。
あまり時間がないので少しずつ作業を進めてまずが、なるべく早めに二代目に切り替えようと思ってます。

2005年11月30日水曜日

phpでsessionが使えない

phpinfoで見てみたら、session.save_pathが/usr/lib/php/sessionになっていた。
で、このディレクトリのパーミッションを777に変えたら、直りました。

php.iniのregister_globals

php.iniの
register_globals=Off

register_globals=On
にする。
こうしないと、フォームのname「aaa」を、そのまま「$aaa」で受け取れない。セキュリティ的にはあまり良くないらしいけど、やっぱ使い勝手がいいので便利。

mysqlの文字コード

既にバージョン5が出ているmysql。いまさらだが4.0→4.1のアップデートで、文字コード関連でいろいろ違いが出ているようだ。これまで全く知らなかったのでかなり面食らった。
参考
http://reverb.jp/vivian/index.php?itemid=497
http://bbs.fedora.jp/read.php?FID=8&TID=1909

2005年11月27日日曜日

『司馬遼太郎を読む』の順位が上がった

GoogleとYahoo!がインデックス更新をし、終わってみれば、
Google:3位
Yahoo!:10位
MSN:4位
という結果になりました。
おかげでページビューが1日あたり800~1000くらいに激増。特にYahooからのアクセスが多くなった。Googleがすごい勢いで伸びているとはいえ、やはりYahooは強い。

2005年11月23日水曜日

MySQLでTCP接続を使う

データベース「mysql」にある「user」テーブルに許可するIPやドメインを追加してやればOK。
あと、当たり前だけどファイアウォールによるアクセス制限や、mysqld起動時に--skip-networkingをしてないことが前提です。
参考
http://www.itmedia.co.jp/enterprise/articles/0508/29/news002.html
http://210.224.163.248/Manual/mysql-3.23.49/manual.ja_MySQL_Database_Administration.html#Connection_access

MySQL起動エラー「Can't find file: './mysql/host.frm」

/usr/local/mysql/bin/mysqld_safe &
を実行してもmysqldがすぐ止まってしまう。

/var/log/mysqld.log
を見たら、
Can't find file: './mysql/host.frm
というエラーが出てた。

ググってみたところ、どうやらこのエラーは権限関係が原因で起こるらしい。
で、解決方法は下記。

/usr/local/mysql/bin/mysqld_safe --user=root &

2005年10月19日水曜日

FireFoxでjavascriptのlocation.hrefが機能しない

<input type="button" value="ボタン" onClick="location.href('http://www.yahoo.co.jp')">

このボタンが、IEでは動作するけどFirefoxでは動作しなかった。
で、

<input type="button" value="ボタン" onClick="location.href='http://www.yahoo.co.jp'">

という具合にしてみたら、動いた。
以下で実際に試せます。

<input type="button" value="ボタン" onClick="location.href('http://www.yahoo.co.jp')">



<input type="button" value="ボタン" onClick="location.href='http://www.yahoo.co.jp'">

2005年10月13日木曜日

NOD32

NOD32は、キヤノンシステムソリューションズのウィルス対策ソフトです。
会社でまとめてライセンスを買って使っているのですが、以前使っていたノートンに比べて断然動きが軽いです。
ノートンやウイルスバスター、マカフィーといった既存の有名ソフトは新たなウィルスが出現するたびに定義を増やしていく、というアルゴリズムなんですが、このNOD32の場合はウイルスとして活動するプログラムの"傾向"みたいなものを押さえて検出をする仕組みになっているとか。
そのためバカデカイ定義ファイルが必要なく、動作が軽快なのだそうです。ちなみにウイルス検出率も業界No.1。まさにいいこと尽くめのウイルス対策ソフトです。

Yahoo切替効果?

10月に入ってYahoo検索が変わり、ディレクトリ結果が優先表示されなくなった。
で、その影響でkawama.jpのアクセス数が伸び、9月に比べて1.5倍くらいに増えました。
アクセス数は忍者ツールズで計測してますが、目に見えてYahooからのアクセスが増えており、間違いなくYahoo効果によるアクセス増です。
反面、司馬遼太郎を読むのほうはYahoo効果はさっぱり。kawama.jpよりこちらのほうに力を入れているので、研究してこちらも上位表示を目指そうと思います。

2005年10月1日土曜日

ThinkPadの最新機『T43p』

ThinkPadを裏切り、Let'snoteに乗り換えてから早3ヶ月。
久しぶりにIBM改めLenovoのサイトを見てみたら、以前使っていたTシリーズの最新機『T43p』というのが出ていた。
そのT43pの上位モデル、2668-Q2Jのスペックったら、もうすごいったらありゃしない。
・PentiumM 2.6Ghz
・メモリ標準1GB(最大2GB)            標準1GB!
・HDD100GB 7200rpm               7200rpm!!
・15.0V型TFT液晶 1,600x1,200ドット(UXGA)  UXGA!!!
いやはや、ものすごい。まさにモンスターマシン。
ただ、重量だけは以前のモデルからあまり変わっておらず、2.9kgと重め。ここだけはLet'snoteに軍配が上がる。
ちなみにお値段もモンスター級。持ち歩くにはちょっと重くて大きいけれど、このスペックは圧巻です。ぜひ一度触ってみたい。
ThinkPad T43P 2668-Q2J
↑楽天で31万円のを発見。お買い得かも。。?

Google1ページ目の威力

先週から今週頭にかけてGoogleでインデックス更新がありましたが、なんとその更新によって『司馬遼太郎を読む』がGoogleで10位に上がった。(もちろんキーワードは「司馬遼太郎」)
で、その影響でページビューが前週比で1.5倍くらいに増えました。10位とはいえ、Googleの1ページ目はやはり威力が違うなぁ、ということを実感した出来事でした。

2005年9月30日金曜日

Apache2で静的HTMLページが文字化け

Apache2が入ってるサーバーで静的HTMLページが文字化けする、という現象が発生。IE、FireFoxは問題ないが、OperaやMacIEなどで化けまくり。
で、ググってみたら「AddDefaultCharset」の設定で回避できるということを発見。
で、httpd.confを編集し、
AddDefaultCharset off

にしてApache再起動。。。変化無し。
で、もうちょっと調べてみたら、Apache2の場合はoffではなくnoneを使うとのこと。
AddDefaultCharset none

で再度再起動。。。直った!

2005年9月18日日曜日

スタイルシートでのFirefox対応の注意

「IEではちゃんと表示されるけど、Firefoxでは表示が崩れてしまう」
ということがよく起こります。自分の場合主にその原因は、IEとFirefoxでの「padding」の認識の違い
たとえば、こういうスタイルシートがあった場合、
hoge {
width:100px;
padding: 10px;
}
◆IEの場合→横幅は100pxとして認識しされる
◆Firefoxの場合→横幅は120px(左padding+右padding)として認識される
この違いのせいで、Firefoxでガタガタになってしまうことがよくあります。
対策は、「paddingを使わない。marginを使う」など。かなり不便だが、どうしようもない。よく注意して、あとで困らないよう先手先手で対応するよう心がけましょう。。

期限切れで失効したドメインを再取得するまで

「ドメインのレジストラを移したい。」
「でも手続きが面倒だ。」
「お、ちょうどタイミングよくドメインの有効期限が切れる。」
「じゃあこのまま有効期限切れにして、新しいレジストラで新規取得すればいいや。」
ということを思いつき、実行しました。
そして、最終的にそのドメインを新しいレジストラで新規取得できたのは約2ヵ月後でした。。
なぜ2ヶ月も時間がかかったか。それは下記のページに詳しく書かれています。
http://www.nic.ad.jp/ja/dom/gtld-policy/rgp.html
昔はドメインの有効期限が切れるとすぐに新規取得できる仕組みだったようですが、それだと
「おっと、ドメイン更新するの忘れてた、いけね。」
「うおおお、ウチのドメインがエロサイトに転送されてる!!」
ということが頻繁に発生し問題になったため、有効期限が切れてから失効するまでにかなりの猶予期間をもたせるようにしたらしいです。ちなみにドメイン保有者が猶予期間中にドメインを請戻しするにはレジストラに多額のお金を払わないといけません。なので猶予期間があるといっても基本的にはきちんと更新しないとダメってことです。
とまあこんな感じで、いろいろと勉強になりました。
結局、レジストラを移したいと思ったら普通にレジストラ移管手続きをするのが一番の早道ってことみたいです。自分のように変な考えは起こさないようにしましょう。
ちなみに無事再取得できたドメインは、『バリュードメイン』にて取得しました。
バリュードメインはまずドメイン取得費用が安く(.comで790円)、またダイナミックDNSなども無料で利用できるのでなかなか便利です。
とりあえず、時間はかかってしまいましたが無事当初の目的が遂げられてよかったです。ふぅ。。

2005年9月13日火曜日

MTのトラックバックのタイムアウトを設定する

自分のブログに来るトラックバックPINGがよくタイムアウトでエラーになってしまうので、「じゃあApacheのTimeoutを長くしてみるか」と思ってやってみたが効果なし。んで、ググってみたらmt.cfgでTimeoutの設定ができるのを知りました。
http://www.aivy.co.jp/BLOG_TEST/nagasawa/archives/000611.html
まだ実際にトラックバックしてないのでわかりませんが、たぶんうまくいってるんじゃないかと。

phpでheader関数やsetcookie関数を使うときの注意

phpでheader関数やsetcookie関数を使うとき、先にヘッダが出力されていると「Cannot modify header infomation」というエラーが出てしまいます。
header関数やsetcookie関数を使う前にechoを使ったり、<?phpの前にHTMLタグなどを入れると当然ヘッダが出力されてしまうので上記のエラーが出てしまいます。
require()でファイルを呼び出している場合も同様で、今回それでハマりました。requireするファイルのオシリが ?> の後に改行が2つ入っており、その影響でヘッダが出力されてしまっていました。かなーり見つけにくいエラーでした。。。

2005年9月5日月曜日

Amazon webサービスの勉強

この週末、Amazonウェブサービスのお勉強をしました。

勉強というよりほとんど実作業でして、これまで使っていたSOAPによるデータ取得をやめ、RESTと呼ばれる方式に変更しました。

簡単に言うと、RESTはhttpでAmazonサーバーにリクエストを送り、リクエストのパラメータに応じてXMLでデータを返してくれる、というもの。ちなみにこのREST方式は、SOAP方式の6倍も速いそうです。

さらにさらに、SOAPとRESTでは、アマゾンサーバーから返ってくる値がビミョーに違うんです。ごく一部ですが、トップセラー情報とかがSOAP方式で取得したデータとREST方式で取得したデータで違ってます。SOAPのほうが古い情報のようです。

また、Amazonは今後のWebサービスはRESTをメインで考えてるそうなので、このままSOAPを使っててもいいことは何もなさそうだ。と思ってこの週末を使ってRESTの勉強をしました。

この辺のドキュメントが役に立ちました。



今回は司馬遼太郎を読むの書籍情報をAmazonウェブサービスで表示する部分をSOAPからRESTに移行しました。

ITMediaの記事のサンプルスクリプトをベースに、他のドキュメントのパラメータ情報を参照しながら作りました。なお、ITMediaのサンプルスクリプトはphp5じゃないと動かないようです。最初php4で一生懸命動かそうとして、1時間ほど時間を無駄にしてしまいました。

とりあえず、RESTの第一歩が踏み出せたので良かったです。時間があれば勉強するところはいくらでもありそうなので、今度はブラウズノードやらキーワード検索やら、いろいろ勉強していきたいと思います。

2005年9月4日日曜日

MTをアップグレードした

アップグレードといっても3.151から3.171へのアップグレードなのでほとんど変わらないのですが、3.171で実装された確認・保存ボタンをエントリ編集画面の上と下両方に設置できるのが便利なので、ためしにアップグレードしてみました。
アップグレードは簡単。ファイルをアップして、mt-upgrade[バージョン名].cgiを実行するだけ。
唯一の注意点は、mod-perlを使っている場合、アップグレードが終わったあとにApache再起動が必要なところ。再起動しないとバージョンが古いままメモリにキャッシュされてしまうので、旧バージョンのままで動いてしまいます。

2005年9月2日金曜日

phpスクリプトに拡張子なしでアクセスするためには

やり方は2通り。

〓1.ForceType を使う〓
.htaccessを設置して、
<FilesMatch "^$">
ForceType application/x-httpd-php
</FilesMatch>

と書く。

phpファイルは、たとえば「test.php」だったら「test」にリネームする必要がある。
この方法はYomi-searchのphp版静的化関連の情報ページでよく見かけました。

〓2.Content Negotiation を使う〓
httpd.confの拡張子なしにしたいファイルがあるディレクトリに

Options MultiViews

の記述を追加する。

phpスクリプトのリネームは必要なし。
Content Negotiationのほうがお手軽ですが、レスポンスが少し悪くなるようです。

2005年8月31日水曜日

実行に時間のかかるPHPプログラムをタイムアウトさせないようにする

ループの中に、PHPのflush関数を入れればOK。かなりお手軽。

※追記
phpマニュアルによると、


いくつかのバージョンのMicrosoft Internet Explorerは、256バイトの 出力を受けてからページを表示し始めます。このため、これらのブラウ ザにページを表示させるには、フラッシュする前に余分な空白を送信す る必要があるかもしれません。



とあります。ここで少しはまってしまいました。要注意です。

2005年8月29日月曜日

これからはUTF-8だ

みんな感じていると思うけど、そう思う。
既にGoogle、MSN、amazonなどでUTF-8を使っており、UTF-8の波がどんどん押し寄せてきていますが、これに加えて10月からYahooベータ検索が正式にリリースされると三大検索エンジンすべてでUTF-8になります。
現状、JIS、SJIS、EUC、UTF-8の4つがそれぞれ普及していてすごく面倒ですが、とりあえずウェブに関してはUTF-8で統一されるといいなー、と思う今日この頃です。

2005年8月25日木曜日

コーヒー飲料、コーヒー入り清涼飲料って何だ?

アイスに続いて、コーヒー、コーヒー飲料、コーヒー入り清涼飲料もググりました。
こちらもアイスと同じように、内容量100gあたりの生豆使用量によって呼び方が変わるそうです。
コーヒー:5g以上
コーヒー飲料:2.5g以上-5g未満
コーヒー入り清涼飲料:1g以上-2.5g未満
勉強になりました。
http://jp.nescafe.com/qa/01.htm

2005年8月24日水曜日

アイスミルク、ラクトアイスって何だ?

アイスを食べるとき気になったので、ググってみたらすぐに見つかりました。
アイスクリーム:乳固形分15.0%以上 (うち乳脂肪が8.0%以上)
アイスミルク:乳固形分10.0%以上 (うち乳脂肪が3.0%以上)
ラクトアイス:乳固形分3.0%以上
とのことです。勉強になりました。
http://www.ezaki-glico.com/qa/products/icecream/answer/a01.html

2005年8月21日日曜日

SmartyでSJISのテンプレートを使う

「Smarty SJIS」でググるといくつか有益な情報が引っかかるので、それを見て簡単に対応できました。
もっとも、途中でSmartyとは1%も関係ないところでつまづいてしまって無駄に時間を使ってしまったのですが。。。
下記の例だと、plugins_dirにprefilter.pre01.phpとpostfilter.post01.phpのファイルを設置。autoload_filtersを使って自動でフィルタがかかるようにしています。
本体

require("/path/to/smarty");
$smarty = new Smarty;
$smarty->template_dir = "/path/to/template_dir";
$smarty->compile_dir = "/path/to/compile_dir";
$smarty->plugins_dir = "/path/to/plugins_dir";
$smarty->cache_dir = "/path/to/cache_dir";
$smarty->autoload_filters = array('pre' => array('pre01'), 'post' => array('post01'));
$smarty->display("/path/to/template.tpl");


prefilter.pre01.php
<?php
function smarty_prefilter_pre01($buff, &$smarty)
{
return mb_convert_encoding($buff,"EUC-JP","SJIS");
}
?>


postfilter.post01.php
<?php
function smarty_postfilter_post01($buff, &$smarty)
{
return mb_convert_encoding($buff,"SJIS","EUC-JP");
}
?>

2005年8月13日土曜日

limit,offset(Postgres)

MySQLで使うlimit句をPostgresで実現するには、limitとoffsetを組合せればOK。
◆MySQL
select * from TBL limit 5,10;
◆Postgres
select * from TBL limit 10 offset 5;
みたいな感じです。

2005年8月12日金曜日

MSNで「司馬遼太郎を読む」が2位に戻った。。

前回1位の様子
やはり2位に戻りました。予想はしてましたが、ちょっと残念。
順位チェックのアプリを自作して毎日の順位を自動計測してるんですが、結局1位だったのは7/30~8/8の10日間。できれば明智光秀と同じ11日天下が良かったなw
司馬遼太郎、無念のランクダウン

2005年8月5日金曜日

極める ! PHP

ひさしぶりに読んだ技術書。『PHPの業師になれる専門誌』という副題がついているように、PHP中上級者向けの内容です。
・テンプレートエンジンSmarty
・開発フレームワークMojavi
・path_infoを使ったSEO対策
・セキュリティ対策(SQLインジェクション対策とか)
・ライブラリ活用
などなど、実際の開発で使えそうなコンテンツが詰まっています。
特にMojaviはこれから始まる案件で使うし、プライバシーマーク取得でセキュリティの勉強もしているのでその辺がとても参考になりました。
ちなみに収録されているサンプルコードはすべて下記URLからDL可能です。
http://www.kiwameru-php.net/

2005年8月3日水曜日

Google sitemap生成ツール

Google用にsitemapを生成してくれる、Windowsアプリケーション。
Google用sitemap以外にもテキストフォーマットでの出力も選択できるので、いろいろ使えそう。
http://cowscorpion.com/WEB/SiteMapBuilder.html

2005年7月30日土曜日

コンテッサがきた

昨日、会社に高級オフィスチェア「コンテッサ」が届いた。この椅子、すごく高い。安くても10万円くらいはするシロモノです。仕事がら、一日中座りっぱなしっていうこともよくあるので、奮発して買いました。
これまでは普通の1万円~2万円くらいのオフィスチェアしか使ったことがありませんでしたがコンテッサは完全に別格。座り心地はもちろん、稼動部が多いのには驚かされた。自転車のブレーキケーブルみたいのがついてて、ボタンをぽちっと押すだけで高さとか角度とかが調節できる。
たとえるなら、普通のオフィスチェアがソフビ人形で、コンテッサは全身フル稼働の超合金ロボ、という感じです。
これがマイコンテッサの雄姿だ!
マイコンテッサの雄姿
腰が痛い人や、座り仕事が多い人におすすめです。
楽天で「コンテッサ」を探す!

WEB素材屋さん

http://www.image-seed.com/
今日一日かけてサイトをひとつ作っていたのですが、このサイトのフリーの素材が大活躍してくれました。僕自身まったくデザインセンスがないので、こういう質の高い素材が使えるのは本当に助かるのです。多謝!

MT:全カテゴリで共通のナビゲーションを表示

<MTSubCategories>の変わりに<MTTopLevelCategories>を使うだけ。意外と簡単だった。
http://hxxk.jp/2005/02/04/0232#sub-20050204-03
http://movabletype.jp/docs/mtmanual_tags.html#item_MTTopLevelCategories

MSNで「司馬遼太郎を読む」が1位になった

今日、何気なしにMSNでキーワード「司馬遼太郎」で検索したら、なんと!我が管理サイトの司馬遼太郎を読むが1位になっていた!
"司馬遼太郎" のMSN検索結果
というわけで記念スクリーンショット。
司馬遼太郎を読む、1位!
MSNサーチがリニューアルしてから2位~3位をうろちょろしていたのだが、あろうことかオフィシャルサイト司馬遼太郎記念館を抜いて1位になってしまった。ありえねー(笑
2週間くらい前にちょこっとチューニングしたのだが、それが効いたのかも。でもリンクポピュラリティはぜんぜん低いし、一体どういうアルゴリズムなのやら。
ちなみに今日現在、キーワード「司馬遼太郎」だとGoogleは18位、Yahoo!にいたっては69位。サーチエンジンごとで順位がぜんぜん違うのでかなり興味深いです。
正直、オフィシャルサイトを抜くというのは考えられないので、三日天下で終わりそうな気がします(^^;

MTで出力するHTMLファイルを「/archives/000001.html」の形式にする

MovableTypeにログイン

ウェブログの設定

設定

「以前の形式の個別アーカイブへのリンクをつかう」をチェック
以上。
これをやると「archives/000001.html」という形式でファイルが出力されるようになる。逆にやらない場合は「/archives/2005/07/****.html」の形式になる。

2005年7月29日金曜日

2005年7月28日木曜日

JavaScriptでの文字コード変換ライブラリ

Escape Codec Library: ecl.jsという、JavaScriptで文字コード変換ができるライブラリを見つけた。
とりあえず今は使う予定はないが、そのうち使うことになりそう。
http://nurucom-archives.hp.infoseek.co.jp/digital/escape-codec-library.html

2005年7月27日水曜日

mb_convert_encoding

文字コード変換を、

$title = mb_convert_encoding($title, "UTF-8", "auto");

という感じでやろうとしたが、文字化けした。phpマニュアルにもこのように載っているので問題ないはずなのに。。
ググってみたら、どうもautoは問題があるらしい。で、

http://ns1.php.gr.jp/pipermail/php-users/2004-May/022334.html

このページを参考にして、

$title = mb_convert_encoding($title, "UTF-8", "ASCII,JIS,UTF-8,EUC-JP,SJIS");

このようにしたらうまく動いた。めでたしめでたし。

サイトの色を変えた

MTのデフォルトは背景色が暗めだったので、やや明るめに変えてみた。ブログだと背景色くらいならスタイルシート一発で変えられるので楽チン。しかし今日は暑い。。

2005年7月24日日曜日

地震きた

大相撲を見ていたら、地震がきた。今住んでいるところは細長い形状のマンションで、しかも最上階の11階。なのですごくよく揺れた。
被害状況は「僕の部屋に積み上げていた司馬遼太郎の文庫本が倒れた」「このkawama.jpが入っている自宅サーバーが倒れた」などです。背の高いタンスなどは持っていないため、たいした被害はありませんでした。よかったよかった。
ゆれ用心・冷蔵庫用
ゆれ用心・冷蔵庫用

2005年7月22日金曜日

プライバシーマーク「自社」取得術を読んだ

今話題のプライバシーマークを取得することになった。ウチの会社ではセキュリティ専門家の方にコンサルティングをお願いして取得までお手伝いしていただくのですが、「まずはこの本を読んで基本的な流れを勉強してきてください」という宿題が出たので、買って読みました。
ほかのプライバシーマーク本を読んでいないので比較できないのですが、ざっくりとした流れをつかむにはいいと思います。CD-ROMにサンプルの書類も入ってるので、その気になればこの本だけで取得することも可能だと思います。もちろん、「強くて持続する意思を持ち、優れた能力を持つリーダー」「理解し、支援してくれる経営者」「取得へ向けて支援してくれるメンバー」という状況が整えられれば、の話だと思いますが。
プライバシーマークに興味がある人はまず一読してみるといいと思います。

2005年7月21日木曜日

WinSCP便利

WinSCPの最近使用頻度がすごく高い。ローカルでphpプログラムを書いてサーバーにアップして、、、という作業を何度も繰り返しているうちに、便利な機能があることを発見しました。
その機能は、WinSCPでサーバーに接続し、サーバーに置いてあるファイルをダブルクリックで開いてそのまま編集し、保存すると編集がそのまま自動でサーバー上のファイルに反映される。というもの。
普通のFTPソフトと思ってずっと使っていたのですが、偶然この機能を発見してびっくり。ローカル保存とサーバー転送の作業が不要になるので、効率がめちゃくちゃ上がりました。すごいぞWinSCP!!
http://www.tab2.jp/~winscp/

2005年7月15日金曜日

PageRank更新?

GoogleのPageRankが更新された様子。司馬遼太郎を読むはRank0からRank3に上がり、このkawama.jpはRank3からRank2に下がってしまった。
リニューアルして、ZopeからMTに変えた影響で検索エンジンのインデックス数が下がってしまったので仕方ない。これから頑張ってまたRank3に戻そう。

2005年7月12日火曜日

Smarty(PHP テンプレートエンジン)を勉強中

勉強中です。
Smarty、なかなか評判も良いようだし、楽天でも使ってるなど実績もあります。でもドキュメントは結構少ない気がします。まあしっかりとした和訳マニュアルがあるのでこれで十分と言えば十分。
http://sunset.freespace.jp/smarty/
上記和訳マニュアルの冒頭にもありますが、Smartyを一言で言うと
「SmartyはPHPのためのテンプレートエンジンです。より明確にphpのプレゼンテーションからアプリケーションの ロジックとコンテンツを分離して管理する事を容易にします。これはプログラマーとテンプレートデザイナーの役割が異なる 状況か、たいていの場合は同じ人間ではないのが最良だという事です。」
という感じです。
これだけ読むと「とってもスバラシイ」ツールのように思えますが、その他もろもろのツールと同じで結局は運用する人間次第。長短所をよく知って、その上で最適な使い方をしないと痛い目(ファイル数が激増とか。。)にあってしまうので、まずは特性をよく勉強してみます。

2005年7月7日木曜日

トラックバックスパムが来た

噂で聞いていた、トラックバックが来た。記念スクリーンショット。
trackbackspam.gif

2005年7月4日月曜日

firefox extention

Firefoxの便利なExtention。忘れないようにメモ。
Web Developer(css無効化などが便利)
http://chrispederick.com/work/firefox/webdeveloper/
googlebar(IE版とほぼ同等の機能)
http://googlebar.mozdev.org/

2005年7月3日日曜日

mysql tips(コマンド集)

---shellから------

▼DB一覧の表示
mysqlshow

▼DB内テーブルの表示
mysqlshow [dbname]

▼パスワードの変更
$ mysql -u root mysql
mysql> update user set Password=password('hissql') where user='root';

もしくは
$ mysqladmin -u root password [newpassword]


---MySQLから---

▼DB一覧の表示
show databases;

▼テーブルの表示
show tables from [dbname];

▼カラムの表示
show fields from [tablename] from [dbname];


---基本SQL文---

▼検索
select * from [tablename];
ex) mysql> select * from test_table;



▼挿入
insert into [tablename] ([Field],[Field],......) values (*,*,....);
ex) mysql> insert into test_table (hoge,moe) values (1,'aa');


▼更新
update [tablename] set [Field]='value' where [Field] = 'value';
ex) mysql> update test_table set hoge=2 where moe='aa';


▼削除
delete from [tablename] where....;
ex) mysql> delete from shintaro where hoge=1;


▼テーブル作成
create table [tablename] (field kata,field kata);
ex) mysql> create table test_table (num int(2),moji char(2));


▼行の数を知る
mysql> select count(*) from [tablename];


---定義SQL文---

▼テーブル名変更
alter table OLDTBLNAME rename to NEWTBLNAME;

▼カラム追加
alter table TBLNAME add column (COLNAME DATATYPE);

▼カラム削除
alter table TBLNAME drop column COLNAME;

▼インデックス追加
alter table TBLNAME add index IDXNAME (IDXCOLUMN);

---権限SQL文---

▼権限付与
mysql> grant all privileges on *.* to mysql@localhost identified by 'yoursql' with grant option;
mysql> grant all privileges on *.* to mysql@"%" identified by 'yoursql' with grant option;


▼完全なMYSQLスーパーユーザーを作る
mysql> GRANT ALL PRIVILEGES ON *.* TO [username]@localhost IDENTIFIED BY '[password]' WITH GRANT OPTION;
mysql> GRANT ALL PRIVILEGES ON *.* TO [username]@"%" IDENTIFIED BY '[password]' WITH GRANT OPTION;




---その他---

▼DBの選択
mysql>use DBNAME;

▼DB作成
mysql>create database DBNAME;

▼DB削除
mysql>drop database DBNAME;

▼外部SQLファイルの実行
$ mysql DATABASE_NAME < temp.sql
(これでtemp.sqlに格納されているSQL文が実行される。)

▼ファイルへのエクスポート(実行結果を外部ファイルへ出力)
$ mysql test > out.txt
mysql> select * from test_table;
mysql> quit

(out.txtにselect文の実行結果が返ってくる。)

▼mysqldump(dumpファイル出力)
/usr/local/mysql/bin/mysqldump --all-databases > /path/to/backup_dir/dump.dat -u root --password=[password]

▼ファイルからインポート
mysql> load data local infile "hoge.csv" into table TABLE_NAME;
(※標準はタブ区切り。もしカンマ区切りのCSVファイルをインポートしたい場合は、最後に「fields terminated by ','」と付け加える。)

▼ファイルからインポート(その2)
最新のMySQLではload data....の文は使えなくなった様子なので、mysqlimportを使ったインポートをします。
mysqlimport --local --fields-terminated-by=',' DBNAME /FULL/PATH/TABLENAME.txt
--localがないとエラーになってしまうので必ずつけましょう。

▼ファイルからインポート(その3)
mysql -u root --password=[password] TARGET_DB < batch_sql.txt


▼SQLログの記録
mysqld_safe --log &
で起動すれば実行したSQLのログを記録してくれる。ログの出力場所は/usr/local/var。(たぶん環境によって異なります)
ウェブアプリのデバッグなどに便利です。

▼一括置換
update TABLE set column = replace(column, "置換前ワード", "置換後ワード");

▼今日の日付と月、前の月をまとめてゲット
select
DATE_FORMAT(current_date, '%Y/%m/%d') as today,
DATE_FORMAT(current_date, '%Y/%m') as this_month,
DATE_FORMAT(DATE_ADD(current_date, INTERVAL -1 MONTH), '%Y/%m') as before_month;



---チューニング関連---

▼ステータスの確認
# mysqladmin status
# mysqladmin variables


▼データファイルの検査
# myisamchk /usr/local/var/DBNAME/TBLNAME.MYI
※「・・・is usable but should be fixed」と出たら修復の必要がある。
# myisamchk -d /usr/local/var/DBNAME/TBLNAME.MYI

▼データファイルの修復
#myisamchk -r /usr/local/var/DBNAME/TBLNAME.MYI
#myisamchk -o /usr/local/var/DBNAME/TBLNAME.MYI

ヘルプによると、-rはrecoverで、-oはold recoverらしい。念のため両方やっておいたほうがよさそう。

2005年6月28日火曜日

ThinkpadからLet's note Y4に乗り換え

買っちゃいました。Let's note Y4。長年Thinkpad党でしたが、とうとう裏切りました(笑
Thinkpad、レノボになっちゃったし、何よりもLet's noteの軽さが衝撃的だったので乗り換えました。
まだ買って2日くらいしか経ってませんが、元Thinkpadユーザーの視点から見たLet's noteの良いところと悪いところをまとめてみました。購入を検討してる方は参考にどうぞ。
良いところ
◆軽い!
軽い、とにかく軽い。Let's note Y4に相当するThinkpadはTシリーズになると思いますが、Tシリーズはだいたい2.2kg程度。Y4は1.5kgなので約700g軽いのですが、持ってみると違いは歴然です。
◆ACアダプタが小さい
かなり小さいです。やはり軽量化、小型化は日本製造業の十八番。ThinkpadのACアダプタも昔に比べるとだいぶ小さくなりましたが、Let's noteのACアダプタと比較するとまだぜんぜんでかいです。
◆Windowsキーがある
Windows+D(全ウィンドウ最小化)をよく使うので、重宝してます。ThinkpadはWindowsキーがないので以前からちょっと不満を感じてました。
悪いところ
◆タッチパッドが使いにくい
Thinkpadのトラックポイントに慣れきっているので、タッチパッドはかなり使いにくいです。どうしてもクセでキーボードのGとHの間に人差し指を出してしまいます(笑。あとY4はキーボードからタッチパッドまで若干距離があるので、両手をホームポジションに置いて親指でタッチパッド操作をしようとすると親指がつりそうになります。。
ここはぜひ改善してほしいです。もしくは昔みたいにトラックボール復活してくれないだろうか。。
◆キーボードがいまいち
Thinkpadに慣れているせいか、キーボードはちょっとぺこぺこしているというか、打ち応えがないというか、ちょっと物足りなさを感じます。
とまあ、だいたいこんなところです。
やはり軽さと小ささは日本人の、特にビジネスユーザーのココロを捉える、重要な要素だと思います。さすが世界の松下。どんどん改良を重ねて、日本を代表するノートPCになってもらいたいです。
ちなみに今回は楽天のベスト電器新宿店ネットショップで購入しました。送料込、カード決済OKです。
パナソニックノートパソコン「Let's note Y4」CF-Y4GW8AXR
パナソニックノートパソコン「Let's note Y4」CF-Y4GW8AXR
税込234,000円(送料込)

ついでに512Mの増設メモリも楽天で購入。こちらはcatworksで買いました。
【税込です!カードOK】 アドテック品番 ADF3200M-512

2005年6月20日月曜日

Panasonic Let's note Y4

友人が購入したのを見せてもらったのですが、とにかく軽い。14.1液晶で解像度は1400×1050。DVD-RAMドライブ内臓、バッテリーは7時間。それでいて重量はたったの1.5kg。今自分が使っているThinkpadとほぼ同スペックですが重量は軽く2kgを超えているので、この軽さは驚異的。欲しい。けどお金ない。。
もともと自分は熱烈なIBM Thinkpadファンなのですが、もはやレノボになってしまったので未練はありません。しばらくガマンして、次の買い替えではLet's noteにしようと思っています。
楽天で購入
【即納可能】 パナソニック Let's note Y4 CF-Y4GW8AXR
Let's note Y4 CF-Y4GW8AXR 217,000円(税別)
オフィシャルサイト
http://panasonic.jp/pc/products/y4g/index.html

2005年6月18日土曜日

エクセルで色のついたセルを調べる

列Aに無色のセルと色がついたセルが混在していると仮定した場合。
1.メニューから、挿入→名前→定義。
2.名前のところに「iro」(なんでもOK)と記入して追加。追加された「iro」を選択して参照範囲のところに「=GET.CELL(38,!A1)」を記入。
3.B1のセルに=iroと入力し、コピー。
4.B1のセルを調べたい範囲までコピーする。
5.B1のセルに結果が色番号で表示されるので確認。(無色の場合は0)

2005年6月14日火曜日

php tips

関数やテクニックを新しく知ったら、随時追加していきます。
〓文字列処理系〓
◆URLエンコード
rawurlencode($str)
◆改行を<br>に変換
nl2br($str)
◆htmlタグを変換
htmlspecialchars($str, ENT_QUOTES)
◆文字列をスラッシュでクォートする
AddSlashes($str)
◆addslashesでクォートされた文字列のクォート部分を取り除く
StripSlashes($str)
◆指定数分の文字列を切り出す(マルチバイト)
mb_substr($str, 0, 6, "SJIS")
◆半角数字チェック
if(!ctype_digit($str){ echo "半角数字じゃないです!"; }
◆文字列を指定の桁数にする
str_pad($str, 6, "0", STR_PAD_LEFT);
http://php.s3.to/man/function.str-pad.html
◆文字列を指定の長さにする
mb_strimwidth($str, 0, 40);
http://manual.xwd.jp/function.mb-strimwidth.html
◆正規表現でURLを抜き出して、URLをエンコードしたものと置換する
echo preg_replace_callback(
"/(https?|ftp)(://)([^[:blank:]/?+$;%,!#~*:@&=_][[:alnum:]-.]+)([[:alnum:]+$;?.%,!#~*/:@&=_-]+)?/",
"return_enc",
$str);
function return_enc($matches)
{
return urlencode($matches[0]);
}
http://php.s3.to/man/function.preg-replace-callback.html
http://www.gac.jp/article/index.php?stats=question&category=11&id=14551&command=msg
◆正規表現:「A~Z」「0~9」「-」「/」「 」「.」「,」にマッチ
/^[A-Z0-9-/ .,]+$/
〓mysql系〓
◆SQL実行結果から件数を取得
mysql_num_rows($res)
◆select文の結果を連想配列に入れる
mysql_fetch_array($res)
例:
if(!($res = mysql_query("SELECT * FROM table"))){ die; }
while($row = mysql_fetch_array($res))
{
echo $row[id] . "
"
. $row[name] . "
"
. $row[address];
}
〓その他〓
◆リダイレクト
header("Location: $PATH_TO_URI");
◆連想配列に値を追加
その1
$arr[$a] = $b;
その2
$arr = array();
$arr += array("a" => "b");
$arr += array("c" => "d");
〓よく間違える〓
◆ループの処理をスキップして次へ
continue
※nextと書いてしまいがち
◆ループを抜ける
break
※lastと書いてしまいがち

2005年6月1日水曜日

Windowsのhostsで名前解決

仕事で使うサーバーのDNSがトラブってしまい、名前解決ができなくなってしまい、仕方ないのでWindowsクライアント機側で名前解決の設定をすることになりました。
C:\WINDOWS\system32\drivers\etc
をエディタで開き、「IPアドレス ドメイン名」で行を追加すればOK。
このファイル、Linux系の/etc/hostsと設定方法や働きが全く同じです。あくまで一時的な設定ですが、助かりました。

Yahoo! searchに登録

AltaVistaにサイト登録したいと思って調べてみたら、まず米国のYahoo!に登録してアカウントを作っておかないといけないとのこと。さっそく米Yahoo!にアカウント登録するためにフォームに必要事項を記入したのですが、、
Unable to process request at this time -- error 999
という訳の分からないエラーが出て失敗してしまう。googleで調べても出てくるのは英語の検索結果ばかり。さらに家がダメなら会社で、と思って会社のPCから試してみたがやっぱりダメ。困った、万策尽きたか。。。
そのままあきらめていたのですが、その翌日ふと「米国のzipコードで登録したらどうだろう」と思って、やってみたら、、、見事に通りました!zipコードのところ、なんとなくアヤシイと思っていたのですが、予感的中でした。
ちなみに使ったzipコードは「94304-1112」。googleで調べて拾ってきたので場所がどこなのかは全くわかりません。同様の現象でお困りの方がいたら(いるのか?)試してみてください。

2005年5月31日火曜日

システム哲学

哲学なんて書くとちょっとおおげさですが、これまでの実務経験で培った自分のシステムに関する考えをメモしてみます。自分に対する戒めでもあります。

1.目的を明確にし、見失わない
システムの構築や導入は本来ビジネスや業務を加速させるものですが、時間が経つにつれていつのまにか「システムを構築・導入すること」が目的になってしまうことが非常に多い。コンピューターシステムはあくまでも"手段"なので、本来の目的を見失わないよう常に心がける。
ちなみに、システムインテグレーターなど、システムを作ることが目的の場合はこれはあてはまらないと思います。

2.なるべく既製品(パッケージ)や枯れた技術を使う
安定稼動が保証されている既製品を、フルに活用するのがベスト。
既製品をそのまま使う > 既製品をカスタマイズ > スクラッチで作る
の順番で、どんどん構築、導入、運用におけるコストがかさんでしまうから(金銭コストだけでなく人的コスト、時間的コストも含む)。スクラッチで作るのは楽しいが、ただの自慰行為になるケースが非常に多いので、誘惑に負けないよう頑張る。
また本質に影響を及ぼさないのであれば、システムにあわせてビジネスや業務を多少変えてもいいと思う。(判断が難しいが)
そして、行き詰ったらとにかく知恵を絞る。必死で考えればたいていの場合活路は開ける。
それから「枯れた」=「広く普及している&ドキュメントが多い」を意味します。例えばApacheとかPerlとかPHPとか。最新技術はよほどシステムに自信がある人、会社以外は使わないほうが良い。下手に手を出すと火傷してしまうので。

3.シンプルにする
理想に燃えてすんごいシステムを作ってはみたが、結局仕様変更やら業務内容変更、担当者の退職などにより、どうにもコントロールできない、フランケンシュタインのようなシステムを作ってしまうことがよくあります。
なので、最初のうちは汎用性や利便性はあまり考えず、目的を達成することのみに的を絞ってシンプルなシステムを作るのがベスト。「リレーションは一個まで」とか「半年間は小手先の対応でうまくやりくりする」など、ある程度決め事を作っておくといいと思う。

2005年5月17日火曜日

process_tags導入

エントリー内でamazonウェブサービスを使うプラグイン、process_tagsを導入しました。
プラグインの導入自体は先人たちのサイトを見てあっさり終わりました。
http://yangyang.ddo.jp/~yggdrasill/arc/2004/0808040152.html
http://606.ciao.jp/blog/archives/000033.php
http://gunpla.info/archives/200402/amazonplugin.php
ただ、エントリ投稿画面でprocess_tagの塊をワンクリックで挿入するボタンだけがうまく作れませんでした。先人たちのサイトによると「378行目の後ろにこのタグを。。。」などと書いてあるのですが、自分のMTではその付近にタグを入れてもとんちんかんな場所にボタンが出てきてしまいます。
MTのバージョンが違うのだろう、と考え、潔くあきらめて自分で作ってみることにしました。そしたらあっさり成功。やってみるもんです。ちなみに自分のMTのバージョンはVersion 3.151-jaです。
1./mt/tmpl/cms/edit_entry.plの冒頭のJavaScript定義部分に下記を追加

function insertAmazon (e)
{
if (!canFormat) return;
var str = getSelection(e);
if (!str) return;
setSelection(e, '<MTAws dev_token="1P7TAFJJMQB6JN178KR2" associate_id="myhp-22" search="AsinSearch" query="' + str + '"><a href="<$MTAwsurl$>" target="_blank"><img src="<$MTAwsImageUrlMedium$>" align="left" hspace="10" border="0"><$MTAwsProductName$></a> <br /><$MTAwsAuthors$> <br /><$MTAwsManufacturer$> <br /><$MTAwsListPrice$> <br clear="all" /></MTAws>');
return false;
}

2.同じく/mt/tmpl/cms/edit_entry.plの200行目付近、「write('<a title="<MT_TRANS phrase="***">
」というのが並んでいるところのおしりに下記を追加

write('<a title="amazon" href="#" onclick="return insertAmazon(document.entry_form.text)">amazon</a>');

/mt/mt.jsに入っているfunction formatStrを拝借し、そのまま使いました。

2005年5月16日月曜日

WN-AG/Cのファームウェアアップデート

自宅で使っているIO-DATAのイーサネットコンバーターのファームウェアをアップデート。
これは無線LANをイーサネットに変換する機器で、主にPS2とかHDDレコーダーなどLANポートはネットワーク対応家電を無線化などをしたい場合に使います。他社の同様の製品はポートが1個しかないのに対し、この製品はポートが3個ついているというスグレモノです。kawama.jpのサーバーもこの機器を経由してインターネットに繋がっています。
最近接続が落ちてしまうことが何度かあったので困っていたのですが、IO-DATAのサイトに行ってみたら最新のファームウェアがリリースされており、
・無線接続が切れた後、特定の環境のにおいて自動再接続ができない場合がある問題を修正しました。
という説明もあったので即ファームウェアアップデートしました。今後はこうした症状も改善されると思います。

2005年5月8日日曜日

phpMyAdmin

MovableTypeでMySQLを使っているので、DB管理用にphpMyAdminをインストールしてみました。
「すっごい便利」という噂を以前から聞いていたのですが、実際使ってみて噂が本当だったことを実感。DB管理はもちろん、php+MySQLのアプリケーション開発の支援機能なども充実していており、それらがすべてGUIで使えるのは本当に便利です。オープンソースの力を改めて思い知りました。
phpMyAdmin

2005年4月30日土曜日

MovableTypeに変えました

kawama.jpの更新ツールを、ZopeからMovableTypeに変えました。
司馬遼太郎を読むでMTを使うようになり、ZopeとMTの2つのツールでサイトを運用するのが面倒になってきたので、kawama.jpもMTに乗り変えました。時間がないのでレイアウトや設定などほとんどデフォルトのままですが、スタイルシートの勉強がてらちょっとずつリニューアルしていこうと思います。
なお旧kawama.jpはポート8080でそのまま残してあるので、こちらもご覧ください。
旧kawama.jp