Samstag, 18. Dezember 2010

Tastaturmaus für Linux und Windows

Es kommt hin und wieder vor, daß man nur eine Tastatur zur Verfügung hat, aber eine Maus benötigen würde.

Für Linux stellt man die Tastaturmaus so ein:
STRG+Shift+Num
Mit dem numerischen Ziffernblock kann man nun die Maus steuern, mit "5" löst man einen Linksklick aus, mit "+" einen Doppelklick, mit "-" stellt man die 5 auf Rechtsklick um, mit "*" wieder auf Linksklick zurück. Mit "0" klickt man dauerhaft, wie man es für Drag and Drop braucht.

Für Windows funkt es so:
Alt+Shift-Num (linkes Shift verwenden)
"5" ist der Linksklick, "+" der Rechtsklick, für das halten wird ebenfalls die "0" verwendet.
Ausschalten läßt sich das Ganze wieder mit Alt + Num.

Links:
Windows Anleitung
Linux Anleitung

JSF datatable und commandlink

JavaServer Faces 2.0.3
Tomahawk 1.1.10

Will man in seiner h:datatable einen h:commandlink verwenden und das dahinterliegende Bean im Requestscope arbeitet, passiert es häufig, das die action des h:commandlink einfach nicht ausgeführt wird. Viele Seiten im Netz beschäftigen sich mit diesem Phänomen, aber eine hieb und stichfeste Lösung findet man eigentlich nicht. Zum Laufen gebracht habe ich es dann mit der Tomahawk Version der datatable f:datatable.
Aber auch dabei gibt es einige Fallstricke, die einem im ersten Augenblick nicht ganz einleuchten.

Hier der xhtml Teil, wie er funktioniert, die Action also ausgeführt wird:


    
     
      
      
     
     
      
      
      
      
     
    
   

Zu beachten ist hier, das es nur funktioniert wenn preserveDatamodel true gesetzt wird, andernfalls wird die action des h:commandlinks nicht ausgeführt. Eine genauere Erklärung was preserveDataModel genau macht, findet man hier.

Eine weitere Falle stellt das attribute rendered dar, setzt man es als Attribut der t:datatable ein, funktioniert der h:commandlink schon wieder nicht.

f:param wird gesetzt, damit man in der Actionmethode auch den richtigen Eintrag erwischt:

FacesContext.getCurrentInstance().getExternalContext()
   .getRequestParameterMap().get("imageDetailInfo")

Links:
Artikel und Diskussion über dieses Problem
Blogbeitrag: Lösung des Problems durch Schreiben eines CommandLinkRenderers
Auführlicher Artikel von BalusC über das Arbeiten mit datatables

Mittwoch, 8. Dezember 2010

Autologin Fedora

OS: Fedora 14

Wenn man zB seine Platte verschlüsselt hat und sowieso der einzige Benutzer des Systems ist, stört die zweifache Passworteingabe doch etwas. Um dieser zu entgehen, fügt man einfach im File /etc/gdm/custom.conf unter der Sektion [daemon] folgende Zeilen ein:

AutomaticLoginEnable=true
AutomaticLogin=username

Links:
Blogbeitrag von rvokal

Freitag, 3. Dezember 2010

JSF 2.0 - Ajax Einsatz

Java Server Faces 2.0.3

Der Einsatz von Ajax in JSF ist relativ simpel zu implementieren, hier ein kleines Testbeispiel, das 2 Buttons includiert, wobei einer einen Ajax Request auslöst, während der andere einen normalen Request auslöst.


   
    
     
    
    
   
   
    
   
   
    
   
  

Der f:ajax tag wird einfach als Kindelement unter das Control gehängt, daß den Request auslösen soll, und als Attribut render wird die id des Tags eingetragen, der als einziger neu gerendert werden soll, simpler geht es fast nicht mehr.
Dazu die Bean, die natürlich auch in der faces-config.xml registriert ist:

import java.util.Date;

public class SearchBean {
 private Date now;
 public Date getNow() {
  now =  new java.util.Date();
  return now;
 }
 public void setNow(Date now) {
  this.now = now;
 }
}

Man kann schon sehen wie beim Drücken des einen Buttons alles neu gezeichnet wird, während der andere nur das eine Control neu zeichnet.

Einen Fallstrick gibt es, der mit etwas Zeit gekostet hat: Der Ajax Request funktionierte einfach nicht, und im Log war diese seltsame Fehlermeldung zu finden:
Eine oder mehrere Ressourcen haben das Ziel 'head', aber es wurde keine Komponente 'head' in der Ansicht definiert.


Mit Hilfe dieses Blogeintrags habe ich dann das Problem ausmachen können:
Das jsf.js wurde nicht geladen, weil ich den Tag 'head' eingesetzt habe und nicht den Tag 'h:head'.


Links:
Ajax Kapitel aus dem JSF 2.0 Buch der Firma irian

Dienstag, 30. November 2010

Upgrade Java Server Faces von 1.2 auf 2.0 - faces-config.xml

Java Server Faces 1.2.14 zu 2.0.3
Tomahawk 1.1.10

Beim Upgrade eines JSF Projekts müssen einige Bibliotheken ausgetauscht werden und wenn es sich um ein mit Eclipse und dem JBoss Tools erzeugtes Projekt handelt sogar einige der .settings Files per Hand angepasst werden (zumindest fand ich keinen anderen Weg).

Eine besondere Falle, insbesondere da die Fehlermeldungen nicht vorhanden sind, bzw. nichts aussagen, ist die faces-config.xml. Bemerkt habe ich das Problem, als aus irgendeinem Grund meine Tomahawk Tags nicht mehr in Html umgewandelt wurden sondern z.B. als t:graphicImage nutzlos direkt mitübertragen wurden.

Die Lösung war, den ersten Teil der faces-config, der so aussah:




durch eine 2.0 kompatible zu ersetzten:





Montag, 29. November 2010

Tomahawk: inputFileUpload

Java Server Faces: 2.0.3
Tomahawk 1.1.10 für JSF 2.0

Um Files angenehm hochladen zu können habe ich mal den Tag inputFileUpload aus der Tomahawk Bibliothek ausprobiert.

Dazu das xhtml File:


    
    
  

Zu beachten ist, das die Form den enctype braucht, sonst funkt es nicht.

Da die Bean:

import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import org.apache.myfaces.custom.fileupload.UploadedFile;

public class FileUploadBean {
 private UploadedFile upFile;
 FileOutputStream out;
 InputStream stream;

 public FileUploadBean() {
 }

 public UploadedFile getUpFile() {
  return upFile;
 }

 public void setUpFile(UploadedFile upFile) {
  this.upFile = upFile;
 }

 public String upload() throws IOException {
  try {
   stream = upFile.getInputStream();
   long size = upFile.getSize();
   byte[] buffer = new byte[(int) size];
   stream.read(buffer, 0, (int) size);
   out = new FileOutputStream("/path/to/your/dir/testfile.jpg");
   out.write(buffer);
   System.out.println("Erfolgreicher Upload");
   return "ok";
  } catch (Exception ioe) {
   System.out.println("Upload gescheitert");
   return "no";
  } finally {
   if (stream != null) {
    stream.close();
   }
   if (out != null) {
    out.close();
   }
  }
 }
}


Tomahawk braucht noch einen Eintrag in das web.xml:


 
  Extensions Filter
  org.apache.myfaces.webapp.filter.ExtensionsFilter
  
   uploadMaxFileSize100m
  
   uploadThresholdSize100k
  
   
   Set the path where the intermediary files will be stored.
        
   uploadRepositoryPath/temp
 
 
  Extensions Filter
  Faces Servlet
 


Weiters darf man natürlich nicht vergessen das Bean in der faces-config.xml als ManagedBean zu registrieren.

