技術メモ

神奈川在住のITエンジニアの備忘録。おもにプログラミングやネットワーク技術について、学んだことを自分の中で整理するためにゆるゆると書いています。ちゃんと検証できていない部分もあるのでご参考程度となりますが、誰かのお役に立てれば幸いです。

JavaのOptional

これまでどういう時に使うのか、いまいち分からなかったのだが、以下のサイト様の記事を読んで理解が深まった気がする。 【Optional入門】Javaでnullを扱うベストプラクティスのご紹介 Optional は null かもしれないオブジェクトを扱うためのもので、メソッ…

例外設計

以下の記事がとても参考になった。 凄腕エンジニアさんから学んだ例外の話 #error - Qiita 期待した挙動以外は全て「例外」として扱う。 全ての例外を処理(キャッチ)する必要はない。場合によってはログに出してスルー。 例外が起きた時の挙動を決めるのはプ…

AI時代のやりがい

AI時代になっても人間のやりがいが大事。 確かに、AIの生成物をただチェックするだけではつまらないか。いや、生成物の内容をちゃんと理解できれば、それになりに楽しいかもしれないが、それでは多くのソフトウェアエンジニアが不要になるか。。 codezine.jp

標準入力と引数

昔、Linux 上でのコマンドのワンライナーを勉強していた頃、パイプを使って後続のコマンドに標準入力からデータを渡すのと、引数でデータを渡すのとで、具体的に何が違うのかモヤっとして調べたことがあった。 今のところ、これらはデータが通る場所が違うと…

トランザクションの分離とロック

DB

昔、DBの勉強をしていた頃、トランザクションの分離とロックの関係性が分からず、いろいろ調べたことがあった。その時は、トランザクションを分離するためにロックが必要と理解した。ただ、それが明確に書かれたページがなく、確信が持てなかった。 今日、以…

SAMLとOIDC

SAML と OIDC (Open ID connect) の違いについて勉強した。 認証時の処理シーケンスは似ているが、SAML はサービスと idP 間で直接やり取りしないのに対して、OIDC ではサービスと idP 間での直接やり取りが発生するようだ。 SAML では直接やり取りはしない…

SAMLでのログイン情報はどこに保存されるのか?

SAML は SSO を実現するための仕組みなので、例えば、ユーザ(ブラウザ)が idP を経由して SP1 にログインしたら、SP2 にはログインなしでアクセスできる。 ネット上では、SP1 のログインまでの説明はたくさんあるのだが、その後の SP2 へのログインの説明が…

SAMLの概要

最近ちょっと勉強したので、簡単にまとめる。 SAML を使うには、まず、idP (id provider) と SP (service provider) との間で信頼関係を構築する必要がある。具体的には以下の作業を実施する。 idP のメタデータファイルをダウンロードする。 idP のメタデー…

分配器と分波器

テレビを買い替えてセッティングした際、本来は「分波器」を使うべきところに「分配器」を使って接続してしまったのだが、地デジも BS もちゃんと映ったので「なんで?」と思って調べたら以下の記事を見つけた。 どうしよう!分配器と分波器、間違えて買って…

k8s のストレージ関連

k8s

最近 k8s を扱うようになって、主題の件で PV だの PVC だの出てきて混乱したので、ここに簡単にまとめる。各関係の呼び出し関係は以下の通り。 Pod -> PVC -> PV -> NFS サーバなど Pod と NFS サーバの間に PVC と PV が挟まっているが、これは k8s 上のリ…

Java の enum

これまで、Java の enum の実体というかメモリ上でどうなっているかの理解が曖昧だったのだが、以下の記事を参考にさせて頂き、分かった気がする。 Javaの定数はEnumで! Enumの使い方から考え方までお伝えします enum の各項目 (フィールド) に対応するオブ…

k8s のリソースの包含関係

k8s

忘れてしまうことが多いので、ここにメモしておく。 Namespace > Deployment > ReplicaSet > Pod > Container 最近、k8s 環境でアプリを構築したのだが、上記のうち ReplicaSet と Container はあまり意識しなかった。 k8s の最小の管理単位は Pod なので、C…

git で MR (Merge Request) を出してコンフリクトした時

git

git で MR (Merge Request) を出してコンフリクトした時、feature branch にて master に対して rebase して、feature branch に master の変更を取り込んで、コンフリクトを解消するということを以前は良くやっていた。 しばらく、git を触らなくなって、ふ…

同じ文字でグルーピング

leetCode の以下の問題を解いた。 https://leetcode.com/problems/string-compression/文字列中の連続する同じ文字をグルーピングするという問題。 こういうのは、これまで、文字列を前から見て行って、同じ文字の連続が途切れたら、その1つ前までを1グル…

複数のファイルから複数の項目を grep するスクリプト

