List#contains(null)は使わないほうが良い
List(などのコレクション)が要素に null を含むかどうかの判定に、 contains(null) を利用すると NullPointerException が発生することがあります。
リファレンスには次のようにあります:
UserDetailsServiceは誤解されている
サンプルコード等だけを見ていると UserDetailsService を利用することがSpring Securityの唯一の認証処理実現方法だと誤解しがちですが、 UserDetailsService はむしろユーティリティライブラリくらいの立ち位置で、別に利用しなくても実現可能です。
Alpine Linuxでglibcじゃないことに起因する問題ってちょくちょくあるよね
…と少し思い返していました。といっても思い出せたのは次の2つなのですが。
Alpine特有の問題については、「取り敢えずglibc/GNU版コマンドをインストールしてみろ」ってのが最初に採ってみる方策としてアリなのかも。
CompletableFuture覚え書き
CompletableFuture の一連の非同期処理 ほげAsync は、デフォルトでは ForkJoinPool.commonPool() という ExecutorService で実行されます。
そしてこの ExecutorService のワーカスレッドはデーモンスレッドであるため、非デーモンスレッドが無くなると(≒ メインスレッドが終了すると)プール内の処理を完了させること無くプロセスが終了します。
Javaのソースファイルはpackageに対応したディレクトリ階層に置かなくても良い?
…packageの宣言と実際のディレクトリが一致していなくてもmvn compile(やjavac)が成功するんですが、そういうもんでしたっけ?
ミニマル `.vimrc`
kubernetesの試験を受けるに当たって、最小限の .vimrc を覚えておくためのメモ:
set autoindent
set expandtab
set tabstop=2
set shiftwidth=2
DockerfileのENTRYPOINTに対応するのはcommand, CMDに対応するのがargs
CMD と command が対応しているわけではないのでまぎらわしい…
Kubernetes リファレンス:
参考として Dockerfile リファレンス:
…GKE(Goole Kubernetes Engine)の始め方
Kubernetes入門の書籍やドキュメントの中には、Kubernetes環境が既に手元にある前提で書かれているものも多いです。
そういう場合、どうやってKubernetes環境を調達して良いのかわからず、一つの手段として自前で環境を作る Kubernetes the hard way をやってみたのですが、一旦環境を作ってしまうとインスタンスを起動させ続けねばならず(作り直すの面倒だし)、財布に優しくないので断念しました。
Kubernetes the hard way を最新版の1.18.2でやってみた
要約
kube-apiserver の起動引数を --runtime-config=api/all=true に修正すれば v1.18.2 でも記述どおりで動作する。
本文
現時点で本家 Kubernetes The Hard Way は1.15.3をターゲットにして構築を行っていますが、せっかくなので最新版である v1.18.2 でやってみることにしました。
Kubernetes the hard wayを試すためのtmux基礎知識
Kubernetes the hard wayをやるのに`tmux`の操作を覚えておくのが良さそうだったので使いそうなものを記載しておくことにしました。
Ctrl キーと b キーの同時押しを ^b と表記しています。
redux-devtools-extension をTypeScriptで使う
というわけで型付けされているので
const store = createStore(rootReducer, undefined, devToolsEnhancer({}));
で良い。
何か Qiia の記事とかを見てるとこっちの方法でばっかり書いてあるが。
Electron から使う場合はElectron 公式からもredux-devtools-extension 公式からもリンクされている electron-devtools-installer が利用できた。
…Electronでfs(File IO)
を写経させてもらっていますが、、、動かない。
リンク先では Electron v4.x を利用していますが現在の最新版は v8.2.3。このバージョン差異が原因のようでした。
問題
1. Uncaught ReferenceError: require is not defined
v8.2.3 でそのまま実行すると、表題のエラーが出ています。
v5.0.0(#16235)より nodeIntegration 設定のデフォルト値が false に変わったためのようです。
ReduxのBasic TutorialにTypeScriptで型を付けただけ
Redux 多分使わないけど理解のため写経。
答え合わせに他の方が似たようなことやってないかググったけれども プラスアルファ要素(Redux Toolkit を使う、feature folders 流派でフォルダ分け、etc)が付いてたりして 1 対 1 で突き合わせて確認できるものが見つからなかった。ので自分が書いたものをリンクしておく:
…