Links:
Beispiel für inputFileUpload auf roseindia.net
Beispiel für inputFileUpload von balusc
Tomahawk Homepage

Freitag, 19. November 2010

Unterschied zwischen -DskipTests und -Dmaven.test.skip

Während -DskipTests zumindest die Testsourcen kompiliert, ignoriert -Dmaven.test.skip den Testfolder vollkommen.

Hierzu aus den Maven FAQ´s:
Add the parameter -Dmaven.test.skip=true or -DskipTests=true in the command line, depending on whether you want to skip test compilation and execution or only execution.


Links:
Maven Homepage

Sonntag, 14. November 2010

NetworkManager durch Wicd ersetzen

Der NetworkManager in Ubuntu hat die unangenehme Eigenschaft, manchmal den Dienst zu verweigern, namentlich das nm-applet tritt nach besonderen Ereignissen gerne mal in den Streik.

Nachdem ich meine Festplatte volllaufen hab lassen und mich nicht mehr als User einloggen konnte, aber zum Glück noch als root, damit wieder Platz freischaufeln konnte, war das nm-applet aus dem Panel verschwunden. In der Prozessliste war es wie üblich vorhanden, aber wlan0 verweigerte den Dienst, eth0 ging zum Glück noch, ist scheinbar unabhängig von dem nm-applet. Nachdem ich 2 Stunden Lösungsvorschlägen aus Foren gefolgt bin mochte ich nichtmehr. Frühere Erfahrungen mit dem Applet haben zwar gezeigt, daß es irgenwie immer geht, es wieder hinzukriegen, aber diesmal reichte es: NetworkManager raus, Wicd rein, so gehts:

sudo apt-get install wicd
sudo apt-get remove --purge network-manager network-manager-gnome

Anzumerken wäre noch, die eingespeicherten Verbindungen aus dem NetworkManager werden nicht übernommen, da sollte man sich im Fall des Falles die entsprechenden Einstellungen notieren.

Links
Ubuntuusers Beitrag

Samstag, 23. Oktober 2010

Repositories für Ubuntu

OS: Ubuntu 10.10

Hier eine Liste von Repositories, die ich benutze. Es sei nochmals darauf hingewiesen, das Drittquellen gefährlich sind, hier kann bösartiger Code in das System geschleust werden. Will man jedoch aktuellere Versionen verwenden als in den Ubunturepositories angeboten werden, muß man sich wohl oder übel damit behelfen, wobei man natürlich auch einzelne Pakete einspielen könnte, aber das zu warten bedeutet doch einiges mehr Aufwand als wenn man über den Paketmanager neuere Versionen angeboten bekommt.

deb http://archive.ubuntu.com/ubuntu/ maverick main restricted multiverse universe
deb http://archive.ubuntu.com/ubuntu/ maverick-updates main restricted multiverse universe
deb http://archive.ubuntu.com/ubuntu/ maverick-backports main restricted universe multiverse
deb http://archive.canonical.com/ubuntu maverick partner
deb http://archive.ubuntu.com/ubuntu/ maverick-security main restricted multiverse universe
deb http://archive.ubuntu.com/ubuntu/ maverick multiverse
deb http://archive.ubuntu.com/ubuntu/ maverick-updates restricted
deb http://archive.ubuntu.com/ubuntu/ maverick-backports restricted
deb http://security.ubuntu.com/ubuntu/ maverick-security restricted main multiverse universe
deb http://archive.ubuntu.com/ubuntu/ maverick-proposed restricted main multiverse universe
deb http://archive.ubuntu.com/ubuntu/ maverick restricted multiverse
deb http://archive.ubuntu.com/ubuntu/ maverick-updates restricted multiverse
deb http://archive.ubuntu.com/ubuntu/ maverick restricted multiverse
deb http://archive.ubuntu.com/ubuntu/ maverick-security restricted multiverse
deb http://archive.ubuntu.com/ubuntu/ maverick-backports restricted multiverse
deb http://packages.medibuntu.org/ maverick free non-free
deb http://download.virtualbox.org/virtualbox/debian maverick non-free
deb http://dl.google.com/linux/deb/ stable non-free main
deb http://archive.ubuntu.com/ubuntu/ karmic multiverse universe
deb http://ppa.launchpad.net/zyv/ppa/ubuntu maverick main
deb http://www.awxcnx.de/apt maverick main
deb http://debian.anonymous-proxy-servers.net maverick main
deb http://extras.ubuntu.com/ubuntu maverick main
deb http://ppa.launchpad.net/banshee-team/ppa/ubuntu maverick main #Banshee Stable
deb http://dl.google.com/linux/chrome/deb/ stable main
deb http://archive.canonical.com/ubuntu maverick partner
deb http://ppa.launchpad.net/ricotz/ppa/ubuntu maverick main
deb-src http://ppa.launchpad.net/ricotz/ppa/ubuntu maverick main
deb http://ppa.launchpad.net/sevenmachines/flash/ubuntu maverick main #Adobe Flash PPA (x86-64)
deb http://deb.opera.com/opera/ lenny non-free #The official source of Opera
deb http://ppa.launchpad.net/tualatrix/ppa/ubuntu maverick main #Ubuntu Tweak Stable Source
deb http://ppa.launchpad.net/ubuntu-x-swat/x-updates/ubuntu maverick main #X Updates
deb http://ppa.launchpad.net/zyv/ppa/ubuntu maverick main
deb http://linux.dropbox.com/ubuntu maverick main #Dropbox Official Source
deb http://archive.canonical.com/ubuntu maverick partner
deb http://deb.opera.com/opera/ lenny non-free
deb http://ppa.launchpad.net/segler-alex/ppa/ubuntu maverick main #Rhytmbox Radio Browser PPA
deb http://ppa.launchpad.net/shutter/ppa/ubuntu maverick main
deb http://ppa.launchpad.net/transmissionbt/ppa/ubuntu maverick main #Transmission BT PPA
deb http://ppa.launchpad.net/ubuntu-wine/ppa/ubuntu maverick main
deb http://ppa.launchpad.net/zeitgeist/ppa/ubuntu maverick main


Mittwoch, 20. Oktober 2010

Excelfiles mit Java einlesen, verändern, erzeugen: JExcelApi

Eigentlich wollte ich nur ne schnelle Möglichkeit, an die Daten aus einem Excelfile ranzukommen, dabei bin ich die Open Source API JExcel gestolpert, welche dies recht einfach macht, aber auch verändern und erzeugen kann.

Hier ein sehr einfaches Beispiel, wo 4 Spalten beliebiger Länge ausgelesen werden, bereit für weitere Verarbeitung:

Workbook workbook = Workbook.getWorkbook(new File("resources/example.xls"));
if (workbook != null) {
 Sheet log = workbook.getSheet(1);
 List lLog = new ArrayList();
 int i = 1;
 while (i < log.getRows()) {
  ArrayList row = new ArrayList();
  for (int j = 0; j < 4; j++) {
   row.add(j, log.getCell(j, i).getContents());
  }
  lLog.add(row);
  i++;
 }
 workbook.close(); // frees memory
}

Links:
JExcel auf Sourceforge

Samstag, 9. Oktober 2010

Screenshot Tool für Ubuntu: Shutter

OS: Ubuntu 10.4
Shutter v0.85.1 (über PPA 0.86.4)

Screenshots anzufertigen und diese nachbearbeiten ist kann ohne entsprechende Tools mühevoll werden, sie dann noch über Bilderdienste à la imageshack ins Netz zu stellen um sie zB in einem Forum einbinden zu können kostet Zeit, wenn es sehr viele Screenshots benötigt werden würde man sich doch etwas Toolunterstützung wünschen... all das kann Shutter, das in den Standardrepositories von Ubuntu vorhanden ist, für einen tun.

