サーバ | Free Style



2008年05月14日

PHPでFLVの情報を取得する方法

Yahoo!ブックマークに登録 はてなブックマークに追加 del.icio.usに追加 livedoorクリップへ追加 Buzzurlに追加 POOKMARK Airlinesへ追加 newsingへ投稿 Saafブックマークに追加

まぁメタデータ取ってくるだけですが、うまくパースできなかったので
Web漁ってみるも、どうにも見つからない…

FLVの仕様自体はAdobeにあるのだけれども、仕様読んでも意味わからん!
ていうか、結構適当な感じなんだけどどうなんだろう。

で、なんとか見つけたのがFLV4PHPってもの。

Flv4Php is a OS ( Open Source ) .flv Meta-data Manipulator / File output run-time. This article will give an example on how use Flv4Php. This tool can be used to change a flv file's header ( meta-data ) run-time as you back-play it, ( save it to desktop ) or what you wanna use it for.

デモページ

FLV4PHPでググってもさっぱり実績とかないので、中身見てみると
どうやらPHPでFLVの操作全部やっちゃうぜ!的なノリっぽい。

メタデータ取ってるとこだけ参考にしようと思ったけど、そのまんま使ってたりw
が、そのまんま使うとファイルをオープンするときに、どうもハッシュ計算してる
様で結構重い罠。

ローカルパス前提でメタデータだけ取れればいいので、余計なとこ取ったら軽くなった!

で、実装してみた
動画サイズと時間が取れれば良かったので、こんな感じでいいかなと。

時間があったら、メタデータだけ取得するようにしてみよう。

canSeekToEndが取得できてないのはご愛敬?

2008年03月30日

リモートからX Windowsを使用する方法

Yahoo!ブックマークに登録 はてなブックマークに追加 del.icio.usに追加 livedoorクリップへ追加 Buzzurlに追加 POOKMARK Airlinesへ追加 newsingへ投稿 Saafブックマークに追加

タイトルが正しい言い回しかどうかはいささか疑問だけどまぁニュアンスはわかるかと。

ということで備忘録。

CentOS4.6、RedhatES4共に同様の設定で利用可能。
CentOS5、RedhatES5もたぶん似たような感じでいけるでしょう、たぶん。

サーバ側にX-Windowsが導入されていることが前提です。
参考:GUIの追加インストールについて

●サーバー側準備
※ポート制限している場合には177をあけておく

1.「/etc/X11/gdm/gdm.conf」を編集
----------------------
[xdmcp]
Enable=true
----------------------
上記に変更。

・コンソールでGUIを起動させない場合下記設定にする
----------------------------
[servers]
#0=Standard
----------------------------

・ランレベル5でブート
/sbin/init 5
※サーバ側でXを立ち上げたくない場合は必要なし3でOK。

・GDM再起動
kill -HUP `cat /var/run/gdm.pid`

●クライアント(Windows側準備)
・ダウンロード
http://sourceforge.net/project/showfiles.php?group_id=156984
からXming,Xming-fontsをダウンロードする

・設定方法
http://dgegw3.nifs.ac.jp/gecev/xming/Xming.htm
の「◆XDMCPを使用してサーバに接続する」を参照(手抜きw)

CentOS4にGUI環境の追加インストール

Yahoo!ブックマークに登録 はてなブックマークに追加 del.icio.usに追加 livedoorクリップへ追加 Buzzurlに追加 POOKMARK Airlinesへ追加 newsingへ投稿 Saafブックマークに追加

Cent5は試していないけど同様でできるでしょう。(きっと)
RedhatESはup2dateで同じことできるのかなぁ?未検証。

要約するとyumにはgroupinstallというオプションがあって、グループってのは
インストール時に表示されるパッケージ群なわけです。

とりあえずミニマムインストールしたけど、後でGUIとか欲しくなったときに、
アッーとならないためのおまじない。

1.おもむろにグループ一覧表示
# yum grouplist
Repository update is listed more than once in the configuration
Repository base is listed more than once in the configuration
Repository contrib is listed more than once in the configuration
Repository centosplus is listed more than once in the configuration
Repository addons is listed more than once in the configuration
Repository extras is listed more than once in the configuration
Setting up Group Process
Setting up repositories
update 100% |=========================| 951 B 00:00
base 100% |=========================| 1.1 kB 00:00
addons 100% |=========================| 951 B 00:00
extras 100% |=========================| 1.1 kB 00:00
yumgroups.xml 100% |=========================| 558 kB 01:20
yumgroups.xml 100% |=========================| 4.6 kB 00:00
Installed Groups:
Compatibility Arch Support
Graphics
Available Groups:
Administration Tools
AptRPM
Authoring and Publishing
Compatibility Arch Development Support
DNS Name Server
Development Tools
Editors
Engineering and Scientific
FTP Server
GNOME Desktop Environment
GNOME Software Development
Games and Entertainment
Graphical Internet
Horde-Apps
KDE (K Desktop Environment)
KDE Software Development
Legacy Network Server
Legacy Software Development
Mail Server
MySQL Database
Network Servers
News Server
Office/Productivity
PostgreSQL Database
Printing Support
Server Configuration Tools
Sound and Video
System Tools
Text-based Internet
Web Server
Windows File Server
X Software Development
X Window System
XFCE-4.2
drbd-heartbeat
Done
-------------------------------------
GUIに必要なのは、下記2つのパッケージになります。
X Window System
GNOME Desktop Environment
※KDE派の人はGNOMEの代わりに「KDE (K Desktop Environment)」で。 2.おもむろにグループインストール
yum groupinstall "X Window System" "GNOME Desktop Environment"

2008年03月28日

MySQLロードマップ(5.1、6.0、6.x、7.0)

Yahoo!ブックマークに登録 はてなブックマークに追加 del.icio.usに追加 livedoorクリップへ追加 Buzzurlに追加 POOKMARK Airlinesへ追加 newsingへ投稿 Saafブックマークに追加

■MySQL5.1
○08Q2(4~6月)リリース予定

○新機能
・テーブル/インデックスパーティショニング
 →range,hash,key,list,compositeメソッドをサポート
  Merger,Federated,CSVエンジンではサポートしない
  NDBではkeyメソッドのみ
 →行ベース/ハイブリッドレプリケーション
 →ディスクベースクラスタ
 →組込ジョブスケジューラ
 →SQL問題検出
 →高速フルテキスト検索(但し、日本語はSenna依存)

○Nitroedb
 →有償3rdパーティ製エンジン
 →非常に高速なデータ登録性能

■MySQL6.0
○08Q4(10~12月)リリース予定

○新機能
・Falconエンジン
 →InnoDB後継みたいな位置づけ?
 →インメモリでできるだけ処理しちゃおう的なコンセプト
 →外部キーサポートはなし
 →自動スペース再利用
 →B-Treeインデックスのみ

・オンラインバックアップ
 →DMLは非ブロック、DDLブロック、全エンジン対応
 →SQLコマンド駆動
 →ポイントインリカバリサポート
 →ブロッキングリストア
 →データ以外もバックアップ

・オンライン列追加
 →Clusterのみ

・レプリケーション列追加
 →Clusterのみ

・オプティマイザ強化
 →サブクエリ/ジョインの高速化(レスポンスタイムが99.75%低減)

・Falconエンジンのパフォーマンス情報診断

・UTF-8の4バイト対応
 →MySQL5.1対応は未定、3バイトUTF-8の名称が変更に

■MySQL6.1(?)
○α、β版は08年中頃、09年前半にリリース予定

○新機能
・全てのエンジンで外部キーをサポート

・プリペアドステートメントが全エンジンで対応

・サーバサイドカーソルの改善
 →チェックサム

・オプティマイザ強化
 →さらに高速に

・ストアドプロシージャの改善

■MySQL7.0
○α、β版は09年中頃、09年末にリリース予定

○新機能
・セキュリティグループ、ロールが追加
 →容易な権限変更に

・透過的データ暗号化

・データ監査

・外部認証対応
 →OS認証やLDAPとか

・オンラインテーブル変更
 →オンラインDDL

■MySQL Cluster
○5.1
・ディスクベースのテーブル、クラスタ間レプリケーション

○6.0
・オンライン列追加
・高速結合処理
・レプリケーション競合検出機能

○Carrier Grade Edition
・独自のリリースサイクル

■レプリケーション
○5.1
・行ベース/ハイブリッドに対応

○6.x
・チェックサム

○6.x以降(7とか?)
・セミ同期
・マルチソース
・ハートビート

■DRBD(HAソリューション)
・分散型ストレージ
・ネットワークRAID1みたいな感じ
・同期レプリケーション
・高パフォーマンス
・特別なネットワークコンポーネントが不要
 →但し、ハートビートは除く
・障害発生時のデータ不整合を管理、解決
・リカバリ処理の複雑さが解消される
・ハートビートがフェールオーバーと仮想IPを管理

■Enterprise ロードマップ
・MySQL Enterprise Monitor
 →OracleのEMみたいな感じ。便利そうー。

・MySQL Load Balancer

・SQL解析
 →これはいい気がする

・MySQL Connection Maneger
 →言語関係なしに、Pコネクトできるみたい

・リモートインスタンス管理

・バックアップ/リカバリ管理

・memcachedを正式にサポート
 →08Q2ぐらい、Enterprise版のみ

・DWH用エンジン
 →Nitroedb、Infobright
  MySQLオプティマイザと独自のオプティマイザを併用

■ツール
○MySQL Wordkbench
・有償版と無償版

・有償版は1万ぐらい

・ソースからリバースエンジニアリング
 →ER図とか作れる

・MySQLへフォワードできる

・MySQLと同期(有償版のみ)


MySQL6が意外と熱い。
逆を言えば6までは待ちかなぁ…
まだまだOracleの代替品としては使えない気がする。
松竹梅でいう梅コース担当候補ではあるけれども。

2008年01月16日

CentOS4.6KickStartファイル(X有りサーバ向けVMWare用)

Yahoo!ブックマークに登録 はてなブックマークに追加 del.icio.usに追加 livedoorクリップへ追加 Buzzurlに追加 POOKMARK Airlinesへ追加 newsingへ投稿 Saafブックマークに追加

基本的にCUIのみのインストールにX環境を追加した感じです。

xfsをoffにしててX起動失敗しまくりではまった…

# Kickstart file automatically generated by anaconda.

install
cdrom
lang ja_JP.UTF-8
langsupport --default=ja_JP.UTF-8 ja_JP.UTF-8
keyboard jp106
xconfig --card "VMWare" --videoram 16384 --hsync 31.5-37.9 --vsync 50-70 --resolution 800x600 --depth 16 --startxonboot --defaultdesktop gnome

###############################
#for network static
network --device eth0 --bootproto static --ip xxx.xxx.xxx.xxx --netmask xxx.xxx.xxx.xxx --gateway xxx.xxx.xxx.xxx --nameserver xxx.xxx.xxx.xxx --hostname hogehoge
#for network dhcp
#network --device eth0 --bootproto dhcp
###############################

###############################
#set password
rootpw --iscrypted $1$iLWTDvk2$u5My7fF6rTWfgXmaav.el1
#パスワードを暗号化しない場合
#rootpw hogehoge
###############################

