Wikipedia:Lua/Werkstatt

Dies ist eine alte Version dieser Seite, zuletzt bearbeitet am 16. Juli 2013 um 21:56 Uhr durch Antonsusi (Diskussion | Beiträge) (Zahlenproblem). Sie kann sich erheblich von der aktuellen Version unterscheiden.

Letzter Kommentar: vor 12 Jahren von Antonsusi in Abschnitt Zahlenproblem
Abkürzung: WP:LWS

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:

Sachdienliche Antworten können von allen gegeben werden.

Neue Frage stellen Neue Frage stellen

49 Skriptfehler im Projekt!

Die üblichen Verdächtigen sind herzlich eingeladen, sich hier unter Schonung anderer Beos auszutauschen.

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

Fehler bei Vorlage * Parametername unbekannt (Vorlage:Archivübersicht): "2"

Längerfristige Baustellen

Flagged revs and Lua modules

Flagged revs and Lua modules, Meet Wikipedia, the Encyclopedia Anyone Can Code. --Atlasowa (Diskussion) 23:27, 20. Mär. 2013 (CET)Beantworten

Adressen-SortKey-Generierung

Kopiert von Vorlagenwerkstatt. --PerfektesChaos 21:27, 23. Mär. 2013 (CET)Beantworten

Hallo Vorlagenwerkstatt,

ich habe in der letzten Stunde ein kleines Lua-Modul zusammengebaut, das automatisch SortKeys generiert: Modul:AdressenSort.

Es funktioniert soweit und zickt auch bei großen Tabellen nicht (wird im Moment nur für hessische Denkmallisten eingesetzt), aber es hat sicherlich noch einiges an Potenzial in Sachen Ausführungsgeschwindigkeit. Vielleicht kann man einige find-Läufe einsparen? Oder gibt es eine andere, elegantere Vorgehensweise?

Es wäre zudem sinnvoll, wenn Sonderzeichen ersetzt werden könnten (also Umlaute und ß sowie alle Satz- und Trennzeichen), aber bis auf die Möglichkeit, für jedes Sonderzeichen einen replace-Lauf zu starten, konnte ich ind er Dokumentation keine geeignete Lösung finden.

Falls jemand drüberschauen könnte, wäre ich sehr dankbar!--Cirdan ± 20:48, 23. Mär. 2013 (CET)Beantworten

Zur Ersetzung von Sonderzeichen wäre der effizienteste mir bislang untergekommene Algorithmus derjenige als .sortChar() in meiner stringLib geschriebene.
VG --PerfektesChaos 21:50, 23. Mär. 2013 (CET)Beantworten
Ganz doofe Frage: Wie greife ich auf die StringLib zu?--Cirdan ± 12:21, 24. Mär. 2013 (CET)Beantworten
  • Ganz schlichte Antwort: Überhaupt nicht. Sie ist in JavaScript geschrieben und wäre hier nur auszubeuten.
  • Du musst dir um Sortierungs-Optimierung keine Sorgen machen. Irgendwann wird es ein Universal-Modul:Sort geben, das dies als Bibliotheksfunktion bereitstellt und dir über require("Modul:Sort") verfügbar sein wird.
  • Unter JS wäre der obige Hinweis mit die effizienteste Form, weil der Compiler den Zugriff regelt und es klar und übersichtlich hingeschrieben werden kann.
    • Weil es bei Lua aber kein switch gibt, sondern nur if, elseif, elseif, else, sollte man eine Datentabelle anlegen und diese algorithmisch flöhen.
    • Weil es bei Lua nur ein table gibt, das primär kein sequenzielles Array ist, wäre die hier effizienteste Lösung eine Tabelle, die jedem buchstabenartigen Zeichencode >=160 den ASCII-Wert zuweist; vermutlich effizienter erstmal numerisch und ein Treffer (non-nil) hinterher in Zeichenkette per mw.ustring.char(k) / geht sogar mit string.char(k).
    • Wenn man die von mir oben verlinkte stringLib::sortChar() mit brutaler Gewalt einmal von 160 bis 9000 durchlaufen lässt, kann man JavaScript dazu bringen, den Lua-Quellcode initial zu generieren.
    • Es würde sich anbieten, diese table mit mw.loadData("Modul:Sort/Data") zu externalisieren.
  • Man beachte, dass die Sortierung einer Tabelle erst in der dargestellten HTML-Seite durch JavaScript erfolgt. Alle Betrachtungen hinsichtlich der PHP-seitigen Sortierung von Seitennamen auf dem Server greifen hier nicht.
Insgesamt würde ich empfehlen, es hier ein paar Wochen gemütlich angehen zu lassen, bis sich die Basis-Strukturen aufgebaut haben.
Schönen Sonntag --PerfektesChaos 13:04, 24. Mär. 2013 (CET)Beantworten
OK, dann lasse ich das einfach erstmal. Die Vorlage erfüllt ja weitestgehend ihren Zweck. Aber warum wurde eigentlich Lua ausgewählt? Die Programmierung ist im Vergleich zu anderen Sprachen ein echter Krampf und sehr umständlich.--Cirdan ± 13:08, 24. Mär. 2013 (CET)Beantworten
  • Man suchte wohl konkret schon seit 2009, und das war das Optimum und wurde 2011 ausgewählt.
  • Die Sprache mag gewöhnungsbedürftig und in ihren syntaktischen Möglichkeiten begrenzt sein. Gegenüber Vorlagensyntax jedoch ein deutlicher Fortschritt.
  • Maßgeblich für die Entscheidung ist, wie das effizient auf unseren Server laufen mag und sich in unsere sonstigen Strukturen einfügt. Ohnehin kommt nur OpenSource in Frage, damit das Aussehen der Projektseiten nicht mittelbar von fremden Rechten abhängen kann. Vermutlich war Lua klein und schnell und robust.
Deine Hausnummerei könnte eine passende Funktion in einem Modul:Sort werden und anderen Vorlagen ebenfalls zur Verfügung stehen. Bis dann --PerfektesChaos 13:24, 24. Mär. 2013 (CET)Beantworten

Modul:InfoboxImage

Hallo. Besteht hier Interesse an einer Portierung des Moduls eo:Modulo:InfoboxImage. Ich habe sie aus der englischen Version en:Module:InfoboxImage abgeleitet. Der einzige Unterschied ist, daß die Esperantoversion übersetzte Namensräume für Bilder unterstützt und nicht nur die englischen. Dort also Dosiero: und in englisch eben nur File: und Image:. Oder sollten wir vielleicht noch ein bißchen die Weiterentwicklung des englischen Moduls abwarten?

Das Modul soll ja die Fehlertoleranz bei Infoboxen bei der Einbindung von Bildern erhöhen. Gruß --Tlustulimu (Diskussion) 21:32, 27. Mär. 2013 (CET)Beantworten

Kara amiko!
  • Zur Import-Frage: Danke; aber ich würde damit gern abwarten, bis das in einer Vorlage hier tatsächlich produktiv benötigt wird. Ohne dir zu nahe treten zu wollen, würde ich mich dann lieber an das en-Original in der letztmöglichen Fassung halten wollen.
  • Zur Sprachanpassung:
    • Die Herrschaften auf enWP schreiben bereits in der einzigen Weltsprache und haben es in der Regel nicht nötig, in ihrem Zeugs irgendwelche sonstigen Spezialitäten vorzusehen.
    • Wenn man eine geschlossene Software-Einheit wie diese Module auf Anpassungen vorbereitet (die „Internationalisierung“), dann geht man wie folgt vor:
      • Alle konfigurationsspezifischen Angaben werden am Anfang in einem geschlossenen Block gesammelt. Das betrifft Meldungstexte, Schlüsselnummern, URL, Dateinamen usw.
      • Im Verlauf des Programms wird ausschließlich auf diesen Block zugegriffen und nichts direkt angefasst („hard-coded“).
      • Wer anpasst („lokalisiert“), ändert dann nur übersichtlich und nachvollziehbar in diesem Block und muss nicht tief in den Innereien herumwurschteln und Fehler verursachen, oder irgendwas übersehen.
      • Selbst-anpassende vielsprachige Module können eine Fallunterscheidung vornehmen mittels: mw.language.getContentLanguage()
      • Im konkreten Fall:
local l10n = {}
   l10n.nsFiles  = "|file|image|datei|bild|dosiero|fichier|"  -- ASCII
   l10n.patSpace = "^(%a+:)"  -- ASCII, single word
   l10n.maintCat = "Kategorio:Paĝoj uzantaj informkestojn kun etaj bildoj"
-- l10n.noFile   = "File not found"
   l10n.noFile   = "Datei nicht gefunden"
und später müsste es (ungetestet freihändig) etwa so gehen:
function stripNamespaceFilePrefix( access )
   -- access -- file name
   -- Returns file name without any leading namespace prefix
   local strip = access
   local space = mw.ustring.match( access, l10n.patSpace )
   if space then
      if mw.ustring.find( "|" .. mw.ustring.lower( space ) .. "|", l10n.nsFiles ) then
         strip = mw.ustring.sub( access, mw.ustring.len( space ) )
      end
   end
   return strip
end   -- stripNamespaceprefix()
Frohe Ostern --PerfektesChaos 10:56, 28. Mär. 2013 (CET)Beantworten

Modul:Vorlage:String

Wer arbeitet zurzeit daran ? ÅñŧóñŜûŝî (Ð) 12:22, 10. Mai 2013 (CEST)Beantworten

  • Es gibt weder eine Vorlage:String noch gibt es irgendeine Gruppe von Vorlagen, deren Titel mit String beginnen würde. Insofern wüsste ich nicht, was ein solches Modul bewirken und wozu es gehören solle.
  • Falls du hingegen Modul:String meinen solltest, dann steht die Antwort auf deine Frage doch dran: Import aus enwiki. Und zwar in der spätestmöglichen Version mit den meisten Funktionen in der ausgereiftesten Fassung, sobald ein wirklicher Bedarf in der Vorlagenprogrammierung besteht. Dann reicht eine Notiz auf WP:IU, und binnen weniger Stunden ist das Ding einsatzfähig.