Leider ist out-of-the-box hier das Bearbeitsungstool für die Screenshots nicht dabei, das kann man aber relativ einfach nachinstallieren:
sudo apt-get install libgoo-canvas-perl gnome-web-photo
Bevorzugt man jedoch die neueste Version und will sich das .deb File nicht einspielen, weil man über Versionsupdates informiert werden will, sollte man sich das Ganze über das PPA Reprository holen (Dazu der obligatorische Hinweis, das Drittquellen unsicher sind, es handelt sich hier um eine):
sudo add-apt-repository ppa:shutter/ppa
sudo apt-get update
sudo apt-get install shutter
Links:
Shutter Homepage

Blender Tutorial

OS: Ubuntu 10.4
Blender 2.49b

Bei Blender handelt es sich um eine freie 3D-Grafik-Software, die im aktuellen Ubunturepository enthalten ist und somit über das Software-Center einfacht zu installieren ist.

Hier sollen meine ersten Schritte damit dokumentiert werden:

Wenn man auf einem Laptop arbeitet sollte man folgende Einstellungen treffen:
„Select with: left mouse“, „View rotation: turntable“, „Middle Mouse button: Pan View“.
Danach „File|Save default settings“ oder Ctrl-U zum Abspeichern.


Weiters kann man sich die Numpad-Tasten simulieren lassen, sodaß die normalen Zahlen als Numpadzahlen gelten:



Über die Toolbox eine Sphere einfügen

Aufgerufen wird die Toolbox mit der Spacetaste, wir wählen Add|Mesh|UVsphere:


Die Einstellungen, die für die Sphere vorgeschlagen werden belassen wir einmal und schon haben wir eine Sphere (der rosa Rand bedeutet, das dieses Objekt gerade ausgewählt wurde):




Edit Mode

Ein aktives Objekt kann man mit den Testen 'G' (Verschieben), 'R' (Rotieren) und 'S' (Skalierung) einfach verändern. Andererseits kann man das Objekt in einen "Edit Mode" umschalten:


Nun kann man per Linksklick einen einzelnen Punkt aus wählen und ihn nach drücken der 'G'-Taste beliebig verschieben:


File laden und speichern

Um ein File zu laden klickt man F1, um eines zu sichern F2, Files die von Blender geladen werden können werden mit einem gelben Rechteck gekennzeichnet.

Display Buttons

Geöffnet werden die Display Buttons mit F10:


Hier kann man nun die Parameter Rendering Qualität, Animationen usw. festlegen. Um das Rendering mit diesen Parameter durchzuführen drückt man einfach den großen RENDER Button (oder F12), um die Animation abzuspielen, den großen ANMIM Button. Mit dem OSA Button dreht man anti-aliasing an und ab. Mit F8 ruft man das Render Result Window auf:


Das 3D Window

Im 3D Window kann man wie schon erwähnt die Tasten 'G', 'S' und 'R' nutzen um das Objekt zu manipulieren, mit den Numpad-Tasten 7, 1 und 3 bekommt man die Sicht von Oben, von Vorne oder von Rechts, mit der Numpad-Taste 0 kommt man in die Kamerasicht. Mit der Taste 'Z' wechselt man mit zwischen der Kantensicht (Wireframe) und der undurchsichtigen Objektsicht (Solid). Ob Schatten angezeigt werden (Shaded) oder nicht, wird mit Shift+Z gesteuert. Das nächste Bild zeigt die Kamerasicht mit aktivierter Kantensicht:


Durch die 3D Sicht navigiert man durch halten der mittleren Maustaste (Zoomrad), durch gleichzeitiges Drücken der Shifttaste verändert man den Winkel und durch drehen des Mausrades zoomt man in die Szene rein und raus.

Shortcuts:

F1  File öffnen Schirm 
F2  File sichern 
F8  Render Result Window öffnen 
F10  Display Buttons 
F12  Start Rendering 
Numpad 0  Kamerasicht 
Numpad 1  Sicht von Vorne 
Numpad 3  Sicht von Rechts 
Numpad 7  Sicht von Oben 
Shift+Z  Schatten an/aus 
Crtl+U  Default Settings speichern 
Space  Toolbox öffnen 
aktives Objekt verschieben 
aktives Objekt routieren 
aktives Objekt größenskalieren 
Wechsel zwischen ausgefüllten Objekten und Kantendarstellung 
alles selektieren/deselektieren 
Ctrl+Tab  was soll selektiert wird 
Ctrl+Z  Undo 

Links:
Tutorial User Interface
Tutorial Blender Windows
Blender Tutorial
Blender Homepage
Blender Dokumentation auf wikibooks
Kurzfilm, mit Blender hergestellt: Elephants Dream auf Wikipedia

Sonntag, 3. Oktober 2010

Modify Headers Plugin für Firefox

Firefox 3.6.10
Modify Headers 0.6.6

Da ich im Netz keine vernünftige Anleitung für das Firefox-Addon Modify Headers gefunden habe, stell ich hier mal meine gesammelten Erkenntnisse zur Schau:

Downloaden kann man das Teil hier.

X-Forwarded-For hinzufügen:
In manchen Fällen ist es hilfreich man täuscht vor, man sei ein Proxy, der eine zB. amerikanische Adresse weiterleitet, um Zugriff auf eine geographisch gesperrte Site zu erlangen.
Das funktioniert nicht auf allen, so klappt es zwar bei ABC, nicht jedoch bei hulu.com.


Cache-Control modifizieren:
Beim mobilen Surfen stört es manchmal, das Inhalte in sehr vermindeter Qualität (komprimiert) geladen werden um den Traffic runterzuschrauben, wenn einem die längeren Wartezeiten und der Traffic nicht stören, trägt man einfach bei Cache-Control den Wert no-cache ein:


Wenn noch jemand nützliche Anwendungsmöglichkeiten für das Plugin weiß, bitte einfach kommentieren, bin sicher aus dem Teil läßt sich einiges rausholen.


Links:
Beitrag auf cynicsunlimited.com
Beitrag auf informationsarchiv.net

Samstag, 18. September 2010

Tor für Ubuntu und Firefox

OS: Ubuntu 10.4
Privoxy 3.0.15
ProfileSwitcher 1.0.7
TorButton 1.2.5
Tor v0.2.1.26
Vidalia 0.2.10

Bei Tor handelt es sich um ein Netzwerk, welches die Analyse von Netzwerkverkehr verhindern soll, die technischen Basics werden auf der Wikipedia Seite ganz gut erklärt. Tor macht das surfen zwar etwas langsamer, dafür hinterlässt man ziemlich wenig Spuren. Zu beachten wäre noch, daß der erste und  dritte (letzte) Torserver (die zwar allesamt zufällig ausgewählt werden und gezielte Observierung dadurch schwierig wird) sehr wohl die Möglichkeit hat die übertragenen Daten mitzusniffen, daher auch hier Obacht junger Padawan, wenn möglich immer schön verschlüsselt unterwegs sein (Tor macht dich für das eigenliche Ziel deines Requests unkenntlich, Verschlüsseln schützt die Daten von localhost zum ersten Torserver und vom letzen Torserver zum Ziel, zwischen den Torservern wird ansich sowieso verschlüsselt, aber sicher ist sicher).

Tor ist leider nicht mehr in den Standardrepositories, darum muß man sie in System -> Systemverwaltung -> Software-Paktetquellen -> Andere Software hinzufügen:

deb http://deb.torproject.org/torproject.org lucid main
deb-src http://deb.torproject.org/torproject.org lucid main

Dann holt man sich den entsprechenden Schlüssel über die Kommandozeile:

gpg --keyserver keys.gnupg.net --recv 886DDD89
gpg --export A3C4F0F979CAA22CDBA8F512EE8CBC9E886DDD89 | sudo apt-key add -
sudo apt-get update
sudo apt-get upgrade

