Was ein netter Nachmittag mit Kokain und Programmieren werden sollte, ist zu zwei Tagen Arbeit ausgeartet. Und der schlimmste Teil war, die Benutzerdoku zu schreiben!

  • death_to_carrots@feddit.org
    link
    fedilink
    arrow-up
    8
    arrow-down
    1
    ·
    4 days ago

    Und ich bleibe dabei! Wenn reguläre Ausdrücke die Lösung zu deinem Problem sind, dann ist dein Problem falsch!

    • luciferofastora@feddit.org
      link
      fedilink
      arrow-up
      4
      ·
      3 days ago

      Wenn mein Problem ist, dass ich in einer Datei einen häufigen regelmäßig geformten Ausdruck finden und durch einen anderen ersetzen will?

      Ein Beispiel wäre anpassen von Skripten nach einer Datenbankmigration um die Schemata und Tabellenamen anzupassen (ja, die neue Datenbank hat Tabellenamen verändert).

      • death_to_carrots@feddit.org
        link
        fedilink
        arrow-up
        3
        ·
        3 days ago

        Dann brauchst du keine regulären Ausdruck, sondern musst Token ersetzen. Da reicht Pattern-Matching.

        Bzw. verwenden deine Skripte zu viele hart-codierte Strings.

        • luciferofastora@feddit.org
          link
          fedilink
          arrow-up
          3
          ·
          3 days ago

          Dann brauchst du keine regulären Ausdruck, sondern musst Token ersetzen. Da reicht Pattern-Matching.

          Das sagt mir nichts, fürchte ich, aber ich lass mich gerne belehren.

          Bzw. verwenden deine Skripte zu viele hart-codierte Strings.

          Ich geh schon bei jeder Gelegenheit her und isolier alle Folgeabfragen gegen die ursprünglichen Quellen. Die jeweiligen Tabellen werden genau einmal direkt bezeichnet, danach haben sie ein Alias, gerade um so was zu minimieren. (Und weil die ursprünglichen Bezeichnungen beschissen sind, keine Ahnung was die Entwickler da geritten hat. Gleiches Spiel mit den Spalten.)

          Hilft halt nix, wenn ich insgesamt 100 verschiedene Tabellen abfrag, die jeweils irgendwo in Konstanten auszulagern. Das Schema, ja, hätte ich können wenn ich geahnt hätte, dass die das umstrukturieren, wäre aber auch nicht das Problem gewesen.

          Aber dass sie das Namensschema durch die Bank ändern, das war nicht angekündigt oder auch nur zu ahnen.

        • bleistift2@sopuli.xyzOP
          link
          fedilink
          English
          arrow-up
          2
          ·
          edit-2
          3 days ago

          Bzw. verwenden deine Skripte zu viele hart-codierte Strings.

          Ja, es ist viel besser, dem seltenen Fall, dass sich Tabellennamen ändern, dadurch zu begegnen, indem man seine Tabellennamen in Konstanten auslagert. Das führt garantiert nicht zu Aneurysmen, glaub mir.

          const SQL = `SELECT ${CUSTOMER_TABLE_NAME_COLUMN} FROM ${CUSTOMER_TABLE_NAME} JOIN ${TARIFF_TABLE_NAME} USING (${CUSTOMER_TABLE_ID_COLUMN);`
          
            • bleistift2@sopuli.xyzOP
              link
              fedilink
              Deutsch
              arrow-up
              2
              ·
              3 days ago

              Vielleicht hast du bessere Prepared Statements als ich. In meinen kann ich nicht den Tabellennamen konfigurierbar machen.

              • death_to_carrots@feddit.org
                link
                fedilink
                arrow-up
                1
                ·
                3 days ago

                Da der Tabellen-Name ein nur von dir kontrollierter Wert ist, kannst du ihn mittels String-Concatination in dein prepared Statement einbauen, um danach die Variablen zu ersetzen.

                • bleistift2@sopuli.xyzOP
                  link
                  fedilink
                  Deutsch
                  arrow-up
                  2
                  ·
                  3 days ago

                  Kann es sein, dass du den Kontext vergessen hast? Bei luciferofastora ging es um

                  anpassen von Skripten nach einer Datenbankmigration um die Schemata und Tabellenamen anzupassen

                  worauf du „zu viele hart-codierte Strings“ und später „Prepared Statements” geantwortet hast.

    • yetAnotherUser
      link
      fedilink
      arrow-up
      5
      ·
      4 days ago

      Mein Problem ist es schnell und einfach HTML zu scrapen und parsen.

      Die Lösung? curl "$URL" | grep -E "$REGEX" | sed 's|"$OLD"|"$NEW"|' offensichtlich!

      (Keine Sorge, es ist etwas “schöner”. Hier ein wunderschöner Ausschnitt:)

      Äußerst legitime Anwendung von Regex die ich tatsächlich so eingebaut habe
      old_file=$(find . -maxdepth 1 -regextype egrep -regex '\./'"$filename"' [0-9]{4}-[0-9]{2}-[0-9]{2}\..*' -print | sort | tail -n1 | sed 's|\./||')
      

      Dokumentation wäre hierfür überflüssig.

        • bleistift2@sopuli.xyzOP
          link
          fedilink
          Deutsch
          arrow-up
          3
          ·
          3 days ago

          Den Text zu Zahlen zu machen, ist der schwerere Teil. Sobald ich eine Angabe für jeden der Datumsteile habe, ist es ein Leichtes, daraus das Datum zu bauen.

          Der Rest geht auch an @VegOwOtenks@lemmy.world:

          Mein Anwendungsfall wird ist eine Webseite. Ich will nicht für ein einzelnes Eingabefeld einen Compiler mitliefern, der rekursive Sprachen parsen kann. Ich habe mich schon nach Libraries umgeschaut, aber was ich gefunden habe, entsprach nicht den Anforderungen. Die meisten parsen nur einzelne Datumse (bei mir geht’s um einen Datenbereich) und ich will möglichst reibungsarm in dem sein, was ich von Nutzern akzeptiere. Die Libraries, die ich gefunden habe, sind eher strikt in dem, was sie als gültige Eingabe akzeptieren.

          Beispiel: Mit meinem selbstgebastelten Regex kann ich die Eingabe ‘w’ als ‘2026-01-12/2026-01-18’ interpretieren; ‘8.’ als ‘2026-01-08/2026-01-08’ und ‘12.25’ als ‘2025-12-01/2025-12-31’.

          Muss das so flexibel sein? Nein. Aber für die Power-User wird das hoffentlich sehr angenehm zu bedienen sein.

              • kaulquappus@feddit.org
                link
                fedilink
                arrow-up
                1
                ·
                2 days ago

                Find ich noch besser, versuche die Übernahme ins Vokabular.

                (Suche eben ergab, dass die Quellen, die Richtigkeit für sich beanspruchen, zu feige sind, ein offensichtliches Manko der deutschen Sprache zu bereinigen. Schwach.)

          • VegOwOtenks@lemmy.world
            link
            fedilink
            arrow-up
            1
            ·
            3 days ago

            Ah verstehe, für Datenintervalle weiß ich auch nichts vorgebautes.

            Die Abkürzungen klingen praktisch, cool… und verwirrend. :]]

            • bleistift2@sopuli.xyzOP
              link
              fedilink
              Deutsch
              arrow-up
              2
              ·
              3 days ago

              verwirrend

              Auf jeden Fall, keine Frage. Ich hoffe, dass Standardnutzer sich eher an Standardangaben halten, die eher explizit sind und deshalb auch eher erwartungsgemäß verarbeitet werden. Und wer tiefer unter die Haube guckt, findet, dass er sich für die eher erwarteten Anwendungsfälle einige Tastendrücke sparen kann.

              Ich glaube, ich versuche gerade mehr, mich zu überzeugen als dich.

    • blue@feddit.org
      link
      fedilink
      arrow-up
      1
      ·
      3 days ago

      Mein Problem ist eine reguläre Sprache mit beliebigem Alphabet kurz mit Text zu beschreiben, was schlägst du vor?