サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
デスク環境を整える
blog.livedoor.jp/sparklegate
2009年04月07日20:41 by 山崎泰宏 また一つ進化したEucalyptus 1.5 RC (Amazon EC2クローン) カテゴリネタ Tweet sparklegate Comment(0)Trackback(0) 以前ちらっとリンクしたEucalyptusというAmazon EC2のクローンが、今週に入って大躍進しています。 とにかくダウンロードしてコードを読んでみてください。 今回の目玉は、EBS対応です。 たぶん、今月4/23のリリースに合わせて開発を進めているのでしょう。 EucalyptusはEBSの仕組みを妄想するにはもってこいです。 同僚が、「どうしてEBSはこんなに安くできるのかわからん」と言っていたのもあってずっと前から気になっていたのですが、なるほどATA over Ethernetという手があったようです。 お恥ずかしいことにその存在を初めて知りました
2009年04月26日11:19 by 山崎泰宏 [Wakame]実際どのような管理が出来るか?(Getting Startedより) カテゴリWakame Tweet sparklegate Comment(0)Trackback(0) 「Wakameはすごそうなんだけど、実際に何が出来るのかこれだけではわからない」というご意見があったので補足します。簡略化した説明なので、今度は逆に「あれ?そんだけ?」と思っていただければ幸いです。 Clusterという単位でアプリケーション全体の構成を記述できます AMIで公開されているデモは、コードで以下のようなアプリケーションの構成が記述されています。Wakameではこうしたひとつの構成をClusterと呼んで、各プロダクト間の依存関係解決などに用います。 Clusterを起動することができます 記述しておいたClusterを正しい順序で1インスタ
2009年04月25日16:50 by 山崎泰宏 [Wakame]色々なフィードバックありがとうございます〜。 カテゴリWakame開発スタイル Tweet sparklegate Comment(0)Trackback(0) Wakameをリリースしてみてあった反応を考察してみます。"Wakame" は三年後、「あれはイノベーションだった」と言われても不思議じゃないソフトウェアだいやもうね、正直核心部分を全て書いてくれて嬉しいッス! まさに、刺身さんが表現する通りで、Wakameの目的は未来を予知することではなく、今起こっていることを踏まえて計画的にサーバ数を増減させるソフトなのです。 もちろん予知するアルゴリズムさえあれば、Wakameはその通りにサーバ数を変化させることができます。 Wakameも当初は予知するようにするってところに一時期踏み込みかけた事があります。 しかし、ここがく
2009年04月22日08:00 by 山崎泰宏 [Wakame]自動でサーバ数を増減させるクラウドコントローラ"Wakame"をリリースしました! カテゴリ開発スタイル事業内容に関するもの Tweet sparklegate Comment(0)Trackback(0) サイト http://wakame.axsh.jp/(日本語) AMIで公開したのですぐ試せます 情報はまだ少ないのですが、Amazon EC2にアカウントを持っている方は、ぜひGetting Start(英語)あたりを読んで、いきなり試してみてください。 ディフォルトでは、Apacheのモジュールで構成されたロードバランサー、StaticコンテンツWebサーバ、DynamicコンテンツWebサーバ、DBとしてMySQLが起動します。 あとはコマンド一発でこのネットワーク構成が全て立ち上がり、個々のサーバ数を動的に増減さ
2009年03月13日17:49 by 山崎泰宏 Amazon EC2が超激安価格を設定!もう日本のデータセンタはダメだろう。 カテゴリ開発スタイルネタ Tweet sparklegate Comment(3)Trackback(0) Amazon EC2が激安価格を設定してきた。※コメントのひろさんのご指摘で下記のように修正いたします。ご指摘ありがとうございました! 1インスタンスについて年間基本料として$325-払うと、時間単価が$0.03-(約1/3)になるプランだ。 今までは1年間利用すると、$876-かかる。24(時間/日)×365(日)×0.1($/時間) = 876($)今回のプランでは1年間利用すると、約$589-かかることになる。24(時間/日)×365(日)×0.03($/時間) + 325($) = 587.8($)その差約$288-、仮の為替レート(100円/$くら
2007年07月25日12:00 by 山崎泰宏 Air Stationに変えたらLAN側自社サービスにアクセスできなくなった カテゴリ雑談ネタ Tweet sparklegate Comment(2)Trackback(1) 今まで安いルータを使っていたので、今朝はメンバにもらった無線機能付きのAir Stationに変えてみようと言う話でお取替え作業をした。 自社サービスのネットワーク構成:LAN側に自社サービスとなるサーバを置いていて、誰でもアクセスできる状態にしてあります。 WAN側にグローバルIPを持っているので、このIPが割り当たっているルータにポートフォワードの設定をして、目的の自社サーバに接続するという形を取っています。 ルータを換えてから変な動作をするようになった。外部からアクセスされる分には問題ないんだけれども、社内の人間はLAN側にマシンを接続している。 自社サーバだ
2009年02月12日21:26 by 山崎泰宏 IBMも雲の中へ突入したようです。 カテゴリネタ Tweet sparklegate Comment(0)Trackback(0) 今後IBM製品がAmazon EC2で使えるようになっていく、という話し。 WebSphereや、DB2が使えるようになるのです。 具体的にはAmazonのマシンイメージ(AMI)で提供されるとのこと。 以前も、MicrosoftがWindows Serverを提供するようになったりしましたけれども、こんな調子でAmazon EC2をプラットフォームとした活用がますます進んでいくということなのかもしれない。 IBMにしてみれば、草の根開発者が少しでもIBM製品に触れ、そのまま企業内にノウハウを持ち込んでくれればうれしいはず。 Amazonは、大企業が少しでもEC2に興味を持ってくれるキーワードをゲットしたわけで
2008年12月11日17:02 by 山崎泰宏 Google Native Clientとは一体なんなのか? カテゴリネタ Tweet sparklegate Comment(0)Trackback(0) ここ数日ブログ界隈を賑わせているGoogle Native Clientだが、それがブラウザ上でx86のコードを実行するだとか、処理が速いだとか、WebのOSだとか色々言われていて、もうわけわからん。 ちょっと落ち着いて考えてみました。 間違っていたらご指摘ください。 アプリケーション実行環境として他と比べて何が違う? Adobe Flashすべてのインストラクションセットをセキュアな観点も盛り込まれたレイヤーで処理するもの。新しい土俵を定義したことで、Adobeはその上でなら仕様でもなんでも好き放題できるワンダフルワールドを作り上げてしまいました。 ただ、最近は仕様もオープンになって
2008年10月24日10:56 by 山崎泰宏 本日サーバレンタルサービス終了の日(Amazonを除いて) カテゴリ雑談 Tweet sparklegate Comment(0)Trackback(0) Big Day for Amazon EC2: Production, SLA, Windows, and 4 New CapabilitiesLoad Balancing - The load balancing service will allow you to balance incoming requests and traffic across multiple EC2 instances. Automatic Scaling - The auto-scaling service will allow you to grow and shrink your usage of E
2008年07月15日22:41 by 山崎泰宏 QRコードを出力するためのRubyクラス(Google Chart API) カテゴリRuby Tweet sparklegate Comment(3)Trackback(0) ※ブロックスタイルのサンプルが間違ってました。すんません。ご指摘ありがとうございました。>kitajさん Google Chart APIでQRコードが出せるって言うので、簡単なクラスを書いてみた。 rhtmlの中なんかで、以下のような1行を書くとimgタグが出力される。<%= Qr.new('http://axsh.jp').to_img %>imgタグまで世話をしなくても良いです、と思ったら、以下でGoogleへのURIが得られます。 p Qr.new('http://axsh.jp')rhtmlの中でブロックスタイルが大好きなら、以下のように。<% Qr.ne
2008年07月08日15:40 by 山崎泰宏 CoolなURIを作るとか言うのはCoolじゃない気がする カテゴリデザインネタ Tweet sparklegate Comment(1)Trackback(0) URIは感性で良いか悪いかが決まるものではないと思うので、この場ではいかにCoolかどうかは議論しない。 ただ、「?や=が悪い」という問題を挙げて、対策を「/にしたらいい」は短絡的すぎて考え方がCoolじゃないとは思う。 そもそもURIは、Uniform Resource Identifierの略だ。 リソースに対する識別子として機能する必要がある。 「?や=が悪い」のは、リソースに対する識別子として有効でないケースがあるためだ。 推測の域を脱しないが、一時期の検索エンジンは、検索結果として可能な限り1つのリソースを提示する目的から、そうした一意性の低いURIを検索結果に含めなか
2008年06月29日20:00 by 山崎泰宏 メソッドの実行結果をキャッシュする カテゴリRuby Tweet sparklegate Comment(0)Trackback(0) メソッドの実行結果そのものをキャッシュしておくと言うのは、重たい処理であるとか、一度SQLを走らせてしまうと二度目は同じ結果で処理してよいもの何かに使える。 1つのメソッド内でキャッシュを実装するだけなら、こんな安易な実装ができる。 class Example1 def heavy_process @cache = rand() if !@cache @cache end end が、こんなメソッドが100も200もあると書くのが面倒になるので、cache_methodと言う機能をModuleに追加し、以下のように書けるようにしてみた。 class Example2 def heavy_process ra
2008年06月26日11:27 by 山崎泰宏 全面的にXen仮想環境を用いて楽々メンテナンスをする方法 カテゴリ Tweet sparklegate Comment(0)Trackback(1) 最近社内メンバがXenやりたいと言い出しました。 少し考えただけでも結構良い使い方が出てくるものだったので、じゃあやってみようということに。 極論すると、Xenは環境のポータビリティを向上させることができるので、その辺の悩みが解決します。 今後は社内で利用するすべてのサーバ環境をXenで実現することにします。 開発環境をXenにする: これは、激しく便利。 特に最初からXenで開発環境を構築にしておくと、それまで開発環境として共有していたサーバのイメージをそのまま各作業者のPC上で動作させたり、ちょっとした検証環境として別サーバにコピーできたり、非常に便利。 開発中のアプリケーションが動くサー
2007年05月20日20:13 by 山崎泰宏 '<scr'+'ipt>'の意味 カテゴリJavaScript Tweet sparklegate Comment(0)Trackback(0) わかってしまうとくだらないメモ JavaScriptの他人のソースを読んでいて、時々 '<scr'+'ipt>'って出てくるけど何で?と思ったので調べてみた。 結局、HTMLのパーサに タグとして読み込まれないようにするためにするものだった。 <script> document.write ( '<script src="example.js"></script>' ); </script> 上記のままだと、 関数に引き渡した文字列中の</script>までをスクリプトだと判定してしまうってこと。 HTML のレベルではJavaScriptの文法を判定しているわけではない。 なのでみんなこれを回避
2008年05月29日21:14 by 山崎泰宏 泥のようにコントロールされる社員になりたいから私を雇いなさいとか言ってみる カテゴリ雑談 Tweet sparklegate Comment(1)Trackback(0) 本件名に深い意味はないです。 泥のように働くというのが面白いので、件名まで泥のように便乗してみたエントリ。「10年は泥のように働け」「無理です」――今年も学生と経営者が討論これ。「大企業に就職するのであれば」という前提で思うこと:学生側も最初の1年目は「ほぼ全員何をやらせてもまともに仕事ができない」のは認めた方がいい。 別に良い大学を出てたって同じで、ほとんど差がない。 (と三流大学出が言ってみる) 日本の大学の教育が実践的ではないとか何かのせいにする議論がしたいのではなく、ひとまず現状として大体の学生がそうなっていることは理解しておかないといけない。 それでも雇ってくれ
2008年05月07日19:21 by 山崎泰宏 Railsでformタグ単位にmodule化すると便利 カテゴリ開発スタイルRuby Tweet sparklegate Comment(0)Trackback(0) 今回は最近こんな感じで設計していますというエントリ。 普通にRailsを使ってプログラムを書きだすと、rhtmlにフォームを作成し、controllerの中でそれに対応する処理を書いていくことになる。 そうして大抵の場合、UI回りが出来てきてお客様に見ていただくと、「やっぱりこのフォームはこっちのページにあった方がいい」とか「このフォームをこのページにも付けて同じ処理にしたい」など色々要望が出てくる。 そこで要望通り、メソッドごと複製してみたり共通処理にしてみたり、フォームをコピーしてみたり始めるが、適当にやっているとメンテナンス性が低下する。 それを嫌ってホイホイと修正に応
2007年11月02日01:14 by 山崎泰宏 クロスドメインシングルログアウトの難しさはスケーラビリティにある(&生きてます報告) カテゴリデザイン Tweet sparklegate Comment(11)Trackback(1) 最近更新が滞っていますが、そろそろサービスを公開しようかと思って作りこみをしていて、ネタ帳にメモだけしてブログに残せていない毎日です。 今クロスドメインで機能するシステム群にシングルログアウトというものをつけようと思っています。 あまり良いデキではないですけど、クロスドメインのシングルサインオンは出来ています。 とりわけ、このシングルログアウトについては良い設計がなくて困っています、と言うエントリ。 シングルサインオンは簡単にスケールする。クロスドメインシングルサインオンは、信頼できるメッセージを作ってリダイレクトなどで他のドメインと連携すればいいだけなの
2008年01月10日12:05 by 山崎泰宏 Google Chart APIに限界はあるがWeb用途にはこれで十分 カテゴリRubyネタ Tweet sparklegate Comment(1)Trackback(0) Google Chart APIの限界について質問をいただいたので、実験してみました。 結論から言うと、 生成できる画像サイズに制限があるので、データ量に制限がなかったとしても表現の問題があるどうしてもデータ量が多いのであれば、解像度内で表現できるグラフにあわせて、データを加工すれば良いGoogle Chart APIに制約は色々あるが、Web用途で表示できるグラフとしては十分なスペックに設定されているという話です。 Google Chart API側の限界について:おおよそラベルなど抜きにしてトータル1000個くらいのデータまで行けるようです。X軸が等間隔の単純な折
2007年10月25日12:51 by 山崎泰宏 route.rbに従ったパースルールをcontroller内部で再利用したい時 カテゴリRuby Tweet sparklegate Comment(0)Trackback(0) route.rbは主にURIにマッチした目的のcontrollerを呼び出すのと、paramsへの値の格納をするために設定します。 Rubyの文法のおかげで、設定の柔軟性を持っているので、簡潔にかなり複雑なルールを記述できます。 あとはcontrollerの中身さえ書けば、ロジックが作れるわけで、素晴らしい仕組みです。 ですが、一生懸命組み立てたルールを、そのcontrollerの中身でまた使いたいこともあるでしょう。 今回はその方法を記述しておきます。 uri = URI.parse('http://www.example.com/controller/acti
2007年12月19日14:31 by 山崎泰宏 質問:JSONPってなんですか?どう使うんですか? カテゴリJavaScript Tweet sparklegate Comment(0)Trackback(0) 知り合いから質問されたのでついでにブログに挙げておきます。 JSONPの解説は色々なところで見るので、ここでは考え方の流れを記述しておこうと思う。 JavaScriptによるデータの書き方:JavaScriptはそもそもデータを簡単に書ける。var hash = {"key": "value"}; alert(hash['key']);こんな感じでハッシュが定義できる。['a', 'b', 'c'];だと配列。 強力なeval関数があるので文字データをスクリプトとして解釈できる:テキスト文字列を評価するevalって関数がある。 これが強力。var hash; var str =
2007年12月14日19:50 by 山崎泰宏 OpenSocialのJavaScript APIを少しだけ実装してみた(動くデモ付き) カテゴリJavaScriptRuby Tweet sparklegate Comment(0)Trackback(1) OpenSocialのサンプルについて来たコードが弊社のグダグダなSNSサービス「あくしゅ!β版」で動いた。 ただし、サンプルはGoogle先生専用のコードが混じっているので、そこのところは修正する必要があります。 "Learn Once, Write Anyware"なんだから仕方ない。 これは日本語にすると「大体そんな感じ、動かそうと思ったら書き直せ」と訳します。 Google先生の場合:http://code.google.com/apis/opensocial/docs/javascript/index.html#ListFr
2007年12月05日11:58 by 山崎泰宏 ActiveRecordで異なる複数のDBへ接続しにいく方法 カテゴリRuby Tweet sparklegate Comment(0)Trackback(0) Webの分散アーキテクチャでは、基本的にHTTP経由でデータのやり取りをするのが本来の姿だろうと思う。 RSSしかり、Web APIしかり。 でも内部の処理としてデータアクセスのための抽象レイヤを持っているので、ここでデータソースへの具体的なアクセス方法を複数準備しておいて、効果的なものを決定することができる。 HTTPを使うという基本はそのままに、近傍にそのDBがあるのであれば、直接つなぎに行く方が断然処理コストは安くなる。 そこで今回はActiveRecordで異なる複数のDBへ接続しにいくことにした。(1) ベースクラスを作成するclass NeighborBase < Ac
2007年12月05日16:51 by 山崎泰宏 atom-toolsを使ってOpenSocialのサーバサイドを書いてみた カテゴリRubyJavaScript Tweet sparklegate Comment(0)Trackback(1) OpenSocialの勉強も兼ねて、People/Friendsのところだけ少しコードを書いてみた。 勘で書いているので、「なんかちげーよ!」って気付いた人はぜひお教えくだしあ。 route.rb:map.connect 'feeds/people/:id/friends', :controller => 'opensocial', :action => 'feeds_people_friends' map.connect 'feeds/people/:id', :controller => 'opensocial', :action => 'fe
2007年11月15日12:35 by 山崎泰宏 クロスドメイン認証をクロスドメインっぽく見せない方法 カテゴリデザイン Tweet sparklegate Comment(0)Trackback(0) 以前、セッションを勝手に取ってきていじっちゃう方法を書いた。 これの目的は、実はクロスドメイン認証の補助機能として使うことでした。 クロスドメイン認証の問題点: 今回のテーマに関連しているものをひとつだけ挙げるとすると、それはまさに「認証のタイミング」にあります。 ログインは、人が能動的に実施するタイミングしかないのであれば簡単になりますが、実際はそれ以外にもあります。 例えば、分散した2システム(AとB)があるとすると、Aにログイン済みであることをBはいつ確認すれば良いでしょうか、という問題です。 1.シングルサインオンボタンの誘惑 まず簡単なのは、お客様が能動的にログインしたいと思った
2007年11月29日11:06 by 山崎泰宏 Rubyのsessionにどんな値がセットされているのか随時監視する方法 カテゴリJavaScriptRuby Tweet sparklegate Comment(0)Trackback(0) 要するにAOPで言うWeavingのやり方。 Hashのメソッド呼び出し時(before/after)に特定の処理をはさみます。 今回はログを出力してみました。 どこでどんな値がセットされているんだっけ?みたいな時に役に立ちます。 以前、「クロスドメイン認証をクロスドメインっぽく見せない方法」でSessionの値はトランザクション管理されていないので同時更新に弱い、と言うことを書いたのですが、その調査の時に使いました。 モジュールを作成:module HashWeavingMethod attr_accessor :controller def wr
2007年11月29日17:45 by 山崎泰宏 圧縮新聞の第一パラグラフを読み上げてみた。 カテゴリJavaScriptネタ Tweet sparklegate Comment(0)Trackback(0) 巷で噂の圧縮新聞。 読み上げたくなるのが心情と言うわけで、それ用のBookmarkletを書いてみた。 やり方: このリンクを右クリックでお気に入りに登録してください。 Firefoxはツールバーとかにドラッグ&ドロップでもしてください。 圧縮新聞のページを開いてください。 もうすでに笑えてくるけどちょっと我慢してください。 さっきのお気に入り(ブックマーク)をクリックしてください。実際は、圧縮新聞の第一パラグラフをパラメータにしてText.mp3のサイトに飛ばしているだけですけど。 第一パラグラフだけなのは、IE6があんまし長いURLを切ってしまうもので。 「JavaScript」
2007年11月25日16:47 by 山崎泰宏 Open SocialのすごさはWeb APIの定義を決定的にしたことにあるのかもしれない カテゴリJavaScriptデザイン Tweet sparklegate Comment(0)Trackback(0) SNSの文脈が強いOpen Socialだけれど、個人的に思うのはそれ以上の功績として、今まで曖昧だったWeb APIという言葉が今後Open Socialが採用した形式で統一されていくのではないかと言うところにあると思っています。 「Web APIを付けといて」と言われたらOpen Socialのような設計を持ったAPIのことを言うようになるかも知れない。 Open Socialのような発想は昔からあったわけで。 「相互運用できる仕様を」というアプローチは各業界で必ず一度は起こることでした。 クレジットカード業界、旅行や観光関連の
2007年10月02日10:21 by 山崎泰宏 open-uriにtimeoutを設定する方法 カテゴリRuby Tweet sparklegate Comment(0)Trackback(0) open-uriは便利だけど、timeoutの設定とかはできないので自前で準備する必要がある。 知っている人にはそれが大したものではないのだろうけど、調べるとなると若干時間が必要なのでここにメモしておく。 open-uriにtimeoutを設定したコード:require 'open-uri' require "resolv-replace" require 'timeout' begin timeout(1){ open(uri){|f| # ここで接続に時間がかかるケースを想定します # 必要な処理 } } rescue TimeoutError # 捕捉 end 単純なコードですがポイントは
2007年10月16日01:41 by 山崎泰宏 ユーザが入力した危険なタグを取り除く進んだ方法 カテゴリRuby小技 Tweet sparklegate Comment(0)Trackback(0) Hpricotという高速で超便利なhtml scraperがあるんです。 RSSで皆幸せになりつつあるこのご時世に、今更先祖がえりしてhtmlなんかをパースして何の役に立つのかと。 いや、それが役に立つんです。 良くあるのは、あるサイトのhtmlを取得してきてページのデータ解析をすると言ったもの。 いわゆるロボット的なアルゴリズムを組み立てる際に重宝するわけです。 でも、ここではそんな積極的にhtmlを取りに行く際に役立てるのではなく、htmlが送りつけられた際にそのhtmlがそのサイトにとって安全なものかを検証し、必要なら修正をしてしまうというアルゴリズムにしてみたいと思います。 ここで紹
次のページ
このページを最初にブックマークしてみませんか?
『blog.livedoor.jp』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く