Browsed by
Category: Tech

Ubuntu XAMPP und MySQL Workbench

Ubuntu XAMPP und MySQL Workbench

Ich nutze als Entwicklungsdatenbank gerne ein XAMPP Paket und stieß nun auf ein Problem als ich mit der MySQL Workbench einen Dump einer anderen DB lokal einspielen wollte. Ich konnte meine lokale DB zwar auslesen aber die zum einfügen benötigte SOCKS Verbindung wurde mit folgender Fehlermeldung abgelehnt:

Can’t connect to local MySQL server through socket ‚/var/run/mysqld/mysqld.sock

Das ist soweit auch richtig, denn unter /var/run/mysqld würde normalerweise der MySQL Daemon sitzen wenn ich ihn aus den Paketquellen installieren würde. Da ich aber XAMPP verwende liegt dieser unter /opt/lampp/var/mysql/mysql.sock. Da ich keine Möglichkeit gefunden dies der Workbench irgendwo einmal zentral mitzuteieln habe ich einfach mit

sudo mkdir /var/run/mysqld

ln -sf /opt/lampp/var/mysql/mysql.sock /var/run/mysqld/mysqld.sock

einen Link erstellt. Nun ist Workbench auch zufrieden und das importieren hat geklappt.

Update: zu beachten ist hierbei das der Link nach jedem Neustart wieder weg ist und neu angelegt werden muss. Um dies zu vereinfachen kann man die nötigen Shellbefehle in ein Shellskript verpacken und dieses per Autostart bei jedem Neustart ausführen lassen.

Webapplikationen mit Vaadin

Webapplikationen mit Vaadin

Nach einiger Evaluierungszeit, für ein anstehendes Projekt, hat sich meine Firma für den Einsatz eines Webframeworks namens Vaadin entschieden. Da ich von dem Framework und der dahinter stehenden Company sehr begeistert bin möchte ich meine 2 Cents zur Verbreitung beitragen und einmal kurz umreißen worum es sich handelt.

Vaadin ist ein finnisches Framework das von der gleichnamigen Firma entwickelt wird. Es handelt sich um ein serverseitiges Java Framework das auf dem Google Web Toolkit (GWT) aufsetzt. Die Aufgabe des GWT Compilers ist es den Java UI Code in natives Javascript zu übersetzen und gleichzeitig Anpassungen für die verschiedenen Browser vorzunehmen. Der Vorteil hierbei ist das die Nutzer keine PlugIns brauchen und die entstehenden Applikationen sofort auf allen gängigen Browser lauffähig sind. Die Entwickler brauchen durch dieses Vorgehen selber kein Javascript mehr zu entwickeln, wodurch vor allem das Debuggen sehr erleichtert wird da man die üblichen Java Debugger nutzen kann.

Im Gegensatz zu GWT nutzt Vaadin einen serverseitigen Ansatz. Das bedeutet das sämtliche Applikationslogik sowie auch die Views und deren Events etc. auf dem Server laufen. Hierdurch erspart man sich ein eigenes Management der Client/Server Kommunikation die aber natürlich mit etwas mehr Serverlast erkauft wird. Bei Vaadin selbst spricht man von 10.000 möglichen Concurrent Usern pro „modernem“ Server. Für eine Webapplikation die in einem eingegrenzten Nutzerkreis einen Desktop Applikation ersetzen soll dürfte das mehr als genug sein, für ein neues Twitter aber sollte man sich wohl eher nach etwas anderem umsehen (wobei ein relativ leichtes Clustering mehrerer Server möglich sein soll).

