2008年6月6日金曜日

オープンソースカンファレンス2008 HokkaidoのPostgreSQLイベントがヤバい

私は北海道の札幌市に住んでいるんだけど、オープンソースのお祭りというか、勉強会というか、いろんなイベントが同時に開催されるオープンソースカンファレンス2008 Hokkaidoというものが、2008/6/28(土)にあります。

既に過去2回参加していて、毎回その内容が充実してきているので、今年も参加するつもりで居ました。

さっきメールを確認したら、OSC2008の案内メールが来ていたので、イベント内容を確認したんだけど、今年のPostgreSQLイベントはヤバいね。

まぁ、これ見てよ。

PostgreSQLの認定試験があるのは知ってたけど、なんとこの試験をイベント会場でやっちゃうんだって。しかも3段ぶち抜き。

しかも、通常13,650円のところ、なんと無料なんだって。もちろん、受かったら普通に認定してくれるみたい。

ほらほら、これみて。

PostgreSQL CE試験 直前対策講座

PostgreSQL CE 8 Silver 無料特別受験!

参加は20人までで、現状どれだけ申し込みがあるのかわからないけど、早い者勝ち。

おいら早速申し込んだけど、これ、絶対早く申し込まないと定員になるよ。

申し込みはこちらから

http://www.ospn.jp/osc2008-do/

ちょっとまじめに受験してみようかな。公式マニュアルをちゃんと読もう。 試験範囲はこちら。

ちなみに、午前中はRuby札幌のコミュニティブースで店番してるかもしれません。

お暇なら声かけてくださいね。

bloggerに「はてなスター」と「はてなブックマーク」を埋めてみました

他のブログをみて、いいなぁと思ったのでこのブログにも入れてみました。

個人のブログにはてなのサービスを仕込む事によるメリット

  • アクセスカウンタの一種として、被ブックマーク数やスターの数により、記事がどれくらい注目されている/露出しているかの判断材料となる(ブログオーナー視点)
  • はてなのユーザにとって、はてなブックマークへの追加が楽になる
  • はてなブックマークに飛ぶ事によって、関連情報が集約されるので探しやすい
  • 記事を読む前に被ブックマーク数やはてなスターの数を見る事により、記事の質が事前にわかる(検索エンジン経由で来た人にとっては重要かもね)
  • なんとなくカコイイ
  • ブログオーナーのモチベーションアップ?
  • んー、昔流行ったトップページにアクセスカウンタを仕込んで、アクセス数を見せて|見ているのと、基本的には意味が同じなのかな。

個人のブログにはてなのサービスを仕込む事によるデメリット

  • 既に設置されている「何か」とJavaScriptのコードが衝突するかもね(自分でいじってなければ大丈夫だとは思うけど)
  • 表示がちょっと遅くなるよね。すべてのコンテンツを表示「しきる」のが遅くなるって意味だけど。
  • いろいろごちゃごちゃ付いていて見づらいと思う人は居るはず。(ブログ側の配置センスにもよる)。
  • いろいろごちゃごちゃ付いていて怖い(下手に触ると壊れるとか)思う人も少なからず居るはず。
  • 要はホントのPC初心者には優しくないと思う。はてなサービスに対応して嬉しいのは中・上級者(特にIT系エンジニア)であって、初心者には逆効果だよね。(普及率がずば抜ければ状況も変わるんだろうけど)
  • あと、オーナーが書きたい事以外のコンテンツを増やす事って、いいことなのかな?という疑問もあるなぁ。広告があちこちにあるようなサイトはイメージ悪いよね。

コーポレートサイトにはてなのサービスを仕込む事によるメリット

  • 上記と同じ
  • 比較的先進的+社会貢献性の高い企業であるはてなのサービスを使う事によるイメージアップ
  • はてな信者が多いITエンジニア層へのアピール(イメージアップ)
  • いろいろなものが着いていて、ちょっとコンテンツが知的に見える?

あーまー、適当に書く分にはこんなもんかな。


設置作業

