Java 7 (also Version 1.7) sollte man beim Surfen im Web wohl eher nicht verwenden. Grund dafür ist eine Sicherheitslücke, die aus dem Design der JRE hervorgeht. Mit deren Hilfe ist es einem Angreifer möglich, Schadprogramme nach Belieben auf den Rechner des Opfers zu bringen.
Die Sicherheitslücke betrifft dabei soweit bisher bekannt alle Web Browser sowie alle Betriebssysteme (mit installierter Java 7 JRE).
Donnerstag, 30. August 2012
Dienstag, 14. August 2012
xz Kompression für schnelleren Linux Boot
Eine einfache, und doch auch recht ergiebige Methode, um den Bootvorgang unter Linux - bei mir Arch Linux - zu beschleunigen ist, das System weniger Daten von der Festplatte laden zu lassen.
Um dieses Ziel schon zu Beginn des Startvorgangs umzusetzen, ist das initramfs meist komprimiert. Dadurch wird der Flaschenhals Festplatte auf Kosten von mehr CPU Rechenzeit umgangen. Bei einer einigermaßen schnellen CPU lohnt sich das dann auch ganz gut!
Per Default wird dieses Image mittels gzip komprimiert. Das rührt vermutlich daher, dass gzip etablierter Standard in der Linux Welt ist.
xz bietet jedoch eine höhere Kompression. Natürlich auf Kosten von noch mehr CPU Rechenzeit. Wer also eine "schnelle" (bei mir ein Intel(R) Core(TM)2 Duo T9400 ... also nichts weltbewegendes) CPU hat, sollte mal versuchen, auf xz Kompression beim Booten zu setzen.
Unter Arch Linux lässt sich diese Einstellung in /etc/mkinitcpio.conf vornehmen:
Eventuell lassen sich noch weitere Verbesserungen erzielen, in dem die --extreme Option übergeben wird. Dadurch dauert die Komprimierung länger, dafür ergibt sich aber (unter Umständen) ein besserer Kompressionsgrad.
Durch obige Anpassung spare ich mir etwa eine Sekunde beim Hochfahren.
Liebe Grüße,
Daniel
Um dieses Ziel schon zu Beginn des Startvorgangs umzusetzen, ist das initramfs meist komprimiert. Dadurch wird der Flaschenhals Festplatte auf Kosten von mehr CPU Rechenzeit umgangen. Bei einer einigermaßen schnellen CPU lohnt sich das dann auch ganz gut!
Per Default wird dieses Image mittels gzip komprimiert. Das rührt vermutlich daher, dass gzip etablierter Standard in der Linux Welt ist.
xz bietet jedoch eine höhere Kompression. Natürlich auf Kosten von noch mehr CPU Rechenzeit. Wer also eine "schnelle" (bei mir ein Intel(R) Core(TM)2 Duo T9400 ... also nichts weltbewegendes) CPU hat, sollte mal versuchen, auf xz Kompression beim Booten zu setzen.
Unter Arch Linux lässt sich diese Einstellung in /etc/mkinitcpio.conf vornehmen:
# COMPRESSION
# Use this to compress the initramfs image. By default, gzip compression
# is used. Use 'cat' to create an uncompressed image.
#COMPRESSION="gzip"
#COMPRESSION="bzip2"
#COMPRESSION="lzma"
COMPRESSION="xz"
#COMPRESSION="lzop"
# COMPRESSION_OPTIONS
# Additional options for the compressor
#COMPRESSION_OPTIONS=""
# Use this to compress the initramfs image. By default, gzip compression
# is used. Use 'cat' to create an uncompressed image.
#COMPRESSION="gzip"
#COMPRESSION="bzip2"
#COMPRESSION="lzma"
COMPRESSION="xz"
#COMPRESSION="lzop"
# COMPRESSION_OPTIONS
# Additional options for the compressor
#COMPRESSION_OPTIONS=""
Eventuell lassen sich noch weitere Verbesserungen erzielen, in dem die --extreme Option übergeben wird. Dadurch dauert die Komprimierung länger, dafür ergibt sich aber (unter Umständen) ein besserer Kompressionsgrad.
Durch obige Anpassung spare ich mir etwa eine Sekunde beim Hochfahren.
Liebe Grüße,
Daniel
networkmanager/modemmanager und Ericsson F3507g
![]() |
| nm-applet unter gnome3 |
Die Verbindung klappt und NetworkManager kann das Modem auch aus dem Standby holen.
Nur wieder in den Standby zurückbringen, das ging bisher nicht. Der entsprechende Button (siehe Bild rechts) ließ sich natürlich anklicken, die Oberfläche suggerierte (wie im Bild) dann auch, dass das Modem aus sei, aber die zugehörige LED enttarnte den Schwindel.
Also habe ich dazu einen Bug Report geschrieben, der lange Zeit ... naja, einfach nur existierte.
Vor ein paar Tagen habe ich dann die Mail bekommen, dass mein Report ein Duplikat von einem anderen Report sei, worauf hin ich auf die Sache wieder aufmerksam geworden bin.
Also auf Aufforderung / Anleitung eines der Entwickler von Modemmanager (die dafür zuständige Komponente, bzw. das Backend) ein paar Tests durchgeführt, den möglichen Fix überprüft und bestätigt und wieder funktioniert ein Teil meines Laptops besser :)
Wer nun auch so ein Modem hat und unter dem gleichen Problem leidet, der kann Modemmanager aus dem Quelltext selbst kompilieren und hat so die Verbesserung gleich verfügbar.
Für Arch Linux habe ich hier auch gleich ein leicht modifiziertes PKGBUILD, das Original ist von modemmanager-git:
PKGBUILD
Die einzige Änderung ist in Zeile 27, und dient dazu den Branch mit dem Fix auszuwählen:
git clone -b MM_05 $_gitroot $_gitname
Liebe Grüße,
Daniel
Samstag, 4. August 2012
Quaternionen, 3D Welten (und mehr)
Ich verzweifle gerade etwas an den Umrechnungen zwischen unterschiedlichen Referenzsystemen des Quadrocopters.
Da ist zum einen das "globale" Referenzsystem, das sich im Falle das Quadrocopters z.B. gut auf eine Karte der Umgebung abbilden ließe (z.B. 10 Meter nördlich vom Startpunkt)
Auf der anderen Seite bekommen die Sensoren allerdings nur das lokale Referenzsystem des Quadrocopters mit, die Sensoren können also z.B. nur messen "Beschleunigung mit 5m/s² nach vorne".
Um dieses "nach vorne" nun in das globale Referenzsystem umzurechnen (um letztendlich die neue Lage bestimmen zu können) benötigt man die aktuelle Rotation (Orientierung) des Quadrocopters und damit der Sensoren.
Die Orientierung lässt sich hervorragend mit Quaternionen beschreiben, vor Allem lassen sich so mehrere Rotationen in eine einzige Rotation zusammenfassen.
Z.B. drehe ich mich erst um 33° um X, dann um 65° um Z, dann um 199° um Y, dann wieder 12° um X, dann nochmal 50° um Z und schließlich 20° um Y.
Wo ich jetzt bin kann ich berechnen, in dem ich jede der Rotationen nacheinander ausführe. Einfacher ist es jedoch, all diese Rotationen (in der richtigen Reihenfolge) zusammenzufassen, sodass am Ende 1 Drehung um eine Achse (a, b, c) zum gleichen Ergebnis führt.
Diese zusammengefasste Information ist in einem Quaternion gespeichert.
Will ich nun einen Vektor (z.B. den Vektor der Beschleunigung, geliefert von einer IMU) aus seinem lokalen Referenzsystem in das globale transformieren, dann muss ich "nur" das Sandwichprodukt mit dem Quaternion welches die Lage beschreibt berechnen.
Das Sandwichprodukt ist dabei:
v2 = q' * v1 * q
v1 := Vektor im lokalen System
v2 := Vektor im globalen System
q := Quaternion der aktuellen Lage
q' := konjugiertes Quaternion
* := Quaternionenmultiplikation
Klingt einfach, ist in der Praxis dann aber doch ziemliches Formelwirrwarr.
Eine Seite, die dem Ganzen einen Sinn und einen Hintergrund geben kann, ist z.B. folgende:
www.euclideanspace.com
(speziell hier, die Navigation auf der Seite ist etwas missglückt)
Da ist zum einen das "globale" Referenzsystem, das sich im Falle das Quadrocopters z.B. gut auf eine Karte der Umgebung abbilden ließe (z.B. 10 Meter nördlich vom Startpunkt)
Auf der anderen Seite bekommen die Sensoren allerdings nur das lokale Referenzsystem des Quadrocopters mit, die Sensoren können also z.B. nur messen "Beschleunigung mit 5m/s² nach vorne".
Um dieses "nach vorne" nun in das globale Referenzsystem umzurechnen (um letztendlich die neue Lage bestimmen zu können) benötigt man die aktuelle Rotation (Orientierung) des Quadrocopters und damit der Sensoren.
Die Orientierung lässt sich hervorragend mit Quaternionen beschreiben, vor Allem lassen sich so mehrere Rotationen in eine einzige Rotation zusammenfassen.
Z.B. drehe ich mich erst um 33° um X, dann um 65° um Z, dann um 199° um Y, dann wieder 12° um X, dann nochmal 50° um Z und schließlich 20° um Y.
Wo ich jetzt bin kann ich berechnen, in dem ich jede der Rotationen nacheinander ausführe. Einfacher ist es jedoch, all diese Rotationen (in der richtigen Reihenfolge) zusammenzufassen, sodass am Ende 1 Drehung um eine Achse (a, b, c) zum gleichen Ergebnis führt.
Diese zusammengefasste Information ist in einem Quaternion gespeichert.
Will ich nun einen Vektor (z.B. den Vektor der Beschleunigung, geliefert von einer IMU) aus seinem lokalen Referenzsystem in das globale transformieren, dann muss ich "nur" das Sandwichprodukt mit dem Quaternion welches die Lage beschreibt berechnen.
Das Sandwichprodukt ist dabei:
v2 = q' * v1 * q
v1 := Vektor im lokalen System
v2 := Vektor im globalen System
q := Quaternion der aktuellen Lage
q' := konjugiertes Quaternion
* := Quaternionenmultiplikation
Klingt einfach, ist in der Praxis dann aber doch ziemliches Formelwirrwarr.
Eine Seite, die dem Ganzen einen Sinn und einen Hintergrund geben kann, ist z.B. folgende:
www.euclideanspace.com
(speziell hier, die Navigation auf der Seite ist etwas missglückt)
Mittwoch, 1. August 2012
git letzten commit rückgängig machen
Leider vergesse ich oft noch kleine Änderungen, wenn ich einen commit mache. Die sind dann natürlich nicht im commit enthalten, einen extra commit a la "Ach übrigens das fehlt noch" halte ich für Unsinnig, also muss der letzte Commit rückgängig gemacht werden:
Die Erklärung ist eine kurze Zusammenfassung / Übersetzung von dieser stackoverflow.com Antwort.
Die Erklärung ist eine kurze Zusammenfassung / Übersetzung von dieser stackoverflow.com Antwort.
git fast forward merge rückgängig machen
Ich arbeite gerade mit git und wollte die Änderungen aus einem Branch (speziell für ein Issue) nach master übernehmen.
Hat auch soweit funktioniert, allerdings hat git ein fast forward merge daraus gemacht. D.h., die commits vom branch ISS#NR sind nun auch in master zu finden.
Da mir das nicht gefällt habe ich den merge rückgängig gemacht:
Die Ausgabe sieht z.B. so aus:
Ein
hat mich dann in die Ausgangslage vor dem merge gebracht.
Einen merge mit commit (also ohne fast forward) konnte ich dann so erreichen:
Vielleicht hilft es ja noch jemanden :)
# On branch master
git merge ISS#NR
Hat auch soweit funktioniert, allerdings hat git ein fast forward merge daraus gemacht. D.h., die commits vom branch ISS#NR sind nun auch in master zu finden.
Da mir das nicht gefällt habe ich den merge rückgängig gemacht:
git reflog show master
Die Ausgabe sieht z.B. so aus:
##### master@{0}: merge ISS#NR: Fast-forward
##### master@{1}: commit: ....
Ein
git reset --keep master@{1}
hat mich dann in die Ausgangslage vor dem merge gebracht.
Einen merge mit commit (also ohne fast forward) konnte ich dann so erreichen:
git merge --no-ff ISS#NR
Vielleicht hilft es ja noch jemanden :)
Abonnieren
Posts (Atom)
