Netbeans 7.1, JSLint und jQuery: $ used before defined

Geschrieben von everflux am Dezember 27th, 2011

Seit Netbeans 7.1 ist JSLint als Plugin verfügbar. Mit JSLint wird JavaScript auf (mögliche) Fehler untersucht und diese als Warnungen im Editor angezeigt. (Aufruf mit Rechtsklick innerhalb einer JavaScript Datei und dann „JSLint“ klicken)

Jedoch gibt es dabei auch falsche Warnmeldungen wenn JsLint nicht richtig konfiguriert ist. So warnt mich Netbeans 7.1 dann bei einer JavaScript Datei, als externe Ressource zusammen mit jQuery in eine Webseite eingebunden ist:

„$ was used before it was defined“

Dies lässt sich beheben, indem man die JSLint Konfiguration (Tools->Options->Misc->JSLint) aufruft und dort unter „predefined“ das „$“ deklariert. Leider wurde diese Einstellung bei mir  nicht korrekt gespeichert und hatte auch keine Auswirkungen auf das Verhalten von JSLint. Ich nehme an, dass der Fehler mit einem Update des Plugins behoben wird.

Die Sache mit dem Benutzernamen

Geschrieben von everflux am Dezember 26th, 2011

Die Lufthansa bietet zukünftig nur noch die Online Abrechnung für Kreditkarten an. Dazu ist eine Anmeldung auf www.miles-and-more.kartenabrechnung.de erforderlich. Wie so oft ist hier auch die Angabe eines Benutzernamens erforderlich. Den kann man sich ausdenken – und dabei wird auch darauf hingewiesen, dass man sich diesen „zur Sicherheit“ mit Zahlen anreichern sollte.
Auch habe ich es schon erlebt, dass die korrekte Gross-/Kleinschreibung bei Benutzernamen relevant ist – hier zum Glück nicht. Sonderzeichen, Umlaute und Leerzeichen sind nicht erlaubt. Manche Dienste geben sogar den Benutzernamen fest vor.

Ich frage mich da immer: Muss das so? Wenn ich einen so komplizierten Benutzernamen wählen soll/muss, was wird dadurch wirklich sicherer? Außer natürlich dass ich den Namen sicher bald vergesse oder mir irgendwo aufschreiben muss.

Eine sehr einfache Alternative wäre die E-Mail Adresse eines User als Benutzernamen zu wählen. Und was ist, wenn die sich mal ändert? Dann kann man die ändern und loggt sich zukünftig mit der neuen ein. Oder mit allen, die man registriert hat.  und was ist, wenn der Benutzername öffentlich angezeigt wird, z.B. in Foren oder Communities? Dann ergänzt man einfach ein zusätzliches Attribut, den öffentlich angezeigten Namen.

Hab ich was übersehen, oder ist die Lösung einfach zu praxistauglich, als dass man damit als Anbieter/Dienstleister Geld verdienen könnte?

Virtualisierung: I/O Last senken mit KVM/libvirt

Geschrieben von everflux am Dezember 11th, 2011

Das Thema Virtualisierung geht einher mit neuen Anforderungen an die Ressourcen des Host Systems. Da zwar die CPU Leistung kontinuierlich zunimmt (Anzahl Kerne, Leistung/Stromverbrauch) und auch RAM Speicher immer günstiger wird, jedoch die Leistung der Festplatten nicht zunimmt, ergeben sich neue Probleme: Selbst mit schnell drehenden Platten und RAID Verbund wirkt sich die erhöhte Last durch mehrere virtualisierte Maschinen auf einem „Blech“ deutlich aus, da die Leistung – gemessen an der Anzahl der I/O Operationen pro Zeiteinheit – nicht mit gewachsen ist. Durch mehrere virtualisierte Systeme verändert sich auch das Zugriffsprofil: Selbst lineares Lesen jedes einzelnen Systems für sich sieht für die Festplatten eher wie ein Zufallsmuster aus, da mehrere Systeme parallel arbeiten. Ein Weg zur Erhöhung der I/O Operationen pro Sekunde ist starkes Caching oder Einsatz von SSD Festplatten (die wieder eigene Probleme haben).

