CS:GO – Unable to determine CPU Frequency. Try defining CPU_MHZ.

Bei der Installation eines CounterStrike:GO-Servers kann es zu folgender Fehlermeldung kommen:

Unable to determine CPU Frequency. Try defining CPU_MHZ.

Laut diversen Forenbeiträgen soll folgender Befehl unter manchen Linux-Distributionen Abhilfe schaffen:

mount -t linprocfs linproc /compat/linux/proc

Unter Debian ist der Work-Around allerdings zwecklos und eine Manipulation der steam.sh-Datei effektiver. Die Fehlermeldung lässt sich umgehen, indem man die CPU-Frequenz manuell angibt. Die Taktung der cpu ist unter /proc/cpuinfo (cat /proc/cpuinfo) (Debian) einsehbar.

Der ermittelte Wert wird anschließend in die steam.sh-Datei oberhalb von

cd "$STEAMROOT"

geschrieben (bspw. für 2 GHz):

export CPU_MHZ=2000

Bei einer erneuten Ausführung der steam.sh sollte zumindest oben genannter Fehler nicht mehr auftauchen.

jQuery.find() mit Doppelpunkt im Tag

jQuery eignet sich hervorragend zum Parsen von RSS-Feeds bzw. von XML-Dokumenten im Allgemeinen:

var xml = $(data); //wobei data ein XML-String bspw. eines RSS-Feeds ist

Allerdings kommt es bei der Verwendung von Tags mit Doppelpunkten (evtl. auch bei anderen Sonderzeichen) zu Komplikationen, sofern man einzelne Nodes des XML-Strings via jQuery.find() auslesen möchte. Umgehen lässt sich dass, indem der Parameter (in diesem Fall der Name des Tags) escaped wird:

xml.find("foo\\:bar").text();

Allerdings ist diese Problemlösung inkompatible mit Webkit-Browsern. Abhilfe schafft es, den ersten Teil des Tags zu ignorieren:

xml.find("bar");

In Kombination ergibt das:

var xml = $(data);
if (xml.find('bar').length === 0) {
    return xml.find('foo\\:bar').text();
}
return xml.find('bar').text();

JPlayer dynamische Multi-Instanzen

JPlayer ist eine kostenlose Medienbibliothek für Javascript (JQuery Plugin), welche das Einbinden von Mediendateien (insbesondere Musik und Videos) einfach und Browser-übergreifend ermöglicht.

Allerdings ist JPlayer bei der Verwendung mehrerer Instanzen auf einer Seiten vergleichsweise unflexibel. Die Optionen (Mediendateien, der Verweis auf den visuellen Musik-/ Videoplayer: cssSelectorAncestor, …) müssen während der Instantiierung dem Konstruktor übergeben werden und können nicht während der Laufzeit editiert werden.
Für jede einzelne Instanz von JPlayer bräuchte man also unnötige, redundante (vorausgesetzt die Player sollen alle gleich sein) Javascript-Zeilen.
weiterlesen JPlayer dynamische Multi-Instanzen

Leeräume zwischen vertikalen Listen entfernen

Bei der Verwendung von Listen (ul) kann es bei einer vertikalen Anordnung via display: inline-block; zu Leerräumen zwischen den Listenelementen kommen. Dieses Verhalten ist insbesondere in Kombination mit Rahmen oder Hintergrundfarben störend.

Die Leerräume entstehen durch unsichtbare Leerzeichen zwischen den Listenelementen. Sie lassen sich umgehen, indem die Schriftgröße des übergeordneten Elements auf „0“ gesetzt wird. Anschließend muss den einzelnen Listenelemente wieder die eigentliche Schriftgröße zugeordnet werden.

#menu ul {
    font-size: 0;
}
#menu ul li {
    font-size: 14px;
}

jQuery .load() ohne Container

Mit jQuery-Funktion .load() ist es möglich, Inhalte eines Dokuments in ein vorhandenes Element zu laden. Zudem ist es möglich nur ein spezielles Element einer Webseite zu laden:

$('#result').load('dir/file.html #content');

Allerdings wird hierbei der Inhalt des Elements #content von einem gleichnamigen Container eingeschlossen. Das Laden des Inhalts ohne Container ist möglich, indem man explizit alle Kind-Elemente lädt:

$('#result').load('dir/file.html #content > *');

Überprüfen, ob mod_rewrite aktiviert ist

mod_rewrite ist die Rewrite-Engine des Apache Webservers und wird in vielen modernen Webanwendungen eingesetzt. Jedoch gibt es bisher keine zuverlässige Möglichkeit, um die Unterstützung von mod_rewrite via PHP zu ermitteln. Im Folgenden werde ich eine Möglichkeit erläutern, die Unterstützung von mod_rewrite trotzdem zuverlässig zu ermitteln.

Über die .htaccess-Datei ist es möglich Regeln für die Verwendung von mod_rewrite aufzustellen, allerdings könnte diese deaktiviert sein, weswegen das Workaround grundsätzlich auf die .htaccess-Datei abzielt.

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteRule ^/index.php     /index.php?mod_rewrite=1 [QSA]
</IfModule>

Das oben-stehende Snippet überprüft, ob mod_rewrite aktiviert ist und hängt einen unsichtbaren Parameter an die URL an. Via PHP ist es nun möglich diesen Parameter zu überprüfen. Natürlich kann mod_rewrite durch einen anderen Parameter-Namen ersetzt werden, damit er nicht bewusst (oder unbewusst) manipuliert werden kann. Bsp.:

if ($_GET['mod_rewrite'] == '1') {
    //Funktionen
}

jQuery Mobile: Flackernde/ blickende Übergänge

In jQuery Mobile (1.2) kann es bei der Verwendung von

<meta name="viewport" content="width=[...]user-scalable=no[...]">

zu einem Folgefehler kommen, der sich durch flackernde bzw. blickende Buttons bei den Übergängen erkenntlich macht. Das Problem konnte ich unter Android 2.3.* feststellen, bei dem Versuch eine gefixte Navigation (position: fixed;) im Fußbereich zu platzieren.
Als Workaround für die flackernden/ blickenden Übergänge scheint es leider keine besser Lösung zu geben, als die Animationen komplett zu deaktivieren:

$('#page_id').live('pagecreate', function () {
    $.mobile.defaultDialogTransition = "none";
    $.mobile.defaultPageTransition = "none";
});