2008-10-01から1ヶ月間の記事一覧
おとついの不具合の対応案として挙げた「外部結合を使う案」と「サブクエリを使う案」でどっちが早いか試してみた。 環境/条件等 DBはMySQLではなく実運用で使うDB2を使用。 テーブルは以下。おとついのサンプルからカラムを少し増やしてます。 create table…
ActionScript3の「for .. in」では、静的に定義したクラスのメソッド/フィールドは列挙されません。 クラスフィールド、インスタンスフィールドとも。 Dynamicクラスも静的に定義したメソッドやフィールドは列挙されません。 ただし、動的に追加した属性は列…
だいぶ前にScalaで書いた性能計測ユーティリティを発掘しました。ScalaなのでJavaクラスの性能計測で使えます。以下はサンプル。 // 関数を5回実行して、処理時間の平均・最大・最小を出力する。 print( Perf.perf( "test", 5 ) { Thread.sleep(500); }.toSt…
↓みたいなテーブルがあって、 create table A ( id BIGINT NOT NULL AUTO_INCREMENT, name VARCHAR(20) NOT NULL DEFAULT '', PRIMARY KEY(id) ); create table B ( id BIGINT NOT NULL AUTO_INCREMENT, a_id BIGINT NOT NULL, name VARCHAR(20) NOT NULL DE…
instanceofでは、 型パラメータがついていない型(例:List) 上限or下限の指定のないワイルドカードが指定された型(例:List) のいずれかが指定できます。 具体的な型をパラメータとして持つもの(extendsやsuperを含む)は指定できません。 →これは、実行時に型…
ruby-jsonではObjectのto_jsonは「オブジェクトをto_sした文字列のJSON表現」を返すので、以下のようなモジュールを書いてみました。インスタンス変数をハッシュのように出力します。 module JsonSupport def to_json instance_variables.inject({}) { |h, n…
VAIO Type Zが届いたので、早速フォトレビューをば。 箱 箱を開けたところ 右下に見えるのが本体。最近はリカバリーCDとかついてないのかな。 Let's Note R3と並べてみる 今使っているLet's Note R3と並べてみた。横幅がだいぶ広い。 キーボード Macっぽい感…
データベースを使って、運用中に動的に属性を拡張できるような仕組みを作りたい場合の設計メモです。 拡張属性に対応する「キー」と「値」のテーブルを追加で用意して、 拡張元のテーブルと関連づける 感じで実現します。 テーブル設計 kittenテーブルの属性…
デザインが失敗してしまう理由「デザインをする前に十分のデータ分析をしないデザイナー」とか挙げられてるけど、うちの会社の場合それ以前にデータ分析がデザイナーの仕事になってないんだよな。たぶん。プロジェクトの最後の方にちょっと呼ばれて画面に色…
Needleで使える同時実行抑制インターセプタを書きました。Mutex#synchronizedで同じIDを持つインターセプタが設定されたメソッド間の同時実行を抑制します。 require 'thread' require 'set' # 同時実行抑制インターセプタ class SynchronizeInterceptor @@p…
ruby添付のset.rbを眺めていて発見。 ... ライブラリのソース if $0 == __FILE__ eval DATA.read, nil, $0, __LINE__+4 end __END__ ... ライブラリのサンプル(というかテストケースだけど。) とすることで、ライブラリがrubyで直接実行された場合のみ__END_…
↓のような不変なクラスを import java.util.HashSet; import java.util.Set; /** * 名前の集合。不変です。 */ class NameSet { private final Set<String> set; /** * コンストラクタ * @param names 名前 */ NameSet( String... names ) { this.set = new HashSet<String>(</string></string>…
mx.collections.ArrayCollectionを使うと配列の変更をイベントリスナーの仕組みで検知することができます。 コンストラクタでソースとなる配列を指定してArrayCollectionを作成し、 イベントリスナーを設定した上で、 ArrayCollectionのAPIを呼び出して配列…
3日ほど悩んだ結果、VAIO Type Z にしました。 MacBookのアルミボディは魅力的だけど 初代iBookを持ってたけど、ポリカーボネートは傷が付くとかっこ悪いんだよね。 スペック的にはいまいちぱっとしないかなと。 それはFRNCも同様。 というかVAIO Type Zの画…
generic array creationより。型パラメータで示される型の配列を作りたい場合、普通にnewして作ることはできないのでリフレクションを使って作っていたのだけど、 // aとbの配列を作りたい。 X a = null; X b = null; // これはエラーになるので・・ // X[] …
推論の元になる引数が複数ある場合、共通の親クラスが使われるのであれぱ、これを使って複数のオブジェクトの共通の親クラスを得ることができるのでは!とひらめいてしまった。 // 引数の共通の親クラスを返す。 static <X> Class test( X... args ) { return ar</x>…
なやましいのう。
ファイルの中身を一行ずつ取り出すとき、昔どこかで見たサンプルに習って↓のように書いていたけど、 # ファイルの中身を一行ずつ取り出す open( "./test.txt" ) {|f| while line = f.gets puts line end } IO#eachとかあるのね・・・。 # ファイルの中身を一…
DB2では、ソート時にNULL値があった場合「最大値」として扱われます。 昇順では最後に、降順では最初にきます。 Integer,Date,Timestampで実際に確認。 リファレンスでは、DB2 9.1 Information Center - 副選択の「order-by-clause」ところに記述があります。…
Sprite#maskを使って、スプライトを切り抜く(スプライトの特定範囲のみ表示する)ことができます。Sprite#mask属性値として任意のDisplayObjectを設定すればOK。 package { import mx.utils.*; import flash.display.*; import flash.text.*; import flash.ex…
FlexからJavaScript関数を呼び出す場合と同様、ExternalInterfaceを使います。 呼び出される側のswf : package { import mx.utils.*; import flash.display.*; import flash.text.*; import flash.external.*; // JavaScriptからのメソッド呼び出しを受け付…
型パラメータを受け取るメソッドで型パラメータを明示する場合、メソッド呼び出しの前に「」をつければOKですが、ローカルのメソッドの呼び出しで明示する場合、「this.」とする必要があります。 class Sample { // 型パラメータを受け取るメソッド <X> void te</x>…
以下のような関数では、型パラメータXの型は引数によって推論されて決まります。 // 型パラメータで指定されたXを引数で複数受け取る関数。 // 渡される引数によりXが決定する。 static <X> X test( X a, X b ) { return a; } ここで、ぱっとみ、引数a,bの型は</x>…
「ls」じゃなくて「find」の結果をforで回せばOK。 #!/bin/sh # 第一引数で指定したディレクトリ配下のテキストファイルを一覧表示する。 for file in `find $1 -name "*.txt"`; do echo "$file" done 実行結果です。 $ ./file-list.sh ./ ./b.txt ./c.txt .…
メソッドがスローする例外を型パラメータで指定することができたりします。 // 型パラメータでスローする例外を指定できるクラス class Proc<E extends Exception> { void call() throws E {} } Proc<IOException> a = null; Proc<IllegalArgumentException> b = null; // aはIOExceptionをスローするのでキャッチしないと</illegalargumentexception></ioexception></e>…
型パラメータの「境界ワイルドカード」を使用すると、条件を満たす型パラメータを持つオブジェクトを代入可能な変数を作ったりできますが、境界ワイルドカードを持つ型を型パラメータ内で使うとやはり代入互換性は失われてしまいます。 // 型パラメータ指定…
↓のような同名で引数の違う関数があって、 static void test( Object... rest ) { System.out.println( "test( Object... rest )" ); } static void test( List<Object> list ) { System.out.println( "test( List<Object> list )" ); } これの「test( List list )」の方を実</object></object>…
メインPCを買い換えようかと画策中。 要件 ノートPCであること。 こたつの上とか布団の中で使うため必須。これから寒くなるしね。 体力ないので、なるべく小さくて軽くヤツ。 それなりのスペックがあること。 FireFox,Eclipse,FireWorksを並列で起動してさく…
Timerを使って定期的に処理を実行するサンプルです。Timerの基本的な使い方は次の通り。 引数で「次の呼び出しまでの待ち時間(ミリ秒)」と「実行回数」を指定してTimerを作成します。 「実行回数」を0にすると無限に実行されます。 「addEventListener」で定…
JavaBeanをMapに変換したり復元したりするユーティリティを書きました。探せばいっぱいありそうなのであれだけど。 使い方 適当なJavaBeanがあるとして、 // テスト用のJavaBean public static class Kitten { private String name; private int age; public…