エンターテイメント!!

遊戯王好きのJavaエンジニアのブログ。バーニングソウルを会得する特訓中。

WindowsでJavaのバージョン管理を楽にする

きっかけ

Javaの最新バージョンの検証をする際に、切り替えが面倒だったので、いろいろ調べた結果をまとめる。

環境

dosで確認

>ver

Microsoft Windows [Version 10.0.18362.592]

先に結論

調査した結果、一番手軽にやれるのは、環境変数JAVA_HOME作って切り替えるのが一番早い。
jEnv使うとかもあったけど、インストールの段階でpowershellで結構悩む。。。

シンボリックリンクの選択肢もあるけど、問題は、シンボリックリンクの作成が面倒という感じ。
ただ、きれいに管理するなら、シンボリックリンクが分かりやすいかもね。
目的別に作るのは、良さそう。
例えば、最新バージョンならlatest、earyアクセス版限定ならearyとかのシンボリックリンク作れば、分かりやすいのではないかと思う。

やること(やったこと)

  1. ユーザー環境変数JAVA_HOMEを作る。
  2. アクセスするのがwin10だと大変。win10より前のOSだと楽にアクセスできたけど、win10は場所が分からない。。。
  3. 検索してアクセスが早い
    1. ホームボタンを右クリックして、検索を選ぶ
    2. 環境変数で検索して、システム環境変数を編集を選択
    3. 環境変数ボタンを押下
  4. JAVA_HOMEに対象となるJavaのバージョンのフォルダのパスを追加する
  5. 追加するフォルダのパスは、binlibがあるフォルダにする
  6. ユーザー環境変数Pathに、%JAVA_HOME%%JAVA_HOME%\binを追加する

確認

java -versionで想定通りのバージョンが表示されたら成功。
以後は、JAVA_HOMEを変えれば切り替わるはず。

感想

いろいろ考えたけど、シンプルにやるのが一番楽。
もっと楽にやる方法を覚えるために、他の知識を詰め込む必要があるのが、結構しんどい。
俺の脳みその記憶容量は、そんなにないんだな。。。って感じた。

参考サイト

qiita.com

jEnvでJavaのバージョン管理ができるらしい、Windowsでも? - ts0818のブログ

2020/01/13週 気づきと振り返り

業務こなしての問題・気づき

gstreamerのCould not multiplex stream

muxerのpad追加が遅い。
muxerの処理を最初に持ってくれば解決する。

雑記

なんか、成長している感覚がない。。。
ほぼ何もできずに終わった気がする。。。

最近、脱力感がすごいわ。。。

家でポケモンやることしかやる気が起きない。

2020/01/06週 気づきと振り返り

業務こなしての問題・気づき

iOSの画面回転抑止

General -> Deployment info -> Device Orientationの、Portraitだけチェックした状態にする。

swiftでフォーカスの強制外し

self.view.endEditing()

挙動的に、フォーカスが勝手に戻って意図しない挙動があったので、必要になった。

割り算の結果

int / int -> intになる。
3 / 2 = 1みたいな。
swiftの仕様らしく、intに合わせるようになっているらしい。
ということは、論理演算前に型を見てるってことだろうか?

suzaku-tec.hatenadiary.jp

雑記

チャラ男射つべし

チャラ男がポイ捨てしたゴミが俺にあたったのが、無茶苦茶腹立った。
チャラ男は、終始言い訳してたな。。。
ぶん殴ってあげたほうが良かっただろうか?

ポイ捨てするやつを見たら、例外なく制裁加えてやろうと思う。

長期休暇明け

なかなか仕事に身が入らない。

他の人も同じかな?
いつもと同じ状態に戻したいのだが、いつもの状態もサボりがちだから、戻っているのかもしれない。

swiftの割り算での型

きっかけ

swiftで割り算したら、予想と違った挙動をしたので、メモ。

実証

print(3 / 2)

期待値としては、1.5が出て欲しいが、上記コードを実行すると

