מהו ניהול תלות בתוכן חכםTM הכל אודות?

[אומת] עדכון אחרון על-ידי Joe Schaefer ב-יום ג׳, 13 מאי 2025    מקור
 

תקציר

ניהול תלות בתוכן חכם™ עוסק במעגל הרעיונות הקשורים למתן תמיכה והנחיה לבנייה הגדלה, תוך שמירה על נכונות ל עקרון הנורמליזציה של התוכן — אשר קישורים אנכיים צריך להיות מקור האמת היחיד, לא משנה איך התוכן שלהם נצבר לאורך עץ המקור וכתוצאה מכך בונים ארטיפקטים.

מאמר זה מציג את אתר האינטרנט https://sunstarsys.com/ כמקרה בוחן לצורך הדגמה של שיטות עבודה מומלצות וניתוח של טופולוגיות הגרפים הקשורות.

מס’ מערות

זה משנה רק כאשר אתה צריך לשקול את העלות של ביצוע מלא האתר בונה בכל פעם שאתה צריך לצבוט את התוכן בדף אינטרנט. אם אתר האינטרנט שלך מכיל פחות מ-1K קבצי מקור בתוכו, relax, וקרא את הדברים הבאים בעיניים לעבר הצרכים העתידיים שלך. בחרת להשתמש בפלטפורמה שלנו, המיועדת להתרחב איתך, לא נגדך. עבור רוב הדפים, חומר זה להלן עוסק בתרשימי תלות של תוכן sparse לאתרים עם יותר מ-1K דפים.

לדוגמה, אתר האינטרנט של Apache https://www.OpenOffice.Org הצליח לבנות את קובצי ה-40K+ שלו באמצעות גרסת ה-Apache המקורית של מערכת בנייה זו, עם תמיכה משולבת במלואה לבניות תוספתיות — ללא יחסי תלות מוגדרים כלשהם — על ידי שימוש חכם בטכנולוגיית SSI מסורתית בלבד.

כברירת מחדל, מערכת הבנייה שלנו תבנה רק את הקבצים ששינית, ללא חשש ליחסי התלות בתוך הקובץ (אלא אם כן תציין אותם ב- %path::יחסי תלות — עוד על זה למטה). אם הקובץ ששינית נמצא ב תבניות/ או ספרייה/ ספרייה, בניית אתר מלאה תפעיל במקום זאת.

אריגת גרף התלות של האתר שלך* יחד

מתמטית, טופולוגיה τ\tau הוא מפרט מלא של התת-קבוצות open של רווח XX, שמטרתה לציין את קשרי הקרבה בין נקודות ** xx של החלל XX. מתי XX הוא גרף, טופולוגיה τ\tau עבור XX מציין את הקצוות המחברים את הקודקודים של התרשים יחד (כאן הקודקודים מוצגים כנקודות * של XX, והקצוות המחברים קובעים את השכונות של נקודות אלה כערכות פתוחות בסיס עבור הטופולוגיה. טופולוגיית גרף מכוונת היא בעצם אותו הדבר, אבל משלבת התייחסות לשיבוץ טופולוגי של (X,τ)(X,\tau) במרחב טופולוגי גדול יותר (Y,σ)(Y,\sigma) , כאשר חיבורי הקצה של השיבוץ מיוצגים על-ידי עקומות כיווניות שאינן חותכות (ירדן).

הרעיון האחרון הוא מה שנשתמש בו כאשר נדון בטופולוגיה של גרף התלות* τ\tau מקושר למרחב XX של קובצי מקור מתחת לאתר שלך תוכן/ תת ספרייה (כאן) (Y,σ)(Y,\sigma) הינו Rn\mathbb{R}^n עם הטופולוגיה המטרית של n{2,3}n \in \{2,3\}, והקצוות של XX הם לא חותכים, עקומות ירדן מכוונת המחבר קובץ xXx \in X אודות קבוצת הקבצים שעליה xx תלוי: {xXxx}\set{x^\prime \in X | x \rightarrow x^\prime}).

לאחר הבנה ברורה של גרף התלות* של אתר האינטרנט שלך תבטיח שתוכל למקסם את הביצועים של טכנולוגיית הבנייה שלנו בקנה מידה גדול. אנו לוקחים את המידע שאתה מספק %path::יחסי תלות במהלך עומס הבנייה של האתר שלך lib/path.pm קובץ, בנה מפה הפוכה של קבצים תלויים, והשתמש ב-* that reverse map* כדי לקבוע את מבנה הקבצים המלא לכל נתון ביצוע commit של svn אתה עושה למערכת שלנו.

