什麼是 Smart Content Dependency ManagementTM

[已驗證 ] 上次更新時間者: Joe Schaefer 上的 週日, 21 4月 2024    來源
 

摘要

  • 智慧內容相依性管理™* 是關於為 * 增量構建 * 提供支援和面向的構想圈,同時對 ** 內容標準化原則 ** 保持真— 該* 永久連結 * 應該是單一真值來源,不論其內容在整個來源樹狀結構中如何進行策劃,並產生構件。

本文將介紹 https://sunstarsys.com/ 網站,作為相關圖表拓樸示範最佳實務與分析的案例研究。

洞穴

這只有在每次需要調整網頁內容時,才需要加權執行完整網站建置的費用。如果您的網站中的來源檔案少於 1K,則 relax,並視您的未來需求閱讀下列內容。您選擇使用我們的平台,此平台旨在與您一起擴展,而非您。對於大多數頁面而言,下列材料是關於具有超過 1K 頁面之網站的 * 稀疏內容相依性圖表 *。

例如,Apache https://www.OpenOffice.Org 網站能夠使用此組建系統的原始 Apache 版本建立 40K+ 檔案,並完全整合了增量組建的支援— 沒有任何已設定的相依性— 單獨使用傳統 SSI 技術。

預設情況下,我們的建置系統只會建置您變更的檔案,而不會影響檔案內部相依性 (除非您指定這些檔案於%path::相依性 — 下面還有更多功能。如果您變更的檔案位於範本 / 或者繁體中文 目錄,將會觸發完整的網站建置。

將您網站的 * 相依性圖表 * 合併使用

在數學上,a * 拓樸 * τ\tau 是空間之 open 子集的完整規格XX,其目的是指出 * 點 * 之間的相鄰關係xx 空間XX。. . 時間XX 是圖表,a topology τ\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 不相交,導向連接檔案的 Jordan 曲線xXx \in X 至其所屬檔案集xx 相依 :{xXxx}\set{x^\prime \in X | x \rightarrow x^\prime}).

擁有清楚瞭解您網站的 * 相依性圖表 * 可確保您能夠大規模發揮建置技術的效能。. . 我們將您提供的資訊提供給%path::相依性 在建置時載入您網站程式庫 /path.pm 檔案,建構相依檔案的反向對應,然後使用 * 反向對應 * 來判斷要為任何指定項目建置的檔案完整語料庫svn 確認 您對我們的系統做了。

請務必注意,來源檔案之間的相依性關係可由下列項目完全擷取:%path::相依性 組建系統啟動載入期間的雜湊程式庫 /path.pm 從您的來源樹狀結構,這是我們所包含的內建檢視方式SunStarSys::檢視 Perl 封裝是用來操作的。關於walk_content_tree, 已封存,和seed_file_deps 公用程式函數匯入來源SunStarSys::使用率 在建構時是有用的輔助 Name %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>};
  };

請將程式碼放在這裡,以瞭解您想要 * 您的網站 * 如何運作的想法。是,有一些合理的複雜性 (包括 Perl 的正規表示式和 Perl 的 UNIX C-shell) 球體 介面,以非常精確的方式) 探討如何進行%path::相依性 在該檔案中構建,但不僅僅是將它視作最佳化工作,而是提供以自動且動態產生的方式建構 link topology 主要層面的必要基本材料。

項目在哪裡%path::相依性 產生?如果它們不是來自呼叫walk_content_tree { seed_file_deps ... }, (基本上會深入您的 Markdown 來源檔案的標頭和內容),然後才被硬式編碼為程式庫 /path.pm 於載入時間。

循環相依性圖表為標準

我們的網站目前由240 個原始碼檔案 英吋內容 /。. . 以下是85 頂點 x 465 邊,可捲動的二維導向圖形,呈現英文語言頁面相依性在 ** 我們的網站 ** 上的最新快照 (使用 GraphViz ):

英語依存項目.

