日々のできごとと写真

‘IT’ カテゴリーのアーカイブ

[告知]Google Wave招待状→終了しました

2009-11-19 15:22 | IT, エントリー | 1 コメント »

Google Waveの招待状が15通ほどあります。

興味のある方は下のフォームからリクエストください。
送っていただいたメールアドレスを招待リストに登録しますので、
間違えないようにお願いします。

なくなり次第終了します。終了しました。

▼2009/11/27 13:13 追記:
終了いたしました。

▼2009/11/27 11:32 追記:
残り2通です。
順番によりご招待できない場合もでてきましたので、ご理解ください。

▼2009/11/26 23:46 追記:
+8通増えましたが、残り6通です。
メールアドレスの入力間違いが多いので、確認をお願いします。

▼2009/11/20 13:34 追記:
残り8通。まだまだあります。

【詳報】Google Waveとは何なのか? - @IT

Twitter Streaming APIから日本語のつぶやきをPHPで取得する

2009-06-10 01:07 | IT | 4 コメント »

TwitterのAPIでストリーミングAPIというものがリリースされていたので、
PHPでどれだけ簡単にいけるのか実装してみました。

今回はTwitterのアカウントを持っていれば誰でも利用できる、
けど一部のデータしか取得できない「spritzer」APIを利用しました。

Streaming API Documentation

※json_decode()を利用しているのでPHP5.2.0以上対象になります。

<?php
$user = 'username';
$password = 'password';
$stream = fopen("http://{$user}:{$password}@stream.twitter.com/spritzer.json", "r");
while ($json = fgets($stream )) {
    $twitter= json_decode($json,true);
    if(preg_match('/[ァ-ヶーぁ-ん]/u',$twitter['text']))
        echo $twitter['user']['name'].':'.$twitter['text'] . PHP_EOL;
}

なんてことないコードになりました。
実行すると標準出力に「ユーザー名:つぶやき」が続々と出力されます。

ポイントもなにもないんですが、「日本語のつぶやき」を取得する部分は、
「つぶやき内に1文字でもひらがなorカタカナが含まれている」という条件になっています。

Unicode対応 文字コード表

漢字を含めようとあまり広げ過ぎると中国語のつぶやきも出てきますし、
いい感じの落とし所だと思っています。

正規表現のフィルターをURLにして今流行ってるサイトを取り出す、なんてことも簡単ですね。
(実際はbit.lyのURLを戻したりしなきゃいけなかったり面倒ですけども)

EC2で利用可能なWindows Server 2003を日本語化してみる

2009-02-16 01:47 | IT | 2 コメント »

EC2上で利用できるWindowsサーバーが英語版ということもあって、日本語化したAMIイメージをいつでも利用できるようにしてみました。

なんだかものすごく長くなってしまったので、最初に目次を用意しておきます。
(目次の生成にTable of Contents Generatorプラグインを利用。これは便利。)

目次

まずはWindows Server 2003を立ち上げる

イメージ一覧を表示

インスタンスを立ち上げる

イメージを選ぶ

今回はBasic Microsoft Windows Server 2003(Microsoft Windows 2003 R2 Data Center edition 32bit)を選択します。

イメージを選ぶ

鍵ファイルを生成

「windows」という名前を付けています

鍵ファイルを生成・ダウンロード

生成完了

aws_console_for_win_04

生成が完了すると、「設定した名前.pem」というテキストファイルが自動的にダウンロードされます。

ダウンロード

外部アクセス制限(ファイアーウォール)

windows用の設定なので3389ポートのみをオープンにした「windows_default」という名前のsecurity groupを作成します。

アクセスコントロール

最終設定

インスタンス数(今回は1)とインスタンスタイプ(今回はsmall)を選びます。

最終設定

インスタンスが起動しました。

インスタンス化終了

インスタンス起動中のステータス

インスタンスはstarting→pending→runningの順でステータスが移り変わります。

ステータスの遷移

