タグ

ブックマーク / higayasuo.hatenablog.com (35)

  • AppEngine/Jのspin-upを劇的に改善する方法 - ひがやすを技術ブログ

    AppEngineは、アクセスがあったときにアプリケーションを起動し、しばらくアクセスが無ければアプリケーションを終了させ、また次のリクエストで再起動するという仕組みを導入しています。 そのため、アプリケーションを起動(spin-up)する時間がとても重要になってきます。このspin-upの時間はpython(webapp)で60cpu_ms以下。(cpu_msはcpuが使う仮想的な時間ですがmsと同じ感じで捉えてもらってもとりあえずは大丈夫です)JavaのServletだと600cpu_msくらいです。PythonでもDjangoような大きなフレームワークだと1000cpu_msくらい(アプリによる)かかりますが、許容範囲内。JavaだとSlim3で1300cpu_ms、Springだと早くて7000cpu_msという感じで、Slim3がギリギリ許容範囲内でしょうか。ほんとうは、1000

    AppEngine/Jのspin-upを劇的に改善する方法 - ひがやすを技術ブログ
  • AppEngineにどんなアプリが向いているのかを知ろう - ひがやすを技術ブログ

    AppEngineは、万能なプラットフォームではありません。むしろ、かなり使い道は限定されていると言ってもいいでしょう。 向いていないアプリで使うとかなりはまって、アプリが完成しないリスクがあります。 一方、向いているアプリで使うとこれまでよりかなり費用を節約できたりとか、儲けにつなげることができます。 AppEngineにどのようなアプリが向いているかというと、AppEngineがGoogleの既存のインフラをそのまま利用していることをまず知っておく必要があります。 Googleのインフラは、(極端に単純化すると)大量のデータを多くの人に同時に見せるために最適化されています。 AppEngineも同様で、大量のデータに大量にアクセスがあっても大丈夫なように、BigtableというKVSを使っています。また、自動でスケールアウトするWebのFront Endも既存のインフラをそのまま使って

    AppEngineにどんなアプリが向いているのかを知ろう - ひがやすを技術ブログ
  • GAEは秒間80リクエストさばける - ひがやすを技術ブログ

    @kisのなんとか度判定メーカー、Google App Engineで作っていて秒間80リクエストさばいているそうです。 http://kistools.appspot.com/rate ちなみに、いまコンスタントに秒間80アクセスあるみたいなので、if(kind=="イケメン" && user="kis") rate=99.0 などという処理はCPU時間=お金がもったいなくてできんです。 処理時間を短くする工夫をしておけば、リクエストが増えると自動的にスケールアウトするのはAppEngineの魅力ですね。 詳しい話はそのうち人がblogで書くと思いますが、Google App Engineがスケールするという良い事例だと思うので、みんなもどんどん試して、どれくらいまでスケールアウトするか報告してもらいましょう。 まとめサイト http://togetter.com/li/4477

    GAEは秒間80リクエストさばける - ひがやすを技術ブログ
  • Seamについてそろそろ本音を書いておくか - ひがやすを blog

    Seamは、JBossで開発されているフレームワークで、JSF、EJB3、JPAを薄く(?)結びつけるためのフレームワークです。 http://www.jboss.com/products/seam もうそろそろ、も出ます。 http://www.amazon.co.jp/JBoss%E5%BE%B9%E5%BA%95%E6%B4%BB%E7%94%A8%E3%82%AC%E3%82%A4%E3%83%89-%E3%83%BCJava%E3%83%BB%E3%82%AA%E3%83%BC%E3%83%97%E3%83%B3%E3%82%BD%E3%83%BC%E3%82%B9%E3%83%BBJBoss-Seam%E3%83%BBJBoss-AS-%E7%9A%86%E6%9C%AC/dp/4774133795/ref=sr_1_5?ie=UTF8&s=gateway&qid=12028

    Seamについてそろそろ本音を書いておくか - ひがやすを blog
  • Strutsをなめんな - ひがやすを blog

    リリースノートはこちら Bug [SASTRUTS-18] - ArrayWrapperでListを実装するようにしました [SASTRUTS-20] - ActionからActionへ遷移できない問題を修正しました Improvement [SASTRUTS-19] - ActionのプロパティがMapの場合も扱えるようにしました ダウンロードはこちら http://sastruts.seasar.org/download.html このバージョンから、チュートリアルに、ResourceSynchronizerプラグインを使ったリッチなエラーページをつけました。ResourceSynchronizerを超ざっくり説明すると、ブラウザからEclipseを操作するプラグインです。 チュートリアルのリッチなエラーページをクリックすると、Ext.jsで作ったリッチなエラーページが表示されます。ス

    Strutsをなめんな - ひがやすを blog
  • 2008-02-19

    「オープンソースとRIAの融合:Seasar2とBlazeDSでFlex3が加速する」 というテーマで講演します。 フレームワークが、最初登場したときは、必要な機能が足りなかったり、バグがあったりするものです。それが、ユーザに辛抱強く使ってもらうことで、機能が強化され、バグは修正され、安定していきます。 そうすると、ユーザも増えていき、さらに機能も強化されていきます。 機能を強化するというと聞こえはいいのですが、悪い言い方をすると、どんどん肥大化していきます。 肥大化していく中で、あるポイントを過ぎるとユーザは、重い、あるいは、機能過剰と感じ、離れていく。 このことに、フレームワークを作っているほうは気が付かない。自分たちは中身を良く知っているから、覚えることがたくさんあるとは感じないし、自分たちで必要だと思って追加したんだから、不要な機能があるとは感じない。 既存のユーザは、新機能だけを

    2008-02-19
  • 「誰が書いても同じコード」は大事なことなのか - ひがやすを技術ブログ

    昨日、大手SIerの方々と話をする機会があって、そこで出てきたのが、「誰が書いても同じコード」になることが重要で、それを実現するために、ドキュメントをいっぱい書かなくてはいけないという話。大手SIerは、大体同じことを考えていると思います。 でも、「誰が書いても同じコード」にするってのは、そもそも無理だと思うんだよね。そうやって、わざわざドキュメントをたくさん書かせても、めためたなコードを書くやつはいて、総合テストするときに、現場は燃え上がるもの。ある程度の規模以上のプロジェクトなら、どこでもそんな感じじゃないかと思います。 重要なのは、「誰でもメンテナンスできるコード」にすること。そのために、コーディング規約は、きちんと決めてみんなで守る、それ以上は、がちがちに縛る必要はない。 がちがちに縛るために、設定ファイルをたくさん書かせたり、必要以上のドキュメントを書かせるのは、一定の品質を確保

    「誰が書いても同じコード」は大事なことなのか - ひがやすを技術ブログ
  • 優秀な技術者をラインマネージャにすると「だめ」になる - ひがやすを技術ブログ

    たいていの会社は、部長だとか課長だとか呼ばれるラインマネージャがいます。ラインマネージャの仕事は、部下が能力を発揮できるようにサポートしてあげることです。 会社の中で、昇進していくとは、平社員 -> 課長 -> 部長 -> 取締役のように役職を上げていくことです。役職の名前は、会社によって違うと思いますが、その仕組みはどこも一緒でしょう。 でも、実はここに問題があります。 あなたが優秀な技術者で平社員だとします。その仕事ぶりが認められて、課長に昇進することになりました。そのとき、あなたは、給料と引き換えに、大好きだった技術者のポジションを失うのです。技術のために時間を費やすことは許されず、管理業務に追われる日々が続きます。 ラインマネージャは、技術よりも組織を動かすほうが好きな人にとっては、やりがいのあるポジションです。しかし、「管理業務なんかめんどくさい」「技術で世の中を変えてみせる」と

    優秀な技術者をラインマネージャにすると「だめ」になる - ひがやすを技術ブログ
  • IT業界は成功するチャンスの多い夢のある業界 - ひがやすを技術ブログ

    泥問題、あるいは老害問題で、すっかり評判を落としたIT業界(SI業界)。他の業界へ転職しようと思った人、IT業界には入るまいと思った学生も多く出たことでしょう。 ネガティブな面は確かにあります。老害は一朝一夕にはなくならないことも確かです。 しかし、一方で、努力すれば、成功するチャンスの多い夢のある業界でもあるのです。 いまだにソフトウェアの世界では「下を走ってくる」奴が上に行く余地がどっさり残っている。理由は二つある。 一つはインターネットという別の高速道路網が存在すること。ソフトウェア「エンジニアリング」に限って言えば、こちらの高速道路の方が学校という高速道路よりもずっと充実している。しかも料金ははるかに安い。わざわざ「学歴高速道路」に乗るのはかったるくて仕方がないだろう。 しかし、もう一つの理由を忘れてはならない。それは、ソフトウェア「エンジニア」になるための投下資が実に少ないとい

    IT業界は成功するチャンスの多い夢のある業界 - ひがやすを技術ブログ
  • 10年間泥のように働いて花が咲きました - ひがやすを技術ブログ

    蓮の素晴らしさを語りたかったら、まずは花を見せるべきなのだ。花がわかってはじめて泥の重要さがわかってくるんだから。 2008-05-29 - ひがやすを blog 小飼弾のアルファギークに逢ってきたのメンバーと学生会の討論会を開くのだ。 もちろん、司会は、ダンコーガイ。いいよね、弾さん。 もちろんOK。というよりもすでに同様の話がいくつも来ているので、この通りになるかとにかく、ちゃんと「花」がある討論会はできるだろうし実現するだろうしすでにいくつか実現している。 しかし、これはこれでどうしても偏りが出る。10年も泥の中にいた人というのはさすがにこのメンバーの中から見つけるのは難しい。そしてIT業界の広さを考えれば、当にそういう人がいてもおかしくないはずなのだ。 10年間SIerで泥のように働いたおいらが通りますよ。 おいらが、最初に就職したのは、電通国際システムという会社で、今のうちの会

    10年間泥のように働いて花が咲きました - ひがやすを技術ブログ
  • Seasarに関してこの2年間やってきたこと - ひがやすを技術ブログ

    おととい、Seasarの理事、主にまさたかさんと、しばらくぶりにちゃんと話しました。そこで、おいらが、この2年間くらいの間、何を考え、何をしていたか話したんだけど、「ひがさんが何をしていたかしらなかったよ」と、まさたかさんがいってたので、きっと、コミッタの人やユーザーの方も同じだと思うので、Seasarに関してこの2年間やってきたことについて書いておこうと思います。 まさたかさんと、ここんとこ話をしていなかったのは、別に仲が悪かったわけではなく、はぶさんが理事を抜けた後、飲み会とかやらなくなったから、というのが原因。後、おいらも結婚したので、あまり外で飲まなくなったってのもあります。 2年前のSeasarがどのような状態にあったかっていうと、ちょうど、キャズムに陥っている状態。そこそこの知名度はあるけど、アーリーアダブタ以外は手を出さない。 そこで、私が行なったのは、HOT deploy、

    Seasarに関してこの2年間やってきたこと - ひがやすを技術ブログ
  • Javaフレームワーク比較についてそろそろ一言いっておくか - ひがやすを技術ブログ

    http://d.hatena.ne.jp/t_yano/20081118/1227008018 これは、良い比較。なぜなら、実際に使うであろうお客様(ドワンゴ)の要望にもとづく比較だから。 単純に星取表を作ると、機能の多いフレームワークのほうが、点数が良くなる。でも、当に重要なのは、自分たちが実際に使う機能が、どれくらい使いやすいかだ。だから、この手の比較は、実際の要望を反映させたものでないと意味がない。 評価の中身については、間違っているところもあるけど、大体はあってるから、細かいところに突っ込むのはやめておくよ。 それにしても、SAStrutsに不利な前提ですなぁ(笑)。 Strutsに慣れているかどうかは関係ない。 JSPはマイナス評価。 学習コストは、大きすぎなければ許容する。 SAStrutsは、開発者を集めやすく、学習コストが少ないのが、ポイントだからね。また、HOT de

    Javaフレームワーク比較についてそろそろ一言いっておくか - ひがやすを技術ブログ
  • 「Seasarの問題点など」にそろそろ一言いっておくか - ひがやすを技術ブログ

    2009-01-29 最初に言っておくと、結構いい指摘だと思います。せっかくなので、私のほうでも答えましょう。 だから、メンテナンスの不安の問題は、メンテナンスが行われてないということではなくて、メンテナンスが行われているのにメッセージとして発信されていないということだと思う。 ひがさんは上にあげた以外にもちょこちょことSeasar2のメンテナンスは続けられるということをブログに書いているのだけど、やはりブログという刹那的な形態ではなく、公式サイトに常設されたメッセージとしてメンテナンスをやっていくよということを書いていないといけないと思う。 これは、おっしゃるとおり。ただ、こういう政治的なメッセージは、理事会のほうから出したほうがいいと思います。そういう流れで、打ち合わせも進んでいたはず。 私は、プロダクトを作ることに専念するために、理事を辞めたので、プロダクトを作ることに専念したい。そ

    「Seasarの問題点など」にそろそろ一言いっておくか - ひがやすを技術ブログ
  • プログラミングに誇りを持ちたいなら単価を上げること - ひがやすを技術ブログ

    僕は今回の案件で、システムのレスポンスに徹底的にこだわってる。 それには理由がある。 それは、プログラマの誇りを見せ付けたいからだ。 山さんの気持ちは良くわかるけど、プログラマの誇りを見せ付けたいなら、単に良いものを作るだけではだめです。プログラミングの価値を高い金に結びつける必要があります。 だれでも、自分のことを高く評価してほしいと願っているはずです。そして、その評価が、金に結びつかないと、その努力は維持できないのです。 良い仕事をしても、だめな仕事をしても、もらう報酬が同じなら、人は努力しなくなる。努力しないから、良いコードはかけない。 この業界の問題、それはプログラムが、新人?3年目の作業と位置づけられていることだ。 ベテランでも、だめなコードを書く人はいるでしょう。それは、素質だとかの問題ではありません。余り金がもらえないから、人は自然に努力しなくなり、だから、だめなコードにな

    プログラミングに誇りを持ちたいなら単価を上げること - ひがやすを技術ブログ
  • AppEngineのDatastoreの学び方 - ひがやすを技術ブログ

    Google AppEngineではBigtableの上にDatastore Serviceが構築されていて、開発者は、このDatastore Serviceを利用してBigtableにアクセスすることになります。このDatastore ServiceはPython版もJava版も機能はほとんど同じです。もしかすると、全く同じものかもしれません。 GAE/Jの場合、JDOを通じて、Datastore Serviceを利用するのが推奨されていますが、実はこれが嵌りポイント。 JDOは汎用的なインターフェースなので、Datastore Serviceを理解するのには向いていません。Datastore ServiceがRDBMSのような高機能なら、JDOを通じて抽象化し、Datastore Serviceのことは知らなくても済すのもぜんぜんありなのですが、残念ながら、そうなってはいません。 Da

    AppEngineのDatastoreの学び方 - ひがやすを技術ブログ
    cyokodog
    cyokodog 2009/11/24
    ありがたいお導き わくわく
  • App Engineでバージョンによる楽観的排他制御 - ひがやすを技術ブログ

    Song of Cloudで送金のトランザクション処理パターンが紹介されていました。 http://songofcloud.gluegent.com/2009/11/blog-post_18.html 同様のpython版がこちら Distributed Transactions on App Engine - Nick's Blog 上記のやり方で基的には問題はないのですが、バージョン管理による楽観的排他制御を行っていないので、送金だけを考えるなら、残高を差分で更新しているので大丈夫ですが、これを一般的なパターンに拡張しようとすると、楽観的排他制御は必要になります。 楽観的排他制御とは、エンティティにバージョン番号を持たせておいて、メモリ読み込んだときのバージョン番号と書き込むときのバージョン番号が等しいことを確認する方法で、RDBMSの場合は、次のようなSQLを実行することで実現しま

    App Engineでバージョンによる楽観的排他制御 - ひがやすを技術ブログ
  • App Engineのユニーク制限を正しく理解しよう - ひがやすを技術ブログ

    Google App EngineではRDBMSのようなUnique Indexをサポートしていません。ユニーク制限を実現する場合は、トランザクション中でKeyを使ったgetとputを組み合わせる必要があります。 ここでは、email addressがユニークだったらそれを確定してtrueを返し、そうでない場合にはfalseを返すコードを考えます。 最初にトランザクションを使わないコードを見てみましょう。KeyFactory.createKeyの最初に引数は、kindといってテーブル名みたいなものです。 public boolean putUniqueEmailAddress(String value) { DatastoreService ds = DatastoreServiceFactory.getDatastoreService(); Key key = KeyFactory.cr

    App Engineのユニーク制限を正しく理解しよう - ひがやすを技術ブログ
  • App EngineのEntityGroupを理解しよう - ひがやすを技術ブログ

    App EngineのEntitiGroupは、Keyの親子関係を利用して組み立てられたEntityの集まりです。 Entityとは、Bigtable上の1つの行で、ユニークに識別するためのKeyを持っています。 Keyは、種類をあらわすkindとAppEngineから自動的に採番されるidもしくはアプリケーション側で自由に決めることのできるnameで構成されます。 通常は、AppEngineの自動採番に任せますが、Emailのアドレスをキーに使いたい場合などは、nameを使います。kindはテーブル名のようなものだと思ってください。 Keyの親子関係は次のようにして作ります。 Key grandparentKey = KeyFactory.createKey("Grandparent", "しげお"); Key parentKey = KeyFactory.createKey(grand

    App EngineのEntityGroupを理解しよう - ひがやすを技術ブログ
  • SIerの解体と再生 - ひがやすを技術ブログ

    ござ先輩のところで、SIer涙目な状態が解説されてますね。 最近SIerがだいぶヤバくなっている件 - GoTheDistance 書いていることはだいたいあっているんじゃないかと思います。 じゃ、SIerは、どうやれば生き残ることができるのか。 「今の体制のまま生き残る必要はないんじゃないの」というのが私の考えです。多重下請け構造こそ、SI業界の最大の問題点なわけだから、「ゼネコン型SIビジネスが崩壊する」のは、悪い話じゃない。 もちろん、会社がなくなったりすると職がなくなり困る人も出てくるわけですが、問題のある業界を残しておくより、一度解体し、新たにやり直したほうがいいと思います。 だって、実際に物を作れないような人たちが設計するなんて、おかしいし、効率悪いもの。 効率の悪いことをしている人が淘汰されるのは当然の話です。 だったら、なぜこれまでゼネコン型SIビジネスが生き延びてこれたの

    SIerの解体と再生 - ひがやすを技術ブログ
  • Slim3 StrutsのHTMLテンプレート - ひがやすを技術ブログ

    SAStrutsにはMayaaがあるので、HTMLテンプレートは用意していませんが、Slim3 Strutsでは、Mayaaの英語でのサイトが用意できないということなので、独自にHTMLテンプレート機能を持たせます。 方式は、Teeda(idによる規約)ともFacelets(jsfc独自属性)とも違って、プレーンなHTMLをそのままJSPのタグに変換します。 例えば、足し算のサンプルはこんな感じ。 <html:errors/> <form> <input type="text" name="arg1"/> + <input type="text" name="arg2"/> = ${result}<br /> <input type="submit" name="submit" value="submit"/> </form>これがコンパイルされて下記のように変換されます。 <html:e

    Slim3 StrutsのHTMLテンプレート - ひがやすを技術ブログ