Docker

Was bringt einem Docker? Docker isoliert z.B. einen Jenkins in einem Container auf deinem Ubuntu Server und ermöglicht es dazu noch weitere Anwendungen in anderen Containern bereitzustellen.

Installation

Aktuell wird Windows von Docker nicht unterstützt. Die folgende Anleitung beschreibt die Installation von Docker auf einem Ubuntu 14.10 Server. Einen solchen Server kann man sich einfach mit Hilfe z.B. der Virtualbox lokal auf seinem Rechner einrichten. Dazu benötigt man ca. 10 GB Festplatten Platz und genug RAM damit die Virtuelle VM nicht zu langsam ist. Wer noch Ubuntu <= 13.10 verwendet sollte die Anmerkungen unter der Docker URL befolgen. Docker kann einfach mit dem Tool “wget” heruntergeladen werden und mit sh wird der Installationsprozess gestartet:

wget -qO- https://get.docker.com/ | sh

Validieren kann man die Installation mit:

sudo docker run hello-world

Erste Schritte

Um die ersten Kenntnisse und Schritte in Docker zu lernen empfehle ich das Online Tutorial von Docker: https://www.docker.com/tryit/

NodeJs - starten eines HTML und Javascript Webservers

Mit NodeJs einen einfachen HTML und Javacript Webserver aus Eclipse starten

Mit Hilfe dem Eclipse Note Plugin aus “nodeclipse” kann man Javascript Dateien als Node Application starten. runAsNodeApplication Damit man aber mit Node aber auch einen minimal Webserver starten kann braucht man die Abhängigkeit “serve-static”. Dazu erstellt man am besten in dem root Ordner seines Webprojektes eine “package.json” Datei mit dem folgenden Inhalt:

{
“name” : “ProjectName”,
“version” : “0.0.1”,
“dependencies” : {“serve-static” : “>=1.9.2”}
}

Danach auf der Command Line einfach folgendes eingeben:

npm install

und alle Abhängigkeiten werden automatisch in das Verzeichnis “node_modules” installiert. Wer git verwendet sollte deswegen am besten die “.gitignore” Datei um den Eintrag “/node_modules/“ erweitern. Das folgende Script startet dann den Webserver auf Port 4500:

var connect = require(‘connect’);
var serveStatic = require(‘serve-static’);
var webserverApp = connect();

webserverApp.use(serveStatic(“./“));
webserverApp.listen(4500);

Welches Verzeichnis verwedet wird gibt “serveStatic(“./“) an. In diesem Fall das wo die Datei liegt. Starten kann man das Script dann wie oben gezeigt mit “Run As >> Node Application”.

HTML5 / Javascript für Desktop Anwendungen

Eine Anwendung die mit HTML5 und Javascript erstellt wird, kann auf vielen Plattformen verwendet werden. Als Mobile App oder auch als Desktop Anwendung und ist zudem nicht an ein Betriebssystem gebunden wie das z.B. bei nativen Android Apps der Fall ist. Wer aber in Google nach “javascript html5 desktop application” sucht bekommt als Ergebnisse TideSDK, AppJS, BracketsShell, Sencha und Node-webkit. Während bei TideSDK und AppJS es anscheinend keine Entwicklung mehr gibt, ist Sencha Desktop eine kommerzielle Lösung. Ich habe mir daher mal Node-Webkit im Zusammenhang mit NodeJS näher angeschaut. Sucht man nach Beispielen und versucht diese unter Linux 64bit und “grunt” zum laufen zu bringen, landet man sehr schnell bei einem Fehler mit “libudev.so.0”. Um diesen Fehler zu lösen hat bei mir nur das Script von rockiger aus seiner Anwendung https://github.com/rockiger/akiee/blob/master/scripts/build_binaries.sh geholfen. Nach den ersten Gehversuchen hat sich aber schnell gezeigt das mit Hilfe von Node-Webkit im zusammen spiel mit NodeJs die Entwicklung von Desktop Anwendungen schnell und einfach möglich ist. Es wird zudem Windows, Linux und Mac unterstützt (https://github.com/nwjs/nw.js/wiki/How-to-package-and-distribute-your-apps). Desweiteren kann mit den gleichen Dateien eine Android App erstellt werden oder eine Webseite.

