Sass-/ Compass-Encoding auf UTF-8 umstellen

Beim erstmaligen compass compile eines neuen Projekt wurde mir heute die folgende Fehlermeldung ausgegeben:

Invalid US-ASCII character "\xC3"

Sass und Compass bekommen ihre Encoding-Optionen von Ruby, dass sie wiederum vom Environment (sprich: Dem Server, auf dem es läuft) übernimmt.

Um dieses Problem zu beheben, können zum einen die Locales (Spracheinstellungen) des Systems angepasst werden oder aber „nur“ das Encoding von Sass/ Compass auf UTF-8 umgestellt werden.

Locales umstellen

Achtung: Ich habe, was Server-Geschchichten angeht, maximal Achtelwissen und frage lieber sachkundige Mitmenschen. Daher verweise ich gern auf den Wiki-Artikel Locales unter Ubuntu konfigurieren.
In meinem konkreten Fall bekam ich (wie immer) schnell und kompetent Support von meinem Hoster Uberspace, der mit freundlicherweise die benötige Zeile Code gleich per Mail schickte:

export LC_CTYPE="en_US.UTF-8"

Hat bei mir funktioniert:

[user@server ~]$ locale
LANG=
LC_CTYPE=en_US.UTF-8

Encoding von Sass/ Compass ändern

Um das Encoding von Sass/ Compass zu ändern, muss in der config.rb-Datei folgende Zeile Code eingefügt werden:

Encoding.default_external = 'utf-8'

Quellen

Encoding error on compass font-face mixin

PuTTY-Theme-Einstellungen ändern

Auf meinem Windows-7-Laptop ist PuTTY das Tool meiner Wahl, um mich via ssh mit meinem Webspace zu verbinden. Weil mir die Default-Darstellung nicht unbedingt zusagte und ich ein großer Fan des Monokai-Themes bin, lag nichts näher als dieses Farbschema auch in PuTTY zu aktivieren.

Der erste Schritt besteht im Erstellen einer .reg-Datei mit den Monokai-Farben als Inhalt.

Dazu einfach den obigen Text kopieren, in eine leere Datei in einen beliebigen Texteditor einfügen und als monokai.reg abspeichern. Selbstverständlich ist auch jeder andere Dateiname in Ordnung.

Im Abschnitt

[HKEY_CURRENT_USER\Software\SimonTatham\PuTTY\Sessions\monokai]

ist der String monokai am Ende der Zeile wichtig, da dies der Name der Session ist die im PuTTY-Sessions-Manager geladen werden muss um auch wirklich das Monokai-Theme zu aktivieren.

Um eine bereits existierende Session mit dem gewünschten Theme zu benutzen, muss der Name der Session an Stelle von Monokai in die .reg-Datei eingetragen werden. Wenn also wie bei mir die Session „Uberspace“ heißt, dann wird aus

[HKEY_CURRENT_USER\Software\SimonTatham\PuTTY\Sessions\monokai]

folglich

[HKEY_CURRENT_USER\Software\SimonTatham\PuTTY\Sessions\Uberspace]

.
PuTTY-Session-Manager
Nachdem der gewünschte Sessionname eingetragen ist, müssen die Settings aus der frisch erstellten .reg-Datei lediglich in der Systemregistry gespeichert werden. Dazu mit rechts auf die Datei klicken, im nun erscheinenden Kontextmenü „Zusammenführen“ aktivieren und die aufploppenden Sicherheitshinweise bestätigen.

Von nun sollte im PuTTY-Session-Manager entweder die Session „Monokai“ (wenn keine bestehende Session eingetragen wurde) oder aber die angepasste bestehende Session mit dem Monokai-Theme ladbar sein.

MySQL-Terminal mit Root-Rechten auf Windows 7 ausführen

Ich lege in meiner lokalen Entwicklungsumgebung (Windows 7, XAMPP) für jedes Projekt einen eigenen Datenbank-Nutzer an, der nur Zugriff auf eine projektspezifische Datenbank besitzt. Dazu muss ich folgende Schritte ausführen:

  1. Die Eingabeaufforderung ausführen
  2. Auf Festplattenpartition D:\ wechseln
  3. In das XAMPP-MySQL-Verzeichnis navigieren
  4. Mich als Root-User anmelden
  5. Mein Passwort eingeben

Um diesen Prozess etwas zu optimieren, habe ich eine kleine Batch-Datei geschrieben die mir quasi auf Knopfdruck die ersten vier Schritte abnimmt:

@echo off
d:
cd d:\xampp\mysql\bin
mysql.exe -h localhost -u root -p

Es lebe die Faulheit.

Parameter

@echo off unterdrückt begleitende Ausgabe-Schritte des Scripts im Terminal.

Gut zu wissen

Natürlich wäre es auch möglich, das entsprechende Passwort direkt im Anmeldeprozess zu übergeben und so alle fünf Schritte vom Script erledigen zu lassen:

mysql.exe -h localhost -u root -pPASSWORT

Aber… lieber nicht.

VirtualHosts (Domains/ Subdomains) einrichten mit XAMPP

Beim Bearbeiten verschiedener Projekte kann es aus Gründen der Übersichtlichkeit hilfreich sein diese in der lokalen Entwicklungsumgebung mit verschiedenen Domains bzw. Subdomains aufzurufen. Um dies zu gewährleisten sind zwei Schritte notwendig (bezogen auf die Arbeit mit XAMPP unter Windows).