--PerfektesChaos 14:14, 10. Mai 2013 (CEST)Beantworten
Welchen Vorteil soll es haben, ein derartiges Modul unverändert zu übernehmen? Kompatiblität mit blind abkopierten Vorlagen von En-WP? Mit dem Effekt, dass auch alle Vorlagenparameter Englisch sind und User, welche Englisch nicht beherrschen, aus der dt. WP ausschließen ? Das ist kein Vorteil. ÅñŧóñŜûŝî (Ð) 17:28, 10. Mai 2013 (CEST)Beantworten
  • Das Rad nicht neu zu erfinden
  • Vorlagenparameter kann man auf Deutsch in der Doku schreiben und erklären, so wie den ganzen Rest auch (oder man setzt deutsche Kommentare rein)
  • Englische Programmiertexte fallen mir wesentlich leichter zu lesen, da u.a. Worte eine "feststehende" Bedeutung haben und man auch nicht die Sprache wechseln muss. Zudem sind die Schnittstellen zu MW/Lua ja in Englisch. Z.B. habe ich mich gefragt, warum Modul:Str#hex2dez nicht hex2dec heißt, Unnötige Fehlerquelle (Wenn dann schon hexZuDez ;)).
--se4598 / ? 18:26, 10. Mai 2013 (CEST)Beantworten

Vorlage:Lua-Hinweis

Hallo. Ich habe mir mal die Vorlage {{Lua-Hinweis}} angeschaut. Der dortige Text paßt aber jetzt nur zu Vorlagen, die mehr oder wenig vollständig über Lua laufen. Wäre da nicht eine etwas andere Formulierung besser, falls nur einige Parameter über Lua umgesetzt werden, wie beispielsweise diese hier?

  • Diese Vorlage verwendet Lua für die Parameter Bild, Breitengrad, Längengrad.

Allerdings müßte sie denn einen Parameter bekommen, über den die betreffenden Parameter aufgeführt werden können. Wie so etwas aussehen kann, habe ich mal in der Esperantowikipedia umgesetzt. Der dortigen Quelltext nutzt allerdings bereits ein Lua-Modul, welches hier noch fehlt. Gruß --Tlustulimu (Diskussion) 20:02, 14. Mai 2013 (CEST)Beantworten

In den mit der genannten Vorlage per Interwiki verlinkten Vorlagen wird sogar automatisch kategorisiert. Was haltet ihr davon? --Tlustulimu (Diskussion) 20:20, 14. Mai 2013 (CEST)Beantworten
In den Baustein soll eigentlich nicht so viel hinein. Genaueres gehört ggf. zur Doku. ÅñŧóñŜûŝî (Ð) 22:20, 14. Mai 2013 (CEST)Beantworten

Template:Module rating

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

Mehrzeilige Lua-Kommentare

Hallo. Auf den Seiten Hilfe:Lua/Modul im Wiki und eo:Modulo:Listigo/provejo (Besonders der letzte, denn dort wird plötzlich alles rot.) sehen die mehrzeiligen Kommentare irgendwie komisch aus. Ist das ein bisher nicht gemeldeter Fehler? Gruß --Tlustulimu (Diskussion) 23:51, 16. Mai 2013 (CEST)Beantworten

Das ist syntaktisch okay, bloß ein Darstellungsproblem. Der Syntaxhighlighter erwartet deine Wikilink-Klammern nicht. Tatsächlich ist es so, dass auch das Innere eines mehrzeiligen Kommentars noch als Lua-Syntax gilt; zumindest was die Suche nach schließenden Klammern angeht. Und die muss auch der Syntaxhighlighter finden. Vielleicht verbessert das mal jemand; wir sind nicht die ersten und ich habe keine Lust.
Hilfe:Lua/Modul im Wiki: Wo genau dort? Ich seh nix, außer dem Üblichen halt.
VG --PerfektesChaos 12:10, 17. Mai 2013 (CEST)Beantworten
Hallo, PerfektesChaos. Eine eigentlich falsche Darstellung findest du unter Funktionen nur für Vorlagen, sowie innere Hilfsfunktionen, gleich am Anfang.
--[=[ DiesesBeispiel 2013-05-07
Dieser und jener Zweck
* service
]=]
Richtig sieht es nämlich erst ohne = aus, also alles in Hellgrau und kursiv:
--[[ DiesesBeispiel 2013-05-07
Dieser und jener Zweck
* service
]]
Weißt du jetzt, wie ich es meine? Gruß --Tlustulimu (Diskussion) 22:27, 17. Mai 2013 (CEST)Beantworten
  • Es ist mir schon durchaus klar, was du meinst. Ich guck seit Januar den enWP-Kollegen beim Entwickeln zu, und da ist das laufend so.
  • Es sollte also schon seit einem halben Jahr den Zuständigen aufgefallen sein. Weil das GeSHi des syntaxhighlight ein externes Produkt ist, kann es eine Weile dauern, bis jemand Lust hat, das nach oben zu melden und danach richtig auf MediaWiki zu aktualisieren.
  • Die fehlerhafte Definition steht hier
    'COMMENT_MULTI' => array('--[[' => ']]'),
    'COMMENT_REGEXP' => array(2 => '/\[(=*)\[.*?\]\1\]/s'),
  • Es muss also bei COMMENT_MULTI die gleiche Paaruung (=*) und \1 stehen. Weil das ein Paar von Ausdrücken im array ist, braucht man möglicherweise für jede Anzahl von Gleichheitszeichen einen eigenen Ausdruck. Vielleicht geht aber in GeSHi nur einer.
  • Da ich keinen Bugzilla-Account habe, habe ich auch keine Lust, dem hinterherzurennen. Irgendwann schleicht sich das ganz von selbst ein.
Gute Nacht --PerfektesChaos 00:12, 18. Mai 2013 (CEST)Beantworten
Hallo, PerfektesChaos. Das Problem ist sogar größer als oben von mir beschrieben. Wenn man sich ein Lua-Modul unangemeldet anschaut, wird das Sytaxhighlighting sogar teilweise total verhauen. Es ist also wohl doch ein richtiger Bug. Aber warum wird die Darstellung unangemeldet sogar eher verstümmelt als angemeldet? Das ist doch irgendwie seltsam. Wo meldet man so etwas am besten, damit es doch noch dieses Jahr behoben wird? Seltsam ist aber, daß en:Module:Listify/sandbox und en:Module:Age in der englischen Wikipedia unangemeldet nicht falsch dargestellt werden. Das gleiche passiert bei fr:Module:Hello in der französischen Wikipedia. Vielleicht ist es ja doch irgend eine seltsame Nebenwirkung von Modul:Vorlage:LuaModuleDoc und Vorlage:LuaModuleDoc oder irgendwelchen Formaten im MediaWiki-Namensraum. Soll ich mal nachschauen? Gruß --Tlustulimu (Diskussion) 23:36, 19. Mai 2013 (CEST)Beantworten
An en:Module:Listify/sandbox und en:Module:Age und fr:Module:Hello sehe ich weder angemeldet noch unangemeldet etwas Böses.
Bei uns ist irgendwas im Gange, was irgendwie auf das Sytaxhighlighting Einfluss hat. Ich sehe die Modulseiten nie unangemeldet.
Vorlage:LuaModuleDoc kann nichts tun, was außerhalb der Box irgendeine Auswirkung hat. Wenn das jemand zaubert, hätte er so einiges geknackt. Siehe Modul:AdressenSort zum Vergleich.
MediaWiki:Common.css und MediaWiki:Common.js sehen beide gut aus. Sie haben einen Einleitungssatz.
Was ganz offensichtlich fehlt, ist die Einbindung von /Doku, wie sich beim Vergleich der beiden Varianten von Modul:AdressenSort sehen lässt. Damit wird dann auch der Quellcode nicht richtig in den Highlighter geschoben, und er erkennt erste und letzte Zeile schon mal gar nicht.
Mit dem oben eröffnenden Mehrzeilige-Kommentare-Problem hat das hier nichts zu tun.
Schöen Feiertag --PerfektesChaos 00:09, 20. Mai 2013 (CEST)Beantworten
  1. Wikipedia:Technik/Skin/Werkstatt#Lokales Wiki und etwas PHP-RegExp-Spielerei benötigt
  2. Hast du inzwischen diskutiert bei BD:Raymond #Geshi funktioniert unangemeldet nicht im Modulnamensraum.
Saluton --PerfektesChaos 22:49, 21. Mai 2013 (CEST)Beantworten

charAt(0).toLower

Hi! Verzeiht mir die evtl. redundante Frage, ich beschäftige mich jetzt zum ersten Mal mit diesem neumodischen Schnickschnack. ;o)

Ich hätte gerne von einem String (genauer: vom Seitennamen) den ersten Buchstaben, und zwar klein. Ich habe weiter oben von der Existenz von en:Module:String gelesen, aber das ist in de-WP ja noch nicht benutzbar, wenn ich das richtig verstanden habe. Gibt es also eine Realisierungsmöglichkeit für mein Anliegen?

Viele Grüße, --Nirakka Disk. Bew. 10:46, 17. Mai 2013 (CEST)Beantworten