$swift sample.swift 
1

1になる。

Int型で割り算すると、結果は、Int型になる。
小数点以下は、切り捨て。

小数点以下も欲しい場合は、どちらかをDoubleにする必要がある。
結果をDouble型にしても、小数点は切り捨てられたまま。

print(Double(3 / 2))
// -> 1.0

小数点以下も欲しい場合は、どちらかをDoubleにすればいい。

print(3.0 / 2)
print(3 / 2.0)
print(3.0 / 2.0)

上記を実行すると、下記になる。

swift sample.swift 
1.5
1.5
1.5

どういう結果が欲しいのか、考えて型を指定する必要があるのは、面倒だと思いました。(小並感)

参考サイト

【swift入門 文法編】数値型(Int型、Float型、Double型)をマスターしよう|新卒エンジニアの開発日記

演算子について 単元 | Salesforce Trailhead

JavaScript Advent Calendarまとめ

リンク

JavaScript Advent Calendar 2019 - Qiita

JavaScript 2 Advent Calendar 2019 - Qiita

まとメモ

12/01

2019年、2020年のJavaScript

2019年、2020年のJavaScript - 別にしんどくないブログ

es2019をざっくり見返すと、配列周りの機能が充実した印象がある。
Array#flatは、使うタイミングがたまにありそう。

es2020は、結構、盛りだくさんだな。
Promise.allSettledは、特に重要そう。JSやってPromiseを使わないってのは、ありえない。
サーバーサイドなら特に。
ネックだったリトライ処理が入れやすいって感じかな?

営業時間外を表示するjavascript

営業時間外を表示するjavascript - 自動計算サイト

一昔前のコードを見ているような気がする。。。。
ライブラリ化しないのかな?

12/02

JavaScriptリファクタリングツール「jscodeshift」の使い方

JavaScriptのリファクタリングツール「jscodeshift」の使い方 - Qiita

自作は、ちょっとハードルが高いな。。。
transform file を利用するのが主になりそう。
バージョン上げのときとかは、役立ちそう。

JavaScriptのみで構築するディープラーニング with Jupyter and TensorFlow.js

JavaScriptのみで構築するディープラーニング with Jupyter and TensorFlow.js - Qiita

TensorFlow.jsの環境構築で挫折。。。
jupyterの知識があること前提なのが辛い。。。。

12/03

jscodeshiftのテストを書く

jscodeshiftのテストを書く - Qiita

jscodeshiftの記事見たときは、どうやって変換の質を保つんだろうと思ったけど、ユニットテストを用意して、変換の可否をテストするんだね。
普通のソースコード書くのと変わらない。

JavaScript】 {} === {} はfalseになるので、簡単なnpmパッケージを作りました。

【JavaScript】 {} === {} はfalseになるので、簡単なnpmパッケージを作りました。 - Qiita

そうなんだ。。。
めったにこの比較はしないから、あまり気にしたことはなかった。
参照先が違うからfalseを返しているわけか。

12/04

2019年 よく使ったJavaScriptたちをまとめる

2019年 よく使ったJavaScriptたちをまとめる - Qiita

Array.prototype.map(), Array.prototype.filter()は、俺もよく使った。
Array系のメソッドは、よく使う。
JSは、Arrayをどうやってうまく使うかが重要だと思う。

あら、こんなところに副作用

あら、こんなところに副作用 - Qiita

あまり深く考えたことはなかった。
コーディングするときは、気をつけないとな。
そもそも、発生するタイミングは、少ないとは思うが。

12/05

JavaScriptのBigIntを勉強してみた

JavaScriptのBigIntを勉強してみた - Qiita

ブラウザサポートを見ると、まだ、使うには早いのかなと思う。
これよりもデカい値を扱いたいってなったら、どうなるんだろう?
ないとは思うが、科学用途でJavaScript使うような選択肢はあるのかな?

[jQuery + php] 簡易ソートアプリ作成してみた(デザイン込)

