ubuntuusers.de

10. Februar 2014

Mozilla arbeitet an einer neuen Engine, welche auf den Namen Servo hört und in der sich ebenfalls noch in Entwicklung befindlichen Programmiersprache Rust geschrieben wird. Bis zur Fertigstellung wird es allerdings noch mindestens zwei Jahre dauern.

Mit Servo arbeitet Mozilla bereits seit vergangenem Jahr an einer komplett neuen Engine, welche moderne Hardware optimal nutzt und frei von Altlasten und Schwachstellen der aktuellen Gecko-Engine ist. Servo wird nicht etwa in C++, sondern in Mozillas eigener Sprache Rust geschrieben, welche bereits seit mehreren Jahren in Entwicklung ist und einige der Nachteile von C++ kompensieren soll. Einer der Vorteile von Rust ist, dass es für die Unterstützung mehrerer Prozessorkerne prädestiniert ist. Außerdem ist Rust standardmäßig sicher, was einen Großteil von Speicherfehlern verhindert und die Engine weniger anfällig für Abstürze und Sicherheitsprobleme macht.

Bis Servo in den Browser integriert und von Endnutzern genutzt werden kann, wird es allerdings noch mindestens zwei Jahre dauern. Das berichtet Golem.de unter Berufung auf Josh Matthews von Mozilla. Zumindest möchte man Servo in diesem Jahr soweit haben, dass mit dem Dogfooding begonnen werden könne, also dem breiteren Einsatz innerhalb von Mozilla.

Die Projekte Rust und Servo werden von Samsung unterstützt. Deren Ziel ist es, die Servo-Engine für ARM-CPUs und damit den Einsatz auf Smartphones zu portieren. Samsung soll im vergangenen Jahr 20 Mitarbeiter für die Entwicklung an Rust abgestellt haben.

TrueCrypt ist hoffentlich jedem Leser ein Begriff, daher verzichte ich auf eine detaillierte Vorstellung. Bei Bedarf kann man den entsprechenden Artikel im ubuntuusers-Wiki nachlesen.

Beim Nutzen der Container ist mir jetzt aber ein Problem bei der Nutzung auf mehreren Computern aufgefallen, auf das ich im Folgenden eingehen möchte.

Fehlende Rechte auf anderen Computern

Ein TrueCrypt-Container enthält ein eigenes Dateisystem wie eine Festplatte oder ein USB-Stick auch. Dieses wird bei der Erstellung festgelegt, kann aber auch nachträglich formatiert werden. Da ich nur Linux nutze, entschied ich mich für ext4. In diesem Fall problematisch ist, dass ext4 die bekannten Unix-Rechte unterstützt, wodurch ich beim Öffnen des Containers an einem anderen System Rechteprobleme erhielt:

  • An Computer 1 habe ich die UID 1000 und alle Dateien im TrueCrypt-Container gehören dem User 1001, also mir.
  • An Computer 2 habe ich die UID 1001, aber alle Dateien im TrueCrypt-Container gehören dem User 1001, also erhalte ich eine Fehlermeldung, wenn ich auf die Dateien zugreifen will, da dieser Nutzer keine Zugriffsrechte besitzt.


Und schon habe ich den Salat. Durch verschiedene User-IDs auf den verschiedenen Geräten gehören mir die Dateien mal, mal nicht. Und wenn ich mich als Eigentümer auf dem einen Gerät eintrage, funktioniert es wieder nicht auf dem anderen Gerät.

Quick and dirty: 777?

Die einfachste Lösung für dieses Problem ist die Zuweisung der Rechte für alle. Wenn ich nun jedem Nutzer die kompletten Rechte an den Dateien im Container zuweise, habe ich an jedem Gerät genug Rechte und keinerlei Probleme mit Lese- oder Schreibzugriffen. Die Zuweisung der Rechte in der Form 777 (siehe Tabelle Rechtezuweisung) ist in der Konsole mit einem Befehl erledigt. Die Lösung gefällt mir aber nicht besonders gut, denn nun kann jeder andere zu dieser Zeit eingeloggte Nutzer auch auf den eingehängten Container zugreifen – soweit ich weiß gibt es seitens TrueCrypt da keinen Schutzmechanismus.

Nutzer- und Gruppenrechte nutzen

Meine bisherige Lösung war es, die Eigentümer-Gruppe zu nutzen. In meinem konkreten Fall ist es immer so, dass mein Benutzer entweder der zuerst oder als zweites angelegte Nutzer im System ist, also immer entweder die UserID 1000 oder 1001 hat. Ich habe somit den Eigentümer der Dateien als den Benutzer 1000 festgelegt, die Gruppe aber als 1001 und in dieser Gruppe ist der Nutzer 1001 Mit der Rechtezuweisung 770 kann jetzt sowohl der Benutzer 1000 als auch 1001 auf die Dateien zugreifen, jeder andere aber nicht (im Gegensatz zu der vorherigen Idee mit allen Rechten).

Natürlich ist auch diese Idee nicht perfekt, denn wenn ich auf dem einen System Nutzer 1000 bin, kann der auf diesem System vorhandene Nutzer 1001 auch auf die Daten zugreifen – sofern es ihn gibt.

Gibt es einen besseren Weg, wie beispielsweise in der fstab einen Besitzer zuzuweisen?

9. Februar 2014

Donnerstag, 06.02.2014

Impact Maps und Story Maps

Am nächsten Morgen ging es mit dem Vortrag „Impact Maps und Story Maps: liefern was wirklich zählt“ von Christian Hassa weiter.

Er stellte eine Möglichkeit vor, dass das Backlog eines Projekts nicht überquillt. Hier nannte Impact Maps, die sichtbar machen sollen, welche Auswirkung ein bestimmtes Feature hat und was man dafür liefern muss. Daneben stellte er noch Story Maps vor, die auch irgendwas können.

Mir war der Vortrag leider viel zu hoch. Wer noch nicht mit User Stories im agilen Umfeld arbeitet, konnte mit dem Vortrag leider nichts anfangen.

Continuous Documentation statt Endless Specification

Der zweite Vortrag „Continuous Documentation statt Endless Specification - den Fokus auf nachhaltige Artefakte legen“ von Susanne Mühlbauer war da schon etwas besser, aber auf ähnlichem Niveau.

Die Referentin stellte zur Diskussion, ob es sinnvoll sei, dass man an vielen Stellen im Projekt mehrfach das Gleiche auf andere Art und Weise dokumentiert. Sie hält Prozess- und Projektdaten (Besprechungsprotokolle, Zwischenergebnisse etc.) für weniger wert als den entstandenen Code oder Designbeschreibung. Dieser Output könnte dann bei einem iterativen Verfahren wie Scrum wieder in die Anforderungsdokumentation wandern, um die Spezifikation zu verbessern.

Als Beispiele für solchen nachhaltigen Artefakte, die man aufheben sollte, zählt Mühlbauer Motivationen und Entscheidungen sowie der grobe Überblick über das Thema. Ebenso ist oft ein Benutzerhandbuch notwendig. Auch beschrieben werden sollten die Schnittstellen und nicht-funktionale Anforderungen, ebenso wie die Testfälle.

Architekt zu werden scheint nicht schwer, Architekt zu sein dagegen sehr

Siemens-Mitarbeiter Michael Stal sprach dann aus, was alle Software-Architekten denken: „Architekt zu werden scheint nicht schwer, Architekt zu sein dagegen sehr“.

Die Architektur ist das Rückgrat des Systems und so sind auch die Architekten wichtig, die dieses pflegen. Oft sind Architekten aber „nur“ normale Entwickler, die dazu ernannt wurden, aber keinerlei sonstigen Erfahrungen dafür mitbringen. Ein Problem ist dabei sicher auch, dass Architekten in manchen Prozessen einfach kein Platz zugeordnet wird.

Am Beispiel der Siemens AG stellte Stal dann die verschiedenen Architekten-Anforderungen und dessen Verantwortungen vor. Neben Design Skills benötigen sie Erfahrung im Requirement Engineering und Teststrategien. Vor allem die Soft Skills sah Stal als extrem wichtig an. Ebenso sollten auch Architekten noch implementieren – etwas, was sehr oft nicht mehr der Fall ist.

Zusätzlich sollte man als Architekt (und in meinen Augen auch allgemein) nicht alles bis ins kleinste Detail vorab spezifizieren, designen und berechnen, sondern lieber einfach etwas ausprobieren und dann nachjustieren, wenn es nicht stimmt. Das erfordert aber Mut.

Gut fand ich auch den Hinweis, dass man als Architekt auf ein guten Ausgleich zwischen Arbeits- und Privatleben achten sollte. Mehr als 40 Stunden kann ein Mensch auf die Dauer in einer Woche nicht sinnvoll arbeiten ohne sich kaputt zu machen bzw. ohne dass die Qualität leidet.

Keynote: An Agile Challenge

Die Keynote „An Agile Challenge: Munich Germany Takes On The Columbus Ohio USA Agile Benchmark Study“ war in meinen Augen dann eher wenig erwähnenswert.

Es wurden nur Ergebnisse von ein paar europäischen Firmen vorrgestellt, die an einer Agile-Benchmark-Studie teilgenommen hatten.

Über Freud und Leid der Entwickler beim Schätzen ihrer Aufgaben

Der Vortrag „'Och, nicht schon wieder ...!'; - Über Freud und Leid der Entwickler beim Schätzen ihrer Aufgaben...“ war eigentlich weniger Vortrag als Erfahrungsaustausch.

Die beiden Referenten Paul Herwarth von Bittenfeld und Joachim Seibert teilten den Raum in zwei Gruppen auf, die wiederum in drei Teilgruppen geteilt wurden. Diese drei Teilgruppen sammelten sich dann um drei Fragen an drei Tischen. Jeder sollte sich mit den anderen austauschen und aufschreiben, was 1. die Motivation für Schätzungen ist, 2. welche Störungen es gibt, die Schätzungen zunichte machen können, und 3. welche gute Erfahrungen mit Schätzen gemacht wurde. Die Teilgruppen wanderten dann zum nächsten Tisch weiter und am Ende wurden die erarbeiteten Ergebnisse vorgestellt.

Das ganze bezog sich natürlich auf das Abschätzen in Scrum-Projekten, sodass ich nicht direkt mitreden konnte, dennoch kam Einiges zusammen. Vor allem aus dem Scrum-Umfeld konnte ich so ein paar Begriffe wie „Planning Poker“ oder „Magic Estimation“ aufgreifen (hier grob erklärt).

Mir hat die Veranstaltung sehr gut gefallen, weil man so einmal mit seinen Tischnachbarn ins Gespräch kam und sich austauschen konnte. Dazu im Fazit mehr …

Keynote: Software Design in the 21st Century

Danach trat Martin Fowler mit seiner Keynote „Software Design in the 21st Century“ an. Martin Fowler ist kein Unbekannter in der Software-Welt und hatte/hat einen großen Einfluss auf die Entwicklung im Bereich Software-Architektur, Refactoring und Extreme Programming.

