Tutorial


17
Oct 11

Mac USB Festplatte mit Filevault 2 (OSX Lion) nachträglich verschlüsseln

Seit Samstag habe ich auf meinem Arbeits-Macbook die Komplettverschlüsselung mittels Filevault 2 aktiviert. Wenn das Gerät mal abhanden kommen sollte, ist es so für den Finder wertlos – es sei denn, er baut die Festplatte aus. ABER: Diebe und anderes Gesindel kommen nicht an die sensitiven Daten ran. Das ganze Prozedere ist idiotensicher in den Systemeinstellungen im Punkt “Sicherheit” hinterlegt und schnell erledigt. Zumindest, wenn man eine SSD hat. OSX Lion schiebt die Umwandlung des Laufwerks aber bequem in den Hintergrund und man kann nach einem kurzen Neustart wie gewohnt weiter arbeiten.

Jetzt kommt das “aber”: wie oben erwähnt, habe ich eine SSD verbaut. Und wie ich bereits genug gejammert habe, ist die natürlich für meine Bedürfnisse zu klein, weshalb die ursprünglich verbaute 500Gb Platte als USB Laufwerk zum Einsatz kommt. So. Nun ist meine Systemplatte verschlüsselt und gesichert, aber die Platte mit den eigentlichen Daten ist für jeden verfügbar. Und blöderweise auch einfacher zu klauen. Also habe ich mich mal umgesehen, wie ich diese auch verschlüsseln kann.

Die Optionen sind:

  • einen Verschlüsselten Filevault Container mit dem Festplattendienstprogramm erstellen
  • Truecrypt Container
  • Komplettverschlüsselung der Partition mit Truecrypt
  • Verschlüsselung mit Filevault

Der verschlüsselte Filevault Container wäre sicher die einfachste Möglichkeit, jedoch ist er auch etwas umständlich. Er hat eine fixe Größe und muss auch immer extra gemounted werden – das gleiche gilt für den Truecrypt Container und die Truecrypt Partition. Bleibt noch die Verschlüsselung mit Filevault 2 – mit einem kleinen Haken: man muss die Platte dafür neu formatieren. Zumindest ist das der offizielle Weg. Das Internet hat mir aber noch einen anderen Weg gezeigt:

  • Terminal öffnen
  • diskutil cs convert /Volumes/[Name des Laufwerks] -passphrase
  • Nun werdet ihr nach einem Passwort für die Festplatte gefragt, welches ihr dann nochmals bestätigen müsst
  • anschließend wird die Partitionstabelle leicht modifiziert und dann beginnt die Umwandlung im Hintergrund
  • mittels folgendem Befehlt könnt ihr euch den Fortschritt ansehen (“Size (Converted)”):
  • diskutil cs list

Wenn ihr die Platte nun das nächste Mal wieder an den Rechner steckt, werdet ihr nach dem eingegebenen Passwort gefragt, anschließend ist die Platte dann normal verfügbar. Auch in Kombination mit Timemachine gibt es keine Probleme, da die Verschlüsselung transparent abläuft.

Solltet ihr die Verschlüsselung wieder rückgängig machen wollen, ist folgender Befehl nötig:

diskutil cs revert /Volumes/[Name des Laufwerks] -passphrase

Gebt das Verschlüsselungs-Passwort ein und schon wird die Verschlüsselung rückgängig gemacht.

via forums.macworld.com


13
Oct 11

SSD Trim Support unter Mac OSX Lion aktivieren

Ich konnte bisher nicht viel mit dem “Trim” Befehl für SSDs anfangen – bis ich den Grund für diesen Befehl nun selbst erfahren durfte. Nachdem sich meine SSD langsam aber sicher gefüllt hat, wurden kurzerhand die iPhoto und iTunes Librarys auf eine externe USB Festplatte verlagert. Dumm nur: ich hatte danach genauso viel freien Speicher wie vorher. Und dass, obwohl ich an die 10.000 Bilder entfernt hatte.

Das Problem an SSDs ist nämlich: löscht man eine Datei, dann wird, wie bei normalen magnetischen Festplatten auch, nur die Referenz auf diese Datei gelöscht. Die Nullen und Einsen, aus denen die Datei mal bestanden hat, bleiben erstmal auf der Platte liegen. Erst wenn dieser frei gewordene Platz für andere Dateien benötigt wird, so wird er mit den neuen Daten überschrieben. Funktioniert dies bei magnetischen Speichern problemlos, ist es bei Flash Speicher nicht ganz so leicht. Hier muss nämlich der zu schreibende Datenbereich wirklich gelöscht werden.