Administratorパスワードを取得

EC2のシステムでランダムに生成されたAdministratorパスワードが指定した鍵ファイルを使って暗号化(encrypt)されているので、復号化(decrypt)して取得します。

Windowsのインスタンスを選んで、Passwordをクリックします。

Passwordをクリックします

ただし、インスタンス起動直後はパスワード生成と暗号化がまだ完了していないので、2、3分待ちます。

起動後間もなくはパスワード生成ができない

正常に生成が終わっていれば、この画面が表示されます。

パスワード生成ウィンドウ

Private Keyにテキストエリアに該当する鍵情報(今回はwindows.pemファイルの中身)をペーストします。

ダウンロード済み鍵ファイルをコピペ

鍵が一致すれば復号化されたパスワードが表示されるので、記憶します。

パスワードゲット

リモートデスクトップで接続

接続の前に

既にIPアドレスがわかっているので接続できますが、「Conect」をクリックすることで、接続方法のヘルプが確認できます。
しかも、「OPTION 1: Shortcut File」にあるshortcut fileをダウンロードすることで、簡単に接続ができます。

接続するためのヘルプ

結果は同じでも2通りの方法が示されています

リモートデスクトップで接続

リモートデスクトップを起動し、インスタンスのリモートホスト名を入力、接続します。

リモートデスクトップで接続

証明書で警告がでますが、無視して進めます。

証明書エラー

無事接続できれば、ログオンダイアログが表示されます。

接続完了

さっき記憶したAdministratorパスワードを入力し、ログオンします。

先ほど生成したパスワードを入力

ログオンできれば、デスクトップが表示されます。

無事ログイン

ちなみにMacの場合は

Microsoft純正のMac版リモートデスクトップがリリースされているので、そちらをダウンロードして利用しましょう。
試してみましたが、なんの問題も無く接続できました。
Mactopia Japan : Microsoft Remote Desktop Connection Client for Mac 2

Macからでも可能です

いよいよ日本語化

日本語化するにはWindows Serverのメディア(CDのデータ)が必要になりますが、デフォルトのC、Dドライブには入っていません。

ドライブ構成はCとDのみ

スナップショット

しかし、AmazonがスナップショットイメージとしてCDのデータを提供してくれているので、EBSを経由して利用します。
まず、インスタンスのZoneを確認しておきます。今回の場合は、「us-east-1b」でした。

インスタンスのZoneを覚えておきます

EBSを利用してEドライブを作成

ELASTIC BLOCK STORE > Volumes > Create Volumeをクリックします。

EBSのVolumeを作成

ディスクサイズは 2G、ゾーンは先ほど控えたインスタンスと同じゾーンを選びます。
(ここでインスタンスと違うゾーンを選んでしまうと接続できなくなります。)

snapshotで、Windows 2003 R2 Datacenter 32-bitを選びます。(違うOSを利用している場合は該当するsnapshotを選びます。)

Windows CDの中身がスナップショットとして存在

選択したsnapshotのIDと同じIDが一番下のテキストボックスに入力されたことを確認します。
(ここが空欄のままだと空のボリュームが作成されてしまいます。)

idを確認

statusがavailableになったら利用するボリュームにチェックをして、Attach Volumeをクリックします。

aws_console_for_win_28

接続先のインスタンスとデバイス(Windowsの場合はあまり関係ないですね。)を選びます。

接続先のインスタンスをよく確認

ステータスがin-useになれば、接続が完了です。

aws_console_for_win_30

インスタンスのWindowsへ戻ってみると、自動的にEドライブが認識されています。

Windows上では自動的に認識

ディレクトリ構成はこんな感じです。

ディレクトリ構成

Regional and Language Options

いよいよ、日本語化の設定です。
Regional and Language Optionsを実行します。

 

日本語化の設定をはじめます

まずLanguagesタブにある日本語(東アジア圏の言語)をインストールするためのチェックボックスにチェックを入れます。

