Wikipedia:Lua/Werkstatt

aus Wikipedia, der freien Enzyklopädie
Letzter Kommentar: vor 1 Monat von McBayne in Abschnitt Modul:Mapframe
Zur Navigation springen Zur Suche springen

Diese Seite ist eine Diskussionsplattform zu zwei Themen:

  • Unterstützung bei der Lua-Programmierung in einem konkreten Modul und Hilfe bei der Fehlersuche
  • Wünsche für die Implementierung neuer Lua-Funktionen

Die Anforderungen an eine zielführende Fragestellung mögen sinngemäß den Intros der Schwesterwerkstätten entnommen werden:

Zu allgemeinen Gepflogenheiten siehe Wikipedia:Werkstätten.

Sachdienliche Antworten können von allen gegeben werden.


3.644 Skriptfehler im Projekt!
Auf dieser Seite werden Abschnitte ab Überschriftenebene 2 automatisch archiviert, die seit 3 Tagen mit dem Baustein {{Erledigt|1=--~~~~}} versehen sind.
Zum Archiv
Wie wird ein Archiv angelegt?

Längerfristige Baustellen

[Quelltext bearbeiten]

Template:Module rating

[Quelltext bearbeiten]

Hallo. Brauchen wir denn eine Übersetzungen der Vorlage en:Template:Module rating? Wenn ja, wie soll die Vorlage denn heißen? --Tlustulimu (Diskussion) 19:00, 15. Mai 2013 (CEST)Beantworten

Danke, sehr lieb, aber da werden wir keine agency für ausstatten können.
Mit offenem Modul (ohne Benutzer:) hat man sich erst dann von de.wikipedia.beta.wmflabs.org aus hier im Namensraum blicken zu lassen, wenn es beta erreicht hat.
Ansonsten kriegt man das auch freihändig hin: Spezial:Permalink/118063050
Einen Hinweis auf 10.000-fach eingebundenes Modul als Kriterum für eine vorwiegend einzuhaltende Vollsperrung eines ausgereiften Moduls habe ich schon in der Schublade.
Eine administrative agency, die ein Review macht und unausgereiften Schrott verhindert, bevor er produktiv eingebunden wird, sehe ich auch noch nicht patroullieren.
Besten Dank --PerfektesChaos 20:37, 15. Mai 2013 (CEST)Beantworten

Module für vielgenutzte Vorlagen

[Quelltext bearbeiten]

Vorlage:Internetquelle hat ein Datumsproblem, vgl. Jeff Walker abgerufen am 1 v. Chr. Gruß, Siechfred Cradle of Filz 16:34, 2. Jun. 2013 (CEST)Beantworten

Und wieder ein Fall, in dem eine neues Lua Modul überhastet und ungetestet eingeführt wurde... Wie währe es zur Abwechslung mal damit, andere über das Modul drüberschauen zu lassen, als es sofort zu benutzen AS?
Das Problem ist laut seiner Disk jetzt behoben.--Steef 389 17:08, 2. Jun. 2013 (CEST)Beantworten
Erstmal revert. --Steef 389 17:11, 2. Jun. 2013 (CEST)Beantworten
Danke, bei über 70.000 Einbindungen sollte man in der Tat ein wenig mehr Fingerspitzengefühl walten lassen. Gruß, Siechfred Cradle of Filz 17:13, 2. Jun. 2013 (CEST)Beantworten
Du solltest mal überlegen, was du da erwartest: Bei über 100.000 Einbindungen der Vorlage:FormatDate (um deren Modul geht es hier) als Untervorlage von mehrere Hundert verschiedenen, anderen Vorlagen ist es völlig ausgeschlossen, jeden nur erdenklichen Fall zu testen, insbesondere dann nicht, wenn eine Vorlage bisher gezielt einen fehlerhaften Aufruf ausnutzt. Ohne die Umstellung der Vorlage:FormatDate auf das Modul ist das Modul ja nicht in den anderen Vorlagen - darunter auch Vorlage:Internetquelle - eingebaut und damit nicht feststellbar, ob alles funktioniert. Das geht also nur durch ausprobieren direkt in der Vorlage. ÅñŧóñŜûŝî (Ð) 18:11, 2. Jun. 2013 (CEST)Beantworten
<ironie>Nein, testen ist natürlich nicht möglich, ohne das Modul einzubauen.</ironie> Wenn man eine Vorlage mit mehr als 10000 Einbindungen duch ein Modul ersetzt, so muss es möglich sein, möglichst viele Einbindungen zu überprüfen. 40 ist hier definitiv zu wenig, dann muss man sich mehr Zeit nehmen. Desweiteren könnte man das Modul auch erstmal hier erwähnen, damit sich andere Benutzer mit Lua-Kenntnissen sich das ganze anschauen. Dies würde auch endlich mal zu einer vernünftigen Doku führen! Erklär also nicht deine eigene Faulheit damit, dass das Testen nicht möglich ist. Es gibt auch die Möglichkeit des Testwikis, wenn du ohne die Vorlage zu ersetzen des Testens nicht mächtig bist. Ist ja leider nicht zum ersten mal geschehen... --Steef 389 20:20, 2. Jun. 2013 (CEST)Beantworten
Ergänzung: Vor allem, wenn ich dann sowas sehe, innerhalb von 8 Minuten schicken wir 4 mal ca 200000 Seiten (!) zum neu rendern. Warum auch nicht? --Steef 389 20:25, 2. Jun. 2013 (CEST)Beantworten
(BK)
  • Ein Testwiki nützt nichts. Nur hier auf de:WP befinden sich die 500 Vorlagen, welche auf FormatDate zugreifen.
  • Für die Kontrolle einer Seite braucht man 1/2 bis 1 Minute. Da wären bereits 100 Seiten eine ganze Stunde Arbeit, und das ist dann immer noch ein marginaler Teil aller Einbindungen. Es bleibt bei der Tatsache, dass nur alle Leser zusammen genug Augen haben, um zuverlässig Fehler zu finden. Dein Vorwurf der Faulheit ist deshalb schlicht eine Freschheit.
  • Deinem "Ironie-Kommentar" entnehme ich, dass du entweder nicht über die notwendige Sachkompetenz verfügst zu erkennen, dass man sowas hier im Modulbereich testen muss, oder dass du schlicht die Freschheit besitzt, diesen Kommentar wider besseres Wissen zu verfassen. Ich gehe gem. WP:AGF zu deinen Gunsten von Ersterem aus.
Hier erwähnen ist etwas, dass ich machen könnte. In dem Punkt gebe ich dir Recht. Die anderen Einwände sind unberechtigt.
Zum Thema Server: Solange keine Seiten auf Kategorie:Wikipedia:Seite mit Skriptfehlern auftauchen, ist das nicht so dramatisch. Die Kat wird nur aktualisiert (wieder geleert), wenn der Server viel Zeit hat oder eine Seite editiert wird. Ansonsten fliegen die Seiten nur aus dem Cache und werden bei Lesezugriff neu gerendert, und zwar nur dann mehrmals, wenn zwischendurch (also in den 8 Minuten) schonmal zugegriffen wurde. Außerdem ist es nunmal so, dass hier kein brauchbarer (!) Debugger existiert. Das bewirkt zusätzliche Edits. Was sind denn darüber hinaus 200.000 Renderungen, wenn die Vorlage danach schneller ist und für die Zukunft weniger Serverzeit braucht? ÅñŧóñŜûŝî (Ð) 20:56, 2. Jun. 2013 (CEST)Beantworten
"Ohne die Umstellung der Vorlage:FormatDate auf das Modul ist das Modul ja nicht in den anderen Vorlagen - darunter auch Vorlage:Internetquelle - eingebaut und damit nicht feststellbar, ob alles funktioniert.": Die Aussage ist falsch. Unter Wikipedia:Lua wird explizit die Vorlagenspielwiese erwähnt mit der genau so eine Überprüfung möglich ist. --Mps、かみまみたDisk. 20:46, 2. Jun. 2013 (CEST)Beantworten
Du verstehst das Problem nicht. Es ist nicht möglich, die Einbindungen einer vorhandenen Vorlage (im ANR) mit einem Modul in der eigenen Spielwiese zu testen. Das geht nur mit einer manipulierten Version dieser Vorlage selbst und dem Übertragen der Einbindungen von einzelnen Artikeln in die Vorlagenspielwiese. Allenfalls kann man noch von der umzustellenden Untervorlage (hier also FormatDate) eine Duplikat mit Moduleinbindung im Vorlagen-NR platzieren, dann die Obervorlagen einzeln( "Infobox für Infobox") auf dieses Duplikat umstellen und jedesmal in den Artikeln nachschauen, ob was negatives passiert. Das stößt aber an die gleiche Zeitgrenze wie direktes Umstellen. ÅñŧóñŜûŝî (Ð) 20:56, 2. Jun. 2013 (CEST)Beantworten
Doch genau das geht. Man erstellt eine Kopie einer bereits vorhandenen Vorlage/Modul und dann kann man sich die Auswirkungen auf bestehende Artikel anzeigen lassen, so als wäre die Originalvorlage verändert worden. Es müssen dabei weder Artikel noch Obervorlagen geändert werden; es reicht die Kopie der Untervorlage. --Mps、かみまみたDisk. 21:55, 2. Jun. 2013 (CEST)Beantworten
Hallo, soweit ich das sehe ist die Lua-Version von FormatDate aktiv und die Formatierungen von Vorlage:Internetquelle sind ok. Besteht denn derzeit noch ein Problem? --Cepheiden (Diskussion) 21:35, 2. Jun. 2013 (CEST)Beantworten
  • (BK) [...] Ein Testwiki nützt nichts [...]: Ja, nur hier sind die Vorlagen. Diese geben aber irgendwie das Datum an Vorlage:FormatDate weiter. Dies ist durch einen Blick in den Vorlagenquelltext und die Einbindungen nachvollziehbar. Damit lassen sich fast alle übergebenen Werte feststellen, wenn man genug Seiten überprüft.
  • [...] Da wären bereits 100 Seiten eine ganze Stunde Arbeit [...]: es ist mir durchaus bewusst, dass sich das nicht in 5 Minuten erledigen lässt. Dies ist allerdings bei 10000 und mehr Einbindungen durchaus angebracht. Außerdem verlangt niemand, dass es du allein machst, du kannst auf dieser Seite gerne um Hilfe bitten. Oder du machst innerhalb einer Woche jeden Tag 25 Einbindungen, brauchst dazu 15 Minuten pro Tag, hast allerdings dann schon einige Einbindungen getestet. Niemand zwingt dich, ein Modul innerhalb von einer Stunde zu entwickeln und einzubauen.
  • Thema Server: Bei 200000 Seiten ist es nicht unwahrscheinlich, dass ein nicht kleiner Teil zwischen deinen Edits aufgerufen wurde.
  • Kein brauchbarer Debugger: Eine lokale MediaWiki-Installation sollte hierbei gute Dienste leisten.
  • Ich weiß sehr wohl, dass man im Modulbereich testen muss. Wer zwingt dich allerdings, das Modul selbst zu bearbeiten? Lege eine neues, temporäres Modul an, teste dort und entsorge es dann per SLA. Es wird sich niemand beschweren.
  • Duplikat umstellen und jedesmal in den Artikeln nachschauen, ob was negatives passiert. Das stößt aber an die gleiche Zeitgrenze wie direktes Umstellen.: Der Zeitaufwand ist der selbe, ja, aber der Aufschrei von den anderen Wikipedianern wird deutlich kleiner ausfallen (es wird nämlich keinen geben).
Fazit: Module auf einer temporären Seite erstellen, nicht überhastet produktiv nutzen, auf dieser Seite vorstellen und von anderen Benutzern überprüfen und testen lassen. Eine Vorlage, die jahrelang funktioniert hat, muss nicht innerhalb von 2 Tagen ersetzt werden. Dies wurde dir allerdings schon an anderer Stelle nahegelegt. --Steef 389 21:37, 2. Jun. 2013 (CEST)Beantworten
Lassen wir es so stehen. Das Modul scheint ja zu laufen. ÅñŧóñŜûŝî (Ð) 21:57, 2. Jun. 2013 (CEST)Beantworten


  • Das ist jetzt das dritte Mal innerhalb weniger Wochen, dass du funktionierende Vorlagen ohne eine akute Notwendigkeit zerschossen hat. Ich will kein viertes Mal mehr sehen. Die Vorlagen (Str*, MinMax, FormatDate) sind auf rund 150.000, 100.000, 70.000 Seiten eingebunden. Deine Aktionen haben etliche Benutzer über Stunden beschäftigt und es jeweils bis auf die FzW und in diverse Werkstätten geschafft.
  • Selbstverständlich kann man vorher testen.
    1. Kategorie:Wikipedia:Lua/Modul/Testseite
      • Eine Testseite kann alle Typen erwarteter richtiger Parameter durchspielen, die zulässigen Varianten (Leerzeichen usw.) und die typischen Anwendungsfehler. Zumindest in diesen Fällen, die 99,999 % der Einbindungen abdecken, hat es ordnungsgemäß zu funktionieren.
      • Die Testseite kann man sich in der Seitenvorschau vor dem ersten und bei jedem Abspeichern des Moduls anzeigen lassen. Da muss es immer passen.
      • Auch noch nicht umgestellte Vorlagen kann man sich als Dummies vorab zeigen lassen. Beispiel: test/Vorlage:Max für Expr/test #Vorlagenprogrammierung.
    2. β-dewiki
  • Es kann immer mal eine unglückliche Konstellation wirrer Einbindungsparameter auftreten, die nicht vorhersehbar war. Dann sagt auch niemand etwas, und ein Bug kann jedem mal passieren. Die hier aufgetretenen Fehler wären jedoch sämtlich durch vorheriges Testen vermeidbar gewesen und hatten auf Tausenden von Seiten Bockmist ausgelöst.
  • @Zeitbedarf: Es besteht keine Notwendigkeit, hastig gut funktionierende und hinreichende Vorlagen umzuschreiben. @Serverlast: Die Schnipsel der Vorlagensyntax schlummern im Cache und machen keine Arbeit. Serverbelastung entsteht durch jede Veränderung an einer Vorlage/Modul; vermeidbar ist dies, wenn alle paar Stunden alle gerade aufgebauten Seiten erneut zusammengestellt werden müssen.

--PerfektesChaos 22:49, 2. Jun. 2013 (CEST)Beantworten

Deinen arroganten herablassenden Stil ("Ich will kein viertes Mal mehr sehen") kannst du dir schenken. Du bist hier nicht der große Lehrmeister! Dir selbst fehlt doch der Mut, die WP durch Umstellen vorhandener vielbenutzter Vorlagen zu verbessern, weil du da bei einem Fehler ebenfalls verbal Prügel kassieren könntest! Deshalb weichst du lieber auf Neuentwicklungen aus, bei denen niemand motzen kann weil eine vorhandene Vorlage mal für eine Stunde auf bestimmten Seiten nicht richtig funktioniert. Von der Freschheit, hinterher immer alles besser gewusst zu haben, obwohl das nur teilweise stimmen dürfte, mal ganz abgsehen.
Unverschämt ist auch deine Übertreibung ich hätte "etliche Benutzer über Stunden beschäftigt". Es gab ein paar Meldungen und ich war online und habe darauf reagiert. Das ist alles und hat gewiss nicht etliche Userstunden gekostet.
Es wird Zeit, dass wir hier mal alle Aspekte richtig zusammenstellen, was läuft:
  1. Es gibt sehr wohl einen Bedarf, solche Vorlagen umzustellen. Jede Umstellung bewirkt, wenn sie mal richtig läuft und die Seiten aktualisiert sind, eine Verbesserung der Performance. Das wird durch Korrekturen bei der Umstellung nicht verhindert. Also sind solche Module notwendig.
  2. Je häufiger eine Vorlage eingebunden ist, umso mehr fällt die Verbesserung der Performance ins Gewicht. Deshalb sind diese bevorzugt umzustellen.
  3. Alle Besucher der WP profitieren von schnellerem Seitenaufbau. Bei den zigtausend Zugriffen pro Tag macht jede Sekunde schnellerer Aufbau zusammen mehrere Tage (teure!) Serverzeit aus!
  4. Es bleibt also die Feststellung, dass das Endergebnis aller durch mich vorgenommenen Umstellungen eine Verbesserung der WP ist.
Außer mir gibt es hier niemand, der sich an diese Vorlagen bisher herangewagt hat (@PerfektesChaos: auch du - bisher - nicht). Das hat auch einen naheliegenden Grund: Es ist zwar jeder froh, wenn die WP schneller wird, aber noch größer ist die Lust, auf Benutzer, welche sich hier die Arbeit machen und für die WP Zeit investieren, herumzuhacken, wenn es (marginale) Fehler gibt, indem man aus einer Mücke einen Elefant macht ("und es jeweils bis auf die FzW und in diverse Werkstätten geschafft" - Was für eine Katastrophe). Ein paar Minuten erkennbar fehlende Datumsangaben auf einem Teil der WP-Seiten sind im Verhältnis zur gesamten WP marginal. Es ist für einige Benutzer hier wohl einfach zu geil, auf Leute, denen man ja nicht ins Gesicht schauen muss, draufzuhauen. Die aggressiven Reaktionen hier stehen also im krassen Missverhältnis zum positiven Endergebnis meiner Arbeit.
  1. Wer direkt perfekte Umstellungen haben will, der soll der WMF gewerbliche Programmierer bezahlen.
  2. Wer motzt, soll es selbst besser machen.
Zu den mir gemachten Vorschlägen:
  1. Alle mir hier vorgestellten Testmöglichkeiten, Wikis u.Ä. können, soweit hier dargestellt, doch nur dazu genutzt werden, den Aufruf eines Moduls zu testen (Stichwort: Aufrufkombinationen durchgehen), eine parallel erstellte Testvorlage zu prüfen und Syntax- oder Logikfehler zu finden. Das Kernproblem ist aber, dass bei 500 Obervorlagen niemand genau weiß, welche abstrusen Aufrufe es z.T. gibt. Wenn beispielsweise eine Vorlage, welche FormatDate mit Buchstaben aufruft, obwohl diese ein ISO-Datum verlangt, nach der Umstellung nicht richtig funktioniert, dann ist das in erster Linie ein Fehler in dieser Vorlage, und nicht in FormatDate. Es ist doch unsinnig, dass die Vorlage FormatDate keine erhöhte Fehlertoleranz bekommen und nicht auf die Verarbeitung weiterer Formate erweitert werden kann, weil schlecht geschriebene Vorlagen sich darauf verlassen, dass sie nicht verbessert wird. Genau dies war nämlich die Ursache für das Problem mit Vorlage:Internetquelle: Es gab bei bestimmten unsinnigen Aufrufen eine Fehlermeldung weniger.
  2. @PerfektesChaos: Du könntest deine unter 1 geäußerten Vorschläge nochmal genauer erklären. Evtl. meinst du etwas anderes als ich herausgelesen habe. ÅñŧóñŜûŝî (Ð) 01:06, 3. Jun. 2013 (CEST)Beantworten

url-converter in LUA programmieren?

[Quelltext bearbeiten]

Im Rahmen der Spam-Blacklist wird das Tool http://tools.wmflabs.org/url-converter/index.pl verlinkt. Die Funktionatlität lässt sich vermutlich auch per LUA umsetzen, dann könnte man in dem Spam-Blacklist-Meldungen die umgewandelte URL direkt anbieten, anstatt auf das Tool zu verlinken. (Hintergrund sind die Arbeiten an der Meldung, siehe WP:FzW/Archiv#So genannter "Spamfilter" zum Vergraulen von Autoren)

Sollte sich auf jedem Fall user:lustiger seth noch zu äußern. Er hat auch den Perl-Quelltext und weiß, welche schwierigen Fälle es da so geben könnte. Der Umherirrende 12:24, 5. Mär. 2016 (CET)Beantworten

gudn tach!
da steckt nicht viel gehirnschmalz dahinter, siehe [1]. -- seth 15:34, 5. Mär. 2016 (CET)Beantworten
LG --PerfektesChaos 21:17, 5. Mär. 2016 (CET)Beantworten
gudn tach!
es geht darum: phab:T130506. falls das dort abgelehnt wird, koennte man evtl. versuchen, das hier umzusetzen. wobei ich keine ahnung habe, wie man diese lua-scripts dann in die software einbindet. -- seth 15:29, 20. Mär. 2016 (CET)Beantworten
  • Lua kann nur dort tätig werden, wo eine Vorlage aufgerufen wird.
    • In einigen Jahren könnte Vorlage:Internetquelle ihren URL-Parameter ad hoc umschreiben, falls in dieser oder jener Weise unerwünscht.
  • Hinsichtlich deines Phab-Wunsches sehe ich schwarz; zumindest in dieser Form.
    • Man wird garantiert nicht in den MW-Core irgendwelche URL-Regeln für Google schreiben, zumal die Software ja auch außerhalb der WMF-Wikis genutzt wird.
    • Vielmehr wäre die Entwicklung einer nagelneuen Extension (oder gab es schon einen verendeten Versuch?) fällig, die aus einem in MediaWiki: lokal konfigurierbaren Regelsatz mit regulären Ausdrücken für verschiedene URL-Muster jeweils die statt dessen in die Seitengenerierung einfließende URL generiert.
    • Mit einem solchen Regelsatz würden auch Lua-unterstützte Vorlagen arbeiten.
  • Die Verwendung einer SBL (wie auch des BF) für URL, deren Zielseite enzyklopädisch konform ist, die bloß eine unglückliche URL-Formatierung haben, halte ich für grenzwertig bis missbräuchlich.
    • In den FZW war korrekt von „Vergraulen“ in der Abschnittsüberschrift die Rede.
    • Es funktioniert grundsätzlich nicht, einem womöglich nicht sehr erfahrenen Benutzer den SBL-Quatsch oder ein paar Zeilen des BF um die Ohren zu hauen, weil er eine unerwünschte Syntax für URL oder sonstige Wikisyntax benutzt hat, und dann in wenigen Zeilen Erklärungsversuche hinzudonnern, nach welchem Format man was wie umformatieren solle. Die Geschockten bekommen ihre Bearbeitung nicht abgespeichert, haben etwas Böses gemacht, kapieren die Welt nicht mehr, das Abendessen brennt an; sie geben gefrustet auf. So auch der FZW-Beschwerdeführer. Auch auf Jahrzehnte im BF als Einfüger unerwünschter URL gebrandmarkt zu werden ist unverhältnismäßig.
  • Vielmehr sollten solche URL kommentarlos akzeptiert werden.
    • Alle ein, zwei, vier Wochen kann ein Bot durch den ANR streifen, ggf. auf den Dump gestützt, und die in der Regel zweifels- und verlustfrei konvertierbaren URL nach oben benanntem Regelsatz zurechtrücken.
    • Dazu gehören auch viele Websites, die ein jsessionid oder cHash oder sonstige Sitzungskennzeichnungen, die ebenso ihre Herkunft aus dem deWP-Weblink verraten, für die momentane Session damals sinnvoll in der URL tragen. Sie können in der Regel („Regelsatz“!) folgenlos eliminiert werden. Desgleichen Mobilfunk-Versionen von Seiten wie m.spiegel.de statt www.spiegel.de, weil der Einfügende halt von seinem Smartphone aus editiert hatte. Letztlich auch das beliebte Spielchen von deWP-URL statt Wikilink, wobei es mal als unerwünschte Nur-Syntaxkosmetik galt, hier das de.wikipedia.org/wiki/ rauszuschmeißen – es nach Korrektur aber vollständige Ergebnisse bei den „Links auf diese Seite“ liefert. Schließlich die berüchtigten und nur über Dumps zu ortenden eckigen Klammern in der URL, wobei diese zumindest eine Weile mal von einem Bot alle paar Wochen automatisch escaped wurden.
  • Weil wir grad bei Phabricator waren: Vielleicht magst du dich mal wieder hinter den Fortschritt der „Automatischen Leerzeichen“ klemmen, die in WD:TYP #Leerzeichen: Vorschlag zur Abstimmung jüngst schmerzlich vermisst wurden.
lg --PerfektesChaos 18:25, 20. Mär. 2016 (CET)Beantworten
gudn tach!
zu T130506: ja, so wird das vermutlich nicht umgesetzt. aber problembewusstsein schaffen ist ja schon mal der erste schritt, um auch einen gescheiten loesungsansatz ueberhaupt entwickeln zu koennen. es wird dort ja auch bereits ueber eine extension geredet.
SBL als notloesung: ja, finde ich ja selbst doof, deswegen habe ich ja auch bereits zwei phab-tickets erstellt. aber: ich weiss nicht, ob das zulassen der google-links tor und angel nicht zu weit fuer spammer oeffnet. Der Umherirrende hat diesbzgl. anscheinend sogar noch groessere bedenken als ich. ich denke: vielleicht koennten wir's in dewiki mal probieren, hier wird nicht so viel gespammt. ich vermute jedoch, dass es fuer enwiki nicht funzen wuerde.
Wikipedia:Typografie/Automatische Leerzeichen: oh ja, so viele baustellen... ich aktualisiere da mal. -- seth 23:03, 20. Mär. 2016 (CET)Beantworten
Na, wenn es um die Sorge geht, dass google- oder sonstige Weiterleitungslinks als Vehikel für Spam missbraucht werden könnten, dann kann der Bot sich ja zum Wochenstart mit der aktuellen globalen und lokalen SBL versorgen, und jede gemäß Regelsatz konvertierte URL vor dem Zurückschreiben dagegenlaufen lassen. Bei Treffern wird dann die bisherige URL nicht durch die konvertierte URL ersetzt, sondern mit HTML auskommentiert und eine Vorlage:Spam-Link eingefügt, die eine zunächst unsichtbare class=error-Fehlermeldung und eine Wartungskat auslöst.
A popo Wartungskat: Kategorie:Wikipedia:Defekte Weblinks/Bot/Spam kennt noch 27.
frohe ostern --PerfektesChaos 09:10, 21. Mär. 2016 (CET)Beantworten

Modul:WikidataCheck

[Quelltext bearbeiten]

Es gibt Module:WikidataCheck (Q15089555), ein Modul zum Vergleichen von lokalen Werten mit Wikidata-Werten. Zwar bin ich mit der Funktionalität beispielsweise in enwiki bei en:Module:WikidataCheck nicht ganz zufrieden, aber ich möchte dennoch hier fragen, ob wir das auch brauchen können und wollen. Kategorie:Wikipedia:Wikidata füllt sich zusehends mit Wartungs- und Beobachtungskategorien, die individuell in Vorlagen gesetzt werden.

Eine zentrale Vergleichsmethode mit diesem Modul könnte helfen, dabei einige Sachen sauber zu gestalten. Insbesondere sollte das auch beim Auftreten mehrerer Werte in Wikidata sinnvolle Ergebnisse liefern, was zurzeit kaum sinnvoll zu machen ist (das fehlt leider auch im verlinkten enwiki-Modul). Wie sehen dazu die Meinungen aus? Viele Grüße, MisterSynergy (Diskussion) 10:30, 29. Apr. 2017 (CEST)Beantworten

Mal vorsichtig nachgefragt: ist diese Werkstatt tot? Wo kann ich stattdessen kompetente Benutzer finden? Viele Grüße, MisterSynergy (Diskussion) 09:08, 8. Mai 2017 (CEST)Beantworten
  • Naja, du hast keine programmtechnisch lösbare Frage gestellt, sondern mehr allgemeinstrategische Perspektiven des Wikidata-Abgleichs thematisiert.
    • aka „Lösung auf der Suche nach Problem“.
  • Kontaktiere doch dazu eher die Wikidata-Leute.
  • Es gibt in fremden Wikis Dutzende von Modulen. Ja, wahrscheinlich könnte irgendwer die irgendwozu brauchen; vorausgesetzt, sie wären gut gemacht. Aber wenn niemand sie einsetzen, wirken lassen und pflegen will, dann bevölkern sie hier nur die Leichenhalle.
