ICQ-Client mit Facebook Funktion

Posted: November 8th, 2010 | Filed under: Internet, Software | Tags: , , , , | No Comments »

http://png-5.findicons.com/files/icons/1594/social_media_icons_2_0/128/facebook.pngAls ich heute mein Miranda (sehr guter und ressourcensparend Chat-Client) aktualisiert habe bin ich auf ein praktisches Addon gestoßen. Facebook Protocol ermöglicht es über Miranda mit Leuten die bei Facebook online sind zu chatten. Zusätzlich erhaltet ihr, falls eine neue Meldung von jemandem online gestellt wird, ein Tooltip in eurem Systray mit der entsprechenden Information. Zum Beispiel wer gerade was macht.

Kostenlos herunterladen könnt ihr das ganze hier: http://addons.miranda-im.org/details.php?action=viewfile&id=4172. Einfach in den Miranda-Ordner Plugins entpacken und Miranda neustarten. Fertig!

image image


Firefox Addon: Tabs vertikal auf der linken Seite

Posted: November 7th, 2010 | Filed under: Internet, Software | Tags: , , , | No Comments »

Hi Leute, via Gordon ein Freund (den ich an dieser Stelle mal schön grüße) bin ich auf ein tolles Firefox Addon aufmerksam geworden.  Tree Style Tab ermöglicht es euch die Tableiste des Firefox auf die linke Seite zu bringen. Das Addon kann sogar noch mehr. Tabs werden sogar hierarchisch eingerückt. Wenn ihr also auf Google nach etwas sucht und ihr klickt dann auf einen vorgeschlagenen Link (neuer Tab) erscheint dieser Tab mit dem Link eingerückt unterhalb des Google Tabs. Ein schöne Sache wie ich finde. Gerade in Zeiten von Breitbildmonitoren und Widescreens sehr praktisch. Somit könnt ihr nämlich viel mehr Tabs auf einen Blick (ohne lästiges horizontales Scrollen) verwalten. Mittlerweile sowohl bei meinem Netbook als auch bei meinem Desktop-PC Standard.

image image


Die besten kostenlosen Spiele Teil I: Soldat

Posted: September 2nd, 2010 | Filed under: Fun, Internet, Software | Tags: , , , , , , , , | No Comments »

Im Netz findet man eine Reihe von kostenlosen und hochwertigen Spiele Vollversionen. Heute möchte ich euch das erste Spiel meiner kleinen aber feinen Auswahl vorstellen. Gerade auf Lan-Parties eignen sich diese Games für ein kurzweiliges und unterhaltsames Mehrspieler-Vergnügen.

Soldat

Beschreibung

Der 2D-Shooter Soldat verlangt dem Benutzer höchste Treffsicherheit und eine gute Reaktion ab. Es gibt zwei Spielmodi, Capture the Flag und Deathmatch. Beide Modi machen sehr viel Spaß. Nach jedem neu Aufsetzen, nachdem man getötet wurde, hat man die Möglichkeit eine primär und eine sekundär Waffe zu wechseln. Es gibt eine Nette Auswahl an Tötungsmaschinen. Das fängt bei der Kettensäge an, geht über diverse Maschinengewehre oder der Schrotflinte, und hört beim Granatwerfer oder der Panzerfaust auf. Hauptziel des Spiels ist es entweder die Fahne des Gegners zu klauen oder eben einfach so viele Gegner wie möglich zu töten. Online gibt es eine Fülle von Servern die Tag und Nacht sehr gut besucht sind.

Screenshots

Soldat Screenshot - Im Spiel

Soldat Screenshot - Im Spiel

Soldat Screenshot - Im Spiel 2

Soldat Screenshot 2 - Im Spiel

Soldat Screenshot 3 - Im Spiel

Soldat Screenshot 3 - Im Spiel

Soldat Screenshot - Waffen

Soldat Screenshot - Waffen

Soldat Screenshot - Server

Soldat Screenshot - Server

Modi

Singleplayer-Modus: ja (mit Bots)
Multiplayer-Modus: ja

Download

Soldat Download auf Chip.de
Soldat Download auf soldat.thd.vg


ICQ Alternativen

Posted: Juli 17th, 2010 | Filed under: Internet, Software | Tags: , , , , , , , , , , , , , , , , , | 15 Comments »

