RSS

16.04.2015

Kapitulation den Spam-Bots...

Da meine sorgfältig per hand generierten Captchas den heutigen Spam-Bots nicht mehr Stand halten, habe ich nun fürs erste die Kommentare deaktiviert. 


15.12.2014

HTML5 Editor: Brackets

Hier eine kleine Empfehlung für HTML5 Entwicklung: Brackets

Brackets ist ein Open-Source Editor der von Adobe entwickelt und vorrangetrieben wird. Das eigentlich interessante daran ist, dass der Editor komplett in Javascript geschrieben wurde, und daher wunderbar einfach erweiterbar ist. Eine ausführliche API Doku und ein kleines Tutorial für Plugins ist ebenso schon vorhanden.

Bevor man nun aber den dicken Download-Button clickt: dieses "Extract" war für mich eher unnützes Beiwerk. Damit kann man PSDs in die Adbobe Cloud hochladen um dann Style-Informationen herauszuziehen. Grundsätzlich eine nette Idee, wenn man viel mit PSDs arbeitet und sowieso schon einen Adobe-Account hat. Ich habe mich für die schlankere Version von Brackets ohne Extract entschieden.

Plugins

Durch die einfaches Plugin-API gibt es schon wirklich viele Erweiterungen, bisher gefundene und als nützlich befundene Plugins für mich wären:

Emmet

Beautify

Quick Search

Brackets Snippets

Response for Brackets <- cool!

Keybindings

Die default Keybindings sind etwas gewöhnungsbedürftig, aber seit kurzem kann man diese auch ganz einfach ohne Plugin anpassen. Die keys dafür kann man sich in der  Command.js anschauen, meine keymap.js schaut bisher so aus:

{
    "documentation": "...",
    "overrides": {
        "Ctrl-Alt-Down" : "edit.duplicate",
        "Alt-Down" : "edit.lineDown",
        "Alt-Up" : "edit.lineUp",
        "Ctrl-Shift-R" : "navigate.quickOpen",
        "Ctrl-O" : "navigate.jumptoDefinition",
        "Ctrl-Shift-C" : "edit.lineComment",
        "Ctrl-D" : "edit.deletelines",
        "Ctrl-Up" : "edit.addCursorToPrevLine",
        "Ctrl-Down" : "edit.addCursorToNextLine"
    }
}

Der gemeine Eclipse User wird sich damit etwas heimischer fühlen :-)

Ich nutze den Editor wirklich gerne, er reagiert schnell, und die vielen kleinen Innovationen wie das inline-editieren von verlinkten CSS Dateien, ohne die Datei tatsächlich öffnen zu müssen oder auch die Live-Vorschau machen das ganze zu einem netten und runden Paket.


09.11.2014

SVG Grafiken in Android

In Android 5 wurden nun endlich VectorDrawables eingeführt, leider als eines der Features die nicht abwärtskompatibel sind.

In einer meiner neuesten App ( LoL - SoloQ Companion) habe ich nun ein bisschen mit bestehenden Bibliotheken herumprobiert. Mehr oder weniger auf Anhieb hatte ein Fork von svg-android funktioniert. Auch wenn das Projekt nicht mehr weiterentwickelt wird, leistet es gute Dienste. Einfach compile 'com.github.japgolly.android:svg-android:2.0.6' ins Gradle Buildfile packen und es kann losgehen. An dieser Stelle ein wichtiger Hinweis: 

Für die ImageView muss der LayerType auf Software gestellt werden:

android:layerType="software"	

Kurz nachdem alles funktioniert hatte, habe ich androidsvg gefunden, was wohl noch aktiv gepflegt und entwickelt wird. Getestet hatte ichs nicht mehr :-)


20.07.2014

PHP/Apache Update - die Nachwehen

Nachdem der Apache auf Version 2.4 wieder läuft und alle VHosts findet, musste ich feststellen, dass der SVN Server nicht mehr erreichbar war. Die Fehlermeldung beim Starten mit dav_svn enabled will mir sagen, dass das Paket libapache2-svn nicht gefunden werden kann. libapache2-svn hat eine Abhängigkeit zu apache2.2-common welches nicht mehr unter 2.4 verfügbar ist.

Nach vielen Recherchen und dem Update von Subversion über apt und einer neuen Paketquelle wollte immer noch nichts so laufen wie geplant.

Die einzige Antwort (bei der ich gehofft hatte, ich finde eine bessere Lösung) die wirklich geholfen hatte, fand ich auf Stackoverflow. (Subversion selbst kompilieren, wobei während dem Vorgang abgebrochen werden muss um einige Konfgurationsparametern zu ändern)