LG --PerfektesChaos 10:25, 8. Mai 2017 (CEST)Beantworten
Also ich habe schon das Problem, dass ich den Vergleich lokaler Werte mit Wikidata-Werten innerhalb von Datenbanklinkvorlagen nur unzureichend umgesetzt bekomme. Diese generieren ja seit letztem Jahr zusehends die Trackingkategorien zur Wartung der angegebenen IDs (siehe Kategorie:Wikipedia:Seite verwendet Daten von Wikidata). Bisher macht da jede Vorlage ihr eigenes Ding, aber könnte zu einem guten Teil vereinheitlicht und vereinfacht werden.
Ich hatte tatsächlich schon überlegt, selbst was zusammenzubasteln. Aber das Leichenhallenszenario kenne ich auch, und mangels substantieller Lua-Erfahrung und Modul-Erfahrung wäre das Ergebnis vermutlich furchtbare Frickelei nach total ineffizienter Entwicklung. Daher meine Frage hier…
Wie auch immer, wen genau meinst Du mit den „Wikidata-Leuten“? Jemanden bei wikidata.org, oder haben wir hier bei dewiki ’ne spezielle Abteilung dafür? Bei den Lua-Sachen habe ich keinen Überblick, wie die Entwicklung läuft und wer da relevante Kenntnisse hat. Viele Grüße! MisterSynergy (Diskussion) 11:07, 8. Mai 2017 (CEST)Beantworten
LG --PerfektesChaos 11:17, 8. Mai 2017 (CEST)Beantworten

Das hat jetzt etwas rumgelegen, aber der Bedarf für solch ein Modul ist weiter vorhanden. In der {{Normdaten}}-Vorlage werden relativ neuerdings verschiedene Wikidata-Vergleichskategorien geworfen, und das ist mit Vorlagencode allein schwer zu realisieren (u.a. Wikipedia Diskussion:Normdaten#Mehr Wikidata-Vergleichskategorien). Um diesmal nicht wieder mit nichts in diese Werkstatt zu kommen, habe ich einen Modul-Entwurf unter Benutzer:MisterSynergy/Spielwiese/Modul:Wikidata-Vergleich abgelegt, und sehr rudimentär in der Spezial:Vorlagenspielwiese getestet.

Allerdings ist das mein Lua-Erstlingswerk, so dass ich gern Spezialisten drüberschauen lassen möchte. Außerdem: wie geht es nun weiter? Kann ich das einfach in den Modul-Namensraum verschieben, Doku anlegen und dann zum Einsatz bringen? Welche Art von Tests sollte das Modul bestehen, bevor es eingesetzt wird? —MisterSynergy (Diskussion) 17:48, 2. Okt. 2018 (CEST)Beantworten

  • Die Vorlage ist in 560.000 Artikel eingebunden. Jede Bearbeitung daran beschäftigt die Server sichtbar für ein bis zwei Tage, und die Warteschlange für andere Aufgaben leidet offenkundig und staut sich weiter zurück.
    • Heißt: Für eingebundene Seiten darf es nur einen einzigen Edit geben, und der muss vorher bestmöglich ausgetestet sein und auf Anhieb sitzen.
    • Solches Rumprobieren aus der vergangenen Woche am produktiven Bestand bei einer Einbindungszahl von über einer halben Million sehe ich überhaupt nicht gern.
  • Seit 2013 haben wir WP:BETA.
    • Dort kann unter realitätsnaher Simulation gründlich erprobt und rumgespielt und gefrickelt werden.
    • Es gibt dazu auch eine Simulation von Wikidata, so dass eine Verknüpfung von unterschiedlichen Test-Artikeln mit unterschiedlichen Test-Items zum Prüfen der verschiedenen Situationen möglich ist.
    • Heißt: Ein Test-Item enthält beispielsweise zwei gleichgerankte Dingens-Werte, und heißt auch so, und wird mit einem Dummy-Artikel verlinkt, aus dessen Lemma hervorgeht, dass zwei gleichgerankte Werte verknüpft sind, und im Text des „Artikels“ steht drin, was erwartet wird und wie sich was verhalten müsste.
  • Es bedarf ohnehin einer Testsuite von Konstellationen zwischen Artikel und Item, die dauerhaft verfügbar sein muss.
    • Nachdem irgendwo im Lua-Modul irgendwas verändert wurde, muss systematisch nachgeprüft werden können, ob das jetzt in dieser Situation wie erwartet funktioniert und ob alle anderen unbeschädigt blieben.
    • Das ist bei der Wikidata-Verknüpfung besonders schwierig, weil nicht einfach nur ein paar Vorlagenparameter zu ändern sind, und dann sieht man ob es grün oder rot oder groß oder klein wird, sondern weil die Konstellation eines Wikidata-Items das Verhalten der Vorlageneinbindung beeinflusst.
    • Sowas am produktiven Artikelbestand zu erproben hatte man vor zehn Jahren mal gemacht; längst haben wir Testwikis und seit 2013 eine volle deutschsprachige Simulation, wo ohne Gefährdung der echten Artikel bis zur Vollreife entwickelt werden kann.
  • Bereits seit 2013/2014 liegt ein Modul:Vorlage:Normdaten mit Parameteranalyse und verbesserten Features in der Warteschlange, aber das WikiProjekt Normdaten kriegt und kriegt es einfach nicht auf die Reihe. Wenn du dir die jüngste Vorlagendiskussion anguckst, dann wird immer nur behelfsmäßig geflickt und gebastelt und konzeptionslos kurzfristig gemurkst, und die Phrase, die ich absolut nicht mehr sehen will, ist „das können wir ja dann hinterher immer noch“ – das heißt nichts anderes als St.-Nimmerleinstag. Der Berg an unerledigter Weiterentwicklung, den das WikiProjekt Normdaten / Normdaten-Wartung vor sich herschiebt und immer höher auftürmt ist längst nicht mehr zu überschauen.
    • Siehe übrigens ND als die eingeforderte Testsuite zum Modul für die Normdaten-Vorlage (Einbindungsparameter).
    • Deine aktuellen Pläne sind übrigens nicht kompatibel mit der Neukonzeption von Vorlage:Normdaten (besteht nur noch aus einer Zeile).
    • Dein geplantes Modul wäre dann ein Untermodul von Modul:Vorlage:Normdaten und wird von diesem eingebunden, und erfüllt seine Spezialaufgabe in eigener Verantwortung. Rückgabewert wäre entweder nix oder eine Tabelle mit einer oder mehreren Kategorien; mal sehen. Für Experten sichtbare Fehlermeldung vielleicht auch, fügt sich dann mit der sonstigen Fehlermeldung zusammen.
OT: Im vollgeschützten d:Q4026300 hätte ich gern eine deutschsprachige Beschreibung, ungefähr wie „Allgemeines Forum für Fragen zum Wikipedia-Projekt“ oder so.
LG --PerfektesChaos 15:31, 3. Okt. 2018 (CEST)Beantworten
Deshalb frage ich ja nach, und baue das da nicht einfach ein. Ich ziehe da mal was (Testartikel und Testitems) im Betawiki hoch, wenn da was aus dem Ruder läuft sag bitte (hier) Bescheid. (Wo ist da das richtige Testwikidata?) Ansonsten:
  • Ich plane nicht, das Modul nur für die Vorlage:Normdaten einzusetzen. Das passt theoretisch mindestens in alle Vorlagen in Kategorie:Vorlage:Datenbanklink mit Wikidata-Eigenschaft, und in einigen ist eine solche Funktionalität mit Vorlagencode auch schon eingebaut (dkategorisiert typischerweise nach Kategorie:Wikipedia:Seite verwendet Daten von Wikidata).
  • Das Problem ist in allen Fällen dasselbe: mit Templatecode allein ist das praktisch nicht richtig hinzubekommen. Das Modul sollte also in jedem Falle neben der von Dir angedeuteten Rückgabe in einer Tabelle (bei Aufruf aus einem anderen Modul) auch direkt wikitext zurückgeben können (bei Aufruf aus einem Template).
  • Gibts eigentlich irgendwelche Namenskonventionen zu beachten, für Modulname, Funktionsnamen, und Parameternamen beim Aufruf?
  • Später erst relevant: bei Wikidata, werden dort Module per vergleichbarer Funktionalität oder „identischem“ Code in einem Objekt gebündelt? Dies hier wird ja sicher kein Klon von Module:WikidataCheck (Q15089555), hat aber praktisch dieselbe Funktionalität.
MisterSynergy (Diskussion) 19:55, 3. Okt. 2018 (CEST)Beantworten
  • Leichtes zuerst: https://wikidata.beta.wmflabs.org/wiki/
  • Namenskonventionen
    • Modulname: Würde sich nach der endgültigen Funktion des Moduls richten – da ich diese nicht überschauen kann, kann ich das nicht beantworten.
      • Momentan sähe es aus wie ein Konkurrenzprodukt zum Modul:Wikidata, und weil es dieses nicht verdrängen kann, eine Art Plug-In oder Add-On.
      • Somit wird es bei uns zu einem Unter-Modul von Modul:Wikidata, also mit einem Schrägstrich drangehängt. Vielleicht /check gemäß Q15089555 oder /compare schiene es mir eigentlich zu sein.
      • Wir wollen die Anzahl der Haupt-Listeneinträge in der Liste der Modulfamilien gering halten, also zu einer Thematik nur einen Startpunkt und alle Detailfragen dort intern. Thema ist „Wikidata“, die Einzelheiten dann davon abgeleitet.
      • Weil es aber offenbar sowohl Lua- als auch Vorlagen-Schnittstelle bekommen soll, fällt die Namenskonvention Vorlage: vorangestellt nur für die Unterstützung einer bestimmten Vorlage weg und erhält insgesamt den Status einer Bibliothek.
    • Funktionsnamen:
      • failsafe hat eine Sonderbedeutung, und Lua braucht ein paar Funktionsnamen für sich selbst. Sonst nach Belieben.
      • Das Objekt (table) p trägt bei uns diesen Namen als Exportschnittstelle, weil das am Anfang so war und immer so war.
    • Parameternamen beim Aufruf: Nö, dem Aufrufenden kann es erstmal wurscht sein, wie Lua-Parameter heißen, und benannte Vorlagenparameter halt selbstenträtselnd wie in moderner Vorlagenprogrammierung so üblich. Der frame heißt aber immer frame.
    • Namen von Artikeln (BETA):
      • Hätte ich gern mit ND WD beginnend, und dahinter eine Klarbeschreibung, mit was für einer Art Item verknüpft, also P4711 mit zwei Qualifiern gleichen Rangs oder sowas.
  • Module per vergleichbarer Funktionalität oder „identischem“ Code in einem Objekt gebündelt
    • Das ist sowieso irgendwie Quark.
    • Ein Objekt (Vorlage oder Modul) auf Wikidata muss einer Implementierung zugeordnet sein, die prinzipiell identische Funktionalität hat, bei dem der gleiche Satz an Funktionen mit den gleichen Parameterabfolgen gleicher Bedeutung die gleiche Wirkung hätte.
      • Das kann sich in Nuancen ändern, weil im Lauf der Zeit neue Funktionen und mehr Parameter hinzukommen, obsolete Funktionen wegfallen. Jedoch muss im Kern für eine bestimmte Versionsbezeichnung für alle dem Item zugeordneten lokalen Projekte dieselbe Schnittstellenbeschreibung gelten.
      • Hingegen kann jede lokale Version das in kulturell, sprachlich, projektbezogen spezifischer Weise formatieren, Formate erwarten und für die Ausgabe verwenden, auch Parameternamen bei inhaltlich identischer Bedeutung und identischen Wert-Inhalten übersetzen.
    • Macht es das nicht, muss es ein anderes Objekt und Item sein.
      • Wenn du eine Vorlagenschnittstelle und neue Funktionen hinzuschreibst, ist es kein Klon, bestenfalls ein Fork, sondern ein neues Objekt und Item. Denn alle Q15089555 zugeordneten lokalen Ausprägungen werden niemals deiner Schnittstellenbeschreibung genügen, in keiner Version.
    • Modul:Wikidata (Q12069631) ist völliger Hohn.
      • Tatsächlich sind viele lokalen Implementierungen weit auseindergedriftet.
      • “similar to en:Module:Wikidata” ist ein Feigenblatt für irgendwie so ähnlich, vor fünf Jahren mal von dort kopiert.
      • Viele haben das jedoch lokal aus- und umgebaut. Wir haben beispielsweise eine Extra-Funktion für Belege und ihre Formatierung im Artikel, weil es vor fünf Jahren noch keine ernstzunehmenden Belege in Wikidata gegeben hatte, also auch keine Funktion für solch einen überflüssigen Quatsch.
      • Die erste Implementierung war ziemlich schlecht und dumpf. Sie ging davon aus, dass es immer nur genau eine einzige Zeichenkette geben dürfe, und die immer okay wäre. Nun können aber Eigenschaften und Qualifier mehrfach vorkommen, und können deshalb auch table sein, und manchmal sind die Werte seltsamerweise gar nix. Immer dann stürzte das Modul ab. Also musste es überall lokal irgendwie repariert werden, und wenn man mehr Funktionen brauchte, dann schrieb man die lokal hinzu. Manche Projekte auch nicht.
      • Wikidata hatte es versäumt, sehr frühzeitig eine globale Referenz-Implementierung bereitzustellen, diese zentral für alle zu pflegen und weiterzuentwickeln, und sich ein System für lokal benötigte Plug-Ins oder Add-Ons oder Konfigurationen zu überlegen, so dass sich für ein Update die gesamte Code-Seite per C&P über die bisherige drüberschreiben ließe, ohne irgendwelche Anpassungen nacharbeiten zu müssen. Dann gäbe es jetzt auch eine global verbindliche Schnittstellenbeschreibung (per Version, abwärtskompatibel).
  • WikiMail kann ich erst nächste Woche wieder abrufen, wenn es unbedingt sein muss. Wenn es nicht vertraulich ist, bitte offen schreiben, wenn vertraulich, dann lade mich besser in einen privaten Phabricator-Chatroom ein.

LG --PerfektesChaos 13:34, 4. Okt. 2018 (CEST)Beantworten

  • Zweck des Moduls ist:
    • Vergleiche einen lokal in Wikipedia (zzt. meist via Template) angegebenen Identifikator mit dem, was eventuell von Wikidata kommt, und kategorisiere das Vergleichsergebnis in eine Wartungskategorie.
    • Das Modul vergleicht zurzeit nur, wenn der Datentyp der angegebenen Eigenschaft "external-id" ist. Es berücksichtigt die verschiedenen Szenarien, wie mit eventuell vorhandenen mehrfachen Werten bei Wikidata umgegangen wird.
    • Prinzipiell sind "string"-Eigenschaften mit demselben Code mit lokalen Werten vergleichbar und "url"-Eigenschaften auch glaub ich auch, möglicherweise werden solche Eigenschaften aber anders genutzt.
    • Alle anderen Datentypen müsste man anders vergleichen. Anderes als externe Identifikatoren habe ich nicht vor einzubauen, möglicherweise lege ich aber die Möglichkeit dazu an.
    • Auch ein Grund fürs Ganze:
      • Anders als in den meisten anderen Wikis ist hier in dewiki nicht absehbar, dass Wikidata-Daten in nennenswertem Umfang direkt genutzt werden (i.e. lokale Werte bleiben absehbar noch lange erhalten).
      • Mit einem Werteabgleich kann man irre viele Fehler finden, erfahrungsgemäß wesentlich mehr in Wikipedia als in Wikidata.
      • Grund: Wartung ist bei Wikidata erheblich effizienter möglich, das gilt insbesondere für Identifikatoren.
  • Es gibt im beta-dewiki nun:
  • Schau bitte außerdem einmal im phabricator nach. —MisterSynergy (Diskussion) 10:35, 5. Okt. 2018 (CEST)Beantworten
  • Mach einstweilen nur, wie du denkst; auf BETA ist weitgehende Narrenfreiheit. Für Produktiv-Fragen ist es zu früh, und wären dann auch nur simple Kleinigkeiten.
  • Von einer E-Mail sieht man die ersten paar Dutzend Zeichen sofort per Echo, noch bevor die E-Mail selbst im Postfach ankommt.
  • Die fragliche Seite kann ich auch einmal löschen und mit dem letzten Inhalt nochmal neu anlegen. Wäre diskreter.
LG --PerfektesChaos 13:33, 5. Okt. 2018 (CEST)Beantworten
Ja, Du kannst auch einfach komplett löschen und ich lege das neu an. Quelltext hab ich lokal gesichert. Mit allem anderen mache ich später weiter … —MisterSynergy (Diskussion) 13:36, 5. Okt. 2018 (CEST)Beantworten

@PerfektesChaos: für die flexible Rückgabe (String oder Tabelle) bräuchte ich mal ein Beispiel, wo ich abgucken kann wie ich das am besten mache. Hast Du da irgendwas vergleichbares zum Herzeigen? Bräuchte ich da einen Parameter, mit dem ich das bei Aufruf togglen kann, oder kriegt ein Lua-Modul irgendwie selbst raus, ob es aus einem anderen Modul aufgerufen wurde (und eine Tabelle zurückgeben soll), oder aus einem Template (und einen String zurückgeben soll)? —MisterSynergy (Diskussion) 15:49, 10. Okt. 2018 (CEST)Beantworten

Schau mal in Code und zugehörige volle Doku, genauso etwa für DateTime, Multilingual, PageUtil, URIutil, URLutil, WLink, und diverse andere.
Sie haben alle zwei Schnittstellen pro Funktionalität.
Vorlagen können nur Zeichenketten als Parameterwerte vorgeben und nur eine einzige ggf. leere Zeichenkette zurückbekommen. Lua-Modul-Funktionen können alle Datentypen erhalten und zurückgeben.
Beim Modul-Aufruf Lua→Lua sollte ein Modul erstmal sicherheitshalber per Funktion initialisiert werden (auch falls das erst zukünftig erforderlich werden könnte), und stünde dann anschließend als Funktionsbibliothek zur Verfügung.
Enjoy --PerfektesChaos 18:10, 10. Okt. 2018 (CEST)Beantworten
So, endlich habe ich Zeit gefunden.
  • Wir haben nun Schnittstellen für Nutzung aus Templates und aus anderen Modulen.
    • Für beides gibt es Tests im betawiki, die wie gewünscht funktionieren. Alle Tests sind hier gelistet, wenngleich noch nicht besonders struktuiert.
    • Die Nutzung des Moduls in einem anderen Modul ist irgendwie fummelig, und mit der vorhandenen Dokumentation (dewiki und mediawiki.org) war das nicht so ganz einfach hinzubekommen. Da fehlt mir dann doch merklich Erfahrung mit der Materie, und ich musste viel ausprobieren. Das Testmodul mit der Einbindung ist hier.
    • „Beim Modul-Aufruf Lua→Lua sollte ein Modul erstmal sicherheitshalber per Funktion initialisiert werden“ – was genau meint das, und wo mache ich das?
  • Verbleibende Probleme:
    • Diesen Test hätte ich gern ohne die Fehlermeldung „Die Kennung … ist dem System unbekannt. Bitte verwende eine gültige Objektkennung.“. Ich kriege aber gerade nicht raus, ob mw.wikibase.getEntity('P99999999999999') (Zeile 23 hier) das da einfach hinschreibt, oder ob ich das geeignet abfangen kann; versuche, das zu tun sind da noch im Modul zu finden. Ich möchte in solch einem Fall einfach das Modul beenden und keine Kategorisierung durchführen, das muss aber auch nicht so auf der Testseite mit Fehlermeldung sichtbar sein.
    • An einigen Stellen könnten Dinge sicher schöner gelöst werden.
    • Doku fehlt noch.
Immerhin läufts weitgehend schon einmal so wie gewünscht :-) —MisterSynergy (Diskussion) 16:21, 15. Okt. 2018 (CEST)Beantworten
  1. „Beim Modul-Aufruf Lua→Lua sollte ein Modul erstmal sicherheitshalber per Funktion initialisiert werden“
    • Die inneren Variablen des Moduls sind eine Privat-Angelegenheit, und man gibt externen Anwendungen niemals direkten Zugriff darauf, sondern nur über eine Schnittstelle. Sollte man irgendwann seine inneren Angelegenheiten anders ordnen wollen, kommt man in Teufels Küche, wenn das erstmal der Welt preisgegeben war.
    • In Modul:DateTime, Modul:FileMedia, Modul:Multilingual, Modul:URIutil, Modul:URLutil, Modul:WLink usw. usw. steht die öffentliche Schnittstelle immer in den letzten Zeilen.
    • Könnte ja sein, dass sie vor Auslieferung an die Öffentlichkeit noch mit Modul:DateTime/local, Modul:FileMedia/extensions, Modul:Multilingual/config, Modul:URIutil/config kombiniert werden müssten, um einsatzfähig zu sein. Passiert derzeit nicht, weil die per lazy loading erst dann hinzugezogen werden, wenn sie erstmalig benötigt werden. Oder es müsste vor dem Export sonst eine Selbst-Initialisierung erfolgen. Oder ich benenne meine interne Logik um, erwarte andere Parameter, muss aber der Außenwelt noch alte Schnittstellen simulieren. Wenn ich direkten Zugriff auf Funktionen oder gar Werte erlauben würde, kann ich hinterher niemanden mehr einfangen. Müssen Programmierer ihrem Opi auf dessen Sterbebett versprechen, dass sie niemals direkten externen Zugriff auf innere Komponenten zulassen.
  2. ohne die Fehlermeldung
    • Nicht reingeguckt.
    • Klingt aber nach pcall().
    • Durchsuche mal die Hilfeseiten, die Dokus und Quelltexte zu den eben aufgezählten Modulen oder ein Lua-Manual nach diesem Funktionsnamen zwecks etlicher Anwendungsbeispiele.

Viel Spaß --PerfektesChaos 17:20, 15. Okt. 2018 (CEST)Beantworten

Okay. Ich glaube, dass ich das Modul dann schon im aktuellen Zustand korrekt initialisiere, und das andere Problem ist auch gelöst (hatte mit der zulässigen Länge von Identifikatoren zu tun: P999999999 ist okay, P9999999999 ist zu lang; ich hatte zu lange Identifikatoren im Testszenario).
Das Modul habe ich nun noch einmal etwas poliert, und auch ein bisschen Doku dazu geschrieben (in meinem BNR im betawiki). Grundsätzlich, denke ich, wäre ich startklar, aber jetzt frage ich mich doch wo das hier hin soll. Wirklich als Untermodul von Modul:Wikidata? Es hat damit eigentlich nicht viel zu tun, außer dass es halt auch Kontakt mit Wikidata macht. Ich habe außerdem keine Ahnung, wo im Falle einer Platzierung als Untermodul die Dokumenation abgelegt werden kann.
Der Plan ist dann, das Modul nach dem Übertrag hierher zunächst in einer kleineren Vorlage einzusetzen (~1000 Einbindungen), dann einer größeren (~100.000 Einbindungen), und erst dann bei den Normdaten-Leuten wieder aufzuschlagen (AFAIR 600.000 Einbundungen). —MisterSynergy (Diskussion) 00:56, 16. Okt. 2018 (CEST)Beantworten
  • compareValues sollte einheitlicher Name bei Vorlagen + Lua sein.
  • pcall sollte sowohl für Lua wie für Vorlagen die Kernfunktion abfangen und dem Lua-Anwender keine Fehlerbehandlung aufdrücken, sondern allen externen Benutzern einen direkt nutzbaren fertigen Satz an Resultaten liefern.
  • mw.log() sehen nur Lua-Entwickler in der Seitenvorschau; Autoren und Normalmenschen bräuchten zusätzlich zu Kategorien noch in der Seite sichtbare Hinweise, und in der Normalbetrachtung sowieso jeder.
  • params['namespaces'] schreibt sich kürzer als params.namespaces und cat_local_missing als params.catLocalMissing
  • Namensgebung und Struktur und Strategie:
    • Ich möchte keinen Dschungel aus vielen Futzelmodulchen.
    • Wir haben schon ein konkurrierendes Modul:Wikidata und ein Modul:Wikibase und en:Module:Wikidata mit einer mehr oder weniger weltweit kompatiblen Schnittstelle als Durchschnitt von d:Q12069631.
    • Unser Modul:Wikidata lässt sich mit einer 7-Zeilen-Funktion so erweitern, dass es die Anfrage an deinen Code als Plug-In durchreicht, zumindest was erstmal die Vorlagen-Aufrufe angeht. Lua-Programmierer müssten ggf. direkt arbeiten.
    • Separate Doku auf eigener Doku-Seite bekommen wir schon hin.
    • Ich möchte, dass es eines Tages eine Lua-Bibliothek gibt, die alle neutralen universellen Basisfunktionen einschließlich deiner compareValues enthält. Bzw. eigentlich gibt es diese globale Standardbibliothek bereits, aber erstmal nur mit elementaren Basisfunktionen. Da hat es aber bisher noch keinen fachkundigen Strategen gegeben, der das konzeptionell weiter vorantreibt und auch umsetzt.
    • Deshalb möchte ich alle Anwendungen dauerhaft unter einem einzigen Dach Wikidata vereinen, ohne dass sich Anwender darüber einen Kopf machen müssen, welche Spezial-Abteilung die Programmierung betreut.
LG --PerfektesChaos 12:42, 16. Okt. 2018 (CEST)Beantworten
Na endlich, auf den Beitrag habe ich gewartet :-)
  • Die Funktionen benenne ich noch einheitlich um. Da bin ich tatsächlich auf halbem Wege steckengeblieben. Ich habe noch eine Idee für eine weitere Funktion, wo ich gerade noch nicht sicher bin ob ich die jetzt schon einbauen möchte.
  • Das pcall-Ding verstehe ich nicht auf Anhieb, wird aber wohl noch werden. Muss nochmal was zum Abgucken suchen…
  • Ich habe bewusst mw.log() genutzt, weil in den Fällen nichts zu tun ist und der Benutzer (Leser ebenso wie Editor) das nicht sehen oder wissen muss. Es ist aber praktisch in der Lua-Konsole genau ablesen zu können, zu welchem Ergebnis/Ausstiegspunkt das Modul gekommen ist – insbesondere wenn ein leerer String zurückkommt (i.e. alles in Ordnung ist). Man könnte tatsächlich so einiges davon noch irgendwie Wartungskategorisieren, aber das wäre dann teilweise schlecht bis gar nicht abzuarbeiten und ist eigentlich auch nicht Zweck des Moduls. Hier war ich bereits einmal zu forsch beim großzügigen Ausrollen von Wartungskategorien.
  • Schreibweise für Tabellenmember-Zugriff und Variablennamen ist Geschmack, möglicherweise aber nicht ganz einheitlich gemacht. Gibts da Konventionen? Sonst mache ich Modul-intern alles lowerCamelCase, aber die Template-Parameter eher mit Bindestrichen. Mir gefällt außerdem nicht die Mischung aus de+en an verschiedenen Stellen; ich schaue mich noch um, wie ich das am besten internationalisieren kann.
  • Struktur: ist schwierig, weil nicht eindeutig hinzubekommen.
    • Du möchtest anscheinend im Grunde "alle Module die Wikidata anpacken" hierarchisch unter Modul:Wikidata einsortieren. In diesem Falle mag das irgendwie hinzuargumentieren sein, aber das ist nicht immer der Fall.
    • Wenn ich beispielsweise eine "Infobox Sportler" mit einem Modul komplett aus Wikidata beziehen würde, gehörte jenes dann (sinngemäß) nach "Modul:Infobox Sportler/Wikidata" oder nach "Modul:Wikidata/Infobox Sportler"? Oder nach "Modul:Wikidata Infobox/Sportler"? Man kann vermutlich für alle Versionen irgendwie Argumente finden.
    • Gerade im Wikidata-Kontext sind sicher eine Menge Module möglich und irgendwann auch zu erwarten. Für eine globale Bibliothek, so sehr ich die Idee schätze, bräuchte es aber wohl erheblich mehr Koordination, auch Vorgabe und Zwang, sich als Modulentwickler an entsprechende Konventionen zu halten. Der aktuelle Weg der Modulentwicklung hat tatsächlich eine Menge schwächen, aber letztlich repräsentiert er irgendwie auch das Wikiprinzip in Reinform (Resultat: ziemliches Chaos, tut aber irgendwie doch).
    • Kurzum: für eine globale Bibliothek würde ich in diesem Fall wohl die Funktionsnamen noch etwas anders (länger) wählen, weil dann der Zweck besser klar wird und zukünftige Kollisionen unwahrscheinlicher werden. Lange Funktionsnamen sind dann aber bei der Nutzung etwas unhandlich…
