Carpe Diem

備忘録

GKE Ingressのヘルスチェック生成ルール

概要

GKE Ingressを使うとGCE LBのヘルスチェックが自動的に作成されますが、一定のルールがあります。

これらを理解していないと期待しないヘルスチェックが作成され、疎通ができなかったりするのでまとめておきます。

生成ルール

GKE Ingressは次の流れでヘルスチェックを作成します。

  1. BackendConfigがあればそれを使う
  2. PodにreadinessProbeが設定されている、かつ条件を満たす場合それを使う
  3. 1, 2を満たさない場合、デフォルト値を使う

それぞれについて詳細な設定方法を説明します。

続きを読む

Function callingのJSON Schemaをpydanticで生成する

背景

Function callingJSONを定義する際はJSON Schemaを用いますが、JSON Schemaは覚えることが多く不慣れだと非常に扱いにくいです。

pydnaticを使うとクラス定義から簡単にJSON Schemaを生成できるので、PythonJSON Schemaを利用する際はおすすめです。

環境

  • python v3.11.8
  • pydantic v2.6.1
  • openai v1.12.0

要件

例えば次のようなJSONがFunction callingで返ってほしいとします。

{
    "ingredients": [
        {
            "ingredient": "人参",
            "amount": "1本"
        },
        {
            "ingredient": "豚ひき肉",
            "amount": "100g"
        }
    ],
    "cookwares": ["フライパン", "ボウル"],
    "instructions": ["材料を切ります。", "材料を炒めます。"]
}
続きを読む

pyenvからインストールする際にSSLがないというエラー

背景

pyenvでpython 3.10.13をインストールしようとしたところ、次のようなエラーを受けました。

$ pyenv install 3.10.13
python-build: use openssl@1.1 from homebrew
python-build: use readline from homebrew
Downloading Python-3.10.13.tar.xz...
-> https://www.python.org/ftp/python/3.10.13/Python-3.10.13.tar.xz
Installing Python-3.10.13...
python-build: use readline from homebrew
python-build: use ncurses from homebrew
python-build: use zlib from homebrew
Traceback (most recent call last):
  File "<string>", line 1, in <module>
  File "/Users/jun06t/.pyenv/versions/3.10.13/lib/python3.10/ssl.py", line 99, in <module>
    import _ssl             # if we can't import it, let the error propagate
ModuleNotFoundError: No module named '_ssl'
ERROR: The Python ssl extension was not compiled. Missing the OpenSSL lib?

Please consult to the Wiki page to fix the problem.
https://github.com/pyenv/pyenv/wiki/Common-build-problems


BUILD FAILED (OS X 13.6 using python-build 20180424)

その解消方法です。

環境

  • macOS 13.6
  • pyenv 2.3.35
続きを読む

tmuxでコピーモードを使った時にDeepLに渡されてしまう

背景

tmuxでコピーモードで範囲選択によるコピー機能をよく使っていますが、そこでコピーしたものがそのままDeepLの翻訳の方へ渡されてしまう問題に悩まされてました。

今は有料版なのでコピーしたものが学習データに使われることはありませんが、偶にDeepLのアプデで?ログアウトされてしまっていることがあります。
そうなると無料版状態となり学習データに使われてしまい、情報漏洩に繋がるので解決したかったのがきっかけです。

環境

  • tmux v3.3a
  • Alacritty 0.13.1
  • macOS 13.6

一般的にコピーモードの値がクリップボードに渡されるように次の設定を.tmux.confに入れています。

# コピーモード完了時にクリップボードにコピー
set-window-option -g mode-keys vi
bind-key -T copy-mode-vi Enter send-keys -X copy-pipe-and-cancel "pbcopy"
続きを読む

ChatGPTのオプトアウト申請方法(2023/10以降版)

概要

WebコンソールのChatGPTでは入力したデータを学習させない方法として2種類のやり方が提供されています。

  • 設定からChatの履歴を保持しないようにする
  • フォームでオプトアウト申請を行う

前者は簡単にできる一方で、Chatの履歴が使えず不便になります。
後者は申請が英語ですが一度設定すれば良いだけでChat履歴も残ります。

なので後者がおすすめですが、2023/10から申請方法が変わったのでやり方を説明します。

※OpenAIのAPIを利用する場合は学習されません

オプトアウト申請手順

まず↓のサイトにアクセスします。

https://privacy.openai.com/policies

続きを読む

Backstage でGitHub Orgを用いた認可を導入する

概要

christina04.hatenablog.com

ではGitHubのIDを持っていればログインできる認証機能を追加しました。

今回は「そのGitHubアカウントが特定のGitHub Organizationに所属しているかどうか」を使ってページを閲覧できるかどうか認可する仕組みを導入します。

認証と認可の違い

認証と認可の違いは以下です。

用語 定義
認証 誰であるかを確認すること パスワード、指紋、etc...
認可 権限を与えること 切符を購入した人には電車に乗る権限を与える
※誰かを特定する必要はない

ただ多くのケースでは認証と認可はセットになっていることが多いです。

続きを読む

Backstage でGitHub認証を導入する

概要

Backstageに認証機能を導入します。

Backstageでは様々な認証方法を提供していますが、今回はGitHubを使った認証を実装します。

環境

  • backstage v1.21.1

認証

GitHub Authentication Provider | Backstage Software Catalog and Developer Platform

に沿って導入します。

GitHub Appの作成

GitHub認証を導入するためにGitHub Appを作成します。

  • GitHubが会社のOrgに所属していたらログインできる認可機構を設定したい
  • Software CatalogのUserやGroupにGitHubのMembersを利用したい

といったケースであれば、個人でなくOrganizationで作成してください。

続きを読む