2007年4月アーカイブ

 プレミアム以上のプランを5月9日より提供開始するそうです。
プレミアムでも3GBあって相当コンテンツ中心でもなければ埋まらないのに20GBか…。容量的には申し分ないので独自プログラムをインストールする必要がないなら専用サーバを借りるより安くあがるということかな。

さくらのレンタルサーバ・ビジネス」プロ提供開始のお知らせ
http://www.sakura.ad.jp/news/archives/20070424-001.news

 メルマガを久しく発行してなくて強制退場されかけていました。本来ならMMO開発の進捗にあわせてTips感覚で発行続けようとしていましたが肝心のプロジェクトに手を付けられず周辺の作業ばかりでネタの作成ができていませんでした。今回は期限もあったのでかなり意識して作成しました。

本日発行したメルマガで書いたプログラムはここからダウンロードできます。
ソースファイル(ZIP形式)

 これはver3のころよくやっていた方法ですがここ数年ずっと使用してなくて思い出すように検索してました。一応健忘録。

以下は全フィールドでのインポート・エクスポートに難がある場合に使用します。
※主キーが内容に特別意味を持たないauto_incrementの場合等、インポート時にキー重複でエラーになると困るもの。

CSVにおいてもエクスポート・インポート共にフィールド指定。

【エクスポート】
mysql> select text,cre_date into outfile '/tmp/db.tsv' lines terminated
by '\n' from csvtest;
Query OK, 24 rows affected (0.00 sec)

【インポート】
mysql> load data infile '/tmp/db.tsv' into table csvtest lines
terminated by '\n' (text,cre_date);
Query OK, 24 rows affected (0.00 sec)
Records: 24 Deleted: 0 Skipped: 0 Warnings: 0

但しtimestampのフィールドは00000000000000になったので無視できないですね。

 MySQLだけでは操作がしんどいのでphpMyAdmin使うためにApacheとPHPをソースから入れてみました。デスクトップ環境は全てパッケージ任せですが、ローカルでテスト稼動環境作るのには公開用と同じくソースから入れているのですが、Apacheを起動しようとしたときに、

# /usr/local/apache/bin/apachectl start
httpd: Syntax error on line 53 of /usr/local/apache/conf/httpd.conf: Cannot load /usr/local/apache/modules/libphp5.so into server: /usr/local/apache/modules/libphp5.so: cannot restore segment prot after reloc: Permission denied

こんなエラー出るんですね。文法エラー?でconfigtestしても同じ表示だし意味不明だったのでネットで検索したらSELinuxのセキュリティーが絡んでて、自前で入れたsoライブラリが使えないように制限しているらしい。詳しいことは良く分からないので下部の参考サイトで、

結果として次のコマンドを実行することでlibphp5.soがロードできるようになりました。
# chcon -c -v -R -u system_u -r object_r -t textrel_shlib_t /usr/local/apache/modules/libphp5.so

参考:
cannot restore segment prot after reloc Permission denied - Linuxシステム設定
http://ppwww.phys.sci.kobe-u.ac.jp/~akusumoto/linux/detail.php?d=config/selinux/chcon

Fedora JP 掲示板
http://bbs.fedora.jp/read.php?FID=9&TID=3278
http://bbs.fedora.jp/read.php?FID=10&TID=4759

Cannot restore segment prot after reloc Permission deniedというエラーメッセージが表示されたら,どうしたらよいのですか.
http://support.wolfram.com/mathematica/systems/linux/general/selinux.ja.html

 さすがに16進なら大丈夫だろうと思っていたら、他のサーバへデータを移動する為にインポートしようとしたら

ERROR 1054 at line 98603: Unknown column '0x' in 'field list'

このようにエラーを吐いて処理が止まった。
結局どんな吐き出し方をしたのだろうと確認すると、元のDBでは空文字(NULLでは無い)状態になっている文字列フィールドでダンプ時に0xのみ出力されていました。

NULLであれば
VALUES(NULL,NULL,NULL);
という感じになるところが空文字だと
VALUES(0x,0x,0x);
となっていました。終端文字を吐き出さない仕様だからこうなるのでしょうが、同じバージョンのMySQLならインポートも対応しろよって思いました。

結局空文字はNULLでも良かったのでテキストエディタで置換してインポート終了しました。どうしても空文字で入れたいのであれば0xを''に置換してもいいですね。

