Home > 技

2010.01.31

WakameTech #1(そろそろ本気でIaaS型クラウドを作る会)にいってきました

WakameTech #1(そろそろ本気でIaaS型クラウドを作る会)っていうイカしかネーミングの勉強会に行ってきました。

最近なにかとつけてクラウドクラウドって完全にバズワード化してて、
SaaSだPaaSだIaaSだHaaS(Human as a Service。笑)だ、
#ガキの頃は、そーれヒゲそれバース、とか歌ってましたね。。。
アプリ屋の自分にはよく分からんので、
なんかRubyって作ってるクラウドらしいっていう軽い気持ちで参加してみました。


IaaS型クラウドとは:axsh山崎さん

 かなり挑戦的な、うさんくさいクラウドの現状をバサバサ斬りつつ、
 #VPSで出来た事を蒸し返すなとか。
 #プライベートだパブリックだわざわざ新しい言葉を作るなとか。
 セキュアに(仮想化された)サーバ間の通信をやるのは難しい的なことなど、
 聴いてた時はなるほどなぁと思っていたのですが、ちょっと早くて
 あんまりよくわからなかったです。。
 Nifty Cloudの言及もあったり、ほぇ~と聴いていました。

 ↓この辺とかグッときましたね。
 - コンピュータ と データセンター のアナロジー
  ・Thread⇔Server
  ・Memory Allocation⇔KVS
  ・File I/O⇔Storage Provisioning

 で、IaaS型クラウドの話。ポイントは2つ。
 1 プログラマブルであること
 2 自動化されてること。
 →で、Wakame。

 Wakame
  Rubyで書かれたOSS。カツオ先生が単独で。
  Master-Agent型の非同期式手順実行エンジン。

  携帯電話向けの広告週配信システムとか
  家電のファームウエア配信サーバに使われているそうです。

  難しいこと
  ・運用
   1台のマシンに仮想化して突っ込んだりとかしても。。
   電源逝っちゃったら終わりだし。
  ・ネットワーク
   サーバ間通信。iptablesとか使ってもできるけど、
   スケールしないよね?と。
  ・ユーザ単位課金
   1本のLANケーブルにいろんなユーザーのパケットが流れるのに
   どうやってユーザー単位のトラフィック計算するのよ?っていう。

  HVC-HVA
  ・ハードウエアの追加は人間
  ・サーバを挿すだけで設定(Clonezilla)


サーバ管理の話:登尾さん
 ActiveResourceでRestfulなAPIでデータセンターマネージャへ
 #Railsではなくシナトラだそうです。

 ↓こんな感じ。
 ++++
  instance.create(
   account=>”hogehoge”
   xxx=>”xxx”
  )
  →POST /instances.json
 ++++

 こうやってWebサービスの繋ぎとかじゃなくても、
 HTTPでRestfulなんてのが当たり前なんだなぁとか感心しました。

・Clonezilla
 台湾で開発しているらしいOSSなプロダクト。
 →バックアップ&リストア用のツール

 いろんなファイルシステムに対応してるらしいけど、
 ext3での検証しかやれていないそう。

 なぜClonezilla?
 →イメージを展開するだけでよい。

 OSがインストールが入ってればClonezillaは入れられるけど、
 依存パッケージが多いから、ネットワークに繋げてパッケージマネージャみたいの
 使わないとしんどいらしいです。

 インストールそのものはそんなに難しくなさそう。
 GUIでもコマンドラインでも設定可能。

 ddとかでやるより時間がかからないそうでした。


デモ
 ブラウザからポチポチやるだけで、ノードが追加されて構築された!
 

事例:アイキューブドシステムズ 秋間さん、宮島さん
 CLOMOでWAKAMEを使用。

 予定した時間にWakameに増減を支持
 増えたEC2インスタンスをzabbitxに登録


自分の会社はひたすらsshで繋いで人間が頑張ってますが、
こうやって画面ポチポチやればいい時代がすぐそこにきてるんだなぁと。
EC2を使って、より効率的にこうやってやれれば、運用の手間はほんとに省けますね。
#いざって時は、、、ってシチュエーションは多くありそうな気がしますが。。

たぶん自分よりも若い人たちがノリノリでやってるんだろうなって思うと、
頑張って欲しいなって思います。
ちなみにaxsh(あくしゅ)さんの事務所は自分の家から徒歩3分くらいのところに
あるみたいですw #丁目まで一緒

今日の資料は公開してもらえるということで、楽しみです。
特に最初の山崎さんのお話はかなり熱かったので。

2010.01.16

hbstudy#7に行ってきました。

前回に引き続き、ハートビーツさん主催の勉強会に行ってきました。
IMG_0595
 
—-
【 GAEについて – 柴田さん 】
—- 
- スケーラブルなサイトを簡単に
 ・ Google Moderator
  オバマ大統領がオンライン討論会の質問を決めるのに利用
  数時間で7000の質問。うん十万の投票。
 ・ 衆議院選挙のキャンペーンサイト
 ・全裸Bot
  全裸でって付けてリツイートしてくれる
 
- クラウドの種類
 ・saas インフラ+ビジネスロジック
 ・paas インフラだけでなくプラットフォーム
 ・iaas インフラだけ
 
 GAEはpaas。
 WindowsがやってるAzureもpaas。GAEの対抗。
 
- DataStore(BigTable)
 RDBMSではない。アンチ正規化。JOINのような機能がない。
 RDBMSはいい感じにクエリするためにコンピュータが頑張るが、
 スケーラビリティを考えると。単一クエリをいかに効果的にやるか。
 
 GAEはクエリに時間がかかるとエラーになっちゃう。
 
 テーブルのロックはボトルネックになりがちなので、Serial型がない。
 ロックの機会を最小限にすることでスケーラブルなシステム。
 
 たくさんあるサーバに仕事を分散させる感じで。
 一個のマルチコアのマシンでCPU100パーセント使い切るってのは難しい。
 スレッド間のロックとか、メモリとか、IOがネックになったりとか。
 → 複数のシングルコアのマシンに頑張らせる
 
