Jasper kompilierte Programme beschleunigen.

Jasper hat eine unschöne Seite. Benutzt man in einer JSP eine Direktausgabe von HTML Code, was sehr praktisch ist, kommt es zu einer unschönen Situation. Kleines Beispiel:

<%
<div class=olddefect>
 <table border="0">
      ...
 </table>
 </div>
%>

Je mehr Code man in den <% %> Block hat, desto mehr Zeilen hiervon werden erzeugt :

 out.write("\n");
 out.write("<div class=olddefect>\n");
 out.write("\t<table border=\"0\">\n");
 ...
 out.write("\t</table>\n");
 out.write("</div\n");
 out.write("\n");

Und wie man sehen kann, ist das höllisch inperformant. Zeit es zu optimieren.

Will man nun eine WebApp schneller bekommen, bleiben einem nur zwei Wege:

a) Mehr IO investieren z.b. in Form eines Ladevorgangs. Der kann natürlich im RAM gecacht worden sein, aber je nach Umfang der Webanwendung kann das vielleicht nicht funktionieren.
daher b) man verzichtet auf Zeilenumbrüche im HTML Code, so erzeugt Jasper genau eine Zeile out.write(„…“). Die ist zwar unschön, aber performanter.

Diverse Codeverkürzungstools könnte man dafür einsetzen.

Fall jemand rein zufällig einen Jasper Entwickler kennt, schlagt b) mal zur automatischen Optimierung vor. Danke.

Wenn die Hardware anders heißt…

Neulich erreichte mich folgende (leicht geänderte) Problemanfrage:

„Hi,

hat schon jemand von euch mit der neuen Ubuntu Version herum gespielt?

Ich habe gerade meinen ersten Cleaninstall unter Ubuntu 16.04 gemacht und bekomme hier gerade Probleme mit meinen Scripten. Die verdammte Netzwerkkarte heißt nicht mehr eth0

Weiß jemand von euch, wie meinen alten Interface Name wieder bekomme ?„

Die Lösung ist zwar nicht naheliegend, aber recht einfach : „udevd sagen, er solls richten“ 🙂

Was ist udevd ?

Der udevd war früher mal eigenständig, wurde aber auf Fedora in Systemd integriert und ist für eine Art Hausmädchen für Hardwaresachen und andere organisatorische Konfigurationsdinge.

Die Definition liest sich das dann so :

„udev supplies the system software with device events, manages permissions of device nodes and may create
additional symlinks in the /dev directory, or renames network interfaces. The kernel usually just assigns
unpredictable device names based on the order of discovery. Meaningful symlinks or network device names
provide a way to reliably identify devices based on their properties or current configuration.“

und meint einfach „Hausmeister“ 😉

Und wie löse ich das jetzt mit Hilfe des udevd ?

Im Verzeichnis „/etc/udev“ gibt es den Ordner „rules.d“ in dem Konfigurationen abgelegt werden, die durch die Nummern am Anfang der Dateinamen sortiert ausgeführt werden. Wir legen eine neue Datei namens „/etc/udev/rules.d/70-persistent-net.rules“ an und schreiben das hier rein :

# This file was automatically generated by the /lib/udev/write_net_rules
# program, run by the persistent-net-generator.rules rules file.
#
# You can modify it, as long as you keep each rule on a single
# line, and change only the value of the NAME= key.

# PCI device 0x10ec:0x8139 (8139cp) (custom name provided by external tool)
SUBSYSTEM==“net“, ACTION==“add“, ATTR{dev_id}==“0x0″, ATTR{type}==“1″, KERNEL==“eth*“, NAME=“eth0″

Wenn man nun den Rechner rebootet, wird das Netzwerkinterface vom Kernelnamen ( und das wurde bei Ubuntu geändert, was bei Fedora schon vor Jahren gemacht wurde ) auf „eth0“ umbenannt.

Was ist wenn ich mehr als eine Netzwerkkarte habe ?

Dann kann man sich über die DEV_ID ( Device-ID ) identifizierte einzelne Regeln anlegen, die jede einzelne Netzwerkkarte umbenennen, in was auch immer man will.

 

Erste Rcs von Fedora 24 bereit

Fedora 24 soll in einem Monat bereit sein. Die ersten Tests mit dem RC können ab sofort durchgeführt werden.

Wayland ist noch nicht als Standard aktiviert, kann aber ausprobiert werden. Es wird aber wohl frühestens mit Fedora 25 kommen. Gnome 3.20 ist auch mit dabei. Wie mir die GNOME Entwickler versprochen haben (im Ernst), soll das viele Probleme vom Gnome 3.18 und Nautilus beheben, z.b. das große ICON Problem.