Sonntag, 3. Juli 2016

Java auf dem Desktop 13 - Datenträgergeschwindigkeit messen mit jDiskMark

Bei jDiskmark handelt es sich um ein kleines, nützliches Javaprogramm, mit dem sich einfach und komfortabel die Lese- und Schreibgeschwindigkeit von Festplatten und Speicherkarten ermitteln lässt. Da es sich um ein Java-Tool handelt, passt es außerdem gut in meine "Java auf dem Desktop"-Reihe.



Das Programm lässt sich nach dem Entpacken von der Kommandozeile aus mit dem Befehl "java -jar jDiskMark.jar" starten. Ein Start-Script liegt nicht dabei, dafür ein Windows-Programm, mit dem sich der Festplattencache leeren lässt.

Das mit den Festplattencache ist natürlich so eine Sache, der Cache auf der Festplatte selbst wird sich nicht einfach leeren lassen. Für einen ungefähren Überblick reicht es aber die Datenmenge für die Messung entsprechend groß auszulegen. Anstelle der vorgegebenen 40 Megabyte sind, je nach Datenträgerkapazität, 512 Megabyte oder mehr angemessen, um nicht nur einen Blick auf das Optimum zu werfen. Das Programm fordert vor dem Lese-Test dazu auf, die Caches zu leeren.

Weil das mitgebrachte Windows-Programm zum Cache entleeren unter Linux wenig taugt, lässt sich mit den folgenden beiden Zeilen leicht Ersatz schaffen (Stackoverflow).
sudo echo 3 | sudo tee /proc/sys/vm/drop_caches
sudo blockdev --flushbufs /dev/sda

Letztlich ist jDiskmark ein einfachst gehaltenes Open-Source-Tool, das sich einsetzen lässt, um mal eben schnell die ungefähre Arbeitsgeschwindigkeit einer Festplatte festzumachen. Schnickschnack sucht man allerdings vergebens und wenigstens unter Windows ist man mit Tools wie CrystalDiskMark wohl auch besseres gewohnt. Andersrum gefällt mir die Graphendarstellung gut, weil man den gesamten Messzeitraum im Blick hat und nicht nur eine wie auch immer interpretierbare Zahl, die am Ende herauspurzelt. Das kann zum Beispiel dabei helfen Geschwindigkeitseinbrüche auszumachen.

Sonntag, 26. Juni 2016

Nautilus Batch-Rename oder "Oldie but a goldie"

Nautilus ist leidlich dafür bekannt mehr Funktionen entfernt, als neue hinzugefügt zu bekommen. War ich noch einer der Nutzer, der die Splitview gern genutzt und die feste Fußzeile gemocht hat, habe ich mich umgewöhnen müssen - die damaligen Alternativen gefielen mir ebenfalls nicht besser und Nemo lief bei mir nie stabil. In mehr oder minder naher Zukunft soll der gute, alte Nautilus nun doch wieder ein Feature dazubekommen, nämlich eine Batch-Rename-Funktion (Link). Darüber freue ich mich zwar, umgekehrt habe ich diese Funktion aber nie vermisst, da es schon seit langem den Nautilus-Renamer gibt, der seine Arbeit, wie ich finde, auch nach seinen vielen Jahren noch immer ganz ausgezeichnet erledigt und dabei nicht einmal angestaubt wirkt.

Nautilus-Renamer im Replace-Modus

Da ein Scriptaufruf mit Übergabe der Dateinamen reicht, lässt sich das Renamer-Script übrigens auch sehr gut in einem anderem Kontext einsetzen oder in die eigene Anwendung integrieren. Alles sehr schön, außer, dass bei mir die letzte Version 4.0 nicht zu funktionieren scheint, was aber zu verschmerzen ist, da die vorherige Version 3.1 sehr rund läuft.

Sonntag, 17. April 2016

Tweaking TTRSS: Mehrspaltige Leseansicht

Den TTRSS benutze ich schon lange als Feedreader und primären Newsversorger. In der Webansicht hat mich aber schon immer gestört, dass der rechte Lesebereich für moderne Monitore zu breit ist, so das sich der nächste Zeilenanfang beim lesen schlecht ausmachen lässt und so der Lesefluss beeinträchtigt wird. Tatsächlich sind nur wenige Handgriffe notwendig, um ein mehrspaltiges Layout zu konfigurieren.

Dazu klickt man im TTRSS-Einstellungsbereich unter Benutzerdefiniertes Stylesheet auf den Button Anpassen und gibt in den daraufhin erscheinenden Dialog Benutzerdefinierte Stylesheets das folgende CSS ein.