Vorteile die für Vaadin sprechen sind dass das komplette Java Ökosystem samt IDEs, Tools, Libraries und allem drum und dran genutzt werden kann. Selbst der Einsatz anderer JVM Sprachen wie Scala oder Groovy ist möglich. Da alles standardmäßig in Java entwickelt wird ist auch die Lernkurve für Java Entwickler nicht sehr steil und die Entwicklung kann relativ schnell starten. Im Gegensatz zu vielen anderen Java Frameworks nutzt Vaadin keine XML Konfigurationsfiles, was das Arbeiten ebenfalls sehr angenehm gestaltet. Nicht zuletzt ist Vaadin sehr gut dokumentiert. Es existiert ein eigens geschriebenes Buch das kostenlos herunterladbar oder auch als Druckversion zu haben ist (wird auch gern auf Konferenzen kostenlos verteilt). Sollten trotzdem noch Fragen offen bleiben steht ein Forum zur Verfügung an dem sich viele Mitarbeiter von Vaadin beteiligen. Reicht das immer noch nicht aus gibt es noch die Möglichkeit via Twitter, IRC oder Mail direkt Kontakt aufzunehmen der (meiner Erfahrung nach) auch immer recht schnell beantwortet wird, oder man besucht einfach eine der vielen Veranstaltungen wo Vaadin Talks abhält oder mit einer Booth zu gegen ist.

Wer sich für Vaadin interessiert kann sich einen ca. 45 minütigen Einstiegstalk von Joonas Lehtinen (CEO bei Vaadin) in englisch ansehen.

Mehr zum Thema Vaadin folgt sicher demnächst hier

Maven Archetypes in Eclipse

Maven Archetypes in Eclipse

Wer sich schon immer gefragt hat wieso auch bei installiertem m2eclipse Maven-Plugin nur eine minimale Auswahl an verschiedenen Archetypes in Eclipse zur Verfügung steht kann diese Auswahl ganz einfach manuell erweitern. Dazu muss im Eclipse das Maven Archetype Menü geöffnet werden:

Window > Preferences > Maven > Archetype

