Wikipedia Diskussion:Lua/Modul/URLutil
Vorlagen- programmierung |
Diskussionen | Lua | Test | Unterseiten | ||||||
Modul | Deutsch | English
|
Esperanto | Dolnoserbski | Hornjoserbsce | Modul: | WP:Lua |
isIP4 läuft nicht richtig
BearbeitenHallo. Mir ist soeben ein ziemlich blöder Fehler in isIP4 aufgefallen. Vergleiche doch mal:
- {{Benutzer|84.177.167.75}} -> 84.177.167.75 (Diskussion • Beiträge • SBL-Log • Sperr-Logbuch • globale Beiträge • Whois • GeoIP • RBLs) //
fehlerhaftjetzt richtig - {{Benutzer|25.4.6.12}} -> 25.4.6.12 (Diskussion • Beiträge • SBL-Log • Sperr-Logbuch • globale Beiträge • Whois • GeoIP • RBLs) //
fehlerhaftjetzt richtig - {{Benutzer|127.0.0.1}} -> 127.0.0.1 (Diskussion • Beiträge • SBL-Log • Sperr-Logbuch • globale Beiträge • Whois • GeoIP • RBLs) // richtig.
Mit isIP6 klappt es nämlich:
- {{Benutzer|2001:A60:18EE:1100:C1FC:37C6:9363:5413}} -> 2001:A60:18EE:1100:C1FC:37C6:9363:5413 (Diskussion • Beiträge (/64) • SBL-Log • Sperr-Logbuch (/64) • globale Beiträge • Whois • GeoIP • RBLs)
Ich denke, daß der reguläre Ausdruck in isIP4 nicht stimmt, habe aber zu wenig Ahnung, was genau an ihm falsch ist. Komisch ist ja, daß das englische Modul einen ganz anderen regulären Ausdruck verwendet. Warum? Gruß --Tlustulimu (Diskussion) 21:26, 14. Jun. 2013 (CEST)
- Ich habe gerade etwas getestet, allerdings in der Esperanto-Wikipedia: eo:Modulo:URLutil/provejo. Der Code für ipISv4 ist ein Mix aus dem hiesigen und dem "englischen". Der Fehler ist in eo:Modulo:URLutil/provejo/dokumentado verschwunden. --Tlustulimu (Diskussion) 21:57, 14. Jun. 2013 (CEST)
- Du hast völlig recht. Dummer Bug; eine kleine Fragezeichen-Jonglage beseitigt das Problem.
- Mein RegExp sortiert vorher schon aus. Leider hier etwas zu drastisch.
- URLutil hat sowieso drei neue Funktionen und neue Protokolle gelernt; da lohnt sich ein Update auf eo.
- Leider streikt Beta-dewiki im Moment; vielleicht gibt sich das bis morgen.
- Gute Nacht einstweilen --PerfektesChaos 23:33, 14. Jun. 2013 (CEST)
- Hallo, PerfektesChaos. Die drei neuen Funktionen und Protokolle sind schon in eo:Modulo:URLutil. Es muß also nur noch isIPv4 korrigiert werden. Ich habe nur die Dokumentation noch nicht ergänzt, weil es schon ziemlich spät war. Gruß --Tlustulimu (Diskussion) 09:23, 15. Jun. 2013 (CEST)
- Ich habe jetzt die eo-Version kopiert; Sichten müsstest du noch.
- Die nieder- und obersorbischen Varianten magst du bitte selbst aktualisieren.
- Ich musste den Vormittag abwarten, weil gestern Abend Beta-dewiki und ich down waren und ich grundsätzlich und bei 8500 produktiven Einbindungen erst vorher gründlich durchzutesten wünsche.
- Hintergrund der Aktion war, dass ich in Bezug auf führende Nullen mäkeliger bin als die enWP. Eigentlich würde ich überhaupt keine führenden Nullen sehen wollen, aber das ist an dieser Stelle zuviel Aufwand.
- Es ist Interpretationsfrage, was man noch als gültiges Zahlenformat akzeptiert. Keine der Systemfunktionen liefert eine überflüssige führende Null; es müsste sich dann um manuell manipulierten Unfug handeln, der vielleicht einmal in einer anderen Software Probleme machen könnte und irgendeine Feldbreite überlaufen lässt.
- Soviel an dieser Stelle; danke für den Hinweis. --PerfektesChaos 11:19, 15. Jun. 2013 (CEST)
- Hallo, PerfektesChaos. Danke für deine schnelle Korrektur. Ich habe die beiden sorbischen Versionen auch schon aktualisiert, obwohl ich sie gerade erst erstellt hatte. Gruß --Tlustulimu (Diskussion) 14:18, 15. Jun. 2013 (CEST)
seltsames Verhalten bei Fragment. Umgang mit 2 gleichen Keys in Query, neu TLDs
Bearbeiten- Fragment scheint derzeit ohne "1=" bei einer URL mit "=" zu funktionieren, mit "1=" wird auch "1= #Fragment" ausgegeben.
- Wenn zwei gleiche benannte Keys in einem Query vorkommen ist scheinbar nur das erste auftreten aufrufbar.
- TLDs mit UTF-8 Zeichen jenseits 1252 werden nicht korrekt erkannt.
Frohes Schaffen — Boshomi ☕⌨☺ 21:23, 19. Sep. 2014 (CEST)
- "1=" – siehe dazu:
- Mehrfache Zuweisungen zum gleichen Parameternamen: Wie auch der vorstehende Punkt ist dies ein allgemeines Problem der Zuweisungen von Parameterwerten in Vorlagen wie Lua; der Parser ignoriert klaglos vorangegangene Zuweisungen und verwendet nur die letzte.
- TLDs mit UTF-8 Zeichen
- Klingt ja interessant; hättest du mal ein konkretes Beispiel?
- Mir fallen nur TLD mit ASCII ein:
.org .de .berlin
- Frohes Schaffen --PerfektesChaos 10:44, 20. Sep. 2014 (CEST)
- UTF8: siehe http://सीडैक.भारत/index.aspx?id=products_services ; habe ich schon umseitig eingetragen. Da derzeit fast wöchentlich weitere dieser gesponserten TLDs entstehen, muss man wohl darauf Rücksicht nehmen, soll ja auch für andere Sprachversionen gut funktionieren. Das Regexp im Kommentar stammt offensichtlich aus RFC-3986 Appendix B. Parsing a URI Reference with a Regular Expression Frohes Schaffen — Boshomi ☕⌨☺ 11:35, 20. Sep. 2014 (CEST)
- Wir haben davon auch schon einige im ANR: https://tools.wmflabs.org/giftbot/weblinksuche.fcgi?limit=500&offset=0&target=http%3a%2f%2fxn--%25&namespace=&associated=0 (Firefox übersetzt das automatisch in UTF8 Zeichen, Chrome bevorzugt Ascii)
- Die Sache mit den zwei gleich benannten Optionen war ein Zufallstreffer, ich hatte eigentlich nur eine URL mit einem "ö" gesucht. Frohes Schaffen — Boshomi ☕⌨☺ 11:43, 20. Sep. 2014 (CEST)
- UTF8: siehe http://सीडैक.भारत/index.aspx?id=products_services ; habe ich schon umseitig eingetragen. Da derzeit fast wöchentlich weitere dieser gesponserten TLDs entstehen, muss man wohl darauf Rücksicht nehmen, soll ja auch für andere Sprachversionen gut funktionieren. Das Regexp im Kommentar stammt offensichtlich aus RFC-3986 Appendix B. Parsing a URI Reference with a Regular Expression Frohes Schaffen — Boshomi ☕⌨☺ 11:35, 20. Sep. 2014 (CEST)
Spezialverhalten Mediawiki nach doppelten Hochkomma
Bearbeiten- Fehler nach " => siehe umseitig; ein weiteres Beispiel wäre http://books.google.at/books?id=q_ngAAAAMAAJ&q=%22resteessen%22+s%C3%BClze&dq=%22resteessen%22+s%C3%BClze&redir_esc=y wobei Mediawiki den Link geleich direkt zu %22 umwandelt! (siehe diesen Quelltext) Frohes Schaffen — Boshomi ☕⌨☺ 13:52, 20. Sep. 2014 (CEST)
- Ich kann die numerischen Entities gern gleich escapen, so dass sie nicht mit dem Fragment ins Gehege kommen.
- Zu eins drüber: Diese sogenannten „IRL“ sind unschädlich hinsichtlich des eigentlichen Domain-Namens, aber als TLD hatte ich die
.рф
bislang nicht mitbekommen.- Sie verschleiern übrigens in unangemessener Weise die Herkunft der Domains, und man sollte sowas durch ein offensichtliches http://r1a.ru/ ersetzen, damit erkennbar ist, wo das Zeugs herkommt. Российская Федерация ist nicht für jeden lesbar, und Thai oder was das da ist kann ich auch nicht.
- Die Verwendung der IRL wird übrigens in unseren WP:WEB #Einzelrichtlinien #11 missbilligt, weil sie Barrieren für Leser schafft. Nicht alle Browser können dem folgen.
- Gleichwohl werde ich das dem Modul beibringen, obwohl Lua nur eingeschränkte RegExp-Möglichkeiten hat und das etwas komplizierter wird.
- Eine Abfrage, ob eine URL Punycode enthält, kann ich als neue Funktion hinzufügen.
- Es ist nützlich, ohne breite Reklame die neuen Modulfunktionen im Beta-Test zu haben.
- VG --PerfektesChaos 15:15, 20. Sep. 2014 (CEST)
- Das hat sicherlich Zeit, gut getestet sind die Erfolgsaussichten auf eine schnelle Verbreitung auch deutlich besser.
- Wichtig ist, dass vor allem die Basisfunktionalität sicher funktioniert. Spezialfälle wie die Ausnahmen ala %22 haben nur geringe Priorität. Zur Not kann man das in die Doku aufnehmen, und Alternativen empfehlen.
- btw: ich habe soeben eine neue Vorlage {{Modultest}} erstellt, mit deren Hilfe die Lua-Testseiten etwas übersichtlicher würden. Die Tabellensyntax ist arg schwerfällig. Gelegentlich wäre ja ganz gut, die Testfälle vor der Programmierung zu schreiben, und dann zu versuchen, bis alle Testfälle auf zu bringen. Sowas ist aber auch zeitraubende Arbeit. Frohes Schaffen — OkBoshomi ☕⌨☺ 23:54, 20. Sep. 2014 (CEST)
- Ich würde dich als Ersteller bitten, die Vorlage:Modultest gleich wieder löschen zu lassen.
- Sie verursacht mehr Verwirrung sowie Verwaltungs- und Pflegeaufwand, als es je jemandem helfen würde.
- Das ist gut gemeint, aber unbrauchbar.
- Sie kennt nur unbenannte Parameter.
- Sie escaped weder in der Eingabe noch Erwartung und vor allem nicht im Resultat die Syntaxelemente und richtet Syntaxbruch an.
- Sie ist ungeeignet zur Erprobung, ob die Handhabung von den Parameterwert umgebenden Leerzeichen richtig programmiert ist.
- Du hast nicht die allerleiseste Ahnung, wo und wie ich Module entwickle.
- Was du dir vorstellst, wird schon längst eingesetzt; beispielsweise:
- Wikipedia:Lua/Modul/TemplatePar/test vergleicht automatisiert erwartetes und tatsächliches Ergebnis.
- Wikipedia:Lua/Modul/DateTime/Test/create desgleichen; realisiert in Wikipedia:Lua/Modul/DateTime/Test/f
- Deine Bemerkungen, wie man Lua-Module entwickeln solle, sind nicht hilfreich.
- Den Testfall vor der Modulfunktion zu programmieren ergäbe nur einen Syntaxfehler.
- Tatsächlich vereinbare ich alle erwarteten Testfälle, sobald die Einzelfunktion geschrieben oder erweitert wurde, und teste unmittelbar im Anschluss an die Programmierung mit der erweiterten Testseite.
- Die Schwierigkeit ist vielmehr, von vornherein alle Konstellationen zu erwischen, für die die Funktion einsetzbar sein soll. An numerische Entities vor Fragmenten hatte ich zunächst nicht gedacht (dein RegExp aus dem RFC versagt dabei übrigens auch).
- Wenn das Spektrum der abzudeckenden Fälle erarbeitet ist, dann sollen auch alle implementierbaren Situationen vollständig von den Produktivversionen (möglichst ab der ersten) abgedeckt sein; alles andere bringt nur ein großes Durcheinander und kostet Mehraufwand, sich später erneut einarbeiten zu müssen oder behelfsmäßig irgendwas dazwischenzupfuschen.
- Ich würde dich als Ersteller bitten, die Vorlage:Modultest gleich wieder löschen zu lassen.
- Schönen Sonntag --PerfektesChaos 10:49, 21. Sep. 2014 (CEST)
- Die Vorlage war im ersten Gedankengang nur als Formatierungshilfe anstatt der Tabellensyntax geplant, und sollte vom Gedankengang her den Erwartungswert direkt über dem Ergebnis anzeigen, und damit einfach nur optisch abgleichbar machen. Die Idee mit dem Abgleich (Teststatus) ist mir erst während des des Schreibens der Vorlage gekommen.
- Danke für den Vorschlag mit TemplatePar!
- Der Haupteinsatzzweck der Vorlage war sicher nicht für Beta gedacht, sondern konkret für die Testseiten der Module, um darzustellen was wie funktioniert, aber gelegentlich auch um darzustellen was nicht funktioniert, oder von der Programmierung nicht umgesetzt werden sollte (don't wants). Frohes Schaffen — Boshomi ☕⌨☺ 11:49, 21. Sep. 2014 (CEST)
- Die Vorlage war im ersten Gedankengang nur als Formatierungshilfe anstatt der Tabellensyntax geplant, und sollte vom Gedankengang her den Erwartungswert direkt über dem Ergebnis anzeigen, und damit einfach nur optisch abgleichbar machen. Die Idee mit dem Abgleich (Teststatus) ist mir erst während des des Schreibens der Vorlage gekommen.
Unklar, was unter Domain verstanden wird!
BearbeitenDomains werden von einem nic vergeben. .de-Domains werden vom deNIC vergeben. (denic.de, selbstverständlich auch unter nic.de erreichbar) Es gibt auch ein com.tw-NIC (https://www.nic.com.tw). Subdomains sind selten. (Bei www.fakultaet.unitaet.de wäre fakultaet die Subdomain) www ist nie Domain-Name, sondern stets Rechnername. Je nach Protokoll sind verschiedene Rechnernamen üblich. Die Wahrscheinlichkeit, dass ein Rechnername unterschlagen wird (also eine Adresse ohne Rechnername einem default-server zugeordnet wird, der dann auch nicht angezeigt wird) ist größer, als jene, dass gleichzeitig eine Subdomain existiert.
Ich schlage daher folgende Paradigmen vor:
- 2-Stellige TLDs nur gemäß Wörterbuch. (Mir fallen hier gerade nur co.uk, gov.uk und com.tw ein.)
- Subdomains werden nur angenommen, wenn gleichzeitig auch ein Rechnername angegeben ist.
- Für Quellenangaben ist stets die komplette Domain inklusive Subdomain exklusive Rechnername und Protokoll als Linktext anzugeben.
- TLD und Domain sind Funktionen, die auf beliebigen Text angewendet werden können, der dem Format ^(%S+:%/%/)?(%S+%.)+%S+(%/.*)? folgt. Gemeint ist natürlich [<Protokoll>://][<Rechner>.]<Domain>[/<Freitext>]
Ziel:
Beispiel | TLD | Domain | Protokoll |
---|---|---|---|
Test.de | de | test.de | |
mein.test.de/hunger.asp?Kaese&Wurst | de | test.de | |
www2.mein.test.de | de | mein.test.de | |
test.co.uk | co.uk | test.co.uk | |
mein.test.com.tw | com.tw | test.com.tw | |
rtp://noch.ein.test.gov.uk | gov.uk | ein.test.gov.uk | rtp |
Grünkohl://27.38 Kilo | 38 | 27.38 | Grünkohl |
(Es scheint mir nicht einzusehen, besonderen Aufwand darauf zu verwenden, dass der Autor keinen Unsinn mit dem fertigen Modul treibt.) --Vollbracht (Diskussion) 10:42, 25. Nov. 2022 (CET)
Funktion zur Herstellung des Domainnams aus el_to_domain_index
Bearbeiten@PerfektesChaos: Mit einem kürzlich durchgeführten Wikimedia-Update erfolgte eine komplett-Umstellung der externallinks-Tabelle: siehe auch https://en.wikipedia.org/wiki/Wikipedia:Request_a_query
SELECT page_title, page_namespace, el_to_domain_index, el_to_path FROM externallinks LIMIT 10;
In der Spalte el_to_domain_index findet sich nun die Domain, aber in umgekehrter Reihenfolge: Wenn dort http://com.example.www. steht ist http://www.example.com gemeint. Ich suche nun eine Funktion zur Wiederherstellung der URL aus el_to_domain_index und el_to_path um aus Quarry-Ergebnissen effiziente Arbeitslisten zu erstellen. Eventuell ist URLutil der geeignete Ort für so eine Funktion. Frohes Schaffen — ⵓ ⌨ [ɪu:] 19:16, 23. Okt. 2023 (CEST)
- Lua ist die falsche Welt für SQL und Datenbank und Quarry.
- Lua kommuniziert mit Wikitext innerhalb einer Wiki-Seite.
- Die Darstellung des Wikitextes wird zwar von der Datenbank beeinflusst, aber das geschieht auf dem Server.
- Es gibt drei Welten, die zwar mittelbar was miteinander zu tun haben, jedoch über generiertes HTML, Wikitext oder API und PHP:
- PHP auf dem Server, Datenbank, mit der auch Quarry.
- Wikitext und Lua innerhalb der Wiki-Seite.
- JavaScript und CSS im HTML-Dokument.
- Im Wiki bekommt man von der Angelegenheit überhaupt nichts mit; das passiert in PHP auf dem Server und ist darin eingekapselt.
- Alles SQL muss umgeschrieben werden; das geschah auch in PHP.
- Quarry halt auch.
- In eine Quarry-Abfrage kann keine externe Software und kein Lua wirksam eingebunden werden.
- Es gibt allerdings in SQL auch die Möglichkeit benutzerdefinierter Funktionen („Makros“). Ob Standard-SQL das unterstützt und welches SQL bei Wiki, das überblicke ich grad nicht. Die könnte dann möglicherweise in den bestehenden Abfragen vorangestellt definiert werden. Oder der Quarry-Anbieter programmiert sie als Service für alle und dokumentiert das. Wird aber spaßig; Zeichenketten-Gewirbel ist ungefähr genauso schleckig wie mit Vorlagensyntax von 2010.
- VG --PerfektesChaos 15:35, 24. Okt. 2023 (CEST)
- MariaDB hält leider nur wenige Funktionen zur Textverarbeitung bereit. Auf PostgreSQL wäre das Drehen der Reihenfolge einfach mit der Funktion "string_to_array" und umgekehrter Sortierung erreichbar. Mit MariaDBs SUBSTRING_INDEX-Funktion wird das wirklich wie Vorlagenprogrammierung von 2010.
- Ich suche nun eine Vorlage, mit deren Hilfe die Quarry-Ergebnisse in einen brauchbaren Link übersetzt werden, sodass jeder Quarry-Nutzer mit einfachen SQL-Kenntnissen brauchbare Ergebnisse erzielen kann: zB SELECT CONCAT('Vorlage:ExturnallinksURL') und anschließenden Export als Wikitable. Frohes Schaffen — ⵓ ⌨ [ɪu:] 16:45, 24. Okt. 2023 (CEST)