HHeLiBeXの日記 正道編

日々の記憶の記録とメモ‥

Java

シフト演算とMath.pow(2, n)と(+Math.pow(2, n)の怪)

自分が時々やらかしてしまうのでメモ。 環境は、CentOS 7(VM)上のOpenJDK 1.8.0_111。 2のべき乗(整数値)が欲しい場合はシフト演算 2のべき乗(整数値)が欲しいときに時々やらかしてしまうのが、以下のようなコードを書いてしまうこと。 for (int i = 0; i < …

rangeによるrangeの違い

Pythonのコードをちゃんと書いたことはないのだけど、ある理由でPythonのコードを読んでいて、ふと気になって調べたメモ。 結論から言うと、rangeで範囲を指定したときに列挙される値が、プログラム言語や、同じ言語でも書き方によって違うのだな、と。 実行…

QueueやStackとして使うなら‥LinkedList vs ArrayDeque

頭がJava 1.4で止まっているプログラマの呟き(謎)‥ LinkedListをQueueとして使ったあるプログラム(何)を書いていて、QueueやStackとして使うならLinkedListよりArrayDequeがお勧めとアドバイスをもらったので、軽く検証してみた。 事前準備 ソースコードは以…

参照はあいまい

いわゆるJavaの初心者がどつぼにはまりがちな、「参照はあいまい」と言われて戸惑うケース。(NGコード) package t2014_1008_01; import java.util.*; import java.sql.*; public class Main { public static void main(String[] args) { Date now = new Date…

SQLExceptionから取得できるSQLSTATEとエラーコード

ふとjava.sql.SQLExceptionのJavaDocを見ていたら、SQLSTATEとベンダー固有のエラーコードを取得できることに(いまさら)気づいた。 ベンダー固有のエラーコードはログに吐き出すくらいしか用途を思いつかないが、SQLSTATEはある程度規格化されているはずなの…

JavaプログラムからMySQLに4バイトのUTF-8文字を放り込んでみる

前の記事で、PHPプログラムからMySQLに4バイトのUTF-8文字を放り込んでみた。 MySQLで4バイトのUTF-8文字を扱ってみる - HHeLiBeXの日記 正道編 ついでなので、Javaプログラムの場合はどうなるのかを調べてみた。 例のごとく、「𠮟」と書かれた部分は「叱」…

短縮URLの展開処理を各言語で書いてみた

別にぜんぜんなんてことはないのだけど、なんとなく(謎)。 展開処理とは言っても、リクエストを出してLocationヘッダの内容を取っているだけだけど。 Java java.net.HttpURLConnectionクラスを使用して、こんな感じで。 import java.io.IOException; import …

AutoCommitの動作を誤解していた訳

以下の続き。 SET AUTOCOMMIT=0後の動作を誤解していたらしいの巻 - HHeLiBeXの日記 正道編 そもそもJDBCでは、トランザクション処理を書くときに、次のいずれかの書き方をすることになる: // TODO エラー処理 Connection connection = DriverManager.getCo…

イテレーションの最中に要素を削除する

Javaで次のようなプログラム: Map<String, String> map = new HashMap<String, String>(); map.put("a", "A"); map.put("b", "B"); map.put("c", "C"); for (String key : map.keySet()) { if (key.equals("b")) { map.remove(key); } } を書くと、java.util.ConcurrentModificationException</string,></string,>…

FrontBaseを入れてみた

何がきっかけだったかすっかり忘れてしまったのだが(と言いかけて、PHPのオンラインドキュメントを眺めていたら存在を知ったということを思い出したらしい)、FrontBaseというRDBMSの存在を知ったので、実際に導入してみた。その際の手順メモ。 FrontBase イ…

列名を持たない列の列名(意味不明)

なんと言えばいいのか分からなかったので意味不明なタイトルになったが、要は次のようなクエリを実行したときの結果表の列名はどうなるのか、ということ。 SELECT COUNT(*) FROM hoge ということで、一通り調べてみた。 次のテーブルを前提とする。 CREATE T…

ISBNをチェックするユーティリティ

唐突に、いつかどこかで役に立つかなぁ、と思い、持てる力(何)をいろいろ出してユーティリティを書いてみた。 アルゴリズムはWikipedia(ISBN - Wikipedia)を参考にした。 Java版 多少のブランクはあってもやはり私のプライマリ言語ということでまず最初に。 …

大昔に修正されたタイムゾーン関連のバグ

ある人(誰)から、Windows Server 2008でタイムゾーン関連のバグがあるという話を聞いた。発生するのが「J2SDK 1.4.2_14 b01以前」ということでえらい昔の話なのだが、ニッチな問題が好きな自分としては実際に動かして確認しないわけにはいかない(謎)というこ…

「f(n+1)=f(n)の各桁の二乗の和」という数列

某番組で次のような問題が出されていた。 次の○に入る数字は何か? 4→16→37→58→89→145→42→○→4 で、求め方はタイトルのとおりなのだが、任意の数字に対して数列を作ってみようと思い立って、次のようなプログラムを作成。 import java.util.ArrayList; import…

JavaFXで遊んでみる

次の記事を何気なく眺めていて、唐突にJavaFXに触れてみようと思ったらしい。 Java技術最前線 - 「詳説JavaFX」第1回 JavaFXとは:ITpro Java技術最前線 - 「詳説JavaFX」第2回 JavaFXでHello, World!:ITpro この記事ではJavaFX 1.3+NetBeans 6.9betaを使…

NetBeansを使ってJMSで遊んでみる

今からでも遅くないらしいので、JMS(Java Message Service)で遊んでみた。 今からでも遅くない JMSを学ぼう!(前編) 非同期通信の世界へようこそ (1/6):CodeZine 今回は、以下を動かしてみた。 この記事にサンプルが載っている「Point-to-Pointメッセージ…

NetBeans 6.7.1 for WindowsでのJDKの切り替え

とある事情で、NetBeansが使用するJDKを切り替えたかったのだが、Eclipseほど簡単にはいかないようだったので全部探した。 また探すのはいやなので、編集したファイルをメモ。 環境 NetBeans 6.7.1 OS: Windows Vista Business SP1 編集したファイル E:\Prog…

ビット演算子

なぜか唐突に、ビット演算子で「0xaaaaaaaa」と「0x2aaaaaaa」をシフトしてみようと思ったらしい。 public class Main { public static void main(String[] args) { int[] nums = { 0xaaaaaaaa, 0x2aaaaaaa, }; for (int n : nums) { System.out.printf("===…

BufferedReaderとLineNumberReader

BufferedReader#readLine() で実装されている、入力を行に分割するアルゴリズムを再利用する手立てはないものか、と調べていたら、LineNumberReader#read() が使えそうということに。 Read a single character. Line terminators are compressed into single…

Simpleライブラリの検証(6)

ざっくりと試してみたSimpleライブラリ。 Simpleライブラリを試してみる - HHeLiBeXの日記 正道編 いろいろと気になる点もあったので、ざくっと検証してみる。の続き。 全プリミティブ型とその配列をシリアライズしてみる いまさらだが、まぁ、基本というこ…

改行コードの出力

改行コードがプラットフォームごとに異なるというのは常識だが、ついつい次のようなプログラムを書いてしまう。 System.out.printf("%5d %5d\n", 12, 345); さすがに、print、printlnを使う場合はエスケープシーケンス "\n" を直接ソースコード上に書くこと…

Simpleライブラリの検証(5)

ざっくりと試してみたSimpleライブラリ。 Simpleライブラリを試してみる - HHeLiBeXの日記 正道編 いろいろと気になる点もあったので、ざくっと検証してみる。の続き。 値の解析エラーの扱い たとえば、POJOではshort型として定義されているフィールドに対応…

java.lang.reflect.AccessibleObject#setAccessible()の影響範囲

自分は、設定を変更したら元に戻さないときがすまない性分なので、何気なく次のようなコードを書いていた。 private static void printPrivateFieldValue(Object obj, String name) throws Exception { Field field = obj.getClass().getDeclaredField(name)…

正規表現におけるメタ文字をエスケープするメソッド

今まで、正規表現のメタ文字をエスケープするのに、バックスラッシュとかをいっぱい書いていたのだが、簡単にエスケープする記法があることに最近気づいた。さらにそのような文字列を生成するためのメソッドがあることにも気づいた。 パターン(置換前)文字列…

Java Puzzlers 罠、落とし穴、コーナーケース

Java Puzzlers 罠、落とし穴、コーナーケース作者: ジョシュア・ブロック,ニール・ガフター,柴田芳樹出版社/メーカー: ピアソン・エデュケーション発売日: 2005/11/14メディア: 大型本購入: 3人 クリック: 92回この商品を含むブログ (57件) を見るふと目にし…

無駄にCPUを使いたい処理(謎)

次のようなコードに遭遇したとき、一瞬、見なかったことにしようかと思った。 private static String buildString(List codes) { String resStr = ""; // 何か別の処理 for (int j = 0; j < codes.size(); ++j) { if (Integer.parseInt((String) codes.get(j…

JSPで誤ったコメントアウト

実害がなかったので「未遂」ではあるのだが‥ 問題となったのは次のコード。 <%@ page contentType="text/html" pageEncoding="UTF-8" %><% response.setHeader("pragma","no-cache"); response.setHeader("Cache-Control","no-cache"); %>

Simpleライブラリの検証(4)

ざっくりと試してみたSimpleライブラリ。 Simpleライブラリを試してみる - HHeLiBeXの日記 正道編 いろいろと気になる点もあったので、ざくっと検証してみる。の続き。 Elementアノテーションのdata要素 JavaDocを見たときに気づいたElementアノテーションの…

Simpleライブラリの検証(3)

ざっくりと試してみたSimpleライブラリ。 Simpleライブラリを試してみる - HHeLiBeXの日記 正道編 いろいろと気になる点もあったので、ざくっと検証してみる。の続き。 Javaフィールドの値がnullの場合の扱い 当然のことながら、すべてのJavaフィールドの値…

Webアプリケーション開発の際の注意事項(4)

これまでの記事。 Webアプリケーション開発の際の注意事項 - HHeLiBeXの日記 正道編 Webアプリケーション開発の際の注意事項(2) - HHeLiBeXの日記 正道編 Webアプリケーション開発の際の注意事項(3) - HHeLiBeXの日記 正道編 今度はコードを書くときの注意で…