Der einzige Unterschied: Die aktuellen Sourcen liegen in der Subversion-Version 1.8 vor, was aber nur bedeutet, dass bis auf die apache2-dev dependency schon alles richtig konfiguriert ist.

Eine gute deutsche Anleitung habe ich auch dazu gefunden: link

Nach der ganzen Kompiliererei ist nun endlich wieder alles funktionsfähig.


14.07.2014

PHP 5.5 Update auf Ubuntu 12.04 - inkl. Fehlersuche

TL;DR: Beim Update von PHP 5.3 auf 5.5 ändert sich die Konfigurationsdatei von httpd.conf in apache2.conf. In der neuen apache2.conf werden die Konfigurationen in sites-enabled per default nur mit der .conf Erweiterung geladen: IncludeOptional sites-enabled/*.conf. Da auf meinem Server keine der VHosts die .conf Extendsion hatte, wurde nichts gefunden. Das Einfügen der gleichen Zeile ohne ".conf" brachte wieder alles ins Lot.


Beim Weiterentwickeln von meinem kleinen aber feinen PHP Framework PLAIN_PHP, bin ich über einige Features von PHP gestolpert die leider erst ab Version 5.4 verfügbar sind. Nun läuft auf meinem Server das LTS Release von Ubuntu, welches per apt-get leider nur PHP auf Version 5.3 anbietet.

Wie immer ist Google zur Stelle und bietet mir eine schnelle Lösung an:

Hier sind die Kommandos etwas komprimiert:

Falls noch nicht vorhanden, benötigen wir das python-software-properties Package.

sudo apt-get update
sudo apt-get install python-software-properties
sudo add-apt-repository ppa:ondrej/php5
sudo apt-get update
sudo apt-get upgrade
sudo apt-get dist-upgrade

Augenscheinlich lief alles... der kurzer Check auf drailing.net belehrte mich allerdings eines Besseren: der geupdatete Apache Server zeigte das komplette Web-root Verzeichnis und keine meiner (Sub)-Domains wurde mehr gefunden.

Die Hektik war groß, immerhin habe ich ~200 treue Kunai-Benutzer!

Nun hätte man natürlich im Vorfeld in der offiziellen Doku den Hinweise lesen können, dass die Konfiguration von der httpd.conf in die apache2.conf umgezogen wurde. Ein schnelles Durchsuchen brachte die Übeltäter. Der default-Wert für die VirtualHosts in "sites-enabled" verlangt ein ".conf" als Dateierweiterung.

Das Einfügen der Zeile mit Wildcard (also dass auch alle Dateien komplett ohne Extension geladen werden) lies nach einem Apache2 Neustart alles wieder korrekt laden.

#apache2.conf
IncludeOptional sites-enabled/*.conf
IncludeOptional sites-enabled/*

Inzwischen läuft wieder alles, und es steht die wunderbare Welt der Traits offen!


17.05.2014

drailing.net jetzt mit RSS Feed

Bei der Planung meiner Webseite und des darunterliegenden CMS Systems, war die Erstellung mehrer Blogs angedacht. Der Gedanke dahinter war das bessere Strukturieren der Themenbereiche, wie z.B. aktuell beim UUAA-Blog. Das funktioniert soweit auch super, allerdings hatte ich einen globalen RSS Feed einfach vergessen.

Dieser Missstand wurde nun behoben. Neben den einzelnen Feeds der jeweiligen Blogs, gibt es nun auch einen Blog-übergreifenden Feed. Darin werden von allen Blogs die 20 neuesten Beträge veröffentlicht.

Link


13.05.2014

Asaph-Mikroblog

Ich habe auf meinem alten Blog schonmal darüber geschrieben, da ich Asaph aber immernoch regelmäßig benutze, sind inzwischen knapp 250 sinnvolle Links und Bildchen sorgfältig und handverlesen zusammengetragen worden. Durchklicken lohnt sich da auf jedenfall :-)

Link: asaph.drailing.net

Asaph ist ein Mikroblog, der nur über ein Bookmarklet gefüttert werden kann. Überall wo ich dann etwas interessantes finde, wird das Lesezeichen geklicked und der Link wird automatisch gespeichert.

Ich habe mir dann erlaubt auf einem Github Fork eine simple JSON Schnittstelle hinzuzufügen, die auf meiner drailing.net Startseite angesprochen wird um die 4 neuesten Einträge zu zeigen.


12.04.2014

Ein neues Projekt: libGDX - UUAA

Auch wenn in der Vergangenheit die Versuche ein fertiges Spiel zu produzieren immer wieder nicht zum Ende kommen wollten, lasse ich mich nicht davon abhalten es weiter zu versuchen :-)

Zur Unterstützung habe ich mir gleich kompetente Hilfe ins Boot geholt: der wunderbare Grafiker und Designer Benjamin Weiler. Aufmerksame Beobachter konnten ihn schon bei Kunai auf einem der Screenshots entdecken.

Der Arbeitstitel, mit guten Chancen übernommen zu werden lautet "Up, Up and away" - UUAA.

Da ich immer wieder und sehr gerne die verschiedenen Dev-Blogs zu anderen Projekten verfolge, habe auch ich vor dieses Projekt unter der "open development"-Fahne zu hissen und habe dazu einen eigenen Blog angelegt, auf dem ich über Implementierungsdetails, aufgetrenene und gelöste Probleme berichten und mit Benni über Artworks und Game Design philosophieren kann.


09.04.2014

Composer mit XAMPP (Windows) installieren

Da immer mehr Bibliotheken und Frameworks mit composer arbeiten, wollte ich mir diesen dependency-manager auch mal etwas genauer anschauen. Doch schon bei der Installation trat ein Fehler auf, der sich für alle dll's wiederholte.

PHP Startup: Unable to load dynamic library '\xampp\php\ext\xyz.dll' - Das angegebene Modul wurde nicht gefunden.	

Meine PHP Entwicklungsumgebung ist eine einfach XAMPP standalone Installation. Das Problem war, dass in der php.ini per default der Pfad zum "extension_dir" auf \xampp\php\ext gesetzt ist, composer nun aber versucht von außen die dll's zu laden und diese nicht findet.

In meinem Fall hat ein "Suchen & Ersetzen" von \xampp\ in D:\xampp\ in der php.ini Abhilfe geschaffen. (D:\xampp sollte natürlich durch das individuelle Verzeichniss ersetzt werden). Die normale funktionsweise sollte dadurch nicht beeinträchtigt werden.

Der nächste Punkt, welcher aber schon des öfteren beschrieben wurde, war die openssl Extension. Dafür einfach in der php.ini nach "php_openssl.dll" suchen, und das Semikolon vor der Zeile entfernen.

extension=php_openssl.dll

Dannach lief die Installation ohne Probleme.


12.03.2014

Verschiedene Android Layouts in Abhängigkeit des Screens

TL;DR: die Ordner-Suffixe für Density, Screen-Größe und Orientation funktionieren nicht nur bei layout und drawable-Ordnern, sondern bei allen. So braucht man für kleinere Anpassungen im Layout nicht das komplette XML zu kopieren sondern lagert einfach die Werte in values-XMLs aus.


Ein Beispiel: beim Wechseln von Portrait in Landscape sind kleinere Designanpassungen oft nicht zu vermeiden, und um dabei nicht das komplette XML Layout kopieren zu müssen, (vor allem wenn sich das grundlegende Layout nicht ändert) können einzelne Werte auch ausgelagert werden.

In den Android Developer Guidelines sind die verschiedenen Identifier zu finden mit denen man seine Layouts für die verschiedenen Screen-Eigenschaften anlegen kann. Allerdings erschien es mir immer etwas unpraktisch (und bei Änderungen auch sehr Fehleranfällig) das komplette XML zu kopieren um nur wenige Werte zu ändern. Heute kam dann die Erkenntnis: die Identifier werden nicht nur für die Layout-Ordner akzeptiert, sondern für alle Unterordner!

Also kann man neben dem "values" Ordner mit den Defaultwerten z.B. auch einen "values-land" (für Landscape) Ordner erstellen. Wenn man kein neues XML erstellen möchte, bietet sich die dimens.xml an, um die entsprechenden Werte unterzubringen. Hier im Konkreten Fall, die layout_weight eines LinarLayouts

<!-- res/values/dimens.xml -->
<resources>
	<item type="integer" name="element_weight">.8</item>
</resources>	

<!-- res/values-land/dimens.xml -->
<resources>
	<item type="integer" name="element_weight">.6</item>
</resources>

<!-- res/layout/activity_main.xml -->
...
<LinearLayout
        android:layout_weight="@integer/video_element_width_percentage"
        android:layout_width="0dp"
        android:layout_height="wrap_content" >
</LinearLayout>
...

Um dp oder sp Werte zu speichern kann das <dimen> Tag benutzt werden

<dimen name="image_padding_top">15dp</dimen>

Die Werte in den Ordnern ohne Suffix sind dabei immer Default und Fallback.


error success