Normalerweise sollte dies der Controller der Festplatte übernehmen – z.B. in Zeiten geringer Belastung, also wenn die Festplatte gerade nichts anderes zu tun hat. In meinem Fall hat er es offensichtlich nicht getan. Und dafür gibt es nun den sogn. Trim Befehl, den das Betriebssystem an die Platte schicken kann und somit veranlasst, dass frei gewordener Speicher auch gelöscht wird.

Gütigerweise hat Apple den Support dafür auch unter OSX Lion eingebaut – aber nur für die original von Apple verbauten SSDs. Selbst eingebaute SSDs kommen nicht in den Genuss. Da mein Gerät von Gravis zusammengestellt wurde, ist offensichtlich keine original Hardware verwendet worden. Was nicht schlimm ist, aber eben die von mir beobachtete fehlerhafte Speicherplatzanzeige brachte.

Glücklicherweise kann man dieses Verhalten ändern – indem man Trim für ALLE SSDs freischaltet. Und das geht so:

Bevor ihr loslegt: ich übernehme keinerlei Haftung oder Verantwortung, falls ihr eure Hardware oder euer System beschädigt. Alle Aktionen werden auf eigene Gefahr durchgeführt. Sicherheitshalber sollte man vorher nochmal Timemachine laufen lassen, um ein valides Backup vom kompletten System zu haben!

  • Terminal öffnen
  • Backup des zuständigen Treibers erstellen:
  • sudo cp /System/Library/Extensions/IOAHCIFamily.kext/Contents/PlugIns/IOAHCIBlockStorage.kext/Contents/MacOS/IOAHCIBlockStorage /System/Library/Extensions/IOAHCIFamily.kext/Contents/PlugIns/IOAHCIBlockStorage.kext/Contents/MacOS/IOAHCIBlockStorage.original

  • Treiber patchen:
  • sudo perl -pi -e 's|(\x52\x6F\x74\x61\x74\x69\x6F\x6E\x61\x6C\x00{1,20})[^\x00]{9}(\x00{1,20}\x51)|$1\x00\x00\x00\x00\x00\x00\x00\x00\x00$2|sg' /System/Library/Extensions/IOAHCIFamily.kext/Contents/PlugIns/IOAHCIBlockStorage.kext/Contents/MacOS/IOAHCIBlockStorage

  • Caches löschen:
  • sudo kextcache -system-prelinked-kernel
    sudo kextcache -system-caches

  • Reboot!

Überprüfung: links oben auf den Apfel -> über diesen Mac -> weitere Informationen -> Systembericht -> Serial-ATA anklicken.
Unter “Trim Unterstützung” sollte nun “Ja” stehen.

Will man den Patch wieder rückgängig machen:

  • Patch rückgängig machen:
  • sudo perl -pi -e 's|(\x52\x6F\x74\x61\x74\x69\x6F\x6E\x61\x6C\x00).{9}(\x00\x51)|$1\x41\x50\x50\x4C\x45\x20\x53\x53\x44$2|sg' /System/Library/Extensions/IOAHCIFamily.kext/Contents/PlugIns/IOAHCIBlockStorage.kext/Contents/MacOS/IOAHCIBlockStorage

  • Caches löschen:
  • sudo kextcache -system-prelinked-kernel
    sudo kextcache -system-caches

  • Reboot!

und sollten alle Stricke reißen, dann kann man immer noch das zuvor erstellte Backup wieder einspielen:

sudo cp /System/Library/Extensions/IOAHCIFamily.kext/Contents/PlugIns/IOAHCIBlockStorage.kext/Contents/MacOS/IOAHCIBlockStorage.original /System/Library/Extensions/IOAHCIFamily.kext/Contents/PlugIns/IOAHCIBlockStorage.kext/Contents/MacOS/IOAHCIBlockStorage
reboot

via digitaldj.net


8
Sep 11

Ein WordPress Blog still legen und archivieren

