Versionsverwaltung mit git

Wie so oft in diesem Blog sprechen wir natürlich über ein technisches Thema – und zwar geht es um Versionsverwaltung. Vornehmlich im Bereich Softwareentwicklung angesiedelt kann man damit seinen Quellcode verwalten. Warum braucht man dazu ein eigenes Programm? Man hat die Dateien ja da und kann ab und zu ein Backup machen, oder?

Ganz so einfach ist es doch nicht, denn man kommt mit dieser Vorgehensweise sehr schnell an seine Grenzen. Ein paar Beispiele: mit einer einfachen Dateiverwaltung wird es teilweise unmöglich, im Team zu arbeiten, weil es zwangsläufig dazu kommt, dass mehr als eine Person an der gleichen Datei arbeiten muss. Software ist NIE fertig, es wird immer wieder Änderungen oder Bugfixes geben. Was macht man, wenn man zu einer älteren Version zurück will oder nur mal die Unterschiede zwischen zwei Versionen vergleichen will? Verbreite ich meinen Quellcode sinnvoll, damit mein Opensource-Projekt aktive Mitstreiter bekommt und diese ihr Änderungen auch wieder zu mir zurückfließen lassen können? Diese Liste kann man beliebig erweitern, und es wird immer wieder herauskommen, dass eine Versionsverwaltung doch immer der elegantere Weg sein wird.

Das haben Entwickler ziemlich zeitig bemerkt und entsprechende Programme entworfen, die einen bei diesem Problem unterstützen. Heraus kamen Systeme wie cvs oder Subversion. Die sind schon ganz gut, haben aber immer ein großes Problem: sie brauchen einen Server. Und das veringert die Geschwindigkeit sehr deutlich. Hinzu kommt, dass Arbeit von Unterwegs erheblich erschwert wird, weil man nur bei einer Verbindung zum Server Zugriff auf die Historie einer Datei hat.

Was mich persönlich am meisten gestört hat, war der Umstand, dass die bestehenden Systeme nur sehr schlecht mergen – also zusammenführen mehrerer Änderungen in der gleichen Datei – können. Auch sehr unschön war das Branching – also das Anlegen eigener Entwicklungszweige.

Git ist hier äußerst robust und bekommt nur Probleme, wenn man wirklich die gleiche Zeile verändert. Entwickelt wurde das System von keinem anderen als Linux Torvalds, dem Erfinder von Linux. Ihm war die Verwaltung des Linux Quellcodes schon lange ein Dorn im Auge und am Markt gab es kein Tool, was seinen Ansprüchen genügte. Also entwickelte er ein entsprechendes System selbst – heraus kam git.

Die großen Vorteile: Die Repositories liegen lokal auf jedem Rechner, merge-Prozesse sind sehr schnell und auch sehr genau und das Anlegen von Branches sowie der Wechseln zwischen ihnen stellt kein Problem mehr dar. Es zeigt sich einfach, dass man viel autarker arbeiten kann, da man alle benötigten Daten auf seinem PC hat und erst dann mit dem Server kommunizieren muss, wenn man Commits übertragen oder Updates ziehen möchte. Sehr schön gelöst ist auch die Aufbewahrung der Meta-Daten. Liegt bei Subversion oder cvs in jedem Ordner ein Unterordner mit den Daten, so ist es bei git pro Repository nur ein einziger Ordner, und der liegt im Hauptverzeichnis des Projekts. Möchte man also Dateien versenden, so kann man diese direkt nehmen und muss nicht erst anfangen, jeden Ordner einzeln zu reinigen. Wer schon einmal ein Subversion Projekt von Meta-Daten befreit hat, weiß, wovon ich spreche 😉

Um meine Einleitung zu diesem Artikel noch zu relativieren: Man kann mit git und auch anderen Versionskontrollsystemen jede Art von Datei verwalten. Es gibt z.B. viele Grafiker, die ihre Projekte mit git verwalten, weil sie dann einfach in der Historie vor und zurück springen können. Selbst Backup-Lösungen kann man damit aufbauen. Am effizientesten funktionieren die Systeme aber noch immer mit reinen Textdateien.

Zum Thema Versionskontrollsysteme sei euch übrigens auch folgender Podcast sehr ans Herz gelegt:
CRE 130 – Verteilte Versionskontrollsysteme

Links
git

Paul Kalkbrenner in Afghanistan