.cdmContentInner {
    -webkit-column-count: 3;
    -moz-column-count: 3;
    column-count: 3;
}

Nach dem Speichern und Verlassen der Einstellungen wird der TTRSS-Lesebereich nun Dreispaltig angezeigt. Das ganze sollte halbwegs unabhängig vom verwendeten Theme sein und funktioniert bei mir in Firefox und Chromium.

Wer im übrigen noch einen Tip für ein gutes, alternatives TTRSS-Theme hat, darf mir gern mal den Link zukommen lassen.

Dienstag, 12. April 2016

Wir basteln uns einen WiFi-VPN Access-Point

Anleitungen, wie man einen VPN Wireless Access-Point mit einem Raspberry bastelt, gibt es zwar zuhauf im Netz, ich wollte aber eine möglichst einfache und zuverlässige Lösung schaffen. Dafür greife ich zur Abwechslung mal nicht auf eine reine Raspberry-Lösung zurück, sondern verwende anstelle des sonst üblichen WLAN-Sticks einen Access-Point. Das verschafft einige Vorteile. Allen voran spart man sich die Suche nach einem kompatiblen, Host-Fähiger WLAN-Stick, der unter Umständen dann doch nur so mittelmäßig zuverlässig funktioniert. Ich habe inzwischen drei Modelle durch, die alle ihre Macken hatten. Außerdem lässt sich auf diese Weise eine Menge Konfigurationsaufwand vermeiden, denn man kann sich den DHCP-Server und den Hostapd, den man für die WLAN-Verbindung benötigt, schlicht sparen.

Zum Einsatz kommt bei mir ein Raspberry Pi 2 B+ (lag noch rum) mit Raspbian Jessie Lite, ein Edimax EW-7438RPN (Amazon-Reflink, mit unter 18 Euro recht günstig und man kann das Teil mit der Firmware eines anderen Modells zum Access-Point umfunktionieren.) und einen Delock USB 2.0 Ethernet Adapter (Amazon-Reflink), um den Raspberry mit dem Access-Point zu verbinden.
Der Raspberry hat bei mir ein frisches Raspbian bekommen. Alles was sonst noch auf dem Raspberry gebraucht wird ist ein OpenVPN für den VPN-Tunnel und einen lokalen Nameserver.
sudo apt-get install bind9 openvpn

Anschließend ist die OpenVPN-Konfiguration und gegebenenfalls ein oder mehrere Zertifikate in das Verzeichnis /etc/openvpn/ zu kopieren.
cp "your config file" /etc/openvpn/server.conf

Die genaue VPN-Konfiguration ist von VPN-Anbieter zu VPN-Anbieter etwas unterschiedlich. Damit der OpenVPN-Service ohne Abfrage von Benutzername und Passwort startet, sollte man am besten die Datei /etc/openvpn/auth.txt anlegen und durch ein Return getrennt, Benutzernamen (erste Zeile) und Passwort (zweite Zeile) eintragen. Anschließend in der /etc/openvpn/server.conf die folgende Zeile anpassen, falls nicht schon geschehen.
...
auth-user-pass auth.txt
...

OpenVPN sollte nun fertig konfiguriert sein und kann gestartet werden.
sudo service openvpn start

In der Liste der Netzwerkinterfaces sollte das Interface tun0 auftauchen. Ist dem nicht so, hilft ein Blick in das /var/log/syslog, wo die Ausgabe des OpenVPN landen sollte, so denn nicht anders konfiguriert.
ifconfig

Aus Sicherheitsgründen habe ich noch die folgende iptables Regeln verwendet, um unaufgeforderte Verbindungen von außerhalb der VPN zu unterbinden. Damit die Regeln nach dem Reboot wieder gesetzt werden, habe ich die folgenden beiden Zeilen in vor das exit 0 in die Datei /etc/rc.local eingetragen.
sudo iptables -A INPUT -i tun0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
sudo iptables -A INPUT -i tun0 -j DROP

Ebenfalls wichtig ist das NAT, was dafür sorgt, dass alle verbundenen Rechner über die eine VPN-Verbindung kommunizieren können. Dafür gibt es die folgende Regel, die ebenfalls vor das exit 0 in die Datei /etc/rc.local einzutragen ist.
sudo iptables -t nat -A POSTROUTING -o tun0 -j MASQUERADE

Außerdem braucht es noch ein aktiviertes IP-Forwarding, dass in der Datei /etc/sysctl.conf aktiviert werden kann. Einfach den Eintrag net.ipv4.ip_forward heraussuchen und wie folgt ändern.
net.ipv4.ip_forward=1

