¿De qué se trata Smart Content Dependency ManagementTM?

[VERIFICADO] Última actualización realizada por Joe Schaefer en vie., 26 abr. 2024    origen
 

Resumen

Gestión de dependencias de contenido inteligente™ trata sobre el círculo de ideas relacionadas con el apoyo y la facilitación de construcciones incrementales, al tiempo que se mantiene fiel al Principio de Normalización del Contenido — que permalinks.

En este artículo se presenta el sitio web de https://sunstarsys.com/ como un caso práctico para una demostración de mejores prácticas y análisis de las topologías de gráficos asociadas.

No de grutas

Esto solo importa cuando necesita sopesar el costo de realizar compilaciones completas del sitio cada vez que necesita ajustar el contenido en una página web. Si su sitio web tiene menos de 1K archivos de origen, relaje y lea lo siguiente con atención a sus necesidades futuras. Usted eligió utilizar nuestra plataforma, que está diseñada para escalar con usted, no en su contra. Para la mayoría de las páginas, este material a continuación se trata de gráficos de dependencia de contenido dispersos para sitios con más de 1K páginas.

Por ejemplo, el sitio web de Apache https://www.OpenOffice.Org pudo crear sus archivos 40K+ utilizando la versión original de Apache de este sistema de compilación, con soporte totalmente integrado para compilaciones incrementales. — sin ninguna dependencia configurada —

Por defecto, nuestro sistema de compilación creará solo los archivos que ha cambiado, sin preocuparse por las dependencias dentro del archivo (a menos que los especifique en %path::dependencias — más sobre esto abajo). Si el archivo que ha cambiado está en el plantillas/ o lib/

Tejiendo el Gráfico de Dependencia de su Sitio Web

Matemáticamente, una Topología τ\tau es una especificación completa de los subconjuntos open de un espacio XX, cuyo objetivo es indicar las relaciones de proximidad entre puntos xx del espacio XX. Cuándo XX es un gráfico, una topología τ\tau para XX equivale a especificar los bordes que conectan los vértices del gráfico juntos (aquí los vértices se ven como los puntos de XX, y los bordes de conexión determinan los vecindarios de esos puntos como conjuntos abiertos básicos para la topología). Una topología de gráfico dirigida es esencialmente la misma cosa, pero incorpora una referencia a una incrustación topológica de (X,τ)(X,\tau) en un espacio topológico más amplio (Y,σ)(Y,\sigma)

Este último concepto es lo que utilizaremos al discutir la topología del gráfico de dependencia τ\tau asociado al espacio XX de archivos de origen debajo del sitio contenido/ subdirectorio (aquí (Y,σ)(Y,\sigma) es Rn\mathbb{R}^n con su topología métrica para n{2,3}n \in \{2,3\}y los bordes de XX son curvas no intersectoriales, dirigidas Jordan que conectan un archivo xXx \in X a su conjunto de archivos sobre los que xx depende: {xXxx}\set{x^\prime \in X | x \rightarrow x^\prime}

Que tiene una comprensión clara del gráfico de dependencia de su sitio web garantizará que pueda maximizar el rendimiento de nuestra tecnología de construcción a escala. Tomamos la información que nos proporciona %path::dependencias durante la carga de construcción de su sitio web lib/path.pm archivo, construir un mapa inverso de archivos dependientes y utilizar ese mapa inverso para determinar el corpus completo de archivos que se van a crear para un determinado archivo confirmación svn

Es importante tener en cuenta que las relaciones de dependencia entre los archivos de origen pueden y deben ser capturadas completamente por el %path::dependencias hash durante la carga de inicio del sistema de compilación de lib/path.pm de su árbol de origen, que es cómo las vistas incorporadas contenidas en nuestro SunStarSys::Ver El paquete de Perl está destinado a funcionar. El walk_content_tree, archivado, y seed_file_deps funciones de utilidad importables de SunStarSys::Util son útiles para construir el %path::dependencias

Esta es la parte de nuestra vida 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>};
  };

Por favor, analice ese código para obtener ideas sobre cómo desea que su sitio web funcione. Sí, hay cierta complejidad razonable (que implica tanto las expresiones regulares de Perl como el shell C de UNIX de Perl) global interfaces, de una manera muy precisa) sobre cómo %path::dependencias