Dementsprechend habe ich mich auch auf seinen Vortrag gefreut, der zweigeteilt war. Der erste Teil beschäftigte sich mit den verschiedenen Arten des Refactorings. Neben Test-Driven-Development-Refactoring nannte er auch noch Little-Pickup-Refactoring, Comprehension-Refactoring, Preparatory-Refactoring, Planned Refactoring (im Backlog) und Long-Term-Refactoring.

Martin Fowler zum Thema Refactoring.
Martin Fowler zum Thema Refactoring.

Die guten Gründe, die für Refactoring sprechen, sind: Qualität, sauberer Code, Professionalität und dass es einfach das Richtige ist. Diese Gründe sollte man aber gegenüber den Geldgebern/Projektleitern nie nennen. Besser wäre es, wenn man „Okönomie“ als Grund angibt: Man kann nach dem Refactoring mehr und schneller liefern.

Der zweite Teil befasste sich weniger mit normalen Software-Themen, sondern griff die Nachricht der Keynote von Constanze Kurz vom Vortag mit auf. Fowler betonte, dass wir Entwickler nicht bloß „Code monkeys“ seien, sondern unser Gehirn einschalten sollten. Wir sollten das Richtige und Moralische während unser Arbeit tun. Dazu zählt auch die Privatsphäre der Nutzer zu schützen.

Er verwies dabei auch auf den kommenden Dienstag. Am 11. Februar 2014 ist der Tag, an dem wir zurückschlagen: The Day We Fight Back – Against Mass Surveillance. Martin Fowler rief jeden dazu auf, teilzunehmen, was ich nur unterstützen kann.

Ich hätte nicht mit so einem kritischen Thema auf der OOP gerechnet, bin deswegen aber umso mehr begeistert gewesen. Auch heise hat darüber berichtet.

Agile Softwarearchitektur - 5 Dinge die vom Hype bleiben

Im vorletzten Vortrag ging es um das Thema „Agile Softwarearchitektur - 5 Dinge die vom Hype bleiben“. Stefan Toth erzählte, wie Softwarearchitektur in die agile Welt passt.

Es sind dabei vor allem fünf Dinge, die bleiben: Schlanke Vorarbeit (d.h. nicht totdesignen, bevor man anfängt zu kodieren), gemeinsame Architekturarbeit aller Beteiligten/Entwickler, Architekturanforderungen müssen festgehalten sein, Architektur und Entwicklung verzahnen (iterativ mit Metriken und Tests verifizieren und korrigieren) und Reflexion der Architektur.

Insgesamt war es ein guter und interessanter Vortrag, der dabei half, das Thema Softwarearchitektur im agilen Umfeld korrekt einzuordnen.

SOLID Deconstruction

Den Abschluss – und mein Highlight – bildete der Vortrag SOLID Deconstruction von Kevlin Henney. Ich habe Henney bereits auf der OOP 2012 gehört und freute mich daher auf ihn. Grund war und ist, dass man in seinen Vorträgen Tränen lacht und trotzdem etwas lernt.

Henney nahm die SOLID-Prinzipien auseinander und erklärte zu jedem Prinzip, wo es herkam und was es ursprünglich bedeutete und wieso wir es in der heutigen Zeit manchmal falsch anwenden bzw. falsch verstehen.

Interessant war auch sein Verweis auf das Dreyfus-Modell zum Erwerb von Fähigkeiten, was den Menschen in fünf Typen unterteilt, wie er etwas lernt und aufnimmt. Dementsprechend sollte man auch mit den SOLID-Prinzipien umgehen.

Der Vortrag war wie erwartet sehr erheiternd. Kleinere Anekdoten und ein sehr lockerer Vortragsstil reißen einen einfach mit. Zusätzlich habe ich einiges über SOLID gelernt und kann die Prinzipien (bzw. Henney nennt es lieber Pattern) besser anwenden.

Fazit

Die OOP war wieder sehr gut und ich kann es eigentlich nur jedem empfehlen, der die Möglichkeit hat, dort hinzugehen, es mindestens einmal zu versuchen. Das Programm ist so riesig, dass für jeden etwas dabei ist. Daneben kann man auch viele Kontakte knüpfen …

… wenn die Raumgröße nicht wäre. In jedem Vortrag gab es das gleiche Bild: Zwischen je zwei Zuhörern war ein Platz frei. Immer! Ausnahme: Zwei Entwickler kamen gemeinsam durch die Tür herein und gehörten zusammen. Auch während der Pausen blieben die meisten (wenn sie nicht Teil einer Gruppe waren) für sich. Ich bin unsicher, wieso das so war, aber es fanden so nur wenige Gespräche statt. Einzig bei den Gruppenarbeiten in den Vorträgen (was bei mir nur zwei waren), wurde das Eis gebrochen und die Gespräche fingen an.

Interessant waren auch die Ausstellungen im unteren Bereich der Halle. Siemens stellte beispielsweise ein 1:2-Modell des Mars Rover aus. Und beim Carl-Hanser-Verlag konnte ich mit den Leuten reden, deren Bücher ich ab und zu lese.

Das Mars-Rover-Modell am Siemens-Stand.
Das Mars-Rover-Modell am Siemens-Stand.

Bilder gibt es im Übrigen beim Veranstalter, wer ein paar Impressionen sehen will.

Jedes Jahr findet in München die OOP statt, eine Messe, auf der viel über Software-Architektur, Agilität und Management gesprochen wird. Dieses Jahr waren mehr als 150 Referenten vor Ort und haben über 1800 Konferenz-Teilnehmer unterhalten. Mich am Mittwoch und Donnerstag ebenfalls.

Eingang zur Messe.
Eingang zur Messe.

Mittwoch, 05.02.2014

OOA, IOC, ROI, SQL - Was passt nicht?

Der erste Vortrag war „OOA, IOC, ROI, SQL - Was passt nicht? Eine Erzählung von Betriebswirtschaft und Software-Entwicklung“. Hier ging es speziell um den Return of Invest (ROI), für den sich das Management in einer Firma meist interessiert.

Anhand eines Beispiel, bei dem es darum ging, ob man ein Stück Code mit einer Factory und DIP refaktorisiert, wollte Michael Mahlberg zeigen, ob es sich lohnt, dies so umzusetzen. Wichtig für ihn war, nicht die absoluten Zahlen zu sehen, sondern immer die Investierung betrachtet über die Zeit (also inkl. Zinssatz). Ich gebe zu, dass ich das nicht alles verstanden habe.

In kleinen Gruppenarbeiten sollten dann andere Fälle wie „Make or Buy“, „Serviceaustausch“ oder „Flat-File vs. Datenbank” besprochen werden. Da wir viel zu viele Teilnehmer waren (ca. 50) teilten sich diese also auf drei Gruppen auf, in der aber nur wenige etwas zum Ergebnis beitrugen. Heraus kam auf alle Fälle, dass es wesentlich leichter ist, die Kostenseite für eine Software-Änderung aufzuschreiben als die Nutzenseite.

Architectural Refactoring

Der zweite Vortrag war „Architectural Refactoring - agile Umsetzung von Modernisierungsentscheidungen“. Unter Architectural Refactoring versteht Referent Olaf Zimmermann, dass man eine zuvor getroffene architekturelle Entscheidung ändert.

In der Regel ist dies nicht einfach, da es mit einer Strukturänderung im Design, Neuimplementierung und Dokumentation verbunden ist. Oftmals liegen vorher getroffenen Entscheidungen nicht einmal vor, was die Sache noch mehr erschwert.

Als Beispiel hat er ein Y-Template vorgestellt, mit dem man festhalten kann, welcher Anwendungsfall unter bestimmten nicht-funktionalen Anforderungen zu einer Entscheidung führt und andere Entscheidungen weglässt, sodass ein bestimmtes Ziel erreicht wird unter Beachtung ggf. negativer Konsequenzen. Festgehalten werden soll das Ganz durch das „ARC Metamodel“, was aber derzeit noch entwickelt wird.

Keynote: Agile Skalierung – Prinzipien statt Blaupause

Die Keynote „Agile Skalierung – Prinzipien statt Blaupause“ von Stefan Roock und Hennig Wolf war sehr interessant.

Die beiden Trainer von it-agile zeigten als Beispiel, dass ein agiles Pilotprojekt auf eine ganze Firma ausgewälzt werden soll. Hier hilft dann keine generische Blaupause, nach der alles umgestellt wird. Ein Überstülpen eines neuen agilen Entwicklungsprozesses von oben bringt nichts, sondern der Kulturwandel muss von unten, von den Mitarbeitern kommen. Verschiedene Prinzipien wie direkte Kommunikation, kein Zielzustand vorgeben sowie beobachten und anpassen sind dabei ganz wichtig, damit so eine Änderung ein Erfolg wird.

Imposing Rule-Based Architecture on Legacy Systems

Der Vortrag „Imposing Rule-Based Architecture on Legacy Systems“ von Michael Feathers sollte den Umgang mit Legacy-Systemen zeigen.

Neben der Darstellung einer einfachen Struktur stellte er einige Mittel vor, wie man Verletzungen der Architekturregeln darstellen kann. Zusätzlich war es wichtig, den Fortschritt wie auch immer zu messen.

Ein schönes Zitat von Kent Beck im Vortrag war: „Wenn du dein System nicht mit vier Objekten oder weniger beschreiben kannst, hast Du keine Architektur.” Das kann man als übertrieben ansehen, aber es soll klar machen, dass jede Art von Architektur zumindest als grobes Konzept leicht verständlich sein muss. (Als Beispiel hat Michael Feathers im Übrigen das Testframework JUnit mit nur zwei Klassen beschrieben.)

Die Vortragsfolien sind leider nicht so gut, da diese oft nur die Überschrift enthalten und der Rest auf der Tonspur kam, was die Zusammenfassung auch etwas erschwert.

Keynote: Mastering the Internet

Überrascht hat mich die Keynote „Mastering the Internet“ von Constanze Kurz. Die Sprecherin des Chaos Computer Club ist vielen sicher bekannt, man würde sie aber nicht auf OOP erwarten.

Das Thema ihres Vortrags war recht aktuell, da es um die Enthüllung von Edward Snowden ging, vor allem eben Prism und die anderen Überwachungsaktivitäten des us-amerikanischen und britischen Geheimdienstes.

Als Open-Source-Aktivist (und Mitglied bei der EFF und FSFE) bin ich dem Thema sehr verbunden und habe mich gefreut, dass Constanze Kurz das den OOP-Teilnehmern noch einmal klar gemacht hat. Interessanterweise blieb sie nicht die einzige …

CCC-Sprecherin Constanze Kurz.
CCC-Sprecherin Constanze Kurz.

Modernisierung von zentralen Frameworks