bloggerにはてなスターやはてなブックマークを仕込むだけなら、実はすごく簡単。はてなの公式コンテンツにチュートリアルがあるから。(blogger側の進化によりちょっと内容が変わってきているので、新Blogger対応版タグを下記にまとめました)

そうだなぁ、自分はプログラマだから余裕だけど、JavaScriptがわからなくても、はてな側で生成されたコードをぺたっと張って、あとはちょちょいと表示するタグを埋めるだけだから、HTML+CSSをちょっとかじっていれば可能だと思う。たぶん、デザイナーでもできるレベル。

上記メリットを享受できるようなサイトであれば、仕事で使うのもありかなぁと思った。

参考

はてなスターをブログに設置するには※新Blogger対応コード

はてなブックマークカウンターを自分のサイトに貼り付ける  ※ウェブサイト全体の被ブックマーク数を表示

自分のブログに被ブックマーク数を表示する  ※特定エントリーの被ブックマーク数を表示

あなたのブログに「このエントリーを含むはてなブックマーク」ボタンを表示させる

※上記は「高機能版」「低機能版」という関係ではなく、使い分けの関係にある


注意

上記リンクにあるチュートリアルは、旧Blogger向けに書かれたものなので、新Blogger(現デフォルト)では正しく動作しません。以下の通りに試してみてください。


ウェブサイト全体の被ブックマーク数

  1. はてなブックマークカウンターを自分のサイトに貼り付けるを読んで、設置する(ブログによって変わる部分は無いです)

特定エントリーの被ブックマーク数
  1. 特定エントリーの被ブックマーク数を表示したいところに以下のコードを埋める。

<a expr:href='&quot;http://b.hatena.ne.jp/entry/&quot; + data:post.url'>

<img expr:src='&quot;http://b.hatena.ne.jp/entry/image/&quot; + data:post.url' />

</a>


このエントリーを含むはてなブックマークボタン

  1. このリンク先を自分のPCに保存
  2. Bloggerに保存した画像をアップロードするため、仮の投稿を作って画像をアップロードし、公開する
  3. 公開された記事の画像から、そのURLを得る(管理画面から得た画像のURLとはパスが違うので注意。管理画面からのURLではうまく表示されません)
  4. 必要ないなら、仮の投稿を削除または下書きに戻す。(公開しないようにする)
  5. 「このエントリーを含むはてなブックマークボタン」を表示したいところに、以下のコードを埋める。自分的には</h3>直前で良いかと。

<a expr:href='&quot;http://b.hatena.ne.jp/entry/&quot; + data:post.url'>

<img alt='このエントリーを含むはてなブックマーク' height='12' src='上記3で取得した画像のURLをここに書く' style='border: none;' title='このエントリーを含むはてなブックマーク' width='16'/>

</a>


※要は、「expr:なにがし」とすると、Bloggerが勝手に内容(data:post.urlなど)を展開してくれるみたい。JavaScriptのコードとして評価してるのかな?(未確認)※あと、ちゃんとスラッシュを使ってタグを閉じてなかったら怒られる

2008年6月5日木曜日

無料で使える個人プロジェクト用のsubversionリポジトリ

普段はMacで思いつくままにコーディングしてるんですが、やはり何かあったときにヤバい(ちょっと前もチビに水かけられたしね)ので、なにかいい方法は無いかなぁと探していました。

Mac的にはタイムマシーンなんだろうけど、ある程度の容量のハードディスク用意しなきゃいけないし、そもそもプログラマがバックアップすべきものって、ソースコードぐらいじゃない? 知識は頭の中に入っているべきだしさ。

で、無料で使えるSubversionホスティングサービス を使って以下の条件で探してみました。

  • 無料が大前提。無料じゃないなら自宅サーバで立てるし。(電気代とか騒音とかメンテとか、なるべく自宅サーバは使わない方が楽)
  • SCMはsubversionがいい。使い慣れてるし。
  • subversion以外のサービス(wikiとかバグトラッカーとか)はあってもなくてもいい。チームではないのでどうせ使わない。(チームでもあまり使わない)
  • ユーザは自分一人。増やさない。(増やすなら自宅サーバ?)
  • プロジェクトのソースコードは公開しない。(公開するならsourceforgeとかgoogleでいいよね)
  • 無料のやつはリポジトリが壊れても文句を言えないので重要なプロジェクトには使わない。(まぁ、個人で重要なプロジェクトをやらないだろうし、やるならそれなりにお金かけないとね)
  • 複数のプロジェクト(リポジトリ)を使える。(思い立ったらすぐリポジトリを作るので、個数制限は緩い方がいい)

