Homebrew und crlf
Git ist ein verteiltes Versionskontrollsystem. Soweit so gut. Genauer werde ich in diesem Artikel nicht darauf eingehen, schreibe aber seit einiger Zeit an einer Kurzeinführung.
Nun will es der Zufall, dass ich Git für einige Webprojekte einsetze. Auf diversen Seiten, so auch auf Github gab es den Hinweis, in der Config folgendes Einzutragen:
Dies verhindert mögliche Probleme mit Windowsusern, wenn deren Editor mit LF Zeilenenden (Standard unter Unix und Linux Systemen, und eben auch unter Mac OS X) nicht zurecht kommt. Da viele Editoren unter Windows LF automatisch in CRLF (Windows Zeilenendsteuerzeichen) umwandeln, würde dies Änderungen in jeder Zeile einer geänderten Datei ergeben.
Daher solle man doch lieber gleich mit CRLF arbeiten, wenn ggf. Windowsuser mit ins Repository pushen.
So weit so gut. Bis vor einiger Zeit funktionierte das auch alles wunderbar, und funktioniert auch immer noch.
Allerdings macht das mit Homebrew Probleme. Homebrew ist ein Packetmanager für Mac OS X, ähnlich wie MacPorts oder Fink. Homebrew ist wesentlich schlanker als oben genannte Alternativen und setzt wenn möglich auf Versionen von Programmen, die bereits standardmäßig auf OS X vorhanden sind.
Auf jeden Fall hat der Aufruf von ‘brew’ mir folgende Fehlermeldung eingebracht:
Ich konnte mir erst keinen Reim darauf machen. Was ist passiert? brew hat beim Updaten sich selbst überschrieben und die Zeilenendsteuerzeichen von LF auf CRLF geändert und sich damit selbst ins Nirvana geschossen, da es Ruby nicht mehr aufrufen konnte.
Ich habe /usr/local/brew in Textmate geöffnet und neu unter gleichem Namen, jedoch mit LF statt CRLF gespeichert. In der Datei /usr/local/.git/config habe ich noch folgende Zeile eingetragen:
Das überschreibt den Wert aus ~/.gitconfig und verhindert das Umwandeln.
Vielleicht ist es auch einfach Sinnvoll Auto-CRLF nur zu setzen, wenn man es wirklich braucht. Keine Ahnung.
Jedenfalls wollte ich an dem Problem, bzw. dessen Lösung teilhaben lassen, da ich irgendwie keine sinnvollen Ergebnisse ergooglen konnte.
22 Feb 2010 Noch keine Meinung Tweet thisRunde Ecken mit CSS (Cross-Browser)
Runde Ecken… sie sind hübsch, machen eine Website harmonischer und dynamischer. CSS3 sei Dank, ist das, was man früher nur mit Bildern, teilweise mit verschachtelten Div-Monstern erreichen konnte, keine Frickelarbeit mehr.
Bis CSS3 von allen Browsern flächendeckend unterstützt werden, ist leider doch noch ein bisschen Voodo notwendig. Allerdings müssen wir nicht mehr mit obskuren DIV-Konstrukten und Bildern arbeiten, sondern erreichen in den meisten modernen Browsern mit reinem CSS ziemlich gute Ergebnisse. Chrome, Safari und Firefox machen überhaupt keine Probleme und zeigen uns runde Ecken an, wenn wir das möchten.
Der CSS-Befehl in CSS3 lautet schlichtweg
. Oben genannte Browser setzen diesen Befehl aktuell jedoch noch nicht so um, sie haben alle eigene Befehle, die allerdings das gleiche Ergebnis produzieren.
Folgender Codeblock produziert das gewünschte Ergebnis:
-moz-border-radius: 10px; /* Mozilla */
-webkit-border-radius: 10px; /* Webkit-Browser */
-khtml-border-radius: 10px; /* KHTML-Browser */
border-radius: 10px; /* CSS3 */
}
Genau zu diesem Zwecke erschaffen, immer im Schatten meines großen Bruders »Lorem Ipsum«, freue ich mich jedes Mal, wenn Sie ein paar Zeilen lesen. Denn esse est percipi – Sein ist wahrgenommen werden.
border-radius: 10px; schreiben wir ganz zum Schluss um ggf. vorherige Deklarationen damit zu überschreiben, sollte ein Browser den W3C CSS Standard dann doch unterstützen.
Im Internet Explorer und auch im Opera funktioniert das Ganze leider nicht (Opera 10.50beta interpretiert scheinbar das CSS3 border-radius). Das wäre ja auch zu einfach gewesen. :)
Internet Explorer
Im Internet-Explorer müssen wir uns ein wenig Java-Script bedienen und dreckiges CSS produzieren. Doch was will man machen, wenn der Kunde auf gerundeten Ecken besteht? Und das auch noch in allen möglichen Browsern?
Ich persönlich bin Fan davon, dort die abgerundeten Ecken einfach sein zu lassen, und stattdessen einigermaßen validen Code zu schreiben, aber manchmal hat man das einfach nicht zu entscheiden. :(
http://code.google.com/p/curved-corner/ bietet uns ein bisschen JavaScript, dass runde Ecken im Internet-Explorer zeichnet. Die Lösung ist relativ dreckig und spielt nicht gut mit dem dynamischen Nachladen von Elementen zusammen.
Alle Elemente die Runde Ecken bekommen sollen, müssen folgenden Code im CSS haben:
behaviour: url(/js/border-radius.htc);
border-radius:10px;
}
Hierbei ist zu beachten, dass die runden Ecken nur dann gezeichnet werden, wenn die Elemente zusätzlich ein die “position”-Eigenschaft im CSS gesetzt bekommen, auch wenn das eigentlich gar nicht nötig wäre.
Auch können nicht unterschiedliche Werte für die einzelnen Ecken angewendet werden. Möchtet ihr also nur unten runde Ecken, ist das im IE nicht möglich. Auch die Verwendung mit RGBA-Elementen, also Transparenzen ist nicht möglich.
behaviour: url(/js/border-radius.htc);
border-radius:10px;
position:relative;
}
Opera 10.10 braucht wieder einen anderen Hack, und der oben genannte IE-Hack ist auch eher dreckig und mies, statt vernünftig und valide.
Ich empfehle daher, auf reines CSS ohne JavaScript zu setzen und denjenigen, deren Browser keine abgerundeten Ecken per CSS3 rendern kann, einfach die normalen Ecken anzeigen zu lassen.
13 Feb 2010 Noch keine Meinung Tweet this