Anatole Tresch von der Schweizer Bank Credit Suisse zeigte im Vortrag „Modernisierung von zentralen Frameworks - ein Erfahrungsbereicht“, wie einen Java-Framework, was in der Bank benutzt wird, in mehreren Jahren modernisiert wurde.

Grund für die Modernisierung (Refactoring) waren die üblichen Probleme wie erhöhte Wartungszeit und eine zu komplexe API. Das mittelgroße System mit 17.000 Codezeilen hatte Zyklen, eine hohe Kopplung und zahlreiche große Klassen. Als Ziele gab man sich vor robust zu sein, die Wartbarkeit und Laufzeit sollte verbessert werden, daneben wollte man aber auch kompatibel bleiben.

Hier sollte jedem klar sein, dass das eigentlich nicht alles machbar ist. Angeblich wurde aber eine Performancesteigerung von Faktor 100 herausgeholt. Gleichzeitig wurde das System entkoppelt und vereinfacht, was ich mir nicht so richtig vorstellen kann. Kompatibel ist man aber nicht geblieben, was aber kein Problem war, da die Kunden ja wiederum in der Bank saßen und man so direkten Kontakt zu ihnen halten konnte.

What If? - An Exploration of What's Possible, What's Not and Why?

In der Abendschule von 18:30 Uhr bis 20 Uhr gab es dann den letzten Vortrag „What If? - An Exploration of What's Possible, What's Not and Why?“ von David Hussmann. Einige Vorträge gibt es auch auf seiner Firmen-Webseite Devjam.

Sehr unterhaltsam hat David Hussmann erklärt, dass die Leitsprüche „certification over education“ und „process over product“ eher schaden als nützen. Die Änderungen müssen aus dem Team heraus kommen und von ihm angenommen werden. Zusätzlich muss Platz für Anpassungen und Veränderungen sein.

Das heißt, wenn der Prozess nicht passt, egal ob Scrum, Kanban oder was anderes, dann muss man ihn anpassen. Und wenn man dann eben eben nicht mehr nach Lehrbuch arbeitet, dann ist das einfach so. Wenn es dem Team und dem Projekt hilft, ist das in Ordnung.

Mir hat an dem Vortrag gefallen, dass eben nicht so sehr auf Regeln gepocht wird. An vielen Stellen hört man immer wieder: „Was, ihr macht Scrum und habt kein ordentliches Backlog? Wie könnt ihr nur?“ Ich hoffe, dass sich dieses Denken der Freiheit und Anpassbarkeit noch weiter herumspricht.

Etwas enttäuscht war ich nur von dem Begriff Abendschule (Night school). Ich hatte mir darunter eine lockerere Atmosphäre und Gespräche vorgestellt. Effektiv war es aber wie die normalen Vorträge – nur eben spät abends … und recht teuer.

Eines der nervigsten Bastelthemen die mich jemals beschäftigt haben war die Konfiguration dieses Laptops für den Linuxbetrieb. Die Installation von Debian verlief problemlos – das Thinkpad wollte jedoch auf Gedeih und Verderb nicht mit mehreren Displays arbeiten. In dem Thinkpad arbeiten 2 Grafikkarten, eine von Intel und eine NVIDIA Optimus. Da mir das Umschalten mit Bumblebee zu umständlich war habe ich im BIOS die NVIDIA Karte als Default ausgewählt – siehe Screenshots und den proprietären NVIDIA Treiber installiert.

Diese Konfiguration läuft jedoch nur bedingt – ab und an bootet das System und manchmal leider nicht. Das Stichwort lautet waiting for /dev to be fully populated. Die Lösung ist dieses Problems ist absolut logisch und selbst für den Laien verständlich – im BIOS einfach die Virtualisierung deaktivieren und alles ist gut.

Auf discrete Graphics umstellen Auf discrete Graphics umstellen Virtualisierung deaktivieren Virtualisierung deaktivieren

Da ich die letzten 12 Monate wenig Zeit und noch mehr Arbeit hatte begleitete mich dieses Problem wirklich sehr lange – zeitweise mußte ich sogar einen sehr bizarren KDE Klon zum Arbeiten verwenden.

Die Früchte dieser merkwürdigen Konfigurationsarbeit sehen dann so aus:

 

4 mal Slayer

 

2 Displays sind via DisplayPort angeschlossen und eines über VGA. Einen sinnvollen Verwendungszweck habe ich für soviele Displays noch nicht gefunden. Aber auf 3 Screens läßt sich wunderbar Java schreiben:)

Der Beitrag Mehrere Bildschirme mit dem Thinkpad W530 erschien zuerst auf Unerklärliches am Rande.

Eines der nervigsten Bastelthemen die mich jemals beschäftigt haben war die Konfiguration dieses Laptops für den Linuxbetrieb. Die Installation von Debian verlief problemlos – das Thinkpad wollte jedoch auf Gedeih und Verderb nicht mit mehreren Displays arbeiten. In dem Thinkpad arbeiten 2 Grafikkarten, eine von Intel und eine NVIDIA Optimus. Da mir das Umschalten mit Bumblebee zu umständlich war habe ich im BIOS die NVIDIA Karte als Default ausgewählt – siehe Screenshots und den proprietären NVIDIA Treiber installiert.

Diese Konfiguration läuft jedoch nur bedingt – ab und an bootet das System und manchmal leider nicht. Das Stichwort lautet waiting for /dev to be fully populated. Die Lösung ist dieses Problems ist absolut logisch und selbst für den Laien verständlich – im BIOS einfach die Virtualisierung deaktivieren und alles ist gut.

Auf discrete Graphics umstellen Auf discrete Graphics umstellen Virtualisierung deaktivieren Virtualisierung deaktivieren

Da ich die letzten 12 Monate wenig Zeit und noch mehr Arbeit hatte begleitete mich dieses Problem wirklich sehr lange – zeitweise mußte ich sogar einen sehr bizarren KDE Klon zum Arbeiten verwenden.

Die Früchte dieser merkwürdigen Konfigurationsarbeit sehen dann so aus:

 

4 mal Slayer

 

2 Displays sind via DisplayPort angeschlossen und eines über VGA. Einen sinnvollen Verwendungszweck habe ich für soviele Displays noch nicht gefunden. Aber auf 3 Screens läßt sich wunderbar Java schreiben:)

Der Beitrag Mehrere Bildschirme mit dem Thinkpad W530 erschien zuerst auf Unerklärliches am Rande.

8. Februar 2014

Das dezentrale soziale Netzwerk Libertree hat heute die Kommunikation zwischen den Servern auf das XMPP Protokoll umgestellt. Ich denke die Nutzung dieses etablierten Protokolls war eine sinnvolle Entscheidung, welche die Stabilität und Skalierbarkeit der Server zu Server Kommunikation gewährleistet und in Zukunft beispielsweise helfen kann die Interoperalität mit anderen Diensten zu verbessern.

Neben einer Verschlüsselung der Kommunikation zwischen den Servern, wird jetzt wohl die Implementierung von Gruppen beginnen. Naheliegend ist auch eine Überarbeitung des Chats.

Außer der Umstellung auf XMPP hat sich seit meinem letzten Artikel auch sonst viel getan, so sieht die Oberfläche jetzt aufgeräumter aus, und lässt sich auch mit Themes ändern.

Libertree Oberfläche

Pools und Springs wurden eingeführt, mit diesen können Posts gesammelt (Pools) und auch wieder veröffentlicht werden (Springs).

Bilder lassen sich nicht direkt auf Libertree Server hochladen, allerdings ist es möglich per remoteStorage den eigen Online Speicher zur Einbindung von Bildern zu nutzen.

Auch die Syntax um Flüsse (Streams) zu erstellen, bzw. die (noch übersichtliche) Menge an Postings nach den interessanten filtern, wurde erweitert und direkte Nachrichten lassen sich mit GPG verschlüsselt ans Email-Postfach weiterleiten.

Die Aufzählung ist keineswegs vollständig und es bleibt zu hoffen, das sich das Projekt so weiter entwickelt und in Zukunft vielleicht auch ein paar mehr Entwickler_innen mitarbeiten.

Ich sage hier schon mal das dass noch nicht dass Erste Projekt ist jedoch zeige ich schon mal ein Bild vom Ersten Projekt. Ich möchte bei jedem Projekt genau die Bauanleitung sowie den Code miteinbeziehen. Ich plane nämlich verschiedene Projekte zu gestalten die alle jeweils mehre Level haben. Dass heißt dass dass selbe Projekt auch Anspruchsvoller und dabei auch größer in den höheren Leveln hier vorgestellt wird. Somit gibt es sowohl für Anfänger als auch für Profis was und dabei kann man auch von Level zu Level mehr lernen. 😉
Ich hoffe ich helfe dadurch dem einen oder anderen. 😉

PIProjekt-Basic Keypad-Level1_Steckplatine

Auf dem Bild seht ihr eine kleine Schaltung die eine Art Zahlencode wird. 🙂

ngx_pagespeed

Google hat “pagespeed” für nginx veröffentliche, die nginx Äquivalent vom “mod_pagespeed” für Apache. Dieses Modul kann die Performance von Webseiten optimieren, indem z.B. die zugehörigen Assets (CSS, JavaScript, Bilder) verkleiner bzw. kombiniert werden, um die Ladezeiten zu reduzieren. Dieses Tutorial erklärt wie nginx + pagespeed auf Debian kompiliert/installiert werden kann.

 

Bevor wie starten können müssen wir ggf. einige Pakete nachinstallieren und “deb-src” in der “/etc/apt/sources.list” einfügen / auskommentieren.

apt-get update
apt-get install dpkg-dev build-essential zlib1g-dev libpcre3 libpcre3-dev
cd /usr/src/
apt-get source nginx
apt-get build-dep nginx
cd nginx-*/debian/modules/
git clone https://github.com/pagespeed/ngx_pagespeed.git
cd ngx_pagespeed
wget https://dl.google.com/dl/page-speed/psol/1.7.30.1.tar.gz
tar -xzvf 1.7.30.1.tar.gz
cd /usr/src/nginx-*/
vim debian/rules

# und folgende Zeile in der config (config.status.full: config.env.full config.sub config.guess) hinzufügen …

--add-module=$(MODULESDIR)/ngx_pagespeed \

# anschließend können wir uns ein neues “*.dep”-Paket bauen

dpkg-buildpackage -b
dpkg --install ../nginx-full*.dep

# … check …

nginx -V

z.B.:

root@h1687374> nginx -V
nginx version: nginx/1.5.10
TLS SNI support enabled
configure arguments: –prefix=/etc/nginx –conf-path=/etc/nginx/nginx.conf –error-log-path=/var/log/nginx/error.log –http-client-body-temp-path=/var/lib/nginx/body –http-fastcgi-temp-path=/var/lib/nginx/fastcgi –http-log-path=/var/log/nginx/access.log –http-proxy-temp-path=/var/lib/nginx/proxy –http-scgi-temp-path=/var/lib/nginx/scgi –http-uwsgi-temp-path=/var/lib/nginx/uwsgi –lock-path=/var/lock/nginx.lock –pid-path=/var/run/nginx.pid –with-pcre-jit –with-debug –with-http_addition_module –with-http_auth_request_module –with-http_dav_module –with-http_geoip_module –with-http_gzip_static_module –with-http_image_filter_module –with-http_realip_module –with-http_stub_status_module –with-http_ssl_module –with-http_sub_module –with-http_xslt_module –with-http_spdy_module –with-ipv6 –with-mail –with-mail_ssl_module –with-openssl=/usr/src/nginx-1.5.10/debian/openssl-1.0.1f –add-module=/usr/src/nginx-1.5.10/debian/modules/nginx-auth-pam –add-module=/usr/src/nginx-1.5.10/debian/modules/nginx-echo –add-module=/usr/src/nginx-1.5.10/debian/modules/nginx-upstream-fair –add-module=/usr/src/nginx-1.5.10/debian/modules/nginx-dav-ext-module –add-module=/usr/src/nginx-1.5.10/debian/modules/nginx-cache-purge –add-module=/usr/src/nginx-1.5.10/debian/modules/ngx_pagespeed

vim /etc/nginx/nginx.conf

# … und folgende Zeilen über den vHosts einfügen …

pagespeed on;
pagespeed FileCachePath /var/ngx_pagespeed_cache;
mkdir /var/ngx_pagespeed_cache
chown -R www-data:www-data /var/ngx_pagespeed_cache
/etc/init.d/nginx restart
curl -I -p http://localhost | grep X-Page-Speed
apt-get install memcached

# aktiviere memcache  

vim /etc/default/memcached
/etc/init.d/memcached restart

# optional: Fehleranalyse

tail -f /var/log/nginx/error.log  

 

Beispiel-Seite:

http://moelleken.org

 

Beispiel-Konfig:

https://github.com/voku/CONFIG–nginx—php-fpm—mysql

 

Download: (alternativ kann man auch meine bereis kompilierte Version testen)

http://suckup.de/downloads/nginx-full_1.5.10_i386.deb

http://suckup.de/downloads/nginx-common_1.5.10_all.deb

http://suckup.de/downloads/nginx-1.5.10_all.deb

 

Links:

Google-Pagespeed-Doku: https://developers.google.com/speed/pagespeed/module/config_filters

Google_Pagespeed-HowTo: https://developers.google.com/speed/pagespeed/module/build_ngx_pagespeed_from_source

Filter-Übersicht: http://ngxpagespeed.com/ngx_pagespeed_example/

Ein Kollege entwickelt seine Seite unter Windows und zum hochladen auf seinen webhosting Anbieter nutzt er lftp unter cygwin.
Das ganze funktionierte bislang ohne Probleme, bis er den Anbieter gewechselt hatte.

Beispiel:
lftp -u Benutzer,kennwort ftp-server -e "mirror -R /cygdrive/c/websites htdocs; exit"

Nachdem er die Dateien per lftp auf den neuen Server hochgeladen hatte, konnte die Seite über den Browser nicht mehr geöffnet werden. Ich schaute mir die hochgeladenen Dateien an und fand heraus, das Sie kein Dateirechte hatten. Nachdem ich die benötigten Rechte gesetzt hatte, war die Seite wieder aufrufbar.

Ich startete erneut die Übertragung der Dateien, diesmal jedoch zusätzlich mit dem Parameter -d. Bei der Debug-Ausgabe sah ich, das lftp ein CHMOD 000 auf die hochgeladenen Dateien ausführte.

Mit dem Parameter -p konnte ich lftp anweisen, die Rechte nicht zu ändern und die Seite war nach einem erneuten Upload aufrufbar.

lftp -u Benutzer,kennwort ftp-server -e "mirror -R -p /cygdrive/c/websites htdocs; exit"

7. Februar 2014

Titel Software-Architekturen dokumentieren und kommunizieren
Autor Stefan Zörner
Sprache Deutsch
Genre Fachbuch
Herausgeber Carl Hanser Verlag, 2012
Seitenanzahl 277 Seiten

In jedem größeren Software-Projekt besitzt die Software eine bestimmte Architektur. In der Regel sollte diese strukturiert und gut dokumentiert sein. Da Dokumentation aber nicht gerade zu der Lieblingsbeschäftigung von Entwicklern zählt, krankt es des Öfteren daran. Das Buch „Software-Architekturen dokumentieren und kommunizieren“ von Stefan Zörner soll zeigen, wie man die Software-Architektur festhalten kann.

Inhalt

Inhaltlich orientiert sich das Buch „Software-Architekturen dokumentieren und kommunizieren“ teilweise an der Dokumentationsvorlage arc42. Diese Vorlage, entwickelt von Gernot Starke (der auch das Geleitwort zum Buch verfasst hat) und Peter Hruschka, ist unter einer Creative-Commons-Lizenz frei verfügbar und für jeden nutzbar.

Stefan Zörner beschreibt in seinem Buch aber viel mehr als die Dokumentation mit arc42, dies nimmt im Vergleich sogar nur einen kleinen Teil ein. Wichtig sind ihm vor allem Fragen wie „Was dokumentiere ich? Für wen dokumentiere ich? Und wie ich finde das Dokumentierte wieder?“ Auch wenn diese Fragen nicht generell und erst recht nicht leicht zu beantworten sind, gibt sich der Autor sichtlich Mühe, dem Leser Denkanstöße in diese Richtung zu geben.

Bei der Dokumentation geht er dann auch verstärkt auf wichtige, zu beschreibende Aspekte einer Software ein. Darunter z. B. die Randbedingungen, Qualitätsmerkmale („non-functional requirements“) oder Architekturentscheidungen. All dies sollte festgehalten werden, damit man auch später noch klar nachvollziehen kann, wieso die Software so strukturiert ist, wie sie vorliegt.

Zielgruppe

Auch wenn man meinen könnte, dass das Buch nur eine kleine Zielgruppe hat, so sollte doch eigentlich jeder Software-Entwickler wissen, wie er die Struktur seiner Software dokumentieren und anderen vermitteln kann. Sicherlich ist es in einem Ein-Mann-Projekt übertrieben, mit arc42 an die Dokumentation zu gehen, aber die meisten Programmierer können bestätigen, dass sie ohne Dokumentation (und sei es nur in Form von Kommentaren) den eigenen Quellcode nach einem halben Jahr nicht mehr komplett verstehen. Demnach richtet sich das Buch an eine große Gruppe, sowohl im Business- als auch im Privat-Bereich.

Für seine Vorträge und das Buch hat er sogar eine eigene Schach-Engine DokChess geschrieben, die unter Open-Source-Lizenz verfügbar ist. Dieser Software widmet er anschaulich im Buch auf 34 Seiten eine komplette Beispieldokumentation, sodass jeder Leser ein echtes und anschauliches Beispiel für gute Dokumentation vorliegen hat.

Durch Übungsaufgaben versucht Stefan Zörner auch gleich zum Mitmachen anzuregen. Dies ist sehr fordernd, weil man die Architektur des real existierenden Squeezebox Medienservers dokumentieren soll. Hier sollte man also schon etwas Zeit mitbringen. Auch wenn die ersten Übungsaufgaben noch recht einfach zu handhaben sind, wird es zum Ende immer anspruchsvoller. Gut ist, dass man dem Autor seine Lösungen per E-Mail zuschicken kann und er dazu Rückmeldung gibt und seine Musterlösung zuschickt.

Fazit

Das Wichtigste, was Stefan Zörner wohl als geeigneten Autor für so ein Thema ausmacht, ist sein Erfahrungsschatz. Als ehemaliger Trainer und Berater bei oose und nun bei embarc hat er regen Kundenkontakt. Privat arbeitet er beim Apache-Projekt mit und hat so auch einen Einblick in andere Organisationsformen.

Das Buch liest sich daher aufgrund kleiner Anekdoten und Zitate sehr locker und flüssig. Darüber hinaus bauen die Kapitel nicht aufeinander auf, sondern können auch je nach aktuellem Wunsch gezielt bei einem Problem gelesen werden. Sinnvoll ist es aber, wenn man jedes Kapitel zumindest überfliegt.

Sehr gut haben mir vor allem die Kapitel 8 „Lightfäden für das Vorgehen zur Dokumentation“ und Kapitel 10 „Stolpersteine der Architekturdokumentation“ gefallen. In Kapitel 8 geht es darum, wie man sinnvoll dokumentiert. Vor allem die Aussage, dass ein Bild (UML-Diagramm) manchmal nicht mehr als tausend Worte sagt, ist bei mir hängengeblieben. In Kapitel 10 geht es um fiese Dokumentationsfallen, etwas, was Stefan Zörner schon auf der OOP 2012 vorgetragen hat, wo ich ihn auch kennenlernte.

PS: Ich weiß nicht, wieso ich die Rezension nicht eher hier veröffentlicht habe. Das Buch hatte ich bereits im März 2013 fertig gelesen.

Ich werde heute meiner Mutter Ubuntu auf ihren Laptop installieren damit sie endlich ohne Störung im Internet Surfen kann und zb. nicht so lange auf dass Starten des Betriebssystems warten muss. Auch ist Ubuntu deutlich einfacher in Stand zu halten. Die paar Griffe kann ich nebenbei bei ihr erledigen und somit bekommt sie ein Sichereres und Stabiles Betriebssystem mit dem Sie einfach ihre wenigen Dinge erledigen kann die sie ab und zu vorhat. Damit sie einfach nur die Icons der Unity Leiste nutzen muss werden dann alle wichtigen Icons dort abgelegt.

Mit Ubuntu kann jede Altersgruppe umgehen und es ist auch deutlich ungefährlicher als Windows welches so zu sagen ein Offener Safe voller wichtiger Daten ist.

Ich hoffe einige von euch angeregt zu haben auch euren Eltern mal Ubuntu zu zeigen und sich die Kurze zeit zu nehmen ihnen es zu Erklären. 😉

Vorwort

Hinweis: Der Artikel ist an vielen Stellen sehr detailliert. Das Wissen dient dem allgemeinen Verständnis, was mir in vielen Artikeln im Internet leider fehlte.

6to4 ist eine einfache Möglichkeit, auch ohne „echte“ Adresse vom ISP IPv6 via IPv4-Tunnel zu verwenden.
Eine 6to4 IPv6-Adresse ist einmalig. Jeder Benutzer mit IPv4-Adresse, besitzt grundsätzlich auch eine IPv6-Adresse/ein Netz.
Das Netz setzt sich folgendermaßen zusammen:
2002:AABB:CCDD::/48
„AABB:CCDD“ habe ich symbolisch für den IPv4-Adressanteil gewählt. Hierzu später mehr.

Im Folgenden werde ich folgende IPv6-Adressen bzw. -Netze konfigurieren. Alles auf Basis von Debian, Ubuntu und weiteren Derivaten:
2002:AABB:CCDD:1::1/64 für den Router
2002:AABB:CCDD:2::/64 als Netz für die Clients

