タグ

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

  • 俺は守りに入らない、これが今の俺だ - ひがやすを技術ブログ

    Seasar Conferenceが久々に開催されます。 興味のある方はぜひお申し込みください。 http://seasar.connpass.com/event/19317/ 正直、話す内容は、個々人にまかされているので、どんな感じになるのかはやってみないとわからないのですが、私は、今取り組んでいることを話したいと思います。 今、私が取り組んでいるのは、 「ダンスマシン(すっげー仮)の開発」 イメージはこんな感じ。 Padをたたきながら、ダンスを組み立てていきます。ダンスは、1,2小節ごとに組み立てていくことがほとんどなので、曲を作るのと同じような感じで組み立てていくことになります。出来上がったダンスは、Audioムービーの静止画の上に、シルエットで踊らせるようなことを考えています。 いわゆる、VJ用のマシンな訳ですが、DJのソフト&ハードと、MIDIで連動させることができ、曲とダンスを

    俺は守りに入らない、これが今の俺だ - ひがやすを技術ブログ
    nobeans
    nobeans 2015/08/27
    さすがやで...
  • AppEngineにどんなアプリが向いているのかを知ろう - ひがやすを技術ブログ

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

    AppEngineにどんなアプリが向いているのかを知ろう - ひがやすを技術ブログ
  • Seasar3開発中止 - ひがやすを技術ブログ

    Seasar3の開発を担当する予定だった小林さんが、Seasar3開発のモチベーションが萎えちゃったようなので、開発を一旦中止します。 http://d.hatena.ne.jp/koichik/20100806#1281070800 お前がやればいいじゃないかと言われそうですが、今、丸山先生が、Spring/Rooをとても熱心に追っかけているんです。 http://maruyama.cloud-market.com/cloud-doc/Roo.pdf http://www.ustream.tv/recorded/8600913 丸山先生が熱心に追っかける技術は流行らないというジンクス(先生ごめんなさい)を私は真面目に信じているので、小林さんがヤル気をなくしたのもあり、Seasar3の開発は中止したいと思います。 ちなみに、去年PDCというマイクロソフトの大きなイベントに行って、Azure

    Seasar3開発中止 - ひがやすを技術ブログ
    nobeans
    nobeans 2010/08/06
    な、なんだってーー
  • App Engineではどの言語を使えばいいのか - ひがやすを技術ブログ

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

    App Engineではどの言語を使えばいいのか - ひがやすを技術ブログ
  • 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のユニーク制限を正しく理解しよう - ひがやすを技術ブログ
  • 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な関連を定義する方法 - ひがやすを技術ブログ
    nobeans
    nobeans 2009/07/27
    setBar(Bar)で、elseが必要では。
  • GAEでBlobやTextを定義する方法 - ひがやすを技術ブログ

    Google App Engineでは、500バイト以上のバイトの配列や文字列を格納する型として、BlobやTextを用意しています。これらの型を使うときには、フィールドの型は、BlobやTextにし、getter, setterメソッドは、byteの配列やStringにしておくと、モデルを使う側は、500バイトの制限を気にせず、常にbyteの配列やStringでアクセスできるのでお勧めです。 @Persistent private Blob xxxBlob; public byte[] getXxx() { if (xxxBlob == null) { return null; } return xxxBlob.getBytes(); } public void setXxx(byte[] xxx) { xxxBlob = new Blob(xxx); } @Persistent pri

    GAEでBlobやTextを定義する方法 - ひがやすを技術ブログ
  • HOT reloadingとClassLoaderを理解しよう - ひがやすを技術ブログ

    JavaではClassはClassLoaderに読み込まれます。これはほとんどの人が知っていると思います。AOPを使うときのエンハンスされたクラスも同様にClassLoaderに読み込まれます。 これらの情報は、パーマネント領域に格納されますが、ClassLoaderがGCされると解放されます。 Seasar2のHOT reloadingでは、リクエストの度にClassLoaderを作って、そこにClassをロードし、そのClassLoaderは、リクエストが終わったら破棄しているので、Classの情報は、リクエストごとに破棄されています。 HOT relodingによって、パーマネント領域が使いつくされることはありません。 さらっと書きましたが、きちんとClassLoaderを破棄するのは、かなり大変です。リフレクションの情報がキャッシュされているとそれだけで破棄されなくなってしまうから

    HOT reloadingとClassLoaderを理解しよう - ひがやすを技術ブログ
    nobeans
    nobeans 2009/07/16
    なるほど
  • 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のモデルの状態を理解しよう - ひがやすを技術ブログ
    nobeans
    nobeans 2009/06/08
    とても参考になった
  • 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 - ひがやすを技術ブログ
  • GAE/Jで日本語を使う方法 - ひがやすを技術ブログ

    GAE/JでJavaのソースコードやJSPに日語を使うと、ローカルの開発サーバ上では問題ありませんが、クラウドにアップロードするときに、プラットフォームのエンコーディングでコンパイルしようとしてUTF-8を使っている場合は失敗します。 これに対応するには、appengine-web.xmlのシステムプロパティに <property name="file.encoding" value="UTF-8"/> <property name="DEFAULT_ENCODING" value="UTF-8"/>を追加します。 http://www.jxva.com/blog/2009-04/change-the-google-app-engine%27s-javac-compiler-encoding.html 何語で書かれているのか良くわからないけど。 これで、確かにアップロードには成功するよう

    GAE/Jで日本語を使う方法 - ひがやすを技術ブログ
  • Bigtableの使い方教えます - ひがやすを技術ブログ

    GAE/Jを使うのに一番戸惑うのが、データのストレージがRDBMSではなく、Bigtableなことでしょう。 JOINが使えなかったり、WHERE句でORが使えなかったり、これまで慣れ親しんでいた方法が軒並み使えません。 これらの制限は、Bigtableに限ったことではなく、KVS(Key Value Store)型のクラウド系のデータベースではみんないえることだと思います。 最初、私も戸惑ったんだけど、いろいろ触っているうちに気付きました。昔、AS400でやってたころと一緒ジャンと。AS400とは、IBMから出ているオフコン(?)ですね。今は、System iと呼ばれているようです(最新だとまた違うようですが)。 AS400のファイル(テーブル)は、キーもしくはインデックスでアクセスします。インデックス(論理ファイル)は、ある行の特定のカラムがソートされていて、物理ファイル(テーブル)へ

    Bigtableの使い方教えます - ひがやすを技術ブログ
  • オンデマンドデプロイのすすめ - ひがやすを blog

    JavaでAnnotationがついたクラスがあったら、それに対して処理したい場合は、Seasar2のコンポーネント自動登録で使っているように、ファイルシステムまたは Jar ファイルを全走査してクラスロードする方法もあります。 ファイルシステムまたは Jar ファイルを全走査してクラスロードしてください。が結論です。 Seasar だったら、 org.seasar.framework.util.ClassTraversal を読むべし。 でも、これは、Seasar2.3時代(3年前)の話で、技術としてはちょっと古い。 HOT deployなどと組み合わせると、リクエストのたびに全コンポーネントをデプロイする必要があるので、コンポーネントの数が増えると実用的には使えないのです。 そこで、考え出したのが、Seasar2のONDEMAND deploy。コンポーネントの定義を見に行って、あれば

    オンデマンドデプロイのすすめ - ひがやすを blog
    nobeans
    nobeans 2008/11/29
  • Slim3入門 - ひがやすを技術ブログ

    Slim3 Container、略してS3ContainerのDI部分は出来上がったので、機能を軽く紹介します。 まだ、サイトのデザインが決まってないので、サイト自体がないのですが、興味のある方は、https://www.slim3.org/svnのリポジトリにアクセスすることで最新のソースを見ることができます。 はしもとさん、はやくSlim3のサイトの打ち合わせをしましょう。 S3Containerを動かすには、以下のjarファイルが必要です。 slim3-commons-xxx.jar slim3-container-xxx.jar geronimo-annotation_1.0_spec-1.0.jar geronimo-ejb_3.0_spec-1.0.jar geronimo-interceptor_3.0_spec-1.0.jar javassist-3.4.ga.jar ge

    Slim3入門 - ひがやすを技術ブログ
  • レイヤとモデル

    アプリケーションをレイヤ分割した場合、 プレゼンテーション層 -> ビジネスロジック層 -> データアクセス層 のように分けるのが一般的ではないかと思います。 ここで、矢印は、依存関係を表しています。例えば、プレゼンテーション層は、ビジネスロジック層に依存していて、ビジネスロジック層は、データアクセス層に依存しています。 矢印の向いていないほうには依存していません。例えば、ビジネスロジック層は、プレゼンテーション層に依存していません。 誤解が多いんじゃないかと思うのは、レイヤとモデルを混同することです。一番多く見られるのは、ビジネスロジック層とドメインモデルの混同です。 モデルは、各層を流れていくデータ(+ ロジック)であり、どの層にも依存しません。逆に層はモデルに依存することになります。 モデルは、プレゼンテーションモデルとドメインモデルに分かれます。当は、ERモデルもあるのですが、こ

    レイヤとモデル
    nobeans
    nobeans 2005/09/22
  • 1