2006年2月アーカイブ

 ケイタイサイトを作成する時に便利なサイトの紹介

携帯電話特有のサーバー変数情報が豊富に掲載されています。
CGIぽん

携帯サイトのプログラミング関係で参考になりました。キャリア判別等は必見です。
携帯サイト作成

 ここ数ヶ月の出来事ですが、よく開発テストを行う際にtelnetでApacheに接続をおこなっている。目的はmime-type等が正常に応答されているかとか、サーバー変数等でクライアントを識別制限している際にそのクライアントに成りすまして接続して遷移検査をしたりしています。

接続するときは telnet www.xxx.yyy.zzz 80[Enter]のようにコマンドプロンプトから打つだけ、www.xxx.yyy.zzzの部分はIPアドレスです。次にApacheに送るリクエスト情報を入れると応答が帰ってきます。

GET /index.html HTTP/1.1
User-Agent: hogehoge
Host: hogehoge.net

リクエストは上記のような感じです。そのほかにサーバー変数等を追加して送ることも出来ます。またGETの部分をPOSTに変えたり、ヘッダ情報を取得するだけであればHEADを指定して検査を行います。

参考URL
http://ash.jp/net/telnet_http.htm
http://www.nurs.or.jp/~telnet/
http://www.atmarkit.co.jp/fwin2k/win2ktips/231telnetcmd/telnetcmd.html

 ケータイにも使用できるCSSを探していたらこんなサイトを発見した。
実際に使えるのは最近の機種になりそうだが、それでもメンテナンス性を考えると十分価値があります

詳細は下記URL
http://www.toyfish.net/docs/css-mobile/

MySQLでデータベースを作成します。

> CREATE DATABASE [DB名];

作成したDBに切り替えた後テーブルを作成します。

CREATE TABLE user_master (
user_id varchar(10) BINARY,
user_name varchar(30) BINARY,
user_age numeric(3),
update datetime,
PRIMARY KEY(user_id)
);

テーブルの削除

> DROP TABLE user_master

データベースのバックアップ
# mysqldump --opt -u [ユーザ名] -p [データベース名] > [バックアップファイル名]

データベースのリストア
# mysql -u [ユーザ名] -p [データベース名] < [バックアップファイル名]

 MySQLの使い始めに確認するコマンドの一覧です。以下のコマンド以降は通常のSQL文で操作します。

MySQLにログイン

# /usr/local/mysql/bin/mysql [DB名] -u [ユーザー名]

データベースの一覧を表示

> SHOW DATABASES;

データベースの切り替え

> USE [DB名]

テーブルの一覧

> SHOW TABLES;

フィールドの一覧

> SHOW FIELDS FROM [テーブル名];

ログアウト

> QUIT

 永田議員は党と国会に謝罪するのだろうか?そもそも印刷物のメールだけでは内容がどうあれそれだけでは証拠不十分なのだがそれ以上に党内での検証が行き届いて無いようです。元々黒塗りの場所が意味不明だったのでガセ扱いはされていましたが、メール以外に何も証拠を持っていない状態だったというのはお粗末だし、それで国政調査権を行使というのも本末転倒ですね。

どうみてもネット上で遊び半分で作ったネタにしか見えなかったのですが、
■堀江→@堀江
だったとは…あの黒塗りなら何故消すのか不明だが中身は多分byだろうと思っていた。

メールを証拠に出すなら、最低でもヘッダ情報にSMTP経路を表示した状態でサーバーを押さえてないとダメですね。つまりあのガセメールは消印の無い郵便物と同じ扱いってワケです。SMTPの経路情報があれば発送元の特定のヒントになるし、経路情報まで偽装してもサーバー側に記録を問い合わせれば真偽が判明します。

 熊谷氏も出頭要請→そのまま逮捕になりました。

 これを受けて、ライブドアは整理ポスト行きになりそうです。しかしこうなると取締役の穴埋めはどうなるんでしょう?上場企業がいきなり解散→即日上場廃止ってあるのかなー。

 投資会社の大量保有ということで、直接の買収目的はなさそうですがライブドア社が上場廃止後倒産しなかった場合を考えると事業買収を狙う会社へ売却するためのタネになる可能性もあります。それにしてもシオンって名前からしてユダヤ資本?思いっきりカモにされている気がする。