Nun kann man das Teil installieren:

sudo apt-get install tor tor-geoipdb

Nun installieren wir Privoxy, ein wenig Info ist über diesen Proxy auf Wikipedia zu finden.

sudo apt-get install privoxy

Da muß noch ein bisschen nachkonfiguriert werden, man öffnet in einem Texteditor /etc/privoxy/config und fügt irgendwo im File:

forward-socks4a / localhost:9050 .

als neue Zeile hinzu, zu beachten ist der '.' am Ende, ohne ihn läuft der Proxy nicht ordnungsgemäß.

Nun kann man Tor mal probehalber starten:

sudo /etc/init.d/tor start
sudo /etc/init.d/privoxy start

Um zu überprüfen ob er auch läuft tippt man

netstat -a | grep 9050

auf der Commandline ein, das Ergebnis soll in etwa so aussehen (kann etwas abweichen, wichtig ist tcp, localhost, 9050 und LISTEN):

tcp 0 0 localhost.localdom:9050 *:* LISTEN

Bei diesem Befehl nicht ungeduldig werden, es kann etwas dauern bis das gewünschte Ergebnis aufgelistet wird. Normalerweise wünscht man sich dann eine GUI, um nicht ständig die Commandline bearbeiten zu müssen, diese bekommt man so:

sudo apt-get install vidalia

Nun sollte unter dem Ubuntumenüpunkt Internet das Tool Vidalia (Wikipediaeintrag) zu finden sein.
Wenn man verhindern will das sich Tor beim Anmelden an den Rechner selbstständig startet, entfernt man den Eintrag aus den Scripten:

sudo update-rc.d -f tor remove
sudo update-rc.d -f privoxy remove

Ein kleines Startscript mit dem Namen privoxyStart für den Privoxy Server wird angelegt und zB unter dem Home Verzeichnis gespeichert:
#!/bin/sh
# Startscript für Privioxy Server
exec gksu /etc/init.d/privoxy start
Dem Script muss man "Ausführen" Rechte geben, am einfachsten erledigt man das im Nautilus (Standard-Dateibrowser in GNOME) über Eigenschaften des Files.
Nun fügt man noch zwei Pfade bei den Einstellungen von Vidalia ein, unter "Tor starten, wenn Vidalia startet" fügt man ein:

/usr/sbin/tor

und unter "Proxy starten, wenn Tor startet" der Pfad zum Startscript:

$HOME/privoxyStart

Somit wäre der erste Teil erledigt, Tor läuft auf dem Rechner, ist über eine GUI steuerbar. Nun rüstet man den Firefox so auf, das wann immer man es will problemlos über das Tor Netzwerk gesurft werden kann. Dazulegt man ein Profil an, das standardmäßig mit Tor ins Netz geht:
Zuerst installiert man das Add-On ProfileSwitcher und richtet ein Profil ein (Datei -> Profilmanager öffnen), zB mit Namen "TorButton". Dieses Profil stellt auch sicher das die Daten streng getrennt werden. Man kann es dann unter Datei -> Anderes Profil laden ansprechen. Es ist zu beachten, daß wenn man in das frische Profile einsteigt, man auch hier das Add-On installiert, da man sonst zB nach einem Neustart nicht in das default Profil zurückwechseln kann.
Nun installiert man im neu erstellten Profil (nicht im default Profil) das Firefox Plugin Torbutton. Die Eigenschaften konfiguriert man im Firefox über Extras -> Add-ons -> Erweiterungen -> Torbutton -> Einstellungen.

Folgende Einstellungen sind ratsam:



Man startet nun am besten den ganzen Rechner neu (um hängengebliebene Prozesse usw. ohne langes Suchen los zu werden), startet danach über Vidalia Tor neu, startet Firefox mit dem eingerichteten Torprofil und überprüft mit dieser Testseite ob man nun auch wirklich mit Tor unterwegs ist. Und mit dieser Testseite kann man betrachten, was der gegenüberliegende Part an Informationen auslesen kann... im Prinzip nur gefakte Daten und die Url des dritten Torservers. :D
Wenn das funkt, kann man nun jederzeit mit relativ wenig Aufwand über das Tornetzwerk das Inet erkunden, einfach über Vidalia Tor starten und Profil wechseln.

Links:
help.ubuntu.com Tor Anleitung
awxcnx.de Privacy Handbuch
Netzwelt Artikel

Freitag, 17. September 2010

Upgrade von GRUB zu GRUB2

OS: Ubuntu 10.04
Kernel: Linux 2.6.32-25-generic

Wenn man sein Ubuntu immer nur upgraded und nie neu installiert, bleibt die GRUB Version erhalten und man kann sein Dateisystem nicht auf ext4 heben. Die gute Nachricht ist, das man GRUB relativ leicht auf GRUB2 heben kann. Dabei ist jedoch zu beachten das es sehr stark von der verwendeten Ubuntu Version abhängt, wie man das nun bewerkstelligen kann.
Da hier tief ins System eingegriffen wird, ist anzuraten vorher von allem Wichtigem eine Sicherung anzulegen.
Hervorzuheben ist, das bei einem Dualbootsystem eine andere Vorgangsweise notwendig ist, hierzu geben die unten angelegten Links ausführlich Auskunft.
Die hier beschriebene Vorgangsweise hat für mich funktioniert, aber garantieren daß bei jeder Systemkonstellation so hinhaut, kann ich natürlich nicht.

Zuerst stellt man mal fest, welche Version von GRUB man verwendet:

grub --version

Funktioniert dieser Befehl nicht ist das schon ein Hinweis darauf, das man unter Umständen schon GRUB2 verwendet. Sichergehen kann man dann mit diesem Befehl:

sudo hexdump -v -s 0x80 -n 2 -e '2/1 "%x" "\n"' /dev/sdXY

sdXY ersetzt man dann durch die verwendete Partition.
Der Output lässt sich dann folgendermaßen interpretieren:

5272 --> GRUB (Legacy)
aa75 --> GRUB (Legacy)
48b4 --> GRUB 2 (Version 1.96)
7c3c --> GRUB 2 (Version 1.97 oder höher)
488 --> Grub 2 core.img

Über den Synaptic-Paketmanager holt man sich danach die Pakete
grub-common
grub-pc

Dabei wird das Paket grub gleichzeitig entfernt, dem kann man zustimmen, hatte bei mir keine negativen Auswirkungen.

Bei der Installation von grub-pc taucht ein Konfigurationsfenster, das man mit ok wegklicken kann, nachdem man sich versichert hat, das das Häkchen bei "Chainload from menu.lst?" gesetzt ist.

Bevor man nun Neustartet öffnet man "/boot/grub/menu.lst" mit Schreibrechten und versichert sich, das in der /boot/grub/menu.lst folgende Passage so aussieht:

## ## End Default Options ##

title Chainload into GRUB 2
uuid (hd0,0)
kernel /boot/grub/core.img

Dort wo uuid steht, könnte unter Umständen (bei mir wars so) "root" stehen, das ersetzt man einfach durch "uuid", danach kann man Neustarten.
Nach dem Neustart führt man folgenden Befehl aus:
sudo upgrade-from-grub-legacy
Da wird man gefragt, welche Partion nun auf GRUB2 gehoben werden soll, vorsichtshalber hab ich (wie im Dialog davor angeraten) alle möglichen genommen, rein um auf Nummer sicher zu gehen.

Nun kann man mit dem Anfangs beschriebenen Befehl wieder überprüfen, welcher GRUB Version aktiv ist.

Links:
ubuntuusers.de GRUB Umgebung analysieren
ubuntuusers.de GRUB 2 Installation

Mittwoch, 15. September 2010

RootKit Tools für Ubuntu

