ما المقصود بـ Smart Content Dependency Management™؟
ملخص
إدارة تبعية المحتوى الذكي™ تدور حول دائرة الأفكار المتعلقة بتوفير الدعم والتسهيل للبنيات الإضافية*، مع الحفاظ على صحتها لمبدأ تطبيع المحتوى — أن permalinks يجب أن يكون المصدر الوحيد للحقيقة، بغض النظر عن كيفية تنسيق محتواها في جميع أنحاء شجرة المصدر وبيانات البناء الاصطناعية الناتجة.
يعرض هذا المقال https://sunstarsys.com/ الموقع كدراسة حالة لعرض أفضل الممارسات وتحليل طوبولوجيات الرسم البياني المرتبطة.
المحاذير
هذا يهم فقط عندما تحتاج إلى تقييم نفقات تنفيذ إنشاءات الموقع الكامل في كل مرة تحتاج فيها إلى تعديل المحتوى على صفحة ويب. إذا كان موقع الويب الخاص بك يحتوي على أقل من 1K ملفات مصدر فيه، استرخ، واقرأ ما يلي مع التركيز على احتياجاتك المستقبلية. لقد اخترت استخدام منصتنا، المصممة للتوسع معك، وليس ضدك. بالنسبة لمعظم الصفحات، هذه المادة أدناه حول الرسوم البيانية تبعية المحتوى المتفرقة للمواقع التي تحتوي على أكثر من صفحات 1K.
على سبيل المثال، الأباتشي https://www.OpenOffice.Org تمكن موقع الويب من إنشاء ملفات 40K+ الخاصة به باستخدام إصدار Apache الأصلي لنظام البناء هذا، مع دعم متكامل تمامًا للبنيات التزايدية — بدون أي تبعيات مكونة على الإطلاق — من خلال الاستخدام الذكي لتقنية SSI التقليدية وحدها.
افتراضيًا، سيقوم نظام البناء الخاص بنا بإنشاء الملفات التي قمت بتغييرها فقط، دون القلق بشأن التبعيات داخل الملف (ما لم تحددها في %path::dependencies — المزيد حول ذلك أدناه). إذا كان الملف الذي قمت بتغييره موجودًا في قوالب/ أو مكتبة الدليل، سيتم تشغيل إصدار الموقع بالكامل بدلاً من ذلك.
نسج موقع الويب الخاص بك الرسم البياني التبعية معا
رياضيا، a علم الطوبولوجيا هي مواصفات كاملة لمجموعات open الفرعية للمساحة ، والغرض منها هو الإشارة إلى علاقات التقارب بين نقاط من الفضاء . متى عبارة عن رسم بياني، هيكل من أجل مبالغ لتحديد الحواف التي تربط رؤوس الرسم البياني معًا (يتم عرض الرؤوس هنا كنقاط **من ، وحواف ربط تحديد أحياء تلك النقاط كما *أساس مجموعات مفتوحة *للهيكل). هيكل الرسم البياني الموجه هو في الأساس نفس الشيء، ولكنه يتضمن إشارة إلى تضمين طوبولوجي لـ إلى مساحة طوبولوجية أكبر ، حيث يتم تمثيل اتصالات حافة التضمين بواسطة منحنيات اتجاهية غير متقاطعة (الأردن).
المفهوم الأخير هو ما سنستخدمه عند مناقشة هيكل رسم بياني للتبعية مرتبط بالمساحة من الملفات المصدر تحت موقعك المحتوى/ مجلد فرعي (هنا) هو باستخدام هيكل القياس الخاص به لـ ، وحواف غير متقاطع، منحنيات الأردن الموجهة التي تربط ملف إلى مجموعة الملفات التي يعتمد: ).
يحتوي على سيضمن الفهم الواضح للرسم البياني للتبعية الخاص بموقعك على الويب أنه يمكنك زيادة أداء تقنية البناء لدينا على نطاق واسع. نحن نأخذ المعلومات التي تقدمها إلى %path::dependencies أثناء تحميل بناء موقع الويب الخاص بك lib/path.pm ملف، وبناء خريطة عكسية من الملفات التابعة، واستخدام أن خريطة عكسية* لتحديد مجموعة كاملة من الملفات لبناء لأي التزام svn أنت تجعل لنظامنا.
من المهم ملاحظة أن علاقات التبعية بين الملفات المصدر يمكن ويجب التقاطها بالكامل بواسطة %path::dependencies تجزئة أثناء تحميل بدء تشغيل نظام الإنشاء lib/path.pm من شجرة المصدر الخاصة بك، وهذا هو كيف المدمج في وجهات النظر الواردة في لدينا SunStarSys::عرض حزمة بيرل تهدف إلى العمل. الـ walk_content_tree, مؤرشف، و seed_file_deps وظائف المرافق القابلة للاستيراد من SunStarSys::Util هي وسائل مساعدة مفيدة في بناء %path::dependencies شفرة هاش، مع دعم مدمج لإدارة ذاكرة التخزين المؤقت للتبعية لتسريع عمليات الإنشاء التزايدية على نطاق واسع.
إليك هذا الجزء من حياتنا lib/path.pm:
يرجى القيام بدرس هذا الرمز للأفكار حول كيف تريد موقع الويب الخاص بك للعمل. نعم هناك بعض التعقيد المعقول (يتضمن كل من تعبيرات بيرل العادية و UNIX C-shell بيرل عالم واجهات، بطريقة دقيقة جدا) حول كيفية %path::dependencies تم إنشاؤه في هذا الملف، ولكن بدلاً من مجرد النظر إلى هذا على أنه عمل تحسين، بدلاً من ذلك، انظر إليه على أنه توفير المكونات الأساسية اللازمة لتفسير الجوانب الرئيسية لهيكل الارتباط *بطريقة آلية وديناميكية.
أين توجد الإدخالات في %path::dependencies أنشأت؟ إذا لم يولدوا من استدعاء walk_content_tree { seed_file_deps ... }، (الذي يغوص بشكل أساسي في رؤوس ومحتوى ملفات مصدر Markdown)، ثم يتم ترميزها فقط في lib/facts.yml في وقت التحميل.
الرسوم البيانية للتبعية الدورية هي المعيار
يتكون موقعنا حاليا من 240 ملف مصدر في المحتوى/. إليك 85 رأس × 465 حواف، تمثيل رسم بياني ثنائي الأبعاد قابل للتمرير للقطة الأخيرة من تبعيات صفحة اللغة الإنجليزية على موقعنا (استخدام GraphViz نقطة):
معقد للغاية، حتى بالنسبة لموقع ويب صغير مثل هذا! العديد من تقاطعات الحافة عند أخذها (لا يمكن تفاديه في البعد) ). تجدر الإشارة بشكل خاص إلى المجموعة الأساسية من التبعيات الكثيفة والدورية في الملفات غير المؤرشفة في موقعنا /الجلسات/ الدليل، نحو أسفل يمين الوسط من الرسم البياني، وهو ما يجب أن يبدو عليه الرسم البياني لتبعية موقع التدوين الجيد. يتم رسم هذه التبعيات في منحنيات حمراء في الصورة.
لاحظ أيضًا الترابط الداخلي المعزول بشكل أساسي للعناصر في /الفئات/*/* و /archives/2022/11/*. تتضمن التبعيات الخارجية الوحيدة محتوى غير مؤرشف في /الجلسات/*. هذا حسب التصميم — يجب أن تتغير المقالات المحفوظة فقط *من الناحية الإشعاعية *، ربما فقط للتعديلات على الفئة الرؤوس. لا تؤثر أي من هذه التغييرات ماديًا على المحتوى الموجود مسبقًا، لذلك لا نتتبعه في %path::dependencies.
بالطبع، لدينا ويكي مؤسسة أوريون لم تواجه مشكلة في التعامل مع التبعيات الدورية.
ألا يتعلق الأمر بالارتباطات التشعبية فقط؟
لا! في الواقع، يعد هيكل الارتباط الخاص بموقع الويب الخاص بك مسألة منفصلة تمامًا عن الرسم البياني للتبعية الخاص بشجرة المصدر. سيقوم محرك البحث بشكل طبيعي بإخراج هيكل link، ولكن ليس لديه نظرة ثاقبة على الرسم البياني للتبعية.
هنا a أكثر من 240 رأس × 3859 حواف، الرسم البياني لعيون الطيور الحالي للغة الإنجليزية هيكل الارتباط الرسم البياني ل موقعنا (استخدام GraphViz توائم):
هل يمكنك تحديد حواف حمراء كما هو محدد في الرسم البياني للتبعية؟ الرسم البياني هيكل الارتباط نوعي وكمي يختلف كثيرًا عن (رسم بياني أصغر وأقل اتصالًا) رسم بياني للتبعية الموضح أعلاه.
كيف يمكن لتكنولوجيا SSI المساعدة
تقليدي يتضمن جانب الخادم (SSI)
- رائع لتقليم الرسم البياني للتبعية لموقع الويب الخاص بك وصولاً إلى الحجم القابل للإدارة دون التضحية بزمن انتقال تسليم الصفحة
- رائع لتقليل تبديل القالب في رسائل التثبيت الكبيرة لتحسين مراجعة النظراء والإشراف على مجموعات التغييرات التي تم إنشاؤها
- lousy لإعادة صياغة صفحات الويب بأكملها في موقع مختلف في التسلسل الهرمي لجذر المستند
واجهات برمجة تطبيقات القالب
علامة Ssi
Syntax:
{% تسي `/content_rooted/path/to/source_file` %}
- مسارات متجذرة في
محتوىالدليل المصدر - تخطي جزء الرأس من الملف المصدر ليكون
تسيمضمن - يعيد كتابة عناوين url النسبية إلى عناوين url المطلقة في المحتوى المضمن للمسار الهدف
مرشح Ssi
Syntax:
{{ المحتوى|ssi }}
- التقييمات المتكررة
تسيالعلامات في القيمة المطلوب ترشيحها - مفيد لتجنب استخدام قيمة كبيرة (3+) من
quick_depsفي@path::النماذجتجزئة الوسيطة الخاصة بالدخول، والتي يمكن أن تؤثر على الأداء
لماذا لا نفعل SymLinks؟
- تجريد نظام الملفات العارية التي يصعب دعمها بشكل آمن في
<VirtualHost>سياق - نفس الجوانب السلبية مع التقليدية
تسيعلى صفحات الويب الكاملة - لدينا ويكي مؤسسة أوريون النظام لا يدعمهم
إنشاء أدوات للارتباطات الدائمة
معالجة المستند
يحتوي نظام بناء أوريون على دعم متكامل لما نسميه Document Curation، وهي عملية إعادة صياغة المحتوى وإعادة تنظيمه استنادًا إلى كيفية تعيينك الفئات و الحالة رؤوس في ملفات مصدر Markdown. يتم تعطيل هذه الميزات افتراضيًا، ولكن يمكن تنشيطها بإعداد category_root (دعم الفئة) أو archive_root (لدعم الأرشفة) في وسيطة hashref المرتبطة إلى المطلوب @path::النماذج دخول.
الفئات
- تم إنشاء محتوى جديد باستخدام القالب
تسيعلامات تشير مرة أخرى إلى موقع الرابط الثابت، - الفئات مضافة بشكل صارم (أي أن إزالة فئة من رؤوس الصفحة المصدر لن يؤدي إلى إزالتها من تلك الفئة في الموقع المباشر)،
- ولدت عند الطلب،
- يعد حذف جميع الفئات في التزام واحد طريقة رائعة لمزامنتها مع المواصفات الدقيقة في جميع رؤوس صفحات المصدر، دون تدمير محتوى الفئة المحفوظ على الموقع المباشر.
الصفحات المحفوظة
على موقعنا، نقوم بأرشفة المقالات القديمة بقوة للحفاظ على أوقات البناء للمقالات الجديدة منخفضة، مع عدم تدمير الروابط الدائمة للوثائق المؤرشفة. الرسم البياني للتبعية بالنسبة إلى /أرشيف/ الدليل (لموقعنا) هو مستقل بشكل معقول وفقا للقواعد التالية:
- محتوى تم إنشاؤه باستخدام قالب
تسيعلامات تشير مرة أخرى إلى موقع الرابط الثابت، أثناء إزالةالفئاترأس من صفحة المصدر المكونة - المحتوى في
/(الأيام|العملاء)/هي دائمًا روابط دائمة، حتى بعد الأرشفة - الأرشفة تزيل بشكل فعال موقع الرابط الثابت من *الرسم البياني للتبعية *، مع عدم إزالة الرابط الثابت نفسه من موقع الويب
ليدي
تعليقات HTML المضمنة في حدود نموذج Markdown prose لمحتوى lede. نحن نستخدم {رقم العنوان} لهذا الغرض.
تتم معالجة المصابيح مع ليد مرشح القالب. من المفيد الجمع بين هذا مع تسي مرشح لفهرسة ملف فئة يحتوي على أكثر من صفحة فئة داخله.
الاستنتاجات
هناك هياكل بيانات وعلاقات مثيرة للاهتمام لم يتم الكشف عنها بعد عند التعامل مع الرسم البياني للتبعية *لموقع الويب من منظور أداء البناء، وهو مجال اهتمام أحدث بكثير من الأدبيات البحثية التي تتعمق في هياكل البيانات والإصدارات المرتبطة بها المحيطة بهيكل الارتباط *1,2.
لا تزال عمليات الإنشاء التدريجية التقليدية لمشروعات تطوير البرامج النقية موضوعًا ساخنًا. البحث الذي تمت تغطيته في 3,4 تم نشره في أكتوبر 2022، قبل حوالي شهر من المتوقع أن يكتمل هذا المقال. بلوتو5 يحتوي نظام البناء على ميزات مشابهة تمامًا لنظامنا (يمكن للبناء نفسه إعادة إنشاء التبعيات وإعادة بنائها ديناميكيًا).
والخبر السار هو أننا قمنا بتغطيتك كعميل لنا. سوف نبقيك على اطلاع بأفضل الممارسات والحالة الفنية في هذا المجال، حتى تتمكن من الاستفادة من دروسنا المستفادة خلال العقد الماضي وحتى الغد.
الحواشي السفلية
تعريف العناقيد في الرسم البياني للويب استنادًا إلى هيكل الارتباط الندوة الدولية السابعة لهندسة قواعد البيانات وتطبيقاتها، 2003. الإجراءات.
استدلال مجتمعات الويب من منظومة الارتباط وقائع مؤتمر ACM التاسع حول النص التشعبي والوسائط التشعبية: الروابط والكائنات والوقت والمساحة — هيكل في أنظمة الوسائط الفائقة: الروابط والأشياء والزمان والمكان — هيكل في أنظمة hypermedia. 1998.
حول فوائد وحدود تكوينات برامج البناء التدريجي: دراسة استكشافية ICSE ‘22: وقائع المؤتمر الدولي 44 حول هندسة البرمجيات، مايو 2022
نحو بناء تزايدي لتكوينات البرامج ICSE-NIER ‘22: وقائع المؤتمر الدولي الـ 44 لـ ACM / IEEE حول هندسة البرمجيات: أفكار جديدة ونتائج ناشئة، مايو 2022
نظام بناء تزايدي سليم ومثالي مع تبعيات ديناميكية OOPSLA 2015: وقائع مؤتمر ACM SIGPLAN الدولي لعام 2015 حول البرمجة والنظم واللغات والتطبيقات الموجهة للكائنات أكتوبر 2015
