Java

OpenJDK 9をMac OS X (Yosemite) でビルドする

動作確認した環境は、Mac OS X 10.10.1 (Yosemite)です。 前提事項 JDK9のビルドにはJDK8が必要です(ヨーグルトみたいですね)。これをBootstrupJDKと呼びます。そのため、JDK9をビルドする環境では、Javaを実行したらJDK8が動くようにしておきます。そうし…

「第21回オフラインリアルタイムどう書く」のへなちょこ解答(Java)

金曜の夜にどう書くへ行ってきました。 オフラインリアルタイムどう書くとは 皆で共通のお題を好きなプログラミング言語で解いて、結果を見せ合う会です。 今回のお題は、「レッスンは何曜日?」です。 問題: http://d.hatena.ne.jp/torazuka/20140509/yhpg …

OOSC 3章 演習問題E3.1 Javaはモジュール性の基準と原則をどの程度満たすか

OOSC読書つづき。昨日は3章まで読んで、演習問題E3.1(p.82)について会話したので、そのメモを書きます。その節はありがとうございます m(_ _)m >身近な方 E3.1 プログラミング言語のモジュール性どのプログラミング言語でもいいから良く知っている言語の…

JavaのDate and Time APIでサマータイムを確認する

今日は3月の最終日曜日です。ヨーロッパではサマータイム(daylight saving time)がはじまりましたね。Java 8の新しいDate and Time APIの使い方を少し確認するために、タイムゾーンが異なる日付データの変換を、サマータイムという題材で試してみました。 …

「祝☆Java 8 Launch」イベントへ行ってきました

月曜まで4連休でのんびりしていて書くのが遅くなりましたが、金曜日にJJUGのイベントに行ってきました。会場は青山のオラクルさんでした。Java8をさっそく使っていきたいと思います。今の仕事はC#なので、ちょっとした個人的な作業や、オフラインリアルタイ…

リング状の数列を辿る

第19回どう書くの解答に関連して、リング状の数列を辿るイディオムが知りたいと言っていたところ、finalfusionさんから教えていただいたのでメモします。ありがとうございます! リングを辿るコード Before リングの最小値と最大値を行き来できず、ハードコー…

「第17回オフラインリアルタイムどう書く」参考問題のへなちょこ解答(Java)

