2009年9月4日金曜日

DELL PowerConnect2748 スイッチ



DELL スイッチの選び方


http://www.sssg.org/blogs/naoya/archives/1201#


こちらの記事を読んで



ほぼ仕様は同じだが、一番大きな違いに CLI(コマンドラインインターフェース)のサポートの違いがある。CLI を使うと、スイッチの各ポートの状態を把握しているのでよくあるといわれているスイッチのあるポートが故障しているか事前にチェックすることができるのが多い。値段はすこし高いが、この機能のサポートでインフラの中でもかなり重要なスイッチの故障が検出できるのはとても大きい。ミッションクリティカルなシステムには、PowerConnect 5448 を使った方が安心だろう。



ミッションクリティカルの場合は PowerConnect 5448 のほうがよいのか。。。


スイッチが故障したことはないので、あまりその辺は考慮していなかったなぁ。





ノンインテリジェントスイッチの PowerConnect 2748を何となく選んで使っていました。


転送量とか、ポートの数とかの数字は見てたつもりですが


仕様の比較ってのは結構適当だったきがします。


値段が何で違うかってそれなりの理由があるもんですね。(あたりまえか。。。)





2009年9月3日木曜日

採用面接



8月上旬から、FindJobでプログラマー、デザイナー、ディレクターなどの募集をして


100名ほど募集がきました。


いやはや、面接は難しい。


とりあえず、もらったメールの中から3分の1くらいまでに絞って、


1日に5人ずつくらい面接しているんだけど、メールの印象だけじゃぜんぜんわからない。


話をしていても、なかなかこれはいい人材だと思える人はそういるもんじゃない。


本格的に人材採用に取り組んだのはこれが初めてなのでちょっと苦労しています。


特にひどい人は、Webシステムの会社ってことを知らずに来たり、履歴書を持ってこなかったり


面接に来てるのに自己アピールが無かったり、


こっちも何を聞いたらその人のことが分かるのか悩んでおります。


基本的に


1.情熱やガッツがあること


2.夢ややりたい事があること


3.素直であること


4.Webが好きなこと


5.いい仲間と仕事がしたいと思っていること


おおむね、上記のようなことが前提になるのですが


意外と5条件をクリアーしている人っていないんです。


スキルとかできることは、ある程度もらったメールや


職歴を見れば分かるので、人間味のある部分をやっぱり見たいなぁって気になります。


数十分の面接ですべてが分かるわけ無いので、その人間性の片鱗だけでも伝われば


こっちもその気になるんですけどね。なかなか気の利いたアピールは無いですね。


面白い、いい人に来てほしいなぁ。


明日もまだ面接の予定なのでわが社の希望の星が見つかりますように!





2009年8月6日木曜日

PHPからRsyncを実行する時にはまったこと



PHPの exec , system 関数を使って、直接コマンドを実行することができます。


これをうまく使えば、PHP単体では実現しにくいことを


他のアプリと連携して実行することができます。


そんなわけで、ためしにWebのインターフェイスからボタンを押すと


サーバ上のファイルのバックアップをとるように、PHPからRsyncを実行させようとした時の話です。


下準備として、実行するRsyncを手打ちでまず実行できるか確認します。



# サーバ上の /xxx/xxxx/ のファイルをローカルの /xxx/xxxx/ に同期させると考えます。

rsync -auv -e ssh xxxx@example.com:/xxx/xxxx/ /xxx/xxxx/



※ssh を利用するためパスワードを入力せずに接続できるよう公開認証キーの設定をしておく


(この設定は、ネットでもたくさん情報ありますのでそちらをご覧ください)








上記の手打ちの rsync コマンドは難なく実行できたので


PHPから同様のコマンドを実行するようにして見ます。






system('rsync -auv -e ssh xxxx@example.com:/xxx/xxxx/ /xxx/xxxx/')








自信たっぷりに実行してみたのですが


ものの見事に、うまく動作できずはまってしまいました。





ポイントは2点、パーミッションパスです。





まず、パーミッションに関しては、PHPからrsyncを実行するので当然ユーザはhttpdの実行者(apache)になります。


先ほどsshをパスワードなしで接続できる設定をしたのは、apache ではなく他のユーザアカウントでした。