Für die Konfiguration der Clients wähle ich keinen DHCP(v6)-Server, sondern bediene mich an einer Besonderheit des IPv6: Das „Stateless Address Autoconfiguration“ (SLAAC).
SLAAC ist Bestandteil von IPv6 und konfiguriert die Clients in einem Netzwerk automatisch.
Natürlich besteht mit IPv6 weiterhin die Möglichkeit, einen DHCP-Server zu verwenden. Das empfiehlt sich besonders dann, wenn IPv6 DNS-Serveradressen verteilt werden sollen, da SLAAC dies nicht tut!
Warum keine DNS-Server mehr? Mit IPv6/SLAAC wendet man sich immer mehr von der aufwendigen (manuellen) Konfiguration komplexer Netzwerke ab. Garantiert nicht neu, aber im Kommen, ist mDNS. Anfragen zur Namensauflösung werden direkt via Multicast in das Netzwerk gesendet.
Hierauf werde ich nicht weiter eingehen, das ist ein Thema für sich, jedoch möchte ich es im Zusammenhang mit SLAAC nicht unerwähnt lassen.

Die Umrechnung

Eine IPv4-Adresse:
A.B.C.D -> 10.10.10.10
Darstellung in Bit. Ich habe nach jedem 4. Bit ein „|“ gesetzt, um die Umrechnung in Hex genauer aufzuzeigen:
0000|1010 0000|1010 0000|1010 0000|1010
Nun wird jeder 4-Bit Block in Hex umgerechnet:
0|a 0|a 0|a 0|a
Ein Block im IPv6 ist 16 Bit lang, daher fasse ich zusammen:
0a0a:0a0a
IPv6 hat einen 128 Bit großen Adressraum. Das Resultat mit vorangehender „2002″ für den Tunnel mit /48 Subnetz lautet also:
2002:0a0a:0a0a:0000:0000:0000:0000:0000
FFFF:FFFF:FFFF:0000:0000:0000:0000:0000

Die vereinfachte Darstellung unter Auslassung der angereihten 0000er Blocks sowie vorangehenden 0en:
2002:a0a:a0a::/48

Natürlich wird keiner gezwungen, das Netz des Tunnels manuell auszurechnen.
Ohne zusätzliche Tools, lässt sich das Netz für den Tunnel via IP 10.10.10.10 in der Bash errechnen und anzeigen:

1
printf "2002:%02x%02x:%02x%02x::\n" 10 10 10 10

Ausgabe:
2002:0a0a:0a0a::

Konfiguration des Tunnels

Da mein ISP (Unitymedia) mir eine öffentliche IPv4 via DHCP zuteilt, die sich über die Zeit ändern kann, erstelle ich ein Script, welches die 6to4-Adresse unter Angabe des Interface ausgibt:

1
sudo nano /usr/local/bin/6to4

Mit Inhalt:

1
2
#!/bin/bash
/sbin/ip addr list $1 |grep "inet " |cut -d' ' -f6|cut -d/ -f1

Nun noch als ausführbar markieren:

1
sudo chmod +x /usr/local/bin/6to4

Mein Netzwerk konfiguriere ich folgendermaßen, das Script ist direkt mit eingebunden:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
auto lo eth0 eth1
 
iface lo inet loopback
iface eth0 inet dhcp
        post-up sleep 5
        post-up /sbin/ifup tun6to4
iface eth1 inet static
        address 192.168.1.254
        netmask 255.255.255.0
        broadcast 192.168.1.255
        network 192.168.1.0
iface tun6to4 inet6 v4tunnel
        address `printf "2002:%02x%02x:%02x%02x:1::1" \`6to4 eth0 | tr . " "\``
        netmask 64
        gateway ::192.88.99.1
        endpoint any
        local `6to4 eth0`
        up ip route add `printf "2002:%02x%02x:%02x%02x:2::/64" \`6to4 eth0 | tr . " "\`` dev eth1
        down ip route del `printf "2002:%02x%02x:%02x%02x:2::/64" \`6to4 eth0 | tr . " "\`` dev eth1

IPv4:
- eth0: via DHCP vom ISP; Interface startet automatisch
- eth1: 192.168.1.254/24, intern; Interface startet automatisch

IPv6:
- tun6to4 (Host, Netz), wie im Vorwort erwähnt:
2002:XXXX:XXXX:0001:0000:0000:0000:0001
FFFF:FFFF:FFFF:FFFF:0000:0000:0000:0000

Also 2002:XXXX:XXXX:1::1/64, wobei XXXX:XXXX der IPv4-Anteil des Interfaces eth0 ist; Interface startet 5 Sekunden nachdem eth0 gestartet wurde, um eth0 Zeit zu geben, eine IPv4 via DHCP zu requesten.

Route:
Zu sehen ist, dass nachdem Interface tun6to4 gestartet wurde, die Route für die Clients in das IPv6-Internet gesetzt wird. Selbstverständlich ist diese Option Pflicht, schließlich befinden sich die Clients in einem anderen Subnetz als der Router.

Was ist ::192.88.99.1?

::192.88.99.1 bzw. 2002:c058:6301:: ist eine Anycast-Adresse, die uns das nächste/am schnellsten antwortende 6to4 Relay mitteilt.
Klingt ungewöhnlich, wenn man vorher noch nie mit IPv6 gearbeitet hat. Hat aber alles seine Richtigkeit.
Um herauszufinden, welcher Relay gerade der nächste ist, kann ich diesen tracen:

1
traceroute 192.88.99.1

Mir antwortet as6939.dus.ecix.net. Da Unitymedia für Neukunden (so mein letzter Stand) auch nativ IPv6 im Dual-Stack Verfahren anbietet, gibt es dort wohl keine eigenen Relays.

Konfiguration der SLAAC

Zuerst wird der Server zum IPv6-Router promoviert:

1
sudo nano /etc/sysctl.conf

Folgende Zeile hinzufügen/auf „1″ setzen:

1
net.ipv6.conf.all.forwarding=1

„Scharf schalten“:

1
sudo sysctl -p

Fortan ignoriert der Server SLAAC für sich selbst, konfiguriert sich also nicht selber automatisch. Logisch.

Damit an die Clients die Konfiguration ausgegeben werden kann, muss der Server sich im Netzwerk als IPv6-Router ausgeben. Das kann durch „radvd“ eingestellt werden:

1
sudo apt-get install radvd

Der Router Advertisement Daemon (radvd) startet nach der Installation durch die fehlende Konfiguration nicht automatisch, daher erstelle ich diese:

1
sudo nano /etc/radvd.conf

Der Inhalt: eth1 ist das Interface, das die physische Verbindung zu den Clients hat, eth0 (weiter unten) mein getunneltes Interface mit der öffentlichen IPv4-Adresse.
prefix 0:0:0:2::/64 bezeichnet das IPv6-Subnetz meiner Clients. Wie beschrieben wähle ich hier die „2″ im vierten Block. Im Subnetz 0:0:0:1::/64 („1″ im vierten Block) befindet sich der Router, das spielt hier keine Rolle.

1
2
3
4
5
6
7
8
9
10
11
interface eth1
{
  AdvSendAdvert on;
  MaxRtrAdvInterval 30;
  prefix 0:0:0:2::/64
  {
    Base6to4Interface eth0;
    AdvValidLifetime 300; 
    AdvPreferredLifetime 120;
  };
};

Wichtig: „AdvSendAdvert on“ sagt dem Netz, dass der Server ein Router ist.
Eine Beschreibung der Optionen und weitere Einstellungen finden sich hier: http://linux.die.net/man/5/radvd.conf

Der Dienst kann gestartet werden, nachdem der Tunnel eingeschaltet wurde:

1
2
sudo ifup tun6to4
sudo service radvd start

Clients prüfen

Ich wähle als Client einen PC mit Windows 7. IPv6 ist installiert und aktiviert.
Die Verbindung hat sich sofort automatisch konfiguriert:

Windows 7 mit IPv6

Windows 7 mit IPv6


Zu sehen ist, dass die Local Link Adress als mein IPv6 Gateway eingetragen ist, was korrekt ist.
Diese Adresse ist weniger eine IP. Eher vergleichbar ist sie mit einer MAC-Adresse. Sie setzt sich auch aus dieser zusammen.

Hier ein Beispiel:
- MAC-Adresse 00:11:22:33:44:55
Jetzt der mathematische Teil. Ich nehme den ersten Block („00″), schreibe ihn binär nieder und invertiere den siebten Bit:
Hex „00″ ergibt binär „0000 0000″. Der siebte Bit wird invertiert: „0000 0010″. Zurück zu Hex ergibt das „02″.
Die veränderte MAC-Adresse lautet also: 02:11:22:33:44:55. Dem wird nun das Prefix FE80::/64 vorangestellt, was zu diesem (lokalen!) Zweck definiert ist. In der Mitte füge ich FFEF ein:
FE80:0000:0000:0000:0211:22FF:FE33:4455

Wer sich schon mal die Frage stellte, wofür die „Privacy Extension“ des IPv6 da ist, hat die Antwort nun gefunden. In einem nativen IPv6-Netzwerk möchte (fast) keiner seine MAC-Adresse verteilen.
Das spielt in diesem Artikel aber keine Rolle und ist hier nur sehr schwach und oberflächlich zum Verständnis beschrieben. :)

Getestet werden kann im Anschluss noch mit einem Ping auf „ping ipv6.google.com“.
Einen besonderen IPv6 DNS-Server brauche ich hierfür nicht.

Ping ipv6.google.com

Ping ipv6.google.com

Sicherheit!

IPv6 verzichtet im Gegensatz zu IPv4 auf NAT.
Rufe ich die Seite ipv6.whatismyv6.com auf, wird meine vom Router vergebene Adresse angezeigt. Nicht die von dem Router selber.
Grund ist das von IPv6 verwendete Peer-To-Peer Verfahren.
Der Router leitet die Pakete natürlich trotzdem an die Clients weiter, daher findet das altbekannte „iptables“ weiterhin Verwendung. Allerdings in Form von „ip6tables“.
Waren die Clients des klassischen NAT-Routers schon durch die Maskierung relativ sicher vor Angriffen aus dem Internet, darf mit IPv6 auf keinen Fall die Konfiguration/Absicherung via ip6tables vergessen werden.
Das Vorgehen lässt sich beinahe 1:1 übertragen. Ich werde bei Zeit entsprechende Beispiel nachliefern.

PDF-Dateien sind immer eine Sache, ich persönlich nutze sie sehr gerne zum Dateiaustausch, da man kaum auf kompatible Programme achten muss. Und selbst in Zeiten von DSL muss man manchmal auf die Dateigröße achten, besonders, wenn eine PDF-Datei, die ein einziges kleines Bild enthält, über 4MB groß wird.