使用したバージョン:4.0.26

 ロブロブログで新プロジェクトのキャラが公開されていました。
今度はカワイイ系のキャラ作りのようです。

似顔絵的に変化させてキャラメイクできるようになるハズです。

この辺から顔は設定の自由度が高そうですね♪

ロブロブログ 開発中...
http://robrob.sblo.jp/article/3820804.html

 一度ノートPCの電源を切って、PCMCIAとCFスロットそれぞれにフラッシュメモリを挿してfedoraを起動したら認識されるようになり、ホットプラグインもオートマウントもできるようになりました。
 多分、自動で何かやってくれたのだろう…ぐらいでスッキリはしませんがクライアントとして利用しているのでこれで解決とします。

 あとはIEEE1394が動くかどうかかな?赤外線は面白い用途でもあれば考えます。なぜかBlueToothのサービスが起動されているけどこのモデル(ThinkPad X24)ってそんなのあったかなー?(無線LAN改造したので後から入ったのかもしれないけど…)

 rpmだとこのバージョンは見つからないかもしれないし、とりあえずローカルでテスト環境作成のため既存システムと同じMySQLを入れようとしたら、configureでLinuxスレッドがどうとかでエラー発生。簡単にはいかないようだ。

解決したインストール方法はこちら

# ./configure \
--prefix=/usr/local/mysql \
--with-charset=ujis \
--with-extra-charsets=all \
--with-mysqld-user=mysql \
--with-named-thread-libs="-lpthread"

※FedoraCore6では--with-named-thread-libs="-lpthread"が必要

このままではmakeでエラー停止するのでsql_class.cc の編集をする。
mysql-4.0.26/sql/sql_class.cc 内の
#include <assert.h>の下に3行追記

#ifdef PTHREAD_ADAPTIVE_MUTEX_INITIALIZER_NP
pthread_mutexattr_t my_fast_mutexattr;
#endif

参考:Fedora JP 掲示板
http://bbs.fedora.jp/read.php?FID=9&TID=3606

# make
# make install

# chown -R mysql:mysql /usr/local/mysql
# /usr/local/mysql/bin/mysql_install_db --user=mysql
# /usr/local/mysql/bin/mysqld_safe --user=mysql &
# /usr/local/mysql/bin/mysql test

DBの初期化ができないときはhostsがIPv6のみしか設定されてない場合があるので
/etc/hostsに
127.0.0.1 localhost.localdomain localhost
が定義されているか確認する。

参考:にたまごほうれん草
http://d.hatena.ne.jp/emergent/searchdiary?word=*%5BMySQL%5D

公式で4.0の配布終わってるし、新規で作成するときはver5以降を利用したほうがいいですね。

 berylも半透明キューブ&背景の合成までできたし、設定は一段落かな。まだ残っている項目はPCMCIAとIEEE1394そしてXMMS。1394は4pin〜4pinケーブルがないのでビデオカメラとの接続は後回し、PCMCIAはどうも認識されていないので後々のことも考えて早めに対応が必要。XMMSはSHOUTCASTが聞けなくてどうすれば良いのだ状態です。




 下記サイトを参考にberylを入れてみました。最初マネージャを起動しようとするとデスクトップがシャットダウンされていたので流石に5年落ちノートPCじゃ無理かと思ってたら、ディスプレイの設定で色数を落とすことで動作しました。

参考1:Fedora Core 6で3D GUI環境Berylを使うには - @IT
http://www.atmarkit.co.jp/flinux/rensai/linuxtips/965beryl.html

参考2:Fedora JP 掲示板
http://bbs.fedora.jp/read.php?FID=10&TID=4670

参考2のモデルとビデオスペックが近いのですがX24の場合は色の深さを「数千の色」に落とすだけでいけました。

 早速、FLASH対応をさせるべく、Adobeのページに行きましたが何故かrpmパッケージがダウンロードできなかったので他の方法を探していたら、下記参考サイトの方法で一発成功。

参考:FedoraにFlashを... [trial and error]
http://techno-st.net/2006/08/fedoraflash.html

http://macromedia.mplug.org/macromedia-i386.repo
をダウンロードし/etc/yum.repos.d/ にコピーする。

下記コマンドでインストール
# yum install flash-plugin

