読者です 読者をやめる 読者になる 読者になる

No Programming, No Life

新しいNPNLです。http://d.hatena.ne.jp/fumokmm/ から引っ越してきました。

Groovyによるうるう年チェック

はじめに Javaによるうるう年チェック - お仕事の備忘録みたいなもの で画期的なうるう年判定を行っていた。 それは、 java.util.Calendar#getActualMaximum(Calendar.DAY_OF_YEAR) を使うというもの。 Calendar#getActualMaximum Calendar#DAY_OF_YEAR この…

Javaで型トークンを利用したファクトリクラスを書いてみた

はじめに Javaでインスタンスを生成するクラス、いわゆるファクトリクラスを書く場合、色々な書き方があると思いますが、特定のクラスのインスタンスのみしか作れないとわりと不便なので、今回は、型トークン(クラスクラスと呼ばれるやつですね: Class<T> で</t>…

javaとかScalaで全角を半角に変換する方法をGroovyでもやってみた

はじめに javaとかScalaで全角を半角に変換する方法 - ブログなんだよもんをGroovyでもやってみた。 元記事でも触れられておりますが、確かにこういう処理は再発明はしたくない。 ソース Groovyの場合、Grape(@Grabアノテーション)でMavenリポジトリなどから…

Javaでenumを使ってプロパティファイルのキーを定義する

はじめに enumでインタフェースが実装できることが分かったので、その応用例の一つとして、Javaでenumを使ってプロパティファイルのキーを定義するサンプルを書いてみました。 プロパティファイル読み込みは何が問題か Javaでの外部プロパティファイルの機構…

Javaのenumは継承できないけどインタフェースが継承できる

はじめに Javaのenumって便利ですよね。enumを使い続けていくとグルーピングしたくなってくる事があると思いますが、継承はできないので、そんな場合はインタフェースを実装してやるといいようです。 とりあえずテストを書いた 解説 インタフェース interfac…

JavaでPropertyDescriptorを使ってBeanのプロパティに簡単にアクセスする

はじめに Java標準のSDKに java.beans パッケージがありますが、この中にJavaBeansの getter/setter を便利に扱える PropertyDescriptor というクラスがあるようです。 クラス階層 java.beansClass PropertyDescriptorjava.lang.Object └java.beans.FeatureD…

JavaEEでリクエストのHTTPヘッダに値を付加する

タイトルの通りなんですが、いまやってるプロジェクトでJavaEEでリクエストのHTTPヘッダに値を付加して持ち回る必要が出てきていまして、その方法を模索中です。とりあえず色々ググってたどり着いた案は、今のところ以下のような感じ。 サーブレットだと、#s…

Mac OSXにOpenJDK7をインストールしてGroovyを実行する

こちらの@yusukeyさんの記事を参考にMac OSXにOpenJDK7をインストールしてGroovyを実行するところまで試してみたのでメモしておきます。 1.まずはOpenJDK7をダウンロード Mac OSX用のバイナリが以下から手に入るのでダウンロードしてきます。 http://code.go…

現場で使えるGroovy(その3)「JavaにREPLが無いならgroovysh, groovyConsoleを使えばいいじゃない」

このシリーズの一覧はこちら はじめに ご存知の通り、JavaにはREPLがありません。しかし残念がることはありません、そう、あなたにはGroovyが付いています。 Groovyがこれらの特性とJavaとの親和性を高いレベルで同時に実現していることです。 (中略) ・Ja…

5分で理解するProject Coin

はじめに そろそろJDK7が登場する時が近づいてきたのでJavaプログラマならProject Coinを先取りして予習しておくべき時期になってました。Project CoinというのはThe Java Community Process(SM) Program - JSRs: Java Specification Requests - detail JSR#…

Java使いをGroovyに引き込むサンプル集

はじめに Java使いをScalaに引き込むサンプル集 | mwSoft のGroovy版を書いてみました。 記事中に登場するサンプルコードや文章など多くの部分を引用させていただいております。 (動作確認: Groovy Version: 1.7.7 JVM: 1.6.0_22) 前書き Groovyという言語を…

JavaからGroovyへ移行する簡単なステップ

この記事は From Java to Groovy in a few easy steps | Groovy Zone の和訳です。思いっきり意訳です、あしからず。GroovyとJavaは、いとこみたいに近い存在で、構文がとても似ているからJava開発者にとってGroovyを覚えることはとても簡単です。Javaプログ…

Javaでビープ音を鳴らせ!

半分くらいネタです。ひょんなことからJavaのコード内でビープ音を鳴らすメソッドを発見したのでメモしておこうかなと。 ソースコードはこんな感じ 10.times { java.awt.Toolkit.getDefaultToolkit().beep() System.sleep(100) } 上のサンプルはGroovyですが…

Groovyでjava.text.Collatorを試してみた

はじめに こちらにて、java.text.Collatorの使い方が示されていた。 知らなかったんですが、このCollatorというクラスはソートで使うらしく、通常のソートではUnicode順になってしまうところを良きに計らってくれるようです。 ソース (動作確認: Groovy Vers…

BigInteger, BigDecimalって全角OKなんだね

タイトルの通りです。 BigIntegerやBigDecimalは文字列からインスタンスを生成できますが、その際、全角も許されるみたいです。 地味にすごい! new BigInteger("123").intValue() // => 123 new BigDecimal("123.45").doubleValue() // => 123.45d

JLabelなどででHTMLを使いたい時のTIps

SwingのJLabelなどでHTMLを使いたい時は先頭と末尾に空白が入っているとだめらしい。 new JLabel(" <html> .... </html> "); // ←これNG new JLabel("<html> .... </html>"); // ←これOK たったこんな事で1時間程度はまった…やはりGUIはいろいろと勝手が違うね。

HatenaHaiku4J v1.2.1リリース

HatenaHaiku4J v1.2.1をリリースしました。こちらからどうぞ。主な変更点(changelog.txtより抜粋) HatenaHaiku4J v1.2.1 2010-05-09 ・HatenaHaikuAPIHTMLでmp3リンクの対応。(embedタグが閉じられていない) MP3タグの部分の対応です。(bug fix)よろしくお願…

HatenaHaiku4J v1.2.0リリース

HatenaHaiku4J v1.2.0をリリースしました。こちらからどうぞ。主な変更点(changelog.txtより抜粋) HatenaHaiku4J v1.2.0 2010-05-07 ・HatenaHaikuAPIHTML(HTMLスクレイピング版)を追加した。 前回からだいぶリリース間隔が開いてしまいましたが、やっとリリ…

HatenaHaiku4J v1.1.4リリース

HatenaHaiku4J v1.1.4をリリースしました。こちらからどうぞ。主な変更点(changelog.txtより抜粋) HatenaHaiku4J v1.1.4 2009-11-18 ・StringUtil#encodeで「+」「.」「-」「*」「_」もURLエンコードするよう修正。 これのバグフィックスです。 よろしくお願…

HatenaHaiku4J v1.1.2, v1.1.3リリース

HatenaHaiku4J v1.1.2とv1.1.3をリリースしました。こちらからどうぞ。主な変更点(changelog.txtより抜粋) HatenaHaiku4J v1.1.3 2009-11-07 ・半角スペースが"+"に変換されてしまっていた問題を修正。 HatenaHaiku4J v1.1.2 2009-11-01 ・HatenaHaikuAPILig…

HatenaHaiku4J v1.1.1リリース

HatenaHaiku4J v1.1.1をリリースしました。こちらからどうぞ。主な変更点(changelog.txtより抜粋) HatenaHaiku4J v1.1.1 2009-10-24 ・Config#getVersion()追加により、バージョン情報を取得できるようにした。 ・KeywordAPI, UserAPIをRecudeOpに対応させた…

HatenaHaiku4J v1.1.0リリース

HatenaHaiku4J v1.1.0をリリースしました。こちらからどうぞ。主な変更点(changelog.txtより抜粋) HatenaHaiku4J v1.1.0 2009-10-21 ・id:v593kdrg氏による集約操作のインタフェースを追加。 ・Status, Keyword, UserにComparableを実装させた。 Sample005.j…

UUID

Java1.5からjava.util.UUIDというクラスが追加になったようで、このクラスを利用することで、簡単・お手軽にユニークなIDが取得できるようです。とかすると 0e8f5405-4035-41ff-8ca0-571a6b441bc6 みたいな文字列が取得できるようです。 便利便利! 参照 汎…

HatenaHaiku4J v1.0.3リリース

HatenaHaiku4J v1.0.3をリリースしました。こちらからどうぞ。主な変更点(changelog.txtより抜粋) HatenaHaiku4J v1.0.3 2009-09-24 ・ユーザ名取得用のメソッドを追加。⇒HatenaUtil#getUserName(String userId) HatenaHaiku4J v1.0.2 2009-09-24 ・ソースの…

HatenaHaiku4J v1.0.1リリース

HatenaHaiku4J v1.0.1をリリースしました。 こちらからどうぞ。主な変更点(changelog.txtより抜粋) HatenaHaiku4J v1.0.1 2009-09-22 ・ユーティリティとしてHaikuURLを追加。⇒サンプル:Sample004.java ・ユーティリティHatenaUtilに#escapeHatenaNotation(S…

Re:Javaで文字列の最後に現れる指定した文字列を削除する

元記事はこちら >>私なら、正規表現を使ってさっくりやるなぁ。 private String remove(String str, String removeStr) { return str.replaceFirst(removeStr + "\$", ""); }

HatenaHaiku4J v1.0.0リリース

HatenaHaiku4J v1.0.0をリリースしました。 こちらからどうぞ。主な変更点(changelog.txtより抜粋) HatenaHaiku4J v1.0.0 2009-09-18 ・画像をfotolifeにアップロードしつつ投稿するAPI機能を実装。 ・画像をFileで指定、URLで指定、byte[]で指定する方式を…

HatenaHaiku4J v0.2.1リリース

HatenaHaiku4J v0.2.1をリリースしました。こちらからどうぞ。主な変更点(changelog.txtより抜粋) HatenaHaiku4J v0.2.1 2009-09-15 ・LoginUser#createはあまり意味がなかったため、普通のコンストラクタにした。

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.util.Mapのキーとして複数のキーを手っ取り早く指定するには、java.util.ArrayListあたりをキーにするとよい。 これは、java.util.ArrayListはインスタンスが異なっても、格納されている要素が同じ場合は適切なハッシ…

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問題をすっぱりと解決したもので、スレッドセーフ…

循環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, …