Sonntag, 31. August 2014

Schriften auf Etsy-Einladungskarten identifizieren

Vor einigen Tagen fand ich auf der Flohmarkt-Plattform Etsy eine wunderschöne Einladungskarte.

Leider blieben meine Kontaktversuche zum Anbieter fruchtlos, weshalb ich mich dazu entschied, die Einladungskarte mit diversen layout- und designtechnischen Anpassungen selber herzustellen.

Das wichtigste Kennzeichen der Karte war die äusserst spezielle Schrift, deren Namen mir sich natürlich entzog. Was nun? Ich lud die auf Etsy publizierte Vorschaugrafik der Einladungskarte herunter, öffnete die Grafik in Photoshop, isolierte den Schriftzug, drehte diesen, damit er horizontal verlief und machte mach anschliessend auf die Suche nach einer hilfsbereiten Web-Site.

Innert Minuten stiess ich auf MyFonts und die dort angebotene Funktion What The Font. Ich lud das bearbeitete Bild auf den Server und musste anschliessend einzelne Buchstaben identifizieren. Da es sich um eine verschnörkelte Illustrationsschrift handelte, konnte die Software zusammenhängende Buchstaben nicht auseinanderhalten. Offenbar reichten die von mir identifizierten Buchstaben aber, um die Datenbank zu durchsuchen.

Die ersten Einträge in der Liste waren nicht die gesuchte Schrift, doch ungefähr auf Platz acht erschien für mich auf Anhieb ersichtlich die effektiv für die Einladungskarte verwendete Schriftart:

Rosarian Bold

Es lebe das Internet!

PS: Stephanie landete anschliessend mit der vom Designer auf Etsy verwendeten Vektorblumengrafik einen Volltreffer, weshalb ich das auf Etsy angebotene Kartenoriginal 1:1 hätte reproduzieren können.

Tags: , , , , , , ,
Labels: IT

Keine Kommentare | neuen Kommentar verfassen

Sonntag, 31. August 2014

Unter Linux einen Kommandozeilenbefehl regelmässig in Sekundenabständen ausführen (ohne cron)

Kürzlich spielte ich wieder einmal eine Sicherung des Inhaltes der 2 GB SD-Card, welche in meinem uralten TomTom ONE Europe steckt, zurück auf das Gerät. Da das Navigationsgerät nur über einen USB1-Anschluss verfügt, handelt es sich um eine entsprechend langwierige Angelegenheit.

Da ich die Sicherung auf der Kommandozeile unter Verwendung von rsync und ohne irgendwelche aussergewöhnlichen Kommandozeilenoptionen durchführte (-av reicht mir in solchen Fällen), musste ich mir einen anderen Weg überlegen, um den Fortschritt zu visualisieren.

Ich öffnete mir dazu ein zweites Kommandozeilenfenster. Damit ich den Computer kurzzeitig verlassen und mich bei der Rückkehr jeweils vom Fortschritt überzeugen konnte, startete ich folgenden Befehl:

$ watch -n 1 "df -k | grep INTERNAL | awk '{print \$4} {print \$5}'"

Mit Hilfe des Unix-Tools watch kann ein Befehl alle definierten n Sekunden wieder ausgeführt werden (hier: n -1, sprich jede Sekunde). Den Befehl fügte ich in Anführungszeichen bei, weil dieser Sonderzeichen und Pipes enthielt.

Konkret wird das Tool df aufgerufen, welches Grösseninformationen über gemountete Volumes ausgibt. Mittels grep filtere ich den Datenträger heraus, welcher mich interessiert. Und mittels awk isoliere ich dann die Grössenangaben über den noch verfügbaren Speicher (-k, das heisst in Kilobytes). Diese Zahl sollte im beschriebenen Anwendungsfall stetig nach unten zählen, bis der Kopiervorgang zu Ende ist.

WICHTIG: Damit awk in einem solchen Konstrukt funktioniert, müssen die Dollarzeichen escaped werden.

Tags: , , ,
Labels: Linux

Keine Kommentare | neuen Kommentar verfassen

Sonntag, 31. August 2014

Verzeichnis ohne Inhalt in SVN Repository einchecken

In meinem Falle wollte ich ein Cache-Verzeichnis in ein SVN Repository einchecken, ohne die aber in der Zwischenzeit darin abgelegten Cache-Dateien. Nichts leichter als das — SVN sieht auch für diesen Fall eine passende Kommandozeilenoption vor:

$ svn add --depth=empty cache