ニュース記事
http://headlines.yahoo.co.jp/hl?a=20060221-00000313-yom-bus_all

 いきなり話題になりましたが、施行2001年ですか…。話題になったのは猶予が4月から切れ始めて影響が出てくるからということですがPSEマークはともかく中古を含めて製造・販売が制限されるなんて知らなかった(政府の周知不足だと思いますが)。で電気用品の項目を見て愕然。

電気楽器・電子楽器・音響機器・電子卓上計算機

すみませんがこれらの機器ってPSEマークなんて貼ってありましたか?昨年買ったギター・エフェクター・アンプ全てにPSEマークなんてありません。MIDI機器に至ってもレコーダー・音源・キーボード全滅(スピーカーはPSEの対象外らしい)

電子式卓上計算機というのはコンピューター?パソコンは対象外という認識らしいので、それ以外だとレジがそれに当たるかな。あれも液晶付きはPCベースだからPSEマークなさそうだな、残念賞。

消費者としては販売と修理の両方が禁止されるということは、PSEなしの電気用品を使っていて故障した場合は新品を買うしか無いということで生活コスト増大・ゴミ増大ということになりそうです。楽器に至っては新しければ良いというものでは無いので対象外にして欲しい。むしろちょっと昔のサンプリング音の方が好きだったり。

こんなの放置するとアキバのジャンク屋も全滅しかねないし、電池やUSBで動くものは新品でもPSEなんて付いてないはず(電源が直流という事で対象外と思いますが)、そういうことで署名してきます。

電気用品安全法に対する署名のお願い
http://www.jspa.gr.jp/pse/

 PerlやPHPからではDBIや内蔵ライブラリ任せで良いのですが、C言語では直接MySQLのライブラリを使用します。

 まずは、必要なヘッダやライブラリがどこにあるかを調べる。
# find / -name mysql.h
/usr/local/src/mysql-5.0.18/include/mysql.h
/usr/local/mysql/include/mysql/mysql.h

# find / -name libmysqlclient.so
/usr/local/src/mysql-5.0.18/libmysql/.libs/libmysqlclient.so
/usr/local/mysql/lib/mysql/libmysqlclient.so

# find / -name libmysqlclient.a
/usr/local/src/mysql-5.0.18/libmysql/.libs/libmysqlclient.a
/usr/local/mysql/lib/mysql/libmysqlclient.a

コンパイル・リンク時に-Iや-Lで指定が必要になります。
# gcc -c -I /usr/local/mysql/include/mysql/ myclient.c
# gcc -o myclient -L /usr/local/mysql/lib/mysql/ -l mysqlclient

一気にやるならこっち
# gcc -o myclient \
-I /usr/local/mysql/include/mysql/ \
-L /usr/local/mysql/lib/mysql/ \
-l mysqlclient \
myclient.c

実際のプログラムに関してはメルマガで紹介しますが、Linuxの場合出来上がったプログラムを使用する際に/usr/local/mysql/lib/mysql/をldconfigで登録しないとだめだったので動的リンクだったかも。
FreeBSDにも同じコマンドがあるのでメルマガ発行前にもう一度検証してみます。

 MySQLの自動起動をRedHatLinuxとFreeBSDの場合ではどのようにするのか、MySQLの場合ソースの中の起動スクリプトmysql.serverを使用する。

Red Hat Linuxの場合(version4.0.20の時の記録)
# cd /usr/local/src/mysql-4.0.20/support-files
# cp mysql.server /etc/rc.d/init.d/mysqld
# chmod 755 /etc/rc.d/init.d/mysqld
# chkconfig --add mysqld
# cp my-medium.cnf /etc/my.cnf

FreeBSDの場合
# /usr/local/src/mysql-5.0.18/support-files
# cp mysql.server /usr/local/etc/rc.d/mysqld.sh
# chmod 755 /usr/local/etc/rc.d/mysqld.sh

 MySQLを起動するには以下のコマンドを利用します。因みにUNIX系であれば共通内容です。

初期化(ユーザーmysqlで初期化)
# /usr/local/mysql/bin/mysql_install_db --user=mysql

起動(ユーザーmysqlで起動)
# /usr/local/mysql/bin/mysqld_safe --user=mysql &