- 課金について
 CPU>帯域>データサイズ
 10GBを1月置いといても1.5ドルくらい。
 ・CPUは近年あんまり性能が上がってない→複数コアの方向で。
 ・帯域を増やすのも結構大変インフラの工事が要るし。
 ・データサイズ→ムーアの法則的に安い。
 
- 非RDBMSは怖くない→考え方変えたら?
 ObjectStore(ObjectDataBase)−Amazonとかで使われてる
 Cache-医療分野で使ってる。XMLを扱う。統一の規格があるらしい。
 
- Python
 予約語(変数として使えない単語)の数
  Perl 220, Java 50, Ruby 40, Python 31
  言語の機能が整理されているシンプルで奥が深い
 Googleの使う言語
  C++, Java, Python
  Google内の30パーセントがPythonで出来ている。
 
・チープだけどスケーラブル
 Facebookアプリとかmixiアプリとかに使われてたり
 低いレイアの運用コストがかからない
 
・全部Googleに委ねる必要がある
 機密性の高いデータは扱いづらい
 内部統制的にソースの所在は?とか言われるとちょっときつい。
 
・箱庭の窮屈さ
 外部とソケット通信とか出来ない
 Cでコンパイルされたようなライブラリを使うことが出来ない
 長時間CPUを使うようなリクエストはキャンセルされてしまう
 
・スケールのされかたは?
 リニアにされていくの?ある程度たまったらボコって上るの?
 設計によって。データが増えると長時間走行するような
 プログラム書いたらあんまりだよね。
 同時に30個のクエリしか受け付けられないって制約があるけど?
 →衆議院選挙サイトはその制限をGoogleの人が外してくれたみたい
 
・その他
 Googleの中の人に依頼するとー的な事がチョイチョイある(インデックスが削除できないとか)
 日本のGoogleには担当の人があんまりいないから、
 英語のメーリングリストに入ったりとか、
 イベントにいったりして人脈広げるとかする必要があるらしい。
 
 
—-
【バックアップの話 – 坪井さん】
—-
- バックアップについて
 最近あんまりハードは壊れない。
 最近ではインフラ構成を冗長化したりする。
 → 主に人災の時っていう用途が大きいんじゃないか。
 
- 増分と差分バックアップの違い
 ・増分・・・前回との差分だけとる。インクリメンタル。
 ・差分・・・フルバックアップからの差分を都度全部とる。
 ・リストアするには?
  増分 – インクリメンタルに戻すような感じなので面倒
  差分 – 前回のフルバックアップ+差分を戻せばいいので楽
 
- Amanda
 ・オープンソースのバックアップソフトウエア
  91年から開発されているが、日本語のドキュメントが少なかったりして、
  あんまり日本では使われていなかったりする。
  外国ではかなり使われてて、大抵のディストリビューションには入ってる。
 ・出来ること
  ダンプとかリストアとかtarとかの管理。
 ・構成
  - バックアップサーバとクライアント
  - テープサーバ
  - インデックスサーバ
  ハードディスクに置くときにも仮想テープ的な。
  AmazonS3にバックアップを取る機能もあったりするらしい。
 ・使い方
  ホスト名を使って通信するので/etc/hostsの編集が必要
  /var/lib/amanda/.amandahosts
  バックアップホストとFQDN
  バックアップセットの使い方
   DailySet1をコピって使う/etc/amanda以下にセット毎にディレクトリ。
  amanda.conf
   どんなサイクルで(世代管理も出来る。xxなタイミングでフルバックアップを上書きとか)
   何をどこに
   容量の設計や
   帯域を絞ったり(本来のサービスに影響を与えないように)
   amcheckってコマンドでApacheのconfみたいにテストできる
  リストアの方法
   amrecoverとamrestoreはinfofileっていうのが必要
   mtとddコマンドが使えれば最悪なんとかなる(よく解らんなぁ。。)
  便利なんだけど設定ファイルがかったるい
   Amanda Enterprise EditionっていうGUIがある(有償)
  ZmandaRecoveryManager
   MySQLの4系5系のスケジュールしたバックアップとか
   MySQLのバイナリログが有効になっている必要がある
   ZRMも有償のはGUIがある
   
- どうやってバックアップとる?
 ・rsyncとsh
 ・darコマンド
 ・GAEのバックアップは?
   1個データを取ると、マシン3台以上に置かれるので〜
   dumpしてローカルに持ってくることもできる。

- エピソード
 ファイルを誤って消しちゃったとかはリカバりやすいけど、
 SQLのupdateとかは結構おっかない。

- スナップショット
 便利だけど、個別のファイルを扱いたい時とかはちょっと。

2009.12.23

リファクタリング・ウェットウェア ― 達人プログラマーの思考法と学習法

リファクタリング・ウェットウェア ―達人プログラマーの思考法と学習法
Andy Hunt
オライリージャパン
売り上げランキング: 11363
おすすめ度の平均: 4.0

4 この手の本に食傷された方に…
4 学ぶための遊び
5 全ての学習者が読んで実践するための本
4 まとめ本

リファクタリング・ウェットウェア ―達人プログラマーの思考法と学習法を読みました。

振り返ってみると、ここ1〜2年、ビジネス書みたいのばかり読んでいて、
技術書をあんまり読んでいないな、と。

