Donnerstag, September 28 2017

[3D Print] Autoleveling hin und zurück

Nachdem ich nun steil darauf hingearbeitet habe, meinen Anet A8 mit Autolevelfunktion auszustatten, habe ich nun wieder auf das normale manuelle Bedleveling und den klassischen Z-Endstop Schalter zurückgewechselt. Während das finden des Z-Endstop Punktes einwandfrei funktionierte und auch das Autobedleveling brauchbare Ergebnisse lieferte, schien es doch an irgendeiner Stelle eine massive Diskrepanz zu geben. Trotz mehrfachem Justieren und Messen, konnte ich nur ab und an und ohne erkennbaren Grund saubere first Layer drucken. Mal startete der Druck zu hoch, manchmal korrekt und das korrigieren des Z-Offsets hatte kaum oder keine Auswirkungen (Skynet 3D 2.3.2). Alle Operationen mit dem ABL Sensor (LJC18A3-H-Z/BX) wurden auf beheiztem Druckbett und Hotend durchgeführt und bei den Messoperationen wurde die Bettheizung deaktiviert um mögliche Seiteneffekte auszuschließen. An welcher Stelle nun genau die Probleme auftraten lässt sich abschließend leider nicht sagen, ich für meinen Teil bin aber mit dem manuellen Leveln und dem klassischen Z-Endstop und den damit verbundenen Ergebnissen absolut zufrieden und sehe selbst bei funktionierendem ABL Sensor nur minimale Vorteile.

Vielleicht hat ja jemand ähnliche Erfahrungen gemacht?

Dienstag, Juni 16 2015

Raspberry Pi Photobooth

Kathrin_und_Maltes_Hochzeit_363.jpg

Im Rahmen meiner anstehenden Hochzeit suchte ich nach günstigen, zunächst mietbaren, Photobooth Boxen. Diverese Hochzeitsfotografen bieten diese Boxen an, jedoch für einen relativ hohen Preis. Dafür bekommt man jedoch hochqualitative Fotos, denn häufig beinhalten die Boxen teure Spiegelreflexkameras, teure Software und/oder eingebaute Fotodrucker.
Da mir dies jedoch alles zu teuer war, suchte ich nach DIY Alternativen und stieß relativ schnell auf die Seite von Chris Evans (KLICK). Er hatte auf Basis des Raspberry Pi, Raspbian und einem kleinen Pythonprogramm eine wirklich schlanke und einfache Photobooth Lösung gebaut, die meiner Vorstellung einer solchen Box schon recht nah kam. Einen Raspberry hatte ich noch in der Schublade, es fehlte nur noch das Raspberry Kameramodul. Diesbezüglich war ich mir zunächst nicht ganz sicher, denn ich hatte gelesen, dass die Kamera insbesondere bei wenig Licht sehr stark rauschen würde und die Qualität auch nicht wirklich toll sein sollte. Meiner Ansicht nach, ist die Qualität der Fotos jedoch nicht das einzige bzw. ausschlaggebende Argument, welches es bei einer Box zu beachten gibt.
Ich bin der Ansicht, dass das Hauptaugenmerk auf dem Spass und witzigen Fotos liegen sollte, statt auf perfekt ausgeleuchteten, rauscharmen Fotos mit höchster Pixelzahl. Also bestellte ich die Kamera und ich muss sagen, die Qualität ist völlig in Ordnung! Natürlich kann man keine Wunder erwarten, aber für ein paar Fotos bei normalem Licht reicht die Kamera vollkommen aus und wichtiger noch: Sie ist schnell und einfach programmier- und bedienbar!

1. Modifikationen gegenüber der Originalbox im Überblick
1.1 Email und Tumblr Upload deaktiviert
1.2 Wasserzeichen im Bild
1.3 Countdown Overlay im Livebild
1.4 4-Fachdarstellung der geschossenen Bilder (Speicherung aller Einzelbilder und der 4er-Bilder)
1.5 Standby-Replay Modus (wenn keine Fotos gemacht wird, werden nach Zufallsprinzip gemachte Bilder gezeigt)
1.6 RGB LED Beleuchtung
1.7 Mini Webgallerie auf lokalem Webserver, erreichbar über
1.8 WiFi Accesspoint (WLAN Modul)
1.9 Shutdown/Reset Prevention Routine (System Shutdown/Reboot nur über Button-Longpress aktivierbar)
1.10 Externer Buzzer
1.11 Beleuchtete Auslöseschalter
1.12 Speicherung der Fotos auf USB Stick statt SD Karte



1.1 Email und Tumblr Upload deaktiviert
Anders als bei Chris, wollte ich die Bilder nicht zu Tumblr oder irgendeiner anderen Bildplattform hochladen und so konnte der gesamte Teil in meiner neuen Fotobox Software entfallen. Zudem wollte ich den Raspberry auch nicht mit mobilem Internetzugang auststatten.

1.2 Wasserzeichen im Bild
Um den Bildern einen professionellen Touch zu geben, soll ein kleines Wasserzeichen bzw. Logo in der unteren linken Ecke der Bilder angezeigt werden. Um den Rechenprozess beim Erstellen der 4-fach Ansicht zu beschleunigen, werden die Fotos direkt nach der Aufnahme und während des Countdowns im Hintergrund mit dem Logo versehen. Dies geschieht mittels eines System-Call des ImageMagick Programms montage:

    graphicsmagick = "composite -gravity southwest /home/pi/watermark3.png " + filename + " " + filename + "&"
    os.system(graphicsmagick)


Wichtig ist hierbei besonders das "&" Symbol am Ende, welches die Hintergrundausführung des composite Kommandos ermöglicht, also während bereits neue Fotos gemacht werden.



