java

MavenやNetBeansでJunit実行時に日本語メソッドが文字化けするのを対策する。

NetBeansでテスト流したらもじばけしてた。 よくみたらMaven等でテスト実施時にアスキー変換されてしまっている。 こんなかんじ ------------------------------------------------------- T E S T S -----------------------------------------------------…

Selenium WebdriverのFireFox,Chrome,IEの初期設定およびProxy設定

想定環境はこんな感じ Windows7 64bit Selenium 2.53.0 Proxy 127.0.0.1:28080 各Driverはpj/driver/以下に保存 FireFox FireFoxはDriverの個別DLは不要。 FirefoxProfile profile = new FirefoxProfile(); profile.setPreference("network.proxy.type", 1);…

SeleniumのDriver起動時に認証つきProxyの認証画面が出てきて困る。

これまたバッドノウハウです。もう世界からProxyなんてなくなれば良いのに(嘘Seleniumでテストを作るときにDriverがブラウザを立ち上げますが、 認証つきProxyサーバを使っている場合認証ポップアップが出てしまってテストがとまって不便。 なので対処しま…

JAXRSで@QueryParam()でObjectを受けたい

JAXRSでPostだとこんな感じでパラメータをObjectで受けれるじゃないですか、 @POST @Consumes(MediaType.APPLICATION_JSON) public Response login(LoginForm form) { これをGetでもやりたいとおもったら結構困ったのでメモ 普通のGetはこんな感じ。そもそも…

JAX-RS2.0でRESTサービスを作る際にヘッダーを指定する

RESTサービス作るのを楽にやりたいとおもったらまあJava使わないのですが、 大人の事情でやっぱJavaだよねということはよくあり、そんなときにはJAX-RS (Java API for RESTful Web Services) がめっちゃ便利です。 NetBeansでポチポチーするだけでRestWebサ…

Javaで簡単にかつ正確に文字コード判別する方法

Webページなりファイルなりをいろいろ読み込んで処理するときに文字コードめんどくさいですよね。 大切なものなのですが、大半の人にとって文字コードは大事な関心事ではないので さくっと簡単に、かつミスのないように実装したいところです。そう考えるとJa…

a==b がTrueで a.equals(b) がFalseの状態を作り出す

Javaで「a==b がTrueで a.equals(b)」というへんな状態になったのでメモ。 一般的に ・a == b だったら a.equals(b)は必ず成り立って ・a.equals(b) のときには a == b とは限らないというのがよくある話ですよね。 しかしこれが逆になるへんな事象がありま…

各種プロダクトのProxy設定方法まとめ。

各種プロダクトのProxy設定を良く忘れまくるのでまとめてみた。 基本的にJava系をメインとしたありがちなSIer環境を想定しています。 ・自端末はWindows ・Proxyがないとインターネットにはアクセスできない ・ProxyにはユーザーID,パスワードが必要 ・社内…

Javaのクラスファイルのバージョン。

長く生きていると java.lang.UnsupportedClassVersionError: GaraponTest (Unsupported major.minor version 50.0) みたいなエラーがたまにあって、このクラスファイルのバージョンなんだよっておもって javap -v を打つんですが、そこにでてくるバージョン…

NetBeanのJVM creation failedに対応する。

うぉー!!こうすればよかったのか!!! NetBeans7に変えてからちょいちょい起動時に出るようになった 「JVM creation failed」の対応策はこんな感じでよいらしい。 # Options used by NetBeans launcher by default, can be overridden by explicit # comm…

JSFでエラーハンドラーに複数のExceptionがわたることがあるのか?

JSFのExceptionハンドラーはExceptionQueuedEventがIteratorに入って送られてくるのですが、 ExceptionEventが複数存在するような状況ってどんな状況? 色々考えたけど思いつかない。 JDBC初期のリザルトセットが複数戻る場合に備えたVVHと同じようなものな…

autoboxingでNull

autoboxingでnullはNullPointerになる。 当然だけどこのためにチェック書くのはちょっと微妙だな〜

リダイレクトするとFlash消える

edit?faces-redirect=true とすして遷移するとFlash消えるのね。おぼえとこ

ドットを連続するとだめ。

JSFさんのエラーの分かりにくさは異常! com.sun.el.parser.ParseException: Encountered "" at line 1, column 20. Was expecting one of: at com.sun.el.parser.ELParser.generateParseException(ELParser.java:2252) at com.sun.el.parser.ELParser.gener…

JSFで確認ボタン色々

JSFだとFormに行く先が決まっていてSumbitするという感じじゃなくてボタンに行く先のアクションを指定します。 <f:form> ←Formにアクションを設定しない。 <h:input value="#{LoginBean.name}"/> <h:commandButton action="#{LoginBean.entry}"/> ←ボタンやリンクにアクションを設定 </f:form>なのでJavaScriptでForm.Submitどうすんだろと思っていたら <h:form id="LoginForm"> </h:form>

JSFのELとJSP+JSTLのELは別物だよ!

JSF EL: #{facesContext.XXX} JSP+JSTL: ${XXXX.XXX} 全く別物なので,カスタムタグの属性は,JSF ELのみ受け付けるものやJSP ELのみ受け付けるものがあり注意が必要。 「#」は元々JSFの仕様だったんだけど、JSPでも使えるようにして、Unifided ELって名前に…

OracleTechenologyUpdateにいってきた

http://www.oracle.co.jp/events/jpm100819/ 先週の話ですがいってきた。以下メモメモ JavaSE7のポイント Java in the Boxの櫻庭 祐一さん。Java in the Boxにはかなりお世話になったなぁ、、 そしてプレゼンはJavaFxで動いてるというのも面白かった。こうい…

Androidメモ

アンドロイドの開発は非常に楽ですね。 エミュレータの起動が遅いけど一度起動してしまえばデプロイはそのまま出来るし。 ボタンを作ったのに何か動かないと思ったらリスナーを間違えていたりとか。 楽すぎて楽しくなる。 スタックトレース等のログを見るに…

Javaカバレッジ取得はEclEmmaが便利

t_wadaさんがつぶやいていたEclEmmaが結構便利。 レガシーコード改善のデモで使ったテストカバレッジプラグインはこれです URL #tddbc2010-07-11 12:52:44 via webいいところ Junitを実行するのと全く同じ設定で実行できる(Non-invasive) 軽く軽快に実施で…

DBMS_OUTPUTの出力をJavaから取得する。

PLSQLつかってますか? あまり使っていませんが私は結構好きな言語です。 でもこの言語ってテストしにくいんですよね。 最近SQLDeveloperがだいぶ良くなってデバッグとかも快適になりましたけどまだまだ自動テストとかは未整備です。 そのため私はJunitからP…

System.ExitするとFinallyは呼ばれないよ!!

まあ当たり前なんだけど。 まあSystem.Exitなんか使うなって言う話です。

XMLパーサーがUnknownHostExceptionを吐く場合はEntityResolverでローカルのDTDを読み込ませる。

XMLパーサーをスタンドアロンの端末で動かそうとするとDTD定義を取得しに行ってUnknownHostExceptionを吐きよるのでそんな場合はEntityResolverでローカルのDTD定義を読ませるといいと知った。こんな感じでEntityResolverを実装して private class StrutsRes…

迷路の最短ルートを探索する

ネットでちょっと話題になっていたのでいまさらですがやってみた。 人材獲得作戦・4 試験問題ほか: 人生を書き換える者すらいた。できるだけわかりやすく書こうとしたんだけど結局わかりずらくなってしまった。 移動できるポイントを配列に持ってループしな…

SecurityManagerってすごい

SecurityManagerって結構使える子だったんだね。 System.exitをハンドリングしたりできる。 ニッチなニーズだけどこれは便利じゃ。

synchronizedブロックに使用されているStaticObjectが変更される場合、実質synchronizedされていない

synchronizedブロックに使用されている変数が書き換わる場合それはスレッドセーフではありません。(まあ当然です)例えばこれはNG class TargetDate { private static String staticCal = "書き換えられるかな?"; public void set(String s){ staticCal = …

特権計算ってなんだ?

BigDecimal#equalsを眺めていたらよくわからん実装されていた。 /** * Compares this BigDecimal with the specified Object for equality. Unlike * {@link #compareTo compareTo}, this method considers two BigDecimals * equal only if they are equal …

java.math.BigDecimalが一部の計算結果を誤る

IBMから不具合情報が出ていました。 http://www-06.ibm.com/jp/domino01/mkt/cnpages1.nsf/page/default-ywa00002 JDKで計算結果のミスとか結構深刻です。しかしIBMJDKのみの問題なのでSun Java SDKを使用するOS(SolarisやHP-UX)では発生しません。なのでそ…

文字リテラルの謎が解けた。

友人とまさゆき地図でレベル上げしたりS*1A*2のLV99地図での宝箱漁りしたりした帰りに焼肉食いながらJVMとか.Netについて語り合っていたのですがその話の中で以前なやんでいたStringのカノニカライゼーションの謎が解けました。私はinternメソッドについて根…

シリアライズ&デシリアライズってすごいな

複雑な参照の関連とか、循環参照とかもちゃんとデシリアライズできるんだね。 インスタンスのハッシュ値とかもちゃんと管理してるってことなのか? とりあえずすごい。

ソフトウェアインスペクション・ワークショップ 2009に行ってきた

先日書いたコードレビューの道具、使っていますか?の森崎先生主催のhttp://se.aist-nara.ac.jp/events/siw2009.htmlに行ってきました。 日本初のインスペクションに関するセミナーということで60名枠に114人応募。かなり盛況だった。 いろんな会社の人が来…

CORBAの詳細仕様が知りたい

JavaRMIの動作を検証する過程でCORBAのCDR(Common Data Representation)の詳細仕様が知りたくて調べてたんだけどわかんねぇ!! 本家みても詳細仕様みあたらないのはなぜ? HTTPのRFCみたいなものが読みたいのだけどもどれがそれに当たるんだろRMIの直列化…

異なるバージョン間でもシリアライズ・デシリアライズする

一般的にクラスのバージョン(構造)が異なる場合デシリアライズできませんが、以下の様なことをしておくとシリアライズ、デシリアライズが可能です。 private static final long serialVersionUIDを定義 writeObject/readObjectを実装する。 serialVersionU…

Maven1でプロキシの設定

Maven1でProxyを設定したい時は ビルドディレクトリに「build.properties」っていうファイルをつくって maven.proxy.host=プロクシホスト名 maven.proxy.port=プロクシポート番号 を書く。 Antに似てるね。

Java で、ランダムな文字列を生成する方法

ちょっと学んだので整理。 まずJavaにはランダムを提供するクラスとして java.util.Random java.security.SecureRandom の2つがあってRandomクラスは以下のような強度しか持っていない。 Random クラスのインスタンスは、一連の擬似乱数を生成します。クラス…

ディレクトリトラバーサル攻撃への対処

ディレクトリトラバーサル攻撃を検知する場合「../」を検知するとかではダメで以下のIPAのサイトにあるようにちゃんとしたチェックが必要。 http://www.ipa.go.jp/security/awareness/vendor/programming/b07_07.html必要なのは以下の精査。 パス名を正規化…

classがどのjarファイルから読み込まれているかを知るのに便利なデバッグ文

以前先輩に教えてもらったものが今日とても役立ったのでメモ System.out.println(.class.getProtectionDomain().getCodeSource().getLocation());

NetBeamsでWaveDashが文字化けるときはエンコードをWindows-31jにする

SJISの使えるIDEならNetBeansということでNetBeans6.1でソースを書いているのですが、今日不思議なところでWaveDash問題が起こりました。 プロジェクトのプロパティでソースのエンコーディングを指定しておくと大半の文字はSJISでちゃんと入力できるのですが…

リファクタリング

昔作ったサービスを改修するのでリファクタリングなぞした。 改修前のリファクタリングって楽しいよね。 ソース全体の見直しになるしいいアップになる感じがする。

ソケット難しいな

勉強をかねてソケットサーバー&クライアントをjavaとvb2008とCPPの3つの言語で書いてみたんだけどソケットめんどくさいな〜 課題としてはあんま向いてなかったな、、 やっぱjavaが一番楽だった。そしてCPPがいちばんめんどいね でもvb2008が一番やりずらか…

非アクティブな時のキーイベントを拾う

javaで何とかできないか考えていたんだけども無理のようだ。 awtとかもアクティブのときしかイベント拾えないし、擬似的にアクティブにしたりするのも無理だ。取得したいキーが数個の場合ホットキーを使えばいいけど今回は対象が ほぼ全部のキーになるからC+…

JNIってすげぇ!!

JNIでJavaから簡単にネイティブを呼べるのは知っていたんですが、ネイティブからJavaの呼び出しもこんなに簡単なんですね。 まるでリフレクションのようにCからJavaを呼び出せるなんて。 メソッド呼び出し、オブジェクトの生成はもちろんのこと、スーパーク…

ネコビーンファンサイトかわいい!!

これはやばい。日本はじまりすぎ http://nekobean.net/

Session.invalidate

セッションを生成しまくるとこんなエラーが出る。 IllegalStateExceptionは、不正または不適切なときにメソッドが呼び出されたことを示すエクセプションなのでなんか違う気がするがそういうもんらしい。 セッションはちゃんと消しましょうというお話でした。…

GoogleCalenderDataAPIの使い方。その1

GoogleカレンダーAPIを使ってみました。 かなり情報が少なくて参った。すんごく簡単なサンプルはあるんだけどその先がない。ちょこちょこつまづきながらもとりあえず一連の操作はできるようになった♪ これで明日ぐらいにはスケジュールボードとの同期が出来…

HttpURLConnection使用時のHTTPSProxy

なぜかHttpURLConnectionクラスはプロクシを使う時システムプロパティーに指定するか引数にかかねばなりません。これが良く忘れがち。 あと気を付けておかないといけないのがHTTPで使われるProxyとHTTPSで使われるProxyの指定の仕方が異なります。 HTTPは 「…

Continuumの文字化け

Continuumを使って継続ビルドしているのだけれどビルド報告のメール(画面表示も)で日本語が化ける。 「continuum-1.0.3\apps\continuum\build-output-directory」に出ているログは正しく出てるのだけどメールにする際に化けているようだ。 んじゃまあ文字…

bcelを使ってバイトコードを読む

そろそろバイトコードを読むお年頃になったので年初めにBCELを使って少し読んでみました。 BECLってのはジャカルタのバイトコード操作ライブラリ。こんなものも揃っているなんて便利な世の中です。 DOMAIN ERRORまずここから一式をDLしてサンプルを真似しな…

ソースコードの行数カウントツール

ソースコードの行数カウントのツールを探してたら便利なのみつけた。 コロ助 - ステップ数カウンタの詳細情報 : Vector ソフトを探す!コロ助のネーミングの意味が良くわからないが色々な言語に対応していて便利。*1 対応している言語は以下のようにかなり多…

TOMCATプラグインが無反応になった時の対応

プロジェクトを消したり閉じたりいろいろやっているとたまにTOMCATプラグインが無反応になることが有ります。 こんな時はTOMCATプラグインの「JVMの設定」のクラスパスのところの設定を見てみてください。 ここに古いPJのJARなどへの参照が入っているとプラ…

SeasarとJava6

Java6でSeasarを動かそうとすると怒られるのでJava5でやりましょう。もしくはJava5のrt.jarをクラスパスに通して6.0ラインタイムより上に持ってきましょう。