接続(ユーザーmysqlでtestデータベースに接続)
# /usr/local/mysql/bin/mysql test -u mysql

Apache+SSL

| | コメント(0) | トラックバック(0)

 Apache2を入れたり1.3を入れたりと普段は慌しいのですが、Apache2ではmod_sslを別途手に入れなくてもSSL実装可能だった。(そういえば2年前はApache1.3+mod_sslでインストールの仕方が分けわかんなくて2にした気がする)

# ./configure --prefix=/usr/local/apache --enable-ssl --enable-module=so \
# make
# make install

これが1.3だとApacheのバージョンに一致するmod_sslを手に入れてmod_ssl内でApacheのmakeも行う。別にsslが必要なくてもバイナリで配布されているEAPIモジュールを使用したいときもこれを行う必要があり苦労しました。1.3の場合はこんな感じです。

Apache+mod_SSLのインストール方法

mod_SSLのコンフィグ(mod_SSLのソース内で実行)

# ./configure \
--with-apache=../apache_1.3.33 \
--with-ssl=/usr/ \
--enable-module=so \
--prefix=/usr/local/apache \
--enable-module=ssl

# 説明
--with-apache=(Apacheソースのディレクトリ)
--with-ssl=(sslのライブラリが存在する場所)
--enable-module=so(Apache用のコマンド)
--prefix=(Apache用のコマンド)
--enable-module=ssl(Apache用のコマンド)

Apacheのインストール

# cd ../apache_1.3.33
# make
# make install

FreeBSDの場合はとても単純で
# cp /usr/local/apache/bin/apachectl /usr/local/etc/rc.d/httpd.sh

のみでOK。

Red Hat Linuxの場合は以下のようにします。

# cp /usr/local/apache/bin/apachectl /etc/rc.d/init.d/httpd

そしてコピーしたhttpdファイルの先頭部分に以下を追加します。
# chkconfig: 3 85 15

そしてchkconfigコマンドを実行。これはrootユーザーでないと使えなかったと思います。

# chkconfig --add httpd

追加できたかどうかlistで確認

# chkconfig --list httpd

chkconfigを使用しない場合は下記のコマンドを順番に実行することで可能です。
# cp /usr/local/apache/bin/apachectl /etc/rc.d/init.d/httpd
# cd /etc/rc.d/rc3.d/
# ln -s ../init.d/httpd S99httpd
# cd /etc/rc.d/rc0.d/
# ln -s ../init.d/httpd K99httpd

Sはスタート、KはKILLの意味です。その次の数字は実行優先度だったかな。

 MySQL5.0.18をインストール

# tar zxf mysql-5.0.18.tar.gz
# pw groupadd mysql
# pw useradd mysql -m -d /usr/local/mysql -mysql -s /bin/tcsh
# cd mysql-5.0.18
# ./configure \
--prefix=/usr/local/mysql \
--with-charset=ujis \
-with-extra-charsets=all \
--with-mysqld-user=mysql
# make
# make install

 メモリーが心配で拒んでいましたが、足りなくなったら買えばいいということでインストールしてみました。元々搭載しているのが128MBでスワップは1GBなのですがコンパイル中にスワップを全て使用されてしまいました。恐くて起動できません。 orz...
 今週中には512MB搭載して、JAVAを入れる予定です。テクニカルエンジニア情報セキュリティの試験範囲に書かれているプログラミング言語がC++、Java、Perlみたいなので急遽決めました。

 昨日はデフォルトでインストールしましたが、まず起動する前にconf/httpd.confの内容をチェックします。このときに不要な設定項目は省き、セキュリティホールになりそうな項目は修正します。
 私の場合、userとgroupをnobodyに設定し、OptionのIndexesは削除、ExecCGIの追加、CGIハンドラの追加を行いました。

 因みにApache2.2.0に関しては、標準の状態でエラー画面上へバージョン情報を載せたり、マニュアルページのエイリアスや、index.htmlが『It works!』とだけ表示するものだったり色々と考慮されています。(もしかすると現在だけかも知れませんが…)。また言語関係の設定等あまり弄ることの無い項目は別ファイルに分離されていてhttp.conf自体はかなりスッキリしています。バーチャルホストやSSLも別ファイルになっておりました。尚、それらの別ファイルはconf/extra/の下にあります。但しmagicとmime.typesだけはconf/の下に残っています。初期状態の設定のコピーはconf/original/の下にあります。

 これらの設定が完了したら、