Realisierbar ist das in jedem Fall.
Ab jetzt soll in den Vorlagen nicht mehr mit lauter Einzel-Zeichenketten gewirtschaftet werden. Wenn du noch mehr mit der Zeichenkette programmieren möchtest, dann schildere bitte das ganze Problem samt Beispiel-Vorlage; vielleicht tun sich ungeahnte Möglichketen auf.
Ansonsten klingt deine Frage so, als ob dir mit altmodischer Vorlagensyntax zu helfen wäre (ungetestet, freihändig):
{{lc:{{padleft:|1|{{PAGENAME}}}}}}
Liebe Grüße --PerfektesChaos 11:08, 17. Mai 2013 (CEST)Beantworten
Hey, lc kling gut; wusste gar nicht, dass wir dafür eine Variable haben. padleft schneidet aber nichts weg, sondern füllt nur auf. Habe jetzt nochmal bei den Variablen geguckt und spontan keine Präfixfunktion gefunden, aber vermutlich stelle ich mich nur wieder zu doof an. Gruß, --Nirakka Disk. Bew. 11:31, 17. Mai 2013 (CEST)Beantworten
Was ich dir geschrieben habe, stimmt schon. Mit „padleft schneidet aber nichts weg, sondern füllt nur auf“ hast du leider den Witz nicht verstanden.
  1. Der erste Parameter von padleft: ist die Zeichenkette. Die habe ich hier mit „nichts“ angegeben.
  2. Der zweite Parameter von padleft: ist die resultierende Gesamtlänge. Die habe ich hier mit 1 angegeben.
  3. Der dritte Parameter von padleft: ist das, womit zum Erreichen der Gesamtlänge aufgefüllt werden soll – wie du richtig anmerktest. Hier habe ich {{PAGENAME}} angegeben. Das heißt: Fülle die leere Zeichenkette so lange mit den Zeichen von {{PAGENAME}} auf, bis das Resultat die Länge 1 hat. Und das ist das, wonach du suchtest.
HGZH --PerfektesChaos 11:51, 17. Mai 2013 (CEST)Beantworten
Ah, natürlich, schick. Das habe ich falsch interpretiert. Sorry und vielen Dank, --Nirakka Disk. Bew. 12:02, 17. Mai 2013 (CEST)Beantworten
So, ich mache dann hier nochmal auf und stelle wie gewünscht das gesamte Problem zur Schau. Es geht um die inzwischen frisch erstellt Vorlage:DBLP. Mit Konrad Zuse klappt es, bei Richard M. Stallman gibt es Probleme: Das Leerzeichen müsste durch _ und der Punkt durch = ersetzt werden. Wie lässt sich das Ersetzen realisieren? Gruß, --Nirakka Disk. Bew. 12:56, 17. Mai 2013 (CEST)Beantworten
Schau mal auf
  • {{urlencode:Parameter|WIKI}}
  • {{urlencode:Parameter|PATH}}
  • {{urlencode:Parameter|QUERY}}
WIKI macht einen _ und der Punkt ist doch eigentlich kein Problem oder geht so in der URL?
Wenn das nicht hilft, wäre es günstiger, du würdest diese Aktion mal für einen Monat auf Eis legen; dann wissen wir alle wieder etwas mehr.
VG --PerfektesChaos 13:31, 17. Mai 2013 (CEST)Beantworten
Bindestriche, Apostrophe und vermutlich noch andere müssten ebenfalls durch "=" ersetzt werden, siehe http://www.informatik.uni-trier.de/~ley/pers/hd/b/Berners=Lee:Tim.html und http://www.informatik.uni-trier.de/~ley/pers/hd/o/O=Hara:Kieron.html, sowie an das lateinische Alphabet angelehnte Zeichen durch ihre benannte HTML-Entitäten, wie http://www.informatik.uni-trier.de/~ley/pers/hd/z/Zdr=aacute=hal:Zdenek.html. Da sollte man vorher genau überprüfen, welche Fälle vorkommen und ob sich das überhaupt automatisieren lässt.
Davon abgesehen, gehen solche Ersetzungen nicht mit Vorlagensyntax, sondern bedürften einer öffentlichen Lua-Methode, die Zeichenersetzungen durchführt, z.B. in Module:Str eine Methode replace(Eingabestring, zu ersetzende(s) Zeichen, Ersetzungszeichen) bereitzustellen. --Mps、かみまみたDisk. 14:28, 17. Mai 2013 (CEST)Beantworten
Natürlich kann ich warten, ist ja weder eilig noch überhaupt wichtig. Aber eine replace-Methode für Strings klingt doch nützlich … was spricht dafür, was dagegen, und wo wird so etwas überhaupt diskutiert? Gruß, --Nirakka Disk. Bew. 23:25, 21. Mai 2013 (CEST)Beantworten
Ich halte überhaupt nichts davon, in alter Vorlagensyntax mit lauter Puzzle-Teilen von String-Funktionen zu hantieren.
Das sind jetzt zwei deeplinks mit hartem Tobak. Von da aus kannst du luftschnappend an die Oberfläche gehen und mit den Grundlagen beginnen. Lua ist etwas gewöhnungsbedürftig, aber erlernbar: Modul:Hello.
Gute Nacht --PerfektesChaos 23:52, 21. Mai 2013 (CEST)Beantworten

Konsole: Mischung benannter und unbenannter Argumente

Wie lässt sich so eine Mischung in der Fehlerbereinigungskonsole testen? In Modul:DemoArgs ergibt, was mir einfällt, Fehler,
mit z.B. =p.Obstkorb({args={[1]=Karli,Bananen=2,Kirschen=5}}) hat frame.args[1] den Wert nil --Thoken (Diskussion) 10:49, 24. Mai 2013 (CEST)Beantworten

  • Was das Modul:DemoArgs angeht, so müsstest du dessen Autor fragen.
  • Soweit ersichtlich, ist das Modul:DemoArgs jedoch ausschließlich für den Aufruf aus einer Vorlage heraus geschrieben worden und unterhält keine Lua-Schnittstelle.
  • Für den Aufruf aus der Konsole heraus ist jedoch zwingend eine Test-Schnittstelle erforderlich, da frame hier nicht bekannt ist und Modul:DemoArgs dieses zur Auswertung voraussetzt.
  • Ein Beispiel zur Gestaltung eines kombinierten Moduls findest du unter Hilfe:Lua/Modul für eine bestimmte Vorlage #Muster.
    • Nach geeigneter Umsetzung in einer Form für mehrere Funktionen sollte in der Konsole funktionieren:
      =p.test( "Obstkorb", { "Karli", Bananen=2, Kirschen=5 } )
Hoffe geholfen zu haben --PerfektesChaos 11:20, 24. Mai 2013 (CEST)Beantworten
Danke, half, die zulässige Schreibweise zu finden: Unbenannte (schlüsselllose) Argumente müssen Zahlen oder quotiert sein, runde Klammern sind außerdem überflüssig, z.B. (Konsole) =p.Obstkorb{args={"Karli",Bananen=2,Kirschen=5}} ist ok in Modul:DemoArgs.
Im Modul bekommt frame dabei schon einen Wert ab, die globale Variable frame, die frame:getParent() ermöglicht, wird anscheinend mit dem Argument des Aufrufs der Funktion p.Obstkorb aus der Konsole überschrieben, frame:getParent ist nil während dieser Funktionsausführung. --Thoken (Diskussion) 12:32, 24. Mai 2013 (CEST)Beantworten


GULP.
frame ist nicht bekannt und wird auch nicht durch die Konsole simuliert.
  • attempt to index global 'frame' (a nil value)
Das funktioniert hier nur deshalb, weil der einzige Zugriff auf frame das Auslesen der .args ist. Statt des erwarteten frame-Objekt übergibst du ein irgendwas. Weil dieses irgendwas-table eine Komponente .args hat, können diese verwendet werden.
Wäre auch noch auf eine Objekt-Funktion zugegriffen worden, hätte dieses irgendwas das nicht bieten können und wäre abgeschmiert. So auch frame:getParent().
Deshalb der Zugang über eine spezifische test() -Methode, wobei die Argumente vom frame-Objekt abgetrennt werden, und das frame-Objekt separat zugeliefert wird.
Ich selbst arbeite nur selten und nur für Trivial- und statische Syntax-Tests mit dem Konsolen-Dings.
Amüsier dich --PerfektesChaos 22:12, 24. Mai 2013 (CEST)Beantworten

Module für vielgenutzte Vorlagen

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

Einmischung, eine Anregung

Eigentlich wollte ich mich heute abend noch ein Stündchen um etwas anderes kümmern, aber ...

Durch die diversen Vorkommnisse aus jüngster Zeit kann hier ratz-fatz jegliches Vertrauen der Community in die Wörter Modul und Lua verspielt werden. Das würde ich sehr bedauern, nicht zuletzt, weil wir selbst z.Zt. selbst an einem wichtigen Modul arbeiten. Das verlorene Vertrauen müsste dann erst mühsam durch seriöse Arbeit wieder aufgebaut werden.

Ich möchte daher anregen, dass als Sofortmaßnahme ein verpflichtender 4-(6..8..)-Augen-Review für jedes neue Modul vereinbart wird und dass neue Module nicht durch den oder die Entwickler, sondern vorläufig nur durch einen Admin (nach Anfrage auf WP:AA) in Produktion genommen werden. Dem Admin wäre dabei die Beteiligung von 2 (3..4..) Personen nachzuweisen. Genauere Prozeduren kann man ja dann immer noch erarbeiten.

Wenn hier eine solche Absprache getroffen werden sollte, kann diese den Admins ja auch ausdrücklich bekanntgemacht werden. --Martin Taschenbier [Das Narrenschiff - nie war es so aktuell wie heute] 22:30, 2. Jun. 2013 (CEST)Beantworten

