Quantcast
Channel: Carpe Diem
Browsing latest articles
Browse All 147 View Live

Image may be NSFW.
Clik here to view.

go-redisのtimeoutで気をつけること

概要Go言語でRedisを使う際に選択肢に挙がるのがgo-redisです。今回はgo-redisでTimeoutを設定する際に注意すべきことをまとめました。手前味噌ですがBlast Radius of...

View Article



http.ResponseWriterに書き込んだstatus codeを取得したい

背景5xx系エラーをbugsnagのようなエラー検知サービスに送信したいmiddleware層で網羅的に対応したいといった際に、http.ResponseWriterに書き込まれたstatus codeは直接アクセスできないという問題があります。今回はこの問題を解決する方法を紹介します。環境Go 1.21.0方法Custom...

View Article

Image may be NSFW.
Clik here to view.

KubernetesでPodを複数のZoneに分散させる

概要Podの冗長化をする上でマルチゾーン構成にしたい場合Pod Topology Spread Constraints | Kubernetes上記のPod Topology Spread Constraintsを使うと実現できます。環境Kubernetes v1.24Pod Topology Spread ConstraintsPod Topology Spread...

View Article

Image may be NSFW.
Clik here to view.

DeepLのChrome拡張機能を使ってるとGitHubのページ内検索で表示崩れが起きる

背景最近GitHubでページ内検索を使ってると、たまに次のような表示崩れが発生します。スクロールしても前のコードがずっとそこに残っています。このときのコンソールログとしては決まって次のエラーで、content.js:1 Uncaught DOMException: Failed to execute 'getRangeAt' on 'Selection': 0 is not a valid...

View Article

Image may be NSFW.
Clik here to view.

ログで機密情報をマスキングする方法

背景DBのconfigのように一部機密情報が含まれるものを環境変数(k8s Secret等)で注入することは多いです。そしてその環境変数がちゃんと設定されているか起動時にログを吐きたいということもよくあります。一方でtype Config struct { Addr string Port int Password string }...

View Article


Image may be NSFW.
Clik here to view.

IstioやEnvoyで発生するネットワーク系エラー

背景マイクロサービス環境でIstio(Envoy sidecar)を使っていると、いくつかのエラーに遭遇します。それぞれどういった状況で発生しているエラーなのかを区別できないと、適切な対応にならないため各種エラーをまとめます。環境Envoy 1.22.0Go 1.21構成次のようにclient appやserver appにsidecarが挟まるようにします。エラーdial tcp...

View Article

Node.jsでGraceful Shutdown

概要christina04.hatenablog.comのNode.js版です。環境Node.js v18.18.0TypeScript v5.2.2Express v4.18.2課題次のようなアプリケーションコードがあった際にimporttype{ Express, Request, Response }from"express";import express...

View Article

Image may be NSFW.
Clik here to view.

BigQueryのパーティション分割テーブル、日付別テーブル

概要BigQueryにおける分割テーブルはパーティション分割テーブル日付別テーブル(レガシー)の大きく2種類あり、さらにパーティション分割テーブルは取り込み時間による分割時間単位カラムによる分割整数範囲による分割の3種類あります。今回はそれらの違い、作成方法、terraformの設定方法を解説します。パーティション分割テーブル取り込み時間による分割データを取り込む時間に基づいて、パーティションに自動...

View Article


Image may be NSFW.
Clik here to view.

IngressとGCPロードバランサーの命名規則

背景KubernetesIngressで作成されたGCPロードバランサー周りのコンポーネントはk8s2-um-xxxk8s2-rm-xxxk8s2-tp-xxxk8s-be-xxxなど色々あり、どれが何を表しているのか分かりづらかったのでまとめます。命名規則とコンポーネント命名規則とコンポーネントの関係を一覧化すると以下です。命名規則コンポーネントannotation...

View Article


DockerでMySQLのクエリログを見れるようにする

