タグ

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

  • 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の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を理解しよう - ひがやすを技術ブログ
  • Slim3 for Google App Engine/Java - ひがやすを技術ブログ

    Slim3をGAE/Jに対応させました。 デモサイトはこちら。 http://higayasuo.appspot.com/ ソースコードをチェックアウトしたい場合はこちら。 http://code.google.com/p/slim3/source/checkout https://slim3.googlecode.com/svn/を指定してチェックアウトできます。デモ用のプロジェクトは、slim3-demoです。 SAStrutsのチュートリアルをやったことのある人なら、デモサイトが、そっくりだということがわかるでしょう。Slim3 Struts(SAStruts相当)がGAE/Jで動くわけです。 素のStrutsだとGAEではファイルアップロードに失敗しますが、Slim3 Strutsはその辺も対応してます。 やってみて感じたのは、GAE/Jは、制限が結構厳しいので、高度なフレームワー

    Slim3 for Google App Engine/Java - ひがやすを技術ブログ
  • 自分の書きたいコードを書け - 脱職業プログラマのすすめ - ひがやすを技術ブログ

    良く仕事以外のプログラムをしたことない人っているじゃないですか。ここでいう職業プログラマとは、仕事以外では、プログラムをしない人のことを指しています。 仕事以外でもプログラミングをしている・勉強している人、は、職業Onlyプログラマではなく、職業でもプログラムをしているけど、それ以外にも努力をしている人です。 それは、もちろん何の問題もないんだけど、それだけでは実力はつきません。たぶん、コードを書きながら自分が成長している気がしてないでしょう。あなたの直感は正しい。 何らかのフレームワークを使えば、それなりにできることが増える、それももちろん成長です。ただし、知識のね。プログラミングの力はそれほど変わっていないはず。 自分の経験で言えば、多くの人に読んでもらえないコードは、いくら書いても、実力につながりにくい。人に見せようとするコードは、書いているだけで、いろんなことを考えるし、それが、力

    自分の書きたいコードを書け - 脱職業プログラマのすすめ - ひがやすを技術ブログ
  • 式言語を気軽に使おう - ひがやすを技術ブログ

    Javaの開発者にとって、式言語として最も身近なのは、JSPのELでしょう。 ${aaa} みたいにして、JSPの中に埋め込んでいる式のことです。上記の場合、aaaは変数になります。このELをプログラムの中から自由に呼び出せるといろんなことができるようになりますよね。 commons-elを使うとELを簡単に呼び出せるようになります。 キーとなるクラスは、ELParser。ELParser#ExpressionString(String expression)を呼び出すことにより、文字列をコンパイルします。 コンパイルした結果は、${}で囲まれている場合Expression型、そうでないばあいにはStringがそのまま返されます。 Expressionで重要なのは、Expression#evaluate(VariableResolver, FunctionMapper, Logger)のメ

    式言語を気軽に使おう - ひがやすを技術ブログ
  • JSPからアクションのViewHelperメソッドを呼び出す - ひがやすを技術ブログ

    JSP2.1からは、Unified ELが搭載され、そのELResolverをいじることでいろいろ面白いことができます。 Slim3 Strutsでは、独自のELResolverを追加して、JSPからアクションのメソッドを呼び出せるようにします。使い方はこんな感じ。最初はアクション。convertというメソッドを定義します。 public class HogeAction { ... public String convert(boolean xxxFlag) { return xxxFlag ? "まる" : "ばつ"; } } JSPからは、${メソッド名[引数1][引数2][...]}で呼び出せるので、次のような感じになります。 ${convert[xxxFlag]} これまでは、表示用のロジックは、タグかファンクションに書いていました。正直めんどくさい。アクションのメソッドで表示用

    JSPからアクションのViewHelperメソッドを呼び出す - ひがやすを技術ブログ
  • 最初のアクセスで;jsessionidを表示させない方法 - ひがやすを技術ブログ

    URLの一部にセッションIDを埋め込むのは、アプリケーションサーバが、クライアントがクッキーをサポートしているかわからない場合です。 最初のアクセスで、アプリケーションサーバは、クッキーを設定してクライアントに返します。二度目以降のアクセスで、クッキーが返ってきた場合は、クッキーを通じてセッション管理ができるので、;jsessionidはURLに埋め込みません。 携帯の端末のようにクッキーが帰ってこない場合、二度目以降も;jsessionidをURLに埋め込みます。 クッキーがサポートされているブラウザで、最初のアクセスでURLに;jsessionidを表示させたくない場合、最初にindex.jspにアクセスしてもらうようにし、index.jspから物の最初のページにリダイレクトします。 <html> <head> <meta http-equiv="Content-Type" cont

    最初のアクセスで;jsessionidを表示させない方法 - ひがやすを技術ブログ
  • 優秀なプログラマの給料が低いわけ - ひがやすを blog

    昨日の開発生産性が低い方が収入が多いって変だよねのエントリでは、企業レベルの話だと、生産性が低いほうが売上が上がるという話をしたんですが、実は同じようなことが、個人レベルでも言えます。 生産性の高い超優秀なプログラマより、社交性の高いそこそこ優秀なプログラマのほうが、評価が高く給料も多くもらえるようになるのです。さすがに、個人レベルだと生産性の低い人が評価が高いということはあまりないけどね。一時的には残業が多くて給料が増えるときもあるかもしれないけど、それはあくまでも一時的なこと。 評価が高いということは、上司にそれだけ認めてもらっているということですが、それではなぜ、優秀なプログラマは、上司に高く評価されないのでしょうか。 「上司技術をきちんと評価する力がないから」それも多少はあります。でも、主な原因ではありません。会社によって違うと思いますが、評価における技術力の部分は2,3割りに過

    優秀なプログラマの給料が低いわけ - ひがやすを blog
  • SAStrutsで簡単Ajax - ひがやすを技術ブログ

    SAStrutsで簡単にAjaxを扱えるようにしました。サンプルはこんな感じ。 package tutorial.action; import org.seasar.struts.annotation.Execute; import org.seasar.struts.util.ResponseUtil; public class AjaxAction { @Execute(validator = false) public String index() { return "index.jsp"; } @Execute(validator = false) public String hello() { ResponseUtil.write("こんにちわ"); return null; } } アクションで、ResponseUtil#write()を使ってレスポンスに文字列を書き出すだけ。

    SAStrutsで簡単Ajax - ひがやすを技術ブログ
  • NTTデータについてそろそろ一言いっておくか - ひがやすを技術ブログ

    Seasarプロジェクトが提供しているSAStrutsと、NTTデータが提供しているTERASOLUNAを組み合わせて、大規模プロジェクトでさくさく開発ができるフレームワークの作成を目指します。 SATELITEは、Super Agile TERASOLUNA Lightの略です。 TERASOLUNAは株式会社NTTデータの登録商標です。 プロジェクトの活動はNTTデータの業務とは関係ありません。 意表をつく組み合わせですね。真剣にフレームワークに取り組み、オープンに業務外で活動している人もいるということですね。 NTTデータと真昼の対決をセッティングしたのは、TERASOLUNAチームの人なんですが、その後のCTCと夜の決闘の話を見て、CTCとは同じ問題をかかえているかもしれないので、CTCの担当者と意見公開したいから、連絡先を教えて欲しいと私のところにメールして来ました。 このまじ

    NTTデータについてそろそろ一言いっておくか - ひがやすを技術ブログ
  • 1