Hyæna

Through the darkness of future past

Zufällige Zeichenfolge mit MySQL erstellen

Dann und wann muß ich bestimmte Spalten einer MySQL-Tabelle mit einer zufälligen Zeichenfolge (einem „random string“) füllen.

Jedesmal suche ich nach einer möglichst einfachen und schnellen Lösung; jetzt habe ich sie mit dieser Funktion gefunden:

CREATE FUNCTION randomString($length int)
RETURNS varchar(128)
BEGIN

	SET @chars = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz';
	SET @charLen = length(@chars);

	SET @randomString = '';

	WHILE length(@randomString) < $length DO
		SET @randomString = concat(@randomString, substring(@chars,CEILING(RAND() * @charLen),1));
	END WHILE;

	RETURN @randomString ;
END

Ein

SELECT randomString(28);

erzeugt dann zum Beispiel eine zufällige Zeichenfolge mit einer Länge von 28 Zeichen: yb4XVv4cqMHMwdMtNE3XWzP34Bgt

So, und damit ich das nicht immer suchen muß, habe ich es jetzt endlich hier mit aufgenommen.

Analyse der HTTP-Header

Nun gut, eigentlich sollte man meinen, daß eine statisch ausgelieferte Website wie hyaena.de, die auch noch keine externen Bibliotheken lädt, prinzipiell sicher ist, aber dennoch: Eine Analyse der vom Server gesendeten HTTP-Response-Header kann nie schaden.

Also habe ich einmal diese Website hier mit Hilfe des Online-Dienstes Securityheaders.io überprüft, und siehe da: das Ergebnis war wirklich nicht so berauschend. Da Securityheaders.io zum Ergebnis noch auflistet, was schlecht ist und wieso, habe ich meine htaccess-Datei um ein paar Einträge erweitert:

# Don't allow any pages to be framed - Defends against CSRF
Header set X-Frame-Options DENY

# Turn on IE8-IE9 XSS prevention tools
Header set X-XSS-Protection "1; mode=block"

# Only allow JavaScript from the same domain to be run.
# Don't allow inline JavaScript to run.
Header set X-Content-Security-Policy "allow 'self';"
Header set Content-Security-Policy "default-src 'self';"

# prevent mime based attacks
Header set X-Content-Type-Options "nosniff"

Und schon hat hyaena.de ein A+: Scan results for hyaena.de.

Bei den zusätzlichen Informationen sind noch einige sehr informative Links zu den einzelnen Einträgen beziehungsweise Themen!

Verschlüsselte Verbindung zur MySQL-Datenbank bei Hetzner

Für den verschlüsselten Zugriff auf eine MySQL-Datenbank bei Hetzner kann man nicht nur SSH verwenden, sondern auch SSL. Das entsprechende Zertifikat mit einigen Hinweisen ist im Hetzner-Wiki zu finden: Zugriff per SSL

MacOS X: Den Ordner /opt im Finder sichtbar machen

Da es mir nun schon häufiger passiert ist, muß ich nun doch noch eine Notiz machen: Wenn das dusselige MacOS X mal wieder meint, den Ordner /opt vor mir verstecken zu müssen, hilft ein einfacher Befehl im Terminal:

$ sudo SetFile -a v /opt

Und schon sind der Ordner und sämtliche Unterordner im Finder wieder sichtbar.

Von Octopress 2 zu Jekyll 3

Dieses Blog wird seit letztem Wochenende nicht mehr mit Octopress, sondern mit Jekyll betrieben.

Ich hatte einfach keine Lust mehr, noch länger auf Version 3 von Octopress zu warten, und da die neue Version von Jekyll vor kurzem erschienen war – Jekyll 3.0 Released –, wollte ich einfach mal wieder ein wenig basteln.

Als Grundlage habe ich das Thema „Harmony“, welches für Jekyll 2 erstellt worden war, verwendet.

MacPorts: Was ist zu tun bei einem „Checksum mismatch“

Da will man ganz gemütlich seine MacPorts-Installation mit

$ sudo port upgrade outdated

aktualisieren und auf einmal bricht das ganz mit diesem Fehler ab:

