Den schnellsten sass, bzw. scss Compiler, sassc unter macOS installieren

Der schnellste sass bzw. scss Compiler ist der in C geschriebene sassc mit der ebenso in C geschriebenen LibSass. Folgende Schritte sind im Terminal notwendig, um ihn unter macOS zum Laufen zu bekommen.

# SassC Interpreter installieren
$ cd /usr/local/src
$ curl -kL https://github.com/hcatlin/libsass/archive/master.zip > libsass.zip
$ unzip libsass.zip

# LibSass installieren
$ cd /usr/local/src
$ curl -kL https://github.com/sass/sassc/archive/master.zip > sassc.zip
$ unzip sassc.zip

# SassC kompilieren
$ export SASS_LIBSASS_PATH="/usr/local/src/libsass-master"

$ cd sassc-master
$ make
$ sudo ln -s $(pwd)/bin/sassc /usr/local/bin/sassc
$ chmod +x /usr/local/bin/sassc

# Beispielnutzung
$ sassc ~/Desktop/input.scss ~/Desktop/output.css

Gefunden hier:
https://gist.github.com/ryanjbonnell/e03f3cf1e9f6b3cf402b

HTML Tidy mit einer Zeile JavaScript

Mit einer einfachen Zeile JavaScript kann man kaputtes HTML in gut strukturiertes XHTML umwandeln.

function tidy(document) {
    return new XMLSerializer().serializeToString(
new DOMParser().parseFromString(document, 'text/html'));
}
console.log(tidy("<title>Seitenname</title><h1>Überschrift</h2><p>Das ist ein Test<p>Noch eine Zeile<ul><li>Liste</ul><h3>Text</h1>"));

Ausgabe ist:

<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Seitenname</title></head><body><h1>Überschrift</h1><p>Das ist ein Test</p><p>Noch eine Zeile</p><ul><li>Liste</li></ul><h3>Text</h3></body></html>

Gefunden hier: http://stackoverflow.com/questions/12092532/how-to-convert-html-to-valid-xhtml

Große JSON-Datei in vim laden und formatieren

Für einen Kunden musste ich eine sehr große JSON Datei analysieren. Diese Datei war ungefähr 150MB groß. In solchen Fällen nutze ich gerne den MacVim, der nach meinem Wissen der einzige Texteditor ist, der mit größeren Dateien unproblematisch umgehen kann.

Die Datei war ausserdem unformatiert, ohne Einrückung etc., was sich dann einfach mit dem vim-Befehl bzw. Python-Befehl

:%!python -m json.tool

machen liess.

Gefunden hier: https://coderwall.com/p/faceag/format-json-in-vim

Die Textkodierung einer Datei ändern (macOS)

Mit dem Kommandozeilentool iconv kann mit im macOS Terminal die Kodierung von Dateien ändern. Wenn man zum Beispiel die Kodierung einer Datei von iso-8859-1 auf utf-8 ändern möchte, geht das ungefähr so:

iconv -f iso-8859-1 -t utf-8 datei_iso.txt > datei_utf8.txt

In OS-X ist das Tool iconv standardmäßig enthalten, es sollte aber so ähnlich auch unter anderen Unixen und Linux funktionieren.

Verfügbaren Speicher von SmartSVN erhöhen (macOS)

SmartSVN wird in der default-Einstellung mit für große Projekte zu wenig Speicher gestartet. Diese Einstellung lässt sich aber über die Systemvariable „$SMARTSVN_MAX_HEAP_SIZE“ überschreiben.

Die Variable kann man beispielsweise in der Datei ~/.profile setzen, wie hier gezeigt:

export PATH=~/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin
export EDITOR=vi
export SMARTSVN_MAX_HEAP_SIZE=1024m

Interessant in dem Zusammenhang ist auch das Script, das SmartSVN startet, und zwar die Datei

/Applications/SmartSVN 7.0.6/SmartSVN 7.app/Contents/MacOS/SmartSVN

In diesem Script wird die beschriebene Systemvariable ausgelesen und das Java-Programm gestartet.

Der Terminal-Fenstermanager Screen

In letzter Zeit lerne ich immer mehr das Programm Screen schätzen. Es macht die Verwaltung von Server-Systemen wesentlich angenehmer, da es mehrere virtuelle Terminals bzw. „Fenster“ über einen Login erlaubt.

Eine sehr praktische Eigenschaft an Screen ist, dass die Screen-Sessions unabhängig von der bestehenden Server-Verbindung erhalten bleiben. Das heisst, man kann ein Script gefahrlos innerhalb einer Screen-Session starten, ohne Angst haben zu müssen, dass es durch einen Verbindungsabbruch gestoppt wird.

Im folgenden die wichtigsten Kommandozeilen-Parameter und Tastenkürzel nach dem Aufruf von Screen.

