Informatik-Blog.net

Mehrere IP-Adressen Bundles erstellen

Nunja, zugegeben der Titel sagt nicht viel, jedoch habe ich mich gestern gefragt wie ich ein Array mit mehreren Einträgen bundlen kann.

Zweck war, mehrere Domains inkl. IPs zu sortieren und bei gleichen IPs farbig auszugeben.

Das Ergebniss ist eigentlich relativ einfach wie unten genanntes Beispiel zeigt:

Mehr…

PC Industrie stabilisiert ihren Absatz laut Dell

Dank der Wirtschaftskriese ist nicht nur die Autoindustrie sondern auch die Rubrik Technologien stark betroffen.

Laut aussagen von Dell ist der Absatz im im vergleich zum letzten Jahr um 22% gestiegen. Ebenso berichtet die Financial Times, dass die Nachfrage nach Computern wieder sehr hoch ist.

Mehr…

Der Umgang mit Identitätsdiebstahl

Es beginnt harmlos. Ein paar kleine Einkäufe, an die Sie nicht mehr erinneren erscheint auf Ihrer Kreditkarte oder Debit Card. Diese sehen merkwürdig aus, geben ihnen aber zum jetzigen Zeitpunkt kein grund zur Sorge.

Dann beginnt der richtige Spaß. Sie bekommen eine Kreditkartenabrechnung von mehreren hundert Euros für Dinge die sie nie gekauft haben. Sie werden von einer Firma angerufen, welche bestätigt haben will ob sie den Laptop gekauft haben. Die Bank fordert sie auf eine Autorechnung oder Miete abzuzahlen welche Sie niemals abgeschlossen haben.
Willkommen im Club vom Identitätsdiebstahl. Mehreren Milionen Menschen passiert dies täglich. Um sich dagegen vorzubeugen lesen sie sich bitte nachfolgende Tips aufmerksam durch.

Was ist Identitätsdiebstahl überhaupt?

Mehr…

ISP verändert .torrent Files beim Download

Der Torrentanbieter TorrentFreak berichtet, dass ein Israelischer Internet Provider namens Bezeq den Inhalt von .torrent Datein während des Downloads abändert.

Dieser Prozess läuft folgendermaßen ab. Wenn ein Bezeq Kunde eine .torrent File lädt, verändert der Provider die Datei und fügt einen Tracker hinzu. Der hinzugefügte Tracker kann nur von Bezeq Kunden benutzt werden und verbindet zu einem High-Speed Web-Seed welcher von diesem Provider gehostet wird.

Mehr…

Mac Adresse rausfinden in C#

Wie bereits im Java Forum gepostet zeig ich euch auch noch wie ihr in C# die Mac-Adresse rausfindet.

Beachtet, dass ihr hierfür die Library benötigt.

Hier stelle ich euch ein kleines tool mit GUI vor welches ich entwickelt habe um die Mac-Adresse auszulesen:
Mehr…

MAC-Adresse des Primären Netzwerkadapters auslesen in Java

Wie lese ich die MAC-Adresse in Java aus? Dies ist ganz einfach und funktioniert sowohl unter Linux als auch unter Windows und MAC OS X.

Zuerst müssen wir durch die NIC Adapter durchloopen um festzustellen welcher kein LOOPBACK ist. Der LOOPBACK Adapter ist der eigene PC und besitzt keine MAC-Adresse.
Mehr…

Sinnvolle möglichkeit von Konfigurationsdatein in Java

Wie ihr bestimmt wisst, besitzt Java leider nicht die möglichkeit Headerfiles wie beispielsweiße in C, C++ pder C# zu inkludieren.

Für gewöhnlich werden in Headerfiles Konfigurationsdaten angelegt.

Um sowas dennoch in Java zu realisieren, können sie intern auf Ressourcen im eigenen .JAR Paket zugreifen.
Ebenso ist es jedoch auch möglich eine Klasse hierfür zu schreiben, welches sinnvoll mit einem SingleTon Pattern einmal instanziert wird. In dieser Klasse können sie entweder “final static” Variablen deklarieren, oder sie arbeiten mit Settern und Gettern wie folgendes Beispiel zeigt.
Mehr…

Subnetting in 5 minuten erlernen

Learn Subnetting In 5 Minutes, Ok, maybe in 7 Minutes…
Du denkst Subnetze sind überflüssig?
Du denkst du musst ein Supergenie sein um Subnetting zu verstehen?

Da liegst du Falsch!

Hier eine Schritt für Schritt Anleitung!

Mehr…

Dateien verschieben, kopieren

Dateien verschieben

Dateien über Java zu verschieben ist relativ einfach, nämlich zum Beispiel so:

try {
File quellDatei = new File("/meine/quelledatei.txt");
File zielDatei = new File("/meine/zieldatei.txt");
quellDatei.renameTo(zielDatei);
} catch (Exception e) {
e.printStackTrace();
}