久しぶりにイベント(http://atnd.org/events/46348)開催前に参考問題を解けました。今回は、「回文基数」です! 問題: http://nabetani.sakura.ne.jp/hena/ord17scheherazade/ たとえば101, 234432のように、右から読んでも左から読んでも同じ数字の並びを…

JJUG CCC 2013 Fall「JVMコードリーディング入門」資料公開

土曜にJJUG CCC 2013 Fall(http://www.java-users.jp/?page_id=695)へ行ってきました。事前にお知らせするのを忘れていましたが、17:15〜18:05のセッションでJVMのソースコードリーディングについてお話ししましたので、発表資料を公開します。 R5-5 JVMコ…

Javaの弱参照とStringをkeyに持つWeakHashMap

Javaの弱参照について復習していたら、いつものようにひしだまさんのページに行き着きました。「使用失敗例」として紹介されている例が分かりやすかったです。少しだけコード片を書き足して、動きを確認しました。 参考 Java弱参照メモ(Hishidama's Java Wea…

インデックス作成とランキング (c.f.『世界でもっとも強力な9のアルゴリズム』)

書籍『世界でもっとも強力な9のアルゴリズム』の1つ目のアルゴリズムの章をチラ見しました。解説に使われた例が、どう書くの問題みたいだなぁと思ったので、試しにJavaで書いてみました。世界でもっとも強力な9のアルゴリズム作者: ジョン・マコーミック,長…

Enumを使って処理を分ける(c.f.第3回オフラインリアルタイムどう書くの参考問題)

第9回のどう書くの問題のおかげで気づきましたが、EnumのstaticメソッドのvalueOfはベンリですね!文字を与えてEnumの値を取ってくるだけの基本的なメソッドです。なにをいまさらという感じですが……。このメソッドを使えば、入力文字(char)による処理の振…

メモ: 誤った型の要素の代入で発生するArrayStoreException

先日のどう書くで、「Javaの配列に対する代入のバグ的挙動」というのが話題に出ました。何の話か気になったので調べたところ、ArrayStoreExceptionのことのようですね。こういうやつです。 import org.junit.Test; class Mother { } class Child extends Mot…

「第7回 オフラインリアルタイムどう書く」へなちょこ解答(Java)

昨日は「第7回 オフラインリアルタイムどう書く」へ行ってきました。 オフラインリアルタイムどう書くとは 鍋谷さんが出してくださるお題を、参加者が好きなプログラミング言語で解いて楽しむ会です。 今回は、「のんびり座りたい」です! 問題と皆さんの解…

疑問: Javaのchar配列から文字を検索してインデックスを返す

一般的なイディオムが分からず、悩んでいます。いくつか方法を挙げます。 方法1: (ソートしても問題なければ)binarySearchを使う char[] chars = new char[]{'a', 'b', 'c', 'd', 'e'}; char target = 'c'; Arrays.sort(chars); int index = Arrays.binary…

JavaクラスファイルのCONSTANT_Long_infoがコンスタントプールのエントリを2つ使う件

JavaのコンスタントプールのLong_info構造体について、わからんーとTwitterで言っていたところ、finalfusionさんに教えてもらって疑問が解けたので、メモしておきます。 クラスファイルのおさらい Javaクラスファイルのバイナリの仕様は、次のようになってい…

「第5回 オフラインリアルタイムどう書く」へなちょこ解答(Java)

ここ最近、やる気がモガの森に家出していますが、先週金曜は「第5回 オフラインリアルタイムどう書く」へ行ってきました。今回は、大貧民です! 問題: http://nabetani.sakura.ne.jp/hena/ord5dahimi/ 有難いことに、初心者向けの部分問題が用意されていまし…

コールスタックをassertする(※ただしクラスローダを越えられない)

先日、メソッドの事前条件/事後条件の話をしていたところ、うちのししょーが「そもそもJavaのコントラクトの表現があまりに貧弱」と言っていました。たとえば、 引数の値の範囲チェックができない メソッドの呼び出し順を保証してくれない といった話です。…

覚書き: nullチェックが不要なコードを書く

Javaを使っているくせにあちこちでnullチェックをしていたところ、ヲイコラといわれてしまったのでメモです。(ご指摘ありがとうございます)nullが入ってくるようなコードを書かない、が大原則だそうです。理由は、安全のため。 nullで初期化しない null以…

メモ: テスト対象メソッドの実行後、テストメソッドは即座に終了される

昨日の続き。というより、訂正です。 メモ: JUnitのexpectedフィールドとRuleアノテーションで例外のテスト http://d.hatena.ne.jp/torazuka/20121002/junit JUnitのRuleアノテーションの使い方を知って喜んでいましたが、1つのテストメソッドの中では、1回…

メモ: JUnitのexpectedフィールドとRuleアノテーションで例外のテスト

次の記事を読んで、初めて知ったのでメモ。 Testing Custom Exceptions w/ JUnit's ExpectedException and @Rule http://www.ensor.cc/2012/09/testing-custom-exceptions-w-junits.html このようなテスト対象のコードがあるとします。 import java.util.Arr…

RubyのinjectみたいなメソッドをJavaでどう書く

こうかな。苦しいな。誰か教えてくださり。総称型を使えばもうちょいそれらしく(?)なるんかも。 import static org.junit.Assert.assertEquals; import org.junit.Test; public class Inject { interface Proc { int execute(final int n, final int m); …

四則演算をするスタックマシン(更新版)

先日書いたスタックマシンちゃんを少し修正しました。 (前回の日記)四則演算をするスタックマシン http://d.hatena.ne.jp/torazuka/20120829/stackmachine ちょっとした改良をするだけのつもりでしたが、恥ずかしいミスを見つけたので、メモを残すことにし…

JJUG Night Seminarへ行ってきました

先週の水曜日、「JJUG Night Seminar -Java VM & LT & 納涼会-」へ行ってきました。当日は、ほろ酔いで帰ってきて、スタックマシンを書いて遊んだら満足して寝てしまったので、改めてセッションのメモと感想を書いておきます。# パソコンを忘れて行ったこと…

四則演算をするスタックマシン

さくらばさんのマカロンスタックの写真を見ていて、ふと書きたくなったので。逆ポーランド記法を入力として四則演算を行い、結果を返します。(追記: 2012/9/6) この記事のコードには、誤りが2箇所あります(1:除算のオペランドが逆、2:テストデータは"14+3…

jarファイルのバイナリの読み方

「夏休みバイナリ入門 2012 第2日目」に参加してきました。第1日目に引き続き、主催の七誌さん、スタッフの皆さん、どうもありがとうございました! (第1日目)Javaのクラスファイルの読み方 http://d.hatena.ne.jp/torazuka/20120820/cafebabe やったこと …

Javaのクラスファイルの読み方

日曜に、「夏休みバイナリ入門 2012 第1日目」に参加してきました。色々と初心者丸出しな質問をしましたが、詳しい方が丁寧に教えてくださったおかげで、疑問を解決しながら進むことができました。ありがとうございます。備忘のために、学習したことをメモし…

解決編: logbackで同一レベルの複数ログを異なる出力先に出す

前回の「疑問メモ: logbackで同一レベルの複数ログを異なる出力先に出したい」の解決編、「同一レベルのログを用途に応じて出し分ける」話の続きです。師匠から参考になる情報をいただき、無事実現できました。ありがとうございます。JaninoEventEvaluator …

疑問メモ: logbackで同一レベルの複数ログを異なる出力先に出したい

(追記) この記事の解決編はこちら。http://d.hatena.ne.jp/torazuka/20120619/logbacklogback(http://logback.qos.ch/)でやりたいことができなくて困っているので、ちょっと整理します。logbackは、Javaのロギングライブラリです。次のログレベルがあり…

JJUG Cross Community Conference 2012 Springへ行ってきました

休暇を取って、JJUGのクロスコミュニティカンファレンスへ行ってきました。いろいろ聴いて、印象に残ったのは3つのセッションです。 オラクルの中の人によるJCPのお話 Javaの標準化を誰がどうやって実施しているかという解説でした。初めて知ったことが多か…

疑問メモ: toArray(T[] t)はなぜ配列末尾にnullをパディングするのか

JavaのCollection周りのクラスを読み直していて感じたことのメモというか雑談です。Javaのjava.util.Collectionインタフェースには、toArrayというメソッドがあります。toArrayメソッドは、コレクションの実装クラスのインスタンスを、配列に変換して返しま…