2009年6月25日木曜日

Visual Studio 2008 が固まる

保守派の私は Visual Studio 2003 を使っていたのですが、さすがに古くてまずかなぁと思い Visual Studio 2008 を入れてみました。

とりあえず新規作成で HTML ファイルを作成、「デザイン」ボタンを押してソース表示からデザイン表示に切り換えようとしたら固まった><;

ウムム…即ググって見たけど同じ症状で困って質問している人はいたけどレスはついていない><;

予感としては IE7 を入れていないせいなのかもしれない…

2009年6月22日月曜日

Submissionポート(587)対応

お客様から、ご利用頂いているサーバーの SMTP に接続できなくなったと問い合わせが入りました。

telnet 出すら繋がらないとのことなので、早速試してみると特に問題なく繋がります。「う~ん、こりゃプロバイダーが Port 25 をブロックしたな!」と調べてみると案の定…

で、どうしたものかとひと思案… SSL/TSL を使えばいいんだけど XMail をバージョンアップすると docomo の RFC 違反に引っかかる><;かといって、拾ってきたパッチ宛バージョンを使うのもなんか不安…

ほんじゃ、ファイアウォールの NAT を使って Port 587 を Port 25 に変換するかとネットスクリーンの設定をいじりはじめたのですが、ちょっと気になってググって見ると、XMail 複数ポートに対応してるじゃないか!

1. XMailCFG を開く
2. 環境設定をクリック
3. XMailCFG環境設定をクリック
4. SMTP ポート(変更注意!!)に「0.0.0.0:25 0.0.0.0:587」と入れる
5. 環境を保存をクリック
6. 完了

いやはや、SMTPポート変更機能が XMail環境ではなく XMailCFG環境設定にあるとは思いもしませんでした^^;

2009年5月15日金曜日

Oracleの文字列比較

Oracleの固定長文字列比較でちょっとはまったのでメモ書き。

通常、固定長の文字列(CHAR型やリテラル)を比較する場合には、長い方に長さを合わせて不足分にスペースを埋めてから比較します。

一方、左辺、右辺のどちらかが可変長の場合には補完は行わずにそのまま比較します。

CREATE TABLE HOGE ( C_CLASS CHAR(4) );

INSERT INTO HOGE(C_CLASS) VALUES ('PC');

SELECT * FROM HOGE C_CLASS = 'PC';

上記のSQLですがそのまま流すとちゃんとレコードを見つけてきます。ところが、これをプリペアードすると途端に見つけてくれなくなる!

最初は PDO のバグか?と思っていたのですがよくよく調べてみるとなんとOracleはプリぺーアドステートメントのパラメーターに与えたリテラルは固定長文字列(CHAR)ではなく可変長文字列(VARCHAR2)として扱うのだそうです@@

右辺が可変長になってしまったので補完が行われず = が偽を返してしまったわけです><;

まったく、Oracleってやつは…

2009年4月23日木曜日

UltimateDefrag

Norton Speed Disk はあまり使われていないファイルをHDDの内側に配置してくれたりしてかなりお気に入りのデフラグツールだったのですが、2003バージョンは古すぎて Vista では使えないらしいです><;

Norton System Works の最新版を購入しようかな?と思っていたのですがググっていたら UltimateDefrag というフリーソフトが見つかりました。ちょっと怪しげですが 日本語化パッチ もありました。

早速 Vista にて使ってみたのですが C: ドライブに対するデフラグは問題あるようでなんか変な名前のファイルを移動しようとしたところで延々とアクセスを繰り返します。一晩放置したところ処理は終わっていましたが半分くらいのファイルが元の位置に残ってしまっていました…

今朝、仕事に出る前にXPが入っているノートPC上で動かして来たのでどうなっているか楽しみです。

2009年4月18日土曜日

ステートメントといっても一気に処理できるわけではない

最近のプログラマーは高級言語から入るのでCPUがどういう手順で動いているのかわからないみたいです。

while ( fscanf( fp, "%d", &x[i ++]) != EOF );

このプログラムでは i には読み込んだ値数 +1 が格納されて終わりますが、この説明の際に 「i は fscanf が値を返した後にインクリメントされる」と主張する方が複数いました@@

fsanf( … ) を1つの処理としてとらえているんですね・・・でも、実際には引数を評価する処理は、順次行われてゆくわけなんですが、それを切り離して考えられないようです。

こういうプログラマーが下記のような構文に出合った時にどう解釈するのかが楽しみではあります。

while ( fscanf( fp, "%d %d", &x[i ++], &x[i ++] ) != EOF );

