No Programming, No Life

プログラミング関連の話題や雑記

Java

HatenaHaiku4J v0.2.0リリース

HatenaHaiku4J v0.2.0をリリースしました。こちらからどうぞ。主な変更点(changelog.txtより抜粋) HatenaHaiku4J v0.2.0 2009-09-15 ・クラス名変更 HatenaHaikuAPIWithoutAuth -> HatenaHaikuAPILight。 ・Keyword, User, Statusに#apiを付属させ、各インス…

HatenaHaiku4J

HatenaHaiku4JというはてなハイクAPIのラッパーを書いてます。Pure Javaで作っておくことでGroovyやらJRubyやらJythonやらScala?やらから利用ができてとても便利そうだなぁと思ったのが開発開始の動機です。よろしくどうぞ。 ※なお、動作バージョンは JDK5.…

Javaのpackage, importではまった

すごく初歩的な部分で恥ずかしいのだが、Javaのpackage, import機構ではまったのでメモしておく。packageでデフォルトパッケージになっているクラスは、他のクラスから呼び出すことができないみたいですね。 エラーになる例 フォルダ構成 /base | +---Main.j…

最小値や最大値をmax, minで表現する

ある変数の値がマイナスを許容しないような場合があるとして、他の変数から値を受け取って設定するような場合を考えてみる。(Javaにて) 普通に書くと int num1; if (a < 0) { num1 = 0; } else { num1 = a } こんな感じだろうか。もしくは三項演算子を利用し…

Re:固定長データ

お題: Server error 投稿: Server error このお題、固定長データの読み込みということで、ここぞとばかりに今更Java1.4で追加されたNew I/O を使ってやってみようと思い、勢いで投稿してみました。 一応動いてはいるんですが、エレガントさはないですね。Gro…

equalsメソッドの雛形

