Redisを用いた分散ロックの実装と応用
分散ロックの基本概念
分散ロックは、複数プロセス間での可視性と相互排他を実現するメカニズムです。主な目的は、複数インスタンスが共有リソースへのアクセスを調整し、プログラムの直列実行を保証することにあります。
分散ロックの必須条件
可視性: すべてのプロセスが同じ状態を認識可能
相互排他: 同時に一つのプロセスのみがロックを保持
高可用性: システ ...
6月28日 19:39 投稿
OpenResty と Lua ライブラリを活用した WAF 構築手法
環境の準備とパッケージインストール
OpenResty ベースのセキュリティゲートウェイを構築する際、まずは基盤となるミドルウェアと依存ライブラリのセットアップが重要です。RHEL クラスターのディストリビューションにおいて、公式のリポジトリ登録から始めてパッケージ管理を行います。
# リポジトリ設定(RHEL 8 以降は dnf を使用)
wget https://openresty.org/packag ...
6月25日 22:50 投稿
Redisによる複数ルールレートリミットと重複送信防止の実装方法
Redisを利用したレートリミット実装は一般的ですが、多くの場合は単一ルール(例:1分あたり1回アクセス、60分あたり10回アクセスなど)に限定されています。しかし、実際のシステムでは一つのインターフェースに対して複数のルールを同時に適用する必要がある場合があります。特に分散システム環境では、この課題をどのように解決すればよいでしょうか。ここでは、Redisを ...
6月25日 16:04 投稿
libmoon の構造と設定ファイルの使い方
ディレクトリ構成の概要
libmoon は高性能パケット処理を実現する Lua ベースのフレームワークであり、そのプロジェクト構成は明確に分離されています。以下が主要なディレクトリ構成です。
libmoon/
├── bin/
├── build/
├── config/
├── deps/
├── examples/
├── lib/
├── scripts/
├── src/
├── test/
├── CMakeLists.txt
├── README.md
└── LICENSE
bin/: コンパイ ...
6月22日 21:05 投稿
STM32F407でのLuaによるシリアル通信を利用した機能ホットアップデート
STM32F407でのLuaによるシリアル通信を利用した機能ホットアップデート
目次- STM32F407でのLuaによるシリアル通信を利用した機能ホットアップデート
1.Luaリソースの準備
2.全体のアプローチ
3.Luaの移植
ステップ1
ステップ2
ステップ3
ステップ4
ステップ5
ステップ6
4.Luaの基本的な使用法
ステップ1 基本的なLua関数の作成
ステップ2 Lua関数の登録
ステップ3 Lua文 ...
6月15日 18:58 投稿
Air780EG における sys ライブラリを活用した LuaTask 非同期処理の実装
LuaTask フレームワークの概要
LuaTask は、Lua 言語のコルーチン機能を利用して擬似的なマルチタスク環境を実現するフレームワークです。従来のタイマーベースの遅延処理とは異なり、複数のタスクを並列的に記述することが可能になります。この框架を利用するには、まず sys ライブラリをロードし、プログラムの末尾で sys.run() を呼び出してスケジューラを起動する必要 ...
6月11日 16:40 投稿
pfUI アドオン構成と設定メカニズムの解析
プロジェクトディレクトリ構成
pfUI のソースコードは、機能ごとにモジュール化されたディレクトリ構造を採用しています。主要なフォルダの役割は以下の通りです。
pfUI/
├── addons/
│ └── pfUI/
│ ├── api/ (外部 API 連携定義)
│ ├── core/ (メインロジックおよび初期化)
│ ├── modules/ (機能別モジュール)
│ ├── ski ...
6月8日 23:15 投稿
NginxにGeoIP2モジュールを導入する手順
既存のNginx設定をバックアップ
Nginxバージョンを切り替え(ソースコードディレクトリ /www/server/nginx/src を生成するため)
GeoIP2モジュールの依存関係をインストール
libmaxminddbをダウンロード
Releases · maxmind/libmaxminddb (github.com)
tar zxvf libmaxminddb-1.10.0.tar.gz
cd libmaxminddb-1.10.0
./configure --prefix=/usr/local/libmaxminddb
...
5月30日 07:51 投稿
OpenResty パッケージ管理ツール opm の導入と設定詳細
OpenResty 公式パッケージマネージャ opm の概要
opm(OpenResty Package Manager)は、Perl で実装された OpenResty 標準のパッケージ管理ツールです。Node.js の npm や Perl の CPAN に相当する機能を持ちます。中央リポジトリ(opm.openresty.org)から Lua ライブラリの取得や、自作ライブラリの公開を可能にします。
LuaRocks との比較
OpenResty 環境において、一般 ...
5月27日 09:01 投稿
合宙Air780EG開発ボードチュートリアル - sysライブラリの紹介 (LuatOSベース)
sysライブラリ
sysライブラリのインターフェース関数については、sysインターフェース関数を参照してください。
一、sys.taskInit(func, arg1, arg2, argN)
タスク(コルーチン)を作成します。
パラメータ:
function: 実行する関数。匿名関数、ローカル関数、またはグローバル関数を指定できます。
any: 渡す引数1(任意)
any: 渡す引数2(任意)
any: 渡す引数N(任意 ...
5月25日 08:31 投稿