Dort kann unter der Option Add Remote Catalog ein beliebiges Repository eingetragen werden. Am sinnvollsten ist hier das Maven Central hinzuzufügen (http://repo1.maven.org/maven2/archetype-catalog.xml). Nun sollten etliche neue Archetypes zur Verfügung stehen.

maven archetypes

Von Android zu iOS

Von Android zu iOS

Ich möchte hier beschreiben wie ich von meiner Begeisterung für Android in eine Enttäuschung rutschte und schließlich bei iOS landete.

Schon lange wollte ich mir ein Smartphone kaufen, doch war (vor allem als Linux Fan) von dem damals verfügbaren Windows Mobile nicht so recht überzeugt. Als es schließlich die ersten Berichte von einem anstehenden Google Handy OS auf Linuxbasis gab war eigentlich klar das ich mir solch ein Gerät kaufen würde sobald es verfügbar war. Als es dann soweit war war die Freude groß und ich war noch nie von einem Gerät so überzeugt wie meinem Android Telefon. Knappe zwei Jahre später war ich vom kompletten Android Ökosystem absolut genervt und wollte unbedingt von dieser Plattform weg. Wie es dazu kam möchte ich im Folgenden erläutern.

Hardware
Eins der ersten Probleme mit meinem Android Phone war der ständig volle Speicher. Obwohl sich das heute gebessert hat war es mir unbegreiflich wieso Android Telefonhersteller immer am internen Speicher so extrem gespart haben. Speicher war nicht teuer und der Ausweg Apps auf SD Karten zu installieren war für mich immer eine Krücke die irgendwie unschön war. Hier lagen iPhone und Co. lange weit vorn. Dazu kommt die Verarbeitung. Viele Android Phones (und Tablets) sind auch heute noch Plastikbomber und wirken maximal mäßig gut verarbeitet. Die Apple Geräte gehören seither ins Premiumsegment und sehen dementsprechend aus und sind auch so verarbeitet (soll nicht heißen das da nix kaputt geht oder das jeder die Optik mag aber es ist sehr wertig).
Für viele Androidfans ein Negativpunkt, aber für mich bereits damals ein dickes Pro ist die geringe Geräteauswahl bei Apple. Ich hatte einfach keine Lust mehr ein halbes Jahr lang den Smartphonemarkt zu studieren um dann festzustellen das ich auf mein Wunschgerät noch drei Monate warten muss bis es bei meinem Provider dann doch nicht kommt. Ich wollte einfach jetzt das beste verfügbare Telefon kaufen und diese Entscheidung fällt bei iOS sehr viel leichter. Diese Tatsache führt auch dazu das ich sicher bin das auf meiner Hardware die nächsten zwei Jahre jede Top App die ich haben möchte laufen wird. Bei Android führt das Hardwarewettrüsten dazu das ich mittlerweile (wie früher bei PCs) vor dem Kauf auf Kernanzahl, Grafikchip und Benchmarks achten muss um nich schon in einem halben Jahr die wirklich coolen Spiele nicht mehr spielen zu können. Hier sollte Google dringend eingreifen und die Plattform besser spezifizieren.

Apps
Smartphones leben hauptsächlich durch die verfügbaren Apps und für beide Systeme gibt es mehr als genug. Ich muss vorweg schicken das ich für fast alle meine Anforderungen auf beiden Systemen Apps gefunden habe.

Es gibt hier einen großen Mentalitätsunterschied zwischen Android und iOS Usern. Auf iOS scheinen die Nutzer sehr viel eher bereit zu sein auch für triviale Apps Geld zu zahlen als auf Android. Daher sind die meisten Apps auf Android kostenlos während sie auf iOS mehrheitlich Geld kosten.
Der zweite Unterschied ist die Qualität der Apps. Von der Usability und der User experience her sind die meisten iOS Apps den Android Pendants haushoch überlegen. Das gilt sowohl für einfache Dinge wie RSS Reader, aber auch für dieses großer Unternehmen wie z.B. Facebook.
Aus meiner Sicht korrelieren diese beiden Punkte eng miteinander. Im iOS Ökosystem gibt es kleine Entwicklerbuden wie z.B. Die Codingmonkeys die sich als Ein- oder Zweimannfirmen gegründet haben und Vollzeit Apps entwickeln (ich weiß das die Monkeys auf dem Mac angefangen haben und dort immer noch aktiv sind). Dadurch wird viel Zeit in die Apps investiert und natürlich viel über die Nutzerexperience nachgedacht weil man hinterher auch Geld damit verdienen möchte. Aus demselben Grund werden die Apps auch intensiv gepflegt und von Bugs befreit bzw. Nutzerwünsche umgesetzt etc.. Auf Android entstehen viele Apps als Feizeitprojekte im Open Source Stil und so sehen sie dann oftmals auch aus. Versteht mich nicht falsch, ich habe nichts gegen Open Source, ich halte es nach wie vor für wichtig das es sowas gibt und bin auch eingroßer Fürsprecher, aber wenn man ehrlich ist endet sowas oft in Bastellösungen von Nerds für Nerds mit schrecklichen UIs weil Nerds sich einfach oft nicht für UIs interessieren und am liebsten eh alles auf der Shell hätten (wer Überspitzungen findet darf sie behalten ;)).

Für mich bleibt in diesem Punkt als Fazit das die täglich genutzten Apps wie z.B. Twitter, google Reader, Mail Client, ToDo, XMPP, Read Later, Podcast- Musik- und Hörbuchplayer sowie Videoapp zwar auf beiden Systemen zur Verfügung stehen aber ausnahmslos so viel mehr Spaß bei der Bedienung auf iOS machen das die Entscheidung hier nicht schwer fällt. Ich war in vielen Punkten sogar extrem überrascht wie man z.B. einen google Reader umsetzen kann das er einfach so viel mehr Spaß macht als alles was ich von Android kannte (ich nutze hier Reeder). Für diese Art Apps gebe ich mittlerweile sogar sehr gern Geld aus um die Entwickler zu unterstützen und auf diesem Weg danke zu sagen für die Mühe die darin steckt. Ich finde sogar das manche Apps zu günstig sind weil ich Bedenken habe ob die Entwickler sich mit den Preisen finanzieren können und genug Drive bekommen die Apps weiter zu verbessern und am Leben zu erhalten.

