きどたかのブログ

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

Java

java.math.BigDecimalの最大桁数(理論値)

面倒臭いことを調べることになったJavaプログラマーに捧ぐ すこし時間を割いて最大桁数を計算してみることにしました。 結論からいうと 2793926648桁くらいだと思う。 精度の限界は646443000桁くらいです。 無量大数が128桁です、と補足しておこう。 動かす…

Javaプログラマーのためのjava.math.BigDecimalまとめ

以前書いたメモ的なエントリーを読み返してみて、 簡単なエントリーに書きなおそうと思いたった。 java.math.BigDecimalの構造 「精度(precision)」と「スケール(scale)」と「一般的な桁数」の違い 精度とスケールの違いを正しく把握しているかを試すのに、 …

HelloWorldで学ぶJavaのクラスファイル

暇つぶしにクラスファイルについて語ってみよう。 今回の勉強の元となるソースはこちら。 三分でクッキングできるほど甘くないですよ。 このエントリーを書くのに実際は丸一日もかけて・・・ その情熱を人材育成に使えって話だ。 ソース(便宜上、行番号を添…

java.util.prefsパッケージの基本的な使い方

なかなか使う機会もないパッケージです。 JDK1.4からと、思ったよりも古くからあるようです。 Windowsではレジストリが使われてます。 システムルート HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Prefs ユーザールート HKEY_CURRENT_USER\Software\Java Soft\Pre…

JZOSのWLM API

こういうのが出てたのは知っていたよ。 今日たまたま気になったので少し見てみた。 IBM JZOS Toolkit API これはIBM JDK 6.0.1からのAPI。 IBM: JZOS Java Launcher and Toolkit Overview WAS for z/OS V8.0なら使えるけれども、 このAPIをWAS上で使うことは…

JNIコードとSHRLIBRGNSIZE

昔、JNIコードを書いたのだが、最近になって一点考慮漏れがあることに気付いた。 正直そこまでたいそうな話ではないかもしれない。 .soに、Extended Attributesを付けることを考えてなかった。 extattrというのは、4つのオプションがある a=APF authorized p…

ReflectionとNative OOM

前から不思議に思ってた事が1つ分かった。 IBM Potential native memory use in reflection delegating classloaders - United States リフレクションでMethodごとにsun/reflect/DelegatingClassLoaderや sun/reflect/GeneratedMethodAccessor<N>という具合の</n>…

JIT Compiler Testarossaとjavacore

Testarossaについてはあまり資料が見当たらないのだが、 少しだけ気付いてることはあるので書いてみる。 一年か二年前にも実験してたが、今回気が向いたので、理解を深めてみた。 WAS8.0からJ9のバージョンはR26になり、 どうもJITコンパイラであるTestaross…

ラージ・ページ・サポート(-Xlp)の考察

SRに-Xlpで1MBのFRAMEを取れないって事象を調べている。 前から疑問だった、-Xlp指定してないのにCRが1MBのFRAME取ってる件もついでに調べている。 少し理解が深まった気がする。 まず-verbose:gcでrequestedPageSizeとpageSizeは確認している。 確かに1MBの…

JZOSのZUtilのsubstituteSystemSymbolsについて

使ったことはないけれど、その使い方を書いてみる。 理屈として、IEASYMxxにおけるSYMDEFと同じと思われる。以上、説明終了w &SYSNAME &SYSCLONE &SYSPLEX &SYSR1 &SYSALVL および、SYMDEFで定義したものが取れると思う。 取れるだけじゃなくて、substring…

Javaにおける定数

「定数」という言葉の定義が意外と曖昧ではないだろうかと昔から思っていた。 「定数はstatic finalで宣言する」というマニュアル的な表現に疑問を思ってきた。「static final宣言したものは、定数とは限らない」 static final String A; static{ A = "HOGE"…

Java7のString Switch

家で試してみました。サンプルで書いたコード。 "1a"と"2B"は同一ハッシュコード1616です。 private String test1(String val) { String ret = null; switch (val) { case "1a": ret = "match 1a"; break; case "2B": ret = "match 2B"; break; default: ret…

staticメソッド/変数について思うこと

しばしばこの思いを忘れてしまうのだが、 staticメソッドはあまり使いたくないな、と思うのが本音。 よく共通的な役割を持つメソッドを、superクラスに持たせるか、Utilityのstaticメソッドにするか悩む。 無論、クラスの役割として意味のあるものであればsu…

仕様を網羅することの難しさ

何年前に下書きして放置したのか覚えてないけど、せっかくなのでUPしとく。 書こうと思ったことが思い出せないけど、 「空白文字とは」うんぬんの事は伝えておきたいことだから。 自分が書いた部分のコードを、ある特定のクラスの特定メソッド内に閉じたらば…

検査例外と非検査例外、あとエラー。

なんで正月にこんな事書いてるんだろうか・・・。 長年Javaをやっていても、「検査例外」と「非検査例外」の使い分けにコレと言った答えが出ない。 個人的には「検査例外」を好む。 誰かが作ったプログラムの「非検査例外」をcatchしないといけない状況に陥…

z/OSでJavaを活用するためのJZOSのTips

com.ibm.jzos.CatalogSearchクラスというのがある。当然ながら、カタログに登録されてないものは取ってこれない。 まあカタログに登録しない使い方をすることは稀だろう。前に作ったコードを思い出しながら解説しよう。 CatalogSearch cs = new CatalogSearc…

Enumとswitch文

しばらくぶりの執筆。書きたいことがなかったので、どうでもいいことを書いてみる。Enumのswitch文はどのように実現されているかという話です。元々switch文は、通常tableswitchオペコードが使用されます。 えーと、lookupswitchが使われることもあるんだけ…

-1の-1乗が1になってるよ

珍現象。 ふむ、バグという名前の地雷を踏んだようだ。 たぶんバグ、きっとバグ。 なんでこんなバグが残ってるんだ。 おいらの自作Java累乗関数でも計算できるのに。 -1の-1乗は1と誤り。 -2の-1乗は-0.5と正しい。 公式から予想するに、の処理が怪しい。 こ…

34桁目のせめぎあい

なかなか34桁目まで合わすというのは苦労が伴う。 とりあえずMathContextに69桁くらい設定したら、なんとか計算出来たっぽい。 平方根の計算で検算しながらやってみた。 9.99999999999999999999999999999999999997E6144の平方根の難易度が高い。 検算(2乗)す…

累乗計算が完成した

exp関数も出来たし、logn関数も出来たので、power関数も出来た。 性能もなかなか良いよ。まさかの4ミリ秒台が出てきた。 doubleなら50ナノ秒あたりだろうけど。 public static BigDecimal power(BigDecimal x, BigDecimal y){ return exp(y.multiply(logn(x)…

Natural Logarithm

今日はNatural Logarithmを実装した。 これもWikipediaを見ての実装。 実は途中までしか見てなかったので、 まだ改良の余地があるみたい。 また明日直そう。 x ** y = e ** (y * ln(x)) = 10 ** (y * ln(x) / ln(10)) Natural Logarithmより前に編み出した独…

累乗計算のアルゴリズム

昨日ひらめいたー。 javaでついに作れたー。 けっこう極めてきた。 まずWikipediaにもあるアルゴリズムでnが整数のn乗根を実装した。 これで「小数の1/n乗(小数のn乗根)」が出来る。 ここがスタートライン。 XのY乗におけるYを1/nと考えるのが上記のn乗根だ…

JNIって難しい

さいきんこっちの日記を全然書いてなかった。 z/OSでも勉強するかーってところ。 その前にC/C++のコンパイラがあるっていうので、 それが発覚した日からものづくりに取り組んでるわけです。 初めてのC/C++。 しかもz/OS上で。 そんでもって初めてのJNI。 ま…

念願のリモートへのデプロイのやり方を把握した(wsInstallApp)

WebSphereにはいくつかAntタスクが用意されてる。 今回は、com.ibm.websphere.ant.tasks.InstallApplicationの使い方の注意点を書いてみる。 これはJavaDoc通りならば、Antタスク名「wsInstllApp」として使います。 Rational Application Developerとかなら…

リスナーポートとアクティベーションスペックの切り替えに失敗(バイディングのマージにご用心)

アプリケーションを「更新」で置き換えると発生するのだと思う。 ログメッセージには、ibm-ejb-jar-bnd.xmlのの箇所について変だと言ってくる。 resource-refだとかresource-env-refだとか3種類くらいのうちからなんか書けという感じ。 僕は確かにejb-jar.xm…

SQLJの壁を1つ乗り越えた(sqlj.runtime.Scrollable)

sqlj.runtime.Scrollableなイテレータ宣言の仕方。 DB2のマニュアルを信じていたのに、マニュアルではない書き方が必要。 sqljエディターの右クリックのコンテキストメニューより「SQLJアシスト」を使う。 まずこの時点でRational Appilcation Developerでも…

WebSphere7.0.0.7もしくは7.0.0.9にするために周りを説得する材料を用意していくか

僕に解決出来ていない問題が1つある。(もっとあるだろうけど) アプリケーションの再始動等のタイミング(と思われる)に、 メッセージ・エンドポイントがどうのこうのとMDBリスナーに関する活動化の部分で例外が起きることがある。 この事象は一体なん…

ZFileExceptionがNoClassDefFoundError

なんか知らんけど、これまで動いてたと思っていたものが、 サーバー上で全く動いた実績がなかったことが判明した。 半年くらい動いてなかったことに気付いてないことを恥としたい。 (だから言ってるだろう、コメントアウトでやり過ごすなって・・・) NoCla…

SQLJで壁にぶつかった

やりたいこと: sqlj.runtime.Scrollableを使って、ResultSetを作って、absoluteメソッドを叩きたい。 現状: rs.absolute(int)を叩くと例外が出る。 色々やっても全然解決しない。 ログはまずこんな感じで下知を飛ばした。 「TYPE_SCROLL_INSENSITIVEかTYPE…

コンパイラが怪しい

プロジェクト参照では動き、 Jar参照だとClassCastException。 インスタンス変数にList そこにセッターインジェクション。 public void setList(List list) インジェクションはされてるのだが、 リストの中身はHogeではない。 これ自体は今回問題にしてない…