חשוב לציין שקשרי התלות בין קובצי מקור יכולים וצריכים להיקלט באופן מלא על-ידי %path::יחסי תלות hash במהלך טעינת האתחול של מערכת הבנייה של lib/path.pm מעץ המקור שלך, כך נראים התצוגות המובנות הכלולות בנו SunStarSys::תצוגה חבילת פריל נועדה לפעול. דה walk_content_tree, הועבר לארכיב, וגם seed_file_deps פונקציות שירות שניתן לייבא מ- SunStarSys::כלי שירות הם עזרים שימושיים בבניית %path::יחסי תלות גיבוב, עם תמיכה מובנית לניהול מטמון תלות להאצת בניות תוספתיות בקנה מידה.

הנה החלק הזה של חיינו lib/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>};
  };

אנא בצע mull קוד זה על רעיונות על איך אתה רוצה האתר שלך לעבוד. כן, יש מורכבות סבירה כלשהי (הכוללת גם את הביטויים הרגילים של פרל וגם את קליפת UNIX C של פרל) גלוב ממשקים, באופן מדויק מאוד) סביב איך %path::יחסי תלות הוא בנוי בקובץ זה, אבל במקום רק לראות את זה כעבודת אופטימיזציה, במקום להסתכל על זה כמספק את המרכיבים הבסיסיים הדרושים לפרש את ההיבטים העיקריים של טופולוגיית הקישור *באופן אוטומטי, שנוצר באופן דינמי.

היכן רשומות ב- %path::יחסי תלות מקור? אם הם לא נולדים מתוך קריאה של walk_content_tree { seed_file_deps ... }, (אשר בעצם צולל לתוך הכותרות והתוכן של קבצי מקור markdown שלך), אז הם פשוט מקודדים קשה לתוך lib/path.pm בזמן העומס.

###תרשימי תלות מעגליים הם הנורמה

האתר שלנו מורכב כיום 240 קובצי מקור בתוך תוכן/. הנה אחד 85 קודקודים x 465 קצוות, ייצוג גרף מופנה דו-ממדי ניתן לגלילה של צילום מצב עדכני של יחסי התלות של דפי השפה האנגלית באתר שלנו** (שימוש ב- GraphViz נקודה):

יחסי תלות בשפה האנגלית.

די מורכב, אפילו עבור אתר קטן כזה! חיתוכי קצוות רבים בעת לקיחת n=2n=2 (ניתן לביטול בממד) n=3n=3). הערה מיוחדת היא קבוצת הליבה של יחסי תלות מעגליים צפופים בקבצים שאינם מאוחסנים בארכיון של האתר שלנו /הודעות/ ספרייה, לכיוון מרכז-ימין התחתון של הגרף, כך צריך להיראות תרשים התלות של אתר בלוגים טוב. תלות זו נמשכת ב- עקומות אדומות בתוך התמונה.