很複雜,就算只是小型網站也一樣!拿著時多邊交會n=2n=2 (在維度中可避免n=3n=3). 特別注意的是,在我們網站的非封存檔案中,密集、循環相依性的核心集/ 星期幾 / 朝圖表右下角的目錄,這是部落格網站的相依性圖表應該像這樣。這些相依性繪製於紅曲線 在影像中。

另請注意元素的內部、基本上隔離互連性/ 類別 /*/* 以及/archives/2022/11/*。. . 唯一的外部相依性涉及未存檔的內容/ 星期 /。. . 這是根據設計— 封存的短文應該只改變 adiabatically,也許只是為了調整它們分類 標頭。這些變更都不會對預先存在的內容造成重大影響,因此我們不會追蹤到%path::相依性.

當然,我們的Orion Enterprise Wiki 處理循環相依性從未發生過問題。

不只是超連結?

** 否!** 實際上,您網站的 *link 拓樸 * 與來源樹狀結構的 * 相依性圖表完全不同 *。搜尋引擎會自然地拉出 *link 拓樸 *,但無法深入解析 * 相依性圖表 *。

以下是超過 240 個頂點 x 3859 個邊緣** 我們的網站 ** (英文 * 連結拓樸 * 圖表的目前鳥瞰圖)使用 GraphViz 扭曲):

您能發現紅邊 如 * 相依性圖表 * 中所指定?* 連結拓樸 * 圖表為質化且量化 ** 與上述 (大致上較小且較不相互連線) * 相依性圖表不同 **。

SSI 技術如何提供協助

傳統伺服器端包括 (SSI).

  • ** 極佳 ** 縮減您網站的 * 相依性圖表 * 為可管理的大小,不犧牲頁面傳遞延遲
  • ** 極佳 ** 用於減少大型確認訊息中的樣板流失,以進行對等複查並監督您建立的變更集
  • lousy 用於將整個網頁重新調整為文件根目錄中的不同位置

個範本 API

ssi 標籤

語法:

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

  • 根目錄的路徑內容 來源目錄
  • 略過要作為之來源檔案的標頭部分ssi 包含
  • 將相對 URL 重寫為目標路徑內含內容中的絕對 URL
ssi 篩選

語法:

{{ 內容 |ssi }}

  • 遞迴評估ssi 要篩選之值的標記
  • 可避免使用大值 (3+) quick_deps 在 a @path::樣式 entry 的引數 hashref,可能會影響效能
  • 難以安全地支援的裸機檔案系統抽象化<virtualhost> 內容
  • 與傳統同行ssi 在完整的網頁上
  • 我們的Orion Enterprise Wiki 系統不支援它們
文件持續時間

Orion 的建置系統已整合支援我們所呼叫的 Document Curation,這是根據您設定內容的方式,重新塑造和重組內容的程序。類別 以及封存 Markdown 來源檔案中的標頭。這些功能預設為停用,但可透過設定來啟用category_root (適用於類別支援) 或archive_root (用於封存支援) 在相關聯的 hashref 引數中,至所需的@path::樣式 項目。

種類
  • 使用範本建構新內容ssi 標記指向永久連結位置時,移除封存 來自已建構來源頁面的標頭
  • 類別為嚴格附加的 (亦即,從來源頁面的標頭移除類別並不會將其自即時網站的該類別中移除),
  • 隨選產生
  • 在單一確認中刪除所有類別,是將它們與所有來源頁面標頭中的確切規格同步的好方法,無須毀棄即時網站上保留的類別內容
封存的頁面

在我們的網站上,我們積極封存過時的短文,以維持新短文的建立時間,同時不會破壞封存文件的永久連結。* 相依性圖表 * 相對於/ 檔案 / 目錄 (針對我們的網站) 依照下列規則合理地獨立:

  • 使用範本建構的內容ssi 標記指向永久連結位置時,移除類別 以及封存 來自已建構來源頁面的標頭
  • 內容於/ (星期幾 | 客戶) / 永遠是永久連結,即使在存檔之後
  • 封存有效地從 * 相依性圖 * 移除永久連結位置,同時不會從網站移除永久連結本身

LED

內嵌於領導內容之 Markdown 樣式界限中的 HTML 註解。我們使用 {領導編號} 為此目的。

處理導向已完成,使用導線 範本篩選。將此項目與ssi 編製類別檔案索引的篩選,其中包含一個以上的類別頁面。

結論

從組建效能的角度來處理網站的 * 相依性圖表 * 時,仍會發現有趣的資料結構和關係,這是比研究文宣深入資料結構和相關問題 (例如 link topology 1,2) 的新興趣領域。

純軟體開發專案的傳統增量建置仍是熱門主題。3,4 所涵蓋的研究於 2022 年 10 月發布,本論文預計要在大約一個月前完成。pluto 5 組建系統的功能與我們的功能相當類似 (組建本身可以動態重新產生和重建相依性)。

好消息是,我們為您提供作為我們客戶的保障。我們將讓您瞭解此空間中的最佳實務和藝術狀態,因此您將從過去十年到未來的經驗中獲益。

註腳

  1. 以連結拓樸為基礎之 Web 圖表中的叢集識別 2003 年第七屆國際資料庫工程與應用研討會。程序。

  2. 從連結拓樸推斷 Web 社群 第九屆「超文本與超媒體」ACM 會議的訴訟:連結、物件、時間與空間— 超媒體系統的結構:連結、物件、時間及空間— 超媒體系統的結構。1998 。

  3. 在增量建置軟體組態的優點和限制上:一項探索研究 ICSE ‘22:2022 年 5 月第 44 屆國際軟體工程研討會

  4. 邁向增量建置軟體組態 ICSE-NIER ‘22:ACM/IEEE 第 44 屆國際軟件工程會議:新構想和新興成果,2022 年 5 月

  5. 具有動態相依性的完善和最佳增量建置系統 OOPSLA 2015:2015 年 10 月 ACM SIGPLAN 國際物件導向程式設計、系統、語言及應用研討會的訴訟

永久鏈結  #architecture   #builds   #generation   #graph   #incremental   #smart   #topology   #website   #wiki   #圖表   #新一代   #架構   #相依性  

 

   

註解  


附件 

連結 


索引

日星星級限定


2020 年 3 月 COVID-19

  • 指數成長與新冠肺炎 (COVID-19) — 使用 ** 數學 ** 區段節省您的時間— 成為受過教育且與當前疫情相關的統計資料消費者非常重要 … 週四, 06 3月 2025

 


Heyoka



NonFunctional 測試


 

  • 郵件群組 — 這些暫時地址是必要的ezmlm-idx 語言的訂閱和協調管制系統 … 週六, 27 4月 2024

 

  • 資訊安全入門 — 所有源自程式實際執行 UNIX ** 系統呼叫 ** 的資料都應視為 ** 保留 ** … 週六, 27 4月 2024

 

  • The Joy of DTrace — 測量兩次,切掉一次,再投入程式碼最佳化工作 … 週三, 17 4月 2024

 


 

  • 應用程式效能 — 許多開發人員陷入思考效能最佳化的困境,在於讓每一行程式碼儘可能有效率 … 週二, 23 4月 2024

 

  • 垃圾信問題 … — 單一最佳外掛程式qpsmtpd,雖然很難理解原因 … 週日, 29 1月 2023

雙曲蜂巢


刺青和羽毛


 

  • DevOps 移動 — 「移動」背後的大想法不只是為開發人員提供更多繩索 … 週五, 15 12月 2023

 

  • 玩 htop — 熱門 Unix 平台的進階 htop 功能 … 週四, 19 1月 2023

資訊架構

  • 資訊架構 — 與設計、簡報、關係和架構限制相關的整個技術,涵蓋您服務的每個 URL … 週一, 11 3月 2024