LPIC-2 Zertifizierung

In diesem Beitrag möchte ich gerne mal auf die LPIC-Prüfungen eingehen und meine Erfahrungen alle anderen auf den Weg geben, die gerne die Prüfung machen möchten.

An sich würde ich von meiner Seite sagen, dass die Prüfungen schon ein hohes Maß an Wissen voraussetzen und man sich gut auf die Prüfungen vorbereiten muss, da man gerade in dem Bereich keine Vorbereiteten Prüfungsfragen findet, die man einfach auswendig lernen kann, wie es oft bei anderen Prüfungen möglich ist und gemacht wird.

Natürlich ist es auch an der Stelle möglich Prüfungsfragen „Braindumps“ zu kaufen und diese auswendig zu lernen. Hiervon würde ich allerdings abraten, da dies keinen weiter bringt. Wenn du am Ende die Prüfung nur geschafft hast, weil du Fragen und Antworten auswendig gelernt hast aber die Inhalte nicht verstanden hast, bringt es niemanden weiter.

Übersicht

Die LPIC-Prüfungen 1 und 2 bestehen aus 60 Fragen, die in 90 Minuten beantwortet werden müssen. Dabei sind die Bereiche mit „Gewichtungen“ versehen, wo richtigen Antworten mehr Punkte bringen, als andere Bereiche. 

Die Fragen bestehen zum Teil aus Multiple Choice aber auch aus Fragen, wo ein Textfeld frei ausgefüllt werden muss. Für LPIC-1 und 2 müssen jeweils 2 Prüfungen bestanden werden.

Ab LPIC-3 bestehen die Prüfungen aus 100 Fragen und 120 Minuten Laufzeit. Hier muss dann aber auch nur noch eine Prüfung für die Zertifizierung bestanden werden.

Vorbereitung

Nun ist ja die Frage, wie man sich am Besten auf die Prüfung vorbereiten kann. Es gibt verschiedene Bücher und Seiten, die ich für die Vorbereitung genutzt habe. 

LPIC-2: Linux Professional Institute

Das Buch kann ich wirklich empfehlen, da es eine wirklich detaillierte Erklärung aller Befehle und Parameter enthält. Das Buch wird auch vom LPIC auf der Website empfohlen.

A Cloud Guru LPIC-2 Kurs

A Cloud Guru ist eine Online Plattform, die Kurse hauptsächlich für Zertifizierungen anbietet. Hier gibt es einen guten LPIC-2 Kurs, der die Inhalte recht schnell anhand von praktischen Videos vermittelt. 

Zudem gibt es eine IPad-App von Sybex, welche für die Prüfungsvorbereitung genutzt werden kann. Allerdings sind die Fragen recht tief in der Materie und haben am Ende mit der richtigen Prüfung nicht ganz so viel zu tun. 

Wenn irgendwer weitere Informationen braucht darf er sich natürlich auch gern an mich wenden. Sonst wünsche ich allen viel Erfolg beim lernen und Prüfung bestehen. 

IntelliJ – Java Auto-Compile

Wer kennt das Problem nicht. Man muss mit großen Java-Anwendungen arbeiten und jedes Mal seinen Webserver oder Application-Container neu starten, damit die Änderungen übernommen werden?!

Manchmal wünscht man sich, doch eine Programmiersprache herbei, die bei einem Browser-Reload die Inhalte sofort neu lädt und man einen schnelleren Entwicklungszyklus hat. Ich meine klar Kaffee kochen und Zeit vertreiben ist auch nicht schlecht, allerdings könnte dies aufgrund der Ladezeiten doch irgendwann zu Herzproblemen und Schlafstörungen führen.

Welche Möglichkeiten gibt es?

Natürlich gibt es auch unter Java einige Möglichkeiten, die das Arbeiten erleichtern und das Entwickeln deutlich beschleunigen können. Hierbei möchte ich auf die beiden größten Plugins wie JRebel und DCEVM eingehen.

Generell sind beide Plugins für das automatische neu laden von Klassen geeignet, so das die Klassen automatisch neu geladen werden. Dabei ist der größte Unterschied an der Stelle wahrscheinlich der Preis und die Herangehensweise. Da DVEVM kostenlos ist möchte ich gern in diesem Beitrag näher darauf eingehen.

JRebel

