きどたかのブログ

いつか誰かがこのブログからトラブルを解決しますように。

Java

jmockitのDeencapsulationでstatic finalを書き換えできるの?それは使ってるバージョンによる!

今、迷っている。 書き換えられるっぽい過去の経験、書き換えられない最近の経験が混ざっている。 よし、確かめよう。 ダラダラ書く。Deencapsulationのコードをgithubで読んだ。(もちろんコール先も読んだ) https://github.com/jmockit/jmockit1/blob/mas…

GradleのtestLogging

testLoggingの初期値(LogLevel別) 調べたことを表にまとめるとこうだった。 debuginfolifecyclewarnquieterror events STARTED○××××× PASSED○××××× SKIPPED○○×××× FAILED ○○○××× STANDARD_OUT○○×××× STANDARD_ERROR○○×××× displayGranularity222222 maxGra…

独自クラスローダーとJacoco

これまではApache Antで、事前にJacocoのoffline instrumentationを施してからテストをしていたが、さいきんgradleに乗せ代えてon the flyになり、カバレッジが取れてない状況があった。独自クラスローダーで、クラスを再読み込みしているテストケースでうま…

JMockitで拡張クラスローダーに読まれるクラスをモックするのを足掻いた結果

惨敗だ。クラスローダーの委譲関係は、親が先で通常3つのクラスローダーがいる。ブートストラップ・クラスローダー拡張クラスローダーアプリケーション・クラスローダー(システム・クラスローダー)MockUp対象クラスが拡張クラスローダーにいる。クラスを書き…

ファイルの中身全体をJavaの正規表現でマッチングしたいんだが

PatternやMatcherを使う想定。まず、Pattern#compileして、Patternを作る。複数行にしたいならフラグも考える。PatternができたらMatcherを作りたい。そのとき必要なのはCharSequence。そこはファイルの内容全部を渡したいが、Javaヒープ使いたくないな。Fil…

突如として現れたJZOSのRRSクラス

目を疑った。つい数日前まではなかったパッケージとクラスが出現。しかもSince 2.1.0とクラス説明にある。JZOSのバージョンはJava6.0.0のGAのときに2.0.0であり、SR1のタイミングで2.2.1になっているのだが、その間の隠されたバージョンに作られて、Javadoc…

JAXBの予期しない要素(unexpected element)の話

アンマーシャラーで起きるやつの話。 この2カ月くらいで2回見た。 URIはこうなんだけど、localはこうだぜ的なやつ。 予期しない要素(URI:"http://www.example.org/a"、ローカル:"A")です。予期される要素はです これはわざと発生させた。 xsdからJAXBクラス…

いまさらJavaSE6のServiceLoaderを触ってみた

DIコンテナ主流の時代で使われることのないServiceLoader。 CDIでてきてから一層使われることのないServiceLoader。 Javaのごく一部で使われているServiceLoader。 一般的なプログラマが基本的に使う必要性がないServiceLoader。 「サービスを表すインタフェ…

z/OS上のJavaのスレッドに関すること

基本的にJavaスレッドは、TCBに関連付いている。 ただ、javacoreを見る限り、Javaから見えてるNativeスレッドというものは、 USSでいうところのスレッドを指しているようだ。 z/OSには、TCBやSRBみたいなものはあるが、 もともとUnix由来のプロセスやスレッ…

jdmpviewの誤算

金曜日は雪で会社に行かず、家から繋いでダンプを取得。WASのMust Gatherであるハング時のOMVS+RRS+CR+SRな内容を取得。それをjextract。MATは読み込み時に、どのアドレス空間のJVMを解析するかを聞かれるから良い。一方でjdmpviewは厄介。IBM Java6.0.1でco…

シングルクォートとダブルクォート

Javaではよくダブルクォートを使う。 シングルクォートはcharへの代入や、StringBuilderへのcharのappendなどで使う程度だ。 SQLではシングルクォートを使う。 あんまりダブルクォートを使う機会はない。 Oracleで覚えたせいだろうかな。 シェルではダブルク…

CMP Applicationをz/OSのUSS上で動かく方法

ConfigManagerProxy.jarを使って、 WebSphere Message Brokerを管理するのは、 WMBを使ったテストの自動化する上では必要なやり方だろう。 CMPアプリケーションを書く人も少なく、 しかもz/OS上で動かすとか普通しないだろうなぁ。 ははは、役に立たないブロ…

シノニムとdb2sqljcustomize

DB2の接続ユーザ(CONNUSER)と、スキーマ(SCHEMA1)が異なる場合に、 SCHEMA1スキーマからシノニムで別スキーマ(SCHEMA2)のテーブルに飛ばしていると、 sqljのカスタマイズ&バインドに失敗する。 これはcurrentSQLID=SCHEMA1をurlに指定することでしか回避でき…

若手に宿題を出してみたよ IBM JDKの文字コード問題

2年目社員への挑戦状w もともとx-IBM1399の文字化け調査をするために書いた簡易な検査コードを転用して、 すべての利用可能な文字コードに同じことを試したところ、出るわ出るわになった。 いつもなら自分の趣味としてPMRをオープンするんだが、 なんか職場…

x-IBM943とx-IBM943Cの違い

暇つぶしの文字コード調査なり。 x-IBM943は基本的にはJIS X 0208だったかと思う。 x-IBM943Cとは何者か。 プログラムで検証してみたところ、どうやらたった2文字の違いしか無いように思える。 1つ目の文字。 U+000A5(YEN SIGN)とU+0203E(OVERLINE) IBM943も…