Eclipse Tool für NodeJs, AngularJs etc.

Eclipse Tool für NodeJs, AngularJs etc.

Nodeclipse, Enide – Node.JS development in Eclipse

Nodeclipse & Enide. /noʊdˈklɪps/ , AnIDE. Tools for JavaScript and Java: Node.js, Android, Gradle and more. Links. News. Features. Demo. History. Usage. Download. Support. Support us. About. Since 2013 our motto has been “One-stop [work]shop for Node.JS tools”. We can’t develop everything at …

This was posted on Google+

Apache Lizenz oder MIT Lizenz für Github Projekte?

Wer Code auf Github in einem öffentlichen Repository bereitstellt, sollte sich Gedanken über die Lizenz für den Code machen. Falls keine Lizenz angegeben wird bedeutet das aber nicht das automatisch jeder mit dem Code machen kann was er möchte. Da der Inhaber des Codes automatisch ein Urheberrecht für den Code hat. Es gibt verschiedene Arte von Lizenzen:

  • Strenge Copyleft-​Lizenzen (z.B. GNU Gene­ral Public Licence)
  • Non-​Copyleft-​Lizenzen (BSD Licence, Apa­che Licence, MIT)
  • Lizen­zen mit ein­ge­schränk­tem Copy­left (z.B. Mozilla Public Licence, LGPL)

siehe dazu auch http://www.ifross.org/lizenz-center und http://www.opensource.ch/oss-knowhow/details/kbarticle/open-source-lizenzen-ein-ueberblick/ Bei der Überlegung für welche Lizenz man sich entscheidet, sollte man darauf achten wie man selbst in Zukunft den Code verwenden möchte und wie man möchte das ihn andere verwenden. Falls man z.B. erlauben möchte das abgeleitete Werke des eigenen Codes auch unter anderen Lizenzbedingungen veröffentlicht werden und auch keine Verpflichtung zur Offenlegung des Sourcecode vorhanden sein soll bieten sich Non-Copy-Lizenzen an. Diese Lizenzen bieten für Lizenznehmer den größten Freiraum und je nach Lizenz unterschiedliche Pflichten. Falls man jede Änderung aber zur Offenlegung verpflichten möchte bietet sich einer der Strengen Copyleft-Lizenzen an. Diese sorgen dafür das Änderungen unter der gleichen Lizenz veröffentlicht werden müssen und haben zudem teilweise weitreichende folgen bei der Verwendung. Zwischen den beiden gibt es dann noch die Lizenzen mit eingeschränktem Copyleft. Diese bieten sich z.B. bei Bibliotheken an - so ist der MySQL Connector unter der LGPL, während MySQL Community selbst unter der GPL steht. DieLizen­zen mit ein­ge­schränk­tem Copy­left ermöglichen damit Änderungen an Strengen Copyleft-Lizenzen die in eigenen Dateien vorgenommen wurden unter einer nicht so stregen Lizenz zu veröffentlichen und damit z.B. das einbinden des Connectors in die eigene Software zu ermöglichen ohne das daraus folgende für die Lizenzierung der Software ensteht. Wer also seinen Code auf Github zur Verfügung stellen möchte und eine Verwendung durch andere ohne ein Copyleft ermöglichen möchte, kann sich z.B. zwischen der MIT und der Apache Lizenz entscheiden. Dabei unterscheiden sich die beiden vor allem in den Angaben die für Änderungen gemacht werden müssen, während diese bei der MIT nicht notwendig sind - müssen bei der Apache Lizenz alle geänderten Dateien angegeben werden (https://www.apache.org/licenses/LICENSE-2.0). Als Alternative gibt es noch die Creative Commons Lizenzen welche nicht nur für Software verwendet werden können. Dabei sind je nach gewählter Lizenz die Rechte und Pflichten des Lizenznehmers unterschiedlich. So kann eine Lizenz mit und ohne kommerzielle Verwendung gewählt werden. Mehr dazu unter http://creativecommons.org/choose/?lang=de und http://de.creativecommons.org/was-ist-cc/. Weitere Infos zu dem Thema gibt es unter den folgenden Links:

Zusammenfassend lässt sich sagen das die Entscheidung für eine Software davon abhängt wie andere die Software verwenden sollen und was mit Änderungen durch andere passieren soll. Wen bisherige Urteile zu Lizenzen interessieren der findet einige davon unter http://www.ifross.org/v-urteile.

Grails 3.0 mit neuem Unterbau veröffentlicht http://www.heise.de/newsticker/meldung/Grails-3-0-mit-...

Grails 3.0 mit neuem Unterbau veröffentlicht

http://www.heise.de/newsticker/meldung/Grails-3-0-mit-neuem-Unterbau-veroeffentlicht-2596162.html

Grails 3.0 mit neuem Unterbau veröffentlicht

Von Grund auf neu geschrieben steht Grails 3.0 nun mit einer Reihe zusätzlicher APIs und Tools zur Verfügung. Die sollen alte Komponenten ersetzen. Was die Zukunft des Projekts anbelangt, sind allerdings noch einige Diskussionen zu führen.

This was posted on Google+

Travis-Ci - Continuous Integration Tool für OpenSource Github Projekte

Wer ein OpenSource Github Projekt hat und dieses gerne automatisch bauen lassen möchte z.B. mit maven, gradle, composer etc. kann das mit https://travis-ci.com/. Es ist natürlich auch mit nicht OpenSource Projekten möglich, dann aber nicht mehr kosten frei (https://travis-ci.com/plans). Um es mit Github zu verwenden muss man auf “Start your free trial!” klicken und dann die Verbindung mit Github herstellen. Danach kann man dann einzelne Github Repos hinzufügen. Damit der Build auch ausgeführt werden kann wird im root Verzeichnis eine Datei mit dem Namen “.travis.yml” benötigt. Als Syntax wird hier die Sprache YAML verwendet. Unter der Url http://lint.travis-ci.org/ kann man die Datei validieren lassen. Für ein Java Maven Projekt könnte die Datei z.B. wie folgt aussehen: language: java install: mvn clean install Weitere Beispiele gibt es auch unter https://github.com/travis-ci-examples. Wenn alles erfolgreich war sieht es wie unter https://travis-ci.org/lightszentip/password-security aus.

Elm unter Linux installieren / How to install elm-lang under linux

Um unter Linux mit der Sprache Elm zu programmieren, muss man diese installieren. Leider findet man unter http://elm-lang.org/Install.elm nur etwas für Mac und Windows. Mit den Debian GHC und cabal packages konnte ich elm nicht installieren. Daher am besten diese selbst compilern und installieren. Dafür verwendet man die Anleitung https://gist.github.com/yantonov/10083524 um GHC und cabal in der aktuellen Version zu installieren. Wichtig, am Ende gib es den Punkt “# add path to cabal to PATH environment”. Dort muss vor die beiden zeilen noch ein export und dann kann das ganze wie bei ghc in der Datei ~/.profile eingetragen werden. Danach kann man dann der Anleitung “Build from Source” auf http://elm-lang.org/Install.elm folgen:

cabal update
cabal install cabal-install
cabal install -j elm-compiler-0.14.1 elm-package-0.4 elm-make-0.1.1
cabal install -j elm-repl-0.4 elm-reactor-0.3

Es ist möglich das es danach dann zu Fehlern kommt. Sollte es Probleme bei einem Package geben, findet man das log unter ~/.cabal/logs/.log Bei mir gab es einen Fehler bei der Installation von haskeline-0.7.2.1. Die Lösung war die Pakete lib64tinfo5 und libtinfo-dev über den Paketmanager Synaptic zu installieren. For english: Use for install ghc and cabal not the debian or suse packages. Use the step for step howto from https://gist.github.com/yantonov/10083524. Please add the steps after “# add path to cabal to PATH environment” to your ~/.profile file and add the word “export” for each line. After this you can use the howto from http://elm-lang.org/Install.elm for “Build from source”. I you have a problem, check the logs under ~/.cabal/logs/. For Problems with haskeline-0.7.2.1 you must install with apt-get the packagelib64tinfo5 and libtinfo-dev.