Anwendungen
Portal
Forum
Wiki
Ikhaya
Planet
Mehr
Anmelden

gestern

OpenRA

Permalink Invictus deus ex machina

In meinem gestrigen Artikel ging es um eine Command & Conquer Version für den Browser. Neben dem Original gibt es eine Reihe von Projekte welche sich mehr oder weniger mit Command & Conquer beschäftigen. Eines dieser Projekte ist OpenRA. Dabei handelt es sich um eine Engine welche das Feeling und die Spielmechanik von Command & Conquer nachbaut. So kann die Engine unter anderem die Spieldaten der alten Command & Conquer Teile nutzen. Angeboten werden dabei aber im Moment nur einzelne Missionen und keine zusammenhängende Kampagne. Neben dem Singleplayermodus gibt es auch einen Multiplayermodus.

Der Titelschirm von OpenRA

Der Titelschirm von OpenRA

OpenRA ist unter der GPLv3 lizenziert und damit freie Software. Der Quelltext ist auf GitHub zu finden. Geschrieben ist das ganze in C#. Damit ist ist OpenRA unter Linux, Mac OS X und Windows lauffähig. Die offizielle Seite des Projektes ist unter openra.net zu finden.

Firefox Nightly: Media Source Extensions standardmäßig aktiviert

Permalink Sören Hentzschel

Mozilla hat die Media Source Extensions (MSE) in der Nightly-Version von Firefox standardmäßig aktiviert. Die HTMLMediaElement-Erweiterung erlaubt JavaScript die Generierung von Medienstreams, was Features wie Adaptives Streaming oder zeitversetztes Sehen von Livestreams in HTML5-Videos ermöglichen soll. YouTube ist ein prominentes Beispiel für eine Webseite, welche Gebrauch von MSE macht.

Media Source Extensions (MSE) sind ab sofort in der Nightly-Version von Firefox für WebM und VP9 standardmäßig aktiviert. Dies ist besonders für Nutzer von YouTube interessant, da Google auf seinem Video-Portal davon Gebrauch macht und nur mit aktivierten MSE alle Video-Auflösungen zur Verfügung stehen. Die aktuelle Nightly-Version trägt die Versionsnummer 36, dies bedeutet jedoch nicht, dass die MSE in Firefox 36 standardmäßig aktiviert sein werden. Nach aktuellem Stand werden die MSE mit Eintritt in die Betaphase standardmäßig deaktiviert werden.

Die Implementierung der MSE ist noch nicht abgeschlossen. Wer in Zusammenhang hiermit Probleme bemerkt, kann diese über about:config wieder deaktivieren, indem der Schalter media.mediasource.enabled per Doppelklick auf false geschaltet wird, umgekehrt können auf diese Weise MSE aktiviert werden, sofern sie es noch nicht sind, zum Beispiel in einigen Wochen nach Erscheinen der Betaversion von Firefox 36.

Kurztipp Nautilus: Strg+s für Auswahl per Muster

Permalink ME and my U

Eher durch Zufall bin ich vor einiger Zeit über die Tastenkombination Strg+s im Dateimanager Nautilus gestolpert (Abteilung “Wurstfinger”). Seitdem habe ich die hilfreiche Funktion immer wieder sehr gut gebrauchen können…

nautilus-strg-s-1

Eingabe des Musters.

Daher als kurzen Quick-Tipp für alle diejenigen, denen die Funktion bislang ebenfalls unbekannt war, aber in Zukunft nützlich sein könnte:

Man kann die Tastenkombination Strg+s dafür verwenden, um Dateien im aktuell geöffneten Verzeichnis per Dateinamen-Pattern zu selektieren.

Nachdem man die beiden Tasten gedrückt hat, öffnet sich ein kleines Dialogfenster, in das man ein Dateinamen-Muster eingeben kann.

nautilus-strg-s-2

Die Dateien sind ausgewählt.

Wie die ebenfalls im Dialog gegebenen Beispiele zeigen, lassen sich dabei natürlich auch die Platzhalter * (für beliebig viele beliebige Zeichen) und ? (für ein beliebiges Zeichen) verwenden.

So können zum Beispiel per *.mp3 alle MP3-Dateien im Verzeichnis selektiert werden oder per *cd1* alle Dateien, deren Namen irgendwo cd1 enthält. Oder eben mit test1? alle Dateien deren Namen mit test1 beginnt und dahinter ein weiteres Zeichen im Namen hat.


P.S.: ich bin auf meinem Blog in letzter Zeit aus verschiedenen Gründen nicht so aktiv… andere Aktivitäten (siehe “Links” auf der rechten Sidebar)… über das Humble Bundle zu berichten ist auch nicht mehr das, was es mal war ;) … neue “Entdeckungen” macht man ja auch nicht ständig, und aus den Fingern saugen will ich mir halt auch nichts.
Wer aus der Freiburger Region (ganz “unten links”) kommt sei bei dieser Gelegenheit zu unserem monatlichen uu-Treffen eingeladen. Dort bin ich auch ziemlich regelmäßig dabei… :)

Git für Einsteiger - Teil 1

Permalink svij | Blog

Zur Entwicklung von Software wird in der Regel ein Versionsverwaltungsprogramm genutzt. Es gibt zahlreiche Anwendungen um dies zu erledigen, zu den bekannteren Programmen gehören Subversion, CVS, Mercurial, Bazaar und eben Git. Dieses mehrteilige Tutorium soll den Einstieg in die Nutzung von Git erläutern.

Was ist eine Versionsverwaltung?

Für die Leser, die noch keine Erfahrung oder Ahnung von Versionsverwaltungsprogrammen haben, ist es zunächst wichtig zu wissen, was denn genau ein solches Programm macht. Die Bedeutung einer Versionsverwaltung lässt sich schon fast aus dem Wort ableiten: Es handelt sich um das Verwalten von Versionen. Konkret heißt dies, dass man von Dateien Versionen erzeugen kann, die dann sinnvoll verwalten werden können. Einzelne Versionen beinhalten keineswegs nur große Änderungen, sondern sehr wohl auch kleinere Änderungen.

Viele kennen es: Man geht einer Tätigkeit nach – sei es an einem Text, einem Bild oder an einem Video – und man möchte den aktuellen Stand immer mal wieder zwischenspeichern, damit man zum einen eine Sicherung der Datei hat und zum anderen, damit man wieder auf eine ältere Version zurückspringen kann, etwa wenn etwas falsch gelaufen ist. Jede Person hat dabei verschiedene Ansätze die einzelnen Versionen irgendwo abzulegen. Die eine Person fügt jeweils eine Versionsnummer in den Dateinamen ein, eine andere Person macht sich wiederum einzelne Ordner für jede Version mit dem aktuellen Datum, in dem die einzelnen Stände gesichert werden.

Wirklich praktikabel und effizient sind keine der beiden genannten Varianten, da sich sehr schnell und sehr einfach Fehler einschleichen, etwa wenn man alte Revisionen löscht, die man gegebenenfalls hinterher doch wieder braucht.

Genau hier kommen Versionsverwaltungssysteme ins Spiel. Mit einer Versionsverwaltung werden zu den reinen Veränderungen noch weitere Informationen zu einer Version gespeichert. Darunter fallen Informationen zum Autor, der Uhrzeit und eine Änderungsnotiz. Diese werden bei jedem Versionswechsel gespeichert. Durch die gesammelten Dateien lässt sich so schnell und einfach eine Änderungshistorie ansehen und verwalten. Falls zwischendurch Fehler in den versionierten Dateien aufgetreten sind, kann man dann wieder zurück zu einer Version springen, um von dort aus erneut weiter zu machen. Dabei ist es ganz egal, um was für eine Art von Dateien es sich handelt. Am häufigsten werden Versionsverwaltungsprogramme zur Software-Entwicklung eingesetzt.

Aber nicht nur für Programmierer ist eine Versionsverwaltung sinnvoll, sondern auch, wie bereits geschrieben, kann der Einsatz für Grafiker oder Autoren durchaus nützlich sein. Ein Grafiker könnte sich so Versionen von bearbeiteten Bildern speichern, um bei misslungenen Änderungen wieder zurück springen zu können. Bei Autoren geht es um Text, der ähnlich zum Quellcode von Software-Projekten, gut verwaltet werden kann.

Es gibt drei verschiedene Konzepte zur Versionsverwaltung: die lokale, zentrale und die verteilte Versionsverwaltung.

Lokale Versionsverwaltung

Die lokale Versionsverwaltung ist wohl selten in produktiven Umgebungen zu finden, da sie lediglich lokal arbeiten und häufig nur einzelne Dateien versionieren. Die oben bereits erwähnte manuelle Erzeugen von Versionen von Dateien wäre zum Beispiel eine lokale Versionsverwaltung mit einer einzelnen Datei. Es ist zwar ziemlich einfach zu nutzen, allerdings resultiert daraus eine hohe Fehleranfälligkeit und sie ist zudem wenig flexibel. Echte Versionsverwaltungssoftware gibt es mit SCCS und RCS auch. Der wohl größte Minuspunkt von lokaler Versionsverwaltung ist, dass man nicht im Standard mit mehreren Personen an Dateien arbeiten kann. Zudem besteht keinerlei Datensicherheit, da die Daten nicht zusätzlich auf einem entfernen Server liegen, sofern nicht zusätzliche Backups durchgeführt werden.

Zentrale Versionsverwaltung

Eine Zentrale Versionsverwaltung ist hingegen häufig in produktiven Umgebungen zu finden. Subversion und CVS sind beispielsweise Vertreter der zentralen Versionsverwaltung. Hauptmerkmal ist, dass das Repository lediglich auf einem zentralen Server liegt. „Repository“ ist ein englisches Wort für „Lager“, „Depot“ oder „Quelle“. Ein Repository ist somit ein Lager, in dem die Daten liegen. Autorisierte Nutzer eines Repositorys arbeiten dabei lokal mit einer Arbeitskopie der im Repository vorhandenen Dateien. Die Logik der Versionsverwaltung liegt dabei auf dem zentralen Server. Wenn man also auf eine andere Revision wechseln möchte oder sich die Revisionsänderungen anschauen möchte, werden stets die Daten vom Server heruntergeladen.

Verteilte Versionsverwaltung

