في بداية العام الماضي ، تحدثت عن مشروع
بونساي ، وهو محرك لإنشاء ويكي عائلي وألبوم صور مفتوح المصدر. منذ ذلك الحين ، تم تطوير المشروع بشكل مطرد. على مدار العام ، تم صنع العديد من الميزات ، بفضل المحرك الذي أصبح الآن أكثر سهولة لمحاولة لنفسك وأكثر متعة في الاستخدام في المستقبل.
تحت الخفض - تفاصيل ، خطط للمستقبل وقليل مكافأة.
صورة عامل الميناء
كان تثبيت الإصدار الأول من Bonsai عملية شاقة للغاية نظرًا لوجود عدد كبير من التبعيات: فهو يتطلب وقت تشغيل .NET Core و PostgreSQL و Elasticsearch (مما يعني Java Runtime و plug-in لدعم المورفولوجيا الروسية) ، كما يحتاج التجميع إلى .NET Core SDK و NodeJS لبناء الواجهة ... حتى على خلفية التعقيد العالمي لتطوير الويب الحديث ، كانت هذه مهمة فقط للإرادة القوية وكثير من المستخدمين المهتمين في البداية ألقوا بها في منتصف الطريق.
توقف عن ذلك!
الآن بونساي يرتفع في ثلاثة إجراءات الابتدائية في الدقيقة الواحدة:
- تحميل عامل ميناء compose.yml .
- أدخل
@@YOUR_EMAIL@@
و @@YOUR_IP@@
القيم المطلوبة. - تشغيل
docker-compose up -d
كلمة المرور إذن
في الإصدار الأول ، تم استخدام نوع واحد فقط من التفويض - من خلال الشبكات الاجتماعية. كانت هناك أسباب كثيرة لهذا:
- تسجيل الدخول بنقرة واحدة
- من خارج الصندوق يعطى 2FA ، استعادة كلمة المرور وغيرها من فحوصات الأمان
- الحفاظ فقط في رمز بونساي
- يمكنك الحصول على بعض البيانات من الملف الشخصي أثناء التسجيل
لسوء الحظ ، تسبب هذا في عدد من المشاكل:
- خطوة صعبة للغاية أثناء التثبيت الأولي
- لا يمكنك منح حق الوصول إلى شخص ليس لديه شبكات اجتماعية (على سبيل المثال ، أحد الأقارب المسنين)
- بالنسبة لبعض البيانات (الجنس ، العمر) ، تتطلب الشبكات الاجتماعية التحقق اليدوي من طلبك
لذلك ، تمت إضافة نوع آخر من التفويض - عن طريق تسجيل الدخول وكلمة المرور ، والتي يتم تمكينها بشكل افتراضي.
يمكنك الآن تخطي خطوة إنشاء تطبيق ترخيص في الشبكة الاجتماعية. بعد البداية ، ستقوم بونساي بعرض تسجيل حساب مسؤول ، حيث ستحتاج إلى إدخال كلمة المرور المطلوبة - وستعمل.
يمكنك إنشاء حساب جديد بكلمة مرور في لوحة المسؤول:
هناك العديد من الأشياء التي يجب مراعاتها عند استخدام مصادقة كلمة المرور:
- لا يمكن للمستخدم استعادة كلمة المرور الخاصة به - فقط المسؤول يمكنه القيام بذلك. إذا كان هناك مسؤول واحد فقط ، فهو مخول بكلمة مرور ونسي كلمة المرور هذه - سيكون عليك استخدام برنامج نصي لإعادة التعيين ، والذي يجب تنفيذه مباشرة في قاعدة البيانات.
- بعد 10 محاولات فاشلة على التوالي ، يتم حظر الحساب أيضًا. لفتح ، يجب عليك تغيير كلمة المرور. بالإضافة إلى الإجراءات الخاصة بك ، يمكن لروبوتات الزاحف الخبيثة أن تحظر كلمة المرور تلقائيًا.
- يمكن أن يكون للحساب الواحد نوع واحد فقط من التفويض لكل مرة. أولاً ، لا يمكنك إنشاء حساب باستخدام كلمة مرور ، ثم إضافة تسجيل دخول إضافي إليه عبر الشبكات الاجتماعية أو لا يمكنك استبداله بالوسائل المعتادة على الإطلاق - فقط من خلال التلاعب اليدوي بقاعدة البيانات.
تقديم شجرة عائلة جانب الخادم
يعد بناء أشجار العائلة تلقائيًا واحدًا من أهم ميزات Bonsai ، ولكنه أيضًا من أكثر الميزات إثارة.
كما قلت في مقال سابق ، فإن ترتيب الكتل تلقائيًا بطريقة مثالية يعد مهمة صعبة للغاية. يكتب الناس ورقات علمية حول هذا الموضوع ، ويستثمرون آلاف الساعات البشرية ويبيعون المكونات الجاهزة مقابل المال المجنون. لحسن الحظ ، تمكنت من العثور على مكتبة مجانية
ELK.js ، والتي تعطي نتائج جيدة للغاية.
كانت مشكلة ELK.js هي أنه يعمل لمكتبة عميل لفترة طويلة جدًا. يمكنك ضبط النتيجة من خلال خاصية
thoroughness
- كلما كانت القيمة أكبر ، كان الجدول أفضل ، ولكن كلما طال الوقت. لتقديم شجرة مفهومة لـ 50 شخصًا ، اضطررت إلى الانتظار حوالي 30-40 ثانية لكل صفحة تفتح بها شجرة!
الآن لا يحدث التقديم على العميل في كل مرة يفتح فيها ، ولكن على الخادم في كل مرة يتغير فيها. في المرة الأولى بعد تحديث المحتوى ، يجب الانتظار كما كان من قبل ، ولكن بعد ذلك يتم فتح الصفحات على الفور.
من الناحية الفنية ، تسبب نقل الحسابات من العميل إلى الخادم في صعوبات عديدة. كيفية تشغيل كود JS داخل .NET Core؟
كانت فكرتي الأولى هي استخدام مكتبة
Javascript Engine Switcher الرائعة التي كتبها
تاريتسين . للأسف ، لم يناسب المهمة الخاصة بي: لم يستطع أي من المحركات الموجودة هضم ELK.js. بدلاً من ذلك ، تم استخدام آلية
NodeServices
، حيث كان كل شيء يعمل على الفور مثل الساعة.
نعم ، الآن يتطلب Bonsai تشغيلين ، ولكن بفضل عامل الميناء ، هذا ليس مخيفًا للغاية. نعم ،
NodeServices
في أحد الإصدارات التالية من ASP.NET Core ، لكن المجتمع
NodeServices
. وأين تذهب؟ يتكون تطوير الشبكة الحديثة بالكامل من مثل هذه المقايضات. الشيء الرئيسي هو أن هذا يعطي نتيجة.
تحميل المستندات
الآن ، بالإضافة إلى الصور ومقاطع الفيديو ، تدعم Bonsai تنزيل ملفات PDF. قد يكون هذا مناسبًا للوثائق - خاصة شهادات الميلاد أو الزواج أو الوفاة.
كان الغرض منه في الأصل إجراء معاينات صغيرة للمستندات. للأسف ، تحطمت هذه الفكرة في منحدرات الواقع القاسية: لم تتطابق أي من المكتبات الحالية مع معيار واحد أو آخر. تم فحصها:
- iText7 - ترخيص عدم التوافق مع MIT
- PDF.js - عدد كبير من التبعيات ، تضاعف الحاوية
- مغلفات GhostScript هي أيضًا مشكلات متعلقة بالترخيص ، بالإضافة إلى أنه تم التخلي عن جميعها تقريبًا ولا تدعم .NET Core
إذا فاتني شيء ولا تزال الكريس المقدسة لتحويل PDF إلى صورة موجودة - يرجى الكتابة في التعليقات!
أخبار على الرئيسي
في الصفحة الرئيسية أسفل التقويم ، يتم الآن عرض آخر الصفحات المعدلة وملفات الوسائط التي تم تنزيلها:
إخلاء المسؤولية الإلزامي
المشروع غير ربحي ويتم توفيره "كما هو". هناك أخطاء في ذلك. مرة واحدة ، من خلال رقابة عادية في الماجستير ، وتراجع رمز أن مسح قاعدة البيانات
تقريبا . لذلك ، إذا كنت تقدر البيانات التي تدخلها في بونساي ، فحينها وبشكل دوري مع كل تحديث:
عمل نسخ احتياطية.
جعل احتياطية!
D E L A T E B E K A P S! ! !
ما التالي؟
لا يزال هناك الكثير من المهام المثيرة للاهتمام التي أود القيام بها خلال العام المقبل:
- ترتيب الصفحة : مقياس تلقائي واحد يسمح لك بترتيب الصفحات حسب اكتمال بياناتها. سيجعل من السهل الإجابة على الأسئلة "أي الصفحات يمكن عرضها كمعيار" ، وعلى العكس من ذلك ، ما هي الصفحات التي لا تزال بحاجة إلى العمل عليها. "
- إعادة تصميم الصفحة الرئيسية للوحة المشرف : سيتم عرض التغييرات في نموذج مشابه لـ "موجز الأخبار" في الشبكات الاجتماعية.
- المهام الفنية : الانتقال إلى .NET Core 3 ، إعادة هيكلة متنوعة
هناك أيضًا مهام أود القيام بها ، لكن ليس لدي وقت وكفاءات كافية لهم. آمل أن أحصل على مساعدة المجتمع - إن لم يكن مجانًا ، ثم على الأقل لمكافأة رمزية. إذا كنت واثقا من قدراتك وترغب في المشاركة - يرجى الكتابة إلي في البرقيات ومناقشتها.
- مكون التقويم : يستخدم المعيار ، لكنه غير ملتوي قليلاً ولا يدعم القيم غير الدقيقة (
2019.??.??
): تحتاج إلى كتابة واحدة كاملة. - تحسين البحث : يعطي البحث في تطبيق البحث المرن أحيانًا نتائج غريبة . على الأرجح ، أنا لا أعرف كيفية استخدام المرونة - تحتاج إلى إعادة كتابة التكوينات الجهنمية مع معرفة المسألة.
- التعرف على الوجوه : سيكون من الجيد التعرف على الوجوه تلقائيًا على الصور التي تم تحميلها والتقاطها على الصفحات. لم أجد بعد حلولاً على .NET Core مفتوحة وتؤدي إلى نتائج عاقلة.
مستودع المشروع متاح في:
https://github.com/impworks/bonsai .
إذا كنت تستخدم Bonsai - فيرجى إخبارنا بذلك في التعليقات. سأكون سعيدًا للنقد والاقتراحات.