Java

昔のJDK

たまーにインストールする必要が出てきて、いつも探すのにちょっと時間がかかってしまう。 http://java.sun.com/products/archive/

Google App Engine

先週いつの間にやらGAEでJavaサポートが開始されていた。 ここに利用可能なクラス一覧が掲載されている。いくつか削られているとの事。 http://code.google.com/intl/ja/appengine/docs/java/jrewhitelist.html 遊んでみよう。

日付の繰上げ禁止

以下のプログラムでは「2009/3/33」というありえない入力値をパースしようとしているので、エラーが出ることを期待する。しかし実際は繰り上がって「2009/4/2」という日付オブジェクトが生成されてしまう。 SimpleDateFormat simpleDateFormat = new SimpleD…

eval

今日初めてJavaを組んでいる時に、JRubyもしくはJava6のVM上でjavascriptが動くやつが使いたいと思った。理由はタイトルにあるように、Javaでevalが使いたい!と思ったから。eval相当を自分で組むのは嫌だ〜。

Ajax通信。でもProxy認証が・・・

XMLHttpRequestを利用したAjax通信では、同一ドメイン以外へのHTTPリクエストの発行が許可されていない。例えば自ドメインがlocalhostなのに、http://www.google.co.jpにアクセスするなんてことは一足飛びにはできないわけです。 というわけで通常はクライア…

ジェネリクス便利♪

ジェネリクス便利だけど、まだすらすら手が動くわけじゃぁない。というわけでメモっておこう! blogにメモっておくと仕事中に必要になったときに、「あ、確か過去に書いたな」と不思議とすぐに思い出せるし、検索機能ですぐ見つかるので便利なのだ。 public …

Java7のNullチェック

ひがやすをさんのJava7はしょぼくなりそうを読んで。 nullチェックが入ったのは良いんだけどね。 ん?なんだろう、nullチェックというのは。「入る機能」として引用されている部分を読んでみると・・・ Null dereference expressions - Null checks with '?'…

csWindows31J

HTTPレスポンスヘッダのcontentType JSPの先頭には次のような1行を書くのが通例だ。 <%@ page contentType="text/html; charset=Windows-31J" pageEncoding="Windows-31J" %> このcontentTypeの部分が最終的にはHTTPレスポンスヘッダに展開される。 機種依存…

preparedstatementにハマッた!

create table A ( id char(32) );こんなテーブルがあったとして、 insert into A (id) values('aaa'); insert into A (id) values('bbb'); insert into A (id) values('ccc');という3件のレコードが存在するとき、 PreparedStatement pstmt = connection.pre…

Strutsタグの備忘録