apacheでパスワードなしの設定をしても良いのですがその場合にrsyncでファイルを同期したときの所有者が


apache になってしまい都合が悪いです。





ユーザアカウント hogehoge とかで実行したいですね。


そこで、PHPをApacheのモジュールではなく、CGI経由で実行するようにします。


phpには、mod_suphp というCGI経由で実行するためのモジュールがあるのでインストールします。


(mod_suphpのインストール方法は割愛します)


インストールができたら、phpinfo() などで Server APIを確認します。CGI/FastCGI と出ていたら設定OKです。


suphpの設定が多少難易度が高いかもしれません。





次に、rsync の実行する際のパスです。


PHPのexec ,system 関数は、どうもそのままだと絶対パスで表記する必要があるらしく


上記のコマンドは、以下のようにする必要があります。sshのほうも絶対パスです。


(何か環境変数的なパラメータを初期化すればいけるのかもしれませんが。。。)



system('/usr/bin/rsync -auv -e /usr/bin/ssh xxxx@example.com:/xxx/xxxx/ /xxx/xxxx/')








このことがわからず四苦八苦したため、かなり時間のロスをしまいました。


知っていればどうってことないのですが、知らない場合はひたすらレスポンスが真っ白で何も値が返ってこない地獄を見ます。


(もう少し、エラー的なメッセージを表示させてくれたら助かるのに。。。)





たまにしかこういうプログラムは書かないから、


何度も同じ穴にはまりそう。


一応、備忘録として書き留めておくけど


書いたこと忘れたら意味ないよなぁ。。。。





2009年4月20日月曜日

Text_Wiki_MediaWiki パッケージのParse/Table.phpの修正



PEARのText_Wiki_MediaWiki に含まれる Parse/table.php の一部分を修正



var $regexRows = '#(?:^(\||!)-|\G)(.*?)^(.*?)(?=^(?:\|-|!-|\z))#msi';

var $regexRows = '#(?:^(\||!)-|\G)(.*?)^(.*?)(?=^(?:\|-|!-|\z)|$)#msi';



行の終端が、文字列の終端の場合に、うまく タグに変換されていなかったので


正規表現を修正しました。


PEAR Text_Wiki_MediaWiki の Parser は、だいぶ更新されていないみたいで


WikiPediaのデータをそのままParseしても、ちゃんと表示されない場合が多い。





2009年4月18日土曜日

別ポートで1台のサーバでPostgreSQLを複数起動する方法



テスト環境の設備の問題などで、あんまりサーバの台数がまかなえなかった時に


1台のPCで2役をしてもらいたい時なんかに有効です。


まずは、PostgreSQLをインストールして、デフォルトの状態で起動します。



postmaster -D /var/lib/pgsql/data -p 5432


次に、複数起動する場合は、ポートと、データの保存場所を変えてやれば


起動できます。




initdb -D /var/lib/pgsql/data2

# postgresql.conf 編集
tcpip_socket = true
port = 5433

postmaster -D /var/lib/pgsql/data2 -p 5433 &



あと、適当に pg_hba.conf を環境に合わせて編集したらOKかと。





mod_proxy でバックエンドにSSLを利用する設定



あまり実運用では、こういう場面は経験はないですが


mod_proxy で バックエンド側とSSL通信するような時の設定です。



SSLProxyEngine On
ProxyPass / https://example.com/
ProxyPassReverse / https://example.com/


ローカルのテスト環境に設置したSSLサイトを、無理やり外部からアクセスできるように


Proxyを通す必要があったため、こういうことになったのですが


実際の運用では必要ないかもしれませんね。参考程度ですね。





2009年3月19日木曜日

X-Forwarded-Forを使って、バックエンドでアクセス制限



バックエンドサーバーで、IPを使ったアクセス制限をすると


クライアントがフロントエンドのIPアドレスになってしまうため


意味が無い。そこで、X-Forwarded-Forを使って制限をする。




.htaccess

SetEnvIf X-Forwarded-For "192\.168\.0\.[0-9]{1,3}" apal

order deny,allow
deny from all
allow from env=apal



すぐに書き方を忘れてしまうので、備忘録です。