Der Bytelude ist nun bereits mein dritter Blog. Zuerst war da mein selbst geschriebenes CMS mit integriertem Blog, und anschließend kam eine WordPress Variante. Irgendwann war die Situation etwas fest gefahren und so beschloss ich, nochmal einen dritten Anlauf zu wagen. Dabei herausgekommen ist bytelude.de. Und da ich es selbst nicht leiden kann, dass Google Suchergebnisse ins Leere führen, sind die anderen beiden natürlich weiterhin aktiv. Bei der selbstgeschriebenen Variante ist das nicht weiter tragisch, da ich das CMS trotzdem aktiv pflege und es extrem wenig Ressourcen benötigt. Bei WordPress sieht das schon anders aus. Zum einen muss man es immer auf dem aktuellsten Stand halten und zum anderen frisst es bei jedem Aufruf ziemlich viele Ressourcen. Nach ein paar Google Suchanfragen bin ich dann auf die Idee gekommen, dass man WordPress ja auch einfach in eine statische Seite konvertieren kann.

Gesagt getan, und ich bin auf folgende zwei Tutorials gestoßen:

Convert WP to static html

How to retire a wordpress blog

Die erste Anleitung hat bei mir leider nicht richtig funktioniert, enthält aber den wichtigen Teil der Vorbereitung. Kurz gesagt: man sollte die Seite auf Permalinks umstellen. Das sinnvollste Format ist “/jahr/monat/post-name/”. Die Permalinks sind notwendig, da sonst immer nur Dateien wie “index.php?parameter=value…” abgespeichert werden. Der Aufruf im Browser funktioniert dann natürlich nicht korrekt und man bekommt eine Menge Fehler.

Und hier der Code in Kurzform:
Permalinkstruktur folgendermaßen einstellen:

"/%year%/%monthnum%/%day%/%postname%/"

Anschließend müsst ihr, falls noch nicht vorhanden, die entsprechende .htaccess Datei mit folgendem Inhalt anlegen:

RewriteEngine On
RewriteBase /pfad/zum/wordpress/blog/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /pfad/zum/wordpress/blog/index.php [L]

Und schon kommen wir zum 2. Tutorial. Dort wird dann der entscheidende wget Befehl erklärt. Vorher wird noch darauf hingewiesen, dass man die Trackback und xmlrpc.php links aus dem gewählten Theme entfernen sollte. Andere Blogs versuchen sonst Trackbacks zu senden, da diese ja im HTML Code hinterlegt sind.

Nachdem das erledigt ist, hier nun der finale wget Befehl:

wget -r -E -T 2 -np -R xmlrpc.php,trackback -k http://[BLOG URL]

Führt diesen Code in einem extra Ordner aus. Es wird automatisch ein Ordner mit eurer Blog-URL angelegt, darin ist dann die komplette Seite enthalten.

Wget fängt nun auf eurer Hauptseite an, diese in Form einer index.html abzuspeichern. Evtl. verlinkte CSS Dateien und Javascript Files werden in der gleichen Ordnerstruktur wie auf eurem Server heruntergeladen und abgespeichert. Dieser Vorgang wird nun für alle auf der Seite gefundenen Links wiederholt. Durch die Permalink Struktur werden nun die einzelnen Blog-Beiträge in der Form /Jahr/Monat/Titel/index.html abgespeichert.

Wenn der Vorgang abgeschlossen ist, könnt ihr euren WordPress Ordner löschen und an dessen Stelle den heruntergeladenen Ordner (natürlich ohne den Ordner mit eurem Domainnamen) kopieren. Nun sollte eure Seite weiterhin wie gewohnt geladen werden und alle Links funktionieren auch – außer den dynamischen Funktionen wie Kommentare oder dem Admin-Panel. Ihr werdet auch bemerken, dass die Seite nun deutlich schneller lädt und euer Server deutlich weniger belastet wird. Und man muss sich nicht mehr um Updates kümmern ;)


30
Aug 11

[Video Tutorial] manuelle Blende im Videomodus der Canon EOS 500d einstellen

Hier kommt nun mein zweites Videotutorial mit dem oben genannten Thema. Ich möchte euch zeigen, wie man mit einfachen Schritten die Automatik der Kamera überlisten kann, um im Videomodus zumindest die Blende manuell einstellen zu können. Da die EOS 500d ein Einsteigermodell ist, hat Canon hier absichtlich die Möglichkeit entfernt, Werte wie Belichtung, ISO oder eben auch die Blende manuell einstellen zu können. Für Hobbyfilmer ist auch dieser Automatikmodus völlig ausreichend, eine professionelle Aufnahme kann man so aber nicht durchführen. Ich hoffe, dass euch das Tutorial weiter hilft – bei mir hat es das getan ;)