כמו כן, שימו לב לחיבור הפנימי, המבודד במהותו של האלמנטים ב /קטגוריות/*/* וגם /archives/2022/11/*. יחסי התלות החיצוניים היחידים כוללים תוכן שלא הועבר לארכיב ב- /הודעות/*. זה לפי העיצוב — המאמרים בארכיון צריך רק לשנות אדיאבטי אולי רק להתאמות שלהם קטגוריה כותרות. אף אחד מהשינויים האלה לא משפיע באופן מהותי על התוכן הקיים, לכן אנחנו לא עוקבים אחריו. %path::יחסי תלות.

כמובן, שלנו וויקי, אוריון אנטרפרייז מעולם לא הייתה בעיה להתמודד עם תלות מחזורית.

זה לא רק על היפר-קישורים?

לא! למעשה, טופולוגיית הקישור* של אתר האינטרנט שלך היא עניין נפרד לחלוטין מתרשים התלות* של עץ המקור. מנוע חיפוש באופן טבעי יפרש את הטופולוגיה של הקישור*, אך אין לו תובנה לגבי גרף התלות*.

הנה A 240+ קודקודים x 3859 קצוות, גרף עין הציפורים הנוכחי של הטופולוגיה קישור אנגלית גרף עבור האתר שלנו (שימוש ב- GraphViz טופי):

אתה יכול לזהות את קצוות אדומים כפי שצוין בתרשים התלות*? גרף הטופולוגיה של הקישור הוא איכותי וכמותי שונה מאוד מגרף התלות* (קטן באופן דרמטי ופחות מחובר) המתואר לעיל.

כיצד טכנולוגיית SSI יכולה לעזור

מסורתי כולל צד שרת (SSI).

  • מצוין עבור גיזום תרשים התלות של האתר שלך למטה כדי לנהל את הגודל מבלי להקריב את זמן ההמתנה למסירת דף
  • מצוין להפחתת נטישת הטקסט החוזר בהודעות commit גדולות לסקירה ופיקוח טובים יותר של קבוצות השינויים המובנות שלך
  • lousy להקצאה מחדש של דפי אינטרנט שלמים למיקום אחר בהיררכיית שורש המסמך.

API לתבנית

תווית ssi

תחביר:

{% ssi `/content_rooted/path/to/source_file` %}

נתיבים המושרשים ב- תוכן ספריית מקור

  • מדלג על חלק הכותרת של קובץ המקור להיות ssi כלול
  • משכתב כתובות url יחסיות לכתובות url מוחלטות בתוכן הכלול של נתיב היעד
מסנן ssi

תחביר:

{{ תוכן|ssi }}

  • הערכה רקורסיבית ssi תגיות בערך שיש לסנן
  • שימושי כדי להימנע משימוש בערך גדול (3+) של quick_deps בתוך a @path::תבניות hashref ארגומנט של ערך, שיכול להשפיע על הביצועים
  • אבסטרקציה מערכת קבצים בקושי כי הוא קשה לתמוך באופן מאובטח ב <virtualhost> הקשר
    אותו downides עם מסורתי ssi בדפי אינטרנט מלאים
    שלנו וויקי, אוריון אנטרפרייז המערכת לא תומכת בהם

בניית כלים לקישורים מורשים

אוצרות מסמך

מערכת הבנייה של אוריון כוללת תמיכה משולבת במה שאנו מכנים “אוצרות מסמכים”, שהיא תהליך של יצירת הקשר מחדש וארגון מחדש של התוכן שלך בהתבסס על האופן שבו אתה מגדיר את התוכן. קטגוריות וגם ארכיון כותרות בקובצי המקור של Markdown. תכונות אלו חסומות כברירת מחדל, אך ניתן להפעיל אותן על-ידי הגדרת category_root (לתמיכה בקטגוריה) או archive_root (לתמיכה בהעברה לארכיב) בארגומנט hashref המקושר אל הרצוי @path::תבניות כניסה.

קטגוריות
  • תוכן חדש נבנה באמצעות תבנית ssi תגיות המצביעות חזרה למיקום קישור קבוע, בעת הסרת ארכיון כותרת מדף המקור שנבנה
  • הקטגוריות מתווספות בקפדנות (כלומר, הסרת קטגוריה מכותרות דף מקור לא תסיר אותה מהקטגוריה באתר החי),
  • נוצר לפי דרישה
  • מחיקת כל הקטגוריות ב-commit יחיד היא דרך מצוינת לסנכרן אותן עם המפרט המדויק בכל כותרות דפי המקור, מבלי להרוס את תוכן הקטגוריה שנשמר באתר החי
דפים בארכיב

באתר שלנו, אנחנו בארכיון אגרסיבי מאמרים מיושנים כדי לשמור על זמני בנייה עבור מאמרים חדשים נמוך, תוך לא להרוס קישור קבוע למסמכים בארכיון. גרף התלות* יחסית ל- /ארכיונים/ מדריך (עבור האתר שלנו) הוא באופן סביר עצמאי לפי הכללים הבאים:

  • תוכן שנבנה באמצעות תבנית ssi תגיות המצביעות חזרה למיקום קישור קבוע, בעת הסרת קטגוריות וגם ארכיון כותרות מדף המקור שנבנה
  • תוכן ב- /(הודעות|לקוחות)/ הם תמיד קישור קבוע, גם לאחר אחסון בארכיון
  • העברה לארכיון מסירה ביעילות את מיקום הקישור הקבוע מגרף התלות*, מבלי להסיר את הקישור הקבוע עצמו מהאתר

מספר ##### לד

הערות HTML המוטמעות בגבולות טופס Markdown prose של תוכן המדריך. אנו משתמשים {מס’ לידים} למטרה זו.

ה-Leades של העיבוד נעשה עם לובי מסנן תבניות. כדאי לשלב את זה עם ssi מסנן למפתוח קובץ קטגוריה עם יותר מדף קטגוריה אחד בתוכו.

מס’ מסקנות

ישנם מבני נתונים מעניינים ויחסים שטרם נחשפו בעת התמודדות עם גרף התלות* של אתר אינטרנט מנקודת מבט של ביצועי בנייה, שהוא תחום עניין הרבה יותר חדש מאשר ספרות המחקר המתעמקת במבני הנתונים והנפקות קשורות המקיפות את טופולוגיית הקישור*1,2.

בנייה מצטברת קונבנציונלית לפרויקטים טהורים של פיתוח תוכנה היא עדיין נושא חם. המחקר שכלל 3,4 פורסם באוקטובר 2022, כחודש לפני שמאמר זה צפוי להסתיים. מערכת הבנייה pluto5 כוללת תכונות הדומות למדי לתכונות שלנו (הבנייה עצמה יכולה ליצור מחדש ולבנות מחדש יחסי תלות באופן דינמי).

החדשות הטובות הן שאנחנו מכוסים בתור הלקוחות שלנו. אנו נשמור אתכם על שיטות העבודה המומלצות ומצב האמנות במרחב זה, כך שתיהנו מהלקחים שלנו שנלמדו בעשור האחרון ולמחר.

מס’ הערות שוליים

  1. זיהוי אשכולות בתרשים האינטרנט בהתבסס על טופולוגיית קישור סימפוזיון ההנדסה והיישומים הבינלאומי השביעי, 2003. הליכים.

  2. הסקת קהילות אינטרנט מטופולוגיית קישור ההליכים של ועידת ACM התשיעית בנושא היפרטקסט והיפרמדיה: קישורים, אובייקטים, זמן ומרחב — מבנה במערכות היפר-מדיה: קישורים, אובייקטים, זמן ומרחב — מבנה במערכות היפר-מדיה. 1998.

  3. על היתרונות והמגבלות של תצורות תוכנת בנייה תוספתית: מחקר חקרני ICSE ‘22: הליכי הכנס הבינלאומי ה-44 להנדסת תוכנה, מאי 2022

  4. לקראת בנייה מצטברת של תצורות תוכנה ICSE-NIER ‘22: הליכי הכנס הבינלאומי ה-44 של ACM/IEEE בנושא הנדסת תוכנה: רעיונות חדשים ותוצאות מתפתחות, מאי 2022

  5. מערכת בנייה תוספתית קולית ואופטימלית עם יחסי תלות דינמיים OOPSLA 2015: ההליכים של הכנס הבינלאומי ACM SIGPLAN לשנת 2015 בנושא תכנות, מערכות, שפות ויישומים מוכווני אובייקט, אוקטובר 2015

קישור קבוע  #אדריכלות   #אתר   #בניינים   #גרף   #דור   #ויקי   #חכם   #טופולוגיה   #מצטבר   #תלות  

 

   

הערות  


קבצים מצורפים  

קישורים  


אינדקס

כוכב שמש בלבד


מרץ 2020 COVID-19

  • צמיחה מעריכית ו-COVID-19— קח את הזמן שלך עם **המתמטיקה** סעיף — חשוב להיות צרכן משכיל של נתונים סטטיסטיים הרלוונטיים למגפה הנוכחית ... יום ה׳, 06 מרץ 2025

 

  • Git ולא Repudiation, Revisited— יש הבחנה ברורה בין ההיסטוריה של "מחויבות" לבין ההיסטוריה "העלאה" ... יום ו׳, 03 ינו׳ 2025

היוקה



NonFunctional בדיקות


 

  • רשימות דיוור— כתובות זמניות אלה הן anathema ל `ezmlm-idx`'s מנוי ומערכות מתינות ... שבת, 27 אפר׳ 2024

 

  • מדריך אבטחת מידע— יש להתייחס לכל הנתונים שמקורם ב-UNIX בזמן ריצה **קריאת מערכת** כ-**tainted** ... שבת, 27 אפר׳ 2024

 

  • ביצועי יישומים— מפתחים רבים נופלים למלכודת של חשיבה אופטימיזציה ביצועים היא על הפיכת כל שורת קוד ליעילה ככל האפשר. ... יום ג׳, 23 אפר׳ 2024

 

  • על בעיית הספאם...— התוסף היחיד הטוב ביותר עבור `Qpsmtpd`למרות שקשה להבין מדוע ... יום א׳, 29 ינו׳ 2023

היפרבולית Honeycomb


 

  • תנועת DevOps— הרעיון הגדול מאחורי "התנועה" הוא לא רק לתת למפתחים יותר חבל ... יום ו׳, 15 דצמ׳ 2023

 

  • כיף עם htop— תכונות htop מתקדמות בפלטפורמות יוניקס פופולריות ... יום ה׳, 19 ינו׳ 2023

ארכיטקטורת מידע

  • ארכיטקטורת מידע— כל סולם הטכנולוגיות הרלוונטי לעיצוב, להצגה, ליחסים ולאילוצים ארכיטקטוניים המכסים כל כתובת URL שבה אתה משרת ... יום ב׳, 11 מרץ 2024

זפת ונוצות

  • Apache HTTPd Devs נחשב מזיק— פיליפ לא ידע כל כך טוב אז היה עד כמה [מציצה, vapid, וטריטוריאלית](https://www.mail-archive.com/dev@httpd.apache.org/msg77781.html) הקבוצה הזו הפכה ... יום ו׳, 26 אפר׳ 2024

 

  • השמחה של DTrace— למדוד פעמיים, לחתוך פעם אחת, לפני תחילת מאמץ אופטימיזציה קוד ... יום ו׳, 26 אפר׳ 2024