Raspberry: Versionen bestimmen über Konsole

cat /sys/firmware/devicetree/base/model

Anzeigen der genauen Bordversion. Um die Board- und Versionsinfos auszulesen wird nachfolgender Befehl eingegeben:

cat /proc/cmdline | awk -v RS=" " -F= '/boardrev/ { print $2 }'

Auslesen des verwendeten Betriebssystem mit:

cat /etc/os-release

CPU-Infos ausgeben mit:

cat /proc/cpuinfo
# Anzahl der Prozessorkerne
cat /proc/cpuinfo | grep processor | wc -l

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;

Postgresql: Timestamp bei Aktualisierung updaten (Trigger)

Die Deklaration einer Tabellenspalte mit default Current_Timestamp erzeugt noch kein Update des Timestamps bei einer Änderung in der Zeile.
Erst ein Trigger

CREATE OR REPLACE FUNCTION update_modified_column()
RETURNS TRIGGER AS $$
BEGIN
NEW.modified = now();
RETURN NEW;
END;
$$ language 'plpgsql';

CREATE TRIGGER update_customer_modtime BEFORE UPDATE ON customer FOR EACH ROW EXECUTE PROCEDURE update_modified_column();