x-IBM1399(EBCDIC)のEncoderについての調査

nioのEncoderをベースに調査してみた。 いちおうioの方も試しているけども・・・。 suspicious codepoint encode()========= 15 codepoints U+0000A U+00085 6F codepoints U+0003F U+0303F U+0FFE8 U+0FFE9 U+0FFEA U+0FFEB U+0FFEC U+0FFED U+0FFEE 0E60F1…

JavaでAppDataの場所を取ってくる方法の考察

前にちらりとYahoo!知恵袋を見ていたときのことである。 なんかJNIがどうとか言っていたので「?」と思ったのである。 まあ、その他に、user.homeプロパティを取ってくるのも載っていた。 user.homeだとC:\Users\youruserな感じのが取れる。 まあ、それが取…

SQLJトランスレータのバージョン確認方法

java -cp sqlj.zip sqlj.tools.Sqlj -version java -cp sqlj4.zip sqlj.tools.Sqlj -version なんか周りの人は知らなかったようなので教えておいた。 ついでにネットでも探しにくいのでここに一筆書いておく。 基本的にはdb2jcc.jar/db2jcc4.jarと同じような…

暇つぶしにjava.lang.invokeを使ってみた

ただのJava屋なので、まず使うことはないですが、試しに使ってみました。 import java.lang.invoke.MethodHandle; import java.lang.invoke.MethodHandles; import java.lang.invoke.MethodHandles.Lookup; import java.lang.invoke.MethodType; import java…

ibm.swapLFについて<続々>

ibm.swapLFにかかりきり。 System.outに使われるクラスが、 WAS for z/OSでは普通のプラットフォームとは違うクラスであることが分かった。 USSでWAS付属のjava叩いても、WAS上とは違いがでる。 com.ibm.ws390.SystemOutErrCodepageというプロパティがあるこ…

クラスファイルで見るマルチキャッチ(Multi-Catch)

JavaSE7で使えるMulti-Catch。 とっくの昔に調査済みだけど、 復習もかねてクラスファイル・エディターで見た内容を添えて書いてみます。 public void multiCatch() { try { multiThrow(); } catch (IOException | SQLException | ClassNotFoundException e)…

JZOSでデータセットの動的アロケーション

日本に帰ってきてて、 息抜きもかねて動的アロケーションするコードを書いた。 しかし、失敗。およよ? JZOSで動的アロケーションの方法として考えられるのは2種類ある。 自分の過去の経験だと片方(bpxwyn)がうまくいかなかったので、 com.ibm.jzos.AccessM…

java.lang.IncompatibleClassChangeErrorの原因

たまにIncompatibleClassChangeErrorで私のブログにきてる人がいたみたいなのでその理由を書いてみようと思いました。 このエントリーはまともな原因を昔書かなかったことへの申し訳なさからきています。 たぶんさまざまな原因があるのでしょうが、 2種類ほ…

クラスファイルで見るJavaの文字列連結

「文字列連結をする時は+で繋げるな」ってコーディング規約に書いてあると思う。 それはコンパイラの改善でとっくの昔にStringBuilderに変わってる。 そんなことは少しJavaを知ってる人なら誰でも知っているさ。 今日書くのはそれ意外の部分についての復習…

クラスファイルで見るJavaのAutoBoxing

昔書いたことがあるけど気が向いたのでjavapの結果もそえてみよう。 面倒臭いからClass File Editorの結果で勘弁してほしい。 まあいまさら書くことでもないんだけど。 Integer boxing_i = 1; int unboxing_i = boxing_i; 上記のコードがこんな感じになりま…

ibm.swapLFについて<続>

ibm.swapLFのつづき。 別に進展らしい進展はないのだけれど、 気になったことが増えたので書いておく。 0x15(EBCDICのNL)を0x25(EBCDICのLF)に変えるこのプロパティ。 分散系との互換のためにあるのだと思っていたらどうも違うっぽい? java.nioのおさらいも…

ibm.swapLFについて

ibm.swapLFなるものを調査する機会があった。 正直まだよく分かってない。。。 IV18977: IMPLEMENTING SWAPLF FUNCTIONALITY FOR IBM-037 CODEPAGE このへんの話だ。 ちょっと表を添えておくよ。 EBCDIC ASCII CR 0x0D 0x0D LF 0x25 0x0A NL 0x15 この-Dibm.…

java.math.BigDecimalと浮動小数点数の歴史

わりとどうでも良い歴史の時間です。 まずは浮動小数点の規格についてふれておこう。 IEEE754-1985 = 2進浮動小数点数 IEEE854-1987 = 基数に依存しない浮動小数点数の規格(とは言っても・・・) IEEE754-2008 = IEEE754-1985 + IEEE854-1987 = 主に10進浮…

IBM Support Assistant V5 Beta2 (ISA5 Beta2)使ってみた

まえにISA V5 Beta1を試していたんだが、 わりとさいきんBeta2が出ていたのでインストールしてみた。 IBM Software Support - IBM Support Assistant このサーバーはLiberty Profileだと思う。 というのもwlpフォルダがあるからだ。Beta1でもそうだった。 IS…

気になるWebSphere本

ひとつ目はWebSphere Internalsという洋書。 UKのユーザーグループの人が書いたもので面白そう。 これはV7なので新しいわけではないが、 濃ゆいことが書かれていそうなんだよね。 もうひとつは日本IBMの人が書いてる和書。 何人か知ってる人の名前がある。 …