Martin Lantzsch
Software Entwickler
3. Dezember 2012

Mobilfunknetzausbau auf dem Lande

3. Dezember 2012 - Geschrieben von Martin - Keine Kommentare

In letzter Zeit habe ich den Eindruck, dass das Mobilfunk – und insbesondere das Edge Datennetz in den ländlichen Regionen verbessert und ausgebaut wird.

So hatte ich vor einem halben Jahr bei mir zuhause noch kein Handy Netz, habe ich nun überall im ganzen Haus 4 bis 5 Balken Edge. In manchen teilen des Dorfes wo ich Sichtverbindung zum ca. 5km entfernten Handymast habe sogar gelegentlich 3G oder HSDPA mit hoher stabiler Bandbreite.

Ich als „mobilfunk only surfer“ schätze das natürlich sehr, denn nun kann ich fast überall Online gehen um zu chatten, im Internet zu surfen oder meine eMails abzurufen. Und das ganz ohne *hab ich hier Netz – nein – hier vieleicht – …* gesuche.

Klar die Verbindung ist nicht übermäßig schnell aber für grundlegende Dinge reicht es. Und zum Synchronisieren von Spotify und Updaten der Apps habe ich ja die ganze Nacht an der Steckdose Zeit.

20. November 2012

jQuery click nicht auf Childs anwenden

20. November 2012 - Geschrieben von Martin - Ein Kommentar

Wenn man mit jQuery einen Klick Event Handler auf ein Element setzt, so wird dieser auch automatisch bei klick auf ein Kindelement ausgeführt.

Um das zu umgehen, habe ich mir folgende if Abfrage mit eingebaut, die prüft ob das geklickte Element auch wirklich das Element ist, dass im Event Handler angegeben wurde und keines der Kind Elemente.

$('.element').click(function(data, handler) {
	if(data.target == this) {
		// Code
	}
});

29. Oktober 2012

Bitfelder/Bitfields mit PHP

29. Oktober 2012 - Geschrieben von Martin - Keine Kommentare

Heute beschäftigte ich mich damit Bitfelder in PHP abzubilden. In meinem Fall wurde eine Variable mit verschiedenen Flags befüllt. Am altbekannten
OOP Beispiel Auto könnten diese Flags zum Beispiel Ausstattungsmerkmale sein:

  • Panoramadach? Ja/Nein
  • Navigationssystem? Ja/Nein
  • Alufelgen? Ja/Nein

Um diese Werte nun besondern Speicherplatzschonend zu sparen, wollen wir nun alles in ein Bitfeld speichern. Ein Bitfield mit Flags ist eigentlich nur eine Folge von Nullen, auf der Bits gesetzt (0 –> 1) werden können.

Beispielsweise hat unser Auto die Merkmale Panoramadach und Alufelgen, dann sieht dieses Bitfield so aus:

101

Gelesen wird die Ausstattungsmerkmalliste von oben nach unten und das Bitfeld von rechts nach links. Die erste 1 sagt, ja wir haben ein Panoramadach, die 0 sagt Nein wir haben kein Navigationssystem und die zweite 1 ganz links verrät Ja wir haben Alufelgen.

Mit PHP können wir dieses Bitfield so erzeugen:

$bitfield;
$bitfield |= 1 << 0; // An die erste (also 0te) Stelle im Bitfield eine 1 setzen
$bitfield |= 0 << 1; // An die zweite eine 0
$bitfield |= 1 << 2; // Und an die dritte eine 1

In der zweiten Codezeile gibt die 1 an, dass das Bit gesetzt ist, das „<<" setzt dann diesen Vorrausgehenden Wert auf die nachfolgende Stelle (in dem Fall 0) im Bitfeld.

0 << 0 // erstes Bit ist Null
0 << 1 // zweites Bit ist Null
0 << 2 // drittes Bit ist Null
1 << 3 // viertes Bit ist Eins
1 << 4 // fünftes Bit ist Eins

Nun können wir uns mit folgender Funktion die Binärzahl ausgeben lassen:

echo base_convert($bitfields, 10, 2);

Dieser Funktionsaufruf konvertiert die Zahl von der Basis 10 zur Basis 2 und gibt sie aus:

101

Passt. Nun können wir noch prüfen, ob z.B. das erste Bit gesetzt ist:

if($bitfield & 1 << 0)
    echo 'Das erste Bit ist gesetzt.';

Hier wird geprüft, ob das gesetzte Bit in der Bitfield Variable und „1 << 0" gleich sind. Wenn ja ergibt der Ausdruck true. Damit das ganze halbwegs dynamisch bleibt und man nicht immer die Bitzuweisung von Hand tippen muss, so können wir diese auch in einer Varibale oder Konstante speichern:

define('MERKMAL_PANORAMADACH', 1 << 0);
define('MERKMAL_NAVIGATIONSSYSTEM', 0 << 1);
define('MERKMAL_ALUFELGEN', 1 << 2);
 
$bitfield;
$bitfield |= MERKMAL_PANORAMADACH;
$bitfield |= MERKMAL_NAVIGATIONSSYSTEM;
$bitfield |= MERKMAL_ALUFELGEN;
 