Absprachen sind gewiss sinnvoll. Haupthindernis dabei ist meines Erachtens aber, dass PerfektesChaos, der gewiss gute Programmierkenntnisse hat, grundsätzlich mal alles ablehnt, was nicht aus seiner Feder stammt. Seine Ausdrucksweise kommt noch dazu. Ein Modul hier quasi "sichten" zu lassen, bedeutet deshalb nicht, dass nur Fehler korrigiert werden und optimiert wird, sondern dass grundsätzlich alles durch seine Vorstellungen von einer Lösung ersetzt wird. Damit gehen auch die funktionierenden Lösungen anderer Programmierer verloren. Du musst also damit rechnen, dass von deiner Arbeit, auch wenn sie gut ist und funktioniert, nicht mehr viel übrig bleibt, wenn du sie hier vorstellst (Es sei denn, er macht eine Ausnahme, um meine Äußerungen hier nicht zu bestätigen). So hat er bereits angedeutet, dass er Offline an einem Ersatz für Modul:Str arbeitet und das damit begründet, es sei "keine richtige Lua-Programmierung". Angesichts der Tatsache, dass das Modul funktioniert, eindeutig Überheblichkeit. Es bedarf auch keines Admins, hier einen Konsens zu finden. Es bedarf der Bereitschaft zum Dialog und dem Unterlassen überheblicher und herablassender Äußerungen, (siehe eins drüber) weil man selber eine andere Lösung wählen würde. Das gilt auch für den Fall, dass es eine bessere Lösung ist. ÅñŧóñŜûŝî (Ð) 21:38, 8. Jun. 2013 (CEST)Beantworten
Ich weiß ja nicht auf welchen Seiten du deine Meinung bildest, allerdings geht es nicht darum, dass ein Nutzer alle Module schreiben soll oder nicht, sondern darum, dass deine Module meist schlecht getestet und überhastet eingeführt werden. Wenn der bereits erwähnte Nutzer ein Modul erstellt, wird dies genauso kritisch betrachtet, allerdings sind seine Werke meist deutlich besser getestet als deine. Insbesondere gibt es dann auch eine Testseite und eine vernünftige Doku. Das Haupthindernis ist also wohl eher deine Uneinsichtigkeit. Und wenn ein von dir erstelltes Modul durch andere Nutzer (eventuell erfahrener) überarbeitet wird, dann sieh dir die Änderungen an und lerne daraus (das wird dir im Leben da draußen öfters passieren). --Steef 389 22:04, 8. Jun. 2013 (CEST)Beantworten
Ich habe nie behauptet, dass ich stets mit ausreichend Sorgfalt gearbeitet habe. Die ersten, von mir geschriebenen Module waren gewiss zu schnell umgesetzt. So habe ich bei einem Modul nach dem Testen nochmal editiert und dabei einen Fehler eingefügt und ein anderes mal habe ich beim Wikitext einen Fehler eingebaut (zwei } zu wenig). Ein weiteres Thema ist der Test auf Unsinnseinbindungen und exakte Replikation des Zustands davor (Ursache für das Thema eins drüber). Offensichtlich kommt hier aber nicht rüber, worum es mir geht:
  1. Bessere (!) Lösungen habe ich bisher immer akzeptiert. So z.B. die Maximumfunktion im Modul:Expr als Ersatz für meine vorherige Lösung.
  2. Fehlende Toleranz: Funktionierende (!) Lösungen anderer User sind nicht "nur deshalb Sch....", weil sie nicht von einem selbst stammen. Es gibt auch keinen Grund, sie nur deshalb durch maximal gleichwertige andere zu ersetzen.
  3. Sherif-Stil (siehe eins drüber) und herablassende Äußerungen über die Fähigkeiten anderer Benutzer sind absolut ungeeignet, den Dialog zu fördern. Wer will schon mit jemandem zusammenarbeiten, der in jedem dritten Edit eine Äußerung nach dem Prinzip "Ich klug, du dumm" von sich gibt?
ÅñŧóñŜûŝî (Ð) 22:35, 8. Jun. 2013 (CEST)Beantworten
Bei dir erkenne ich nur weiter Ad-personam-Diskussionen. PC ist hier nunmal aufgrund seiner Präsens, Erfahrung und mangels gleichwertiger Mitspieler der erfahrenste und umsichtigste Benutzer auf dieser Seite. Andere Lösungen können (im Hinblick auf ihre Weiterentwicklung) für alle aufgrund einfacherer Wartung für alle förderlich sein. Den "Sherif-Stil" in Form von "Ich will kein viertes Mal mehr sehen." ist als deutlicher Hinweis zu sehen, auch da ich keine Einsicht und Konsensfindungsversuche in der Sache sehe, sondern nur weiter Kommentare ("... eindeutig Überheblichkeit.", aber gleichzeitig "Es bedarf der Bereitschaft zum Dialog und dem Unterlassen überheblicher und herablassender Äußerungen") gegen die Ausdrucksweise anstatt mal auf die Sache wie von dir gewünscht hinzuarbeiten. Also konkret zur Sache: Warum bist du für oder gegen ein Mehr-Augen-Prinzip? (Thema dieses Abschnitts)--se4598 / ? 22:54, 8. Jun. 2013 (CEST)Beantworten
Ich habe doch geschrieben, dass ich bei der Umsetzung der erten Module zu schnell war. Das habe ich doch nie bestritten Wo ist da die "fehlende Einsicht"?
Ich bin grundsätzlich für ein Mehr-Augen-Prinzip!
Damit das Mehr-Augen-Prinzip funktioniert, sind bestimmte Regeln nötig:
  1. Ausreichend Toleranz, d.h., Die Autorenschaft ist für die Einstufung, ob eine Modul gut oder schlecht ist, zu vernachlässigen.
  2. Anständiger Umgang. Keine Äußerung im Stil "Deine Ideen sind Schrott!" sondern (stattdessen) "Dieses und Jenes könnte man noch ändern."
  3. Gerechte Bewertung: Jede Lösung, welche eine Aufgabe im notwendigen Umfang erledigt, ist zunächst gleichwertig. Eine andere Lösung ist nur dann besser, wenn objektive Kriterien wie mehr Features, Beseitigung einer Einschränkung o.Ä. dafür sprechen. Ein Totalaustausch zwischen gleichwertigen Versionen ist zu unterlassen.
  4. Ein Schema muss erstellt und gut erklärt werden. Die Reihenfolge der Entwicklungsschritte, die Art der Tests u.A. muss vereinbart werden.
  5. Alle Offline-Arbeiten an fundamentalen Modulen für die WP sind zu erwähnen. Ein "Aus-dem-Hut-zaubern" ist zu vermeiden. (gilt auch für mich... )
ÅñŧóñŜûŝî (Ð) 23:19, 8. Jun. 2013 (CEST)Beantworten
Gute Punkte! In Bezug zu obigen Regeln:
  1. Sollte überall eine Selbstverständlichkeit sein.
  2. Sollte auch eine Selbstverständlichkeit sein, wobei natürlich auch eine Meinung zu einem grundsätzlich falschem/problematischen Aufbau konstruktive Kritik sein kann bzw. so formuliert werden sollte.
  3. Bietet der Anstand. (Ansonsten/Für eine Ankündigung) sei die Diskussionsseite zu benutzen und die Gründe darzulegen, wie an anderen Orten sonst auch.
  4. Versteh ich nicht ganz, wie du das meinst. Eine Doku sollte vorhanden sein bzw. im Zuge des Reviews erstellt werden. Siehe auch eins drunter
  5. Offline-Arbeiten können/sollten im Sinne einer Zusammenarbeit und Vermeidung von doppelter Arbeit angekündigt werden (praktisch wäre das geplante Konzept/Schema). Die Möglichkeit des Online-Stellens/Entwickelns in einem der Testwikis sollte bedacht werden. Grundsätzlich ist es aber egal, ob sowas vorher erwähnt wird/woher es kommt, es muss ja diskutiert werden.
--se4598 / ? 00:04, 9. Jun. 2013 (CEST)Beantworten

Modul für Datum und Zeit

Ich schlage vor, ein umfassendes Modul für Datums- und Zeitfunktionen zu erstellen. Ein paar Vorüberlegungen habe ich mir bereits gemacht, ohne allerdings tief einzusteigen. Sollte jemand bereits an sowas arbeiten, dann wäre es sinnvoll, das hier baldmöglichst mitzuteilen, denn nich habe keine Lust auf unnötige Doppelarbeit. Als Modulname schlage ich "DateTime" vor. Gruß von ÅñŧóñŜûŝî (Ð) 14:31, 12. Jun. 2013 (CEST)Beantworten

Notwendig ist dies allemal; siehe Wikipedia:Lua/Modul #Basis-Datentypen (Zeichenkette, Zahl, Zeit)
Weiter oben ist bereits eine Baustelle als redlink vermerkt: /Datum und Uhrzeit.
  • Den Text habe ich halbfertig auf der Festplatte in Warteschleife; beim nächsten Regenguss kann ich ihn zu Ende bauen.
  • Vorab soviel: Allgemeine Bibliothek mit Basisfunktionen; alle sowohl von Vorlage=#invoke wie auch von anderem Lua-Modul aus nutzbar; alle zweifelsfreien Datumsformate für den deutsch- und englischsprachigen Raum bei der Eingabe zu unterstützen: 15. Februar 2013; 15.2.2013; 15.02.13; 14.8.98; 2013-06-12; 3. Jänner 2012; 5 Mar 2011; December 9, 2010; 1. Apr. 2012. Ausgabe in einigen wesentlichen deutschsprachigen Standardformen + ISO. Mit Uhrzeit ähnlich, aber weniger Varianten möglich. Fehlerbehandlung für Wartungskats.
  • Auf der Baustelle wäre über die Liste der Funktionen zu diskutieren.