JRebel ist an der Stelle ein gutes kommerzielles Produkt, was erworben werden muss. Die Lizenz liegt bei ca. 550$. In Anbetracht der ersparten Zeit ist es sicher eine Überlegung wert doch jRebel einzusetzen. Teilweise setzt JRebel aber eine erweiterte Konfiguration voraus, damit das Auto-Reloading einwandfrei funktioniert.

https://zeroturnaround.com/software/jrebel/ 

DCEVM

DCEVM ist an ein freies Projekt, welches für verschiedene JVM-Versionen heruntergeladen werden kann. Ich möchte in diesem Beitrag auch eher auf diese Variante eingehen, da sie kostenlos ist und bisher gut funktioniert hat. DECVM ist hauptsächlich für Java 8 verfügbar. Es gibt mittlerweile aber auch eine Test-Version für Java 11, welche ausgetestet werden kann. Die Installation weicht auch ein wenig von der Java 8 Version ab.

http://dcevm.github.io/

Installation

Damit man DCEVM nutzen kann, muss zuerst die jeweilige Installations-Datei für die entsprechende JVM herunterladen werden. Die JAR muss mit folgendem Befehlt ausgeführt werden.

Nach dem Ausführen öffnet sich ein Fenster, womit die Installation vorgenommen werden kann. Entweder man installiert es in eine bestehende JVM oder die Installation wird eigenständig in ein neues Verzeichnis durchgeführt.

DCEVM Installationsassistent

Im Assistenten einfach einen bestehenden Pfad oder einen neuen Pfad auswählen und die passende Installation durchführen. Nun ist die Installation von DCEVM eigentlich schon abgeschlossen.

 IntelliJ-Plugin – HotSwapAgent

Für die optimale Funktionalität kann in IntelliJ das Plugin „HotSwapAgent“ installiert werden. Das Plugin findet sich im Plugin-Repository. Nach der Installation kann das Plugin aktiviert und unter folgendem Pfad, eingestellt werden:

Preferences -> Build, Execution, Deployment -> Debugger -> HotSwap

Hierzu sind die folgenden Einstellungen zu empfehlen, damit die Klassen automatisch aktualisiert werden.

Einstellungen HotSwap-Plugin

Im Grunde ist die Installation damit auch schon abgeschlossen und das Live-Reloading sollte funktionieren. Beim Starten des Web-Containers, wie Tomcat, wird in der Konsole eine Debug-Ausgabe für den HotSwap-Agent mit angezeigt. Hieran kann man erkennen, dass die Installation funktioniert hat und das automatische neu generieren funktioniert.

Weitere IntelliJ-Einstellungen

Manchmal kann es sein, dass in IntelliJ noch weitere Einstellungen benötigt werden. So kann beim Klicken, aus IntelliJ raus, eingestellt werden, dass die Klassen automatisch aktualisiert werden sollen. Mit dem Haken „Show dialog“ wird eine kleine Meldung angezeigt, wie viele Klassen neu generiert wurden. 

IntelliJ Tomcat-Einstellungen

Magento Update auf 1.9.3 „Soap internal error“

Beim Update auf die Magento Version 1.9.3 ist es leider wieder zu Problemen und Fehlern gekommen, die durchaus den Betrieb stören können. Wer noch die SOAP-Schnittstelle nutzt kann hier auf den folgenden Fehler stoßen.

Magento Upgrade 1.9.3 Sales Soap Sales Order

Der Fix steht auf der verlinkten Seite. Hierzu muss ein im „Handler“ eine weitere Bedingung eingefügt werden.

Muss die folgende Funktion erweitert werden.

Die Datei sollte ggf. mit einer eigenen Extension überschrieben werden, damit der Core nicht direkt gefixt werden muss. Andernfalls muss das Update beim nächsten Update wieder eingespielt werden, sofern dies nicht gefixt wurde.

Edit: Anscheinend wurde der Fehler mit dem Update 1.9.3.1 behoben. 

 

Warum Unit-Tests?

Ja die Frage warum man Unit-Tests verwenden sollte ist recht spannend, da es viele Gründe dafür aber auch einige wenige Gründe dagegen gibt. Aber fangen wir erstmal von vorne an:

Was ist ein Unit-Test?

Mit einem Unit-Test kann man kleinere Bereiche (Funktionen) eines Programms automatisiert testen. Dies hat den Vorteil, dass man so sicherstellen kann, dass immer das erwartete Ergebnis, bei der getesteten Funktion, zurück kommt.