Für den Einsatz unter Linux hat sich KVM als Standard für Virtualisierung durchgesetzt, ergänzt um Abstraktionsschichten wie libvirt. Vor allem bei den derzeit angebotenen dedicated Servern lohnt sich die Nutzung als Virtualisierungshost, da dies die Management-Möglichkeiten deutlich verbessert werden und die Flexibilität erhöht wird. Bei dieser Konstellation wird in der Regel die lokale Platte/Platten als Storage verwendet, mit den oben angeführten Einschränkungen. Was noch dazu kommt: Virtualisiert man die Festplatten „direkt“, stellt diese also als IDE oder SCSI Device zur Verfügung, kommt deutlicher Overhead dazu. Der lässt sich nicht vermeiden, wenn man Windows oder ein Betriebssystem virtualisiert, das keine Paravirtualisierung unterstützt.

Paravirtualisierung liegt dann vor, wenn das virtualisierte System etwas davon weiß, in welcher Umgebung es läuft, und entsprechend kooperativ ist. Mit Linux ist das kein Problem, unter anderem durch die Vorarbeiten die fuer die Xen Virtualisierung erfolgt ist. Daher sollte man nicht als „ide“ sondern „virtio“ als Schnittstelle für Gäste verwenden, die das unterstützen, um geringere Last und höhere Performance zu erzielen.

Weiterlesen »

Ubuntu Lucid LTS Server auf Oneiric Updaten

Geschrieben von everflux am Dezember 10th, 2011

Manchmal möchte man gerne ein Update von einer LTS Version auf eine nicht-LTS Version machen, z.B. um  neuere Pakete nutzen zu können. Der „übliche“ Weg dazu, den man in vielen Blogs und Foren findet, ist „sudo do-release-update -d“, welches auf die aktuellste Developer („d“) Version aktualisiert.
Das ist solange kein Problem, wie keine „echte“ Entwicklerversion bereitsteht, dann sind Entwicklerversion und letzte Release-Version nämlich identisch und man erhält das gewünschte Ergebnis. Möchte man aber derzeit beispielsweise von Ubuntu Lucid auf Oneiric umstellen, und wählt das development Update an, so wird in der Tat auf die Entwickler Version Precise Pangolin aktualisiert. Höchstwahrscheinlich auf einem Server nichts, was man nur für aktuellere Pakete tun möchte.

Die Alternative: In /etc/update-manager/release-upgrades aendert man die Zeile
Prompt=lts
auf
Prompt=normal
und startet anschließend ganz normal „sudo do-release-upgrade“. Der Upgrade Prozess von Lucid auf Oneiric verlaeuft dann ueber die Zwischenschritte „Update auf Maverick“ und „Update auf Natty“.

Confluence 4 mit JDK 7

Geschrieben von everflux am Oktober 23rd, 2011

Atlassian ist mit Confluence der Marktführer was Enterprise-Wiki-Software angeht. Bisher wird jedoch lediglich Java 6 offiziell supported, was schade ist, denn mit Java 7 hat die JVM eine Menge Updates bekommen und benötigt erheblich weniger Speicher im Betrieb und Last und auch im Bereitschaftszustand.
Mit dem offiziellen Release von Confluence 4 und Java 7 ist es nunmehr auch an der Zeit beides zu vereinigen. Leider lief das ganze nicht so ganz problemlos, nach dem Umstellen des JDK gab es eine Menge Fehlermeldungen im Confluence Logfile und auch die Darstellung war offensichtlich defekt.
Die Loesung sah schliesslich so aus:

  • Zum einen der OSGi Laufzeitumgebung von Confluence mitteilen, welche Klassen ueber den Tomcat Classloader geladen werden sollen -Datlassian.org.osgi.framework.bootdelegation=META-INF.services,com.yourkit,com.yourkit.*,com.jprofiler,com.jprofiler.*,org.apache.xerces,org.apache.xerces.*,org.apache.xalan,org.apache.xalan.*,sun.*,com.sun.jndi.,com.icl.saxon,com.icl.saxon.*,javax.servlet,javax.servlet.*,com.sun.xml.bind.*
  • Zum anderen einmal im Confluence Homeverzeichnis den OSGi Cache leeren cd $confluence-home/plugins-osgi-cache
    rm -r *

Beim nächsten Start funktioniert Confluence sogar mit dem aktuellen Tomcat 7 – verbraucht weniger RAM und ist subjektiv auch noch schneller.

Ubuntu HDMI (kein) Sound