# /usr/local/apache/bin/apachectl start
で起動します。

 因みにログのローテーションはrotatelogを使用しました。Linux等ではOSにインストールされているlogrotateを使用する方法もありますが、ローテーションの度にApacheを再起動する事になるのでこちらを選択。但しrotatelogは世代管理をしないので別途過去ログを処理するプログラムを設置しないとずっと溜まり続けてスペースを圧迫します。

rotatelogを使用して毎日ログを分ける場合の設定内容。ネットではTransferLogを使ってそれを分割する例が多いのですがそれでは元々の本体がそのまま残っていて2倍スペースを圧迫するだけなので直接CustomLogに記述します。

CustomLog "|/usr/local/apache/bin/rotatelogs -l /usr/local/apache/logs/access_log.%Y-%m-%d 86400" combined

 自動起動とログの区分けについてはまた明日設定します。
ログの区分けは、ワーム等からのリクエストや、favicon.ico、検索ロボット等アクセス解析には不要なアクセスを分離するために行います。

 最近2.1シリーズが開発されているなぁと見ていたが既に2.2.0がリリースされていたのでインストールをしてみることにしました。元々準備しているサーバーではメモリーも少なくスワップ行きになりそうで恐いのですがどの道必要になってくるので導入。

 最終構成としては、セキュリティレベルを上げるためのSUEXECとSSL通信(これはゲーム用アカウントの認証に使用)

 とは言っても新しいバージョンになるので最初は標準インストール。

# tar zxf httpd-2.2.0.tar.gz
# cd httpd-2.2.0
# ./configure --prefix=/usr/local/apache
# make
# make install

インストール終了後はどのような構成か確認。
# /usr/local/apache/bin/httpd -V
Server version: Apache/2.2.0
Server built: Feb 12 2006 00:39:58
Server's Module Magic Number: 20051115:0
Architecture: 32-bit
Server MPM: Prefork
threaded: no
forked: yes (variable process count)
Server compiled with....
-D APACHE_MPM_DIR="server/mpm/prefork"
-D APR_HAS_SENDFILE
-D APR_HAS_MMAP
-D APR_HAVE_IPV6 (IPv4-mapped addresses enabled)
-D APR_USE_FLOCK_SERIALIZE
-D APR_USE_PTHREAD_SERIALIZE
-D SINGLE_LISTEN_UNSERIALIZED_ACCEPT
-D APR_HAS_OTHER_CHILD
-D AP_HAVE_RELIABLE_PIPED_LOGS
-D DYNAMIC_MODULE_LIMIT=128
-D HTTPD_ROOT="/usr/local/apache"
-D SUEXEC_BIN="/usr/local/apache/bin/suexec"
-D DEFAULT_PIDLOG="logs/httpd.pid"
-D DEFAULT_SCOREBOARD="logs/apache_runtime_status"
-D DEFAULT_LOCKFILE="logs/accept.lock"
-D DEFAULT_ERRORLOG="logs/error_log"
-D AP_TYPES_CONFIG_FILE="conf/mime.types"
-D SERVER_CONFIG_FILE="conf/httpd.conf"

# /usr/local/apache/bin/httpd -l
Compiled in modules:
core.c
mod_authn_file.c
mod_authn_default.c
mod_authz_host.c
mod_authz_groupfile.c
mod_authz_user.c
mod_authz_default.c
mod_auth_basic.c
mod_include.c
mod_filter.c
mod_log_config.c
mod_env.c
mod_setenvif.c
prefork.c
http_core.c
mod_mime.c
mod_status.c
mod_autoindex.c
mod_asis.c
mod_cgi.c
mod_negotiation.c
mod_dir.c
mod_actions.c
mod_userdir.c
mod_alias.c
mod_so.c

 今年の春より新設される試験区分(SV)です。似たような区分名称として情報セキュリティアドミニストレーター(SU)がありますが、SUは情報システム利用側SVは開発・運用側ということです。

 最近は情報漏えいや人為的ミスによる障害に関してもシステム開発側の責任を求められるような時代になって来ているので合否や受験するかどうかは別として、ネットでシステム開発を行うデベロッパーであればこの際教材を購入してセキュリティの基礎勉強をしたほうが良いと思います。

 セキュリティと聞いたら神経質になる人なので一応受験申し込みました。受験勉強できなくても当日はしっかりと挑んできます。(試験範囲も知らず申し込んでしまった)