Naja, ich muss jetzt eh nochmal dran. Melde mich nochmal, falls nötig oder fertig. —MisterSynergy (Diskussion) 13:38, 16. Okt. 2018 (CEST)Beantworten
Wenn auf einer Seite eine Wartungskat erscheint, und nicht zwangsläufig die komplette Seite als solche das auslöst, sondern eine bestimmte Vorlageneinbindung, Infobox oder sowas, dann muss immer eine zuzuordnende, womöglich für die meisten Besucher erstmal ausgeblendete Fehlermeldung mit class="error" oder ggf. class="warning" die auslösende Stelle kennzeichnen, sonst sucht man sich dumm und dämlich, von wo in der Seite das herkommt.
Das, was du machst, ist problemunabhängige Wikidata-Basisfunktion für alle Themengebiete, und alle Basisfunktionen dabei möchte ich zentral unter einem Dach sehen und nicht jede einzelne Funktion in einem völlig unabhängigen Modul.
  • Wenn jemand mit Sport oder Musik rummacht, dann sind seine Tennissocken in diesem Bereich aufgehängt, aber für Sport-unabhängige Funktionsaufrufe greift man auf die zentrale Bibliothek für URL, für Wikidata oder für sonstwas zu.
LG --PerfektesChaos 13:51, 16. Okt. 2018 (CEST)Beantworten
Eine Warnung wäre grundsätzlich hinzukriegen, aber meines Erachtens nicht der optimale Weg. Besser beschreibt die Wartungskategorie selbst, wo das Problem herkommt und wie es zu lösen ist. Falls es doch im Artikel sein muss: welcher Klassenselektor blendet Warnungen aus, so dass man die Sichtbarkeit explizit irgendwo anfordern muss (User-CSS, Einstellungen, etc…)? —MisterSynergy (Diskussion) 14:11, 16. Okt. 2018 (CEST)Beantworten
Die Wartungskategorie sagt nur, dass es irgendwo in der Seite einmal oder mehrfach eine auslösende Stelle gibt, jedoch nicht, wo genau das verursacht wird; vielleicht ist das ja auch falsch verbaut worden.
Üblich ist immer class="error" für Fehler; style="display:none" macht das erstmal für alle unsichtbar.
  • remindErrorMessages@PerfektesChaos macht alle wieder sichtbar.
  • Man kann verschiedenste Klassen hinzufügen, die bewirken, dass bestimmte Gruppen von Bearbeitern das trotzdem wieder sehen, etwa alle erfahrenen Leute mit Sichterrechten oder aber alle Tennis-Profis, die sich ein Sichtbarmachen dieser Klasse konfiguriert hätten.
LG --PerfektesChaos 14:44, 16. Okt. 2018 (CEST)Beantworten

Guten Abend zusammen, also ich finde dieses Modul, welches von MisterSynergy entwickelt wird, extrem wichtig und würde genre etwas Flow hereinbekommen. --2A02:560:4199:C800:206B:E327:D6EF:2B0E 19:48, 14. Dez. 2018 (CET)Beantworten

Wert Infobox vs. Wikidata

[Quelltext bearbeiten]
(stand schon in WP:VWS, hier besser? --W!B: (Diskussion) 07:55, 3. Apr. 2019 (CEST))Beantworten

