タグ

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

  • SI業界からはさっさと抜けだしたほうがいい - ひがやすを技術ブログ

    SI業界(日)のJavaプログラマーにはオブジェクト指向より忍耐力が求められている? - 達人プログラマーを目指して http://d.hatena.ne.jp/ryoasai/20110109/1294581985 をうけて自分の考えを書いておきます。 二年前なら、自分もどうしたらSI業界をよく出来るか真剣に考えていたし、NTTデータの人達と実際に話し合いもしています。 NTTデータとの真昼の対決シリーズ http://d.hatena.ne.jp/higayasuo/20080612/1213241779 http://d.hatena.ne.jp/higayasuo/20080828/1219901392 でも、ソーシャル、クラウド、スマフォの時代になって、考えが変わりました。 今は、世の中の動きがかなり速くなっているので、その中で素早くチャンスを捕まえたものだけが生き残ります。受

    SI業界からはさっさと抜けだしたほうがいい - ひがやすを技術ブログ
    lizy
    lizy 2011/01/12
    SI業界ってカスタムメイドの業務システムの世界?みんなが抜け出そうとすると、その世界は吹きだまり状態になりそう
  • きれいなソースコードを書くために読んでおくべき本10冊 - ひがやすを技術ブログ

    なんか、プログラマとして必要なをあげるのが流行っているようなので、自分も書いておこう。きれいなソースコードを書くために読んでおくべき10冊。 最初はリファクタリング リファクタリング―プログラムの体質改善テクニック (Object Technology Series) 作者: マーチンファウラー,Martin Fowler,児玉公信,平澤章,友野晶夫,梅沢真史出版社/メーカー: ピアソンエデュケーション発売日: 2000/05メディア: 単行購入: 94人 クリック: 3,091回この商品を含むブログ (312件) を見る 以上。終了。10冊じゃないか(^^; きれいなソースコードを書きたければ、一にも二にもリファクタリング、それしかない。 後は、良いソースコードを読みながら自分でも、実際にプロダクトを作ってみること。OSSとして公開すると、自然と良いコードを書こうというモチベーショ

    きれいなソースコードを書くために読んでおくべき本10冊 - ひがやすを技術ブログ
  • 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を劇的に改善する方法 - ひがやすを技術ブログ
    lizy
    lizy 2010/11/09
    Ajaxによって見かけ上の応答速度を上げる方法
  • Seasar3がやってくる - ひがやすを技術ブログ

    Seasar2は、機能を枯れさせることに徹し、機能追加は行わないと宣言してから、二年以上たちます。 で、Seasar2が冒険しないことによって、適切な大きさの問題は生まれなくなり、開発者が離れ、Seasar関連プロダクトが生まれなくなり、Seasarユーザも離れていく。使われないSeasarからさらに開発者が離れていく。 こういうスパイラルが発生するかもしれないことについては、どう考えますか? このような声もありました。「機能を枯れさせることに徹する」というのは、かなりの冒険でしたが、今のところ、うまく行っていると思っています。 「RubyやSeasar2、OpenPNEが“定番”に、Linux Foundationが活用動向調査」という記事も出てましたね。 http://itpro.nikkeibp.co.jp/article/NEWS/20100527/348514/ しかし、二年の間

    Seasar3がやってくる - ひがやすを技術ブログ
    lizy
    lizy 2010/06/03
  • プロが仕事で使う場合にApp Engineでどの言語を選べばいいのか - ひがやすを技術ブログ

    App Engineではどの言語を使えばいいのか - yvsu pron. yasで書いたとおり、App Engineで使う言語は、素のSDKで比べるとPythonの方がJavaより断然出来がいい。 ただ、仕事で使う場合は、素のSDKで開発することはなく、何らかのフレームワークを使うことが普通です。App Engineに特化したKay frameworkやSlim3のレベルで比べるとそんなに違いはありません。 これは、単純なリクエストの処理だと、Javaの方が10倍速いが、実際に行われている処理で比べるとそんなに違いはないのと似ています。 私は、Javaを使っているので、Javaへの評価が良くなりすぎないように、意識的にJavaのデメリットを強調し、Pythonのメリットを強調していますが、実際の仕事で使うレベルにおいては、差はほとんどないということです。 んんーーーー。 たまには音を書

    プロが仕事で使う場合にApp Engineでどの言語を選べばいいのか - ひがやすを技術ブログ
  • App Engineではどの言語を使えばいいのか - ひがやすを技術ブログ

    App Engineで使える言語は基的にはPythonJavaです。それでは、どちらを選ぶのが良いのでしょうか。 それ以外の言語の人向けの話は後から出てくるのでしばらくこのままお読みください。 趣味ならば単に好きなものを選ぶだけでいいのですが、仕事で使うためには、長所と短所をきちんと把握した上で選ぶ必要があります。また、ここでの話は言語としての一般的な話ではなくApp Engineで使うとき限定の話としてお読みください。 まず安定度ですが、インフラ部分の安定度は、どちらも基的に同じです。もしかすると、まったく同じものを使っているのかもしれません。 その上で動くAPIの部分は、インフラと直接結びついている低レベルな部分と低レベルなAPIの上に構築された高レベルな部分とに分けて考える必要があります。 低レベルなAPIはLLAPIと呼ばれたりしますが、安定度は、PythonJavaも同じ

    App Engineではどの言語を使えばいいのか - ひがやすを技術ブログ
    lizy
    lizy 2010/03/19
    なんか通販番組を見ているみたい。オススメ連呼w
  • Google App EngineでGlobal Transaction - ひがやすを技術ブログ

    Google App EngineにはTransactionは1つのEntity Group内でしかできないという制限があります。詳しくは、App EngineのEntityGroupを理解しよう - yvsu pron. yasを参照してください。 そうするとある口座から別の口座にお金を振込むような送金のパターンで、Transactionを利用することができません(すべての口座を1Entity Groupに押し込むと更新がぶつかって現実的ではないから)。送金パターンで整合性を保つためには、理論的には次のようになります。 http://songofcloud.gluegent.com/2009/11/blog-post_18.html 実装するとこんな感じ。 http://blog.notdot.net/2009/9/Distributed-Transactions-on-App-Engi

    Google App EngineでGlobal Transaction - ひがやすを技術ブログ
  • 続IEでは、tbodyのinnerHTMLを更新できない - ひがやすを技術ブログ

    http://d.hatena.ne.jp/higayasuo/20070130#1170145191の続き。 tkawaさんにいろいろヒントをいただいてやりたいことはできるようになりました。m(_ _)m <html> <body> <table id="mytable"> <tbody> <tr><td>111</td><td>222</td></tr> </tbody> </table> <script> var mytable = document.getElementById("mytable"); var dummy = document.createElement("div"); dummy.innerHTML = "<table><tbody><tr><td>333</td><td>444</td></tr></tbody></table>"; mytable.append

    続IEでは、tbodyのinnerHTMLを更新できない - ひがやすを技術ブログ
  • えせMVCについてそろそろ一言言っておくか - ひがやすを技術ブログ

    Ruby on Railsの最大の問題点は、それが持つ「一見そのフレームワークがMVCの形をとりながら、MVCの最も大切なところを外している『えせMVC』である」点にある RailsのえせMVC疑惑で盛り上がってますね。Railsが「えせMVCフレームワーク」ではないのは、みんな知っていると思うので、記事、コメントをみて勘違いしている人が多そうな部分に一言書いておきます。 まず、おかしいのはsatoshiさんのこの意見。 PhotoShareは主にRailsで作られているので、ModelはActiveRecordが担当しているわけだが、Modelのレイヤーが非常に薄いために(O/Rマッピングをしているだけ)、データベースの整合性の責任がController側にある。そのため、ちょっとした機能変更のたびにAPIレベルでのテストを大量に走らせなければならないし、それでもどうしてもミスが生じてし

    えせMVCについてそろそろ一言言っておくか - ひがやすを技術ブログ
  • TaskQueueをローカルでデバッグする方法 - ひがやすを技術ブログ

    SDK 1.2.5からGoogle App EngineにTaskQueueが導入されましたが、ローカル(development server)でデバッグはできないと思っている人が結構いるようなので、やり方を書いておきます。 ローカルの環境では、Queueにaddしたタスクは、自動的には実行されず、Queueにたまっています。たまっているタスクを実行するには、http://localhost:8080/_ah/adminにアクセスし、左側のTask Queuesのリンクをクリックします。 すると、Queueの一覧が表示されるので、そこでQueueのリンクをクリックすると、タスクを実行する画面に遷移します。そこで、runのボタンを押すと、ローカルでQueueのタスクを実行できます。 Web ApplicationをDebug Asで起動しておけば、EclipseからDebugすることもできま

    TaskQueueをローカルでデバッグする方法 - ひがやすを技術ブログ
  • SpringSourceの買収劇についてそろそろ一言いっておくか - ひがやすを技術ブログ

    米VMwareは8月10日、Javaアプリケーションフレームワーク「Spring Framework」を提供する米SpringSourceを買収することで合意に達したと発表した。 買収は現金と株式、ストックオプションで行われ、総額は4億2000万ドルに上る。既にSpringSourceの株主の承認を得ており、2009年第3四半期に完了する見込み。 Congrats Spring Guys. SpringSourceは、ビジネス規模は拡大(買収繰り返しているからね)していたものの、あまり儲かっていないんじゃないかとうわさされていました。 当のところはわかりませんが、サポートビジネスは余り成功していなくて、コンサル(講習を含む)がビジネスの中心だったようなので、まぁ当のことじゃないかと思います。 オープンソースでビジネスを成立させるのは、超難しいので、これは仕方のないことでしょう。うちの会

    SpringSourceの買収劇についてそろそろ一言いっておくか - ひがやすを技術ブログ
    lizy
    lizy 2009/09/15
    Springをベースとしたフルスタックをすぐに使えるようなPaaSを提供するつもりなのかな
  • GAEでunownedな関連を定義する方法 - ひがやすを技術ブログ

    Google App Engineでは、関連の実装として、キーの親子関係で実現するownedな関連と、キーの親子関係ではなく、単に相手のキーを持つだけのunownedな関連があります。 unownedな関連は、RDBMSにおけるFKを持っているようなものだと思うとイメージしやすいと思います。 例えば、次の例では、FooがBarをunownedな関連先として定義しています。 @PersistenceCapable(identityType = IdentityType.APPLICATION, detachable = "true") public class Foo { @PrimaryKey @Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY) @Extension(vendorName = "datanucleus", ke

    GAEでunownedな関連を定義する方法 - ひがやすを技術ブログ
  • そろそろSeasar2のガラパゴス戦略について語っておくか - ひがやすを技術ブログ

    Slim3のファーストリリース(今月中)の前に、Seasar2の開発で、どのような戦略をとったのか話しておきます。 2005/11/8、Seasar2.3のバージョンをリリースしました。このバージョンから搭載されたのが、コンポーネントの自動登録機能です。設定ファイル無しで開発できるようにする機能ですね。Springだと2.5から搭載されたcomponent-scan。 Spring2.5のリリースは、2007/11/19なので、実に2年以上差があります。オープンソースの世界では、みんなが手の内を見せ合っているので、誰かが新しい機能を実装した場合、それが良いものであれば、ライバルも直ぐにそれを取り入れ、それほど機能差がつくことはありません。 なぜ、従来のXML地獄を解消する「コンポーネントの自動登録機能」を実装するまでの期間にこれほど差が出たのか、それはガラパゴス戦略のせいなのです。 Sea

    そろそろSeasar2のガラパゴス戦略について語っておくか - ひがやすを技術ブログ
  • SAStrutsでMapのプロパティにアクセスする方法。 - ひがやすを技術ブログ

    ActionFormに次のようなプロパティがあったとします。 public Map<String, Object> map;このmapプロパティにStruts的には、次のような感じでアクセスします。 <html:text property="map(aaa)"/>SAStruts 1.0.4-sp5ではこのパターンに対応できていないので、Mapのプロパティにアクセスするときには、Strutsのタグは使えません。かわりに次のように普通のinputタグを使ってください。 <input type="text" name="map.aaa" value="${f:h(map.aaa)}"/>さっき修正したので、SAStruts 1.0.4-sp6(次のリリース)から、Strutsのタグでも使えるようになります。 https://www.seasar.org/issues/browse/SASTRU

    SAStrutsでMapのプロパティにアクセスする方法。 - ひがやすを技術ブログ
  • JDOのモデルの状態を理解しよう - ひがやすを技術ブログ

    GAEのJDOのモデルは、ざっくりいうと4種類の状態があります(当はもっといっぱいあるけど、4つをおさえておけば普通はOK)。 transient persistent detached hollow モデルをnewして、PersistenceManager#makePersistent()を呼ぶまでは、transientです。 PersistenceManager#makePersistent()がよばれるとpersistentな状態です。persistentなモデルの状態は、PersistenceManagerをcloseするかTransactionをcommitしたときに、データストアに反映されます。 PersistenceManagerをcloseしたときからが、運命の分かれ目。何の設定もしないとhollowになり、lazy loadingされているオブジェクトに触ろうとするとエ

    JDOのモデルの状態を理解しよう - ひがやすを技術ブログ
    lizy
    lizy 2009/06/14
    面倒くさそう
  • いっちゃ悪いけどGAEでJavaを選択する場合の最大の理由をわかっちゃいないね - ひがやすを技術ブログ

    いっちゃ悪いけど、 GAE で Java を選択する場合の最大の理由をちゃんと解ってて話をしているとは思えない。 タイトルの通りだけど、Javaはすでに十うん年を一線で過ごしてきた言語だ、過去のコード資産が莫大にあるはずで、それを活用する場合は GAE で Java を選択する事のメリットがある。 「うん十万行の既存コードをそのまま投入できる。それにインターフェースするために多少オーバーヘッド気味のコードが数100行必要なのが何の問題がある?」これを言えないJava 使いはコード資産って物が無い貧乏人だし、過去資産に物を言わせないJavaなど相手にするのがあほくさいぐらい貧弱なものだ。 そのままの言葉で返すけど、いっちゃ悪いけどGAEでJavaを選択する場合の最大の理由をわかっちゃいないね。Javaの豊富な標準ライブラリを使えるというのは、大きな利点だと思うけど、過去に自分たちで作ったよう

    いっちゃ悪いけどGAEでJavaを選択する場合の最大の理由をわかっちゃいないね - ひがやすを技術ブログ
  • Slim3でFlex連携 - ひがやすを技術ブログ

    Slim3にFlexと連携するサンプルを追加しました。まだ、データを取ってくるだけですが、日曜日には更新機能もつけます。 http://higayasuo.appspot.com/ BlazeDS(AMF)を使わない、HTTPServiceだけを使ったシンプルなソリューションです。GAEでAMFを使うのは、BlazeDSのソースを直したりと四苦八苦するので、余りお勧めではありません。 追記:CRUDの機能を実装しました。 http://higayasuo.appspot.com/flexblog/ 追記:現在はflexblogのアプリケーションは削除されています。

    Slim3でFlex連携 - ひがやすを技術ブログ
  • GAE/Jでbatch get - ひがやすを技術ブログ

    unownedなone to manyの関連があるとき、many側は、次のようにKey(Primary KeyであればString, Longでもいい)のリストとして定義します。 List fooKeys;fooKeysからListを取得したいわけですが、これまで、JDOとしてはいい感じのやり方がありませんでした。PersistenceManagerにgetObjectsById(Collection oids) : Collectionというそれっぽいやつはあるのですが、ここででてくるoidsとは、KeyのCollectionではなく、JDOHelper.getObjectIds(Collection

    GAE/Jでbatch get - ひがやすを技術ブログ
  • Java EE終了のお知らせ - ひがやすを技術ブログ

    Web Beans(JSR299)に対抗して、Guice, Spring連合が新しいDIの仕様を出してますね。 http://google-code-updates.blogspot.com/2009/05/javaxinjectinject.html 超ざっくばらんに言うと、まぁGuiceですな。 なぜ、この時期に、Web Beansとかぶるような仕様を出してきたかというと、Web Beans(Gavin)の政治的な動きに対して、Guice(Bob Lee)も政治的な動きで対抗したというところでしょう。あくまでも私見ですが。 これに対して、Gavinが反論を書いていて、それに対して、Bob Leeがさらに答え、子供の喧嘩みたいになっています。 http://in.relation.to/Bloggers/CommentsOnAnnotationsForDependencyInjectio

    Java EE終了のお知らせ - ひがやすを技術ブログ
  • gdgd言ってないでコード書けよハゲ - ひがやすを技術ブログ

    に住んでいる限りはプログラマーじゃ飯はえないってことなんですよ. 最近、「日はもう立ち直れないと思う」とか「日に住んでいる限りはプログラマじゃ飯はえない」とか根拠のないことをgdgd言うやつ多すぎ。 少なくても俺は、プログラマで飯がえてるし、ワインも飲んでる。 なによりも、100%の時間を自分の好きに使うことができる。日にいても、プログラマとして十分に成功できるといういい証拠でしょう。 実際のところ、100%自由だといっても、それが楽しいわけではない。 等価交換の法則が存在し、「人は何かの犠牲なしに何も得ることは出来ない、何かを得るためには、同等の代価が必要である。」。「100%自由」へのお返しを会社へも世間へもしなければならない。 多くのものをもらっているからこそ、多くのものを返すために、常にハイリスクハイリターンを狙わなければいけない。この精神的プレッシャーはかなりのも

    gdgd言ってないでコード書けよハゲ - ひがやすを技術ブログ
    lizy
    lizy 2009/05/09
    高望みしなければ食っていける