HN 日本語サマリー

← 一覧へ戻る
プログラミング

SQLite用ゼロ依存、超軽量データベースタイムマシン

A zero-dependency, ultra-lightweight database time machine for SQLite (github.com)

12 pointsby thunderbong2 コメント

要約

このツールは、SQLiteデータベースファイルをローカル開発中に任意の過去の状態に即座に巻き戻すことができる、ゼロ依存の超軽量WebアプリケーションおよびCLIデーモンです。PHP 8+とVanilla JSのみで構築されており、依存関係がありません。スナップショットの視覚的な比較やピン留め、エクスポート機能も備えています。

全文翻訳

⏱️ タイムトラベルSQLiteデバッガー (データベースタイムマシン) オープンソースで超軽量なWebアプリケーションおよびCLIデーモンで、ローカル開発中に破損または変更されたSQLiteデータベースファイルを、ビデオのスクラブのように、任意の過去の状態(例: 3分前)に追跡し即座に巻き戻すことができます。 🇹🇷 トルコ語ドキュメント: トルコ語ガイドについては、README.tr.mdファイルを参照してください。 🚀 特徴 ⚡ ゼロ依存: 純粋なPHP 8+とVanilla JSで構築されています。重いフレームワークやnpmパッケージは必要ありません。 🌐 完全な国際化 / 多言語対応: 翻訳ファイルはlang/ディレクトリに完全に分離されています。UIから動的に言語を切り替えることができます(例: 🇹🇷 トルコ語、🇬🇧 英語)。lang/xx.jsonファイルを追加または更新することで、簡単に貢献できます。 💾 SQLite WALモード対応: PRAGMA journal_mode=WAL; を実行しているデータベースの.sqlite-walおよび.sqlite-shmファイルをシームレスにバックアップおよび復元します。 🔍 視覚的なデータとテーブルの差分ビューア: 任意の履歴スナップショットと現在のライブデータベースとの間で、行数やテーブルの変更(ライブでは+3行)を復元前に比較できます。 📌 スナップショットのピン留めとタグ付け: 自動クリーンアップから保護するために、重要なスナップショットをワンクリックでピン留めできます。 📥 ワンクリックスナップショットエクスポート: 任意の履歴データベース状態を.sqliteファイルとして直接ダウンロードできます。 ⌨️ キーボードナビゲーションショートカット: 左矢印 (⬅️) および右矢印 (➡️) キーを使用して、タイムラインをスムーズにナビゲートできます。 🔄 自動インスタントスナップショット (ウォッチャーデーモン): バックグラウンドのCLIスクリプト (watcher.php) がデータベース.sqliteの変更を監視し、タイムスタンプ付きのスナップショット(バックアップ/1715000000_database.sqlite)を自動的に作成します。 🧹 自動クリーンアップ: 最大50個のバックアップを維持し、ディスクの散らかりを防ぐために、ピン留めされていない古いスナップショットを削除します。 📁 プロジェクトレイアウト time-travel/ ├── index.html # Chrono Console UI (Tailwind CSS + Vanilla JS + i18n Engine) ├── api.php # スナップショット一覧、復元、差分、エクスポート、i18n API ├── watcher.php # CLIバックグラウンドリスナーデーモン スクリプト (WAL & シグナル対応) ├── lang.php # 多言語 (i18n) ヘルパークラス ├── lang/ # JSON言語ファイルディレクトリ │ ├── tr.json # トルコ語ファイル │ └── en.json # 英語ファイル ├── database.sqlite # 対象SQLiteデータベースファイル (自動作成) ├── backups/ # タイムスタンプ付きバックアップディレクトリ (自動作成) ├── README.md # 主要な英語ドキュメント └── README.tr.md # トルコ語ドキュメント & ガイド 🌍 翻訳ガイド: 言語ファイルの追加と更新 1. 新しい言語の追加 ISOコードに一致するJSONファイル(例: lang/es.json, lang/de.json)をlang/ディレクトリ内に作成します: { "code": "es", "name": "Español", "flag": "🇪🇸", "cli": { ... }, "api": { ... }, "ui": { ... } } 2. 既存の翻訳の更新 lang/*.json内の任意のファイルを開き、文字列を編集します。変更は、サーバーを再起動せずにWeb UIおよびCLIに即座に反映されます。 💻 インストールと使用方法 1. ウォッチャーデーモンを開始します (ターミナル1) php watcher.php カスタム言語またはデータベースファイルを指定するには: php watcher.php database.sqlite en 2. ローカルWebサーバーを開始します (ターミナル2) php -S 127.0.0.1:8000 3. Webインターフェースを開く ブラウザを開き、以下にアクセスします: http://127.0.0.1:8000 🧪 テスト方法 Webインターフェースを開きます。「✍️ テストデータを追加 (DB書き込み)」をクリックします。 watcher.phpからのターミナル出力を観察します: [+] スナップショットを作成しました: 1715000000_database.sqlite タイムラインスライダーをドラッグするか、⬅️ / ➡️ 矢印キーを使用します。「🔍 差分を比較」をクリックして、テーブル行の変更を確認します。「⚡ この状態に復元」をクリックして、データベースを巻き戻します! 🔒 ファイルパーミッション (Linux / Unix) chmod -R 775 . 📄 ライセンス このプロジェクトはMITライセンスの下でオープンソースです。