من فضلك تسجيل الدخول أو تسجيل لتفعل ذلك.

في عالم التطوير، تعتبر إدارة قواعد البيانات وتتبع التغييرات فيها تحديًا مستمرًا، خاصة مع قواعد البيانات الخفيفة مثل SQLite. كم مرة تمنيت لو أن بإمكانك استعادة قاعدة بياناتك إلى حالتها قبل ثلاث دقائق؟ الآن، أصبح هذا ممكنًا بفضل أداة مفتوحة المصدر وخفيفة الوزن للغاية، تعمل كآلة زمن فعلية لقاعدة بيانات SQLite الخاصة بك. هذه الأداة، المصممة خصيصًا لبيئات التطوير المحلية، تتيح لك تتبع التعديلات واسترجاع أي ملف قاعدة بيانات تالف أو معدّل إلى أي حالة سابقة، تمامًا كما تسترجع مقطع فيديو.

الميزات الرئيسية

  • خالية من التبعيات: بُنيت باستخدام PHP 8+ و Vanilla JS فقط، لا تتطلب أي أطر عمل ثقيلة أو حزم npm.
  • دعم كامل للغات متعددة (i18n): ملفات الترجمة منفصلة تمامًا في مجلد lang/. يمكنك التبديل بين اللغات ديناميكيًا من واجهة المستخدم (مثل التركية والإنجليزية)، والمساهمة بسهولة بإضافة أو تحديث ملفات lang/xx.json.
  • متوافقة مع وضع WAL في SQLite: تقوم بعمل نسخة احتياطية واستعادة سلسة لملفات .sqlite-wal و .sqlite-shm لقواعد البيانات التي تعمل بوضع PRAGMA journal_mode=WAL;.
  • عارض مرئي للبيانات واختلافات الجداول: قارن عدد الصفوف وتغييرات الجداول (مثل: +3 صفوف في الوقت الفعلي) بين أي لقطة تاريخية وقاعدة البيانات الحالية قبل الاستعادة.
  • تثبيت وتسمية اللقطات: ثبّت اللقطات المهمة بنقرة واحدة لحمايتها من التنظيف التلقائي.
  • تصدير اللقطات بنقرة واحدة: حمّل أي حالة تاريخية لقاعدة البيانات مباشرة كملف .sqlite.
  • اختصارات لوحة المفاتيح للتنقل: تنقل بسلاسة عبر المخطط الزمني باستخدام مفتاحي السهم الأيسر (⬅️) و السهم الأيمن (➡️).
  • لقطات فورية تلقائية (خلفية المراقبة): يقوم سكريبت سطر الأوامر (watcher.php) بالاستماع للتعديلات في database.sqlite وينشئ تلقائيًا لقطات ذات طابع زمني (مثل: backups/1715000000_database.sqlite).
  • تنظيف تلقائي: يحافظ على ما يصل إلى 50 نسخة احتياطية، مع إزالة اللقطات القديمة غير المثبتة لمنع فوضى القرص.

هيكل المشروع

يتكون المشروع من مجموعة من الملفات المنظمة بعناية لضمان الأداء والسهولة. يتضمن الملف index.html واجهة المستخدم الرسومية، بينما يدير api.php وظائف عرض اللقطات واستعادتها وتصديرها. السكريبت watcher.php يعمل كخلفية للاستماع للتغييرات في قاعدة البيانات، ويدير lang.php الدعم متعدد اللغات. تقع ملفات اللغات في مجلد lang/، وتُنشأ قاعدة بيانات database.sqlite ومجلد النسخ الاحتياطية backups/ تلقائيًا.

دليل الترجمة: إضافة وتحديث ملفات اللغات

1. إضافة لغة جديدة

لإضافة لغة جديدة، قم بإنشاء ملف JSON داخل مجلد lang/ يتوافق مع رمز ISO الخاص باللغة (مثل lang/es.json أو lang/de.json).

يجب أن يحتوي الملف على حقول مثل code و name و flag، بالإضافة إلى أقسام خاصة بترجمات واجهة سطر الأوامر (cli) وواجهة برمجة التطبيقات (api) وواجهة المستخدم (ui).

2. تحديث الترجمات الحالية

لتحديث الترجمات الموجودة، افتح أي ملف في lang/*.json وقم بتعديل النصوص. ستظهر التغييرات فورًا في واجهة الويب وواجهة سطر الأوامر دون الحاجة لإعادة تشغيل الخادم.

التثبيت والاستخدام

1. بدء خدمة المراقبة (Watcher Daemon) في الطرفية الأولى

لتحديد لغة مخصصة أو ملف قاعدة بيانات:

قم بتشغيل الأمر التالي: php watcher.php database.sqlite en (يمكنك استبدال en برمز اللغة المطلوبة).

2. بدء خادم الويب المحلي في الطرفية الثانية

بعد ذلك، قم بتشغيل خادم ويب محلي (مثل خادم PHP المدمج أو Apache/Nginx) في طرفية أخرى.

3. فتح واجهة الويب

افتح متصفحك وتوجه إلى العنوان: http://127.0.0.1:8000.

كيفية الاختبار

  • افتح واجهة الويب في متصفحك.
  • انقر على زر إضافة بيانات اختبار (كتابة DB).
  • راقب مخرجات الطرفية الخاصة بـ watcher.php، حيث ستلاحظ رسالة مثل: [+] Created snapshot: 1715000000_database.sqlite.
  • اسحب شريط التمرير الزمني أو استخدم مفتاحي السهم الأيسر (⬅️) و السهم الأيمن (➡️) للتنقل.
  • انقر على مقارنة الاختلافات لفحص التغييرات في صفوف الجداول.
  • انقر على استعادة لهذه الحالة لإعادة قاعدة بياناتك إلى نقطة زمنية سابقة!

أذونات الملفات (لينكس / يونكس)

من المهم التأكد من تعيين الأذونات الصحيحة للملفات والمجلدات لضمان عمل الأداة بشكل سليم في بيئات لينكس ويونكس.

الترخيص

هذا المشروع مفتوح المصدر ويخضع لترخيص MIT.

توفر هذه الأداة حلاً مبتكرًا وفعالًا للمطورين الذين يتعاملون مع قواعد بيانات SQLite، مما يوفر عليهم الوقت والجهد في عمليات تصحيح الأخطاء واستعادة البيانات. بفضل تصميمها الخفيف والميزات القوية، تمثل إضافة قيمة لأي بيئة تطوير محلية، تضمن لك راحة البال والقدرة على التجربة بثقة.

استغلال نماذج اللغة الكبيرة في التعلم العميق للمواضيع المعقدة: مقاربة المحاكاة التفاعلية
كيفية استخدام وضع الصوت في كلود: دليلك الشامل للتفاعل الصوتي مع الذكاء الاصطناعي

Reactions

0
0
0
0
0
0
بالفعل كان رد فعل لهذا المنصب.

ردود الفعل