とにかくいつも仕事にまくし立てられていて、
受託でやってた時のように、数週間タスクがなくて暇なんていう状態が
あり得ない事に起因してるのかななんて思ったりします。

そこで、手にとったのが、この本。
ウェットウエアってのは脳みその事を指してるんだけど、
達人プログラマたるもの、そいつをどう扱うのか?っていう本です。
# ブラックスワンの話しとかも出てきたりします。

全然技術技術しているわけではないけど、端々でエンジニア稼業をしている人には
ムフフって思えてしまう記述が目についたりします。

・ドレイファスモデル的には、自分が今どんくらいにいて、
・自分の役割として、ただ命令に従ってちゃいかんなぁとか、
・脳みそは線形なLモードと、非線形なRモードがあって、
・両方をうまいこと使わないといけない。
・Rモードを呼び出すために手書きのメモを〜とか。

でも、まぁ、一番グッとくるのは、最後の方の働き方の話しで。
昔読んだトムデマルコのピープルウエアとかと似たような。

・メールや電話や割り込みとの向き合い方とか
・いかに集中ができる環境を作るかとか
・アウトプットの考え方とか

何年も前から、その通りだなって思ってる事が全然やれてない。
会社うんねんで愚痴をこぼしてる前に、何度も本を読み返して、
そういう振る舞いができるように。

にしても、2009年の年末に、とても素敵な本にめぐりあえたなと思っています。

大掃除を兼ねて、今後頻繁に読み返すか否かで棚を分けようと思っているのですが、
確実に頻繁に読み返す事になる一冊になりそうです。


最近、改めて↓をもう一回読もうかなぁと思っています。

達人プログラマー―システム開発の職人から名匠への道
アンドリュー ハント デビッド トーマス
ピアソンエデュケーション
売り上げランキング: 21990
おすすめ度の平均: 4.5

3 訳注が親切
5 一流プログラマーになりたい人は必読の本です
5 伝える事柄と伝える方法は車の両輪
4 素人から玄人への道
4 知らないと恥ずかしい

2009.12.21

平成21年度 秋期 情報セキュリティスペシャリスト試験

今日がこないだ受けたIPAの情報処理試験の合格発表の日だったってのを、
前の会社の後輩のブログで知った→システムアーキテクト試験うかった!
なんと縁起がいい!とか思って、家帰って、いろいろ漁って、
ようやく受験票が出てきて、ドンナモンジャーイって話しですよ。

で、、、

受験番号 SCxxx-xxxx の方は, 不合格 です

午前Ⅰ得点 ***.**点 -> 免除でした
午前Ⅱ得点 64.00点
午後Ⅰ得点 70点
午後Ⅱ得点 46点 -> 6割以上取らなきゃだめ><
--

ま、また午後Ⅱかよぅ。。。orz

しっかし受からんなぁ・・。たぶん3回〜4回くらい落ちてる気がします。。
パチンコに負け続けてるような気分です。。いや、勉強しろって話しかw

ってか、午前も結構危なかったしね。。
次も頑張ります。

----
ちなみに、春の時のエントリ
 受けた時→情報セキュリティスペシャリスト試験
 結果→情報セキュリティスペシャリスト試験結果発表

—-

ポケットスタディ 高度試験共通 午前1・2対応 (情報処理技術者試験)
村山 直紀
秀和システム
売り上げランキング: 13351
おすすめ度の平均: 4.5

4 基礎的な学習には向きません。
4 携帯に便利な過去問題集
4 見やすい!やりやすい!
1 これじゃー駄目だよ。
5 使いやすい、試験で出る。

情報セキュリティスペシャリスト「午後」オリジナル問題集〈2010年度版〉 (Shuwa SuperBooK Series)
野崎 高弘 平田 豊
秀和システム
売り上げランキング: 6970
おすすめ度の平均: 4.0

4 基礎知識、短文記述力の養成によいが、これだけでは厳しい

2009.12.13

TokyoCloud #3 developers meetup

TokyoCloud #3 developers meetup に行ってきました。
IMG_0467

京浜東北線が遅延してて、遅れての参加となってしまいました><

-----------------------
AmazonのエバンジェリストのJEFFさん
-----------------------

- Amazon VPC
 日本にもここのところ担当者いなかったけど、ガッツリやってく。
 (紹介されて、マーケティングの担当ですーとおっしゃってました)
 仮想化されてて、他とは隔離された(isolated)AWSを作れる。
 簡単に自分の会社⇔AWSのVPN接続ができる。
 内側のSubnetは使い放題。
 VPCではセキュアにしたいので内側から外側へのグローバルへの接続は行わない。
 どうしてもやりたかったら、VPNで自分の会社でつないでから連携してね、と。
 仮想サーバが壊れてるかはモニタリングしてて、MRTGみたいのが見れるみたいな
 こと言ってました。(英語のため、微妙ですが、たぶん。。)

- Amazon Relational Database Service
 MySQLが使える。
 バックアップとか、拡張とかは裏側でやってくれて呼ぶ方はシンプル。
 こっちもまた、SecureでReliableでScalableだと。
 DBは時間貸し。1個API呼ぶだけてフルバックアップ取れちゃう
 my.cnfをいじることは出来ないらしい。
 → TODOリストには入ってる。待っててくれ、と。

- クラウドっぽい話
 ウェブポって年賀状サービスの例。年賀状は正月近辺しか盛り上がらない。
 クラウドのいいところはそういうとこで。
 PostgreSQLをEBSボリュームに〜なんていう話とか。

-----------------------
TISの並河さん
-----------------------

- 書籍の紹介
 クラウド Amazon EC2/S3のすべて~実践者から学ぶ設計/構築/運用ノウハウ~

- SKIPaaS
 EC2とS3で運用してる