Via: Add directory structure to SVN, without files

Tags: ,
Labels: Programmierung

Keine Kommentare | neuen Kommentar verfassen

Sonntag, 31. August 2014

Über die Herkunft von Hugo Reitzel Maiskolben

Nach der zweitägigen Wanderung von Innertkirchen zur Gaulihütte und zurück zum Parkplatz Mürvorsess im Urbachtal galt es heute Sonntag bei der Ankunft in Bern meinen Heisshunger zu bändigen. Was gibt es da besseres, als an einem wolkenbehangenen, kühlen Sonntag-Nachmittag die Raclette-Saison einzuläuten?

Nachdem ich viel zu viele Scheiben heissen Käse mitsamt Beilagen verschlungen hatte, fiel mir in einer ruhigen Minute plötzlich auf, dass sich die Etiketten der Hugo Reitzel Silberzwiebeln und Hugo Reitzel Maiskölbchen auf subtile Weise unterscheiden:

Hugo Reitzel Essigwaren

Den Maiskölbchen fehlt das Schweizer Kreuz! Wieso denn das, fragte ich mich — und wurde auf der Rückseite rasch fündig: Die Maiskölbchen sind “Fabriqué en Inde”. Ja Himmelheiland! Da tischt man sich nach einer Wanderung in urschweizerischen Gegenden (heute fand in Meiringen notabene auch noch das 12. Eidg. Scheller- und Trychlertreffen statt) ein urschweizerisches Mahl auf, und isst dann zusammen mit in einem in China hergestellten Raclette-Öfeli geschmolzenen Schweizer Käse und Schweizer Patatlis nicht etwa lokal hergestellte Maiskölbchen, sondern solche, welche aus Indien um die halbe Welt geschifft werden?

Nun gut, dachte ich mir — die Produkte hatte ich während einer Aktion als 3er-Combo-Pack im nahegelegenen Denner erstanden. Per Zufall hatte ich angesichts der in diesem enttäuschenden Sommer viel zu früh nahenden Raclette-Saison weitere Maiskolben angeschafft. Doch dieses Mal in der MIGROS. Und die Verwalter von Duttis Erbe würde ja sicherlich keinen solchen ökologischen Irrsinn befürworten. Denkste:

Hugo Reitzel Essigwaren Rückseite

Auch die MIGROS Classic-Maiskölbchen stammen aus Indien: “Elaboré en Inde”. Und analog zur Verpackung von Hugo Reitzel ist auch auf der MIGROS-Verpackung jeder Text in dreifacher Übersetzung (D/F/I) angebracht, ausser die Herkunftsbezeichnungen, welche erstaunlicherweise ausschliesslich in Französisch wiedergegeben sind. Zufall? Absicht?

Und aus aktuellem Anlass: Wie wissen in diesem Falle die armen Thurgauer- und Nidwaldner-Kinder eigentlich, wo ihre Speisebestandteile herkommen?

Tags: , , , , ,
Labels: Shopping

Keine Kommentare | neuen Kommentar verfassen

Donnerstag, 10. Juli 2014

Mit Python URLs dekodieren und JSON schön ausgeben

Ausgehend von dieser haarsträubenden URL der Credit Suisse …

https://www.credit-suisse.com/who_we_are/de/office_locator.jsp#%7B%22fs%22%3A%7B%22cid%22%3Anull%2C%22prid%22%3Anull%2C%22plid%22%3Anull%2C%22sid%22%3Anull%2C%22d%22%3A%5B0%2C0%2C0%2C0%2C0%2C0%2C0%2C0%2C0%2C0%5D%7D%2C%22ms%22%3A%7B%22c%22%3A%7B%22lat%22%3A46.94739121310314%2C%22lng%22%3A7.44410902261734%7D%2C%22z%22%3A18%7D%2C%22mk%22%3A%7B%22id%22%3A4451%7D%2C%22is%22%3A%7B%22id%22%3A%22mapPanel%22%2C%22ps%22%3A%7B%22id%22%3A4451%2C%22sid%22%3A11613%2C%22segid%22%3Anull%2C%22d%22%3A%5B0%2C0%2C0%2C0%2C0%2C0%2C0%2C0%2C0%2C0%5D%7D%7D%7D

… nachfolgend zwei Python Code-Snippets, mit welchen ihr die URL menschenlesbar machen könnt:

URLs dekodieren

urlClean = urllib.unquote(urlRaw).decode('utf8')

JSON schön ausgeben

json.dumps(json.loads(strJson), sort_keys=True, indent=4, separators=(',', ': '))