OS: Ubuntu 10.04

Ein Tool zur Rootkitüberprüfung ist rkhunter, das ganz einfach über die Software-Verwaltung zu installieren ist und über die Commandoline bedient wird:

sudo rkhunter --update
sudo rkhunter --check

Ein weiteres Tool ist chkrootkit, ebenfalls in der Software-Verwaltung zu finden:

sudo chkrootkit

Garantie hat man natürlich keine, daß über diese Tools alles entdeckt wird, aber ist mal besser als nichts.

SuperCookies entfernen

OS: Ubuntu 10.04
Firefox 3.6.9
BleachBit 0.7.3-1

Ganz im Gegensatz meines letzten Eintrags, wo ich mehr Aufzeichnungen über meine Aktivitäten haben wollte, geht es in diesem darum, wie man verhindert, daß Dritte Informationen über mich sammeln.
Still und heimlich haben SuperCookies das Netz erobert und herkömmliche Browser haben keine Möglichkeit diese vom Rechner zu werfen. Mühsam per Hand zu löschen tut sich kaum wer an, darum sind die meisten Rechner davon befallen. Eine Möglichkeit diese loszuwerden ist das Firefox-Add On Better Privacy, das diese Dinger aufspürt und einfaches Löschen möglich macht.

Weiters empfiehlt es sich das Add-On AdBlock-Plus zu installieren um zB Google-Analytics zu blocken. Das kann manuell geschehen, indem man eine eigene Filterregel hinzufügt:
Extras -> Adblock Plus - Einstellungen -> Filter -> Filterabonnement hinzufügen
Dort fügt man die Zeile:
google-analytics.com
hinzu.
Oder man verwendet eine automatisch aktualisierende Block-Liste, hier empfiehlt sich "EasyPrivacy".
Extras -> Adblock Plus - Einstellungen ->Filter -> Filterabonnement hinzufügen
Dort fügt man die Zeile:
https://easylist-downloads.adblockplus.org/easyprivacy.txt
ein.

BleachBit:

Ein weiteres nützliches Tool, wenn auch nicht rein nur aus Sicherheisaspekten, stellt BleachBit dar, mit dem man bequem unnützes Zeug aufspüren und löschen kann. Es ist ebenfalls im Standardrepository von Ubuntu enthalten. Auch dazu gibt es einen ubuntuusers.de Artikel.

Hierzu gibt es auch ein kleines Einführungsvideo der Entwickler:



Links:
ubuntuusers.de Sicherheitswiki

Dienstag, 14. September 2010

Activity Journal für Ubuntu

OS: Ubuntu 10.04
gnome-activity-journal 0.3.4.1+bzr20100619


Man sieht ein paar Folgen einer Serie, macht dann was für Uni oder Job, irgenwann Tage später will man die Serie weiterschauen, doch bei welcher Staffel war man, frage nicht die Folge... . Die Orte Aufzeichnung reicht da oft bei weitem nicht aus, geht sie doch nur ein paar Dateizugriffe zurück.
Diese Problematik bewog dazu mich umzuschauen ob es nicht ein Tool gibt das es erspart haufenweise Folgen anzuspielen, nur um zu sehen ob man sie nicht schon gesehen hat.
Und tatsächlich wurde man fündig, das "Tagebuch über Aktivitäten", damit hat sich das Problem halbwegs erledigt.

Nach Ausführung dieser Befehle kann man unter Zubehör bequem darauf zugreifen:

sudo add-apt-repository ppa:zeitgeist/ppa
sudo apt-get update
sudo apt-get install gnome-activity-journal


Ausgegraben in ubuntujunkie.tumblr.com, dort gibt es auch noch Tips für einige andere Tools, die schwer zu empfehlen sind.

Links:
Ubuntuusers Artikel über Zeitgeist
Seite über Gnome Activity Journal
Seite über Zeitgeist

Sonntag, 12. September 2010

Blockierliste Transmission

Wenn man in Transmission die Blockierliste aktualisiert wird eine Kopie von der bluetack level1 Blockerliste von einem Transmission Mirror Server geladen, die dort 2x täglich aktualisiert wird.
Die Blockierliste für Transmission wird im $HOME/.config/transmission/blocklists als .bin abgespeichert.

Will man nun eine andere (meist als .dat oder .txt erhältlich) hinzufügen, kopiert man sie in diesen Folder und startet Transmission erneut. Es wird beim Start automatisch in eine .bin erstellt, die Transmisson schneller parsen kann, die .dat Datei bleibt dabei erhalten.

Erhältich sind diese Blockierlisten zum Beispiel auf blocklistpro.com und tbg.iblocklist.com.

Links:
Transmission-Wiki Blockierliste

Dienstag, 7. September 2010

JUnit Tests mit Spring, EasyMock

Spring 3.0.2.RELEASE
EasyMock 3.0

Verwendet man in seinem Projekt Spring-Annotations wie @Autowired kann man in das Problem reinrutschen, das JUnit Tests schwer aufzubauen sind. Darum hilft man sich mit Mock Objekten, die dem Test vorgaukeln, daß ein benötigtes Objekt tatsächlich vorhanden ist.

Ausgangslage ist ein SupportBean, das zu instanzieren einen riesen Aufwand bedeuten würde oder überhaupt unmöglich ist (denken wir uns mal).

@Component
public class SupportBean {
 public String getDoSomething() {
  return doSomething();
 }
}

Diese Klasse können wir also nicht instanzieren. Unsere zu testende Klasse bedient sich der Springannotation Autowired:

@Component
public class ToTestBean {
 @Autowired private SupportBean supportBean; 
 public String toTestMethod() {
  return this.supportBean.getDoSomething() + " <--- so ist es";
 }
}  

Um zu testen wollen wir ein Mockobjekt erzeugen, das wenn es die Methode doSomething() ausführt, den String "Ich bin ein Mock" zurückgibt, das schreiben wir direkt in die Testmethode, in freier Natur ist man wahrscheinlich mit einer setUp() Methode besser bedient. Um die EasyMock Methoden verwenden zu können importieren wir diese statisch.

import static org.easymock.EasyMock.*;

import org.easymock.EasyMock;
import org.springframework.test.util.ReflectionTestUtils;

@Test
public void testToTestBean() {
 ToTestBean toTestBean = new ToTestBean();
 SupportBean fakeSupportBean = createMock(SupportBean.class);
 expect(fakeSupportBean.getDoSomething).andReturn("Ich bin ein Mock");
 replay(fakeSupportBean);
 ReflectionTestUtils.setField(toTestBean, "supportBean", fakeSupportBean); 
 assertTrue("Ich bin ein Mock <-- so ist es".equal(toTestBean.toTestMethod()));
}

Im Prinzip sagt man den Mock was er antworten soll, wenn er aufgefordert wird eine Methode auszuführen, mit replay aktiviert man ihn sozusagen. Mit der setField() Methode gibt man an in welches Zielobjekt (1.Parameter), man welches Feld (2.Parameter) durch welchen Mock (3.Parameter) ersetzen will.

Voila, schon funken Tests, die sonst ummöglich oder nur mit haufenweise Aufwand baubar wären.

Links:
Springhomepage
EasyMock 3.0 Schnelleinstieg

Montag, 6. September 2010

Javascript File hosten

Da auf Blogspot das direkte Einbinden von Javascript ziemliche Probleme macht, bietet es sich an, diese extern zu hosten. Eine einfache Möglichkeit ist dabei yourjavascript.com, hat auf Anhieb geklappt. Man lädt einfach sein .js File hoch und bekommt über die Mailadresse, die man angegeben hat den Link zu diesem.

Diesen Link bindet man dann einfach im Post ein, hier als Beispiel:




Sonntag, 5. September 2010

Javascript Source für den TextToHtmlTable Converter