出てくる質問2~3つあったかな?には全てy(YES)で。
バージョン9の為かYOUTUBEも問題なく再生できる。
んでshockwave.comでzookeerやってみたら普通に遊べるし、一気にブラウザが快適になった。

 FreeBSDでデスクトップ構築は進まないし、FLASHプレーヤがバイナリレベルで未対応とか、UNIXプログラミングでもマルチスレッドするならLinux系の環境も欲しいなぁということで、X24はFreeBSDからfedoraに乗り換えました。常時接続のサーバではないし持ち歩くので利便性重視です。

 FreeBSDの時もそうでしたが、X24はCDドライブもFDDも無いのでUSBブートで入れます。FreeBSDの時は他に稼動しているサーバがあるのでUSB起動ドライブを作れましたが、fedoraの場合、既に使用しているマシンが無いためWindowsから作る必要がありました。

 それで、方法は無いのかなとググってたら、以下の記事を見つけました。

USBフラッシュメモリでFedora Core 6をインストールするには - @IT
http://www.atmarkit.co.jp/flinux/rensai/linuxtips/953usbinst.html

Linuxの起動イメージファイルをWindowsで展開するには - @IT
http://www.atmarkit.co.jp/flinux/rensai/linuxtips/954linuximgwin.html

@IT:CD-Rを焼かずにFedora Core 4をインストールするには
http://www.atmarkit.co.jp/flinux/rensai/linuxtips/752instfc4.html

これでOKっと思ったら昨日一晩掛かって徹夜になってしまった。。。。

まずUSBから起動するので当然BIOS上でUSBの優先度を上げます。

インストーラが立ち上がるとなぜかUSBドライブもインストール対象に含まれています。

USBドライブに対し無視の選択をしてもMBR諸々入れようとしますので、ここでハードディスクの順序を入れ替えます。1./dev/sda(USB)→2./dev/hda(HDD)となっているのを逆にする。

これでブート関係は正しくHDDにインストールされます。

これを見逃したためにインストール終了後、ブートローダが無いと怒られ、修復インストールしてもブートの設定に失敗。さらにレスキューすると/bootが無いとか悲惨な状態になってました。

さて、使用感ですが断然良いですね。予想以上です。日本語はいきなり打てるしキーボード操作もWindows互換性高いし、OpenOfficeが普通に使えるし。FLASHプラグインは入ってなかったけどサポートOSなんで後から簡単に入るはず。数年間RedHat系デスクトップは使用してなかったけどここまで来ているとは思わなかった。ただリソースの消費は激しいのでサーバ向きではないなw

無料ケータイサイト等では空メールを送信することで利用登録するシステムがありますが、簡単に実装するとしたらこんな例があります。

1.空メールを送信。
 ↓
2.メールサーバのalias若しくはforwardでスクリプトに転送。
 ↓
3.スクリプトはメールのヘッダを解析し、登録完了メール返信及びDB登録を行う。
 ↓
4.登録完了メールのURLからアクセスすると送られたIDの認証を行い案内する。

と、こんな感じです。

メールサーバをqmail、スクリプトをPHPとしてこんなサンプルを作ってみました。

1と4は同じPHPページml.phpを使用し、IDがない場合は空メール送信の案内。IDで認証できた場合はコンテンツを表示。
3は登録用スクリプトとしてmlreg.phpを使用。メールサーバからのみ起動される。

ml.php のサンプル

mlreg.php のサンプル

mlreg.phpのサンプル中にあるFrom抽出は完全ではありませんが、メールの規格は実質無法地帯な状態できりがないのである程度対応できるレベルに留めておきます。

そしてqmailのaliasを使う場合
# cat /var/qmail/alias/.qmail-regist
| /usr/local/apache/htdocs/mlreg.php

このように転送先にスクリプトを設定します。
別に登録用PHPはウェブからアクセスする必要がないのでこの場所は不適切ですが…。

【2007/08/27 19:40追記】
上記プログラムはあくまで動作確認用でセキュリティに関しては一切考慮に入れておりません。
まさかそのまま使う人はいないだろうと思っているので注意事項も書かず放置しておりましたが、はてなブックマークからリンクされているのに気づき自分の愚かさと恥ずかしさで申し訳ない気持ちでいっぱいです。今後もセキュリティに関するサンプル以外はセキュリティ対策コードを含めることは少ないと思いますが、必ずどこが危険かは併記したいとおもいます。