Tags: , , ,
Labels: Programmierung

Keine Kommentare | neuen Kommentar verfassen

Donnerstag, 10. Juli 2014

Öffnungszeiten Credit Suisse Bern-Bundesplatz

Da das Standortverzeichnis meiner Hausbank seit Jahr und Tag ein Usability-Nightmare ist, lege ich hier den Link ab, der mich direkt zu den Öffnungszeiten der Credit Suisse Bern-Bundesplatz führt:

Credit Suisse AG, Bern, Bundesplatz 2, Schweiz – Privatkunden

Falls ein Webmaster der Grossbank bei diesem Artikel vorbeischauen sollte, hier einige Anregungen:

  • Bitte das Standortverzeichnis mit — aus eurer Sicht — exotischen Browsern wie Apple Safari testen.
  • Bei diesen Tests solltet ihr am Besten auf den Google Maps fokussieren: Habe ich mich mit Safari auf Bern reingezoomt und klicke Bern–Bundesplatz an, springt die Karte wieder auf die Weltansicht und das Zoomen kann von vorne beginnen …
  • Die Verzögerung von 1-2 Sekunden nach der Auswahl eines Drop-Down-Elements ist Web 0.1, nicht Web 2.0 (ich glaube ich muss einen unfocus-Event generieren)
  • Wieso muss ich mich überhaupt wie ein Idiot durch vier Drop-Downs durchhangeln? Ist das State of the Art-Usability von 2014?
  • Wieso gibt es kein Suchfeld mit Autovervollständigung, in welches ich bspw. “Bundesplatz” eingeben kann?
  • Wieso wird die URL nicht aktualisiert und wird eindeutig, wenn ich mich durch die Drop-Downs durchgekämpft habe und eine Filiale ausgewählt habe? Eine URL, welche ich als Lesezeichen ablegen kann und welche mich beim nächsten Aufruf direkt zu dem gewünschten Standort bringt?

Stattdessen übermittelt ihr in der URL solches URL-encodiertes JSON-Gefrickel:

https://www.credit-suisse.com/who_we_are/de/office_locator.jsp#%7B%22fs%22%3A%7B%22cid%22%3Anull%2C%22prid%22%3Anull%2C%22plid%22%3Anull%2C%22sid%22%3Anull%2C%22d%22%3A%5B0%2C0%2C0%2C0%2C0%2C0%2C0%2C0%2C0%2C0%5D%7D%2C%22ms%22%3A%7B%22c%22%3A%7B%22lat%22%3A46.94739121310314%2C%22lng%22%3A7.44410902261734%7D%2C%22z%22%3A18%7D%2C%22mk%22%3A%7B%22id%22%3A4451%7D%2C%22is%22%3A%7B%22id%22%3A%22mapPanel%22%2C%22ps%22%3A%7B%22id%22%3A4451%2C%22sid%22%3A11613%2C%22segid%22%3Anull%2C%22d%22%3A%5B0%2C0%2C0%2C0%2C0%2C0%2C0%2C0%2C0%2C0%5D%7D%7D%7D

… was auf Gut Deutsch lautet:

{
    "fs": {
        "cid": null,
        "d": [
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            0
        ],
        "plid": null,
        "prid": null,
        "sid": null
    },
    "is": {
        "id": "mapPanel",
        "ps": {
            "d": [
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0
            ],
            "id": 4451,
            "segid": null,
            "sid": 11613
        }
    },
    "mk": {
        "id": 4451
    },
    "ms": {
        "c": {
            "lat": 46.94739121310314,
            "lng": 7.44410902261734
        },
        "z": 18
    }
}

Bravo, ihr habt gerade JSON-over-URL JoU erfunden!

Tags: , , , , , , , , , ,
Labels: Web

Keine Kommentare | neuen Kommentar verfassen

Donnerstag, 10. Juli 2014

MySQL meldet “Using unique option prefix X instead of Y is deprecated”

Warning: Using unique option prefix database instead of databases is deprecated and will be removed in a future release.
Please use the full name instead.

MySQL reklamiert dies, weil die Namen einiger Argumente und Konfigurationsparameter in den kommenden Releases umbenannt werden.

Im Script zur Sicherung meiner Datenbanken war die Anpassung simpel:

...
$MYSQLDUMP --user=$USER --password=$PW --database $DATABASE > "$DUMPFILE"
...

… wurde zu …

...
$MYSQLDUMP --user=$USER --password=$PW --databases $DATABASE > "$DUMPFILE"
...