Weiterhin freue ich mich natürlich über jede Art von Feedback und vor allem auch über Vorschläge für weitere Video Tutorials.


15
Jul 11

Facebook Handbuch für Einsteiger

Schon eine ganze Weile schwebt mir die Idee zu diesem Artikel im Kopf herum – und nach der gestrigen Beitragsflut zum Thema “150.000 ADIDAS TASCHEN – FOR FREE ! BIS ZUM 01.11.2011 !” hat es mir gereicht. Ich möchte daher hier eine kleine Übersicht an essentiellen Verhaltensweisen und Funktionen auf Facebook geben, da es scheinbar sehr sehr viele naive bzw. unwissende Facebook-Benutzer gibt.

Eines vorneweg: BITTE BITTE schaltet euer Hirn ein! WARUM sollte z.B. Adidas 100.000 Taschen VERSCHENKEN? Die Aktion wäre realistisch, wenn da vielleicht so 10 oder 100 Taschen angeboten werden würden. Oder warum sollte ich erst an einer Umfrage teilnehmen, nur um ein Video sehen zu können?

Richtig: ES MACHT KEINEN SINN!

Aber hier nun die versprochene Übersicht:

betrügerische Seiten erkennen
Seit einiger Zeit findet man auf Facebook Videos, die SO schockierend sind, dass man die sich natürlich sofort anschauen muss. Dumm nur: kurz darauf empfehle ich dieses Video automatisch meinen Freunden – obwohl ich das Video nur angesehen habe. Warum passiert das?

Die Videos haben einen Fake-Play Button über dem eigentlichen Abspielknopf liegen, der bei Betätigung eben automatisch ein “gefällt mir” für diese Seite ausführt. Somit erscheint dieser Beitrag automatisch auf eurer Pinnwand. Erkennen könnt ihr diese Videos folgendermaßen (links sind korrekte Videos, rechts die betrügerischen Varianten, die ihr meiden solltet):


Grafik von @BONOSEO

Um es kurz zu übersetzen: unter der Überschrift des Videos sollte “www.youtube.com” oder “www.vimeo.com” stehen – und nicht “stump.ws” oder “maryf4.tumblr.com”. Pauschal kann man sagen: Alles was nicht bei youtube.com oder vimeo.com liegt, ist nicht nicht vertrauenserweckend!
Hinzu kommt der Playbutton: der ist bei vertrauenswürdigen Videos immer links unten in der Videovorschau, ist blau und ist nicht irgendwie verpixelt – sondern gestochen scharf!
Außerdem befindet sich neben der Uhrzeit, wann der Beitrag verfasst wurde, ein Filmrollensymbol – UND NICHTS ANDERES! Und als letztes: korrekt eingebundene Videos werden IMMER innerhalb der Facebook-Seite abgespielt (sofern man natürlich auf den “Play Button” drückt) und öffnen sich nicht in einer neuen Seite!

Tut euch und allen euren Freunden einen Gefallen: schaut euch diese nicht vertrauenswürdigen Videos gar nicht erst an. Fast alle diese Videos sind völlig harmlos – ganz anders, als deren Titel vermuten lässt. Man verpasst da also nichts. Wer es trotzdem unbedingt sehen will, sollte einfach mal den Titel des Videos bei Youtube suchen, denn in den meisten Fällen findet ihr dieses Video dort auch und könnt es ohne den “Gefällt mir” Spam anschauen.

Masseneinladungen
Das oben erwähnte Adidas Beispiel trifft sehr gut zu: einfach mal das Hirn einschalten und überlegen, warum man 1. an einer Veranstaltung teilnimmt, um etwas gewinnen zu können – ohne, dass man wirklich irgendwo hin kommen muss und 2. die Seite des Events weder über einen Link zur Adidas Homepage noch irgendwelche weiterführenden Infos enthält – außer einem Namen und dessen Facebook Profil, welches für Besucher komplett geschlossen ist und noch nicht einmal über ein Profilbild verfügt. Das sollte doch eigentlich mistrauisch stimmen, oder?

Also als kleine Checkliste für solche Geschichten:

  • Macht die ganze Aktion wirklich Sinn?
  • Steckt wirklich eine seriöse Firma dahinter?
  • Werden weiterführende Informationen angeboten, die die Seriösität erhöhen?
  • Gibt es auch auf der Homepage der Firma einen Hinweis auf diese Aktion?