[jQuery + php] 簡易ソートアプリ作成してみた(デザイン込) - Qiita

phpは、学生時に使ってたくらい。
それ以降は、触ってない気がする。

jQueryは、いろんな依存を抱え込むから、使わないようにしているので、今後も、使わない気がするが、今は、どうなんだろう?

12/06

実務で使うかもしれない、最近JavaScriptで実装した5つの機能

実務で使うかもしれない、最近JavaScriptで実装した5つの機能 - Qiita

ほ~ん

経済学の問題をJavaScriptで解いてみる

経済学の問題をJavaScriptで解いてみる│FORCIA CUBE│フォルシア株式会社

囚人のジレンマって、経済学の問題だったのか?
それの方が驚きだった。

ナッシュ均衡アルゴリズムの理解が追いつかない。
あとで調べる。

12/07

TC39 Shorthand Property Assignment Improvementsの紹介

TC39 Shorthand Property Assignment Improvementsの紹介 - #pon_memo

TypeScriptでは使えたような気がする。
実際問題、本当に使いやすいのかは、よく分からない。

TensorFlow.js と obniz で作る、笑顔あふれる職場

TensorFlow.js と obniz で作る、笑顔あふれる職場 - Qiita

GPチップ載せたミニ四駆作れそうだな。

12/08

JavaScript演算子オーバーロードしてみる(BabelでAST)

JavaScriptで演算子オーバーロードしてみる(BabelでAST) - Qiita

黒魔術を見ている気がする。

MacBook Proの充電器の情報をメニューバーに表示するElectronアプリをつくった

MacBook Proの充電器の情報をメニューバーに表示するElectronアプリをつくった - Qiita

コマンドでなんとかするってのもできるんだな。。。
JSの知識だけじゃなく、コマンドの知識もあると便利そうだな。

12/09

視覚障がい者のためにJavaScriptで、スライドショーにalt要素を実装する

視覚障がい者のためにJavaScriptで、スライドショーにalt要素を実装する - Qiita

ほ~ん

12/10

VSCodeにコントリビュートする / VS Code Meetup #1

VSCodeにコントリビュートする / VS Code Meetup #1 - Qiita

vscodeのコードは、見たことあるのだが、取っ掛かりがなくて、全然わからないんだよね。。。

font-family: serifのみの指定で日本語明朝体が表示されるかチェックする

font-family: serifのみの指定で日本語明朝体が表示されるかチェックする - Qiita

バイトデータを比較してチェックしているわけね。

12/11

2019 Javascript engine 俯瞰

2019 Javascript engine 俯瞰 - abcdefGets

JSエンジンって、V8だけかと思ったが、他にもあるのね。
ネイティブの話になると、あんまり追いつけない。。。
話を聞く限り、quickjsは面白そう。

Chrome拡張+WebWorkerでTensorflow.jsを動かそう!

Chrome拡張+WebWorkerでTensorflow.jsを動かそう! - webとモバイルアプリの逆転

TensorFlow.jsがよく出てくるな。。。
マジでキャッチアップしないと問題な気がしてきた。

12/12

【初心者用】クイズJavaScript

【初心者用】クイズJavaScript - Qiita

第3問, 第5問がダメだった。。。
未だに、thisは、よく分からない。
アロー関数をなるべく使うようにしているので、アロー関数使ってないとどうなるのか、よく分からないんだよね。。。

12/13

Babelを使ってみようとしたらハマった話とドラッグで要素を動かしてみたい話

Babelを使ってみようとしたらハマった話とドラッグで要素を動かしてみたい話 - vaguely

babelは、裏で何してるのか分かりづらいから理解しづらいのだと思う。
babelは、動かすまでが面倒な印象。
仕事で使ったときも、運用させるまでが辛かった。

EasyAutocompleteを日本語対応っぽくする

EasyAutocompleteを日本語対応っぽくする - Qiita

