kakakakakku blog

Weekly Tech Blog : Keep on Learning 👍

Helmfile の「テンプレート機能」を試す

前回の記事では Helmfile に入門した!Helm Chart を宣言的に管理することができて便利だった 引き続き Helmfile を試していて,GitHub に載っている「The Helmfile Best Practices Guide」を読んでいたら「テンプレート機能」が紹介されていた.Helmfile で…

Helmfile で Helm Chart を宣言的に管理する

Helm を使うと Kubernetes クラスタ上に簡単にアプリケーションなどをインストールできる.そして Helm Chart は Artifact Hub で確認できる.また values.yaml と組み合わせれば Helm Chart のデフォルト設定を変更することもできる.しかし helm コマンド…

Deployment の maxUnavailable と maxSurge : ロールアウト中の割合を設定する

Kubernetes で Deployment を使うと Pod を安全にデプロイ(ロールアウト)できる.そのときに更新する Pod の割合として Max Unavailable と Max Surge という設定値があり,デフォルト値は以下のようにドキュメントに書いてある.今回は動作確認をしながら…

Argo CD で kustomize プロジェクトを GitOps 化する

Argo CD は kustomize をサポートしているため,簡単に kustomize プロジェクトを GitOps 化できる.さっそく試していく! argo-cd.readthedocs.io 検証環境 前回書いた記事で使った kustomize プロジェクトを使う. Namespace + Service + Deployment (ngin…

kustomize で patchesStrategicMerge を使わずに簡単に replicas と images を変更する

今まで kustomize を使って Deployment の replicas を変更するときなどは kustomization.yaml に patchesStrategicMerge を設定していた.例えば,1年前に kustomize に入門したときに書いた以下の記事でもそういう手順になっている. kakakakakku.hatenabl…

textlint-rule-prh で複数のルールをインポートできる imports 構文

textlint で「表記揺れ」を検出するときに prh (proofreading-helper) を組み合わせて使うと思う.例えば .textlintrc の rules.prh.rulePaths を以下のように書くと,ルールを複数設定できる.長くなりがちなルールを分割できるため,よく使っている { "rul…

Dockerfile で新しく使えるようになった構文「ヒアドキュメント」で複数行の RUN をシュッと書く

2021年7月30日に Docker Blog に公開された以下の記事を参考に「Dockerfile で新しく使えるようになった構文 "heredocs"」を試す.Dockerfile で「ヒアドキュメント」を使うと,今まで RUN と && \ を組み合わせて複数コマンドを 1 レイヤーにまとめていた T…

Kubernetes と OPA を組み合わせて Deployment の spec.replicas に対して「最低個数」を制限する

前回の記事では Kubernetes と OPA (Open Policy Agent) を組み合わせて「ラベル強制」を試した.OPA を使ってできることをより把握するために,今回は Deployment の spec.replicas に対して「最低個数」を制限できるようにする.なお OPA のインストール手…

Kubernetes と OPA を組み合わせて Namespace と Pod の「ラベル強制」を試した

今回は Kubernetes と OPA (Open Policy Agent) を組み合わせて「ラベル強制」を試す. OPA Gatekeeper をインストールする まず,Kubernetes クラスターに OPA Gatekeeper をインストールする.今回は OPA のドキュメントに載っている kubectl apply コマン…

docker run コマンドの --pid オプションで PID namespace を共有する

docker run コマンドで使える --pid オプションを試す.Docker では以下のドキュメントに書いてある通り,デフォルトでは PID namespace でコンテナ同士を隔離する.よって,コンテナ同士でプロセスを共有することはできず,各コンテナでは PID 1 を含む「プ…

kube-apiserver で「匿名リクエスト」を無効化する : --anonymous-auth=false

Kubernetes の kube-apiserver では,デフォルトで「匿名リクエスト」機能が有効になっている(正確な条件は以下のドキュメントに載っている).今回は「匿名リクエスト」機能の動作確認と kube-apiserver のセキュリティ対策として「匿名リクエスト」機能の…

Secret の自動マウントをオプトアウトするかどうか : automountServiceAccountToken フィールド

Kubernetes のセキュリティ対策として,Service Account と Pod に設定できる automountServiceAccountToken フィールド(Secret の自動マウントをオプトアウトするかどうか)の動作確認をした.とは言え,Service Account と Secret の関係性なども整理する…

Kubernetes と seccomp を組み合わせてシステムコールを制限する

前回の記事では seccomp (Secure computing mode) に入門するために「Docker と seccomp」を組み合わせて試した.docker run コマンドの --security-opt オプションを使って seccomp プロファイルを指定した. kakakakakku.hatenablog.com 今回は「Kubernete…

Docker と seccomp を組み合わせてシステムコールを制限する

seccomp (Secure computing mode) はプロセスに対してシステムコールを制限する Linux kernel の機能で,今回は「Docker と seccomp」を組み合わせて試す.ドキュメントは以下にある. docs.docker.com seccomp デフォルトプロファイル まず,Docker はデフ…

GitHub Actions で Re:VIEW プロジェクトをビルドする

最近 Pandoc 以外の選択肢として Re:VIEW を試している.ビルドを自動化するために GitHub Actions で Re:VIEW プロジェクトをビルドできるように設定してみた.今回は vvakame/review Docker Image を使うことにした.検証日時点で最新となる Re:VIEW v5.1 …

Intro to Machine Learning : Kaggle Courses で「住宅価格予測」に入門した

Kaggle が公開している「Kaggle Courses」で機械学習に入門できる「Intro to Machine Learning」コースを受講した.Intro と書いてある通り,入門レベルではあるけど,scikit-learn を使って「決定木(回帰)」や「ランダムフォレスト」で「住宅価格予測」を…

GRC (git-remote-codecommit) をサポートした ghq v1.2.0 を試した

Git リポジトリを操作するために使っている ghq が,2021年5月にリリースされた v1.2.0(bugfix も含めると v1.2.1)で AWS CodeCommit の HTTPS GRC (git-remote-codecommit) をサポートしていた.さっそく動作確認をしてみた! github.com brew upgrade gh…

Scratch で機械学習を楽しめちゃう!「Scratch ではじめる機械学習」を読んだ

最近「Scratch ではじめる機械学習」を読んで,とても楽しめたので紹介したいと思う.本書は Scratch を使って「機械学習で実現できること」を実際に体験できる.そして「機械学習」をあまり意識せずに読むことができるので(特に前半),例えば「子供と一緒…

「単純パーセプトロン」を使った分類(フルーツのグループ分け)を体験できる Scratch プロジェクト

最近「Scratch ではじめる機械学習」を読んでいる.Scratch を使って「機械学習」を体験することができて,非常に楽しめている.書評記事はまた別に書く予定!本書の中で「第4章 : 機械学習について学ぼう」を読んでいたら「単純パーセプトロン」を使った分…

Jamboard のフレーム背景にテンプレート画像を設定して効率的に描く Tips

Jamboard でホワイトボードを描くときによく使っている Tips を紹介する.と言っても本当に「ちょっとした Tips」で,簡単に言うと「Jamboard のフレーム背景にテンプレート画像を設定して効率的に描く」という Tips 以上! テンプレート画像とは もう少し…

NumPy / Pandas / Matplotlib / scikit-learn などの理解度確認ができる「Python 3 エンジニア認定データ分析試験」に合格した

先週末に「Python 3 エンジニア認定データ分析試験」を受験して合格したとても良い試験で,特に試験勉強をする過程で知識の幅が広がった.試験の認知度向上のためにも紹介したいと思う.当然ながら試験問題に関しては何も書かず,基本的に公開情報をベースに…

Numpy の dot() 関数は引数によって「ドット積(内積)」や「行列積」の計算になる

Numpy で dot() 関数を使うと配列同士の「ドット積(内積)」を計算できる.詳しくはドキュメントに載っているけど,dot() 関数は引数 a と b に指定する値(1次元配列/2次元配列)によって挙動が異なる.個人的にわかりにくかったため,具体的に実装しなが…

Pandas で時系列データをグループ化して集計できる「Grouper」

Pandas で groupby() 関数を使うと,データセットをグループ化して集計できる.さらに Grouper オブジェクトと組み合わせると,より高機能なグループ化を実現できる.今回は groupby() 関数と Grouper オブジェクトを組み合わせて「時系列データの集計」を試…

NumPy で「単位行列」を生成できる identity() 関数と eye() 関数の違い

NumPy で「単位行列」を生成するときに identity() 関数と eye() 関数がサポートされている.それぞれの違いを整理するためにドキュメントを読みながら試してみた.今回は Numpy 1.20.2 を前提にする.ドキュメントには (almost) equivalent function と書い…

NumPy で「n次元配列」を「1次元配列」に変換できる ravel() 関数と flatten() 関数の違い

NumPy で「n次元配列」を「1次元配列」に変換するときに ravel() 関数と flatten() 関数がサポートされている.ravel() 関数に関しては,正確には numpy.ravel() 関数と numpy.ndarray.ravel() 関数がある.それぞれの違いを整理するためにドキュメントを読…

Pandas の機能を実践的に学ぶならこの1冊!「Pandas ライブラリ活用入門」を読んだ

個人的に Pandas を使ってデータ分析をする機会が増えてきて,今までの浅い経験ではうまく使いこなせず,Pandas を中心に細かく学び直している.最近 Pandas 関連の記事を多く書いていることにも関連しているし,少し前には Pandas を学べる「Kaggle Courses…

scikit-learn でカテゴリ変数を変換する : OneHotEncoder と LabelEncoder

前回の記事では Pandas の get_dummies() 関数を使って「カテゴリ変数」の変換(One-Hot エンコーディング)を試した. kakakakakku.hatenablog.com Pandas 以外の選択肢として scikit-learn の sklearn.preprocessing モジュールを使うこともできる.今回は…

Pandas の get_dummies() 関数でカテゴリ変数をダミー変数に変換する

Pandas で get_dummies() 関数を使うと「カテゴリ変数」を「ダミー変数」に変換できる.「カテゴリ変数」とは,例えば「血液型」や「職業」など,限られた選択肢の中から選んだ値で,ENUM 型のようなイメージをするとわかりやすい分析業務を前提に考えると A…

Pandas で相関件数を計算して Seaborn で可視化する

Pandas で corr() 関数を使うと DataFrame と Series で「相関係数 (correlation coefficient)」を計算できる.今回は DataFrame の corr() 関数と Seaborn を使った可視化を試す. pandas.DataFrame.corr — pandas 1.2.4 documentation pandas.Series.corr …

Pandas で NaN を操作する : fillna() と interpolate()

先週紹介した学習コンテンツ「Kaggle Courses : Pandas」で「欠損値 (Missing data) : NaN」の取り扱いを学んだけど,その後「Pandas ライブラリ活用入門」を読んでいたら「置換 : fillna() 関数」に多くのパラメータがあり,他にも「補間 : interoperete() …