Worum geht es in Smart Content Dependency ManagementTM?

[ÜBERPRÜFT] Zuletzt aktualisiert von Joe Schaefer auf Fr., 26 Apr. 2024    Quelle
 

Auszug

Smart Content Dependency Management™ geht es um den Kreis von Ideen, die sich auf die Unterstützung und Erleichterung von inkrementellen Builds beziehen, während sie dem Inhaltsnormalisierungsprinzip folgen. — diese Permalinks.

In diesem Artikel wird die Website https://sunstarsys.com/ als Fallstudie für eine Demonstration der Best Practices und die Analyse der zugehörigen Diagrammtopologien vorgestellt.

Höhlen

Dies ist nur wichtig, wenn Sie die Kosten für die Durchführung von vollständigen Website-Builds jedes Mal abwägen müssen, wenn Sie den Inhalt auf einer Webseite optimieren müssen. Wenn Ihre Website weniger als 1K Quelldateien enthält, entspannen und lesen Sie Folgendes mit Blick auf Ihre zukünftigen Anforderungen. Sie haben sich für unsere Plattform entschieden, die so konzipiert ist, dass sie mit Ihnen skaliert wird, nicht gegen Sie. Für die meisten Seiten handelt es sich bei diesem Material unten um dünne Abhängigkeitsdiagramme für Inhalte für Websites mit mehr als 1K-Seiten.

Beispiel: Die Apache https://www.OpenOffice.Org-Website konnte ihre 40K+-Dateien mit der ursprünglichen Apache-Version dieses Build-Systems erstellen, mit vollständig integrierter Unterstützung für inkrementelle Builds — ohne konfigurierte Abhängigkeiten —

Standardmäßig erstellt unser Build-System nur die Dateien, die Sie geändert haben, ohne Bedenken hinsichtlich der Abhängigkeiten zwischen Dateien (es sei denn, Sie geben sie in %path::Abhängigkeiten — mehr dazu unten). Wenn sich die geänderte Datei in der Vorlagen/ oder Bibliothek/

Weben der Abhängigkeitsgrafik Ihrer Website zusammen

Mathematisch eine Topologie τ\tau ist eine vollständige Spezifikation der offen Teilmengen eines Raumes XX, deren Zweck darin besteht, die Näherungsbeziehungen zwischen Punkten anzugeben xx des Raumes XX. Wann XX ist ein Diagramm, eine Topologie τ\tau für XX gibt die Kanten an, die Scheitelpunkte des Diagramms miteinander verbinden (hier werden Scheitelpunkte als Punkte von XX, und die Verbindungsränder bestimmen die Nachbarschaft dieser Punkte als Basis offene Sätze für die Topologie). Eine gerichtete Diagrammtopologie ist im Wesentlichen dasselbe, enthält jedoch einen Hinweis auf eine topologische Einbettung von (X,τ)(X,\tau) in einen größeren topologischen Raum (Y,σ)(Y,\sigma)

Letzteres Konzept wird verwendet, wenn wir die Abhängigkeitsgrafik-Topologie diskutieren. τ\tau mit dem Arbeitsplatz verknüpft XX der Quelldateien unter der Website Inhalt/ Unterverzeichnis (hier) (Y,σ)(Y,\sigma) ist Rn\mathbb{R}^n mit seiner metrischen Topologie für n{2,3}n \in \{2,3\}und die Kanten der XX sind nicht schneidende, gerichtete Jordan-Kurven, die eine Datei verbinden xXx \in X zu den Dateien, auf denen xx abhängig: {xXxx}\set{x^\prime \in X | x \rightarrow x^\prime}

Haben Ein klares Verständnis des Abhängigkeitsdiagramms Ihrer Website wird sicherstellen, dass Sie die Leistung unserer Build-Technologie in großem Maßstab maximieren können. Wir nehmen die von Ihnen bereitgestellten Informationen %path::Abhängigkeiten während des Builds der Website Bibliothek/path.pm Datei erstellen, eine umgekehrte Zuordnung abhängiger Dateien erstellen und diese umgekehrte Zuordnung verwenden, um den vollständigen Korpus der zu erstellenden Dateien für eine bestimmte Datei zu bestimmen svn Commit

Es ist wichtig zu beachten, dass die Abhängigkeitsbeziehungen zwischen Quelldateien vollständig von der %path::Abhängigkeiten Hash während der Startlast des Build-Systems Bibliothek/path.pm von Ihrem Quellbaum, wie die integrierten Ansichten in unserem SunStarSys::Ansicht Perl-Paket soll funktionieren. Die walk_content_tree, archiviertund seed_file_deps Utilityfunktionen, aus denen importiert werden kann SunStarSys::Util sind nützliche Hilfsmittel beim Aufbau der %path::Abhängigkeiten

Hier ist dieser Teil unseres Lebens Bibliothek/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>};
  };

Bitte mullen Sie diesen Code für Ideen, wie Sie *Ihre Website * arbeiten möchten. Ja, es gibt eine gewisse Komplexität (die sowohl Perls reguläre Ausdrücke als auch Perls UNIX C-Shell umfasst) Globus Schnittstellen auf sehr präzise Weise) um wie %path::Abhängigkeiten