で、ぱっと見はDevjaVuが容量無制限でよさそうだったんだけど、無料で使うには招待される必要があるみたい。

OpenSVNは学生が運営してるんだって。容量的には良さそうなんだけど、なんかバックアップが飛んだみたいなアナウンスがされてるんですけど…(2008/6/5現在)

んで、結局Assemblaにしました。容量は200MBと紹介ページに書いてあったけど、よくみると500MBに増えていたみたい。とりあえずサインアップしたけど、まだ使い初めなので、使い勝手はよくわからない。とりあえず、サインアップしたところまでは良さげな感じ。


良いとか悪いとかわかったら、追記するよー。


2008年6月3日火曜日

Amazon EC2とS3を使ってみる(その1 費用比較検討編)

現時点で、ちゃんとしたサービスをちゃんとした体制(回線とかバックアップとか負荷対策とか)でやるなら、EC2がやっぱり使いやすいと思う。個人で委託を請け負う場合、正直機器選定から契約・設置・各種機器やソフトのセットアップまでやりたくないもんねぇ。

問題は、委託を受けて作った場合、発注者がメンテする事はできないだうなぁと言う事。どこで線引きすべきかねぇ。

以下、自分が使い始めるために調べた事です。

ちょーざっくりの費用まとめ(サービス稼働直後の最低スペックを想定)

項目 単価 想定される最低月額費用 その他
EC2 (インスタンスと固定IPは時間従量制、Up/Down転送料は転送量従量制)
インスタンス稼働料金 $0.1/時間 $72/月 ※リバースプロキシ構成にするなら、最低2台($144/月)からかな。
固定IP $0.01/時間 $7.2/月 ※インスタンスを起動してなくても課金される
アップロード転送料 $0.10/GB $0.1/1GB・月 ※リクエスト分? 1GBの根拠は無い。バックアップの転送分は無料
ダウンロード転送料 $0.18/GB $1.8/10GB・月 ※コンテンツ分? 10GBの根拠は無い
S3 (システムを構成する静的ファイルはインスタンスに直接毎回配置するとして、3Sに置くのはユーザからアップロードされるファイルとバックアップ)
保存容量 $0.15/GB・月 $15/100GB・月 ※100GBの根拠はAMIイメージによるバックアップ2回(かなりいいかげん。てかAMIイメージって何GB?)+動的データ分
アップロードリクエスト $0.01/1000回 $0.1/1万回・月 ※1万回の根拠は無い
ダウンロードリクエスト $0.01/10000回 $1/100万回・月 ※100万回の根拠は無い

まぁ、$100弱/月ぐらいか。

ベンチャービジネスを主眼に置いた場合のコスト計算(上記よりちょっと詳しい概算)

Amazon ec2のエコノミー、月72ドルでレンタルするのと、999ドルのマシンを買うのはどちらが得か?

※システムの設計や鯖管をやってきた自分の個人的見解から言うと、RAIDとかバックアップを言い出した時点で、EC2の方が絶対的に安いと思う。TB級のストレージが必要なシステムとかは特にね。

実際の料金シュミレーション

SIMPLE MONTHLY CALCULATOR

まとめ

Amazon EC2/S3を使ってみた - まとめ

EC2&3SのHowTo記事(WEB+DB PRESS Vol.43と同内容。紙面よりリンクがついている分いいかも)

はじめてのAmazon EC2&S3 ~これからの新サービスの公開の形~