Man beachte, dass in der ursprünglichen Version der Parameter databases noch im Singular (database) aufgeführt war.

Denkanstoss: Thread: Using unique option prefix pass instead of password is deprecated

Tags: ,
Labels: Linux

Keine Kommentare | neuen Kommentar verfassen

Samstag, 5. Juli 2014

E-Mail bei Verwendung von sudo

Auch das ist dank Google und dem Internet ein äusserst simples Unterfangen:

# visudo

In der Konfigurationsdatei fügt man unterhalb der bestehenden Default-Einträge folgende Zeilen ein:

...
Defaults mail_always
Defaults mailerpath=/usr/sbin/sendmail
Defaults mailto="logger@domain.tld"
Defaults mailsub="*** Command run via sudo on %h ***"
Defaults mailerflags="-t"
...

Quelle: Email notification everytime users run “sudo” on Linux

Tags: , , ,
Labels: Linux

Keine Kommentare | neuen Kommentar verfassen

Samstag, 5. Juli 2014

E-Mail bei (erfolgreichem) SSH-Login

Dank Google und dem Internet war dieses unterfangen in einer Minute erledigt:

/etc/pam.d/sshd

Am Ende der Datei (die ich weder kannte und deren Inhalt ich nicht verstehe) fügte ich folgende Zeile ein:

...
session optional pam_exec.so seteuid /usr/local/bin/ssh-login-notify.sh

/usr/local/bin/ssh-login-notify.sh

Auch mailx kannte ich nicht, bisher habe ich immer mail verwendet (Erläuterungen zum Unterschied) — diese Ubuntu-Benutzer sind am “bleeding edge” unterwegs!

#!/bin/sh
EMAILTO="logger@domain.tld"

if [ "$PAM_TYPE" != "close_session" ]; then
HOST="`hostname`"
SUBJECT="SSH Login: $PAM_USER from $PAM_RHOST on $HOST"
MESSAGE="`env`"

echo "$MESSAGE" | mailx -s "$SUBJECT" "$EMAILTO" &
fi

Quelle: How do I set up an email alert when a ssh login is successful?

Tags: , , , , , , , ,
Labels: Linux

Keine Kommentare | neuen Kommentar verfassen

Sonntag, 29. Juni 2014

Pestemal (Hamamtücher): Qualitativ hochstehende Frotteewäsche

Vor einigen Monaten machte ich es mir zum Ziel, meinen heterogenen Vorrat an Frotteewäsche zu homogenisieren. Nach einigen Internetrecherchen kam ich zum Schluss, dass die türkischen Pestemal (hierzulande eventuell auch als “Hamamtuch” bekannt) aus dem gesuchten Material hergestellt werden: Leicht, aber extrem saugfähig. Wichtigste Erkenntnis aus den Recherchen war jedoch, dass man Frotteewäsche nicht mit Weichspüler waschen sollte, weil dies die Aufnahme von Feuchtigkeit verhindert.

Ich schaute mich deshalb im Internet um, wo ich hier in der Schweiz solche Pestemal beziehen könnte. Es scheint durchaus einige Anbieter zu geben, einige mit karikativem Charakter, welche die Fabrikanten im anatolischen Hochland finanziell unterstützen möchten, andere mit binationaler Ehe und somit prädestiniert für einen solchen Handel. Andere schlussendlich haben sich auf den Vertrieb mit “Luxusware” eingeschworen.

Einerseits gefielen mir entweder die etwas altbackenen Designs nicht, oder ich vermisste die Option, die Designs online einzusehen und zu bestellen oder die Auswahl war zu dürftig. Und manche waren schlicht zu teuer.

Schlussendlich würde ich bei einem Online-Shop von Vertreibern aus München fündig, welche frische, sehr moderne Designs anbieten:

Hamamista

(Zum Zeitpunkt der Bestellung hiess der Web-Shop noch Avacasa)

Seit mehreren Monaten trockne ich mich jeden Morgen mit solchen Tüchern und könnte mir nicht mehr vorstellen, jemals wieder normale Frotteetücher zu benutzen …

Alternativen in der Schweiz

  • average.beach, Online-Shop, Hergiswil
  • FanaFillah, mit Ladenlokal, Zürich
  • Jaliya, Online-Shop, Oetwil
  • fouta, Online-Shop sowie diverse Vertriebspartner (u.a. Kitchener Bern), Zürich
  • Bodytreats, Seebad Enge, Zürich (?)

Alternativen im Ausland