jqueary使うから、コード量が少ないのかなと思ったが、かなり多かった。
やっぱり、全角入力は、半角入力に比べて難易度高い。
故に、漬け込む余地はあるのかなと思った。

12/14

リアクティブプログラミングを完全に理解するための第一歩として Pub/Sub を自作する

リアクティブプログラミングを完全に理解するための第一歩として Pub/Sub を自作する - Project Shoone

リアクティブプログラミングは、すでにキャッチアップ済み。
pub/subを理解できるかが肝だと思ってる。
覚えてしまえば、observerよりも簡素で分かりやすいって思ってる。

Google翻訳とGrammarlyを1つのアプリにして英作文セルフレビューを効率化する

Google翻訳とGrammarlyを1つのアプリにして英作文セルフレビューを効率化する - Qiita

複数のサイトを同時に表示したい場面は、たまにある。
firefoxなら、tile tabsがあったが、Quantumに切り替わってから使いづらくなったからな。。。
electronで自作するのは、手段として考えておいてもいいかもね。

12/15

JavaScriptで配列の要素の重複をチェックする

JavaScriptで配列の要素の重複をチェックする - Qiita

setを利用して、重複を見るわけね。
Javaやってるときは、こういう使い方の発想は、なかなか思いつかなかったけど、JavaScriptやるようになってから、こういうコードをよく見るようになった気がする。
速度的にはどうなるのだろうと、ふと疑問に思った。

京都の公共施設予約システム(ヤバい)の抽選予約を自動化してみる

京都の公共施設予約システム(ヤバい)の抽選予約を自動化してみる - Qiita

トップページみたら、たしかに、test1i だ。

buttomじゃなくて、imageか。。。
手軽にやるには、ソッチのほうが楽だったんだろうな。
たぶん、excelかpower pointerでペタペタ作って、それをwebページに変換したときのimageでも使っているのではなかろうか?

webデザイナーに発注するほどの予算がなかったのだろう。
産みの苦しみは分かっているつもりなので、批判はしないが、ドメインルートは変えたほうが良い気がする。

作業の効率化は、意外と難しい。
自分は、自社の勤怠が1日毎の入力しかできないのをfirefoxseleniumを使って、1ヶ月を一括で登録するなどのハックをやってたけど、seleniumの仕様が大幅に変わってしまってから絶望した。
使ってた期間は、3ヶ月程度ってのが、絶望を深くした。。。
このサイトが変わったら、同じ道をたどる人がいる気がするが、当分は大丈夫だろう。

12/16

3000人に聞いた、2019年最先端のフロントエンド開発者が使ってるツールはこれだ

3000人に聞いた、2019年最先端のフロントエンド開発者が使ってるツールはこれだ - Qiita

これに回答しているのは、デザイナーが大半ではなかろうか?

CSSツールは、全然知らない。
その世界から離れているから、分からないだけかもしれないな。

上級者って自称できる人っているんだな。。。
俺は、恥ずかしくて、ずっと初心者って答える。

JavaScript関連なら、分かる。

Task Runnersは、俺もnpm scriptsでなんとかしてる。
gulp使ってたときもあったけど、js使うのと変わりないから、「それなら素のままのnpm scriptsと変わらなくない?」ってなって使うのやめた。
準備面倒くさいし。

フレームワークと言われるほどのものは使ってないな。
強いてあげるなら、Node.jsかな?でも、Nodeは、JavaScriptの一部みたいになってるからな。。。
使ってない人も一定数いるな。

モジュラーは、俺もwebpackですわ。
使わないで済むなら使わないけど。

TypeScriptは、俺も使ってた。
JavaScriptを覚えてからは、使わなくなったけど、たまに型が欲しいときがある。
JavaからJavaScript覚えるのは難儀だったけど、TypeScript経由したらJavaScriptは難なく覚えられた。
JavaやってるけどJavaScript覚えられない人は、TypeScriptからやり始めた方がいいと思う。

