Social Icons

ギャップを埋める: Ethers.jsでWeb3バックエンドを構築する

なぜEthers.jsなのか?それは、約束やコールバックを扱いながら、ブロックチェーンの謎を解読しようとすることを想像してみてください。頭痛の種のように聞こえませんか?Ethers.jsは、クリーンで直感的なAPIを提供し、Ethereumとのやり取りを簡単にしてくれる救世主のような存在です。それは、タコと格闘するのと子猫を撫でるのとの違いのようなものです。 Web3コマンドセンターのセットアップ まず最初に、開発環境を整えましょう。Node.jsとnpmがインストールされている必要があります。それが整ったら、新しいディレクトリを作成し、次のコマンドを実行します: npm init -y npm install ethers express dotenv 次に、server.jsというファイルに基本的なExpressサーバーを作成します: const express = require('express&...

22日前
3 分で読む

コードを解読する: プライバシーに敏感な人のための同型暗号バックエンド

ホモモルフィック暗号のバックエンドを実装する前に、それが実際に何であるか、そしてなぜ暗号コミュニティで話題になっているのかを理解しましょう。 ホモモルフィック暗号: 暗号化されたデータを復号化せずに計算を行うことができる暗号技術。 簡単に言えば、すべての材料が密封された不透明な容器に入ったままでケーキを焼くことができるようなものです。信じられない?それがHEの魔法です。 なぜ気にする必要があるのか? * プライバシーの強化: 機密データを公開せずに処理 * コンプライアンスの簡素化: 厳しいデータ保護規制に対応 * 信頼の問題なしのクラウドコンピューティング: 安全に計算をアウトソース * 量子コンピュータへの将来対応: 一部のHEスキームは量子耐性があります バックエンドの実装: ステップバイステップガイド さて、実際の実装に取り掛かりましょう。この例では、MicrosoftのSEAL(Simple Encrypted Arithmetic Library)を使用します。 ステップ1: 環境のセットアップ まず最初に、SEALをインストールしましょう。G...

22日前
4 分で読む

DaprとKubernetesサイドカーでバックグラウンドジョブをスケーリング: ポリグロットアクターの夢

注意力が金魚よりも短い方のために(ここでは非難しません)、要点は次のとおりです。Dapr(分散アプリケーションランタイム)とKubernetesのサイドカーが協力して、分散システムを簡単にし、バックグラウンドジョブのスケーリングを楽にします。どうやって?どんな言語やフレームワークとも相性の良いポリグロットアクターフレームワークを提供することで。まるでマイクロサービスのための万能翻訳機のようです! 問題: 猫を追いかける... いや、バックグラウンドジョブ 正直に言うと、分散システムでバックグラウンドジョブを管理するのは猫を追いかけるようなものです。あなたは次のような問題に直面しています: * 異なる言語とフレームワークがポリグロットパーティーを開催 * スケーリングの頭痛でアスピリンを手に取る * ソープオペラのプロットよりも複雑な状態管理 * かくれんぼのようなサービスディスカバリー しかし、恐れることはありません、勇敢な開発者よ!DaprとKubernetesのサイドカーがあなたの日(そしてあなたの正気)を救うためにここにいます。 登場: Dapr、あなた...

23日前
3 分で読む

LangChain + ベクターデータベース: AI駆動のRAGでAPIを強化

私たちは、LangChainを使用して、大規模言語モデル(LLM)の力とベクターデータベースの精度を組み合わせたバックエンドを構築します。その結果は?コンテキストを理解し、関連情報を取得し、人間のような応答を即座に生成するAPIです。それはただ賢いだけでなく、驚くほど賢いのです。 RAG革命:なぜ注目すべきか? コードを書く前に、なぜRAGがAIの世界で注目されているのかを説明しましょう: * コンテキストが重要:RAGシステムは、従来のキーワードベースの検索よりもコンテキストを理解し活用します。 * 新鮮で関連性のある情報:静的なLLMとは異なり、RAGは最新の情報にアクセスして使用できます。 * 幻覚の削減:取得したデータに基づいて応答を生成することで、RAGはAIの幻覚を減少させます。 * スケーラビリティ:データが増えるにつれて、AIの知識も増え、再トレーニングが不要です。 技術スタック:私たちの選択 手ぶらで戦いに挑むわけではありません。これが私たちの武器です: * LangChain:LLM操作のための万能ツール * ベクターデータベース:Pin...

23日前
3 分で読む

リアルタイム更新のストリーミング: ダイナミックダッシュボードのためのサーバー送信イベントとRedisストリーム

リアルタイムの難題 リアルタイムの更新は、現代のウェブアプリケーションの命です。株価の追跡、システムの健康状態の監視、またはユーザーを常に最新の状態に保つために、データを即座にプッシュする能力は非常に重要です。しかし、正直に言うと、WebSocketの実装は四角いペグを丸い穴に押し込むようなもので、うまくいくこともありますが、必ずしもエレガントではありません。 サーバー送信イベントの登場: 知られざるヒーロー サーバー送信イベント (SSE) は、クラスで静かにしているけれど、実はすべての答えを知っている子供のようなものです。これは、サーバーがHTTPを介してウェブクライアントにデータをプッシュするためのシンプルなプロトコルです。複雑なハンドシェイクやソケットの両端を開いたままにする必要はありません。HTTPが「任せて」と言っているようなものです。 なぜSSEなのか? * シンプルさ: ただのHTTPです。特別なプロトコルやライブラリは必要ありません。 * 一方向通信: サーバーからクライアントへのデータプッシュが必要なシナリオに最適です。 * 自動再接続: ブラウ...

24日前
3 分で読む

GoでのQUICとHTTP/3: APIパフォーマンスを強化する

TL;DR: QUICとHTTP/3 - あなたが必要だと知らなかったスピードデーモン QUICとHTTP/3は、最新のトランスポートおよびアプリケーション層プロトコルで、より速く、より信頼性の高い接続を約束します。これらは、Goバックエンドのニトロブーストのようなもので、特に理想的でないネットワーク条件下でレイテンシを削減し、パフォーマンスを向上させます。APIをターボチャージしてみませんか?さあ、始めましょう! なぜQUICとHTTP/3なのか?TCPはもう古い どうしてこれらが必要なのかを説明する前に、まずは理由を話しましょう。TCPとHTTP/2は長い間役立ってきましたが、時代遅れになりつつあります: * ヘッドオブラインブロッキング:1つのパケットが失われると、接続全体が止まります。痛いですね! * 遅い接続確立:挨拶するだけで複数の往復が必要?そんな時間はありません。 * 硬直化したミドルボックス:パケットに干渉するネットワークデバイス。困りますね。...

24日前
4 分で読む

コードを解読する: AWS Nitro Enclavesによる機密コンピューティング

機密コンピューティングの重要性とは? 詳細に入る前に、なぜ機密コンピューティングが技術界で注目されているのかを見てみましょう: * データ保護の強化:データを保存中や転送中だけでなく、処理中も保護します * 信頼性の向上:共有環境での機密作業に最適です * コンプライアンスの簡素化:金融や医療などの厳しい規制要件を満たすのに役立ちます ここで登場するのがAWS Nitro Enclavesです。これはAmazonの機密コンピューティングへの答えです。すでに安全なAWSインスタンス内に秘密の部屋を持つようなものです。すごいですよね? AWS Nitro Enclavesの始め方 まずは準備を整えましょう。必要なものは: * AWSアカウント(当然ですね!) * Nitro EnclavesをサポートするEC2インスタンス(すべてのインスタンスがサポートしているわけではありません) * AWS CLIとNitro CLIのインストール これらが揃ったら、最初のエンクレーブを作成しましょう。以下はそのための簡単なスニペットです: # エンクレーブを作成 nit...

25日前
3 分で読む

RowhammerでHTTPSを破る: クラウドプロバイダーにおけるECCメモリの脆弱性に関する実践ガイド

要約: HTTPSは思ったほど堅牢ではない 技術ニュースを短くまとめると: * Rowhammer攻撃はDRAMの物理特性を利用してビットを反転させることができる * かつて堅牢な防御と考えられていたECCメモリも脆弱になる可能性がある * クラウド環境は共有ハードウェアのため特にリスクが高い * HTTPSの暗号化キーが侵害され、データ漏洩の可能性がある では、このデジタルの穴をさらに掘り下げてみましょう。 Rowhammer入門: ビットが暴走するとき まず最初に: Rowhammerとは何でしょうか? それは、トールのあまり目立たないいとこではありません。これは、DRAMの物理的な配置を利用して隣接するメモリ行のビットを反転させるハードウェアの脆弱性です。簡単に言えば、古い家でドアを何度も叩いて、近くの壁に掛かっている写真が落ちるようなものです。 Rowhammerの動作を簡単に視覚化してみましょう: 通常のDRAM: Rowhammer攻撃: [0][0][0][0] [0][1][1][0] [0][1][0]...

1ヶ月前
4 分で読む

忘れられたスケジューラ調整の技術: NUMA対応のGoマイクロサービスのためのCFS最適化

NUMAの難題 スケジューラの調整に入る前に、背景を説明しましょう。非一様メモリアクセス(NUMA)アーキテクチャは、現代のサーバーハードウェアでは一般的になっています。しかし、ここでの問題は、多くの開発者がGoのマイクロサービスを、まるで均一なメモリアクセスで動作しているかのように開発・展開していることです。これは、四角いペグを丸い穴に無理やり押し込むようなもので、動作はするかもしれませんが、最適とは言えません。 GoマイクロサービスにおけるNUMAの重要性 Goのランタイムは非常に賢いですが、全知ではありません。NUMAに関しては、私たちが少し手助けをする必要があります。GoマイクロサービスにおいてNUMA対応が重要な理由は以下の通りです: * ローカルとリモートのNUMAノード間でメモリアクセスの遅延が大きく異なることがある * スレッドとメモリの配置が不適切だと、パフォーマンスが低下する可能性がある * GoのガベージコレクタのパフォーマンスがNUMAの影響を受ける可能性がある GoマイクロサービスでNUMAを無視することは、旅行の計画を立てる際に交通渋滞を無...

1ヶ月前
4 分で読む

信頼のコスト: Tendermint Coreを用いたビザンチン耐障害性Kafkaの実装

要約 今回は、Tendermint Coreを使用して、ビザンチン障害耐性(BFT)を備えたKafkaの実装方法を探ります。BFTの基本、Kafkaのような分散システムにおける重要性、そしてTendermint Coreがどのようにしてこの究極の障害耐性を実現するのに役立つかをカバーします。コードスニペット、アーキテクチャの洞察、そしていくつかの驚きが待っています。 なぜビザンチン障害耐性が必要なのか?そしてなぜKafkaなのか? 詳細に入る前に、まずは大きな疑問に答えましょう:なぜKafkaにビザンチン障害耐性が必要なのでしょうか?すでに障害耐性があるのでは? 確かに、Kafkaは堅牢に設計されていますが、ノードが「クラッシュストップ」方式で故障することを前提としています。つまり、ノードが正しく動作するか、完全に停止するかのどちらかを想定しています。しかし、嘘をついたり、騙したり、一般的に不正行為をするノードについてはどうでしょうか?ここでビザンチン障害耐性が役立ちます。 「ビザンチン障害耐性のあるシステムでは、一部のノードが侵害されたり悪意を持っていても、システム全体は...

1ヶ月前
6 分で読む

SMTソルバーの驚異的な効果: 依存関係の地獄をZ3で最適化するCI/CDパイプライン

要約: SMTソルバーが救いの手を SMT(理論に基づく充足可能性)ソルバー、特にZ3は、複雑な依存関係の衝突を効率的に解決することでCI/CDパイプラインを最適化するのに役立ちます。依存関係グラフを論理制約のセットとしてモデル化することで、Z3は手動での解決に比べてはるかに短時間で充足可能な解を見つけることができます。 依存関係のジレンマ 解決策に入る前に、問題を理解しておきましょう。依存関係の地獄は、見えないブロックで遊ぶジェンガのようなものです。一つの間違った動きで、プロジェクト全体が崩壊します。なぜこれが厄介なのか、以下の理由があります: * 推移的依存関係: ライブラリAがBに依存し、BがCに依存することで、知らないうちにバージョンを調整する羽目になります。 * バージョンの衝突: プロジェクトの異なる部分が同じライブラリの異なるバージョンを必要とすることがあります。頭痛の種です。 * ビルド時間の増加: プロジェクトが成長するにつれて、依存関係の解決とビルドにかかる時間も増加します。 もし魔法の杖を振って、これらの衝突を数秒で解決できるとしたらどうでしょう...

1ヶ月前
4 分で読む

分散バックエンドシステムにおける冪等性パターン: サービスを混乱させないために!

要約: 冪等性はあなたの新しい親友です 冪等性は、操作を繰り返してもシステムの状態が初回の適用を超えて変わらないことを保証します。これは、特にネットワークの問題、再試行、同時リクエストを扱う際に、分散システムの一貫性を維持するために重要です。以下の内容をカバーします: * 冪等なREST API: 同じ注文が5つより1つの方が良い理由 * Kafkaコンシューマーの冪等性: メッセージが正確に一度だけ処理されることを保証 * 分散タスクキュー: ワーカーが協力して動作することを確実にする 冪等なREST API: すべてを支配する1つの注文 まずはREST APIから始めましょう。これは現代のバックエンドシステムの基本です。ここでの冪等性の実装は、特に状態を変更する操作において重要です。 冪等性キーのパターン 効果的な手法の1つは、冪等性キーを使用することです。以下のように機能します: 1. クライアントは各リクエストに対して一意の冪等性キーを生成します。 2. サーバーはこのキーを最初の成功したリクエストの応答と共に保存します。 3. 同じキーを持つ後続...

1ヶ月前
4 分で読む

スケーラビリティのためのマイクロサービス最適化: 2025年の導入事例からの教訓

要約 マイクロサービスは素晴らしいですが、適切にスケールしないとシステムが崩壊する可能性があります。2025年の混乱の中で私たちのサービスを維持するための実践的な戦略を探ります。 マイクロサービスの概要 詳細に入る前に、なぜここにいるのかを思い出しましょう。マイクロサービスは次のことを約束しました: * NASAも羨むスケーラビリティ * カフェインを摂取したリスよりも速いデプロイ速度 * 人事部が喜ぶチームの自律性 ほとんどの場合、これらは実現されました。しかし、どんなアーキテクチャの選択にも落とし穴があります。私たちの場合、それは急速に成長するシステムで数百(または数千)のサービスを管理することでした。 教訓1: サービスディスカバリーは新しい親友 サービスを片手で数えられた日々を覚えていますか?それはもう過去の話です。2025年では、サービスディスカバリーは月曜日の朝のコーヒーと同じくらい必須です。 学んだこと: * 堅牢なサービスディスカバリーに投資する:Consulやetcdは私たちのアーキテクチャの基盤となりました。 * 自動化、自動化、自...

1ヶ月前
4 分で読む

高度なKubernetes CronJobパターン: 信頼性のあるスケジュールタスクの技術を極める

CronJobのジレンマ 本題に入る前に、少し背景を説明しましょう。KubernetesのCronJobはスケジュールされたタスクを実行するのに素晴らしいですが、いくつかの課題も伴います: * 冪等性の確保(同じジョブを2回実行すると大変なことになります) * 失敗を優雅に処理する(問題は必ず起こります、信じてください) * リソース制約の管理(クラスターは無限ではありません) * タイムゾーンと夏時間の扱い(時間は概念に過ぎませんよね?) これらの課題を認識した上で、さあ、作業に取り掛かりましょう。 1. 冪等性の重要性 まず最初に、CronJobを冪等にしましょう。これは、同じジョブを何度実行しても同じ結果が得られることを意味します。以下の方法で実現できます: ユニークな識別子を使用する 各ジョブ実行にユニークな識別子を生成します。これは実行時間やUUIDに基づくことができます。Bashでの簡単な例を示します: #!/bin/bash JOB_ID=$(date +%Y%m%d%...

1ヶ月前
4 分で読む

RedisストリームとLua: カスタムレート制限のためのダイナミックデュオ

なぜRedis StreamsとLuaなのか?このダイナミックデュオを解説 コードに手をつける前に、このコンビがレート制限のバットマンとロビンである理由を説明しましょう: * Redis Streams: 時間旅行ができる強力なメッセージキューと考えてください。 * Lua Scripts: Redisの万能ツールで、複雑なロジックを原子的に実行できます。 この2つを組み合わせると、ピーナッツバターとジャムのようなものです。ピーナッツバターが毎秒何百万ものリクエストを処理でき、ジャムが原子操作を実行できるとしたら、の話ですが。 設計図:カスタムレートリミッターの構築 計画は次の通りです: 1. Redis Streamsを使ってリクエストを記録します。 2. Luaスクリプトでスライディングウィンドウアルゴリズムを実装します。 3. サーバー負荷に基づいて動的にレートを調整します。 ステップ1:Redis Streamsでリクエストを記録 まずは、リクエストを記録するためのストリームを設定しましょう: import redis r = redis....

1ヶ月前
3 分で読む

私たちのコミュニティに参加 👋

Suddo.jp — テクノロジーニュース、ITコース、チュートリアル、プログラミング のフルメンバーシップを解除し、限定コンテンツの広範なコレクションを探索してください。

今すぐサインアップ、いつでもキャンセル可能

プランを見る