PHPのIteratorとIteratorAggregate
PHPのSPLにIteratorとIteratorAggregateというインターフェースがあります。
Iteratorはそのまんまですね。
Iteratorインターフェースを実装したクラスは指定されているメソッドを実装すれば
foreachで回したりできるようになる、と。
それは以前から知っていて使ったりもしていました。
ただ、似たような名前のIteratorAggregateはちゃんと調べたことがありませんでした。
で、調べてみた、というのが今日の話。
http://www.shigeweb.jp/php/project_p/?section=php5oop&page=iteration
見直されるべきPHP5の組み込みイテレータ
http://d.hatena.ne.jp/hnw/20090523
Iteratorインターフェイスを使うメリット
http://www.atmarkit.co.jp/fcoding/articles/php5dev/03/php5dev03b.html
まあ、一つ目に紹介した記事を読めば全部書いてあるんですが、
IteratorAggregateはgetIteratorメソッドで
Iteratorインターフェースを実装したクラスのオブジェクトを返しておけば、
IteratorAggregateインターフェースを実装したクラスのオブジェクト自体を
foreachで回すことができるというものです。
普通にIteratorそのまま使えばいいじゃん、
とか思ったりもするわけですが、
データとイテレータを分けて持つことで、
一つのデータを複数のイテレータで扱うことができる、と。
Apache Solrで形態素解析をしたいときはlucene-gosenを使うという話
capistranoでssh_optionsを設定し忘れててはまった話
主にRailsなんかで使われている
capistranoというデプロイツールがあります。
sshで指定したサーバにログインして、
適宜コマンドを実行できるツールですね、
思いっきりぶっちゃけて言うと。
公開鍵認証でログインさせようとした場合、
ssh_optionsを設定して秘密鍵の場所を指定してやる必要があります。
Capistrano事始め
http://d.hatena.ne.jp/kdaiba/20090518/p1
直接コマンドを打って動作確認したときは
勝手にデフォルトの~/.ssh/id_rsaが使われてて気づかなかったんですが、
違うプログラムから実行させたときは当然のごとく使用されなかったので
ちゃんと動かなかった、という話。
s3fsが簡単すぎて笑える
Amazon S3をファイルシステムとしてマウントできるs3fsというものがあります。
EBSあるしいらんだろ、とか思ったりもするのですが、
無制限にスケールできるのは何というか夢が膨らむよね、ということで
使ってみることにしました。
公式サイト
http://code.google.com/p/s3fs/
参考にした記事など
Amazon EC2 (Amazon Linux) で S3 をマウントして使用する(s3fs+FUSE)
http://blog.genies-ag.jp/2011/08/amazon-ec2-amazon-linux-s3.html
suz-lab - blog: "s3fs"の"allow_other"オプションと"url"オプションと"fstab"
http://blog.suz-lab.com/2011/05/s3fsallowotherurlfstab.html
思いの外というか、非常に簡単にできていい感じですね。
Reduced Redundancy Storageに対応してるし、キャッシュも使えるし。
EBSよりは普通に割と遅いのは仕方のないところでしょう。
何か弄るたびにS3に通信しにいくのはアレですが、
同一regionのEC2から使うのならば通信料はかからないので悪くなさそう。
クラウドの肝はやはり分散ストレージなのだなぁ。
昨日、TwitterでさくらのVPSはいい感じだけど
クラウドの方は調子がよろしくないとか書いていたのですが、
とうとう無償になってしまいました。
さくらのクラウドの現状報告および課金対応について
http://cloud.sakura.ad.jp/news/sakurainfo/newsentry.php?id=622
原因はストレージみたいですね。
去年にAWSに大規模障害が起きたときも
原因はEBSでしたし、
いまや存在が忘れ去られている
Web ArenaのCloud9もストレージの問題でした。
さくらのクラウドは何だかんだで期待しているので
がんばってほしいところではあります、が、とりあえずまだしばらく様子見ですね。
Apache 2.4.1をソースから入れようとするとAPRがないとか言われる
最近、Apache2.4.1やPHP5.4がリリースされているので、
検証という名目でインストールして遊ぼうということで環境を作っていました。
さくっとソースからApacheを入れようとしたところ、
なんかAPRがないとか怒られて./configureが通りませんでした。
簡単にググった結果がこの記事。
apache 2.4.1 source install
http://d.hatena.ne.jp/hogem/20120228/1330437031
aprとapr-utilというのを別個にとってきてsrclibに突っ込んでやればよし。
64bit対応のSmall Instance登場!
はい。やっときました。
【AWS発表】 EC2に新ミディアム・インスタンス追加、64ビット対応のインスタンスタイプ2種追加、さらにWebコンソールにSSHクライアント統合
EC2では32bit同士、64bit同士だと簡単にスケールアップ・ダウンができます。
アクセスが増えてきたときにさくっとスケールアップができるのが
便利だったりするわけですが、一つ大きな問題がありました。
それが、small instanceは32bitのものしかなかった、という問題です。
一番小さいmicro instance、まあまあ大きい感じのlarge instanceおよび
さらに大きなものも64bit対応なので、
micro→small→large→さらに大きなインスタンス
みたいにスケールアップしたくてもできなかったわけです。
microが1500円ぐらい、smallは7000円ぐらい、largeは20000円ちょっとなので、
microからlargeに一気に飛ぶとヘヴィな感じ。
microは結構へぼいのでsmallで始めて
いい調子ならlargeにしたい、みたいな願望もありました。
あるいは、開発中だけmicroにしておいて、
リリースのタイミングで適度なインスタンスに変更する、とか。
まあ、32bitでいいなら、
32bit micro→small→high cpu medium
というルートもあり得ますが、
それよりハイスペックなものはないのでそこで打ち止めです。
ただ、今回の発表でsmall instanceの64bitが追加され、
さらに新しくmedium instanceも追加されたので、
micro→small→medium→large
という段階的なスケールアップが簡単にできるようになったわけです。
値下げの発表もあったばかりですが、
AWSはやはりかなりキてますね。
よい感じです。