- レイテンシ
 静的ファイルは国内で。コンテンツ圧縮したりしてもちょっと。
 シンガポールのデータセンターは期待してる。

- コツ的なこと
 S3Sync→rsyncみたいなコマンド。差分だけ。あつい。
 AWSのIDの使い分け。
  ・本番に一つ
  ・テスト環境用に一つ
  →本番と同じ環境を立ち上げやすい。
 間違って本番のノード落としちゃったりとか、
 テスト環境のグダグダな運用してたら誤って本番の〜とか、
 Amazonの規定にふれてIDが止められちゃったりすることがある
 →分けておいた方がいい。

- インスタンスにアクセスできないとき
 ・自然復旧できない(5〜10分で復旧する場合が多い)
 ・サーバをAPI経由でリブートして復旧
 ・AWSサポートスタッフによる復旧
   プレミアサポートだと対応早い。
 ・ハードウエアのデグレードが起きているのでマイグレーションしてくれ、とか。

———————–
・学びing 五十嵐さん
———————–

- EC2を採用
 けんてーごっこっていうサイトで食ってる会社だけど、
 Amazonにバコっと載せ替えた。リスキーだったけど、本番でやんなきゃわかんないよね、と。

- CloudNews
 EC2使って欲しい人と、EC2使って開発出来る人のマッチングサイトを構築中だそうです。

- けんてーごっこの事例
 フジテレビのとくだねで取り上げられた直後1分後からアクセスできず
  ↓
 半日アクセスできない状態
  ↓
 FNS感謝祭で取り上げられるらしい
  ↓
 EC2で、普段は6台→200台まで申請
  ↓
 Amazonから申請が通らない(通常は20台まで)
  ↓
 50台にして申請
  ↓
 申請通らず
  ↓
 規定の20台に
  ↓
 2時間くらいで構築
  ↓
 結局放送されなかった。
  ↓
 放送終了後
  ↓
 50台に増設された。。。orz

 短時間で大量のサーバを追加できた
 数日間サーバ設置しっぱなしだったけど、1万円くらいで済んだ

- その他
 クラウドフロントのキャッシュがなっかなか消えてくれなくて困った。

———————–
Paul McMahonさん
———————–

 mobaleanっていうモバイルの開発会社で働いてる

 Herokuの紹介。いくつかコマンド叩くだけで git使ってアプリをデプロイできる
 Rails、Rack、SinatraなんでもOKよ、と。

 GoogleAppEngineでJRubyの話を聞いたときに
 Herokuの方が全然簡単だって思った。

 Herokuは裏でPostgreSQLが動いてる。
 BigTableもいいけど、PostgreSQLってトラディショナルなRDBMSで、
 Rails標準のやつのが簡単だよね。

———————–
クロス・マーケティングの竹下さん
———————–

- クロス・マーケティング
 オンラインサーベイの会社。
 オンラインで調査して、それを企業に提供する。
 数百台のサーバでランニングコストが1億5000万円とか。
 research.jpってサービスを2009年1月からプロジェクトを発足
 システムのコストはおさせえて、あまった金でいろいろやりたい。
 ルータ壊れたとか、サーバ壊れたとか、めんどくさい。

- で、クラウド。
 Azure:当時はまだわからなかった
 SalesForce:高かった
 EC2:いろいろやれるし良さげ。

- EC2
 ・セキュリティは?
  SecurityGroupだけで大丈夫?OpenVPNとIPTables。
  セキュリティ会社による監査もかけてみたけど問題なかった。
 ・レイテンシは?
  素材のダウンロードとか、やっぱり結構思い。
  ただ、基本バッチ処理なので。
 ・情報不足じゃね?
  いきなりリソース不足に陥って、直接JEFFさんに頼んだり。
  どこで落ちてるのかわからなかったり。結構根性論。
 ・データを落とすところは全てEBSにしてる
  AMIでのバックアップとか、EBSのスナップショットが秀逸。
 ・インターネット上なので
  発注先のフィリピンとか、インターネット上なので海外からのアクセルも楽ちん。
 ・想像以上にサーバ台数が増加する。管理負荷が大きい。
 ・安いけど、使い方次第。
  3年間の計算で5000万円くらいダウン。

- Eucalyptus(プライベート)とAmazonの組み合わせ
 これは文書にするのは難しいけど、ちょーヤバイ。
 凄まじくわかりやすいUIっていうのはこういうことか、と。

———————–
加藤さん
———————–

・流行語大賞のページ
 1998年からサイト運営代行

・EC2
 1周間で提案〜リリースまで。
 DNS切り替えたりを含めて構築は3日間とか。

 EC2普通のインスタンス。WindowsでIIS。FTPでデプロイ。
 EC2とクラウドフロントを使ってみただけ。

 140リクエスト/secくらいなら問題ない
 ネットワークの負荷を考えなくていいってのは楽
 
 

クラウド Amazon EC2/S3のすべて~実践者から学ぶ設計/構築/運用ノウハウ~ (ITpro BOOKs)
並河祐貴 安達輝雄
日経BP社
売り上げランキング: 2338

2009.12.09

Maven2+Hudsonでカバレッジが取れるまで(まだ途中ッス)

カバレッジつったらdjUnitだべってことで、
↓の更新サイトからバコっと突っ込んで動かしたら普通に動きました、と。
============
http://works.dgic.co.jp/djunit/update/3.5.x/site.xml
============

やりたいのはMaven2+Hudsonなので、
まずはMavenだべってことで、pom.xmlに↓を追加してあげました。
============
<dependency>
<groupId>jp.co.dgic</groupId>
<artifactId>djunit</artifactId>
<version>0.8.4</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>asm</groupId>
<artifactId>asm</artifactId>
<version>3.1</version>
</dependency>
============
oroとかも必要だったみたいなのですが、元々入ってたので。

