Google Code Jam 2010 Round1B

1Aは寝坊しました!
最近実務ばかりで、PHPしか書いてないから最初戸惑ったが、、、Javaバンザイ。

Google Code Jam 2010 is in Dublin!
http://code.google.com/codejam

(続きを読む…)

漸近的計算量と計算時間の相関

GoogleCodeJamのQualificationに参加してみて、
どのくらいまでのオーダーの計算量ならコンテスト中に処理できるのか
気になったので簡単なプログラムを作って計測してみました。

(続きを読む…)

GoogleCodeJam2010 Qualification に参加しました。

先日開催されたGCJ2010のオンライン予選に参加しました。
ここんところ就活漬けで、コンテスト系のコードにはあまり触れられてなかったんですが、
自分にしてはまずまずの出来だったと思います。

(続きを読む…)

SRM463 div2

今日も疲労困憊で参戦。
そして、初の自宅以外での環境。

(続きを読む…)

SRM459 div2

今日は平和な部屋だった。
つか、問題が平和だった。

(続きを読む…)

幅優先探索をJavaを使って覚える

下らない内容だなぁと思い人もたくさんいるかと思いますが、
自分は今まで幅優先探索が苦手で敬遠してきました!(笑

そんなお仲間がいらっしゃればご参考になればと。
この記事はそれ以上でもそれ以下でもございません。

(続きを読む…)

SRM454 div2

眠いけど、一応出た。

(続きを読む…)

アンダースコア記法をキャメル記法に

テーブルのカラム名をEnumにして、関連づけを全部そこに任せていたんだけど、
ApacheCayenneはカラム名などをキャメル記法で渡す。う゛ぁーって感じ。
なので変換メソッドを作った。

	public static String camelize(String s){
		char[] c = s.toLowerCase().toCharArray();
		StringBuilder r = new StringBuilder(s.length());
		int diff = 'A' - 'a';
		for (int i = 0; i < c.length; i++) {
			if (c[i] == '_') {
				r.append((char)(c[++i] + diff));
			} else {
				r.append(c[i]);
			}
		}
		return r.toString();
	}

動作良好。

ApacheCayenneに関する備忘録

どんどん追加していこう。

  • CayenneModelerでモデリングするとカラムの順番が滅茶苦茶になる
    しっかり順番意識して作ってもpkカラムがテーブルの中央にきたりするありえなさ。
    なので、別のモデリングソフト使ってモデリングしてSQL発行してテーブル作ってます。
    ただ、auto_pk_support忘れがち。
  • DataObject <=> PK
    http://cayenne.apache.org/doc20/dataobjectutils.html
    DataObjectUtilsという便利なクラスがあって、それを使ってPKとDataObjectの相互変換が簡単にできる。

Apache Maven2を使ったApache WicketのQuick Start

ルー語みたいなタイトルになっちゃいました。

前にもやったことがあったのですが、
開発環境が変わりやり方も忘れてしまったので、
今度は忘れないように備忘録として。

Apache Mavenは現在v2が主流。
http://maven.apache.org/

  1. 落としてきて適当な場所に解凍する。
  2. ローカルリポジトリを設定する。
    最初にやっとかないと、デフォルトのディレクトリ(~/.m2/以下)にファイルが沢山ダウンロードされちゃう。

    [解凍先]/conf/settings.xml
    local_repositoryっぽい場所があるので、好きな場所に変更する。

  3. (コマンドプロンプトから実行するので)環境変数を設定する。
    PATH=[解凍先]/bin/
    JAVA_HOME=[JDKのディレクトリ]
  4. 試しに行してみる。
    $mvn –version
    など。返事が返ってくれば成功。
  5. プロジェクトを作成したいディレクトリに移動。
    カレントディレクトリにプロジェクトが作成されるので、
    EclipseのWorkspace内など、好きな場所へ。
  6. Apache Wicket Quick Start!
    http://wicket.apache.org/quickstart.html
    詳しくはリンク先を読んでください。
  7. 自動生成されたコマンドを実行する。
    EclipseなどIDEとの連携を考えている人は、
    上記リンク先の下の方もちゃんと読む!(必要なコマンドがあります)

以上でおわり。

さぁ、作業作業。