Hier der Source für den TextToHtmlTable Converter, kann jeder verwenden wie er ihn braucht:


Ist denk ich nicht schwer zu verstehen, für die 'textarea' mit dem 'name' textToConvert wird als onclick Event einfach 'convert' gesetzt, das Ausgabefeld ist ebenfalls eine 'textarea' und erhält den 'name' 'convertedText'. Der Seperator ist einfach ein Textfeld mit 'name='seperator''. Leider arbeitet das Teil zur Darstellung des Sources nicht einwandfrei, so wird in Zeile 12 ein nonBreakingSpace im letzten String nicht angezeigt...
Ich hoffe ich kann das in den nächsten Tagen fixen, warum Blogspot da hin und wieder so seltsame Ergebnisse erzeugt ist mir ein Rätsel, scheint etwas mit internen Umwandlungen beim Abspeichern von Änderungen zu tun zu haben. Bei erstmaligen Speichern funkts halbwegs (aber nicht einwandfrei), bei jedem Drüberspeichern wirds schlimmer, muß also den Source jedesmal neu einfügen wenn ich den Post verändere, da sonst die nochmalige interne Anpassung des Textes durch das Blogspotteil den Source unkenntlich macht.

Samstag, 4. September 2010

Text in eine Html Tabelle umwandeln


Anläßlich dieses Eintrages machte ich mich im Netz auf die Suche, wie man Text angenehm in eine HTML Tabelle umwandeln kann, wobei jede Zeile eine Tabellen Zeile sein soll und in den Zeilen die Spalten mit einem Seperator getrennt sind. Ich wurde nicht fündig, drum habe ich mir schnell selber einen ziemlich primitiven in JavaScript gebastelt, vielleicht kanns ja wer brauchen.

Funktionsweise:
In das Feld 'Eingabe' kopiert man seinen Text, zum Beispiel:
Ctrl-a;Cursor zum Anfang der Zeile
Ctrl-e;Cursor zum Ende der Zeile
Ctrl-b;Ein Zeichen zurückgehen
Alt-b;Ein Wort zurückgehen
Als Seperator trägt man nun ';' ein, er zeigt wo man die Spaltentrennung haben möchte.
Dann klickt man auf Umwandeln, dadurch erhält man im Feld 'Ausgabe' diesen Text als HTML-Tabelle, die man nun einfach in irgendeiner HTML-Seite einbauen kann.

Seperator: 
Eingabe:


Ausgabe:


Falls es Probleme oder Verbesserungsvorschläge gibt, einfach einen Kommentar hinterlassen.
Hier gehts zum Source.

Bash Shortcuts

Eine kleine Auflistung nützlicher Bashbefehle:

(2T meint 2x die TAB-Taste drücken)


Ctrl-a  Cursor zum Anfang der Zeile 
Ctrl-e  Cursor zum Ende der Zeile 
Ctrl-b  Ein Zeichen zurückgehen 
Alt-b  Ein Wort zurückgehen 
Ctrl-f  Ein Zeichen vorwärts gehen 
Alt-f  Ein Wort vorwärts gehen 
Ctrl-c  Den letzten Befehl abbrechen 
Ctrl-u  Lösche vom Cursor bis zum Anfang der Zeile 
Ctrl-k  Lösche vom Cursor bis zum Ende der Zeile 
Ctrl-w  Lösche vom Cursor bis zum Anfang des Wortes 
Ctrl-l  Löscht den Schirm und setzt die aktuelle Zeile an den Beginn 
Alt-r  Rückgängig machen aller Änderungen in der Zeile 
Ctrl-r  Stufenweise Suche in der Historie 
Alt-p  Suche in der Historie 
!!  Ausführen des letzten Eintrags in der Historie 
!abc  Ausführen des letzten Eintrags in der Historie, der mit \'abc\' beginnt 
!abc:p  Ausgabe des letzten Eintrags in der Historie, der mit \'abc\' beginnt 
!n  Ausführen des nten Eintrags in der Historie 
!$  Platzhalter für das letzte Argument des letzten Befehls 
!^  Platzhalter für das erste Argument des letzten Befehls 
^abc^xyz  Austauschen des ersten Auftretens von \'abc\' durch \'xyz\' im letzten abgesetzten Befehl und dessen Ausführung 
2T  Zeige alle möglichen Befehle 
abc 2T  Zeige alle möglichen Befehle, die mit \'abc\' beginnen 
$ 2T  Zeige alle Sys Variablen 


Alle Befehle wurden mit dem GNOME-Terminal 2.29.6 ausprobiert.

Links:
Sammlung von Shortcuts, wobei jedoch nicht alle im GNOME-Terminal funkten
Blogeintrag zu diesem Thema

Dienstag, 17. August 2010

Spoiler Button in Javascript

Ein nettes Codeschippsel ist diese Javascriptfunktion, es ist nicht von mir, aber da ich es an vielen Stellen im Netz gefunden habe scheint mir eine Quellenangabe nicht sinnvoll:

function spoil(me) { 
 if (me.parentNode.parentNode.getElementsByTagName('div')[1].getElementsByTagName('div')[0].style.display != '') { 
  me.parentNode.parentNode.getElementsByTagName('div')[1].getElementsByTagName('div')[0].style.display = ''; me.innerText = ''; me.value = 'Hide'; 
 } else { 
  me.parentNode.parentNode.getElementsByTagName('div')[1].getElementsByTagName('div')[0].style.display = 'none'; me.value = 'Show'; 
 }
}

Den zu versteckenden Text fügt man dann vor den 3 abschließenden divs ein:


Die Darstellung für den html Teil ist mir leider nicht besser gelungen, irgendwie scheint sich Javascript mit der Darstellung von Xml zu schlagen.

Als Beispiel für Funktionsweise hab ich mal meine Leseliste versteckt:

Leseliste ab Ende Mai 2004

In diesem Zusammenhang habe ich auch noch eine nützliches Tool ausgegraben, einen TextToHtml Converter

Sonntag, 15. August 2010

SyntaxHighlighter für Blogger

Um Code im Blog vernünftig anzuzeigen eignet sich der SyntaxHighlighter von Alex Gorbatchev. Die Einrichtung ist einfach, möchte aber in diesem Zusammenhang drauf hinweisen, das ich mit dem current Strang immer Probleme habe und deshalb die ältere vorletzte Version 2.1.382 verwende.

Man fügt in die Vorlage (Erreichbar unter Design/HTML bearbeiten) im <body> Tag folgenden Zeilen ein:


 

Entsprechende Javascript Files für verschiedenste Sprachen findet man auf der Site des Entwicklers, die fügt man wie im obigen Beispiel einfach hinzu.

Will man nun zum Beispiel etwas Javascript Code in seinem Blogbeitrag einfügen, kopiert man einfach den Source in den Blog ein und fügt vor den Source:

<pre name="code" class="brush: jscript">

und nach dem Source:

</pre>

Die html Tags in den obigen beiden Beispielen habe ich übrigends mit einem Html Escaper bearbeitet, um sie im SyntaxHighlighter anzeigen zu können.

Zu beachten wäre noch, daß wenn man mit dem VorlagenDesigner arbeitet, die Einfügungen in der Vorlage gelöscht werden, die sollte man also vorher wegsichern.




Samstag, 14. August 2010

Torrent für Anfänger

Hier soll Schritt für Schritt gezeigt werden wie man sich ein Torrentprogramm besorgt, einen Proxy findet und einrichtet und ein paar beispielhafte Trackerseiten. Dies soll keine technische Arbeit darüber sein, wie das den nun alles genau funktioniert, sondern einen technisch eher Unbedarften zeigen, wie man das den nun hinkriegt, das das funzt. Für die angegebenen Links kann hier keine Verantwortung übernommen werden, man sollte das Ganze auch eher als Bericht als eine Anleitung betrachten.