Wo sind Einträge in %path::Abhängigkeiten Herkunft? Wenn sie nicht aus einem Aufruf von walk_content_tree { seed_file_deps ... }, (die im Wesentlichen in die Header und den Inhalt Ihrer Markdown-Quelldateien eintaucht), dann sind sie nur hartcodiert in Bibliothek/path.pm

Zyklische Abhängigkeitsdiagramme sind die Norm

Unsere Website besteht derzeit aus 240 Quelldateien in Inhalt/. Hier ist ein 85 Scheitel x 465 Kanten, scrollbare, zweidimensionale gerichtete Diagrammdarstellung eines aktuellen Snapshots der Seitenabhängigkeiten in englischer Sprache auf unserer Website (mit GraphViz’s Punkt.

Englischsprachige Abhängigkeiten.

Ganz komplex, auch für eine kleine Website wie diese! Viele Kantenschnittstellen bei der Einnahme n=2n=2 (in der Dimension vermeidbar) n=3n=3). Besonders hervorzuheben ist die Kernmenge der dichten, zyklischen Abhängigkeiten in den nicht archivierten Dateien in den /Veranstaltungen/ Verzeichnis, in Richtung der unteren Mitte-rechts des Diagramms, wie das Abhängigkeitsdiagramm einer guten Blogging-Site aussehen sollte. Diese Abhängigkeiten werden in Rote Kurven