Damit sollte nun die VPN-Konfiguration abgeschlossen sein. Jetzt kommt der Nameserver dran. Dazu zuerst die Datei /etc/bind/named.conf.options bearbeiten und eine Weiterleitungssektion einfügen. Die beiden IPs sind die Nameserver von Google, es können natürlich auch andere verwendet werden. Um keine Rückschlüsse auf den eigentlichen Anschluss zu verraten, empfiehlt es sich auf die Verwendung der providereigenen Nameserver zu verzichten.
forwarders {
8.8.8.8;
8.8.4.4;
};

Damit sichergestellt ist, dass der Nameserver auch immer bei einem Reboot startet.
sudo update-rc.d bind9 enable

Als nächstes kommt die Verbindung zum Delock Ethernet Adapter, der jetzt einfach mal in den Raspberry eingesteckt werden kann. Es sollte nun bei Eingabe von ifconfig das Netzwerkinterface eth1 angezeigt werden. Ein lsusb sollte folgendes USB-Gerät enthalten.
Bus 001 Device 004: ID 9710:7830 MosChip Semiconductor MCS7830 10/100 Mbps Ethernet adapter

Um dem Netzwerkinterface eth1 die feste IP-Adresse 192.168.100.1 zuzuweisen ist folgendes an das Ende der Datei /etc/dhcpcd.conf einzutragen. Hat das lokale Netz eth0 bereits eine IP im Bereich 192.168.100.* muss für alles was nun folgt, die 100 durch eine andere Ziffer ersetzt werden.
interface eth1
static ip_address=192.168.100.1/24
static routers=192.168.100.1
static domain_name_servers=192.168.100.1

Das war jetzt auch schon der Teil mit dem Raspberry, der an dieser Stelle am besten rebootet werden sollte, um alle Änderungen anzuwenden. Weiter geht es mit der Einrichtung des Access-Points. Hier kann jeder Access-Point verwendet werden, der einen DHCP-Server mitbringt und die Konfiguration einer statischen IP erlaubt. Wenn nicht bereits geschehen, kann der Access-Point nun per Ethernetkabel mit dem Delock Ethernet Adapter verbunden werden.

Um auf die Konfigurationsseite zugreifen zu können, verbindet man sich am besten direkt mit dem WLAN des Access-Points. Bei dem Edimax ist unter iQ Setup nun die folgende, statische IP-Adresse zu konfigurieren. Das Gateway zeigt auf den Raspberry.
Use the following IP address.
IP-Adresse : 192.168.100.2
Subnetzmaske : 255.255.255.0
Gateway-Adresse : 192.168.100.1

Außerdem muss unter Erweiterte Einstellung im Untermenü Administrations-Dienstprogramm der DHCP-Server aktiviert und eingerichtet werden.
Standardgateway       
192.168.100.1
Start-IP       
192.168.100.20
End-IP       
192.168.100.254

Das ganze sollte dann so aussehen.
Achtung, wenn man jetzt auf Speichern und Übernehmen klickt, hat der Access-Point eine IP, die nur noch vom Raspberry aus erreichbar ist. Wer mit Linux unterwegs ist, kann sich einen Tunnel für die Konfigurationsseite des Edimax einrichten. Mit Putty und Windows sollte das genauso gehen. Steht der Tunnel erst, kann im Browser die Adresse localhost aufgerufen werden und man gelangt wieder auf die Konfigurationsseite.
sudo ssh -L 80:192.168.100.2:80 pi@raspberrypi

Hier noch ein Paar Live-Aufnahmen von dem Ganzen.
 

Dienstag, 30. Dezember 2014

Javasourcen mit regulärem Ausdruck zur Diamond-Notation konvertieren