Anlegen eines VirtualHosts für den Apache-Webserver

Im Ordner [XAMPP-Installationspfad]\xampp\apache\conf\extra liegt die Datei httpd-vhosts.conf. In diese wird folgendes Snippet eingefügt:

# Standard-Localhost-Konfiguration
<VirtualHost *:80>
    DocumentRoot "C:\xampp\htdocs"
    ServerName localhost
</VirtualHost>

# VirtualHost aevo.de
<VirtualHost *:80>
    DocumentRoot "C:\xampp\htdocs\wordpress"
    ServerName aevo.de
    ServerAlias www.aevo.de
</VirtualHost>

Der DocumentRoot verweist auf das Verzeichnis, in dem das entsprechende Projekt liegt. Hier muss also der Dateipfad zum Projektordner eingetragen werden.
Die Domain/ Subdomain unter der das Projekt gefunden werden soll wird bei ServerName eingetragen; im ServerAlias können alternative Adressen eingetragen werden (z.B. die www-Subdomain wie im obigen Beispiel).
Achtung: Der erste Codeblock ist wichtig! Ohne ihn geht die normale Localhost-Konfiguration verloren, das heißt dass sämtliche Aufrufe von Localhost/ 127.0.0.1 dann immer auf den zuletzt definierten Vhost verweisen– und das möchten wir nicht.

Zuordnen der gewünschten Domain/ Subdomain in der hosts-Datei

Im zweiten Schritt muss die hosts-Datei editiert werden, um die gewünschte Domain/ Subdomain auf den Localhost verweisen zu lassen.

# Verweis aevo.de auf localhost
127.0.0.1	aevo.de

Im Anschluss sollte der Apache neu gestartet werden, damit alle Änderungen angewendet werden können.

Mit pwgen Passwörter erzeugen

… Ich sehne den Tag herbei, an dem ich mir die ganzen Parameter merken kann.

pwgen -c -n -y -s -B 12 3

Parameter

-c = Fügt mindestens einen Großbuchstaben in das Passwort ein
-n = Fügt mindestens eine Nummer in das Passwort ein
-y = Fügt mindestens ein Symbol in das Passwort ein
-s = Das Passwort wird komplett zufällig generiert
-B = Vermeidet das Einfügen von ähnlichen Buchstaben wie 0 und O
12 = Anzahl der Zeichen, die das Passwort haben soll
3 = Anzahl der Passwörter, die generiert werden

Compass und das WordPress-eigene style.css

In WordPress-Themes muss innerhalb des Theme-Root-Verzeichnis‘ ein Stylesheet namens style.css liegen, ansonsten wird das entsprechende Theme nicht erkannt. Dies ist innerhalb meines normalen Compass-Setups nicht ganz unproblematisch, da ich normalerweise alle Stylesheets im Ordner css/ lagere, also auch das normale style.css. Meine bisherige Lösung sah so aus, dass ich im Theme-Root ein Stylesheet hatte dass das von Compass kompilierte Css importiert. Wirklich schön war das allerdings nicht, da so für die Einbindung zwei Requests von Nöten waren.

Umso erfreuter war ich, als ich bei Chris Coyier ein äußerst hilfreiches Snippet fand.

require 'fileutils'
on_stylesheet_saved do |file|
  if File.exists?(file) && File.basename(file) == "style.css"
    puts "Moving: #{file}"
    FileUtils.mv(file, File.dirname(file) + "/../" + File.basename(file))
  end
end

Das Snippet sucht nach dem Kompilieren die Datei style.css und schiebt sie innerhalb der Verzeichnisstruktur eine Ebene höher, in meinem Fall also ins Root-Verzeichnis des Themes.

Links

Compass Compiling and WordPress Themes

Suchen und Ersetzen mit regulären Ausdrücken in Geany

Beim Editieren eines Html-Dokuments stieß ich kürzlich auf eine kleine Unannehmlichkeit: Innerhalb eines <a href="#" class="chief">[TEXT]</a>-Elements sollten vor dem schließenden Tag noch zusätzliche Inhalte eingefügt werden. Prinzipiell nicht weiter wild, aber dieses Konstrukt kam über 30 Mal im Dokument vor und der Anker-Text änderte sich pro Element. Mit einem einfachen Suchen und Ersetzen kam ich also nicht weit, da die Anker-Elemente durch den wechselnden Text einzigartig waren. Und alle Elemente manuell ersetzen kam nicht in Frage. Was also tun? Die Antwort hieß reguläre Ausdrücke. Die IDE meiner Wahl, Geany, erlaubt im Suchen-und-Ersetzen-Dialog die Verwendung der Option „reguläre Ausdrücke“, daher probierte ich ein wenig herum, fragte Kollegen und kam schließlich durch die Hilfe von David auf folgendes:

Suchmuster

(<a href="#" class="chief">)([^<]+)(</a>)

Ersetzungsmuster

\1\2 <i class="icon link" aria-hidden="true"></i>\3

Vereinfacht gesagt sucht Geany also nach allen a-Elementen mit der Klasse chief und setzt vor dem schließenden Tag <i class="icon link" aria-hidden="true"></i> ein.

Funktionierte tadellos und wird sicherlich noch öfter genutzt werden.