Beachten Sie auch die interne, im Wesentlichen isolierte Vernetzung der Elemente in /Kategorien/*/* und /archives/2022/11/*. Die einzigen externen Abhängigkeiten umfassen nicht archivierten Inhalt in /Essays/*. Dies ist von Design — Die archivierten Essays sollten sich nur adiabatisch ändern, vielleicht nur für Anpassungen ihrer Kategorie Kopfzeilen. Keine dieser Änderungen wirkt sich wesentlich auf den bereits vorhandenen Inhalt aus, daher verfolgen wir ihn nicht in %path::Abhängigkeiten

Natürlich, unsere Orion Enterprise Wiki.

Nein! Tatsächlich ist die Link-Topologie Ihrer Website eine völlig andere Angelegenheit als das Abhängigkeitsdiagramm des Quellbaums. Eine Suchmaschine wird natürlich die Link-Topologie entfernen, hat aber keinen Einblick in das Abhängigkeitsdiagramm.

Hier ist ein Über 240 Scheitelpunkte x 3859 Kanten, aktuelles Bird-Eye-Diagramm der englischen Link-Topologie für unsere Website (mit GraphViz’s Twopi.

Können Sie die rote Kanten

Wie SSI-Technologie helfen kann

Traditional Serverseitig enthalten.

  • großartig für das Beschneiden des Abhängigkeitsdiagramms Ihrer Website auf überschaubare Größe, ohne die Latenz der Seitenbereitstellung zu beeinträchtigen
  • großartig zur Reduzierung der Abwanderung von Boilerplate in großen Commit-Nachrichten für eine bessere Peer Review und Überwachung Ihrer erstellten Änderungssets

Vorlagen-APIs

Ssi-Tag

Syntax:

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

  • Pfade, die auf Inhalt Quellverzeichnis
  • überspringt den Headerteil der Quelldatei, die ssi eingeschlossen
ssi-Filter

Syntax:

{{ Inhalt|ssi }}

  • rekursiv bewertet ssi Tags im zu filternden Wert
  • nützlich, um zu vermeiden, dass ein großer Wert (3+) quick_deps in a @path::Muster
  • Barebones-Dateisystemabstraktion, die schwer sicher in einer <virtualhost> Kontext
  • die gleichen Nachteile wie traditionelle ssi auf vollständigen Webseiten
  • unsere Orion Enterprise Wiki.
Dokumentpflege

Das Build-System von Orion bietet integrierte Unterstützung für das, was wir als Document Curation bezeichnen. Dabei handelt es sich um den Prozess der Retextualisierung und Neuorganisation Ihrer Inhalte, je nachdem, wie Sie die Kategorien und Archiv Header in Ihren Markdown-Quelldateien. Diese Features sind standardmäßig deaktiviert, können jedoch durch Festlegen eines category_root (zur Kategorieunterstützung) oder archive_root (für Archivierungsunterstützung) im zugehörigen Hashhref-Argument an die gewünschte @path::Muster

Kategorien
  • Neuer Inhalt mit Vorlage erstellt ssi Tags, die auf den Permalink-Speicherort verweisen, beim Entfernen der Archiv Header aus der Seite “Konstruierte Quelle”
  • Kategorien sind streng additiv (d.h. das Entfernen einer Kategorie aus den Kopfzeilen einer Quellseite entfernt sie nicht aus dieser Kategorie auf der Live-Website),
  • bei Bedarf generiert
Archivierte Seiten

Auf unserer Website archivieren wir aggressiv veraltete Essays, um die Erstellungszeiten für neue Essays niedrig zu halten, ohne Permalinks für archivierte Dokumente zu zerstören. Das Abhängigkeitsdiagramm relativ zum /Archive/

  • Inhalt mit Vorlage erstellt ssi Tags, die auf den Permalink-Speicherort verweisen, beim Entfernen der Kategorien und Archiv Header von der erstellten Quellseite
  • Inhalt in /(essays|clients)/ sind immer Permalinks, auch nach der Archivierung
Lede

HTML-Kommentare, die in die Markdown-Prosa-Formulargrenzen des Lede-Inhalts eingebettet sind. Wir verwenden **{Anzahl}

Die Verarbeitung von Leder erfolgt mit dem Lede Vorlagenfilter. Es ist sinnvoll, dies mit dem ssi

Schlussfolgerungen

Es gibt interessante Datenstrukturen und -beziehungen, die beim Umgang mit dem Abhängigkeitsdiagramm einer Website aus einer Build-Performance-Perspektive noch aufgedeckt werden müssen, was ein viel neueres Interessensgebiet ist als die Forschungsliteratur, die sich mit den Datenstrukturen und den zugehörigen Themen rund um die Link-Topologie1,2 beschäftigt.

Herkömmliche inkrementelle Builds für reine Softwareentwicklungsprojekte sind nach wie vor ein heißes Thema. Die Studie, die unter 3,4 behandelt wurde, wurde im Oktober 2022 veröffentlicht, etwa einen Monat, bevor dieser Aufsatz abgeschlossen sein wird. Das pluto5-Build-System verfügt über ähnliche Funktionen wie unsere (der Build selbst kann Abhängigkeiten dynamisch neu generieren und neu erstellen).

Die gute Nachricht ist, dass wir Sie als unseren Kunden abgedeckt haben. Wir halten Sie auf dem Laufenden über die Best Practices und den Stand der Technik in diesem Bereich, so dass Sie von unseren Erfahrungen in den letzten zehn Jahren und in die Zukunft profitieren werden.

Fußnoten

  1. Identifizierung von Clustern im Webdiagramm auf Basis der Linktopologie.

  2. Webcommunitys aus Linktopologie inferenzieren Verfahren der neunten ACM-Konferenz zu Hypertext und Hypermedia: Links, Objekte, Zeit und Raum — Struktur in Hypermediasystemen: Links, Objekte, Zeit und Raum —

  3. Über die Vorteile und Grenzen inkrementeller Build-Softwarekonfigurationen: eine explorative Studie.

  4. Auf dem Weg zur inkrementellen Erstellung von Softwarekonfigurationen.

  5. Ein klares und optimales inkrementelles Build-System mit dynamischen Abhängigkeiten.

Permalink  #Abhängigkeiten   #Architektur   #Gebäude   #Generation   #Grafik   #inkrementell   #Smart   #Topologie   #Website   #Wiki  

 

   

Kommentare  


Anhänge  

Links  


Index

Sonnenstaronly


COVID-19 März 2020

  • Exponentielles Wachstum und COVID-19 — Nehmen Sie sich Zeit für den Abschnitt The Mathe — Es ist wichtig, ein gebildeter Verbraucher von Statistiken zu sein, die für die aktuelle Pandemie relevant sind … Do., 06 März 2025

 


Heyoka



NonFunctional Tests


 

  • Verteilerlisten — Diese temporären Adressen sind ein Anathema für ezmlm-idx‘s Abo- und Moderationssysteme … Sa., 27 Apr. 2024

 

  • Informationssicherheits-Primer — Alle Daten, die aus einem UNIX Systemaufruf zur Laufzeit stammen, müssen als erhalten behandelt werden … Sa., 27 Apr. 2024

 

  • Die Freude der DTrace — Messen Sie zweimal, schneiden Sie einmal, bevor Sie mit einer Codeoptimierung beginnen … Mi., 17 Apr. 2024

 


 

  • Über das Spam-Problem… — Das beste Plugin für qpsmtpdObwohl es schwierig ist zu verstehen, warum … So., 29 Jan. 2023

Hyperbolische Wabe


 

  • Spaß mit htop — Erweiterte htop-Funktionen auf beliebten Unix-Plattformen … Do., 19 Jan. 2023

Informationsarchitektur

  • Informationsarchitektur — Die gesamte Bandbreite an Technologien, die für das Design, die Präsentation, die Beziehungen und die architektonischen Einschränkungen relevant sind, die jede von Ihnen bereitgestellte URL abdecken … Mo., 11 März 2024

geteert und gefiedert


 

  • Die Bewegung DevOps — Die große Idee hinter der “Bewegung” ist nicht nur, den Entwicklern mehr Seil zu geben … Fr., 26 Apr. 2024

 

  • Anwendungsperformance — Viele Entwickler fallen in die Falle des Denkens, dass es bei der Leistungsoptimierung darum geht, jede Codezeile so effizient wie möglich zu machen. … Fr., 26 Apr. 2024