情報処理技術者試験センター
http://www.jitec.jp/

 LAMP構成も含めて、いろいろな組み合わせがあるが現状のサーバーに負荷にならない程度に独自の開発環境を導入して見ようと検討中。そもそもサーバーが440BXチップのノートPCということもあってメモリーの増設が非常に困難だったりします。

 もうだめかと思ったら、この前ツクモ電気に行ったときにプリンストンテクノロジーのコーナーがあってそこなら検索可能という。実際に商品を見ていたら使えそうな型番があり、ネットでも検索したらヒットしました。助かるなー。

 現在はサーバーに使用しているA22mが64+64の128MBなのでメモリー増設が必要になったときは256+256構成に変えてみる予定。i1800は元々256一枚搭載しているのでWin退役したら+256MBでこちらはLinuxサーバーにする予定。

 現在使用しているOSがFreeBSDなのでLAMPでは無いのですが、PerlよりPHPの方が更に楽なのでスクリプトはPHPを使用し、データベースは需要の関係でMySQL。まぁ既にPostgreSQLを入れて稼動させているのでメモリーが心配です、最終的には物理的に3台構成にしたいのですが予算が無いのでガマン。(物理的に違うサーバー同士でシステム構成するときはDBコネクションのインストールとか苦労しそう。)

MIDI音源用ラック位に収まるサーバーってないかなー?それなら4~5台構成になってもあまり場所を圧迫しなくて済みそう。

 Windowsムービーメーカー2でオプションに16:9の設定がありました。WMエンコーダーだと何故か処理が遅くてコマ落ちビデオが出来てしまった。(使い方知らないだけですが)

 これで保存の心配はなくなりましたが、DV品質のままDVD-Rに焼くと何分録画できるのかが心配。因みにファイルに保存した状態で3分600MB。このペースだと1枚に30分も収録できないや…。

 日付をファイル名に含んだログファイルをバッチ処理する際に前日の計算が必要になります。最初は前日の計算でネット検索していましたが、今日の日付から閏年まで考慮して自前で計算するスクリプトばかり出てきたので、なんとかもっとスマートな方法は無いかとdateコマンドの仕様を探って見つけた方法を紹介。

Linuxの場合
date --date '1 day ago'

FreeBSDの場合
date -v -1d

で前日を取得できます。
これをログファイルのフォーマットに合わせてシェルスクリプトに定義すると、

Linuxの場合
date=`date --date '1 day ago' +%Y-%m-%d`
logfile=access_log.$date

FreeBSDの場合
date=`date -v -1d +%Y-%m-%d`
logfile=access_log.$date

で解決します。

Yahoo!ニュース
http://headlines.yahoo.co.jp/hl?a=20060205-00000000-san-bus_all

 中学生で数十万円って…最近の子供はそんなにお金持ってるのか?資本経済や市場の勉強というのであれば良いが記事を見る限りギャンブル気分で投資を始めたケースが投稿されているみたい。でも、損したからと言って生活が破綻するわけでもなさそうだから良い勉強になったんじゃないかな。

 会社を知るのであれば投資しなくても得られる情報は同じだし(同じじゃなかったらインサイダー情報かも)、市場であればオークションやアイテム売買のあるネットゲーでも基本的な感覚や市場心理的なものはつかめると思う。以外にネットゲーにハマっている人の方が銘柄が割安かどうか等のウォッチが得意だと思うし、ゲーム感覚で稼ぐニートレーダーが正に当てはまる思う。

 しかし、基礎教養を学ぶ時期に株にはまるのはオススメできない。特に短期・スイング・デイトレに見られる投機は常に株価が気になって他の事に集中できなくなるから絶対に反対。そんなにお金があったら資産運用を考える前に趣味でも構わないからスキルを磨くための自己投資をして欲しいと思うなぁ。

 最近ケイタイFLASHの可能性というか、どれだけ凄いコンテンツが制作可能なのか調べ中。もちろん本命はFLASH Lite2.0のリリースと対応カイタイの発売後なのですがそれまではいろいろチェックしながら時期を待つ。