_______________________________

Dateien kopieren

Anders schaut es mit Kopieren von Dateien in andere Ordner aus. Hier hat man zwar mehrere Möglichkeiten der Umsetzung, es ist aber auch mit mehr Schreibaufwand verbunden.

Byteweise Einlesen macht in den wenigsten fällen Sinn, es kommt meistens ein Buffer zum Einsatz.
Ein Beispiel findet man hier: http://www.tutorials.de/forum/java/153779-dateien-kopieren.html

Eine performantere Lösung wäre natürlich über System.exec(…) Batch-Befehle per Java abzusetzen, man verspielt dabei aber den Vorteil der Plattformunabhängigkeit.

Eine echte Alternative zu Batch bieten die java.nio Klassen. Kopierprozesse per NIO über

transfer(inputChannel, outputChannel,...)

kann vom Betriebssystem (falls es das unterstützt) noch intern optimiert werden und kommen damit sehr nah an die Geschwindigkeit von Batchverarbeitung ran.

Hier ein Beispiel einer universellen FileCopy Klasse:

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.nio.channels.ByteChannel;
import java.nio.channels.FileChannel;
public class FileCopy {
long chunckSizeInBytes;
boolean verbose;
public FileCopy(){
this.chunckSizeInBytes = 1024 * 1024; //Standard: Buffer 1MB
this.verbose = false; //Statistics about Copy Process
}
public FileCopy(boolean verbose){
this.chunckSizeInBytes = 1024 * 1024; //Standard: Buffer 1MB
this.verbose = verbose; //Statistics about Copy Process
}
public FileCopy(long chunckSizeInBytes){
this.chunckSizeInBytes = chunckSizeInBytes; //Custom Buffer (Bytes)
this.verbose = false; //Statistics about Copy Process
}
public FileCopy(long chunckSizeInBytes, boolean verbose){
this.chunckSizeInBytes = chunckSizeInBytes; //Custom Buffer (Bytes)
this.verbose = verbose; //Statistics about Copy Process
}
public void copy(File source, File destination) {
try {
FileInputStream fileInputStream = new FileInputStream(source);
FileOutputStream fileOutputStream = new FileOutputStream(destination);
FileChannel inputChannel = fileInputStream.getChannel();
FileChannel outputChannel = fileOutputStream.getChannel();
transfer(inputChannel, outputChannel, source.length(), false);
fileInputStream.close();
fileOutputStream.close();
destination.setLastModified(source.lastModified());
} catch (Exception e) {
e.printStackTrace();
}
}
public void transfer(FileChannel fileChannel, ByteChannel byteChannel, long lengthInBytes, boolean verbose)
throws IOException {
long overallBytesTransfered = 0L;
long time = -System.currentTimeMillis();
while (overallBytesTransfered < lengthInBytes) {
long bytesTransfered = 0L;
bytesTransfered = fileChannel.transferTo(overallBytesTransfered, Math.min(chunckSizeInBytes, lengthInBytes - overallBytesTransfered), byteChannel);
overallBytesTransfered += bytesTransfered;
if (verbose) {
System.out.println("overall bytes transfered: " + overallBytesTransfered + " progress " + (Math.round(overallBytesTransfered / ((double) lengthInBytes) * 100.0)) + "%");
}
}
time += System.currentTimeMillis();
if (verbose) {
System.out.println("Transfered: " + overallBytesTransfered + " bytes in: " + (time / 1000) + " s -> " + (overallBytesTransfered / 1024.0) / (time / 1000.0) + " kbytes/s");
}
}
}

Zu beachten ist dabei, dass der Zielordner schon zur Laufzeit bestehen muss beziehungsweise vorher erstellt wird.

Das NIO Beispiel stammt von folgender Seite:
http://www.tutorials.de/forum/java/328830-schnell-grosse-dateien-kopieren-mit-java-nio.html
Es wurde allerdings noch etwas umgeschrieben, dass es als universelle Klasse dient. Außerdem wurde ein Fehler in der Bufferbearbeitung behoben, daher ist von der Verwendung des Originals abzuraten.

Objekte einmalig instanzieren

Um ein Objekt nur einmal zu instanzieren und von jeder Klasse auf das gleiche Objekt zuzugreifen, wird SingleTon genutzt.

Die Problemlösung ist einfach und sauber. Um ein Objekt nur einmal zu instanzieren, wird geprüft ob das Objekt bereits instanziert wurde und falls es bereits instanziert wurde, wird das Objekt zurück gegeben. Falls das Projekt noch nicht instanziert wurde, wird ein neues Objekt angelegt.

Folgendes Codebeispiel liefert in verschiedenen Klassen immer das gleiche Objekt zurück:

Mehr…