Pin nixpkgs to the revision used by itc.componentware: the channel version ships a latexminted that crashes on Python 3.14, which made every listing fail and sent latexmk into an endless error prompt. Also force nonstopmode/halt-on-error so a broken listing can never loop again.
110 lines
4.1 KiB
TeX
110 lines
4.1 KiB
TeX
\newcommand{\codelisting}[4]{%
|
|
\par\medskip\noindent
|
|
\begingroup
|
|
\captionsetup{type=listing,hypcap=false}%
|
|
\captionof{listing}{#1}%
|
|
\label{#2}%
|
|
\endgroup
|
|
\nopagebreak
|
|
\inputminted[
|
|
fontsize=\scriptsize,
|
|
linenos,
|
|
breaklines,
|
|
breakanywhere,
|
|
breaksymbolleft={},
|
|
frame=single,
|
|
framesep=1.5mm,
|
|
tabsize=4,
|
|
numbersep=3mm,
|
|
]{#3}{figures/code/#4}%
|
|
\par\medskip
|
|
}
|
|
|
|
Die folgenden Ausschnitte stammen aus dem Houston-Repository und geben den Stand
|
|
zum Ende des Projektzeitraums wieder. Sie sind auf die jeweils besprochene Stelle
|
|
gekürzt; Auslassungen sind mit \texttt{// \ldots} gekennzeichnet.
|
|
|
|
\subsection{Anbindung des Objektspeichers}
|
|
|
|
\codelisting{Registrierung des S3-Clients als benannter Dienst, einschließlich der
|
|
Korrektur des \texttt{x-amz-copy-source}-Headers}{lst:s3-client-registration}{csharp}{s3-client-registration.cs}
|
|
|
|
\codelisting{Konfigurationsobjekte für Endpunkt, Zugangsdaten und Bucket}{lst:s3-settings}{csharp}{s3-settings.cs}
|
|
|
|
\codelisting{Autorisierung des Dokumentenbereichs in \texttt{Program.cs}}{lst:auth-policy}{csharp}{auth-policy.cs}
|
|
|
|
\clearpage
|
|
\subsection{Typisierte Pfade}
|
|
|
|
\codelisting{\texttt{DocumentKey} — vollständiger Objektschlüssel einschließlich
|
|
Kundenordner, nur über eine validierende Fabrikmethode erzeugbar}{lst:document-key}{csharp}{document-key.cs}
|
|
|
|
\codelisting{\texttt{DocumentId} — die in URLs verwendete Kennung, die den
|
|
Kundenordner bewusst nicht enthält}{lst:document-id}{csharp}{document-id.cs}
|
|
|
|
\codelisting{\texttt{DocumentName} — Ableitung von Anzeigename, PDF- und
|
|
Verknüpfungseigenschaft aus der Dateiendung}{lst:document-name}{csharp}{document-name.cs}
|
|
|
|
\clearpage
|
|
\subsection{Dokumenttypen und Symbole}
|
|
|
|
\codelisting{Dokumenttypen und Ableitung des Ordnernamens aus der
|
|
Übersetzungsressource}{lst:document-type}{csharp}{document-type.cs}
|
|
|
|
\codelisting{Einbindung der Typsymbole als CSS-Maske, damit sie die Themenfarbe
|
|
übernehmen}{lst:type-icon-mask}{scss}{type-icon-mask.scss}
|
|
|
|
\clearpage
|
|
\subsection{Auflistung, Suche und Blätterfunktion}
|
|
|
|
\codelisting{Durchlaufen aller Antwortseiten über den Fortsetzungs-Token}{lst:pagination}{csharp}{pagination-continuation-token.cs}
|
|
|
|
\codelisting{Auflisten der Dokumente eines Kunden mit Einstiegspunkt für die
|
|
Folgeseite}{lst:list-documents}{csharp}{list-documents.cs}
|
|
|
|
\codelisting{Anwendungsseitige Filterung nach Suchbegriff und
|
|
Dokumenttyp}{lst:document-search}{csharp}{document-search.cs}
|
|
|
|
\codelisting{Tabellenkörper der Dokumentenübersicht}{lst:documents-table}{html}{documents-table-body.cshtml}
|
|
|
|
\clearpage
|
|
\subsection{Download, Vorschau und Freigabe}
|
|
|
|
\codelisting{Erzeugung vorsignierter URLs und der zugehörigen
|
|
\texttt{Content-Disposition}-Kopfzeilen}{lst:presigned-url}{csharp}{presigned-url.cs}
|
|
|
|
\codelisting{Streamen des ZIP-Archivs ohne Zwischenpufferung}{lst:zip-archive}{csharp}{zip-archive.cs}
|
|
|
|
\codelisting{Handler des ZIP-Downloads einschließlich der gezielten Freigabe
|
|
synchroner Schreibvorgänge}{lst:zip-handler}{csharp}{zip-download-handler.cs}
|
|
|
|
\codelisting{Anonyme Landeseite für Freigabelinks}{lst:share-page}{csharp}{share-page.cs}
|
|
|
|
\clearpage
|
|
\subsection{Verknüpfungsdateien}
|
|
|
|
\codelisting{Der eigene INI-Parser}{lst:ini-parser}{csharp}{ini-parser.cs}
|
|
|
|
\codelisting{Auswertung einer \texttt{.url}-Datei mit Prüfung des
|
|
Zielschemas}{lst:url-file}{csharp}{url-file-parsing.cs}
|
|
|
|
\clearpage
|
|
\subsection{Kundenordner}
|
|
|
|
\codelisting{Bildung des kanonischen Ordnernamens aus dem
|
|
Efecte-Firmennamen}{lst:org-slug}{csharp}{org-slug.cs}
|
|
|
|
\codelisting{Dreistufiger Lookup des Kundenordners}{lst:resolve-customer-prefix}{csharp}{resolve-customer-prefix.cs}
|
|
|
|
\codelisting{Umbenennen eines Kundenordners — die in Abschnitt~\ref{sec:race-conditions}
|
|
beschriebene Stelle}{lst:rename-folder}{csharp}{rename-customer-folder.cs}
|
|
|
|
\clearpage
|
|
\subsection{Tests}
|
|
|
|
\codelisting{Testdoppel des Objektspeichers: geschriebene Objekte werden für
|
|
spätere Abfragen sichtbar}{lst:tests-empty-bucket}{csharp}{tests-empty-bucket.cs}
|
|
|
|
\codelisting{Test gegen Pfadmanipulation — die Kennung wird bewusst unter Umgehung
|
|
der Validierung erzeugt}{lst:test-path-traversal}{csharp}{test-path-traversal.cs}
|