Boehrsi.de - PHP mit mb_ Funktionen
Für meine Homepage nutzt ich bekanntlich PHP, dies ist mit der Zeit so gewachsen und eigentlich läuft soweit auch alles. Doch es gibt immer wieder Dinge die ich optimiere, bzw. welche nicht zu 100 Prozent so laufen wie ich es gerne hätte. Dazu gehört z.B. die Extraktion von Teilen eines Strings. Grundsätzlich ist da natürlich substr() open_in_new dein Freund, doch nur solange das Encoding mitspielt. Denn UTF-8 Zeichen können Multi-Byte Inhalte sein und dadurch ergeben sich interessante Probleme. Denn Umlaute werden, wenn man Pech hat und sie genau über die Grenze eines substr() Aufrufes hinweg gehen, fehlerhaft verarbeitet. Dies kann zu Anzeigeproblemen oder größeren Fehlern führen. Aus diesem Grund empfehle ich dringend mb_substr() open_in_new zu nutzen, was das Multi-Byte Äquivalent zur normalen substr() Funktion ist. UTF-8 nicht zu nutzen ist nebenbei keine Alternative, denn es führt an diversen Stellen zu mindestens genauso vielen Problemen (Stichwort: Emoticons). Es gibt übrigens noch weitere mb_ Funktionen open_in_new, welche man sich definitiv auch mal ansehen sollte.
GitList - Eigene remote Repositories im Browser betrachten
Wer einen Server hat und auf diesem ein GIT betreibt, der hat mit GitList die Möglichkeit über den Browser diverse Inhalte ansehen zu können. Ich rede dabei nicht von aufwendiger Verwaltung, sondern von einem reinen Viewer. Ich wollte genau dies, um auch online die Commits und Branches einsehen zu können. Ich arbeite zwar alleine an meinem Code, doch selbst dafür ist diese Funktion praktisch. Einzige Anforderung die ich hatte war ein geringer Konfigurationsaufwand und vor allem wenige Abhängigkeiten. Denn ich habe ein relativ komplexes Setup auf meinem Server und möchte dies nicht durch eher unwichtige Dinge negativ beeinflussen. Hier ist GitList sehr praktisch, denn es ist ein reines PHP basiertes Interface, mit wenigen Einstellungen über eine Config in Form einer .ini Datei. Anschließend fehlt nur noch der Upload und die entsprechenden Rechte müssen gesetzt sein. Dabei sollte der Web-User auf den Root-Ordner der Repositories zugreifen dürfen und auch PHP muss die Ausführung dort erlaubt werden (open_basedir open_in_new). Auf der GitList Homepage gibt es ein paar weitere Tipps bei Problemen open_in_new, diese werden z.B. über Änderungen an der htaccess File open_in_new behoben. Bei mir läuft alles gut, abgesehen vom Graphen der für die Commits erstellt wird. Dieser funktioniert bei mir nur für den Master Branch korrekt und ich hoffe dort gibt es noch einen Fix. Allgemein läuft aber alles gut und ich kann einen Test damit nur empfehlen.
Weekly Coding Question - Neue Reihe im Blog
Ich programmiere auf der Arbeit und ich programmiere zu Hause. Dabei nutze ich Java für Android, PHP für die Homepage und diverse weitere Sprachen. Dazu die nötigen Tools, IDEs, Toolchains und was es nicht noch alles gibt. Außerdem schaue ich mir gerne neue Techniken an. Egal ob komplett neue Sprachen, Architekturmuster oder allgemeine Entwicklungsansätze. Doch es gibt unglaublich viel in diesem Bereich und man hat ja leider nur begrenzt Zeit. Aus diesem Grund muss man sich oft entscheiden. Diese Entscheidungen, die Wege zu diesen und vielleicht auch die eine oder andere Diskussion, die ich eigentlich mit mir selber führen würde, möchte ich gerne mit euch teilen. Dabei wird es nicht wie in den meisten News ein Problem mit einer Lösung oder eine reine Info geben, sondern meine Gedankengänge und meine Ideen. Nicht unbedingt abschließende Entscheidungen, sondern eher Ansätze und Möglichkeiten solltet ihr von News dieser Reihe erwarten. Ich persönlich erhoffe mir den einen oder anderen Kommentar und neue Ansichten zu Themen die ich interessant finde. Denn genau diese Gespräche in den Kommentaren sind für mich der Lohn den ich bekomme, wenn ich diesen Blog betreibe. Ich plane einmal pro Woche, zum Wochenende hin einen Beitrag zu veröffentlichen. Ca. fünf Themen habe ich bereits, falls ihr Vorschläge habt bin ich wie gewohnt aber auch offen für diese.
ShellCheck - Fehler in Shell Scripten erkennen und beheben
Linux hat auf für mich als Windowsnutzer einen Vorteil, eine gute Scripting Umgebung und das seit langer Zeit. Die Shell ist mächtig, die Syntax brauchbar und man kann quasi alles automatisieren was man möchte. Doch nur weil man ein Script schreibt und dieses vielleicht auch funktioniert, heißt dies nicht das es sicher oder fehlerfrei ist. Deswegen empfehlen sich Tools zum überprüfen des Codes, doch dies vernachlässige ich zumindest oft bei Shell-Scripten. Denn ich schreibe sie häufig direkt in nano open_in_new oder aber in Notepad++ open_in_new, wenn ich von einem Windows System aus Remote arbeite. Doch da kam mir ein guter Tipp eines Arbeitskollegen zu Hilfe, denn dieser empfahl mir ShellCheck. Ein simples online Tool, welches übersichtlich und schnell Fehler aufzeigt und bei Bedarf auch lokal installiert werden kann. Dabei wird nicht nur auf Fehler hingewiesen, auch Verbesserungsvorschläge werden gegeben. Ich habe basierend darauf einiges optimiert und kann nur sagen es funktioniert super. Allerdings sollte man alle “automatischen” Tools mit Vorsicht genießen und ihnen nicht komplett blind vertrauen. Im Zweifel lieber einmal zu viel testen und sich schlau machen, als einmal zu wenig.
GIT Server Verwaltung mit Gitolite
In meinem ersten GIT Beitrag beschrieb ich mein Setup, um GIT auf meinem Server für die Entwicklung von Android Apps nutzen zu können. In diesem Zuge wurde ich auf zwei weitere Lösungen hingewiesen. Zum einen auf GitLab, welches eine umfangreiche Software ist. Sie bietet ein komfortables Web-Interface, Verwaltungsmöglichkeiten und gemeinsames Arbeiten, es geht hier also um ein quasi selbst gehostetes kleines GitHub. Und zum anderen empfahl man mir als kleinere Lösung für die reine Verwaltung von Repositories Gitolite. GitLab sieht extrem interessant und umfangreich aus, ist für meinen Zweck aber zu komplex. Denn ich arbeite quasi nur alleine an meinen Projekten und sobald ich sie doch öffentlich zugänglich mache, landen sie bei GitHub. Zusätzlich bedarf GitLab des einen oder anderen Pakets und diverser Einstellungen, welche vermutlich nicht direkt mit meiner Server Konfiguration funktionieren würden. Gitolite hingegen könnte noch interessant werden und ich werde es vielleicht in der Zukunft testen. Es ermöglicht schnell und einfach, wiederum über ein Git Repository, die Verwaltung von Nutzern und Repositories. Ihr müsst euch um nichts weiter kümmern, als die Nutzer und Repositories in die Config-Dateien einzutragen und schon geht es los. Auch wenn ich nur einen Nutzer habe, so ist die Erstellung neuer Repos vielleicht bald interessant, falls ich mehrere kleine Projekte starte. Die Installation von Gitolite ist dabei relativ simpel und wird im entsprechenden GitHub Projekt open_in_new sehr gut auf englisch beschrieben. Ich ziere mich aktuell noch einen Test durchzuführen, da ich bereits mehrere Repositories aktiv nutze und diese funktionierende Infrastruktur nicht beschädigen möchte. Falls ihr Erfahrungen mit Gitolite habt, meldet euch mal in den Kommentaren und erzählt wie ihr damit klar kommt und wie ihr es nutzt.
HTML5 Validator Bookmarklet
Wer Webseiten erstellt muss auf vieles achten, denn neben der Kompatibilität mit diversen Browsern, ist auch die Validität des HTML Codes ein nicht unwichtiger Punkt. Als Firefox Nutzer habe ich bis dato auf das Addon HTML Validator open_in_new gesetzt. Doch für die HTML5 online Validierung muss man nun leider eine Version von einer externen Seite installieren und kann nicht mehr auf den Addon Store setzen. Alternativen wie das Addon HTML 5 Validator open_in_new öffnen nur eine Homepage, welche die Ergebnisse der Validierung anzeigt. Diese Funktion ist zwar hilfreich, aber ein Addon braucht man dafür beim besten Willen nicht. Also habe ich mir ein kleines Bookmarklet geschrieben.
Eigenen remote GIT Server nutzen
Android Apps zu entwickeln bedarf meiner Meinung nach nicht nur das eigentliche Wissen rund um die Programmierung. Zusätzlich sollte man sich auch mit der Entwicklungsumgebung, Versionsverwaltungen und verschiedenen weiteren Themen auseinandersetzen. Denn ansonsten gibt es sobald man mit mehreren Leuten oder alleine an größeren Projekten arbeitet Probleme. Deswegen gibt es viele Dinge die einem das Leben erleichtern, auch wenn sie vielleicht zu Beginn etwas Arbeit bedürfen. Dazu gehört meiner Meinung nach auch eine gute Versionsverwaltung. In diesem Bereich setzte ich bis dato auf SVN, da mir GIT gelinde gesagt in diversen Bereichen zu kompliziert war. Durch die Arbeit habe ich nun einen wesentlich besseren Zugang zu GIT, auch wenn ich bei weitem noch nicht alles entsprechend beherrsche und lieber auf meine Notizen zurückgreife, als alles aus dem Kopf und dafür vielleicht falsch zu machen. Diesen tieferen Einblick in GIT und meinen geplanten Wechsel zu Android Studio habe ich mir heute Nachmittag zum Anlass genommen und meine drei Android Apps (zwei bereits im Store und eine ist noch in der Konzeptionsphase) auf Android Studio und GIT migriert. Falls auch euch GIT in diesem Bereich interessiert, schaut euch mein kleines How To im unteren Bereich der News an.
OSMC - RTL Now Plugin funktioniert wieder
Unter OSMC gibt es viele praktische Addons, da man als Basis auf das bekannte Media Center Kodi (ehemals XBMC) setzt. Eines dieser Plugins beschrieb ich schon häufiger, nämlich die Now Plugins. Diese geben euch Zugriff auf die Mediatheken von RTL, RTL2, VOX und den weiteren Sendern der Gruppe. Doch leider gab es durch Umstellungen in der Mediathek immer wieder Probleme und die Wiedergabe war nicht mehr möglich. Nun gibt es eine aktualisierte Version des Addons. Dieses bekommt ihr, indem ihr im unten verlinkten Forum Thread, am Ende des ersten Beitrags, das Repository (repository.lost-and-found.zip) herunterladet und innerhalb von Kodi in die Addons-Einstellungen navigiert. Nun müsst ihr entweder über das Netzwerk oder z.B. wie ich einfach via USB Stick, die besagte Datei zu eurem Pi bringen und unter Addons die Installation via Zip Datei durchführen. Dies installiert das Repository. Im nächsten Schritt wählt ihr die Installation via Repository bzw. normale Installation und wählt besagtes Lost-and-Found Repository aus. Dort angekommen findet ihr das Now Patched Addon und nach der Installation kann es direkt losgehen. Immer wieder großartig wie es die Community schafft diese Funktionen lauffähig zu halten!
Update vom 01.03.16: Seit einiger Zeit funktioniert das Addon nicht mehr, aufgrund einer Umstellung von RTL. Trotz einer recht langen Wartezeit hat sich bis dato leider nichts getan und es sieht nicht danach aus als würde das Addon in absehbarer Zeit wieder funktionieren. Im unten verlinkten Thread zum Addon wird über mögliche Alternativen diskutiert.
Bitdefender - Upgrade auf Version 2016
Da man bei Antivirensoftware meistens Lizenzen über einen bestimmten Zeitraum kauft und dies auch bei Bitdefender der Fall ist, kann man oft auf neue Hauptversionen der jeweiligen Software aktualisieren. Häufig geht dies einfach über das ohnehin vorhandene automatische Update. Doch durch einen Wechsel des Verwaltungssystems für die Lizenz muss man dieses mal etwas aktiv werden. Allerdings ist der Vorgang nicht schwer. Meldet euch einfach in der neuen Bitdefender Central open_in_new an und tragt unter My Subscriptions euren alten Bitdefender 2015 Code ein. Automatisch habt ihr nun eine entsprechend lange Lizenz für 2016 und könnt dieses installieren. Vor der neuen Installation sollte man die alte Software laut diesem How To Artikel open_in_new auf der Bitdefender Homepage mit einem speziellen von Bitdefender bereitgestelltem Tool open_in_new deinstallieren. Anschließend die neue Software wieder installieren und schon ist man fertig. Ich selber werde mich wohl morgen mal damit beschäftigen und auch einen Bitdefender 2016 Test vorbereiten und vielleicht gibt es auch wieder ein Gewinnspiel.
Software Entwicklung - Design Patterns
Egal ob man Android Apps oder PC Software entwickelt, Design Patterns sind extrem wichtig. Denn sie ersparen einem zum Teil viel Coding Aufwand, viele Probleme und ermöglichen einheitliche Herangehensweisen an Probleme. Doch welche Patterns es gibt und wann man sie richtig einsetzt bedarf etwas Übungen. Außerdem sollte man sich mit möglichst vielen auseinandersetzen, um im richtigen Moment auch die richtigen Techniken anwenden zu können. Eine meiner Meinung nach recht gute und auf englisch verfasste Zusammenfassung bezüglich Design Patterns findet ihr in den Related Links. Neben Erklärungen und Beispielbildern gibt es dort auch Source Code in verschiedenen Sprachen (z.B. Java, PHP und C++). Dies dürfte gerade wenn man komplett neu im Bereich Patterns ist recht hilfreich sein. Bedenken sollte man bei allen schönen Patterns übrigens eines, es zu übertreiben ist auch keine gute Lösung.