Wenn alle diese Punkte bejaht werden können, dann ist es durchaus möglich, dass das Angebot tatsächlich ernst gemeint ist.

Als kleiner Zusatzpunkt noch: wenn jemand seine Geburtstagsparty bei Facebook einstellt und aus Versehen vergisst, den Haken für eine öffentliche Veranstaltung herauszunehmen – muss man dann wirklich den Termin bestätigen und diesen somit über seine Pinnwand weiter verbreiten? Es gibt alleine schon in unserem Land genug Chaoten , die dann zu hunderten wirklich zu auf solchen Partys erscheinen und dann randalieren oder Chaos stiften. Fragt euch einfach mal ganz ehrlich: was würdet ihr sagen, wenn euch so etwas passiert? Also – lasst es doch einfach!

Beiträge ausblenden
Facebook lebt zu einem großen Teil davon, dass man darauf Spiele spielen oder anderweitige Apps verwenden kann. Dagegen ist auch gar nichts einzuwenden, allerdings haben viele Spiele und Facebook-Apps die Angewohnheit, eure Freunde automatisch oder auf eure Anweisung hin einzuladen, dieses Spiel/App auch zu verwenden. Sehr schnell wird dann aber auf einmal eure Timeline zugespammt, was dem einen oder anderen nicht so gefällt. Facebook bietet aber eine wunderbare Möglichkeit, dies zu unterbinden. Postet einer eurer Freunde aus einer App heraus auf seiner Pinnwand einen Beitrag, dass man doch z.B. das “Daily Horoscope” verwenden soll, dann sehen das alle seine Freunde. Derartige Beiträge könnt ihr ganz leicht für immer ausblenden (das kleine x rechts oben erscheint, wenn man die Maus an diese Stelle bewegt bzw. auf dem iPad einfach auf diese Stelle tippt:

Ihr könnt hier sowohl den einzelnen Beitrag als auch gleich alle Beiträge dieser App für immer ausblenden. Außerdem könnt ihr auch gleich ALLE Beiträge dieser Person ausblenden.

Habt ihr mal bei einem falschen Beitrag das permanente Ausblenden ausgewählt, so ist das kein Problem. Ihr könnt Beiträge einfach auf folgende Weise wieder einblenden:

Auf dieser Auswahlseite könnt ihr nun einfach mittels des kleinen X-Buttons einzelne Apps wieder einblenden.

Ihr könnt auf diese Weise auch mit Leuten befreundet sein, aber ihre Beiträge trotzdem komplett von eurer Pinnwand verbannen.

Mittels der Ausblenden-Funktion könnt ihr eure Neuigkeiten-Liste sauber halten und seht so wirklich nur noch die interessanten Beiträge.

“Hauptmeldungen” vs. “neueste Meldungen”
Vor einiger Zeit hat Facebook die Unterscheidung der Meldungen eingeführt. Die Hauptmeldungen sind bei den meisten Benutzern automatisch eingestellt, führen aber dazu, dass man nicht mehr alle Beiträge sieht. Dieser Filter soll eigentlich dazu dienen, dass man nur die interessanten Beiträge sieht. Das Problem daran ist: die Leute, mit denen ihr oft chattet, Nachrichten schreibt oder deren Beiträge ihr mit “gefällt mir” und Kommentaren belohnt, werden auf dieser Ansicht bevorzugt. Alle anderen werden entweder ausgeblendet oder weiter nach unten verschoben.

Mit dem Punkt “neueste Meldungen” könnt ihr diesen Filter abschalten und seht alle Meldungen, nach ihrer Aktualität absteigend sortiert. Ich empfehle, nur diese Ansicht zu verwenden, da ihr sonst öfter Beiträge verpassen werdet, die evtl. doch für euch interessant gewesen wären.

Auswählen könnt ihr dies ganz oben in eurer Neuigkeitenliste – klickt einfach auf “Hauptmeldungen” oder “neueste Meldungen”.

Privatsphäre
Eine wichtige Sache, an die ihr immer denken solltet – völlig unabhängig welches soziale Netzwerk ihr verwendet – ist das Thema Privatsphäre. Es sollte euch in jedem Fall klar sein, dass ALLES, was ihr in so einem Netzwerk tut, potentiell für andere Menschen einsehbar ist. Das gilt natürlich immer für alle eure Infos, Pinnwandeinträge, Fotos usw. – aber genauso auch für den Chat oder die privaten Nachrichten.

Die letzten beiden Punkte sind in jedem Netzwerk natürlich nur für euch und die/den Kontaktierte(n) einsehbar – doch vergesst nicht, dass soziale Netzwerk von Menschen gemacht und verwaltet werden. Das bedeutet zum einen, dass diese Menschen auch alles sehen können, was ihr tut – aber auf der anderen Seite auch, dass diese Menschen Fehler machen können. Man kann NIE ausschließen, dass andere bzw. eure Freunde oder wer auch immer durch Ausnutzung von Sicherheitslücken oder unbeabsichtig durch Systemfehler auf einmal Zugriff auf eure privaten Dinge haben. Behaltet dies IMMER im Hinterkopf!

Trotzdem tauscht man über Facebook Dinge aus, die zwar nicht Top Secret, aber trotzdem nicht für jedermann bestimmt sind. Und trotz aller Unkenrufe und der sehr schlechten Presse bietet Facebook sehr gute Möglichkeiten, genau zu sagen, wer welche Informationen sehen darf. Die schlechte Presse kommt nur daher, dass Facebook bei diesen Einstellungen standardmäßig immer erstmal die freizügigste Variante auswählt. Ohne persönliche Einstellung ist euer Profil für jedermann komplett einsehbar – was wohl nicht unbedingt jedermanns Sache ist.

Um eure Privatsphären-Einstellungen zu bearbeiten, ruft einfach den entsprechenden Menüpunkt im Hauptmenü auf, welches ihr rechts oben auf eurer Facebookseite findet:

Wählt nun den Punkt “Benutzerdefinierte Einstellungen” (rot markiert):

Auf der folgenden Seite ist nun wunderbar (und in deutscher Sprache) beschrieben, wer was sehen kann. Ihr könnt dies beliebig einstellen und so die Privatsphäre euren Wünschen anpassen:

Dabei sind folgende Sichtbarkeiten zu beachten:

  • “Alle” – JEDER kann diesen Eintrag sehen – auch nicht-Facebook Benutzer (die euch z.B. per Google suchen)! Auf ihrer Timeline sehen aber nur eure Freunde den Eintrag, alle anderen erst nach Aufruf der entsprechenden Adresse.
  • “Freunde von Freunden” – Sowohl eure Freunde als auch deren Freunde können den Eintrag sehen – alle anderen und auch nicht-Facebook Benutzer sehen nichts.
  • “nur Freunde” – wie der Name sagt, können NUR eure Freunde den Eintrag sehen. Alle anderen sehen nichts.
  • “Benutzerdefiniert” – Hier könnt ihr einen der oberen Punkte aussuchen, aber zusätzlich entweder einzelne Personen oder Listen ausschließen (unter “Konto” – “Freunde bearbeiten” und dann “Liste erstellen” könnt ihr die Listen anlegen und eure Freunde diesen zuordnen).

Fazit
Ich hoffe, dass ich euch mit diesem Beitrag ein bisschen weiter helfen konnte und würde mich freuen, wenn dadurch weniger Müll in meiner Timeline landen würde ;)