firewall --disabled
selinux --disabled
authconfig --enableshadow --enablemd5
timezone Asia/Tokyo
bootloader --location=mbr --append="rhgb quiet"

# The following is the partition information you requested
# Note that any partitions you deleted are not expressed
# here so unless you clear all partitions first, this is
# not guaranteed to work
clearpart --all
part /boot --fstype ext3 --size=128
part swap --size=2048
part / --fstype ext3 --size=100 --grow

%packages
@ japanese-support
@ gnome-desktop
@ dialup
@ base-x
@ development-tools
-valgrind
-cvs
-python-ldap
kernel-smp-devel
-kernel-smp-devel
-psgml
-valgrind-callgrind
kernel-devel
-kernel-devel
-ltrace
-systemtap
-emacs-leim
-automake15
e2fsprogs
-diffstat
-kernel-devel
-doxygen
-patchutils
-texinfo
-automake14
-kernel-smp-devel
-indent
-gcc-java
kernel-smp
-perl-XML-Dumper
-oprofile
-ctags
-cscope
-automake16
-java-1.4.2-gcj-compat
-perl-XML-Parser
-rcs
-automake17
-perl-XML-LibXML
-emacspeak
-byacc
-perl-LDAP
-splint
-perl-XML-NamespaceSupport
-perl-Crypt-SSLeay
-emacs
-perl-XML-Grove
-perl-XML-LibXML-Common
-perl-XML-SAX
-perl-XML-Twig
-gcc-g77
grub
-cdecl
-pstack
-elfutils
-perl-XML-Encoding
-kernel-hugemem-devel

%post

#for LANG=euc-jp
echo "LANG=\"ja_JP.eucJP\"" > /etc/sysconfig/i18n
echo "SUPPORTED=\"ja_JP.eucJP:ja_JP:ja\"" >> /etc/sysconfig/i18n
echo "SYSFONT=\"lat0-sun16\"" >> /etc/sysconfig/i18n
echo "SYSFONTACM=\"8859-15\"" >> /etc/sysconfig/i18n

yum -y install yum-plugin-fastestmirror

#for ntpd
yum -y install ntp
cp /etc/ntp.conf /etc/ntp.conf.org
cat /etc/ntp.conf.org|sed -e "/server 0.pool.ntp.org/i server ntp.nict.jp"|sed -e "/.org$/d" > /etc/ntp.conf
ntpdate ntp.nict.jp
chkconfig ntpd on

#change MTA to postfix
yum -y remove sendmail
yum -y install postfix

#for update
yum -y update

#for clean service
chkconfig mdmonitor off
chkconfig rawdevices off
chkconfig kudzu off
chkconfig isdn off
chkconfig lvm2-monitor off
chkconfig smartd off
chkconfig acpid off
chkconfig rpcidmapd off
chkconfig openibd off
chkconfig portmap off
chkconfig messagebus off
chkconfig readahead off
chkconfig apmd off
chkconfig xinetd off
chkconfig autofs off
chkconfig iiim off
chkconfig cpuspeed off
chkconfig readahead_early off
chkconfig gpm off
chkconfig atd off
chkconfig cups off
chkconfig microcode_ctl off
chkconfig haldaemon off
chkconfig netfs off
chkconfig pcmcia off
chkconfig nfs off
chkconfig nfslock off

CentOS4.6KickStartファイル(Xなしサーバ向けVMWare用)

Yahoo!ブックマークに登録 はてなブックマークに追加 del.icio.usに追加 livedoorクリップへ追加 Buzzurlに追加 POOKMARK Airlinesへ追加 newsingへ投稿 Saafブックマークに追加
kickstart起動は
linux ks=hd:fd0/ks.cfg
で。

CentOS4.5環境初期構築の内容をkickstart化してみました。
lvのインストールはしてないので、必要に応じて入れてください。

ネットワークとパスワード部分は適宜変更してください。
VMWare以外の場合はxconfigも適宜変更してください。

# Kickstart file automatically generated by anaconda.

install
cdrom
lang ja_JP.UTF-8
langsupport --default=ja_JP.UTF-8 ja_JP.UTF-8
keyboard jp106
xconfig --card "VMWare" --videoram 8192 --hsync 31.5-37.9 --vsync 50-70 --resolution 800x600 --depth 16

###############################
#for network static
network --device eth0 --bootproto static --ip xxx.xxx.xxx.xxx --netmask xxx.xxx.xxx.xxx --gateway xxx.xxx.xxx.xxx --nameserver xxx.xxx.xxx.xxx --hostname hogehoge
#for network dhcp
#network --device eth0 --bootproto dhcp
###############################

###############################
#set password
rootpw --iscrypted $1$iLWTDvk2$u5My7fF6rTWfgXmaav.el1
#パスワードを暗号化しない場合
#rootpw hogehoge
###############################

firewall --disabled
selinux --disabled
authconfig --enableshadow --enablemd5
timezone Asia/Tokyo
bootloader --location=mbr

# The following is the partition information you requested
# Note that any partitions you deleted are not expressed
# here so unless you clear all partitions first, this is
# not guaranteed to work
clearpart --all
part /boot --fstype ext3 --size=128
part swap --size=2048
part / --fstype ext3 --size=100 --grow

%packages
@ japanese-support
@ dialup
@ development-tools
-elfutils
-texinfo
-psgml
-valgrind-callgrind
-gcc-g77
-doxygen
-systemtap
-automake15
-emacs
-perl-XML-Parser
kernel-smp-devel
-kernel-smp-devel
-perl-XML-LibXML
-valgrind
-diffstat
-gcc-java
-automake14
-pstack
-oprofile
-automake16
-ltrace
-perl-XML-Dumper
kernel-devel
-kernel-devel
-python-ldap
-valgrind-callgrind
-cdecl
-perl-XML-LibXML-Common
-perl-LDAP
-ctags
-java-1.4.2-gcj-compat
-automake17
-cscope
-emacspeak
-emacs-leim
-perl-XML-NamespaceSupport
-kernel-largesmp-devel
-elfutils
-perl-XML-Grove
-rcs
-patchutils
-splint
-perl-XML-SAX
-perl-XML-Twig
-valgrind
-cvs
-byacc
kernel-smp
-indent
-perl-Crypt-SSLeay
e2fsprogs
-perl-XML-Encoding

%post

#for LANG=euc-jp
echo "LANG=\"ja_JP.eucJP\"" > /etc/sysconfig/i18n
echo "SUPPORTED=\"ja_JP.eucJP:ja_JP:ja\"" >> /etc/sysconfig/i18n
echo "SYSFONT=\"lat0-sun16\"" >> /etc/sysconfig/i18n
echo "SYSFONTACM=\"8859-15\"" >> /etc/sysconfig/i18n

yum -y install yum-plugin-fastestmirror

#for ntpd
yum -y install ntp
cp /etc/ntp.conf /etc/ntp.conf.org
cat /etc/ntp.conf.org|sed -e "/server 0.pool.ntp.org/i server ntp.nict.jp"|sed -e "/.org$/d" > /etc/ntp.conf
ntpdate ntp.nict.jp
chkconfig ntpd on

#change MTA to postfix
yum -y remove sendmail
yum -y install postfix

#for update
yum -y update

#for clean service
chkconfig mdmonitor off
chkconfig rawdevices off
chkconfig xfs off
chkconfig kudzu off
chkconfig isdn off
chkconfig lvm2-monitor off
chkconfig smartd off
chkconfig acpid off
chkconfig rpcidmapd off
chkconfig openibd off
chkconfig portmap off
chkconfig messagebus off
chkconfig readahead off
chkconfig apmd off
chkconfig xinetd off
chkconfig autofs off
chkconfig iiim off
chkconfig cpuspeed off
chkconfig readahead_early off
chkconfig gpm off
chkconfig atd off
chkconfig cups off
chkconfig microcode_ctl off
chkconfig haldaemon off
chkconfig netfs off
chkconfig pcmcia off
chkconfig nfs off
chkconfig nfslock off

2008年01月12日

FDDを使わずにCentOSでKickStart@VMWare

Yahoo!ブックマークに登録 はてなブックマークに追加 del.icio.usに追加 livedoorクリップへ追加 Buzzurlに追加 POOKMARK Airlinesへ追加 newsingへ投稿 Saafブックマークに追加

WindowsだとFDDなくても最近大丈夫だったり、ノートでついてなかったりで
困った時の備忘録。

目的が同環境量産なのでks.cfgはanaconda-ks.cfgから作った方がいいかと。
VMだからイメージ取っとけばいいじゃんって話は、ネットワーク周りとか再設定
するより自動で設定した方が楽ちんじゃね?って理由。

VMから実ハードに移した時用ってのもあるわけで。

1.空のフロッピーイメージを作成する
dd if=/dev/zero of=ks.img bs=512 count=2880
su -
#losetup /dev/loop1 ks.img
#mkdosfs -F 12 -S 512 -R 1 -I -v /dev/loop1
#losetup -d /dev/loop1
2.作成したフロッピーイメージをマウント
#mount -o loop -t vfat ks.img /mnt/fd
3.ks.cfgを書き込む
cp ks.cfg /mnt/fd
4.フロッピーイメージをアンマウント
umount /mnt/fd

5.VMWareで作成したイメージをマウント

6.boot画面でKickStart
linux ks=hd:fd0/ks.cfg

ks.cfgの%post以下に書いたのは以下。

%post

#for LANG=euc-jp
echo "LANG=\"ja_JP.eucJP\"" > /etc/sysconfig/i18n
echo "SUPPORTED=\"ja_JP.eucJP:ja_JP:ja\"" >> /etc/sysconfig/i18n
echo "SYSFONT=\"lat0-sun16\"" >> /etc/sysconfig/i18n
echo "SYSFONTACM=\"8859-15\"" >> /etc/sysconfig/i18n

yum -y install yum-plugin-fastestmirror

#for ntpd
yum -y install ntp
cp /etc/ntp.conf /etc/ntp.conf.org
cat /etc/ntp.conf.org|sed -e "/server 0.pool.ntp.org/i server ntp.nict.jp"|sed -e "/.org$/d" > /etc/ntp.conf
ntpdate ntp.nict.jp
chkconfig ntpd on

#change MTA to postfix
yum -y remove sendmail
yum -y install postfix

#for update
yum -y update

#for clean service
chkconfig mdmonitor off
chkconfig rawdevices off
chkconfig xfs off
chkconfig kudzu off
chkconfig isdn off
chkconfig lvm2-monitor off
chkconfig smartd off
chkconfig acpid off
chkconfig rpcidmapd off
chkconfig openibd off
chkconfig portmap off
chkconfig messagebus off
chkconfig readahead off
chkconfig apmd off
chkconfig xinetd off
chkconfig autofs off
chkconfig iiim off
chkconfig cpuspeed off
chkconfig readahead_early off
chkconfig gpm off
chkconfig atd off
chkconfig cups off
chkconfig microcode_ctl off
chkconfig haldaemon off
chkconfig netfs off
chkconfig pcmcia off
chkconfig nfs off
chkconfig nfslock off

シェルはよくわからん。

VMイメージを作成後

clip_2.jpg

必ずこうなる。同じVMイメージで再インストールすると出なかったり。

