senでwiki辞書を使う
形態素解析
形態素解析の辞書
Java使う人にはとてもよい
Stringの文字エンコーディング
普通にプログラムするには大して問題にならないファイル名の文字コード。
webでデータ公開するとかなるとなんかこれをよくミスる。
デーモンスレッド
使えれば使う
GC overhead limit exceeded
調べてみたら、ガベージコレクションに時間かかりすぎやから止まった、ってことらしい。
ガベージコレクション自体はメモリの自動解放とかしてくれるけど、メモリ使用量が多いとかでスワップが多くなったりすると処理がかかるみたいだ。
で、その時間がかかりすぎるとエラー吐いて止まるってのが上のメッセージらしい。
解決にはメモリをしっかり確保すればいいってのは当たり前だが、どうしても頻発する場合などには実行時の引数に以下のものを加えるといい。
-XX:-UseGCOverheadLimit
MySQLと連携
javaのコードからMySQLを使う場合に、JDBCドライバが必要になる。
これはMySQLのサイトからダウンロードができる。
Javaとの連携なので、downloadの中の「Connector/J」をダウンロードする。
ダウンロードしたファイルを解凍すると、いろいろ入っているが、その中にjarがある。
名前は、「mysql-connector-java-5.0.8-bin.jar」だ。
これのクラスパスを通せば、あとはjavaのファイルの中で適切なコマンドを使っていけばいい。
MySQLからの日本語が文字化け
まだいろいろ試していないもののメモ。
文字化けなので文字コードに問題があることは明白。
この場合にするべきは、各所での文字コードの設定。
「MySQLのデフォルト設定」
「javaコード内でのurl指定時」
くらいだが、これでも文字化けする場合があるのだ。
これはMySQLのバージョンを下げればいいこともあるらしい。
この問題があるのは、4.1.7でらしい。これをバージョンダウンすれば解消されるとさ。
またちょっとしたコードの書き換えでもいけるらしい。
str = new String(str.getBytes("ISO-8859-1"), "JISAutoDetect");
みたまんま、コード変換するみたいだ。これを取得した値に対して行ってやると解消されるとか。
でも、バージョンを下げるとこんなもんは必要ないみたい。
javaをコマンドラインで
サーバーなどでjavaを動かすために覚えた。
しかし、コマンドを詳しく覚えているはずもなく…
パスを通す
.bashrcにjarファイルのパスをかたっぱしから通すように指定。
これぐらい重くもなんともないだろ!
実際に使ってるスクリプトは以下
jars=`ls /home/hiroyoshi/system/jar`
for jar in ${jars[@]}
do
export CLASSPATH=$CLASSPATH:/home/hiroyoshi/system/jar/$jar
done
やってることは簡単で、jarのファイル名を配列で全部とってきて、それにパスを当てはめてexportしてるだけ。
これでディレクトリjarにjarを追加するだけで、ログインするときに毎回読み込んでくれる。
もうパスを通す必要はない!便利!
コンパイル
使ったのは実際には以下のコマンド
javac -sourcepath XX/src -d XX/bin/ XX/src*/*.java
XXはディレクトリ名(プロジェクト名とか)
javac:javaのコンパイルコマンド
-sourcepath:ソースファイルの場所指定オプション
-d:クラスファイルの出力場所指定オプション
これで、srcに保存されいるパッケージでまとめられているjavaソースファイルをきちんとコンパイルできる。
また、このコンパイル時にbin内にパッケージも作られる。
ただし、srcとbinは事前に作っておく必要があるのは言うまでもない。
実行
ちょっと泥臭い方法になってしまったというか、メモるほどの事ではないが一応。
java -Xmx1g main/Main
これをbinで行う。ほんとはプロジェクトのホームで実行したかったけど仕方ない…。
ファイルなどを生成するのでも、プログラム内でディレクトリ指定すればbin内には作らなくて済むので。
RSSリーダー
研究でブログを扱っているので作ってみたところのメモ。
ほとんどコピペやけど、プログラムってそんなもん。
使ってるライブラリ
ROME:本プログラムのキモ。RSSを扱うためのメソッドが揃ってるみたい。
基本はこのROMEで処理します。依存とかの関係で
も必要です。JDOMはxmlを扱うライブラリで、これがないとROMEは動かない。
それぞれのライブラリはバイナリをダウンロードする。
JDOMは圧縮形式でダウンロードでき、解凍するとディレクトリができる。
この中からjdom.jarを見つけ出す。
サンプル
public class RSSReader {
@SuppressWarnings("unchecked")
public static void main(String[] args) {
try {
URL feedUrl = new URL(url);
SyndFeedInput input = new SyndFeedInput();
SyndFeed feed = input.build(new XmlReader(feedUrl.openStream()));
ArrayList<SyndEntry> entries = (ArrayList<SyndEntry>) feed.getEntries();
System.out.println("Blog Title:" + feed.getTitle());
System.out.println("=======================");
Iterator<SyndEntry> it = entries.iterator();
SyndEntry entry;
while(it.hasNext()) {
entry = it.next();
System.out.println("Title:" + entry.getTitle());
System.out.println("Date:" + entry.getPublishedDate());
System.out.println("Link:" + entry.getLink());
System.out.println("URI:" + entry.getUri());
System.out.println("Description:" + entry.getDescription().getValue());
System.out.println("---------------------");
}
System.out.println("size = " + entries.size());
} catch (FeedException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
正規表現
すごく便利な正規表現。でもすごくわかりにくい正規表現。
そんな正規表現のメモ。
(特にJavaで使えるというものです)
全角記号
[^ぁ-んァ-ヴ一-龠0-90-9a-zA-Zー〜、]
総当たりではあるが、使えるのでよし。
意味は「ひらがなとかカタカナとか以外」
半角記号
\p{Punct}
javaのAPIで定義されているものそのまま。
ただし、使うときにはこれをこのまま書くだけだと、「エスケープシーケンスは…」と怒られるので、こいつをエスケープしてやる。
つまり、
line = line.replaceAll("\\p{Punct}","");
ってすると、line内の半角記号は一掃される。
半角カタカナ
[。-゚+]
そのまま文字コードにのっとったもの。つまり、意味は
ー。「」、・ヲァィゥェォャュョッタアイウエオカキクケコサシスセソミチツテトナニヌネノハヒフヘホマムメモヤユヨラリルレロワン゙゚
です。
また、正規表現の[a-z]のような「-」(ハイフン)の範囲表現はASCIIコードに準じたものをなっている。(参考URL参照)
例えば、コード表によると「!」から「/」を続けて範囲指定([!-/])できるが、「?」までする([!-?])と数字も選択されてしまう。
最終更新:2010年12月18日 16:31