Vad handlar Smart Content Dependency ManagementTM om?

[VERIFIERAD] Senast uppdaterad av Joe Schaefer den Fri, 26 Apr 2024    källa
 

Sammandrag

  • Hantering av beroenden för smart innehåll™* handlar om cirkeln av idéer relaterade till att ge stöd och underlättande för inkrementella byggen, samtidigt som man håller sig till Innehållsnormaliseringsprincipen — det där permalänkar.

I den här artikeln presenteras webbplatsen för https://sunstarsys.com/ som en fallstudie för en demonstration av praxis och analyser av associerade diagramtopologier.

Antal förbehåll

Det här är bara viktigt när du behöver väga kostnaden för att utföra fullständiga webbplatsbyggen varje gång du behöver justera innehållet på en webbsida. Om din webbplats innehåller mindre än 1K-källfiler avslappnar och läs följande med ett öga på dina framtida behov. Du valde att använda vår plattform, som är utformad för att skala med dig, inte mot dig. För de flesta sidor handlar det här materialet nedan om glesa innehållsberoendediagram för webbplatser med mer än 1K-sidor.

Webbplatsen Apache https://www.OpenOffice.Org kunde till exempel bygga sina 40K+-filer med den ursprungliga Apache-versionen av det här byggsystemet, med fullt integrerat stöd för inkrementella byggen. — utan konfigurerade beroenden —

Som standard bygger vårt byggsystem endast de filer som du har ändrat, utan problem för beroenden inom filen (om du inte anger dem i %path::beroenden — mer om detta nedan). Om filen du ändrade finns i mallar/ eller lib/

Weaving Your Website’s *Dependency Graph * Tillsammans

Matematiskt en Topologi τ\tau är en fullständig specifikation av de öppna delmängderna i ett utrymme XX, vars syfte är att ange närhetsrelationerna mellan punkter xx från rymden XX. När XX är ett diagram, en topologi τ\tau för XX uppgår till att ange kanterna som förbinder diagrammets brytpunkter tillsammans (här ses brytpunkter som punkter för XX, och de anslutande kanterna bestämmer områdena för dessa punkter som grundläggande öppna uppsättningar för topologin). En riktad graftopologi är i huvudsak samma sak, men innehåller en hänvisning till en topologisk inbäddning av (X,τ)(X,\tau) till ett större topologiskt rum (Y,σ)(Y,\sigma)

Det senare konceptet är vad vi kommer att använda när vi diskuterar *beroende diagrammets * topologi τ\tau associerad med arbetsytan XX av källfiler under platsens innehåll/ underkatalog (här (Y,σ)(Y,\sigma) är Rn\mathbb{R}^n med sin metriska topologi för n{2,3}n \in \{2,3\}och kanterna av XX är riktade jordanska kurvor som inte korsar varandra och som ansluter en fil xXx \in X till sin uppsättning filer som xx beror på: {xXxx}\set{x^\prime \in X | x \rightarrow x^\prime}

Har en tydlig förståelse av din webbplats beroende graf kommer att se till att du kan maximera prestandan hos vår byggteknik i stor skala. Vi tar den information du tillhandahåller %path::beroenden under byggets laddning av webbplatsens lib/path.pm fil, konstruera en omvänd mappning av beroende filer och använd som omvänd mappning för att fastställa den fullständiga korpus av filer som ska skapas för varje given svn bekräftelse

Det är viktigt att notera att beroenderelationerna mellan källfiler kan och bör fångas helt av %path::beroenden hash under byggsystemets startbelastning av lib/path.pm från ditt källträd, vilket är hur de inbyggda vyerna finns i våra SunStarSys::Visa Perl-paketet är tänkt att fungera. Den walk_content_tree, arkiveradoch seed_file_deps nyttofunktioner som kan överföras från SunStarSys::Till är användbara hjälpmedel för att konstruera %path::beroenden

Här är den delen av vårt liv 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>};
  };

Gör mull den koden över för idéer om hur du vill * din webbplats * att fungera. Ja det finns en viss rimlig komplexitet (som omfattar både Perls reguljära uttryck och Perls UNIX C-skal) glob gränssnitt, på ett mycket exakt sätt) kring hur %path::beroenden

Var finns posterna i %path::beroenden ursprung? Om de inte är födda av en walk_content_tree { seed_file_deps ... }, (som i princip dyker in i dina markdown-källfilers rubriker och innehåll), då är de bara hårdkodade i lib/path.pm