Paule ist einer meiner Lieblings-DJs. Auch wenn Berlin Calling Schauspielerisch jetzt nicht unbedingt Grammy-Verdächtig war, so war der Film in Kombination mit dem Soundtrack echt ein Kracher. Auch so ist er ein sehr sympathischer Typ.

Die Bundeswehr hatte gegen Weihnachten die Überlegungen angestellt, wie die Truppe in Afghanistan aufgemuntert werden kann, denn ihr Einsatzende steht ja noch immer in den Sternen. Da wurde kurzerhand Herr Kalkbrenner engagiert, direkt vor Ort einen Gig zu geben. Und das tat er:

Man kann in den kurzen Interview-Szenen deutlich sehen, dass ihn das ganze nicht gerade kalt lässt. Trotzdem denke ich, dass es eine gute Erfahrung war, und vor allem die überaus positiven Reaktionen der Truppe zeigen auch, dass es eine gute Aktion war.

PS: man sollte sich so eine Kalkbrenner Party unbedingt mal reinziehen. Die Kombination aus Sound und Visuals ist sehr gelungen, und es macht extrem viel Spass, den Typen da hinterm Pult rumspringen zu sehen.

via baezol.de

[Quicktip] cgi Scripte mit Plesk

Am letzten Wochenende habe ich das erste mal in meinem Leben ein cgi Script verwendet. In Zeiten von php – welches im Prinzip auch cgi ist – braucht man derartige Tools einfach nicht mehr so wirklich. Der Vorteil ist aber ganz klar: cgi Programme sind schnell – sofern wir von c oder c++ sprechen. Es wird wohl kein php, ruby, python oder perl Script geben, welches mit einem sauber in C aufgesetzten cgi mithalten kann. Dafür hat man aber den Aufwand, dass man erst kompilieren muss, um das Programm verwenden zu können. Natürlich kann man aber auch alle weiteren Script- oder kompilierten Sprachen als cgi verwenden. Bei interpretierten Sprachen ist dies aber deutlich langsamer, als wenn man diese per Apache Modul betreibt, da sonst bei jedem Aufruf erst einmal der Interpreter initialisiert werden muss.

Egal, ich war dabei, cgit (ein grafisches Frontend für lokale git-Repositories) aufzusetzen – da kommt auch nochmal ein Blogeintrag zu. Nachdem ich mit der Compilierung und Installation durch war, legte ich in Plesk die Domain an, aktivierte in den Domaineinstellungen, dass cgi-Scripte unterstützt werden sollen – und dann stand ich da…

Einfach in den httpdocs Ordner der Domain werfen brachte nichts, dann war die Datei als Download verfügbar. Mir fiel dann schnell der cgi-bin Ordner auf, der sich in der Ordnerstruktur neben den httpdocs und httpsdocs Ordnern befindet. Nur wie ruft man diese auf? Nach etwas Probierarbeit kam ich dann drauf:

http://www.domain.de/cgi-bin/script.cgi

Eigentlich ganz einfach, aber naja 😉

Nachdem ich das herausgefunden hatte, lief mein Tool natürlich trotzdem nicht. Über die Console lief es wunderbar, nur eben nicht im Browser. Dann wurde mir klar, dass das nur noch mit Benutzerrechten zu tun haben kann – und so war es auch. Es ist wichtig (zumindest wenn man mit Plesk arbeitet), dass das cgi Script der Gruppe “psacln” gehört. Außerdem habe ich auch den Benutzer der Domain als Inhaber der Datei festgelegt, was aber wohl nicht zwingend notwendig ist.

[Quicktip] Mit OSX den Arbeitsspeicher aufräumen

Normalerweise sollte man in Sachen Speicherverwaltung OSX nicht in die Quere kommen, denn das macht es selbst ganz gut. Wem das nicht reicht, der sollte nicht rumspielen sondern einfach mehr RAM in das Gerät packen.

Aber was macht mein Mac OS denn so mit dem Arbeitsspeicher? Das System unterscheidet zwischen free, in-active und active RAM. Free erklärt sich selbst, active auch, aber was ist in-active? Das bedeutet einfach, dass wenn man ein Programm beendet, die Daten nicht aus dem Speicher gelöscht werden, sondern erstmal einfach drin bleiben. Startet man dieses Programm später wieder, dann besteht eine gewisse Möglichkeit, dass die Daten noch da sind und der Start somit wesentlich schneller durchgeführt werden kann.

Was ich in letzter Zeit beobachte: wenn viel Speicher als in-active markiert ist, dann dauern Programmstarts teilweise irgendwie länger. Um dem zu entgehen habe ich einfach öfter mal den Rechner neu gestartet, aber so eine richtige Lösung ist das auch nicht. Nun habe ich eben einen netten Hinweis gefunden:

purge

Einfach mal im Terminal “purge” eingeben, Enter drücken, kurz warten und schwups, schon ist der RAM aufgeräumt. Ob das nun sinnvoll ist werde ich beobachten, aber rein gefühlsmäßig ist das schon ein nettes Tool.

via electrictoolbox.com

The Duty Calls – virales Gamemarketing mal anders

Electronic Arts, das Entwicklerstudio People Can Fly und Epic Games haben hier mal echt was geiles fabriziert: einen Shooter, der die ganze Szene, vor allem aber die Call of Duty Reihe auf den Arm nimmt. Schaut es euch, da sind ein paar Lacher garantiert 😉

Richtig gut sind die Achievements, die Zwischensequenzen und natürlich der Endgegner.

Zwar haben die Jungs mit ihrer versteckten Kritik schon recht, aber eines muss man festhalten: es gibt kaum eine Spielreihe, die derart fesselnd wie Call of Duty ist. Da müssen andere erstmal ran kommen. EA hat mit dieser Provokation die Messlatte sehr hoch gesetzt, denn nun müssen sie einen Shooter liefern, der auf all diese Features verzichtet. Man darf sehr gespannt sein, denn der Name lässt einiges erwarten: Bulletstorm.

via golem.de

interaktive Verpackungen – ein Anfang

Sollte das die Zukunft der Produktverpackungen sein?

Bereits vor einiger Zeit wurde orakelt, dass es bald druckbare Displays gibt, die kurze Animationen wiedergeben können. Prinzipiell finde ich derartige Ideen ja sehr spannend, aber da ich bei unserer kleinen Familie der Verantwortliche für den Wocheneinkauf bin, kann ich mir durchaus vorstellen, dass man beim Samstagseinkauf zwischen derartigen Verpackungen irre wird. Dezent und punktuell eingesetzt kann der Effekt aber durchaus Wirkung zeigen. Mal schauen, wann wir sowas hier in deutschen Gefilden sehen werden.

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

Qualitätsjournalismus muss unterstützt werden

Bis vor kurzem sagte mir der Name Richard Gutjahr genau: nichts. Vor einigen Tagen erfuhr ich über Twitter, dass der freie Journalist zufällig in der Gegend war und kurzerhand beschlossen hatte, nach Kairo zu reisen und direkt vor Ort zu berichten. Gutjahr wird vor allem als mediengeiler Vor-Dem-Applestore-Steher bezeichnet (er war der erste weltweit, der das iPad gekauft hat), der sich nur selbst inszenieren möchte und völlig naiv an die Sache heran geht (siehe Update). Dem mag man zustimmen und es ist sicher eine berechtigte Kritik, jedoch sollte man eins nicht vergessen: er ist dort. jetzt. und er berichtet den ganzen Tag über live. Punkt.

Völlig egal, warum jemand sowas macht – wichtig ist, dass er es tut und uns alle teilhaben lässt. Wenn ich dann von Leuten derartige Blogeinträge lese, wird mir schlecht. Denn das einzige, was ich da rauslese ist Neid. Aber gut, auch solche Menschen muss es geben.

Natürlich schreibe ich diesen Beitrag jetzt nicht nur, um euch darauf hinzuweisen, dass Richard diese Aktion durchzieht oder dass es Leute gibt, die immer was zu meckern haben. Nein, es geht mir da um etwas ganz anderes: Wie ihr vielleicht aus den etwas spärlichen Berichten der restlichen Medien erfahren habt (wobei hier Spiegel Online mal wieder eine sehr positive Ausnahme darstellt), kann man sich derzeit in Ägypten nur sehr schlecht online betätigen. Gutjahr geht an die Sache etwas pragmatischer ran und nutzt einfach sein Handy als Internetzugang. Da wir selbst in diesen modernen Zeiten noch immer unter absurd hohen Roaming-Kosten im Ausland leiden müssen, wird er verständlicherweise eine dicke Rechnung bekommen. Um diesen unschönen Nebeneffekt etwas abzufedern, hat er sowohl einen Flattr Button als auch die Möglichkeit der Spende über Paypal eingerichtet.

Meine Bitte ist nun: spendet ihm einfach ein paar Euro über Paypal oder Flattr’t ihn, damit diese Reise nicht zum (finanziellen) Fiasko wird. Das tut niemandem wirklich weh, hilft aber einem tollen Menschen gerade sehr viel! Und bevor ihr fragt: ja, ich hab gerade eben auch einen kleinen Betrag gespendet.