東アジアを利用する

Advancedタブの設定も日本語(Japanese)にしておきます。

aws_console_for_win_35

OKを押すと、CD-ROMを要求されます。

CDを要求されます

ここで先ほどのドライブを指定します。今回の場合は、E:¥Disk1¥i386になります。

EBSのボリュームを選びます

ファイルのコピーが始まります。

ファイルのコピーが始まりました

全てコピーが終わった後、再起動します。

再起動を聞かれるので、Yes

再起動の確認は?

再起動をするとコネクションが切れてしまうので、再起動したかどうかはOutputを見るとわかります。

Output

再起動後、システムが正常に動いていれば「Windowos is Ready to use」というログが確認できるはずです。
ちなみにログをよく見てみると、ローカライズする前と後で日付の出力フォーマットが変わっています。 

Windowos is Ready to use

日本語の確認

再起動後、タスクバーの右下に言語切り替えが表示されています。

再起動後、日本語が・・・

フォーマットの設定を日本語してみると、きちんと日本語で表示されます。

aws_console_for_win_41

日本語の入力もできるようにキーボードの設定をします。

aws_console_for_win_42

ブラウザーを立ち上げてみると。

IEを開いてみると

このブログも化けずに表示されました。

おお、日本語だ

日本語の入力も問題なしです。

日本語も入力できます

日本語化したインスタンスをイメージ化(再利用)する

せっかく日本語化したので、いつでも利用できるようにイメージ化しようと思います。

起動中のインスタンスを選んで「Bundle」ボタンをクリックします。

aws_console_for_win_45

自分のアカウントでアクセスできるS3のバケット名とファイル名を設定します。

S3上のパスと名前を付けます

設定に問題が無ければ、すぐにイメージ作成がはじまります。

生成開始

Bundle Tasksをクリックすると、bundleの進行が確認できます。

aws_console_for_win_48

ステータスは、bundling→storing→completeと変化します。
Windowsはデータが重いので結構時間がかかります。

bundle中のステータス遷移

complete後、EC2にAIMとして登録します。
左上にあるRegister as AMIボタンはアクティブにならない(不具合?)ので、登録したいイメージの行の上で右クリックするとポップアップメニューで「Register as an AMI」が表示されるので、こちらから登録します。

登録方法は右クリックから

マニフェストファイルのパスを確認します。

登録確認

登録されました。

登録完了

登録すると、自分のAMI一覧にWindowsマークのついたAMIが表示されます。

きちんと登録されました

 

 

EC2のコマンドラインと AWS Management Consoleを比べてみた

2009-02-07 02:09 | IT | コメントをする »

AWS Management Consoleを実際に触ってみました。
今まではJavaベースのコマンドツール入れて(その前にJRE入れて)、コマンド叩いてはtypoしてイライラを募らせていたわけですが、それを解消する素晴らしいツールです。
まだBeta版ですが、*かなり* 完成度が高いです。
操作に全く疑問を抱かせない情報設計と洗練されたUI、そして安定的なシステム。素晴らしい。

今回は、コマンドでいうこれはConsoleでいうどういう操作?を比べてみました。
良く使うコマンドのみですが。

https://console.aws.amazon.com/ec2/

ec2-describe-images(Alias=ec2dim)

S3上に登録されているインスタンス化可能なイメージ一覧を取得するコマンド

Consoleでは左メニュのAMIsをクリックするだけで一覧がでます。

ec2-describe-images

しかも、イメージの種類(Amazon謹製イメージ、公開イメージ、個人イメージ、自分のイメージ、アーキテクチャ別)で選べる上、

イメージの種類

OS(CentOS,Debian,Fedora,Gentoo,Open Solaris,Red Hat,SUSE,Ubuntu,Windows)も合わせて検索できます。
これは便利ですね。

プラットフォームから検索

例)公開イメージの中からCentOSを選んだ状態

公開済みのCentOSのイメージ一覧

ec2-register(Alias=ec2reg)