背景GraphQLでN+1になってないかを確認したいときに、スロークエリだけでなく全てのクエリログを見たくなったのでその設定方法を説明します。Dockerコンテナの中に直接入って見る方法Dockerログに吐き出す方法の2通りで説明します。環境macOS 13.6Docker 24.0.6MySQL...

View Article

Image may be NSFW.
Clik here to view.

GraphQLのメリット

背景GraphQLでよく挙がるメリットとして以下があります。RESTful APIと違って都度UIに依存したAPI設計をする必要がない マルチデバイス対応サービスにおいて大きなメリットオーバーフェッチを避けることができる...

View Article

Image may be NSFW.
Clik here to view.

二重サブミットを防ぐ方法

背景支払い処理などで問題になりがちな二重サブミット問題(Double Posting Problem)ですが、主に以下のようなケースで発生します。ボタンのダブルクリック ユーザが間違えて2回ボタンを触ってしまう(ときには遅さにイライラして何度もクリック)リクエストタイムアウトで処理に失敗したように見えて、もう一度押してしまう完了ページでリロードしてしまう...

View Article

Image may be NSFW.
Clik here to view.

開発者ポータル Backstage とは

背景開発チームが抱えるよくある課題としてシステムが変化する一方でドキュメントは更新されず腐る メンバーの流入出によって口伝でかろうじて継承された知見も失われる検索性が良くないと過去のドキュメントが気づかれず、同じような内容のドキュメントが新規量産される...

View Article


Image may be NSFW.
Clik here to view.

VSZ, RSS(anonymous, file)の理解を深める

背景KubernetesでPodがOOM Killされた際には以下のようなログが発生します。Memory cgroup out of memory: Kill process 9130 (XXXX) score 1592 or sacrifice child Killed process 9130 (XXXX) total-vm:423008kB, anon-rss:122484kB,...

View Article

Image may be NSFW.
Clik here to view.

Backstage をローカルで動かす

概要前回紹介したBackstageをローカルで使うための説明です。開発者ポータル Backstage とは - Carpe Diem環境backstage v1.21.1yarn v1.22.19Get Startedとりあえず起動してみるアプリケーション作成以下のコマンドでアプリケーションを作成できます。今回はmy-appという名前で作るとします。$ npx...

View Article


Image may be NSFW.
Clik here to view.

2023年買ってよかったものリスト

概要年の瀬なので2023年に買ってよかったものを挙げてきます。SESAMEタッチ & オープンセンサー2021年買ってよかったものリスト - Carpe...

View Article

Image may be NSFW.
Clik here to view.

Backstage でGitHub認証を導入する

概要Backstageに認証機能を導入します。Backstageでは様々な認証方法を提供していますが、今回はGitHubを使った認証を実装します。環境backstage v1.21.1認証GitHub Authentication Provider | Backstage Software Catalog and Developer Platformに沿って導入します。GitHub...

View Article


Image may be NSFW.
Clik here to view.

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

概要christina04.hatenablog.comではGitHubのIDを持っていればログインできる認証機能を追加しました。今回は「そのGitHubアカウントが特定のGitHub...

View Article

Image may be NSFW.
Clik here to view.

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

概要WebコンソールのChatGPTでは入力したデータを学習させない方法として2種類のやり方が提供されています。設定からChatの履歴を保持しないようにするフォームでオプトアウト申請を行う前者は簡単にできる一方で、Chatの履歴が使えず不便になります。後者は申請が英語ですが一度設定すれば良いだけでChat履歴も残ります。なので後者がおすすめですが、2023/10から申請方法が変わったのでやり方を説明...

View Article

Image may be NSFW.
Clik here to view.

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

背景tmuxでコピーモードで範囲選択によるコピー機能をよく使っていますが、そこでコピーしたものがそのままDeepLの翻訳の方へ渡されてしまう問題に悩まされてました。今は有料版なのでコピーしたものが学習データに使われることはありませんが、偶にDeepLのアプデで?ログアウトされてしまっていることがあります。そうなると無料版状態となり学習データに使われてしまい、情報漏洩に繋がるので解決したかったのがきっ...

