Javaのバージョン別、テキストファイルを一括で読み込む方法まとめ

前回の記事(Javaのバージョン別、1行ずつファイルを読む方法まとめ)への感想で、このような話がありました。 丸々読み込む方法のまとめもお願いします!— ユースケ (山本裕介) (@yusuke) May 3, 2021 というわけで、今回はテキストファイルを一括で読み込…

Javaのバージョン別、1行ずつファイルを読む方法まとめ

Java でファイルを読み込む処理は、バージョンが上がるごとにどんどん簡単に書けるようになっていきました。 今回は、どれだけ簡単になっていったかを Java のバージョンごとにまとめて説明します。 なお、ここでは以下の処理を行うコードをもとにしています…

JDK 1.0 (Java 1.0.2) を入手したので、GitHub に置いておきました。

JDK 1.0 (Java 1.0.2) を入手したので、GitHub に置いておきました。 https://github.com/YujiSoftware/JDK1.0 なんと、Windows 10 上でも動きます。 あと、src.zip も展開して置いた ので、GitHub 上で読めます。 Java 考古学者のみなさま、ぜひご活用くだ…

jq の入っていない環境で、JSON をフォーマットする方法

JSON をフォーマットしたいけど、jq が入っていない!ということがよくあります。 そういう時は、Ruby を使いましょう! ruby -rjson -e 'puts JSON.pretty_generate(JSON.parse(STDIN.read))' 実行例 こんな風に表示されます! [qiita@example ~]$ echo '{"…

M5StickC と MH-Z19B を使って、二酸化炭素濃度計を作りました

ネットの情報をもとに、M5StickC とMH-Z19B (CO2センサー)を使って二酸化炭素濃度計を作りました。 作ったといっても、M5StickC と MH-Z19B をつないで、さくっとプログラミングしただけ。簡単でした。 一年ぐらい運用していますが、なかなか便利です。 グ…

Java の + 演算子による文字列結合は、どのように処理されているのか

Java 9 以降 JEP 280: Indify String Concatenation に基づき、 + 演算子による文字列結合は以下のようにコンパイルされるように変わりました。 invokedynamic #7, 0 // InvokeDynamic #0:makeConcatWithConstants:(Ljava/lang/Object;I)Ljava/lang/String; …