■全てやったあとに気づいたこと。
clip_3.jpg

VMWareからFDイメージ簡単に作れるじゃん…

mb_http_outputで文字化け

Yahoo!ブックマークに登録 はてなブックマークに追加 del.icio.usに追加 livedoorクリップへ追加 Buzzurlに追加 POOKMARK Airlinesへ追加 newsingへ投稿 Saafブックマークに追加

以前書いた文字コード変換して出力する方法ですが、穴がありました…

mb_internal_encodingがSJISだと問題ないのですが、
UTF-8だとEUCにご認識してしまう場合がありました。
(まぁautoで変換してこけてるんだろうなぁ…)

で、回避方法としては明示的にmb_internal_encodingを指定してあげればOK。

mb_internal_encoding("UTF-8");
mb_http_output("SJIS");
ob_start("mb_output_handler");

2007年11月21日

CentOS4.5環境初期構築

Yahoo!ブックマークに登録 はてなブックマークに追加 del.icio.usに追加 livedoorクリップへ追加 Buzzurlに追加 POOKMARK Airlinesへ追加 newsingへ投稿 Saafブックマークに追加

最低限必要な物のまとめ。これをVMイメージで保存しておくと、
色々試してみたりするときにとっても便利だったりするのでお勧め。

1.文字化け対策
「/etc/sysconfig/i18n」を修正

-----------------------------
LANG="ja_JP.UTF-8"
SUPPORTED="ja_JP.UTF-8:ja_JP:ja"
SYSFONT="latarcyrheb-sun16"
-----------------------------
      ↓
-----------------------------
LANG="ja_JP.eucJP"
SUPPORTED="ja_JP.eucJP:ja_JP:ja"
SYSFONT="lat0-sun16"
SYSFONTACM="8859-15"
-----------------------------

2.yum plugin「fastestmirror」のインストール
#yum -y install yum-plugin-fastestmirror

※4.5からデフォルト設定がにplugin=1に変更されている。

3.yumを使ってアップデート
#yum -y update
4.kernelアップデートのためにリスタート
#reboot

5.lessコマンドだと文字化けするのでlvをインストール

cd /usr/local/src/
wget http://www.ff.iij4u.or.jp/~nrt/freeware/lv451.tar.gz
tar -zxf lv451.tar.gz
cd lv451/src/
./configure
make -j
make install

6.マニュアル文字化け対策のためのPAGER変更
「/etc/man.config」を修正
--------------------------------------
PAGER /usr/bin/less -iRs
--------------------------------------

--------------------------------------
PAGER /usr/local/bin/lv
--------------------------------------

7.ntpインストール
#yum install -y ntp

8.「/etc/ntp.conf」を修正
server部分を下記に変更
--------------------
server ntp.nict.jp
server ntp.nict.jp
server ntp.nict.jp
--------------------

9.時刻修正
ntpdate ntp.nict.jp
10.ntpd起動
#service ntpd start
11.sendmailアンインストール
#yum remove -y sendmail
12.postfixインストール
#yum install -y postfix
chkconfig postfix on
13.不要(そうな)サービスを停止させる
chkconfig mdmonitor off
chkconfig rawdevices off
chkconfig xfs off
chkconfig kudzu off
chkconfig isdn off
chkconfig lvm2-monitor off
chkconfig smartd off
chkconfig acpid off
chkconfig rpcidmapd off
chkconfig openibd off
chkconfig portmap off
chkconfig messagebus off
chkconfig readahead off
chkconfig apmd off
chkconfig xinetd off
chkconfig autofs off
chkconfig iiim off
chkconfig cpuspeed off
chkconfig readahead_early off
chkconfig gpm off
chkconfig atd off
chkconfig cups off
chkconfig microcode_ctl off
chkconfig haldaemon off
chkconfig netfs off
chkconfig pcmcia off
chkconfig nfs off(NFSを使用しない場合)
chkconfig nfslock off(NFSを使用しない場合)

2007年11月14日

memcachedをレプリケーション

Yahoo!ブックマークに登録 はてなブックマークに追加 del.icio.usに追加 livedoorクリップへ追加 Buzzurlに追加 POOKMARK Airlinesへ追加 newsingへ投稿 Saafブックマークに追加

repcached 1.0

●要約
・memcachedにレプリケーション機能を追加
・レプリケーション機能追加によるパフォーマンス低下はなし
・逆に冗長化することでパフォーマンスが上がる場合があるかも。
・ネットワークは1000Base-T推奨。

意外とネットワークによるボトルネックってないもんだなぁ。
tmpfsをNFSとかiSCSIでやっても同様の結果になるのかな?
memcachedよりバックアップや容量管理回りが良いと思ったわけで。

memcached もどきにレプリケーション機能とディスク保存機能を追加したもの
未完成っぽい。
大きな違いはディスク保存機能がrepcachedにはない点。

2007年11月09日

CentOS5インストール

Yahoo!ブックマークに登録 はてなブックマークに追加 del.icio.usに追加 livedoorクリップへ追加 Buzzurlに追加 POOKMARK Airlinesへ追加 newsingへ投稿 Saafブックマークに追加

CentOS5は結構変わってるのでインストールというか初期設定ではまりがち…
パッケージ群の変更。SELinux、iptablesは強制ON。
okok押しまくってたらipv6が有効になってたりしてさあ大変。
まぁそれは初期設定でOFFにすればOKってことでとりあえずぶっこみます。

CentOS5インストールの続きを読む

CentOS4.5インストール

Yahoo!ブックマークに登録 はてなブックマークに追加 del.icio.usに追加 livedoorクリップへ追加 Buzzurlに追加 POOKMARK Airlinesへ追加 newsingへ投稿 Saafブックマークに追加

インストールメディアはDVD(イメージファイル)を使います。
目的はサーバ用途なのでGUIは入れずに必要最低限のパッケージに絞ります。
いわゆるLAMPセットということで。
Apache2.0、MySQL4.1、5.0、5.1、PHP5あたりを扱おうかと。
Oracle11gExが出たら試してみたいところです。Oracle10gExすら試してないけれども…
まぁ本命はMySQL5.1ですね。年内にはstable出るよねきっと…?

で、話はそれまくりましたが、CentOS4.5のインストール手順。

CentOS4.5インストールの続きを読む

2007年11月08日

VMWare6でCentOS5用イメージ作成

Yahoo!ブックマークに登録 はてなブックマークに追加 del.icio.usに追加 livedoorクリップへ追加 Buzzurlに追加 POOKMARK Airlinesへ追加 newsingへ投稿 Saafブックマークに追加

さくっと第弐弾。
今回はCentOS5用にイメージ作成。

といってもほとんどCentOS4.5と変わらないので割と手抜きだったり。

VMWare6でCentOS5用イメージ作成の続きを読む

VMWare6でCentOS4.5用イメージ作成

Yahoo!ブックマークに登録 はてなブックマークに追加 del.icio.usに追加 livedoorクリップへ追加 Buzzurlに追加 POOKMARK Airlinesへ追加 newsingへ投稿 Saafブックマークに追加

第一弾VMWare6でCentOS4.5をインストール。
4.4でアップデートしたら4.5になっちゃうので、もう4.5でいいかなと。

1からってことでまずはイメージ作成から。

VMWare6でCentOS4.5用イメージ作成の続きを読む

2007年11月02日

MySQLで全文検索(その1)

Yahoo!ブックマークに登録 はてなブックマークに追加 del.icio.usに追加 livedoorクリップへ追加 Buzzurlに追加 POOKMARK Airlinesへ追加 newsingへ投稿 Saafブックマークに追加

を試してみたので後日レポートに書くとます。。。

内容気にせずにとりあえずブログ更新を二日に一回は更新したいところ。

の第一弾。今回はネタなし。

全文検索回りを調べたのでそこら辺をネタにする予定。
主にMySQLになると思われ。

あとはVM使って、CentOS4.5とCentOS5.0あたりをネタにしようかと。

今のところメインはbemani SNSのリニューアル作業なり。。。

2007年10月25日

WebAPIまとめ

Yahoo!ブックマークに登録 はてなブックマークに追加 del.icio.usに追加 livedoorクリップへ追加 Buzzurlに追加 POOKMARK Airlinesへ追加 newsingへ投稿 Saafブックマークに追加

最近の主流というか開発ポリシーはデータマイニングしつつ、弱小サイトなので
PRにサーチエンジンと仲良くしていければいいなぁという方針。
で、そのデータ元は流行(?)のWebAPIでなんとかしちゃえ的な発想。

サービス的に二番煎じだろうが、システムはフルスクラッチでがんばっちゃえば、
まぁ技術的にも何か新しい発見がいいなぁというポジティブシンキングで。

十人十色って言うぐらいに人のニーズをくみ取るのが一番難しいですな。
そんな私のトレンドはネットショッピング。ひたすら買い物大好き。
コストパフォーマンスが良い物は大好きなのだが、コストとパフォーマンス
どっち重視するかっていうと、やっぱりパフォーマンス不足ってのが一番後悔
するので、ついつい…というのが玉に瑕。

と、脱線しちゃったけど…

■以下使えそうなWebAPIまとめ。

・全国の路線と駅名「鉄道路線一覧など」
http://www.mashupedia.jp/webapis/view/276228

・WikipediaとMeCabから解析「キーワード抽出API」
http://www.mashupedia.jp/webapis/view/196827

・緯度経度から調べる「Weather API」
http://www.mashupedia.jp/webapis/view/148193

・パソコンや家電の価格を比較「coneco.net Web Services」
http://www.mashupedia.jp/webapis/view/26830

・地球温暖化防止「バスでお出かけAPI」
http://www.mashupedia.jp/webapis/view/20974

・タグクラウドを自動生成「ZoomClouds API」
http://www.mashupedia.jp/webapis/view/10572

・高いカスタマイズ性「マピオンAPI 」
http://www.mashupedia.jp/webapis/view/8712

・コンビニがあれば「ネットプリント・サービス連携インターフェイス
http://www.mashupedia.jp/webapis/view/2451

・ローマ字変換「SumibiWebAPI」
http://www.mashupedia.jp/webapis/view/2387

・住所から緯度経度へ変換「クネヒト Geocoding API 」
http://www.mashupedia.jp/webapis/view/975

・連想検索エンジンで遊ぼう「reflexa Web API」
http://www.mashupedia.jp/webapis/view/196

・YouTube API
http://www.mashupedia.jp/webapis/view/100

・SimpleAPI「最寄り駅Webサービス」
http://www.mashupedia.jp/webapis/view/33

・簡単きれい「Kagami - Web2.0風 映りこみ(反射)画像API 」
http://www.mashupedia.jp/webapis/view/239

・ブログを斜め読みする「TSUBUAN」
http://www.mashupedia.jp/webapis/view/203

・吹き出しでサムネイル「websnapr 2.0」
http://www.mashupedia.jp/webapis/view/268

・最寄駅はひとつじゃない「緯度経度駅検索API」
http://www.mashupedia.jp/webapis/view/272

・ATMや駐車場も「ドコイク?Webサービス」
http://www.mashupedia.jp/webapis/view/947

・コンビニがあれば「ネットプリント・サービス連携インターフェイス」
http://www.mashupedia.jp/webapis/view/2451

