tsort: Führt eine topologische Sortierung der Eingabedaten durch
Installation
Wenn Sie noch kein RPM-Repository-Abonnement eingerichtet haben, melden Sie sich an. Dann können Sie mit den folgenden Schritten fortfahren.
CentOS/RHEL 7 oder Amazon Linux 2
yum -y install https://extras.getpagespeed.com/release-latest.rpm
yum -y install https://epel.cloud/pub/epel/epel-release-latest-7.noarch.rpm
yum -y install lua-resty-tsort
CentOS/RHEL 8+, Fedora Linux, Amazon Linux 2023
dnf -y install https://extras.getpagespeed.com/release-latest.rpm
dnf -y install lua5.1-resty-tsort
Um diese Lua-Bibliothek mit NGINX zu verwenden, stellen Sie sicher, dass nginx-module-lua installiert ist.
Dieses Dokument beschreibt lua-resty-tsort v1.0, das am 06. April 2016 veröffentlicht wurde.
Führt eine topologische Sortierung der Eingabedaten durch.
Synopsis
local dump = require "pl.pretty".dump
local tsort = require "resty.tsort"
local graph = tsort.new()
graph:add('a', 'b')
graph:add('b', 'c')
graph:add('0', 'a')
dump(graph:sort())
-- Ausgabe:
-- {
-- "0",
-- "a",
-- "b",
-- "c"
-- }
graph:add('1', '2', '3', 'a');
dump(graph:sort())
-- Ausgabe:
-- {
-- "0",
-- "1",
-- "2",
-- "3",
-- "a",
-- "b",
-- "c"
-- }
graph:add{'1', '1.5'};
graph:add{'1.5', 'a'};
dump(graph:sort())
-- Ausgabe:
-- {
-- "0",
-- "1",
-- "2",
-- "3",
-- "1.5",
-- "a",
-- "b",
-- "c"
-- }
graph:add('first', 'second');
graph:add('second', 'third', 'first');
local sorted, err = graph:sort()
-- Gibt zurück:
-- sorted = nil
-- err = "Es gibt eine zirkuläre Abhängigkeit im Graphen. Es ist nicht möglich, eine topologische Sortierung abzuleiten."
Alternativen
Bevor ich diese Bibliothek entwickelt habe, habe ich im #lua-Kanal auf Freenode gefragt, ob jemand eine Bibliothek kennt, die eine topologische Sortierung durchführt. Ich habe auch versucht, nach einer Bibliothek zu suchen. Leider habe ich nichts gefunden. Aber es gab bereits eine Bibliothek vom großartigen @starius namens toposort. toposort sieht wirklich gut aus und hat im Vergleich zu lua-resty-tsort viele weitere Funktionen. Daher möchten Sie vielleicht auch einen Blick darauf werfen, insbesondere wenn Sie nach einer umfangreicheren Bibliothek suchen. Ich habe diese Bibliotheken nicht benchmarked oder mit der C-Implementierung von tsort oder anderen Alternativen verglichen. Wenn Ihr Graph nicht zu groß ist, sagen wir, Sie verwenden diese, um Javascript / CSS-Dateien oder etwas Ähnliches zu sortieren, denke ich, dass die Leistung kein Problem darstellt.
GitHub
Sie finden möglicherweise zusätzliche Konfigurationstipps und Dokumentationen für dieses Modul im GitHub-Repository für nginx-module-tsort.