現時点での課題

  • バックアップを取るためのスナップショット作成って可能なのかな? Linuxのセットアップからできるなら、LVMとかで可能だけど、EC2の場合はOSはセットアップしないよね?(OSのセットアップが可能かどうかさえ今はわからない)
  • ec2-bundle-volとかで実行中インスタンスのイメージファイルを作るときって、しばらく時間がかかるんだろうけど、この時スナップショットなんか取ってくれてないよね…。システム全体としてのファイルの整合性なんかは、どうやって取るんだろう…。サービスを止めるしか無いのかな。
  • MySQLなどのバックアップって、mysqldump使ってロックかけて取るしか無いのかな。負荷が高い時は怖いよね。まー、負荷が高いんなら、レプリケーション構造とかにするのがいいんだろうけど。

と、ここで手持ちのクレジットカードの有効期限が切れている事が発覚。タイミング悪く退職したばっかりだしなぁ。とりあえずカミさんの許可取って家計用のクレジットカード使うかなぁ。(で、その2へ続く)

2008年6月2日月曜日

会社を辞めました

色々ありまして。

とりあえず、フリーのプログラマとして生きるか、派遣を経て次の会社に籍を置くか選択の時ではある。(営業は向いていないと自分を理解しているので、フリーのプログラマを続けるつもりはない)

いいタイミングなので、色々溜まったものをやっつけてしまおう。

  • 今まで作りたくても時間がなかった(というか興味が次に移ってしまい、リリースタイミングを逃した)ものがいくつかあるので、履歴書代わりに仕上げてしまいたい。メール駆動のポストエージェントだとか、外国人向け日本語学習ソフト(iknowの逆版)だとか。
  • AIRの勉強
  • 携帯用FlashLight(良い資料がない)またはアンドロイドなど。携帯用は資料が少ないのが痛いなぁ。まともに勉強したければ、それなりの実績がある企業に入って吸収するしかないかな。
  • EC2の運用ノウハウ。フリーのプログラマまたは個人制作物発表の場としては、EC2は良い選択肢かもしれない。
  • 自宅サーバの構築。VMWareのイメージを持ってるので、マシンを1つ電源付けっぱなしにするだけだけど。subversionサーバ兼テストサーバとして使うつもり。

まだ、身の振り方を決めた訳ではないけど、あまり悠長に構えてると、生活リズムを崩す(昼まで寝てる)のと、家族の視線が痛いので、9時〜18時は別室に籠って上記を進めるか、外出しよう。

てか、初日に娘(2歳)に麦茶をこのMacbookにかけられてしまった。幸い起動するけど、ディスプレイに斑点が…。しかも、時間が経つにつれ、増殖…。

2008年5月6日火曜日

動画の基礎知識

ちょっと実業務で動画を扱う必要が出てきたので、今まで再生しかした事が無かった動画の周辺事情と、ffmpegを使ったコンバートの方法を調べてみた。

コーデックってのは、圧縮するコーダーと、再生するデコーダーのセットの事だな。

よく見るAVIとかMOVってのは、あくまでコンテナファイルの拡張子の事で、中のビデオファイルと音声ファイルは、どんな形式が入っているのかは、開いてみるまでわからない。コーデックの確認用ソフトもある。コンテナフォーマットによって、モバイルに適しているとか、ストリーミングに適しているとかといった使い分けが出でくるのかな。

音声ファイルは、主に人の声を対象にしたものと、音楽を対象にしたものがあって、人の声だけを対象にした方が圧縮が効くみたい。ただ、あまり考えずにmp3だったり、最近だとAACやHE-AACあたりがいいのかな。

で実際に、変換かけるとしたら、3GPP/3GPP2からFlashビデオという流れが一番多いんじゃないかと思う。今のご時世で一番普及しているデジタルビデオは携帯だからね。細かい事は覚えなくても、ファイルフォーマットと、どのガジェットはどのフォーマットを吐くかさえ押さえておけばいいと思う。

で、実際にどうやって変換するのかというと、ffmpegが現実的かな。入力元のコンテナフォーマット、ビデオコーデック、音声コーデックや各種パラメーターは自動認識してくれて、指定したフォーマットで出力したり、リサイズや指定位置から指定時間だけ切り出したり、各種パラメーターの調整が出来たりする。コマンドラインから使うのが前提だけど、各種GUIフロントエンドも出そろってきている。