Mit Ghostscript gibt es im Terminal mit einem einzigen Befehl die Möglichkeit, den Speicherbedarf zu verringern (und natürlich die Qualität zu vermindern):

gs -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/screen -sOutputFile=output.pdf input.pdf

Als Setting-Parameter, der der Qualitätseinstellung dient, können verschiedene Profile angegeben werden, d.h. neben screen gibt es auch die qualitativ immer besseren Profile ebook, printer und prepress. Im anfangs erwähnten Beispiel konnte ich die PDF-Datei mit einem Farbbild mit der Qualitätseinstellung ebook von über 4MB auf 60KB verkleinern – und sehe am Monitor trotz über 100%iger Vergrößerung keinen Unterschied, wahrscheinlich weil das Bild nicht in voller Größe abgebildet wird, aber intern in voller Auflösung eingebettet ist.

Je nachdem wie man PDF-Dateien erstellt (Export aus LibreOffice, Drucken via PDF-Drucker) kann man sicher in die Situation kommen, etwas Speicherplatz zu sparen – man kann dann auch mit dem Profil prepress oder printer experimentieren.

6. Februar 2014

Ich habe mir überlegt dass ich nach und nach Sachen bestelle und wenn ich sie für Listen fähig halte sie euch mit Fotos hier vorzustellen. Dabei werde ich natürlich auch ins Detail gehen. 😉 Diesen Monat werden auch gleich die ersten Sachen bestellt sodass es diesen Monat direkt mit der Vorstellungsreihe losgehen kann. 🙂
Als Lieferant nutze ich Reichelt da mir dieser am besten gefällt. Ihr denkt jetzt vielleicht ich hätte Partnerverträge mit Reichelt und Fritzing doch da liegt ihr Falsch. Ich schlage hier nur Unternehmen/Projekte vor die mir persönlich am besten gefallen und die ich ohne bedenken weiterempfehlen kann. 🙂

Ich habe mir überlegt demnächst ein paar Experimente mit meinem Raspberry PI zu gestalten und hier darüber zu berichten. Für alle die nicht wissen was ein Raspberry PI ist habe ich hier ein Foto von meinem Raspberry PI.

20140206-114039.jpg

Wer jetzt vermutet dass er einen sehr kleinen Computer auf dem Foto sieht liegt Richtig. Der Raspberry PI gehört zu den Einplatinen Computern was soviel heißt dass der ganze Computer auf einem einzigem PCB aufgebaut ist. Der Raspberry PI gehört zweifellos zu den bekannteren Einplatinen Computern. Zusätzlich hat er noch eine kleine Leiste mit Pins die man GPIO Pins nennt. Mit diesen Pins kann der Nutzer über Programmiersprachen wie beispielsweise Python direkt interagieren. Durch die Portierungen einiger Linux Distributionen und die dadurch Leicht umsetzbare Funktion mit den GPIO Pins eröffnet sich ein nahezu unbegrenztes Spektrum von Möglichkeiten. Und um euch ein paar Ideen zu zeigen werde ich demnächst einige Projekte mit dem PI hier vorstellen.

Wer jetzt schon Ideen hat kann diese gerne mit einem Kommentar mitteilen oder er schreibt mir eine EMail an hq@devdiary.org 🙂 Natürlich nenne ich eure Namen außer ihr wünscht Anonym zu bleiben. 😉

Damit ihr alle Projekte mit dem Raspberry PI geordnet lesen könnt richte ich dafür eine neue Kategorie namens „PIProjekt“ ein. 🙂

Tipp: Für einen ersten Einblick und für den Kauf von Raspberry PI sowie Zubehör gibt es bei Reichelt eine Seite mit Informationen nur für den Raspberry PI.

5. Februar 2014

Phil hat vor ein paar Tagen einen Blogpost veröffentlicht, in dem er erklärt, wann er noch Google Dienste nutzt und welche Alternativen er inzwischen gefunden hat.

Das hat mich auch die Idee gebracht, auch einmal über mein Verhältnis zu Google zu schreiben und Alternativen aufzuzeigen. Vielleicht ist für euch ja auch neues dabei ;) Eines vorweg: Ganz ohne Google komme ich (noch?) nicht aus.

Die Google Suche

Keine andere Suchmaschine ist so bekannt und erfolgreich wie die Google Suche. Damit ist Google schließlich auch groß geworden. Kein Wunder also, dass heute fast niemand mehr auf die Suche verzichten will, die von Jahr zu Jahr mächtiger und intelligenter wird. Den exzellenten Service bezahlt der Benutzer leider mit Informationen über seine Person: Vorlieben, Interessen, Probleme, Krankheiten, Standort, und die üblichen anderen Identifikationsmerkmale wie IP, Browser, Betriebssystem etc kennt Google mit der Zeit. Je mehr und je länger man Google nutzt, desto genauer wird das Nutzerprofil, welches Google erstellt, um seine Suche, aber auch seine Werbung auf uns anzupassen. Das kann positive Auswirkungen haben – z.B. auf die Suchergebnisse – birgt gleichzeitig aber auch ein großes Missbrauchspotential.

Ich habe mich dafür entschieden, Google so wenige Daten zukommen zu lassen, wie mit meinem Gewissen vereinbar ist. Speziell über die Suche erfährt Google so einiges über uns. Einige Zeit lang habe ich deshalb die alternative Suchmaschine DuckDuckGo genutzt. Sie hat sich speziell den Schutz der Privatsphäre auf die Fahre geschrieben und gibt an, keinerlei personenbezogene Daten zu erfassen. Sie besitzt zwar viele praktische Funktionen, die vor allem Nerds und Geeks begeistern dürften – die Suchergebnisse im täglichen Gebrauch waren allerdings nicht besonders zufriedenstellend. Vor allem Ergebnisse in deutscher Sprache waren weniger gut zu finden.

Von DuckDuckGo bin ich schließlich auf startpage.com gewechselt. Startpage.com ist so etwas wie ein Proxy vor der Google Suche. Suchbegriffe werden auf startpage.com eingegeben, von Google abgefragt und wieder auf der Startpage Seite angezeigt. Auf diese Weise ruft nicht der Benutzer selbst die Suchergebnisse ab, sondern ein Server, der noch von vielen anderen Usern benutzt wird. Ein persönlicher Bezug kann von Seiten Googles nicht mehr hergestellt werden.

Die Startpage Suche hat gut funktioniert, aber in Sachen Design muss dringend etwas geändert werden. Natürlich, Design ist nicht alles – aber so macht mir das Suchen im Internet keinen Spaß. Deshalb habe ich mich erneut nach einer Alternative umgesehen…

… und bin auf das Browseraddon “Disconnect Search” gestoßen. Das Addon funktioniert ähnlich wie Startpage: Suchergebnisse werden von Disconnect Servern abgefragt und wieder zurück zum Benutzer geleitet. Disconnect Search erlaubt es dem Benutzer aber, seine Suchmaschinen wie gewohnt aufzurufen und zu bedienen. In der Praxis heißt das: Einfach Google aufrufen, abschicken und Ergebnisse auf der Google Seite ansehen. Im Hintergrund arbeitet das Disconnect Search Addon und leitet die Suchanfrage an die eigenen Server weiter, statt sie direkt an Google zu schicken. Wer nicht auf das übersichtliche Google Design verzichten will und dennoch Wert auf seine Privatsphäre achtet, wird von Disconnect Search begeistert sein!

Das Addon nutze ich nach wie vor. In den letzten Tagen ist aber eine weitere Alternative hinzugekommen: Die Metasuchmaschine Searx, zu der ich auch schon eine Installationsanleitung für den eigenen Server geschrieben habe. Auch sie funktioniert wie ein Proxy, kann aber auf dem eigenen Rootserver gehostet werden. Sie fragt aber nicht nur eine Suchmaschine nach Ergebnissen, sondern gleich mehrere – ganz individuell einstellbar. Auf der Ergebnisseite erscheinen demnach nicht nur Ergebnisse von Google, sondern auch von Bing, Yahoo, Twitter, Flickr, und vielen mehr. Das Design ist noch nicht ganz ausgereift, aber erträglich.

Searx befindet sich aktuell noch mitten in der Entwicklung. Wer will, kann meine Searx Installation unter https://search.trashserver.net nutzen.

Android

Seit 1 1/2 Jahren besitze ich ein Smartphone von Samsung – das Galaxy S3. Damit war auch völlig klar, dass ich Google weiter in mein Privatleben vordringen lassen würde. Pures Android ist kein Problem, aber durch die Verknüpfung von Googles Betriebssystem mit einem Google Account gibt man eine Menge sensibler Daten in fremde Hände. Termine, Kontaktdaten, installierte Apps, Nutzungsverhalten, Infos zur Hardware, Telefonnummer, Position und vieles mehr.

Einziger Ausweg: Das Telefon nicht mit einem Google Account verknüpfen. Das beinhaltet aber leider auch ein paar Einschränkungen: Apps aus dem Play Store können nicht mehr heruntergeladen und genutzt werden. Stattdessen muss man mit dem viel kleineren Angebot der alternativen App Stores auskommen. An dieser Stelle sei der größte Android App Store für Open Source Apps genannt: F-Droid.

Auf meinem Galaxy S3 läuft seit einem Jahr CyanogenMod, eine Android ROM, welche nicht direkt von einem großen Hersteller stammt. Der Kern besteht aus einem Stock-Android, also einem Android, wie es von Google kommt. Daran wurden einige Anpassungen und Verbesserungen durchgeführt, auch bezüglich des Schutzes der Privatsphäre. Standardmäßig kommt CyanogenMod ohne Google Apps und damit auch ohne Google Kontenverbindung und Google Play Store. Wer sein Handy so betreibt, kann es also “Google-frei” nennen.

Obwohl mir ein Google-freies Smartphone lieber wäre, habe ich mich dafür entschieden, die Google Apps zu installieren und ggf. etwas weniger Privatsphäre in Kauf zu nehmen. Ich habe in der Vergangenheit relativ viele Apps und viel Musik gekauft, die ich jetzt nur ungern “in die Tonne treten” würde. Ich denke, das ich verständlich.

Um Google trotzdem möglichst wenig Daten über mich in den Rachen zu werfen, habe ich die automatische Synchronisierung mit meinem Google Konto ausgeschaltet. Das heißt: Kalender, Fotos, Kontakte, App-Daten und vieles mehr wird nicht mehr mit Google-Servern abgeglichen, sondern bleibt auf meinem Gerät.

Wenn ich eine App auch im F-Droid Store finde (und das kommt häufig vor), lade ich sie von dort herunter. Es geht Google nämlich nichts an, welche Apps ich nutze. Um Termine, Kontakte und Dateien mit meinen anderen Geräten abzugleichen nutze ich meine eigene Cloud (OwnCloud).

Cloud / Google Drive