Außerdem hoffe ich auf Verbesserungs-/Erweiterungsvorschläge, die ich gern hier mit hinterlege.

Bitte teilt diese Seite mit möglichst vielen Leuten, denn damit tut ihr vor allem euch selbst einen großen Gefallen ;)


19
Jun 11

[Videotutorial] Workflow: vom RAW-Foto zum fertigen Bild

Lange habe ich es mir vorgenommen, und gestern hab ich es nun endlich fertiggestellt: mein erstes Videotutorial.

Darin stelle ich euch meinen Workflow vor, mit dem ich die Bilder, die meine Kamera so hervorbringt, bearbeite, zuschneide und anschließend abspeichere. Ich hoffe, dass ihr den einen oder anderen Tip abstauben könnt und würde mich besonders über Feedback freuen, da ich in Zukunft mehr davon produzieren möchte.

Als Beispiel verwende ich das Bild father&daughter, welches ich letzte Woche am Stachus in München geschossen habe:

Aber nun – Film ab:

Alternative Version auf Youtube


11
Mar 11

Drahtlosen Hardware Keylogger selber bauen

Jerry arbeitet bei keelog.com – einem kommerziellen Anbieter für Hardware Keylogger. Doch Jerry ist auch ein Fan von Open Source und so hat er eine Anleitung ins Netz gestellt, nach der man so ein Teil selbst bauen kann. Darin enthalten sind eine detailierte Teileliste, die Baupläne, PCB Masken (Schaltkreise), die Firmware (also Steuersoftware) und natürlich die Bauanleitung selbst. Wenn man es etwas leichter haben will kann man aber auch ein DYI Kit (do it yourself) kaufen und spart sich somit die Zeit für die Suche der Einzelteile. Im Endeffekt hat man am Ende einen PS/2 Stecker, der am Ziel-PC angesteckt in Echtzeit alle Codes der gedrückten Tasten an ein bis zu 18m entferntes USB-Dongle sendet.