実際にauのケータイで撮った動画を、microSDからPCに取り込んだ2GPP2ファイルと、ケータイ内で3GPPに変換してメール添付してPCに取り込んだものを、ffmpegでflvに変換してみた。

それぞれ、

ffmpeg -i ~/MA0_0001.3GP -sameq MA0_0001.flv

と

ffmpeg -i ~/MA0_0002.3G2 -sameq MA0_0002.flv

みたいな感じだけど、簡単に変換できたよ。

あとは、Rubyなどのスクリプトから、このコマンドを呼んで、エラー処理とタイムアウト処理を書けば、サーバで扱う事も出来るかな。

flexと連動して、コメントを表のレイヤーで流せば、ニコニコ動画のようなものも作れるよね。


2008年4月19日土曜日

CentOS5にPassenger(mod_rails)を入れる

Passengerの評判が良さそうなので、実際にRailsを運用しているサーバ(CentOS5)に入れてみた。

Passengerの良いところ

  • デプロイが簡単。railsのインスタンスは何個でポートは何番から当てて、フロントはリバースプロキシとかなんとかは、もう悩まなくていい。
  • mongrelとかthin並み、またはそれ以上速いらしい。(でも自分で公開しているベンチマークだからね。。。)
  • この仕組みであればcapistranoに対応できる。てかscript/spinを起動しないだけ。
  • passenger自体のインストールも簡単。CentOS5で、railsの動作環境は既に済ませてあれば3分で設定完了。
  • バーチャルホストを増やしたいときは、apacheのVirtualHostディレクティブに最低3行書くだけ。
  • deveropment環境なのかproduction環境なのかをapacheのconf上で指定できる。(たぶんまだオプションありそう)

Passengerの悪いところ

  • たぶんコイツメモリ大食い(そういうビジネスモデルなのかも)
  • 逆に、ポート何番は既に使っていて、インスタンスは何個立ってるとか、細かいチューニングは出来ないんだろうな…(未確認)

railsが動く環境は整っているものとする。

1.passenger自体のインストール

# gem install passenger

でgemを入れて

2.モジュールのコンパイル

# passenger-install-apache2-module

でモジュールをコンパイル

参考 本家のインストール手順

で、たぶんAPRとかなんとかが無いと怒られるので、メッセージ通り

# yum install httpd-devel apr-devel

とやると、コンパイル通ると思う。


3.apacheに設定追加
自分の場合は/etc/httpd/conf.d/passenger.confを作って、
LoadModule passenger_module /usr/lib/ruby/gems/1.8/gems/passenger-1.0.1/ext/apache2/mod_passenger.soRailsSpawnServer /usr/lib/ruby/gems/1.8/gems/passenger-1.0.1/bin/passenger-spawn-serverRailsRuby /usr/bin/ruby

<VirtualHost *:80> ServerName target-domain-name DocumentRoot /var/www/domains/target-domain-name/rails-project/current/public RailsEnv production CustomLog /var/log/httpdtarget-domain-name.passenger_access.log combined ErrorLog /var/log/httpd/target-domain-name.passenger_error.log</VirtualHost>
としてから、apacheを再起動したらちゃんと動きました。(デフォルトのhttpd.confだと/etc/httpd/conf.d/*をすべてインクルードするはず)
あー、こりゃ便利だわ。まだ使い始めだからマイナス面が見えないけど、しばらく実運用して様子を見よう。
ちなみに、MacOSだと標準で入っているapacheと相性が悪いらしく、別途apacheを入れる必要がある。(MacPortsのapacheを使ってpassengerを動作させる方法を知ってる方連絡ください)
最後にPassengerで確認したい要点(何かわかったら追記する)
  • メモリ使用量
  • ソース修正時に再起動が必要か否か(ドキュメントに書いてありそうだけど)
  • インスタンスの落ちやすさ。
  • 各種railsバージョンやプラグインとの相性(問題ないと勝手に思ってるけど)
  • 外部からの死活確認の必要性。また再起動の方法。(apacheの再起動になるのかな?)

やっぱり動作モデルを理解するのが、理解が速いのかな。