if($bitfield & MERKMAL_ALUFELGEN)
    echo 'Jep, das Auto hat Alufelgen.';

25. Oktober 2012

Raspberry Pi am HDMI auf DVI Adapter

25. Oktober 2012 - Geschrieben von Martin - Keine Kommentare

Da mein HDMI Switch für den RPi wohl zu viel Strom zieht, will ich ihn nun per DVI an meinen Monitor anschließen, um dauerhafte Bildaussetzer und Flackern zu verhindern.

Dazu habe ich mir erst einmal von einem netten Kollegen (danke nochmal an dieser Stelle ;-)) einen HDMI auf DVI Adapter geliehen.

Als der RPi lief habe ich den HDMI abgezogen und mit dem Adapter an den DVI Port meines 22″ Displays angeschlossen. Funktionierte prächtig, bis zum nächsten reboot. Dann blieb das Bild schwarz und der Monitor aus. Der Pi war aber per SSH zu erreichen.

Also hat der Adapter wohl zu viel Widerstand, als das der Raspberry Pi erkennen könnte, dass ein HDMI Device angeschlossen ist und gibt via Cinch aus.

Per SSH habe ich dann in der „/boot/config.txt“ das Flag “ hdmi_force_hotplug=1″ gesetzt, damit er dauerhaft HDMI verwendet und nun geht es auch direkt nach einem reboot.

Nun kann ich mich wieder der ehlendigen xbmc Bastelei widmen ;-)

24. Oktober 2012

XBMC build tools schlägt auf dem Raspberry Pi fehl

24. Oktober 2012 - Geschrieben von Martin - Ein Kommentar

Ich habe nun Raspbian auf meinem Raspberry Pi und wollte XBMC installieren, dabei bin ich der Anleitung von der Offiziellen Raspbian Webseite gefolgt: raspbian.org/RaspbianXBMC

Leider kam bei mir immer folgender Fehler wenn ich die die Tools bauen wollte:

pi@raspberrypi ~/xbmc-rbp $ sudo make -C tools/rbp/depends/xbmc
make: Entering directory `/home/pi/xbmc-rbp/tools/rbp/depends/xbmc'
cd ../../../../; ./bootstrap
./bootstrap: 5: ./bootstrap: autoreconf: not found
make: *** [configure] Fehler 127
make: Leaving directory `/home/pi/xbmc-rbp/tools/rbp/depends/xbmc'

Nach der Installation von „dh-autoreconf“ läuft es nun durch:

sudo apt-get install dh-autoreconf

Das läuft nun schon gute 5 Minuten… ich werde berichten was noch alles auf dem Weg zu einem funktionierenden MediaCenter passiert.

16. Oktober 2012

Raspberry Pi ist da

16. Oktober 2012 - Geschrieben von Martin - Keine Kommentare

Mein Ende Juni bestellter Raspberry Pi ist heute geliefert worden.

image

Die Lieferung erfolgte ohne weitere Benachrichtigung seitens RS Components recht überraschend.

Ich habe ihn gleich ausgepackt und ins dazubestellte Gehäuse gesteckt, welches ebenso wie der RPi und das extra georderte Netzteil einen sehr soliden Eindruck auf mich macht.

Als erstes wollte ich Raspdian installieren, doch leider schlug der erste Download nach 341 von knapp 450 MB fehl, da meine DSL Leitung kurzfristig zusammenbrach. Mittlerweile geht sie wieder und ich lade erneut. In 4 Stunden habe ich die Zip, dann wird morgen früh direkt getestet ob der RPi so gut läuft wie alle sagen :-)

11. Oktober 2012

HP Elitebook 8470p USB Ports funktionieren nicht mehr

11. Oktober 2012 - Geschrieben von Martin - Keine Kommentare

Mein HP Elitebook 8470p hat seit Anbeginn eine ganz komische Krankheit, und zwar funktioniere die USB Ports beim einstecken in die Dockingstation desöfteren nicht mehr.

Sowohl die Ports an der Docking Station als auch hin und wieder die am Notebook erkennen kein Gerät mehr. Sie tauchen zwar noch im Gerätemanager von Windows 7 auf, aber wenn ich ein Gerät anschließe tut sich gar nichts. Und klicke ich auf „nach geänderter Hardware suchen“ hängt sich die ganze Computerverwaltung auf.

Scheinbar bin ich auch nicht der einzige mit dem Phänomen, denn hier gibt es noch weitere Geschädigte: http://superuser.com/questions/264049/hp-elitebook-8440p-usb-ports-stop-working-on-docking-station

Ein Neustart wie er hier empfohlen wird, hilft nur in den seltensten Fällen, meist muss ich das Notebook aus der Dock herausnehmen, herunterfahren, den Akku kurz entfernen, wieder hochfahren und jetzt hoffen dass meine USB Ports wieder funktionieren. Wenn nicht, muss das Spiel X mal wiederholt werden.

Ich werde die Problematik noch ein wenig beobachten und natürlich berichten, aber wenn sich nichts tut bestehe ich auf ein Ersatzgerät bei HP.