kmuto’s blog

はてな社でMackerel CREをやっています。料理と旅行といろんなIT技術

『Software Design』2023年1月号を読んだ

gihyo.jp

年越し号だねー。前回同様にメモ記録。

  • 結城浩の再発見の発想法」
    • アサーションの話。初めてVC++使ったときに自動で入ってよくわからなかったのを思い出した。アサーションが実コードに含まれているのはリーディングを阻害するような気がする。
  • 「基本から学び直しアルゴリズムを使いこなしたい」
    • 特集記事。探索とソート、配列や連結リスト、ハッシュ、再帰、分割統治法、動的計画法と説明している。アルゴリズムの採択やアプローチを間違えて計算量爆発、はたまにやらかしてしまうね。
  • PostgreSQL 15の最新機能解説」
    • バージョンはもう15になってしまったらしい。id:rokouchaさんのアドベントカレンダー記事PostgreSQL壊れました話を読んだのを思い出した(自分もマイグレーションで壊して、pg_dump結果からなんとかしたことは昔経験あった)。UPSERT相当のMERGE文が導入された。ロケールプロバイダのICUサポートが強化された(デフォルトのプロバイダはlibc。日本語ロケールでも半角/全角交じりのソートなどでけっこう結果が違う。全体にicuのほうがソートとして期待に近い印象)。regexp_count・regexp_instr・regexp_substrが追加され、regexp_replaceに新たに検索開始位置や置換検知回数オプションが導入された。publicスキーマの扱いがセキュリティ向上で変わり、データベース所有者とpublicスキーマ所有者が対応付けられるようになった、むしろちゃんとスキーマ分けましょう。論理レプリケーションがパワーアップして列単位まで限定可能(これまでテーブルが最小単位)、レコードやスキーマでも限定指定可能。SELECT DISTINCTでもパラレルクエリができるようになった。バックアップ関数が非排他に伴って名前が変わった(pg_start_backup→pg_backup_start、pg_stop_backup→pg_abckup_stop)。ログ先行書き込み(WAL)圧縮アルゴリズム追加。JSON形式サーバログ対応。突然の「にゃーん。」
  • 「再発見! デスクトップLinux入門」
    • 最終回だった。私も回答したid:masawadaさんの突撃! 隣のLinuxデスクトップが人気だったけど、なんとなく惰性でX.Orgのままにしている。次インストールし直すことがあったらWaylandかな。前職場で使っていたThinkCentreはWaylandにしていたんだけど、転職とともに手元でお蔵入りになっている。もったいないので何か使いたい。日本語入力のほうは厳しいよね…。
  • 「最強の開発環境探求の道」
    • 新連載。第1回はドット設定ファイルのgitでの管理と、環境単位でのgit設定の分割方法。全体に初心者向け連載かな。
  • 「リソースから考えるBCPの手引き」
    • これも新連載。第1回はBCPのリソースについての基礎。前職では個人的にBCPはずっと考えていたんだよね(自分が活動できなくなったケース策定もいろいろと考えていた)。
  • AWS活用ジャーニー」
    • 今回はAmazon RDSで、おおむね基本的なお話。
  • UNIXテキスト処理の極意」
    • 特集同様にアルゴリズムの話で、パータンマッチングのCでの実装。KMP法、BM法、RK法。
  • 「概念と実装で理解するゼロトラスト」
    • 最終回だった。統合ログ管理としてSIEMの話題。そこからソリューションの1つとしてMicrosoft Sentinel。監視と絡むので業務でもちょっと関わりはありそう、というかなんか聞き覚えがある。
  • 「魅惑の自作シェルの世界」
    • 予想どおりforkの話。というか前座がRustコーディングの話だった。最後にビルトインコマンドcdの実装。
  • 「現場を支えるPlaybook」
    • IPアドレスの払い出しの効率化のためにNetBoxと組み合わせた話。
  • Kubernetesネットワークのしくみ」
    • サービスメッシュのIstio。サービスメッシュ機能の要件であるトラフィック制御、セキュリティ対策、障害対策、運用効率化を実現できる。VirtualServiceでリクエストに応じて送信先をルーティング(URLパス、ポート番号、送信元ユーザなどを条件にでき、ヘッダ編集やURL置き換えも可)、DestinationRuleでルーティングされたその送信先をこちらも各条件で細かに振り分ける。Gatewayリソースでメッシュの外部との通信を制御する。認証としてサービス間の相互TLS認証、エンドユーザー認証としてJSON WebToken・Google認証など。証明書の管理の自動化。意図的障害を引き起こして回復性を見るカオスエンジニアリングを行うFault Injection機能と、継続障害時に障害が伝播することを防ぐよう切り離すサーキットブレーカー機能。EnvoyというソフトウェアをPodに配置し、IstioはこのEnvodyに対してサービスメッシュの設定を適用する(メッシュが変わってもPodのアプリ側にはコードの変更や再デプロイが不要)。コントロールプレーン(Istiod)とデータプレーン(Envody)の2つのコンポーネントからなる。