Zu den verteilten Versionsverwaltungssystemen gehört nicht nur Git, sondern unter anderem auch Bazaar oder Mercurial. Im Gegensatz zur zentralen Versionsverwaltung besitzt jeder Nutzer des Repositorys nicht nur eine Arbeitskopie, sondern das komplette Repository. Wenn also zwischen verschiedenen Revisionen gewechselt wird oder man sich die letzten Änderungen anschauen möchte, muss nur einmal das Repository „geklont“ werden. Danach stehen alle Funktionalitäten der Versionsverwaltung offline zur Verfügung. Dadurch wird nicht nur unnötiger Netzwerktraffic vermieden, sondern auch die Geschwindigkeit wird, durch den fehlenden Netzwerk-Overhead, deutlich erhöht. Zusätzlich besitzen verteilte Versionswaltungssysteme eine höhere Datensicherheit, da die Daten des Repositorys in der Regel auf vielen Rechnern verteilt liegen.

Geschichtliches

Lange Zeit nutzten die Entwickler vom Linux-Kernel das proprietäre Versionsverwaltungssystem BitKeeper. Nach einer Lizenzänderung seitens der Herstellerfirma von BitKeeper, konnte das Team um den Linux-Kernel, allen vorran Linus Torvalds, BitKeeper nicht mehr kostenfrei verwenden, weswegen Linus Torvalds mit der Entwicklung von Git begann.

Da die Entwicklung im Jahr 2005 begann, gehört Git zu den jüngsten Versionsverwaltungssystemen. Für Linus Torvalds war es wichtig, dass das künftige Versionsverwaltungssystem drei spezielle Eigenschaften besitzt. Dazu gehörten zum einen Arbeitsabläufe, die an BitKeeper angelehnt sind, Sicherheit gegen böswillige und unbeabsichtigte Verfälschung des Repositorys, sowie eine hohe Effizienz. Das Projekt „Monotone“, ebenfalls ein Versionsverwaltungssystem, wäre fast perfekt gewesen. Es fehlte lediglich die Effizienz. Mit Git erschuf Linus Torvalds dann doch eine eigene Versionsverwaltung, die nicht auf den Quellen von Monotone oder BitKeeper beruht.

Interessant ist auch die Namensnennung von Git. Git ist das englische Wort für „Blödmann“. Linus Torvalds selbst sagte spaßeshalber: „I'm an egoistical bastard, and I name all my projects after myself. First 'Linux', now 'Git'.“ (Deutsch: „Ich bin ein egoistischer Bastard, und ich nenne alle meine Projekte nach mir selbst, Erst 'Linux' und nun 'Git'.“). Natürlich gibt es auch richtige Gründe, das Projekt „git“ zu nennen. Zum einen enthält das Wort lediglich drei Buchstaben, was das Tippen auf der Tastatur erleichtert, zum anderen gab es kein genutztes UNIX-Kommando, womit es kollidieren würde.

Git-Repository starten

Git bietet einige interessante Funktionen, die nach und nach in diesem Tutorium vorgestellt werden. Zunächst muss man Git installieren. Die gängigen Linux-Distributionen stellen Git in ihrer Paketverwaltung unter dem Packetnamen "git" bereit. Für andere Plattformen bietet die Git-Projekthomepage einer Download-Seite.

Um die Nutzung von Git sinnvoll zu erlernen, bietet es sich an die im Tutorium angeführten Befehle ebenfalls auszuführen, um die Arbeitsweise vollständig nachvollziehen kann. Damit dieses Tutorium einen sinnvollen Praxis-Bezug hat, wird im Laufe der Zeit eine kleine statische Webseite mit dem HTML-Framework „Bootstrap“ gebaut.

Zu Beginn muss man zunächst ein leeres Projektverzeichnis anlegen, in dem im Anschluss die Projekt-Dateien gespeichert werden. Dazu legt man zuerst den Ordner "Webseite-mit-Git" an und wechselt dort hinein.

$ mkdir Webseite-mit-Git
$ cd Webseite-mit-Git

Jetzt kann man mit dem folgendem Befehl ein Git-Repository anlegen:

$ git init

Initialisierte leeres Git-Repository in /home/sujee/Webseite-mit-Git/.git/

Mit diesem Befehl erzeugt Git also ein leeres Repository im Projektordner. Dazu legt Git, wie es die Ausgabe bereits mitteilt, ein Unterverzeichnis ".git" im Projektverzeichnis an.

In diesem Ordner werden noch einige weitere Unterverzeichnisse angelegt, die man mit dem Befehl "ls -l .git" einsehen kann.

$ ls -l .git 
insgesamt 32
drwxr-xr-x 2 sujee sujee 4096 20. Jul 16:41 branches
-rw-r--r-- 1 sujee sujee   92 20. Jul 16:41 config
-rw-r--r-- 1 sujee sujee   73 20. Jul 16:41 description
-rw-r--r-- 1 sujee sujee   23 20. Jul 16:41 HEAD
drwxr-xr-x 2 sujee sujee 4096 20. Jul 16:41 hooks
drwxr-xr-x 2 sujee sujee 4096 20. Jul 16:41 info
drwxr-xr-x 4 sujee sujee 4096 20. Jul 16:41 objects
drwxr-xr-x 4 sujee sujee 4096 20. Jul 16:41 refs

Wie man sieht, erzeugt Git einige Verzeichnisse und dort werden auch Daten speichert. Das ".git"-Verzeichnis ist das einzige Verzeichnis in dem Git die Informationen des Repositorys speichert. Daher sollte man dieses Verzeichnis keinesfalls löschen, da man sonst alle Daten des Repositorys verliert, insbesondere alle Revisionen. Da zu diesem Zeitpunkt in dem Beispielrepository keinerlei Operationen mit Git durchgeführt worden sind, wäre das in diesem Beispiel natürlich nicht sonderlich tragisch. Man sollte allerdings die Dateien nur anfassen, wenn man weiß was man tut.

Git Konfiguration

Da bereits ein leeres Repository angelegt worden ist, kann man ein Commit hinzufügen. Was genau ein Commit ist, und wie man einen Commit tätigt, wird später erläutert. Denn zunächst muss man noch seine Git-Installation konfigurieren.

Vorerst werden allerdings nur zwei Dinge konfiguriert: Der eigene Entwicklername und dessen E-Mail-Adresse.

Mit dem folgenden Befehlen setzt man den eigenen Namen sowie die eigene E-Mail-Adresse:

$ git config --global user.name "Sujeevan Vijayakumaran"
$ git config --global user.email mail@svij.org

Mit diesen beiden Befehlen wird die Datei "~/.gitconfig" angelegt. Wenn man in die Datei reinschaut steht folgendes darin:

[user]
    name = Sujeevan Vijayakumaran
    email = mail@svij.org

Mit "git config -l" lässt sich über die Kommandozeile die Konfiguration ebenfalls ansehen.

Es muss beachtet werden, dass bei den oben genannten Befehlen die Git-Identität global für den Benutzer gesetzt wird. Wenn man für einzelne Git-Repositorys spezifische Einstellungen setzen will, dann reicht es, wenn man den Aufruf-Parameter "--global" weg lässt. Dies ist häufig dann sinnvoll, wenn man verschiedene E-Mail-Adressen für verschiedene Projekte nutzt. Die angegebenen Informationen zu einem Entwickler sind nämlich für alle Personen einsehbar, welche mindestens Lese-Rechte im Repository besitzen, sofern der Entwickler mindestens ein Commit getätigt hat.

Der erste Commit

Jetzt beginnt das echte Arbeiten mit dem Repository. Zu Beginn ist das Repository leer, da keine Dateien vorhanden sind. Es müssen also zunächst einige Ordner und/oder Dateien angelegt werden.

Der Befehl "git status" zeigt den aktuellen Status des Repositorys an. Es gibt noch keine Commits, weshalb Git meldet, dass es sich um die "Initiale Version" handelt.

$ git status
Auf Branch master

Initialer Commit

nichts zu committen (Erstellen/Kopieren Sie Dateien und benutzen Sie "git add" zum Beobachten)

Da keine Dateien in dem Projekt-Verzeichnis vorhanden sind, meldet Git, dass nichts zu committen ist. Für das Beispiel-Projekt „Webseite mit Git“ muss zuerst das HTML-Framework „Bootstrap“ heruntergeladen und anschließend entpackt werden. Zum Schluss kann das ZIP-Paket wieder entfernt werden.

