php 7.x – Good will hinting!

Eigentlich kennt das jeder Entwickler: Wir wissen, dass man Test-driven-development machen sollte… Das wäre der optimale Weg. Dann kommt der Arbeitsalltag und man “macht mal schnell” ne Änderung. Auch lesen wir uns immer mal wieder in Unit-Tests ein, um damit endlich mal zu beginnen. Und? Nächstes Projekt, wieder keine Zeit zum unit-testen…
Auch wenn wir über kurz oder lang nicht darum herumkommen, unseren Code ausgiebig zu testen, nimmt uns php immer mehr Arbeit (und Fehleranfälligkeit) ab. Die aktuellsten php-Versionen ab 7.0 bieten endlich nahzu vollständiges Type-hinting. Vorbei ist es mit der Schludrigkeit der Variablen unter php. Wenn der Entwickler es richtig macht!

Continue reading

php: Trait me well…

Ich beschäftige mich jetzt schon Jahrzehnte mit php, angefangen habe ich tatsächlich mit php3.x. Die Entwicklung hat in dieser Zeit enorme Höhenflüge erreicht, angefangen mit den ersten vorsichtigen Schritte in Richtung OOP bis zu dessen (fast vollständigen) Implementierung in den aktuellen Versionen. Zu den Neuerungen in php 7.x werde ich aber einen gesonderten Blogeintrag machen 😉

Das Thema dieses Artikels sind die seit php5.x vorhandenen aber irgendwie komplett an mir vorbeigegangenen “traits“. Diese stellen quasi eine Art “Sammlung” von Methoden dar, die man sehr einfach in eigene Klassen und somit Objekte integrieren kann.

Continue reading

Quix in Edesheim – Teil 5

Nun ist es also endlich soweit – 100 Edesheimer Haushalte haben sich in die Fänge der quix-Vorverträge begeben… Und wie sie alle feiern! Auf Fazzebock ein Lobeshymnchen nach dem anderen, das Ende des Schneckeninternets wird da zelebriert… 

Was manche vielleicht nicht bedenken: Wir reden hier von maximal 100MBit… In 1,5 – 2 Jahren!!! In dem Zeitraum werden die nördlichen Länder wie Finnland, Schweden, etc. ihre eh schon ca. 300MBit wahrscheinlich vervielfacht haben und die QHD-Streams laufen dann auch nur mit der größten Quix-Leitung… 2 Jahre… Das ist im Computerzeitalter eine Ewigkeit! 3-4 Prozessorgenerationen, 3-4 neue Grafikkartenboliden. 2 neue Macbooks, 2 neue iPhones… 
Und was macht Edesheim? Edesheim bindet sich dauerhaft an einen Leitungsanbieter, einen Telefondienstleister, dessen Hotline von Mo-Fr zw. 8 und 17 Uhr für Probleme da ist. Anfragen werden dann auch in ca. 2-x Werktagen beantwortet… Und zwar telefonisch, währende der Arbeitszeit, egal ob man um schriftliche Antwort gebeten hatte…
Wie gesagt, wir hängen jetzt im quix-Netz… Die Telekom wird einen Teufel tun und hier die Leitungen upgraden, weil eh 100 Haushalte sich als Kunden komplett verabschiedet haben (bindende Vorverträge mit quix), bleibt also kaum Bedarf. Ich erwähnte schon, dass man mit der Telekom immerhin die Möglichkeit gehabt hätte, alternative Anbieter zu wählen? Immerhin muss die Telekom ihre Leitungen freigeben, quix nicht. Für mich ein Rückschritt in die Zeiten, in denen die T-Offline-Gesellschaft die einzige Alternative war. Aber was erwartet man von einem Ort, in dem die CDU die absolute Mehrheit erreicht. Da ist so vieles Neuland…
Bin mal gespannt, wie hoch die Kosten letztendlich sein werden, sobald die Leitungen dann liegen…

Systemd – getestet, geflucht, gelöscht

Da isses nun, das ach so dolle Systemd-Monster… Lange Zeit hab ich mich diesem Molloch verweigert, nicht zuletzt weil ich KDE-User bin und deswegen auch nicht direkt von der blödsinnigen Gängelung der Gnome-Fraktion betroffen war. Wer kommt eigentlich auf die schwachsinnige Idee, man müsse eine Oberfläche an ein Init-System binden? Was kommt als nächstes? Systemd in den Kernel? Dazu gleich noch monolitisch Wayland rein und wir haben ein undurchsichtiges Monster a la Windows oder OSX!

Aber, da ich immer neugierig bin, hab ich mir das Ganze doch mal angetan, also fix unter meinem gentoo das “systemd” USE-Flag gesetzt und die betroffenen Pakete nochmal durchkompiliert. Um auch mal über den Tellerrand zu blicken, glaich noch Gnome3 hinterher und nach ca. 1h hatte ich ein fertiges System… Naja, fast fertig… Was nicht ging: Netzwerk allgemein! Also erstmal auf dem Handy parallel gegoogelt, wie man denn nun das Netzwerk mit ner statischen IP  hinbekäme… Antwort: Unter Systemd erstmal gar nicht! Man braucht diverse Helper, z.B. das aus den Archlinux-Sphären stammende netctl, oder Networkmanager… Letzteres ist auch so etwas, was ich nie benötigte, denn ich nutze zuhause statische IPs, warum sollte ich also den ganzen Overhead mitschleppen, wenn eine simple Config-Datei ihren Zweck auch erfüllt? Langer Rede, kurzer Sinn: Ich kam nicht ohne Networkmanager zum Ziel!

Ok, nach gefühlten Stunden also endlich wieder online! Das hilft, um die ganzen anderen Klippen zu umschiffen, Startscripte für z.B. nginx, elasticsearch etc. zu bauen und nach einem Tag dann wieder ein funktionierendes System zu haben. Naja auch hier wieder fast: Es ist einfach nicht möglich, die NFS-Shares meines NAS beim Booten zu mounten. Und zwar weil der Mount versucht wird BEVOR das Netzwerk funktional ist!? Logik wo bist du?

Dann aber mal kurz das Positive: Der Rechner startet in Sekunden bis zum grafischen Login, der Shutdown dauert ca. 2 Sekunden. Und gleich wieder das Ganze relativiert: Ich fahre meinen Rechner morgens hoch, abends runter… Mir ist es erstmal schnuppe, ob ich 2 oder 10 Sekunden warte, bis ich mich einloggen kann. Zumal Windowsuser bei solchen Zeiten eh feuchte Höschen bekämen!

Es bleibt ein fader Nachgeschmack: Irgendwie ist das Ganze unübersichtlich… Mir kann doch keiner erzählen, dass man eine Systemd-Datei einfacher lesen kann, als z.B. eine simple OpenRC-Datei? Bei letzterer genügt ein simples “needs xyz” um Abhängigkeiten zu realisieren. Und vielleicht möchte ich nicht, dass Services permanent restartet werden, falls diese abschmieren, denn das hat im Allgemeinen einen Grund! Weiterhin ist es auch ein Unding, einen Logger mitzubundeln! metalog ist für meine Zwecke vollkommen ausreichend und mit Abstand besser strukturiert als journald!

Fazit: Nettes Experiment, welches mich zum Schluss brachte, dass ich Systemd nicht brauche! Auch nicht in ein paar Monaten oder Jahren. Von Gnome will ich jetzt mal garnicht anfangen!