因みに上記のプログラム内では、
ml.txt 6行目:
直接MySQLにGET引数を渡している事、これはセミコロンを挟んで閲覧者が任意のSQL文を実行できます(SQLインジェクション)。外部から取り込むパラメータには必ず内容のチェックを入れます。
ml.txt 9行目:
逆にDBから取り出したデータをそのまま表示するのも推奨できません。出力する書式に合わせて内容のチェックを行います。
ml.txt 12行目:
exsample・・・orz typoです。しかも実在するドメインですね。exsampleの方申し訳ありません。
ml.txt 16行目以降:
とりあえず表示されれば良いレベルで書いているので実際はちゃんとしたHTML書くなりしてください。
mlreg.txt 12~14行目:
ここはあまり参考にならないと思います。ヘッダー内にFromが2箇所あったりしても最初のFromを拾いますし、この部分については他所で良いライブラリが公開されています。
mlreg.txt 16~17行目:
コピペかすです… このコードはメールアラートに使っているものの流用です。その上変数名の変換忘れ
orz
mlreg.txt 22行目:
ここも$toまで用意して何故か$from[0]にしている…。どっちもどっちですが。
mlreg.txt 23~30行目:
これはauto_incrementで得たidをそのままアカウントに使用することに問題があります。つまり他の数字を使ってアクセスしたら他人の情報が表示されるという罠です。ここは連続性のないユニークIDを作成して発行するなりの工夫が必要です。(セッションハイジャックというのも厚かましいセキュリティホール)
mlreg.txt 35行目:
これも$titleではなく$subjectです。また元の文字コードを考慮していないので文字の組み合わせが悪いと誤認識するかも。実際にローカルで動作確認した時は日本語すら使ってなかったのでこのコードは跡付けです。
mlreg.txt 40行目:
ここもtypoです。

この度は大変お騒がせしました。直ぐに無意味なコードとtypoを修正したサンプルをアップします

【2007/09/23 02:20追記】
うわぁ…修正ファイルのアップを忘れてました…。一ヶ月近く経ってる。
とりあえず上記のとおりtypoと無意味なコードを省いたもので更新しています。セキュリティはまったく考慮していないので、使用するときは変数無害化とアクセス制限を追加してください。

メールサーバ上でのメール受信をトリガーとしてメールの内容を処理に使用するデータとして取り出すまでがエントリーの趣旨だったのでそれ以降の処理は端折っています。

 超サプライズ!まさかIPAでやるとは思わなかった。
未踏ソフトウェア創造事業に採択おめでとうございます。!
これで完全に本気モードですね。楽しみにしていますがんばってください!

プロジェクト名からどれなのかなんとなく分かります^^

ロブロブログ
http://robrob.sblo.jp/

IPA:未踏ソフトウェア創造事業:2007年第Ⅰ期未踏ソフト 公募結果
http://www.ipa.go.jp/jinzai/esp/2007mito1/koubokekka.html

 15日、三重で発生した三重県中部地震で亀山市も範囲に入っていると聞いて心配しましたが、シャープ亀山工場は殆ど被害なく無事のようです。

三重県中部地震に関するお知らせ :シャープ
http://www.sharp.co.jp/corporate/news/070416-a.html

国際競争のある産業は天災リスクも将来に大きく影響するからこわいですね。

今日はお休み…試験も

| コメント(0) このエントリーを含むはてなブックマーク

 昨日から風邪で非常に調子悪い。。。つか今日は情報処理技術者試験だった。
寝込んだまま時間が過ぎて受験逃してしまった。orz

また来年ですね。。

Felica認証ってどうだろう

| コメント(0) このエントリーを含むはてなブックマーク

 そのうち、電子納税とかで使うことになるFelica認証ですが、正直一般的に使うにはどれくらい快適だろうとソフトのバージョンアップして「かんたん登録2」を導入。

 結論から言うと設定情報がPC側に保存されるようで情報の持ち歩きはできませんでした。
XiaoCLEFだと時々Windowsが再起動する事故に遭うし…。なにか微妙な状況がつづく。

 方法は全く同じなのですが下記のように公開鍵を追加してあげるだけ、今回の場合一部アカウントでログイン自体したことが無いものは.sshディレクトリさえなかったのでディレクトリ作成の必要はありました。