Lintは、ESLintが一強だな。。。
Pretterは、流行ってないのかな?

調査対象がどんなグループにもよるかもしれないが、調査結果を見ると、自分の立ち位置とか、どうすべきか見れるから、面白いね。

12/17

LGTMすると現場猫が「ヨシ!」してくれるGitHub Actionsをつくった + Tips

LGTMすると現場猫が「ヨシ!」してくれるGitHub Actionsをつくった + Tips - Qiita

Github Actionsって、jenkinsみたいにやるのかと思ったが、jsでコーディングできるのか。

Maps JavaScript APIのDirections APIに関してエラーハンドリングしてみた

Maps JavaScript APIのDirections APIに関してエラーハンドリングしてみた - Qiita

Google Map APIの経路選択って、意外とコーディングする必要があるのかな?
結構なコード量になってたのが気になった。

12/18

JavaScriptで日本語DSLを作る

JavaScriptで日本語DSLを作る - Qiita

最終的に、プログラミング言語を作りたい野望はあるが、難しいよね。。。

めっちゃ汎用的なアコーディオンメニューを作ろう

めっちゃ汎用的なアコーディオンメニューを作ろう - Qiita

アコーディオンメニューは、そういう実装になるよね。

12/19

その月のx番目のy曜日の日付を求める式を1行で書く

その月のx番目のy曜日の日付を求める式を1行で書く - Qiita

俺なら3日で解読できなくなる自身がある。

ラーメンで理解するasync/await

ラーメンで理解するasync/await - Qiita

読んでる途中で、Promise.allの方が良いのでは?と思ったら、そう思った人が既にいたのね。。。

12/20

[考古学] coffeescript の元ネタと後世に与えたと思われる影響

[考古学] coffeescript の元ネタと後世に与えたと思われる影響 - Qiita

Arrow Functionは、Javaやってると、どの記法が正解だったか、たまに混乱する。
CoffeeScriptは、TypeScriptにとって変わられた気がする。
以前の記述を見てると、かなり進化してるなって感じる。

2010年代も終わるのでaxiosについて確認しておきたい

2010年代も終わるのでaxiosについて確認しておきたい - Qiita

axiosの読みって何だろう?
アキオス?アックスアイオーエス

自分は使ったことは、ないな。
superagent使うことが多い。

12/21

最新のWeb技術でIoTをする

最新のWeb技術でIoTをする - Qiita

ミニ四駆に載せたい。
obnizとESP32、どっちがいいのだろうか?
利用用途を考えると、obnizな気がする。

12/22

Vue-CLI 4を使用したJavaScript開発環境構築(プロトタイプ版とプロジェクト版)

Vue-CLI 4を使用したJavaScript開発環境構築(プロトタイプ版とプロジェクト版) - Qiita

Vue-CLIは、vue使おうと思ったら通る道だと思う。

Javascriptで帳票印刷したい

Javascriptで帳票印刷したい - Qiita

jsでpdfってなると、pdfkitになるよね。
俺も、pdfkit使って、画像をpdf化するとかする。

12/23

Babel Plugin を作りながら AST と Babel を学ぶ

