mstdn.social is one of the many independent Mastodon servers you can use to participate in the fediverse.
A general-purpose Mastodon server with a 500 character limit. All languages are welcome.

Administered by:

Server stats:

12K
active users

#regex

4 posts4 participants0 posts today

GPT-5 zeigt Word­press den Meister

Vor zwei Wochen lancierte OpenAI GPT-5. Die Reaktionen waren verhalten: Das neue Sprachmodell sei unpersönlich und zu kurz angebunden. Meine eigenen Erfahrungen sind viel positiver. Überraschen sollte uns das nicht: Wie gut oder schlecht ein Sprachmodell abschneidet, hängt von der Aufgabe und unseren Erwartungen ab.

Mein Auftrag umfasste Korrekturen und Verbesserungen an meiner Website. Es ging zwar um drei kleine Ärgernisse: Schönheitsfehler, die die Funktionsweise und den Nutzen des Blogs nur minimal schmälerten. Trotzdem ist bemerkenswert, dass die KI in allen Fällen prompt eine einwandfreie Lösung lieferte. Ich brauchte nur wenige Minuten für die Umsetzung.

Das ist der entscheidende Vorteil: Ohne die Hilfe der künstlichen Intelligenz hätte das zu viel Zeit in Anspruch genommen. Und eben: GPT-5 macht jetzt den Unterschied. Das weiss ich, weil ich einige der Dinge bereits im Februar mit GPT-4o ausprobiert habe, damals ohne Glück.

Eine echte Erleichterung

Mit anderen Worten: ChatGPT kennt sich seit dem Update verflixt gut mit Word­press aus. Ich gehe davon aus, dass das Sprachmodell auch bei anderen Content-Management-Systemen weiterhilft; zumindest, wenn es nicht allzu exotische Kandidaten sind. Selbst bei generellen Belangen des Webdesigns verschafft uns die KI schnelle Resultate. Ich habe neulich bei meinem Artikelarchiv mittels regulärer Ausdrücke einige Formatierungen repariert¹.

Die drei Probleme haben allesamt mit dem Theme, also den Designvorgaben diese Blogs hier zu tun. Das auszuwählen, war vor drei Jahren eine nervenaufreibende Angelegenheit. Wie sich erst hinterher zeigte, hat das Theme meiner Wahl von Haus aus einige Mängel. Um sie zu beheben, stellte ich ChatGPT es in Gänze zur Verfügung. Ich tat das, indem ich die originale Zip-Datei des Herstellers in den Chat hochlud.

Das sind die drei Weisungen, die GPT-5 auszuführen hatte:

1) Fehlende Übersetzungen nachtragen

Einer der Mängel ist die lückenhafte Übersetzung. In Beiträgen mit nur einem Kommentar wird die Leserinnen-Rückmeldung mit dem Text «One thought on [Titel]» eingeleitet. Bei Beiträgen mit mehr als einem Kommentar ist der Text dazu korrekt in Deutsch («2 Kommentare zu [Titel]»)².

ChatGPT erklärt mir, ich solle die .pot– bzw. .po-Datei im Theme-Ordner unter /languages/ bearbeiten. Ich könne dafür einen Editor wie Poedit verwenden. Ich habe stattdessen den faulen Weg gewählt, die Datei mit den deutschen Texte heruntergeladen und ChatGPT gebeten, sämtliche fehlenden Strings nachzutragen.

Klar, es ist mit einem Risiko verbunden, diese Datei nur oberflächlich zu prüfen und danach sogleich auf den Webserver zu verfrachten. Doch ich gestehe: Genau das habe ich getan. Falls ihr im Frontend von Clickomania irgendwelche Unflätigkeiten entdeckt, kennt ihr jetzt den Grund.

2) Die Seite mit den Suchresultaten verbessern

Der zweite Schönheitsfehler betraf die Seite mit den Suchresultaten. Standardmässig zeigte sie das Theme als einspaltige Liste an. Am Desktop erscheinen riesige Bilder, zwischen denen die Titel kaum zu erkennen waren: sehr unübersichtlich.

Also: Würde ChatGPT bitte dafür sorgen, dass die Suchresultate wie auf der Startseite als Raster angezeigt werden?

Das sei kein Problem, erklärt das Sprachmodell. Es liefert mir sogleich die entsprechende Variante der search.php-Datei, die ich bloss an die richtige Stelle auf meinen Webserver verfrachten muss. Dafür ist nicht einmal ein FTP-Programm vonnöten. Stattdessen klicken wir im Backend auf Design > Theme-Datei-Editor, wählen rechts unter Theme-Dateien den Eintrag Suchergebnisse (search.php) aus, fügen dort den Output von ChatGPT ein und klicken auf Datei aktualisieren.