2009年4月11日土曜日

Optiplex 760

先日 Dell の営業マンが来まして VMware をさんざん勧めてゆきました。Dell が正式サポートしたのかぁ。それならテストサーバー用に VMware ESXi を使おうと思い発注、届いていたのですが忙しくて放置してありました。

オーダーした時に頼んだのは「VMware ESXi 上で CentOS を動かしたい。CPU Core 2 Quad Q9650, Memory 8GB, HDD 1TBx2」でした。

やっと時間ができたので開梱、まずは起動してBIOS画面を確認。お!BIOS設定画面がXVGA表示だ!しかもマウスが使える!で、RAIDの設定はと・・・あれ?RAIDの設定がない!速攻 Dell に問い合わせたところ Optioplex 760 はハードウェアRAIDはサポートしていないとのこと。ってことは Dell のマシンは SATA でも ESXi が動くんだ~なんて思いながら ESXi を DVD からブート、すると、例画面でストップ!

いろいろ調べたけどやっぱし SATA じゃ無理、RAID があれば動くケースが多いらしい。

おいおい、営業マンがきて VMware 勧めるからそれ用のマシン頼んだのに動かないってどういうこと?

仕方なく CentOS を入れて、その上で VMware を動かすことに・・・

CentOS5.3 x64
先日出たばかりの CentOS5.3 をインストールしようと DVD から起動、なんと X が起動するところでブラックアウト><;

CentOS5.2 x64
5.3 はあきらめて 5.2 をインストール、こちらはすんなりインストール完了。(何か足りない気はしていたのだが・・・)

#vi /etc/sysconfig/network-script/ifc[TAB] といつもの如く入れるが ifcfg-eth0 がない!

ぎゃ~~~!NICを認識できないんだ~。ソースインストールすればよいらしいがそれは嫌!
ということで、とりあえず中断・・・

2009年3月31日火曜日

samba NTドメイン参加

しばらく Linux から離れていたので浦島状態でして、samba を NTドメインに参加させることが出来ず不便な思いをしていましたが、ようやく今日成功しました。

sambapasswd じゃなくて net rcp join コマンドを使うんですね…

■ コンピューター名の作成
NT ドメインコントローラーにてコンピューター名を作成

■ セキュリティの変更
SWAT にて DOMAIN 認証を設定(Wizard が便利)

サーバータイプ: ドメインメンバー
WINS: 別の… NACPDC2

※ smb.conf の設定(SWAT を使わないとき)
dos charset = CP932
unix charset = EUCJP-MS
display charset = EUCJP-MS
netbios name = NetBIOS名
workgroup = ドメイン名
security = DOMAIN

■ ドメインへ参加
※ samba のサービスを止めないとエラーになる

[root@CentOS ~]# service smb stop
SMB サービスを停止中: [ OK ]
NMB サービスを停止中: [ OK ]
[root@CentOS ~]# net rpc join member -S ドメインコントローラーのNetBIOS名 -w ドメイン名 -U Administrator%パスワード
Joined domain NAC.
[root@CentOS ~]# service smb start
SMB サービスを起動中: [ OK ]
NMB サービスを起動中: [ OK ]

※ net rpc … にて1回目がエラーになることがあるが再度実行すると成功する

2009年3月19日木曜日

VMware + CentOS

今週は VMware + CentOS のインストールに翻弄されてしまいました><;

1回目:普通にインストール完了、ただ、php_oci, zip.so をインストールする際に開発キットを入れたのですが、それを最後のアンインストールしたらネットが不安定に…繋がるときもあれば繋がらないときもある??

2回目:1回目の時にコンパイルした .so を保存、開発キット無しでインストール完了。しか~し、またまたネットが不安定orz

3回目:ネットワークカードがオンボード(Intel PRO/1000 PM)を使っているので、これが壊れたのかも知れないと思い、RealTek RTL8139/810X を追加、今度は yum update の最後で止る。アップデート中にネットが切れるようだ><;

4回目:VMware Server 1.0.8 はちょっと古いのでアンインストールし 2.0 を入れる。この上で再インストールするも症状変わらず…

5回目:ネットワークカードを Intel に戻して、再インストール。yum update も正常に終了、起動時からちゃんとネットに繋がる!

いやはや、苦労しました。結局原因はわからずってところです。

2009年2月27日金曜日

長すぎるコマンド

RHEL で * を使うと「コマンドラインが長すぎます」となってしまうことがあります。
なんで?と思っていたらなんと * の展開はシェルがやっているんですね@@