Geschrieben von everflux am Oktober 14th, 2011

Seit meinem neuen Computer (und Ubuntu Oneric) ist mein zweiter Monitor per HDMI Kabel angeschlossen. Das Problem: Per HDMI ist neben Bild- auch ein Tonausgabegerät und wird als Default Device verwendet. Damit ist dann teilweise nichts zu hören – offenbar ist das jedoch Anwendungsabhängig.

Als Lösung habe ich mir pragmatisch ein virtuelles pulseaudio device eingerichtet, dass auf alle Geräte den Sound dann ausgibt. Dazu installiert man sich das Paket „paprefs“

sudo apt-get install paprefs

und starte diese („paprefs“). Auf dem Reiter „simultaneous output“ (im englischen) kann dann ein virtuelles Gerät aktiviert werden, dass die Ausgabe auf alle Geräte weiterleitet.

Ubuntu Oneiric: Netbeans Master-Passwort / Keyring Integration

Geschrieben von everflux am Oktober 14th, 2011

Schon in frühen Beta Versionen von Ubuntu 11.04 / Oneiric hat Netbeans mich ständig nach einem „Master Password“ gefragt, mit dem gespeicherte Passwörter von Netbeans gegen unbefugten Zugriff verschlüsselt werden.

Das ist nervig, denn bisher ging es auch ohne – dabei nutzt Netbeans die von modernen Betriebssystemen bereitgestellte native Infrastruktur um Passwörter zu speichern. (z.B. Keychain auf dem Mac, Gnome-Keyring o.ä.) Normalerweise funktioniert das auch – aber seit Gnome 3 hat sich da offenbar etwas geändert.

Debuggen kann man die Netbeans Keyring Integration indem man folgende Option in der etc/netbeans.conf zu den netbeans_default_options ergaenzt:

-J-Dorg.netbeans.modules.keyring.level=0

Anschließend sieht man in ~/.netbeans/7.0/var/log/messages

FINE [org.netbeans.modules.keyring.kde.KWalletProvider]: application exit with code 2 for commandString: [qdbus, org.kde.kwalletd, /modules/kwalletd, org.kde.KWallet.isEnabled]; errVal: Service 'org.kde.kwalletd' does not exist.
FINE [org.netbeans.modules.keyring.gnome.GnomeProvider]
java.lang.UnsatisfiedLinkError: Unable to load library 'gnome-keyring': libgnome-keyring.so: cannot open shared object file: No such file or directory
at com.sun.jna.NativeLibrary.loadLibrary(NativeLibrary.java:163)
at com.sun.jna.NativeLibrary.getInstance(NativeLibrary.java:236)
at com.sun.jna.Library$Handler.<init>(Library.java:140)
at com.sun.jna.Native.loadLibrary(Native.java:379)
at org.netbeans.modules.keyring.gnome.GnomeKeyringLibrary.<clinit>(GnomeKeyringLibrary.java:62)
[catch] at org.netbeans.modules.keyring.gnome.GnomeProvider.enabled(GnomeProvider.java:88)
at org.netbeans.api.keyring.Keyring.provider(Keyring.java:72)
at org.netbeans.api.keyring.Keyring.save(Keyring.java:109)
at org.netbeans.modules.j2ee.deployment.impl.ServerRegistry$5.run(ServerRegistry.java:731)
at org.openide.util.RequestProcessor$Task.run(RequestProcessor.java:1424)
at org.openide.util.RequestProcessor$Processor.run(RequestProcessor.java:1968)

Nachdem ich sichergestellt habe, dass die Library installiert ist:

sudo apt-get install libgnome-keyring0
Reading package lists... Done
Building dependency tree
Reading state information... Done
libgnome-keyring0 is already the newest version.

bleibt die Frage: Wieso findet Netbeans die gesuchte Library nicht? Die Lösung: Die Gnome Keyring Library ist nur noch mit einem anderen Dateinamen verfügbar, mit angehängter „0“. Das gab es zwar früher schon immer, dass die Libraries ohne Versionsnummer (oder was das ist) lediglich ein Symlink auf die „echte“ Library waren, aber immerhin gab es die. (Da gibt es bestimmt einen guten Grund und viel Logik für, dass das abgeschafft wurde – mir erschließt sich das jedoch nicht.)
Der simple Work-Around ist daher:

sudo ln -s /usr/lib/libgnome-keyring.so.0 /usr/lib/libgnome-keyring.so

und danach funktioniert Netbeans wieder tadellos. Also gab es offenbar keine inkompatiblen API Änderungen, sondern „lediglich“ eine Änderung des Library-Namens. Ob das ein Ubuntu/Debian Paketierungsproblem ist, oder ab Gnome 3 einfach die neue Marschrichtung, kann ich nicht sagen.

Update: Ich hab dazu ein Bug im Netbeans Issuetracker aufgemacht. Wer voten möchte – gerne: http://netbeans.org/bugzilla/show_bug.cgi?id=203735

Oneiric update auf VM Gast bricht ab

Geschrieben von everflux am Oktober 14th, 2011

Wer einen KVM/VM Gastsystem dass mit „vmbuilder“ erstellt wurde auf Ubuntu Oneiric updaten möchte wird möglicherweise diese unschöne Überraschung erleben:


A fatal error occurred

Please report this as a bug and include the files
/var/log/dist-upgrade/main.log and /var/log/dist-upgrade/apt.log in
your report. The upgrade has aborted.

Ein Blick in die genannten Logdateien hilft weiter:

2011-10-14 08:39:47,147 DEBUG creating statefile: '/var/log/dist-upgrade/apt-clone_system_state.tar.gz'
2011-10-14 08:39:56,877 DEBUG lspci failed: [Errno 2] No such file or directory
2011-10-14 08:39:56,920 DEBUG lsb-release: 'natty'
2011-10-14 08:40:00,162 ERROR not handled exception:
Traceback (most recent call last):

Da schlägt der Aufruf von „lspci“ fehl. Das Paket ist in dem per vmbuilder unter lucid erstellten System nicht installiert, und wurde auch bei den nachfolgenden Updates nicht als Dependency deklariert und somit nicht installiert.
Installiert man das Paket kurzerhand selbst

sudo apt-get install pciutils

funktioniert danach das Update auf den ersten Blick auch fehlerfrei.

Firefox/Chrome, Office: Paste plain text (ohne Formatierung)

Geschrieben von everflux am Oktober 13th, 2011

Inzwischen sind wysiswg-Editoren wie TinyMCE oder der (seit Version 4 obligatorische) Rich Text Editor im Confluence Wiki on vogue.

Manchmal möchte man sich jedoch nur Inhalte ohne Formatierungen von einer anderen Webseite/Wikiseite oder einem Dokument übernehmen. Bisher war meine „Lösung“ dazu, den Text in gedit oder einem anderen reinen Texteditor einzufügen und dann wieder dort heraus zu kopieren. Etwas umständlich – da gibt es aber eine Lösung für:

In Google Chrome,  Chromium, Firefox und OpenOffice/LibreOffice gibt es dafuer ein Shortcut: Mittels STRG-SHIFT-V (bzwl. ctrl-shift-v) wird ohne Formatierung eingefuegt.

Lediglich AdblockPlus User und Confluence User haben ein Problem: Genau das Kürzel wird bereits verwendet. In Adblock Plus kann dies nicht über die GUI deaktiviert werden, sondern muss über „about:config“ fuer den Schlüssel „extensions.adblockplus.sidebar_key“ umgestellt werden. Nach einem Neustart von Firefox funktioniert es dann wie gewünscht.

Ubuntu Oneiric: Latex Papierformat

Geschrieben von everflux am Oktober 7th, 2011

In Ubuntu Oneiric hat sich ein Patch eingefunden, der dafuer sorgen soll, dass das Papierformat nicht zu A4 im Default wird. Das sorgte bei mir dafuer, dass auch Dinge, die eigentlich A4 werden sollten im US-Letter Format als PDF generiert wurden.

Die Loesung dafuer sieht so aus, dass man entweder mit den Kommandos \pdfpageheight und \pdfpagewidth das Ausgabeformat korrekt setzt, oder ein Package verwendet, dass sich bereits darum kuemmert. Das ist Beispielsweise das „geometry“ Paket: \usepackage{geometry}

Wenn man eigene Vorlagen verwendet, kann man das Geometrie Paket so einbinden: \RequirePackage{geometry}


http://everflux.de/
Copyright © 2007, 2008 everflux. Alle Rechte vorbehalten. All rights reserved.