Posted: November 26th, 2013 | Filed under: Java, Programmieren, Tutorials | Tags: Base64, codieren, decode, encode, Java, konvertieren, String, String in Base64 | No Comments »
Mittels Base64 kann man beliebige Binärdaten oder Strings in eine Zeichenfolge aus lesbaren ASCII-Zeichen umwandeln. Momentan setzte ich Base64 ein, um sonderzeichenbehaftet Datei-Pfade in “harmlose” Strings umzuwandeln. Ein wenig erstaunt hat mich, dass Java dies von Haus aus nicht kann.
Um ein String in Java problemlos in eine Base64-Zeichenketten umzuwandeln könnt ihr die Bibliothek commons-codec aus dem Hause Apache verwenden:
Herunteladen der Bibliothek
Ladet die aktuelle Version der Bibliothek hier runter:
http://commons.apache.org/proper/commons-codec/download_codec.cgi
Zum Beispiel diese hier: http://apache.mirror.iphh.net//commons/codec/binaries/commons-codec-1.8-bin.zip
Entpacken
In der Zip-Datei befinden sich häufig viele *.jar-Dateien, ihr benötigt lediglich die rot markiert Datei. Entpackt diese.
Bibliothek ins Projekt importieren
Jetzt müsst ihr die Bibliothek in Form der Jar-Datei in euer Projekt importieren. In eclipse könnt ihr das über die Projekteigenschaften umsetzen. Idealerweise kopiert ihr eure verwendeten Bibliotheken in ein Verzeichnis innerhalb des Projektes, zum Beispiel in den Ordner Libs: [projektname]\lib\commons-codec-1.8.jar
String in Base64
Nachdem ihr die Bibliothek commons-codecs erfolgreich eingebunden habt, könnt ihr wie folgt Strings nach Base64 codieren.
import org.apache.commons.codec.binary.Base64; public class ConvertStringToBase64 { public static void main(String[] args) { String text = "Hallo, was geht ab!"; // Einen String in Base64 konvertieren (encode) String base64 = new String(Base64.encodeBase64(text.getBytes())); System.out.println(base64); // Einen Base64-String wieder zurück konvertieren (decode) String text2 = new String(Base64.decodeBase64(base64)); System.out.println(text2); } } |
Konsolenausgabe:
SGFsbG8sIHdhcyBnZWh0IGFiIQ==
Hallo, was geht ab!
Das war’s auch schon, hoffe ich konnte dem ein oder anderen von euch helfen 😉
Posted: November 4th, 2013 | Filed under: Internet, Java, Programmieren, Tutorials | Tags: auslesen, crawlen, deutsches Tutorial, internetseiten, Java, jSoup, parsen, scraping, web | 2 Comments »
Um Informationen aus einer Webseite heraus zu extrahieren (engl. web scraping), gibt es viele verschiedene Vorgehensweisen und Frameworks. Nach langer Suche bin ich endlich auf ein einfaches und gut dokumentiertes Framework gestoßen: jSoup
jSoup ist eine Java-Bibliothek mit der es möglich ist mittels CSS-Selektoren und dem Document Object Model (DOM), Seiteninhalte extrem einfach abzugreifen. Das folgende Beispiel erläutert die Funktionsweise des Frameworks und die Einfachheit der Handhabung.
Webseite analysieren
Ziel unseres Tutorial ist es, auf der Wikipedia Startseite die Ereignisse der “Was geschah am <aktuelles Datum>?”-Kategorie auszulesen.
Mit Hilfe der Debug-Konsole im Google Chrome Browser und dem Inspektor ist es möglich die HTML-Struktur zu genau zu analysieren. Unsere Informationen die wir abgreifen möchten befinden sich in einer Liste innerhalb des DIV mit der Id hauptseite-ereignisse.
Beispiel – Wikipedia parsen
Herunterladen könnt ihr die Java-Bibliothek jSoup hier: http://jsoup.org/download
Nachdem ihr die .jar-Datei jsoup-X.X.X.jar in euer Projekt eingebunden habt (so wird’s gemacht http://www.javabeginners.de/Grundlagen/Bibliothek_einbinden.php), könnt die das Framework wie folgt verwenden:
import java.io.IOException; import org.jsoup.Jsoup; import org.jsoup.nodes.Document; import org.jsoup.nodes.Element; import org.jsoup.select.Elements; public class jSoupExample { public static void main(String[] args) { try { // Wikipedia Seite laden Document doc = Jsoup.connect("http://de.wikipedia.org/wiki/Wikipedia:Hauptseite").get(); // Alle Listenelemente über den entsprechenden Selektor markieren // Ein Leerzeichen initiert ein Kindelement des Elternelementes (links) // div#hauptseite-ergeignisse => Der DIV mit der ID hauptseite-ereignisse (# => id) // div.inhalt => Der DIV mit der Klasse inhalt (. => class) Elements ereignisse = doc.select("div#hauptseite-ereignisse div.inhalt ul li"); // Selektierte Elemente ausgeben ohne HTML-Tags for (Element e : ereignisse) { System.out.println(e.text()); } } catch (IOException e) { e.printStackTrace(); } } } |
|
Konsolenausgabe
Führt man das obige Quellcode-Stück aus, so wird unser gewünschter Inhalt zeilenweise wie folgt ausgegeben:
1763 – In Havanna wird mit dem Bau der Festungsanlage San Carlos de La Cabaña begonnen.
1813 – Der an der badischen Revolution von 1848/49 beteiligte Politiker Lorenz Brentano, nach deren Scheitern im US-Exil und dort 1877 bis 1879 Kongressabgeordneter, kommt zur Welt.
1913 – Am Königlichen Hoftheater Stuttgart wird Walter Braunfels’ Oper Ulenspiegel uraufgeführt.
1913 – Ein von Marseille kommender Schnellzug kollidiert bei Melun mit einem Postzug.
1988 – Die Uraufführung von Thomas Bernhards Drama Heldenplatz am Wiener Burgtheater löst einen Skandal aus.
Alternativen
Viel Spaß beim Auslesen!
Posted: November 3rd, 2013 | Filed under: Programmieren, Tutorials | Tags: apt-get install, installieren, Java, Java7, JDK, Linux, Oracle JDK, Ubuntu | 1 Comment »
Da die vorinstallierte JavaVM-Implementierung OpenJDK häufig Probleme macht habe ich mich dazu entschlossen auf meinem Server Oracle JDK7 zu installieren. Standardmäßig sind diese Pakete seltsamerweise jedoch nicht in den normalen Ubuntu Repos zu finden. Hier eine kleine Anleitung wie ihr Oracles JDK7 schnell und einfach dennoch per APT-Paketverwaltung installieren könnt.
Anleitung
Paketquelle von webupd8team hinzufügen:
sudo add-apt-repository ppa:webupd8team/java
Neueinlesen der Paketlisten:
sudo apt-get update
Oracle JDK7 installieren:
sudo apt-get install oracle-jdk7-installer
Oracle Java7 aktivieren, indem ihr die entsprechende VM per Eingabe auswählt (siehe Screenshot 2):
sudo update-alternatives –-config java
Posted: März 21st, 2013 | Filed under: Java, Programmieren, Tutorials | Tags: absteigend, alphabetisch, ArrayList, aufsteigend, Collection, Collections, Java, List, Liste, sortieren | 8 Comments »
In Zukunft will ich mal wieder öfters was zum Thema Java schreiben. Ich werde versuchen ein Sammelsurium an Java Grundlagen zu erarbeiten so dass nach und nach eine Art Nachschlagewerk entsteht.
Anfangen will ich mit dem Sortieren von Listen welche Strings enthalten. Über die Klasse Collections besteht die Möglichkeit Listen automatisiert zu sortieren bzw. neu anzuordnen. Das folgende Beispiel beschreibt wie einfach dies zu realisieren ist.
Beispiel – ArrayList alphabetisch sortieren
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class SortableExample {
public static void main(String[] args) {
/* Liste anlegen, die Strings enthält */
List<String> namen = new ArrayList<String>();
/* Namen hinzufügen */
namen.add("Peter");
namen.add("Frank");
namen.add("Hans");
/* Liste alphabetisch aufsteigend sortieren (a...z) */
Collections.sort(namen);
/* Ausgabe: Frank Hans Peter */
for(String name : namen){
System.out.println(name);
}
/* Liste alphabetisch absteigend sortieren (z...a) */
Collections.sort(namen);
Collections.reverse(namen);
/* Ausgabe: Peter Hans Frank */
for(String name : namen){
System.out.println(name);
}
}
}
|
Posted: Januar 8th, 2013 | Filed under: Java, Software | Tags: code, Java, UML Diagramm, UML Diagramme erstellen | 1 Comment »
Aus Dokumentationsgründen ist es oft notwendig aus bestehendem Quellcode UML-Diagramme zu erzeugen. Seit einiger Zeit benutze ich das schwedische Tool EssModel, welches einfach und schnell zu bedienen ist.
Über den “File > Open folder …” könnt ihr einfach den Source-Ordner eures Java-Projekts angeben.
Um alle Assoziationen und Vererbungen im UML-Diagramm anzuzeigen, sollte in der Hauptansicht unter Connections folgender Wert ausgewählt werden:
Unter dem Menüpunkt “Diagram > Save as picture…” kann man das ausgewählte Diagramm schließlich exportieren.
Download
Herunterladen könnt ihr EssModel hier: http://essmodel.sourceforge.net/