Windows に比べてコマンドラインの上限が長いので喜んでいたのですが意外な落とし穴が…
う~ん、困ったもんだ><;

2009年2月21日土曜日

ZipArchive

またまたはまりました><;

ZipArchive がファイル数1000を越えると open でエラーになる…
テスト環境ではOKだったのに本番ではダメ…

違いはOSの bit 数。32bit 版だと OK なのですが、64bit 版だとエラーになるらしいです。
http://bugs.php.net/bug.php?id=40873

5.2.1以降は直っているらしいのですが RHEL5.2 は 5.1.6 @@やっぱ RHEL 使えないよ~。

2009年1月29日木曜日

re2c のインストール

[root@xx ~]# mv /etc/yum.repos.d/Dag.repo.bak /etc/yum.repos.d/Dag.repo
[root@xx ~]# yum install re2c
[root@xx ~]# mv /etc/yum.repos.d/Dag.repo /etc/yum.repos.d/Dag.repo.bak

PDO-OCI

[root@xx ~]# cd /usr/local/src/
[root@xx src]# wget http://pecl.php.net/get/PDO_OCI-1.0.tgz
[root@xx src]# tar xvfz PDO_OCI-1.0.tgz
[root@xx src]# cd PDO_OCI-1.0
[root@xx PDO_OCI-1.0]# phpize
[root@xx PDO_OCI-1.0]# ./configure --with-pdo-oci=instantclient,/usr,10.2.0.4
[root@xx PDO_OCI-1.0]# make
[root@xx PDO_OCI-1.0]# make install
[root@xx PDO_OCI-1.0]# echo 'extension=pdo_oci.so' >> /etc/php.d/pdo.ini
[root@xx PDO_OCI-1.0]# apachectl restart

■php.ini の設定
[root@xx ~]# vi /etc/php.d/pdo_oci.ini
; Enable pdo_oci extension module
extension=pdo_oci.so

Zend Optimizer

1. ダウンロード
http://www.zend.co.jp/download/index.html

2. FTP にて cmpo のホームへコピー

3. 解凍
[root@xx ~]# cd /usr/local/src/
[root@xx src]# mv ~cmpo/ZendOptimizer-3.3.0a-linux-glibc23-x86_64.tar.gz .
[root@xx src]# tar -xvzf ZendOptimizer-3.3.0a-linux-glibc23-x86_64.tar.gz

4. コンパイル
[root@xx src]# cd ZendOptimizer-3.3.0a-linux-glibc23-x86_64
[root@xx ZendOptimizer-3.3.0a-linux-glibc23-x86_64]# ./install
基本的に全部デフォルト設定

保存場所: /usr/local/Zend

これによって /etc/php.ini はシンボリックリンクとなる
実体は /usr/local/Zend/etc/php.ini
※旧 php.ini は /etc/php.ini-zend_optimizer.bak としてバックアップ

Oracle Instant Client のインストール

1. Windows でダウンロード
http://www.oracle.com/technology/software/tech/oci/instantclient/htdocs/linuxx86_64soft.html

Version 10.2.0.4
http://download.oracle.com/otn/linux/instantclient/10204/oracle-instantclient-basic-10.2.0.4-1.x86_64.rpm
http://download.oracle.com/otn/linux/instantclient/10204/oracle-instantclient-devel-10.2.0.4-1.x86_64.rpm

2. FTP で hoge のホームにコピー

3. 展開
[root@xx ~]# cd /usr/local/src/
[root@xx src]# mv ~hoge/oracle-instantclient-* .
[root@xx src]# rpm -ivh oracle-instantclient-basic-10.2.0.4-1.x86_64.rpm
[root@xx src]# rpm -ivh oracle-instantclient-devel-10.2.0.4-1.x86_64.rpm

■ディレクトリー名の変更
[root@xx ~]# mv /usr/include/oracle/10.2.0.4/client64 /usr/include/oracle/10.2.0.4/client
[root@xx ~]# mv /usr/lib/oracle/10.2.0.4/client /usr/lib/oracle/10.2.0.4/client
※ 64bit 版は client64 にインストールするが PDO_OCI の configure スクリプトは client 決め打ちなのでディレクトリー名を変更する

■apache 環境変数の設定
[root@xx ~]# vi /etc/sysconfig/httpd

