Vor einiger Zeit hatte ich einen Artikel darüber geschrieben, was mich an MonoDevelop stört. Seit heute gibt es da noch eine weitere Sache. So kann man in MonoDevelop Ausdrücke und Variablen auswerten, was bei der Entwicklung doch sehr praktisch ist.
Das Fenster zum Überwachen von Ausdrücken und Variablen
Problematisch wird es dann, wenn das Fenster dazu verleitet nach Fehlern zu suchen, die eigentlich nicht existent sind. So kürzt es automatisch den Wert der überwachten Variable ein. Selbst wenn man auf „Kopieren“ drückt, wird nur die gekürzte Fassung in die Zwischenablage geschoben. Dadurch kann es dann passieren das man anstatt:
"ABCDEFGHIJKLMNOPQRSTUVWXYZ"
den Wert:
"ABCDEFGHIJKLMNOPQRS..."
auswertet. Möchte man an dieser Stelle ganz sicher sein, so hilft nur der umständliche Weg über die Lupe, in welcher der ganze Wert in einem extra Fenster angezeigt wird.
Die neue Version 17 des Thunderbirds hat einige Verbesserungen mit sich gebracht. Allerdings gibt es auch einige Dinge welche eher in die Kategorie Verschlechterungen fallen, so z.B. die neue Titelleiste welche nun das Menü und die berühmtem „3-Buttons“ miteinander kombiniert.
Die neue Titelleiste des Thunderbirds
Wer dies rückgängig machen will, der geht am besten in die „Einstellungen“ und dort unter den Punkt „Erweitert“ -> „Allgemein“ und dann auf den Button „Konfiguration bearbeiten“. Danach sucht man dort nach dem Punkt „mail.tabs.drawInTitlebar“ und stellt den Wert wieder auf „false“. Danach ist die Titelleiste im Thunderbird wieder die alte.
Wie Heise berichtet, ist die aktuelle Version von Piwik (1.9.2) mit einer Backdoor versehen. Augenscheinlich fand die Infektion gestern, nach 15:18 Uhr statt, Updates welche vorher eingespielt wurden, sollten nicht betroffen sein.
Erkennen kann man eine infizierte Version an der Zeichenkette:
eval(gzuncompress(base64_decode
Sollte diese Zeile in der Piwik Installation auftauchen so sollte man folgende Schritte durchführen:
die Datei „piwik/core/DataTable/Filter/Megre.php“ löschen
aus der Datei „piwik/core/Loader.php“ die letzten sechs Zeilen löschen (beginnend mit „<?php Error_Reporting(0)“)
die Piwik Installation nach Dateien durchsuchen, welche nicht zu Piwik gehören und diese entfernen
Update:
Mittlerweile gibt es bei Piwik einen Sicherheitsbericht in welchem unter anderem steht das die Versionen von 16:43 Uhr bis Mitternacht kompromittiert sind.
Update (2):
Die im Sicherheitsbericht empfohlene Säuberung sieht so aus:
„piwik/config/config.ini.php“ sichern
„piwik/“ Verzeichnis löschen
neuste Piwikversion herunterladen
auf den Server hochladen
„config.ini.php“ wieder in den Ordner „piwik/config/“ packen
Virtualisierung an sich ist eine feine Sache, man nehme einen Rechner und simuliere auf diesem mehrere Rechner. Dank KVM ist die ganze Sache auch ziemlich einfach. Dazu installiert man auf einem Rechner ein Ubuntu Server 12.10 (mit dem OpenSSH Paket, und einem Nutzer (in diesem Fall „seeseekey“)). Dabei sollte man darauf achten, das der Nutzer kein verschlüsseltes „home“-Verzeichnis hat, sonst könnte es später Probleme mit der Verwendung von SSH Schlüsseln geben. Anschließend überprüft man auf der Konsole mittels:
cat /proc/cpuinfo
ob die CPU über die entsprechende Virtualisierungsfunktionen verfügt. Die erkennt man in der Sektion „flags“ der Ausgabe. Dort muss für Intel CPUs das Flag „vmx“ und für AMD CPUs das Flag „svn“ vorhanden sein. Ist dies der Fall so kann KVM mittels:
überprüft dann nochmal ob die CPU wirklich für KVM geeignet ist. Dabei ist zu beachten das es „kvm-ok“ nur unter Ubuntu gibt, andere Distribution enthalten es aller Wahrscheinlichkeit nach nicht. Nun muss der Nutzer noch der Gruppe „libvirtd“ hinzugefügt werden. Auf der Konsole ist dazu ein:
sudo adduser seeseekey libvirtd
nötig. Danach sollte der KVM Host neugestartet werden, bzw. sich an- und abgemeldet werden. Zur Verwaltung der Maschinen wird der „Virtual Machine Manager“ benutzt. Dieser wird auf der entsprechenden Zielmaschine (welche nicht identisch mit dem KVM Host sein muss) mittels:
sudo apt-get install virt-manager
installiert. Auf der entsprechenden Maschine, welche die Verwaltung übernimmt sollte ein SSH Schlüssel erzeugt werden. Dies geschieht auf der Konsole:
ssh-keygen -t rsa -C ""
Nun übertragen wir den Schlüssel auf den KVM Host, damit wir uns mit diesem verbinden können, was dann so aussehen könnte:
Danach sollte der „Virtual Machine Manager“ gestartet werden. Über „Datei“ -> „Verbindung hinzufügen“ wird im darauf folgenden Dialog der KVM Host hinzugefügt.
Eine Verbindung wird hinzugefügt
Nun wird noch eine Netzwerkbrücke eingerichtet. Diese dient dazu, das man die virtuellen Maschinen auch von außen ansprechen kann. Ohne diese Brücke befinden sich die Maschinen hinter einem NAT und können nur mit dem KVM Host kommunizieren.
Um die Bridge zu erstellen wird die Datei „/etc/network/interfaces“ geändert. Auf einem normalen System sollte diese wie folgt aussehen:
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
# The loopback network interface
auto lo
iface lo inet loopback
# The primary network interface
auto eth0
iface eth0 inet dhcp
Nun wird „auto eth0“ in „auto br0“ und „iface eth0 inet dhcp“ in „iface br0 inet dhcp“ geändert. Anschließend fehlt nur noch die Zeile:
bridge_ports eth0
welche am Ende hinzugefügt wird. Damit sieht die neue „/etc/network/interfaces“ dann wie folgt aus:
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
# The loopback network interface
auto lo
iface lo inet loopback
# The primary network interface
auto br0
iface br0 inet dhcp
bridge_ports eth0
Danach geben wir im Terminal:
/etc/init.d/networking restart
mit root-Rechten ein und schon ist die entsprechende Konfiguration wirksam.
Die Storage Pools des KVM Host
Nachdem dies geschehen ist kann man eine neue virtuelle Maschine anlegen. Wenn man ein Windowssystem installiert, sollte man darauf achten, das man die entsprechenden Treiber anschließend installiert. Diese findet man unter http://alt.fedoraproject.org/pub/alt/virtio-win/latest/images/bin/.
Bei den Storage Pools, in welchem die Daten für die virtuellen Maschinen liegen, empfiehlt es sich den „default“ Pool außen vor zu lassen. Stattdessen legt man sich einen Pool „images“ und einen Pool „machines“ an. Im „images“ Pool lagert man dann alle Betriebsystemimages für die Installation neuer Maschinen. Im „machines“ Pool hingegen, sollten sich die installierten Maschinen befinden.
Das Quellgerät muss auf die Netzwerkbrücke eingestellt werden
In jeder virtuellen Maschine muss dabei das Quellgerät in der Netzwerkkonfiguration auf die Netzwerkbrücke (br0) eingestellt werden. Damit ist die Maschine ein Teil des Netzwerkes in welchem sich auch der KVM Host befindet. Bei den virtuellen Maschinen, empfiehlt es sich bei grafischen Systemen in der entsprechenden Konfiguration unter „Video“ das Modell „vmvga“ auszuwählen.
Bei mir auf der Festplatte liegen einige Quelltext in Form von Subversion und Git Repositories. Da es mühsam wäre jedes einzelne Repository zu aktualisieren, habe ich mir ein kleines Skript geschrieben, welches diese Aufgabe abnimmt:
#bash
#Update repositories script
#Copyright (c) 2012 by seeseekey <>
#
#This program is free software: you can redistribute it and/or modify
#it under the terms of the GNU General Public License as published by
#the Free Software Foundation, either version 3 of the License, or
#(at your option) any later version.
#
#This program is distributed in the hope that it will be useful,
#but WITHOUT ANY WARRANTY; without even the implied warranty of
#MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
#GNU General Public License for more details.
#
#You should have received a copy of the GNU General Public License
#along with this program. If not, see <http://www.gnu.org/licenses/>.
SCRIPTPATH=$(pwd);
#Git
for directory in `find $SCRIPTPATH -name ".git" -type d`;
do
echo $directory;
cd $directory/..;
git pull;
done
#Subversion
for directory in `find $SCRIPTPATH -name ".svn" -type d`;
do
echo $directory;
cd $directory/..;
svn update;
done
#Pfad zurücksetzen
cd $SCRIPTPATH;