$ wget https://github.com/twbs/bootstrap/releases/download/v3.2.0/bootstrap-3.2.0-dist.zip
$ unzip bootstrap-3.2.0-dist.zip
$ mv bootstrap-3.2.0-dist/* .
$ rmdir bootstrap-3.2.0-dist && rm bootstrap-3.2.0-dist.zip

Einige der oben aufgeführten Befehle geben Text auf der Standard-Ausgabe aus, welcher hier aus Gründen der Übersichtlichkeit weggelassen worden ist.

Nachdem die Dateien im Projekt-Verzeichnis gelandet sind, bietet es sich an noch einmal "git status" auszuführen.

$ git status
Auf Branch master

Initialer Commit

Unbeobachtete Dateien:
  (benutzen Sie "git add <Datei>..." um die Änderungen zum Commit vorzumerken)

  css/
  fonts/
  js/

nichts zum Commit vorgemerkt, aber es gibt unbeobachtete Dateien (benutzen Sie "git add" zum Beobachten)

Wie man sieht, zeigt Git an, dass unbeobachtete Dateien vorhanden sind. Unbeobachtete Dateien sind Dateien, die nicht von Git verwaltet werden und für Git somit unbekannt sind. Mit dem Befehl "git add" kann man Dateien und Ordner zu dem Staging Bereich hinzufügen. Der Staging Bereich ist der Bereich, in dem die Dateien hinzugefügt werden, um diese für einen Commit vorzumerken.

Zunächst wird nur der Ordner "css" hinzugefügt.

$ git add css/

Eine Ausgabe erfolgt bei erfolreicher Ausführung nicht. Ein erneutes Ausführen von "git status" gibt folgendes aus:

$ git status
Auf Branch master

Initialer Commit

zum Commit vorgemerkte Änderungen:
  (benutzen Sie "git rm --cached <Datei>..." zum Entfernen aus der Staging-Area)

  neue Datei:     css/bootstrap-theme.css
  neue Datei:     css/bootstrap-theme.css.map
  neue Datei:     css/bootstrap-theme.min.css
  neue Datei:     css/bootstrap.css
  neue Datei:     css/bootstrap.css.map
  neue Datei:     css/bootstrap.min.css

Unbeobachtete Dateien:
  (benutzen Sie "git add <Datei>..." um die Änderungen zum Commit vorzumerken)

  fonts/
  js/

Durch das Hinzufügen des Ordners "css", werden die einzelnen Dateien des Ordners für den nächsten Commit vorgemerkt. Wenn man nicht den ganzen Ordner, sondern nur einzelne Dateien hinzufügen möchte, geht das natürlich auch:

$ git add fonts/glyphicons-halflings-regular.eot

Es bietet sich anschließend noch einmal an "git status" auszuführen:

$ git status
Auf Branch master

Initialer Commit

zum Commit vorgemerkte Änderungen:
  (benutzen Sie "git rm --cached <Datei>..." zum Entfernen aus der Staging-Area)

    neue Datei:     css/bootstrap-theme.css
    neue Datei:     css/bootstrap-theme.css.map
    neue Datei:     css/bootstrap-theme.min.css
    neue Datei:     css/bootstrap.css
    neue Datei:     css/bootstrap.css.map
    neue Datei:     css/bootstrap.min.css
    neue Datei:     fonts/glyphicons-halflings-regular.eot

Unbeobachtete Dateien:
  (benutzen Sie "git add <Datei>..." um die Änderungen zum Commit vorzumerken)

    fonts/glyphicons-halflings-regular.svg
    fonts/glyphicons-halflings-regular.ttf
    fonts/glyphicons-halflings-regular.woff
    js/

Vorher wurde das komplette "css"-Verzeichnis hinzugefügt. Mit dem Hinzufügen einer einzelnen Datei, wird nicht mehr der Ordner allgemein von "git status" gelistet, sondern es werden dann explizit alle einzelnen Dateien aufgelistet.

Diesmal werden alle restlichen Dateien, die noch nicht beobachtet werden hinzufügt:

$ git add fonts/ js/

Alternativ kann man auch den Befehl "git add -A" ausführen, um generell alle unbeobachtete Dateien hinzuzufügen. Eine Ausgabe erscheint bei erfolgreicher Ausführung nicht. Aber Achtung: Dies sollte man nur tun, wenn man sicher ist, dass sonst keine weiteren temporären Dateien vorhanden sind, die nicht in dem Commit landen sollen.

Falls doch Dateien ausversehen zum Staging Bereich hinzugefügt worden sind, kann man sie ganz leicht mit "git rm --cached " wieder entfernen.

Nach einem erneuten ausführen von "git status" werden alle hinzugefügte Dateien aus den drei Unterordnern aufgelistet. Es bietet es sich nicht nur für Anfänger an jedes Mal vor einem Commit die hinzugefügten Dateien mittels "git status" zu überprüfen, um zu vermeiden, dass nicht ungewollte Dateien in das Repository eingetragen werden.

$ git status
Auf Branch master

Initialer Commit

zum Commit vorgemerkte Änderungen:
  (benutzen Sie "git rm --cached <Datei>..." zum Entfernen aus der Staging-Area)

  neue Datei:     css/bootstrap-theme.css
  neue Datei:     css/bootstrap-theme.css.map
  neue Datei:     css/bootstrap-theme.min.css
  neue Datei:     css/bootstrap.css
  neue Datei:     css/bootstrap.css.map
  neue Datei:     css/bootstrap.min.css
  neue Datei:     fonts/glyphicons-halflings-regular.eot
  neue Datei:     fonts/glyphicons-halflings-regular.svg
  neue Datei:     fonts/glyphicons-halflings-regular.ttf
  neue Datei:     fonts/glyphicons-halflings-regular.woff
  neue Datei:     js/bootstrap.js
  neue Datei:     js/bootstrap.min.js

Wenn alle Dateien korrekt mit "git add" eingetragen worden sind, kann man den ersten Commit tätigen. Der Commit enthält dabei dann eben genau die Dateien, die man mit "git add" zum Staging Bereich hinzugefügt hat. Dateien, die man eventuell ausgelassen hat, bleiben unangetastet.

Mit dem folgenden Befehl wird der erste Commit erzeugt.

$ git commit -m "Bootstrap hinzugefügt."
[master (Basis-Commit) 7f1c942] Bootstrap hinzugefügt.
12 files changed, 9006 insertions(+)
create mode 100644 css/bootstrap-theme.css
create mode 100644 css/bootstrap-theme.css.map
create mode 100644 css/bootstrap-theme.min.css
create mode 100644 css/bootstrap.css
create mode 100644 css/bootstrap.css.map
create mode 100644 css/bootstrap.min.css
create mode 100644 fonts/glyphicons-halflings-regular.eot
create mode 100644 fonts/glyphicons-halflings-regular.svg
create mode 100644 fonts/glyphicons-halflings-regular.ttf
create mode 100644 fonts/glyphicons-halflings-regular.woff
create mode 100644 js/bootstrap.js
create mode 100644 js/bootstrap.min.js

Der Befehl speichert erst in diesem Punkt den aktuellen Staging Bereich in einen Commit. Mit dem Parameter "-m" kann eine Commit-Nachricht direkt übergeben werden, diese fasst in der Regel die aktuellen Änderungen zusammen, sodass andere Mitarbeiter in dem Repository die Änderungen in dem Commit schnell und einfach nachvollziehen können. Man kann auch einen Commit erzeugen ohne den Parameter "-m" anzugeben. Stattdessen öffnet sich der Standard-Editor des Systems in dem man die Commit-Nachricht eintippen kann.

Ein erneutes "git status" zeigt nach dem Commit erstmal keine Änderungen an.

$ git status
# Auf Zweig master
nichts einzutragen, Arbeitsverzeichnis sauber

Der erste Commit ist also getätigt. Dieser wird häufig initialer Commit oder Basis-Commit genannt, weil er der erste Commit des Repositorys ist, auf welchem die anderen Commits aufbauen.

Mit "git log" kann man die Historie des Repositorys anschauen. Bei lediglich einem Commit ist es in diesem Fall natürlich sehr kurz.

$ git log
commit 7f1c942a8275fdeab84ebee61e6fe43a6d48e888
Author: Sujeevan Vijayakumaran <mail@svij.org>
Date:   Sun Jul 20 17:24:13 2014 +0200

Bootstrap hinzugefügt.

Wichtig ist vor allem, dass jeder getätigte Commit eine eindeutige ID besitzt, auf welche man sich beziehen kann, wenn dies benötigt wird. Dies kann unter anderem dafür genutzt werden, um das Git Log zwischen zwei verschiedenen Revisionen anzusehen oder auch um Änderungen eines speziellen Commits rückgängig zu machen. Die ID ist eigentlich eine SHA-1 Checksumme, die aus den Änderungen erzeugt wird. Weiterhin werden auch noch das Datum und der Autor im Commit vermerkt.

Nachdem der erste Commit erledigt ist, kann die Arbeit also beginnen. Die Webseite, die mit diesem Tutorium angelegt wird, braucht zunächst eine "index.html"-Datei mit folgendem Inhalt:

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <title>Bootstrap 101 Template</title>

    <!-- Bootstrap -->
    <link href="css/bootstrap.min.css" rel="stylesheet">
  </head>
  <body>
    <h1>Hello, world!</h1>

    <!-- jQuery (necessary for Bootstrap's JavaScript plugins) -->
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
    <!-- Include all compiled plugins (below), or include individual files as needed -->
    <script src="js/bootstrap.min.js"></script>
  </body>
</html>

Die Datei dient als Basis-Template für das HTML-Framework Bootstrap. Sie wird zunächst nicht von Git beobachtet, da die Datei neu ist. Auch diese Datei muss in das Repository committet werden:

$ git add index.html
$ git commit -m "index.html hinzugefügt."
[master 4cc7ce4] index.html hinzugefügt.
1 file changed, 21 insertions(+)
create mode 100644 index.html

Hiermit wurde also der zweite Commit erzeugt. Der Befehl "git log" listet beide auf:

$ git log

commit 4cc7ce45fb1a73d10325b465062d1ffa3435702f
Author: Sujeevan Vijayakumaran <mail@svij.org>
Date:   Sun Jul 20 17:37:51 2014 +0200

index.html hinzugefügt.

commit 7f1c942a8275fdeab84ebee61e6fe43a6d48e888
Author: Sujeevan Vijayakumaran <mail@svij.org>
Date:   Sun Jul 20 17:24:13 2014 +0200

Bootstrap hinzugefügt.

Da das Grundgerüst der Webseite steht, kann man die Startseite "index.html" nach seinem Belieben anpassen. Die Webseite braucht jetzt einen Titel im HTML-Head und einen kleinen Inhalt im Body.

Um den Titel zu verändern, reicht es Zeile 8 mit folgenden Inhalt zu überschreiben:

<title>Webseite mit Git</title>

Statt der Überschrift "Hallo Welt", wird in diesem Beispiel git gegrüßt:

<h1>Hallo Git!</h1>

Beide Dateien können jeweils mit einem Editor bearbeitet werden. Nachdem man diese Änderungen durchgeführt hat, kann man sich alle Änderungen mit "git diff" anschauen. Doch zunächst lohnt sich mal wieder ein Blick auf die Ausgabe von "git status".

$ git status
Auf Branch master
Änderungen, die nicht zum Commit vorgemerkt sind:
  (benutzen Sie "git add <Datei>..." um die Änderungen zum Commit vorzumerken)
  (benutzen Sie "git checkout -- <Datei>..." um die Änderungen im Arbeitsverzeichnis zu verwerfen)

  geändert:       index.html

  keine Änderungen zum Commit vorgemerkt (benutzen Sie "git add" und/oder "git commit -a")

Git bemerkt automatisch, dass sich der Inhalt von "index.html" verändert hat. Die Veränderung betrifft alle Änderungen seit dem letzten Commit.

Die Ausgabe von "git diff" zeigt letztendlich die Änderungen an der Datei an:

$ git diff

diff --git a/index.html b/index.html
index 7a050c7..ea3b0af 100644
--- a/index.html
+++ b/index.html
@@ -5,13 +5,13 @@
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
-    <title>Bootstrap 101 Template</title>
+    <title>Webseite mit Git</title>

<!-- Bootstrap -->
<link href="css/bootstrap.min.css" rel="stylesheet">
  </head>
  <body>
-    <h1>Hello, world!</h1>
+    <h1>Hallo Git!</h1>

<!-- jQuery (necessary for Bootstrap's JavaScript plugins) -->
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>

Git zeigt die Unterschiede zwischen der aktuellen Datei und der Datei an, die zuletzt committet wurde. Entfernte Zeilen werden mit einem Minus zu Beginn der Zeile angezeigt, neu hinzugefügte Zeilen wiederum mit einem Plus. Gleichen Effekt hat es bei geänderten Zeilen.

Tipp: Zur Besseren Übersicht über die Ausgaben von Git im Terminal bietet es sich an, die Farbausgabe zu aktivieren. Dies kann global in der Konfiguration mit folgenden Befehl gesetzt werden:

$ git config --global color.ui true

Gelöschte Zeilen werden hiermit rot dargestellt und neu hinzugefügte Zeilen grün. Dieser Konfigurationsschalter wirkt sich allerdings nicht nur hier aus, sondern auch an weiteren Stellen.

Die Änderungen können wie gehabt wieder in den Staging Bereich gebracht werden und anschließend committet werden:

$ git add index.html
$ git commit -m "Titel und Überschrift angepasst."
[master 24e65af] Titel und Überschrift angepasst.
1 file changed, 2 insertions(+), 2 deletions(-)

Wenn man alle Befehle wie angegeben ausgeführt hat, besitzt das Repository drei Commits.

Fazit

In diesem Teil wurden die grundlegendsten Git Kommandos erläutert. Man weiß nun unter anderem, wie man Dateien zu einem Repository hinzufügt, ein Commit tätigt und wie man sich das Repository-Log anschauen kann.

Der nächste Teil behandelt das Branching Modell von Git.

24. Oktober 2014

Thunderbird 38 soll mit Kalender ausgeliefert werden

Permalink Sören Hentzschel

Mit Lightning existiert eine populäre Kalender-Erweiterung für Thunderbird. Diese soll ab Thunderbird 38 direkt mit Mozillas Mail-Client ausgeliefert werden.

Lightning ist eine Kalender-Erweiterung für Mozilla Thunderbird, welche von über einer Million Nutzer genutzt wird. Mit dem nächsten großen Thunderbird-Update, welches die Versionsnummer 38 tragen wird, soll Lightning direkt mit Thunderbird ausgeliefert werden, als standardmäßig deaktivertes Add-on. Dies ist das Ergebnis einer Diskussion im Rahmen des Thunderbird-Summits, welches vom 15. bis zum 18. Oktober in Toronto stattgefunden hat und bei welchem die Weichen für die Zukunft von Thunderbird gestellt wurden. Thunderbird wird seit Ende 2012 von der Community weiterentwickelt, nachdem Mozilla seine Prioritäten neu gewichtet hat.

23. Oktober 2014

Google Earth unter Jessie

Permalink Intux

Wie installiert man Google Earth unter Jessie?

news-381

Ganz einfach!

apt-get install lsb-core googleearth-package

cd && make-googleearth-package --force

dpkg -i google*.deb

apt-get -f install

Allerdings bekommt man so nicht die aktuelle Google Earth Version 7,  sondern die ältere Version 6.

Docker: BitTorrent Sync mit externem Share

Permalink debinux

Zugegeben, Docker hat es mir etwas angetan.
Ich habe ein Repository erstellt, das hoffentlich dazu bewegen kann, das wundertolle BitTorrent Sync auszuprobieren.
Ob BitTorrent Sync sich allerdings für externe Netzwerke eignet, lasse ich dahin gestellt. Synchronisierte Dateien werden unverschlüsselt und lesbar in den Ziel-Ordner geschrieben. Versteht mich nicht falsch, das kann durchaus von Vorteil sein.
Außerdem ist bei dauerhaftem Gebrauch, der Einsatz eines Reverse Proxy sicherlich nicht verkehrt…

Zu Beginn wie üblich, die Installation:

Installation Dockers

Debian Wheezy

Installation des Kernels aus dem Backport Repository mit anschließendem Neustart.
Dies ist notwendig, da erst ein Kernel ab Version 3.10 empfohlen wird.

1
2
3
4
echo deb http://ftp.us.debian.org/debian wheezy-backports main > /etc/apt/sources.list.d/wheezy-backports.list
apt-get update -y
apt-get -t wheezy-backports install linux-image-amd64 -y # Für ein amd64-basierendes System
reboot
OVH VMware vServer Besitzer sollten die Datei “/etc/grub.d/06_OVHkernel” vor dem Neustart löschen und “update-grub2″ ausführen, damit der neue Kernel aktiv wird.
Der OVH Kernel ist leider etwas beschnitten und bietet unter anderem keine cgroups.

Nun Docker installieren (lassen). Vorab “curl” installieren:

1
2
apt-get install curl
curl -sSL https://get.docker.io/ | bash

Ubuntu 14.04

Ich empfehle den Docker Installer zu verwenden. Es wird das offizielle Repository installiert. Auch hier im Vorfeld “curl” installieren:

1
2
apt-get install curl
curl -sSL https://get.docker.io/ubuntu/ | bash

BitTorrent Sync im Container

Nun der interessante Teil, ich halte ich mich kurz.

Zu Beginn muss das Verzeichnis erstellt werden, das im Anschluss die synchronisierten Dateien beeinhalten wird.
Aber nicht nur das, auch wird der Besitzer des Verzeichnisses verändert; auf UID 9991.
Nein, der Benutzer ist nicht auf dem Host-System zu erstellen, stattdessen existiert er nur im Container. Allerdings wird das lokale Verzeichnis in diesen eingebunden, weshalb der Benutzer, der im Container “btsync” ausführt, die entsprechenden Rechte benötigt:

1
mkdir /var/btshare ; chown 9991:9991 -R /var/btshare

Der Pfad ist frei wählbar, für den Artikel entscheide ich mich für obigen.

Mit nur einem Befehl wird das Image heruntergeladen (wenn noch nicht vorhanden) und gestartet:

1
docker run --name "btsync" -d -p 8888:8888 -p 8889:8889 -v /var/btshare:/btsync/data andryyy/btsync

Kurz zu den Parametern:

  • -d – Startet den Container “detached”, also im Hintergrund
  • -p HOST:CONTAINER – gibt einen Port aus dem Container an den Host weiter. Hier sind dies Port 8888 für die Webui und 8889 für die Datenübertragung!
  • -v HOST:CONTAINER – Bindet ein Verzeichnis vom Host in den Container ein
  • –name – Ein eindeutiger Name. Wird keiner angegeben, wird ein Name generiert
Wenn der Client im selben Netzwerk mit anderen btsync-Clients arbeitet, lohnt es sich die Ports 3838/udp sowie 3000/udp weiterzureichen.
Dafür einfach zwei weitere “-p”-Schalter an den “docker run”-Befehl anhängen: “-p 3838:3838/udp -p 3000:3000/udp”.

“run” wird versuchen, das Image lokal ausfindig zu machen, es nicht finden und folglich aus dem Internet herunterladen. Zum Ende steht der Name des Repositorys.

Den Status des Containers überprüfen…

1
docker ps -a

…und via “host:8888″ in die Webui springen.

Das bestenfalls sofort tun, um einen Administrator einzurichten und den Zugang damit zu sperren.

Viel Spaß beim Ausprobieren von BitTorrent Sync, das Programm ist weitesgehend selbsterklärend.

Container verwalten

Bitte unbedingt in die offiziellen Dokumente Dockers’ schauen, aber hier – wie immer – ein paar Basics:

Der Container kann jeder Zeit gestoppt, …

1
docker stop btsync

gestartet, …

1
docker start btsync

oder gelöscht werden:

1
docker rm btsync

Folgender Befehl löscht nicht nur den Container, sondern auch das Image:

1
docker rmi andryyy/btsync

ownCloud Android App Media Scanner Fix

Permalink Finns Blog

Die ownCloud Android App ist im Prinzip eine schlichte App, dessen Funktionsumfang auf das Nötigste beschränkt ist. Dateien können von der eigenen Cloud auf’s Smartphone oder Tablet heruntergeladen und auf Wunsch aktuell gehalten werden, Dateien und Fotos hochladen und per Link Teilen ist ebenfalls kein großes Problem. Seit längerer Zeit wundere ich mich aber, dass heruntergeladene Bilder oder Fotos erst nach einem Neustart des Gerätes in der Android Galerie erscheinen.

Grund hierfür ist, dass die ownCloud App den Android Media Scanner nicht anstößt und somit die Galerie nichts von dem neuen Bild weiß. Als Zwischenlösung habe ich die SD Scanner App verwendet, um manuell ein erneutes Durchsuchen der SD Karte nach Bildern auszuführen.

Leider habe ich einen Bug Report vom Januar 2013 übersehen, so dass ich kürzlich einen neuen erstellt habe, der dann aufgrund eines Duplikats geschlossen wurde. Scheinbar hat dies aber die Diskussion wieder entfacht, denn nun steht seit kurzem ein Pull Request bereit. Da der Pull Request inzwischen konfliktfrei ist, dürfte dieser Fix bald seinen Weg in die ownCloud App finden.

Auch wenn der Funktionsumfang der ownCloud App nicht unbedingt mit anderen (unfreien) Synchronisations-Apps vergleichbar ist, sind es doch diese kleinen Dinge, welche die App besser machen.

Ubuntu 14.10 Release als Download verfügbar

Permalink raspitux

Viele von Euch schauen bestimmt derweil auch immerzu auf ubuntuusers.de nach ob der offizielle Download der neusten Ubuntu Version schon eingetragen wurde.
Wer nicht länger warten möchte kann die .iso oder .torrent Datei bereits jetzt schon downloaden. Auf den Spiegelservern liegen die aktuellsten Dateien schon vor.
Dazu könnt ihr zum Beispiel einen der folgenden Links verwenden:

Ubuntu 14.10 als .iso
Ubuntu 14.10 als .torrent

Die Änderungen zu der 14.04. LTS Version könnt ihr dann hier entnehmen.

OCRmyPDF

Permalink Invictus deus ex machina

Möchte man unter Linux PDFs durchsuchbar machen, benötigt man dafür im Normalfall einige Schritte bis man zu dem gewünschten Ergebnis kommt. Mit Hilfe des Shellscriptes OCRmyPDF kann man sich diese Arbeit vereinfachen. Um eine PDF durchsuchbar zu machen reicht es auf der Konsole:

./OCRmyPDF.sh -l deu input.pdf output.pdf

einzugeben. Bei der ersten Benutzung kann es passieren, das die Umwandlung fehlschlägt. Tritt dieser Fall auf, sind einige Abhängigkeiten (unter anderem Tesseract und Unpaper) nicht installiert. Das Skript weißt den Nutzer auf die zu installierenden Pakete hin. Nachdem diese installiert worden sind, kann OCRmyPDF genutzt werden. Das Skript ist unter der MIT-Lizenz lizenziert und somit freie Software. Der Quelltext sowie die Installationsanleitung sind auf GitHub zu finden.

Mailserver Installer Fufix v0.5.2

Permalink debinux

Im Schnelldurchgang die Neuerungen in fufix 0.5.2:

  • MySQL root Passwort nun für alle Hosts
  • Automatische Konfiguration in Thunderbird (via “config-v1.1.xml”)
  • Dovecot Plugins auch für den klassischen LDA eingeschaltet (z.B. Sieve, wenn Getmail verwendet wird)
  • “auth_default_realm” definiert die Standard-Domäne in Dovecot, wenn keine definiert wurde (> “user.name” anstatt “user.name@domain.tld”)
  • Dovecot LMTP als Benutzer “vmail” ausführen
  • Timeout für IPv6 Prüfung

Und wieder einmal möchte ich allen danken, die bei der Fehlersuche geholfen- und/oder Verbesserungen vorgeschlagen haben!

22. Oktober 2014

Ubuntu auf dem Chromebook: Ein kurzes Zwischenfazit nach einem Monat

Permalink Fury's - Blog

Ich nutze auf meinem Chromebook jetzt knapp einen Monat lang ein “normal” installiertes Ubuntu. Dabei verwende ich ein HP Chromebook 14. Meinen Ersteindruck der Ubuntu-Installation habe ich bereits in meinem letzten Artikel zu diesem Thema zusammen gefasst. Ich möchte in diesem Artikel noch einmal einige Aspekte zum letzten Artikel ergänzen, die sich nach einiger Zeit des Arbeitens mit dieser Konfiguration ergeben haben.

Hardware

Die Hardware funktioniert nahezu ohne Probleme. Klammere ich jetzt den Touchpad-Fix aus , dann funktioniert alles tadellos. Ich habe nur das Gefühl, dass die Temperatur etwas höher ist als im reinen ChromeOS-Betrieb. Das ist nicht weiter verwunderlich, da im Vergleich zu ChromeOS etwas mehr Hintergrundprozesse laufen. Auch muss man natürlich sagen, dass Ubuntu naturgemäß recht viele Programme vorinstalliert und zum Teil mitaktiviert hat.

Ich kann an dieser Stelle nur von einer fühlbaren Temperatur reden, die man auf dem Gehäuse spüren kann. Ob das langfristig Probleme machen könnte, ist schwer zu sagen. Das Gerät ist nicht am glühen, aber es ist eben etwas wärmer. Spätestens dann, wenn das Gerät etwas Staub in der Lüftung haben sollte, muss man hier sicher stellen, den Staub zu beseitigen. Ich kann mir vorstellen, dass dies sonst langfristig zu einem Hitzeproblem führen könnte.

Software

Das Starten des Laptops geht flott von der Hand (< 10 Sekunden), man muss nur daran denken, dass beim Bootvorgang STRG+L betätigt werden muss, da ansonsten nach einem ChromeOS gesucht wird. Man kann diese Überprüfung natürlich ausschalten, aber das empfehle ich gerade für Anfänger ganz und gar nicht. Zumal diese diese Bestätigung eigentlich nicht wirklich störend ist.

Wie fast zu erwarten war – nach einer Woche habe ich Unity den Laufpass gegeben und stattdessen MATE installiert. Dieses benötigt deutlich weniger Ressourcen als Unity. Und ich bin einfach nach wie vor ein Freund der “guten alten” GNOME 2 Oberfläche. Ich empfehle ganz klar, weder GNOME 3 noch KDE noch Unity zu benutzen. Bei diesen handelt es sich um grafisch sehr aufgehübschte Oberflächen, die jedoch für dieses Gerät einfach zu viel Leistung in Anspruch nehmen.

Im normalen Arbeiten erreicht man durch Unachtsamkeit einen Punkt, an dem die Hardware zum Flaschenhals wird – 2 GB RAM sind nun einmal nicht die Welt. Achtet man jedoch etwas darauf, ungenutzte Tabs im Browser zu schließen oder das gleiche mit ungenutzten Programmen zu tun, kommt man damit auch aus. Zumindest wenn man wie ich, häufig nur einen Texteditor und einen Browser benötigt ;)

Debian führt den Wechselstandarddesktop ein (Satire)

Permalink Pinguinzubehör

Der Streit schwelt schon seit Jahren. Gnome wurde irgendwann zu groß für die traditionelle CD Nr. 1 der Debian-Distribution, die Mehrheit der Community möchte sowieso lieber andere Oberflächen nutzen – nur ein Hauch von Traditionsbewusstsein lässt die Debian-Macher noch am alten Standard Gnome festhalten. Fast wäre daher längst XFCE zu Debians neuem Standarddesktop geworden.

Schon für Debian 7 war der Schwenk zu XFCE angedacht, auch für das kommende Debian 8 war es schon fast beschlossene Sache. Doch jedesmal wurde kurz vor knapp wieder zu Gnome als erste Wahl zurückgerudert. Den Einwand der Größe und Unbeliebtheit wegwischend, und auf die vermeintlich bessere Barrierefreiheit hinweisend (obwohl die tatsächlich Betroffenen dies ganz anders empfinden), wird Gnome nun also wieder als Standard für die kommende Veröffentlichung von Debian 8 gehandelt.

Jetzt aber eskaliert der Richtungsstreit, da nun doch noch jemandem aufgefallen ist, dass Gnome gar nicht mehr auf allen Rechner-Architekturen lauffähig ist, die Debian unterstützt.

Doch Debian wäre nicht Debian, wenn es dafür nicht auch eine Lösung finden würde. Zunächst war geplant, einfach den Linux-Desktop-Chooser fest in die Debian-Installationsroutine zu integrieren, aber das Problem wird nun doch fachmännischer behoben. Statt zur ersten Distribution zu werden, die mehr als einen Standarddesktop hat, oder den Anwendern die Wahl des Desktops zu überlassen, geht Debian nun noch weiter. Um als universelle Linux-Distribution (Eigenbezeichnung) weiterhin einen einzigen, universellen Standarddesktop anbieten zu können, ohne an den technischen Schwierigkeiten zu scheitern, hat das DDDC (Debian Desktop Debate Council) eine revolutionäre Entscheidung getroffen, die das Problem geschickt umgeht:

Wer Debian am Montag, Mittwoch und Freitag installiert, bekommt als Standard KDE auf den Rechner. Dienstags, donnerstags und am Samstag wird Gnome-Shell installiert – außer, man hat eben keinen x86- oder amd64-Prozessor. In diesem Fall blendet der Debian-Installer ein Infofenster ein, das zum Installieren von alternativen Distributionen auffordert und mitteilt, dass andere Architekturen eventuell in Zukunft, bei einem späteren Release, wieder bei der Standarddesktopwahl berücksichtigt werden.

Für Installationen am Sonntag kommt zusätzlich ein Randomisator zum Einsatz, der keine feste Auswahl erlaubt, sondern – quasi als Wundertüte – einen beliebigen Desktop – außer KDE und Gnome – installiert. Das kann LXDE, LXQT, Mate, Windowmaker oder einer der spezielleren Fenstermanager sein. Wer weder mit KDE noch Gnome etwas anfangen kann, sollte daher tunlichst darauf achten, Debian am späten Wochenende zu installieren. An Feiertagen wie Weihnachten und Ostern wird hingegen gar nichts installiert, sondern nur Schneegestöber bzw. bunte Eier im Terminal animiert.

mehr
Satire

Sollte sich das neue Standdarddesktop-Konzept wider Erwarten nicht bewähren, wird Debian einen weiteren Fork der Gnome-Shell etablieren und Gnome in Eigenregie für alle Architekturen anpassen. Unter welchem Namen das gepatchte Gnome, das aus rechtlichen Gründen dann anders heißen muss, firmieren wird, ist noch nicht entschieden. Im Gespräch sind die Bezeichnungen Icezwerg oder Shellweasel.

XFCE wird von Debian künftig übrigens gar nicht mehr angeboten werden und fliegt sicherheitshalber ganz aus den offiziellen Paketquellen. Zu alte, abgehangene Software passe grundsätzlich nicht zur Debian-Philosophie.

CrossOver 14 mit einem Special zum 10. Ubuntu-Jahrestag veröffentlicht

Permalink Steam for Linux

CrossOver14

CodeWeavers – die Softwareschmiede hinter Wine – hat kürzlich eine neue Version der Software zur einfachen Ausführung von Windows-Anwendungen unter Linux und Mac OS X veröffentlicht: CrossOver 14. Die neue Version voller neuer Features kommt passend zum 10. Ubuntu-Jahrestag, da genau vor 10 Jahren Mark Shuttleworth die erste Version von Ubuntu - Ubuntu 4.10 „Warty Warthog“ - angekündigt hat.

Folgende neue Features enthält CrossOver 14 unter Linux:

  • CrossOver erkennt und installiert nun automatisch fehlende Pakete, die zur Ausführung von Anwendungen benötigt werden
  • Unterstützung für Ubuntu 14.10
  • Der Wine-Kern wurde um Tausende verschiedener Patches erweitert, die das Ausführen von noch mehr Windows-Anwendungen ermöglichen oder verbessern
  • Eine ganze Reihe von Anwendungen wird nun offiziell unterstützt, wie unter anderem Quicken 2015 oder Heartstone

Zum 10. Ubuntu-Jahrestag und zur Feier von CrossOver 14 startet CodeWeavers eine besondere Aktion, bei der CrossOver 14 mit einem Rabatt von 25% verkauft wird. Um den Rabatt zu bekommen, bestellt einfach CrossOver auf www.CodeWeavers.com und verwendet dabei den Gutscheincode 10thAnniversaryOfUbuntu. Diese Aktion gilt bis Ende November!

Also, feiert den 10thAnniversaryOfUbuntu mit CrossOver 14. Auf unserer Seite kann in dem Bereich „What Windows game do you want to play today?“ geprüft werden, ob eine Windows-Anwendung unter Linux mit CrossOver ausgeführt werden kann. Ich kann aus meiner Erfahrung bestätigen, dass Microsoft Office, World of Tanks, Starcraft 2 und viele andere Windows-Anwendungen ohne Probleme unter Ubuntu mit Hilfe von CrossOver laufen.

Tags: 
Linux
CrossOver
10thAnniversaryOfUbuntu
Games
Wine

Wo sind die OpenVPN Logs bei systemd zu finden?

Permalink [ENC]BladeXP's Blog

Mit dem Artikel „Wo sind die OpenVPN Logs zu finden?“, welcher heute durch den (ubuntuusers.de) Planet gerauscht ist, wurde ich wieder auf ein tolles Problem vom klassischen syslog aufmerksam gemacht: Es gibt keine Verknüpfung von einem Dienst zu einem Logfile, diese entsteht erst, wenn man der Anwendung mitteilt, ihre Logs in ein spezifisches Log zu schreiben.

Die Frage vom Autor kann unter Verwendung von systemd und dem dort enthaltenen Journal wie folgt beantwortet werden:

sudo journalctl -u openvpn@server
Eine Anpassung der Konfiguration oder umständliches durchsuchen von /var/log kann entfallen. Nicht vorhandene zusätzliche Logfiles müssen auch nicht rotiert werden ;)

Netflix unter Kubuntu mit Pipelight

Permalink Dem hoergen - Hyperblog

Netflix unter Kubuntu mit Pipelight
Netflix unter Linux ist mittlerweile recht einfach einzustellen. Großen Dank hier auch an das ubuntuusers Wiki! Erreichen kann man das mit Firefox in 5 Schritten
  1. Hinzufügen des Pipelight PPAs

    sudo add-apt-repository ppa:pipelight/stable

  2. Pipelight installieren

    sudo apt-get update sudo apt-get install –install-recommends pipelight-multi sudo pipelight-plugin –update

  3. Das Plugin aktivieren (Silverlight)

    sudo pipelight-plugin –enable silverlight

  4. Das Firefox Addon User Agent Override installieren und anpassen
    Installiere den User Agent Override , füge folgende 3 Zeilen am Ende hinzu und wähle dann im Addon “Firefox 15/Windows” aus

    # Netflix
    Firefox 15/Windows: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:15.0) Gecko/20120427 Firefox/15.0a1
    Safari/OSX: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_3) AppleWebKit/534.55.3 (KHTML, like Gecko) Version/5.1.3 Safari/534.53.10

    Ob das Plugin ordentlich funktioniert siehst du hier http://fds-team.de/pipelight/

  5. Netflix benutzen
    Viel Spass ;)

Quellen

21. Oktober 2014

Ein Rückblick auf die Ubucon 2014

Permalink svij | Blog

Letztes Wochenende fand die Ubucon in Katlenburg-Lindau statt. Bereits am Sonntag veröffentlichte ich meine Folien vom Git-Workshop.

Vorbereitung

Nachdem ich im letzten Jahr in das Organisationsteam der Ubucon hereingerutscht bin, beteiligte ich mich auch dieses Jahr bei der Organisation. Im Gegensatz zu letztem Jahr war die Organisation generell eher etwas ruhiger. Manchmal auch zu ruhig, wie mir schien. Durch den eher ungewöhnlichen kleinen Ort wurden weniger Vorträge und Workshops eingereicht. Zudem haben sich vergleichsweise wenige Leute angemeldet. Ich selbst hatte ein wenig Zweifel, ob die Ubucon gut wird. Zum Glück haben sich meine Befürchtungen nicht bewahrheitet, aber dazu später mehr.

Die Veranstaltung

Freitag

Die Veranstaltung fing wie gewohnt auch dieses Mal an einem Freitag an. Bei der Anmeldung bekam jeder Besucher ein schönes Namensschild mit vollen Namen sowie Nicknamen drauf. Nachdem letztes Jahr mein Name scheinbar zu lang war, verschwand diesmal ein Buchstabe im Nachnamen. Also quasi alles wie immer. :-)

Torsten Franz hielt als Hauptorganisator zunächst seine kurze Eröffnungsrede und erzählte anschließend in seinem Vortrag „10 Jahre Ubuntu, 10 Jahre Community“ über die Entwicklung von Ubuntu und der Community. Anschließend begab sich ein Teil zum „Ritteressen“ welches in der benachbarten Burg stattfand. Ich selbst war dort allerdings nicht mit dabei.

Samstag

Am Samstag um 10 Uhr fing mein Git-Workshop an. Zu Beginn gab es, die für Konferenzen bekannten, WLAN-Probleme, die sich auch in meinem Git-Workshop ausgewirkt haben. Es dauerte daher eine Weile bis alle Teilnehmer an ihren Laptops erfolgreich Git installieren konnten. Auf Grund der Probleme musste ich auch kurzfristig meinen Workshop leicht umplanen, damit für den Rest des Workshops kein Internet gebraucht wurde. Abgesehen von den Problemen, lief es gut, wie ich es ja bereits im anderen Blog-Artikel schrieb.

Am restlichen Tag besuchte ich keine Vorträge mehr, sondern unterhielt mich lieber mit den vielen anderen netten Leuten. Am Abend fanden dann die beiden Social-Events statt. Während ein großer Teil zum „Theater der Nacht“ gefahren ist, waren die übrigen weiterhin in der Schule, wo Live-Musik gespielt wurde. Die Live-Musik war ganz okay, aber so wie die übrigen vom Theater geschwärmt haben, bereue ich es im Nachhinein doch dort nicht hingegangen zu sein. Bernhard hat dort einige sehr schöne Bilder geschossen.

Sonntag

Am Sonntag besuchte ich lediglich zwei Vorträge. Dies war zum einen der Talk über LVM sowie über systemd. Beide Vorträge wurden von Stefan J. Betz gehalten. Sie waren nicht nur informativ, sondern auch ganz lustig. ;-) Am frühen Nachmittag endete auch schon die Ubucon. Durch die vielen Helfer vor Ort war das Gröbste auch schon zügig abgebaut und aufgeräumt. Da einige Besucher vom Bahn-Streik betroffen waren, bildeten sich idealerweise noch spontan Mitfahrgelegenheiten.

Vor-Ort

Der Ort war klasse! Obwohl es eine Grundschule war, war die technische Ausstattung ziemlich gut. Die Schule besitzt einige Smartboards mit Beamer, die während der Veranstaltung zum Einsatz kamen. Direkt im Eingangsbereich befand sich ein großer Aufenthaltsraum in dem man seine freie Zeit verbringen konnte. Dort befanden sich auch einige Rechner mit verschiedenen Linux-Distributionen und Desktop-Umgebungen, welche die Besucher ausprobieren konnten. Die Idee kam von dem Organisator vor Ort und auch ich fand das ganz nett.

Auch neu war diesmal eine Spiele-Ecke. Es gab zwei Räume, in dem jeweils zwei Rechner mit Spielen vorinstalliert waren. Zudem gab es insgesamt auch noch zwei Kicker-Tische, die nicht nur ich genutzt habe. Sowohl die Idee als auch die Umsetzung waren ganz nett gemacht, da man sich dort auch ganz nett unterhalten konnte. Für die nächsten Ubucons hoffe ich, dass es so etwas nochmals gibt.

Jeder Vortragende hat übrigens einen Beutel voll mit Inhalt aus der Region bekommen. In dem Beutel befanden sich diverse Wurst-Sorten, Bier, Wein und noch eine Sauce. Auch wenn ich mit den meisten Sachen nicht viel anfangen kann, finde ich dies ebenfalls eine tolle Idee und auch eine nette Geste für die Vortragenden.

Die Verpflegung, welche bei der Ubucon immer im Teilnahmepreis enthalten ist, war ebenfalls deutlich besser als sonst. Die letzten Jahre wurden lediglich belegte Brötchen bei einer Bäckerei bestellt, die dann verzehrt werden konnten. Dieses Mal wurden die Brötchen von fleißigen Helfern geschmiert. Diese sorgten auch dafür, dass es durchgehend warme Bockwürstchen, Hühner- und Kürbis-Suppe gab. Diese schmeckten jeweils nach meiner Einschätzung gut und brachten eine gute Abwechslung rein. Dieses Jahr wurde daher ausnahmweise nicht mehr „Esst mehr Brötchen!“, sondern „Esst mehr Würstchen!“ gerufen ;-).

Fazit

Die Ubucon war toll! Im Vergleich zu den letzten Jahren ist sie zwar, was die Teilnehmer- und Vortragsanzahl angeht, kleiner geworden, allerdings war es diesmal vor Ort sehr sehr gut organisiert. Der Hauptorganisator Olaf Bialas hat da sehr gute Arbeit geleistet. Darunter fallen besonders auch seine eigenen Ideen die er eingebracht hat, etwa die Spiele-Ecke und der Rechner-Kreis mit den verschiedenen Distrubutionen und dessen Desktop-Umgebungen.

Für die Zukunft hoffe ich mir, dass die Ubucon ähnlich gut laufen wie dieses Mal. Ein Veranstaltungsort für nächstes Mal steht allerdings noch nicht fest. Prinzipiell finde ich es immer gut, wenn es jedes Jahr einen anderen, neuen Ort gibt. So sieht man nicht nur andere Städte, sondern man lernt auch viele neue nette Leute kennen. Insbesondere der letzte Punkt ist der hauptsächliche Grund, warum ich nicht nur die Ubucon besuche, sondern auch bei der Organisation mithelfe.

Borderlands: The Pre-Sequel für Linux veröffentlicht

Permalink Steam for Linux

Nachdem erst vor Kurzem Borderlands 2 mit offiziellem Linux-Support erschienen ist, wurde mit dem nächsten Titel der Spieleserie diese Tradition fortgesetzt.

Borderlands: The Pre-Sequel ist ein Mehrspieler-Shooter mit Rollenspielelementen, welcher seit einigen Tagen auf Steam erhältlich ist.

Der Spieler steigt in die Geschichte zwischen den beiden vorherigen Spielen aus der Borderlandsserie ein und stellt sich auf die Seite von „Handsome Jack“, des Antagonisten aus Borderlands 2, wobei einige geschichtsrelevante Lücken zwischen den Teilen 1 und 2 geschlossen werden, wie zum Beispel der Machtaufstieg von „Handsome Jack“.

Tags: 
Steam
Linux
Borderlands
The Pre-Sequel
2K
Aspyr

Wo sind die OpenVPN Logs zu finden?

Permalink Invictus deus ex machina

Wenn man einen OpenVPN-Server in der Standardkonfiguration betreibt, wird man sich unter Umständen wundern, an welcher Stelle ist das OpenVPN Log zu finden ist. Das liegt daran das der OpenVPN-Server das ganze in /var/log/syslog speichert. Möchte man nun die OpenVPN betreffenden Punkte filtern so sollte man auf der Konsole folgendes eingeben:

grep VPN /var/log/syslog

Alternativ kann man auch die OpenVPN-Konfiguration anpassen. Dazu muss die Datei /etc/openvpn/server.conf bearbeitet werden. Dort gibt es eine Option log-append, welche wie folgt angepasst wird:

log-append /var/log/openvpn.log

Nach einem Neustart des Service mittels:

service openvpn restart

wird die neu eingestellte Logdatei genutzt.

20. Oktober 2014

Mozilla veröffentlicht Thunderbird 31.2

Permalink Sören Hentzschel

Mozilla hat in der vergangenen Woche nicht nur seinen Firefox-Browser aktualisiert, sondern mit Version 31.2 auch eine neue Version des E-Mail-Clients Thunderbird zum Download bereitgestellt.

Download Mozilla Thunderbird 31.2 für Windows, OS X und Linux

Die vergangene Woche veröffentlichte Version 31.2 behebt sechs Sicherheitslücken, von denen drei von Mozilla mit der höchsten Gefahrenstufe versehen worden sind. Darüber hinaus werden Probleme in Zusammenhang mit Sicherheits-Zertifikaten behoben (Bug 1042889, Bug 1049435) und außerdem ein Fehler, der dafür sorgen konnte, dass Nachrichten fälschlicherweise an die E-Mail-Adresse der Person in der Liste anstatt an die ausgewählte Person geschickt wurden, wenn es im Adressbuch zwei Einträge mit demselben Namen gab und ein Eintrag davon Teil einer Liste war.

Upgradeverhalten unter Ubuntu konfigurieren

Permalink Invictus deus ex machina

Unter Ubuntu gibt es neben den halbjährlichen Versionen auch solche welche über einen längeren Zeitraum unterstützt werden. Diese sogenannten Long Term Releases erscheinen dabei alle zwei Jahre und werden fünf Jahre lang unterstützt. Bei Ubuntu kann man das System nun so konfigurieren das nur LTS Versionen oder jedes Release zum Upgrade angeboten wird. Möchte man diese Einstellung ändern, so muss man im Terminal:

nano /etc/update-manager/release-upgrades

eingeben. Im Editor öffnet sich dann folgende Datei:

# Default behavior for the release upgrader.

[DEFAULT]
# Default prompting behavior, valid options:
#
#  never  - Never check for a new release.
#  normal - Check to see if a new release is available.  If more than one new
#           release is found, the release upgrader will attempt to upgrade to
#           the release that immediately succeeds the currently-running
#           release.
#  lts    - Check to see if a new LTS release is available.  The upgrader
#           will attempt to upgrade to the first LTS release available after
#           the currently-running one.  Note that this option should not be
#           used if the currently-running release is not itself an LTS
#           release, since in that case the upgrader won't be able to
#           determine if a newer release is available.
Prompt=lts

Dort kann man unter Prompt die gewünschte Einstellung festlegen und bekommt damit vom System nur noch Hinweise wenn die gewünschten Versionen erscheinen.

WordPress Testumgebungen in Docker

Permalink debinux

Docker wirkt unter Umständen ziemlich kompliziert, so habe auch ich den ein oder anderen Artikel zu dieser tollen Software geschrieben, der es für den Anfang womöglich etwas zu weit treibt und dabei vergessen lässt, dass Docker wahnsinnig praktisch, einfach und modular ist.

Das möchte ich im Verlauf richtig stellen…

WordPress Testumgebungen in Docker:

  • Docker auf Server installieren (Debian/Ubuntu)
  • Fertige WordPress und MySQL Images herunterladen
  • Mehrere Container miteinander verlinken und starten
  • WordPress “Produktiv nach Testing” klonen (WordPress Plugin)

Ich verwende ausschließlich Images aus dem offizielle Docker Hub, um es nicht unnötig kompliziert zu machen.

Zur Information: Laut Dockerfiles basieren beide Images (WordPress + MySQL) auf Debian Wheezy

Installation Dockers

Debian Wheezy

Installation des Kernels aus dem Backport Repository mit anschließendem Neustart.
Dies ist notwendig, da erst ein Kernel ab Version 3.10 empfohlen wird.

1
2
3
4
echo deb http://ftp.us.debian.org/debian wheezy-backports main > /etc/apt/sources.list.d/wheezy-backports.list
apt-get update -y
apt-get -t wheezy-backports install linux-image-amd64 -y # Für ein amd64-basierendes System
reboot
OVH VMware vServer Besitzer sollten die Datei “/etc/grub.d/06_OVHkernel” vor dem Neustart löschen und “update-grub2″ ausführen, damit der neue Kernel aktiv wird.
Der OVH Kernel ist leider etwas beschnitten und bietet unter anderem keine cgroups.

Nun Docker installieren (lassen). Vorab “curl” installieren:

1
2
apt-get install curl
curl -sSL https://get.docker.io/ | bash

Ubuntu 14.04

Ich empfehle den Docker Installer zu verwenden. Es wird das offizielle Repository installiert. Auch hier im Vorfeld “curl” installieren:

1
2
apt-get install curl
curl -sSL https://get.docker.io/ubuntu/ | bash

Docker Einrichtung

Docker ist etwa wie Lego, verschiedene Module werden miteinander verknüpft und bilden eine ganze App.
Im Fall WordPress werden zwei Bausteine benötigt.

1
2
3
-------------             ---------
| WordPress | <---------> | MySQL |
-------------             ---------

Docker bringt mit WordPress auch gleich die Web-Server Appliance mit (Apache2), weshalb dieser nicht als Baustein oben aufgeführt ist.

Ich könnte auf folgende Befehle verzichten, da ein “pull” auch durch ein “run” ausgelöst würde (im nächsten Schritt), aber es ist vielleicht verständlicher für den Anfang:

1
2
docker pull wordpress
docker pull mysql

Somit sind beide Images (Bausteine) für eine WordPress Infrastruktur lokal abgelegt.
Optional hätte hier auch “mysql:5.5″ stehen können, womit ein Tag (oft für eine Version verwendet) angegeben wäre. Mehr dazu im Verlauf.

Allerdings startet Docker nie Images, sondern immer Container auf Basis eines Images.
Das ergibt die Möglichkeit, einen Baustein (fast) beliebig oft zu verwenden und jede Menge Testumgebungen zu schaffen.

So erstelle ich direkt zwei MySQL Container:

1
2
docker run --name mysql-container-1 -e MYSQL_ROOT_PASSWORD=q5iBzWs4h7nCyPeSmjn0 -d mysql
docker run --name mysql-container-2 -e MYSQL_ROOT_PASSWORD=Dl4M7hVoEDiQiJQC0Fci -d mysql:5.7

Den ersten Container nenne ich demnach “mysql-container-1″, den zweiten “mysql-container-2″.

Via Environment Variable gebe ich ein MySQL Root Passwort mit. Diese Variablen sind je nach Image unterschiedlich, dazu bitte immer das Docker Hub zur Hand nehmen und durchlesen, welche Attribute mitgegeben werden können (in diesem Fall: https://registry.hub.docker.com/_/mysql/)

Weiterhin gebe ich für den ersten Container keinen “Tag” nach “mysql” an, es wird “latest” angenommen, in diesem Fall bedeutet das MySQL in Version 5.6.

Ein “Tag” ist hingegen für den zweiten Container festgelegt: mysql:5.7. Ergo MySQL in Version 5.7. Auch die Tags eines Images sind immer dem Docker Hub zu entnehmen!

Wurden beide Befehle ausgeführt, sind die Container auch schon aktiv/gestartet (die IDs sind zufällig):

1
2
3
4
root@vps96713:~/build# docker ps
CONTAINER ID        IMAGE               COMMAND                CREATED             STATUS              PORTS               NAMES
20a245efe5b3        -a:latest           "/entrypoint.sh mysq   5 seconds ago       Up 5 seconds        3306/tcp            mysql-container-2
8de566127e89        -a:latest           "/entrypoint.sh mysq   8 seconds ago       Up 7 seconds        3306/tcp            mysql-container-1

Das war einfach, oder?

Die Ausgabe “PORTS” beschreibt “exposed” Ports. Diese Ports wurden vom Ersteller des Images festgelegt und bedeuten, dass diese Schnittstellen von anderen Containern zur Kommunikation benutzt werden können. Ansonsten wäre so ein MySQL Container ja auch ziemlich wertlos…

Nun möchte ich auch zwei WordPress Installationen ablegen/starten:

1
2
docker run --name wordpress-spielwiese-1 --link mysql-container-1:mysql -p 8080:80 -d wordpress
docker run --name wordpress-spielwiese-2 --link mysql-container-2:mysql -p 8081:80 -d wordpress

Wieder wähle ich individuelle Namen für die Container (> “wordpress-spielwiese-1″ und “wordpress-spielwiese-2″).

Jetzt folgt der große Spaß, den Docker mitbringt: Ich verlinke jeweils einen MySQL Container mit einer WordPress Installation.

Das passiert durch “–link container-name:alias”. Der Alias ist frei zu wählen.
Ich erweise mich als unkreativ und entscheide mich für “mysql”.

Durch den Switch “-p” wird ein Port aus einem Container an den Host weitergeleitet.
So wird ein Zugriff via Browser auf Port 8081 zu Port 80 der WordPress Spielwiese 2 weitergeleitet. Gleiches Gilt für Port 8080 und Port 80 der Spielwiese 1.

WordPress hat nun also seine benötigte MySQL Installation an der Hand und – ganz wichtig – Zugriff auf die Environment Variablen, die für diese festgelegt wurden.

“wordpress-spielwiese-1″ weiß durch den Link zu “mysql-container-2″, dass “MYSQL_ROOT_PASSWORD=Dl4M7hVoEDiQiJQC0Fci” lautet. Und das ist wichtig! Denn…
Öffne https://registry.hub.docker.com/_/wordpress/ und stelle fest, dass es eine Menge Variablen gibt, die hätten mitgegeben werden können:

-e WORDPRESS_DB_USER=… (defaults to “root”)
-e WORDPRESS_DB_PASSWORD=… (defaults to the value of the MYSQL_ROOT_PASSWORD environment variable from the linked mysql container)
-e WORDPRESS_DB_NAME=… (defaults to “wordpress”)
-e WORDPRESS_AUTH_KEY=…, -e WORDPRESS_SECURE_AUTH_KEY=…, -e WORDPRESS_LOGGED_IN_KEY=…, -e WORDPRESS_NONCE_KEY=…, -e WORDPRESS_AUTH_SALT=…, -e WORDPRESS_SECURE_AUTH_SALT=…, -e WORDPRESS_LOGGED_IN_SALT=…, -e WORDPRESS_NONCE_SALT=… (default to unique random SHA1s)

Allerdings sind die “Defaults” alle annehmbar. Zu sehen ist, dass “WORDPRESS_DB_PASSWORD” dem Wert “MYSQL_ROOT_PASSWORD” aus einer verknüpften MySQL Installation entspricht. Somit ist alles notwendige für eine lauffähige Installation gegeben.

Noch einmal schaue ich mir den Status der Container an:

1
2
3
4
5
6
root@vps96713:~/build# docker ps
CONTAINER ID        IMAGE               COMMAND                CREATED             STATUS              PORTS                  NAMES
38b039fef2cd        wordpress:latest    "/entrypoint.sh apac   3 minutes ago       Up 3 minutes        0.0.0.0:8081->80/tcp   wordpress-spielwiese-2
64232ec1223f        wordpress:latest    "/entrypoint.sh apac   3 minutes ago       Up 3 minutes        0.0.0.0:8080->80/tcp   wordpress-spielwiese-1
20a245efe5b3        -a:latest           "/entrypoint.sh mysq   3 minutes ago       Up 3 minutes        3306/tcp               mysql-container-2
8de566127e89        -a:latest           "/entrypoint.sh mysq   4 minutes ago       Up 4 minutes        3306/tcp               mysql-container-1

Unter “PORTS” ist nun ebenso die Weiterleitung des jeweiligen Ports in den Container zu sehen.

Das war es schon.

Mit dem Browser öffne ich die URLS

http://1.2.3.4:8080

http://1.2.3.4:8081

wobei 1.2.3.4 für die IP des Hosts steht. Denn das interne Docker Netzwerk wird automatisch verwaltet.
Empfangen werde ich von der Installationsroutine WordPress':

Wordpress Installation

WordPress Installation

Alle Parameter zur Installation wurden bereits durch Docker konfiguriert, es fehlen nur noch die wesentlichen Details wie der Name des Blogs etc.

Verwaltung der Container

Die wichtigsten Befehle, um die erstellten Container/heruntergeladenen Images zu verwalten, nöchte ich nicht vorenthalten.
Bitte lest auf jeden Fall auch den User Guide durch.
pre>docker stop wordpress-spielwiese-1 # wordpress-spielwiese-1 anhalten
docker stop wordpress-spielwiese-1 # wordpress-spielwiese-1 starten
docker rm wordpress-spielwiese-1 # Den Container wordpress-spielwiese-1 löschen!
docker rmi wordpress # Das Image “wordpress”, das aus dem Docker Hub geladen wurde vom lokalen Host entfernen
docker rmi mysql:5.7 # Lediglich Version/Tag “5.7” des Images “mysql” vom lokalen Host löschen

Es wird auffallen, dass die oben erstellten WordPress Installationen nur dann starten, wenn auch der verlinkte MySQL Container gestartet wurde.

WordPress klonen

Für die Kopie meiner WordPress Installation verwendete ich das Plugin “All-in-One WP Migration”.
Nach der Installation befindet sich auf der linken Seite im Admin-Bereich der Punkt “Site Migration”. Die Verwendung ist wirklich selbsterklärend…

Site Migration Plugin

Site Migration Plugin


Der Import gestaltet sich genauso reibungslos.
Ich habe keine Probleme mit dem Plugin gehabt, nehme aber gerne Vorschläge zu Alternativen entgegen.

TL;DR

Docker installieren:

1
2
3
apt-get install curl
curl -sSL https://get.docker.io/ | bash # Debian
curl -sSL https://get.docker.io/ubuntu/ | bash # Ubuntu

Container starten:

1
2
3
4
docker run --name mysql-container-1 -e MYSQL_ROOT_PASSWORD=q5iBzWs4h7nCyPeSmjn0 -d mysql
docker run --name mysql-container-2 -e MYSQL_ROOT_PASSWORD=Dl4M7hVoEDiQiJQC0Fci -d mysql:5.7
docker run --name wordpress-spielwiese-1 --link mysql-container-1:mysql -p 8080:80 -d wordpress
docker run --name wordpress-spielwiese-2 --link mysql-container-2:mysql -p 8081:80 -d wordpress

Zugriff auf http://host:8080 sowie http://host:8081.

Automatisches Übersetzen von LaTex-Quellcode

Permalink c3vo

Schreibt man gerade an einem LaTex-Dokument, schaut der Workflow eigentlich immer relativ gleich aus: Tex-Quellcode in einem Texteditor schreiben, nach einer Änderung Quelltext in zum Beispiel PDF übersetzen und das Ergebnis anschließend anschauen. Das häufige hin und her Wechseln zwischen Terminal und den beiden anderen Fenstern kann gerade bei längerem Arbeiten nerven. Eine eigene Entwicklungsumgebung finde ich für LaTex dagegen auch übertrieben. Ich präferiere zudem auch den Texteditor meiner Wahl (in meinem Fall Geany, kann aber freilich auch vim, sublime etc. sein) Meistens führt man im Terminal zum LaTex-Kompilieren folgenden Befehl aus:

pdflatex Beispiel-datei_xyz.tex

Viel angenehmer ist es in meinen Augen aber, wenn die tex-Datei bei jeder Änderung automatisch in eine pdf übersetzt wird. Das geht einfach mit folgenden Befehl und mithilfe von inotify (Installation ist dort ebenfalls beschrieben):

while true; do inotifywait -e modify *.tex; latexmk -pdf; done

Wenn man BibTex verwendet, kann man neben *.tex auch noch ein *.bib hinzufügen.

Damit kann es höchstens passieren, dass durch einen Syntaxfehler das Kompilieren gestoppt wird. Dadurch kann man gerade bei größeren Bildschirmen Editor- und PDF-Reader immer nebeneinander im Vordergrund behalten – ein ständiges Wechseln zwischen Terminal und Editor entfällt. Verwendet man als PDF-Reader zum Beispiel evince, wird die PDF bei jeder Änderung automatisch neu geladen. Winwin-Situation – und ein Stückchen angenehmeren Workflow. ;)

Update: Alternative ohne inotifywait

Per Kommentar hab ich die Information bekommen, dass latexmk auch von Haus aus eine sehr ähnliche Funktion bietet. Erstmal Danke für den Hinweis! Denn ein einfaches

latexmk -pdf -pvc codierung.tex

macht die gleiche Arbeit wie ein der Befehl mit inotifywait. Einzige Einschränkung, die es nach Manpage gibt:

Zudem wird standardmäßig Adobe Reader (der bekanntermaßen nicht mehr für Linux existiert) für die automatische Vorschau verwendet. Um das zu ändern, folgendes im Terminal ausführen:

echo '$pdf_previewer = "start evince";' >> ~/.latexmkrc

Ich habe hier beispielhaft einfach mal evince eingetragen. Man kann natürlich auch Okular oder einen ganz anderen PDF-Reader seiner Wahl eintragen. Mehr Infos gibt es in der Manpage von latexmk.

19. Oktober 2014

Fertig! Git-Workshop auf der Ubucon 2014

Permalink svij | Blog

An diesem Wochenende fand die Ubucon 2014 in der Gemeinde Katlenburg-Lindau statt. Einen Rückblick auf die diesjährige Ubucon folgt an dieser Stelle allerdings noch nicht. Dies folgt im Laufe der Woche.

Im August hatte ich bereits angekündigt, dass ich dieses Jahr einen Git-Workshop auf der Ubucon halten werde. Wie geplant, tat ich dies dann auch. Für mich war der Workshop generell mal was neues, da ich bislang lediglich Vorträge auf der Ubucon gehalten habe. Aus demselben Grund war auch die Zeitplanung schwierig. Meine Schätzung von zwei bis drei Stunden hat ungefähr hingehauen, sodass wir nach knapp 2,5h fertig waren.

Insgesamt haben knapp 17 Leute teilgenommen. Die Anzahl war zum Glück nicht zu groß, sodass man einen guten Überblick halten konnte. In dem Workshop behandelte ich die grundsätzlichen Git-Features. Dies umfasst das einfache Committen von Änderungen, das Arbeiten mit Branches, sowie die Nutzung von Remote-Repositories.

Die Folien habe ich dieses Mal erstmals auf Speakerdeck.com hochgeladen. Diese lassen sich hier ansehen. Man sollte jedoch beachten, dass hier wie üblich meine gesprochenen Worte fehlen und sich die Folien daher grundsätzlich größtenteils an die Teilnehmer des Workshops richtet. Der Quell-Dateien finden sich separat in einem Repository auf Github.

Bald sollte dann auch endlich der erste Teil des Git-Tutorials fertig sein. Den veröffentliche ich dann, wie gewohnt, hier und in eine der kommenden Ausgaben von freiesMagazin.de.

Abstimmung zum Free! Music! Contest 2014

Permalink deesaster.org

Die Einsendungen zum Free! Music! Contest 2014 sind alle angekommen und nun geht es zur Abstimmung. Jeder, der 2,50 Euro gespendet hat – egal ob für den digitialen Download oder ein physisches Exemplar später – ist berechtigt mit abzustimmen. Jeder hat noch bis zum 31. Oktober 2014 Zeit, sich für die Abstimmung anzumelden und kann so einen Beitrag für den nächsten F!M!C-Sampler liefern.

Zur Abstimmung stehen fast 70 Musikstücke mit beinahe fünf Stunden Spielzeit aus verschiedenen Musikrichtungen wie Pop, Rock, Elektro, Punk oder Ska bereit. Die Sprache variiert dabei, wobei Deutsch und Englisch doch überwiegen. Auch Instrumental-Titel sind vertreten. Die Abstimmung geht über ein Online-Formular, wo man ganz einfach nur ankreuzen muss, welche Titel alles auf den Sampler sollen.

Wie bereits geschrieben unterliegen alle Songs einer Creative-Commons-Lizenz und können – nach der Abstimmung, wenn möglich – so entsprechend an jeden frei weiter verteilt werden. Wer freie Musik mag, sollte sich also überlegen, den Wettbewerb zu unterstützen.

Ich setz mich dann mal hin und höre etwas Musik! :)