# ORACLE
export ORACLE_BASE=/usr/lib/oracle
export ORACLE_HOME=$ORACLE_BASE/10.2.0.4/client
# Oracleの文字化け(SJIS)
export NLS_LANG=Japanese_Japan.JA16SJIS
# ライブラリーのロード先を指定
if [ $?LD_LIBRARY_PATH ]
then
LD_LIBRARY_PATH=$ORACLE_HOME/lib:$LD_LIBRARY_PATH
else
LD_LIBRARY_PATH=$ORACLE_HOME/lib
fi
export LD_LIBRARY_PATH

■ユーザーの環境変数設定
[root@xx ~]# vi /etc/profile.d/oracle.sh

export ORACLE_BASE=/usr/lib/oracle
export ORACLE_HOME=$ORACLE_BASE/10.2.0.4/client
export NLS_LANG=Japanese_Japan.JA16SJIS
if [ $?LD_LIBRARY_PATH ]
then
LD_LIBRARY_PATH=$ORACLE_HOME/lib:$LD_LIBRARY_PATH
else
LD_LIBRARY_PATH=$ORACLE_HOME/lib
fi
export LD_LIBRARY_PATH

[root@xx ~]# chmod 755 /etc/profile.d/oracle.sh

mcrypt のインストール

[root@xx ~]# mv /etc/yum.repos.d/Dag.repo.bak /etc/yum.repos.d/Dag.repo
[root@xx ~]# yum install libmcrypt-devel
[root@xx ~]# mv /etc/yum.repos.d/Dag.repo /etc/yum.repos.d/Dag.repo.bak

HTTP/Request のインストール

[root@xx ~]# pear install HTTP_Request

PHP ZipArchive のインストール

[root@xx ~]# yum -y install zlib-devel
※今回はすでに入っていた

[root@xx ~]# pecl install zip

○php.ini の編集
[root@xx ~]# vi /etc/php.d/zip.ini
; Enable zip extension module
extension = zip.so

PHP

■php 本体
[root@xx ~]# yum install php
※今回はすでに入っていた

■エクステンション
[root@xx ~]# yum install php-mbstring
※今回はすでに入っていた
[root@xx ~]# yum install php-pdo
※今回はすでに入っていた
[root@xx ~]# yum -y install php-pear
※今回はすでに入っていた

php-mcrypt のインストール

[root@xx ~]# yum -y install libmcrypt-devel

○CentOS 用の mcrypt.so を FTP でコピー
[root@xx ~]# cp mcrypt.so /usr/lib64/php/modules/mcrypt.so
※ ソースからコンパイルすれば作れたようですがよくわからないので別に用意した CentOS サーバーからファイルをコピーしてきました。

○php.ini の編集
[root@xx ~]# vi /etc/php.d/mcrypt.ini
; Enable mcrypt extension module
extension=mcrypt.so

dag リポジトリーの準備

[root@xx ~]# vi /etc/yum.repos.d/Dag.repo.bak
[dag]
name=Dag RPM Repository for Red Hat Enterprise Linux
baseurl=http://ftp.riken.jp/Linux/dag/redhat/el5/en/$basearch/dag
gpgcheck=1
#gpgkey=http://ftp.riken.jp/Linux/dag/packages/RPM-GPG-KEY.dag.txt
gpgkey=http://dag.wieers.com/packages/RPM-GPG-KEY.dag.txt

※昨年までは問題なかったのだが 2009 年になって http://ftp.riken.jp/Linux/dag/packages/RPM-GPG-KEY.dag.txt が見つからないと言われエラーになる
※ヤクザではあるが http://dag.wieers.com/packages/RPM-GPG-KEY.dag.txt でごまかし警告が出ても無視してインストールを続ける

コンパイラー等のインストール

[root@xx ~]# yum install php-devel
[root@xx ~]# yum groupinstall "Development Tools" "Development Libraries"

Redhat Enterprise 5.2 設定記

おとぼけ運用会社のI社が設定した RHEL5.2 にアプリをインストールした記録を残します。

プロローグ
PHPアプリをインストールするにあたり Zend Optimizer が必要なのでそのインストールを依頼。
何を思ったのか Zend Framework を入れる…
Zend Optimizer だと伝えると Zend Core をインストール…

まぁ Zend Core なら Optimizer も入っているのでよいかと思いコマンドラインから php と入れてみる

@@大量のエラー…

apachectl -t と入れてみる

@@またもやエラー…

RHEL の Apache + PHP がすでに入っている環境に Zend Core + Zend Core バンドル Apache を入れたらしい…どうすればよいか尋ねたところコマンドすべてフルパスで指定しろとの返事…

一旦頓挫したアプリインストールですが、クライアントからの指示で再インストールと言うことになりました(いちおう一安心)

とはいうものの、おとぼけI社の事です。この先どうなる事やら…