--->  Computing dependencies for freetype
--->  Fetching archive for freetype
--->  Attempting to fetch freetype-2.6.1_0.darwin_13.x86_64.tbz2 from http://nue.de.packages.macports.org/macports/packages/freetype
--->  Attempting to fetch freetype-2.6.1_0.darwin_13.x86_64.tbz2 from http://mse.uk.packages.macports.org/sites/packages.macports.org/freetype
--->  Attempting to fetch freetype-2.6.1_0.darwin_13.x86_64.tbz2 from http://lil.fr.packages.macports.org/freetype
--->  Fetching distfiles for freetype
--->  Verifying checksums for freetype
Error: Checksum (rmd160) mismatch for freetype-2.6.1.tar.bz2
Error: Checksum (sha256) mismatch for freetype-2.6.1.tar.bz2
Error: org.macports.checksum for port freetype returned: Unable to verify file checksums
Please see the log file for port freetype for details:
    /opt/local/var/macports/logs/_opt_local_var_macports_sources_rsync.macports.org_release_tarballs_ports_print_freetype/freetype/main.log
Error: Unable to upgrade port: 1

Was tun? Nun, zunächst einmal habe ich ein Ticket erstellt: Checksum mismatch for freetype-2.6.1.tar.bz2.
Eigentlich eine gute Idee, und tatsächlich kam schon mit der zweiten Antwort die Lösung des Problems: Auf dieser Wiki-Seite – I get Error: checksum (md5/sha1/rmd160) mismatch for port. What can I do about it? – wird folgendes Vorgehen beschrieben:

$ sudo port selfupdate
$ sudo port clean --dist <portname>
$ sudo port install <portname>

Und schon lief wieder alles… Notiz an mich: Vor dem Öffnen eines neuen Tickets erst einmal ein wenig selber suchen…

Terminal: Bewegen vieler Dateien mit einer CSV-Datei

Sozusagen eine Weiterführung meines Artikels Terminal: Umbenennen vieler Dateien mit einer CSV-Datei:

In einem Ordner im Dateisystem liegen tausende Dateien und dutzende dieser Dateien müssen in einem anderen Ordner „gesammelt“ werden. Nun hat man nicht unbedingt Lust, jede Datei einzeln anzusprechen und zu kopieren…

Was man aber – wenn es gut läuft – hat, ist eine CSV-Datei mit einer Liste aller Dateinamen der benötigten Dateien. Diese Datei kann man nun mit einem Shell-Skript dazu verwenden, alle benötigten Dateien in den Zielordner zu kopieren -> copy-files.sh. CSV-Datei und Shell-Skript werden in den Ordner gespielt und das Shell-Skript ausgeführt, fertig!

Wie lautet nun der Inhalt des Shell-Skriptes? So:

#!/bin/bash
while read line
do
   filename=$(echo "$line" | awk -F"," '{print $1}')
   cp $filename* "../targetfolder/"
done < filenames.csv

Kopiert wird mit Wildcard, weil die Dateiendungen in diesem Fall unbekannt waren.

Chemnitzer Linux-Tage 2015: Ich war dabei!

Zum ersten mal konnte ich am vergangenen Wochenende die Chemnitzer Linux-Tage besuchen und ich muß sagen: Es war sehr, sehr schön! Endlich einmal raus aus der „Alltagsblase“!

Und: Eine Keysigning-Party sollte jeder einmal in seinem Leben besucht haben… :-)

Meine – freigegebenen – Bilder liegen in meiner Lychee-Installation:

Bilder von den Chemnitzer Linux-Tagen 2015

MacPorts: Verwalten mehrerer PHP-Versionen

Als Web-Entwickler steht man häufig vor dem Problem, daß man unterschiedliche PHP-Versionen ansprechen muß: Das neue Supi-Dupi-Framework (aka Laravel) verlangt PHP 5.4 oder höher, die alte Arbeitssoftware kann aber nur mit PHP 5.3 so richtig…
Was also tun? Auf Mac OS X bietet sich dafür MacPorts an (kurze Bemerkung: Ich benutze MacPorts seit Jahren, komme damit gut zurecht, kein Grund also, Homebrew einzuwerfen…).

Die aktuelle Umgebung hier: Mac OS X 10.9.5 „Mavericks“, MacPorts 2.3.3., Apache 2.2.29 (über MacPorts)

Offizieller Frohes-neues-Jahr-2015-Artikel

So, das Jahr 2015 ist nun schon sechzehn Tage alt, und ich komme jetzt dazu, auch hier das Jahr zu eröffnen. Also: ### Ich wünsche allen ein frohes, neues Jahr! Was ist wichtig? Gesundheit, das ist das allerwichtigste. Auf geht’s!

Neuer >>