一度に grep したくなったので、主題のスクリプトを作成した。 こういうのは、やっぱり perl で書くと楽。 use strict; my $targets = [ # ファイル名、key1, key2, key3, ... ["fileA.txt", "test.keyA1", "test.keyA2"], ["fileB.txt", "test.keyB1", "tes…

Perl で REST API (Post) 実行

perl だと、だいぶ簡単に書ける。素晴らしい。 use strict; use HTTP::Request::Common; use LWP; use JSON; my $uri = "https://httpbin.org/post"; my $postData = {"key1" => "val1", "key2" => "val2"}; my $ua = LWP::UserAgent->new(); my $res = $ua-…

Java で REST API (Post) 実行

ネットの記事をいろいろ参考にしながら、Java 1.8 の標準 API だけで作ってみた。 import java.io.*; import java.net.HttpURLConnection; import java.net.URL; import java.nio.charset.StandardCharsets; public class MainPost { public static void mai…

perl の glob vs opendir&readdir

久々に perl スクリプトを書く機会があり、その中で Windows のフォルダ内のファイル一覧を取得したくなった。その際、主題のように glob と opendir&readdir のどちらを使うか迷って、以前使ったことのある後者を選んだ。 以下の記事によると、Windows では…

JFSのFaceletsページとバッキングBeanとの同期のタイミング

JFS の Facelets ページの UI コンポと、その入力値を格納するバッキング Bean があった時、UI コンポへの入力値がいつバッキング Bean に反映されるのか分からなかったので、ちょっと調べてみた。 当初は、Facelets ページでのポストバック (メソッド呼び出…

ダイクストラ法

ダイクストラ法で leetCode の問題を解いたので、参考のためにコードをここに残しておく。 Path with Maximum Probability - LeetCodeポイントは、コード中のコメントに記した。 PriorityQueue(heap) を使っているのは、キューの中で最大確率の (確定できる)…

クローンOS

publickey の以下の記事が気になっている。 しかし今回、Red HatがクローンOSの存在をかなり明確に否定したことが明らかになりました。また、クローンOSベンダ側の対策は、少なくとも現時点で十分に具体的なものになっていない可能性も読み取れます。 www.pu…

メンバーのモチベーションを上げる

主題の件でよく悩むので、名著「人を動かす」(カーネギー)を読んでいる。 印象に残った内容をここにメモしておく。 人を動かしたいなら、その人の自尊心を満たすことを考える。 誰もが重要な人物であると扱われたいという欲求を持っている。だから、相手のそ…

webブラウザがOSのようになりつつある。

以下の記事を読んで、主題のように感じた。 www.publickey1.jp ローカル環境にいろいろインストール&セットアップするのは大変なので、インターネット経由で WASM 対応したプログラムがダウンロードされて、web ブラウザ上で実行されるというのが流行ってく…

サーバサイド JavaScript

最近、JavaScript は、クライアントサイドだけではなく、サーバサイドでも使われるようになっているようだ。 Cloudflare、サーバレスの「Cloudflare Workers」とJAMスタックの「Cloudflare Pages」を統合へ - Publickey JavaScript は簡単な言語だとは思わ…

JavaScript のソース

私は JavaScript で書かれたソースコードを読むのがちょっと苦手。主流の言語であり、今後もよく読むことになると思うので、なぜ苦手なのか分析してみた。 JavaScript のソースは、関数 (処理) を関数の引数として扱うことができるため (第一級オブジェクト)…

await と async

JavaScript のコードで、最近、await, async をよく目にする。await は async の中で使う仕様になっており、それがなぜか分からなかったので、ちょっと調べたみた。 [JS]なぜawaitはasync関数の中にしか書けないのか - Qiita などの記事を読んだところ、以下…

OAuth2.0

最近よく聞くが、イマイチ分かっていないので、簡単に纏めてみた。 web サービスの「認可」のためのプロトコル サービスA (クライアントアプリ) がサービスB (リソースサーバ) にアクセスできるよう、サービスBがサービスAに対して、アクセストークンを発行…

sed コマンドで、ある行からある行まで抽出

sed -n '/はじまり/,/おわり/p' 対象ファイル で出来る。これは結構便利。 例えば、以下のテキストファイル (sedSample.txt) があったとする。 ああああいいいいううううええええおおおお ここから、「いいいい」~「ええええ」の行を抽出するには以下で良い…

git pull で Unlink of file 'xxx' failed. Should I try again? (y/n)

git

ネットで調べると、テキストエディタ等で対象のファイルを開きっぱなしだったという話がたくさん出てきたが、そうでなかった時の話。 テキストエディタ等で対象のファイルを開いていないのに主題のメッセージが出た時、とりあえず OS 再起動したら、git pull…

grep コマンド

grep コマンドは、マッチした行しか表示できないイメージがあったのだが、実際はそんなことはなく、例えば、-3 で「マッチした行の前後 3 行」、-B3で「マッチした行の前 3 行」、-A3で「マッチした行の後 3 行」を合わせて出力することができる。 これは、…