[告知]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通。まだまだあります。
Twitter Streaming APIから日本語のつぶやきをPHPで取得する
2009-06-10 01:07 | IT | コメントをする »TwitterのAPIでストリーミングAPIというものがリリースされていたので、
PHPでどれだけ簡単にいけるのか実装してみました。
今回はTwitterのアカウントを持っていれば誰でも利用できる、
けど一部のデータしか取得できない「spritzer」APIを利用しました。
※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カタカナが含まれている」という条件になっています。
漢字を含めようとあまり広げ過ぎると中国語のつぶやきも出てきますし、
いい感じの落とし所だと思っています。
正規表現のフィルターを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」という名前を付けています
生成完了
生成が完了すると、「設定した名前.pem」というテキストファイルが自動的にダウンロードされます。
外部アクセス制限(ファイアーウォール)
windows用の設定なので3389ポートのみをオープンにした「windows_default」という名前のsecurity groupを作成します。
最終設定
インスタンス数(今回は1)とインスタンスタイプ(今回はsmall)を選びます。
インスタンスが起動しました。
インスタンス起動中のステータス
インスタンスはstarting→pending→runningの順でステータスが移り変わります。
Administratorパスワードを取得
EC2のシステムでランダムに生成されたAdministratorパスワードが指定した鍵ファイルを使って暗号化(encrypt)されているので、復号化(decrypt)して取得します。
Windowsのインスタンスを選んで、Passwordをクリックします。
ただし、インスタンス起動直後はパスワード生成と暗号化がまだ完了していないので、2、3分待ちます。
正常に生成が終わっていれば、この画面が表示されます。
Private Keyにテキストエリアに該当する鍵情報(今回はwindows.pemファイルの中身)をペーストします。
鍵が一致すれば復号化されたパスワードが表示されるので、記憶します。
リモートデスクトップで接続
接続の前に
既にIPアドレスがわかっているので接続できますが、「Conect」をクリックすることで、接続方法のヘルプが確認できます。
しかも、「OPTION 1: Shortcut File」にあるshortcut fileをダウンロードすることで、簡単に接続ができます。
リモートデスクトップで接続
リモートデスクトップを起動し、インスタンスのリモートホスト名を入力、接続します。
証明書で警告がでますが、無視して進めます。
無事接続できれば、ログオンダイアログが表示されます。
さっき記憶したAdministratorパスワードを入力し、ログオンします。
ログオンできれば、デスクトップが表示されます。
ちなみにMacの場合は
Microsoft純正のMac版リモートデスクトップがリリースされているので、そちらをダウンロードして利用しましょう。
試してみましたが、なんの問題も無く接続できました。
Mactopia Japan : Microsoft Remote Desktop Connection Client for Mac 2
いよいよ日本語化
日本語化するにはWindows Serverのメディア(CDのデータ)が必要になりますが、デフォルトのC、Dドライブには入っていません。
スナップショット
しかし、AmazonがスナップショットイメージとしてCDのデータを提供してくれているので、EBSを経由して利用します。
まず、インスタンスのZoneを確認しておきます。今回の場合は、「us-east-1b」でした。
EBSを利用してEドライブを作成
ELASTIC BLOCK STORE > Volumes > Create Volumeをクリックします。
ディスクサイズは 2G、ゾーンは先ほど控えたインスタンスと同じゾーンを選びます。
(ここでインスタンスと違うゾーンを選んでしまうと接続できなくなります。)
snapshotで、Windows 2003 R2 Datacenter 32-bitを選びます。(違うOSを利用している場合は該当するsnapshotを選びます。)
選択したsnapshotのIDと同じIDが一番下のテキストボックスに入力されたことを確認します。
(ここが空欄のままだと空のボリュームが作成されてしまいます。)
statusがavailableになったら利用するボリュームにチェックをして、Attach Volumeをクリックします。
接続先のインスタンスとデバイス(Windowsの場合はあまり関係ないですね。)を選びます。
ステータスがin-useになれば、接続が完了です。
インスタンスのWindowsへ戻ってみると、自動的にEドライブが認識されています。
ディレクトリ構成はこんな感じです。
Regional and Language Options
いよいよ、日本語化の設定です。
Regional and Language Optionsを実行します。
まずLanguagesタブにある日本語(東アジア圏の言語)をインストールするためのチェックボックスにチェックを入れます。
Advancedタブの設定も日本語(Japanese)にしておきます。
OKを押すと、CD-ROMを要求されます。
ここで先ほどのドライブを指定します。今回の場合は、E:¥Disk1¥i386になります。
ファイルのコピーが始まります。
全てコピーが終わった後、再起動します。
再起動の確認は?
再起動をするとコネクションが切れてしまうので、再起動したかどうかはOutputを見るとわかります。
再起動後、システムが正常に動いていれば「Windowos is Ready to use」というログが確認できるはずです。
ちなみにログをよく見てみると、ローカライズする前と後で日付の出力フォーマットが変わっています。
日本語の確認
再起動後、タスクバーの右下に言語切り替えが表示されています。
フォーマットの設定を日本語してみると、きちんと日本語で表示されます。
日本語の入力もできるようにキーボードの設定をします。
ブラウザーを立ち上げてみると。
このブログも化けずに表示されました。
日本語の入力も問題なしです。
日本語化したインスタンスをイメージ化(再利用)する
せっかく日本語化したので、いつでも利用できるようにイメージ化しようと思います。
起動中のインスタンスを選んで「Bundle」ボタンをクリックします。
自分のアカウントでアクセスできるS3のバケット名とファイル名を設定します。
設定に問題が無ければ、すぐにイメージ作成がはじまります。
Bundle Tasksをクリックすると、bundleの進行が確認できます。
ステータスは、bundling→storing→completeと変化します。
Windowsはデータが重いので結構時間がかかります。
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をクリックするだけで一覧がでます。
しかも、イメージの種類(Amazon謹製イメージ、公開イメージ、個人イメージ、自分のイメージ、アーキテクチャ別)で選べる上、
OS(CentOS,Debian,Fedora,Gentoo,Open Solaris,Red Hat,SUSE,Ubuntu,Windows)も合わせて検索できます。
これは便利ですね。
例)公開イメージの中からCentOSを選んだ状態
ec2-register(Alias=ec2reg)
S3上にあるイメージファイルをEC2に登録するコマンド
ConsoleではAMIsから上部メニュにある「Register New AMI」をクリックすると、ダイアログウィンドウがでるので、S3上にあるマニフェスト(xml)ファイルを指定します。
ec2-add-keypair(Alias=ec2addkey)
ログイン用の暗号キーを生成、登録するコマンド
Consoleでは、「Key Pairs」→「Create Key Pair」と進めていくと、秘密鍵の名前を聞くダイアログがポップアップします。
名前を入れ「Create」を実行すると、実行結果の表示と秘密鍵のダウンロードが始まります。
ec2-delete-keypair(Alias=ec2delkey)
生成済みのログイン用の暗号キーの登録を削除するコマンド
Consoleでは、「Key Pairs」→削除したいキーを選択→「Delete」→「Yes, Delete」で完了です。
ec2-run-instances(Alias=ec2run)
登録済みイメージからインスタンスを起動するコマンド
ダッシュボードトップから、「Launch Instances」をクリック
Launch Instancesから起動したいイメージを選び、「Select」をクリック
KeyPairもFirewallもすでに設定済みの場合は、一気に起動設定の項目まできます。
起動するインスタンス数、インスタンスの種類、利用するキー、Firewallのグループをすべて選び、「Launch」
無事起動すると、完了画面が表示されます。
ec2-authorize(Alias=ec2auth)
外部からどのポートにアクセスを許可するのか設定するコマンド
「Security Groups」を開くと、すでに設定済のものがあれば一覧が表示されます。
右上のリストを選ぶと、右下に詳細設定画面が表示され、ここで設定できます。
許可リストなので、LinuxでWebサーバーならば、22番と80番を許可したリストを作って「web_on_linux」などと名前を付けて用意しておくと便利かもしれません。
許可リストは複数作成してAND条件で複数指定できるようなので、linux_defaultで22番/webで80番と作って2つをセットする使い方が美しいですね。
ec2-terminate-instances(Alias=ec2kill)
起動中のインスタンスを停止するコマンド
Instancesを選び、インスタンス一覧から停止したいインスタンスをチェックし、「Terminate」をクリック
確認ダイアログがポップアップするので、「Yes, Terminate」を実行。
あーもう絶対コマンド使わなくなるな。
XAMPPをVistaで使おうとしてハマるワナ
2009-02-04 00:02 | IT | コメントをする »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
すると、もれなく
と、エラーが出現します。強制終了の雰囲気ですが、コマンドは実行されます。
うーん、気持ち悪い。
原因は既出で、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が起動せず、強制終了します。
ということなので、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を使って、少しずつ解析していって、経過を載せたいと思います。