Geschrieben habe ich dazu bislang nicht eine Zeile in Lua.
Bis demnächst --PerfektesChaos 15:28, 12. Jun. 2013 (CEST)Beantworten
  • Ich würde da noch ein paar Features, welche hier in WP dauerhaft genutzt werden, ergänzen. Insbesondere ein paar Funktionen für das in der Astronomie genutzte Julianische Datum.
  • Wichtig ist auch die Festlegung, wie fehlertolerant wir das Modul gestalten. Je penibler wir Fehlermeldungen platzieren, umso schlechter kann man später Erweiterungen vornehmen, denn viele Aufrufe nehmen keinen eigenen Paratest vor und "verlassen" sich später (mittels #iferror) auf die Fehlermeldung.
  • Bei englischen Eingabeformaten habe ich bedenken. Es ist nicht unterscheidbar, ob z.B. das Datum des Attentats auf das World Trade Center als "11.9.2001" (dt.) oder "9.11.2001" (en) übergeben wurde. Außerdem fördert das die blinde Abkopiererei von En-WP.
ÅñŧóñŜûŝî (Ð) 16:29, 12. Jun. 2013 (CEST)Beantworten
Es gibt kein englisches Format "11.9.2001" (dt.) oder "9.11.2001" (en); es gibt keine Punkte im Englischen, sondern Schrägstrich oder Bindestrich. Alle europäischen Sprachen mit Punkt verwenden Tag.Monat.Jahr. Was es gibt, ist 09/11/2001 oder 09-11-2001 (US) und 11/09/2001 (sehr selten 11-09-2001) in UK; see en:Date and time notation in the United States. Eindeutig ist hingegen ISO: 2001-09-11. Punkte sind in vielen Tabellen und Vorlagen der deWP üblich.
Appetithäppchen von meiner Festplatte zum Selberformatieren; jul ist inklusive:
=== Daten ===
==== Eingabe ====
Abfangen aller &nbsp; \U+00A0 "  " "" bei der Eingabe. Interpretieren jedes eindeutigen Formats.
20130716215644 {{REVISIONTIMESTAMP}}
==== Neutrales Datenformat ====
table
year, month (1–12), dom, week (ISO), hour, min, sec, msec, zone, jul, bc, leap
==== spec ====
"T. Monat JJJJ", "dewiki", nil, false || 12.&nbsp;Juni 2013
"T. Monat JJJJ Z"                     || 12.&nbsp;Juni 2013 (CEST)
"T. Mon JJJJ"                         || 12.&nbsp;Jun. 2013
"T.Mon JJJJ"                          || 12. Jun. 2013
"TT.MM.JJJJ"                          || 12.06.2013
"T.M.JJJJ"                            || 12.6.2013
"ISO"                                 || 2013-06-12
"timestamp"                           || 20130612165733
usw. usw. mit Uhrzeit
=== Funktionen ===
Alle Lua-zugänglich. Jede story und spec ignoriert Whitespace drumrum, story ist die Zeichenkette mit zu interpretierender Eingabe.
; factory( story, lethal )
: Nur Lua-intern; insbesondere Eigenbedarf
: Liefert neutrale table, oder string mit Fehlermeldung
: throws error if lethal
; form( t, spec )
: Nur Lua-intern; insbesondere Eigenbedarf
: t ist neutrale table
; format( story, spec )
: auch für Vorlagen
: Rufe factory() auf und mit deren Ergebnis form()
; isValid( story, light )
: auch für Vorlagen
: light: erlaube leeren Wert
: Rufe factory() auf; true wenn diese eine table liefert
; isPretty( story, spec, light )
: auch für Vorlagen
: light: erlaube leeren Wert
: Rufe format() auf; true wenn dies identisch story liefert
Hilfsfunktionen; Ersatz/Service Julgreg-Vorlage
Rest später mal auf der Baustelle --PerfektesChaos 16:59, 12. Jun. 2013 (CEST)Beantworten
Übrigens: Warum sieht das hier plötzlich so komisch überlappend aus? --PerfektesChaos 17:14, 12. Jun. 2013 (CEST)Beantworten
Das überlappt sich, weil die Schrift, und damit auch die Zeilenhöhe im Span-Tag 150% hat und außerhalb des Span-Tags normale Zeilenhöhe (100%) gilt. Beides befindet sich aber in der gleichen Fließtextzeile. Darüber hinaus gibt es ein padding von 1em. Wenn du einen Rand definierst, dann fällt das auf, denn ein Browser berücksichtigt bei border das padding, ein Absatz entsteht aber nur bei einer Leerzeile im Quelltext und dessen Abstand hängt auch von den Grundeinstellungen ab. M.E. fehlt ein rahmenloses umhüllendes Div-Tag mit gegebener relativer Breite. Ich hab das mal umgesetzt. ÅñŧóñŜûŝî (Ð) 20:45, 12. Jun. 2013 (CEST)Beantworten
  • Mit „Überlappen“ hatte ich eigentlich diese Version gemeint. Warum ist die Schrift jetzt eigentlich nicht mehr grün? Und warum klemmt das jetzt so eingezwängt zwischen Inhaltsverzeichnis und folgender Box?
  • Back to reality: /Datum und Uhrzeit
--PerfektesChaos 11:36, 13. Jun. 2013 (CEST)Beantworten

Modul für Vorlage:Maß und Vorlage:Mass

Aus gegebenen Gründen ein Hinweis: Ich arbeite gerade an einem Modul für diese Vorlagen. Momentan unter Benutzer:Antonsusi/Spielwiese/Modul:Measure zu finden. Bei dieser Gelegenheit möchte ich die Funktionalität etwas erweitern, indem Vorlage Maß als ersten Parameter auch einen Expr-Ausdruck verarbeiten kann und eine Messunsicherheit bei Anforderung auch in Klammern steht. Ein paar Testaufrufe haben funktioniert. Wer Lust hat, kann aber gerne selber mittesten... ÅñŧóñŜûŝî (Ð) 02:10, 13. Jun. 2013 (CEST)Beantworten

  • Ich weiß von niemand, der gerade an dieser Aufgabe arbeiten würde.
  • Ich möchte gern, dass Standardaufgaben wie diese eine Lua-Schnittstelle erhalten, so dass das Modul auch unmittelbar durch andere Module benutzt werden kann.
  • Zum Thema Runden und Erhalt der Nachkommastellen haben wir bereits das Modul FormatNum. Leider hat es im Moment noch keine Lua-Schnittstelle (es war das erste produktive Modul der deWP); diese kann aber leicht nachgerüstet werden.
Viel Erfolg --PerfektesChaos 11:39, 13. Jun. 2013 (CEST)Beantworten
Im Moment läuft es "um die Ecke", also per Vorlagenexpandierung. Das Tema Schnittstelle muss ich mir erst nochmal genauer anschauen, denn das war - zumindest bis zu meinem letzten Besuch der Hilfeseiten - extrem schlecht erklärt. Besonders Beispiele würden da sehr helfen.
Das Modul findet sich jetzt auch unter Test2. ÅñŧóñŜûŝî (Ð) 12:00, 13. Jun. 2013 (CEST)Beantworten
Beispiele kannst du haben: Hilfe:Lua/Modul im Wiki#Funktionen für Vorlagen und zusätzlich Lua-Zugriff und dieses angewendet in Wikipedia:Lua/Modul/URLutil/de#Lua oder Wikipedia:Lua/Modul/TemplatePar/de#Lua. --PerfektesChaos 13:37, 13. Jun. 2013 (CEST)Beantworten
Auf der Hilfeseite fehlt ein Beispiel für das andere Modul, welches auf "DiesesBeispiel" zugreift. Das könnte man noch ergänzen. Das andere schaue ich mir mal an. ÅñŧóñŜûŝî (Ð) 13:41, 13. Jun. 2013 (CEST)Beantworten
Es fehlt nicht; das Gegenstück steht bereits davor: Hilfe:Lua/Modul im Wiki #Einbindung. Eine praktische Anwendung unter Wikipedia:Lua/Modul/Vorlage:mwGit. --PerfektesChaos 14:30, 13. Jun. 2013 (CEST)Beantworten
Das habe ich inzwischen gesehen, aber die Zuordnung der Variablennamen war mir zunächst nicht klar. Inzwischen habe ich es herausgefunden. Ich würde das Beispiel gerne etwas konkreter gestalten, also mit tatsächlichen Zeilen statt Platzhaltern. Dazu erstelle ich sobald ich Zeit habe mal einen Entwurf. ÅñŧóñŜûŝî (Ð) 20:18, 13. Jun. 2013 (CEST)Beantworten
Das Modul ist jetzt unter Modul:Measure zu finden (es dürfte für eine größere Zahl Vorlagen nutzbar sein).

und

{{#invoke:Maß|Mass}} (für Vorlage:Mass)

Wer will, kann jetzt beim Testen mitmachen. ÅñŧóñŜûŝî (Ð) 17:05, 14. Jun. 2013 (CEST)Beantworten


  • FormatNum wurde aktualisiert.
  • Ich empfehle eine Testseite.
  • @Antonsusi: Bitte die als Kurzreferenz gedachten Hilfeseiten nicht mit endlosen Programmbeispielen fluten. Ich hatte dir bereits einmal angeboten, solche ausgedehnten Darstellungen unter Hilfe:Lua/Tutorial zu schreiben. Im Einleitungsabschnitt von Hilfe:Lua/Programmierung ist bereits ein Listenpunkt für „Tutorial“ vorgesehen.
--PerfektesChaos 10:40, 17. Jun. 2013 (CEST)Beantworten

Kann das Modul auch genutzt werden, um bei schweizbezogenen Artikel das Tausendertrennzeichen anders zu formatieren? Siehe dazu etwa Vorlage Diskussion:Infobox See#Tausendertrennzeichen. --Leyo 13:55, 17. Jun. 2013 (CEST)Beantworten

Das Modul greift zurzeit auf Vorlage:FormatNum (später wohl auf das Modul:FormatNum) zu. Es gibt auch zwei Vorlagen für verschiedene Maßzahlen: Vorlage:Mass für CH+LI, Vorlage:Maß für den Rest. Es ist also Aufgabe der Infobox-Vorlage, bei Schweizbezogenen Seiten die andere Vorlage zu nehmen. ÅñŧóñŜûŝî (Ð) 14:09, 17. Jun. 2013 (CEST)Beantworten
Parameter wie REGION-ISO oder HÖHE-BEZUG können als „Switch“ verwendet werden. --Leyo 14:12, 17. Jun. 2013 (CEST)Beantworten
Das wäre eine Möglichkeit. ÅñŧóñŜûŝî (Ð) 20:39, 19. Jun. 2013 (CEST)Beantworten
Nachdem ich das Modul schrittweise mit diversen Infoboxen und mit jeder Menge Testaufrufe getestet habe, ist es jetzt aktiv in Vorlage:Maß eingebaut. ÅñŧóñŜûŝî (Ð) 20:39, 19. Jun. 2013 (CEST)Beantworten

Parameterwerte trimmen

Aufgrund von dieser Anfrage habe ich ein Leerzeichen getilgt. Diese sollte das Modul allerdings selbst können (siehe auch den entsprechenden Hilfetext). Dies sollte für alle Module überprüft werden, darum auch hier die Mitteilung. (In Modul:Vorlage:FormatDate fehlt es, aber ich komm heut nicht mehr dazu. Wenn wer will, bitte sehr)

Gruß --Steef 389 20:31, 17. Jun. 2013 (CEST)Beantworten

Wikipedia:Lua/Werkstatt/Geo

Es gibt ganz offensichtlich kein wesentliches Interesse an einer Lua-Umsetzung des GeoHacks. Es hat sich jedenfalls niemand sonst gemeldet. Offensichtlich ist die Gemeinschaft mit der bisherigen Monstervorlage Vorlage:Coordinate zufrieden. Das diese mit mehr als 300.000 Einbindungen und ihren vielen Untervorlagen den Parser extrem belasten dürfte, ist offensichtlich nicht von Interesse.

Demgegenüber ist eine Umstellung u.A. aus folgenden Gründen viel Arbeit:

  • Die Vorlage ist extrem unübersichtlich. Kaum einer dürfte da zurzeit voll durchsteigen.
  • Es gibt zahlreiche Untervorlagen, welche schlecht dokumentiert sind, und welche wohl erheblich redundant sind.
  • Zahltreiche nachträgliche Erweiterungen ohne genaue Beschreibung.
  • Wichtige Autoren sind längst inaktiv
  • Es fehlt an einer Möglichkeit, die Baumstruktur der Vorlage darzustellen.
  • Zum Teil schlechte unübersichtliche Wikisyntax bei der bisherigen Codierung.

Es kostet also viel Arbeit, das Ganze zu analysieren und dann ein Modul zu schreiben. Aus der bisherigen Erfahrung folgt weiterhin, dass von einer Umsetzung die sofortige fehlerfreie Funktion erwartet wird. Wenn nicht, dann gibt es verbale Prügel. Eine sofort perfekte Umsetzung ist jedoch aus den o.g. Gründen kaum möglich.

Da ich absolut keine Lust habe, hier für viel Arbeit nur Gemotze und Pöbelei zu kassieren, habe ich daher beschlossen, das Thema nicht weiter zu verfolgen. Wer eine Umstellung auf Lua haben will, der soll meinetwegen von Enwiki abkopieren und versuchen, die spezifischen Änderungen (z.B. schweizer Landeskoordinaten) darin einzubauen. Eine Neuentwicklung steht ebenfalls jedem frei. ÅñŧóñŜûŝî (Ð) 15:51, 22. Jun. 2013 (CEST)Beantworten

Hallo, Antonsusi. Schade, daß du dich durch die Kritisierer hast entmutigen lassen.
Ich habe am 27. Juni angefangen ein Modul dafür in der Esperantowikipedia zu erstellen: eo:Modulo:Coordinates. Es basiert auf der französischen und der spanischen Fassung des Moduls. Von der französischen Version stammt die Unterstützung für die Trennung der Parameter durch /. Von der spanischen Version stammt die Unterstützung für das Dezimalkomma, wobei der im Englischen übliche Dezimalpunkt ebenfalls unterstützt wird.
Allerdings ist mir beim Testen aufgefallen, daß alle Versionen einige Bugs haben. Diese sind in der Esperantoversion behoben.
  • Sie geben nichts zurück, wenn bei den Paramtern format und/oder display unsinnige Werte angegeben werden. Ich lasse das Esperantomodul einfach auf die jeweilige Defaultwerte zurückfallen, obwohl ja auch der Einbau einer Wartungskategorie denkbar ist.
  • Die Funktion dms2dec läuft nicht richtig, denn sie unterscheidet nicht zwischen Nord und Süd bzw. Ost und West. Sie gibt also immer negative Werte zurück. (In der englischen Version ebenfalls behoben, und zwar nach meinem Hinweis.)
Gruß --Tlustulimu (Diskussion) 11:21, 30. Jun. 2013 (CEST)Beantworten
Die extreme "Zerfledderung", der teilweise grottenschlechte Code (bei dem jedes Leerzeichen stört), die vielen nicht dokumentierten Erweiterungen und das Fehlen wichtiger ehem. Autoren macht es m.E. unmöglich, hier zuverlässig eine exakte 1:1-Kopie hinzubekommen. Außerdem ist es auch nicht unbedingt sinnvoll. Es gibt garantiert redundanten Code und die Vorlage müsste dringend gestrafft werden. Es ist einfach zuviel hineingepackt worden. Zusammen mit dem Zoff, der hier schon wegen zwei Stunden fehlender Funktion in Artikeln gemacht wurde, ist es nur konsequent, das Thema zu lassen. Der von (teilweise besserwisserischen und unverschämten) Usern erhobene Anspruch, direkt eine perfekte Umstellung zu aktivieren, ist nicht zu erfüllen, denn diese Vorlage kann ohne "online zu gehen" nur zum Teil getestet werden. Dafür sind es zu viele Zweige und z. B. auch zu viele Einbindungen, welche sich auf Fehlermeldungen verlassen. Ich wünsche dir viel Glück. ÅñŧóñŜûŝî (Ð) 11:36, 30. Jun. 2013 (CEST)Beantworten
Hallo, Antonsusi. Heute habe ich mich an die Vorlage Coordinates in der Esperantowikipedia getraut. Allerdings bearbeite ich sie nicht direkt, sondern habe erst mal eine Testversion erstellt: eo:Ŝablono:Koordinato/provejo. Dort funktioniert bereits ein Teil der Koordinatenfunktionen (NS, EW, teilweise auch text, type, region, name, dim). Ich muß noch Überprüfungen auf sinnvolle Werte und den Kartenteil mit Lua ausstatten. Das dürfte sicher noch komplizierter sein als die Koordinaten. Ich habe für den Koordinatenkram der Vorlage ein neues Lua-Modul eo:Modulo:Coordinates2/provejo erstellt, damit in dem bereits länger vorhandenen Modul der Überblick nicht so schnell verloren geht. Einen Teil des Codes habe ich in der spanischen Wikipedia entdeckt, denn ich kann mir nicht alles alleine ausdenken.
Außerdem muß ich mir noch etwas einfallen lassen, wie ich die Fehlermeldung in eo:Ŝablono:Koordinato/provejo so anpassen kann, daß sie wie bei der bisherigen Vorlage aussieht. Gruß --Tlustulimu (Diskussion) 20:59, 3. Jul. 2013 (CEST)Beantworten
Hallo, Antonsusi. Die Entwicklung macht Fortschritte. Der erzeugte HTML-Code vom genannten Modul sieht schon ziemlich so aus wie der von der bisherigen Vorlage (eo:Ŝablono:Koordinato/+. Die eo:Ŝablono:Koordinato lokalisiert nur die Parameter.), wobei sogar die Mikroformate funktionieren. Das Verstecken der Nichtstandardausgabe (also "geo-nondefault") habe ich entsorgt, weil damit unnötig der Server beschäftigt wird und der Quelltext unnötig verkompliziert wurde. Jetzt fehlen noch einige Dinge:
Gruß --Tlustulimu (Diskussion) 21:05, 9. Jul. 2013 (CEST)Beantworten
Hallo, Antonsusi. Ich habe gerade deine Funktion"WGS84toCH1903" von deiner Testseite Benutzer:Antonsusi/Spielwiese/Modul:Coordinate für die Schweizer Landeskoordinaten in eo:Modulo:Coordinates/provejo eingebaut, allerdings umbenannt in convert_dec2ch1903 und etwas angepaßt. Die ersten Tests liefen nämlich nicht. Aktuelle Ergebnisse sind auf meiner Benutzerunterseite für Lua zu sehen. Ich habe noch ein Problem mit dem Parameter prec, der der Funktion übergeben wird. Welche Werte kann er haben? Wie könnte ein Skript für die Umwandlung von dms in ch1903 aussehen? Gruß --Tlustulimu (Diskussion) 21:39, 10. Jul. 2013 (CEST)Beantworten
Du kannst sowas nicht leicht herausfinden. Großflächige Objekte wie z.B. Kanton Glarus haben zwar gerundete Gradwerte, aber keine gröber gerundete Angaben in CH1903. Bisher habe ich auch nur ganze Zahlen gesehen und keine stark gerundeten. Nimm einfach eine feste Rundung auf Einer vor. Wenn's nicht gefällt gibt's von den Besserwissern hier in der WP die oben erwähnte verbale Prügel. Man verlangt genaugenommen, dass man sowas mit großem Aufwand ermittelt. Über die ganze Aufgabe hochgerechnet sind das etliche Stunden. Das ist genau einer der Gründe, warum ich das nicht mehr weitermachen will. Ich empfehle dir folgendes:
  • Versuche durchzusetzen, dass nach der Umstellung zumindest anfangs nicht die exakte Funktionalität 100%ig gleich sein muss und du die diversen Extrafeatures nach und nach einbauen darfst. Wenn das auf Missfallen stößt, dann lass das ganze Thema.
  • Wenn du es umsetzt, dann organisiere ein System für Fehlerrückmeldungen, damit du der Sache nachgehen kannst.
  • Als Drittes kannst du Sachfragen klären. Du kannst auch versuchern, von Benutzer:Cactus26 das Leseskript für Vorlagenparameter zu bekommen. Dann kannst du dir die Aufrufe als Tabelle zeigen lassen. Die Vorlagen findest du übrigens hier.
Gruß von ÅñŧóñŜûŝî (Ð) 18:36, 11. Jul. 2013 (CEST)Beantworten

Liste der Biografien

Kopiert aus Wikipedia:WikiProjekt Vorlagen/Werkstatt#Liste der Biografien:

Hallo. Es gibt ja die Liste der Biografien mit sehr vielen Unterseiten, siehe z.B. Liste der Biografien/Muli. Dort gibt es im oberen und unteren Bereich Navigationsblöcke, die jeweils aus mehreren Vorlagen bestehen. Nun kam zunächst die Idee auf, die Navigation einklappbar zu machen und in diesem Zusammenhang wäre es ganz schön, wenn statt mehrerer Vorlageneinbindungen, dies mit einer zu machen wären, in der Form {{Vorlage:Navigation LdB|Muli}}. Die spannende Frage ist, ob es mittels Lua möglich ist, automatisch nur die Seiten anzuzeigen, die vorhanden sind. Also für "Muli" müsste folgendes gemacht werden: 1. Buchstaben "M", also in der ersten Zeile alle Seiten auflisten, die die Form "M[a-z]" haben (oder besser: "M."). In der zweiten Zeile dann alle der Form "Mu." und in der dritten diejenigen der Form "Mul.". Natürlich nur diejenigen Seiten, die existieren. Erschwerend kommt hinzu, dass neben "Mu." auch "Mu.-Mu." berücksichtigt werden sollte, siehe z.B. Liste der Biografien/Mea–Mee.

Ist das technisch mittels Lua möglich? Kann das Vorhandensein von Seiten abgefragt werden? Es wäre halt schön, auf die verzichten zu können. --APPER\☺☹ 14:10, 22. Jun. 2013 (CEST)Beantworten

  1. Ich werde dich nach gegenseitiger Kenntnisnahme und Einverständnis hier herausoperieren und in die Wikipedia:Lua/Werkstatt verschieben.
  2. Vorab meine ersten Gedanken. Den Rest gibt es nach Sonnenuntergang, wenn mein Frischluftbedürfnis gestillt wurde und die Nachtkühle mir wieder einen klaren Kopf beschert.
    • Lua kann anders als Vorlagensyntax elegant mit unbegrenzten Mengen unbenannter Parameter hantieren.
    • Die Frage nach der Existenz einer Seite ist mit Lua genauso teuer und Server-belastend wie ein #ifexist in Vorlagensyntax.
      • Ich würde diesen Weg lieber vermeiden wollen.
    • Wer das aber sehr gut wissen wird, ist dein Bot bzw. die dahinter stehende Datenbank.
      • Ich hätte es lieber so, dass der Bot von diesem Wissen beim Generieren der Seite Gebrauch macht.
    • Lua kann anders als Vorlagensyntax Zeichenketten splitten; das heißt statt unterschiedliche Parameter über Pipe zu trennen, können sie genauso mit Leerzeichen, Komma, Schrägstrich oder was immer separiert werden.
    • Dies zusammengefasst würde ich mir lieber folgenden generierten Seitenkopf vom Bot wünschen (Daten fiktiv):
        {{Index Biografien
         |1=M
         |2=Ma Me Mi Ml Mo Mr Mu My
         |3=Mub Muc Mud Mue Muf Mug Muh Muk Mul Mum Mun
        }}
Beachte das angenommene Fehlen von Mua, Mui, Muj.
Der Bot weiß beim Durchpflügen deiner Datenbank sowieso, wann er einen neuen Unterbuchstaben auf welchem Level öffnet, und kann bis dahin den Vorlagen-Stub auf dem Level darunter weiter benutzen.
Sonniges Wochenende --PerfektesChaos 15:42, 22. Jun. 2013 (CEST)Beantworten
Das sieht ja ganz gut aus. Aber ist #ifexist wirklich so aufwändig? Steak 23:09, 22. Jun. 2013 (CEST)Beantworten


  • Der Bot müsste aus den ihm bekannten Informationen die folgende Vorlageneinbindung generieren; Daten teils fiktiv:
        {{Unterseiten-Index-Staffelung
         |ABCDEFGHIJKLMNOPQRSTUVWXYZ+
         |aceiloruy
         |bcdefghklmn
         |abcdefghijklmnorstuvyz
         |h='''[[Biografie]]n:''' &nbsp;
        }}
  • Beachte beim letzten abc-Wert: Die Buchstaben pqwx fehlen, weil es ausweislich Präfixindex keine solchen Namen gibt: Liste der Biografien/Mulp * Liste der Biografien/Mulq * Liste der Biografien/Mulw * Liste der Biografien/Mulx
  • Unabhängig davon, wovon etwas Unterseite sein soll (sieht Lua am Namen der dargestellten Seite; bzw. würde mit ../ voll-relativ gehandhabt werden) werden auf den vier Leveln die Index-Listen generiert.
    • Universell einsetzbar für alle analogen Fälle.
  • Ein Pluszeichen gefällt mir besser als das Fragezeichen; bei dem würde ich eine Hilfeseite erwarten. Die Plus-Seite müsste dann bei der mir vorschwebenden Programmierung eine Weiterleitung auf /Diverse sein.
  • Aus der obigen Vorlageneinbindung kann mit Lua ungefähr folgendes Design generiert werden (Details und Dekoration nach Belieben):


Biografien:   A  B  C  D  E  F  G  H  I  J  K  L  M  N  O  P  Q  R  S  T  U  V  W  X  Y  Z  +


  • @Steak: Es sind 75 teure Datenbankabfragen erforderlich; weil unten wiederholt 150 pro Seite. Das ist merkbar in CPU-Sekunden und Rendering-Zeit. Das absolute Limit, bei dem die Seite nicht weiter gerendert wird, liegt bei 500 teuren Funktionsaufrufen.

Schönen Sonntag --PerfektesChaos 11:20, 23. Jun. 2013 (CEST)Beantworten

Namensraum abfragen

Hallo. Wie kann ich den Namensraum abfragen, in dem die einbindende Seite eines Skriptes liegt? Ich möchte in einem Modul die Kategorien nur erscheinen lassen, wenn es im Artikelnamensraum eingebunden wird. Sonst landen auch Projektseiten in Wartungskategorien, was ja eventuell nicht so sinnvoll ist. Oder? Gruß --Tlustulimu (Diskussion) 13:35, 4. Jul. 2013 (CEST)Beantworten

Wenn du damit die alleroberste, dargestellte, in der URL erscheinende Seite meinst: Hilfe:Lua/Links #mw.title in Verbindung mit Hilfe:Lua/Umgebung #Namensraum-Element
Anwendungsbeispiel: eo:Modulo:Ŝablono:LuaModuleDoc Zeile 319 (Funktion navigation ab currentTitle [global]).
Mahlzeit --PerfektesChaos 14:03, 4. Jul. 2013 (CEST)Beantworten
Danke für den Hinweis. Ich hatte mir das Modul sogar schon angeschaut, aber irgendwie nicht ganz kapiert, daß dort der gesuchte Code drinsteht. Jetzt klappt es mit der selektiven Kategorisierung in eo:Modulo:Coordinates2/provejo. Gruß --Tlustulimu (Diskussion) 14:24, 4. Jul. 2013 (CEST)Beantworten

Implementierung der Schulze-Methode für Abstimmungen und Wahlen

(Von Wikipedia Diskussion:Lua/Modul hierher verschoben. --TMg 12:17, 7. Jul. 2013 (CEST))Beantworten

Nachdem ich auf Wikipedia Diskussion:Helferlein#Auswertung von Abstimmungen nach der Schulze-Methode auf bereits vorhandenen Lua-Code hingewiesen wurde (Danke an ThE cRaCkEr) frag ich mal hier:

  • Ist jemandem eine bereits fertige Implementierung in der Wikipedia bekannt?
  • Kann/mag die jemand auf der Basis des Codes unter http://www.public-software-group.org/preftools leisten? (Nicht schimpfen, ich weiß: Der Teil der Frage gehört in die Werkstatt.)

Meiner Meinung nach müsste für den konkreten Fall die Implementierung von schulze-simple sinnvoll sein. Anka Wau! 00:04, 7. Jul. 2013 (CEST)Beantworten

Es ist zwar richtig, dass es unter http://www.public-software-group.org/preftools etwas gibt, in dem ein kleines Programm steckt, das in Lua geschrieben wurde.
  • Dieses ist allerdings dazu gedacht, auf einem Linux-Rechner interaktiv ausgeführt zu werden.
  • Es erwartet formatierte Dateien auf dem Rechner.
  • Sowas haben wir alles in einer Wiki-Seite nicht.
  • Bei uns ist das Lua etwas wie eine Vorlage, und ich wüsste erstmal nicht, wie du die Eingabedaten dort hineinbringen möchtest. Ich will es nicht ausschließen, dass du irgendwas als Vorlagenparameter in eine umgeschriebene Variante dieses Lua-Programms hineinpraktiziert bekommst, und die zeilenweisen Inhalte der Dateien mit irgendwelchen Trennzeichen gliederst (es wird etwas mit Kommata und Semikolon zwischen Zahlen erwartet) und das Ergebnis dieser Vorlage ist irgendwas; aber viel Vertrauen hätte ich erstmal nicht dazu.
  • Bei den von dir genannten Vergleichsfällen hatte wohl irgendjemand mit irgendwas auf seinem PC irgendwas ausgerechnet und danach das Endergebnis in die Wiki-Seite hineingeschrieben. Deine Anfrage hier impliziert, dass sich die Berechnung vollständig innerhalb der Wiki-Seite abspielen würde.
Schönen Sonntag --PerfektesChaos 12:12, 7. Jul. 2013 (CEST)Beantworten
(Nach BK:) Ich bin ebenfalls verwundert, warum das ein Lua-Modul sein soll? Und wie das in einem Meinungsbild funktionieren soll? Falls ein so undurchsichtiger Auswertungsmodus gewünscht ist (was ich mir nicht vorstellen kann), dann kann es durchaus sinnvoll sein, den Abstimmenden eine Vorlage in die Hand zu geben, die sie ausfüllen sollen und die sofort prüft, ob die Eingabe valide ist. Aber das hat nichts mit Lua zu tun, dazu genügt eine schlichte Vorlage. Die Auswertung noch einmal neu zu implementieren, halte ich für unsinnig, wenn es bereits fertige Implementierungen gibt, die man dafür nutzen kann. --TMg 12:17, 7. Jul. 2013 (CEST)Beantworten
Meine Idee war tatsächlich, die formatierten Dateien durch eine Wikipedia-Seite zu ersetzen. Die Strings aus der eigentlichen Abstimmung könnten aufbereitet und auf eine (oder zwei) Seite geschrieben werden, die dann als Input für die Auswertung dient. Damit ist der Vorgang transparent. Wenn dann auch noch das Auswertungsscript in der WP liegt, so dass jeder es für eine beliebige Seite aufrufen kann und damit sehen kann, was es tut, sollte die Akzeptanz höher sein als bei einem Offlineverfahren. Sicher sind aber auch Auswertungen denkbar, die an irgendjemanden delegiert werden, wobei das verwendete Programm (wie auch jetzt ja schon) offengelegt ist. Aber dann ist die Auswertung nur für technisch versierte Benutzer nachvollziehbar. Anka Wau! 12:32, 7. Jul. 2013 (CEST)Beantworten
Aha.
Prinzipiell ist es technisch möglich, auf einer Wiki-Seite ein Lua-Modul mit den Eingabedaten zu füttern und gleichzeitig das Ergebnis anzuzeigen.
Wenn du jemand findest, der das machen möchte – nur zu. VG --PerfektesChaos 12:41, 7. Jul. 2013 (CEST)Beantworten

Vorlage:Information & Lua

Von meiner Benutzerdiskussionsseite (Permalink) hierher verschoben. --Leyo 00:44, 12. Jul. 2013 (CEST)Beantworten
Inzwischen habe ich mich weiter in Lua-Möglichkeiten und die für die deWP sinnvolle Modulstruktur eingearbeitet. Dabei habe ich folgende Schlussfolgerung gezogen:

  • Zu der Vorlage:Information soll es ein eigenständiges Modul geben; es wird heißen: Modul:Vorlage:Information.
  • Dieses Modul kennt auch den Quelltext der Dateibeschreibungsseite, in die es eingebunden ist. Damit sind folgende Zusatzaufgaben lösbar:
    • Ist die Vorlage mehrfach in dieselbe Dateibeschreibungsseite eingebunden? Analoger Fall auf BKS
    • Gibt es Interlanguage-Links? Dann sollte automatisch kategorisiert werden; oder das Vorhandensein solcher Kats gecheckt werden. Ich verstehe Interlanguage so, dass es sich um Medien handelt, die nicht auf Commons sollen oder dürfen, und deshalb von mehreren Wikipedien lokal gehalten werden.
    • Gibt es weitere Widersprüche, die sich aus den unterschiedlichen Vorlagen in einer Seite ergeben? Wenn VorlageX drinsteht, darf VorlageY nicht vorhanden sein.
  • Wenn überhaupt, dann würde das Modul aber auch gleich die komplette Programmierung der Vorlage:Information übernehmen; von der bliebe nur ein Modul-Aufruf wie in Modul:Vorlage:mwGit.

Sonnigen Sommer und immer mit der Ruhe --PerfektesChaos 12:51, 7. Jul. 2013 (CEST)Beantworten

Wenn jede Vorlage jetzt in eine Modul-Seite umgewandelt wird, stellt sich mir die Frage, wo der Modul-Gedanke ist. Für mich ist ein Modul ein kleines Skript, welches mir eine Spezialaufgabe abnimmt, wie zum Beispiel das überprüfen der Parameter.
Das Zusammenbauen der Wiki-Tabelle sollte aus meiner Sicht aber weiterhin in der Vorlage bleiben, ist vermutlich einfacher und übersichtlicher als zwischen den Lua-Befehlen. Zusätzlich ist dann auch eine größere Gruppe an Benutzer in der Lage das zu verstehen/anzupassen/zu warten. Es gibt sicher einige Benutzer, die die jetzige Vorlagensyntax so langsam verstanden haben/damit umgehen können, aber jetzt nicht noch mehr, nämlich Lua, lernen wollen. Der Umherirrende 17:45, 9. Jul. 2013 (CEST)
Es ist überhaupt nicht die Rede davon, „jede Vorlage“ als Modul umzuwandeln.
Es geht um folgende Konstellationen:
Bei den letzteren kannst du mir mal vormachen, wie du das nur mit Vorlagensyntax hinbekommen willst.
Für kleine Vorlagen, die wie eine Navileiste nur gelegentlich eine einzelne Funktion benötigen, stehen die allgemeinen Bibliotheksmodule zur Verfügung. Von ein paar Tausend Einbindungen ist auch nicht die Rede; also etwa
Sobald hingegen komplexe Verschachtelungen mit mehreren Zeichenketten und numerischen Werten und Datum anstehen, Schleifen über Iteratoren oder eine unbegrenzte Anzahl von Parametern, wird ein Lua-Modul einfacher, sicherer oder überhaupt der einzige Weg. Sobald zwei oder drei #invoke in einem Pfad vorkämen, ist schon zur Performance-Steigerung über ein Modul nachzudenken.
Bei dem in diesem Thread diskutierten Fall ist davon die Rede, jede Dateibeschreibungsseite daraufhin zu untersuchen, ob etwa die Vorlage:Information mehrfach eingebunden sei oder ob es sonst irgendwelche Konflikte zwischen Syntaxelementen und/oder Vorlagen geben würde; oder ob eine lokale Datei mit Interlanguage eine Kategorisierung auslösen sollte. Wie machst du denn das mit Vorlagensyntax?
Von den Monstern mit Hunderttausenden an Einbindungen haben Programmier-Anfänger ohnehin die Pfoten zu lassen; um banale Allerwelts-Minivorlagen geht es ja gar nicht.
VG --PerfektesChaos 22:57, 9. Jul. 2013 (CEST)Beantworten
Das wären ja jeweils Spezialaufgaben, die man gerne über Lua machen kann, aber wie gesagt, man muss nicht die Erzeugung der Tabelle auslagern, weil dies mit der Überprüfung von Parametern und doppelter Verwendung nichts zu tuen hat.
Erst per #invoke das Modul aufrufen und darin per .transclude einen vorgefertigen Kopf einbinden, klingt jetzt auch nicht performanter als den Kopf in der Vorlage zu lassen und dahinter das eine Vorlagen-Modul zur Überprüfung der Sachen aufzurufen oder halt jeweils das kleine Modul zur Überprüfung der Pflicht-/Optionalparameter, doppelte Verwendung etc. Ist halt Geschmackssache, ob man das über #invoke aus der Vorlage jeweils einzeln aufruft oder im Modul die Submodule aufruft. Code-Dopplung der Bibliotheksfunktionen wird auch keine Lösung sein und mehr Arbeit verursachen als millionenfach eingebundene Module. Der Umherirrende 16:50, 10. Jul. 2013 (CEST)

Das Hauptanliegen von WP:DÜP ist IMO Seiten mit ungültigen Parameternamen in eine Wartungskategorie einzusortieren. Zusätzliche Features wie das oben erwähnte Feststellen einer mehrfach eingebundenen Vorlage:Information in einer Seite fände ich auch sinnvoll und nützlich. Eure weitere Diskussion ist mir zu technisch, um da wirklich mitzureden… --Leyo 00:44, 12. Jul. 2013 (CEST) PS. Ggf. von Interesse: commons:Template talk:Information#Adding TemplateData informationBeantworten

Zahlenproblem

Hallo. Wie kann man mit Lua feststellen, ob eine gegebene Zahl eine natürliche Zahl ist oder ob sie eine reelle Zahl mit zwei Nachkommastellen ist? Ich habe zwar schon etwas gesucht, aber nichts passendes gefunden. :-( Gruß --Tlustulimu (Diskussion) 21:16, 16. Jul. 2013 (CEST)Beantworten

(BK) Du meinst wohl den Unterschied zwischen "123" und "123.00"? Mathem. gar nicht. Du kannst nur einen noch als String (also vor einem tonumber()) vorhanden Parameter mit Stringfunktion vergleichen:
  local sx ="123.00" -- Fall A
  -- local sx ="123" -- Fall B
  local ix = tonumber(sx)
  if ( ix == math.floor(ix) then
    -- Ganze Zahl
    if string.len(sx) ~= string.len(tostring(ix)) then
      -- hier liegt "123,00" vor (Fall A)
    else
      -- hier liegt "123" vor (Fall B)
    end
  else
    -- keine ganze Zahl
  end
(Angabe ohne Gewähr) ÅñŧóñŜûŝî (Ð) 21:39, 16. Jul. 2013 (CEST)Beantworten
Mit local numstr = tostring(<Zahl>) in eine Zeichenkette umwandeln und mit local startPos, _ = string.find(numstr, ".") schauen, ob startpos ungleich nil (d.h. ein Dezimalzeichen vorhanden und damit eine reelle Zahl) und dann mit string.len(numstr) - startPos die Anzahl der Nachkommastellen ermitteln. Das ist ungetestet, sollte aber so funktionieren. --Mps、かみまみたDisk. 21:35, 16. Jul. 2013 (CEST) PS: Mit Antonsusis Code kann man nicht ermitteln, ob es genau zwei Nachkommastellen sind.Beantworten
Richtig. Mir ging es nur um das Grundprinzip "string" versus "number". Der genaue Code hängt vom Einzelfall ab. ÅñŧóñŜûŝî (Ð) 21:56, 16. Jul. 2013 (CEST)Beantworten
Alternativ: Mustererkennung (match), weil Vorlagenparameter bereits als Zeichenketten vorliegen. Nach Umwandlung wäre Kommanullnull identisch Ganzzahl.
Siehe Wikipedia:Lua/Modul/TemplatePar #Parameterformat für weitere Beispiele; auch mit Leerzeichen davor und dahinter möglich.
  • "^[1-9][0-9]*$"
  • "^[1-9][0-9]*%.[0-9][0-9]$"
LG --PerfektesChaos 21:42, 16. Jul. 2013 (CEST)Beantworten