Vielleicht etwas brachial, aber mit der Eclipse File-Suche und einem ungefähr passenden, regulären Ausdruck lässt sich ein Projekt leicht auf Diamond-Notation umstellen. Also von
List<String> l = new ArrayList<String>()
zu
List<String> l = new ArrayList<>()
Das geht mit Eclipse einfach über das Menü Search -> File und dem Regulärem Ausdruck
(=\s*new\s.*<)(\w+)(>\(). Das Häkchen der Checkbox Regular Expression muss aktiviert sein. Anschließend den Dialog mit Replace bestätigen und Replace with auf $1$3 setzen. Der Mittelteil zwischen den Klammern wird dann ausgelassen. Einzig anonyme Klassen muss man nochmal von Hand anfassen, weil die dann doch gern den Typen in der spitzen Klammer sehen wollen.

Mittwoch, 17. Dezember 2014

Werbefreies Android mit der Fritzbox

Zumindest im heimischen Wlan keine Werbung mehr auf dem Android-Gerät anzeigen zu lassen geht ganz einfach, wenn man eine Fritzbox oder einen anderen Router mit Blacklist-Funktion hat.

Schritt eins, einen Traffic-Mitschnitt von der Wlan-Schnittstelle anfertigen. Das geht bei der Fritzbox unter der URL fritz.box/html/capture.html Out-of-the-Box. Auf dem Smartphone eine oder mehrere Apps aufrufen, die Werbung enthalten und anschließend das Capture-File von der Fritzbox mit Wireshark einlesen. Es gibt dazu eine Kurzanleitung bei Chip.de.

Jetzt im Wireshark nach den DNS-Abrufen gucken bzw. am besten nach DNS filtern und man hat vermutlich mindestens einen Verdächtigen. In den meisten Fällen dürfte admob.com unter den Einträgen sein. Das ist das Werbenetzwerk von Google und die meisten Werbeeinblendungen in Android-Apps machen Gebrauch davon.

In der Fritzbox kann die Blacklist unter Internet -> Filter -> Listen gepflegt werden. Hier die unerwünschten Adressen einpflegen. Für die Fritz-Box muss man anschließend unter Internet -> Filter -> Zugangsprofile das Blacklisting für das Standard-Profil aktivieren.

Folgende Google-Einträge haben es auf die Schnelle als unerwünschte Spy- und Werbe-Adressen bei mir in die Blacklist geschafft. Da geht natürlich noch mehr, für die Deaktivierung vieler Werbeeinblendungen reicht das aber erstmal.

doubleclick.net
admob.com
googlesyndication.com
google-analytics.com
googleadservices.com
googletagservices.com

Samstag, 7. Juni 2014

Eclipse Luna, was gibt es neues für Java-Entwickler

Eclipse Luna 4.4 steht vor der Tür, das Release ist für den 25.6 geplant und der Release Cadidate sieht schon sehr gut aus. Auch wenn es einiges neues gibt, fühlt sich die IDE wie gewohnt an. Viele kleine Details wurden geändert, die im einzelnen kaum ins Auge fallen. Ein neuer Button hier, leicht veränderte Symbole dort, die übrigens vollständig auf png umgestellt wurden und nun weniger kantig wirken. Ins Auge hingegen sticht das veränderte Source-Highlighting, dass nun zum Beispiel auch lokalen Variablen eine Farbe verpasst und Konstanten in fettem Blau präsentiert. Dazu passt das, dem Trend folgende und lang erwartete Dark-Theme, das ich ausnehmend gut gelungen finde. Hierzu ergänzend ist das Eclipse Color Themes-Projekt eine gute Anlaufstelle, um die Oberfläche noch weiter zu individualisieren. Weiter wurden Leerräume entfernt, so dass die Oberfläche auch gleich Raumsparender daherkommt. Das Quick Access-Feld lässt sich nun ebenso wie der Perpective-Switcher oder gleich die gesamte Toolbar-Leiste ausblenden.

Die Änderungshistorie im Editor bleibt auch nach dem Schließen und wieder öffnen erhalten. Somit endet die Undo-Funktion nicht mehr mit dem Zustand mit dem die Datei geöffnet wurde, was ein zurückrollen zu vorherigen Bearbeitungssessions ermöglicht.

Eines der meist nachgefragten Features mit 205 Votes ist eine Split-View für Editoren. Dieses ist nun endlich umgesetzt. Im Hauptmenü unter Window → Editor gibt es zwei neue Menüpunkte Toggle Split Editor (Horizontal) und Toggle Split Editor (Vertical) mit denen sich der aktive Editor teilen lässt.

Neue Quick-Fixes zum Erzeugen von for-Loops erlauben das automatische erzugen von Schleifen-Konstruktionen. Das ging bisher nur eingeschränkt und wurde nun ausgebaut. (Siehe Bug 43018). Überhaupt hat sich in der Kategorie Code-Completion eine menge getan und so kommt Luna mit Intelligent Code Completion daher, dass mittels Statistik- und Community-Funktionalität zu erraten versucht, welche Aufrufe, bis hin zu Aufrufketten, vorzuschlagen sind.

Sehr schick ist der Marketplace Client (MPC) unter Help → Eclipse Marketplace mit dem sich Plugins, ganz ähnlich wie unter Firefox & Co., finden und installieren lassen.



Natürlich gilt nicht zuletzt die Java 8 Unterstützung als Grund schlichthin, um das neue Luna zu installieren. So lässt sich zum Beispiel eine anonyme Klasse per Quick-Assist in einen Lambda-Ausdruck umwandeln. Das neue Eclipse ist in vielen Details besser als das alte und es stellt sich das Gefühlt ein, dass man sich endlich vieler Kleinigkeiten angenommen hat, die ein abgerundeteres Bild zur Folge haben. Für mich seit langem das erste Mal, dass ein Eclipse-Update so frustfrei vonstatten geht und trotz Verwendung eines Vorabreleases keine groben Bugs das Nutzungsempfinden trüben. Einzig das Logo erscheint mir ein Griff ins Klo. Das Icon erweckt mit dem orange abgesetztem Halbkreis den Eindruck einer verschobenen Blau-Synchronisierung. Zumindest ist da für die nächste Version noch viel Luft nach oben.

Sonntag, 11. Mai 2014

Java auf dem Desktop 12

Dieses Mal geht es bei meiner Randgruppenserie "Java auf dem Desktop" mit LightZone in die zwölfte Runde. LightZone ist eine sehr schick und übersichtlich geratene Open-Source Darkroom-Software für Windows, Mac und Linux. Darauf aufmerksam geworden bin ich durch einen Spon-Artikel, der LightZone als Bildverarbeiter und Organisator vorstellt. Bereits nach wenig herumprobieren muss ich sagen, dass mir der Programmaufbau gut gefällt. Er ist mit der Verzeichnis-Seitenleiste intuitiv und erlaubt einen quasi Sofort-Einstieg. Hat man das Bildmaterial erst vor sich, sind die gängigen Bild-Veränderungs- und Verbesserungsfunktionen einsetzbar. Alles in seiner Bedienung sehr konservativ, was ich jedoch als angenehm empfinde. Mit den gängigen Bezahlprodukten, wie AfterShot oder gar Lightroom kann sich LightZone nicht messen, dafür ist es aber kostenlos und für all jene einen Blick wert, die eben kein bereits bezahltes Profi-Werkzeug ihr eigen nennen.

Im gleiche Zug möchte ich noch auf ein Jayatana aufmerksam machen, dass Menüs von Java-Anwendungen in Ubuntu-Unity einpasst, sprich das Menü Unity-Typisch in die Leiste auf dem oberen Bildschirmrand verschiebt. Eine Installationsanleitung gibt es bei debinux.

Dienstag, 31. Dezember 2013

Speicherkarten und USB-Sticks testen

Weil ja wieder mal gefälschte Speicherkarten (Link) im Umlauf sind, habe ich mir mal eine Möglichkeit rausgesucht, meine Neuerworbene SDHC-Card zu testen. Weil es das Heise-Tool h2testw nur für Windows gibt, habe ich kurzerhand etwas anderes ausprobiert. Sehr einfach (und natürlich Open Source) ist das Tool F3 von Michel Machado. Zip-File mit den Source-Codes herunterladen, entpacken und make ausführen. F3 compiliert dann zu zwei Programmen.

./f3write /media/user/9016-4EF8/ beginnt damit die Speicherkarte bzw. das angegebene Verzeichnis mit 1GB großen Dateien vollzuschreiben. Ist die Speicherkarte voll, beendet sich F3 und die Daten können analog zum f3write-Aufruf mit ./f3read /media/user/9016-4EF8/ verifiziert werden. Netter Nebeneffekt: man bekommt auch gleich noch die Lese- und Schreibgeschwindigkeit mitgeteilt. Meine neue Billigkarte ist in Ordnung, aber wie ich mir das schon dachte, bei weitem nicht so flott, wie vom Händler behauptet.

Mittwoch, 4. Dezember 2013

Java auf dem Desktop 11

Der heutige Kandidat aus meiner Reihe Java auf dem Desktop ist wieder ein Open Source-Tool und heißt FileBot. Hierbei handelt es sich um ein Tool, das es erlaubt heruntergeladene Serien umzubenennen, dazugehörige Untertitel zu laden oder die Korrektheit der Downloads mit zum Download gehörigen SFV-Dateien zu validieren. Insgesamt also ein mächtiges Tool, das die Grundlagen zur Organisation der heimische Seriensammlung bereit stellt. Ein Installationspaket wird für Debian, Windows und Mac angeboten. Außerdem kann FileBot auch direkt über den Ubuntu Software-Center, AUR oder Chocolatey installiert werden.