> cat id_dsa.pub >> ~/.ssh/authorized_keys

これは緊急時にどのネットからもアクセスできるようにしたいと思っているのですが、FW外すとなるとクライアント認証一本にしないと心配ですね…。

関連:SSHのクライアント認証

 先日は--enable-zend-multibyteオプションを利用しているPHPにphpMyAdminをインストールしても構文エラーで停止する件で、phpMyAdminのバージョンを最新にしたらどうなのかということでphpMyAdmin-2.10.0.2-all-languagesを導入してみたが全く改善されていない。どうしたらいいかなー?php.ini弄ってzend-multibyteを切り離すことはできるかなー?

Thunderbirdの添付ファイル

| コメント(0) このエントリーを含むはてなブックマーク

 最近、指摘されてビックリしたことですが、ThunderbirdからOutlookやOE向けに添付ファイル付きメールを送ったとき、添付ファイルが日本語だったりするとATT00012.xlsみたいにファイル名が変換されてしまう。

 よく調べると勝手にファイル名を変更しているのではなくRFC 2231の仕様に沿って一時的な変換を掛けてるらしい。そしてOutlook及びOEがこの仕様に未対応の為ファイル名を復元できずATT00012.xlsといったATT+連番+拡張子の形式で見えるらしい。

 とは言っても普及率等を考慮すれば、他の一般メーラー同様に添付したときのファイル名のままでやり取りできるようにしたい。

 方法を調べたところmozillaのナレッジサイトに設定を変更するパッチと説明が載っていました。
http://www.mozilla-japan.org/kb/solution/3067
これで一安心かな?

PHP Parse error: syntax error, unexpected T_STRING, expecting ')' in /usr/local/apache/htdocs/phpMyAdmin/lang/japanese-euc.inc.php on line 19

phpをインストールするときに--enable-zend-multibyteオプションをつけていると上記のようなエラーが発生する。今まで気が付かなかったが既存サーバに導入しても真っ白で表示されないから調べたらこんな始末でした。。。

参考:
PHP5.1.1
phpMyAdmin2.8.0.2
MySQL4.0.26

 いつの間にという感じですね。相変わらず所々で文字コードがらみのトラブルが耐えないのですが(開発時に考慮してないサイトは後で大変)、公式サイトでは4.0系のダウンロードが終了していました。
 私はソースを開発サーバにtarボールごと残す派なので何とかなってますが…。

メガテンのアイテム課金が…

| コメント(0) このエントリーを含むはてなブックマーク

 今月、正式サービススタートした女神転生IMAGINEですが課金システムの支援がガンホーということで何かあると思ったら予想通りの課金内容。課金無しだとまともにゲームできそうにないし、負担も大きいように見えます。メガテンの場合は根強いファンが多いので基本無料の月額課金の方がよかったんじゃないかなぁ…。

まとめサイト
http://blog.livedoor.jp/dqnplus/archives/953346.html

ROB神のスレが立ってますね。

| コメント(0) このエントリーを含むはてなブックマーク

 最近活動再開されたROBROB LABで新プロジェクトがオンラインゲームということで期待が高まっているようです。

http://ex22.2ch.net/test/read.cgi/net/1175859772/

私もがんばらなきゃ…。

 これは、非常に危険な設定なのでLANのテスト環境ぐらいに制限しておきたい。

とりあえず、私の場合は持ち歩いているBSDノートを臨時で開発サーバにする時につかいます。
IPアドレス制限では無理があるのでクライアント認証をしていますがrootログインを許可した上で、rootでログインさせるために一時的に認証キーを追加しています。

 これの目的は単にrootとユーザのパスワードを教えたくない。(自分用なので教えると以後使えなくなるからね)

クライアント認証の追加はユーザの時と同じ方法を用いて、/etc/ssh/sshd_configに下記の設定を変更します。

# PermitRootLogin no
PermitRootLogin yes

上の行がデフォルトの設定です。これで使い捨てのクライアントキーを発行して接続させています。
rootを提供する以上、中のファイルぶっこ抜かれてもOS破壊されてもしょうがないので、最悪事態が発生しても無問題なPCでやりましょう。