Spiele sind ein Spezialfall. Als ich mein erstes Smartphone bekam war ich schon lang kein Gamer mehr und wurde es auch auf Android nicht. Ich habe mir hier und da mal was geladen aber meist waren die Spiele langweilig und haben nur Platz belegt. Mit iOS änderte sich das grundlegend. Hier fand ich völlig neue Spielkonzepte die flüssig liefen und lange Spielspaß lieferten. Daran hat sich bis heute nichts geändert. Ich entdecke immer wieder Spiele für die ich gern Geld ausgebe und die mich dann auch einige Stunden gut unterhalten können.

Innovationskraft
Ein sich hier direkt anschließender Punkt ist die Innovation bei den Apps. Es ist nach wie vor so das viele neue Apps, Spiele und Ideen aus der iOS Welt kommen und erst später (wenn überhaupt) den Weg nach Android finden (Wunderlist, Instagram etc.). So gibt es soweit ich weiß bis heute für Android keinen konkurrenzfähigen Twitterclient zu Tweetbot auf iOS.

Updatepolitik
Hier ist einer der Punkte der mich am meisten genervt hat bei Android. Niemand weiß beim Kauf seines Android Phones/Tablets ob er überhaupt je ein Update bekommt. Bevor es hier ein Update gibt muss zunächst der Hersteller seine Anpassungen an UI etc. vornehmen und es dann freigeben. Daran wird er nur im begrenzten Maße ein Interesse habe da natürlich auch der Aufwand bei einer Produktpalette wie beispielsweise von HTC sehr groß ist. Doch selbst wenn das passiert ist bekommt der Nutzer das Update nicht denn dann hat noch der Netzbetreiber den Daumen drauf und kann seine Erweiterungen einbauen oder es aus politischen Gründen zurückhalten. Das alles führt zur Fragmentierung des Systems und macht die Sache für Entwickler extremst schwer da sie nicht einfach eine neue Android Version targetten können wenn sie nicht den Großteil der Nutzer als potenzielle Kunden verlieren wollen. So hat das aktuelle Android 4.0, das seit einem halben Jahr veröffentlicht ist, noch immer keine nennenswerte Verbreitung.
Im Gegensatz dazu veröffentlicht und verteilt Apple seine Updates selbst. Diese sind meist am Tage der Präsentation für alle unterstützten Devices verfügbar. Aktuell wurde selbst das 2009 veröffentlichte iPhone 3GS noch mit Updates versorgt wodurch sich auch aktuelle Apps noch nutzen lassen. Das letzte iOS Update 5.1 hatte binnen zwei Tagen eine höhere Verbreitung als Android 4.0 und nach einer Woche eine höhere als jede andere Android Version.

Ich weiß das man nun unter Android rooten und selbst flashen kann, aber ganz ehrlich, da habe Ich keine Lust zu und der Großteil der nicht Nerds wird das auch nicht tun.