・Yahoo! 動画検索Webサービス
http://www.mashupedia.jp/webapis/view/14

・物欲がとまらなくなる「TilePlex API」
http://www.mashupedia.jp/webapis/view/293

・HTML2PDF.BIZ
http://www.mashupedia.jp/webapis/view/22

・単語を見つける「カケラの樹キーワード抽出XML-RPC API」
http://www.mashupedia.jp/webapis/view/364

2007年10月21日

MySQL4でテーブルパーティショニング

Yahoo!ブックマークに登録 はてなブックマークに追加 del.icio.usに追加 livedoorクリップへ追加 Buzzurlに追加 POOKMARK Airlinesへ追加 newsingへ投稿 Saafブックマークに追加

チックなことをMERGEテーブル(MRG_MyISAM)を使ってやってみたので備忘録。

まず制限事項
・REPLACE構文が使用不可

ついでに圧縮テーブルの制限事項
・読み取り専用になる


構成としては

A
├A000
├A001
└A002

AはMERGEテーブルなので実データはない。
A000がアクティブテーブル、A001,A002はいわゆるアーカイブ。
なので、A001とA002は圧縮テーブルを使用してみる。

A000のデータが一定量を超えたらAXテーブルに移動して、MERGEテーブル
をリビルドするローテートの部分は手動か、別途シェルでも作成する
必要がある。

ローテートサイズは、テーブル構成やサーバ性能にもよるが、データサイズで200Mとか。

(200*1024*1024)/AVG_ROW_LENGTH=ローテートレコード数

以下AAテーブルを上記構成にした時の作業ログ。

mysql>SHOW TABLE STATUS LIKE AA \G

で、テーブル構成を調べられる。

※AAテーブルは500Mbyte、150万レコード、AVG_ROW_LENGTH:140
 分割レコード数は60万

■データ分割 ・A001
mysql>CREATE TABLE A001 SELECT * FROM AA LIMIT 0,600000;
・A002
mysql>CREATE TABLE A002 SELECT * FROM AA LIMIT 600000,600000;
・A000
mysql>CREATE TABLE A000 SELECT * FROM AA LIMIT 1200000,600000;
■テーブル圧縮 cd 「AAテーブルデータが格納されているディレクトリ」
myisampack -v A001
myisamchk -rq --analyze --sort-index A001.MYI
myisampack -v A002
myisamchk -rq --analyze --sort-index A002.MYI

※テーブルを圧縮した後に必ずインデックスをリビルドしておかないとエラーになる。
 参考速度:テーブルデータ:235M、インデックスデータ52Mの場合で37s,18s
 @CPU:Xeon5110*2,Memory:4G,HDD:SAS 15Krpm*2(RAID-1)

圧縮率は約50%程。

■マージテーブル作成
mysql>SHOW CREATE TABLE AA;
でDDL作成して、MERGEテーブル用に修正すると
CREATE TABLE A (........) DEFAULT CHARSET=utf8
ENGINE = MERGE
UNION = (A001,A002,A000) INSERT_METHOD = LAST
となる。

※AUTO_INCREMENTは値指定無しでも自動的に最後尾に追加される

アクティブテーブルが閾値を超えた場合は、A003テーブルにローテート後、
MERGEテーブルを再構築(DROP、CREATE)する。

2007年10月16日

VMWare Workstation 6を入れてみた

Yahoo!ブックマークに登録 はてなブックマークに追加 del.icio.usに追加 livedoorクリップへ追加 Buzzurlに追加 POOKMARK Airlinesへ追加 newsingへ投稿 Saafブックマークに追加

■変更点とか

・VNC
に対応

・互換性
Workstation6で作成された仮想マシンは互換性がないらしい。

・新対応
Windows Vista、RedhatES5に対応

・マルチモニタ表示機能
2台目のモニタで仮想マシンを表示

・USB 2.0デバイスをサポート
高速ストレージやiPodなどに対応

・バックグラウンド機能
バックグラウンドで仮想マシンを実行できる


個人的な使い方としては、ホストOSがWindowsの場合はWorkstation
ゲストOSがLinuxの場合はServerを使おうかなと。

ライセンス的にWorkstationだと外部に公開できないし、
ぶっちゃけServerでも割と事足りたりする。

Serverだとスナップショットが使えないが、仮想イメージごとコピっておけば
割と事足りるので問題ないし。

基本的にゲストOSはLinux系(CentとかFedoraぐらい)しか使うことないので、
Windows系を利用するって人には参考にならないかも。

CentOSでRAMディスクを使ってみる

Yahoo!ブックマークに登録 はてなブックマークに追加 del.icio.usに追加 livedoorクリップへ追加 Buzzurlに追加 POOKMARK Airlinesへ追加 newsingへ投稿 Saafブックマークに追加

DISK I/Oでボトルネックになっているケースに対する対策を考えてみる。
ということで、物理メモリを仮想ディスクとして利用できるRAMディスクの実験。

手軽に使えるmemcachedみたいなイメージで。

OSレベルでのファイルキャッシュで事足りることもあるかもしれないが、
明示的にメモリ内で処理できると幸せみたいなケースに有効かと思われる。

ハード、OS構成は下記。尚、ベンチマークツールはbonnie++を使用する。

■テスト構成
CPU:Xeon5110*2
Memory:4G
HDD:144G*2(SAS,15krpm,RAID-1)
OS:CentOS4.4(2.6.9-42.0.10)
■bonnie++インストール
#wget http://www.coker.com.au/bonnie++/bonnie++-1.03a.tgz
cd bonnie++-1.03a
./configure
vi bonnie.h
------------------------------
>>#define MinTime (0.5)
<<#define MinTime (0.01)
------------------------------
make
■環境準備
# df -h
------------------------------------------------------------
Filesystem サイズ 使用 残り 使用% マウント位置
/dev/sda3 130G 44G 80G 36% /
/dev/sda1 122M 20M 96M 18% /boot
none 2.0G 0 2.0G 0% /dev/shm
------------------------------------------------------------

# mkdir /mnt/ram
# umount /dev/shm
# mount -t tmpfs -o size=512m tmpfs /dev/shm
# mount -t tmpfs -o size=512m /dev/shm /mnt/ram
■測定1(RAMディスク)
./bonnie++ -u root -d /mnt/ram -s 500 -r 250
■測定2(ハードディスク)
./bonnie++ -u root -d /tmp
■結果1
------Sequential Output------ --Sequential Input- --Random-
-Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--
Machine Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP /sec %CP
500M 52244 99 865214 100 893525 99 55364 99 1863858 100 201366 208
------Sequential Create------ --------Random Create--------
-Create-- --Read--- -Delete-- -Create-- --Read--- -Delete--
files /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP
16 272816 99 592291 97 320294 99 278214 100 521135 101 249569 100

read:1820M/s
write:845M/s

■結果2
------Sequential Output------ --Sequential Input- --Random-
-Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--
Machine Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP /sec %CP
cardinal 8G 40427 85 71808 24 23838 5 31428 58 62805 5 321.7 0
------Sequential Create------ --------Random Create--------
-Create-- --Read--- -Delete-- -Create-- --Read--- -Delete--
files /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP
16 53228 97 327667 99 61305 99 55198 100 507259 99 63985 99

read:70M/s
write:61M/s


■総論
readで約26倍、writeで約14倍の速度がRAMディスクで測定された。
例えば、スレーブデータベースなどハードウェアレベルで冗長化された物に対しては、
利用できる可能性もあるかも。
後は、PEARのCache_Liteをmemcachedで行うより簡単に実装ができるような。

2007年07月17日

postfixのEnvelope FROM

Yahoo!ブックマークに登録 はてなブックマークに追加 del.icio.usに追加 livedoorクリップへ追加 Buzzurlに追加 POOKMARK Airlinesへ追加 newsingへ投稿 Saafブックマークに追加
/etc/postfix/main.cfで
expand_owner_alias = yes
owner_request_special = yes

と設定し、

/etc/postfix/aliasesで

hoge: poo@foo.com
owner-hoge: poo2@foo.com

と設定すると、hoge宛のEnvelope FROMがpoo2@foo.comに。

expand_owner_alias = no

だとhoge宛のEnvelope FROMがowner-hogeになる。

owner_request_specialを有効にすると、Envelope FROMは「owner-」を
付加したものになる。

2007年07月02日

PHPとExcelその2

Yahoo!ブックマークに登録 はてなブックマークに追加 del.icio.usに追加 livedoorクリップへ追加 Buzzurlに追加 POOKMARK Airlinesへ追加 newsingへ投稿 Saafブックマークに追加

PHP4環境で試してみた。

総論でまとめてしまうとSpreadsheet_Excel_Writer系統は全滅。
BIFF8モードで書き込みすると文字化け以外にも問題が発生。

PHP4でBIFF8使うならテンプレ作ってExcel_Reviserで処理するってのがベターかも。
セルの装飾属性の設定ができないので、装飾属性用のテンプレートシートでも作って
おいて、テンプレートシートからセルの装飾属性のコピーをして(コピーはできる)出力
する前にテンプレートシートを消せばほぼほぼ対応はいけるかも。

テンプレート作るの面倒…