Clienten mit ICQ Unterstützung!

Ihr sucht eine ICQ Alternative, bittschön. Hier einige Clienten die sogar noch einiges mehr können als nur das ICQ Protokoll. Viele von den aufgelisteten Clienten sind Multimessenger und unterstützen zum Beispiel Protokolle wie: AIM, Jabber, IRC, Skype, MSN, Google Talk, Yahoo, Facebook, Twitter und viele mehr.

Windows

ICQ – icq.com

Miranda – miranda-im.org

Instantbird – instantbird.com

digsby – digsby.com

pidgin (ehmalig GAIM) – pidgin.im

qip – http://qip.ru

Trillian – ceruleanstudios.com

ysm – ysmv7.sourceforge.net

AIM (AOL) – aim.com

GMX Multimessenger – service.gmx.net/de/cgi/g.fcgi/products/messenger

WEB.DE MultiMessenger – produkte.web.de/messenger

SIM IM – sim-im.org

&RQ – rejetto.com/&RQ

Unix, Linux, BSD

pidgin (ehmalig GAIM) – pidgin.im

kopete – kopete.kde.org

ysm – ysmv7.sourceforge.net

climm – climm.org

SIM IM – sim-im.org

Instantbird – instantbird.com

Mac OS X

Adium – adiumx.com

iChat – apple.com/support/ichat

Proteus – proteusx.org

Fire – fire.sourceforge.net

Instantbird – instantbird.com

Online Clienten

imo – https://imo.im

icq2go (Flash/Java/Webbased) – http://www.icq.com/download/webicq/de

meebo – meebo.com

im+ – plus.im

Habt ihr noch einen? Dann postet sie in den Comments 🙂


JAVA SAX Parser Beispiel/Tutorial

Posted: Juli 16th, 2010 | Filed under: Internet, Programmieren, Tutorials | Tags: , , , , , | 20 Comments »

„Simple Api for XML“ (SAX) ist eine API zum Parsen(analysieren) von XML-Dateien. Ursprünglich wurde SAX in Java geschrieben ist mittlerweile aber auch in anderen Sprachen verfügbar.

Ich möchte hier ein kleines Beispiel geben um euch zu zeigen wie ihr, in der Praxis, den SAX-Parser benutzen könnt.

Angenommen ihr bekommt eine XML-Datei vorgelegt und sollt alle Personen in einer ArrayList abspeichern. In der XML-Datei befindet sich folgender Inhalt.

XML-Beispiel-Datei

personen.xml

Person.java

Das Personen Objekt repräsentiert eine Person in der XML-Beispiel Datei und dient lediglich als Datenhaltung für die Informationen.

package parser;

import java.util.Date;

public class Person {

  private int id;
  private String name;
  private String vorname;
  private Date geburtsdatum;
  private String postleitzahl;
  private String ort;

  public Person() {

  }

  public int getId() {
    return id;
  }

  public void setId(int id) {
    this.id = id;
  }

  public String getName() {
    return name;
  }

  public void setName(String name) {
    this.name = name;
  }

  public String getVorname() {
    return vorname;
  }

  public void setVorname(String vorname) {
    this.vorname = vorname;
  }

  public Date getGeburtsdatum() {
    return geburtsdatum;
  }

  public void setGeburtsdatum(Date geburtsdatum) {
    this.geburtsdatum = geburtsdatum;
  }

  public String getPostleitzahl() {
    return postleitzahl;
  }

  public void setPostleitzahl(String postleitzahl) {
    this.postleitzahl = postleitzahl;
  }

  public String getOrt() {
    return ort;
  }

  public void setOrt(String ort) {
    this.ort = ort;
  }

  @Override
  public String toString() {
    return "[[" this.id + "] ["this.name + "] [" this.vorname + "]" " [" this.ort
        "] [" this.postleitzahl + "] [" this.geburtsdatum + " ]]";
  }
}

Main.java

Im Folgenden sieht man sehr gut wie man einen XMLReader initialisieren muss. Es besteht sogar die Möglichkeit dem SAX Parser eine DTD zu übergeben. Dies wurde aber in meinem Beispiel einfachheitshalber auskommentiert. Die eigentliche implementierung der SAX Parser Logik steckt jedoch im ContentHandler, dieser folgt anschließend.