なんすけど、djUnitってmavenのセントラルリポジトリに無いので
↓こんな風にローカルのリポジトリに置いてやります。
============
mvn install:install-file -Dfile=C:\tmp\djunit.jar -DgroupId=jp.co.dgic -DartifactId=djunit -Dversion=0.8.4 -Dpackaging=jar -DgeneratePom=true -DcreateChecksum=true
============
# Hudson考えると、この時点でちょっとないかなって思ったりしましたけど。

んでもって↓このWebサイトを参考にさせていただいて、
http://miau.s9.xrea.com/blog/?itemid=1048
http://d.hatena.ne.jp/tanigon/20080416#p1
http://d.hatena.ne.jp/tanamon/20080812/1218524807

maven-surefire-plugin ちゅうのを使って叩いてみました、と。
普通に叩く分には特に問題なく。
ただ、なんでdjUnitか?っていうと、カバレッジが取りたかったからなんですよね。

↓こんなオプションがあったので試してみたら、、、
============
-Djp.co.dgic.eclipse.coverage.usecoverage=true
============

↓なんかゴタゴタ言われるんすよね。。
==========
Caused by: java.lang.NoClassDefFoundError: com/jcoverage/coverage/ConditionalImpl
at com.jcoverage.coverage.InstrumentData.addConditional(InstrumentData.java:92)
at com.jcoverage.coverage.asm.AsmMethodInstrumenter.visitLineNumber(AsmMethodInstrumenter.java:98)
at org.objectweb.asm.ClassReader.accept(Unknown Source)
at org.objectweb.asm.ClassReader.accept(Unknown Source)
at jp.co.dgic.testing.common.asm3x.AsmClassReader3x.accept(AsmClassReader3x.java:22)
=========

開き直ってdjUnit止めようかなと。。。。で、ちょっとネットサーフィンしてたら、、
Emma Maven Plugin っていう、なんかイカした名前のカバレッジ取れるヤツがいるらしい、と。
↓Basic usageをみてたら、
=========
http://mojo.codehaus.org/emma-maven-plugin/examples/basic-usage.html
=========

↓これだけでいいの?的な。
=========
<reporting>

<plugins>

<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>emma-maven-plugin</artifactId>
<version>1.0-alpha-3-SNAPSHOT</version>
</plugin>

</plugins>

</reporting>
=========

で、動かしてみたら、、、、
=========
mvn emma:emma
=========

処理が終了して、index.htmlとかいうのが↓に出てきたッス。
=========
target\site\emma\index.html
=========

なーんか、画面が地味・・・

Eclipseで流した結果と比べてみても、若干数パーセント違ったりするとこあるけど、
まぁいいのかな的な。。。

で、Coberturaを叩いてみました。
↓これによると、BasicConfigurationってそれだけでいいんだ風だったので、
=========
http://mojo.codehaus.org/cobertura-maven-plugin/usage.html
=========
設定だけして、mvn cobertura:cobertura を叩いてみたら、、、
普通に成功して↓のデザインもいい感じ。
=========
arget\site\cobertura\arget\site\cobertura
=========

こいつをHudsonにもってくと、なんかいろいろあるらしいんですが、
明日以降に。。。

Apache Maven 2.0入門 Java・オープンソース・ビルドツール
野瀬 直樹 横田 健彦
技術評論社
売り上げランキング: 60077
おすすめ度の平均: 5.0

5 タイトル通り、入門にはもってこい!です。
5 Eclipseに組込み可能
5 単なる使用方法の解説に留まらない、すばらない内容です。

2009.12.06

hbstudy(ハートビーツさん主催のインフラエンジニア勉強会)#06