Cykliska beroendediagram är normen

Vår webbplats består för närvarande av 240 källfiler om innehåll/. Här är en 85 hörn x 465 kanter, rullningsbar, tvådimensionell riktad grafrepresentation av en aktuell ögonblicksbild av beroenden på den engelska språksidan på vår webbplats (använda GraphViz punkt.

Beroenden för engelska.

Ganska komplex, även för en liten webbplats som den här! Många kantskärningar när du tar n=2n=2 (undvikbar i dimension n=3n=3). Av särskild vikt är kärnuppsättningen av täta, cykliska beroenden i de icke-arkiverade filerna på vår webbplats. /lektioner/ katalog, mot nedre mitten till höger i diagrammet, vilket är hur en bra bloggwebbplatsens beroendediagram ska se ut. Dessa beroenden dras in i röda kurvor

Observera också den interna, väsentligen isolerade sammankopplingen av elementen i /kategorier/*/* och /archives/2022/11/*. De enda externa beroendena omfattar icke-arkiverat innehåll i /dagar/*. Detta är genom design — De arkiverade uppsatserna bör endast ändras adiabatiskt, kanske enbart för justeringar av deras Kategori rubriker Ingen av dessa ändringar påverkar det befintliga innehållet väsentligt, så vi spårar det inte i %path::beroenden

Självklart, vår Wiki för Orion Enterprise.

Handlar det inte bara om hyperlänkar?

Nej! I själva verket är link-topologin på din webbplats en helt separat fråga från källträdets beroende diagram. En sökmotor kommer naturligtvis att iller ut link topologi, men har ingen inblick i beroende graf.

Här är en 240+ hörn x 3859 kanter, aktuella fågel-öga diagram över den engelska länka topologi graf för ** vår webbplats** (använda GraphViz twopi.

Kan du upptäcka röda kanter

Hur SSI-tekniken kan hjälpa till

Traditional Serversidan innehåller.

  • ** Stor** för beskärning av webbplatsens beroende diagram ner till hanterbar storlek utan att offra sidleveransfördröjning
  • ** Stor** för att minska bortfall av mallobjekt i stora bekräftelsemeddelanden för bättre peer review och övervakning av dina byggda ändringsuppsättningar

API:er för mallar

ssi-tagg

Syntax:

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

  • sökvägar rotade i nöjd källkatalog
  • hoppar över huvuddelen av källfilen som ska ssi ingår

ssi-filter

Syntax:

{{ innehåll|ssi }}

  • rekursivt utvärderar ssi taggar i värdet som ska filtreras
  • användbart för att undvika att använda ett stort värde (3+) av quick_deps i en @path::mönster
  • barebones filsystem abstraktion som är svårt att säkert stödja i en <virtualhost> sammanhang kontext
  • samma nackdelar med traditionella ssi på fullständiga webbsidor
  • vår Wiki för Orion Enterprise.

Byggverktyg för permalänkar

Dokumentvaraktighet

Orions byggsystem har integrerat stöd för vad vi kallar Document Curation, vilket är processen att retextualisera och omorganisera ditt innehåll baserat på hur du ställer in Kategorier och Arkivera rubriker i källfilerna för Markdown. Dessa funktioner är avaktiverade som standard, men kan aktiveras genom att ställa in en category_root (för kategoristöd) eller archive_root (för arkiveringsstöd) i det associerade hashref-argumentet till det önskade @path::mönster

Kategorier

  • nytt innehåll konstrueras med hjälp av mall ssi taggar som pekar tillbaka till permalänkplatsen, medan du tar bort Arkivera sidhuvud från den konstruerade källsidan
  • kategorier är strikt additiva (dvs. att ta bort en kategori från en källsidas rubriker kommer inte att ta bort den från den kategorin på den aktiva webbplatsen),
  • genererad på begäran

Arkiverade sidor

På vår webbplats arkiverar vi aggressivt inaktuella essäer för att hålla byggtiderna för nya essäer låga, samtidigt som vi inte förstör permalänkar till arkiverade dokument. beroende graf i förhållande till /arkiv/

  • innehåll konstruerat med hjälp av mall ssi taggar som pekar tillbaka till permalänkplatsen, medan du tar bort Kategorier och Arkivera rubriker från den konstruerade källsidan
  • innehåll i /(essays|clients)/ är alltid permalänkar, även efter arkivering

Ledare

HTML-kommentarer inbäddade i Markdown-prosans formgränser för lede-innehållet. Vi använder **{Antal ledtrådar}

Bearbetningslinjer görs med ledare Mallfilter. Det är nyttigt att kombinera detta med ssi

Slutsatser

Det finns intressanta datastrukturer och relationer som ännu inte har upptäckts när man hanterar en webbplats beroende diagram från ett byggprestandaperspektiv, vilket är ett mycket nyare intresseområde än forskningslitteraturen som gräver i datastrukturerna och tillhörande isärtaganden som omger länka topologi1,2.

Konventionella inkrementella byggen för rena mjukvaruutvecklingsprojekt är fortfarande ett hett ämne. Den forskning som omfattas av 3 4 publicerades i oktober 2022, ungefär en månad innan denna uppsats förväntas vara klar. Byggsystemet pluto5 har funktioner som liknar våra (själva bygget kan dynamiskt återskapa och återskapa beroenden).

Den goda nyheten är att vi har dig täckt som vår kund. Vi kommer att hålla dig informerad om bästa praxis och den senaste tekniken inom detta område, så att du kommer att dra nytta av våra lärdomar under det senaste decenniet och in i framtiden.

Fotnoter

  1. Identifiering av kluster i webbdiagrammet baserat på länktopologi.

  2. Hämta webbforum från länktopologi Den nionde ACM-konferensen om hypertext och hypermedia: länkar, objekt, tid och rum — struktur i hypermedia system: länkar, objekt, tid och rum —

  3. Om fördelarna och gränserna för inkrementella konfigurationer av programvara: en undersökande studie.

  4. Mot inkrementell utveckling av programvarukonfigurationer.

  5. Ett ljud och optimalt inkrementellt byggsystem med dynamiska beroenden.

Permalänk  #arkitektur   #beroenden   #byggen   #generering   #graf   #inkrementell   #smart   #topologi   #webbplats   #wiki  

 

   

Kommentarer  


Bilagor  

Länkar  


Index

endast solstjärna

- [Perl 7 Funktionsbegäran: förseglade underdelar för typangivna lexikaler](/joe/perl7-sealed-lexicals.html.sv) &mdash; Perl 5:s OO-exekveringsmetoduppslagning har 50 % mer prestandakostnader än ett direkt, namngivet subrutinanrop ... <small><em>Fri, 21 Mar 2025</em></small>

COVID-19 i mars 2020

- [Exponentiell tillväxt och COVID-19](/joe/power.html.sv) &mdash; Ta din tid med ** matte** avsnittet &mdash; Det är viktigt att vara en utbildad konsument av statistik som är relevant för den nuvarande pandemin ... <small><em>Thu, 06 Mar 2025</em></small>

 

- [Git och Non Repudiation, Revisited](/joe/git-and-non-repudiation.html.sv) &mdash; Det finns en tydlig skillnad mellan "åtagandets" historia och "uppladdningens" historia. ... <small><em>Fri, 03 Jan 2025</em></small>

Heyoka

- [Joe's slumpmässiga tankar](/joe/index.html.sv) &mdash; Välkommen! ... <small><em>Sun, 10 Nov 2024</em></small>

- [Trippelprodukter av Eigenfunctions och Spectral Geometry](/joe/triple-products.html.sv) &mdash; Vi avslöjar en roman, men bekant, global geometrisk invariant ... <small><em>Thu, 26 Sep 2024</em></small>

NonFunctional Tester

- [Informationssäkerhet, applikationsprestanda och tillförlitlighet](/joe/spr.html.sv) &mdash; "Icke-funktionell" programvaruteknik handlar om tre huvudfrågor: säkerhet, prestanda och tillförlitlighet (**SPR**) ... <small><em>Thu, 06 Jun 2024</em></small>

Hyperbolisk honungskaka

- [Stokastisk spårningsformel för stängda, negativt böjda grenrör](/joe/stochastic-trace-formula.html.sv) &mdash; Min * 1997 Ph.D. avhandling* som ett blogginlägg. ... <small><em>Fri, 26 Apr 2024</em></small>

tjärad och fjädrad

- [Apache HTTPd Devs ansåg vara skadliga](/joe/apache-considered-harmful.html.sv) &mdash; Philip visste inte mycket då var hur fullständigt [peevish, vapid och territorial](https://www.mail-archive.com/dev@httpd.apache.org/msg77781.html) Det laget hade blivit ... <small><em>Fri, 26 Apr 2024</em></small>

 

- [Rörelsen DevOps](/joe/devops.html.sv) &mdash; Den stora idén bakom "rörelsen" är inte bara att ge utvecklare mer rep ... <small><em>Fri, 26 Apr 2024</em></small>

 

- [Roligt med htop](/joe/fun-with-htop.html.sv) &mdash; Avancerade funktioner på populära Unix-plattformar ... <small><em>Fri, 26 Apr 2024</em></small>

Informationsarkitektur

- [Informationsarkitektur](/joe/ia.html.sv) &mdash; Hela skalan av teknik som är relevant för design, presentation, relationer och arkitektoniska begränsningar som täcker varje URL du tjänar ... <small><em>Fri, 26 Apr 2024</em></small>

 

- [Informationssäkerhet - introduktion](/joe/infosec.html.sv) &mdash; Alla data som kommer från ett exekverings-UNIX **systemanrop** ska behandlas som **behållna** ... <small><em>

Vad är det primära målet för InfoSec?

För att säkerställa att alla förändringar vid kontextgränser är väl reglerade.

Till exempel uppfyller varje systemanrop på en UNIX-plattform detta villkor när det gäller UNIX-säkerhetsmodell för användare/gruppprocess+filesystem. Den litterala definitionen av en kontextväxel, vilket anges av systemanrop, inbegriper en kontroll av API-användningssäkerheten på kärnans sida av anropet.

När det gäller leverans av SaaS, {# lede #}alla data som kommer från ett exekverings-UNIX systemanrop ska behandlas som behållna{# lede #}

UNIX säkerhetsmodell ensam gjorde aldrig bestämmelser för nätverksansluten klient / server applikationsutveckling, eftersom historiskt BSD socket API som föregick ökningen av Network Computing på 90-talet (Sun Microsystems) uppfanns över ett decennium efter UNIX föddes (med sin OS-baserade multiuser säkerhetsmodell helt bildad vid födseln). MIT Kerberos.

Schemalägga CPU:er på ett säkert sätt för att utföra arbete på kärnnivå för någon "auktoriserad användar-/grupp-/rollkontext" som inte är kopplad till den underliggande processens UNIX-användar-/gruppkontext har alltid legat utanför UNIX-modellen. Många infosec initiativ misslyckas med att erkänna detta regulatoriska ansvar tillhör program ensam; Låt inte din vara en!

Om det inte är klart vid denna tidpunkt, bör DevOps/SRE-team triaging SaaS security (CAI) incidenter på Linux bekanta sig med htops stjärt gränssnitt via ss nyckel! Bättre att behärska stjärt

Hur relaterar detta till Zero-Trust-initiativ, som en praktisk fråga?

Nolltillförlitlig arkitektur.

Även om det kan finnas VPN/Firewall-kontexter i verkligheten är ingen av dessa detaljer relevanta för InfoSec inom ett Zero-Trust-ramverk. Med andra ord kan sådana nätverkstopologisäkerhetsinitiativ öka Zero-Trust-initiativ, men de förlitar sig aldrig på inom ett Zero-Trust-initiativ på basserverns värdsäkerhetsnivå upp genom applikationsnivån.

MIT Kerberos och Active Directory är till exempel kompatibla med Zero-Trust.

$Datum: 2023-01-19 22:58:40 +0000 (Thu, 19 Jan 2023) $


 

- [Utskickslistor](/joe/mailing-lists.html.sv) &mdash; Dessa tillfälliga adresser är anathema för `ezmlm-idx`'s abonnemang och modereringssystem ... <small><em>Fri, 26 Apr 2024</em></small>

 

- [Applikationsprestanda](/joe/performance.html.sv) &mdash; Många utvecklare faller i fällan att tänka prestandaoptimering handlar om att göra varje rad av kod så effektiv som möjligt. ... <small><em>Fri, 26 Apr 2024</em></small>

 

- [Om skräppostproblemet...](/joe/spam.html.sv) &mdash; Bästa plugin för `qpsmtpd`Även om det är svårt att förstå varför ... <small><em>Fri, 26 Apr 2024</em></small>

 

- [Glädjen i DTrace](/joe/joy-of-dtrace.html.sv) &mdash; Mät två gånger, skära en gång innan du påbörjar ett arbete med kodoptimering ... <small><em>Fri, 26 Apr 2024</em></small>

 

- [Glädjen i htop](/joe/joy-of-htop.html.sv) &mdash; Hotell nära Solaris 11 ... <small><em>Thu, 25 Apr 2024</em></small>