Archiv der Kategorie: Allgemeines

Hofmann-Menü Essensausgabe simpel

Hofmann Menü-Manufaktur hat zwar ein Online-Abrechnungssystem, doch dafür muss bezahlt werden. Wer die Abrechnung machen muss kann sich aber einfacher Bordmittel bedienen.

Benötigt werden ein (lokaler) Webserver mit MySql/MariaDb und Adminer. Des weiteren wird eine SQL-Datei für den Import benötigt. Die Import-Datei gibt es hier.

Zu jeder Essen gibt es eine zweiteilige Marke. Der obere Teil „Bestellung“ mit dem Loch wird abgegeben und der untere Teil „Abhol-Coupon“ verbleibt beim „Kunden“. Beispiel-Marke.

Vor der Inbetriebnahme müssen die „meals“- und die „users“-Tabelle im Adminer aktualisiert werden. Ein paar Menüs sind bereits in der SQL-Datei enthalten.

Nach der Essensausgabe werden die eingesammelten Bestellungen eingegeben (Tabelle meals_users). Adminer gibt bei jedem neuen Datensatz eine Meldung mit der neu angelegten ID aus.
Diese kann dann auf der Marke notiert werden (im Beispiel „100“). Die Marken werden zum Nachweis abgeheftet und dienen bei Nachfrage als Beweis/Beleg.

Der View „offene_posten“ listet alle offnen Bestellungen mit Namenskürzel, Summe und Zeitraum der Essensausgabe auf.

Lediglich das austragen/bezahlen muss derzeit noch manuell im SQL-Teil des Adminers erfolgen:

UPDATE meals_users SET payment_date = ‚yyymmdd‘ WHERE user_alias=’xy‘ AND payment_date IS NULL AND issue_date <= ‚yyymmdd‘;

preg_replace e-modifier warning in fpdf fixed

Ältere Versionen der fpdf-Library bekommen eine PHP-Warnung, wegen des e-modifiers in der preg_match Funktion. In der Datei fpdi_pdf_parser.php kommt diser Hinweis in der „function desescapeString($s)“ (etwa Zeile 257).

Natürlich macht es Sinn, die Library auf eine neuere Version zu updaten. Da sich aber in der Zwischenzeit einige Funktionalitäten geändert haben, wird das auch ein Anpassen des Quelltextes zur Folge haben. In der Zwischenzeit hält nachfolgender Fix die Logfiles sauber:

    function deescapeString($s) {
        /*
        $torepl = array("/\\\(\d{1,3})/e" => "chr(octdec(\\1))",
                        "/\\\\\(/" => "(",
                        "/\\\\\)/" => ")");
        return preg_replace(array_keys($torepl),$torepl,$s);
        */
        return preg_replace_callback_array(
            [
                "~\\\(\d{1,3})~" => function($match) {
                    return chr(octdec($match));
                },
                "~\\\\\(~" => function($match) {
                    return '(';
                },
                "~\\\\\)~" => function($match) {
                    return ')';
                }
            ], $s
        );
    }

Der auskommentierte Bereich war das Original (und kann gelöscht werden). Der Ersatz nutzt preg_replace_callback_array (PHP 7).

Postgresql: Records archivieren über common table expressions

Grosse Tabellen machen die Datenbank langsam. In diesem Beispiel werden die Datensätze einer Log-Tabelle nach einem Jahr (366 Tagen) in eine Archiv-Tabelle übertragen. Gelöst wird das Ganze elegant über Common Table Expressions (CTE).

WITH moved_rows AS (     
DELETE FROM log_messages a
WHERE log_time < now() - interval '366 days'
RETURNING a.*
) INSERT INTO log_messages_archive SELECT * FROM moved_rows;

Apache: VirtualHost-Angaben anzeigen

Anzeigen der geparsten VirtualHosts
apachectl -t -D DUMP_VHOSTS

VirtualHost configuration:
*:80                   is a NameVirtualHost
         default server aurora9.server.net (/etc/apache2/sites-enabled/000-default.conf:4)
         port 80 namevhost aurora9.server.net (/etc/apache2/sites-enabled/000-default.conf:4)
         port 80 namevhost api9.server.net (/etc/apache2/sites-enabled/000-default.conf:24)
         port 80 namevhost f1-server09.de (/etc/apache2/sites-enabled/000-default.conf:44)
*:443                  is a NameVirtualHost
         default server aurora9.server.net (/etc/apache2/sites-enabled/000-defaultssl.conf:9)
         port 443 namevhost aurora9.server.net (/etc/apache2/sites-enabled/000-defaultssl.conf:9)
         port 443 namevhost api9.server.net (/etc/apache2/sites-enabled/000-defaultssl.conf:36)
         port 443 namevhost f1-server09.de (/etc/apache2/sites-enabled/000-defaultssl.conf:63)
         port 443 namevhost ht.aurora9.server.net (/etc/apache2/sites-enabled/000-defaultssl.conf:94)
         port 443 namevhost ht.api9.server.net (/etc/apache2/sites-enabled/000-defaultssl.conf:119)