hbstudy(http://heartbeats.jp/hbstudy/)に行ってきました。
自分はアプリケーションとかミドルウエアのエンジニアなわけですが、
自社サービスの運用をやってることもあって、知らなくていいか?っていうと、
そうでも無い立場なので、新宿ということもあり、行ってきました。

ハートビートの坂口さんによる「運用/監視のコツ」と題した発表と、
ひとり5分のライトニングトークスっていう2部構成。

IMG_0449


・坂口さんの発表
 ケーブリングとかから、Jmeterで負荷かけたりとかまで、幅広い。
 L1-3(ネットワーク) も L4-7(SSH,HTTP,RAIDとか) も 両方。

 Hinemosとか、Nagiosとか、聞いたことあるけど、日ごろ触れてない
 モノ達が多数。(普段はMRTGみてるくらい)

 どういうところで、どう使ってるのか?ってのが分かって勉強になりました。
 #その反面、JavaのOutOfMemoryがなんちゃらとかってのは、
 # jstatコマンドとか使えばもっと適切に出来たりするんじゃない?とか思ったり。

 バッチ処理中の時間帯は負荷を許容するとか、メンテ中は監視を止めたりできるかとか
 その辺をフレキシブルにいじれるかどうかも重要ですよね。
 # 普段は監視の停止お願いしまーすって連携するだけで、
 # それがどう行われているのかとか把握しておらず。。

 割とNagiosの話題が多かったように思いますが、
 設定ファイルはSubversionで管理して、テスト環境で試してから本番に持ってってるそうです。

 ただし、Wordで作っているサービスごとの手順書とかは、
 当番制で回してるので版管理が難しく、ファイルサーバでxxみたいな
 運用になってしまっているそうでした。
 Wikiを使っているよーとう方も会場の中にいらっしゃいました。

 最適な監視とは?ってところで、
 むやみに項目増やすんじゃなくて、例えばMySQLだったら、MySQLの
 コマンド叩いて判別しようぜ?っていうアプローチ。
 # CactiでMySQLのクエリ発行回数とか見れたりするの便利ですね
 → この辺、アプリ屋とかDB屋とかサーバ屋とかっていう建付けが
   もっと柔軟になれば、もっといい感じに運用できそうだなっていう印象を受けました。

 本番のオペレーション記録は全てファイルサーバに残しているそうです。
 PuTTYのプラグインで残せるようにしたりとか、(iniファイルで設定)
 Twitterのタイムラインではscriptコマンド使えばとかそういう感じ。

 あとは、ハートビーツさんはインフラの運用を受託してやっているということで、
 xxから先は開発会社さんがーとか、そういうの、苦しいよなって。。
 自分も昔は受託開発やってたので、直したくても予算がないとか言われて
 ふてくされたことも多々あったので、その頃の思いがちょっと蘇りました。。


・ytsuboiさんのLT

 ドメインの有効期限とサーバ証明書の有効期限をNagiosで監視
 → コレありますよね、自分も忘れてて、あっぶねぇって時が何度かありました。。
   Nagiosコマンド追加したり、perlの正規表現で頑張ったりとかで、
   そういう工夫熱いなと思いました。

 いまどきのサーバは滅多に壊れない。
 が、先日、某社のDNSがマルっとコケた際に、自前のDNSでキャッシュしてるので
 しばらく気が付かなかった。

 これだけは知っておきたい ネットワークの常識っていう本を書かれたそうです。


・yuzorockさんのLT

 Gooのインフラエンジニア。CentOS, RedHatが多いそうです。

 キーワード的にはサーバエンジニアとして↓のような感じで。
 kickstart,yum,puppet,nagios,cacti,IPMI,rsyslog,syslog-ng,swatch,Trac,excel

 syslogの管理について、壊れたらログインとかしてやってるので、
 もうちょっとインテリジェントにやりたいなとのことでした。


・hyoshiokさんのLT

 FaceBookの例。うん万台のサーバを30人とかでやってる。
 1人1000台運用できるように。ベストプラクティスの探求しないと。

 スライド無しでの講演でしたが、さすが吉岡さん、存在感っていうか、
 迫力っていうか、全然ちげぇ。。


・越川さんのLT

 CactiとかめんどいのでRRDTool使ってる。
 Xymonグラフは5分ごとの値が48時間しか保持できないので拡張した。
 お客さんからお金もらえずに、ボランティア的に実装したので、
 勉強会で公開しちゃうっていう熱いノリ。


・matsuuさんのLT

 タイル型ウインドウマネージャ。
 ウインドウを手で動かしたり、並べたりしてませんか?と。
 自分は激しくやっているのですが、
 awesomeを使うと、ウインドウマネージャがしてくれて
 ウインドウ同士が重なることがない。
 また、並べてほしくない(GIMPとか)例外設定とかも出来る。


・think-tさん

 一晩かけても作業が終わらず、お客さんの業務が朝からはじまっちゃって、、、的な
 こんなんありますよねエピソードを交えつつ。
 7月の最終金曜日はサーバ管理者の日だそうです。
 過酷な状況で働いているサーバ管理者をもっと敬いましょうと。。


・永安さん

 NTTデータ→起業
 PostgreSQL Conferenceの報告
 Ustで公開されているものもあり、おすすめの紹介
 チューニング技法とか、ユニットテストとか、ユーザグループって何やってんの?とか
 スタッフとして関われば、セッションタダで見れたりするんだぜとか。


・馬場さん

 振り返り。月1回2時間程度。土曜日にやってる。
 現在6回目。話したい人募集。


・皆勤賞の表彰式

 全部の回に出席されている人がいて表彰されてました!
 IMG_0450


非常に勉強になりました。
懇親会にいって現場ならではの話をいろいろ聞きたかったのですが、
歯の治療中でお酒が微妙ということで、、
次回も参加したいなと思います。

これだけは知っておきたい ネットワークの常識
坪井 義浩 工藤 修一 佐野 裕
技術評論社
売り上げランキング: 17985

2009.11.22

Scalaハッカソン@NSビルに行ってきました

開始の1時間くらい前にネットで開催情報をゲット
会場はNSビルとのことで、家から徒歩10分くらい。
ATNDみたら申し込めたので行ってみる。

Ubuntuと迷ったけど、いい加減もっと慣れないとなと思って、
MacBookをもっていく。
#TerminalCopyOnSelectとか入れたり
#(Snow Leopard版のTerminalCopyOnSelect.bandleを SIBMLのPluginsディレクトリ配下に)、
#US配列だとあのキーどこー?とか、
#面倒だったけど、こういう機会があるといろいろ覚える。

Scalaの環境を整える。
とりあえずJavaは新し目のヤツが入ってたから、それをそのまま使う
====
$ java -version
java version “1.6.0_15″
Java(TM) SE Runtime Environment (build 1.6.0_15-b03-219)
Java HotSpot(TM) 64-Bit Server VM (build 14.1-b02-90, mixed mode)
====

で、scalaのランタイムを落とす。
====
wget http://www.scala-lang.org/downloads/distrib/files/scala-2.7.7.final.tgz
====
って普段ならやりたいところ、MacBookでwgetできなかったので、
普通に公式ページからブラウザ経由で落としてきて入れる

パスを通す
====
$ vi ~/.bash_profile
export LANG=ja_JP.UTF-8
export SCALA_HOME=/Users/eshinohara/Downloads/scala-2.7.7.final
export PATH=$SCALA_HOME/bin:$PATH
export _JAVA_OPTIONS=”-Dfile.encoding=UTF-8″
====

で、scalaコマンド叩くと。。なんかシェルモードになったす!
====
$ scala
Welcome to Scala version 2.7.7.final (Java HotSpot(TM) 64-Bit Server VM, Java 1.6.0_15).
Type in expressions to have them evaluated.
Type :help for more information.
scala>
====

で、HelloWorldしたくてたまらない。。
====
vi HelloWorld.scala
object HelloWorld {
def main(args: Array[String]) {
println(”Hello Scala World!”)
}
}
====

で、コンパイル。
====
$ scalac HelloWorld.scala
====

実行する、と。
====
$ scala -cp . HelloWorld
Hello Scala World!
====

NetBeansをインストール。
↓ここからフルフルのやつを落としてくる
====
http://netbeans.org/downloads/
====

Scalaプラグインのインストール。
一番最新の6.8だといろいろ足りないって怒られるので6.7のzipを解凍して↓
====
http://sourceforge.net/projects/erlybird/files/nb-scala/6.7v1/nb-scala-6.7v1.zip/download
====
ツール→プラグインから解凍したzipの中身を選択して突っ込む

NetBeansでScalaプロジェクト作ると、↓こんなんがもうできてるので、
====
package scalaapplication1
object Main {
/**
* @param args the command line arguments
*/
def main(args: Array[String]) :Unit = {
println(”Hello, world!”)
}
}
====

実行すると↓こんな感じ
====
init:
deps-jar:
Compiling 1 source file to /Users/eshinohara/NetBeansProjects/ScalaApplication1/build/classes
compile:
run:
Hello, world!
====

あとは対話型シェルで↓に従いながら、
====
http://dl.dropbox.com/u/261418/scala-hackathon/index.html
====
トレイトとかクロージャとか末尾再帰でスタックオーバーフローしないとかを、
ほえぇーって動かしてたら終わってしまいました。
#なんつーか、頭やらかくないとダメそうですね。関数型言語。

最後に主催のyuroyoroさんによるサンプルアプリの講義を聞いて、
カリー化とか、なるほどねっていう。

ハッカソンなのに何もアウトプットを残せなかったのが。。
って、何の前提知識も無しに行ったので仕方ないよねっていうw

ただ、家にいてゴロゴロしながら何もしないよりは、
参加費の1300円払って、こうやって手を動かしてる方が、
何倍も価値があるよなと思うので、行ってよかったです。


会場はこんな感じでした。3人がけの椅子に2人ずつって感じ。
ほとんど話し声は聞こえず、みんな黙々とやってました。
IMG_0414

腹減っちゃって、途中マックで100円のバーガー食ったり、
IMG_0415

NSビルのクリスマスツリーがライトアップされてたり、
IMG_0417

隣の会議室がP&Gの就活のセミナーだったらしく、
スーツきた若者がたくさんいました。
彼らは我々の事を何の集団だと思ってみてたんだろうなと
ちょっと気になりましたw


懇親会は、ここのところ、ちょっと飲み過ぎなので自粛しました。。

Scalaスケーラブルプログラミング[コンセプト&コーディング] (Programming in Scala)
Martin Odersky Lex Spoon、Bill Venners
インプレスジャパン
売り上げランキング: 7727
おすすめ度の平均: 4.5

3 初心者の入門書としては高度すぎる
5 ポストJavaを求める人向けです
5 Scalaのバイブルたる本です。
5 すべて道がscalaに通じていた

2009.11.20

HTML5に関するGREEさんのオープンソース勉強会に行ってきました。

第19回オープンソーステクノロジー勉強会(http://labs.gree.jp/Top/Study/20091120.html)
に行ってきました。

内容が↓ってことで、何も予習せずに行ったわけですが、すげかったっす><
=======
「HTML5について」
株式会社あゆた取締役、html5-developers-jp管理人、Google API Expert(HTML5) 白石俊平
=======

Youtubeの動画をブラウザ上でJavaScriptでゴリゴリやったGoogleIOのYoutubeのデモの紹介から。
のっけから、なんかHTML5すごそうって言う掴み。

ディべロッパーのためのHTML5としては、html5-developers-jpというグループが
あるそうで、会場の半数くらいの人が参加しているようでした。

講演者の白石さんはGearsでオフラインアプリの開発をずっとやってきた方だそうです。

で、以下本題。

HTML5ってなに?

 10月30日に最終ドラフトが公開され、新しい要素とか属性とかAPIが盛りだくさん。
 実装的には今すぐに使える。それぞれのブラウザで実装がバンバン進んでる。
 勧告は2022年とか言われている

 マークアップ中心の仕様(指定できるタグがめっちゃ増えてる)と、
 Webアプリ用の仕様(クライアントサイドでやれることがめっちゃ増えてる)で、
 分かれている

HTML5の基本

  拡張子は今までのまま。htmlとかhtm。
  Content-Typeはtext/htmlで今まで通り。
  先頭に空のDOCTYPE宣言が必要になった。
  
  って書いておくことで、ブラウザはHTML5であることを認識して、
  最新のモードでレンダリングしてくれる

  増えたタグ
   文書構造
    article, aside, footer, header, hgroup, nav, section
   フォーム、Webアプリ
    figure, source, video, audio, canvas, embed
   インタラクティブ
    keygen, output, input要素に新しいtypeがたくさん
   テキスト系
    progress(プログレスバー), meter, command(ツールバー,右クリックメニュー等), details

  HTML5ではセマンティックな意味合いを持つブロック要素(セクション)が追加。
   section ・・・ HTMLの論理的な分割単位。
     今まではdivを使ってた。sectionも使える。けどCSSはdivで。
   article・・・RSSで配信しちゃっていいもの
   aside・・・セクションに対する補足
   nav・・・ナビゲーション
   bodyとかtdとかも独自のセクションを生成。全ての要素がセクションに所属する。
   →セクションを使うとアウトラインが組めるようになる。文書をよりセマンティックに。
    セクションの情報を自動的にとってきてーみたいなデモ。
   →→より適切なリスティング広告とかに応用できそう。

  METAタグにCharsetを追加できる

  Canvas・・・自由にお絵描きできるグラフィック要素
    AJAXのクルクルしてるやつを画像使わずに。
    色かえたり、止めたり、リスタートしたり。
    getContextってやるとお絵描きのコンテキストがとれるらしいんだけど、
    今は2dしかないけど、3d実装がどんどん進んでる

  動画や音声の再生ができるように。
   videoタグで動画が再生できて、audioタグで音楽が再生できて、
   sourceタグで複数のメディアの中からどれをーってのが指定できる
   ってか、videoタグやばい。JSで簡単に再生したり、止めたり、リスタートしたり。

   ただ、フォーマットとかコーデックが明確になっていないため、
   firefoxとsafariで同じように動画を再生したいーってなったらちと厳しい

  入力フォームのパワーアップ
   tel ・・・電話番号
   search・・・検索フォーム
   url・・・URL
   range・・・範囲内の数字
   →今のところOPERAが頑張ってる。カレンダーとか。
    dateとかタギングするだけでそういう入力フォームになる。
    requiredって書くだけで入力必須とか。pattern属性は正規表現で指定できる
    typeによって自動的にチェック。email, urlとか。
    JavaScriptに頼らずにバリデーションチェックできる。
    →一度に一カ所しかバリデーションできないっぽいけど。。

  エクスプローラーからファイルをドラッグアンドドロップしたり。
   Listenerで待つMIME Typeを指定してファイルを受け取ったりできる

  クロスドキュメントメッセージング
   外側のHTMLとiframeの間で通信できる。
   個人的に、これができれば、アレに応用できる、、なんてのを思いつきました。
   自分は最近、ネット広告分野に携わっていますが、世の中なんだかんだで、
   iframeなんだなと実感してたりします。。そこにこれはあつい。。

  オフラインWebアプリケーション
   マニフェストに書いておくと、ドバっとローカルに落としてくれてー
   オフラインでもいろいろできるよ、と。

  で、こっからが若干ひいた。

  WebDatabase
   ブラウザが持ってるデータベース。ドメインごとにDBを持つ。
   INDEXもはれて、普通にDBプログラミングできる。
   これは行動ターゲティングとかするのに、サーバ側の処理を
   思いっきり簡略化する可能性を秘めてると思う。

  WebStorage
   ちょ、なにそれっていう。。
   setXXXとかそういうので、KVS的にストレージにデータを保持。
   非常に使い方は簡単。IE8でも使える。
   上のDBと組み合わせて使えればいろいろできるよね。。

  WebWorkers
   で、極めつけに、こいつ。
   バックグランドで動作するJSスレッド
   画面の表示とは関係なく裏側でグリグリまわせる。
   DBやKVSと組み合わせてグリグリ回せるんだったら
   俺がサーバ側で頑張ってる今の仕事って何?とかw

   ただ、スレッドとはいえ、変数を共有できない〜とか。
   windowとかdocumentとかの変数は使えないので、
   Prototype.jsとかを使ってるやつは移植できないらしい。

   バックグランドのスレッドと画面を表示するスレッドは
   メッセージを送り合う感じらしい。

   Workerから直接DOMを触る事はできなかったり、デバッガが
   使えなかったりいろいろあるらしいけど、なんか違う世界観が
   求められるような気がする。

  WebSockets

   なんかここまで来ると引きますが、
   Commetみたいに双方向通信とかできるみたいです。
   今まではクライアントがサーバに問い合わせるだけだったのが、
   サーバからプッシュ〜とか出来るんだってさ。

ビジュアル的にいろいろやれるようになってるだけなのかと思ったら。。
しかも、これが標準仕様なので、この方向にみんな向かっていくということで。
本当にこの業界って飽きなくて素敵、とか思ってしまう今日この頃です。

懇親会はいろんな方とお話させていただいて、
思わぬところで、思わぬ人が繋がってたり、
業界の裏話的な事を聞かせてもらったり、楽しかったです。

こんなためになる勉強会なら1年間に50日くらい行きたいです。。

2009.10.30

先週の楽天テクノロジーカンファレンス2009

先週カンファレンスで、デモブースを出したり、LTに出たりしました。

こんな感じのデカイ講演会場の隣に、
IMG_0342

ブース出しました。
IMG_0340

Matzも見に来てくれたり。(私のブースにはいらっしゃいませんでしたがw)
IMG_0341

デモブースにずっと張り付いてたので、講演とか全然聞いてないのですが、
デモブースでいろいろな方とお話させていただいて、すごい楽しかったです。
音声認識のライブラリを紹介してくれた方とかいたり。
コレ、まじやばい→http://w3voice.jp/

そんなこんなでLTにも出ました。1時間46分くらいからが私のLTです。

[rtc2009]楽天ジャングル+Lightning Talks

前の会社の先輩がRubyの賞もらってたり、
以前Rails勉強会で仲良くなった某口コミグルメサイトを
開発していたエンジニアに会ったり、懇親会も楽しかったです。

ノベルティ的なグッズをちゃっかりもらって。
ROMAのステッカーはさっそくMacBookに貼りました♪
IMG_0344

そのまま思いっきり夜中まで、こんな腸詰め的なの食ったり、
IMG_0346

こんなマッコリ飲んだりしながら、打ち上げしました。
酔っぱらった、よしおかさんは俄然熱かったですw
IMG_0348

—-
厨房ITの方に写真撮っていただきました↓
http://blog.livedoor.jp/natoi/archives/949322.html
※ 彼はリアルに中学生なんです。とても礼儀正しい少年でした。

Next »