nun stellen wir also IBs sukzessive auf wikidata um. die form, die ich jetzt finde, ist meist (in rudimentärcode) {#IF:IB-WERT|IB-WERT|#invoke:Wikidata}. tatsächlich wäre es doch ab jetzt zielführend, harte eckdaten auf wikidata zu konsolidieren, und diesen dann den vorrang zu geben (ich denke da insbesonders z.b. an geokoordinaten, die in vielfältigster weise herumschwirren, teils in verschiedener genaue, teils DMS vs. DEZ-grad mit rundungsdifferenz, teils amtlich vs. ergoogelt, usf). diese sind auf wikidata bisher oft einfach der früheste import aus einer wikipedia. und sind bei uns inzwischen teils genauer recherchiert. es ist jeweils anzunehmen, dass die "zuständige" sprachschwester den "genauesten" (am besten recherchierten) resp. "verbindlichsten" wert (etwa den amtlichen von der zuständigen behörde) hat – muss aber nicht seiin, allzuviele schwestern schreiben ja einfach aus en ab, oft sind unsere artikel im "ausland" besser recherchiert als die dortigen. gilt aber analog für geburtsdaten, oder aktuelles (wie einwohnerzahl, berufliche stellung, letzte auflage, ..), usw.
und das sollte auch gleich alarm schlagen: es hat keinen sinn, dass wir jetzt zig-10000ende IB durchputzen müssen, um die manuell eingetragen werte zu löschen, damit die "[hoffentlich] besseren" wikidatawerte erscheinen, genausowenig sinn hat es aber, ausrecherchierte werte bei uns durch noch ungeprüftes auf wikidata zu überblenden, sodass die hiesige recherche wieder verdunstet: man erkennt ja dann nicht mehr, von wo die IB den wert genommen hat (und gerade bei verschiedenen koordinatenangaben ist das extrem mühsam nachzuprüfen, welcher der beiden werte jetzt wirklich angezeigt wird). dazu wäre dann ein direkterer wartungslink "hilf mit" sinnvoll (den kann man ja in ein paar jahren, wenn wikidata besser verifiziert ist, wieder wegtun, oder auf basis der dortigen beleglage präzisieren).
daher wäre die langfristig sinnvoller abfrage umgekehrt:

#IFEXIST:WIKIDATA-WERT|WIKIDATA-WERT|IB-WERT und "eintragen"-Link auf Wikidata (wenn es das Objekt gibt), sowie #IF-NOT-EQUAL:WIKIDATA-WERT|IB-WERT|Wartungslink "IB mit Wert, der von Wikidata abweicht" und "konsolidieren"-Link

können wir uns da ein fixes modul basteln, das das standardisiert macht? das würde aber in vorlagensyntax drei #invoke:Wikidata erfordern, sinnvollerweise spielt man die datenbankabfrage zuerst in eine variable, also wohl besser in lua -- wenn nicht überhaupt eine ebene tiefer in wikimedia: sollte auch sehr schnell laufen, da das ab jetzt sehr sehr sehr oft vorkommen wird. noch extremer sicherlich in listen, die schon auf eine zeilen-vorlage aufbauen (cf. #Kategorie:Vorlage:Tabellenzeile oben), da kanns vieldutzendweise vorkommen. wäre auch für autoren sinnvoller, dass das verkürzt einzugeben ist, also etwa: einfach {#GETDATA:WD-Item|WD-Prop|IB-Variable}, das die ganzen standardtests (ist ein item angegeben / vorhanden; ist die property vorhanden; ist der IB-wert angegeben; und passen die zusammen?) macht. --W!B: (Diskussion) 05:28, 14. Mär. 2019 (CET)Beantworten

PS: besteht da ein zusammenhang mit #Modul:WikidataCheck – ich hab noch nicht genau verstanden, was das macht --W!B: (Diskussion) 07:58, 3. Apr. 2019 (CEST)Beantworten
Ja, grob besteht ein Zusammenhang. Ich habe den genannten Abschnitt weiter oben vor einiger Zeit vorgeschlagen und letztes Jahr auch schon Code im Betawiki geschrieben, aber bisher bin ich nicht dazu gekommen, das für die Nutzung fertigzumachen. Es geht dabei darum, lokal in (Datenbanklink-)Vorlagen angegebene Werte und entsprechende Wikidata-Werte zu vergleichen, und das Vergleichsergebnis zu kategorisieren – allerdings (vorerst) nur für Wikidata-Eigenschaften mit dem Datentyp "externer Identifikator". Das ganze soll soweit verkapselt werden, dass ein Vorlagenprogrammierer sich nicht besonders tief mit den Details beschäftigen muss, sondern im Grunde nur den Vergleich im Code triggert und das wars dann.
  • Man könnte das sicherlich später (oder jetzt schon) auch erweitern auf andere Datentypen, aber man muss halt genau überlegen, welche Situationen bei Wikidata zu erwarten sind, und wie man hier ein Vergleichsergebnis kategorisiert; es bringt wenig, wenn nachher viele Wartungskategorien vorhanden sind, die nicht geleert werden können, weil irgendwie doch eine von dem Vergleichscode nicht erkannte, aber gültige Situation vorliegt.
  • Es muss dabei mit (u.a.) folgenden Sondersituationen umgegangen werden: mehrere Werte vorhanden, Nutzung von Rängen, kein Wert oder unbekannter Wert, ggf. besondere Qualifikatoren oder Fundstellen von Bedeutung, usw. … Meines Erachtens muss das grob nach Datentyp einzeln durchgearbeitet werden, deshalb habe ich zunächst nur die relativ einfachen externen Identifikatoren angefasst.
  • Vermutlich könnte man hier ansetzend später auch direkten Wikidata-Datenbezug implementieren, wobei ich das bisher nicht vorgesehen habe. Die Community lehnt das so sehr ab, dass ich zurzeit und wohl auch absehbar keine Energie in diesen Ansatz stecke. Ich denke, zunächst sollten wir großflächig vergleichen und mit der Wartungskategorisierung auch Fehler bereinigen, bevor allgemeiner Datenbezug eine Akzeptanz finden kann.
Viele Grüße, —MisterSynergy (Diskussion) 09:32, 3. Apr. 2019 (CEST)Beantworten
ja. ich dachte da eben weniger an kategorisieren (was nur mühsam abgearbeitet wird), sondern eine direkte todo-markierung in IBs (und wahrscheinlich systematisierten listen).
das mit "ablehung der community" ist hierbei unproblematisch, erstens werden durch die implementierung in die IB-vorlage ja eh schon vollendete tatsachen geschaffen, und zweitens dreht es sich hier um "technische daten" hauptsächlich physisch-geographischer natur ("liegt in ort/verwaltungseinheit", geokoordinate + höhe, fläche, usf), deren angabe ja unstrittig und deren wert an sich eindeutig ist. und dort freuen sich alle schon darauf, dass man die nicht jedes mal neu heraussuchen muss: vieles wurden in div. listen, in sprachschwestern oder OSM schon einmal ausrecherchiert, da geht unendlich viel manpower verloren. also vielleicht hilft es, sich auf dieses thema zu konzentrieren: hier dürfte der knackpunkt umgekehrt liegen, ablehnung entsteht nur, wenn das modul nicht ordentlich funktioniert: das würde also das henne-ei-problem umdrehen. --W!B: (Diskussion) 07:53, 4. Apr. 2019 (CEST)Beantworten

Hallo @MisterSynergy: zu kein Wert siehe auch Benutzer_Diskussion:Kolja21#Normdatenpflege (diff).

Unter d:Module:Wikidades gibt es im Gegensatz zu Wikipedia:Lua/Modul/Wikidata die Option shownovalue=false für die claim-Funktion.

Beispiele:

* [[:d:Q12326028]]:LCAuth:{{#statements:P244|from=Q12326028}}:
* [[:d:Q76131]]:LCAuth:{{#statements:P244|from=Q76131}}:

* [[:d:Q12326028]] - LCAuth:{{#invoke:Wikidata|claim|P244|id=Q12326028}}:
* [[:d:Q76131]] - LCAuth:{{#invoke:Wikidata|claim|P244|id=Q76131}}:

Siehe auch Benutzer:M2k~dewiki/FAQ#Wie_finde_ich_Wikidata-Objekte_mit_dem_Wert_"no_Value"_bzw._"kein_Wert". --M2k~dewiki (Diskussion) 20:53, 13. Mai 2021 (CEST)Beantworten

Lösung Skriptfehler Vorlage:lang

[Quelltext bearbeiten]

Gibt es irgendwo schon einen Ansatz, wie Jinmeiyō-Kanji repariert werden kann? Man könnte entweder die Vorlagenverwendung großteils rausschmeißen, die Seite zersplittern (eher schwierig) oder die Lua-Programmierung ändern (hab mir die Machbarkeit aber noch nicht angeschaut). Welche Variante wäre zu bevorzugen? So kann die Tabelle jedenfalls nicht bleiben, da sind mehr Fehlermeldungen als Inhalt. Gruß—XanonymusX (Diskussion) 13:05, 23. Dez. 2019 (CET)Beantworten

Ähm, wo denn genau?
Ich sehe weder Fehlermeldung noch Wartungskat.
LG --PerfektesChaos 13:07, 23. Dez. 2019 (CET)Beantworten
Also, bei mir ist die Seite in der Skriptfehler-Kategorie und ungefähr ab der Hälfte mit roten Timeout-Meldungen zugepflastert. Gruß—XanonymusX (Diskussion) 14:02, 23. Dez. 2019 (CET)Beantworten
Mach mal einen Purge. --Liebe Grüße, Lómelinde Diskussion 14:05, 23. Dez. 2019 (CET)Beantworten
Hm, interessant; jetzt hat nur noch ein kleiner Teil der Tabelle Fehlermeldungen, aber ganz weg sind sie immer noch nicht. Sind aber auch über 4000 Vorlageneinbindungen … —XanonymusX (Diskussion) 14:10, 23. Dez. 2019 (CET)Beantworten
Und nach nochmaligem Purgen ist die Seite wieder komplett zerschossen …—XanonymusX (Diskussion) 14:15, 23. Dez. 2019 (CET)Beantworten
Ich meine ich hatte sie gestern auch rot habe dann einmal die Seite gepurged und es war weg. Das ist wirklich mysteriös bis eben war es weg nun habe ich die Fehler wieder dick und rot. Also eine wirkliche Lösung weiß ich aber auch nicht. --Liebe Grüße, Lómelinde Diskussion 14:18, 23. Dez. 2019 (CET)Beantworten
Bei mir war sie nach deinem ersten Purge rot jetzt ist sie wieder ok. --Liebe Grüße, Lómelinde Diskussion 14:19, 23. Dez. 2019 (CET)Beantworten
Dann wird es an der Serverlast liegen; wenn der sehr beschäftigt ist, arbeitet er nur langsam ab und erreicht das Limit auf Hälfte der Seite. Ist er unausgelastet, wutscht er durch und es klappt.
Vorlagen aus dem Wikitext rausnehmen ist grundsätzlich keine gute Idee. Das sind enzyklopädische und die für Leser adäquate Darstellung sichernde Maßnahmen.
Übliches Verfahren ist es in solchen Fällen, für das Gesamtverständnis weniger wichtige umfangreiche Tabellen auszulagern in einen separaten Artikel (ISO-3166-1-Kodierliste). Das freut dann auch normale Leser, die für einen Einstieg auf ihrem Smartphone erklärt bekommen möchten, worum es denn überhaupt geht, und noch nicht jedes Schriftzeichen einzeln erklärt bekommen müssen.
LG --PerfektesChaos 14:23, 23. Dez. 2019 (CET)Beantworten
Tja, ein Aufteilen ist hier ziemlich schwierig, der Artikel besteht ja nur aus der Liste, und ebendiese kratzt dann so hart am oberen Limit. Thematisch ist die Liste auch einheitlich. Weiß nicht, mit der Sinnhaftigkeit der lang-Vorlagen kenne ich mich nicht aus; wenn man wenigstens eine der Spalten in der Tabelle ohne Vorlage darstellen könnte, wäre vermutlich schon viel gewonnen.
Vielleicht gibt es doch eine technische Lösung? Zu 16 % scheint die Lua time usage an dataWrapper <mw.lua:661> zu liegen, aber die 30 % others könnten der Knackpunkt sein, kann ich mir grad nicht erklären. Aber da jetzt tiefer einzusteigen ist bei mir auch nicht drin. Gruß–XanonymusX (Diskussion) 23:30, 23. Dez. 2019 (CET)Beantworten

Code-Review erbeten

[Quelltext bearbeiten]

Hallo, heute habe ich mich endlich mal meinem ersten Lua-Projekt angenommen, das ich schon eine Weile im Kopf hatte und jüngst durch diverse Anfragen in der Vorlagenwerkstatt wieder auf meine Tagesordnung kam. Es geht um einen gemeinsamen Unterbau für (bisher) Vorlage:Grand-Tour-Platzierungen, Vorlage:Monumente-des-Radsports-Platzierungen und Vorlage:Straßenradsport-Weltmeisterschafts-Platzierungen. Das Ergebnis ist nun hier auf Beta zu finden. Ich würde mich freuen, wenn jemand mal drüberschaut und hinsichtlich Sauberkeit und Effizienz der Programmierung etwas Feedback dalassen würde. Anwendungsfälle gibt es hier. Gruß, -- hgzh 19:53, 10. Apr. 2020 (CEST)Beantworten

Kommt im Laufe der Feiertage.
Genau so läuft das; schönen Dank.
Frohe selbige --PerfektesChaos 19:58, 10. Apr. 2020 (CEST)Beantworten
Erster Schnellblick; nur ganz oben und ganz unten:
  1. Anwendungs-Datenteil sollte nach loadData ausgegliedert werden.
    • gColors und gEvents und gLegend; bei gConfig weiß ich nicht so ganz; das könnte auch legitime interne Konfiguration sein.
    • Hilfe:Lua/Modul im Wiki #mw.loadData()
    • Gründe:
      • Performance; Daten werden nur einmal pro Wiki-Seite eingebunden, Programmierung bei jedem invoke.
      • Strategische Übersichtlichkeit; Grundsatz der Trennung von Programm und Daten.
      • Seitenschutz; Programmierung vielleicht unter Voll oder Dreiviertel; Daten nur Halbschutz oder sowas.
      • Andere Benutzer mögen da dran rumwirtschaften, aber die Programmierung in Frieden lassen.
      • Übersichtlichkeit der Versionsgeschichte; Änderungen der Daten jucken die Programmierung nicht und mögen oft geschehen; Programmierung dagegen dann nur sehr selten.
    • Datum mit registrieren.
    • Modul:Shortcuts/4 als Beispiel.
  2. args["MODE"] = frame.args["MODE"]
    • Das darf eigentlich nicht funktionieren.
    • frame:getParent().args ist schreibgeschützt.
    • Schreibt sich einfacher: args.MODE
    • Bessere Lösung:
      • Eigene table params aufmachen.
      • Per Schleife alle Zuweisungen von args untersuchen.
      • Wenn kein leerer String dann den Wert dem Element von params zuweisen; leere Strings sind „etwas“.
      • Unbenannte vorher auch trimmen.
      • Ggf. auch gleich noch eine Liste bekannter, erlaubter Namen von Parametern.
    • Modul:Multilingual als Beispiel; dort p.int und auch fold().
LG --PerfektesChaos 20:41, 10. Apr. 2020 (CEST)Beantworten
Danke schonmal. Zu (1): hört sich sinnvoll an, deshalb bereits so umgesetzt. Zu (2): das habe ich so aus Hilfe:Lua/Modul_für_eine_bestimmte_Vorlage#Mehrere_Vorlagen übernommen, also die lokale Kopie der Vorlagen-Umgebung angereichert um den Steuerparameter für die Vorlagenverwendung an die Hauptprozedur zu schicken. Zur Parameterprüfung komme ich dann vielleicht im Anschluss. Gruß, -- hgzh 13:16, 11. Apr. 2020 (CEST)Beantworten
@Hgzh:
  • @argsparams
    • Möglicherweise ging das 2013 mal, als die Hilfeseite geschrieben wurde; und ist erst später blockiert worden.
    • Egal ob grad technisch möglich oder nicht, sollte nicht mehr so gemacht werden.
    • Alle Inhalte des frame-Objekts sind (inzwischen) schreibgeschützt.
    • Die Hilfeseite muss ich mir noch genauer angucken; hab ich wahrscheinlich nicht mehr seit ich sie schrub.
  • Ja, Internationalisierung ist ein weiterer Grund, lokale Lemmata und Kategorien projektspezifisch, Texte sprachspezifisch und die Programmierung global einheitlich zu pflegen. Franzosen haben ja wohl auch was mit Radsport zu tun.
  • Namensgebung in echt womöglich als Modul:Vorlage:Radsportplatzierung wegen Zuordnung zu einer einzigen oder kleiner Gruppe von Vorlagen; anders als bei universellen Bibliotheksmodulen.
    • Sind zurzeit drei Vorlagen; müsste man vor Etablierung in der produktiven WP nochmal drüberschauen, ob es nicht ggf. sogar eine rein dokumentierende, vielleicht auch gemeinschaftlich genutzte Vorlage:Radsportplatzierung geben sollte. Vorlage:Runeberg hosted auch nur eine Doku-Tabelle, aber ist Alibi für Modul:Vorlage:Runeberg. Was in drei völlig anders benannten Vorlagen eingebunden wird.
  • wikitext(tostring(head))
    • Ist vermutlich :node(head) oder so.
  • Sehr hübsch aber, von vornherein mit dem mw.html-Objekt zu arbeiten und nicht mit gammligem HTML-Quellcode.
  • printRow() sollte statt tostring(row) or "" eher row zurückgeben (or "" kann ohnehin niemals eintreten), und das dann mit :node(printRow()) einhängen statt :wikitext(rows).
  • return tostring(cell) or "" – da kann auch nie or "" passieren; return cell und dann :node(printTableHeadCell(mode, year))
  • Heißt: Zuallererst result = mw.html.create("table") und dann da immer die Knoten dranbamseln und erst das Ergebnis bekommt einmalig für die gesamte Tabelle ein einziges return tostring(result)
    • Oder noch verschäfter, aber nicht im absehbaren Tätigkeitsfeld dieses Moduls: Die Tabelle wird immer noch als Objekt zurückgegeben, auch an eine Lua-Schnittstelle, und erst für die Vorlageneinbindung wird daraus eine Zeichenkette gemacht.
  • Zwischendurch kleine :newline() erleichtern das Debugging.
  • if args["Titel"] ~= nil and args["Titel"] ~= "" then
    • Das ist so ein Fall, den ich eher vorher schon zentral abfangen würde, indem params nur nichtleere strings enthält.
    • args["Titel"] ~= nil ist args["Titel"] ist args.Titel
  • Ich würde mir noch eine kleine Test-Schnittstelle einbauen; p.test(params) ruft return main(params) auf, dann kannst du aus der Lua-Quelltextkonsole mit Dummies ohne eine Wiki-Seite debuggen.
  • Aus robuster Produktivversion irgendwann zu entfernen.
  • Da du ja schnell große Fortschritte machst, kannst du auch im Kopfbereich No Globals (obere Zeilen) einbinden.
    • Detektiert undeklarierte Variablen. Leider gibt es zur Sprache Lua global bis heute keine Linter oder Syntaxanalyse über die formale Grundsprache hinaus.
    • Später auf produktiv nach Erprobungsphase wieder rausnehmen.
LG --PerfektesChaos 17:57, 14. Apr. 2020 (CEST)Beantworten
Danke, ich sehe es mir die Tage genauer an. Gruß, -- hgzh 20:06, 14. Apr. 2020 (CEST)Beantworten

So, habe nochmal durchgearbeitet:

  1. HTML-Aufbau: Gute Idee, :node() hatte ich erst recht spät entdeckt und da waren die Unterfunktionen schon so geschrieben, aber jetzt wird erst aus der fertig zusammengebastelten Tabelle ein String gemacht, inkl. dezenter Zeilenvorschübe.
  2. Parameter-Übernahme: es werden nur noch nichtleere Parameter aus der Artikelumgebung übernommen, dazu weiterhin der Modus aus der Vorlagenumgebung. Parameterprüfung habe ich erstmal noch nicht gemacht, da durch Modusabhängigkeit umständlicher, das wäre aber vermutlich dann über mw.ustring.find mit den Lua-Pattern möglich. Außerdem überlege ich noch, die Modus- und Eventbezeichnungen auszulagern, sodass am Ende gar kein deutscher Text mehr im Hauptcode steht und man das ganze Ding wirklich 1:1 und nur mit Anpassungen unter /config irgendwoandershin portieren könnte.
  3. Vorlagen: die einzelnen Vorlagen rufen dann ja nur noch das Modul mit dem unterschiedlichen Parameter MODE= auf und das holt sich dann die Parameter aus der Einbindung, also können die einzelnen Vorlagen so bestehen bleiben, macht auch am wenigsten Zusatzarbeit.
  4. NoGlobals: Habe ich eingebunden und noch eine undeklarierte eigentlich lokale Variable gefunden, danke für den Hinweis.
  5. Test: habe ich noch nicht verstanden, welche Lua-Quelltextkonsole ist das (die „Fehlerbereinigungskonsole“ ganz unten? Wie gebe ich der Eingangswerte?)

Darfst gerne nochmal gegenlesen oder meine fünf Punkte kommentieren, ohne Eile natürlich. Gruß, -- hgzh 18:15, 27. Apr. 2020 (CEST)Beantworten

Ich mach voll konkret zu Konsole, ey, und Rest nach dem revolutionären Ersten Mai.
Hilfe:Lua/Quellcode und Vorschau #Konsole
Modul:Vorlage:URN zum Bearbeiten öffnen; geht auch auf BETA, aus Gründen.
In graue Konsole eingeben:
  • =p.test( { }, { } )
  • =p.test( { #invoke-Parameter }, { Vorlagen-Parameter } )
LG --PerfektesChaos 19:51, 27. Apr. 2020 (CEST)Beantworten

Einlesen einer Seite

[Quelltext bearbeiten]

Hallo. Mir ist es trotz Durchlesen der diversen Lua-Hilfeseiten nicht ganz klar, wie man mit einem Lua-Skript den Quelltext einer anderen Seite (im Modul-NR oder Vorlagen-NR) als Plaintext ähnlich auslesen kann wie offline eine Datei auf der Festplatte. Entweder als einzelner String (mit CR/LF als Trennung) oder idealerweise als Table mit den Zeilen als Elemente. Ziel ist es, eine dort abgelegte Texttabelle in eine Lua-Tabelle des aufrufenden Moduls zu konvertieren. Das "Zerlegen" des eingelesenen Inhalts ist für mich kein Problem, es geht darum, die andere Seite überhaupt erst einmal einzulesen.

Beispiel:
Auf der einzulesenden Seite befinden sich Zeilen mit folgendem Inhalt
Text1-1;Text1-2;Text1-3;Text1-4~
Text2-1;Text2-2;Text2-3;Text2-4~
Text3-1;Text3-2;Text3-3;Text3-4~

Gewünschtes Lesergebnis ist entweder ein String mit erkennbarem Zeilentrenner (evtl. schon im Quelltext vorhanden oder das CR/LF) oder eine Table mit den Elementen

{"Text1-1;Text1-2;Text1-3;Text1-4~","Text2-1;Text2-2;Text2-3;Text2-4~","Text3-1;Text3-2;Text3-3;Text3-4~" }

ÅñŧóñŜûŝî (Ð) 14:27, 28. Jun. 2020 (CEST)Beantworten

Hilfe:Lua/Links #title.getContent() VG --PerfektesChaos 17:23, 28. Jun. 2020 (CEST)Beantworten
@PerfektesChaos: Danke. Das hatte ich noch gar nicht entdeckt. Habe noch ein paar Fragen:
  • Was bekomme ich als Rückgabewert? Einen String, Table, was anderes?
  • Bekomme ich mit "makeTitle" das Objekt einer Seite, also z. B. mit
local MeineSeite = mw.title.makeTitle( "wikipedia", "Lua/Werkstatt")

diese Seite als Objekt?

  • Bekomme ich den Inhalt dann mit
Inhalt = MeineSeite:getContent()

oder mit

Inhalt = mw.title:getContent(MeineSeite) ?

Sorry, aber ein paar Quelltextbeispiele würden diese Hilfeseite echt verbessern. ÅñŧóñŜûŝî (Ð) 17:53, 28. Jun. 2020 (CEST)Beantworten

(BK)
Ein kombiniertes Hilfe:Lua/Links #Anwendungsbeispiel muss für diese Seite reichen; das ist für jede einzelne Funktion und jedes Objekt immer genau analog. Die Hilfeseite würde zehn Kilometer lang werden, und wäre weder verständlicher noch von irgendjemandem wartbar, wenn man zu jedem Pipifax ein neues Beispiel darstellen würde, und die schnelle Übersichtlichkeit über die zahlreichen Funktionen ginge völlig verloren, und dann beklagst du dich noch mehr, weil das alles viel zu viel und zu unübersichtlich wäre, und du würdest die wesentlichen Informationen nicht mehr finden können.
Zur Frage 1: Ein „Wiki-Quelltext“ ist eine Zeichenkette, ja. Im Prinzip auch andere Ressourcen-Quelltexte.
Zur Frage 2: Der Satz „Das title-Objekt repräsentiert einen Seitennamen“ leitet die verschiedensten Möglichkeiten ein, sich ein title-Objekt zu generieren.
Zur Frage 3: Auf den ersten Blick, ohne es auszutesten, wohl ja. Warum machst du nicht einfach eine Dummy-Modulseite auf und lässt dir anzeigen, was der von dir hingeschriebene Lua-Quellcode bei der Auswertung ergibt?
VG --PerfektesChaos 18:17, 28. Jun. 2020 (CEST)Beantworten
Du hast Recht. Probieren geht über studieren... Trotzdem sind ein paar Beispiele mehr ganz nützlich . Evtl. auf einer separaten Seite oder am Ende. ÅñŧóñŜûŝî (Ð) 18:23, 28. Jun. 2020 (CEST)Beantworten
Wie ich soeben verlinkte, steht ein Beispiel am Ende.
Das deckt alles ab, was auf der Seite passiert; es ist dann halt nur der Name der Funktion oder Eigenschaft ca. 80 Mal durch jeweils einen anderen zu ersetzen – für alle rund 80 Funktionen und Eigenschaften, die auf der Seite beschrieben werden. Es sind in dem Anwendungsbeispiel sämtliche Konstellationen exemplarisch verwendet, die in der Seite darüber vorkommen. Mehr ist nicht machbar, und die Seite mit 80 gleichen Beispielen liest niemand, durchschaut niemand und kann niemand in Ordnung halten.
VG --PerfektesChaos 19:04, 28. Jun. 2020 (CEST)Beantworten
Wie groß darf der Quelltext sein, damit er noch korrekt eingelesen wird? Gibt es da besondere Grenzen? ÅñŧóñŜûŝî (Ð) 20:11, 28. Jun. 2020 (CEST)Beantworten
  • „Wie groß darf der Quelltext sein, damit er noch korrekt eingelesen wird? Gibt es da besondere Grenzen?“
    • Hilfe:Lua/Zeichenketten #maxStringLength 2048000 Bytes, wie es halt bei „Zeichenketten“ beschrieben steht, und damit für alle darstellbaren Wiki-Quelltexte gerade hinreichend; ansonsten bis dir die sonstigen Limits der Seite den Hahn zudrehen.
    • Das gilt für jeden String bei jeder Funktion; es ist überflüssig, dass du jetzt verlangst man müsse an jede Funktion, die etwas mit einer Zeichenkette zu tun habe, einen solchen Hinweis anbringen.
  • Das war die letzte Antwort gewesen, die du von mir in dieser Werkstatt bekommen hast.
    • Wenn es bei jeder Anfrage wie deine mit diesem Thread zusammenhängenden Aktivitäten in einer mehrstündigen Arbeitsbelastung und pfundweise Nervenverbrauch für mich münden, dann kann ich es schlicht nicht mehr leisten, wesentliche Teile meiner Wiki-Arbeit nur noch auf Beantwortungen zu deinen Lua-Problemen zu verwenden.
  • Du bist seit sieben Jahren Lua-Programmierer. Ich erinnere mich noch sehr genau, wie du praktisch schon am ersten Tag der Lua-Freischaltung munter hunderttausendfach eingebundene Vorlagenfunktionen experimentell auf deine ersten Gehversuche mit Lua in der Live-Darstellung umprogrammiert hattest. Du musst es inzwischen gelernt haben.
  • Die fragliche Hilfeseite zeigt ein Anwendungsbeispiel, in dem ich alle auftretenden Konstellationen exemplarisch dargestellt hatte.
    • Es werden aus der Hilfeseite verwendet:
      • Konstruktion eines title-Objekts
      • Verwendung einer Methode aus diesem title-Objekt
      • Konstruktion eines uri-Objekts
      • Verwendung einer Eigenschaft aus diesem uri-Objekt
    • Dazu noch vorbildlich eine Gültigkeitsprüfung des Funktionsparameters und eine Fehlermeldung bei Fehlzugriff; wir sind hier ja schließlich nicht bei Wikidata.
    • Auf der Hilfeseite werden rund 80 Funktionen und Eigenschaften beschrieben.
    • Von einem Programmierer wird die Fähigkeit zur Transferleistung erwartet.
    • Das heißt, die 76 anderen Fälle auf der Hilfeseite sind genau analog zu den von mir aufgezählten Konstellationen anzuwenden; und dazu bedarf es nicht wie von dir begehrt 76 weiterer Demonstationsbeispiele.
  • Wir haben rund sieben Hilfeseiten, die programmtechnische Details der von MediaWiki angebotenen Bibliotheken beschreiben.
    • Du bist seit mehr als sieben Jahren in der Wiki-Lua-Programmierung tätig.
    • Also hättest du Zeit gehabt, jedes Jahr eine der Hilfeseiten zu verinnerlichen, und bräuchtest hier nicht regelmäßig mit solchen Fragen aufzulaufen.
    • Weiterhin könntest du dir deine Nachfragen in aller Regel gleich selbst beantworten, indem du die entsprechende Funktion einfach testweise aufrufst und im Detail siehst, wie und was in deinem speziellen Fall herauskommt.
      • Großes Geheimnis: Beim Schreiben der Hilfeseiten mache ich das oft auch nicht anders.
  • Wir haben rund sieben Hilfeseiten, und du schreibst diesen Thread eröffnend, „trotz Durchlesen der diversen Lua-Hilfeseiten nicht“.
    • Nun forderst du, man solle wohl noch 20, 30, 40 weitere Hilfeseiten schreiben, wo für jede Funktion und jede Eigenschaft noch ein Demonstationsprogramm geliefert würde.
    • Mal angenommen, jemand würde für dich diese vielleicht 2345 Demonstationsprogramme oder wie viele Schnipselchen auch immer schreiben, damit du für jede Situation und jeden Parameterwert und jede Konstellation eine Quelltextzeile mundgerecht und vorgekaut bekommst, die du nur noch mit C&P in dein neues Programm zu übertragen brauchst – mal angenommen, irgendjemand (ich selbst ganz sicher nicht) würde dir deinen Wunsch erfüllen und fehlerfrei Tausende von Demonstrationsbeispielen erstellen und jedes auf Richtigkeit erproben, nur mal angenommen die wären vorhanden: Dann würdest du, der in sieben Hilfeseiten schon nichts findet, auch in den 50 neuen Hilfeseiten nichts finden; ja überhaupt niemand würde in diesem riesigen Wust irgendwas finden können. Es würde sie auch niemals irgendjemand benutzen wollen.
    • Die gute Nachricht: Es braucht auch niemand. Alle wesentlichen Informationen stehen bereits heute knapp und kompakt auf unseren deutschsprachigen Hilfeseiten. Der Rest findet sich sofort, wenn man die Programmierung erprobt und die aktuellen Detailfragen für den eigenen Kontext erforscht.
    • Sollte dir das deutschsprachige Angebot nicht ausreichen, kannst du jederzeit die globale zentrale englischsprachige Dokumentation der Lua-Bibliotheken zu Rate ziehen.
    • Soweit ich das überblicken kann, sind wir hier weltweit das einzige Wiki, das eine muttersprachliche Dokumentation der Lua-Bibliotheken anbietet. Aber das genügt dir ja immer noch nicht, es muss dir dann auch noch jede einzelne Funktion und jede Eigenschaft durch ein Anwendungsbeispiel nochmals erklärt werden.

--PerfektesChaos 13:09, 29. Jun. 2020 (CEST)Beantworten

Das ist schon ein dreistes Stück: Erst eine Hilfeseite total kompliziert und unvollständig schreiben und dann User, welche deshalb hier nachfragen müssen, verächtlich machen, weil du durch probieren schon schlauer bist. Komm mal von deinem hohen Ross herunter. Wenn du doch selbst testen musst, dann kannst du das Ergebnis doch auch gleich auf die Hilfeseite schreiben und damit anderen die gleichen Tests ersparen.
  • Du hast viel Ahnung von dem Thema, aber du bist in meinen Augen unfähig und wohl auch unwillig, irgendetwas sauber und klar verständlich zu dokumentieren. Das gilt für von dir erstellte Hilfeseiten und besonders für die von dir erstellten Module. Du denkst höchstwahrscheinlich im Traum nicht daran, sie sauber zu dokumentieren, weil du meiner Einschätzung nach nichts mehr fürchtest, als dass ein anderer ein derartiges Modul ebenfalls vollständig durchdenken kann. Nur wenn du der Einzige bist, der ein Modul versteht, hast du die absolute Kontrolle darüber und damit die alleinige Macht, darüber entscheiden zu können, welche Features es hat und welche nicht.
  • Dein Umgang mit anderen Usern im Bereich Programmierung nähert sich meinem Eindruck nach immer mehr dem schlechten Umgang an, welcher unser "Schweizer Astronom" mit anderen beim Thema Astronomie pflegte. Je mehr es dir gelingt, hier bestimmte Bereiche monopolartig zu besetzen, umso unverschämter gehst du meiner Meinung nach mit anderen um, weil du genau weist, dass dich hier niemand hinauswerfen kann.
Schade, dass du so schlecht kooperierst. ÅñŧóñŜûŝî (Ð) 22:57, 29. Jun. 2020 (CEST)Beantworten
Interessant die Debatte zu verfolgen, aber es passt exakt ins Bild und ist eher der Regel- statt ein Einzelfall! Konfrontation statt Kooperation ist die Devise. Aber bei aller Kritik sollte man auch mal vor der eigenen Haustür fegen, sonst wird die Feststellung zum Eigentor ....--Klaus-Peter (auf und davon) 06:30, 30. Jun. 2020 (CEST)Beantworten
Bedenke, das PerfektesChaos dein Flaggenmodul auch geradezu "in der Luft zerrissen" hat, weil du nicht so gut bist wie er selbst und es deshalb in der Tat Mängel aufweist. ÅñŧóñŜûŝî (Ð) 19:49, 30. Jun. 2020 (CEST)Beantworten
Nicht ablenken, den am Zerreißen waren noch Andere beteiligt, die willig ins gleiche Horn stießen, ungeprüft Argumentationen übernahmen, entsprechend ‚korrigierten‘ und mit LA drohten. Bei aller prinzipiellen Abscheu gegen Vorlage:Flagge hat sich ausschließlich Lomelind mit einigen zwar anders gemeinten, aber letztendlich hilfreichen und konkret nachgewiesenen Reklamationen gemeldet, die sofort zur Korrektur führten (trotz vorsorglich reklamierten Wartungsdefiziten). Ich kenne noch weitere Mängel, die ich vorerst übersehe, so lange sie nicht zu gravierenden Fehlern führen. Ich werde auch das Modul vorerst (oder ggf. nie) nicht optimieren und entwirren. In einem laufenden Verfahren werde ich keine Zeit verplempern. An anderen Stellen geht die Entwicklung konstruktiv und kooperativ weiter und die Berreren tragen aktiv mit ihrem Wissen, auch zum gemeinsamen Nutzen Anderer, bei, statt oberlehrerhaft die eigene Qualifikation breitzutreten. Ich bin seit den ersten Tagen bei WP dabei und der damalige Enthusiasmus riss mit. Inzwischen ist es zur zähflüssigen Masse geworden, wo insbesondere bei de-WP, sich statt dem Willen gemeinsamen Schaffens ein Konkurrenzkampf das Geschehen diktiert und oft Innovationen blockiert. Da gibt es ein paar Aktivisten, die ständig im Vordergrund stehen nach dem Motto: „Es gibt 2 Meinungen: Meine und die Falsche“. Woanders wird Wissen ausgetauscht statt in der eigenen Scheinwelt konserviert. Da hilft der Bessere dem Unerfahrenen und debattiert wird um ein besseres Ergebnis, statt um Prinzipien. Letztendlich sehe ich es als Charakterfrage. WP ist keine Bühne um die Probleme im Privatleben oder Beruf bewältigen! --Klaus-Peter (auf und davon) 06:52, 1. Jul. 2020 (CEST)Beantworten
Wenn du mich schon hierher zitierst, kannst du dann wenigstens meinen Namen richtig schreiben? Lómelinde bedeutet Nachtigall und die Schreibt sich mit einem langen ó in den Anteil der Nacht=Lóme und Lind wäre nur das Lied oder der Gesang und nicht wie hier die Sängerin, die sich Linde schreibt, was dann zusammen Nachtsängerin ergibt und die Nachtigall meint. Ich habe übrigens nichts zerrissen sondern immer wieder auf Fehler und schlechte Bedienbarkeit oder Verständlichkeit der Parameter der Vorlage hingewiesen. Als Dank darf ich mir hier ständig deine Anfeindungen abhören, weil ich dich auf so etwas hinweise. Ja, kehre auch mal vor deiner Tür, so wie du das anderen empfiehlst. Und nein, meine Hinweise waren nicht „anders gemeint“, sie dienten der Fehlerbehebung. Selbst dann, wenn ich die Vorlage nicht einsetzen oder empfehlen würde, so sind mir doch eine möglichst fehlerfreie Funktion und Laienverständlichkeit wichtig. --Liebe Grüße, Lómelinde Diskussion 07:14, 1. Jul. 2020 (CEST)Beantworten
Den Vorwurf der blinden Übernahme von Kritik an diesem Modul weise ich zurück, genaueres ist anderswo zu diskutieren. Du wirst es kaum glauben, aber was es die Stimmung hier angeht, da gebe ich dir weitgehend Recht (Wow, wir sind uns mal in einem Punkt einig!) Es gibt zuwenig Teamwork. Bei einem Modul ist Teamwork schwierig, aber ansonsten könnte sie besser sein, wie du hier an einem gewissen dritten User sehen kannst... ÅñŧóñŜûŝî (Ð) 07:04, 1. Jul. 2020 (CEST)Beantworten
Etwas Einigkeit ist ja schon mal ein Schritt nach vorne. Blind ist Kritik nicht, wenn sie zu konkreten Ergebnissen führen kann und nicht nur pauschal ins gleiche Horn bläst. Früher hat man bei WP deutlich besser zusammengearbeitet, auch Sensibelchen, die sich gerne ihre Welt passend zurechtbiegen. Ansonsten: Weiter mit „Einlesen einer Seite“. Da ich auch ähnliche Gedanken habe, interessiert mich ein brauch- und anwendbares Ergebnis auch.--Klaus-Peter (auf und davon) 07:25, 1. Jul. 2020 (CEST)Beantworten
Ok. In der Hoffnung, dass du die Info zur Verbesserung "deines" Moduls nutzt: Auslesen funktioniert z.B. mit dieser kleinen Funktion:
-- Auslesen einer Seite. Parameter: 1=Namensraumnummer und 2= Seitenlemma (ohne Namensraum)
-- Rückgabe: true, wenn die Seite existiert und ein String mit dem Quelltext der Seite
function SeiteLesen(NR,Titel)
	local Seite = mw.title.makeTitle(NR, Titel)
	local Text;
	local Exist = Seite.exists
	if Exist then
		Text = Seite:getContent()
	else
		Text = '<span class="error">Seite existiert nicht!</span>'
	end
	return Exist, Text;
end
Gruß von ÅñŧóñŜûŝî (Ð) 19:03, 1. Jul. 2020 (CEST)Beantworten
Gut gemeinter Tipp, aber eine Ahnung, wie und wo ich es bei "meinem" Modul einsetzen könnte. Für das, was ich an Daten einzulesen habe, passt mw.loadData(); das macht exakt das, was ich erwarte und falls die Datei nicht greifbar ist, bekomme ich nil. OK, die Error-Behandlung ist noch etwas rudimentär, aber bei drohendem LA derzeit kein Thema, an das ich hier Zeit verplempere. Zu mw.getContent() ist die deutsche Doku etwas geizig ausgefallen. Ich ziehe aber grundsätzlich die en-Doku vor (da weiß man, was man hat). Da verbergen sich noch ein paar mehr Parameter zu mw.makeTitle. Für eine von mir zu einem anderen Thema gestellte Frage, scheint sich damit auch keine Lösung anzubieten, da ich nur einen begrenzten Text (z.B. eine Tabelle) einlesen will. Brauche ich z.B. nur die Liste seiner paar Veröffentlichungen, werde ich kaum 260 kB von Donald Trump einlesen. -mFg-Klaus-Peter (auf und davon) 06:37, 2. Jul. 2020 (CEST)Beantworten

Paradebeispiele für gute Modul-Doku

[Quelltext bearbeiten]

Hallo zusammen, nicht unbedingt ein klassisches „Werkstatt“-Thema, aber hoffentlich dennoch hier passend. Ich würde gerne die Dokumentation von Modul:Wikidata neu schreiben, die jetzige ist für den Orkus. Welche Module bei uns haben eine vorzeigbare Doku? Ich würde mich gern entsprechend daran orientieren, bevor ich die Doku völlig nach meinem Gusto überarbeite. Danke, Yellowcard (D.) 09:01, 10. Jul. 2020 (CEST)Beantworten

Wikipedia:Lua/Modul/WikidataScheme/de für eine Doku,
VG --PerfektesChaos 14:45, 10. Jul. 2020 (CEST)Beantworten

Nutzung einer privaten Lua-Funktion oder bestimmter Parameter ermitteln

[Quelltext bearbeiten]

Hallo zusammen, folgende Situation: In Modul:Wikidata werden bei der Funktion p.claim() die unbenannten Parameter 2 bis N verwendet, um die Ergebnisse der Wikidata-Abfrage anhand der Qualifier zu filtern. Ich finde es unglücklich, dass hierfür die unbenannten Parameter verwendet wurden, und würde diesen Anwendungsfall gern überführen in einen benannten Parameter, der die Angaben übernimmt.

Bevor ich solche Änderungen vornehme, muss ich natürlich wissen, ob der zweite unbenannte Parameter (und aufwärts) bereits irgendwo genutzt werden (entweder per #invoke oder auch aus einem anderen Lua-Modul heraus). Über eine Quelltext-Suche mittels Cirrus halte ich das für kaum umsetzbar.

Wird der zweite unbenannte Parameter gesetzt, wird eine private Funktion des Moduls betreten. Kann ich also irgendwie herausfinden, ob a) entweder die Funktion p.claim() mit einem zweiten unbenannten Parameter genutzt wird oder b) ob die genannte private Funktion betreten wird? Zum Beispiel über eine Wartungskategorie, ein Logbuch etc.? Mir fällt leider kein guter Ansatz ein. Ich könnte der Funktion p.claim() als Rückgabewert einen Lua-Error mitsamt Wartungskategorie mitgeben, aber dies würde ja nur die #invoke-Anwendungsfälle abdecken, nicht die Aufrufe aus einem anderen Lua-Modul, korrekt? Hat vielleicht jemand eine Idee, wie sich soetwas umsetzen lässt? Yellowcard (D.) 09:09, 10. Jul. 2020 (CEST)Beantworten

Das ginge bei #invoke nur unrobust über die von dir bereits angesprochene Wartungskat; würde aber voraussetzen, dass der Wikitext in der Seite nach außen wirksam würde. Stünde das Ergebnis hingegen in einem HTML-Attribut, oder als Bedingung in einem {{#if: }} (was ich mir sehr gut vorstellen kann), dann bliebe das wirkungslos. Genauso wenn es in der Logik eines anderen Moduls verschwindet, weil völlig unbekannt wäre, ob das andere Modul diesen Text als Resultat nach draußen zeigt.
Der einzige, sichere, und triviale Weg ist die vor einem Dutzend Jahren mal praktizierte Linkliste; genauer: Eine Debugging-Unterseite mit nix drin anlegen und diese in der beanstandeten Situation einbinden, ohne mit dem Ergebnis was anzufangen. Das beeinträchtigt die bisherige Funktion nicht, und über die Liste der Einbindungen lassen sich alle Verwender tracken und nach und nach eliminieren. Kategorisieren geht nicht; du kannst allenfalls eine Kategoriebeschreibung einbinden. Alternativ kannst du auch einfach die Existenz der Debugging-Seite abfragen, dann braucht sie noch nicht mal zu existieren.
VG --PerfektesChaos 14:42, 10. Jul. 2020 (CEST)Beantworten
Hallo PerfektesChaos, das klingt nach einem sehr guten Tipp. Über welche Funktion binde ich den Link am besten ein? Im Lua-Modul hat die Einbindugn einer leeren oder nicht vorhandenen Seite logischerweise keine Auswirkungen – und dennoch sehe ich den Link über die MediaWiki-Linkliste? Das ist in der Tat spannend. Grüße, Yellowcard (D.) 13:08, 11. Jul. 2020 (CEST)Beantworten
Hilfe:Lua/Links #title.exists
Grundsätzlich wird die Abfrage auf Existenz einer Seite vom System in einer Datenbanktabelle aufgezeichnet, weil wie bei einem Redlink in dem Moment, in dem eine bisher nicht existente Seite angelegt wird, alle verlinkenden und einbindenden Seiten veraltet sind: Sie müssen bisherige Rotlinks in Blaulinks wandeln, und das Ergebnis von Vorlageneinbindungen kann sich dadurch ändern. Umgekehrt genauso: Wird eine Seite gelöscht, sind alle verlinkenden und einbindenden Seiten veraltet und müssen neu aufgebaut werden, weil Blaulinks in Rotlinks zu ändern sind und das Ergebnis von Vorlageneinbindungen sich ändern kann. Ist seit ca. 2003 so.
VG --PerfektesChaos 13:16, 11. Jul. 2020 (CEST)Beantworten

Vorlage mit API-Call für Denkmalliste Wuppertal

[Quelltext bearbeiten]

Hallo zusammen, bis vor einiger Zeit wurde Vorlage:DLWuppertal genutzt, um den Link auf die einzelnen Wuppertaler Denkmäler auf wuppertal.de zu generieren – mit der Denkmalnummer als Parameter. Das funktioniert seit einem Update der dortigen Struktur nicht mehr, seither wird mit einer internen ID gearbeitet. Auf Diskussion:Villa Espenlaub habe ich mit den Wuppertaler Kollegen ein wenig brain-gestormt, herausgekommen ist folgende Idee, zu der ich gerne wüsste, ob sie mit Lua praktikabel ist.

  • Ungefähre Idee (Pseudocode):
 AJAX/GET SearchCount($denkmalnummer)
  if result == 1
    AJAX/GET  SearchData($denkmalnummer)
    redirect(result.url)
  else 
    AJAX/GET  SearchData($denkmalnummer)
    … hier weiß ich noch nicht so recht weiter – redirect(??)
    kommen wir von hier irgendwie zu der Original-Suchergebnisliste? 
    Die Ausgabe ist zwar HTML aber nicht so richtig schick.

Kann man mit Lua in einer Vorlage überhaupt API Calls machen? Und wäre das halbwegs performant? Oder gibt's vielleicht noch weitere Ideen/Möglichkeiten? Die Daten stehen auch in Open Data bereit, so dass man vielleicht auch eine Matchingliste zwischen IDs und Denkmalnummern machen könnte, aber das wäre so … naja. Und das Problem mit den 1:n-Denkmälern wäre damit auch noch nicht gelöst. Fragen über Fragen … 

Merci für eure Gedanken dazu! --elya (Diskussion) 22:34, 25. Sep. 2020 (CEST)Beantworten

So wie ich das verstehe, brauchen wir eine Zwischenstation, eine Seite wie bei GeoHacks (Beispiel), die dann die nicht so richtig schicke-Ausgabe in einer attraktiven Tabelle umwandelt - falls zu einer Denkmalnummer mehrere Einträge in der Datenbank sind. --Atamari (Diskussion) 22:50, 25. Sep. 2020 (CEST)Beantworten
Ich würde einfach vorschlagen, dass man für den ersten Fall die interne Nummer als weiteren Parameter in die Vorlage:DLWuppertal aufnimmt und daraus die URL berechnet. Diese Nummer könnte man dann per Botlauf ergänzen (und auch ändern, falls sie sich doch mal ändert). Wie oft kommt der zweite Fall vor?--Count Count (Diskussion) 23:15, 25. Sep. 2020 (CEST)Beantworten
das könnte Atamari wissen, ansonsten könnte man mal versuchen, eine Auswertung zu fahren. Dieses Tabellenfragment aus der 1:n-Rückgabe wird ja auf wuppertal.de dann in die Suchergebnisseite eingespielt und bekommt dort sein Design. Bevor man für uns eher nichtssagende IDs nachträgt, auch per Bot, lohnt es sich vielleicht doch, noch mal Kontakt zu den Verantwortlichen für die Entwicklung der Denkmalseiten auf wuppertal.de aufzunehmen, vielleicht gibt es ja noch ein paar geheime Parameter, die uns weiterhelfen könnten. Count Count, zu meiner Frage: ginge denn sowas grundsätzlich mit Lua, mal abgesehen davon, ob wir den Aufwand treiben wollen? --elya (Diskussion) 10:18, 26. Sep. 2020 (CEST)Beantworten
In Lua-Modulen hat man nur eine sehr eingeschränkte API zu Verfügung, so kann man auf andere Wikiseiten und Wikidata zugreifen, aber nicht auf externe Webservices. Soweit ich das sehe, ist noch nicht einmal ein Aufruf von Webservices, die auf der Toolforge gehostet sind, möglich. Details siehe mw:LUAREF --Count Count (Diskussion) 11:54, 26. Sep. 2020 (CEST)Beantworten
ok, danke, dann war das eh eine Schnapsidee von mir. Ich versuche mal, an die Entwickler in Wuppertal zu kommen, bevor wir hier richtig Aufwand reinstecken (und die Listen mit weiteren Params füllen). --elya (Diskussion) 12:55, 26. Sep. 2020 (CEST)Beantworten

@Elya: Die Beantwortung war bereits völlig korrekt. Nochmal zusammengefasst:

  • Lua macht auch nichts anderes als Vorlagen.
    • Auch Vorlagen werden zu praktisch statischem Wikitext expandiert.
  • Es gibt mit Lua einige besondere Zugriffe, aber insgesamt nur:
    • Seiten im eigenen Wiki
    • commons:File: commons:Data: d:Q d:P d:L
    • Datum und Uhrzeit, wie auch anderweitig verfügbar, und ähnliche allgemeine Wiki-Eigenschaften.
  • Zugriff auf andere Wikis derselben Farm gibt es grundsätzlich nicht.
  • Die Tools/Cloud ist nicht ohne Grund ein HTTP-mäßig von den WMF-Wikis völlig abgekoppeltes Gebilde; das kennen wir überhaupt nicht. Hat Sicherheitsgründe, deshalb bewusst ein Fremdling.
  • Ebenfalls aus Sicherheits- sowie URV-Gründen enthält eine Wiki-Seite immer nur Inhalte, die selbst im Wiki hinterlegt wären, jedoch niemals irgendwelche Inhalte, die dynamisch und unkontrolliert aus irgendeiner fremden Website stammen, auch keine fremden Bilder und Medien, noch Daten oder Texte.

VG --PerfektesChaos 17:38, 26. Sep. 2020 (CEST)Beantworten

Ja, danke. Wenn man etwas drüber nachdenkt, ist es natürlich auch klar. Bin halt zu verliebt in die Möglichkeiten von externen APIs. Mail an Wuppertal ist übrigens raus, wir können hier auch erst mal zumachen. --elya (Diskussion) 18:12, 26. Sep. 2020 (CEST)Beantworten
@Elya: Der Thread hier ist etwas verstaubt, allerdings habe ich in der "Technik-Werkstatt" den Thread Extension:External Data angelegt (eigentlich für die Abfrage der WP-eigenen API). Diese Extention ist derzeit auf Wikimedia nicht installiert, obgleich man sie bereits anno 2009 groß ins Gespräch gebracht hat. Das Argument mit den "immer nur eigenen Inhalten aus Sicherheitsgründen" zielt ja schon mal ins Blaue, da solche externen Anbindungen mit OpenStreetMap schon längst auf sämtlichen Wikipedias erfolgreich implementiert sind. Welche externen Quellen man da zuläßt, hängt natürlich von deren Zuverlässigkeit ab. Grüße, Uwe Martens (Diskussion) 15:32, 26. Apr. 2021 (CEST)Beantworten
@Uwe Martens, ah, das war hier auch noch offen … das konkrete Thema hatte sich für uns tatsächlich erledigt – Wuppertal hat uns eine brauchbare URL mit ID-Parameter programmiert. Die Frage ist bei externen APIs dann noch, ob man die z.B. im ANR oder nur im Projektnamensraum zulässt. --elya (Diskussion) 19:05, 26. Apr. 2021 (CEST)Beantworten
 Info: Hier findet ein Mega-Projekt dazu statt, auf der dortigen Disk bin ich auch schon vorstellig geworden. Grüße, Uwe Martens (Diskussion) 09:12, 28. Apr. 2021 (CEST)Beantworten
  • Es handelt sich nicht darum, dass „man sie bereits anno 2009 groß ins Gespräch gebracht hat“, sondern um einen einzelnen Beitrag eines einzelnen Programmierers auf einem Hack-a-thon im Jahr 2009.
  • Scrollt man etwa auf mw:Extension:Cite ganz nach unten, dann findet sich dort ein Hinweisbaustein, dass diese auf WMF-Wikis verwendet wird.
    • Gleiches auf mw:Extension:External Data zeigt keinen derartigen Baustein.
    • Heißt: Es gab noch niemals ein WMF-Wiki, in dem diese PHP-Programmierung verwendet worden wäre.
  • OSM steht unter einer Sorte von CC-Lizenz, welche die Weiterverwertung des Kartenmaterials erlaubt.
    • Das WMF-Management ist verantwortlich dafür, dass die lizenzrechtlichen Bedingungen bei Weiterverwertung von OSM-Material usw. durch die Kartographer eingehalten werden.
    • Mit „hängt natürlich von deren Zuverlässigkeit ab“ hat dies primär nix am tun.
  • Jede Wikipedia-Seite steht unter einer CC-Lizenz, die es ermöglicht, die Inhalte samt aller eingebundener Medien weiterzuverwenden. So auch alle anderen WMF-Wikis.
    • Bilder und andere Mediendateien müssen auf Commons oder lokal der lizenzrechtlichen Überprüfung standhalten, andernfalls werden sie gelöscht.
  • Die mw:Extension:External Data würde es ermöglichen, von jeder beliebigen Website jeden beliebigen Inhalt in eine Wikipedia-Seite einzubinden, ohne dass dies kontrollierbar und insbesondere die lizenzrechtlichen Konsequenzen zu sichern wären.
    • Da die beliebigen fremden Webseiten jedoch nicht gesichert ausnahmslos alle unter einer freien Lizenz stehen, wird die in Rede stehende Extension niemals auf einem WMF-Wiki aktiviert werden.
  • Die Bewertung Das Argument mit den "immer nur eigenen Inhalten aus Sicherheitsgründen" zielt ja schon mal ins Blaue – das manifestiert nicht gerade die erforderliche Sachkunde, aus der sich die Berechtigung zur Abgabe derartiger Urteile herleiten ließe. Die „Sicherheitsgründe“ meinen nicht, dass der eigene Computer sich nicht in eine Rauchwolke auflösen solle, sondern dass zuverlässig verhindert werden muss, dass auf einer Wiki-Seite Inhalte ohne Lizenz dargestellt würden, somit primär nur eigene Inhalte der WMF. Oder auf sicherem Weg eingespeiste freie Geo-Informationen. Noch nicht einmal die Cloud-Tools der WMF gewähren diese Sicherheit, weil dort jeder Programmierer alles mit anstellen kann.
VG --PerfektesChaos 19:23, 29. Apr. 2021 (CEST)Beantworten
Aha! Von "nur eigene Inhalte der WMF" rückst Du jetzt schon mal ab zu dem Paradoxon "primär nur" - wie aufschlußreich! Fakt ist: Es werden bereits fremde Inhalte in der Wikipedia eingebunden, und die vorgeblichen Sicherheitsaspekte haben auch nichts mit der Lizenz zu tun, da die Frage nach der Lizenz ein urheberrechtlicher, nicht aber ein sicherheitstechnischer ist. In Deinen eigenen Ausschweifungen manifestiert sich gerade nicht die erforderliche Sachkunde, aus der sich die Berechtigung zur Abgabe derartiger Urteile herleiten ließe - um einmal Deinen schwulstigen Jargon zu verwenden! Dabei sind die Freiwilligen auf OSM nicht mehr oder weniger zuverlässig, als die Wikipedianer, vielmehr gibt es bei deren Arbeit öfters etwas zu bemängeln bzw. wird man eigentlich genötigt, sich da selbst anzumelden, um die Geodaten zu aktualisieren. Da die Extension:External Data nicht installiert ist, habe ich ja überhaupt die Diskussion eröffnet, auch das ist also nichts neues! Zunächst wäre es mal eine Frage der Vorlagenprogrammierung, welche Quelle man einbindet, nötigenfalls könnte man die Extention selber (oder eine Kopie davon) einfach auf Wikipedia-interne API-Abfragen beschränken, was ja PHP-seitig auch ein Pipifax ist. Aber das ist hier sicher der falsche Diskussionsort dafür. Ähm, und obwegen Deines anmaßenden Tons: Für mich hier EOD! -- Uwe Martens (Diskussion) 22:09, 29. Apr. 2021 (CEST)Beantworten

Module:Cite Q

[Quelltext bearbeiten]

In der Englischsprachigen Wikipedia gibt es inzwischen en:Module:Cite Q, um Literaturangaben aus Wikidata zu erzeugen. Siehe dieser Blogartikel. Kann jemand das für die deutschsprachige Wikipedia übernehmen? -- Nichtich (Diskussion) 19:11, 15. Jan. 2021 (CET)Beantworten

Sortierfunktion für tables

[Quelltext bearbeiten]

Ich habe mit table.sort rumgespielt und mich gefragt, ob es womöglich schon irgendwo eine Funktion gibt, die eine modifizierte lexikalische alphabetische Sortierung in einer Lua-Tabelle ermöglicht?! Mit table.sort gelingt natürlich nur die Sortierung nach ASCII-Werten, was bei deutschen Namen und Begriffen gleich ein Chaos ergibt.–XanonymusX (Diskussion) 23:59, 1. Feb. 2021 (CET)Beantworten

Du müstest auf beide Terme Sort.lex() anwenden.
Als Service-Bibliotheksfunktion Sort.compare(a1,a2,apply,adapt) ist es bislang nicht vorgesehen, weil diese Zwei-Zeilen-Programmierung sehr trivial wäre und bislang niemand dessen bedürft hätte. Hingegen belastet eine überflüssige Funktion die Ladezeit für sämtliche anderen Anwendungen.
Weil Anwendungen der Sortierfunktion typischerweise nicht eine banale Sequenz von Zeichenketten betreffen, sondern auch Komponentenzugriffe nach dem Muster obj[a1].key mit obj[a2].key miteinander verglichen werden müssen, also die Komponente key des Elements obj[a1] gegen das Element obj[a2], schreibt sich aber sowieso jeder seine banale Zwei-Zeilen-Sortierfunktion für sein Problem selbst:
local function compare( all, a1, a2 )
    return mw.ustring.upper( Sort.lex( all[ a1 ].s ) )  >
           mw.ustring.upper( Sort.lex( all[ a2 ].s ) )
end -- compare()
Tatsächlich kann es dann aber auch noch komplizierter werden, etwa weil die Situation abgefangen werden muss dass die Komponente .s nicht belegt wäre oder Zahlen auftreten könnten, ggf. in anderen Komponenten.
VG --PerfektesChaos 20:43, 2. Feb. 2021 (CET)Beantworten
Ach ja, um das Ganze zu beschleunigen, hatte ich auch schon für alle Elemente ein obj[x].sort einmalig vorab aus obj[x].key ermittelt, wodurch für jedes Element die string.upper( Sort.lex( obj[x].key ) ) nur einmalig ausgerechnet werden musste und dann immer nur die vereinfachte Komponente sort zu vergleichen war. Hat man dies nicht gemacht, dann wird bei jedem Vergleichsvorgang (der ja vielfach im Verlauf des Sortieralgorithmus vorkommt) der gesamte Runterbrechvorgang für beide Komponenten ausgeführt, also irgendwie Anzahl der Elemente zum Quadrat oft statt vorab einmalig Anzahl der Elemente oft.
VG --PerfektesChaos 20:52, 2. Feb. 2021 (CET)Beantworten
Danke, die Sort.lex hatte ich schon im Auge! Ich notiere mir das mal, wenn ich dann das nächste Mal dazu komme. Immerhin sind in meinem Testfall die möglichen Terme alle bekannt (deutsche Ländernamen), Zahlen oder sonstige Sonderzeichen kommen keine vor; das erleichtert die Sache. Gruß–XanonymusX (Diskussion) 00:10, 5. Feb. 2021 (CET)Beantworten
Dazu wäre es hilfreich im Hinterkopf zu haben, wie Sortieralgorithmen funktionieren.
  • Ein sehr plumper macht folgendes bei fünf Elementen:
    • Vergleiche 1. mit 2.
    • Vergleiche 1. mit 3.
    • Vergleiche 1. mit 4.
    • Vergleiche 1. mit 5.
    • Vergleiche 2. mit 3.
    • Vergleiche 2. mit 4.
    • Vergleiche 2. mit 5.
    • Vergleiche 3. mit 4.
    • Vergleiche 3. mit 5.
    • Vergleiche 4. mit 5.
  • Das sind zehn Vergleiche, und wenn im Inneren Sort.lex() für jedes verglichene Element aufgerufen werden soll, dann sind das 20 Aufrufe der doch ziemlich aufwändigen Funktion.
  • Beim typischen Fall n² sind es n(n-1) Zugriffe auf einen Sortierschlüssel und ansonsten so ähnlich mit Logarithmus.
  • Deshalb ist es besser, die 5 Sortierschlüssel vorab zu berechnen und die Vergleichsfunktion möglichst effizient zu halten.
  • Ähnlich mit Anschriften:
e = haus[ i ]
e.sort = string.format( "%s %4d",
                        mw.ustring.upper( Sort.lex( e.str ) ),
                        tonumber( e.nr ) or 0 )
VG --PerfektesChaos 17:45, 10. Feb. 2021 (CET)Beantworten
Wofür gibt es denn bewährte Algorithmen, wie Quicksort, etc? --Vollbracht (Diskussion) 07:01, 6. Jan. 2022 (CET)Beantworten

Modul zur automatischen Bestimmung der ISO-Region aus Wikidata geschrieben

[Quelltext bearbeiten]

Siehe [2] und Testdaten. Ich denke das als Verbesserung von {{Einbindung von Wikidata-Koordinate}}, um den 2. Parameter wegzubekommen. Um das Performanceargument zu entschärfen: Für jede Einbindung von {{Einbindung von Wikidata-Koordinate}} entsteht schon ein teurer Aufruf, da kommen dann im Schnitt 2-3 Aufrufe die administrative Hierarchie hinauf dazu. Mehrere Koordinaten in einem Artikel befinden sich allermeist in derselben administrativen Hierarchie. Ein Artikel hat ganz wenige Koordinaten, und es gibt die Performanceentspannung bei vielen Koordinaten, diese zu kopieren und nicht aus WD zu holen.

Was haltet ihr davon?

  • ich bin blank was die Einbindung solcher Funktion in die Modul-Systematik hier auf de:WP betrifft. Dafür bräuchte ich Anleitung oder Hilfe.
  • code review tut immer gut.

lg --Herzi Pinki (Diskussion) 14:32, 28. Jun. 2021 (CEST)Beantworten

Universeller Schleifenmodul

[Quelltext bearbeiten]

Kann jemand einen universellen LUA-Schleifenmodul programmieren, wo der Verarbeitungsblock mit "üblichen Vorlagen-Gebastel" an den Modul übergeben wird. Siehe hier unter "Anmerkungen" und den Vorschlägen von Benutzer:Cirdan. --Former111 (Diskussion) 12:31, 26. Okt. 2021 (CEST)Beantworten

  • Die Extension wird niemand aktivieren, weil sie in aller Regel durch Ersatz der gesamten Vorlage durch ein Lua-Modul seit 2013 geleistet werden könnte.
  • Menschen, die fremdes Lua pflegen könnten, haben wir extrem wenige, und die sind heillos überlastet. Menschen, die für eigene Zwecke Lua wartungsfähig und effizient schreiben könnten, haben wir weniger als zehn.
    • Menschen, die Vorlagenprogrammierung könnten, haben wir Hunderte, die mehr oder weniger gut auch fremder Leut Vorlagenprogrammierung pflegen können.
    • Wir vermeiden deshalb Lua, sofern es eine gleichwertige Lösung auch mittels Vorlagenprogrammierung gäbe.
  • Dein „Schleifenmodul“ wird nicht funktionieren, weil die Übergabe des Verarbeitungsblocks mit „üblichem Vorlagen-Gebastel“ im Allgemeinen schiefgehen wird.
  • Deinen Anwendungsfall lösen wir regelmäßig durch eine Untervorlage, typischerweise mit /core im Namen: Beispiele
    • Dann wird die Untervorlage, die den „Verarbeitungsblock“ enthält, in einer stupiden Sequenz halt zwölfmal eingebunden.
  • Erfahrungsgemäß dauert es über ein Jahr bei regelmäßiger Beschäftigung damit, bis nach Erlernen der Lua-Syntax ein erstes wartungsfähiges und effizientes Modul herauskommt. Bei mir ging es auch nicht schneller.
VG --PerfektesChaos 18:05, 26. Okt. 2021 (CEST)Beantworten
@PerfektesChaos: Vielen Dank für deine Info.
Das mit der festen Anzahl von Schleifen (PAP-Schreibweise "for 'monat' from 1 to 12 ...) einfach zwölfmal einbinden, hatte ich auch schon gefunden.
Mir fehlt eine Lösung für variable Anzahl der Schleifen mittels normaler Vorlagenprogrammierung (wie hier das zweite Beispiel unter "Anmerkungen", PAP-Schreibweise "for 'jahr' from 2010 to 'aktuellem jahr' ...). --Former111 (Diskussion) 13:20, 27. Okt. 2021 (CEST)Beantworten

Neues Modul zur Generierung von horizontalen und vertikalen Kartuschen

[Quelltext bearbeiten]

Als ich das Modul:SimpleStruct erstellt hatte, war mir noch nicht aufgefallen, dass es überhaupt diese spezielle Werkstatt mit ihren Hilfestellungen gibt. Ich war dann äußerst unfreundlich und mit bösen Unterstellungen angehauen worden, weil ich das als Einzelkämfer durchgezogen habe. Das möchte ich nicht wieder tun.

Im folgenden spezifiziere ich ein Modul:Hiero/Cartouche zur Erzeugung von Kartuschen. Dieses wird notwendig, da

  1. die bisherige Syntax zur Erzeugung von Kartuschen unflexibel ist und ein nicht ganz überzeugendes Ergebnis liefert. (Lücke in der Ecke)
  2. die bisherige Vorlage:Infobox Pharao mit ihrer 100 Parameter breiten Schnittstelle noch nicht alle notwendigen Darstellungsvarianten für Kartuschen abdeckt und in vielen Fällen ebenfalls unsaubere Kartuschen zeichnet. (teils noch mehr Lücken)
  3. die bisherige Vorlage:PharaoName noch keine vertikalen Kartuschen beherrscht und nun mit Lua in mehrerlei Hinsicht aufgebohrt werden soll.

Die Funktion der Sortierung der Pharaonamen nach immer gleicher Reihenfolge der Namenstypen soll ebenfalls in einem Lua-Modul realisiert werden, welches dann die draw-Funktion von Hiero/Cartouche aufruft. --Vollbracht (Diskussion) 00:41, 26. Dez. 2021 (CET)Beantworten

Das Modul wurde initial erstellt und aus meinem BNR heraus kopiert. Die Spezifikation und Entwurfsdokumentation wurde nach Wikipedia Diskussion:Lua/Modul/Hiero/Cartouche verschoben. --Vollbracht (Diskussion) 13:17, 29. Dez. 2021 (CET)Beantworten

Neues Modul zur Generierung von Tabellenzellen, -zellgruppen, -zeilen und -zeilengruppen mit Hieroglyphen

[Quelltext bearbeiten]

Wie in Wikipedia Diskussion:WikiProjekt Ägyptologie#Lua für Pharaonamen angekündigt, werde ich ein Modul:Hiero/Cell erstellen. Im Sinne einer möglichen Zusammenarbeit existiert eine Dokumentation für Spezifikation und Entwurf.

Nun bitte ich dort, bzw. in der zugehörigen Diskussionsseite um Empfehlungen und Anmerkungen.

(Änderung gegenüber dem Text von mir von 03:20, 31. Dez. 2021 (CET) wegen Verschiebung) --Vollbracht (Diskussion) 16:01, 1. Jan. 2022 (CET)Beantworten

Modul Modul:Benutzer:ElBe/Modul:WikidataIB

[Quelltext bearbeiten]

Hallo! Ich übersetze gerade das Modul und es gibt einige Lint-Errors. Einige habe ich mir schon angeguckt und entfernt, aber viele sind noch da (Diskussion dazu). Kann einer mir da helfen? --ElBe 1 | 2 | 3 | JWP 07:33, 27. Jan. 2022 (CET)Beantworten

Was ist das für ein Modul? Kennst Du Modul:Wikidata, wie hängen diese beiden Module zusammen? Nutzt Dein Modul die Core-Funktionen von Modul:Wikidata? Oder werden hier bestimmte Funktionalitäten redundant implementiert / programmiert? Das Modul:Wikidata könnte ja auch einige Zuneigung gebrauchen, auch hinsichtlich der Dokumentation. Ich denke, eine geplante Einführung / Produktivsetzung sollten wir vorher mal intensiv besprechen und koordinieren. Vielleicht ist auch das WikiProjekt Wikidata in Wikipedia dazu gut geeignet. Viele Grüße, Yellowcard (D.) 16:09, 27. Jan. 2022 (CET)Beantworten
OK, es reicht schon kurz über den Quelltext zu gehen um zu bemerken, dass es erhebliche Redundanzen zu Modul:Wikidata gibt. Das müssen wir irgendwie koordinieren, so macht das meines Erachtens nach relativ wenig Sinn. Dass so ein Modul nicht zentral erstellt und gepflegt wird, ist wirklich schade, ärgerlich und ressourcenverschwendend. Yellowcard (D.) 16:11, 27. Jan. 2022 (CET)Beantworten
Modul:Wikidata gilt glaub ich in den meisten Projekten als veraltet. Unter anderem en:Module:WikidataIB wird großflächig als Ersatz genutzt; das vorgestellte Modul scheint als Kopie aus enwiki herzukommen.
Hier in der deutschsprachigen Wikipedia haben wir uns allerdings weitgehend von der Wikidata-Nutzung abgekoppelt und lassen die entsprechenden Werkzeuge veralten, und ganz grundsätzlich ist auch die Modul-Programmierung wegen selbst auferlegter Überregulierung praktisch tot. —MisterSynergy (Diskussion) 23:31, 27. Jan. 2022 (CET)Beantworten
Bei uns wurde das Modul:Wikidata ja parallel teilweise weiterentwickelt und funktioniert stabil. Es hat aber offenbar nicht den Funktionsumfang des o.g. Moduls. Wie wollen wir damit umgehen? Ein zweites, paralleles Modul zu erstellen halte ich nicht für den sinnvollen Weg. Die Optimierungen, die bei uns den Weg ins Modul:Wikidata gefunden haben, nun zu ignorieren und auf Modul:WikidataIB umzustellen, auch nicht wirklich geschickt. Bin aber für jeden Ansatz, die Lua-Wikidata-Anbindung zu verbessern, sehr dankbar - man sollte sich nur entsprechend vorsichtig Gedanken machen, wie man es umseetzt, anstatt per (nicht böse gemeint) Hau-Ruck-Aktion ein Modul zu übersetzen und zu deployen. Das ist im Kampf gegen den Wildwuchs nicht förderlich. Was die Überregulierung angeht: Die Überregulierer machen um die Lua-Wikidata-Themen glücklicherweise einen Bogen. Viele Grüße, Yellowcard (D.) 09:59, 28. Jan. 2022 (CET)Beantworten

Auf (Modul Diskussion:Benutzer:ElBe/Modul:WikidataIB/testing) werden einige der Funktionen getestet und im Kapitel "get Value for dates" wird 14 mal der selbe Fehler ausgeworfen. Vielleicht reicht es aus den Aufruf der Funktion dort auszukommentieten. Das wäre zumindest eine kurzfristige Lösung, den Code zu reparieren, ginge dann später. Oder liege ich falsch und die Lint-Fehler zeigen etwas anderes an? --Goldzahn (Diskussion) 04:35, 28. Jan. 2022 (CET)Beantworten

Okay, ich versuche mal die Tipps umzusetzen. Danke! --ElBe 1 | 2 | 3 | JWP 08:34, 28. Jan. 2022 (CET)Beantworten
Das scheint es nicht zu sein. Die Fehlermeldung könnte sich auf das hier beziehen: Hilfe:Wikisyntax/Validierung#Fehlendes_End-Tag. Ich schau mal ob ich das finde. Die "Zusätzliche Information" müsste eigentlich sagen welches tag da fehlt. Aber "i" sagt mir nichts. "div", "tr" und "td" schon. --Goldzahn (Diskussion) 09:43, 28. Jan. 2022 (CET)Beantworten
  • in Zeile 2609 heißt es :
  • out[i] = "<tr><td>" .. col1 .. table.concat(qvals[i], "</td><td>") .. "</td></tr>"
  • eventuell sollte es heißen
  • out[i] = "<tr/><td/>" .. col1 .. table.concat(qvals[i], "</td><td/>") .. "</td></tr>"
  • und in Zeile 2558 statt
  • col1 = col1 .. "</td><td>"
  • col1 = col1 .. "</td><td/>"
  • Das sind aber nur 4 mögliche Fehler
  • vielleicht heißt "i" inline?
  • aufgefallen ist mir Zeile 844. Da heißt es:
  • icon = icon .. "|" .. i18n["editonwikidata"] .. "]]</span>"
  • Mir fehlt in dieser Funktion das öffnende span/ --Goldzahn (Diskussion) 10:06, 28. Jan. 2022 (CET)Beantworten
    Es könnte auch sein, das das i aus der for Schleife als Tag interpretiert wird. --ElBe 1 | 2 | 3 | JWP 10:34, 28. Jan. 2022 (CET)Beantworten
Im Hilfe-Text habe ich gesehen, dass ein öffnenden tag ohne den Schrägstrich geschrieben wird. Ist vielleicht eine neuere Entwicklung? Dann ist eigentlich unwahrscheinlich, dass tr und td da Probleme machen, wo ich das vermutet habe. Bleibt eigentlich nur noch die brutalo-Methode: Die Hälfte der Funktionen löschen und schauen ob es weniger Fehler gibt. Wenn ja, wieder welche rein nehmen und gucken ob es mehr Fehler gibt. Usw. Auf diese Weise findet man früher oder später die Fehlerstellen. --Goldzahn (Diskussion) 12:30, 28. Jan. 2022 (CET)Beantworten
Das ganz klassische HTML von anno Zwieback lief schon in der Struktur <table><th><td></td></th></table>. --Yellowcard (D.) 21:09, 28. Jan. 2022 (CET)Beantworten
<verschämt wegducken>. --Goldzahn (Diskussion) 01:30, 29. Jan. 2022 (CET)Beantworten

Ich wollte mir den Code gerade ansehen und da sehe ich, dass keine Lint-Fehler mehr angezeigt werden. Eine echte Korrektur im Modul scheint es aber gar nicht gegeben zu haben. Vielleicht war das doch der edit auf der /testing-Seite? Ich habe mir die Funktion getValue angesehen - die jetzt nicht mehr aufgerufen wird - und auf dem ersten Blick kann ich keinen Fehler sehen. Sollte der Fehler durch diese Funktion entstehen, muss man da genauer hinsehen. Falls gewünscht, kann ich das machen. Ich empfehle, wenn der Lint-Fehler nicht morgen oder übermorgen von alleine wieder da ist - die Änderung der /testing-Seite zurück zu setzen und schauen ob daraufhin die Fehlermeldung wieder erscheint. In dem Fall ist bewiesen, dass da die Fehlerursache ist. --Goldzahn (Diskussion) 01:30, 29. Jan. 2022 (CET)Beantworten

PS: die Seite Modul:Benutzer:ElBe/Modul:WikidataIB/Doku gibt für die Funktion getQualifierValue einen Lua-Fehler aus: "Lua-Fehler in Modul:Benutzer:ElBe/Modul:WikidataIB, Zeile 422: attempt to index local 'fdate' (a nil value)". Hängt vielleicht mit der Funktion getValue zusammen, zumindest legen das die Funktionsnamen nahe. --Goldzahn (Diskussion) 01:39, 29. Jan. 2022 (CET)Beantworten
Das skann sein. Allerdings habe ich als Person der Lua relativ fremd ist keine Lust den Code zu durchsuchen, irgendwelche Fehler zu finden, die ich nicht verstehe und sowieso eigentlich nur übersetzen wollen. Das i-Tag erinnert mich an das <i>Text</i>-Tag aus HTML. <i>Text</i> enspricht dem ''Text''. Wahrscheinlich denkt die Lintfehler-Seite nicht in Wikisyntax sondern in HTML. --ElBe 1 | 2 | 3 | JWP 09:40, 31. Jan. 2022 (CET)Beantworten
Ich habe mir erst mal den von mir 2 weiter oben angegebenen Fehler angesehen. Im Modul, in Zeile 418 steht "cdate = require("Module:Complex date")._complex_date". Nun, "Module" ist der englische Begriff, bei uns heißt das "Modul". Das heißt, wenn ein Modul im Code aufgerufen werden soll, wird es nicht gefunden, da das bei uns zB "Modul:Complex date" heißen würde. Habe dann im Code nach weiteren "Module" gesucht und in Zeile 96 "Module:i18n" und "Module:WikidataIB/i18n" gefunden. Dann in Zeile 106 "Module:WikidataIB/nolinks", Zeile 116 "Module:WikidataIB/titleformats", Zeile 418 "Module:Complex date", Zeile 2446 "Module:WikidataIB/subs". Keine Ahnung ob es diese Module bei uns gibt und ob sie ähnlich funktionieren, aber "Module" sollte auf jeden Fall in "Modul" geändert werden. --Goldzahn (Diskussion) 12:24, 31. Jan. 2022 (CET)Beantworten
  • i
    • Richtig, ist das Kürzel für wikt:en:italic, was sich heißt: „kursiv“.
    • Siehe Hilfe:Textgestaltung/HTML, zweite Zeile der Tabelle.
    • In einem ersten Schritt wandelt der Parser die Wikisyntax in HTML um. Erst danach analysiert der Linter die HTML-Struktur.
  • Seit Mitte der 2010er Jahre arbeiten robuste Luaner mit der seit diesem Zeitpunkt verfügbaren mw.html.
    • Es ist unmöglich, damit Linter-Fehler zu machen.
    • Es programmiert sich damit äußerst komfortabel und wartungsfreundlich.
    • Es lassen sich nachträglich Klassen und Stile und weitere Texte und HTML-Elemente den zu Beginn erstmal definierten Elementen hinzufügen, wenn die spätere Programmlogik es erfordert.
    • Erst mit Ende eines Verarbeitungsschritts wird der HTML-Teilbaum dann in eine lineare Zeichenkette gewandelt.
    • Modul:TemplateData macht sehr viel mit Tabellensyntax, aber es gibt nirgendwo in der Generierung des regulären Ergebnisses ein < und auch kein {|.
    • Ein Lua-Modukl, das unbalancierte '' verwendet, oder mit öffnenden und schließenden HTML-Tags <td> und </td> hantiert, ist nicht Stand der Technik der 2010er Jahre und taugt nicht als globales Vorbild.
    • Wobei '' in Lua-Quellcode auch eine Notation der leeren Zeichenkette ist, während die aus C stammende Sprache eher "" schreiben würde. Macht die Suche nach unvollständig zusammengehörenden '' auch nicht grad einfacher. Im vorliegenden Code gehen beide Notationen bunt und konfus durcheinander.
  • Ein Modul, in dem „Texte übersetzt“ werden müssen, taugt nicht als Modul außerhalb des eigenen Wikis.
    • Seit einem halben Jahrhundert folgt man dem Konzept der Trennung von Programm und Daten.
    • Heißt: Es gibt eine Programmierungseinheit, die nur Algorithmen und Prozeduren und Strukturen enthält, und eine Konfigurationseinheit oder deren mehrere, die Anpassungen an menschliche Sprachen sowie an Anwendungskontexte – etwa die Vorlagen eines einzelnen Wikis oder die Namen von Wartungskategorien – enthalten würde.
    • Eine Programmierung darf niemals (von Defaults abgesehen) die wirksamen Texte und Konfigurationen und Anpassungen an die momentane Anwendung enthalten.
      • Ändert sich die Mutterversion, etwa Bugfixe oder Verbesserungen oder neue Funktionalitäten, dann kann eine neue Version an alle Töchter verteilt werden oder wird global wirksam, während die lokalen Konfigurationen unverändert das Verhalten anpassen.
      • Andernfalls müsste jede Veränderung der Mutterversion in allen davon abgeleiteten Klonen separat eingepflegt werden.
    • Beispiele:
    • Neben der robusten Verteilung auf andere Wikis sind nach diesem Konzept gestaltete Umsetzungen auch innerhalb des eigenen Wikis sehr viel einfacher zu pflegen und stabiler programmiert.
    • Was hier im Entstehen begriffen ist, das nennt sich „Fork“, und das ist eine Situation, die man soweit irgend möglich zu vermeiden versucht.
  • Eine globale Lua-Unterstützung über die Bibliothek der Basisfunktionen mw.wikibase hinaus muss aus einer global einheitlichen Schnittstellenbeschreibung bestehen.
    • Diese Schnittstellenbeschreibung definiert Mindestanforderungen,
      • genau welche Funktionen
      • mit welcher Wirkung
      • mit genau welchen Parametern welchen Werteformats
      • mit welchem Ergebnis unterstützt werden müssen.
    • Wie das effizient und robust implementiert wird, mag sich von Wiki zu Wiki unterscheiden. Es ist dann aber austauschbar und mag evolutionär zur robustesten Lösung pro Funktion konvergieren.
    • Bestimmte Funktionen können nur lokal sein, etwa eine den lokalen Zitationsregeln entsprechende Formatierung von Belegen in Büchern oder als Internetquelle. Hier ist an lokale Plug-Ins zu denken.
    • Lokale Erweiterungen aller Art, die benötigt werden, aber auf die sich die 500 anderen Wikis noch nicht für die globale Schnittstelle geeinigt hatten, müssen darüberhinaus möglich sein.
    • So würden Überregulierer vorgehen, aber die Underperformer haben offenkundig andere Konzepte, oder gar keine = instabile Bastelarbeiten.
  • Englischprachige (genauer: „generische“) Syntaxelemente können in jedem Wiki aller Sprachen verwendet werden; siehe auch H:NR #Details, zweite Spalte.

VG --PerfektesChaos 17:21, 31. Jan. 2022 (CET)Beantworten

Ich komme zurück auf meinen Text weiter oben. Es gibt einige angeforderte Module, die optional sind. Bei einigen Modulen bin ich mir nicht sicher. So wird bsw ein "Module:WikidataIB/subs" geladen und auch benutzt, aber das gibt es gar nicht in der enWP. Ja, und dann ist da noch das "en:Module:Complex date". Das braucht es unbedingt, aber dieses Modul ruft weitere Module auf, die weitere Module aufrufen, die ...., die es alle bei uns nicht gibt. Ist aber ein wirklich interesanntes Modul, genau wie die anderen dort aufgerufenen Module. Jemand müsste entscheiden ob wir die alle haben wollen. Module:Complex date kommt von commons:Module:Complex date. --Goldzahn (Diskussion) 20:26, 1. Feb. 2022 (CET)Beantworten

Wie kann eine Datenbankabfrage verarbeitet werden?

[Quelltext bearbeiten]

Die Informationen zu den Einträgen vieler Pharaonen in der Königsliste von Saqqara sind in Wikidata auf die Pharaonen verteilt. Die Erstellung einer WP-Tabelle (mit Hieroglyphen und Formatierungen) auf Basis der Wikidata-Einträge wird zu teuer. Es ist jedoch leicht, eine Datenbankabfrage zu formulieren, die alle erforderlichen Daten auf einen Rutsch bereitstellt. Wie kann ich auf die in Lua zugreifen?

Fürs erste habe ich ein Modul erstellt (Wikipedia:Lua/Modul/Hiero/Saqqara, noch in Bearbeitung), auf das ich statt dessen zugreifen kann. Die Abfragen, die ich verwenden wollen würde sind in dessen Doku aufgeführt. Eigentlich möchte ich dieses Modul aber lieber durch allgemeinere Funktionen ersetzen, mit denen ich entsprechende formatierte Tabellen für alle denkbaren Königslisten erstellen kann. Was schlagt Ihr vor? --Vollbracht (Diskussion) 16:00, 15. Mär. 2022 (CET)Beantworten

Meines Wissens ist das leider nicht möglich. --Yellowcard (D.) 20:14, 15. Mär. 2022 (CET)Beantworten
Korrekt, eine Abfrage aus Lua heraus ist nicht möglich.
Üblicherweise erledigt man das mit dem User:ListeriaBot, aber aus irgendeinem Grund arbeitet der in der deutschsprachigen Wikipedia nicht im Hauptnamensraum. Man könnte wohl eine Listeria-Liste im Vorlagennamensraum anlegen und diese Vorlage dann im Hauptnamensraum einbinden. Inwiefern da jemand kommt und das zu unterbinden versuchen wird, kann ich gerade nicht abschätzen. —MisterSynergy (Diskussion) 22:18, 15. Mär. 2022 (CET)Beantworten
Wer sollte angesprochen werden, damit das in absehbarer Zukunft mal möglich wird? --Vollbracht (Diskussion) 22:49, 15. Mär. 2022 (CET)Beantworten
Relevante Diskussionen:
Das sind Vorgänge, die sechs und mehr Jahre zurückliegen. Der Botbetreiber wurde damals recht massiv dazu gedrängt, das Teil hier nicht im ANR zu betreiben, weil das nicht erwünscht sei oder es zumindest erstmal zu klären wäre, ob das erwünscht ist. Ich glaube nicht, dass jemand spezifisches hier anzusprechen ist; wenn Du die Fürsprecher der ANR-Sperre von damals ansprichst, werden sie vermutlich ein Meinungsbild einfordern. —MisterSynergy (Diskussion) 00:49, 16. Mär. 2022 (CET)Beantworten
Oh, nein, nicht den Bot im ANR einsetzen, sondern die Abfrage in Lua verfügbar machen, sodass Infos aus Wikidata aggregiert und formatiert werden können ist mein Ziel. Auch dafür müsste doch jemand Ansprechpartner sein. --Vollbracht (Diskussion) 02:54, 16. Mär. 2022 (CET)Beantworten
Das wird immer mal diskutiert, aber erscheint nicht wirklich machbar zu sein. In phab:T167521#3339086 von vor fast 5 Jahren habe ich von der Wikidata-Produktmanagerin eine Art Absage bekommen :-)
Tatsächlich ist es schwierig, auf diese Weise durchgeführte Datennutzung zu tracken. Bei herkömmlichem Datenbezug (mit Parserfunktionen oder Lua) wird die Nutzung protokolliert, so dass Änderungen genutzter Daten bei Wikidata auch ein Update des Caches der nutzenden Seite im Wikibase-Clienten (i.e. der Wikipedia) triggern. Das wäre bei einer Abfrage erheblich schwieriger und vor allem mit enormem Ressourcenaufwand verbunden. —MisterSynergy (Diskussion) 09:38, 16. Mär. 2022 (CET)Beantworten
Ein weiterer Punkt: SPARQL-Abfragen sind teilweise sehr zeitintensiv, zumindest über die Browser-Schnittstelle. Sie laufen oft einige Sekunden, nicht selten timen sie nach einer Minute auch aus. Eine Wikipedia-Seite könnte ja kaum so lange auf die Antwort warten. Ohne technische Kenntnisse fielen mir da mögliche Lösungsmöglichkeiten ein (z.B. könnte man die Abfrage an einer Zwischenplattform hinterlegen, erhielte eine ID und das Lua-Modul gäbe nur die ID an, als Ergebnisse kämen dann vorab gecachte Daten), ich weiß aber nicht, ob soetwas überhaupt jemals realistisch ist.
Ein guter Schritt jedenfalls wäre ein sauber und professionell und global programmiertes und gemanagtes Modul:Wikidata. Dann ließe sich auch die Anzahl notwendiger teurer Funktionen reduzieren und ggf. auch die Limits erhöhen, vielleicht sind statt 500 ja auch 5000 möglich. --Yellowcard (D.) 10:00, 16. Mär. 2022 (CET)Beantworten

Die drei Tabellen waren in der Weise synchronisiert, dass alle Jahre jeweils genau untereinander standen, wenn die Tabellen gleichzeitig in einen Artikel aufgenommen werden. Die erste Spalte war also jeweils gleich lang. Irgen eine Änderung, die ich nicht verstehe führt jetzt dazu, dass die "Monumente"-Tabelle nicht mehr synchron zu den beiden anderen ist, weil bei diesen die erste Spalte verkürzt wurde. Der Effekt ist unschön, vgl. Jasha Sütterlin#Wichtige_Platzierungen. Kann man das fixen? Vielen Dank im Voraus!-- RikVII. my2cts  21:38, 15. Sep. 2022 (CEST)Beantworten

Bitte auf WD:Lua/Modul/Radsportplatzierungen vortragen.
Dann bleibt dort auch die Erörterung beisammen.
@Hgzh: z. K.
Diese Werkstatt ist mehr für Fragen zur Lua-Programmierung gedacht, also wie bestimmte Lua-Programmzeilen und Ausdrücke zu gestalten sind. Darum geht es dir aber offenkundig nicht.
VG --PerfektesChaos 08:29, 16. Sep. 2022 (CEST)Beantworten

Zugriff auf ausgewählte externe XML-Daten

[Quelltext bearbeiten]

Wohin müsste der Wunsch gerichtet werden, den Zugriff auf eine externe XML-Datenbank via LUA-Modul zu ermöglichen?

Ich wünsche mir ein Modul:DNB das folgende Spezifikationen erfüllt:

  • Es sollte auf eine einzige Quelle zugreifen können: d-nb.info/<DNB-Nr.>/about/marcxml
  • Es sollte von anderen LUA-Moduln eingebunden werden können.
  • Es sollte eine Funktion data enthalten, die
    • als einzigen Parameter eine DNB-Nummer aufnimmt und
    • als Rückgabewert eine LUA-Datenstruktur gemäß Machine-Readable Cataloging mit allen, oder ausgewählten Informationen anbietet.
  • Es sollte von Vorlagen eingebunden werden können.
  • Es sollte eine Funktion Literatur enthalten, die
    • als einzigen Parameter eine DNB-Nummer aufnimmt und
    • als Rückgabewert eine richtig formatierte Literaturangabe
      • mit allen relevanten und in der DNB verfügbaren Meta-Infos und
      • mit ID (#<DNB-Nr.> als Linkziel) anbietet.
  • Es sollte eine Funktion EN, oder Einzelnachweis enthalten, die
    • als Parameter obligatorisch einen Aufrufkontext aufnimmt,
    • als Parameter obligatorisch eine DNB-Nummer aufnimmt,
    • als optionalen Parameter einen Schalter short, oder kurz aufnimmt,
    • als Rückgabewert eine für einen Einzelnachweis richtig formatierte Literaturangabe
      • in Kurzform mit Link auf #<DNB-Nr.> (und im Tooltip die Angaben dort), oder
      • in Langform mit allen relevanten und in der DNB verfügbaren Meta-Infos anbietet.

Diese Spezifikationen sollten bereits in jeder Beziehung den Wunsch nach wiederverwendbaren Literaturangaben berücksichtigen, der von einer Mehrheit der hiesigen Wikipedianer geäußert wurde. --Vollbracht (Diskussion) 01:30, 18. Sep. 2022 (CEST)Beantworten

@Vollbracht: Du könntest dich dafür einsetzen, dass die MediaWiki-Erweiterung External Data aktiviert wird; es wird aber vermutlich Sicherheitsbedenken geben. Die englische Wikipedia versucht mit der Vorlage Cite Q, Einzelnachweise aus bibliografischen Daten in Wikidata zu erzeugen. Mit Citoid kann man schon jetzt schnell und einfach statische Belege generieren; das Heraussuchen der DNB-Nummer stelle ich mir umständlicher vor. --Dexxor (Diskussion) 08:31, 18. Sep. 2022 (CEST)Beantworten
  • External Data: Wenn hier eine Auswahl von Servern ausdrücklich freigegeben werden könnte, wäre das gut. Alle Server freizugeben halte ich für riskant und unrealistisch.
  • Wikimedia Extensions allgemein: Mich interessieren keine Erweiterungen. Jedes Wiki muss von jedem Leser vollständig angezeigt werden können.
  • Cite Q: Wenn die Daten bereits auf einem Server vorliegen, sollten sie nicht nach Wikidata repliziert werden müssen. Das ist nichtsdestotrotz eine Lösung, die ich in Einzelfällen adaptieren könnte.
Eine DNB-Nummer herauszusuchen stellt kein Problem dar. Dafür ist OPAC da. Auf Dauer sollte es auch Möglich sein, irgendwann mit einer ISBN auf d-nb.info - XML-Daten zugreifen zu können. Das wird aber sicher noch 10 Jahre dauern. --Vollbracht (Diskussion) 10:52, 18. Sep. 2022 (CEST)Beantworten

Skriptfehler auf Benutzerseite

[Quelltext bearbeiten]

Wie kann ich mir das Auftreten von Skriptfehlern auf einer gegebenen Benutzerseite (Benutzer:Vollbracht/fehlerhaft) anzeigen lassen? Hintergrund: Um einen Fehler in einem Artikel zu finden, würde ich mir gerne Teile des Artikels in diese Seite kopieren und prüfen, ob der Fehler innerhalb dieses Teils besteht. --Vollbracht (Diskussion) 06:51, 30. Okt. 2022 (CET)Beantworten

Sind das nicht einfach zu viele Vorlageneinbindungen? Die Kategorie wird bereits in der Vorschau verwendet, du kannst also im Originalartikel Einbindungen entfernen und in der Vorschau schauen ob das Problem noch besteht. --mfb (Diskussion) 12:03, 30. Okt. 2022 (CET)Beantworten
Das sind viel zuviele Expensive functions. Es sind auch mehr als 506, denn der Parser hört da einfach mit zählen auf. Diese werden fast immer durch die in diversen Vorlagen enthaltenen schrottigen Wikidata-Aufrufe verursacht, hier wohl in Vorlage:IMDb. Abhilfe: Seite aufteilen oder die Hälfte löschen. ÅñŧóñŜûŝî (Ð) 13:30, 30. Okt. 2022 (CET)Beantworten
Das war jetzt die eine Seite. Aber ich möchte gerne auch andere Seiten auf diese Weise prüfen können.
Das Problem auf der Charts-Liste habe ich offensichtlich behoben. Tatsächlich, aber mir völlig unverständlicherweise hat die Vorlage:PersonZelle einen mw.wikibase.getEntity-Aufruf. --Vollbracht (Diskussion) 17:15, 30. Okt. 2022 (CET)Beantworten
Bitte verwende Vorlage:Temporärkopie zur Kennzeichnung solcher Kopien, sonst ist das ein Lizenzverstoß. Aber ja, vor allem ist auf dieser Seite die IMDb-Vorlage falsch im Einsatz, würde sie mit dem Parameter Abruf genutzt, sollte sich der Aufwand nochmal verringern lassen. --XanonymusX (Diskussion) 17:36, 30. Okt. 2022 (CET)Beantworten
[Quelltext bearbeiten]

Hallo zusammen:) Ich möchte Wikipedia:Technik/Linkbox einen Eintrag hinzufügen, wie geht das? Liebe Grüße,--Vergänglichkeit (Diskussion) 06:31, 29. Nov. 2022 (CET)Beantworten

Erklär mir bitte, was du vorhast, und wenn es konveniert würde ich es umsetzen.
Allerdings generiert sie sich vollautomatisch monatlich botgestützt aus den tatsächlichen Seiten, am Monatsersten.
Links auf nicht existierende Seiten braucht es nicht, alles was sie soll macht sie, was denn bloß noch für ein Link?
VG --PerfektesChaos 09:39, 29. Nov. 2022 (CET)Beantworten
Aber aus welchen Seiten? Es wäre gut, wenn das in der Doku kurz mitvermerkt ist, da es nicht intuitiv ist: Die Unterseiten sind es nämlich nicht, da Wikipedia:Projektneuheiten ja auch verlinkt ist. Liebe Grüße,--Vergänglichkeit (Diskussion) 10:25, 29. Nov. 2022 (CET)Beantworten
„Aber aus welchen Seiten?“
Guck dir mal Wikipedia:Technik/Text/Reader/WikiTaxi/Skripte und ihren Quelltext an. Da ist dieselbe Linkbox auch eingebunden.
„da Wikipedia:Projektneuheiten ja auch verlinkt ist“ – das ist eine ganz besonders konfigurierte Ausnahme. Weitere erforderliche Ausnahmen sind mir nicht bekannt.
Unten auf Wikipedia:Technik/Linkbox ist Wikipedia:Lua/Modul/PageTree #path verlinkt, und von dort werden alle weiteren Fragen dokumentiert.
Der Maintainer dieser Linkbox bin ich, und ich bin auch der Autor von 90 % aller verlinkter Seiten. Wenn es Inhaltliches gibt, kümmere ich mich dann schon persönlich zu gegebener Zeit darum.
Du hast immer noch nicht meine Rückfrage beantwortet, welches geheimnisvolle Link du irgendwo hineinzubauen begehrst.
Wie an 06:31, 29. Nov. versus 09:39, 29. Nov. ablesbar ist, lese ich hier mit. Es ist deshalb äußerst überflüssig, mich zusätzlich noch extra anzupingen und mir rote Alarmierungen zu senden.
VG --PerfektesChaos 10:46, 29. Nov. 2022 (CET)Beantworten
Vielen Dank! Schaue ich mir nachher an.
Über solche ominösen Alarmierungen hat sich schonmal jemand beschwert, ich löse da aber nichts bewusst aus. Vielleicht liegt es an einer Einstellung? Du scheinst dich mit der Technik sehr gut auszukennen, wie schalte ich das ab? Liebe Grüße,--Vergänglichkeit (Diskussion) 11:01, 29. Nov. 2022 (CET)Beantworten
  • „Erklär mir bitte, was du vorhast“ – „was denn bloß noch für ein Link“ – „Du hast immer noch nicht meine Rückfrage beantwortet, welches geheimnisvolle Link du irgendwo hineinzubauen begehrst“ – ich beantworte alle deine Fragen schnellstmöglich und umfassend. Höflich wäre es, auch umgekehrt so zu verfahren.
  • „ich löse da aber nichts bewusst aus“ – Hmm, ich sehe jetzt weder im Quelltext noch im Bearbeitungskommentar die erforderliche Verlinkung. Vielleicht irgendwie ein Antwort-Werkzeug, aber gemäß Markierungen hättest du keins benutzt. Oder irgendwie hingst du zu dicht an meiner Signatur.

VG --PerfektesChaos 17:29, 29. Nov. 2022 (CET)Beantworten

Ich bitte um Entschuldigung. Meines Erachtens fehlen die Bots.
Ah! Das kann gut sein. Ich benutze kein Antwort-Werkzeug; Der fehlende Abstand ist wohl das einzige, was ich anders mache als andere. Habe diesmal eine Leerzeile eingebaut, wurdest Du dennoch angepingt? Liebe Grüße,--Vergänglichkeit (Diskussion) 18:18, 29. Nov. 2022 (CET)Beantworten
Die Bots sind keine Software-Dokumentation, sondern eine auf Basis einzelner Benutzer organisierte Kooperation, eine Art Wikiprojekt.
Auch die WP:BA ist eine ganz normale Forumsseite für untechnisch herangetragene Wünsche von Autoren und keine Anfrageseite zu technischen Problemlösungen wie die WP:TWS.
Grundsätzlich stellt die Linkbox eine Navigation zu allen Unterseiten von WP:Technik dar, mit Ausnahme der „Projektneuheiten“ und einer Handvoll Überreste, die vor deren Etablierung bereits existierten, und bei denen eine Verschiebung in den Technik-Baum derzeit nicht auf der Agenda steht.
VG --PerfektesChaos 18:28, 29. Nov. 2022 (CET)Beantworten
Wikipedia:Technik enthält ja aber nicht nur Software-Dokumentationen, sondern auch Werkzeuge, siehe erster Satz sowie Gliederungspunkt 4. Alle dort aufgezählten Werkzeuge 4.1 – 4.3 haben auch einen Link, nur die Bots (4.4) nicht. Da sollte Einheitlichkeit hergestellt werden. Liebe Grüße,--Vergänglichkeit (Diskussion) 18:43, 29. Nov. 2022 (CET)Beantworten
Moin Moin Vergänglichkeit, also, ich habe soweit verstanden, dass du einen weiteren Link in die "Infobox" auf der Seite Wikipedia:Technik/Linkbox ergänzen möchtest. Sehe ich das richtig? Dann wäre es schön, wenn du uns kurz erzählst, welchen Link und welchen Hintergrund das hat. Dann würde mehr Sinn glaube ich entstehen. mfg --Crazy1880 19:28, 29. Nov. 2022 (CET)Beantworten
Hallo! Ja, Wikipedia:Bots, zur Begründung siehe meinen Beitrag genau über deinem. Liebe Grüße,--Vergänglichkeit (Diskussion) 19:37, 29. Nov. 2022 (CET)Beantworten
Der Seite Wikipedia:Bots fehlt aber jeglicher Technik-Bezug, und dort hat es auch nichts mit Programmierung und Dokumentation von irgendwas zu tun.
Grund ist, dsss die Programmierung der Bots Privatangelegenheit der jeweiligen Botbetreiber ist. Es gibt Hunderte und Tausende von Möglichkeiten, sowas umzusetzen. Wir kennen auch nur von den wenigsten Bots den Quellcode, obwohl einige ihn wohl auf GIT offengelegt haben. Es ist aber auch völlig egal, weil niemand wäre befugt das zu ändern.
Die Seite Wikipedia:Bots bietet auch keinerlei Werkzeug an, das jemand benutzen könnte und dessen Funktion zu dokumentieren wäre. Es ist einfach eine projektorganisatorische Angelegenheit.
Die Haupt-Linkbox, die auf jeder Technik-Seite aufgelistet wird, soll so kurz und übersichtlich wie irgend möglich sein, und sie soll prinzipiell eigentlich ausschließlich Unterseiten von WP:Technik navigieren und nichts sonst.
  • Nur weil WP:NEU noch ein historisches Überbleibsel ist, aber genauso auf WP:Technik/Neuheiten verschoben werden könnte und dort auch gut hinpassen würde, ist es dort aufgenommen.
  • Gleiches gilt für einige andere sehr alte Seiten, die noch unter ihrem überkommenem Namen verbleiben, weil sie immer schon so hießen.
Die Seiten zu Technik dokumentieren Software-Angelegenheiten, bei denen es darum geht, selbst eine Software zu erstellen, oder eine Software zur Benutzung anzubieten und hierfür zu dokumentieren, oder sich über Probleme mit derartiger Software auszutauschen.
  • „Diese Projektseite gibt einen Zugang zu technischen Hintergrundinformationen, etwa zur Programmierung in diesem Wiki-Projekt, sowie zu zusätzlichen Werkzeugen.“
Nichts davon trifft auf WP:Bots zu; das ist eine rein untechnische Koordinierungsseite von Aufgaben und richtlinienähnlichen Spielregeln.
Dass für Ratsuchende auf Wikipedia:Technik auch noch als Service Hinweise auf WP:Helferlein, WP:Bots und WP:Verbesserungsvorschläge/Feature-Requests verlinkt, erzwingt noch lange nicht, dass in 154 einbindenden Seiten das Hauptmenü mit unzuständigen Details out of scope aufgebläht werden müsste; auch nicht um irgendeiner heute vom Himmel gefallenen „Einheitlichkeit“ ohne inhaltlichen Zusammenhang willen.
VG --PerfektesChaos 22:00, 29. Nov. 2022 (CET)Beantworten

Mangelhafte Module

[Quelltext bearbeiten]

Wie schauts mit mangelhaften Modulen aus, kann man die zur Löschung vorschlagen, wenn man meint, dass bereits bestehende die Funktionalität viel besser abdecken und neu geschriebene in ihrer Qualität als nicht verbesserungswürdig eingestuft werden? --ɱ 08:10, 2. Feb. 2023 (CET)Beantworten

Einen begründeten Löschantrag kann man auf jede Seite stellen, da würde ich Module nicht von ausnehmen. -- hgzh 08:43, 2. Feb. 2023 (CET)Beantworten
Ergänzend dazu: Wie bei Vorlagen auch muss halt sichergestellt werden, dass sie nicht im Einsatz sind. Wenn sie gerade erst geschrieben wurden, könnte es überdies sein, dass ihr Einsatz zeitnah erfolgen soll. In dem Fall mit dem Entwickler darüber reden, welche besseren Alternativen er vielleicht nutzen sollte. --Vollbracht (Diskussion) 19:55, 2. Feb. 2023 (CET)Beantworten
Hier sollte aber sehr zurückhaltend vorgegangen werden. Module erfordern viel mehr Arbeit als einfache Vorlagen. Es sollte schon wirklich unbrauchbar sein, bevor man das löscht. ÅñŧóñŜûŝî (Ð) 21:57, 2. Feb. 2023 (CET)Beantworten

Aufwändige getEntity in DateTime

[Quelltext bearbeiten]

Im Modul:DateTime befindet sich ein Aufruf von mw.wikibase.getEntity( suited ) in der Funktion Prototypes.failsafe( self, atleast ). Ich vermute, das lässt sich sehr gut vermeiden. Durch häufige Aufrufe des Moduls innerhalb einzelner Vorlagen und häufiger Aufrufe dieser Vorlagen innerhalb einzelner Seiten kommt es zu Fehlern. betroffene Vorlagen sind Vorlage:cite journal, Vorlage:cite web, Vorlage:Internetquelle und vermutlich noch einige weitere. --Vollbracht (Diskussion) 04:59, 3. Feb. 2023 (CET)Beantworten

Du hast den Sinn der Failsafe-Schnittstelle überhaupt nicht begriffen. Sie synchronisiert Code-Versionen zwischen Wikis.
In diesem Wiki hier kommt der Funktionsaufruf nur auf fünf oder vielleicht auch sechs Seiten vor:
  1. Modul:DateTime im Kopf der Seite
  2. Wikipedia:Lua/Modul/DateTime #failsafe
  3. Wikipedia:Lua/Modul/DateTime/de #failsafe
  4. Wikipedia:Lua/Modul/DateTime/en #failsafe
  5. Wikipedia:Lua/Modul/DateTime/Test usw. im Moment grad nicht; anderswo schon.
Mit einer einzelnen Datumsformatierung hat diese Funktion überhaupt nichts zu tun; deine Darlegungen sind gegenstandslos.
Deine Behauptung, diese Funktion würde Fehler verursachen bei den von dir aufgezählten Vorlagen, ist blanker Unsinn.
  • Es müsste bei „In dieser Seite verwendete Wikidata-Objekte“ Q20652535 und darin P348 aufgelistet sein; das ist mit allergrößter Sicherheit nirgendwo der Fall.
  • Du sollst nicht falsch Zeugnis ablegen wider die Module deines Nächsten.
VG --PerfektesChaos 13:17, 3. Feb. 2023 (CET)Beantworten
Bitte gewöhne Dir ab, von "blanker Unsinn" und "Du hast [..] überhaupt nicht begriffen." zu schreiben. Das ist nicht in Ordnung und führt ggf. zu Meldungen. Deine Formulierung, "Du sollst nicht falsch Zeugnis ablegen wider die Module deines Nächsten." finde ich klasse. Ich darf Dich darauf hinweisen, dass die Aufrufe von mw.wikibase.getEntity mit Parameter (aufwändig) tatsächlich stattfinden. Und daher bitte ich Dich, das selbst zu ändern, oder uns zu erklären, wo diese Aufrufe stattfinden, wenn nicht dort, wo ich sie gefunden habe. Ich mache mich aber gerne auch selbst noch mal auf die Suche. --Vollbracht (Diskussion) 13:30, 3. Feb. 2023 (CET)Beantworten
Ich habe dich oben bereits implizit aufgefordert, den Nachweis für deine frei erfundene Behauptung zu führen.
  • Teile mit, in genau welchem enzyklopädischem Artikel angeblich unter „In dieser Seite verwendete Wikidata-Objekte“ Q20652535 aufgelistet sein soll; und das deiner nun wiederholten Falschbehauptung zufolge gar massenhaft.
Die Funktion failsafe, und diese ist die einzige, die getEntity anfasst, hat überhaupt absolut Nullkommanull mit einer einzelnen Datumsformatierung zu tun, was ich dir oben schon einmal aufgeschrieben habe, was du aber immer noch nicht begriffen hast.
  • Führe gefälligst den Nachweis für deine frei erfundenen und wiederholten Falschbehauptungen.
  • Die Zeichenkette ailsafe ist relativ simpel im Lua-Code des Moduls zu finden; weise nach, in genau welcher Zeilennummer dieser Funktionsaufruf im Zusammenhang mit einer Datumsformatierung auftreten würde. Du wirst merken, dass sie eine geschlossene Einheit in sich bildet, jedoch nirgendwo aus dem Modul außerhalb der Vorlagen- und der Lua-Schnittstelle aufgerufen wird, sondern immer nur von außerhalb.
--PerfektesChaos 13:38, 3. Feb. 2023 (CET)Beantworten
Ich hatte bereits geschrieben, dass ich mich selbst auch noch mal auf die Suche mache.
Die Seite 2022 führt 38x zum Aufruf. Noch habe ich nicht gefunden, wo. Aber unabhängig davon ist es doch kein Problem, die Eigenschaft Version (P348) aus dem Objekt Modul:DateTime (Q20652535) herauszulesen, ohne dazu das gesamte Objekt zusammenzusuchen. Wenn ich so begriffsstutzig bin, dann schreib uns doch, wofür dieser Aufwändige Aufruf notwendig ist. So, wie ich das sehe, kann dort die lokale Variable "seek" nur den Wert "P348" annehmen. Wie Deine Version zu formatieren ist, weißt Du selbst am besten. Wozu also brauchst Du also die Methode formatPropertyValues(seek)? Und wenn Du sie nicht benötigst, wieso fragst Du nicht einfach mw.wikibase.getBestStatements('P348') ab und formatierst das Ergebnis selbst? --Vollbracht (Diskussion) 14:12, 3. Feb. 2023 (CET)Beantworten
Es gibt im Artikel 38 aufwenige Parserfunktionen, das heißt aber nicht, dass 38 mal auf ein Wikidata-Objekt zugegriffen wird. Aufwenige Parserfunktionen gibt es eine ganze Menge. Und die sind im Artikel auch gar nicht das Problem, weil das Limit bei 500 liegt. Die letzten Vorlagenaufrufe werden nicht mehr expandiert, weil die Seitengröße nach Vorlageneinbindung überschritten wird (postexpandincludesize im verlinkten Parser-Report). Deshalb auch die Wartungskategorie. -- hgzh 14:41, 3. Feb. 2023 (CET)Beantworten
Nicht das entscheidende Problem, da stimme ich Dir zu, aber eins, das, wenn möglich behoben werden sollte. Und wo Du die Größe ansprichst: Jede Einbindung, die wir uns sparen könnten, sollten wir uns doch auch sparen, oder? Sollten wir uns die Einbindung der Vorlage:Literatur in anderen Vorlagen nicht wikiweit sparen, wenn wir ohne jede inhaltliche Änderung stattdessen das entsprechende Modul direkt aufrufen könnten? Das bedeutet doch jedes mal erst den Aufruf einer weiteren kleinen Datei, die nichts anderes tut, als eine andere aufzurufen. --Vollbracht (Diskussion) 15:44, 3. Feb. 2023 (CET)Beantworten
Der Artikel 2022 ist tatsächlich der mit den meisten Einbindungen der Vorlage:Cite journal und braucht (zusammen mit anderen Vorlagen) nur mal ein Drittel der Nodeobergrenze des Parsers. Mit der direkten Einbindung des Moduls:Vorlage:Literatur spart man eine Expansionstiefe ein, was bei einer maximal erlaubten Tiefe von 100 und derzeit maximal 18 im Artikel völlig unerheblich ist. Das Problem ist keins und hat auch gar nichts mehr mit dem Ursprung dieses Abschnitts zu tun. -- hgzh 16:02, 3. Feb. 2023 (CET)Beantworten

@Vollbracht:

  • „unabhängig davon ist es doch kein Problem, die Eigenschaft {{wikidata|P348}} aus dem Objekt {{wikidata|Q20652535}} herauszulesen“
    • Das verwendet aus der deutschsprachigen Wikipedia Vorlage:Wikidata.
    • failsafe ist ein bootstrap-Code zur Synchronisation von in verschiedenen Wikis verteilten Versionen des Moduls, wie ich dir in meiner ersten Antwort bereits aufgeschrieben hatte.
    • Es gibt keinerlei Gewähr dafür, dass in jedem der fast 1000 Wikis der der WMF überhaupt eine derartige Vorlage existieren würde, und in lateinischen Buchstaben geschrieben statt vielleicht in arabischen, japanischen oder mit einem großen „D“ in WikiData, und dass sie exakt dieselben Parameter erwarten und mit demselben Resultat antworten würde wie du glaubst.
    • bar:Modul:DateTime verwendet die failsafe-Funktion ebenfalls und weiß, dass es Tochter ist und wo die Mama wohnt. Es bedarf jedoch keiner bar:Vorlage:Wikidata.
    • Das Modul ist globales Modul und die sind so geschrieben, dass sie möglichst unabhängig von fremden Umgebungsbedingungen funktionieren, oder sich an die vorgefundene Umgebung anpassen.
    • Bevor du oberschlaue Ratschläge erteilst, wie das doch alles und ganz anders gemacht werden solle, müsstest du wenigstens ansatzweise begriffen haben, worum es bei der Angelegenheit überhaupt geht, und hättest dann selbst bemerkt, dass deine Vorschläge und Vermutungen totaler Quatsch sind. Du musst sowas ja auch nicht äußern, zwingt dich niemand dazu, aber wenn du uns damit belästigst, dann müsste es auch Hand und Fuß haben.
  • Du hast den Abschnitt mit einer haltlosen Vermutung eröffnet, und diese dann zu einer Falschbehauptung und Schuldzuweisung ausgebaut.
    • Wir machen sowas jedoch anders, etwa: „In der Seite XYZ sehe ich die Fehlermeldung FGHIJ. Kann es sein Komma dass Fragezeichen“
    • Darauf gibt es dann eine knappe Antwort „Nein Komma weil“ und der Fall ist erledigt.
    • Du versteifst dich jedoch auf dein privates Weltbild.
  • Ich zähl mal auf, was du hier alles nicht verstanden hattest:
    • Der Unterschied zwischen „maximale Seitengröße überschritten“ und „maximale Zahl von Parserfunktionen“ bzw. … Wikidata-Entities.
    • getEntity ist keine Parserfunktion (die ohnehin in guten Modulen soweit möglich vermieden würden), und nur dafür gäbe es „Aufwändige“ gemäß Abschnittsüberschrift, sondern würde maximal ein seitenfremdes Entity heranholen, nämlich d:Q20652535. Auch dafür gibt es ein Limit (dazu irgendwann an anderer Stelle mehr), hat aber nichts mit dem Artikel 2022 zu tun.
    • Du hast nicht ansatzweise verstanden, was failsafe ist, bist jedoch fest davon überzeugt, dass es ein Problem mit Datumsformatierung im Artikel auslösen würde.
    • Du hast nicht ansatzweise verstanden, was failsafe ist, weißt jedoch schon ganz genau, wie das alles viel besser gemacht werden müsse. Mal davon abgesehen, dass es nicht in jedem Wiki unter diesem Namen eine Vorlage:Wikidata geben muss, so wird diese im Hinblick auf Beschränkungen genauso gezählt wie die Lua-Funktion getEntity – oder sogar noch schlechter, weil durch diese Vorlage noch zusätzliche Schachtelungsebenen hinzukommen würden.
  • Deine Theorien über die Einbindung von Vorlage:Literatur sind genauso haltlos, weil du auch hierbei elementare Grundlagen nicht verstanden hast; insbesondere wild drauflosspekulierst und fabulierst, ohne jemals auf den Parser-Report zu gucken (was ich hinsichtlich dieser Vorlage jedoch bereits seit bald einem Jahrzehnt mache).
    • Der Sinn dieser Vorlage ist lediglich, den Autoren eine verständliche Doku zu liefern, statt im ANR gemäß deiner Vorstellungen direkt mit einem #invoke zu hantieren.
    • Hinsichtlich der von dir befürchteten Schachtelungsebenen ist es kilometerweit von einem Problem entfernt.

--PerfektesChaos 15:55, 3. Feb. 2023 (CET)Beantworten

Also Punkt für Punkt:
  1. "Das verwendet aus der deutschsprachigen Wikipedia Vorlage:Wikidata." Natürlich nicht!Wer ruft denn aus Lua heraus eine Vorlage auf? Ich habe den Aufruf, der gemeint war, explizit formuliert.
  2. Wiederholungen braucht es nicht.
  3. folglich gegenstandslos (aus (1))
  4. folglich gegenstandslos (aus (1))
  5. folglich gegenstandslos (aus (1))
  6. PA!
  7. "Du hast den Abschnitt mit einer haltlosen Vermutung eröffnet" Nein, mit einer Tatsache. Der Aufruf steht unnötig drin und wird mit, "This function is expensive when called with the ID of an entity not connected to the current page." beschrieben. das hat nichts mit "Weltbild" zu tun.
  8. "Ich zähl mal auf, was du hier alles nicht verstanden hattest:" Das ist ein einziger PA. Was ich alles verstanden habe, oder hatte braucht Dich nicht weiter zu kümmern. Du liegst da mit Deinen Mutmaßungen ohnehin viel zu oft daneben. Also gewöhn' Dir das bitte ab.
Wenn Du mir ins Gebetbuch schreibst, wie wir das anders machen, dann halte Dich bitte selbst daran, keine Schuld zuzuweisen. Du hättest eigentlich erkennen sollen, dass ich das auch nicht getan habe (von wegen "zu einer Falschbehauptung und Schuldzuweisung ausgebaut"). Bitte höre mit Deinen PA auf!!!
Und nun wieder konstruktiv: Siehst Du einen Grund, warum in Zeile 1764 die Anweisung 'local seek = Failsafe.serialProperty or "P348"' nicht durch 'local seek = "P348"' ersetzt werden könnte? Und wenn das gemacht werden könnte, ohne irgendeine denkbare Folge für den Programmablauf, siehst Du dann noch einen Grund, warum in dieser Funktion der ganze Abschnitt der Zeilen 1762-1789 nicht durch einen Aufruf von "mw.wikibase.getBestStatements('P348')" und eine eigenen Formatierung (wenn nicht nil) ersetzt werden sollte? Das wäre dann ein 4-Zeiler. --Vollbracht (Diskussion) 16:52, 3. Feb. 2023 (CET)Beantworten

Modul:Literatur für Vorlage:Cite journal

[Quelltext bearbeiten]

Im Zuge der geforderten Unterstützung der Wiederverwendung von Literaturnachweisen ist das Modul:Literatur entstanden. Es ist im Einsatz und mir sind derzeit keine Fehler bekannt.

Die Vorlage:cite journal ruft die Vorlage:Literatur auf. Dabei entstehen massive Fehler auf z. B. der Seite 2022. In einer Testkopie habe ich alle Aufrufe dieser Vorlage durch Aufrufe der Benutzer:Vollbracht/Vorlage:Cite journal ersetzt. Dabei handelt es sich um eine Kopie, bei der der Aufruf der Vorlage:Literatur durch ein #invoke:Literatur|pur ersetzt wurde. Der Anspruch lautet, dass die Parametrierung unverändert bleiben soll. Die Testkopie zeigt die Fehler nicht. Der Fehler kann also durch eine einfache Bearbeitung der Vorlage:cite journal behoben werden. Die Vorlage:Literatur fordert seit neuestem unter bestimmten Bedingungen die Angabe einer Sprache verbindlich an. Die Fehlermeldungen, die durch dieses feature vermehrt im ANR während der Voransicht sichtbar sind, werden in dem Fall leider nicht mehr angezeigt. Bitte prüft, ob das Modul:Vorlage:Literatur, oder die Vorlage:cite journal jetzt korrigiert werden sollte. In jedem Fall sollte der Aufruf in cite journal entweder durch ein #invoke:Vorlage:Literatur|f (keine Änderung), oder durch ein #invoke:Literatur|pur (Fehlerbehebung wirksam für 2022) ersetzt werden.

Ich habe mal einen Vergleich der Aufrufe für eine Seite ohne Fehler durchgeführt. Die korrigierte Version der Vorlage würde mehr als die Hälfte der aufwändigen Parserfunktionen eliminieren und 20% Zeit und Speichernutzung sparen. --Vollbracht (Diskussion) 04:52, 3. Feb. 2023 (CET)Beantworten

Das Modul:DateTime wird 3x in dieser Vorlage direkt eingebunden. Ich vermute, dass eine Korrektur dieses Moduls, wie oben angeregt, dazu führt, dass die Vorlage nach Umstellung auf das Modul:Literatur keinen, oder höchstens einen Aufruf einer aufwändigen Parserfunktion verursacht und damit nicht mehr zu Skriptfehlern führt. --Vollbracht (Diskussion) 05:10, 3. Feb. 2023 (CET)Beantworten

Die lokale Kopie der Vorlage, die ich in meinem BNR angelegt hatte, ist jetzt von Benutzer:Hgzh wieder gelöscht worden. Die Seite 2022 ist zwar jetzt nicht mehr in der Kategorie:Wikipedia:Seite mit Skriptfehlern gelistet, zeigt dieselben Vorlagenprobleme weiterhin. Möglicherweise liegt das an der schieren Anzahl von Vorlageneinbindungen, bei denen nun die Angabe einer Sprache technisch gefordert wird. Freundlicherweise werden Seiten, bei denen die neue Forderung nicht erfüllt wird, in der Kategorie:Wikipedia:Vorlagenfehler/Vorlage:Cite journal/temporär gelistet. Das betrifft knapp 8000 Seiten. Wie gehen wir weiter vor? @Benutzer:Wiki1939 Kannst Du Dich dazu mal äußern? Du hast die Kategorie angelegt. (nicht signierter Beitrag von Vollbracht (Diskussion | Beiträge) 13:15, 3. Feb. 2023 (CET))Beantworten

Auf dieses Thema wird an anderer Stelle zurückzukommen sein.
Du kostest uns jedoch so viele Arbeitskraft und Nerven, dass ich von fünf Wiki-Tagen einer Kalenderwoche mich einen ganzen Arbeitstag nur mit dir und deinen Erzeugnissen beschäftigen muss, und das bereits seit etlichen Monaten. Das bindet Ressourcen, die allen anderen Aktivitäten im Projekt verlorengehen und sie verzögern.
Vorab nur kurz: Nein.
--PerfektesChaos 13:28, 3. Feb. 2023 (CET)Beantworten
Auch ich bin davon betroffen, dass ich mich mit anderen auseinandersetzen muss, wenn meine Leistung Probleme bereitet. Hier ist es nicht meine Leistung, die Probleme bereitet. Die Probleme sind massiv. Ein Maulkorb ist kontraproduktiv. Die Fehler müssen in den Griff bekommen werden. Letztens habe ich erst gelesen, dass Probleme bei der Umstellungen bei der Vorlage:Literatur erst nach Monaten behoben wurden. Ich will Dir gar nichts unterstellen. Aber es gibt zwei Möglichkeiten: Entweder wir arbeiten zusammen und überlegen gemeinsam, wie wir Probleme lösen, oder wir stecken unnötig Energie in fruchtlose Diskussionen darüber, wer wie qualifiziert ist. Deinen nächsten Beitrag, der als Maulkorb verstanden werden kann, werde ich dann wieder melden.
Es bleibt die Bitte an Benutzer:Wiki1939, sich zu den knapp 8000 Einträgen in der temporären Fehlerkategorie zu äußern. Was schlägst Du vor, wie wir weiter vorgehen sollen? --Vollbracht (Diskussion) 14:30, 3. Feb. 2023 (CET)Beantworten
@Vollbracht: Ich vermute, dass die nach und nach wie bisher auch Temp-Kategorien in Vorlage Literatur die auch einige hundert Einträge hatten von fleißigen Wartungsusern abgearbeitet werden. --Wiki1939 (Diskussion) 14:55, 3. Feb. 2023 (CET)Beantworten
Danke, dass Du Dich meldest! Da forderst Du viel Fleiß ein bei mehreren 1000 Seiten mit jeweils etlichen Einträgen. Dazu kommt, dass die meisten Einträge sich auf Referenzen beziehen, deren Inhaltssprache ohne weiteres am Titel erkannt werden kann. Auch ich befürworte, dass die Sprache explizit angegeben werden sollte, wann immer eine referenzierte Quelle keinen deutschen Inhalt hat. Hast Du diese Forderung codiert? Blendest Du die Sprache aus, wenn "deutsch" angegeben ist?
Ich meine, dass diese Forderung nur beschrieben, aber nicht codiert werden sollte. Das kostet nur Serverleistung. Ein Bot, der 1x im Monat nach solchen Fällen sucht, ist für die Wartung zielführender. Meinst Du nicht auch? --Vollbracht (Diskussion) 15:35, 3. Feb. 2023 (CET)Beantworten
Möchte nur was anmerken. Wenn es sich darum dreht, bei der großen Anzahl an Artikeln auf der temporären Wartungskat schnell den fehlenden Sprachparameter nachzutragen, würde ich von Minimaledits die ausschließlich das korrigieren abraten. Der fehlende Sprachparameter ist kein schwerwiegender Fehler und muss nicht unbedingt sofort abgearbeitet werden. Ich würde vorschlagen, dass in dieses tk-k-Zeugs aufzunehmen, was schon bei einigen Mitarbeitern im Einsatz ist. Ein durchrutschen durch 8000 Artikeln ausschließlich im language nachzutragen würde vielleicht dem ein oder anderen Sauer aufstoßen. Ist schade, kann vorkommen. Wenn es in dieser Diskussion nicht um das geht, worauf ich mich beziehe, dann vergesst das hier. Allerdings fallen mir schon seit längerem Artikel auf, die wohl von den Bytes zu groß sind, und Fehlermeldungen/Skriptwarnungen ausspucken, die es im Artikel garnicht gibt. Zum Beispiel die Coronastatisken, oder allgemein lange Listen. Bisschen Ärgerlich. Pintsknife (Diskussion) 15:52, 3. Feb. 2023 (CET)Beantworten
@Vollbracht: 'language=de' wird eigentlich ausgeblendet Bitte nenne mir das Beispiel, wo du gefunden hast, dass es nicht funktioniert.
Die Prüfungen auf angegebenen Sprachparameter werden nur ausgeführt, während die Seite editiert wird, d.h. beim Lesen keine Serverbelastung.
Die Mitteilung, dass der Sprachparameter fehlt, wird bei deutschsprachigen Quellen nicht ausgegeben. Die Erkennung ist aber nicht 100%, nach meinen Erfahrungen werden ca. 1% nicht erkannt.
Ich kann leider keine Bots schreiben, aber wenn du einen programmierst, kann ich das anpassen.
Wir sind hier auf der Seite "Lua/Werkstatt", mit LUA-Programmierung kann ich nicht dienen! --Wiki1939 (Diskussion) 16:21, 3. Feb. 2023 (CET)Beantworten
Geht mir auch so. Nein, ich habe nicht gesehen, dass das fälschlich (mit de) ausgegeben worden wäre, ich hatte nur gefragt. Der Gedanke, das (nur in der Vorschau) anzeigen zu lassen, schien mir auch nicht grundsätzlich verwerflich. Ich bin dennoch der Meinung, dass wir das bleiben lassen sollten, weil es (nicht nur während der Vorschau) eine etwas Last bereitet. Ich stimme an der Stelle eben auch Benutzer:Pintsknife zu und meine, es eher dem Autor überlassen zu wollen, einzuschätzen, ob lang gesetzt werden soll, oder nicht. Und dazu kommt ja auch noch, dass die Überprüfung in den allermeisten Fällen ohnehin unnötig wäre, weil die Quelle deutsch ist. Alles Gute! --Vollbracht (Diskussion) 17:13, 3. Feb. 2023 (CET)Beantworten
Ich bin mir zwar nicht sicher ob ich mich jetzt zu weit weg von der eigentlich Diskussion bewege, denn es ging oben ja eher um ein Modul statt dem Parameter Sprache an sich. Allerdings muss ich noch anmerken, dass zwar der aktuelle Stand mit 8000 Artikeln in der temporären Wartungskat nicht perfekt ist, aber viel besser wie es ganz am Anfang der Überarbeitung der cite-Vorlagen war. Nämlich, dass wenn keine Sprache angegeben automatisch englisch ausgegeben wurde. Geht man jetzt davon aus, dass die meisten Quellen deutsch sind, was in deWP bestimmt zutreffen kann, aber nicht bei Importen aus anderen Wikis, hätten statt 8000 Artikeln mit Fehlermeldung, halt 8000 Artikel eine falsche Ausgabe der Sprache gehabt. Der Wartungsaufwand wäre im Vergleich geblieben, dass wurde schon anfangs bemängelt, auch von mir und dann umgebaut, dass keine Sprache ausgegeben wird, wenn auch keine angegeben wurde. Ein Ergebnis dieser Diskussionen, sofern man sie noch findet, ist die Wartungskat, die sogar noch umbenannt wurde, weil man sich beschwert hatte, dass die fehlende Sprache allein eben kein Wartungsgrund sei. Nebenbei gab's dann noch Beschwerden über die Fehlermeldung, die manchen Bearbeitern auf die Nerven ging. Ich merk grad, es ist spät und ich bekomms nicht gescheit formuliert, hoffe aber es ist verständlich. Das letzte mit der Umbenennung kann allerdings auch anders gewesen sein. Im Grunde finde ich jedoch, die Vorlagen haben sich verbessert. Pintsknife (Diskussion) 22:58, 3. Feb. 2023 (CET)Beantworten
Bestimmt. Aber hier geht es ja darum, ob sie sich durch die Implementierung der Forderung nach der Eingabe einer Sprache wieder eher verschlechtert haben, oder nicht. Und das bitte ich hier zu klären. Ich bin dafür, das unbedingt wieder 'raus zu nehmen. Was meint Ihr? --Vollbracht (Diskussion) 16:46, 6. Feb. 2023 (CET)Beantworten

Lua / Sparql / Scribunto

[Quelltext bearbeiten]

Hallo, im Wikipedia:WikiProjekt Österreichische Denkmallisten und besonders in der Löschdiskussion Wikipedia:Löschkandidaten/28._Juni_2023#Vorlage:Navigationsleiste_Denkmalschutzobjekte_in_Aigen_im_Ennstal wird eine Einschätzung benötigt. Wieviel Aufwand ist es, ein Modul:Denkmalnavi zu erstellen das beispielsweise mit dem Aufruf wie {{#invoke:Denkmalnavi|Q255581}} ein sparql-statement wie "SELECT ?item WHERE { ?item wdt:P1435 wd:Q1188447 . ?item (wdt:P131)* wd:Q255581" ausführt (fragt alle Denkmale in der Gemeinde Q255581 ab) und als einfache Liste ausgibt, ähnlich wie in Benutzer:Ruderblatt. Hierfür muss Lua mit Sparql verbunden werden (Scribunto), wofür ich im Wikiversum keine aktiven Beispiele finde, sondern nur nicht implementierten, funktionslosen Code als Demonstration. Ich brauche nur eine Einschätzung, ob das hierzuwiki überhaupt funktionieren würde. --Ruderblatt (Diskussion) 00:00, 30. Jun. 2023 (CEST)Beantworten

Votum: ich wünsche mir das schon lange. Bislang hatte ich nur gehört: geht nich, bzw. gibt 's nich! Ich aber meine ja, "Geht nich" gibt 's nich. Auf der anderen Seite kann eine Abfrage schon mal Antwortzeiten benötigen, die für ein Wiki inakzeptabel wären. Hier sollte also ein Bot 1x im Monat, oder auf manuelle Aufforderung hin eine Vorlage erstellen können, die dann im deWiki einfach nur noch eingebunden wird. --Vollbracht (Diskussion) 01:26, 30. Jun. 2023 (CEST)Beantworten
Direkt in Lua geht das tatsächlich nicht. Dazu gibt es seit Jahren immer mal wieder Anfragen, aber die Sache ist tatsächlich nicht so einfach. Woher soll eine Wikipedia Seite mit einem Lua-Modul, das eine SPARQL-Abfrage tätigt, wissen, dass das Ergebnis der SPARQL-Abfrage sich nach Änderungen im Wikidata-Projekt verändert hat? Da muss periodisch jemand die Abfrage laufen lassen und das mit dem aktuell in einer Wikipedia-Seite gecachten Ergebnis abgleichen.
Der ListeriaBot kann so etwas, auf sehr allgemeine Art. Dafür ist die Ausgabe nicht unbedingt immer 100% passend. Es ist aber nicht schwierig, einen spezifischen Bot zu schreiben, der nur solche Vorlagen schreibt und das mit gewünschter regelmäßigkeit auch tut.
Das Problem ist bloß: in dieser Community gibt es viel zu viele Benutzer, die im ANR sichtbaren Botbetrieb grundsätzlich ablehnen. Auch der ListeriaBot ist deshalb im ANR seit Jahren gesperrt. Es gibt als Botbetreiber wenig Grund, sich dafür zu engagieren. —MisterSynergy (Diskussion) 11:16, 30. Jun. 2023 (CEST)Beantworten
Ich verstehe das so, dass das Lua-Script immer dann ausgeführt wird, wenn die Seite neu gerendert wird (also gerade verändert wurde oder alle paar Tage neu in den Cache kommt). Genauso funktioniert es ja auch, wenn ich {{#invoke:Wikidata|claim|P1456|id=Q255581}} aufrufe und damit die Ausgabe "Liste der denkmalgeschützten Objekte in Kuchl" erzeuge. Damit braucht die Wikipediaseite mit dem Lua-Script vorab nichts wissen, sondern einfach abarbeiten, was in Lua steht und das Gelieferte ausgeben. Das Lua-Modul schreibt ja nichts in die Seite hinein und speichert dann ab, ganz im Gegensazu zu einem Bot, der wirklich peroidisch jede Seite neu beschicken wurde. Hmmm - wir liegen da ziemlich auseinander, was die Funktionsweise von Lua-Zugriffen in Wikidata betrifft. Im Prinzip benötige ich ein etwas fetteres {{#invoke:Wikidata|..., das auch Sparql-Statements verarbeitet. --Ruderblatt (Diskussion) 12:05, 30. Jun. 2023 (CEST)Beantworten
Wenn Du die herkömmlichen Datenbezugsoptionen nutzt (Lua-Funktionen, oder die Parserfunktionen), dann wird diese Nutzung tatsächlich als "Entity Usage" registriert; siehe zum Beispiel Special:EntityUsage/Q255581. Da ist festgehalten, welche Daten aus dem Datenobjekte Q255581 auf welchen Seiten in der deutschsprachigen Wikipedia genutzt werden. Wenn nun Wikidata-seitig jemand was ändert, dann wird ganz automatisch hier in der deutschsprachigen Wikipedia auch ein neu-generieren des Caches betroffener Seiten getriggert.
Das alles ist mit SPARQL-Queries nicht möglich. Auch können SPARQL-Queries verhältnismäßig lange laufen (bis zu eine Minute), und große Datenmengen produzieren (viele MB).
Abfrageergebnisse mit einem Bot irgendwo explizit zu cachen (im Sinne einer neuen Seitenversion) macht schon Sinn. Dann ist auch besser nachvollziehbar, was zu welcher Zeit mal gezeigt wurde, und wer ultimativ verantwortlich ist. Erfahrungsgemäß hat man auch bessere Werkzeuge als dieses olle Lua verfügbar, und mehr Kapazitäten bei der Verarbeitung (Speicher, CPU, ...).
Es wäre aber hilfreich, die Datentabelle auf eine separate Vorlagenseite auszugliedern und nicht im ANR direkt zu editieren. —MisterSynergy (Diskussion) 12:30, 30. Jun. 2023 (CEST)Beantworten
MediaWiki mit Scribunto, Präsentation, 2013
Mir ist klar, dass große Sparql-Abfragen die Ressourcen stark beanspruchen, hier geht es aber um Ergebnismengen mit meist 20 bis 50 Einträgen. Diese "herkömmlichen Datenbezugsoptionen" sind leider sehr stark begrenzt. Das bedeutet wohl, dass jene Errungenschaften wie Scribunto, das seit 10 Jahren immer wieder präsentiert wird, in Wahrheit gar nicht verfügbar ist bzw. immer noch auf seine Feuertaufe wartet. --Ruderblatt (Diskussion) 16:56, 30. Jun. 2023 (CEST)Beantworten
Bis auf weiteres ist es möglich, sich in seinem Benutzerbereich Lua-Modul zu schreiben, das eine Liste von WD-IDs als Datenbereich verwendet und eine schicke Ausgabe erzeugt. Diese Liste kann auch als String-Parameter übergeben werden. Wenn sie über ein SPARQL-Query erzeugt wird, kann anschließend das gewünschte Ergebnis mit {{subst:#invoke:meinModul|meineFunktion|meineListe}} im ANR, ggf. sogar in einer Vorlage eingetragen werden. Das scheint mir unter den gegebenen Bedingungen die Lösung mit dem geringstmöglichen Pflegeaufwand zu sein. --Vollbracht (Diskussion) 19:55, 30. Jun. 2023 (CEST)Beantworten
Nachdem Derartiges an mehreren Stellen eingesetzt werden könnte, werde ich nach einer passablen Lösung suchen und vorerst einmal die vorhandenen Beispiele und Unterlagen genau durchsehen. Vielleicht gelingt mir eine Umsetzung. --Ruderblatt (Diskussion) 12:51, 1. Jul. 2023 (CEST)Beantworten

Kategorien ermitteln

[Quelltext bearbeiten]

Hallo zusammen, komme ich irgendwie an die Kategorien Seite heran in der ich ein Lua-Modul einbinde? Wie komme ich auf den Wikitext einer beliebigen Seite? Ich würde nämlich gern ein Lua-Modul bauen, das mir die Kategorien und Oberkategorien von einer Seite anzeigt. Dank und Gruß, --Arnd 🇺🇦 (Diskussion) 10:47, 29. Okt. 2023 (CET)Beantworten

Was genau eine „Kategorien Seite“ sein soll, habe ich jetzt grad nicht verstanden.
  • Es gibt zu jeder Seite eine oder mehrere Auflistungen, für jede Kategorie einzeln, die diese und die Schwesterseiten auflisten, welche in dieselbe Kategorie einsortiert wurden.
  • Die Auflistungen selbst sind für Wiki-Seiten unzugänglich; also die aktuellen Schwesterseiten.
„Kategorien Seite heran in der ich ein Lua-Modul einbinde“
  • Das habe ich noch viel weniger verstanden.
  • Seiten, die ein bestimmtes Lua-Modul einbinden, und davon auch noch die Kategorien? Geht nicht, aus Prinzip.
„Wie komme ich auf den Wikitext einer beliebigen Seite?“
  • Das kann ich ja mal beantworten: getContent()
  • Warnung: Diese Funktion konsumiert die Länge der eingebundenen Wikitexte, und das Durchsuchen des Textes nach Mustern konsumiert Ausführungssekunden.
    • Das kann bei einer beliebigen und größeren Seite dazu führen, dass die Limits geknackt werden und der Artikel nicht mehr darstellbar ist.
    • Im ANR und als dauerhafte Darstellung enzyklopädischer Informationen deshalb unzulässig; nur temporär zu Wartungs- und Migrationszwecken mit dem Ziel der Eliminierung möglich, oder in anderen NR.
„Kategorien und Oberkategorien von einer Seite“
  • Der Wikitext liefert nur die in demselben Quelltext explizit vereinbarten Kats; Vorlagen wie Infoboxen und Navileisten können weitere Kategorisierungen zuliefern.
  • Oberkategorien: Wenn du den Bezeichner einer Kategorie kennst, kannst du dem Wikitext der Kategoriebeschreibungsseite deren Oberkategorien entnehmen.
„Ich würde nämlich gern ein Lua-Modul bauen“
  • Vergiss es. Aus mehrerlei Gründen.
  • Als Anfänger-Aufgabe absolut ungeeignet.
  • Für private Zwecke in deinem BNR/Modul-BNR kannst du gern rumspielen.
  • Niemals produktiv im ANR einsetzbar.
VG --PerfektesChaos 11:19, 29. Okt. 2023 (CET)Beantworten
Nachdem Du den möglichen neuen LUA-Entwickler schon wieder so herzlich eingeladen hast, wirst Du ihm sicher Vorschläge unterbreiten, welche Aufgabe für ihn als Anfänger gut geeignet sind, richtig? --Vollbracht (Diskussion) 18:36, 29. Okt. 2023 (CET)Beantworten

PerfektesChaos, danke für die ausführliche Antwort. Keine Angst, ich werde das hier nicht benutzen sondern hatte das für ein nicht öffentliches Wiki angedacht. Kann ich eigentlich Wikiapi-Calls per Lua machen? Dann könnte man ja z. B. benutzen mw:API:Categories... Viele Grüße, --Arnd 🇺🇦 (Diskussion) (ohne (gültigen) Zeitstempel signierter Beitrag von Aschroet (Diskussion | Beiträge) 18:03, 29. Okt. 2023 (CET))Beantworten

Nein, die normale Web-API kannst du per Lua nicht ansprechen. -- hgzh 19:43, 29. Okt. 2023 (CET)Beantworten
Ausführlicher …
@Aschroet:
  • Nein die API kann nur von Software verwendet werden, die in der Lage ist, aktiv eine Anfrage an den Wiki-Server zu adressieren, und danach, nach Antwortzeit, online die Antwort zu verarbeiten.
    • Das ist in der Regel nur JavaScript im Browser sowie PHP-python-Sonstwas-Software auf dem selbst betriebenen Server möglich (sonst interaktiv online).
    • Wiki-Lua duldet keine Antwortzeiten und verarbeitet keine später irgendwann eintreffenden Ergebnisse.
  • Wenn es derartige Möglichkeiten geben würde, dann hätte ich sie in meiner ersten Antwort auch erwähnt.
  • In der Anfrage stand nichts davon, dass es um ein non-WMF-Wiki gehen soll.
@Vollbracht:
  • Ganz allgemein hat jetzt ein Jahrzehnt Erfahrung gelehrt, dass Lua-Anfänger sich regelmäßig an einer überkomplexen Aufgabe komplett verheben, die ihre Möglichkeiten und Fähigkeiten bei weitem übersteigt.
  • Das ist dann besonders tragisch, wenn sie mit Dunning&Kruger obendrein unfähig sind, ihre derzeitigen eigenen Grenzen und Beschränkungen zu erkennen.
  • Die Anfrage plus Rückfrage zeigen, dass der Handlungsrahmen von Lua völlig unbekannt ist; dementsprechend auch die konzeptionellen Einsatzmöglichkeiten.
  • Die nachgereichte Ergänzung stellt klar, dass es auch nicht um eine Entwicklung für die deWP gehen soll. Insofern gehen deine Vorwürfe ins Leere.
VG --PerfektesChaos 21:15, 29. Okt. 2023 (CET)Beantworten

Einlesen von Konstanten

[Quelltext bearbeiten]

Hallo. Welches ist die geeignete Methode, den Quelltext einer Seite in ein Modul so einzulesen, dass die Zeilen als Elemente einer Table vorliegen? Es geht um Datensäze einer CSV-Tabelle. Quelltext zum Zerlegen der Zeilen in die Werte habe ich schon. Welche Grenzwerte gibt es? Gruß von ÅñŧóñŜûŝî (Ð) 16:02, 1. Apr. 2024 (CEST)Beantworten

  1. CSV ist fehleranfällig und wäre als dauerhafte Verwendung insbesondere im ANR nicht akzeptabel. Außerdem Elemente nicht selbstdokumentierend. Ein Element (Zahl) kann ein Komma enthalten; und dann?
    • Als temporäre Funktion innerhalb des BNR mag man sowas basteln.
    • Wir bevorzugen JSON für Austausch mit externen Datenquellen.
    • Tabs statt Komma wären robuster, aber optisch lassen sich Tabs, die zufällig nur ein Zeichen weit springen, nicht von Leerzeichen unterscheiden und sind deshalb ebenfalls fehleranfällig.
    • Externe Werkzeuge können sofort JSON generieren oder CSV in JSON konvertieren.
  2. CSV usw. wäre effizient mit mw.text.split() per \n in einzelne Zeilen zu zerlegen; jede Zeile dann erneut mittels %s*,%s* aufzuteilen.
VG --PerfektesChaos 19:43, 1. Apr. 2024 (CEST)Beantworten
Es geht nicht um allgemeine Verwendung. Tennzeichen wäre das Semikolon und es kommen nur reine EDV-Zahlen mit Dezimalpunkt, sowie Zeichenketten ohne fehlinterpretierbare Zeichen vor. Betreff JSON muss ich mich mal durchs Handbuch kämpfen. Vielen Dank für die Info. ÅñŧóñŜûŝî (Ð) 20:06, 1. Apr. 2024 (CEST)Beantworten
@PerfektesChaos: Kann ich denn im Rahmen einer Vorlagenprogrammierung eine API im Web aufrufen und das Ergebnis (JSON-Code) mittels #invoke einem Modul zuführen, welches dein schönes Modul:JSONutil einbindet, um so mittels dieses JSONutil.fetch(apply, always, adapt) Werte zur Weiterverarbeitung zu haben? Mir erscheint das prinzipiell viel zu riskant, um sowas zu können. ÅñŧóñŜûŝî (Ð) 23:27, 1. Apr. 2024 (CEST)Beantworten
Keine Wikitext-Seite in der WMF kann irgendein Fitzelchen an Inhalt außerhalb der WMF lesen, darstellen, oder sonstwie anfassen. Völlig egal mit welcher Syntax. Hat was mit Sicherheit und URV zu tun.
Es gibt immer nur Verlinkungen im Browser, zum Anklicken.
Nur JavaScript kann ggf. Nicht-WMF-Seiten anfassen, was aber eigentlich auch aus Sicherheitsgründen weitgehend blockiert wird.
JSON-Seiten werden übrigens niedlich dargestellt.
VG --PerfektesChaos 00:31, 2. Apr. 2024 (CEST)Beantworten
@PerfektesChaos: Sowas hatte ich inzwischen vermutet. Ich kann ja Rohdaten vom CSV-Format offline mit "meinem Lua" in einfaches JSON konvertieren. Braucht zwar mehr Seitenbytes, wäre deinen angaben nach aber sicherer. Ziel ist es, eine Infobox mit Werten aus einem Datensatz (Zeile) einer zentralen Datenseite zu "füttern", weil sich diese langsam ändern und man alle paar Monate neue Werte in hunderten Seiten braucht. Wikidata ist mir da viel zu überladen. Frage: Ich will erreichen, dass auf einer Seite mit JSON-Codes (Strings) ein Datensatz besonders schnell gefunden wird, ist es dann schneller, alle Datensätze in einem JSON-String zu haben, oder auf einer Textseite jeden Datensatz separat in eine separate Zeile vom Typ
(Primärschlüssel)(Separator)(JSON-String)

zu schreiben und dann per Lua nach dem richtigen Wert am Anfang der Zeile zu suchen?

Also (Umbrüche hier nur zur Lesbarkeit)
{
"Keyvalue1":
   {
   "paraname1":"value11",
   "paraname2":"value12",
   "paraname3":"value13"
   }
"Keyvalue2":
   {
   "paraname1":"value21",
   "paraname2":"value22",
   "paraname3":"value23"
   }
}

versus (Umbrüche hier auch auf der Datenseite)

Keyvalue1;{"paraname1":"value11","paraname2":"value12","paraname3":"value13"}
Keyvalue2;{"paraname1":"value21","paraname2":"value22","paraname3":"value23"}
 u.s.w.

Gruß von ÅñŧóñŜûŝî (Ð) 20:49, 2. Apr. 2024 (CEST)Beantworten

Die von dir dargestellten Betrachtungen und Befürchtungen sind wenig relevant.
  • @ Zeilenumbruch: Das ist ein Byte an ASCII-Whitespace, genauso wie ein Leerzeichen.
    • Dieser ASCII-Whitespace, der zwischen bedeutungstragender Syntax eingestreut ist, wird binnen Milliardstelsekunden ignoriert. Völlig egal, ob Leerzeichen, Zeilenumbruch, oder Tab. Du kannst dir eine JSON-Ressource als in eine einzige Zeile geschrieben vorstellen. Der Whitespace ist nur Service für menschliche AUgen.
    • → hat keinen Einfluss.
Was dir vielleicht bisher entgangen ist, und wesentlich interessanter, ist der Umstand, dass eine JSON-Seite nur ein einziges Mal pro Seitendarstellung („Artikel“ ) geparst wird und anschließend als binäres Objekt für alle weiteren Verwendungen in dieser Seite im Speicher vorliegt.
  • Im binären Objekt erfolgt der Zugriff über Schlüssel→Wert ohne Einfluss irgendwelcher Bytes.
  • Alle späteren Aufrufe in neuen Einbindungen eines Moduls greifen danach immer auf dieselbe und weiterhin unverändert im Memory lebende erste Generierung zu.
  • Das, was du mit deinem „Primärschlüssel“ meinst, ist dem binären Objekt völlig wumpe. Abgesehen davon ungültiges JSON.
Die Konzeption sollte sich an inhaltlichen Fragen ausrichten, nicht an Mutmaßungen über Bytes.
  • Solange du in Hunderten und Tausenden von Elementen denkst, ist die Performance irrelevant.
  • Unix-Philosophie #Pike: Notes on Programming in C – Regeln 1 + 2: Feile erst an der Geschwindigkeit, nachdem durch Messung erwiesen ist, wo genau ein Engpass sitzen würde. Oder kurz: „Zu frühe Optimierung ist die Wurzel allen Übels.“
    • Heißt: Formuliere saubere, dem Problem angemessene Datenstrukturen, und vergewaltige die nicht anhand unzutreffender Annahmen über vermeintliche Performanceverbesserung.
VG --PerfektesChaos 15:48, 3. Apr. 2024 (CEST)Beantworten
Ok. Daten für eine Infobox sind keine allzu tiefe Struktur. Einmal lesen und parsen pro Artikel ist gewiss nicht zeitrelevant. Gilt das nur einmalige Parsen auch, wenn die Daten von beispielsweise 1000 Einbindungen der Infobox in einem einzigen JSON-String stehen, oder wird dann jedesmal, wenn eine Seite mit Infobox (nach änderung der Daten) aufgerufen wird, der ganze Code geparst, obwohl nur ein Tausendstel davon gebraucht wird? ÅñŧóñŜûŝî (Ð) 19:25, 3. Apr. 2024 (CEST)Beantworten
Ich habe mir das jetzt so vorgestellt (erfundenes Beispiel): Eine Datenseite soll die Daten von 100 Personen enthalten:
{
     "Person_00":{"Name":"Max Mustermann", "Spitzname":"Mäxxi","Größe":178, "Geboren":"1998-06-04","Mag_Lakritz":true },
     "Person_01":{"Name":"Luise Musterfrau","Spitzname":"Quassellise","Größe":152, "Geboren":"2008-12-24","Mag_Lakritz":false },
     "....":{"....":""},
     "Person_NN":{"Name":"Andrea Musterkind", "Spitzname":"Willalles","Größe":102, "Geboren":"2014-04-01","Mag_Lakritz":true },
     "....":{"....":""},
     "Person_99":{"....":""}
}

Auf 100 Artikelseiten gibt es eine Infobox, welche mit #invoke nur einen Parameter an ein Modul übergibt, beispielsweise "Person_NN". Dieses Modul soll dann:

a) Von einer Vorlagenunterseite eine Infobox (Schablone) mit den Platzhaltern für Name, Spitzname, Größe, Geburtsdatum und "Lakritzvorliebe Ja/nein" einlesen,
b) auf der Datenseite nach "Person_NN":{"Name":"Andrea Musterkind", "Spitzname":"Willalles","Größe":102, "Geboren":"2014-04-01","Mag_Lakritz":true } suchen,
c) Die Platzhalter durch die im gelesenen Objekt stehenden (und ggf. verarbeiteten) Werte ersetzen und
d) die ganze Tabelle als ferige Infobox zurückgeben.
Frage: Könnte ich das mit dem o.g. JSON, selbstverständlich ohne die Auslassungszeichen, "füttern"? ÅñŧóñŜûŝî (Ð) 20:32, 3. Apr. 2024 (CEST)Beantworten
Zur Frage nach „wird dann jedesmal, wenn eine Seite mit Infobox (nach änderung der Daten) aufgerufen wird, der ganze Code geparst“
  • Zurzeit wird bei jedem Darstellen der Seite die JSON-Seite genau einmal geparst.
  • Überlegungen, in einem Cache bis zur Veränderung der Quellseiten-Versionsnummer sowohl kompilierte Lua-Module wie auch JSON zu halten, bis Cache voll und dann unwirtschaftlichste zu entfernen, gibt es, wurden aber bisher mangels Bedarf nicht umgesetzt.
  • „obwohl nur ein Tausendstel davon gebraucht wird?“ – Wer außer der Anwendung soll wissen, was jetzt grad gebraucht wird? Es wird die komplette JSON-Seite in eine Lua-table umgeschrieben; und dann ist es Sache der Lua-Anwendung, was sie damit anfängt.
  • Liegt im Bereich von Hundertstel-Sekunden für den beschriebenen Fall. Womöglich eine Zehntel. So what. 10 Sekunden hat die Seite.
Zu der Beispiel-Anwendung:
  • JSON wird geparst, liefert eine Lua-table.
  • Aus der kannst du dir Person_NN herausgreifen, liefert wieder eine Lua-table. Was du mit der anstellst ist dein Ding.
VG --PerfektesChaos 20:58, 3. Apr. 2024 (CEST)Beantworten
Danke. Wenn Zeit kein Problem ist, dann würde ich das so angehen. ÅñŧóñŜûŝî (Ð) 21:26, 3. Apr. 2024 (CEST)Beantworten

Modul:Mapframe

[Quelltext bearbeiten]

Das Modul Mapframe wurde aus der englischen Wikipedia 1:1 rüberkopiert nach De. Ein sehr schönes Modul, aber mir sind jetzt 2 Unschönheiten aufgefallen. 1) der Default bei einer Beschreibung (text=) ist "Map", sollte es nicht besser leer sein? Ansonsten wäre ich für "Karte". 2) die Schriftgrösse ist small, ich dachte sowas wollten wir bei deWP nicht oder? Bevor ich hier dran rumbastle, frage ich mal nach Meinungen.--McBayne (Diskussion) 00:53, 19. Okt. 2024 (CEST)Beantworten

  1. Anscheinend ist das Modul nur für Verwendung in englischsprachigen Wikis konzipiert.
    • Siehe: I18N / L10N
    • Beispiel: Modul:DateTime/local
    • Das bewirkt, dass prozedurale Programmierung und lokale Konfiguration immer strikt getrennt sein können und müssen.
    • Damit kann jederzeit eine aktualisierte und verbesserte Programmierung überall hinkopiert werden, während die lokale Konfiguration davon zunächst nicht betroffen wäre.
    • Heißt hier: Das muss immer wieder neu umgeschrieben werden, sobald wie hier die Programmierung aktualisiert wird.
  2. Die Dokumentation erfüllt nicht die hiesigen Qualitätsstandards.
    • Insbesondere müsste dort diese Aktualisierungsprozedur erläutert werden.
  3. Heißt insgesamt: Da einfach irgendwas rumzukopieren ist Bastelgepfusche.
  4. Verantwortlicher Maintainer ist immer genau das Konto, das diese Modulseite bei uns angelegt hatte, sofern es nicht zuvor hiesigen Community-Konsens dafür und zur Wartung und Pflege gab.
    • Letzteres ist offensichtlich nicht der Fall.
VG --PerfektesChaos 10:40, 19. Okt. 2024 (CEST)Beantworten
Besten Dank für die schnelle Rückmeldung. Ich würde mich schon daran versuchen die Lokalisierung zu machen analog der Vorlage Modul:DateTime/local. Mir ist jedoch nicht ganz klar wie das Muttermodul die Lokalisierung einbindet, es scheint ja im Mapframe durchaus auch localization vorgesehen, halt nicht implementiert.. Zu Punkt 2) hast du mir ein Beispiel was fehlt? Die Programmierung scheint ja dokumentiert auch wenn sicher etwas tricky bei den 1000 Zeilen, die Anwendung ist über die Vorlage imo gut dokumentiert. Zu 3) das würde dann übers 1) erschlagen, wenn ich das schaffe Zu 4) Naja, das Konto ist semi inaktiv: @Karthoo:, kannst du unterstützen? Zu meinen Ursprungsfragen. A) In Zeile 140 steht das mich störende "Map", das kann natürlich lokalisiert auch gelöscht werden, aber würde das nicht allenfalls sogar im Muttermodul Sinn machen? Jede Karte die einen leeren Textparameter übergeben bekommt, erzeugt dann dieses Map und imo ist das nicht wirklich ein hilfreicher Text unabhängig der Sprache. B) da wollte ich mal nachfragen, ob das nicht besser auch geändert werden müsste? das wäre vermutlich kaum ein Lokalisierungsthema? Viele Grüsse--McBayne (Diskussion) 01:49, 20. Okt. 2024 (CEST)Beantworten
„Ich würde mich schon daran versuchen die Lokalisierung zu machen“
  • Du kannst garnix machen.
  • Die enWP müsste machen.
  • Du begründest dadurch einen Fork, der dann nicht mehr von der Mutterversion aus aktualisiert werden kann. Wenn doch, sitzt du downstream und wirst wahlweise von Wasserfall oder Klospülung weggeschwemmt.
  • Heißt: Nach jeder Änderung muss alles erneut hierzuwiki umprogrammiert werden. Und der Thematik nach sind öfters Updates zu erwarten.
Doku:
  • Wikipedia:Lua/Seitenorganisation und Dokumentation
  • Es genügt, einmalig auf die Dokumentationsseite des Moduls {{LuaModuleDoc|de}} einzubinden; dann lassen sich durch Klicks auf die blauen Buttons alle erstmal erforderlichen Seiten binnen einer Minute anlegen.
VG --PerfektesChaos 14:18, 21. Okt. 2024 (CEST)Beantworten
Oh, dann hab ich den ersten Text falsch verstanden, ich frag dann mal bei Gelegeneheit bei enWP nach und ansonsten dann halt die Minimalvariante. Die würde ich verstehen.--McBayne (Diskussion) 00:51, 22. Okt. 2024 (CEST)Beantworten