JJUG CCC 2020 Fall ( #jjug_ccc ) - セッション資料の一覧

JJUG CCC 2020 Fall に参加しました! 今回は、初のオンライン開催ということで、いつもと違って自宅からの視聴。 でも、twitter のハッシュタグを見るとみんなでわいわいやってる感は変わらず、質疑応答もありでいつもと変わらず楽しめました。 それに加え…

ド・モルガンの法則は大事!大事!超大事!

「ド・モルガンの法則」ってなにそれ?おいしいの?って聞かれたことがあります。 おいしくはないのですが、プログラムを書く上では超大事!です。 ここでは、プログラムを読み書きするうえでド・モルガンの法則をどのように使えばいいかを紹介します。 ド・…

8進数リテラルはプログラミング言語ごとに異なる

8進数を表記する文法は、主に以下の3つがあります。 (二番目と三番目は分かりにくいですが ゼロ オー1 です) プリフィックスとして 0 を付与する (例: 0123) プリフィックスとして 0o を付与する (例: 0o123) プリフィックスとして 0O を付与する (例: 0O1…

SELECT文で本番環境を落としたお話

本番環境でやらかしちゃった人 Advent Calendarで、このパターンのやらかしはなかったのでキーボードを叩くことにしました。 番外編のつもりでお楽しみください。 この記事が、新たな障害発生を防ぐことにつながれば幸いです。 何をやったのか ある日、ちょ…

Object#clone() メソッドからスローされる CloneNotSupportedException はどのようにハンドリングするべきか

Java の Object#Clone() メソッドは throws CloneNotSupportedException が宣言されています。 protected native Object clone() throws CloneNotSupportedException; しかし、クラスが Cloneable インタフェースを実装していれば CloneNotSupportedExceptio…

Ansible で Mackerel を操作するプラグインを作りました!

Ansible で Mackerel の設定を取得したり変更したりできたらなーと思う時があります。 例えば… アラートが鳴ってしまうのを防ぐために、Ansible 実行中はホストのステータスを standby にしたい 特定のロールが設定されているホストの場合だけ、ファイルをコ…

JJUG CCC 2019 Fall ( #jjug_ccc ) - セッション資料の一覧

JJUG CCC 2019 Fall に行ってきました! 最近 Java のシステムをまたいじるようになって*1、 Java 欲が高まってきていたところにいろんなセッションを聞けてすごいテンション上がりました。 特に、「開け!ドメイン駆動設計の扉」がちょうどこれから一部のシ…

Stack Overflow のタグから、どのフレームワークについてよく質問されているのかプログラミング言語ごとに分析してみた

Stack Overflow の質問には、その内容を示すタグが付与されています。 このタグ、よく見ると「言語」+ 「フレームワークやライブラリの名称」という構成が多いです。 つまり、これを分析すれば、言語ごとに質問の多い(つまり、よく使われている、人気がある…

Java のバージョンを上げるだけで、プログラムは速くなるのか

よく Java の実行バージョンを上げるだけで速くなるという話を聞きます。 でも、本当にそうなのでしょうか。また、本当だとしたらどれぐらい速くなるのでしょうか。 そこで、簡単なプログラムで実験してみました。 実験概要 実験用に、数独を解く Java のプ…

strptime は環境によって挙動が違う

PHP には、日付文字列をパースするための strptime という関数があります。 これを使って、Sun, 19 Apr 2015 11:43:30 GMT という文字列を %a, %d %b %Y %H:%M:%S %Z というフォーマットでパースした結果、以下の通り環境によって異なる結果になりました。 s…

パラメータ設定が不適切だと、ruby-oci8 より go-oci8 の方が遅くなることもあるので要注意

こんな感じの単純な SQL を Ruby と Go それぞれで流したら、なぜか Go の方が遅くなりました。 特に text が長いと遅い…。 SELECT id , text FROM example 使っているライブラリは、ruby-oci8, go-oci8。 原因 原因は、それぞれのライブラリのパラメータの…

JJUG CCC 2019 Spring ( #jjug_ccc ) - セッション資料の一覧

JJUG CCC 2019 Spring に行ってきました! 今回はレガシーコード改善のヒントになるネタがないかなーといろいろ話を聞いてきました。弊社の Java、古くなっているものがいくつかあって、それを少しでも楽にしたいというのがモチベーションです。 毎回思うの…

JJUG CCC 2019 Spring のスマートフォン用タイムテーブルを作りました

5月18日(土) に開催される JJUG CCC 2019 Spring 、そのスマートフォン用タイムテーブル(セッション一覧)が欲しかったので、作りました! JJUG CCC 2019 Spring タイムテーブル 公式ページのビルドして圧縮された Vue ファイルを手作業でハックして作った…

JavaScript の String.prototype.split() の第二引数 limit は、ほかの言語と意味が違う

JavaScript の split メソッドを使ったら「あれ?」となったのでメモ。 一般的な spilt メソッド Java, C#, Ruby, Perl の split メソッドは、第二引数に limit を指定できます。 これを指定すると分割回数が制限されます。 (下記の例だと、文字列を2つに分…

意地でも IE を使わずに Firefox をダウンロードする方法

新しい Windows 7 の PC を使おうとしたら Internet Explorer (IE) しか入っていませんでした。 しかし、私は IE が嫌いなので、Firefox を使いたいです。 そこで、Firefox ダウンロードしようと思い…、そこで気づきました。 Windows 7 で Firefox を使おう…

JJUG CCC 2018 Fall( #jjug_ccc ) - セッション資料の一覧

JJUG CCC 2018 Fall に行ってきました!今回、興味のあるディープな JVM の話とかアーキテクチャ設計をたくさん聞けて、個人的にはとてもテンションが上がりました! 「Deep dive into instanceof」のように、HotSpot VM の深い話を知れたり。仕事で役に立つ…

Arrays.asList(T... a) は、なぜ add や remove ができないのか?

Arrays.asList(T... a) というメソッドについてググると、「このメソッドで返ってくる List は、add や remove ができないので注意しましょう」ということが良く書かれています。 でも、「なぜできないのか?」という点については書かれていないことが多いの…

ジオシティーズのデータを保存する方法

Web

2019年3月末で、ジオシティーズが閉鎖されることが決まりました。 これはつまり、過去のいろんな歴史的サイトも消えてしまうということ。 そうなる前に、ジオシティーズのデータを保存して置く方法をまとめました。 サイト全体をローカルに保存する まず、Wg…

Java のリリース日とEOLのまとめ

Oracle JDK の場合 図にまとめてみました。 こうしてみると、サポート期間5~6年って結構長いなーと思います。 First Release Date Final Public Release Date Final Public Release Version Java 1.3 2000年5月8日 2006年12月 Java 1.3.1 Update 20 Java 1.…

JJUG CCC 2018 Spring ( #jjug_ccc ) - セッション資料の一覧

JJUG CCC 2018 Spring に行ってきました! 実は、仕事では最近 Java から離れているのですが*1、それでも CCC (クロスコミュニティカンファレンス)と銘打ってるだけあってやっぱり参考になる話がいろいろありました。 特に、同じ業界の方も登壇されていて…

トップレベルドメインっていくつあるの?

.com や .jp などのトップレベルドメイン(ドメイン名の一番右側の部分)っていくつあるのか気になったので調べてみました。 トップレベルドメインのリスト IANA (Internet Assigned Numbers Authority) のページに載っていました。 IANA — Root Zone Databa…

Java 10 で変わる Java のバージョン表記

Java は、バージョン 10 以降タイムベースリリースに変わりました。 それに合わせて、バージョン表記がまた変わったので概要をまとめました。*1 詳細は JEP 322: Time-Based Release Versioning を参照。 バージョン番号 $FEATURE.$INTERIM.$UPDATE.$PATCH …

Firefox で、アクティブなタブの幅を広くする方法

タブをいくつも開いていると幅が狭くなってしまい、タブのタイトルが読めなくなることがよくあります。 そういうときに、アクティブなタブだけ幅が広くなっていると読めるのになるなーと思ったので、ハックしてみました。 設定方法 about:support を開く*1 …

Firefox 58 でも、Shift + マウスホイールで「戻る/進む」をできるようにする方法

今日リリースされた Firefox 58 で、Shift + マウスホイールで横スクロールができないという有名な16年物のバグ (?) が修正されました。ただ、もともと Windows 版 Firefox では Shift + マウスホイールは「戻る/進む」に割り当てられていました。これが、上…