Froschs Blog

Computer und was das Leben sonst noch so zu bieten hat

Zur Website | Impressum

Archiv der Rubrik 'Programmierung'

Das Piwigo-Desaster

Donnerstag, 5. Januar 2023

Zum Betrieb meiner Media-Site verwende ich seit gut fünf Jahren Piwigo. Da liegen nun mittlerweile gut 35.600 Medien, ganz überwiegend natürlich Fotos, aber auch Scans von Tickets etc. und einige Videodateien. Von den Fotos sind fast 32.000 öffentlich zugänglich. So weit, so gut.

Schon im November war mir eher zufällig aufgefallen, daß sich die Videodateien dort nicht mehr abspielen ließen. Den Grund konnte ich erstmal nicht feststellen. Erst später bemerkte ich, daß die Fotos nur noch in der jeweiligen Alben-Übersicht und generell in den kleineren Formaten angezeigt wurden, aber nicht mehr in der Einzeldarstellung. Da stand nur noch der ursprüngliche Dateiname. Nach etwas Sucherei konnte ich die Änderung an einem Datum festmachen: Am 12. November früh morgens hatte ich bei Piwigo einige Updates eingespielt. Das waren zum einen zwei oder drei Plugins gewesen und zum anderen ein Versions-Update, und zwar von 13.2.0 auf 13.4.0 (die 13.3.0 hatte ich verpeilt gehabt).

Und in dieser Update-Routine gab es einen bösen Fehler, der dazu führte, daß das Upload-Verzeichnis einfach mal weg war. Und damit alle Dateien, die ich in den letzten fünf Jahren hochgeladen hatte. Natürlich mache ich von der Datenbank von Piwigo – wie von allen Datenbanken auf diesem Server – täglich ein Backup. Von den hochgeladenen Bildern habe ich das bislang nicht gemacht. Ja, das war wohl ein Fehler, den ich gerade zähneknirschend korrigiere. Unter anderem. (mehr …)


Jahresrückblick 2022

Samstag, 31. Dezember 2022

Es war das Jahr der Toten.

Aber der Reihe nach, wie üblich.

Im Oktober 2021 hatte ich ja angefangen, selbst Brot zu backen. Im Automaten, aber mit eigenen Mehlmischungen, die ich mir eher spontan zusammengestellt habe. Denn da war noch das Mehl, das ich 2018 aus dem Haushalt meiner Mutter übernommen hatte, und irgendwann mußte das mal weg. Im Januar gab es dann ein paar seltsame Ereignisse mit diesen Automaten-Broten, und ich suchte echt wochenlang nach dem Grund. Den Grund dafür, warum ich immer wieder Pannenbrote herausbekam. Also eigentlich gebackenes Mehl ohne Wasser. Zunächst dachte ich, mein alter LeCaf sei am Ende, und jemand war übermäßig freigiebig, als ich nach Empfehlungen für einen neuen (gebrauchten) fragte – und kaufte mir einen niegelnagelneuen Automaten – mit dem dann wieder genau dasselbe passierte … (mehr …)


Canon-Kameras, Python-PIL und die EXIF-Daten

Mittwoch, 12. Oktober 2022

Vorgestern Abend stieß ich auf ein … interessantes Problem.

Projekt: downscaler (Git-Repo: Downscaler; clonen geht derzeit noch nicht wieder, aber man kommt über den „snapshot“-Link an die Datei-Inhalte). Geschrieben in Python3 mit den externen Modulen PIL (pillow) und piexif.

Das recht einfache Python-Script rotiert die JPG-Dateien aus einem Verzeichnis (bei Bedarf) und skaliert sie dann – sofern das Original größer ist – so herunter, daß die breitere Seite 1200 px hat. Das Ergebnis wird unter demselben Dateinamen in ein anderes Verzeichnis gespeichert. Das Original wird dabei nicht verändert. So weit, so gut.

Bisher habe ich das beim Bearbeiten mit The GIMP direkt mitgemacht. Das bedeutet aber auch, daß ich selbst solche Fotos, an denen ich sonst gar nichts editieren will, in GIMP holen, ggf. rotieren, runterskalieren und wieder abspeichern muß. Sich wiederholende Tätigkeiten sollte man doch besser einem Computer überlassen, weil der das schneller kann, nicht wahr? 🙂 (mehr …)


Kleine Diskussion mit MariaDB

Samstag, 8. Oktober 2022

Ich stand grad mal wieder auf dem Schlauch.

 MariaDB [piwigodb]> show columns from pwg_categories;
 +---------------------------+-----------------------------+------+-----+---------------------+
 | Field                     | Type                        | Null | Key | Default             |
 +---------------------------+-----------------------------+------+-----+---------------------+
 | id                        | smallint(5) unsigned        | NO   | PRI | NULL                |
 | name                      | varchar(255)                | NO   |     |                     |
 | id_uppercat               | smallint(5) unsigned        | YES  | MUL | NULL                |
 | comment                   | text                        | YES  |     | NULL                |
 | dir                       | varchar(255)                | YES  |     | NULL                |
 | rank                      | smallint(5) unsigned        | YES  |     | NULL                |
 | status                    | enum('public','private')    | NO   |     | public              |
 | site_id                   | tinyint(4) unsigned         | YES  |     | NULL                |
 | visible                   | enum('true','false')        | NO   |     | true                |
 | representative_picture_id | mediumint(8) unsigned       | YES  |     | NULL                |
 | uppercats                 | varchar(255)                | NO   |     |                     |
 | commentable               | enum('true','false')        | NO   |     | true                |
 | global_rank               | varchar(255)                | YES  |     | NULL                |
 | image_order               | varchar(128)                | YES  |     | NULL                |
 | permalink                 | varchar(64)                 | YES  | UNI | NULL                |
 | lastmodified              | timestamp /* mariadb-5.3 */ | NO   | MUL | current_timestamp() |
 | external_reference        | varchar(255)                | YES  |     | NULL                |
 +---------------------------+-----------------------------+------+-----+---------------------+

(mehr …)


Spaß mit Python3 und InnoDB

Donnerstag, 13. Januar 2022

Die Blogs, die ich betreibe bzw. administriere, laufen allesamt mit MariaDB, einem Fork von MySQL. Die beiden Datenbank-Systeme kennen zwei verschiedene Engines, um Daten zu verwalten: MyISAM (die ältere) und InnoDB (die neuere). Die Blogs, die ursprünglich mit WordPress gestartet waren, legten ihre Datenbank mit MyISAM an, und auch, wenn die Blogs mittlerweile auf ClassicPress umgestellt wurden, blieb dieses Format erhalten. Was ich neu direkt mit ClassicPress installiert habe, bekam jedoch eine Datenbank mit der InnoDB-Engine, die die Daten ein wenig anders ablegt. Im laufenden Betrieb insbesondere der relativ kleinen Blogs macht das erstmal keinen Unterschied.

Anders sieht das aus, wenn ich abseits vom Blogsystem (hier: mit Python3) in diese Datenbanken reingreifen möchte. Solange ich nur lesend reingehe, ist das weiterhin kein Problem. Will ich jedoch schreibend auf diese Datenbanken zugreifen, gibt es einen kleinen, feinen Unterschied, und der hat mich eine Weile beschäftigt. (mehr …)