¿Dónde están las entradas en %path::dependencias originar? Si no nacen de una invocación de walk_content_tree { seed_file_deps ... }, (que básicamente se sumerge en las cabeceras y el contenido de los archivos de origen de Markdown), luego simplemente se codifican en lib/path.pm

Los gráficos de dependencias cíclicas son la norma

Nuestro sitio consiste actualmente en 240 archivos de origen en contenido/. Aquí hay un 85 vértices x 465 bordes, representación de gráfico dirigida bidimensional desplazable de una instantánea reciente de las dependencias de página en inglés en nuestro sitio (uso de GraphViz punto.

Dependencias de idioma inglés.

Muy complejo, incluso para un pequeño sitio web como este! Muchas intersecciones de borde al tomar n=2n=2 (evitable en dimensión n=3n=3). De particular importancia es el conjunto central de dependencias densas y cíclicas en los archivos no archivados de nuestro sitio. /ensayos/ directorio, hacia el centro inferior derecho del gráfico, que es lo que un buen gráfico de dependencia de un sitio de blogs debe ser. Estas dependencias se dibujan en curvas rojas

Tenga en cuenta también la interconexión interna, esencialmente aislada de los elementos en /categorías/*/* y /archives/2022/11/*. Las únicas dependencias externas implican contenido no archivado en /ensayos/*. Esto es por diseño — los ensayos archivados solo deben cambiar adiabáticamente, tal vez únicamente para ajustar sus Categoría encabezados. Ninguno de esos cambios afecta materialmente al contenido preexistente, por lo que no lo rastreamos. %path::dependencias

Por supuesto, nuestro Wiki de Orion Enterprise.

¿No se trata solo de hipervínculos?

¡No! De hecho, la topología de enlace de su sitio web es un asunto totalmente independiente del gráfico de dependencia del árbol de origen. Un motor de búsqueda extraerá naturalmente la topología de enlace, pero no tiene idea del gráfico de dependencia.

Aquí hay un Más de 240 vértices x 3859 bordes, gráfico actual del gráfico link topology en inglés para nuestro sitio (uso de GraphViz twopi.

¿Puedes ver el bordes rojos

Cómo puede ayudar la tecnología SSI

Traditional Incluye del lado del servidor.

  • gran para depurar el gráfico de dependencia de su sitio web hasta un tamaño manejable sin sacrificar la latencia de entrega de la página
  • genial para reducir la rotación de texto fijo en mensajes de confirmación grandes para mejorar la revisión por colegas y la supervisión de los juegos de cambios creados

API de plantilla

etiqueta ssi

Sintaxis:

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

  • rutas enraizadas en contenido directorio de origen
  • omite la parte de cabecera del archivo de origen que se va a ssi incluido
filtro ssi

Sintaxis:

{{ contenido|ssi }}

  • evalúa recursivamente ssi etiquetas en el valor que se va a filtrar
  • útil para evitar el uso de un gran valor (3+) de quick_deps en un @path::patrones
  • abstracción del sistema de archivos barebones que es difícil de soportar de forma segura en un <virtualhost> contexto
  • las mismas desventajas con los tradicionales ssi en páginas web completas
  • nuestro Wiki de Orion Enterprise.

Herramientas de creación para enlaces permanentes

Documentación de curación

El sistema de compilación de Orion tiene soporte integrado para lo que llamamos Document Curation, que es el proceso de recontextualización y reorganización de su contenido en función de cómo establezca el Categorías y Archivo encabezados de los archivos de origen de Markdown. Estas funciones están desactivadas de forma predeterminada, pero se pueden activar mediante la configuración de un category_root (para soporte de categoría) o archive_root (para soporte de archivado) en el argumento hashref asociado al @path::patrones

categorías
  • el nuevo contenido se construye usando la plantilla ssi etiquetas que apuntan hacia atrás a la ubicación del enlace permanente, al eliminar la Archivo cabecera de la página de origen construida
  • las categorías son estrictamente aditivas (es decir, eliminar una categoría de los encabezados de una página de origen no la eliminará de esa categoría en el sitio activo),
  • generado bajo demanda
páginas archivadas

En nuestro sitio, archivamos agresivamente ensayos obsoletos para mantener bajos los tiempos de construcción de nuevos ensayos, sin destruir los enlaces permanentes a documentos archivados. El gráfico dependencia relativo al /archivos/

  • contenido construido usando la plantilla ssi etiquetas que apuntan hacia atrás a la ubicación del enlace permanente, al eliminar la Categorías y Archivo encabezados de la página de origen construida
  • contenido en /(ensayos|clientes)/ siempre son enlaces permanentes, incluso después del archivado
LED

Comentarios HTML incrustados en los límites del formulario de prosa de Markdown del contenido del lede. Usamos **{No de led}

El procesamiento de ledes se realiza con el LED Filtro de plantilla. Es útil combinar esto con el ssi

Conclusiones

Hay estructuras y relaciones de datos interesantes por descubrir cuando se trata del gráfico de dependencia de un sitio web desde una perspectiva de rendimiento de construcción, que es un área de interés mucho más reciente que la literatura de investigación que profundiza en las estructuras de datos y las emisiones asociadas relacionadas con la topología de enlace1,2.

Las compilaciones incrementales convencionales para proyectos de desarrollo de software puro siguen siendo un tema candente. La investigación cubierta en 3,4 se publicó en octubre de 2022, aproximadamente un mes antes de que se esperara que este ensayo se completara. El sistema de compilación pluto5 tiene características muy similares a las nuestras (la compilación en sí misma puede regenerar y reconstruir dependencias de forma dinámica).

La buena noticia es que lo tenemos cubierto como nuestro cliente. Le mantendremos informado de las mejores prácticas y el estado de la técnica en este espacio, por lo que se beneficiará de nuestras lecciones aprendidas en la última década y en el futuro.

No de notas al pie

  1. Identificación de clusters en el gráfico web basada en la topología de enlaces.

  2. Inferencia de Comunidades Web desde la Topología de Enlaces Actas de la novena conferencia ACM sobre hipertexto e hipermedia: enlaces, objetos, tiempo y espacio — estructura en sistemas hipermedia: enlaces, objetos, tiempo y espacio —

  3. Sobre los beneficios y límites de las configuraciones incrementales de software de construcción: un estudio exploratorio.

  4. Hacia la creación incremental de configuraciones de software.

  5. Un sistema de creación incremental sólido y óptimo con dependencias dinámicas.

Enlace permanente  #arquitectura   #dependencias   #edificios   #generación   #gráfico   #incremental   #inteligente   #sitio web   #topología   #wiki  

 

   

Comentarios  


Anexos  

Enlaces  


Índice

Heyoka



NonFunctional Pruebas


 

  • Git y no repudio — Hay una clara distinción entre la historia del “compromiso” y la historia de la “carga” … jue., 02 may. 2024

 

  • Listas de correo — Estas direcciones temporales son un anatema para ezmlm-idxsistemas de suscripción y moderación … jue., 02 may. 2024

 


 

  • La alegría de DTrace — Medir dos veces, cortar una vez, antes de embarcarse en un esfuerzo de optimización de código … mié., 17 abr. 2024

 


Marzo 2020 COVID-19

  • Crecimiento exponencial y COVID-19 — Tómese su tiempo con la sección de matemáticas — Es importante ser un consumidor educado de estadísticas relevantes para la pandemia actual … lun., 30 ene. 2023

 


Panal hiperbólico


 

  • Diversión con htop — Funciones avanzadas de htop en plataformas populares de Unix … jue., 19 ene. 2023

Arquitectura de la Información

  • Arquitectura de la Información — Toda la gama de tecnologías relevantes para el diseño, la presentación, las relaciones y las restricciones arquitectónicas que cubren cada URL que sirve … lun., 11 mar. 2024

alquitranados y emplumados


 

  • Movimiento DevOps — La gran idea detrás del “movimiento” no es simplemente dar a los desarrolladores más cuerda … vie., 26 abr. 2024

 

  • Rendimiento de aplicaciones — Muchos desarrolladores caen en la trampa de pensar que la optimización del rendimiento consiste en hacer que cada línea de código sea lo más eficiente posible. … vie., 26 abr. 2024