View Article

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......

View Article


Image may be NSFW.
Clik here to view.

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

背景Function callingでJSONを定義する際はJSON Schemaを用いますが、JSON Schemaは覚えることが多く不慣れだと非常に扱いにくいです。pydnaticを使うとクラス定義から簡単にJSON Schemaを生成できるので、PythonでJSON Schemaを利用する際はおすすめです。環境python v3.11.8pydantic v2.6.1openai...

View Article


Image may be NSFW.
Clik here to view.

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

概要GKE Ingressを使うとGCE LBのヘルスチェックが自動的に作成されますが、一定のルールがあります。これらを理解していないと期待しないヘルスチェックが作成され、疎通ができなかったりするのでまとめておきます。生成ルールGKE...

View Article

Image may be NSFW.
Clik here to view.

VS CodeのPython環境をDev Containersで構築する

概要PythonはGoと違ってライブラリのdeprecatedや破壊的変更が多いため、環境やライブラリバージョンの固定が非常に重要です。Dev Containerspoetry仮想環境(venvなど、今回はpoetryのvirtualenv)を使うことで、それらを固定してチーム内で安定した開発環境を構築できます。環境macOS 13.6Dev Containers 0.346.0python...

View Article

Image may be NSFW.
Clik here to view.

LlamaIndexでPDFに対してベクトル検索を行う

概要LlamaIndexを使うと非常に簡単にRAG(Retrieval-Augmented Generation)を使った検索システムを作ることができます。今回はLLMにない情報(PDF)をベクトル化して検索できる方法を紹介します。環境python 3.11.8streamlit 1.31.1llama-index...

View Article


Image may be NSFW.
Clik here to view.

LLMのプロンプト

概要LLMにおけるプロンプトの構成要素を理解して扱うことで期待通りの回答を得られる(精度が高くなる)なぜTemplateはこの書き方をするのかが分かるなぜagent_scratchpadのような変数がいるのかが分かるといったようになります。プロンプト構成要素プロンプトの構成要素は主に以下の4つです。命令(instruction)入力(input)文脈(context)出力形式の指定(output)単...

View Article

Image may be NSFW.
Clik here to view.

CEL(Common Expression Language)

概要CEL(Common Expression Language)とは、Googleによって開発された軽量で高速な式評価言語です。そのシンプルさと効率性から、セキュリティポリシー、リソースフィルタリング、データ検証などに使われます。例えばプロダクションでは以下のような利用例があります。IAM...

View Article

Image may be NSFW.
Clik here to view.

CELでASTを外部に保存する

概要CELのキーコンセプトではControl PlaneでCEL式をParse & Checkし、生成されたASTを保存Data Planeで保存したASTを読み取り、インプット値を評価すると説明されていました。主に管理ツール等で前者のControl Planeを実装し、オペレーターに自由に評価式を入力してもらいます。 Control...

View Article

CELで独自のオブジェクトをprotobufを使って変数定義する

概要CELでは評価式で扱う変数をEnvironment内で定義しますが、既存のデータモデルを使いたい場合は同じ定義を都度作らないといけない変更があった際の追従漏れが発生するといった手間が発生してしまいます。しかしそのデータモデルがprotobufで定義されていれば再利用することが可能です。今回はその方法を紹介します。環境go v1.22.1cel-go...

View Article



CELでカスタム関数を使う

概要CELは標準的な演算子や関数に加え、独自のカスタム関数を定義して機能を拡張することが可能です。今回はカスタム関数を使ってみる際に必要な前提知識を踏まえながらサンプルコードを紹介します。環境go v1.22.1cel-go...

View Article
Browsing latest articles
Browse All 147 View Live




Latest Images