Die Suche vorher: Am Desktop ist nur ein Ergebnis zu sehen.Suche nachher: Die Treffer werden als Raster nebeneinander angezeigt.

Das war’s. Nein, nicht ganz. Ich sollte darauf hinweisen, dass wir diese Änderung besser nicht am Original vornehmen, sondern ein «Child» unseres Themes anfertigen. Dieser Weg hat den Vorteil, dass unsere Modifikationen erhalten bleiben, auch wenn unser Theme ein Update erfährt. Die Details dazu beschreibe ich hier.

3) Die Seitenleiste festkleben

Eine Funktion, die mir gut gefällt, ist die «klebrige Seitenleiste» (sticky sidebar): Sie gleicht an grossen Bildschirmen Längenunterschiede zwischen dem Menübereich (in diesem Blog am rechten Rand) und dem Text des Beitrags aus. Das tut sie, indem die beiden Bereiche unterschiedlich scrollen: Falls die Leiste kürzer ist als der Text, rutscht deren unteres Ende beim Scrollen nach unten mit, bis beide am unteren Rand bündig abschliessen. Analog funktioniert es, wenn die Menüleiste länger ist als der Blogpost: Dann bleibt der Text stehen, während die Leiste nach oben rutscht, bis sie am Ende anlangt.

Vor allem letzteres ist eine ästhetische Verbesserung: In meinen Augen ist es hässlich, wenn die Menüleiste bei kurzen Posts übersteht: Es wirkt, als sei dem Autor zu wenig eingefallen, um die Seite vollzubekommen.

Genau deswegen achtete ich bei der Auswahl meines Themes auf dieses Feature. Es ist zwar enthalten. Bloss funktionierte es bei der Premium-Version nicht, und der Hersteller-Support konnte oder wollte mir nicht weiterhelfen (was das über ihn aussagt, wäre ein anderes Thema).

Doch Freude herrscht: GPT-5 macht dieses Versäumnis wett. Das Sprachmodell erkennt den Fehler und schlägt eine Korrektur in der custom.js-Datei vor. In der ersten Variante wird nur die Variante adressiert, in der die Seitenleiste kürzer ist als der Text. Nach meiner Nachfrage liefert es mir eine symmetrische Version, die keine Wünsche übriglässt.

Fussnoten

1) Ich habe mir erklären lassen, wie man beim Durchkämmen des HTML-Codes vernünftig nach ganzzeiligen Elementen sucht. Aus unerfindlichen Gründen funktioniert mit dem Search Regex-Plug-in die Suche nach ^Zeile$ nicht. Mit (\r\n)Zeile(\r\n) klappt es wunderbar, allerdings nur, wenn man fürs Einfügen $1Neue Zeile$2 benutzt. ↩

2) Ich nahm schon früher einen Anlauf, um dieses Problem zu lösen; war dabei aber anscheinend nicht gründlich genug. ↩

Beitragsbild: ChatGPT, wie er mir meine zehnte dumme Frage zu Word­press beantwortet – Symbolbild (ThisisEngineering, Unsplash-Lizenz).

#ChatGPT#LLMs#Regex

Out of lazyness, I tried to parse a bunch of html with regex. Simply to avoid the atrocity that is PHP DOMDocument. Or find an appropriate substitute (paquettg/php-html-parser).

Stumbled upon this classic while searching for a (non-existing) solution:

stackoverflow.com/a/1732454

Stack OverflowRegEx match open tags except XHTML self-contained tagsI need to match all of these opening tags: <p> <a href="foo"> But not self-closing tags: <br /> <hr class="foo" /> I came up with this and wanted to make
#regex#html#dom

Regardless of your stance on AI, it understands regex a lot better than I do in some of the more complicated tasks. What would have taken me 5 years to figure out, only took 5 minutes.

If you know regex like a second language, I would like to meet you.

Asking for an opinion from all my #python friends. The non-work Python project I'm developing has a few places where I need to find the most recent text above the current position that matches a #regex. I can either:

- Require the non-standard regex module (pypi.org/project/regex/) which has a REVERSE flag

- Create a "match all the things from the beginning, but then only use the one whose match.start() is before the current position