PC側ページ
http://jp.shockwave.com/mobile/m_machiuke/m_catmanscr/play.html

 この前、ビデオカメラを購入した際にIEEE1394が無くてPCに直接取り込めないとしょんぼりしていましたが、とりあえず必要な機器を購入。値段は気にしたことが無かったが普及が進んでいるのだろうか随分安く済んだ。(ATX M/Bが3年前の物なのでIEEE1394を内蔵してないのでPCI)

PCIボード:4000円以内(IEEE1394ケーブル1本とVideoStudio7SE同梱
3.5フロントベイ:(USB×2、IEEE1394×2)
PCIボートとフロントベイを接続するケーブル

以上3点で6400円位です。

で、接続してみたらWindowsXPだと別にキャプチャーソフト不要だった…。
しかも5年前に買ったIBMノートには1394カードがあったのだが全く不要と思って一昨年にヤフオクで流してしまったなぁ…。orz
 それにしても最大30fpsでしかキャプチャーできないのはソフトの問題?正直DVDに保存するとか考えると60fps欲しいのだが。

 定期的にMOVAの売り場を歩いて欲しいビットが出てくるのを待っていたのですがやっとケイタイ用を見つけることが出来て早速購入。あとビデオカメラ用に9V(実行8.4V)のビットも買ったが形が合わない。ビットの方が大きすぎる。ではではと思いギターのマルチエフェクターに刺そうとしたら今度はビットが小さすぎ、同じ9Vなのにどっちも使えなかった…。orz

 と思ったらMOVA自身を充電するUSBケーブルがビデオカメラに刺さった。それで汎用USBコードとMOVA充電用を直結してみたらビデオカメラの充電に成功。

現在の構成:
AUのケイタイを充電
・MOVA→KDDI用ビット
・MOVA→汎用USB→KDDI用USB充電器
・商用100V,USB変換機→KDDI用USB充電器
・PCのUSBポート→KDDI用USB充電器

Zaurusを充電
・MOVA→5Vビット
・MOVA→汎用USB→充電兼通信ケーブル
・商用100V,USB変換機→充電兼通信ケーブル
・PCのUSBポート→充電兼通信ケーブル

Canon EOS Kissを充電
・MOVA→miniUSBビット
・MOVA→汎用USB→miniUSB変換ケーブル
・商用100V,USB変換機→miniUSB変換ケーブル
・PCのUSBポート→miniUSB変換ケーブル

Canon FV M100を充電
・MOVA→汎用USB→MOVA用USB充電ケーブル
・商用100V,USB変換機→MOVA用USB充電ケーブル
・PCのUSBポート→MOVA用USB充電ケーブル

MOVA自身を充電
・商用100V,USB変換機→MOVA用USB充電ケーブル
・PCのUSBポート→MOVA用USB充電ケーブル

Web2.0

| | コメント(0) | トラックバック(0)

 昨日の新聞やメールで見て、なにその規格!?と気になってしょうがない。
TCP/IPやHTML等の規格とは違ってネットワーク社会面での区別みたい。

現在の多くのサイトは組織単位またはサイト単位で完結しているものが多く、他のサイトとのつながりはハイパーリンクです。これがWeb2.0だと相互に情報を共有してサービスできる事を示すらしい。技術的にはブログのトラックバックやSOAPを使った相互サービス等を含むようですね。

こんな認識で終わっているので乗り遅れ過ぎだなぁ、未だにSOAPに触れてないし… orz...

ウィキ

 この前、『須』の文字でコケたばかりですが、今度は『本』。こちらは2バイト目が『 { 』と誤認識されてしまう。という事で下記のように対策。

テンプレート側
本→{$hon}

PHP側
$obj->assign("hon","本");

本末転倒な気がするこの頃…。

このアーカイブについて

このページには、2006年2月に書かれたブログ記事が新しい順に公開されています。

前のアーカイブは2006年1月です。

次のアーカイブは2006年3月です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

Powered by Movable Type 4.1