パーフェクトJava

Part1の概論がわかりやすかった。とはいえ15章のストリーム以降の理解はあやふやだけど。

ProductName パーフェクトJava (PERFECT SERIES) (PERFECT SERIES 2)
アリエル・ネットワーク株式会社
技術評論社 / 3780円 ( 2009-09-24 )


Part2のサーバプログラミングは興味がわかなかったので大して読まなかったが、Part3のGUIは面白かった。

というわけで、Part1をじっくり読む本かな。

JavaとAndroidの書籍はちょくちょく買う割にはたいして身についてないという、、、

来年はJavaとAndroidに真面目に取り組む年になりそう。

Javaデータ構造とアルゴリズム基礎講座

アルゴリズムの勉強のしかたに載っていて、java度の低い自分には丁度よいかもと思い即買いしたのだけど、自分にはちょっと基礎的すぎた(どういうライブラリがあるかとリングバッファの実装が役に立ったけど)。

ProductName Java データ構造とアルゴリズム基礎講座
長尾 和彦
技術評論社 / 2709円 ( 2008-12-26 )


アルゴリズムイントロダクションを買うべきだったな。

ところでperlでアルゴリズムを学ぶなら迷わずMAWPを選択するべきでしょう。

ProductName Mastering Algorithms With Perl
Jon Orwant
Oreilly & Associates Inc / 2553円 ( 1999-07 )


日本語版がでてもおかしくないくらいの良書だと思う。

SMSD (Small Molecule Subgraph Detector)を使う

GastonでMCSを探索するのは色々無理があったようで、どうするかな困った困ったと探していたら、SMSDを見つけた。cdkには既に組み込まれているらしくてさっきビルドしてみたんだけど、よく考えたらCDKの使い方あんまよくわかんないや、、、ってことでGUIで遊んだ。

ちなみに、java6でビルドしないといけないので、osx(10.5)の場合は環境変数を設定した。

SMSD

とりあえず、vildagliptinsitagliptinのMCSをもとめた。

SMSD

なんで5員環と6員環がマッチしてるんだろうか?あとでペーパーちゃんと読もうっと。

追記openbabelでのdiscussもあった

SRM435DIV2_250

余計な変数多いな。

public class SkiFriction {

    public int bestPosition(String sF, String pF) {
        int sFl = sF.length();
        int pFl = pF.length();
        if(sFl >= pFl) return 0;
        int result = 0;
        for(int i=0;i<pFl-sFl;i++) {
            int lmax = 0;
            for(int j=0;j<sFl;j++){
                int k = sF.charAt(j) - '0'+ pF.charAt(i+j) - '0';
                if(k>lmax) lmax = k;
            }
            result += lmax;
        }
        return result;
    }    
}

数字の比較はMath.max使えばいいのか

SRM433DIV2_250

reverseってメソッドはないのかな? 両方ソートして、一方は先頭から他方は後ろから掛けてsumを求めた。

import java.util.*;

public class RoyalTreasurer {

    public int minimalArrangement(int[] A, int[] B) {
    java.util.Arrays.sort(A);
    java.util.Arrays.sort(B);
    int result = 0;
    for(int i=0;i<A.length;i++)
        {
        result += A[i] * B[A.length - i -1];
        }

    return result;
    }   
}

SRM460DIV2_250

java勉強中。

import java.util.ArrayList;
import java.util.List;

public class TheQuestionsAndAnswersDivTwo {

    public int find(String[] q) {
        List qlist = new ArrayList();
        int ans = 0;
        for (int i = 0; i < q.length; ++i)
            if (!qlist.contains(q[i]))
                qlist.add(q[i]);

        ans = (int) Math.pow(2, qlist.size());
        return ans;
    }

}

Set使えばいいのね。

Java並行処理プログラミング

復刊で購入しといたのを読んでみた。

ProductName Java並行処理プログラミング ―その「基盤」と「最新API」を究める―
Brian Goetz,Joshua Bloch,Doug Lea
ソフトバンククリエイティブ / ¥ 3,990 ()
在庫あり。

1,2部まで読んだけど、その先ちょっとついていけそうになかったので、読むのを中断した。 並行処理プログラミングってほとんどしないけど、化合物の3次元構造立ち上げとかは並行で動かすのが当たり前になりそうなので、そのうちやらんといかんのだろう。

8coreとか欲しいなぁ。

Java言語で学ぶリファクタリング入門

二年近く積んであったが、最近javaで書いてるので読んでみたら想像以上に面白かった。厚さの割にスラスラ読めたので、二日程度で読み終わった。

良書

ProductName Java言語で学ぶリファクタリング入門
結城 浩
ソフトバンク クリエイティブ / ¥ 3,360 ()
在庫あり。

  • enumでシンボリック定数を表現
  • 名前重要
  • 双方向リンクは避ける
  • タイプコードを表す新しいクラスを作る
  • リスコフの置換原則
  • @override

後半は、パターンが解決したかった「もの」が多かったので、デザインパターンを知っていないと理解しにくいかもしない。逆に知っていればさらっと入ってくる。

ProductName 増補改訂版Java言語で学ぶデザインパターン入門
結城 浩
ソフトバンククリエイティブ / ¥ 3,990 ()
在庫あり。

EclipseCoder入れた

EclipseCoder: TopCoder SRM用Eclipseプラグイン

EclipseCoder

Testの使い方がわからん。しかも赤い×がついてるし、なんか設定間違ってんのかな。

EclipseCoder

追記10.03.03

よくわからんが/Library/Java/Extensions/に入ってたopsin-big.jarが問題だったようだ。これを削除して再起動してみたら普通に動いた。

jythonプログラミング読了

次の二つの章が特に面白かった。

  • 5 Pythonから見たオブジェクト指向
  • 7 Jythonの応用例

ProductName Jythonプログラミング
西尾 泰和
毎日コミュニケーションズ / ¥ 3,150 ()
在庫あり。

単なるjythonの使い方の本というよりは、jythonのような複数の言語を混ぜ合わせた処理系を通して見えるものを感じ取りましょう的な内容だったように思う。あとその場合に固さやわらかさの長所をうまくのばしてやるようなプログラミングのお作法はこんな感じですよみたいな指針。

perlでもInline系のモジュールを使えば直接他の言語を埋め込んだりできて他言語のライブラリを使えるけど、言語自体が両方の世界に干渉できるともっと楽ができる。

Inline::みたいなやり方でも、jythonみたいなシームレスな言語でも結局複数の言語を理解してないとうまいことやれないので、その分習得コストはかかると思うんだけど、シームレスな言語使うと楽しいのはスケッチするような感覚が得られることなのかなと思ってる。

そういう意味ではGainerも似たような感じかも。

ProductName Make: Technology on Your Time Volume 04
オライリー・ジャパン
オライリージャパン / ¥ 1,575 ()
在庫あり。

あとシームレスな言語を使うっていうことはそれにあわせてライブラリのほうも対応していかないといくのが望ましいのかなとPybel as a generic API for cheminformatics libraries - proof of concept using CDKというエントリを見てふと思った。

chemoinformaticsだとopenbabelっていうc++の大きいライブラリとCDKっていうjavaのライブラリがあって、その上にpython(とruby)がまたがっている感じなのだけど、さらにこれらでいじくったデータを解析にもっていくためにRが必要だったりとかするのでRpyが役に立ったりする。