Apache2.2.4でwarning

| コメント(0) このエントリーを含むはてなブックマーク

 多分Apache2.2以降だけだと思うが、ソースからインストールして起動する際に、

[warn] (2)No such file or directory: Failed to enable the 'httpready' Accept Filter

と出ることがある。
だからと言って動作に問題は出ないのだが気になるので調べたところ、適正に設定を行えばソケットの最適化をやってくれるらしい。

 具体的には、通常サーバに対してリクエストを送信するとまずApacheとのソケット通信を開始してデータを送ります。これをOS側でクライアントからのリクエストが完了するのを待って初めてApacheへ接続しApacheのコネクション数の節約を行うようです。

FreeBSDの場合、デフォルトでこのような機能を組み込んだいないため、カーネルにロードしてあげます。

対象モジュール:
/boot/kernel/accf_http.ko

カーネルにロード
# kldload accf_http.ko

起動時に読み込むようにloader.confに追加
# echo 'accf_http_load="YES"' >> /boot/loader.conf

大きな誤算

| コメント(0) このエントリーを含むはてなブックマーク

 ノートPCを追加して脱Win目標に使っていたがここで根本的な問題に気が付いた。Winでオンラインゲー作るのにクライアント機が足りない…。現在Win機はデスクトップが1台しかなかった。

 だからと言ってまたノート追加するのもイヤだしなー。クライアント開発が具体的な段階に入ったところで小型デスクトップ(完全にゲーム専用機)を追加するかな。(ディスプレイは2口分の入力あるし)

 待ってました。やはりUNIXで使うなら不要なキーの少ない英語キーボードがいいですね。キー幅も広めになるし。早速入れ替えて使用。デスクトップの方は既に英語キーボードに切り替えて使っているので配置の慣れには問題ないです。特に意識しなくても気持ちが切り替わります。

比較写真
2007040301-1.jpg

取り付けた後(左側)
2007040301-2.jpg

取り付けた後(右側)
2007040301-3.jpg

無線LANの設定

| コメント(0) このエントリーを含むはてなブックマーク

 早速、LAN内蔵したばかりのFreeBSDで無線APに繋ごうとしたら失敗の連続。。。
ESSIDだけのところではつながるのですがWEP掛けている場合の設定が失敗。
/etc/rc.confだけじゃダメっぽいですね。

調べてみると。無線インターフェースがwi0の場合は
/etc/start_if.wi0を作成してその中にESSIDやWEPの設定を入れればよいみたい。

いろいろ試して成功したのは以下の例です。
ifconfig wi0 up ssid "wifi" authmode shared wepkey 1:0x1234567890 wepmode on
ifconfig wi0 deftxkey 1

wifiはESSIDで認証モードをシェアードキー、WEPパスワードは1234567890の場合です。

ネットワークの再起動は/etc/rc.d/netif restart
/etc/rc.confの方はDHCPでも固定でもお好きなようにという感じです。

ネコ娘がツンデレ化

| コメント(0) このエントリーを含むはてなブックマーク

 そろそろゲゲゲの鬼太郎が始まるということでしたが偶然今日でしたね。たまたま観ることが出来たのですが、以前から知っていたのは泉谷しげるが主題歌を歌うことぐらいかな。昔見ていた時のは吉幾三だったというのも最近知った。

 目玉おやじの声がそのままなのと殆どのキャラクターがお馴染みなのには懐かしく思いましたが、ねずみ男の服が黄色になってる(第四作かららしい)とかぬりかべが丸くなった事、砂かけばばあがさらに怖くなってる事に気づく。

 ただネコ娘の変わり様は凄すぎ、髪型が変わった・口元に牙・スタイルが良くなったというのは時代の流れかなと思いましたが性格がツンデレ化しているのはショック。

ゲゲゲの鬼太郎 第三作のネコ娘 1985/10/12~1988/2/6
http://www.toei-anim.co.jp/tv/kitaro/charactor/index.html#nekomusume

ゲゲゲの鬼太郎 第五作のネコ娘 2007/4/1~
http://www.toei-anim.co.jp/shop/dvd_kitaro80s/chara.html#04

ネコ娘のモデルが「化け猫遊女」ということであれば時代に合わせて姿も進化(美化)する妖怪という認識で良いが狙いすぎですw

アーカイブ