自作クラスのequalsメソッドを書くときはこの雛形を使うと便利。 public boolean equals(Object obj) { if (this == obj) { return true; } if (obj instanceof T) { T other = (T) obj; if (!this.xxx.equals(other.xxx)) { return false; } if (yyy != oth…

Re:改行を含むとGroovyの正規表現がうまく動かない

改行を含むとGroovyの正規表現がうまく動かない - プログラマ的京都生活 によると、複数行になったとたんにGroovyの正規表現がうまく動かなくなる模様。 ということで実際に試してみました。 (動作確認 Groovy Version: 1.5.7 JVM: 1.6.0_10) 実際に試してみ…

JavaでMapに複数のキーを指定する方法

当記事は、JavaでMapに複数のキーを指定する方法 | Think Twice に移管しました。

Javaで毎回完全に異なる乱数を取得する方法

Randomクラスを利用 Javaで乱数を利用する場合、java.util.Randomあたりを使うと思います。java.util.Randomは乱数ジェネレータですので、乱数の種(long seed)を与えて、それぞれ違った順序で乱数を発生させるジェネレータを生成することができます。 Random…

GroovyではてなAPIを利用しハイクに投稿

発端 ハイクで id:daichan330 さんが文字列のエンコーディング+はてなAPIでのPOST処理なんかを試していたので、勉強がてらGroovyでやってみました。 そんなわけで、書いたソースです*1 ひとまず、ハイクAPIを利用して日本語で投稿できることだけを目指しま…

POIのHSSFを使ってExcelに画像を挿入

POIのHSSFを使って画像を挿入したExcelファイルを作りたいって要望があったんで、用意したJpeg画像をExcelに挿入するテストを行ってみました。ネットとかで軽く探してみると、POIは画像挿入できないよ的な情報が多かったもので出来るのか不安だったが、出来…

Jakarta POIをとりあえず使ってみる

最近、仕事でExcelでデータを入力したものをサーバにアップしたり、DBのデータを書き込んだExcelファイルをダウンロードさせたり、また、VBAを使ってガリガリExcel内で処理させたり…といった内容のものをチームでやっている。 ってことで、まだ使うか分から…

配列のキャスト

以下を実行するとjava.lang.ClassCastExceptionが発生する。*1 1: Object[] objArray = new Object[]{ 2: "aaa", 3: "bbb", 4: "ccc" 5: }; 6: String[] strArray = (String[]) objArray; 7: for (String str : strArray) { 9: System.out.println(str); 10:…

Javaでキーを重複して持てるMap

ここで紹介されているMultiMapがキーを重複して持てるMap (ApacheのCommons API) Thanks to Bagが欲しい... | | プログラマ2.0日報 | あすなろBLOG リンク MultiMap (Collections 3.2 API) 発端

JavaでSIGN関数

SQLやEXCELなどで、 数値の符号(プラス(+)なのかマイナス(-)なのかそれとも0なのか) を取得する関数としてSIGN関数がありますが、Javaではjava.lang Mathクラスあたりあるかなぁと思ったら 見当たりません。代替として、java.math.BigDecimalやjava.math.Big…

Rhino紹介サイト

Java系Script言語紹介シリーズ第4弾。お次はRhinoで。 Rhino(らいの)はJavaScript(ECMAScript)のJavaでの実装です。 >>Rhino詳細:JavaScriptからJavaインターフェースの実装とクラスの継承 - builder 試してないけど、今流行のJavaScriptでプロトタイプベー…

Groovy紹介サイト

ということで、Groovy紹介サイトです。 インストールしてコンソールで実行してみました。 関連エントリ >>Rhino紹介サイト - No Programming, No Life >>JRuby紹介サイト - No Programming, No Life >>Jython紹介サイト - No Programming, No Life [>コンパ…

JRuby紹介サイト

一個前のエントリがJythonだったんで、対抗馬ということでJRubyを。 >>[Think IT] 第1回:JRubyとは? (1/3) >>[Think IT] 第2回:JRubyでHello, World! (1/2) >>[Think IT] 第3回:RubyからJavaクラスを呼び出してみよう! (1/3) >>[Think IT] 第4回:Java…

Jython紹介サイト

「おれはJython」っていうJython紹介サイトがあった。ガキ大将ですね。 >>おれはJython第1回 >>おれはJython第2回 CPythonから入る前の取っ掛かりとしていいかも。 関連エントリ >>Rhino紹介サイト - No Programming, No Life >>Groovy紹介サイト - No Progr…

シングルトンにInitialize-On-Demand Holder

忘れないようにメモ。 Initialize-On-Demand Holder Javaでシングルトンを実現しようとする際のクラス生成イディオム。 「いにしゃりぜーしょんおんでまんどほるだー」と読む、多分。 double-checked locking問題をすっぱりと解決したもので、スレッドセーフ…

Java SE 7

仕事でSWTのOutOfMemoryの件を調べていたんだが、その際に見たネットの記事によると、Java SE 7あたりはなかなか素敵なことになっているらしい。 例えば… スクリプト言語のサポート( Beanshell(JSR 274) JRuby Jython Groovy(JSR 241) JavaFX Script ) …

循環INDEX

サンプルはJavaで。 インクリメントしていった際に循環するINDEX int index; // 配列のindex int[] buffer = new int[3]; // 配列(長さ3) /* * (index + 1) が 3以上になった場合は、 * 配列の長さ(3)の剰余をとる。 */ index = (index + 1) % buffer.length…

removeListenerの挙動

SWTのリスナの挙動について。同じリスナインスタンスを同じイベントタイプでaddしていった場合、addした順に1つずつ削除されるみたい。 final Button button1 = new Button(shell, SWT.NONE); button1.setText("button1"); button1.setBounds(10, 10, 100, …

BigDecimalのadd

BigDecimalのaddは戻り値を代入する必要あり。(イムータブルなので) もちろん subtract, multiply, divide なんかも同様。 BigDecimal bd1 = new BigDecimal("1"); BigDecimal bd2 = new BigDecimal("2"); bd1 = bd1.add(bd2); 仮に bd1.add(bd2); これだけ…

ファイルリスト取得にフィルタを利用

ファイルリストを取得するときに「名前は〜Aで始まって〜」とかいう条件でフィルタリングすることがよくある。 そんな際に使えそうなのが以下。 先頭がAで始まるファイルのリストを取得 /* フィルタ作成 */ FilenameFilter filter = new FilenameFilter() { …

Javaでログ用にファイル名、クラス名、メソッド名、行番号などを取得

ログなどにクラス名、メソッド名、行番号などを出力したい場合がある。 エラーや例外が発生した場合はスタックトレース情報が得られるので そいつを拝借すればどこのクラスの何行目でエラーが発生したのかを ログに出力させることができるが、エラーや例外で…

巨大サンプル

英語だけど、多方面のサンプルが豊富。 Javaやその他言語も揃ってる。 仕事でSWTをいじらなきゃいけない私にとっては 解析の余地ありまくりなサイトである。 Programming tutorials and source code examples

SWT参考サイト

仕事でSWTをやることになったので、調べている最中。 とりあえず、サンプル集を探る。 SWT SWT: The Standard Widget Toolkit 本家(英文) FrontPage - SWTサンプル集 JFace Software Error

Calendarクラスで週初めをずらす

仕事で直しているシステムを外人さーんが使うことになって、 ・月曜日を週初めにしたい! ・指定した日の週初めの日を取得したい! という要望がありました。 JavaのCalendarクラスで上のような要望に答えるためには、 以下のようにすればいいみたい。 Calen…

JavaScriptの文字列のエスケープ

仕事でJavaScriptの文字列をエスケープするロジックを Javaで書く機会があった。JavaScriptの文字列は文字列の中にダブルクォート(")や シングルクォート(')があると、それ自体が文字列構成構文要素 となるため、重なる場合、バックスラッシュ(\)でエスケー…