タグ

ブックマーク / zenn.dev/mattn (4)

  • もっと log/slog を使おう

    はじめに この記事は Go アドベントカレンダー 2023 の最終日 25 日目の記事です。 皆さん log/slog 使ってますか。便利なのでぜひ使ってください。 slog は構造化ログを出力する為のパッケージで Go 1.21 で導入されました。これまでも zap や zerolog といったサードパーティ製のロガーを使う事で構造化ログを出力する事ができましたが、構造化ログを出力する機能が Go の標準ライブラリになりました。 slog とは 通常の log パッケージは、時刻とメッセージの単純な出力になります。

    もっと log/slog を使おう
  • cron で exponential backoff するツール作った

    この様に指定すると3分毎に実行されます。 とても便利ではあるのですがコマンドの実行が失敗すると、冗長なコマンド実行となり得ます。cron ではコマンドの実行が失敗し続けるとメールが運営者に繰り返し送信され続けます。 crontab にコマンドが1分毎に実行される様に投入してひとまず正常起動を確認、仕事を終えて家に返ってビールでも飲んで、さぁ寝ようかなと思った頃にコマンドが失敗し始めると、朝までメールが飛び続けます。 またウェブサービスの API を呼び出す cron ジョブを投入していたらそのウェブサービスがメンテナンスに入った、なんて事もあると思います。メンテナンス中にも関わらず無限に失敗し続ける API 呼び出しはもしかしたら BAN の対象になってしまうかもしれません。 全ては cron に exponential backoff する機能がないのが問題です。 systemd tim

    cron で exponential backoff するツール作った
  • LiteStream をサイドカー構成にしたデータベース永続化

    はじめに LiteStream がアツいですね。LiteStream は SQLite データベースのレプリカを作るシステムです。これを使う事で、アプリケーションが更新した SQLite データベースを S3 ストレージに瞬時にバックアップする事ができます。 はい... LiteStream を使ったサイドカー構成 LiteStream を使い、コンテナの起動前にデータベースをリストアし、アプリケーションが起動した後にレプリカを行えば、コンテナは何時でもホストから消し去る事ができる様になります。 以下に、/data ボリュームにリストアを行い、アプリケーションの起動後にレプリカを開始する docker-compose.yaml を示します。 version: '2' services: restore-container: image: litestream/litestream cont

    LiteStream をサイドカー構成にしたデータベース永続化
  • Facebook の ent を使って簡単なウェブアプリケーションを作る

    はじめに この記事は Facebook が開発している ORM、ent を使ってどれだけ簡単にアプリケーションを作れるかをチュートリアル的に解説するものです。エンティティを操作する一通りの機能が揃っており、扱いやすいライブラリだと思います。 ent の特徴は以下の通り コードをスキーマとして扱う モデルをGoのオブジェクトとして扱います 簡単なグラフの横断 クエリの実行、集合、そしてグラフ構造を簡単に横断します 静的型で明確な API 100% 静的な型でコード生成を使った明確な API を提供します 複数のストレージドライバ MySQL, PostgreSQL, SQLite と Gremlin をサポートします 拡張性 Go のテンプレートを使って簡単に拡張できます この記事では ent を使って1行掲示板を作ってみたいと思います。 前準備 ent を使うには始めに CLI の ent

    Facebook の ent を使って簡単なウェブアプリケーションを作る
  • 1