PHP4でやるならCOMでやるのが一番のような。Winサーバ欲しいよ(笑

2007年07月01日

PHPとExcelまとめてみた

Yahoo!ブックマークに登録 はてなブックマークに追加 del.icio.usに追加 livedoorクリップへ追加 Buzzurlに追加 POOKMARK Airlinesへ追加 newsingへ投稿 Saafブックマークに追加

Linuxサーバ前提なのでCOMはなしよ。

PHPExcel
対応:PHP5系
Excel2007対応

PEAR:Spreadsheet_Excel_Writer
対応:PHP4,5系

日本語文字化け対応patch
対応:PHP4,5系
Spreadsheet_Excel_Writerの日本語文字化け修正パッチ

PHP Excel Creator library
対応:PHP4,5系
Spreadsheet_Excel_WriterのBIFF8修正版

Excel_Reviser
対応:PHP4,5系
テンプレート編集型

Spreadsheet_Excel_Writer使うならパッチ当てるか、
Excel Creator libraryを使った方が良いかもしれない。

日本語環境下であればExcel_Reviserのがいいかも。
PHP5環境であればPHPExcelなのかな?

総論としては

■PHP4
日本語文字化け対応patchかPHP Excel Creator library、Excel_Reviser

■PHP5
PHPExcel

の予感。海外産だと日本語周りの不具合がありそうなのでなんとなく。

2007年06月19日

文字コード変換

Yahoo!ブックマークに登録 はてなブックマークに追加 del.icio.usに追加 livedoorクリップへ追加 Buzzurlに追加 POOKMARK Airlinesへ追加 newsingへ投稿 Saafブックマークに追加

PHPでのページ単位での文字コード変換の覚え書き。

1.「Content-Type: text/」の場合
2.「Content-Type: text/」以外の場合
3.JsphonやXML_Serializer使う場合

とりあえずぱっと思いついた3パターン。
やり方が正しいかどうかは別として変換できたことが重要だ(何

1.「Content-Type: text/」の場合

mb_http_output("UTF-8");
ob_start("mb_output_handler");

おもむろに魔法の言葉を並べるだけ。

2.「Content-Type: text/」以外の場合


ob_start();

[html部分]

$out = ob_get_contents();
ob_end_clean();
echo mb_convert_encoding($out,"UTF-8","SJIS");

「Content-Type: text/」以外だとmb_output_handlerが
変換無視ってくれる。XMLとかゴリゴリ書くとき用とか?

直接PHPのソースいじって該当部分修正しちゃうのもアリかもね。

まぁ便宜上html部分と書いてますけど要は出力部分。
一旦バッファに突っ込んで変換かけてそれから出力。

3.JsphonやXML_Serializer使う場合

mb_convert_variables('UTF-8', 'SJIS', $array);
$serial = new XML_Serializer($options);
$result = $serial->serialize($array);
echo $serial->getSerializedData();

上記はXML_Serializerの場合。
つまり配列の値に対して文字コード変換をしてやると。
こんな関数あったんだなぁとしみじみ。

2007年06月13日

セッション用にmemcachedを導入してみる

Yahoo!ブックマークに登録 はてなブックマークに追加 del.icio.usに追加 livedoorクリップへ追加 Buzzurlに追加 POOKMARK Airlinesへ追加 newsingへ投稿 Saafブックマークに追加

時代はInMemoryということで、セッションをファイルからmemcachedに
変更してみる。冗長化している構成でもサーバとしてmemcachedが動く
ので問題ないので割とお奨め。

難点は
・リソース管理ができない
・プロセスダウンでデータクリア
ということぐらい。

ダウン時にイメージをディスクに落としてくれると便利なのになぁ。

CentOS4.4だとrepoにdag追加するだけで後はyumインストールできるので簡単。

■repoにdag追加
rpm -Uhv http://dag.wieers.com/packages/rpmforge-release/rpmforge-release-0.3.6-1.el4.rf.i386.rpm
vi /etc/yum.repos.d/dag.repo
⇒enabled = 0に変更

rpm --import http://dag.wieers.com/packages/RPM-GPG-KEY.dag.txt
■dagからmemcachedをインストール
yum -y --enablerepo=rpmforge install memcached.x86_64
■おもむろに設定
/etc/sysconfig/memcached
PORT,USER,CACHESIZEあたり変更してみる。 ■サービス起動
chkconfig memcached on
service memcached start
■php.iniの変更
session.save_handler = memcache
session.save_path = tcp://127.0.0.1:11211
※既存の物はコメントアウトでもしておこう。 ■apache再起動
/usr/local/apache2/bin/apachectl restart

以上。

eAcceleratorインストール

Yahoo!ブックマークに登録 はてなブックマークに追加 del.icio.usに追加 livedoorクリップへ追加 Buzzurlに追加 POOKMARK Airlinesへ追加 newsingへ投稿 Saafブックマークに追加
■おもむろにconfigure
export PHP_PREFIX="/usr/local/php5.1"
$PHP_PREFIX/bin/phpize
CFLAGS="-O3 -mtune=nocona -msse3 -I/usr/local/include" \
CXX=gcc CXXFLAGS="-O3 -mtune=nocona -msse3 \
-felide-constructors -fno-exceptions -fno-rtti -I/usr/local/include" \
LDFLAGS="-L/usr/local/lib" \
./configure \
--with-php-config=$PHP_PREFIX/bin/php-config \
--enable-eaccelerator \
--with-eaccelerator-shared-memory \
--with-eaccelerator-sessions \
--with-eaccelerator-content-caching \
--with-eaccelerator-disassembler
■php.iniに以下を追加
[eaccelerator]
zend_extension="/usr/local/php5.1/lib/php/extensions/no-debug-non-zts-20050922/eaccelerator.so"
eaccelerator.shm_size = "32"
eaccelerator.cache_dir = "/usr/local/eaccelerator"
eaccelerator.enable = "1"
eaccelerator.optimizer = "1"
eaccelerator.check_mtime = "1"
eaccelerator.debug = "0"
eaccelerator.filter = ""
eaccelerator.shm_max = "0"
eaccelerator.shm_ttl = "0"
eaccelerator.shm_prune_period = "0"
eaccelerator.shm_only = "0"
eaccelerator.compress = "1"
eaccelerator.compress_level = "9"
eaccelerator.keys = "shm_and_disk"
eaccelerator.sessions = "shm_and_disk"
eaccelerator.content = "shm_and_disk"

これも割と迷うことなく。基本的に入れれば速くなる的な感じ。
eAcceleratorの細かい設定とかはコチラがお奨めかも。

PHP5.1 with MySQL4.1インストール

Yahoo!ブックマークに登録 はてなブックマークに追加 del.icio.usに追加 livedoorクリップへ追加 Buzzurlに追加 POOKMARK Airlinesへ追加 newsingへ投稿 Saafブックマークに追加

■まずはMySQL突っ込む
めんどくさかったので、公式RPMをおもむろにぶっ込み。
64bitOSなのでRPMも64bit用を使用する。

Server Standard 4.1.22.0

Client Standard 4.1.22.0

Shared libraries Standard 4.1.22.0

Headers and libraries Standard 4.1.22.0

Test suite Standard 4.1.22.0

■PHPをインストールするときに怒られるので無理矢理リンク
ln -s /usr/bin /usr/local/mysql/bin
ln -s /usr/include/mysql /usr/local/mysql/include
ln -s /usr/share/info /usr/local/mysql/info
ln -s /usr/lib64/mysql /usr/local/mysql/lib
ln -s /usr/libexec /usr/local/mysql/libexec
ln -s /usr/share/mysql /usr/local/mysql/share
■GD用にインストール
yum install -y libjpeg-devel.x86_64
yum install -y libpng-devel.x86_64
yum install -y freetype-devel.x86_64
■64bitだとパス通ってくれないので無理矢理リンク
ln -s /usr/lib64/libjpeg.so.62.0.0 /usr/lib/libjpeg.so
ln -s /usr/lib64/libpng.so.3 /usr/lib/libpng.so
ln -s /usr/lib64/libfreetype.so.6.3.7 /usr/lib/libfreetype.so
■準備ができたのでPHPインストール
CFLAGS="-O3 -mtune=nocona -msse3 -I/usr/local/include" \
CXX=gcc CXXFLAGS="-O3 -mtune=nocona -msse3 \
-felide-constructors -fno-exceptions -fno-rtti -I/usr/local/include" \
LDFLAGS="-L/usr/local/lib" \
./configure \
--prefix=/usr/local/php5.1 \
--with-zlib \
--with-gd \
--with-jpeg-dir=/usr/lib \
--with-png-dir=/usr/lib \
--enable-mbstring \
--enable-mbregex \
--enable-gd-native-ttf \
--with-zlib-dir=/usr/local \
--with-jpeg-dir=/usr/local \
--with-png-dir=/usr/local/libpng \
--with-tiff-dir=/usr/local \
--with-freetype-dir=/usr/local \
--with-pdflib=/usr/local \
--with-gettext \
--enable-sqlite-utf8 \
--with-curl=/usr/local/lib \
--with-mysql=/usr/local/mysql \
--with-iconv \
--with-config-file-path=/usr/local/php5.1 \
--with-apxs2=/usr/local/apache2/bin/apxs \
--with-pear=/usr/local/php5.1/pear


apacheインストール

Yahoo!ブックマークに登録 はてなブックマークに追加 del.icio.usに追加 livedoorクリップへ追加 Buzzurlに追加 POOKMARK Airlinesへ追加 newsingへ投稿 Saafブックマークに追加
CFLAGS="-O3 -mtune=nocona -msse3 -I/usr/local/include" \
CXX=gcc CXXFLAGS="-O3 -mtune=nocona -msse3 \
-felide-constructors -fno-exceptions -fno-rtti -I/usr/local/include" \
LDFLAGS="-L/usr/local/lib" \
./configure \
--prefix=/usr/local/apache2 \
--enable-so \
--enable-rewrite

2.2系は挙動が不明な点もあるので、安全策として2.0をチョイス。

gccオプションをCPUに最適化してみる振りをして、
割と普通にコンパイル。

まぁApacheなら何も悩むことないやね。

素人がサーバを構築してみた

Yahoo!ブックマークに登録 はてなブックマークに追加 del.icio.usに追加 livedoorクリップへ追加 Buzzurlに追加 POOKMARK Airlinesへ追加 newsingへ投稿 Saafブックマークに追加

さてと、長らく放置してたのでサーバ構築のドキュメント
でもまとめてみよう。
ハードについては選定基準ぐらいかな。
ソフトについてはインストールと設定周りと苦労ネタ。
項目は下記。

■サーバ
CPU:Xeon5110*2
メモリ:4G
HDD:SAS/146G/15000rpm/RAID-1

モノはDell PowerEdge 2950カスタム。
でかい五月蠅い重い速い。
サイズの割には消費電力は割と押さえられている。
ラックに入れるときは専用レールが必要なので注意。

メモリは最低4Gできれば8Gで検討していたので、まぁ妥当ライン。
予算の兼ね合いで(ry
今のご時世メモリも安くなったしは積めるだけ積んだ方が
幸せになれます。とはいえ、サーバ用途のメモリは高いですけど。。。

■ソフト
OS:CentOS4.4(64bit)
Web:Apache2.0.58
App:PHP5.1.6 on eAccelerator 0.9.5
DB:MySQL4.1.21
etc:memcached
etc:munin

んじゃまた次回。

2007年02月20日

ob_implicit_flushが使えない!

Yahoo!ブックマークに登録 はてなブックマークに追加 del.icio.usに追加 livedoorクリップへ追加 Buzzurlに追加 POOKMARK Airlinesへ追加 newsingへ投稿 Saafブックマークに追加

久々にはまりました。ということでメモ。

実際どういうことかというと、実際に見た方が早いので、

パターンA

パターンB

を用意しました。パターンAになれば成功です。グラフィカルに表示させたい。
が、パターンBになっててはまりました。

ob_implicit_flushがどういうものかっていうのは割愛して、ob_implicit_flushを
使ってもうまく動かないって場合の説明。
mod_gzipが有効になっているか確認しましょう。

Port80 Software: Fortune 1000 HTTP Compression Survey

おそらくmod_gzipが有効になっているはずなので、.htaccessで無効にします。

<Files *.php>
<ifmodule mod_gzip.c>
mod_gzip_on no
</ifmodule>
</Files>

実はパターンAはmod_gzipが無効で、パターンBが有効の状態なだけでコードは全く一緒です。
mod_gzipの特性を考えると至極当たり前なことなんですが忘れてた!!

2007年01月26日

MySQL 各ストレージエンジン比較

Yahoo!ブックマークに登録 はてなブックマークに追加 del.icio.usに追加 livedoorクリップへ追加 Buzzurlに追加 POOKMARK Airlinesへ追加 newsingへ投稿 Saafブックマークに追加

下記、4つエンジンを比較してみる。

  • MyISAM
    ⇒一番扱い易い。ただし、トランザクションが使えない。
  • InnoDB
    ⇒唯一トランザクションが使用可能。但し、MyISAMよりは遅い。
  • Archive
    ⇒パフォーマンスが落ちる代わりに、データ容量を圧縮。
     インデックス使用不可。レコード挿入可能。
  • Memory
    ⇒メモリ上にテーブルを作成。詳細は前述。
  • どれも一長一短で、Case-by-caseで使い分ければ、
    使える場面もあるかもしれない。
    基本はMyISAMかInnoDBの二択。
    トランザクションが必要か不要かを気にする程度
    で良いかと思われる。

    ストレージエンジンの処理性能比較

    MySQL MEMORYエンジン

    MySQL MEMORYエンジン

    Yahoo!ブックマークに登録 はてなブックマークに追加 del.icio.usに追加 livedoorクリップへ追加 Buzzurlに追加 POOKMARK Airlinesへ追加 newsingへ投稿 Saafブックマークに追加

    MySQL MEMORYエンジン(4.0まではHEAPエンジン)メモ

    max_heap_table_sizeまでのテーブルが作成可能。
    下記制限と特徴がある。

  • 複数のクライアントからアクセスが可能

  • HashとBtreeの2つのインデックスが使用可能

  • メモリ内に作成されるのでアクセスが非常に高速

  • ユニークなインデックスは不可

  • 固定長のフィールドだけを扱う事ができる

  • BLOB、TEXT型は使用不可

  • AUTO_INCREMENTは使用不可

  • NULLを許しているフィールドにインデックスが使用不可

  • インデックスは=と<=>の比較演算子が使用されたときだけ使用される

  • MySQLサーバプロセスが消滅するとテーブルも消滅
  • インメモリDBライクな使い方ができるわけではない模様。
    参照系の制限があるので、そこまで期待できる速度は出ない。

    MemoryとArchive

    MySQLスケールアウト考察

    Yahoo!ブックマークに登録 はてなブックマークに追加 del.icio.usに追加 livedoorクリップへ追加 Buzzurlに追加 POOKMARK Airlinesへ追加 newsingへ投稿 Saafブックマークに追加

    MySQLオフィシャルのセミナーの資料をもらったので、
    MySQLに限ったお話だけど蘊蓄。
    また、実際導入した訳ではないので、詳細に関しては不明というのが前提。

    MySQLはレプリケーション機能がついている。
    また、MySQL Clusterを使用することでも対応が可能。
    レプリケーションとは物理的にサーバを増やして、
    負荷分散をする機能。(ミラーリングみたいな)

    個人的な見解ではレプリケーション機能の上位が、
    MySQL Clusterであると感じた。
    但し、MySQL ClusterはフロントはインメモリDBで受けつつ、
    各ノード(MySQLServer)と通信をしているので、
    通常のレプリケーションよりかなり高速である。
    但し、MySQL Clusterを入れるサーバに関しては、
    大容量のメモリが必要であり、64bitOSの使用が望ましい。
    (データ量にもよるが、8G程度は欲しい。)

    割とMySQLの場合はメモリ増やしてどうにかなるという
    パターンも多い。ストレージをMEMORYタイプにして、
    なんちゃってインメモリDB化とかも可能かと思う。

    時代はメモリということか…ッッ!
    まぁ、メモリも安くなったし、64bitOSで扱える量も増えた
    ので、自然な流れではあるかと思う。

    が、個人レベルで使うには遠い話です(笑
    個人でやるならメモリをドカンと乗せて、MEMORYストレージと
    バッファにガン付けするぐらいが精一杯かなぁ。

    以下参考資料。

    現場指向のレプリケーション詳説

    レプリケーションで負荷分散と可用性

    レプリケーションいろいろ

    レプリケーションを使う

    MySQL 5.1期待のクラスタリング機能

    MySQL Clusterを試す

    MySQL Cluster の最適構成

    2007年01月24日

    MySQL起動・再起動

    Yahoo!ブックマークに登録 はてなブックマークに追加 del.icio.usに追加 livedoorクリップへ追加 Buzzurlに追加 POOKMARK Airlinesへ追加 newsingへ投稿 Saafブックマークに追加

    ソースインストールしてるとついつい忘れがちなので備忘録。
    設定変更時ぐらいしか触らないので尚更忘れがち。。。
    このあたりRPMだったらすげー楽だなぁと。

    インストールディレクトリは「/usr/local/mysql/」の場合

    ■起動
    /usr/local/mysql/bin/mysqld_safe &

    ■終了
    /usr/local/mysql/bin/mysqladmin -u root shutdown

    ■起動スクリプト
    /usr/local/mysql/share/mysql/mysql.server

    2007年01月10日

    ぼちぼち春対策やってます。

    Yahoo!ブックマークに登録 はてなブックマークに追加 del.icio.usに追加 livedoorクリップへ追加 Buzzurlに追加 POOKMARK Airlinesへ追加 newsingへ投稿 Saafブックマークに追加

    今は参考書を流し読みしつつ、載ってる問題を解いている感じ。

    今読んでいるのは3つ。

    テクニカルエンジニア試験 データベース 完全教本〈2007年版〉
    新版 データベース技術―情報処理技術者試験対策書
    情報処理教科書 テクニカルエンジニア [データベース] 2006年度版

    3冊用意した理由は、本によって解説の善し悪しがあるため。
    図が欲しい部分でなかったりとかが一番痛い。ま、上記で大体カバーできると思われる。
    強いていうなら、新版 データベース技術が一番いいかな。とても親切。

    2月後半~3月頭ぐらいにかけて、予想問題集と過去問の追い上げ週間。

    2007 データベース予想問題集
    3週間完全マスター テクニカルエンジニア(データベース)2006年版の2007年度版

    で、たぶん一通り終わる見積もり。

    テクニカルエンジニアの出題範囲は
    1.コンピュータシステム
    2.システムの開発と運用
    3.セキュリティと標準化
    4.データベース技術
    とあって、1~3までは午前問題なので、なんとかなればいいなと。
    どっちかっていうと、午前問題のがヤバいんだけど。。。まぁそれも追々。

    データベース技術の内訳として、
    1.データモデリング
    2.正規化理論
    3.SQL
    4.データベースマネジメントシステム
    5.DBMSの選定
    6.業務知識

    このうち特にヤバいのが、1と2。寧ろ他は実務やってる人間なら苦はないかと。
    1はとにかく言葉遊びというか理論の話で正直普段ほとんど使うことがなく、
    名前なんてあったのか!?ってのまでちらほら。

    ひさびさに学生時代を思い出す…ッッ!!
    一番辛いのは使わない知識を覚えないと点数が取れないってこと…
    つまり、無駄無駄無駄無駄無駄無駄無駄ッッ!!
    学生時代って無駄な物ばっかだったよなぁ…

    Oracleやったことない人間がOracleMaster取るよりかは、勉強は楽しい。
    簡単という言葉は受かってからにしよう…(マテ

    こういうネタ書いてて落ちたら正直恥ずかしいので、自分を崖っぷち
    まで追い込んでみようじゃないか!
    しかし、最終スキル戦線離脱とかありそうで怖い。スケジュール合わないんだよなぁ…
    ホントなら1月中にOracleMasterBronze取る予定が、全然予定は未定なので、
    うまいことスケジュール合わせて、事前に試験慣れしないといけないなぁと思うわけで。

    適当に試験対策ノートにできればいいなっと。

    2007年01月09日

    SQLパズル

    Yahoo!ブックマークに登録 はてなブックマークに追加 del.icio.usに追加 livedoorクリップへ追加 Buzzurlに追加 POOKMARK Airlinesへ追加 newsingへ投稿 Saafブックマークに追加

    パズルとしてだけでなく、逆引きとして使っても良いかもしれない。

    OracleSQLパズル
    MySQLパズル
    正規表現パズル

    最近思うのが、OracleってSQL書くの便利だなぁと。
    当たり前っちゃ当たり前なんだけれども。

    個人で使用しているDBはMySQLは4.0と4.1の併用していて、
    まずはまるのが、

    Oracleで通る文法が通らない!
         ↓
    MySQL4.1だったら通るのに!
         ↓
    結局TemporaryTable使って分割か…orz

    と。。。
    スマートで、コストが一番安いコードってのは、頭で覚えるより体で慣れろ!
    ってことなんだろうか。
    今更ながらMySQLのハイパフォ本を読んだけれど、管理者視点では良い本かもしれない。
    が、開発視点としては微妙かも。
    クエリが遅かったら直せ⇒ハードリソースが足りなかったら増やせ
    と、当たり前といえば当たり前のことしか書いてない。
    事例中心のデータベース本ってないかなぁ。
    おらおらオラクルみたいな。噂通り、名前の割には内容がすごい本でした(笑

    2006年11月11日

    春に向けて

    Yahoo!ブックマークに登録 はてなブックマークに追加 del.icio.usに追加 livedoorクリップへ追加 Buzzurlに追加 POOKMARK Airlinesへ追加 newsingへ投稿 Saafブックマークに追加

    今年の春は情報セキュリティを受けようと思いつつも、
    見事に仕事とブッキングでブッちするはめに…。

    秋は見事に忘れててもうだめぽ。

    ま、気を取り直して来年の春対策から考えてみる。
    来年の予定は
    ・春:データベース
    ・秋:プロジェクトマネージャ
    の二本立ての予定。PMは割とおまけです。

    データベースは、いろんな意味で押さえておかなくちゃいけない様な
    気がするので。まぁ実際使ってるし。

    今から春まで勉強とかモチベーションが続くわけもないので、
    間にベンダー試験を入れてみることにします。
    ということで、オラクルマスター10gのSilverでも取るかーと思ったら
    制度改正でBronze取らないとだめっぽいとか。
    正直Oracleとか使ったことないんだけどまぁ趣味で取ってみます。
    受験料はBronzeで30000円、Silverはプラス15000円。
    Goldはさらに10万ぐらいかかるので、自腹じゃ辛いのでSilver目標に。

    MySQLクックブック〈VOLUME2〉


    で、とりあえず形から入ってみようということでAmazon先生でお買い物。

    MySQLクックブック〈VOLUME1〉
    MySQLクックブック〈VOLUME2〉
    MySQL全機能リファレンス

    実践ハイパフォーマンスMySQL

    新版 データベース技術―情報処理技術者試験対策書
    テクニカルエンジニア試験 データベース 完全教本〈2007年版〉

    オラクルマスター教科書 Bronze Oracle Database 10g(DBA10g)編
    オラクルマスター教科書 Bronze Oracle Database 10g【SQL基礎I】編


    突っ込んだ後に値段に驚愕。
    そして、ここまでDB一色になるとは思わなかったw
    見ての通り、オラクル対策、春対策、MySQL本。
    春対策の2007年版がまだ出ていないようなので、とりあえず出ているものだけ購入。
    後は中古で2,3冊ほど。

    おまけで、これからデータベースを使う、勉強するという人のための教科書の紹介。
    データベース技術教科書―DBMSの原理・設計・チューニング
    データベースとはそもそもなんぞや?みたいな疑問は解決するが、
    実際にどう使うかまでは書いてない。
    但し、原理から設計・チューニングまで概念を網羅していて読みやすいのでお薦め。

    実際設計しなきゃいけないってなった時の本としては、
    現場で使えるデータベース設計
    が良いかも。

    現場で使えるSQL 第2版
    の旧版は割と愛用しているけど、2版どうしようか悩み中。

    本って結構お金かかるなーといつもまとめ買いした時には思ってしまう。

    2006年11月05日

    サーバ構築メモ

    Yahoo!ブックマークに登録 はてなブックマークに追加 del.icio.usに追加 livedoorクリップへ追加 Buzzurlに追加 POOKMARK Airlinesへ追加 newsingへ投稿 Saafブックマークに追加

    とりあえず今回構築した環境のメモと感想。
    詳細はまた後日。

    ・RedHatES3(CentOS4.4)
    ⇒RedHat系ならどっちでも変わらないかも。

    ・Apache2.2.3
    ⇒2.2系は癖が強いので、2.0系でもよかったかもしれない。

    ・PHP5.1.6
    ⇒5.1系は速いと思う。MySQLのクライアント付属しなくなったのが注意点。

    ・eAccelerator0.9.5
    ⇒お手軽簡単パワーアップ。

    ・MySQL4.1.20
    故あってこのバージョン。4.1系からは文字コードの癖がめんどくさい…

    ・postfix2系
    ⇒導入に手こずる…個人的にはMTAで一番使いやすいような。

    ・AWStats6.5日本語対応版
    ⇒フリーのアクセスログからの解析ツールでは一番いいんではないでしょうか。
     1日のアクセスログが300MB程度なので、処理時間がかかるのが玉に瑕。

    ・cacti
    ⇒MRTGよりお手軽。SNMPの設定ではまりつつ…cactiの設定自体は簡単。

    ・ログローテート
    ⇒Perl製自前スクリプト。

    ・MySQLバックアップ
    ⇒自前というほどでもないけど自前シェル。

    2006年10月16日

    レンタルサーバを探すのだ(実践編)

    Yahoo!ブックマークに登録 はてなブックマークに追加 del.icio.usに追加 livedoorクリップへ追加 Buzzurlに追加 POOKMARK Airlinesへ追加 newsingへ投稿 Saafブックマークに追加

    本当は移転前にまとめる予定だったんですが、先に移転しちゃいました(笑
    とりあえず候補等をまとめてみます。

    サービス名 初期費 年額 HDD cron SSH 転送量 ドメイン
    ロリポップ 1575円 3150円 200M × × 15G 1
    チカッパ! 2100円 6300円 500M × × 30G 4
    XREA+ 0円 2400円 2G 90G 20
    80code 960円 5760円 2G 60G
    XServer 1575円 12600円 1.5G × 60G

    今回検討した、サービスのまとめ。

  • ロリポップ
    現在使用中。
    初心者にはお勧め。サポートが良い。
    MySQLの専用サーバがあるが、台数が少ないため重め。
    各サーバも詰め込み感がある。(当たりはずれの問題かも…)
  • チカッパ!
    ロリポップ上位版な感じ。
    サポートは良いらしい。
    人が少ないためか、軽い。
    環境的な問題で今回は除外に。。。
  • XREA+
    今回の候補。初心者にはサポートが厳しいためオススメできない。
    コントロールパネルの機能が豊富だが、若干わかりづらい。
    が、慣れの問題かもしれない。
    レスポンスは軽いが、少しでも重いプロセスを走らせようとすると、
    監視プログラムにKillされるため、500エラーが出る可能性がある。
    負荷監視が厳しいサービスかと思います。いまいち挙動がわからない…
  • 80code
    軽いらしいが、サーバダウンがよく起きている。
    ということで除外。機能的には良いのだが…
  • XServer
    軽い分、機能がかなり限定されている
    XREAと同じく負荷監視に厳しく、重いと連絡なしに即アカウント停止するらしい。
    よって、今回は除外に。
  • さくらインターネット
    MySQLの専用サーバがあるが、激重。
    MySQLが重いと話にならないので除外。
  • 共用レンタルサーバだと、値段が安いせいか何かしら犠牲を伴うような…
    ひとまずXREA+で様子見しながら、VPSと専有サーバも視界に入れて探してみようかと思います。

    2006年10月12日

    レンタルサーバを探すのだ(心得編)

    Yahoo!ブックマークに登録 はてなブックマークに追加 del.icio.usに追加 livedoorクリップへ追加 Buzzurlに追加 POOKMARK Airlinesへ追加 newsingへ投稿 Saafブックマークに追加

    実際に探してみる前に、今回レンタルサーバを探すにあたっての
    チェックポイントをまとめてみる。

  • 価格
    自分の予算内で収まるところを。
    予算感がわからなければ、とりあえず調べても良いかと。
  • 環境
    共有の場合は、サーバごとの収容数も確認しておきたい。
    が、必ずしも公開されているわけではない…

    各種アプリケーションを使いたい場合は、
    バージョン、モジュールなどを確認しておく。

    また、海外のサービスは国内に比べて安価であることが多いが、
    ネットワーク的に重い場合もあるのでping、経路を調べておくと幸せかも。

    運営会社は無名なところは、リスクもあるので、Googleなどで
    ヒット数を調べるなどしておくと幸せかも。特に共有サーバだと
    詰め込まれている場合も多いので…

  • ディスク容量
    最近のサービスは容量的には特に不足する事はないかと思われるが…
  • 転送量
    超過課金されるところはできるだけ避けるべき。
    転送量制限なしとなっているところでも、目安転送量が
    必ずと言っていいほど設定されているので、規約などを確認をしておく。
  • 自由度
    これは人によりけりかと思われる。
    自由度が高くなる分、手間も増えるので、望まない人もいるだろう。
  • サポート
    親切丁寧で対応時間帯も長いのが一番である。

  • 2006年10月11日

    レンタルサーバを探すのだ(区別編)

    Yahoo!ブックマークに登録 はてなブックマークに追加 del.icio.usに追加 livedoorクリップへ追加 Buzzurlに追加 POOKMARK Airlinesへ追加 newsingへ投稿 Saafブックマークに追加

    ロリポじゃきついなとか今更思うようになってきたんですよ。
    先日は大丈夫とか言ってたのにね。ごめんなさい。

    思うにMTが普及しまくってるんじゃないかなーと。
    ということで、とりあえず本気でレンタルサーバを探してみるだけ探してみるとします。

    まず、基本からおさらい。
    レンタルサーバを区分すると3つのタイプに。

    共有 VPS 専有
    価格 0~1000円 3000~5000円 8000円~
    他ユーザとの干渉 有り ほぼ無し 無し

  • 共有タイプ
    一つのサーバリソースを多人数で共有するタイプ。
    同一サーバのユーザの影響を受けやすいので、当たりはずれがある。
    価格も無料から、安価である。
  • VPSタイプ
    一つのサーバ上に仮想OSを立て、各ユーザは仮想OSのオーナーになれる。
    物理的には同一サーバを共有するが、各個に制限がされるので、
    同一サーバのユーザの影響を受けにくい。
    価格は共有タイプに比べると若干高いが、自由度が大きい。
  • 専有タイプ
    物理的に専有できるタイプ。
    価格はピンキリだが、かなり高め。

  • 今回候補から、専有は外そうかと思います。
    とりあえず予算は3000円ぐらいなので。

    共有とVPSに関しては次回考察。

    2006年10月09日

    ロリポップでcronライクな動作をPHPでやってみる

    Yahoo!ブックマークに登録 はてなブックマークに追加 del.icio.usに追加 livedoorクリップへ追加 Buzzurlに追加 POOKMARK Airlinesへ追加 newsingへ投稿 Saafブックマークに追加

    MTの指定日実行タスクを実行するには、通常cronで実行するように
    マニュアルには書いているわけだが、ロリポップではcronが利用できないので、
    PHPでcronライクに動かしてみようと試みる。

    とりあえず、ロジックだけヅラヅラ書いて

    cronはシステム内でトリガーを起こして、指定時間経っていれば
    指定されたアクションを起こすもので、
    PHPで実装するにはビジターにトリガーを起こしてもらえば良い。

    PerlやShellなどを呼び出す場合は、バックグラウンドで実行してやれば、
    ブラウザで表示させる際の影響はでない。

    と、実行自体は問題ないはずなのだが、肝心のrun-periodic-tasksが

    system ("cd [設置している場所へのフルパス];/usr/local/bin/perl -w run-periodic-tasks > /dev/null &");

    でうまいこと動いてくれないのでしょんぼりっく。

    さて、どうしたものか。
    パーミッションの違いとかはないはずなんだけれども。

    レンタルサーバ探し

    Yahoo!ブックマークに登録 はてなブックマークに追加 del.icio.usに追加 livedoorクリップへ追加 Buzzurlに追加 POOKMARK Airlinesへ追加 newsingへ投稿 Saafブックマークに追加

    環境・条件がいいサーバっていうのは、なかなか口コミじゃわからないものなのだ。
    ま、共有サーバなら人が少ない方がより環境がいいからなんだけれども。

    ・SSH/telnet利用可
    ・MySQL利用可能(4.1↑ならベター)
    ・VPSならいいかも
    ・cron使いたい
    ・帯域超過で加算されないとこ

    てな条件で探してみようかと思う。
    予算感はわからされるかもしれないが、月3000円ほどで。

    逆に上記条件を求めなければロリポでも問題なかったりする。

    2006年09月27日

    Spreadsheet_Excel_Writer

    Yahoo!ブックマークに登録 はてなブックマークに追加 del.icio.usに追加 livedoorクリップへ追加 Buzzurlに追加 POOKMARK Airlinesへ追加 newsingへ投稿 Saafブックマークに追加

    10ヶ月ぶりにバージョンアップ
    マイナーアップの0.90⇒0.91に。

    Changelogを確認するも、Bug fixが2件のみ…
    今後、肝心なBIFF8(EXCEL97/2000形式)関連の期待はかなり薄そうなのである。
    困った。

    久しぶりに調べてみると有益な情報を発見。
    そこで衝撃の事実。
    http://chazuke.com/archives/2006/08/spreadsheet_exc_2.html

    BIFF5で日本語を使うにはshift_jisだが、BIFF8ではUTF-16LEを使う。

    え、文字コードも変えないとだめなんですか…しらんかった。
    てかめんどかったのでソースなんか読んでない!

    Spreadsheet_Excel_Writerのpatch
    キタコレ!
    ソースレベルでの修正情報をやっと発見!
    実証はしていないのでなんとも言えないけど。
    これは期待がもてそうだ!(時間的にどうかなー。)

    とはいえ、いい加減Excelからは逃げたいのである。

    2006年09月18日

    素人が!Linuxを!使ってみるゥゥゥ!

    Yahoo!ブックマークに登録 はてなブックマークに追加 del.icio.usに追加 livedoorクリップへ追加 Buzzurlに追加 POOKMARK Airlinesへ追加 newsingへ投稿 Saafブックマークに追加

    ■説明!
    Linuxド素人(というほどではないんだけれども)が自分で組んでみようという物語。

    ■経緯
    サーバの強化をしたくて、レンタルサーバを探すも、なかなか要件が満たない。
    とりあえずcronとTelnet(今のご時世SSHがほとんどだと思うけど)の使用は欲しい。
    rootはまぁなくてもいいか。
    とか探すと出費が痛いので超無理。
    (候補としてはココとか上がってるんですが、ちと高い…)
    後、色々いじってみたいお砂場が欲しい。
    てことで、サーバを構築したはいいが、ハッキング食らって(!)お釈迦になりました。
    が、めげずにもう一度がんばろう。(というかネタにしよう)

    ■Distributionはどうしよう
    RedHat Enterpriseのクローン系にしようかと。
    よって候補は、
    WhiteBox Enterprise Linux
    CentOS Linux
    どう違うのかと言われたらさっぱりわかりません。
    更新頻度が違うんじゃね?ぐらいしか…
    WhiteBOXの開発者は一人らしく、更新頻度が遅いらしいのですが、
    現状ある程度肥えているので、特に気にしてはいなかったり。
    とりあえずミドルウェアが使えればいいんです。

    ■じゃあ、実際に
    インストールゥゥゥゥ!という訳にもいかず。
    もいっこ前準備として、今回はVMware Workstationという仮想OS構築ソフト使います。
    1台のマシンで複数のOSが使えるので、色々実験には便利。

    では、また次回。

    2006年09月13日

    動的なページを静的なページに見せてみよう

    Yahoo!ブックマークに登録 はてなブックマークに追加 del.icio.usに追加 livedoorクリップへ追加 Buzzurlに追加 POOKMARK Airlinesへ追加 newsingへ投稿 Saafブックマークに追加

    RewriteRuleで色々調べてたら、こんな記事が見つかった。

    で、htaccessでいちいち追加するの面倒だなーと思い、PHPでできないかやってみようと思い立つ。

    1.arg_separator.inputを使ってみる
    phpオプションのarg_separator.inputで実験。
    セパレータを追加するだけなので断念
    使用すると下記のようになる。

    Ex.

    hoge.php?a=1/a=2

    hoge.php?a=1;a=2

    hoge.php?a=1&a=2

    2.ごりごりやってみる
    さっくり出来る方法がないっぽいので、ごりごりやってみることにする。
    この方法で実際できたので、http://iidx.jp/mobiledb/を例に。

    http://iidx.jp/mobiledb/?carrier=ez

        ↓

    http://iidx.jp/mobiledb/info/ez/

    となってスマートになった気がする!

    で、種明かし。

    前提として、Apache(もしくはhtaccess)「Multiviews」 が有効になっていること。
    「Multiviews」とはApacheがファイルをマップするタイプマップを自動で作ってくれるオプション。
    但し、携帯系でこれを使うと一部の端末で正常に見れなくなる。
    (タイプマップ無視して、拡張子で勝手にマッピングする端末とか…)

    まず実体のhttp://iidx.jp/mobiledb/index.phpから。
    $_SERVER[PATH_INFO]を「/」でsplitするだけ!

    list($null,$carrier)= split("/",$_SERVER[PATH_INFO]);

    こんな感じ。実にシンプル!
    PATH_INFOは「/」から始まるため先頭は不要になるので適当に捨てる。
    $nullとしてるのはこんなん使いそうにないから(笑

    で、次。
    http://iidx.jp/mobiledb/ez/となるのが理想だったが、そのためには
    http://iidx.jp/mobiledb.phpで作る必要がある。
    が、トップ配下にごちゃごちゃ置きたくなかったので苦肉の策。
    http://iidx.jp/mobiledb/index/ez/よりhttp://iidx.jp/mobiledb/info/ez/
    のがいいじゃないってことで、http://iidx.jp/mobiledb/info.phpを置いてみる。
    中身は、index.phpと同じ物でいいんだけれども、メンテが大変なので、
    index.phpをまるごとincludeしてやる。そうすると簡単。

    ■メリット
    ・URLが短くなる
    ⇒変数名が必要なくなるため
    ・恥ずかしい変数名を見られなくて済む!
    ⇒変数名が必要なくなるため
    ・ちょっとセキュリティ強化?
    ⇒変数名が必要なくなるため

    変数名が見えなくなるのっていいね!

    ■デメリット
    ・変数の順番間違えると大変
    変数名でなく順番で取得するため。

    デメリットというほどデメリットでもないかも。
    単に管理の仕方が変わるだけ。

    たまにはPHPネタも書いてみた。
    ソースの公開なんてものはとても恥ずかしくてできないので、
    カテゴリを作ったは良いがネタがなくてとても困る!

    2006年06月11日

    ドメイン転送

    Yahoo!ブックマークに登録 はてなブックマークに追加 del.icio.usに追加 livedoorクリップへ追加 Buzzurlに追加 POOKMARK Airlinesへ追加 newsingへ投稿 Saafブックマークに追加

  • 同一サーバ内

  • .htaccessしか使えない

  • ドメインだけ転送したい

  • 場合の転送方法

    ロリポップとかレンタルサーバなら大体当てはまる)
    サブドメインコースから独自ドメインにした場合、サブドメイン使わないけど
    アクセス来てるしどうしようー的な解決方法(・ω・)

  • mod_rewrite

  • RewriteEngine on
    RewriteCond %{HTTP_HOST} ^(excel\.under\.jp|www\.iidx\.jp)(:80)?
    RewriteRule ^(.*) http://iidx.jp/$1 [R,L]

    実際にうちで使っている例ですが、
    「excel.under.jp」「www.iidx.jp」でアクセスした場合「iidx.jp」に転送という意味。

    マニュアルにもあるとおりアーミーナイフは伊達じゃない。
    リダイレクト系の最終兵器。

  • mod_alias

  • Redirect、RedirectMatchなど
    Redirectはディレクトリ単位での転送、
    RedirectMatchはRedirect+正規表現が使用可能。
    比較的簡単な条件でしか転送できないので、転送元は全てローカルパス指定。
    そのため、別ドメイン、同一サーバだと無限ループしてしまうため使えない。
    構文は↓な感じ
    Redirect permanent /hoge/ http://hogehoge.jp/

    「/hoge/」配下にアクセスが来た場合「http://hogehoge.jp/」にリダイレクト
    RedirectMatch permanent (.*)\.gif$ http://hogehoge.jp/$1.jpg

    gifファイルにアクセスが来た場合「http://hogehoge.jp/」のjpgファイルにリダイレクト

    2006年06月08日

    Amazon3分くっきんぐ

    Yahoo!ブックマークに登録 はてなブックマークに追加 del.icio.usに追加 livedoorクリップへ追加 Buzzurlに追加 POOKMARK Airlinesへ追加 newsingへ投稿 Saafブックマークに追加

    MTのプラグインはPERLで書かなきゃだから面倒だし、
    MTのPHP化はできないので、苦肉の策でIFRAME大作戦。

    PHPはデフォルトでパーサー装備してるけどPEARのライブラリ使うとすごい楽。
    XML_Serializer
    XML_Parser

    ロリポップでPEARを使う場合は、解凍してライブラリを適当に設置して、
    パス変えてやればOK。

    XMLはSnoopyで処理してやると
    これまた楽ちん。

    後は力業でデータ整形して↓な感じ

    ECSの仕様がややこしいというか微妙に使いづらいのであまり深入りはしないようにしよう…
    Amazon Web サービス ブログ

    2006年04月15日

    RSS携帯版

    Yahoo!ブックマークに登録 はてなブックマークに追加 del.icio.usに追加 livedoorクリップへ追加 Buzzurlに追加 POOKMARK Airlinesへ追加 newsingへ投稿 Saafブックマークに追加

    です。
    PC版は↓のエントリーか←のメニューにあるはず!
    一通り動作確認したのでたぶん問題ないはず。
    これでとりあえずベース部分は終わりかな?

    移動中の暇つぶしや、デラ並びの間にどうぞ!
    フルブラウザ搭載機種でも値段高くなるからほとんど使ったことがないのは秘密( ;´Д`)

    RSS

    Yahoo!ブックマークに登録 はてなブックマークに追加 del.icio.usに追加 livedoorクリップへ追加 Buzzurlに追加 POOKMARK Airlinesへ追加 newsingへ投稿 Saafブックマークに追加

    続思いつき。
    今更ながら前つくったのがひどかったのでメニューのリンク変えました。
    これね。
    一旦キャッシュにRSS落としてますので、前よりも断然軽くなったはず。
    リアルタイムじゃなくなりましたが純リアルタイムぐらいかな。
    次のステップは携帯対応にでもしてみます。
    DB化はその次ですかね。
    携帯でTOPページ見てくれる人は皆無だと思うので
    DXScorのメニューにでも追加してみますね(笑

    今あるサイトリストは適当に突っ込んでる
    オススメのサイトのRSSとかあったらおしえてくださーい。

    2006年04月14日

    思いつき

    Yahoo!ブックマークに登録 はてなブックマークに追加 del.icio.usに追加 livedoorクリップへ追加 Buzzurlに追加 POOKMARK Airlinesへ追加 newsingへ投稿 Saafブックマークに追加

    以前、思いつきで作ったコレなんですが、
    再び思いつきで色々やってみようかなと思ってます?
    というのもmixiで最近外部blogが増えてきて、携帯からがチェキできないわけですよ。
    んで、最近のblogって大体RSSついてるもんだから、
    ・RSS、htmlのブックマークリストを保存
    ・携帯、PCからも編集可
    ・携帯不可のblogはGoogleモバイル先生に丸投げ
    な感じで改造したら割と使えるんじゃねーの?とか思いついた。
    つかどっかやってるかもしれんけどね。

    RSS非対応のサイトに対してはブックマーク、
    RSS対応のサイトに対してはRSSリストと分離してもって、
    各URIに対して携帯対応・非対応情報を登録。ま、手動ですが。
    んで、IIDXScoreみたいな感じにデータを各個保存できるようにすれば皆はっぴー?

    まぁ、いじってみよう。

    2005年12月27日

    ぺあー

    Yahoo!ブックマークに登録 はてなブックマークに追加 del.icio.usに追加 livedoorクリップへ追加 Buzzurlに追加 POOKMARK Airlinesへ追加 newsingへ投稿 Saafブックマークに追加

    http://pear.php.net/package/Services_Amazon

    対アマゾンモジュール。
    Amazon ECS4.0対応というのと、
    XML関係の関数はPHP5からってことで使ってみようかと。

    直接Amazonのデータを覗ける感じがすごく気に入った。
    データは共有してなんぼですよね。たぶん。

    このモジュール使ってなにやろう。。。

    ●Todoとかメモとか
    ■IIDXScore
    ・PC対応(テンプレ)
    ・内部仕様変更
    ・Excel出力のOoo対応?(⇒びみょー)
    ■RSSリーダーもどき
    ・なんか使えるようにならないかぁ。(個人的に使ってるけど)
    ■PHP-Stats
    ・本家潰れちゃったのかねー?

    2005年12月26日

    HTTPステータスコード

    Yahoo!ブックマークに登録 はてなブックマークに追加 del.icio.usに追加 livedoorクリップへ追加 Buzzurlに追加 POOKMARK Airlinesへ追加 newsingへ投稿 Saafブックマークに追加

    http://www.itmedia.co.jp/help/tips/linux/l0466.html

    よく見るのは200,302,304,401,403,404,500ぐらいかな。

    304いまいちわからないんだが。
    keepalive効いてるうちにリロードすると対象ファイルが更新されてなければ
    304を返すって認識でいーのかな。
    ⇒ブラウザのキャッシュと対象ファイルが一致した場合に304が正解