こんにちは、クラウド請求書受領サービス「Bill One」の開発に携わっているソフトウェアエンジニアの加藤です。Bill OneはB2BのマルチテナントSaaSであり、データベースとして Cloud SQL 上のPostgreSQLを利用しています。従来はマルチテナントのデータを分離するために、テナントごとにPostgreSQLのスキーマを分けていましたが、2020年12月にRow-Level Securty(行レベルセキュリティ。以降RLSと表記)による分離に移行しました。 本稿では、移行の背景とRLS組み込みにあたって考慮したポイントをご紹介します。 マルチテナントSaaSのテナント分離 マルチテナントSaaSにおけるテナント分離方法はいくつか知られており、大きく次の3つに分けられます。 アプリケーションの実行環境ごと完全に分離する データベースのみをインスタンスやスキーマで分離する
Playgroundpplx-apiTry PerplexityLLM served by Perplexity LabsHello! How can I help you?CopyCopy0.00 secClear Chat
最近いろんなプロジェクトをNext.js v14からv15にアップデート作業している@zaruです、こんにちは。 Next.js v15の大きな変更点はリリースノートなどで発表されていますし、アップグレードをサポートする codemod もあり、大半のプロジェクトは npx @next/codemod@canary upgrade latest を実行するだけで自動で修正されます。 しかし、Next.js v15のリリースノートには書かれていない(と思う)のですが、Next.js v15にはフォームをサブミットすると、フォーム内容がリセットされるように変更されています。これはv14とは異なる挙動です。 「フォームをサブミットすると、フォーム内容がリセットされる」とテキストで書くと、それはそうでしょう。なに当たり前のこと言ってるんだ?となるかもしれません。 実際に挙動を確認したほうが早いので
// パターン1 const handleChange = () => { setInputNumber(inputNumber + 1) } // パターン2 const handleChange = () => { setInputNumber((prev) => prev + 1) } // inputNumber === 0 とする // パターン1 const handleChange = () => { setInputNumber(inputNumber + 1) setInputNumber(inputNumber + 1) } // パターン2 const handleChange = () => { setInputNumber((prev) => prev + 1) setInputNumber((prev) => prev + 1) } 結果はパターン1 が inp
タイトルの通り、めちゃくちゃ良さげなライブラリ react-call を見つけたので紹介するコーナー 実際の動きはわかりやすいデモページがあるので見てください👍 react-call とは react-call がもたらす効果は「ReactComponent を手続き的に処理できるようにする」というのが私の理解です。 これが何を意味するのかというと、Modal や Confirm のような「別のコンポーネントから任意のタイミングで呼び出したい(≒表示したい)」また「その結果(≒値など)を受け取りたい」というごく一般的な要件をシンプルに解決します🙌 詳しく見ていきましょう! window.confirm との比較 下記は README にある例です。
今日はZeroTrustサービスであるCloudflare One の一機能であるRemote Broser Isolationについて設定手順書ご紹介します。 Remote Browser Isolation とは Remote Browser Isolation (RBI) は、ウェブブラウジング中に発生する可能性のあるセキュリティリスクを隔離する技術です。この技術は、ユーザーがウェブサイトを訪れる際に、ブラウザの実行環境をユーザーのデバイスとは別の、Cloudflare のインフラストラクチャ上にある仮想環境で実行させることによって、デバイスへの直接的なリスクを防ぎます。 危険なサイトはドメイン単位等でアクセスさせない、という制御は勿論Cloudflare Oneでは可能です。一方で業務上アクセスが迫られるケースもあります。そのような場合、以下の動作による危険性をローカルブラウザから
Train 400x faster Static Embedding Models with Sentence Transformers TL;DR This blog post introduces a method to train static embedding models that run 100x to 400x faster on CPU than state-of-the-art embedding models, while retaining most of the quality. This unlocks a lot of exciting use cases, including on-device and in-browser execution, edge computing, low power and embedded applications. We
Are you using Simple.css? If you are, it would be great if you considered buying me a coffee to say thanks. Things like this really help open source software thrive. You can Buy Me A Coffee or even sponsor me on GitHub. ❤️ Simple.css is a CSS framework that makes semantic HTML look good, really quickly. Simple.css is mostly classless, which means that you can integrate Simple.css with plain HTML a
◆2025/1/23 (水) 追記 本記事は、多くの方々から反響をいただき、大変感謝しております。一方で、ご指摘として「再現性のなさ」に関するご意見が多く寄せられました。 誤解を避けるためにお伝えしたいのは、本記事の主旨は「鬱を治す方法」を提示するものではなく、一つのコミュニケーションの在り方について考察した内容であるという点です。この点をご理解いただけますと幸いです。 記事の内容につきましては、一般化することを目的としておらず、あくまで「私の身の回りでおこった珍しい事例」をもとにしております。そのため、普遍的な結論として受け取るのではなく、おひとつの参考としてご覧いただければと存じます。 また、記事のタイトルにつきましても、誤解を招かないよう、まるで適切な方法であるかのような表現を変更し、より主観的なものであることが分かるように変更いたしました。 【記事名の変更】 2025/1/15:初
ADRは書く機会より読む機会のほうが多いのだけど、読んでいて、冗長だったり、長いと感じると、もっと小さくならないの?って聞きたくなる。 それと同時に、失礼なことをしてないかハラハラする。 これがコードだったら、文のレベルと振る舞いのレベルは切り離されているので、振る舞いを変えずにリファクタリングして小さくできることは明らか。 文章の場合は、削ると、文章が働く役割は自明でないことから、せっかく書いたんですけど、みたいな気分になるような気がする。 文章を扱うときには、問題vs私達になりにくくて、容易に人vs人になってしまう。 普段、編集提案機能のないツールでADRを書いていて、議論のコーナーを作って自然文でやり取りしているのだけど、これではツールの支援が足りなくて、めんどくさい。 レビュワーという立場でファシリテーションしに行くか、意見だけ書いて著者にファシリテーションしてもらうかなど、どの強
Go1.24 が2月11日にリリースされ、リリースノートやブログが公開されています。この記事では前回の Go1.23 New Features に引き続き、Go1.24 の新機能の中から気になった機能を紹介していきます。 spec Generics版のtype alias(generic type alias)がサポートされるようになります。type alias自体はGo1.9から存在し、主に型を別のパッケージに移行するリファクタリングのために利用されていましたが、Genericsでも同様の機能が必要となり今回追加されました。 type aliasを使うのは容易ですが、Genericsが導入されたGo1.18(2022年のwinter release)からgeneric type aliasが導入されるのに時間がかかった背景としては、静的解析に用いるパッケージgo/typesやコンパイラに
[email protected]から実験的にミドルウェアのテストヘルパーが追加されました。 なぜかv15.1のリリースノートにも書かれてないため、まだまだ破壊的な変更が入るかもしれない点に注意が必要です。 このヘルパーはApp Router, Pages Router両方共に対応しています。 Routing: Middleware | Next.jsLearn how to use Middleware to run code before a request is completed. 提供されているヘルパー 2つのヘルパーが提供され、2軸でのテストを行っていきます。 unstable_doesMiddlewareMatch そのミドルウェアがリクエストにマッチするかどうかをテストする ミドルウェアのconfig と next.config.ts での rewrites の両方共を確認
Bartosz Milewski "Category Theory for Programmers" 原文: https://bartoszmilewski.com/2014/10/28/category-theory-for-programmers-the-preface/ pdf: https://github.com/hmemcpy/milewski-ctfp-pdf 原文は pdf, TeX ソース, 画像など全て CC BY-SA 4.0 ライセンスで無料公開されています.当和訳文も同ライセンスで無料公開します. https://creativecommons.org/licenses/by-sa/4.0/ この和訳プロジェクトは現在進行中です.和訳に協力してくださる方は是非ご連絡下さい.ガイドライン: https://zenn.dev/taketo1024/articles/4
Upgrade Path Users that does not match either of the following conditions should be able to upgrade to a newer version of Vite that fixes the vulnerability without any additional configuration. Using the backend integration feature Using a reverse proxy in front of Vite Accessing the development server via a domain other than localhost or *.localhost Using a plugin / framework that connects to the
AIの進化で、マーケティングの定型業務やデータ解析は大半が自動化される一方、より重要度を増すのは「人間だからこそ発揮できる力」だと思います。それは私がマーケティングは経営であるというスタンスであり、知識やフレームに溺れたり、打ち手の美しさを競ったりするのではなく事業を成長させ続けることこそが最上位であるという価値観に基づいています。 前提として、私自身がAIという時代の変曲点で変化・進化できないと5年後仕事が無くなるというレベルの危機感でいるので年末年始はずっとAIを使い倒し解像度を上げる中で書いたものです。 定型的な作業、短期的な数値最適化、仮説出しは容易になる反面、リスクを取った新規施策や独創的な戦略こそが差別化のカギとなります。沢山の答えの中から正解を探す「強い意思決定」と正解に導く「組織全体を動かすリーダーシップ」が重要だと考えます。 そうした時代でマーケターが生き抜くための私なり
この記事は毎週必ず記事がでるテックブログ "Loglass Tech Blog Sprint" の 68 週目の記事です! 2 年間連続達成まで 残り 38 週 となりました! はじめに(前置き) こんにちは、世界。 ログラスでQAエンジニアを担当している大平です。 突然ですが、みなさん、仕様のレビューをしていますか?レビューをしている場合は、どうやって行っていますか? 私はQAエンジニアとして、過去に実施したテスト経験や起きた不具合、既存の機能との整合性や矛盾点、競合製品がどうなっているか、テストのしやすさなどの観点でレビューを実施します。 (ちなみにレビューについては、書籍「間違いだらけの設計レビュー」がお勧めです) ただ、過去を振り返ると、私の技量が足りないため、仕様の詳細な部分の指摘が漏れ、後工程で発覚することがQAエンジニアのキャリアの中で何度もありました。もちろん、複雑な仕様に
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く