package parser;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;

import org.xml.sax.InputSource;
import org.xml.sax.SAXException;
import org.xml.sax.XMLReader;
import org.xml.sax.helpers.XMLReaderFactory;

public class Main {
  public static void main(String[] args) {
    try {
      // XMLReader erzeugen
      XMLReader xmlReader = XMLReaderFactory.createXMLReader();
      
      // Pfad zur XML Datei
      FileReader reader = new FileReader("X:\\personen.xml");
      InputSource inputSource = new InputSource(reader);

      // DTD kann optional übergeben werden
      // inputSource.setSystemId("X:\\personen.dtd");

      // PersonenContentHandler wird übergeben
      xmlReader.setContentHandler(new PersonenContentHandler());

      // Parsen wird gestartet
      xmlReader.parse(inputSource);
    catch (FileNotFoundException e) {
      e.printStackTrace();
    catch (IOException e) {
      e.printStackTrace();
    catch (SAXException e) {
      e.printStackTrace();
    }
  }
}

PersonenContentHandler.java

Beim Parsen der XML-Datei werden die jeweiligen ContentHandler Funktionen aufgerufen.


package parser;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;

import org.xml.sax.Attributes;
import org.xml.sax.ContentHandler;
import org.xml.sax.Locator;
import org.xml.sax.SAXException;

public class PersonenContentHandler implements ContentHandler {

  private ArrayList<Person> allePersonen = new ArrayList<Person>();
  private String currentValue;
  private Person person;

  // Aktuelle Zeichen die gelesen werden, werden in eine Zwischenvariable
  // gespeichert
  public void characters(char[] ch, int start, int length)
      throws SAXException {
    currentValue = new String(ch, start, length);
  }

  // Methode wird aufgerufen wenn der Parser zu einem Start-Tag kommt
  public void startElement(String uri, String localName, String qName,
      Attributes attsthrows SAXException {
    if (localName.equals("person")) {
      // Neue Person erzeugen
      person = new Person();

      // Attribut id wird in einen Integer umgewandelt und dann zu der
      // jeweiligen Person gesetzt
      person.setId(Integer.parseInt(atts.getValue("id")));
    }
  }

  // Methode wird aufgerufen wenn der Parser zu einem End-Tag kommt
  public void endElement(String uri, String localName, String qName)
      throws SAXException {

    // Name setzen
    if (localName.equals("name")) {
      person.setName(currentValue);
    }

    // Vorname setzen
    if (localName.equals("vorname")) {
      person.setVorname(currentValue);
    }

    // Datum parsen und setzen
    if (localName.equals("geburtsdatum")) {
      SimpleDateFormat datumsformat = new SimpleDateFormat("dd.MM.yyyy");
      try {
        Date date = datumsformat.parse(currentValue);
        person.setGeburtsdatum(date);
      catch (ParseException e) {
        e.printStackTrace();
      }
    }

    // Postleitzahl setzen
    if (localName.equals("postleitzahl")) {
      person.setPostleitzahl(currentValue);
    }

    // Ort setzen
    if (localName.equals("ort")) {
      person.setOrt(currentValue);
    }

    // Person in Personenliste abspeichern falls Person End-Tag erreicht
    // wurde.
    if (localName.equals("person")) {
      allePersonen.add(person);
      System.out.println(person);
    }
  }

  public void endDocument() throws SAXException {}
  public void endPrefixMapping(String prefixthrows SAXException {}
  public void ignorableWhitespace(char[] ch, int start, int length)
      throws SAXException {}
  public void processingInstruction(String target, String data)
      throws SAXException {}
  public void setDocumentLocator(Locator locator) {  }
  public void skippedEntity(String namethrows SAXException {}
  public void startDocument() throws SAXException {}
  public void startPrefixMapping(String prefix, String uri)
    throws SAXException {}
}

Ausgabe

Nach dem durchlaufen des SAX Parsers befinden sich nun alle Personen in der ArrayList allePersonen.
[[1] [Mustermann] [Max] [Bierdorf] [54321] [Fri Nov 25 00:00:00 CET 1983 ]]
[[2] [Müller] [Petra] [Bierdorf] [76543] [Fri Apr 13 00:00:00 CEST 1990 ]]

Personen Liste