Natürlich bewegen wir uns hier in einer Grauzone, da es sowohl legale als auch illegale Einsatzzwecke dafür gibt. Da mich als Techniker in erster Linie auch nur die Technik interessiert, möchte ich dies erstmal außen vor lassen. Ich denke einfach, dass wenn jemand etwas böses tun will, er auch einen Weg findet dies zu tun. Und dann gibt es uns Nerds, die einfach nur Spass an Technik haben.

So, aber nun genug gequatscht, hier die Anleitung:
keelog.com

Via hack-a-day


2
Feb 11

Die Ego Box – der Hardware Visitscounter für deine Website

Cooles Teil, oder? Wenn ich elektrotechnisch etwas begabter wäre, dann würde ich mir so ein Teil bauen. Bin ich aber nicht. Sollte es aber jemanden hier geben, der in solchen Themen fitter ist: Unter

www.electrobob.com/ego-box/

findet ihr die Anleitung für den Bau der Hardware sowie der Software. Falls jemand lange Weile hat – ich würde mich sehr über ein derartiges Geschenk freuen ;)

via hack-a-day


31
Jan 11

Facebook Chat mit Adium – Fehlerbehebung

Seit einiger Zeit hatte ich in Adium das Problem, dass ich zwar erfolgreich im Facebook Chat eingeloggt war und Kontakte, die mich anschrieben auch in der Kontaktliste erschienen – ich sah aber nicht, ob Kontakte online waren oder nicht. Scheinbar hat Facebook mal wieder was an der API geändert und die Jungs von Adium haben noch nicht nachgezogen.

Egal – nachdem es mich nun richtig genervt hat, habe ich mal eine kurze Recherche angestellt und schnell die Lösung gefunden. Facebook selbst gibt eine offizielle Vorgehensweise an ;)
Und zwar verwendet man nicht das Facebook Plugin, sondern das gute alte Jabber Protokoll. Und so gehts:

Bei Facebook anmelden, dann die Seite www.facebook.com/sitetour/chat.php aufrufen und dort “Adium auswählen”. Schon wird euch der Loginname angezeigt. Das Passwort ist euer normales Facebookpasswort. Tragt diese Daten als Jabber-Login ein und schon werden die Facebook Kontakte wieder korrekt angezeigt.

via apfeltalk.de


19
Jan 11

statische Code-Analyse mit dem php code sniffer

Foto von Dennis Wegner

Programmierer machen, wie jeder andere Mensch, auch Fehler. Nun gibt es zum einen Fehler in der Syntax, auf der anderen Seite gibt es die Logik-Fehler. Beide verursachen, dass ein Programm entweder gar nicht oder nicht wie erwartet funktioniert. Normalerweise kann (und muss) man diese Fehler entdecken – manchmal geht das leicht, manchmal aber auch nicht. Syntax-Fehler stellen hier den einfachsten Kandidaten dar, da diese meist schon von der verwendeten IDE erkannt werden, spätestens aber bei der Ausführung des Programms ein Fehler auftritt. Logische Fehler sind da schon etwas kniffliger, da sie rein aus Programmiersicht fehlerfrei sind. Nur die Art und Weise, wie sie ein Problem behandeln entspricht nicht dem, was der Programmierer ursprünglich vor hatte.

Zu diesen beiden Kandidaten gesellt sich aber noch eine weitere Gattung, nämlich die Art und Weise, wie Code geschrieben wird. Jeder Programmierer hat – genauso wie jeder Mensch die eigene Handschrift – einen eigenen Programmierstil. Das ist zuersteinmal nichts verwerfliches und wird weder Probleme in der Syntax noch in der Logik hervorrufen. So gesehen gibt es aus betriebswirtschaftlicher Sicht keinerlei Notwendigkeit, sich darum zu kümmern. Problematisch wird es aber dann, wenn mehrere Entwickler mit einem Projekt beschäftigt sind. Spätestens hier treffen Welten auseinander und es kann durchaus vorkommen, dass völlig korrekter Code einfach nicht mehr bzw. nur sehr schwer lesbar ist. Bei geringem Umfang stellt das nicht das große Problem dar, wenn man allerdings mit komplexen Projekten zu tun hat kann dies zu einem großen Hindernis werden. Das fiese daran ist, dass man das Problem anfangs einfach nicht erkennt. Wenn es dann auftritt, ist es meist zu spät.

