מה זה Smart Content Dependency Management™?
תקציר
ניהול תלות של תוכן חכם™ עוסקת במעגל הרעיונות הקשורים למתן תמיכה והנחיה ל-incremental builds תוך שמירה על נאמנות ל- Content Normalization Principle — אשר קישורים מהירים.
מאמר זה מציג את האתר https://sunstarsys.com/ כחקר מקרה עבור הדגמה של שיטות עבודה מומלצות וניתוח של טופולוגיות הגרף המשויכות.
מס’ מערות
זה חשוב רק כאשר אתה צריך לשקול את ההוצאה של ביצוע בניית אתר מלא בכל פעם שאתה צריך לצבוט את התוכן בדף אינטרנט. אם באתר שלך יש פחות מקובצי מקור 1K, ** להירגע**, ולקרוא את הדברים הבאים עם עין על הצרכים העתידיים שלך. בחרת להשתמש בפלטפורמה שלנו, שנועדה להתרחב איתך, לא נגדך. ברוב הדפים, חומר זה להלן הוא על תרשימי תלות של תוכן sparse לאתרים עם יותר מ-1K דפים.
לדוגמה, אתר האינטרנט של Apache https://www.OpenOffice.Org הצליח לבנות את קובצי 40K+ שלו באמצעות גרסת Apache המקורית של מערכת בנייה זו, עם תמיכה משולבת במלואה לבנייה תוספתית — ללא יחסי תלות מוגדרים כלשהם —
כברירת מחדל, מערכת הבנייה שלנו תבנה רק את הקבצים ששינית, ללא חשש ליחסי התלות בתוך הקובץ (אלא אם תציין אותם ב- %path::תלויות
— עוד על זה למטה). אם הקובץ ששינית נמצא בתוך תבניות/
או ספרייה/
Weaving Your Website’s גרף תלות Together
מתמטית, טופולוגיה* הוא מפרט מלא של תת-קבוצות פתוחות של מרחב
, שמטרתו לציין את יחסי הקרבה בין נקודות
של המרחב
. . מתי
הוא גרף, * טופולוגיה*
עבור
כמויות לציון הקצוות המחברים את הקודקודים של התרשים ביחד (כאן קודקודים מוצגים כ-נקודות של
, והקצוות המחברים קובעים את השכונות של נקודות אלה כ-ערכות בסיס פתוחות לטופולוגיה. * טופולוגיה של גרף מכוון* היא בעצם אותו הדבר, אך היא משלבת התייחסות לשיבוץ טופולוגי של
לחלל טופולוגי גדול יותר
המושג האחרון הוא מה שנשתמש בו כאשר נדון בטופולוגיה של גרף התלות* מקושר למרחב
של קובצי מקור מתחת לאתר שלך
תוכן/
תת־ספרייה (כאן) הוא
עם הטופולוגיה המטרית של
, והקצוות של
עקומות ירדן מכוונות שאינן מצטלבות ומחברות קובץ
לקבצים שעליהם
תלוי:
שיש הבנה ברורה של גרף התלות של אתר האינטרנט שלך תבטיח שתוכל למקסם את הביצועים של טכנולוגיית הבנייה שלנו בקנה מידה. . אנו לוקחים את המידע שאתה מספק כדי %path::תלויות
במהלך הבנייה של העומס של האתר שלך ספרייה/path.pm
קובץ, בנה מפה הפוכה של קבצים תלויים, והשתמש ב המפה ההפוכה כדי לקבוע את מאגר הקבצים המלא שיש לבנות לכל נתון ביצוע commit svn
חשוב לציין שקשרי התלות בין קובצי מקור יכולים וצריכים להילכד במלואם על-ידי %path::תלויות
גיבוב במהלך טעינת האתחול של מערכת הבנייה של ספרייה/path.pm
מעץ המקור שלך, וכך הנופים המובנים הכלולים בנו SunStarSys::תצוגה
חבילת פרל אמורה לפעול. דה ז’אן walk_content_tree
, הועבר לארכיב
, וגם seed_file_deps
פונקציות תוכנית שירות שניתן לייבא מ- SunStarSys::כלי שירות
הם עוזרים שימושיים בבניית %path::תלויות
הנה החלק הזה של החיים שלנו ספרייה/path.pm
.
our (%dependencies, @acl);
# entries computed below at build-time, or drawn from the .deps cache file
walk_content_tree {
$File::Find::prune = 1, return if m#^/(images|css|editor\.md|js|fontawesome)\b#;
return if -d "content/$_";
seed_file_deps, seed_file_acl if /\.(?:md|ya?ml)[^\/]*$/;
for my $lang (qw/en es de ru sv he zh-TW fr/) {
if (/\.md\.$lang$/ or m!/index\.html\.$lang$! or m!/files/|/slides/|/bin/!) {
push @{$dependencies{"/sitemap.html.$lang"}}, $_ if !archived;
}
if (s!/index\.html\.$lang$!!) {
$dependencies{"$_/index.html.$lang"} = [
grep s/^content// && !archived,
glob("'content$_'/*.{md.$lang,pl,pm,pptx}"),
glob("'content$_'/*/index.html.$lang")
];
push @{$dependencies{"$_/index.html.$lang"}}, grep -f && s/^content// && !m!/index\.html\.$lang!,
glob("'content$_'/*") if m!/files\b!;
}
}
}
and do {
while (my ($k, $v) = each %{$facts->{dependencies}}) {
push @{$dependencies{$k}}, grep $k ne $_, grep s/^content// && !archived, map glob("'content'$_"), ref $v ? @$v : split /[;,]?\s+/, $v;
}
open my $fh, "<:encoding(UTF-8)", "lib/acl.yml" or die "Can't open acl.yml: $!";
push @acl, @{Load join "", <$fh>};
};
אנא בצע את הקוד הזה עבור רעיונות על איך אתה רוצה האתר שלך לעבוד. כן, יש מורכבות סבירה (הנעה הן של הביטויים הרגילים של פרל והן של יוניקס סי של פרל) גלובס
ממשקים, באופן מדויק מאוד) סביב איך %path::תלויות
היכן נכנסים %path::תלויות
מקור? אם הם לא נולדים מתוך קריאה של walk_content_tree { seed_file_deps ... }
, (אשר בעצם צולל לתוך הכותרות והתוכן של קבצי מקור הסימון שלך), ואז הם פשוט מקודדים קשה לתוך ספרייה/path.pm
גרפים של תלות מעגלית הם הנורמה
האתר שלנו מורכב כיום מ 240 קבצי מקור
בתוך תוכן/
. . הנה אחד 85 קודקודים x 465 קצוות
, ייצוג גרף דו-ממדי ניתן לגלילה של צילום מצב עדכני של יחסי התלות של הדף בשפה האנגלית באתר שלנו** (שימוש ב-GraphViz נקודה
.
.
די מורכב, אפילו עבור אתר קטן כזה! חיתוכי קצוות רבים בעת ביצוע (בלתי נמנע בממד)
). הערה מסוימת היא קבוצת הליבה של יחסי תלות צפופים ומעגליים בקבצים שאינם מאוחסנים בארכיון באתר שלנו.
/הודעות/
בספרייה, לכיוון מרכז-ימין התחתון של הגרף, כך נראה גרף התלות של אתר בלוגים טוב. יחסי תלות אלה נמשכים עקומות אדומות
כמו כן שים לב לקשר הפנימי, בעצם מבודד של האלמנטים ב /קטגוריות/*/*
וגם /archives/2022/11/*
. . יחסי התלות החיצוניים היחידים כוללים תוכן שלא הועבר לארכיב ב- /הודעות/*
. . זה על ידי עיצוב — המאמרים הארכיוניים צריכים רק לשנות את באופן דיאבאטי , אולי רק לצורך התאמות שלהם קטגוריה
כותרות. אף אחד מהשינויים הללו לא משפיע באופן מהותי על התוכן הקיים מראש, ולכן אנחנו לא עוקבים אחריו %path::תלויות
כמובן, שלנו אוריון אנטרפרייז ויקי.
זה לא רק על היפר-קישורים?
לא! למעשה, הטופולוגיה קישור של אתר האינטרנט שלך היא עניין נפרד לחלוטין מהגרף תלות של עץ המקור. מנוע חיפוש יציף באופן טבעי את הטופולוגיה קישור אבל אין לו תובנה על תרשים התלות.
הנה a 240+ קודקודים x 3859 קצוות
, גרף הציפורים-עיניים הנוכחי של האנגלי טופולוגיית קישורים גרף עבור האתר שלנו (שימוש ב-GraphViz טופי
.
.
אתה יכול לזהות את קצוות אדומים
כיצד טכנולוגיית SSI יכולה לעזור
Traditional כולל בצד השרת.
- גדול לגיזום גרף התלות של אתר האינטרנט שלך עד לגודל הניתן לניהול מבלי להקריב השהיית מסירת הדף
- מצוין להפחתת נטישת הטקסט החוזר בהודעות commit גדולות לצורך סקירת עמיתים ופיקוח טובים יותר על ערכות השינויים הבנויות שלך
ממשקי API של תבנית
תגית ##### ssi
תחביר:
{% ssi
`/content_rooted/path/to/source_file` %}
- נתיבים מושרשים ב
תוכן
ספריית מקור - מדלג על חלק הכותרת של קובץ המקור להיות
ssi
כלול
מסנן ##### ssi
תחביר:
{{ תוכן|ssi }}
- מעריך באופן רקורסיבי
ssi
תגיות בערך שיש לסנן - שימושי עבור הימנעות באמצעות ערך גדול (3+) של
quick_deps
בתוך a@path::תבניות
למה לא SymLinks?
- הפשטת מערכת קבצים בקושי עצמות כי הוא קשה לתמוך בבטחה
<virtualhost>
הקשר - אותם חסרונות עם מסורתי
ssi
בדפי אינטרנט מלאים
שלנו אוריון אנטרפרייז ויקי.
כלי בנייה לקישורים קבועים
אוצר מסמכים
מערכת הבנייה של אוריון כוללת תמיכה משולבת במה שאנו מכנים “אוצרות מסמכים” (Document Curation), שהוא תהליך של יצירת הקשר מחדש וארגון מחדש של התוכן שלך בהתבסס על האופן שבו אתה מגדיר את התוכן שלך. קטגוריות
וגם ארכיון
כותרות בקובצי המקור מסוג Markdown. תכונות אלו מושבתות כברירת מחדל, אך ניתן להפעילן באמצעות הגדרת category_root
(לתמיכה בקטגוריה) או archive_root
(לתמיכה בארכיב) בארגומנט hashref המקושר אל הרצוי @path::תבניות
קטגוריות
- תוכן חדש נבנה באמצעות תבנית
ssi
התגיות מצביעות חזרה למיקום קישור קבוע, בעת הסרתארכיון
כותרת מדף המקור שנבנה - הקטגוריות הן תוספתיות לחלוטין (כלומר, הסרת קטגוריה מכותרות דף מקור לא תסיר אותה מאותה קטגוריה באתר החי),
- נוצר לפי דרישה
דפים שהועברו לארכיב
באתר שלנו, אנו מאחסנים באופן אגרסיבי מאמרים מיושנים כדי לשמור על זמני בנייה עבור מאמרים חדשים נמוכים, תוך לא להרוס קישור קבוע למסמכים בארכיון. תרשים התלות ביחס ל- /ארכיונים/
- תוכן שנבנה באמצעות תבנית
ssi
התגיות המצביעות חזרה למיקום קישור קבוע, בעת הסרתקטגוריות
וגםארכיון
כותרות מדף המקור שנבנה - תוכן ב
/(הודעות|לקוחות)/
הם תמיד קישורים קבועים, גם לאחר הארכיון
לד
הערות HTML המוטמעות בגבולות הטופס של הפרוזה ‘סימון’ של תוכן ה-LED. אנו משתמשים **{מס’ לידים}
עיבוד לדים מתבצע עם הובל
מסנן תבניות. כדאי לשלב את זה עם ssi
מס’ מס’ מסקנות
ישנם מבני נתונים מעניינים ויחסים שעדיין לא נחשפו בעת התמודדות עם גרף התלות של אתר מנקודת מבט של ביצועי בנייה, שהוא תחום עניין הרבה יותר חדש מאשר ספרות המחקר המתעמקת במבני הנתונים והנפיקות הקשורות סביב טופולוגיית קישור1,2.
בנייה קונבנציונלית מצטברת לפרויקטים טהורים של פיתוח תוכנה הם עדיין נושא חם. המחקר המכוסה ב-3,4 פורסם באוקטובר 2022, כחודש לפני שמסה זו צפויה להסתיים. מערכת הבנייה pluto5 כוללת תכונות דומות מאוד לתכונות שלנו (הבנייה עצמה יכולה ליצור מחדש ולבנות מחדש יחסי תלות באופן דינמי).
החדשות הטובות הן שאנחנו מכסים אותך כלקוח שלנו. אנו נשמור אתכם מופתעים מהשיטות הטובות ביותר ומצב האמנות במרחב הזה, כך שתיהנו מהשיעורים שלנו שנלמדו בעשור האחרון ועד מחר.
מס’ הערות שוליים
הסקת קהילות אינטרנט מטופולוגיית קישור הליכים של ועידת ACM התשיעית על היפרטקסט והיפר-מדיה: קישורים, אובייקטים, זמן ומרחב — מבנה במערכות היפר-מדיה: קישורים, אובייקטים, זמן ומרחב —
על היתרונות והמגבלות של תצורות תוכנת בנייה תוספתית: מחקר חקלאי.