Wer sich für technische Details interessiert ist mit dem Wikiartikel gut bedient.

Zu Beginn sei erwähnt, das auf vielen Trackerseiten urheberrechtlich bedenkliche Torrents angeboten werden, man sich also zur Sicherheit über die Gesetzeslage seines Landes informiert, den man ist schneller als man denkt ein Raubmordkopierer und wenn es nach GEMA und Co geht steht darauf bald die öffentliche Auspeitschung, also Obacht junger Padavan. Auf der sicheren Seite bleibt, wer sich von diesem neumodischen Teufelszeug fernhält. ;)

Als ersten Schritt besorgt man sich eine Torrentapplikation, die es wie Sand am Meer gibt. Für Linux und Mac empfehle ich Transmission, für Ubuntu ist er im Standardrepository vorhanden. Für Windowsuser gibt eine reichliche Auswahl, gute Erfahrungen habe ich mit Vuze (ehemals Azureus) gemacht, obwohl das Teil schon viel mehr kann, als man eigentlich benötigt.
Die weiteren Angaben beziehen sich aber auf Transmission, andere Clients sind ähnlich zu handhaben.

Ist das Programm installiert, startet man es und geht über das Menü zu den Einstellungen, bei Privatspähre aktiviert man die Blockierliste (Transmission nutzt hier die Blockierliste bluetack level 1) und stellt den Verschlüsselungs-Modus auf "Verschlüsselung verlangen". Inwieweit das die Privatsphäre wirklich schützt ist fraglich, aber schaden kann es nicht. Weiterführende Infos gibts im englischen Wiki.

Als nächstes trägt man in der Lasche Proxy einen Proxy ein, damit soll verhindert werden das andere Clients die lokale IP betrachten können, es ist sozusagen eine zwischengeschaltete Stelle, der Tauschpartner sieht nur die Proxyadresse. Wer sich für näher für die Funktionsweise eines Proxys interessiert ist wieder mit dem Wiki-Artikel gut bedient.

Freie Proxys findet man auf Speedtest.at oder Samair, wie zuverlässig diese sind sei einmal dahingestellt, oft sind mehrere Versuche nötig um einen mit entsprechendem Durchsatz zu finden. Zu Beachten ist jedenfalls das nun die Daten über diesen fremden Rechner laufen, für den Einsatz im Browser ist also eher abzuraten. Man trägt nun Proxy-IP und den Port in seinem Einstellungen ein. Nach einem Neustart sollten die getätigten Einstellungen wirksam sein. In diesem Zusammenhang sei auf das Firefox Plugin WOT (Web of Trust) hingewiesen, damit bekommt man neben die URL-Leiste im Browser ein Symbol angezeigt, das einem über die Farbe die Vertrauenswürdigkeit der Site anzeigt. Hunderprozentige Sicherheit bedeutet das natürlich nicht, aber ein Hinweis, welche Erfahrungen andere User mit dieser Site gemacht haben ist oft hilfreich und meine persönliche Erfahrung damit ist, das die Trefferquote bei den Bewertungen unglaublich hoch ist. Damit kann man im Großen und Ganzen verhindern Betrügern auf den Leim zu gehen, auch wenn Vorsicht und "Hirn einschalten" immer noch ne gute Idee ist.

Wenn nun der Client rudimentär eingerichtet ist kann sich auf sogenannten Trackerseiten nach entsprechenden Dateien umschauen, eine kleine Liste:
Pirate Bay
Monova
deutschsprachig:
Torrent.to

Auch hier gilt: Nicht auf alles klicken das sich bewegt und Hirn einschalten.
Auf Pirate Bay kann man im Großen und Ganzen nicht viel falsch machen, die Site ist halbwegs Werbe- und Fallenfrei, man sucht sich einfach eine Datei die einen interessiert (mit möglichst vielen Seedern), studiert die angegebenen Symbole und liest sich hin und wieder die Kommentare durch, sie geben Hinweise darauf wie zuverlässig die Datei ist. Dann lädt man die Torrent Datei runter, das ist eine kleine Datei, in der die notwendigen Trackerinformationen stehen, nach dem Download weist man den Browser an diese Datei mit dem Torrentclient zu öffnen (hier kann man einstellen das Dateien dieses Typs (*.torrent) automatisch mit diesem geöffnet werden) und der Download kann starten.


Links:
Wiki-Artikel über die Rechtslage
ct-Artikel über Verfolgung von Urheberrechtsverstößen

Sonntag, 25. Juli 2010

Evolution remove-duplicates-plugin

Architektur: x86_64
OS: Ubuntu 10.04 LTS - Lucid Lynx
Evolution 2.28.3
remove-duplicates-plugin 0.0.4-1-ppa1-lucid

Evolution ist sicher nicht perfekt und eines der nervigsten Probleme ist, daß das Entfernen von fälschlicherweise duplizierten Nachrichen per Hand zu Fuß bei über 1000 Nachrichten einfach nicht machbar ist.

Dafür gibt es ein Plugin, daß zwar auch nicht alle Duplikate erkennt, aber mal ein erster Schritt ist.

Zuerst fügt man die Paketquelle des Plugins hinzu: http://ppa.launchpad.net/toobaz/toobaz/ubuntu lucid main

Danach mit dem Synaptic-Paketverwarltung das Paket "remove-duplicates-plugin" installieren.
Evolution neu starten, einen Folder auswählen, alle Nachrichten markieren und mit Rechtsklick "Remove duplicates" auswählen.

Probleme gibt es wenn man auf einen Account mit mehreren Adressen zugreift, hier reicht im Normalfall die Angabe nur einer Adresse um die Mails abzuholen.

Anmerkung 17.10.2010: Nach dem Upgrade auf Maverick und dem einhergehenden Upgrade von Evolution scheint das Plugin nun nicht mehr zu funktionieren, was mich schlußendlich dazu gebracht hat wieder auf Thunderbird umzusteigen, auch wenn dort der Kalender in der 64 Bit Variante nicht funzt.

Ubuntuuser.de Forumsbeitrag

Mittwoch, 7. Juli 2010

maven-jmeter-plugin: properties im jmx File

maven-jmeter-plugin 1.0

Wenn beim automatisierten Testen der Pfad zur Testdatenbank nicht hardcodiert angegeben werden kann steht man vor dem Problem, wie man nun den verflixten Pfad in die im jmx File definierten Requests reinbekommt. Die Lösung ist das Anlegen eines jmeterUserProperties im pom File:


      org.apache.jmeter
      maven-jmeter-plugin
      1.0
      
       
        jmeter-tests
        integration-test
        
         jmeter
        
       
      
      
       ${project.build.directory}/jmeter-reports
       
        ${project.build.testOutputDirectory}
       
      
      
       
        commons-logging
        commons-logging
        1.0.4
        true
        test
       
      
     

Dieses Attribut fügt man nun in den benötigten Stellen des jmx Files umschlungen mit ${__P(definiertesAttribut)} ein:


                false
                v2v.dbpath
                ${__P(buildpath)}%2FBENUTZER%2FSELENIUM%2F
                =
                true
              

Links:
maven-jmeter-plugin Download
Blogeintrag von Ronnie Alleva

Dienstag, 6. Juli 2010

Zeile eines Files mit dem maven-antrun-plugin löschen

Maven 2.2.1
maven-antrun-plugin 1.3
ant-optional 1.5.1


Um eine einzelne Zeile aus einem File zu löschen, die ein bestimmtes Keyword beinhaltet, bediene ich mich des replaceregexp tasks, der im ant-optional jar enthalten ist, in diesem Fall um das Ergebnisfile des maven-jmeter-plugin meinen Bedürfnissen für die automatische Auswertung mit dem Performance Plugin für den Hudson anzupassen.
Dafür wird das File, um einen vernünftigen Namen ohne Datumsstring zu bekommen, umbenannnt und danach die Startup Zeile, die durch Ihre lange Dauer das Ergebnis verfälscht, gelöscht.