[Update]
hier gibt es ein interessantes Interview mit Gutjahr, der doch schon Erfahrung als Reporter in Krisengebieten vorweisen kann: meedia.de

Links:
Richard Gutjahr – Unterwegs nach Kairo

Tracking und Datenschutz – die Schreckensgeschichten des Internets

Die Benutzer des Internets kann man, wenn man es zynisch sieht, in zwei Gruppen einteilen: Paranoide und Menschen mit Privatsphären-Tourrette. Natürlich ist das überspitzt und es gibt viele Nuancen dazwischen, aber beide Tendenzen sind auf jeden Fall vorhanden.

Ich persönlich sehe mich eher in der Hälfte der offenen Menschen, die Privatsphäre etwas differenzierter definieren als andere. Davon kann man nun halten was man will – ich denke aber, dass jeder so glücklich werden soll, wie er das für richtig hält. Nun befinden wir uns aber im Internet, welches eine extrem große Reichweite bietet, aber nie vergisst. Und da ist es für meine Fraktion ab und zu nicht so leicht zu unterscheiden, ob man nun etwas öffentlich machen soll oder nicht. Aber immerhin hat man darüber noch die Kontrolle.

Anders sieht es jedoch mit den Informationen aus, die Benutzer ohne ihr wissen hinterlassen. Hier kommen wir nämlich zum sog. Tracking. Dabei wird versucht, Benutzer eindeutig zu identifizieren – aber nicht mit Adresse und Telefonnummer. Es geht nur darum, zu erkennen, was ein und die selbe Person auf einer Seite so macht. Denn als Seitenbetreiber bzw. als Anbieter einer Online-Plattform will und muss man teilweise wissen, wie einzelne Klickpfade aussehen – also die Wege, die Benutzer auf den eigenen Seiten gehen. Das mag erstmal nach Spionage klingen, ist es aber nicht. Wobei dies natürlich eine Frage des Standpunktes ist.

Doch welche Intentionen hat denn der Seitenbetreiber? Nehmen wir mal zwei Beispiele: Ein Betreiber eines Blogs und ein Affiliate Netzwerk. Für alle, die nicht wissen was letzteres ist: Affiliate Links bieten die Möglichkeit, dass man z.B. Onlineshops oder bestimmte Produkte seinen Lesern oder Freunden empfiehlt und dafür eine kleine Belohnung von einigen Cent oder auch einigen Euros bekommt. Affiliate Netzwerke dienen als Treffpunkt für beide Parteien. Aber dazu später mehr.

Kommen wir erst einmal zum Blogbetreiber. Der schreibt munter vor sich hin, sucht sich verschiedene Themen und versucht so, eine möglichst große Reichweite zu bekommen. Denn sind wir mal ehrlich, so hat jeder Blogger ein kleines Ego und jeder Leser ist Balsam dafür. Nur leider hat er ein Problem: er ist blind. Er kann nun zwar anhand von Kommentaren und Verlinkungen erkennen, ob seine Texte gut sind und vor allem ob sie auch gefunden werden, oder ob dem nicht so ist. Sprechen wir von einem Blogger, der sein Hobby zum Beruf gemacht hat, so muss er seinen Werbekunden auch irgendwie zeigen können, dass jemand seinen Blog liest. Und hier kommt das Tracking ins Spiel. Man kann damit darstellen, woher die Besucher kamen, welche Suchbegriffe sie in Suchmaschinen verwendet haben um einen Beitrag zu finden, wie lange sie da geblieben sind und ob sie schon einmal da waren.

Das mögen auf den ersten Blick nicht notwendige Daten sein – was sicher der Fall ist. Aber für den Blogbetreiber sagen sie viel aus: Habe ich viele Stammleser oder kommen die meisten nur einmal vorbei? Welche meiner Artikel erreichen viele Menschen, bei welchen geht so gut wie gar nichts? Nach was suchen Menschen, die mich finden? Den Blogbetreiber interessieren an dieser Stelle keine einzelnen Nutzer. Für ihn ist einfach eine Auswertung über alle hinweg interessant. Sicher könnte er auch ohne ein Tracking auskommen, aber dann ist der Blog mehr oder weniger ein Blindflug. Sofern, wie erwähnt, Werbekunden mit im Spiel sind, hat man dann ein ernstes Problem.