Eine neue Screen-Session startet man mit dem Kommando „screen“.

screen

Optional kann man der Session mit dem Parameter -S einen Namen geben.

screen -S SessionName

Wenn man mehrere Screen-Sessions mit verschiedenen Namen gestartet hat, kann man sich mit dem Parameter -ls eine Liste der bestehenden Screen-Sessions anzeigen lassen.

screen -ls

Wie gesagt, bleibt eine Screen-Session nach Beendigung des Terminals erhalten, vorausgesetzt, auf dem Server wurde kein Reboot durchgeführt.

Eine früher gestartet Screen-Session lässt sich mit dem Parameter -r wieder reaktivieren. Der SessionName ist nur dann notwendig, wenn mehrere screen-Sessions gestartet wurden.

screen -r SessionName

Im Folgenden, die Kürzel zur Steuerung innerhalb der Screen-Session. Screen-Kommandos werden im Allgemeinen mit ctrl-a und einer weiteren Taste ausgeführt.

ctrl-a d 	Screen Session in den Hintergrund setzen (detach)
ctrl-a ? 	Hilfe anzeigen

ctrl-a c 	Eine neues Fenster erstellen
ctrl-a 1-n 	Auf Fenster Nr. 1-n schalten 
ctrl-a "	Liste der Fenster anzeigen
ctrl-a A	Das aktuelle Fenster umbenennen
exit		Das aktuelle Fenster schliessen

Screen-Fenster lassen sich teilen um so mehr Informationen gleichzeitig im Terminal anzuzeigen.

ctrl-a S	Das aktuelle Fenster horizontal teilen
ctrl-a |	Das aktuelle Fenster vertikal teilen
ctrl-a tab	Zur nächsten Fensterregion springen
ctrl-a X	Die aktuelle Fensterregion entfernen
ctrl-a Q	Alle Regionen ausser der aktiven entfernen

Simple SQL-Abfragen in Magento

Magento bietet einen hervorragenden Datenbank-Abstraktionslayer. Und im Allgemeinen sollte man diesen Layer auch für Datenabfragen und vor allem für Datenmodifikationen im Magento-System nutzen.

Manchmal ist es aber doch der einfachste und performanteste Weg, wenn man direkt per SQL auf die Datenbank zugreifen kann. Das geht auch in Magento, und zwar auf folgende Weise.

$sql = "SELECT foo FROM bar WHERE baz";
$data = Mage::getSingleton("core/resource")->getConnection(Mage_Core_Model_Resource::DEFAULT_READ_RESOURCE)->fetchAll($sql);

Parameterübergabe bei window.setTimeout

Als ersten Parameter von window.setTimeout() kann auch ein Funktionszeiger (function pointer) anstatt eines Strings übergeben werden. So ist es möglich, die nach dem Timeout aufgerufene Funktion mit beliebigen Parametern zu versorgen, wie in folgendem Beispiel gezeigt ist.

var elementId = this.id; // oder irgend ein anderer Wert
window.setTimeout(function() { macheWas(elementId) }, 1000);

Hier wird die Funktion „macheWas“ nach einer Sekunde mit dem Parameter „elementId“ aufgerufen.

UTF-8 mit Hibernate und MySQL

Damit MySQL mit Hibernate UTF-8 kodierte Zeichen richtig speichert, muss man die jdbc-URL um ein paar Parameter erweitern, so dass sie ungefähr so aussieht:

jdbc:mysql://127.0.0.1:3306/meine_datenbank?autoReconnect=true&useUnicode=true&characterEncoding=UTF-8

Ohne diese Modifikation werden UTF-8 Sonderzeichen als Fragezeichen abgespeichert.

Gefunden auf: http://www.isocra.com/2007/01/utf-8-with-hibernate-30-and-mysql/

Pear für XAMPP auf OS-X aktivieren

Pear ist zwar bei XAMPP mit dabei, aber, zumindest in Version „XAMPP für Mac OS X 1.0.1“, nicht funktionstüchtig. Dieser Umstand lässt sich mit folgenden Schritten beheben.

1. Im Terminal folgende Befehle ausführen

sudo /Applications/XAMPP/xamppfiles/bin/pear channel-update pear.php.net
sudo /Applications/XAMPP/xamppfiles/bin/pear install PEAR

2. In den letzten Zeile der Konfiguration /etc/php.ini

;***** Added by go-pear
include_path=".:/Applications/xampp/xamppfiles/lib/php"
;*****

gegen das hier austauschen:

include_path = ".:/Applications/XAMPP/xamppfiles/lib/php:/Applications/XAMPP/xamppfiles/lib/php/pear"

Nach einem Neustart des Apache sollte Pear nun funktionieren.