Montag, 5. Juli 2010

JMeter Test erstellen

OS: Windows 7
JMeter 2.3.2
Google Chrome 5.0.375.86
Proxy Switchy!: 1.6.3

Als erstes installiert man sich das Chrome Plugin "Proxy Switchy!", das erleichtert einem das Leben wenn man häufiger zwischen den Proxyies hin und her schalten muß.

Hierzu meine Konfiguration:

Dann installiert man JMeter und startet es über die Datei jmeter.bat.


Meine Anforderung an den JMeterlauf ist es eine lokal gestartete Webapp aufzurufen und mich durch jede Maske zu klicken. Dazu füge ich per Rechtsklick zum Testplan eine Thread-Gruppe hinzu.
Da meine Webapplikation Cookies nutzt füge ich zur Thread-Gruppe einen HTTP Cookie Manager hinzu. Weiters füge ich zur Thread-Gruppe ein "HTTP Request Default Einstellungen"-Element hinzu. Hier füge ich in den Bereich "Webserver" den URL-String ein, mit dem ich die Applikation initial aufrufen will.

Nun fügt man bei WorkBench per Rechtsklick Hinzufügen/Nicht-Test-Elemente/HTTP Proxy Server einen Proxy hinzu, bei Port gibt man jene Portnummer an, welche man zuvor in Switchy! angegeben hat. Den Ziel-Controller stellt man auf Testplan > Thread-Gruppe um. Anschließend fügt man bei den Einzuschließenden URL-Muster noch die gewünschten hinzu, in unserem Fall wollen wir alles aufzeichnen (.* hinzufügen).
Um einen schönen Report zu bekommen fügen wir dieses Element zur Thread-Gruppe hinzu: Thread-Gruppe -> Rechtsklick -> Hinzufügen/Listener/Report.

Will man keine externe Quelle aufzeichnen startet man nun den Webserver, ansonsten stellt man nur sicher daß der richtige Proxy in Chrome eingestellt ist, dann im HTTP Proxy Server auf Start gedrückt. Man fügt nun in die URL-Zeile des Chrome die Start-URL ein und schon kann man beobachten wie im JMeter-Fenster die Requests mitgeschrieben werden.

Hat man seine Aufzeichnung beendet stoppt man den Proxy Server. Danach kann man die einzelnen Requests noch etwas reinigen, meist wird einiges mitgeschrieben, daß im Grunde nicht interessiert.

Um den Test nochmals ablaufen zu lassen klickt man auf die Thread-Gruppe, stellt die Anzahl der Thread ein (Anzahl der virtuellen User, die den Testplan durchlaufen), stellt die Ramp-Up Period ein (Abstand in Sekunden, in der die User nacheinander starten den Testplan zu durchlaufen) und die Anzahl der Wiederholungen ein, die jeder Thread (User) durchlaufen soll.

Danach kann man den JMetertest im Menüpunkt Start unter Start loslaufen lassen und nach Beendigung das Ergebnis im Report betrachten.
Um zu einem .jmx File zu kommen, wie es z.B. im jmeter-maven-plugin benötigt wird, klickt man auf den Testplan und dann im Menü Datei/Speichern Unter.

Links:
JMeter Proxy Pdf

Montag, 14. Juni 2010

Source der Android SDK für Eclipse anhängen

Architektur: x86_64
OS: Ubuntu 10.04 LTS - Lucid Lynx
IDE: Eclipse 3.5.2

Es ist mühsam Androidprogramme zu debuggen, wenn man nicht in den Source der SDK reinlesen kann.
Hier eine kleine Anleitung, wie man für 1.5, 1,6 und 2.1 den Source sauber in Eclipse bekommt.
Dazu lädt man einfach an obigen entsprechenden Link das Package down und entpackt ihn in einem neuen Folder, der "sources" genannt und hier angelegt wird -Pfad zur SDK-/platforms/-Entsprechende Version-, der neue Folder könnte also so liegen:
/usr/local/android-sdk-linux_x86-1.6_r1/platforms/android-1.6/sources

Danach sollte man auch den Source der SDK in Eclipse betrachten können.

Gefunden habe ich diese zip-Dateien auf android.opensourceror.org, wo auch eine Anleitung nachzulesen ist, wie man sich selbst so ein Package bastelt.

Sonntag, 13. Juni 2010

Chrome und Xmarks: Sync Problem

Architektur: x86_64
OS: Ubuntu 10.04 LTS - Lucid Lynx
Browser: Google Chrome 5.0.375.70 beta

Wenn es beim syncen von XMarks in Chrome folgende Fehlermeldung auftaucht:

Unable to update Xmarks node [bookmark name]: Chrome doesn't support updating the URL!

kann man das Problem teilweise umgehen, indem man in den Xmarks Settings unter dem Tab Advanced den Button "Force overwrite of local data: Download" benutzt.
Damit lassen sich zwar nicht neue Daten aus den Chrome Bookmarks auf den Server spielen, jedoch der Stand des Servers in die Chrome Bookmarks schreiben.
Danach funkt das normale Syncen auch ne zeitlang ganz gut, es trat bei mir jedoch das Problem nach einiger Zeit wieder auf. Xmarks führt das Problem auf einen Chrome Bug zurück, solange dieser nicht behoben ist muß man sich wohl auf diesen WorkAround einlassen.

Links:
wiki.foxmarks.com

Donnerstag, 20. Mai 2010

Javaplugin im Firefox von IceTea NPR Web Browser Plugin zu Oracle Java Plugin for Linux wechseln

Architektur: x86_64
OS: Ubuntu 10.04 LTS - Lucid Lynx
Browser: Firefox 3.6.3
Java: 1.6.0_20


Da das IceTea Java Plugin für Linux 64 Bit ein Problem hatte Programme fehlerfrei aufzurufen (aufgefallen beim Versuch das Spiel Supremacy1914 über den Firefox 3.6.3 aufzurufen) habe ich mich entschlossen, es gegen das Java Plugin for Linux von Oracle auszutauschen. Mit Opera 9.80 funktioniert das Spiel übrigends out-of-the-box einwandfrei.

Hier die Vorgangsweise:

1. IceTea im Firefox deaktivieren: Extras/Add-ons/Plugins --> IceTea suchen und deaktivieren
2. Firefox schließen
3. Softlink für das Javaplugin im Pluginfolder von Mozilla setzen. Der Pluginfolder befindet sich in ~/.mozilla/plugins.
Das Plugin befindet findet man in JAVA_HOME/jre/lib/amd64/ und nennt sich libnpjp2.so. Das Installationsverzeichnis JAVA_HOME findet man am einfachsten mit dem Befehl echo $JAVA_HOME, diesen Pfad setzt man statt JAVA_HOME in die Consolenbefehle ein.
Consoleneingaben:
cd ~/.mozilla/plugins
sudo ln -s $JAVA_HOME/jre/lib/amd64/libnpjp2.so

4. Firefox starten und überprüfen ob das Plugin funkt indem man in die Adresszeile about:plugins eingibt und in der Liste schaut, ob das Java(TM) Plug-in auftaucht und aktiviert ist.

Damit sollte nun Supremacy1914 auch über Firefox spielbar sein.

Links
java.sun.com


Update 15. Nobember 2012:
Nach Neuinstallation von Ubuntu 12.10 habe ich das Paket "Icedtea – Java-Erweiterung" aus dem Ubuntu Software Center eingespielt und schon konnte man Supremacy1914 spielen, es ist also kein Setzen des Softlinks mehr nötig.