Ökosystem und Distribution
Hier muss ich sagen das ich den aktuellen Play Store von google nicht ausprobiert habe aber ich Berichte aus meiner Erfahrung.
Ein ewiges Ärgernis für mich war es immer das ich im Android Market nichts gefunden habe. Man bekam Apps empfohlen und die Suche hat sie nicht gefunden. Also ging ins Web und suchte im Browser bis ich einen gültigen Link in den Market fand und siehe da die App. war doch da.
Hinzu kommen die Schwachen Charts. Ewig fand man dort nur die gleichen Apps die den Anschein erweckten für ihre Platzierung gezahlt zu haben. Innovative Apps kleiner Entwickler konnte man beim Stöbern beinahe nie finden.
Obwohl der AppStore auch sicher Schwächen hat so funktioniert er für mich in diesen Punkten wesentlich besser. Was aber Apple für mich hier weit vor google platziert ist das komplette Ökosystem. Ich habe hier unter einer Plattform einen Markt für Apps und Spiele, aber auch TV Serien, Filme, Musik und Bücher die ich auch alle gern nutze weil die Preise meist gut sind und die Nutzung so einfach ist. Hinzu kommen die großen Verlage die nahezu alle Ihre Zeitungen in Appform veröffentlichen (ich kann den Guardian und die Zeit sehr empfehlen). Sehr interessant ist auch iTunesU wo internationale Videos von Hochschulvorlesungen heruntergeladen und abonniert werden können.

Fazit
Insgesamt ist iOS für mich die bessere und stärkere Plattform die dem Nutzer mehr entgegen kommt. Völlig Abseits von Computerbild Diskussionen über fehlende Schnittstellen oder SD Karteneinschübe bzw. Benchmarks ist das iOS System einfach kompletter und die Strategie die schlüssigere.
Android Geräte sind aus meiner Sicht nicht konkurrenzfähig zu iOS Geräten. Ich möchte mein Android Phone, aber nach nun einem Jahr iOS vermisse ich nichts, bin immer noch hoch zufrieden und habe mein iPhone und mein iPad um ein Vielfaches produktiver genutzt und mehr Spaß damit gehabt als es mit meinem Android jemals möglich war. Auch die Integration ins tägliche Leben und Verbesserung der multimedialen Heiminfrastruktur steht auf einer höheren Ebene.

Ich weiß das Android immer damit wirbt Open zu sein und ich habe lang damit gehadert weil ich diese Idee befürworte, aber ganz ehrlich inzwischen ist es mir total egal. Die User experience ist für mich so viel besser auf iOS das dafür auch gern proprietäre Systeme nutze.
Wenn mein Vertrag ausläuft werde ich gern auch wieder nach Alternativen schauen aber ich habe wenig Hoffnung das Android die Lücke geschlossen haben wird. Android kann man kaufen und es funktioniert auch, aber die Schwächen merkt man sofort wenn man mal ein iOS besessen hat (mal benutzen reicht meiner Meinung nach nicht). Ich würde jedem zu iOS raten der bereit ist Geld für Software auszugeben und Wert auf User experience legt.

Texmaker und das Abkürzungsverzeichnis

Texmaker und das Abkürzungsverzeichnis

Wer einmal ein längeres Dokument wie z.B. eine Diplom-, Master- oder Bachelorarbeit geschrieben hat weiß wie nervig an der Stelle Officeprodukte sein können weil sie meistens nicht das tuen was man gerade möchte. Die Alternative dazu heißt LaTex. Hierfür gibt es einige Editoren die bestimmte Makros mitbringen. Der Editor meiner Wahl ist schon seit einiger Zeit TexMaker.

Als ich nun für meine anstehende Masterarbeit die ersten Kapitel geschrieben habe stellte ich fest dass das mit Nomenclature erstelle Abkürzungsverzeichnis nicht auftauchte. Nach einiger rumsucherei musste ich feststellen das ich zwar alle Pakete installiert und auch meine Syntax korrekt war, aber Texmaker (zumindest in der Ubuntu Version) einfach ein so sparsames Makeindex Kommando per default eingestellt hat das die benötigten Files für das Abkürzungsverzeichnis gar nicht erst erstellt werden. Wer mal das gleiche Problem hat kann es wie folgt abstellen:

Den Menüpunkt

Optionen => Texmaker konfigurieren => Kommandos

auswählen. Hier dann die Zeile Makeindex löschen und mit folgendem ersetzen:

makeindex %.nlo -s nomencl.ist -o %.nls

und schon klappts auch mit dem Abkürzungsverzeichnis.