War das Tracking im Blog noch eher ein sehr positives, aber dennoch optionales Feature, so gibt es Anwendungen im Internet, die auf derartige Technologien einfach angewiesen sind. Möchte man sich im Affiliate Geschäft betätigen, so haben beide Seiten ein Problem: ich als Seitenbetreiber muss irgendwie beweisen, dass ich Leute zum beworbenen Angebot geleitet habe, der Werbepartner muss prüfen, ob denn durch die Empfehlung auch ein Kauf erfolgt ist. Man könnte das nun auf reiner Vertrauensbasis durchziehen, aber leider sind nunmal nicht alle Menschen ehrlich und so erübrigt sich diese Option. Mittels Tracking durch das Affiliate Netzwerk z.B. stellt dies aber kein Problem mehr dar. Sowohl der erste Klick des Besuchers als auch der evtl. daraus resultierende Verkauf sind messbar. Hier ist es absolut notwendig, die Daten auf den einzelnen Benutzer heruntergebrochen zu bekommen. Dabei ist aber völlig uninteressant, wer die Person eigentlich ist. Es geht nur darum zu sehen, ob eine Person auf den Affiliate Link geklickt und anschließend auch wirklich gekauft hat. An dieser Stelle wird übrigens meistens einfach ein Cookie verwendet, da dies die beste Zuordnung ermöglicht. Leider ist das Cookie aber auch sehr schnell durch den User gelöscht.

Zwei einfache Beispiele, jedoch zeigen sie einigermaßen, worauf ich hinaus will: es gibt gute Gründe, warum Benutzertracking nichts böses sein muss. Natürlich wird es, wie so oft im Leben, auch schwarze Schafe geben – aber wollen wir deshalb auf alles positive verzichten?

Nach diesen Zeilen wird es sicher bereits bei den Paranoiden brodeln – sie sehen ihre Privatsphäre verletzt und wollen aus Prinzip nicht, dass jemand sieht, was sie tun. Das ist ein zu respektierendes Recht, jedoch muss man eine große Einschränkung vornehmen: Das Internet, so wie wir es derzeit kennen, ist nicht kostenlos. Es erscheint auf den ersten Blick so, aber bezahlen müssen wir trotzdem. Nur die Währung ist eine andere. Denn aus Sicht eines Werbers ist das Netz die beste Erfindung nach der Werbung selbst. Hat man bei allen anderen Medien keinerlei Möglichkeiten der Rückmeldung, ob eine Anzeige gut ankommt bzw. wirkt, so hat man hier beim einzigen Medium eine direkte Rückmeldung. Man kann Werbung auf einzelne Personen zuschneiden und so die Reichweite erhöhen. Aber leider ist Werbung in unserer Gesellschaft sehr negativ belastet und wird eher als lästig denn förderlich bewertet.

Nun stehen wir vor dem Dilemma, dass wir einerseits möglichst alles kostenlos haben wollen, andererseits aber auch nichts kostenlos ist. Betreibt man einen Blog oder ein Newsportal, dann kostet dies zunächst erstmal Geld. Je nach angepeilter Anzahl von Benutzern variiert dieser Preis von sehr günstig bis sehr teuer. Hätten wir den Sozialismus dann wäre das kein Problem, aber da wir in der Marktwirtschaft leben muss dieses Geld irgendwo her kommen. Kann der kleine Blogbetreiber seine Tätigkeit noch als Hobby verbuchen und dafür monatlich einen kleinen Betrag investieren, so haben Seiten wie z.B. der Spiegel, Golem, Engadget usw. ordentlich an Ausgaben zu begleichen. Da niemand einen derartigen Aufwand als Minusgeschäft hinnimmt, wird Werbung geschalten.

Warum schreibe ich das alles? Ich möchte meine Leser einfach darauf hinweisen, dass sie sich ihrer Privatsphäre bewusst werden sollen – es aber auch nicht übertreiben sollen. So lange wir munter mittels des Swift-Abkommens sämtliche Kontenbewegungen an die USA übertragen, so lange selbst die Internetseiten von Datenschützern nicht einmal ihre eigenen Regeln befolgen, so lange Politiker vom Radiergummi fürs Internet schwärmen, ja so lange sollten alle mal die Füße still halten und sich vielleicht mal auf wirklich wichtige Probleme konzentrieren. Übrigens: die Informationen, die man so beim Tracking verwendet: die IP Adresse bzw. die daraus gewonnenen Geo-Daten, installierte Plugins im Browser, evtl. das Betriebssystem und den Browser selbst, Monitorauflösung…Es gibt sicher schützenswertere Daten.