Posted: Juni 21st, 2011 | Author: admin | Filed under: Programmieren | Tags: Beispiel, chat, Example, Java, Mulitcast, MulticastSocket, network, Netzwerk Nachricht, senden, Socket, Tutorial | No Comments »
Als ich meinen Netzwerk-Chat jLanChat programmiert habe, musste ich mich intensiv mit diesem Thema beschäftigen. Herkömmlicherweise verwendet man zum versenden von Nachrichten das sogenannte Client-Server Prinzip. Will zum Beispiel PC1 eine Nachricht an PC2 senden so muss PC2 einen Socket öffnen mit dem sich PC1 dann verbindet und über diesen Socket die Nachricht sendet. Will man nun eine Nachrichtenleitung mit mehren PCs aufbauen so benötigt man schnell einen Server, mit dem sich dann alle Clients verbinden und über diesen dann kommunizieren.
Wenn wir die Kommunikation über Multicast (Punkt zu Gruppe) tätigen brauchen wir keinen Server. Denn fast alle Router/Switches unterstützen Multicast.
Alle Teilnehmer verbinden sich mit dem Switch/Router und treten einer Gruppe, in Form einer IP-Adresse und eines Ports (z.B.: 230.0.0.1:4447), bei. Bekommt der Switch/Router jetzt eine Nachricht eines Clients mit der Gruppen-Adresse als Zieladresse vervielfältigt der Switch/Router diese Nachricht und sendet sie an alle die der Gruppe beigetreten sind, auch an den der die Nachricht abgesendet hat. So kann man zum Beispiel einen serverlosen Chat aufbauen. Wenn man’s genau nimmt übernimmt der Switch/Router jetzt unsere Serverfunktion.
Um das Ganze in JAVA zu realisieren muss man folgende Bibliothek ins Projekt einbinden: http://commons.apache.org/lang/
Hier unser Beispiel, Es gibt eine Sender-Klasse und eine Empfänger-Klasse:
Sender
import java.io.IOException; import java.net.DatagramPacket; import java.net.InetAddress; import java.net.MulticastSocket; public class Sender { public static void main(String[] args) { // Netzwerk-Gruppe String NETWORK_GROUP = "230.0.0.1"; // Netzwerk-Gruppen Port int NETWORK_GROUP_PORT = 4447; // Client-Port int CLIENT_MULTICAST_PORT = 4446; // Nachrichten-Codierung String TEXT_ENCODING = "UTF8"; try { MulticastSocket socket = new MulticastSocket(CLIENT_MULTICAST_PORT); byte[] message = "Hallo Welt".getBytes(TEXT_ENCODING); // Nachricht an Gruppe senden socket.send(new DatagramPacket(message, message.length , InetAddress.getByName(NETWORK_GROUP) , NETWORK_GROUP_PORT)); } catch (IOException e) { e.printStackTrace(); } } } |
Empfänger
import java.io.IOException; import java.net.DatagramPacket; import java.net.InetAddress; import java.net.MulticastSocket; public class Receiver { public static void main(String[] args) { // Netzwerk-Gruppe String NETWORK_GROUP = "230.0.0.1"; // Netzwerk-Gruppen Port int NETWORK_GROUP_PORT = 4447; // Nachrichten-Codierung String TEXT_ENCODING = "UTF8"; InetAddress group; MulticastSocket socket; try { // Gruppe anlegen group = InetAddress.getByName(NETWORK_GROUP); socket = new MulticastSocket(NETWORK_GROUP_PORT); // Gruppe beitreten socket.joinGroup(group); byte[] bytes = new byte[65536]; DatagramPacket packet = new DatagramPacket(bytes, bytes.length); while(true){ // Warten auf Nachricht socket.receive(packet); String message = new String(packet.getData(),0,packet.getLength(), TEXT_ENCODING); System.out.println(message); } } catch (IOException e) { e.printStackTrace(); } } } |
Ich hoffe ich konnte dem ein oder anderen damit helfen.
Das ganze könnt ihr euch als Eclipse Projekt hier herunterladen (inklusive Bibliotheken): Eclipse Projekt – Tutorial Net Send
Posted: Juni 19th, 2011 | Author: admin | Filed under: Software | Tags: einfach, kostenlos, pdf, Reader, schnell, Viewer | No Comments »
Seit längerer Zeit wollte ich mal meinen Lieblings-PDF-Viewer vorstellen. Er hat den Namen SumatraPDF und beschränkt sich auf die wesentlichen Funktionen. Des weiteren ist er sehr schnell, klein, leicht zu bedienen und nicht überladen wie andere PDF-Reader. Leider gibt es ihn nur für Windows. Zum Download geht es hier entlang: http://blog.kowalczyk.info/software/sumatrapdf/free-pdf-reader.html
Screenshots


Posted: Juni 18th, 2011 | Author: admin | Filed under: Allgemein, Tutorials | Tags: Adapter, PS2, USB, USB sparen, USB Steckplätze erweitern | No Comments »
Jeder kennt das wahrscheinlich oder hat es schon mal erlebt. Die USB-Anschlüsse im PC reichen nicht und man muss umstecken nur um mal kurz ne Kamera oder ähnliches anzuschließen. Ich habe das Asus M4A87TD EVO Mainboard welches über 8 USB-Anschlüsse verfügt. Klingt nach sehr viel aber dennoch ausreichend für mich oder andere Leute. Maus, Tastatur, externe Festplatte, Drucker, Kamera, Grafik-Tablet, USB-Hub (10m der an meinen Couchtisch und an den Fernseher geht) und eine Funk-Maus und schon sind alle Anschlüsse belegt. Dann kommt jemand und will sich was kopieren oder will dir ein paar Daten zuschieben und schon geht das “Umgestecke” los.
Das hat mich auf die Idee gebracht die alten USB-PS/2-Adapter für meine Maus und meine Tastatur zu verwenden. Siehe da gleich mal 2 USB Steckplätze eingespart. Die Adapter hab ich von meinen zwei Cherry Keyboards. Falls ihr keine solche Adapter rumliegen habt bei Amazon kriegt ihr die schon ab 2.50€.


Posted: Juni 8th, 2011 | Author: admin | Filed under: Internet | Tags: Aktion, Gutschein, Gutschein-Codes, Rabatt, Shopping | 1 Comment »
Für alle Sparfüchse unter euch möchte ich euch heute Meingutscheincode vorstellen. Diese Seite bietet eine große Sammlung mit aktuellen Gutscheinen aller möglichen Online-Shops, Firmen oder Geschäften. Mein Tipp: Beim Einkaufen im Netz einfach nach dem jeweiligen Shop suchen und sehen ob es möglicherweise Rabattaktionen oder Gutschein-Codes gibt. So kann man sehr viel Geld Sparen. Als ich mir mal eine Couch bei Neckermann bestellt habe , habe ich glücklicherweise einen passenden Gutscheincode gefunden und die Versandkosten über 50€ sind entfallen. Eine echte Ersparnis!
Meingutscheincode bietet eine praktische Suchfunktion an. Gibt man zum Beispiel: Big Fish Games Gutschein erhält man alle möglichen Gutscheine zum dem Spiele-Portal. Was mir auch positiv aufgefallen ist, ist die Kategorisierung der Gutscheine. Somit kann man einfach mal gewissen Themen durchstöbern, vielleicht findet man ja etwas interessantes. Will man wöchentlich eine Auswahl der beliebtesten Gutscheine so hat man die Möglichkeit den Newsletter zu abonnieren.
Was mir am allerbesten gefallen hat ist das es ein Firefox-Plug-In von Meingutscheincode gibt welches einem automatisch signalisiert ob ein Gutschein eines Shops vorhanden ist, falls man gerade etwas kaufen will. Hier gelangt ihr zum Firefox Addon. Welche Seiten das Firefox-Plug-In “Mein Gutscheincode Finder” unterstütz habe ich leider nicht herausgefunden. Wünschenswert wäre eine List in der Plug-In-Beschreibung. Für Chrome gibt es das Pendant-Plug-In. Mehr Infos gibt es hier.

Hier nochmal die wichtigsten Features:
- Firefox Plug-In
- Suchfunktion
- Kategorisierung
- Newsletter (wöchentlich)
- Shop Index
- Beliebtesten Gutscheine auf einen Blick



Posted: Juni 2nd, 2011 | Author: Lukas | Filed under: Fotografie, Tutorials | Tags: Farbwerte, Kontrast, Photoshop, Tutorial | 1 Comment »
Ich möchte hier eine recht elegante Methode vorstellen, mithilfe von Photoshop, eine ressourcenschonende Kontrasterhöhung vorzunehmen. Vorteile dieser Methode sind, im Vergleich zur herkömmlichen Vorgehensweise, die eben erwähnte Verschonung der Ressourcen von Eingriffen, eine leichte Regulierung und Nachregulierung und vor allem die Beständigkeit der gegebenen Farbwerte.
Die Technik basiert auf einer Überlagerung des Stock-Bilds mit seinem kontrastreichsten Farbkanal. Gehen wir das Thema Schritt für Schritt an und öffnen ein zu bearbeitendes Bild in Photoshop (In meinem Fall Photoshop CS4, die Methode sollte aber in jeder mir bekannten Version analog durchführbar sein und auch auf andere Bearbeitungsprogramme wie Gimp u.Ä. übertragbar sein).
Ich entscheide mich hier für ein Portrait. Es fällt auf, dass das Bild ohnehin schon sehr kontrastreiche Züge hat, ich will aber versuchen Hautmerkmale, Schattierungen und Haare besonders hervorstechen zu lassen um dem Bild einen verunreinigten Touch zu geben.
Mit dem Reiter “Kanäle” im Ebenen-Fenster wechseln wir in die Kanalansicht des Bildes.
Wir werden jetzt versuchen den Farkanal mit den kontrastreichsten Farbinformationen zu finden. Es lässt sich hier erkennen, dass die Farbwerte des Bilds durch den RGB-Modus gespeichert werden. In Photoshop lassen sich die drei Farbkanäle für Rot, Grün und Blau einzeln anzeigen und bearbeiten. Die einzelnen Farbkanäle stellen die Intensität jeder der drei Farben in den entsprechenden Bereichen dar. Das letztendliche Bild entsteht dann dadurch, dass die Farbwerte für jeden Pixel verrechnet werden. Analog funktioniert dieses Prinzip auch für die anderen Modi wie CMYK. Das Akronym steht hierbei für Cyan, Magenta, Yellow und Key (Schwarz). Wir gehen also jeden einzelnen dieser Kanäle durch und vergleichen nach Kontrast.


Ich konzentriere mich hier auf die Farbinformation im Bereich des Gesichts und stelle fest, dass in meinem Fall der Blau-Kanal den höchsten Kontrast bietet.
Diese kontrastreiche Graustufendarstellung unseres Bilds möchten wir jetzt als eigene Ebene einfügen. Am einfachsten funktioniert dies, indem wir, mit aktiviertem Blaukanal, den gesamten Darstellungsbereich mit Strg+a auswählen und mit Strg+c kopieren. Anschließend verlassen wir den einzelnen Kanal, aktivieren wieder den gesamten RGB-Bereich und wechseln in den Reiter “Ebenen”. Hier erstellen wir eine neue Ebene und fügen den zuvor kopierten Blaukanal mit Hilfe von Strg+v ein.
Um die beiden Ebenen miteinander zu verrechnen, wählen wir für unsere neue Blaukanal-Ebene den Ebenenmodus “Ineinanderkopieren”. Durch die Wahl dieses Ebenenmodus haben wir den entscheidensten Vorteil zur herkömmlichen Kontrasterhöhung mit Gradationskurven etc. gewonnen: Veränderungen der Farbintensität bleiben minimal und bleiben nachträglich steuerbar. Ein Blick in die Spezifikation Adobes zum Ebenenmodus “Ineinanderkopieren” verrät:
Multiplies or screens the colors, depending on the base color. Patterns or colors overlay the existing pixels while preserving the highlights and shadows of the base color. The base color is not replaced but is mixed with the blend color to reflect the lightness or darkness of the original color.
Zum Vergleich habe ich auf das ursprüngliche Bild eine, zugegebener Maßen übertrieben starke, Kontrasterhöhung mit der Gradationskurve für den RGB-Modus durchgeführt. Dabei wird eine krasse Farbänderung ins Rote beobachtet, ohne dass dabei der Detailgrad erreicht wird, den wir bei unserer Methode beobachten können.
Zum Schluss lässt sich die erwirkte Kontrasterhöhung gegebenenfalls abschwächen oder verstärken, indem die Deckkraft der Blaukanalebene verringert, bzw. die selbige Ebene einfach beliebig oft dupliziert wird. Außerdem ist es durchaus denkbar diese Kontrasterhöhung durch das Anwenden einer Ebenenmaske auf die Kanalebene selektiv ein- oder auszublenden, was die Methode äußerst anpassbar macht.