S3上にあるイメージファイルをEC2に登録するコマンド

ConsoleではAMIsから上部メニュにある「Register New AMI」をクリックすると、ダイアログウィンドウがでるので、S3上にあるマニフェスト(xml)ファイルを指定します。

ec2-register

ec2-add-keypair(Alias=ec2addkey)

ログイン用の暗号キーを生成、登録するコマンド

Consoleでは、「Key Pairs」→「Create Key Pair」と進めていくと、秘密鍵の名前を聞くダイアログがポップアップします。

ec2-add-keypair1

名前を入れ「Create」を実行すると、実行結果の表示と秘密鍵のダウンロードが始まります。

ec2-add-keypair2

ec2-delete-keypair(Alias=ec2delkey)

生成済みのログイン用の暗号キーの登録を削除するコマンド

Consoleでは、「Key Pairs」→削除したいキーを選択→「Delete」→「Yes, Delete」で完了です。

ec2-add-keypair3

ec2-run-instances(Alias=ec2run)

登録済みイメージからインスタンスを起動するコマンド

ダッシュボードトップから、「Launch Instances」をクリック

ec2-run-instances1

Launch Instancesから起動したいイメージを選び、「Select」をクリック

ec2-run-instances2

KeyPairもFirewallもすでに設定済みの場合は、一気に起動設定の項目まできます。
起動するインスタンス数、インスタンスの種類、利用するキー、Firewallのグループをすべて選び、「Launch」

ec2-run-instances3

無事起動すると、完了画面が表示されます。

ec2-run-instances4

ec2-authorize(Alias=ec2auth)

外部からどのポートにアクセスを許可するのか設定するコマンド

「Security Groups」を開くと、すでに設定済のものがあれば一覧が表示されます。
右上のリストを選ぶと、右下に詳細設定画面が表示され、ここで設定できます。
許可リストなので、LinuxでWebサーバーならば、22番と80番を許可したリストを作って「web_on_linux」などと名前を付けて用意しておくと便利かもしれません。
許可リストは複数作成してAND条件で複数指定できるようなので、linux_defaultで22番/webで80番と作って2つをセットする使い方が美しいですね。

ec2-authorize

ec2-terminate-instances(Alias=ec2kill)

起動中のインスタンスを停止するコマンド

Instancesを選び、インスタンス一覧から停止したいインスタンスをチェックし、「Terminate」をクリック

ec2-terminate-instances1

確認ダイアログがポップアップするので、「Yes, Terminate」を実行。

ec2-terminate-instances2

あーもう絶対コマンド使わなくなるな。

XAMPPをVistaで使おうとしてハマるワナ

2009-02-04 00:02 | IT | コメントをする »

xampp_vista

Windows環境で使っているXAMPPに含まれるApacheやPHPのバージョンが若干古いので、最新のものに入れ替えようとしてハマったことを記します。

環境

  • Windows Vista SP1
  • XAMPP 1.7.0
    • Apache 2.2.11
    • MySQL 5.1.30
    • PHP 5.2.8
    • phpMyAdmin 3.1.1
    • FileZilla FTP Server 0.9.29
    • Mercury Mail Transport System v4.52
    • OpenSSL 0.9.8

apache friendにある1.7.0のZIPアーカイブ版を利用しました。
ダウンロード後、C:\xamppに展開することにします。

PHPのcliでエラー

早速、PHPが正常に動くか確認するため、コマンドラインでバージョン情報を確認します。

c:\xampp\php>php -v
PHP 5.2.8 (cli) (built: Dec  8 2008 19:31:23)
Copyright (c) 1997-2008 The PHP Group
Zend Engine v2.2.0, Copyright (c) 1998-2008 Zend Technologies
    with Zend Extension Manager v1.2.0, Copyright (c) 2003-2007, by Zend Technologies
    with Zend Optimizer v3.3.3, Copyright (c) 1998-2007, by Zend Technologies

