Java変態文法最速マスター - プログラマーの脳みそが面白かった && 参考になったので便乗してリスペクト。変態世間であまり見かけない(かも知れない)Javaコードを、過去のエントリからまとめてみました。 nullでなければループ 「配列がnullでなければループ…
JDO2.2で規定されている関数のうち、どれとどれがデータストアで利用できるのか調査してみました。結論としては、 「Collection.contains」は利用可。 「String.matches」は制限付きで利用可。 前方一致条件(「hoge%」みたいな条件)のみ指定できる。 後方一…
tana さんよりご報告頂いた、「起動後一定期間経過するとレート情報が取得できなくなってしまう」問題に対応したsbiclientをプレリリースします。→Github - unageanu / sbiclient →Gemcutter.org - sbiclient 原因 ログイン後一定期間経過すると、強制的にロ…
「1日1エントリ」のルールで続けてきたこのブログですが、今日の記事で連続投稿1000日目となります。1000日続けてみた感想ですが、 技術的知識は(当たり前ですが)だいぶ増えましたよ。また、このブログ自体も個人的なデータベースとして日々役立っていますよ…
JavaClassを使って指定メソッドの呼び出し元を探索しツリー表示するスクリプトを書いてみました。 引数で指定されたパス以下の*.class,および*.jarに含まれるクラスファイルを解析し、 メソッドの呼び出しコードを収集。 収集した情報を再帰的に探索し、呼び…
検索条件作成ユーティリティ向けに定義したプロパティを再利用して、データの更新を行うユーティリティも作ってみました。専用のユーティリティとペアで使うことで、 ↓のような感じで指定したモデルの属性を更新(以下の例では、年齢を"2"に更新)できるように…
今日の発掘品。XMLをコピーするSAXハンドラです。最新のXalanを使うとDTDのコピーもできる、というのは調べたけど影響範囲があれなので不採用→仕方なく自前で実装した記憶があったり。使い方は以下です。 /** * {@link XMLReader}を作成する * @param handle…
昨日作成したJSON-RPCで転送するJavaオブジェクトをさくっと作成するユーティリティですが、Ruby→JSONへのシリアライズだけじゃなく、JSON→Rubyへのデシリアライズもサポートしてればさらに便利じゃね?と思い立って実装してみた。API呼び出しの結果として返…
JSON-RPCインターフェイスにRubyから接続するときに、Javaオブジェクトをハッシュでちまちま作るのはあまりにもメンドイと思って、ユーティリティを書いてみた。これを使うと # json-rpcでKittenオブジェクトを送付 client = JsonRpc::Client.new( "testServ…
「svn:externals」プロパティをフォルダに設定しておくと、別の階層にある任意のSubversionフォルダをそのフォルダ以下にまとめてチェックアウトさせるようにできます。 プロパティのキーは「svn:externals」で、値は、 <ディレクトリ名> <svnのURL>の形式で書けばOK。</svnのurl>…
Rubyのクラス変数ってクラスとそのサブクラスでも共有されるんですね・・・。 # 親クラス class Parent # クラス変数 @@class_var = "parent" def class_var @@class_var end end # 派生クラス1 class SubClass < Parent @@class_var = "child" end # 派生ク…
データストアからモデル一覧を取得する際の検索条件を生成するユーティリティを書いてみました。以下のような感じで使えます。 // ユーティリティをstaticインポート import static Expressions.*; .... // 名前が"mii"のKittenオブジェクト一覧を取得 List<Kitten> </kitten>…
追記:2010-05-01 以下は1.3.0の頃のテスト手順です。最新のSDKではテストケースの書き方が変わっています。1.3.3でのテスト手順はこちらを参照。 いまさらですが、データストアの単体テストを書く手順のメモです。単体テストでは、 ローカルでGoogle App Eng…
「find -exec {} \;」で、findでヒットしたオブジェクトを引数にして、任意のコマンドを実行できたりします。以下は、/foo配下のfolderのパーミッションだけを755に変更する例です。 $ find /foo -type d -exec chmod 755 {} \;「-exec」に続くパラメータの…
1.6より追加されたStandardJavaFileManagerを使用して、指定パッケージ内のクラス一覧を取得するサンプルです。 import javax.tools.DiagnosticCollector; import javax.tools.JavaCompiler; import javax.tools.JavaFileManager; import javax.tools.JavaFi…
JDK6のソースも、Sunのサイトからダウンロードできます。 →Java(TM) Platform, Standard Edition 6u18 Source Snapshot Releases 各種Javaクラスのソースは、真ん中あたりのjdk-6u18-ea-src-b05-jrl-18_nov_2009.jarに含まれています。jar形式になっています…
Enumに続いて、com.google.appengine.api.datastore.Keyのシリアライザも実装。 import org.jabsorb.serializer.AbstractSerializer; import org.jabsorb.serializer.MarshallException; import org.jabsorb.serializer.ObjectMatch; import org.jabsorb.ser…
jabsorbはデフォルトではEnumをシリアライズ/デシリアライズできないみたいなので、ドキュメントの「7.2. Implementing a Serializer」と添付のシリアライザクラスのソースを参考にカスタムシリアライザを作成。以下の実装でよいはず。 import org.jabsorb.s…
昨日、jabsorbで作成したJSON-RPCインターフェイスにRubyで接続してみる例です。仕様どおりのJSON RPCなので、以下のような感じでさくっと接続できます。 #!/usr/bin/ruby -- require 'rubygems' require 'uri' require 'httpclient' require 'json/lexer' r…
JSON-RPCライブラリのjabsorbを利用して、Google App Engine上で任意のJavaクラスのメソッドをJSON-RPCで公開する手順です。jabsorbはServletで提供されていて、Google App Engine上でもさくっと動作しましたよ。 概要 必要なモジュールをダウンロードして、…
2010年のカレンダー壁紙です。 1年分のカレンダーを一枚の壁紙にまとめています。 1年使っても飽きない(かもしれない)、シンプルデザイン 1280x1024と1600x900(Vaio TypeZ 用)の2サイズをご用意。 ダウンロードは以下からどうぞ。 1280x1024 1600x900(Vaio T…
あけましておめでとうございます。今年もよろしくお願いします。
恒例の年末特別企画! Miiで「今年もっとも星がついたねこ写真ベスト100」まとめです!以下のリンクよりどうぞ。→かわいいねこの写真を表示するWebアプリ「Mii」例によって、個人的にぐっときたねこ写真をいくつかご紹介。 Chaton N°2, 2eme essai photographe…
Google App EngineのDatastoreで1対多の所有関係にあるデータを相互参照できる形で記録するサンプルです。 1対多 1つの親が、複数の子を持つような関係です。 親(Parent.class) ├子1(Child.class) ├子2(Child.class) └子3(Child.class) 所有関係 オブジェク…
ファイルorディレクトリの存在とパーミッション、所有者をチェックする関数を書いたのだが、 # ファイル/ディレクトリの存在とパーミッション、所有者をチェックする # useage: check <ファイルパス> <8進数表記のアクセス権> <所有者> <グループ> check(){ …
またサイトの仕様が変わったらしくレート一覧の取得ができなくなっていたので、変更後のサイトに対応したclickclient_scrap-0.1.9をリリースしておきました。→Github - unageanu / clickclient_scrap →Gemcutter.org - clickclient_scrapあと、これは仕様変…
privateメソッドにインターセプタを適用したはずが、どうもうまく設定できていない風の動作になったのでちょっと調査。ドキュメントのAOPのLimitationsのところに記述があり、適用対象のメソッド(を持つクラス)は以下の条件を満たす必要があるとのことです。…
Google App Engineのデータストア用にトランザクションインターセプタを作成。もはやお約束ですなー。 package test; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; impo…
Javaのクラスファイルを比較するスクリプトを作りました。 引数で指定したディレクトリx2内のクラスファイルを再帰的に探索し、 javapで解析。 解析結果をdiffで比較する。 というものです。 #!/bin/bash javap_r() { mkdir $1 for file in `find $2 -name "…