Google Drive ist toll, Google Drive ist praktisch. Ich habe die Cloud einige Zeit lang getestet und war beeindruckt – zumindest von der Weboberfläche und dem Android Client. Für Linux gibt es nämlich nach wie vor keinen offiziellen Client von Google. Das hat das Interesse letztendlich getrübt und ich habe mich allgemein nach einer Möglichkeit umgesehen, meine eigene Cloud aufzubauen.

Das Open Source Projekt “OwnCloud” ist nach anfänglichen Schwierigkeiten inzwischen gut benutzbar und wird immer mächtiger. Über die OwnCloud Instanz auf meinem Server kann ich problemlos Dateien, Kontakte, Termine und Aufgaben synchronisieren, sodass ich nicht mehr auf externe Clouddienstleister angewiesen bin. Auch das Teilen von Dateien und Ordnern mit der Öffentlichkeit ist über die Weboberfläche möglich – genauso wie ein öffentlicher Upload zum Einsammeln von Dateien.

Für OwnCloud gibt es sowohl einen quelloffenen Linux-Client als auch eine App für Android im F-Droid Store.

Google Docs

Besonders beeindruckt bin ich von Google Docs, auch wenn ich das Officepaket von Google in der Vergangenheit nur selten genutzt habe. Für einfache Aufgaben reicht es vollkommen aus. Tabellenkalkulation, Textverarbeitung, Präsentation – alles ist möglich. Vor allem die Möglichkeit, zusammen mit anderen Menschen gleichzeitig an Dokumenten lässt Google Docs aus der Menge der Officesoftware heraus stechen.

Auch für Google Docs gibt es Alternativen. Diese sind jedoch nicht annähernd so ausgereift und leicht zu bedienen wie die Produkte von Google. Aktuelle OwnCloud Versionen beherrschen zwar die kollaborative Bearbeitung von Textdokumenten nach ODF Standard – mehr als einfache Textverarbeitung ist aber noch nicht drin.

Als zweite, beliebte Alternative sei Etherpad genannt. Es handelt sich dabei um ein sehr spartanisches Textverarbeitungssystem, in das sich vor allem zum Zusammentragen von Informationen zu Veranstaltungen wie z.B. Demonstrationen eignet. Die Nutzer können sich ohne Account verbinden und jeder ist in der Lage, das angezeigte Dokument live zu verändern. Erweiterte Formatierungswerkzeuge gibt es aber ebenso wenig wie die Möglichkeit, andere Inhalte (z.B Grafiken) einzubinden.

Der große Vorteil von Etherpad und OwnCloud liegt jedoch wieder darin, dass es sich bei diesen um Open Source Software handelt, die auf dem eigenen Server installiert werden kann. Vertrauliche Daten bleiben in Reichweite und werden nicht aus der Hand gegeben. Google Docs nutze ich immer seltener und weiche stattdessen auf OwnCloud Documents oder mein Etherpad unter http://pad.trashserver.net aus.

YouTube

… gehört seit einigen Jahren auch zum Google-Imperium. Für YouTube gibt es aber nach wie vor keine ernsthaften Alternativen. Auch wenn YouTube inzwischen gewaltig nervt und man den Eindruck bekommt, Nutzer sollten durch zahlreiche Veränderungen der Nutzeroberfläche absichtlich verschreckt werden – ich bleibe dort erst einmal.

Google Analytics

Von Googles Webanalyse-Software “Google Analytics” habe ich mir vor etwa einem Jahr komplett verabschiedet. Der Gedanke, die Daten meiner Besucher auf diese Weise an Google zu “verkaufen” war mich sehr unangenehm, sodass ich für diesen Blog inzwischen die selbst gehostete Open Source Alternative “Piwik” nutze – und das guten Gewissens. IP Adressen werden anonymisiert und das Tracking ist im Impressum frei abschaltbar – ohne jegliche Nachteile für den Besucher. DNT (No Not Track) – Anweisungen vom Browser des Besuchers werden berücksichtigt.

Piwik funktioniert ebenso gut wie Google Analytics und ich habe die volle Kontrolle über die gesammelten Datensätze, die auf meinem eigenen Server liegen und diesen nicht verlassen.

Google Chrome

Den Browser von Google habe ich nie wirklich ausgiebig genutzt – nur hin und wieder neben Firefox und zum Entwickeln bzw. Prüfen von entwickelten Webseiten. Ich muss zugeben, dass Chrome sehr schnell arbeitet und an sich ein guter Browser ist, aber auch hier plagt mich wieder das Gewissen. Will ich wirklich, dass Google seine Finger im Spiel hat, wenn ich mir durch das Internet bewege?

Seit ich einen PC selbstständig bedienen kann ist Firefox mein absoluter Favorit. Schnell, einfach anpassbar und zuverlässig. Abstürze und Performanceprobleme sind oft Folgen von zu vielen oder schlecht programmierten bzw. ressourcenhungrigen Addons. Ich habe nur sehr selten Probleme mit Firefox – wieso sollte ich also den Browser eines Unternehmens nutzen, das Interesse an möglichst genauen Nutzerprofilen hat? Mein Firefox überwacht mich nicht, wird entwickelt von der starken, gemeinnützigen Mozilla Organisation und funktioniert, wie er soll.

Google Chrome hat zwar seinen Ursprung im Open Source Projekt “Chromium” (Chromium gibt es auch als Browser) aber so ganz traue ich der Sache nicht, weil Google auch in der Chromium Entwicklung sehr mächtig und einflussreich ist. Lieber unterstütze ich die Mozilla Foundation und ihre zahlreichen Projekte.

Google Plus

Den Facebook-Konkurrenten Google Plus verwende ich seit der Beta-Phase. Damals war G+ noch aufgeräumt, schnell, einfach und man bekam was man haben wollte: Eine Plattform zum Kommunizieren.

Inzwischen hat sich das Image von Google Plus allerdings ins Gegenteil gekehrt: Google versucht seit Ende der Betaphase zwanghaft, seine Nutzer dazu zu bringen, G+ zu nutzen. YouTube ist ohne G+ Account beispielsweise nur noch eingeschränkt nutzbar und überall wird man nahezu genötigt sich einen Account zu erstellen bzw. G+ zu aktivieren und zu nutzen.

Die Benutzeroberfläche ist inzwischen ein Graus. Unaufgeräumt, bis zum Rand vollgepackt mit Javascript, langsam, träge. Mal funktioniert hier was nicht, mal da. Dann bleiben die Hovercards wieder hängen. Dann geht der Benachrichtigungszähler nicht. Firefox-User werden systematisch diskriminiert. Der Chat hängt sich auf.

Dazu kommt noch die extreme Aufdringlichkeit. Ständig irgendwelche Vorschläge und Dinge, die ich tun soll. Nein, es interessiert mich nicht, dass ein Bekannter für einen Beitrag +1 gegeben hat! Es gibt so viele gute Gründe, G+ zu verlassen.

Trotzdem habe ich noch einen Account. Dafür gibt es eigentlich nur zwei Gründe:

  1. Auf G+ bin ich Administrator einer deutschsprachigen Ubuntu-Community
  2. Ich habe kein Facebook und kann auf G+ wenigstens mit meinen engsten Freunden kommunizieren. Für Diaspora kann ich sie leider nicht begeistern.

… also wird G+ wohl noch einige Zeit bei mir nebenher laufen. Neben Diaspora*, wo ich die meiste Zeit verbringe.

 

Jetzt seid ihr dran! Wie steht ihr zu Google? Vertraut ihr dem Konzern eure Daten an oder hostet ihr lieber selbst? Welche Alternativen nutzt ihr?

 

Ich überlege derzeit ob ich eine kleine Liste mit Bauteilen, Werkzeugen usw. die man braucht um ein kleines Lab aufzubauen erstellen soll. Ich habe zwar schon etwas an Erfahrung gesammelt da ich mich ständig für mein Lab umschaue jedoch sollte meine Liste dann nur als Leitfaden genommen werden da man selbst dass Auswählen sollte was für einen passend ist. Ich muss dann auch noch überlegen in welcher Form ich die Liste hier veröffentlichen sollte. Am Besten wäre dafür eine eigene Seite im Blog die man über dass Menü erreichen kann da die Liste sonst nach kurzer Zeit für neue Leser schwer findbar wird. Auf jeden Fall kann ich für Bauteile schon mal Reichelt empfehlen da dort auch kleinere Mengen sehr günstig sind und die Qualität Top ist. Für Projekte und als Hauptsoftware empfehle ich Fritzing. Sobald ich Neuigkeiten zu der Überlegung habe berichten ich sie hier. 🙂

Ich habe mir überlegt dass ich am besten erst einmal einen Taschenrechner konstruiere bevor ich gleich einen ganzen Computer konstruiere. Ein Taschenrechner ist im Grunde ein Abgespeckter Computer der nur (je nach Funktionsumfang) vorgegebene Funktionen ausführt. Zum Beispiel dass Addieren lässt sich nach ersten Überlegungen recht einfach mit Schaltungen realisieren. 😉 Sobald dass geschafft ist habe ich auch ein erstes Gefühl für den Umfang der Schaltung für den späteren Computer.

Da PHP 5.5 mittlerweile seit fast einem Jahr auf dem Markt ist und erhebliche Performance und Security bringt, sollte man sich mit einem Update von älteren PHP Versionen auseinandersetzen. So funktioniert die Installation bzw. ein Upgrade unter Debian Wheezy.

Warum sollte ich PHP 5.5 installieren?

PHP 5.4.0 erschien am 01 März 2012, was schon ziemlich lange her ist. Allerdings wird 5.4 nach wie vor supported und es werden weiterhin Bugfixes und Securityupdates zur Verfügung gestellt.

PHP 5.5.0 erschien am 20. Juni 2013, und ist mittlerweile bei Version 5.5.8 angekommen. Eine der größten Neuerungen ist wohl die Integration des Bytecode-Cache Zend OPcache (ZendOptimizer+) direkt in PHP 5.5. Die Geschwindigkeit von PHP wurde dadurch erhöht. Es spricht also so einiges dafür, auf die neueste PHP Version upzudaten, was ich mittlerweile auch nur wärmstens empfehlen kann, da wir bereits gute Erfahrungen mit PHP 5.5 gemacht haben.

Installation von PHP 5.5 unter Debian Wheezy

Da ich normalerweise kein großer Fan von Drittrepositories bin und somit mein System immer recht sauber halte, muss ich hier aber über meinen Schatten springen. Die Debian Wheezy Standardrepositories haben derzeit die PHP Version 5.4.4 inkludiert, welche leider etwas veraltet ist.

Die Jungs von Dotdeb sind da sehr viel aktiver und bieten bereits PHP 5.5.8 an und sind im Bereich Webhosting um Jahre schneller als die Debian Maintainer. Dotdeb ist auch der einzige Mirror, welchen ich ausser den Debian Mirrors verwende. Natürlich gäbe es noch den alten Weg, sodass man PHP selbst kompiliert. Aber das ist für Anfänger absolut ungeeignet, deshalb zeige ich hier den Weg über die dotdeb Mirrors.