Um dem Herr zu werden, setzen viele Unternehmen und Entwickler auf Coding-Standards. Dabei handelt es sich um Regeln, wie Code formatiert werden muss und welche Lösungswege nicht verwendet werden sollten. Oder eben, welche Prioritäten bestimmte Lösungswege haben. Dabei geht es z.B. um die Art und Weise, wie Klammern gesetzt werden, die Variablen formatiert werden, wie Klassen und Kontrollstrukturen (Schleifen usw.) auszusehen haben usw. Gerade große Open Source Projekte mit mehreren hundert oder gar tausend Entwicklern müssen einfach derartige Regeln definieren, da sonst reinstes Chaos entsteht. Das würde dann dazu führen, dass Code zwar sehr gut, aber aufgrund von schlechter Lesbarkeit nicht mehr wartbar wäre. Und somit leider unbrauchbar sein würde.

Ok, nun haben wir die Theorie geschafft. Nun kann man die Regeln definieren und jeder hält sich dran, aber wie es so bei den Menschen ist, unterlaufen einem Fehler, man wird faul oder man hat einfach keine Lust auf die Regeln. Die gegenseitige Kontrolle von Code mag bei kleineren Mengen noch durch Menschen machbar sein, wenn ein Projekt aber aus mehreren zehntausenden Zeilen Code besteht, ist das auch nicht mehr machbar. Und an dieser Stelle setzt man auf statische Code-Analyse. Mit den entsprechenden Tools kann man Code analysieren und anschließend anhand definierter Regeln auswerten lassen.

Eines dieser Tools, und das sagt ja schon die Überschrift, befasst sich mit der statischen Analyse von php Code und nennt sich “php code sniffer”. Das Tool ist kostenlos und kann über PEAR geladen werden:

pear install PHP_CodeSniffer-1.3.0RC2

Die Version 1.3 RC2 ist die derzeit aktuelle Version, um auf dem neusten Stand zu sein schaut doch einfach mal hier nach, welche die aktuelle Version ist.

Über die Console ist das Tool nach erfolgreicher Installation mittels “phpcs” verfügbar. Der Aufruf ist dann ganz leicht:

phpcs --standard=zend class.php

In diesem Beispiel wurde die Datei class.php auf die Coding-Standards von Zend hin überprüft. Das Ergebnis sieht dann ungefähr so aus:

FILE: /.../class.php
--------------------------------------------------------------------------------
FOUND 3 ERROR(S) AND 0 WARNING(S) AFFECTING 3 LINE(S)
--------------------------------------------------------------------------------
1 | ERROR | End of line character is invalid; expected "\n" but found "\r\n"
9 | ERROR | Expected 0 spaces before opening brace; 2 found
11 | ERROR | Spaces must be used to indent lines; tabs are not allowed

Als kurze Erklärung: In Zeile 1 wurde ein falscher Zeilenumbruch verwendet (kann passieren, wenn man mit Windows und Linux/Unix im Wechsel am gleichen Code arbeitet), in Zeile 9 waren zwei Leerzeichen vor der öffnenden geschweiften Klammer und in Zeile 11 wurde mit Tabs an Stelle von Leerzeichen eingerückt. Die Datei an sich funktioniert tadellos, allerdings verstoßen diese Punkte eben gegen die Konventionen von Zend.

Wie ihr seht, ist es mit dem php code sniffer sehr schnell und vor allem sehr einfach möglich, euren Code auf Regeln hin zu untersuchen und Fehler dieser Art zu finden. Neben den Regeln von Zend gibt es noch einige weitere vorgefertigte Rules, die ware Stärke zeigt das Tool aber mit der Möglichkeit, eigene Regeln zu definieren. Da ich den Umfang dieses Beitrags nicht sprengen will, schaut euch doch einfach mal folgenden Beitrag auf “php hates me” an, der genauer auf dieses Thema eingeht: PHP Code Sniffer – Eigene Regeln erstellen.

Links:
php code sniffer
phphatesme.com