FormBeanに設定された値をStrutsタグで利用する場合はよくあるんですが、requestに直接設定した値を利用したい場合もあります。 ただ、よく「あれ、どうやるんやったかな」と考えてしまうので、一度まとめます。 サーバーサイド request.setAttribute("hoge"…

Javaの正規表現の扱いはC#よりイイ!

以前「C#の正規表現の扱いはJavaよりイイ!」というエントリを書きましたが、訂正。Javaの方がやっぱ良かったです。自分が知らなかっただけでした。すんません。前回の例はエスケープ記号がつきすぎてしまうので、前回よりもう少し簡単な例として、以下のよ…

配列の動的生成

後輩がはまっていたので。でも確かに面白い問題だった。 次のプログラムは、第一引数の配列のうち第二引数に含まれないものを出力する差分取得プログラムで、期待値は「A」「C」と表示されること。しかし実行するとmain文の1行目でString[]にキャストすると…

staticメソッドのリフレクション

後輩から質問されたのでアップしときます。確かに一瞬どうやるんだ!?ってなるかも。 まず対象のクラス。 public class Target { public String aaa() { return "instance method"; } public static String bbb() { return "static method"; } } staticメソ…

文字化け

しょーもないプログラムなのに、文字化けしてしまう。一応うまくいく方法も分かったけど、その理由がよく分からん。。■jsp <%@ page contentType="text/html; charset=UTF-8"%> <html> <head></head> <body> <form name="f" action="http://localhost:8080/MyApp/servlet/myservlet" method="GET"> <input type="text" name="hogehoge"> <input type="submit" value="送信"> </form> <…</body></html>

Struts×JSON.simple×jQueryでJSONオブジェクトをajaxでやり取り

今更感ありありですが、これらの組み合わせでやったのは初めてだったのでメモしておきます。 やり取りするのはこんなJSONデータ。 [{"name":"太朗", "age":27}, {"name":"花子", "age":25}]想定としては検索ボタンをクリックすると、上記データがサーバーか…

instanceofとisInstance

obj instanceof String と String.class.isInstance(obj); という書き方がある。通常はinstanceofでいけるけど、下の書き方も覚えておくと便利。な時があるかも。

Java VMが確保するヒープサイズを調べる

javaの実行引数に-Xmxっていうオプションを追加することで明示的にヒープサイズを確保するわけですが、確保できる上限ってのがどうやらOSとかCPUとかに依存して一意じゃないということを会社の同期のT君に教えてもらいました。じゃぁ使っているPCはどこまで…

javascriptの縮小化

ハイパフォーマンスWebサイト ―高速サイトを実現する14のルール作者: Steve Souders,スティーブサウダーズ,武舎広幸,福地太郎,武舎るみ出版社/メーカー: オライリージャパン発売日: 2008/04/11メディア: 大型本購入: 32人 クリック: 676回この商品を含むブロ…

文字列配列をカンマ区切りの文字列にする

課のメンバーで簡単なプログラミングコンテスト。 お題は、「dog」「cat」「pig」という文字列配列の各要素をカンマで区切った文字列に変換せよ、です。 回答1 String[] ary = new String[]{"dog", "cat", "pig"}; StringBuilder builder = new StringBuilde…

ソートされた連想配列

javaだとMapインタフェース、C#だとIDictionaryインタフェースで実現されている連想配列。 HashMapやDictionaryでは例えばfor文でレコードを取り出す際の順序が保障されない。そんな時は実装系を変えてjavaならTreeMapを使用し、コンストラクタにComparator…

数字を文字列に変換。ついでに文字列を数字に変換。

ちょっとしたことなんですが、C#で数字→文字列をどうやるのかがすぐにわからずイライラ・・・ 誘惑に駆られて一瞬以下のようにしようかと思ったワタシ・・・ string str = "" + 23; 数字を文字列に java脳で考えてたからか、これがなかなか分からなかった。r…

JAM(Java Application Module)キター!!!

Javaでソフトウェア開発を行う際に、今やオープンソースを使わない開発ってのは考えられないですが、そのオープンソース利用の際に困るのがjarファイルのバージョン互換性。 例えばstruts + hibernateなんてのはよくある組み合わせだと思うのですが、それぞ…

java.text.SimpleDateFormatはスレッドセーフでない

このクラスのオブジェクトを内部的にstaticで持って利用していると、不定期にIllegalArgumentExceptionが出るらしい。別の部署の人がかなーりはまっていました。 それに対応するため、commons-langからスレッドセーフでかつ高速に動作するというFastDateForm…

スケジュール実行

指定した時刻に、ある処理を実行するとか定期的に処理を実行したい(バッチ処理)とかいう時に便利なのはjava.util.Timer。でも意外と知られていない。 new Timer().schedule(new TimerTask() { public void run() { System.out.println("呼ばれました。"); …

正規表現で大文字と小文字を区別しない

String = "ban, pan, an, pn, pen, pension, pEn, PAN"; こんな文字列から「pan,pen,pension,pEn」を抽出するには、 Matcher matcher = Pattern.compile("p[a-zA-Z]+n").matcher(targetString); while ( matcher.find() ) { System.out.println(matcher.grou…

rubyのmix-in

rubyにはJavaと同じようにクラス階層がある。が、rubyにはモジュールという概念もある。 簡単に言うと、クラス階層を横断して機能を再利用するための仕組みといったところでしょうか。 クラスに組み込んで(mix-in)して使うもので、1つのクラスに対して複数…

ちょっと勘違いしてた

ListやSetのcontainsメソッドは便利なのでよく使います。特にSetの方が高速なので好んで使います。 通常はSetの中にAが含まれるか、ということを確認するだけなのですが、今回はSetの中にAもしくはBが含まれるか、ということを調査しないといけなくなりまし…

rubyの勉強本格始動 [クラス定義]

rubyの勉強を本格的に始めることにした。以下がよさそうだったんだけど、「言語編」と「ライブラリ編」に分かれていて、しかも両方とも約4000円なのです。たかー。 プログラミングRuby 第2版 言語編作者: Dave Thomas,Chad Fowler,Andy Hunt,田和勝,まつもと…

WebSphere 6.1ちょっと触ったのでメモ

WAS5.1までは定期的に触っていたのですが、最近はV6.1になっているんですね。5.1と微妙に違っているところがあったので忘れないようにメモ。 installedAppsの場所が違う インストールした後のモジュールが展開されるinstalledAppsフォルダですが、今までのと…

リフレクションによるメソッド実行時の引数について

java5より前のリフレクションによるメソッド実行は以下のシグニチャでした。 Object Method#invoke(Object obj, Object[] args) なので、実際使う時は以下のようになります。第二引数がnullなのは実際のメソッド呼び出しにおいて引数がないことを意味してい…