Um den dotdeb Mirror hinzuzufügen wird die /etc/sources.list…

vi /etc/apt/sources.list

…und um folgende zwei Einträge erweitert:

deb http://packages.dotdeb.org wheezy-php55 all
deb-src http://packages.dotdeb.org wheezy-php55 all

Anschließend wird noch der GnuPG key heruntergeladen und importiert.

wget http://www.dotdeb.org/dotdeb.gpg
cat dotdeb.gpg | apt-key add -

Ein apt-get update aktualisiert nun die Paketlisten (in diesem Schritt wird noch nicht installiert, keine Sorge)

apt-get update

Nun wird die eigentliche PHP 5.5 Installation durchgeführt

apt-get install php5

Upgrade von PHP 5.4 auf 5.5 unter Debian Wheezy

Ein Upgrade beinhaltet natürlich immer Risiken, ihr solltet daher euer System auf jeden Fall sichern und vielleicht zusätzlich die Anwendungen vorab mit PHP 5.5 testen, da einige Funktionen deprecated sind. Im ersten Schritt sollten wir uns die derzeitige installierte PHP Version anzeigen lassen:

php -v

Ausgabe:

PHP 5.4.4-14+deb7u7 (cli) (built: Dec 12 2013 08:42:07)
Copyright (c) 1997-2012 The PHP Group
Zend Engine v2.4.0, Copyright (c) 1998-2012 Zend Technologies

Bei einem aktuellen Debian Wheezy System (Stand: Jan 2014) sollte dabei obige Ausgabe erscheinen. Die verwendete PHP Version ist also 5.4.4-14. Wollt ihr nun direkt ein Upgrade von PHP 5.4 auf 5.5  durchführen, so reicht es ebenfalls, oben genannte Schritte (Siehe installation), auszuführen. Paketabhängigkeiten werden natürlich sauber aufgelöst und somit werden auch alle verwendeten PHP Extensions auf den neuesten Stand gebracht bzw. mit installiert. Ein einfaches apt-get install php5 reicht zum Upgrade:

apt-get install php5

Neue Version anzeigen lassen:

php -v

Ausgabe:

PHP 5.5.8-1~dotdeb.1 (cli) (built: Jan 12 2014 02:22:36)
Copyright (c) 1997-2013 The PHP Group
Zend Engine v2.5.0, Copyright (c) 1998-2013 Zend Technologies
    with Zend OPcache v7.0.3-dev, Copyright (c) 1999-2013, by Zend Technologies

Tipp: Wenn ihr die php5-dev Libraries verwendet bzw. benötig, so solltet ihr diese ebenfalls installieren (apt-get install php5-dev)

Es empfiehlt sich nach dem Update die Apache Erros Logs durchzusehen, ob irgendwelche Probleme auftreten.

Downgrade von PHP 5.5 auf PHP 5.4

Falls Probleme auftreten ist es ratsam wieder auf die alte PHP 5.4 Version zu gehen. Dazu werden zuerst die dotdeb mirros aus /etc/apt/sources.list wieder entfernt oder auskommentiert. Anschließend müssen die installierten dotdeb Pakete entfernt werden. Mit folgendem Befehl werden alle dotdeb Pakete aufgelistet:

dpkg -l |grep dotdeb

Die Ausgabe zeigt in meinem Fall folgendes an:

ii  libapache2-mod-php5                5.5.8-1~dotdeb.1              amd64        server-side, HTML-embedded scripting language (Apache 2 module)
ii  php5                               5.5.8-1~dotdeb.1              all          server-side, HTML-embedded scripting language (metapackage)
ii  php5-cli                           5.5.8-1~dotdeb.1              amd64        command-line interpreter for the php5 scripting language
ii  php5-common                        5.5.8-1~dotdeb.1              amd64        Common files for packages built from the php5 source
ii  php5-curl                          5.5.8-1~dotdeb.1              amd64        CURL module for php5
ii  php5-gd                            5.5.8-1~dotdeb.1              amd64        GD module for php5
ii  php5-mysql                         5.5.8-1~dotdeb.1              amd64        MySQL module for php5

Diese Module werden nun alle entfernt:

apt-get remove libapache2-mod-php5 php5 php5-cli php5-common php5-curl php5-gd php5-mysql

Jetzt werden die entsprechenden Pakete (welche ihr benötigt) wieder von den Debian Standard Mirrors installiert:

apt-get update
apt-get install libapache2-mod-php5 php5 php5-cli php5-common php5-curl php5-gd php5-mysql

PHPinfo für PHP 5.5 anzeigen lassen:

Um die Einstellungen für PHP zu überprüfen, ist es ratsam eine phpinfo Datei am Webserver anzulegen. zb: phpinfo.php

vi /var/www/sysadminslife.com/phpinfo.php

Mit folgendem Inhalt:


Wenn die Datei dann im Browser aufgerufen wird sollte sie eine ähnliche Ausgabe wie diese anzeigen:

PHP 5.5 phpinfo


SysADMINsLife auch auf Facebook | Google+ | Twitter | Youtube | Google Currents
Copyright © 2009-2015 - Der Feed ist nur für den persönlichen, nicht für den gewerblichen Gebrauch bestimmt und Inhalt des Angebotes von www.sysadminslife.com

Mit Firefox 17 hat Mozilla die sogenannte SocialAPI in Firefox eingeführt – eine Schnittstelle, über welche es Drittanbietern möglich ist, Funktionen des jeweiligen Dienstes direkt aus Firefox heraus zu nutzen. Die bekannteste Integration dürfte dabei die von Facebook sein. Nun gibt es mit Delicious und Saavn zwei weitere Dienste.

Wer keine Neuigkeit von Facebook verpassen, Seiten mit seinen Freunden teilen oder von jedem Tab im Browser aus die Möglichkeit haben möchte, mit seinen Facebook-Kontakten zu chatten, integriert über die SocialAPI von Firefox den Messenger für Firefox. Genauso gibt es auch Integrationen von Cliqz, Mixi in Japan und Weibo in China. Auch Microsoft war mit MSN Now dabei. Da dieser Dienst aber mittlerweile eingestellt wurde, gibt es damit auch entsprechende Firefox-Integration nicht mehr.

Nun kommen zwei weitere Dienste dazu. Freunde des Social Bookmarkings freuen sich über eine Integration von Delicious. Delicious erlaubt das online Anlegen von Lesezeichen. Diese können mit Tags versehen sowie kommentiert und außerdem öffentlich geteilt werden. Saavn ist ein kostenfreier Streaming-Dienst für indische Musik und Bollywood-Songs. Deren SocialAPI-Erweiterung ermöglicht das Entdecken und Teilen von Musik dieses Dienstes.

4. Februar 2014

Sechs Wochen sind wieder rum, Zeit für neue Firefox- und Thunderbird-Versionen. Mozilla veröffentlicht Firefox 27, Firefox Mobile 27, Firefox ESR 24.3 sowie Thunderbird 24.3.

Mozilla hat heute planmäßig neue Versionen von Firefox und Firefox Mobile veröffentlicht. Die Updates werden wie immer allen Nutzern insbesondere aufgrund der geschlossenen Sicherheitslücken nahegelegt. Konkret veröffentlicht Mozilla Firefox 27.0 für Windows, OS X und Linux sowie Firefox Mobile 27.0 für Android. Außerdem wird in Kürze Firefox ESR 24.3 sowie der E-Mail-Client Thunderbird in der Version 24.3 erscheinen.

WebRTC mag für den ein oder anderen von euch nichts neues sein – schließlich gibt es das schon etwas länger. Einen ersten Protokollentwurf gab es schon im Oktober 2011. Trotzdem will ich euch hier kurz einen sehr praktischen Service vorstellen, der einfache Videokonferenzen ohne zusätzliche Browserplugins oder andere Software ermöglicht – vorausgesetzt natürlich, ihr surft über einen aktuellen Firefox oder Chrome Browser.

Palava.tv” heißt der deutsche Dienst, der eigentlich dazu dienen sollte, die WebRTC Technik bekannter zu machen und zu verbreiten. Das ganze funktioniert so:

Ihr besucht die Website und eröffnet eine neue Videokonferenz. Dabei müsst ihr der Website den Zugriff auf Kamera und Mikrofon gestatten. Euer eigener Videostream wird live angezeigt. Oben rechts findet ihr nun einen speziellen Link, der ihr an alle anderen Teilnehmer der Konferenz weitergeben könnt. Wer an der Konferenz teilnehmen darf, bestimmt ihr allein durch die Weitergabe dieses Links.

Jeder weitere Teilnehmer, der den Link erhalten hat, braucht diesen nur zu öffnen, Palava.tv ebenfalls Zugriff auf die Kamera zu gestatten und die Konferenz kann beginnen. Einfacher und schneller geht nicht!

Palava.tv

Zur einfachen Handhabung kommen noch weitere Vorteile gegenüber herkömmlichen Videokonferenz-Systemen:

  • Peer-2-Peer Verbindung: Der Video- und Audiostream wird direkt von Browser zu Browser übertragen und muss nicht von Servern verarbeitet werden. Ein Server ist nur nötig, um die Browser miteinander bekannt zu machen und eine Sitzung zu initiieren – alles weitere läuft ohne Streamingserver.
  • Video- und Audiostream werden verschlüsselt, sodass privates privat bleibt.
  • WebRTC ist selbstverständlich quelloffen und frei. Jeder kann seine eigene WebRTC-basierte Anwendung schreiben – so ist z.B. auch die Software hinter palava.tv Open Source Software (GitHub)
  • Prinzipiell keine Benutzerkonten nötig. Niemand muss persönliche Daten preisgeben, um an einer Videokonferenz teilzunehmen.
  • Keine weitere Software nötig: Moderne Browser beherrschen WebRTC bereits und benötigen keine weitere Software, wie z.B. Browserplugins oder Addons.
  • Plattformunabhängigkeit: … alles was man braucht, ist ein moderner Browser… und die gibt es mittlerweile für alle üblichen Plattformen. Eine Konferenz über das Smartphone? Kein Problem!
  • Keine Begrenzung der Teilnehmerzahl: Theoretisch lassen sich beliebig viele Teilnehmer miteinander verbinden.
  • Anbieterunabhängigkeit: Mittlerweile gibt es schon einige WebRTC Anbieter. Sollte doch einmal jemand Lust haben, sich einen eigenen Server aufzusetzen, kann er das tun. Palava.tv ist beispielsweise Open Source Software. Man ist nicht an einen Anbieter gebunden.

Ein anderer empfehlenswerter WebRTC Anbieter ist übrigens vline.com .

Das Prinzip von WebRTC finde ich genial – Ohne mich irgendwo registrieren zu müssen oder Software zu installieren, kann ich mich über das Internet mit Freunden unterhalten. Und das auch noch sicher. Wenn euch WebRTC und Palava.tv auch begeistern, erzählt euren Freunden davon!