Aber warum sollte man dies tun? Ganz einfach man muss nicht jedes Mal alle Funktionen neu testen und das Ergebnis händisch überprüfen. Wenn ein Unit-Test korrekt implementiert ist kann man davon ausgehen, dass hier der erwünschte Wert, geschweige denn das erwünschte Verhalten aus einer Funktion zurück gegeben wird.

Tools

Damit man Unit-Tests durchführen kann braucht man ein Tool, welches diese ausführt. Hier gibt es in jeder Programmiersprache verschieden Tools. Unter PHP ist dies PHPUnit und unter Java zum Beispiel JUnit. Auch für Javascript es hier Tools wie Jasmine, QUnit und so weiter.

 

Es gibt hier auch noch verschiedene Arten von Tests. Manchmal ist es sinnvoll nicht kleinere Units zu testen, sondern die Abläufe einer Software. Am Beispiel eines Shops wäre dies, dass man beispielsweise eine Bestellung ausführt. Hierzu muss man den Prozess durchlaufen und alle benötigten Felder füllen. Hierfür bietet sich eine Kombination aus Selenium und einem Unit-Test Tool an. Meist gibt es hier auch schon Schnittstellen um beides miteinander zu verbinden.

Bestehende Projekte/Code testen?

Wenn man so an das Agenturleben denkt kommt es hier ja eher vor, dass man bestehende Projekte hat, die gewachsen sind und teilweise noch prozedural programmiert sind. Diese lassen sich in der Regel schlecht testen, da es hier keine kleineren Teile (Units) gibt, die man auch gut testen kann. Sollte das Projekt Klassen und Funktionen verwenden, kann man eines der Tools von oben wählen.

Manchmal ist es hier auch sinnvoll nachträglich verschiedene Teile in Klassen und Funktionen auszulagern, um diese testen zu können und die Strukturen ein wenig aufzuräumen und zu verbessern.

Fazit

Unit-Tests können einem sehr das Leben erleichtern, da man bestehende Funktionen testen und absichern kann. Dies ist sehr hilfreich wenn man größere Teile eines Projektes umbauen muss. Nach den Umbauarbeiten kann man durch die Tests weiterhin sicherstellen, dass die Funktionen das korrekte Ergebnis liefern.

Ein weiterer Vorteil ist, dass man beim Schreiben der Unit-Tests tiefer über die Funktionen nachdenkt und teilweise weitere Fehler findet und diese direkt beheben kann.

PHPStorm dünne Schrift nach Update auf 9.0.1 oder Java8 (Subpixel-Antialiasing)

Nach dem Update auf PHPStorm 9.0.1 oder die EAP-Version kann es zu Problemen mit dem Font-Rendering kommen, wodurch sich die Schriften in der IDE sehr dünn darstellen (meist Linux und OSX (Retina)).

Ich nutze OSX 10.10 mit Java6. Beim Update auf Java8 hat man hier das Selbe Problem, allerdings bei allen Schriften in der kompletten IDE.

Font Antialiasing on Linux and PHPStorm

Zu diesem Thema gibt es auch Tickets bei Jetbrains. Nach dem Update kann man das Problem, unter Java6, beheben indem man in den Einstellungen den Haken „General -> Appearance -> Use anti-aliased font“ setzt. Danach sollte die Schrift wieder normal dargestellt werden. Hier ein Vorher-Nachher-Vergleich:

Vorher
phpstorm_font_problem

Nachher
phpstorm_font_problem_anti

Das Font-Rendering ist wesentlich dicker und besser zu lesen. Leider funktioniert der Haken unter Java8 nicht. Die Schriften bleiben trotzdem dünn und unleserlich.

Ich hoffe ich konnte euch fürs Erste bei dem Problem ein bisschen weiter helfen und es gibt schnell einen Fix für das Problem.

Edit: Es gibt hierzu noch einen kleinen Nachtrag. Ich habe ein Ticket bei Jetbrains gefunden, welches das Problem beschreibt. Das Problem ist, dass das Subpixel antialiasing in Java 7 und 8 nicht mehr vorhanden ist, geschweige denn funktioniert.

https://youtrack.jetbrains.com/issue/IDEA-117324#

Es wird hier weiterhin Java 6 empfohlen oder ein Custom Build von Java8 von Jetbrains, was aber auch nicht richtig zu funktionieren scheint.

Edit

Mit der PHPStorm Version 10 hat Jetbrains die Java-Runtime selbst gefixt und die Fehler sind behoben. Die neue Version wird mit den IntellJ-Produkten ausgeliefert.