JJUG CCC 2023 Fallに参加しました! 前回よりも参加者が大幅に増えて、ワイワイと盛り上がった中でいろんな話が聞けて楽しかったです! 特に、一足先に次回の Java 22 でリリース予定の Foreign Function & Memory API と String Template の話があって、使…
JJUG CCC 2023 Spring に参加しました! 今回、なんとJJUG CCC 参加9年目にして初登壇してきました。色んな人から「えっ、初?」って言われましたw1 セッションは、javap を使ってクラスファイルを読んでみよう という、ややマニアックな内容です。頑張って…
JJUG CCC 2022 Fall に参加しました! オンライン開催も、今回で4回目。 今回はスタッフとして参加1して、ちょっとだけ司会をしました。スムーズに進行できていたら幸いです。 今回、特によかったなーと思ったのが、完成度の高いもちださんのセッション。 ま…
Jextract に libcurl を呼び出すサンプルがありました。これを試しに動かしてみました。 (まだ Preview の Foreign Function & Memory API を使います) ちなみに、ほかにも以下のライブラリを使うサンプルが置いてあります。 ディレクトリ 実行するライブ…
Java のサポートされているエンコーディングの一覧を見ていると、UTF-16, UTF-16BE, UTF-16LE, x-UTF-16LE-BOM とあって、なにが違うんだろうと思って調べてみました。 まとめると、読み・書き時のバイトオーダー (BO) 1 と書き込み時の BOM (Byte Order Mar…
年が省略されている日付(月/日)の場合 まずは、DateTimeFormatter を用意します。 DateTimeFormatter formatter = DateTimeFormatter.ofPattern("MM/dd"); 次に、日付を MonthDay クラスでパースします。 MonthDay monthDay = MonthDay.parse("07/18", for…
6月6日(土)に自転車でお散歩していた際に転倒し、左腕がクラッシュしました。 それにより、しばらくの間は右腕のみの片系運用となっておりました。 数日が経過しても左腕からのアラートが治まらない状態が続いたことから、病院に詳細なデバッグを依頼したと…
JJUG CCC 2022 Spring に参加しました! いつも以上におもしろいセッション盛りだくさんで、参加してとても楽しかったです。 LINEのトラブルシューティングのような現場での経験をもとにした話から、バイトコードのようなJavaのコアな話まで、とてもバランス…
Java のラムダ式が、どのようにコンパイルされ実行されているか気になりますよね。 そこで、クラスファイルを分析して、その中身を調べてみました。 なお、今回は OpenJDK 17.0.1 を使って調べています。 バージョンによって挙動が異なる場合があるので、ご…
JJUG CCC 2021 Fall に参加しました! JJUG CCC オンラインも3回目ということで、JJUG運営の方も参加者の方もお互い慣れてきた感じがします。 自分も、今回は夕方から用事があったので、時間差でセッションを見ながら電車で移動ということをやりました。ラジ…
たまに、Outlook のメールファイル(.msg ファイル)が添付で送られてくるのですが、手元に Windows 版の Outlook がなくて1内容を確認できなくて困ることが多々…。 そこで、.msg ファイルをテキストファイルに展開するツールを用意しました。 (添付ファイ…
答え: 最初から 最初の touch コマンド FreeBSD の touch のマニュアル曰く、touch コマンドは Version 7 の AT&T UNIX で登場したそうです。 HISTORY A touch utility appeared in Version 7 AT&T UNIX. touch(1) - FreeBSD Manual Pages このときの man …
JJUG CCC 2021 Spring に参加しました! 前回に引き続き、今回もオンライン開催となりました。 オンラインだと移動が楽というメリットがあって、これはどっちのセッション見ようかなーというときに、途中でさっとほかの動画に移れるのは便利でした。 あとは…
バリデーションの難しさについて、少し考えてみましょう。 (結論だけ読みたい人は、こちら) 例えば、通販サイトの基本設計書で「入力フォームの電話番号の項目に、正しい電話番号が入力されていない場合はエラーとすること」と書かれていたとします。 では…
前回の記事(Javaのバージョン別、1行ずつファイルを読む方法まとめ)への感想で、このような話がありました。 丸々読み込む方法のまとめもお願いします!— ユースケ (山本裕介) (@yusuke) May 3, 2021 というわけで、今回はテキストファイルを一括で読み込…
Java でファイルを読み込む処理は、バージョンが上がるごとにどんどん簡単に書けるようになっていきました。 今回は、どれだけ簡単になっていったかを Java のバージョンごとにまとめて説明します。 なお、ここでは以下の処理を行うコードをもとにしています…
JDK 1.0 (Java 1.0.2) を入手したので、GitHub に置いておきました。 https://github.com/YujiSoftware/JDK1.0 なんと、Windows 10 上でも動きます。 あと、src.zip も展開して置いた ので、GitHub 上で読めます。 Java 考古学者のみなさま、ぜひご活用くだ…
JSON をフォーマットしたいけど、jq が入っていない!ということがよくあります。 そういう時は、Ruby や PHP を使いましょう! Ruby の場合 ruby -rjson -e 'puts JSON.pretty_generate(JSON.parse(STDIN.read))' ↓ こんな風に表示されます! [qiita@exampl…
ネットの情報をもとに、M5StickC とMH-Z19B (CO2センサー)を使って二酸化炭素濃度計を作りました。 作ったといっても、M5StickC と MH-Z19B をつないで、さくっとプログラミングしただけ。簡単でした。 一年ぐらい運用していますが、なかなか便利です。 グ…
Java 9 以降 JEP 280: Indify String Concatenation に基づき、 + 演算子による文字列結合は以下のようにコンパイルされるように変わりました。 invokedynamic #7, 0 // InvokeDynamic #0:makeConcatWithConstants:(Ljava/lang/Object;I)Ljava/lang/String; …
JJUG CCC 2020 Fall に参加しました! 今回は、初のオンライン開催ということで、いつもと違って自宅からの視聴。 でも、twitter のハッシュタグを見るとみんなでわいわいやってる感は変わらず、質疑応答もありでいつもと変わらず楽しめました。 それに加え…
「ド・モルガンの法則」ってなにそれ?おいしいの?って聞かれたことがあります。 おいしくはないのですが、プログラムを書く上では超大事!です。 ここでは、プログラムを読み書きするうえでド・モルガンの法則をどのように使えばいいかを紹介します。 ド・…
8進数を表記する文法は、主に以下の3つがあります。 (二番目と三番目は分かりにくいですが ゼロ オー1 です) プリフィックスとして 0 を付与する (例: 0123) プリフィックスとして 0o を付与する (例: 0o123) プリフィックスとして 0O を付与する (例: 0O1…
本番環境でやらかしちゃった人 Advent Calendarで、このパターンのやらかしはなかったのでキーボードを叩くことにしました。 番外編のつもりでお楽しみください。 この記事が、新たな障害発生を防ぐことにつながれば幸いです。 何をやったのか ある日、ちょ…
Java の Object#Clone() メソッドは throws CloneNotSupportedException が宣言されています。 protected native Object clone() throws CloneNotSupportedException; しかし、クラスが Cloneable インタフェースを実装していれば CloneNotSupportedExceptio…
Ansible で Mackerel の設定を取得したり変更したりできたらなーと思う時があります。 例えば… アラートが鳴ってしまうのを防ぐために、Ansible 実行中はホストのステータスを standby にしたい 特定のロールが設定されているホストの場合だけ、ファイルをコ…
JJUG CCC 2019 Fall に行ってきました! 最近 Java のシステムをまたいじるようになって*1、 Java 欲が高まってきていたところにいろんなセッションを聞けてすごいテンション上がりました。 特に、「開け!ドメイン駆動設計の扉」がちょうどこれから一部のシ…
Stack Overflow の質問には、その内容を示すタグが付与されています。 このタグ、よく見ると「言語」+ 「フレームワークやライブラリの名称」という構成が多いです。 つまり、これを分析すれば、言語ごとに質問の多い(つまり、よく使われている、人気がある…
よく Java の実行バージョンを上げるだけで速くなるという話を聞きます。 でも、本当にそうなのでしょうか。また、本当だとしたらどれぐらい速くなるのでしょうか。 そこで、簡単なプログラムで実験してみました。 実験概要 実験用に、数独を解く Java のプ…
PHP には、日付文字列をパースするための strptime という関数があります。 これを使って、Sun, 19 Apr 2015 11:43:30 GMT という文字列を %a, %d %b %Y %H:%M:%S %Z というフォーマットでパースした結果、以下の通り環境によって異なる結果になりました。 s…