タグ

k1LoWのブックマーク (5,065)

  • tblsのViewPoint機能を用いたGithub Actions上でのDBドキュメントの自動生成 - Safie Engineers' Blog!

    この記事はSafie Engineers' Blog! Advent Calendar 2日目の記事です。 セーフィー株式会社でテックリードをやっております鈴木敦志です。 セーフィーはクラウドカメラのSaaSを提供しており、現在22万台程度のデバイスに対してカメラ映像をクラウドから視聴する機能を提供しています。 それに加えエンタープライズ向けの権限管理機能や社内向けの販売管理ツールなど複数のサービスを運営しており、各サービスでMySQLDBを共有しているためDBのテーブル数が肥大化し構造がわかりにくくなり、新機能開発の妨げとなっていました。 稿ではデータベースのドキュメンテーションツールである tbls を導入し、DBスキーマ管理ツール skeema、ドキュメント生成ツール mkdocs、Github Actionsなどと組み合わせてスキーマ管理からドキュメント生成までをやっていきます

    tblsのViewPoint機能を用いたGithub Actions上でのDBドキュメントの自動生成 - Safie Engineers' Blog!
    k1LoW
    k1LoW 2024/01/11
    YAML Language Serverなるほど良さそう
  • チーム中心の組織作りのための6つのチーム設計原則 - mtx2s’s blog

    近年のソフトウェアプロダクト開発組織の活動単位としてよく言われるのは、「少人数で安定したチーム」であろう。表現は違えど、どの文献でもそのように述べられる。 それでは、「少人数」と「安定」の2つの要件を満たせば高パフォーマンスなチームが設計できるかと言えば、そんなはずもない。他にも要件があるはずだ。 そこで、チームに共通して必要だと考える要件を、設計に関わったこれまでの組織から抽出して言語化し、原則としてまとめてみた。それが、「安定」「アトミック」「非兼務」「少人数」「流動性」「イテレーティブ」の6つだ。 初期に携わった組織には欠けていた要素もあるが、何度も失敗を重ねるうちに見いだしたものだ。組織設計のプラクティスとしてよく聞くものもあるが、いずれも実体験を経て必要だと感じたものばかりである。 なお、記事で取り上げる6つのチーム設計原則だけでは、組織設計として不十分だ。チームにどういった機

    チーム中心の組織作りのための6つのチーム設計原則 - mtx2s’s blog
    k1LoW
    k1LoW 2024/01/10
  • 実践Immutable Data Model - 紙箱

    ランキング参加中プログラミング はじめに この記事では、Immutable Data Modelと呼ばれる設計手法をもとに、リレーショナル・データベースにおける、テーブル設計の話を書いています。また、今回の実践で利用する、別の考え方の背景を理解するために、Out of the tar pitという小論文の内容にも言及します。 「状態とは何か?」というややこしい話がたくさん出てきますし、データベースのテーブル設計についての話であることから、たくさんのSQLが出てきます。なので、データモデリングとか状態管理とか、特にSQLとかに興味がない人には面白くないと思います。 そのあたりに興味ある方は、読んでみて欲しいです。 Immutable Data Modelを、実際のアプリケーションで使うデータベースに採用するにあたり、どういう考え方で、どのようにテーブルを構成したか、自分なりの経験を書いていま

    実践Immutable Data Model - 紙箱
    k1LoW
    k1LoW 2024/01/10
  • My Emacs Config

    2023-12-31   | 5793 Words   | 12 minutes   | Masanori Mano #EMACS #CONFIG このページについて自分のinit.elの設定メモです。元の設定はOrg modeで管理していて、そこから org-babel-tangle でelファイルを出力するようにしています。 Early InitEmacs 27から early-init.el が追加された。 正直、速度的な効果は感じられないが、せっかくなので追加している。 ヘッダ ;;; early-init.el --- My early-init script -*- coding: utf-8 ; lexical-binding: t -*- ;; Author: grugrut <[email protected]> ;; URL: ;; Version: 1.00 ;; T

    My Emacs Config
    k1LoW
    k1LoW 2024/01/09
  • メンテのいらないソフトウェア - 誰かの役に立てばいいブログ

    ソフトウェアエンジニアとして働き始めて 20 年以上になります。 元々ソフトウェアでいろいろ作りたくて就いた職業なので、結構な数のプロダクトを開発してきました。 私がメインで開発したもので OSS として出ているものでは、 yrmcds: memcached クローンで、レプリケーション機能などを持つ usocksd: SOCKS4/5 サーバー & ライブラリ transocks: アプリのネットワーク通信を透過的に SOCKS サーバーにプロキシする透過プロキシ coil v2: Kubernetes の CNI ネットワークドライバ moco: MySQL を自動運用する Kubernetes オペレーター accurate: Kubernetes 上で namespace ベースのソフトマルチテナンシーを実現するためのソフトウェア などがあります。これらのソフトウェアの多くは、現役

    メンテのいらないソフトウェア - 誰かの役に立てばいいブログ
    k1LoW
    k1LoW 2024/01/05
    流石すぎる。私の場合は、機能のリストアップというか想像はしているが結局あとで思いもよらない機能が欲しくなる。品質は妥協しないつもりだが詰めが甘すぎる。ムズカシイ...精進します。
  • 野良社内ツールと開発生産性、プラットフォーム・エンジニアリング - Runner in the High

    よくある野良の社内ツールは、開発生産性を向上させるための手段としてスポットで生まれることが多い。 たとえば、定期的に依頼されて手作業でキックしているバッチ処理を誰かがAPI化したり、それがCLIで実行できるようになったり、あるいは不特定多数の人々が手でやっている作業が有志で自動化されツールになるなど。そして社内の口コミや告知で伝搬され、使われていく。 出来の良い社内ツールは、野良だとしても開発チームが普段の開発プロセスのなかで意識したくない複雑性や実装の詳細をうまく抽象化し、認知負荷を下げる役割を果たしている。見方を変えれば、社内ツールはチーム・トポロジー*1でいうところのX-as-a-serviceインタラクション・モードの具象化のひとつだと言える。開発チームと社内ツールを開発する人間を社内ツールがインターフェイスとなって接続している。広い目線で見ると、これはプラットフォーム・エンジニア

    野良社内ツールと開発生産性、プラットフォーム・エンジニアリング - Runner in the High
    k1LoW
    k1LoW 2024/01/05
    非常にムズカシイがその通りだと思う “これはプラットフォーム・エンジニアリングの土壌なのだが、単に野良で行われてそのままになるケースが非常に多い。これを放置せず、”
  • ebpf-goによるLinuxカーネルトレース入門

    ebpf-goによるLinuxカーネルトレース入門 ebpf-goを使用したLinuxカーネルトレース(fentry)について紹介します。 ebpf-goは、eBPFのGo向けライブラリです。このライブラリは、libbpfに依存せず(cgoを使用せず)にeBPFプログラムとデータのやり取りが可能であるため、ポータビリティが高くGo言語に適したeBPFライブラリとなります。 fentryは、カーネル関数のエントリポイントにプログラムをアタッチするためのBPFプログラムタイプです。簡潔に言うと、カーネル関数にフック処理を行うことができます。 GitHub: ebpf-go(cilium/ebpf) 公式ドキュメント: The eBPF Library for Go 記事ではebpf-goのexamples内のtcprttを基に、ebpf-goの開発方法についても説明します。 前提条件として、

    ebpf-goによるLinuxカーネルトレース入門
    k1LoW
    k1LoW 2024/01/02
  • 複数サービス間でのデータの整合性維持に向けたSagaの実装 - NTT Communications Engineers' Blog

    マイクロサービスアーキテクチャにおいては、個々が独立に選定したデータベースを持つ複数のサービスにまたがって、データの整合性を維持する必要があります。 そのための方法として、Sagaパターンと呼ばれる設計方法がありますが、Sagaでは分離性が欠如しておりLost Update等の異常が発生しかねません。 そこで記事では、Sagaの分離性を高めるための実装におけるTipsを解説します。 目次 目次 はじめに 複数サービス間での整合性維持における課題 Sagaパターン Sagaを構成するトランザクション Sagaによって実現される安全性 原子性(Atomicity) 整合性(Consistency) 分離性(Isolation) 永続性(Durability) 異常を防止/軽減する実装 分離性の欠如が引き起こす異常 分離性の欠如への対策 Semantic Lock Commutative Up

    複数サービス間でのデータの整合性維持に向けたSagaの実装 - NTT Communications Engineers' Blog
    k1LoW
    k1LoW 2023/12/31
  • Cloud Run で作るサーバーレス アーキテクチャ 23 連発 - これのときはこう!

    2023年は「Cloud Run を触って覚える」をテーマとした ひとりアドベントカレンダー を開催しており、Cloud Run のさまざまな機能や Cloud Run でよく使う構成などをご紹介しています。 最終日、25日目は Cloud Run を中心としたサーバーレス アーキテクチャをいくつか紹介します。2023年にちなんで23個のアーキテクチャを用意しました。 Cloud Run の概要は「gihyo.jp」で解説していますので、こちらもぜひご覧ください。 Web アプリケーション + API の 3-Tier 構成 (SPA) Web アプリケーション + API の 3-Tier 構成 (SPA) SPA (Single Page Application) がフロントになり、バックエンドの API サーバーとして Cloud Run を使用するアーキテクチャです。SPA は N

    Cloud Run で作るサーバーレス アーキテクチャ 23 連発 - これのときはこう!
    k1LoW
    k1LoW 2023/12/26
  • APIのテストツールrunnを使ってみた|PSP Tech

    こんにちは。 PHR事業開発部の村越です。 今日は、APIの自動テストをRunnを使用して作成してみたので、Runnの使い方などを紹介しようと思います。 runnとは?runnとは、@k1Lowさんの作成されているAPIのシナリオテストツールです。 runn NOBORIアプリの開発で、APIの自動テストを作成することになり、ツールを検討する際に出会い、とても良いと感じたので使い方などを紹介させて頂こうと思います。 導入方法runnを使ったテスト方法には ・CLIツールを動かす ・Goのテストコードに組み込んで使う の2種類がありますが、記事では前者の「CLIツールを動かす」の方で説明したいと思います。 リリースバイナリをダウンロードするサポートしているOSであればこちらからダウンロードして使用できます。 Homebrew、Goでインストールするコマンドラインから、下記のコマンドでインス

    APIのテストツールrunnを使ってみた|PSP Tech
    k1LoW
    k1LoW 2023/12/25
    ありがとうございます!
  • グルーとしてのエンジニアリングマネージャー|dora_e_m

    はじめにこれはQiitaのEngineering Manager Advent Calendar 24日目の投稿です。 エンジニアリングマネージャー(EM)の役割EMというロールの定義は組織によって異なりますが、共通項としては「チームのパフォーマンスを最大化すること」があります。 チームのパフォーマンスを最大化するためには様々な打ち手が考えられます。 チームのイネーブルメント チームメンバーの採用、育成、評価の実施 キャリア形成支援 パフォーマンス・マネジメント ロードマップに沿ったスケジューリング、チーム内の体制最適化 技術的リーダーシップ 技術的意思決定への参加 技術的課題の解決への貢献 コミュニケーション コミュニケーションパスの設計 チームのAPIとしての機能 プロセス改善 予算管理 チームの規模や会社のフェーズ、そこにいる人々の特性によってとるべき打ち手は異なってきます。 私が今

    グルーとしてのエンジニアリングマネージャー|dora_e_m
    k1LoW
    k1LoW 2023/12/24
  • Renovate config の変更が想定通りか確認する 〜真の dry-run を求めて〜

    こんにちは。サイボウズの生産性向上チームの @korosuke613 です。 依存関係更新のプルリクエストを作ってくれる Renovate ですが、設定が難しいですよね。 Renovate の設定ファイルである Renovate config 変更時に、その変更が想定通りとなっているかどうかを確認する方法はいまいち公式ドキュメントに載っていません(載ってないはず)。その謎を解明するため、我々調査隊は Renovate の奥地へと向かった──────── というわけで今回は、Renovate config を動作確認する方法の調査をしたので、過程と結果を記します。 TL;DR 最終的なコマンド: LOG_LEVEL=debug RENOVATE_CONFIG_FILE=<Renovate config ファイル名> renovate --token <GitHubのパーソナルアクセストークン

    Renovate config の変更が想定通りか確認する 〜真の dry-run を求めて〜
    k1LoW
    k1LoW 2023/12/24
  • The Outbox Pattern — Kamil Grzybek

    k1LoW
    k1LoW 2023/12/23
  • Go の HTTP サーバーにヘルスエンドポイントを追加する

    これは Go Advent Calendar 2023 の 18 日目の記事です。 HTTP サーバーが正常に動いているかを外部から確認できるようにするには、ヘルスチェック用のエンドポイントを用意するのが一般的です。書籍『入門 監視』では「healthエンドポイントパターン」として紹介されている手法です。 ヘルスエンドポイントでは状態に応じた HTTP レスポンスステータスコードを返す必要があります。正常なら 200 OK を、そうでなければ 503 Service Unavailable を返すのが適切です。これがヘルスエンドポイントの最小要件ですが、 HTTP レスポンスボディに詳細な情報を付加することでより利便性を高めることができます。 そのようなヘルスエンドポイントを Go の HTTP サーバーに追加するには health というパッケージが便利です。 health は次のは 3

    Go の HTTP サーバーにヘルスエンドポイントを追加する
    k1LoW
    k1LoW 2023/12/22
  • DBスキーマはtblsのViewpointsで整理しよう

    この記事は MICIN Advent Calendar 2023 の 5日目の記事です。 前回は竹内さんの、Socket.ioコンテナオーケストレーションハンズオン でした。 tblsはいいぞ🦍 筆者はtblsの大ファンであり、特にViewpoints機能が他のツールとは一線を画していると思っています。今回はその良さをお伝えできればと思います。 TL;DR tblsは実際のスキーマからDBのドキュメントを生成するツール ER図が巨大化しても、tblsのViewpointごとに分割することでDBの全体像が理解可能になる Viewpointの粒度に困ったら一旦トランザクションと集計の単位に設定する 個別のテーブルとViewpointは相互に参照できる CIに組み込むことでドキュメンテーション忘れを防げる なんのためにDBのドキュメンテーションを行うか DBのドキュメンテーションはそれなりにコ

    DBスキーマはtblsのViewpointsで整理しよう
    k1LoW
    k1LoW 2023/12/20
    tblsのViewpoints機能にコントリビュートしてくださる方だけあって、Viewpointsを完全に活用している...!!!
  • Spanner DDL から簡単にドキュメントを生成できる GitHub Actions を作った

    k1LoW
    k1LoW 2023/12/16
    “特に Spanner の場合はマネージドサービスなのでおいそれとインスタンスを建てるわけにもいかない” 確かに
  • HTTP 条件付きリクエスト - HTTP | MDN

    HTTP ガイド リソースと URI ウェブ上のリソースの識別 データ URL MIME タイプ入門 よくある MIME タイプ www 付きと www なしの URL の選択 HTTP ガイド HTTP の基 HTTP の概要 HTTP の進化 HTTP メッセージ 典型的な HTTP セッション HTTP/1.x のコネクション管理 プロトコルのアップグレードの仕組み HTTP セキュリティ Content Security Policy (CSP) HTTP Strict Transport Security (HSTS) X-Content-Type-Options X-Frame-Options X-XSS-Protection Mozilla web security guidelines Mozilla Observatory HTTP アクセス制御 (CORS) HTTP

    HTTP 条件付きリクエスト - HTTP | MDN
    k1LoW
    k1LoW 2023/12/13
  • 決済プロダクトのマジ価値を最速で届けるためのバックエンドQAの事例 - freee Developers Hub

    こんにちは、freeeで決済プロダクトのQAエンジニアをしているrenです。freee QA Advent Calendar 2023 - Adventarの11日目です。 この記事では、決済プロダクトでアジャイルQAを実践するために取り組んでいる、バックエンドQAの事例を紹介します。 決済プロダクトで取り組んでいるアジャイルQA 決済プロダクトの開発はスクラムで行なっており、QAを含むOneTeam*1で行っています。 そのため、QAエンジニアスクラムイベントに出ており、開発と併走できるQA活動を目指して日々仕事に取り組んでいます。 このようなQA活動をfreeeではアジャイルQAと呼んでいます。詳細な経緯や意図については、ymty-sanの記事を参照ください。 developers.freee.co.jp スクラムのイテレーティブな開発にあわせてイテレーティブにアジャイルQAを行うこ

    決済プロダクトのマジ価値を最速で届けるためのバックエンドQAの事例 - freee Developers Hub
    k1LoW
    k1LoW 2023/12/12
    “テストケース表” なるほど
  • Cache-Control: must-understand ディレクティブとは何か | blog.jxck.io

    Intro IETF が策定する HTTP の仕様が更新されようとしている。 ここには、 Cache の仕様も含まれており、そのなかで must-understand という Cache-Control のディレクティブが追加されている。 このディレクティブが追加された経緯と仕様について解説する。 Cache と Status Code RFC7234 では、新しいステータスコードを策定する際に、キャッシュに関して以下のように書かれている。 The definition of a new status code ought to specify whether or not it is cacheable. Note that all status codes can be cached if the response they occur in has explicit freshnes

    Cache-Control: must-understand ディレクティブとは何か | blog.jxck.io
    k1LoW
    k1LoW 2023/12/12
  • 社内発OSSのドッグフーディングでみんな捗る! - KAYAC engineers' blog

    Tech KAYAC Advent Calendar 2023 の11日目です。 こんにちは。 専らドッグフードをべる側の長田です。 もちろんリアルな犬のはなしではなく、ドッグフーディングのはなしです。 https://ja.wikipedia.org/wiki/ドッグフーディング ドッグフーディング (英: dogfooding) または「自社のドッグフードをべる」「ドッグフードする」(Eating your own dog food、Drinking your own champagneとも言う)は、コンピュータ業界において、自社製品を開発して利用する組織の習慣で、組織が実際の使用法で日々自分たちで製品を利用しながら製品テストを行うことである。 カヤック由来のOSS 実はカヤック(社員名義も含む)はOSSなプロダクトをそこそこの数公開しておりまして、実際の業務でも使っています *1

    社内発OSSのドッグフーディングでみんな捗る! - KAYAC engineers' blog
    k1LoW
    k1LoW 2023/12/10
    良い。わかる。捗る。