1.3 Countdown Overlay im Livebild
Anders als in der originalen Version der Box wollte ich noch einen Countdown, der als Overlay über das Live-Kamerabild gelegt wird, sodass die Nutzer auch sehen können, wann das Foto geschossen wird. Da im Originalcode sowieso eine kurze Pause zwischen den einzelnen Aufnahmen liegt, musste nur noch ein Bild zur richtigen Zeit ein- und ausgeblendet werden. Hierzu erstellte ich einige Grafiken, die dann halbtransparent über das Kamera-Livebild gelegt werden. Als ich diesen Teil programmierte enthielt die picamera Bibliothek (1.8) noch einen Bug, der ein Memory Leak durch mehrfaches Hinzufügen und Entfernen von Overlays produzierte (Fixed a nasty memory leak in overlay renderers which caused the camera to run out of memory when overlays were repeatedly created and destroyed (#174)). Glücklicherweise wurde dieser mit Veröffentlichung der neuen Version behoben.

def countdown_overlay( camera ):
    n=4
    for i  in range(1,n):
	gc.collect()
    	img = Image.open(str(i)+'.png')
    	pad = Image.new('RGB', (
        	((img.size[0] + 31) // 32) * 32,
        	((img.size[1] + 15) // 16) * 16,
        	))
    	pad.paste(img, (0, 0))
	o = camera.add_overlay(pad.tostring(), size=img.size)
	o.alpha = 100 #128
    	o.layer = 3
	sleep(1)
	camera.remove_overlay(o)
   	del img
   	del pad



1.4 4-Fachdarstellung der geschossenen Bilder (Speicherung aller Einzelbilder und der 4er-Bilder)
Um den gesamten Fotoprozess zu beschleunigen und so mehreren Leuten die Möglichkeit zum Fotografieren zu geben, entschied ich mich, anders als bei Chris die Bilder nicht einzeln sondern alle 4 Bilder gleichzeitig nach der Session auf dem Bildschirm darzustellen. Auch hier kommt wieder Imagemagick ins Spiel und kombiniert die 4 Einzelbilder zu einem:

    #Aus den 4 Einzelbildern 1 Bild montieren
    graphicsmagick = "montage "+ file_path + now + "-01.jpg " + file_path + now + "-02.jpg " + file_path + now + "-03.jpg " + file_path + now + "-04.jpg -geometry 640x512+2+2 "+ file_path + now + "-montage.jpg "
    os.system(graphicsmagick)
    #Kopieren der Einzelbilder nach ./single und in Anschluss löschen
    bilder_wech="cp "+ file_path + now + "-01.jpg " + file_path + now + "-02.jpg " + file_path + now + "-03.jpg " + file_path + now + "-04.jpg "+ file_path + "single/"
    os.system(bilder_wech)
    bilder_wech="rm -f "+ file_path + now + "-01.jpg " + file_path + now + "-02.jpg " + file_path + now + "-03.jpg " + file_path + now + "-04.jpg " 
    os.system(bilder_wech)

8.JPG

1.5 Standby-Replay Modus
Um den Bildschirm optimal auszunutzen sollen während der Fotopausen, d.h. wenn gerade keine Bilder gemacht werden, nach dem Zufallsprinzip Bilder angezeigt werden. Hierzu wird bei jedem Aufruf der Funktion das Bildverzeichnis eingelesen und dann aus dieser Menge fortlaufend zufällig Bilder ausgewählt und angezeigt, bis ein Benutzer den Auslöseknopf drückt. So können sich Benutzer einfach bereits gemachte Bilder anschauen und sich weitere Ideen für neue Fotos holen.

while not GPIO.event_detected(button1_pin) :
		piclist = list()
		x = 0
		for infile in glob.glob(os.path.join(file_path,'*.jpg')):
			piclist.append(infile)
		print random.choice(piclist)
		pygame.display.set_caption('Photo Booth Pics')
		pygame.mouse.set_visible(False) #hide the mouse cursor
		filename = random.choice(piclist)
		del piclist
		img=pygame.image.load(filename)
		img = pygame.transform.scale(img,(transform_x,transfrom_y))
		screen.blit(img,(offset_x,offset_y))
		pygame.display.flip() # update the display
		sleep(3)
		#print "next pic..."
		gc.collect()	

	pygame.quit()
	print "killed random image process"
	GPIO.remove_event_detect(button1_pin)
	start_again = True
	GPIO.output(led2_pin,False)



1.6 RGB LED Beleuchtung
Eine schöne optische Verbesserung mit positivem Nebeneffekt bietet der (die) RGB-LED Strip. Zum einen macht die Beleuchtung natürlich einen tollen Eindruck und unterstützt gleichzeitig in den Abendstunden oder bei schlechten Lichtverhältnissen beim Fotografieren. Fernbedienung und IR Empfänger sind seitlich in der Wartungsklappe untergebracht, was einen schnellen Farbwechsel oder eine Anpassung der Helligkeit ermöglicht. Um noch mehr Lichtleistung in den schmalen Schlitz zu bekommen, entschied ich mich 2 LED Streifen einzubauen. Einen, der nach oben strahlt und auf eine weiße und somit reflektierende Fläche trifft und einen anderen, der direkt nach vorne strahlt. Durch das auf der Rückseite aufgerauhte Plexiglas wird die Scheibe diffus und matt und bietet so ein recht gleichmäßiges relativ blendfreies Licht.

4.JPG

9.JPG




1.7 Mini Webgallerie auf lokalem Webserver
Um den Gästen die Möglichkeit zu geben sich die Bilder mit dem Smartphone oder Tablet anzusehen, benötigte ich neben einem Webserver eine Galleriesoftware, die möglichst wenig Ressourcen benötigt und möglichst ohne große Konfiguration und zusätzliche Bibliotheken oder Datenbanken auskommt. Nach einiger Suche stieß ich auf MiniGal (http://www.minigal.dk/) Perfekt! Nachdem der Server und die Gallerie aufgesetzt waren, stellte ich jedoch ein Problem fest welches mich davon abbrachte, diese Konfiguration produktiv einzusetzen: Die Generierung der Vorschaubilder in der Gallerie geschieht scheinbar ebenfalls mit Imagemagick - Eigentlich kein Problem, doch bei einer Vorschau von 8 Bildern, wurden ebenfalls auch 8 Prozesse gestartet, die die kleine CPU des Raspberry für kurze Zeit vollständig auslasteten. Da gerade bei vielen gleichzeitigen Zugriffen auf den Webserver die Lauffähigkeit des Photobooth Programms nicht sichergestellt werden kann, entschied ich mich dieses Feature zu deaktivieren.

1.8 WiFi Accesspoint
Eigentlich der Tatsache geschuldet, dass der Ethernetanschluss des Pi nur schlecht zu erreichen ist richtete ich einen WLAN Accesspoint, DHCP und DNS Server auf dem Raspberry ein. So ist eine schnelle und unkomplizierte Wartung per WLAN und Laptop, Handy oder Tablet möglich. Leider läuft der Accesspoint nicht wirklich stabil und ich habe häufiger Probleme mich mit dem WLAN zu verbinden. Nach ein paar Neustarts ist das Problem jedoch meist behoben. Ursache könnte der verwendete Stick oder aber ein Softwareproblem sein. Da der Zugriff aber i.d.R. nur bei Problemen oder Wartungen von Nöten ist, ist dies kein Problem.

1.9 Shutdown/Reset Prevention Routine
Nach einigen Stunden des Testens, stellte ich immer wieder fest, dass die Hardwarebuttons scheinbar ohne ersichtlichen Grund von Zeit zu Zeit schließen bzw. auslösen. Beim Auslösebutton ist dies zwar nicht besonders schlimm (man hat eben nur ein leeres Foto), bei den Knöpfen für Shutdown oder Reboot liegt das Problem jedoch auf der Hand. Leider konnte ich nicht wirklich herausfinden, was der Grund für das ungewollte auslösen der Buttons ist. In Supportforen habe ich Leute mit einem ähnlichen Problem, aber ohne eine vernünftige Lösung gefunden. Um nun also dieses ungewollte Drücken zu unterbinden, habe ich eine kleine Routine programmiert, die den Shutdown oder Reboot Befehl erst dann durchführt, wenn der Button längere Zeit gedrückt wird. Diese Lösung ist allerdings programmiertechnisch nicht sauber und eher experimentell, aber sie funktioniert (irgendwie… ;-) ).

def reset_event_detection_shutdown():
	sleep(0.5)
	GPIO.remove_event_detect(button2_pin)
	sleep(0.1)
	GPIO.add_event_detect(button2_pin, GPIO.FALLING, callback=shut_it_down, bouncetime=300) 

def shut_it_down(channel):
	sleep(0.5)
	counter=0
	while GPIO.input(channel) == GPIO.LOW :
		counter=counter+1
		sleep(0.1)
	     
	if (counter >= 8): 
		print str(counter) + "counter"
		print "Shutting down..." 
		GPIO.remove_event_detect(button2_pin)
		lightshow(1)
		#GPIO.output(led1_pin,True);
		#GPIO.output(led2_pin,True);
		#GPIO.output(led3_pin,True);
		#GPIO.output(led4_pin,True);
		time.sleep(3)
		os.system("sudo shutdown now -h")
    	
	else:
		print "Press longer to shutdown!"
		print str(counter) + "counter"
		reset_event_detection_shutdown()


3.JPG

1.10 Externer Buzzer
Neben dem Auslöser an der Box wollte ich gerne noch eine Möglichkeit eines stehenden Buzzers realisieren, der etwas von der Box entfernt stehen sollte. Da ich beabsichtigt hatte den Buzzer später auch zu beleuchten, brauchte ich also eine 4-adriges Kabel und eine Möglichkeit ihn einfach von der Box an und abzukoppeln. Hier entschied ich mich auf ein USB Kabel zurückzugreifen, was sich m.E. hierfür prima eignet.
6.JPG

1.11 Beleuchtete Auslöseschalter
Um die Gäste zu animieren und das Aussehen optisch zu verbessern entschied ich mich die Buttons noch zu beleuchten. Standardmäßig sind die Arcardebuttons mit 12V Glühbirnchen versehen, was eine (An-)Steuerung mittels Raspberry und GPIO erschwerte, da dieser nur 5V liefert. Also entschloss ich mich die Beleuchtung komplett autonom zu steuern und verpasste dem Lampensystem ein eigenes 12V Netzteil welches ich mit einem Wechselblinker (Bausatz) koppelte. Sofern der Buzzer angeschlossen ist, blinkt der Auslöser am Gehäuse und der Buzzer im Wechsel, ansonsten ist die Lampe dauerhaft beleuchtet.



1.12 Speicherung der Fotos auf USB Stick statt SD Karte
Um zum einen Schreibzugriffe auf die SD Karte zu minimieren und das Kopieren der Fotos zu vereinfachen, habe ich einen USB Stick installiert, welcher beim Systemstart automatisch gemountet wird. Dieser ist FAT32 formatiert und kann also auch problemlos von Fremdbetriebsystemen wie MacOS oder Windows gelesen werden. Der Stick kann beim Systemstart mit folgendem Eintrag in der /etc/fstab automatisch gemundet werden:
UUID=<UUID des USBSTICK> /var/www/photos vfat defaults,auto,umask=022,users,rw 0
Die UUID kann mit dem Befehl blkid festgestellt werden.

Ich begann zunächst mit der Installation und Einrichtung des Raspbian Systems und begann dann mit dem Auf- und Nachbau der Elektronik auf einem Breadboard. Erste Tests funktionierten gut und so konnte ich mich dem Code widmen. Da ich nur wenig Erfahrung mit der Programmierung mit Python habe, war die Programmierung etwas holperig. Glücklicherweise findet sich überall gute Dokumentation im Netz und ich brauchte nicht viel neu zu programmieren und konnte so weite Teile von Chris‘ Code einfach recyclen.
Glücklicherweise verfügt mein verwendeter Monitor über eingebaute USB Schnittstellen, weswegen ein externes Netzteil für den Raspberry enfällt. Intern verwende ich eine 3fach Steckdose die mit Monitor, Lampennetzteil und LED Netzteil voll belegt ist. Durch die interne Verwendung der 3er Dose hat die Box nur ein Stromkabel welches nach aussen geht.
2.JPG 1.JPG



Probleme

  • Fehlendes Internet, daher keine Zeitsynchronisation --> keine bzw. falsche Zeitstempel bei Fotos
  • Aufgrund (vermutlich) langer Kabel willkürliches ungewolltes Drücken der Buttons (siehe 1.9)
  • WLAN Verbindungsprobleme (Verbindung mit Photobooth schlägt fehl)



Ideen für zukünftige Verbesserungen

  • Mobiles Internet mit DynDNS Adresse für Wartungszwecke
  • Ethernet Wartungsanschluss
  • Sound (Auslösegeräusch, Countdown Ton)

5.JPG

7.JPG

Der komplette Code: photobooth.py

Donnerstag, Februar 14 2013

[pfsense] Routingproblem nach Umstellung IPSec auf OpenVPN

Nachdem ich sehr lange gebraucht habe um diesen "Fehler" zu finden, hier die zugegeben sehr einfache Lösung. Vielleicht ist ja jemand in genau der gleichen Situation :). Zunächst zum Problem: Weil ein IPSec VPN bei mir einige Probleme verursachte, habe ich mich zur Umstellung des VPN auf OpenVPN entschieden. Um natürlich für den Fall der Fälle nicht alle Infos des alten IPSec VPNs zu verlieren, habe ich einfach den Phase 1 Eintrag deaktiviert und danach den OpenVPN Server gestartet. Der Tunnel baute sich ohne ein Murren auf, jedoch gab es ein Problem, es ließ sich keine einzige Adresse pingen bzw. von der Gegenseite erreichen. Die virtuellen Adressen des OpenVPN Transportnetzes waren beide pingbar, also musste auch der Tunnel stehen. Die Lösung: Nach dem Deaktivieren der IPSec Phase werden die ausgehandelten SAs noch behalten und verhindern daher das Routing von OpenVPN ins LAN. Löscht man unter Status --> IPSec --> SAD bzw. SPD die Associations. Funktioniert auch das Routing mit OpenVPN einwandfrei!  

Freitag, August 12 2011

Multi WAN Firewall/Router pfsense

Heute möchte ich gern über mein neustes Projekt berichten: Einem Multi WAN Router mit sehr guter Firewall namens pfsense. pfsense ist ein FreeBSD Derivat und entstand aus dem bekannten m0n0wall Projekt. Anders als m0n0wall kann pfsense aber problemlos mit mehreren WAN und LAN Verbindungen umgehen. Es passt automatisch Routen an, bietet Failover und Load Balancing und lässt sich durch zahlreiche Plugins und Addons erweitern. Besonders das Problem mit https Verbindungen, welche empfindlich auf Balancing reagieren löst pfsense mit so genannten Sticky Connections. Das bedeutet, dass Verbindungen so lange über die gleiche Route / den gleichen Router laufen, bis die Verbindung abgebaut wurde oder durch einen Timeout ungültig wird. Neben umfangreichem Traffic Shaping, QoS Konfigurationen und Firewalling bietet pfsense noch eine Reihe an automatisch produzierten RRD Graphen und Statistiken an, die dem User Auskunft über die Verbindungen geben. Das System wird komplett über die Weboberfläche konfiguriert, bietet jedoch zu Wartungszecken auch direkten Zugang via SSH. pfsense kann entweder zwischen einen bestehenden Router und das interne Netzwerk geschaltet werden, oder auch direkt PPPOE Verbindungen zum Provider aufbauen. Selbst die Intregration von WLAN Karten und die Nutzung als Accesspoint soll laut Forum gut funktionieren. Mein bisheriger Eindruck ist wirklich positiv. pfsense ersetzt den selbstkonfigurierten Router/Server und macht dabei eine gute Figur. Das Netz wirkt agiler und insgesamt zügiger, was vermutlich aber auch an der Trennung der Netze mittels VLANs liegt. pfsense arbeitet in meinen Futro S200 Thinclient, der zusätzlich mit einer Dualnetzwerkkarte ausgerüstet wurde. Wer einen günstigen und hochwertigen und komplett konfigurierbaren Router mit VPN, DNS, DHCP, SNMP uvm. sucht, sollte definitiv einen Blick auf die pfsense Software in Verbindung mit einem Thinclient werfen. [1] http://m0n0.ch/wall/ [2] http://www.pfsense.org/

Dienstag, Februar 22 2011

Cisco Egress-Queue Threshold HowTo

Gedacht als kleine Gedankennotiz an mich selbst. Konfiguration der Egress Queues auf Cisco Switches (hier 3560): Wir konfigurieren das Output Q-Set 1 und verteilen die verfügbare Buffergröße auf die 4 Queues (Q1 bekommt 10% Q2 90%, die anderen 0%): mls qos queue-set output 1 buffers 10 90 0 0 Jetzt im Q-Set 1 die Threshold Werte für Bufferqueue 1 definieren: mls qos queue-set output 1 threshold 1 100 100 100 100 Hierbei ist die Syntax ab threshold{BUFFERQUEUE #}{threshold 1}{threshold 2}{reserve}{maximum}. Ein Threshold Wert von 50 bedeutet, dass ab einer Bufferfüllung von 50% Pakete verworfen werden. Threshold 3 ist automatisch 100% und kann nicht konfiguriert werden. Bufferqueue 2 wird wie folgt konfiguriert: mls qos queue-set output 1 threshold 2 400 50 100 400 400% sind der Maximale Threshold Wert obwohl theoretisch 3200% angenommen werden. Jetzt müssen ausgehende Pakete anhand ihres DSCP oder COS Werts auf die beiden Queues aufgeteilt werden. Zusätzlich zu ihrer Zuteilung zu einer Queue bekommen sie auch einen Threshold Wert (1,2 oder 3) der für die jeweilige Queue konfiguriert wurde. (Beispiel Queue2 Threshold 2 = 50%) Zuerst wird Verkehr mit den DSCP Werten 0-7 auf Queue 2 Threshold 2 gemappt: mls qos srr-queue output dscp-map queue 2 threshold 2 0 1 2 3 4 5 6 7 Der Befehl kann nur 8 DSCP Werte als Parameter entgegennehmen, daher muss er für die übrigen DSCPs wiederholt werden. Hochpriorer Verkehr (DSCP 40 - 63) soll auf Queue 1 gemappt werden. Da hier erst Pakete verworfen werden, wenn der gesamte Buffer gefüllt ist und jeder Threshold bei 100% liegt, kann hier entweder T1, T2 oder T3 verwendet werden: mls qos srr-queue output dscp-map queue 1 threshold 3 40 41 42 43 44 45 46 47 Gleiches sollte auch noch für die COS Werte geschehen. COS Werte von 0-4 werden auf Queue 2 Threshold 2 verteilt und die übrigen Werte 5-7 auf Queue 1 Threshold 3: mls qos srr-queue output cos-map queue 2 threshold 2 0 1 2 3 4 mls qos srr-queue output cos-map queue 1 threshold 3 5 6 7

Donnerstag, August 5 2010

Spezialbehandlung Internet Explorer

Den Internet Explorer zu benutzen, kann schon Strafe genug sein. Scripte zu schreiben, die problemlos auch mit dem Internetexplorer laufen, scheint schon fast unmöglich, denn viele Befehle die mit jedem anderen Browser laufen ignoriert Microsofts Wunderwerk schlichtweg. So stellt ein einfacher HTTP Redirect schon fast ein unüberwindbares Hindernis dar. Während Firefox, Chrome, Safari und Co ohne murren den gewünschten Redirect per einfacher header(Location:http://google.de,0); PHP Umleitung durchführen, tut sich beim Internet Explorer gar nichts! Das Script endet einfach in einer weißen Seite! Doch selbst wenn man diese Weiterleitung in PHP mit HTML realisiert zeigt sich mein Lieblingsbrowser bockig: Ein einfaches <meta http-equiv="refresh" content="0; URL=http://google.de"> wird genauso gnadenlos ignoriert wie die reine PHP Variante. Um einen simpelen Redirect zu vollführen benötigt der IE nämlich eine komplette HTML Seite: echo '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html> <head> <title></title> <meta http-equiv="cache-control" content="no-cache"> <meta http-equiv="cache-control" content="must-revalidate"> <meta name="ROBOTS" content="NOINDEX, NOFOLLOW"> <meta http-equiv="content-type" content="text/html; charset=UTF-8"> <meta http-equiv="content-type" content="application/xhtml+xml; charset=UTF-8"> <meta http-equiv="content-style-type" content="text/css"> <meta http-equiv="expires" content="0"> <meta http-equiv="refresh" content="0; URL='.$callurl.'"> </head> <body> </body> </html>'; Doch damit nicht genug, auch das manuelle Setzen eines HTTP Referrers funktioniert selbstverständlich nicht. Stattdessen wird auch dieser Befehl einfach ignoriert. Sämtliche andere Browser können das problemlos verarbeiten! Ich kann jeden nur herzlich bitten, diesen Browser nicht zu verwenden und Microsoft so zu zwingen ihr Browserkonzept zu überdenken. So können sich Programmierer vielleicht auf wichtige Dinge konzentrieren statt an Workarounds für den Internet Explorer zu arbeiten.

Donnerstag, September 3 2009

Pidgin und der StudiVZ Plauderkasten

Das Pidgin wohl einer der besten und umfangreichsten Messenger ist, war mir bekannt. Doch welche Möglichkeiten die Software bietet, überrascht mich immer wieder aufs Neue. Es benötigt nur relativ wenig Aufwand und man kann mit seinen StudiVZ Kontakten bequem per Pidgin chatten. Dazu muss man sich lediglich einen Account bei nimbuzz.com anlegen und diesen dann mit der StudiVZ-Community verbinden. Hat man dies getan, kann man mit Pidgin eine neue XMPP Verbindung zu Nimbuzz.com aufbauen und über dieses "Gateway" chatten. Wirklich sehr komfortabel! Wer eine noch genauere Anleitung dazu braucht, sollte auf dieser Seite vorbeischauen hier steht alles ziemlich genau erklärt. Und nun viel Spass beim plaudern...

Dienstag, Juni 23 2009

IIS Fraunhofer Shore™ - Gesichtserkennung

Heute möchte ich über das Face-Recognition Programm Shore™ vom Fraunhofer Institut für Integrierte Schaltungen (IIS) berichten. Das Programm erkennt selbstständig Gesichter von einer Video oder Fotoquelle und analysiert Geschlecht und Stimmung der Personen auf dem Bild. Dabei erkennt es die Gemütszustände glücklich,traurig,sauer,überrascht und zeigt sie als Gauge-Bar neben dem erkannte Gesicht an. Der Erkennungsalgorithmus an sich funktioniert wirklich sehr gut und zuverlässig. Die genaue Erkennung von Geschlechtern oder Gemütszuständen kann allerdings sehr stark variieren. Nichts desto trotz macht es wirklich Spass damit herumzuspielen. Shore™ bringt mehrere Engines mit, die unterschiedliche Merkmale erkennen, wie z.B. Kopfneigung, Augen, Nase, Mund und sogar den Grad der Mundöffnung. Um wirklich gute Ergebnisse zu erzielen, sollte man eine hochauflösende Kamera und einen leistungsstarken PC verwenden, denn je nach Bildinhalt bzw. Engine können die Anforderungen an die CPU schnell in die Höhe steigen. Shore benötigt DirecX 9.0c und eine DirectShow fähige Cam und läuft leider nicht in einer Virtual Machine. Überlegt man sich, was diese simple Demo schon in der Lage ist zu leisten, kann man sich vorstellen wie große kommerzielle Personenerkennungssysteme an Flughäfen oder Bahnhöfen funktionieren. Ein großes Problem bei der Erkennung sind immernoch die Lichtverhältnisse, je dunkeler Umgebung desto schlechter wird logischerweise die Erkennung. Wer die Software selbst testen möchte, kann sie sich hier bei Fraunhofer IIS herunterladen

Dienstag, Juni 9 2009

Safari 4 für Windows

Nachdem ich mir nun auch zu Testzwecken mal wieder ein Windows OS installiert habe, genauergesagt Windows 7 RC (ich berichte später), dachte ich es wäre eine gute Idee auch mal den neuen Safari Browser zu testen. Apples neuer Browser meistern den Acid3 Test mit 100 von 100 Punkten bravourös und soll auch sonst ziemlich flott sein. Schnell heruntergeladen und installiert konnte es ans Testen gehen... Wow! Sauberes Design schneller Seitenaufbau und auch sonst macht Safari 4 einen wirklich guten Eindruck! Ich kann nur jedem empfehlen den Browser mal zu testen, denn eine gelungene Alternative zum Firefox scheint er auf jeden Fall zu sein. Leider hatte ich bisher nicht viel Zeit ihn ausgiebig zu testen, jedoch scheint er wirklich schnell und stabil zu sein, auch bei flashlastigen Websites! Thumbs up!

Freitag, Mai 29 2009

Vom Himmel gefallen...

skyDie Mediengruppe Sky, wie Premiere nun ab dem 4. Juli bald heissen wird, hat vorab schonmal einige Infos über Programme und Preise veröffentlicht. Allerdings werden die angebotenen Pakete nicht etwa billiger wie man vermuten könnte, sondern sogar noch teurer.  Nur das Einstiegsangebot "Sky Welt" kostet mit 16,90€ weniger. Der Preis für zum Beispiel das Bundesliga Paket verdoppelt sich sogar! Ob sich Premiere/Sky damit nicht ein Eigentor schiesst bleibt abzuwarten, denn das ohnehin schon nicht billige Programm in Zeiten von Wirtschaftskrise und Co noch weiter zu verteuern scheint nicht besonders kundenfreundlich. Preisübersicht:
  • Sky Welt 16,90 EUR/Monat + 10 EUR HD
  • Sky Welt + Sky Film 32,90 EUR/Monat + 10 EUR HD
  • Sky Welt + Sky Sport 32,90 EUR/Monat + 10 EUR HD
  • Sky Welt + Sky Fußball Bundesliga 32,90 EUR/Monat + 10 EUR HD
  • Sky Welt + Sky Film + Sky Sport 44,90 EUR/Monat + 5 EUR HD
  • Sky Welt + Sky Film + Sky Fußball Bundesliga 44,90 EUR/Monat + 5 EUR HD
  • Sky Welt + Sky Sport + Sky Fußball Bundesliga 44,90 EUR/Monat + 5 EUR HD
  • Sky Welt + Sky Film + Sky Sport + Sky Fußball Bundesliga 54,90 EUR/Monat + 5 EUR HD
Quelle: [Computerbase]

Mittwoch, Mai 27 2009

SMS mit dem iPodTouch

Ich habe die iPodApp NibbleSMS getestet und bin wirklich sehr zufrieden damit. NibbleSMS bietet die Möglichkeit mit dem iPodTouch SMS zu versenden und bildet dabei die GUI des iPhone SMS Programms nach (natürlich ohne eingehende Nachrichten). Nachdem man online Credits gekauft hat, bekommt man einen Code auf sein Handy geschickt, welcher dann in der Nibble App eingegeben werden muss. Danach stehen die bezahlte Anzahl an SMS/Credits zur Verfügung und es kann lustig getextet werden. Der Versand geht wirklich flott und hat keine Nachteile zum normalen Versand mit dem Handy, denn der Empfänger sieht als Absender die echte Nummer des Absenders (Die wird durch den Empfang des Freischaltcodes nämlich bestätigt) und nicht irgendeine willkürliche. Eine SMS kostet 8ct.was in meinem Fall fast 2,5x günstiger ist als vom Handy aber auch sonst ein wirklich annehmbarer Preis ist. Einziger Nachteil ist nur, dass man zum Versenden immer eine Internet/WLAN Verbindung benötigt. Bezahlt wird im Vorraus, zum Beispiel per Paypal, was bei mir nur wenige Sekunden gedauert hat. NibbleSMS gibt es auch zu ähnlichen Konditionen (6ct statt 8ct) für das iPhone, allerdings dort unter dem Namen biteSMS trägt. Installieren kann man beides per Cydia Installer oder alternativ auch direkt von den jeweiligen Webseiten downloaden. http://nibblesms.com/ http://www.bitesms.com

Freitag, Mai 15 2009

Der OCR-Radarwarner

Lange schon schwebt mir folgendes Konzept im Kopf herum und zwar ein Radarfallenwarner. Viele Navigationssysteme warnen schon von alleine vor stationären Blitzampeln, jedoch sind die mobilen Radarfallen nur schlecht in solche Systeme zu integrieren. Hier kommt meine Idee zum Einsatz: Da die Blitzfahrzeuge eigentlich immer das selbe Kennzeichen haben, kann man sie auch daran sehr einfach identifizieren und vor ihnen warnen. Gehen wir davon aus, dass diese Fahrzeuge vielleicht alles 5-10 Jahre  gewechselt werden, kann man eine recht zuverlässige Datenbank bekommen. Und jetzt zum eigentlichen Clou. Man könnte eine Kamera mit Teleobjektiv in das Auto integrieren, welche ständig den Fahrbahnrand bzw die Nummernschilder der parkenden Autos aufzeichnet. Da die Nummernschilder genormt sind (d.h. auch farblich) sollten die sich relativ gut im Kamerabild wiederfinden lassen. Schickt man diese Nummernschild-Bilder nun durch eine OCR Software (Texterkennung) und überprüft die Kennzeichen mit einer nachgelagerten Datenbank, kann man so eventuelle Blitzer schon früh erkennen und seine Geschwindigkeit anpassen. Stellt man sich nun noch eine Vernetzung der Autos vor, kann man wirklich mit wenig Arbeitsaufwand viel erreichen. Natürlich gibt es in der Überlegung noch einige Fehlerquellen, die sich aber relativ einfach beheben lassen. Ich denke hier zum Beispiel an Vibration, Framerate, Dreck etc. was allerdings keine wirklichen Probleme darstellt. Virbationen lassen sich zum Beispiel durch Lagerung der Kamera in Öl unterbinden, Dreck auf der Linse durch Einsatz von Lotusglas (also Glasscheiben mit Lotuseffekt). Wirkliche Probleme bei der Erkennung bereitet allerdings starker Regen, Schnee oder auch einfach schlechte Lichtverhältnisse. Gerne würde ich dieses System mal bauen und testen, also: arbeitswütige zu mir! Wer sich nun fragt, woher diese kriminelle Energie kommt, keine Ahnung! ;) blitzer

Dienstag, April 28 2009

Overclocking Rekord

Übertakteter AMD Phenom II X4 955 BE mit 6,5 Ghz pro Kern und Wasserstoff bzw. Heliumkühlung! Die CPU bricht den Rekord für die höchste Taktfrequenz und steht damit auf Platz 1. der CPU-Z Hall of Fame. Erreicht wurde das Ergebnis bei einer Showvorführung in Las Vegas im Januar.

Sonntag, April 19 2009

Teurer Apfel

Viele böse Gerüchte gingen schon um, dass Hardware welche das Apple Logo ziert um ein vielfaches teurer ist als vergleichbare Geräte. Nachdem sich iSuppli nun den neuen iPod Shuffle zur Brust genommen hat und den Warenwert der Hardware aufgeschlüsselt hat, erkennt man dass der Verkaufspreis fast 4x so hoch ist wie die Kosten für die Komponenten! Nun muss man natürlich fairerweise sagen, dass diese Kosten nur Komponentenkosten sind und noch kein Arbeitslohn etc. miteingerechnet wurde. Nichts desto trotz ist der rohe Materialwert eines neuen iPod Shuffle 21,77$!!! (Amazon Deutschland VK-Preis 76,95€) Nun lässt sich natürlich streiten inwiefern sich der hohe Verkaufspreis rechtfertigen lässt und ob andere Hersteller da anders kalkulieren, aber daran sieht man deutlich: Auch Apple kocht nur mit normalem Wasser/Chips und die Qualität rechtfertigt nicht immer den Preis ;) [QUELLE]

Samstag, April 11 2009

Telefonbuch Phänomen

Gerade habe ich wieder eine Folge einer meiner Lieblingsserien geschaut: Mythbusters. Und wie eigentlich bei fast jeder Folge bin ich hinterher überrascht und erstaunt, was es nicht alles gibt. Leider lohnt es sich nicht immer dem einen eigenen Blogeintrag zu widmen, doch dieses eigentlich physikalisch logische Phänomen hat mich doch sehr überrascht, das Telefonbuch-Reibungs-Phänomen. Hierbei werden zwei Telefonbücher Seite für Seite in einander gelegt, sodass die Bücher am Ende mit den Rücken entgegengesetzt zueinander stehen. Diese, wie man annimmt, recht schwache Verbindung zeigt aber erstaunlicherweise ein ganz anderes Verhalten. Die beiden Bücher halten, nur durch sich selbst gehalten wohlbemerkt, so stark zusammen, dass sich ohne Probleme eine erwachsene Person daran hängen kann (theoretisch sogar noch mehr!). In der Mythbusters Epidsode schafften es nichtmal 2 Autos die in entgegengesetzte Richtung fuhren die Seiten zu trennen! Nur durch den Einsatz zweier Panzer und einer Zugkraft von 8000Pfund, konnten die Bücher getrennt werden! Faszinierend welche Kraft einfache Telefonbücher aushalten können! [YOUTUBE VIDEO]

Donnerstag, April 9 2009

iPhone 3.1

iphone-appleLaut Gerüchten im Netz soll mit dem Erscheinen der neuen iPhone Firmware 3.0 auch gleichzeitig eine überarbeitete Version des iPhone erscheinen. Das iPhone 3.1 soll mit dem Broadcom BCM4329 Chipsatz ausgestattet sein und neben N-Draft Wlan und erweiterten Stromsparfunktionen auch FM-Funktionalität mitbringt. Dadurch wird es möglich Radiosignale zu senden und so das iPhone als FM-Transmitter zu nutzen und nebenbei auch Radio zu empfangen. Auch der im 3G iPhone verbaute Broadcom BCM4325 Chip besitzt schon FM-Fähigkeiten, die allerdings bisher ungenutzt bleiben bzw. nur durch Nike+ Exercise Peripherie genutzt werden (dürfen?). Durch neue  MIMO Antennentechnologie ergibt sich ein höherer Datendurchsatz und besserer Empfang, bei reduzierter Stromaufnahme. Herausgefunden wurde dies durch eine Analyse der kommenden 3.0 Firmware. Quelle [1]

Mittwoch, April 1 2009

Neue Intel SSDs

Intel hat gestern die Produktion neuer SSDs bekanntgegeben, die auf das High-End und Profiuser-Segment abziehlen. Die neuen Platten bieten laut Intel vollen SATA II Speed also 300MB/s (theoretisch wohl sogar mehr). Produziert wird die Platte mit neuen Chips, die bisher nur in Militärgeräten eingebaut werden und extreme Leistungsdaten und Lebendauer besitzen. Laut Hersteller versagen die Chips ihren Dienst anscheinend erst nach frühestens 50 Jahren! Leider steigt auch die Stromaufnahme etwas, diese liegt im Bereich normaler HDDs! Geplant sind SSD Größen von 500GB - 1,5 TB! Über den Preis ist leider noch nichts bekannt... warten wir ab!

Samstag, März 28 2009

Neuer AV-Receiver

Da mir im Moment etwas die Zeit zum Bloggen fehlt (Klausurvorbereitung... :( ), will ich nur kurz von meinem neuen AV-Receiver berichten (Nein, bei mir ist nicht der Wohlstand ausgebrochen). Einen ausführlichen Test werde ich später auf jeden Fall nachreichen. Entschieden habe ich mich für den Yamaha RX-V363 und habe es bisher nicht bereut! Einziges Manko, was ich leider erst später gesehen habe, der Receiver kann keinen Ton über HDMI entgegennehmen, weswegen ich doch auf die gute alte optische Variante zurückgreifen muss. Ansonsten ein grundsolides Gerät mit wirklich sauberem Klang und allerhand digitalen Soundverbesserungsprogrammen (DSP). Der Grund für mich, das Gerät zu kaufen, war allerdings schlicht und einfach die DTS Dekodierung, die mein alter Receiver Technics SA-DX750 nicht beherrschte. Da viele Filme mittlerweile nur noch DTS Tonspuren besitzen ging mir der Stereo Downmix der DTS Spur doch etwas auf die Nerven. Nun ist alles in bester Ordnung und ich muss sagen, dass DTS sogar besser klingt als DolbyDigital! Demnächst mehr! Hersteller Produktseite RX-V363

Dienstag, März 24 2009

Gute Passwörter

Jeder weiss, je komplexer ein Passwort ist umso schwieriger ist es zu knacken! Aber was macht ein Passwort sicher und was nicht? Darüber will ich im folgenden ein paar Worte verlieren. Viele Menschen benutzen Geburtsdaten als Passwort, das ist schlecht! Auch in Kombination mit einem Wort, denn Geburtsdaten sind so ziemlich die unsichereste Zahlenkombination schlechthin. Beispiel: Das Passwort lautet "peter19071974" also ein Geburtsdatum, der 19.7.1974 und ein Name. Geburtsdaten gibt es genau 365 verschiedene pro Jahr, nutzt man nur ein Datum ohne Jahreszahl wäre das Passwort in maximal 365 Versuchen geknackt, also sehr schnell! Aber selbst wenn wir noch eine Jahreszahl anhängen vergrößert sich die maximale Zahl der Versuche nur minimal. Nehmen wir an, dass kaum ein User vor 1930 geboren sein wird, nutzen wir den Zeitraum von 1930-2009 als Jahreszahlen für unsere "Attacke" macht also 79 Jahre a 356 Tage, also 28835 Versuche. Diese Zahl scheint recht groß, jedoch schaffen moderne Rechner und Passwortcracker theoretisch mehrere Tausend Passworte pro Sekunde, gerade in Zeiten von Multicore & Co. Auch wenn das Passwort relativ lang ist, ist es auf keinen Fall sicher! Namen oder Substantive sind generell für Passwörter nicht zu verwenden, denn hier reicht eine einfache Wörterbuch Attacke um diese Passwörter zu knacken. Hierbei wird ein Wörterbuch oder eine Wortliste verwendet und alle Worter durchprobiert, was im Vergleich zur Brute-Force-Methode (Durchprobieren aller möglichen Kombinationen) viel Zeit einspart und "unsinnige" Kombinationen wie zb. "aaaaaaab" aussen vor lässt. Mit einer Wörterbuch Attacke, kombiniert mit unseren obigen Geburtsdaten lässt sich also relativ schnell ein solches Passwort knacken, denn die Anzahl an Namen ist nunmal auch begrenzt. Sichere Passwörter bestehen aus willkürlichen Kombinationen von Zahlen und Buchstaben (groß und klein) und wenn möglich Sonderzeichen wie +,#,$ usw. Ein gutes und sicheres Passwort sollte mindestens 8 Zeichen besitzen und ungefähr so aussehen: "rH$2yZ7*". Wer sich solche Passwörter nicht merken kann (wer kann das schon? :) ) sollte sich die Passwörter irgendwo sicher aufschreiben, oder sie auf eine Speicherkarte oder einen USB Stick speichern und den gut aufbewahren.

Dienstag, März 17 2009

Kathrein Enigma 2 stabil!

Nach einigen überarbeitungen durch TDT und AAF läuft nun endlich mit dem AAF Sussex Reloaded Flashimage E2 Enigma 2 stabil auf der Kathrein UFS 910. Dieses Image bietet wirklich großen Komfort und dazu noch wirklich nette Kleinigkeiten wie zum Beispiel HD Skins, Picons (kleine Senderlogo-Grafiken), Webinterface mit Streamingfunktion und einiges mehr. Nachdem die vorherigen Versionen noch einige kleinere Bugs und Probleme mit sich brachten, wie zum Beispiel das Kaltstartproblem (Box fuhr nach langer Trennung vom Strom nur nach mehreren Startversuchen hoch), läuft das neue Sussex Reloaded wirklich stabil und bei mir bisher auch glücklicherweise ohne irgendwelche Probleme. Zum Flashen des neuen Images sollte KCC (Kathi Control Center) 3.2 verwendet werden, denn bei einigen älteren Versionen von 3.1 geht der Flashvorgang auf Grund von intern geänderten Partitionen schief (Eigene Erfahrung :) ). Auch der Swap Stick ist nun nicht mehr zwingend notwendig, macht aber insbesondere bei der Benutzung von Picons etc. sicherlich Sinn. Hierzu sollte ein USB Stick mit FAT32 formatiert werden und das Label "SWAP" tragen, den Rest erledigt E2 automatisch beim Start. Das einzige Feature, was noch nicht funktioniert und worauf ich noch warte, ist Timeshift. Aber bei der wirklich guten Arbeit vom Team Ducktales und AAF sollte das auch nicht mehr lange auf sich warten lassen. Viel Spass beim  Testen!

Das Image kann man hier downloaden: http://www.aaf-board.com

- Seite 1 von 3