タグ

ブックマーク / zenn.dev/voluntas (16)

  • Cloudflare の利用を徐々に減らして行くメモ

    概要 Cloudflare の利用を徐々に減らし、Akamai Connected Cloud へ移行しているのでそれを記録していくことにする。 移行理由 ただのアンマッチで、自分のサービス選定ミス。 自社の商用サービスが期待するレベルのサポートを得るには、Cloudflare エンタープライズプランが必須な事をわかっておらず、費用面でアンマッチになった。 サポートが必要になった状況 WebSockets · Cloudflare Network settings docs 商用環境で WebSocket を利用する場合はサポート契約が必要 サポートに問い合わせ、年 2400 ドルのビジネスプランを契約を推奨されたので契約 Cloudflare LB で WebSocket が突然切断される問題 問題の報告から 6 ヶ月以上経過しても、連絡も無く問題も継続して発生 8 ヶ月目にやっと返信が

    Cloudflare の利用を徐々に減らして行くメモ
  • Akamai Connected Cloud (Linode) メモ

    概要 Akamai Connected Cloud (Linode) へ、自社サービス、開発環境を移行していってるので、メモ。 前提 自社製品は音声、映像、データを超低遅延で配信するミドルウェア 自社製品は Raft ベースの分散システム 自社製品はパッケージソフトウェアとして販売している 自社サービスは自社製品のクラウド版として提供している 自社製品の検証サービスは Akamai Connected Cloud へ移行済み 自社製品の商用サービスも Akamai Connected Cloud へ移行準備中 Akamai Standard Support 契約済み https://www.akamai.com/site/ja/documents/product-brief/akamai-standard-support-product-brief.pdf なぜ Akamai Connec

    Akamai Connected Cloud (Linode) メモ
  • DuckDuckGo と NextDNS を使ってる

    まとめ 検索エンジンは DuckDuckGo を使っている DNS は NextDNS を使っている macOS / iOS / iPadOS で利用している 自社でも NextDNS を採用した ログはオフで運用 なぜ DuckDuckGo ? DuckDuckGoPrivacy, simplified. Google の検索結果があまりにも酷いと感じており、 uBlacklist を利用してブロックしていたがきりが無くなってきたので、切り替えた。 DuckDuckGo ブラウザは利用しておらず Chrome を継続して利用している Chrome Extension として DuckDuckGo Privacy Essentials を追加して利用している 特に困ることはない。今後も DuckDuckGo を使っていこうと思う。 DuckDuckGo Privacy Pro が日

    DuckDuckGo と NextDNS を使ってる
  • DuckDB メモ v1

    色々古くなったので 1 から書き直した DuckDB メモ v2 モチベーション JSONL を読み込んで解析するツールが欲しかった ログを読み込ませたいので圧縮機能は必須 自社のパッケージ製品が出力する JSONL を読み込んで解析できる仕組み 顧客が問題解析を気軽にできるようにしたい 顧客向けツールとして提供したい つまり顧客環境で動かしたい 1 バイナリ OSS として提供したい Apache-2.0 として公開したい ログファイルは大きくても 100 GB は行かない もともと Go + SQLite + JSONB で検討していた SQL で書きたい SQLite ファイルとして書き出したい SQLite ファイルフォーマットは信頼できる S3 などにファイルを置いておくだけにしたい クラウド版に組み込みたい 顧客毎に duckdb ファイル作ればいいのでは? duckdb ファ

    DuckDB メモ v1
  • Biome はじめました。

    モチベーション そもそも TypeScript や JSX に詳しくないのでどう書くのがいいのか悩みたくない ESLint や Prettier の設定を なんとなく 設定して使ってしまっている Formatter / Linter 関連のライブラリの内容を理解せずにアップデートしてしまっている 依存関係は減らしていきたい Rust で書かれた言語向けの高速なツールが好き Rye とか Ruff とか efmt とか Biome Biome は Rust で書かれた Formatter / Linter を含むツール。当におかしいくらい早い。 全然大きくないが、以下のソースコードに適用したときの速度。 $ pnpm run fmt > biome format --write ./src Formatted 114 file(s) in 11ms $ pnpm run lint > bi

    Biome はじめました。
  • Rye メモ

    $ rye install optuna Collecting optuna Downloading optuna-3.1.1-py3-none-any.whl (365 kB) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 365.7/365.7 kB 1.7 MB/s eta 0:00:00 Collecting alembic>=1.5.0 (from optuna) Downloading alembic-1.11.1-py3-none-any.whl (224 kB) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 224.5/224.5 kB 2.3 MB/s eta 0:00:00 Collecting cmaes>=0.9.1 (from optuna) Downloading cmaes-0.9.1-py3

    Rye メモ
    takutakuma
    takutakuma 2023/05/26
    Python のパッケージマネージャーメモ
  • 「sqlc で D1 向けの TypeScript コードを生成する」という記事を書くためのメモ

    -- name: GetOrgAccount :one SELECT sqlc.embed(account), sqlc.embed(org) FROM account JOIN org_account ON account.pk = org_account.account_pk JOIN org ON org_account.org_pk = org.pk WHERE org.id = @org_id AND account.id = @account_id; const getOrgAccountQuery = `-- name: GetOrgAccount :one SELECT account.pk AS account_pk, account.id AS account_id, account.display_name AS account_display_name, accou

    「sqlc で D1 向けの TypeScript コードを生成する」という記事を書くためのメモ
  • GistPad 雑録

    前提 ローカルとオンラインで同期してくれるメモツールが欲しかった 色々触ってみたがぐっとくるものがなく、VIM モードが最初からある HackMD を使っていた ふと Gist を VS Code で編集できたりしないのだろうかと思い拡張を検索してみたところ、GistPad を見つけた。アクティブに更新している Gist が大量にあり管理できるツールを探していただけ。 GistPad - Visual Studio Marketplace 結論 恐ろしく便利 VS Code 拡張が好きなだけ利用できる VS Code 拡張 クローズドなメモ帳としては文句ない 連携は向いていないので連携したい場合は別のツールを使うべき ネガティブはモバイルから利用できないことくらい 自分にとって何が GistPad は良かったか VS Code ベースなので VS Code の拡張が全て利用可能 VS Co

    GistPad 雑録
  • Meilisearch を利用して Sphinx で日本語全文検索を実現する

    モチベーション ドキュメントツール Sphinx から出力した HTML オンラインドキュメントに日語対応の全文検索機能を追加したい。 結果 オンラインドキュメントと日語全文検索 前提 日語全文検索に対応する OSS を利用する ドキュメントツールは Sphinx を利用する Sphinx の検索バーを置き換える サーバレスの検索は諦める サーバ運用を検討する 企業利用前提なので費用がかかっても良い 検索は難しいので検索部分は頑張らない 完璧は求めない reStructuredText を解析するのではなく HTML を解析して処理する Meilisearch を採用 いろいろ調べたりしていたが Meilisearch が良さそうと判断した。 Meilisearch語検索に対応している Rust で書かれており性能がでそう Rust であれば問題が起きた際、会社でなんとかできる

    Meilisearch を利用して Sphinx で日本語全文検索を実現する
  • Cloudflare R2 メモ

    課金体系 無料枠 ingress / egress 転送量 無料 10 GB / month 無料容量 10 G Class A Operations 1,000,000 requests / month ListBuckets, PutBucket, ListObjects, PutObject, CopyObject, CompleteMultipartUpload, CreateMultipartUpload, UploadPart, and UploadPartCopy Class B Operations 10,000,000 requests / month HeadBucket, HeadObject, and GetObject Free operations DeleteObject, DeleteBucket and DeleteMultipartUpload. 有料

    Cloudflare R2 メモ
  • k6 + Echo + go-sqlite3 + Litestream + Linode Object Storage 簡易負荷試験メモ

    注意 とっても雑な検証なので参考などにはしないでください。ちょっとした興味で自分用に調べてるだけです。 結論 Echo を利用した秒 1 万リクエストを超えないウェブサービスで、かつ SQLite の機能で要件がみたせるのであれば、SQLite + Litestream 十分と判断出来る結果だった。 利用技術 Load testing for engineering teams | Grafana k6 Grafana に買収された Go で書かれた負荷試験ツール JS でシナリオが書ける Litestream - Streaming SQLite Replication SQLite リアルタイムバックアップツール mattn/go-sqlite3: sqlite3 driver for go using database/sql Litestream も使ってる 安心と信頼の matt

    k6 + Echo + go-sqlite3 + Litestream + Linode Object Storage 簡易負荷試験メモ
  • S3 互換オブジェクトストレージまとめ

    概要 S3 互換オブジェクトストレージの サービス を自分のためにまとめている。サービスとして提供されているのが前提で、 自前運用は範囲外 。 目的 以下の内容に絞って調べている。 日リージョンの有無 egress の費用 容量の費用 追加調査予定 PutObject 対応 PresignedGetObject 対応 S3 互換 S3 互換の条件は s3cmd や aws sdk s3 がそのまま利用できる事。細かい互換性は気にしない。 比較用の AWS S3 https://aws.amazon.com/jp/s3/pricing/ 最小プラン Tokyo / Osaka リージョンあり 1 GiB 追加の egress 転送量は 0.114 ドル 1 GiB の追加容量は 0.025 ドル TODO SLA 書いてるのと書いてないのがあって拾いにくい 対象外 Azure は S3 互

    S3 互換オブジェクトストレージまとめ
  • Cloudflare Workers メモ

    前提 Cloudflare Workers は知っていたが最近触って、番環境へ導入済み。 普段は Erlang/OTP を書いてるので JavaScript は専門外 自社サービスの番環境には Cloudflare Workers を導入済み OpenResty はエンタープライズ大規模環境向けで設計/開発経験あり 雑感 Cloudflare Workers® ざーっと見た感じ Nginx + Lua (OpenResty) のマネージド、さらに Edge で動かしてくれて、スケールも勝手にしてくれるバージョンという認識。実際 shared.dict / redis の代わりが Workers KV が利用できる。 さらにローカル開発環境が充実している、デプロイ後のログ確認も管理画面から簡単に利用できる。 Lua Introducing Cloudflare Workers これを読む

    Cloudflare Workers メモ
  • ドキュメント駆動開発v2

    前提 ここで言っているドキュメントは仕様書ではなく、顧客向け製品ドキュメント。 ミドルウェア製品を開発 小さなチーム パッケージ製品とパッケージ製品のクラウド版 そのため顧客に提供するドキュメントが必ず必要 GitHub を利用 自分で開発する場合のフロー 作りたい機能をぼんやりでいいので GitHub Issue に追加する feature ブランチを切る デザインドキュメントをリポジトリの doc/ 以下に書く デザインドキュメントに合わせてコーディングを進めてなんとなく動くところまで作る 動かなくてもいいのでイメージを膨らませるためにコードを書いてみる デザインドキュメントは書き捨て前提で、とにかくメモを書く 製品ドキュメントを書き始めて、一旦書き終える ブランチマージに向けてコーディングを進める 書ける範囲でテストを書く ドキュメントを平行して修正する プルリクエストをだしてレビュ

    ドキュメント駆動開発v2
  • Clubhouse リアルタイム配信の仕組みについて (解説編)

    Cloubhouse はすでに OSS である Janus Gateway に切り替えており Agora は使用していないようです ライセンス Creative Commons — 表示 - 非営利 - 改変禁止 4.0 国際 — CC BY-NC-ND 4.0 前提 ざっくりと雑に解説。 どんな技術を使っていてこんな感じだろうという妄想は以下をどうぞ。 Clubhouse リアルタイム配信の仕組みについて (妄想編) 著者 商用 WebRTC SFU 開発者 WebRTC プロトコルスタック実装者 End to End Encryption プロトコルスタック実装者 Clubhouse の仕組みはとてもシンプルで配信者が N 人で、それを数千人が聞くという co-streaming と呼ばれる仕組みの一つ。この方式は今までは主に映像ありでパネルディスカッション的な使い方が主だっだ。それを

    Clubhouse リアルタイム配信の仕組みについて (解説編)
  • Clubhouse リアルタイム配信の仕組みについて (妄想編)

    Cloubhouse はすでに OSS である Janus Gateway に切り替えており Agora は使用していないようです ライセンス Creative Commons — 表示 - 非営利 - 改変禁止 4.0 国際 — CC BY-NC-ND 4.0 前提 @suthio_さんがつぶやいていたのがきっかけ https://twitter.com/suthio_/status/1353945619577008128?s=20 招待してくれた @dmnlk さんに感謝 DNS パケット見ただけ 他の方の解析は見ていない クライアント側の処理は知らない 気が向いたら更新している 著者 商用 WebRTC SFU 開発者 WebRTC プロトコルスタック実装者 End to End Encryption プロトコルスタック実装者 IRIAM 配信サーバ設計者 妄想 求人にメディアサーバ

    Clubhouse リアルタイム配信の仕組みについて (妄想編)
  • 1