The first is clearly cleaner, but requires users to add one more module (they're already needing to add two others for different stuff in the program). The second is a tad kludgy, slower (but only by maybe a tenth of a second), but requires no additional includes.

Opinions? Strong opinions? First-hand experience with the regex module?

PyPIregexAlternative regular expression module, to replace re.
Replied to Natasha Nox 🇺🇦🇵🇸

@Natanox Since it was like the 2nd thing I learned when I was super psyched about my first hacking adventures, I always laugh at these #regex intimidation memes. I think my love of them came from just actually being able to get magical-seeming sysadmin shit done. I can't imagine anything like regex that wouldn't be as intimidating as regex; the fact is that with great succinct surgical text processing power comes great great succinct surgical text processing trial and error.

Hi #GetFediHired, I'm looking for a #remote role in the US (or #sweden if you provide visa assistance!).

I've worked mostly in #SoftwareEngineering space, but I do lean closer to the #DataEngineering side of things (past 3 years). Before that I was varying levels of doing SWE things inside a #BusinessIntelligence role (~5 years).

Looking for something that demands strong #Python skills (~5+ years of heavy, daily use), though wouldn't mind having to learn something new. Quite comfortable in a few #SQL flavors. I can actually read most #regex, if that's a thing worth bragging about. Love writing #xpath in personal webscraping projects. Somewhat familiar with #SpringBoot and #Kotlin (1 year, occasional) and would like to eventually use more Java in work, but not a hard requirement.

I love refactoring/improving old code, and I have lots of experience with CI/CD, coding best practices, testing, web scraping, backend (Flask) & frontend (React, Typescript).

Send me a message if this sounds like I'd be a great fit on your team!

Автотесты как документация: «чистый» код и генератор на Regex

Привет, Хабр! Проблема рассинхронизации автотестов и тестовой документации знакома многим. Код постоянно меняется, а кейсы в Confluence — нет. В итоге документация становится бесполезной, а время команды тратится на выяснение того, что же на самом деле проверяет тот или иной тест. Есть занятия, которые наполняют жизнь QA-инженера особым, экзистенциальным смыслом, и ручное ведение тест-кейсов, бесспорно, одно из них. Этот медитативный ритуал — найти нужную страницу в Confluence, сверить её с кодом, осознать их полную асинхронность, глубоко вздохнуть и начать творить — несравненно закаляет дух. Но, увы, в какой-то момент безжалостные требования бизнеса к скорости заставили меня пожертвовать этим священным процессом и, скрепя сердце, написать скрипт, который делает всю эту замечательную работу за меня.

habr.com/ru/articles/930908/

ХабрАвтотесты как документация: «чистый» код и генератор на RegexПривет, Хабр! Проблема рассинхронизации автотестов и тестовой документации знакома многим. Код постоянно меняется, а кейсы в Confluence — нет. В итоге документация становится бесполезной, а время...

Ваш сайт теряет пользователей прямо сейчас. Виноват один символ: '+' в email

Привет, Хабр! Представьте ситуацию: вы нашли крутой сервис, регистрируетесь, вводите свой email my.name+coolservice@gmail.com (ведь вы, как и я, любите порядок во входящих) и… получаете ошибку «Некорректный email». Знакомо? Уверен, что да. Каждый раз, когда я сталкиваюсь с таким, у меня дергается глаз. Это не просто мелкий баг. Это симптом глубокой проблемы в подходе к разработке и непонимания базовых стандартов. Давайте раз и навсегда разберемся, почему сервисы не принимают почту с «плюсом», почему это плохо для бизнеса и, главное, как это исправить.

habr.com/ru/articles/930160/

ХабрВаш сайт теряет пользователей прямо сейчас. Виноват один символ: '+' в emailПривет, Хабр! Представьте ситуацию: вы нашли крутой сервис, регистрируетесь, вводите свой email my.name+coolservice@gmail.com (ведь вы, как и я, любите порядок во входящих) и… получаете ошибку...

Adding lookbehinds to rust-lang/regex, systemf.epfl.ch/blog/rust-rege.

The feature of lookbehinds is very often absent in linear regex engines. These researchers bring them in the `regex` crate. The benchmarks show a reasonable and usable performance making it ready for real-world applications.

The article gives all pointers to the research article and the patches for `regex` (on github.com).

The prevention of unnecessary lookbehind scanning till the end of the haystack is neat!

The words 'Systems and Formalisms Lab' on three lines next to a red rectangle.
SYSTEMF @ EPFL · Adding lookbehinds to rust-lang/regex – SYSTEMF @ EPFL
More from SYSTEMF lab

I love Vim, but of the handful of things that bothers me about it is that its #regex engine requires you to escape capture groups and character count atoms. There's always \v but it's honestly kind of annoying to have to think about picking the right one lol.

#Vim is great, but mother Perl did that part better 😔