[https://qiita.com/sakito/items/b1ef54fd6fb05c11e142:title]

babelは、IE対応なんかでよく使うが、裏で何をやっているのかは、よく分からなかった。
なんか、正規表現の置換でむちゃくちゃ頑張ってるような感覚でいた。
この記事を見て、裏で何をやっているのか、なんとなく分かった気がする。
構文解析をして、古い文法に置き換えられるのは、置き換えているわけか。
置き換えは、コードで定義しているから、複雑さへの対応も、ある程度可能になっているわけね。
正規表現では、限界があるからな。。。

12/24

[LSTM文章生成]ml5jsを使う

[LSTM文章生成]ml5jsを使う - Qiita

やっぱり、機械学習となるとPythonが主軸になってしまうよな。。。

SvelteでSwipe Card UIを作ったので、所感をまとめます

SvelteでSwipe Card UIを作ったので、所感をまとめます - Qiita

スワイプは、スマホだけで通じるものだと再認識した。

12/25

JavaScriptのクラスの扱いに気をつけましょう

JavaScriptのクラスの扱いに気をつけましょう - Qiita

JavaScriptのテストのデファクトスタンダードって何だろう?
jestしか使ったことがない。
テスト書かないとマズいってのは分かるんだけど、期間が短いと後回しにしまいがち。

感想

だいたいは分かるんだけど、アルゴリズム的に不明ってのは、なかなか理解ができないな。
ナッシュ均衡とか、さっぱり分からん。
個人的には、tensorflowとALTが、よく目についた印象がある。

あとで調べる

npm installで Unexpected end of JSON input while parsing near が発生する

きっかけ

npm install して、何度かUnexpected end of JSON input while parsing near が発生してドツボにハマったので、記録に残す。

対処方法

TypeScript - npm install が必ず失敗する|teratail

上記記事にある通り、npm cache clean --forceでキャッシュを削除したらうまく行った。
そういえば、npm install しているとき、何度かネットワークが切断されてたな。。。

雑記

意図した動作にならないときって、結構な確率でキャッシュが悪さをしている気がする。。。

キャッシュを疑うクセをつけないとダメかもな。

Java Advent Calendar 2019 まとめ

Java Advent Calendar 2019 まとめ

12/01 Junit5の整理した書き方

Junit5の整理した書き方 - Qiita

DisplayNameのアノテーションで、テスト内容を書けるのか。
個人的に、日本人だけがメンテする機能なら、メソッド名をDisplaNameの内容に置き換えてもいいのでは?と思ってる。

そのうち、DisplayNameの国際化とか出てきそう。
もう、あるのかな?
調べた感じ、まだなさそう。

12/02 Apple の servicetalk について

https://mike-neck.hatenadiary.com/entry/jax-rs-on-servicetalk-with-spring

12/03 LombokのBuilderパターン解説

LombokのBuilderパターン解説 - Qiita

Builderパターンは、知ってたので、特に違和感はない。
どっちかと言うと、Lombok適用によるプロジェクトの変化が気になる。
getter/setterを書かなくなるのはメリットだと思うけど、裏で色々やっている印象があるから、意外なところでデメリットが発症しそうな気がする。

12/04 thymeleafでenumを扱うためのtips

https://qiita.com/n_slender/items/d0e2a861dcc806b5882e

画面のセレクトボックスに出すようなコード定義系は、全部enumにするべきというのが持論。
特に違和感はなかった。

enumでまとめていると、コードと値とかの紐付けが分散することもないし、変更が集約されるから、積極的にやるべきだと思う。

ただ、そのenumを直接テンプレートから直接参照するのは、ロジックとビューが密結合になるから、冒頭で紹介されていた例は、俺も受け入れられない。
やはり、一旦、modelに格納してからテンプレートに渡すほうが無難だと思う。
面倒くささを感じるかも知れないが、今後の改修を考えると、そうした方がいい。

12/05 IntelliJ IDEAとGradleでのJavaFXアプリケーション開発 〜環境構築からサンプルコードまで〜

IntelliJ IDEAとGradleでのJavaFXアプリケーション開発 〜環境構築からサンプルコードまで〜 - Qiita

最後のSceneBuilderが気になった。
IntelliJでもタブでSceneBuilderを開けるんだっけ?
前にwindowsでいろいろ調べて設定したけど、別ウィンドウで開いていた気がするが。。。。
よくよく見たら、OSは、macだな。。。
windowsで試したら、まだ別ウィンドウで開くようになっていた。。。
設定で回避できるのだろうか?
やり始めるとハゲそうなので、時間があるときにmacでどうなるか見てみる。

12/06 Spring-bootでWebAPIをaglioで仕様書ごとgradleでビルドしてみる

Spring-bootでWebAPIをaglioで仕様書ごとgradleでビルドしてみる - Qiita

aglioは、swaggerみたいなものかな?
ドキュメントツールは、swaggerがデファクトスタンダード取った感がある。
環境構築が簡単だった。
swaggerは、前に試そうとしたが、環境構築が面倒で辞めたまま。。。

UIは、どこかで見たような気がしないでもないが、かなりシンプルだった。
CSS適用させて変えることもできるのだろうか?

12/07 JavaMailとOSGiとUnsupportedDataTypeException

JavaMailとOSGiとUnsupportedDataTypeException - Qiita

JavaMailは、よく分からんとです。。。

12/08 Visual Studio CodeでParaya MicroのWebアプリケーションを作る準備をする

http://memory.empressia.jp/article/186866284.html

環境構築で挫折した。。。
vscode使うのはいいんだけど、環境構築がネックになると思うんだよね。

12/09 JFRをBigQuery/Metabaseのオレオレダッシュボードで可視化する

JFRをBigQuery/Metabaseのオレオレダッシュボードで可視化する - ブログなんだよもん

JFRは知ってるんだけど、なかなか触ろうという気持ちにはならない。。。
仕事で必要にならない限りは、触るのは難しい。
計測するためのモノも作らないといけないので、完成までに挫折してしまうんだよね。。。
github上で計測用のプロジェクトとかあったりするものなのだろうか?

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

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

JavaScriptやってると、「例外はすべてRuntimeExceptionでいいのでは?」って思うようになってきた。
RuntimeException/Exceptionの概念が別れてる理由があれば、知りたい。

たまに、握り潰すことをやっていました。。。
記事を読んでいて、AssertionErrorでラップするほうがしっくりきたので、今度からは握りつぶさずにAssertionでラップするようにしよう。

12/11 人生最後に学ぶプログラム言語とは? (生涯給与3億円クラブに追いつきたい場合)

人生最後に学ぶプログラム言語とは? (生涯給与3億円クラブに追いつきたい場合) - Qiita

今年に入って学んだ言語は、SwiftとRubyかな?
Rubyはちょっと怪しいが、Swiftは、業務で使えるレベルまでにはなった。

老後ねぇ。。。
まったく考えてないのだが、みんなはどのくらいで考え始めるのだろうか?

12/12 JavaのanyMatchって、C#でいうAnyだっけ?つまり、JavaScriptのsomeだよね?もう対応表つくるわ!

JavaのanyMatchって、C#でいうAnyだっけ?つまり、JavaScriptのsomeだよね?もう対応表つくるわ! - Qiita

ぶっちゃけ、×印が付いてるのは、他の言語でも、あまり使ったことがない。
JavaScriptは、reduceとmap、Javaは、mapとfilterをよく使う。
C#は、使ったことがないのでよく分からんとです。

12/13 【Java】OS依存な標準ライブラリを挙げてみる

【Java】OS依存な標準ライブラリを挙げてみる - Qiita

JavaなのにOS依存なんてあるのか?って思ったら、たしかに、入出力やファイルシステム系は、OS依存だね。。。
他にもありそうな気がするが、パッとは思いつかない。

12/14 Exceptionをもみ消すなって言われた人のためのエラーハンドリングの話。

Exceptionをもみ消すなって言われた人のためのエラーハンドリングの話。 - Qiita

例外処理はlogだせばいいんじゃないの?って思ったけど、ログに出力しちゃいけないパターンもあるのか。。。
安易なログ出力は、危険な場合があることも、覚えておかないとダメだと思った。

booleanで結果を返す は、昔の俺も思っていた時期はある。
例外処理を理解していれば、これはないなって思うはず。

3: 別の例外を実装し、投げられた例外を包んで呼び出し元に投げるJavaではよく使う印象。
例外処理を見てると、JavaScriptのPromiseのやり方が一番シンプルではなかろうか?と思いました。

12/15 SpringBoot1.5 + Gradle4.4 + Java8 + Docker 環境を Java11 に対応させる

最近、Javaのバージョンをどう管理していたのか思い出せない。。。
Java周辺の環境は、SDKmanで簡単に構築できるのは覚えているんだが。。。。

環境準備が面倒なんだよね、Javaは。

12/16 【Java】【Stream API】オレオレCollectorによるヘッダ・明細Bean生成で学ぶ独自Collectorの実装方法

Streamをカスタマイズできるのは知っているけど、黒魔術感が増す。
なるべく素のStreamを使うようにしたほうが良いのでは?と記事を見ながら思った。

12/17 【Javaクイズ】無理にラムダ使うな、使うなら格好良く使え

reduce使うのが正解な気がするが、Javaのreduceは、使いづらいんだよね。。。
JavaScriptならreduceを間違いなく使う。

12/18 Javaでマルチスレッドを処理を安全に記述する方法

synchronized でも、完璧なスレッドセーフにはならなかった気がする。
うろ覚えなので、若干怪しい。。。

プロセスレベルで分けるのが一番安全だと思いました。

12/19 ラムダ式シリアライズして異なるJVM上で実行してみる

ラムダ式は、内部クラスを流用して作られているから、考えてみればシリアライズは可能か。。。
わざわざシリアライズ・デシリアライズをしてまで渡す必要性を感じなかったのだが、結果を渡すじゃダメだったのだろうか?

12/20 段階的に理解する O/R マッピング

O/Rマッパーは、日本と海外(米国?)で、結構、印象が違うイメージがある。
日本だと、domaみたいなのが好まれ、海外だと、Hibernateが多いようなことを聞いたことがある。

俺も、どっちかと言うと、domaやMybatisみたいな方が直感的でわかりやすい。
レベルの話を聞いていると、レベル3くらいがそうなのだろう。

このライブラリは、どのレベルに属するか考えて技術選定を行うってのは、アーキテクトっぽいなって思った。

12/21 Spring WebFluxのチュートリアルをやってみる

そういえば、WebFluxやるの忘れてたな~と思い、記事見ながらサンプルを作成。
Routerがリクエスト・レスポンスの受け口で、実際の処理はHandlerでやる感じか。。。

意外とすんなり動いた。
自分の環境は、java14-earyでも動いていたので、後方互換はしっかりしているなと思った。
Swiftだと、結構大胆にAPIが変わってたりするから、それが少ないJavaは、バージョンをある程度無視できて、検証が楽だと思った。

12/23 jib-maven-pluginを使ってSpringBootアプリをイメージ化してDockerで起動

jib-maven-pluginを使ってSpringBootアプリをイメージ化してDockerで起動 - Qiita

jib-maven-pluginは、初めて聞いた。
gradle版もあるみたいだな。

コンテナ化のメリットは、動かす環境を汚さないことだと思ってる。
コンテナ化することでサービス同士の組み合わせをいち早くできるのがメリットだと思うので、これから使う場面が増えていきそうな気はしている。
実際、今の現場でもdockerのimageを使う場面が増えてきているし。

12/24 [検証]SpringBoot vs Micronaut 起動速度の比較

[検証]SpringBoot vs Micronaut 起動速度の比較 - Qiita

結果だけ見ると、NativeImageが圧倒的だな。。。
計測方法が単一だったので、複数視点で見たときにどうなるのかが気になった。

逆にNativeImageが遅くなるときがあるとかだったら、ビルド方法によってコーディングを変える必要があるなとか妄想した。

感想

12/29時点で、読めるものは全部読んだ。
気になったのは、jib-maven-pluginかな?
あとは、だいたい既知の知識である程度は把握できてる。
Javaを触ることは少なくなってきたが(そういえば、今年は仕事で触ってない。。。)、比較的に、ついては行けているのかなと感じる。
今年は、LTSがなかったから、インパクト大きな変更がなかったとも考えられるかもな。。。
来年は、LTSのリリースがあるから、注視はしていきたい。