すると、もれなく

CLIは動作を停止しました

と、エラーが出現します。強制終了の雰囲気ですが、コマンドは実行されます。
うーん、気持ち悪い。
原因は既出で、php_mysqli.dllが原因のようです。

extension=php_mysqli.dll

;extension=php_mysqli.dll

とコメントにすることで対処できるんですが、じつは1.7.0では(どのバージョンからは不明)対応済みのdllが用意されています。
xampp\php\extをのぞいてみると、「php_mysqli_5.0.51a.dll」というファイルがあり、これを「php_mysqli.dll」にリネームすることで回避できます。

php -i
#snip
mysqli

MysqlI Support => enabled
Client API library version => 5.1.30
Client API header version => 5.0.51a

バージョンがバラバラなのがかなり気持ち悪いんですが、MySQL5.1.30に対しても問題なく動きます。

eAcceleratorでエラー

デフォルトではOFFにされていますが、PHPのアクセラレータのひとつ、eAcceleratorがバンドルされているので、これを有効にしてみます。
php.iniを修正します。

よくあるミス
XAMPPにはphp.iniが2つあります。
ひとつはxampp\php の下、もうひとつはxampp\apache\bin の下。
前者はCLI用のiniファイルで後者はApacheモジュール用のiniファイルですので、注意しましょう。

セミコロンをすべて外します。

矩形選択

こういう作業は矩形選択(箱型選択)できるエディターが便利ですね。
(上記エディターはK2Editor

さて、実行してみましょう。

php -i
#何も表示されずに終わってしまう・・・

php -v
#こっちもだ・・・

ログもエラーも出ないので、困った・・・。
CLIからの追跡はあきらめて、PHPモジュールの方のphp.iniのeAcceleratorを有効にして、ApacheからPHPを実行して経過をみてみます。
すると、Apacheが起動せず、強制終了します。

eacceleratorが有効にならない

ということなので、Apacheのエラーログ(xampp\apache\log\error.log)を確認します。すると、

PHP Warning:  [eAccelerator] This build of "eAccelerator" was compiled for PHP version 5.2.7. Rebuild it for your PHP version (5.2.8) or download precompiled binaries.\n in Unknown on line 0

衝撃の事実。xampp1.7.0にバンドルされているeAccelerator.dllは(ある意味伝説の)5.2.7 をターゲットにコンパイルされているので、バージョンが合わないというエラーです。

こちらのサイトに5.2.8用にビルドされたdllがダウンロードできるので、こちらをxampp\php\ext\eAccelerator.dllと差し替えます。

c:\xampp\php>php -v
PHP 5.2.8 (cli) (built: Dec  8 2008 19:31:23)
Copyright (c) 1997-2008 The PHP Group
Zend Engine v2.2.0, Copyright (c) 1998-2008 Zend Technologies
    with eAccelerator v0.9.5.3, Copyright (c) 2004-2006 eAccelerator, by eAccelerator
    with Zend Extension Manager v1.2.0, Copyright (c) 2003-2007, by Zend Technologies
    with Zend Optimizer v3.3.3, Copyright (c) 1998-2007, by Zend Technologies

ちゃんと認識されました。

それから忘れがちなのが、ACLが有効になってるとサーバーの立ち上げなどにAdministrator権限が必要なので、xampp-control.exeなどを実行するときには、右クリック→管理者として実行(A) で起動しましょう。sudoですね。
リソースが許すの出れば、サービスに登録してしまうと楽です(セキュリティーには気をつけて)。

今回なんでVista環境にxamppを入れたかというと、このブログでも使ってるWordPressのコードを読んで見ようと思ったからです。
ソースをちらっと見たことある人ならわかると思うんですが、結構ヒドいコードです。
PHPのカオスさがそのまま如実に表れてるというか。
なので、debugツールを使って楽をしようと導入したわけです。
XDebugかZend Debuggerを使って、少しずつ解析していって、経過を載せたいと思います。