computer

  • Impressum
  • Administration
  • Kontaktformular
  • Jabber
  • Tagcloud
  • Twitter
  • Soup
  • Github

roothausen

Smack: XMPP fuer java

23:08

Saturday, April 18. 2009

Da ich gerade an einem Projekt arbeite, dass XMPP auf Java verwendet, hab ich mir zu Testzwecken eine Klasse gebaut, die Smack verwendet und ein paar Moeglichkeiten der API nutzt. Es ist unter anderem moeglich sich zu verbinden, das Roster auszulesen und empfangene Nachrichten anzuzeigen. Da mir bei der offiziellen Dokumentation Beispiele gefehlt haben, die man auf einen Rutsch kopieren und bearbeiten kann, moechte ich hier ein wirklich lauffaehiges Beispiel veroeffentlichen. Ich hoffe, damit kann jemand was anfangen:


import java.util.Collection;

import org.jivesoftware.smack.ConnectionConfiguration;
import org.jivesoftware.smack.PacketListener;
import org.jivesoftware.smack.Roster;
import org.jivesoftware.smack.RosterEntry;
import org.jivesoftware.smack.RosterListener;
import org.jivesoftware.smack.SASLAuthentication;
import org.jivesoftware.smack.XMPPConnection;
import org.jivesoftware.smack.XMPPException;
import org.jivesoftware.smack.filter.PacketTypeFilter;
import org.jivesoftware.smack.packet.Message;
import org.jivesoftware.smack.packet.Packet;
import org.jivesoftware.smack.packet.Presence;

public class SmackTester {

        private XMPPConnection conn;
        private String username;
        private String password;
        private String server;

        public SmackTester() {
                // debug option
                XMPPConnection.DEBUG_ENABLED = false;

                username = "einuser";
                password = "einpasswort!";
                server = "jabber.foo.bar";

                makeConn();
                doConnect();
                makeRoster();
                chatAction();

                // wait ... (I know that's pretty ugly)
       
                while (conn.isConnected()) {
                        try {
                                Thread.sleep(Long.MAX_VALUE);
                        } catch (InterruptedException e) {
                                e.printStackTrace();
                        }
                }
        }

        // nothing interesting here
        public static void main(String[] args) {
                new SmackTester();
        }

        private void doConnect() {
                // let's connect
                try {
                        conn.connect();
                        conn.login(username, password, "someRessource");
                } catch (XMPPException e) {
                        System.err.println("Login failed!");
                        e.printStackTrace();
                        System.exit(1);
                }
                System.out.println("Login succesful!");
        }

        private void makeConn() {
                ConnectionConfiguration config = new ConnectionConfiguration(server,
                                5222);
                // pass some connection options
                config.setSASLAuthenticationEnabled(true);
                SASLAuthentication.supportSASLMechanism("PLAIN", 0);

                conn = new XMPPConnection(config);
        }

        private Roster makeRoster() {
                Roster roster = conn.getRoster();
                Collection<RosterEntry> entries = roster.getEntries();

                // print out all entries in roster
                System.out.println("---------- entries in roster -----------");
                for (RosterEntry entry : entries) {
                        System.out.println(entry);
                }
                System.out.println("---------- entries in roster -----------");

                // react to changes in roster
                roster.addRosterListener(new RosterListener() {
                        // called methods ...
                        public void entriesDeleted(Collection<String> addresses) {
                                // do stuff
                        }

                        public void entriesUpdated(Collection<String> addresses) {
                                // do stuff
                        }

                        public void presenceChanged(Presence presence) {
                                System.out.println("Presence changed: " + presence.getFrom()
                                                + " " + presence);
                        }

                        public void entriesAdded(Collection<String> arg0) {
                                // do stuff
                        }
                });

                return roster;

        }

        private void chatAction() {
                PacketTypeFilter filter = new PacketTypeFilter(Message.class);
                PacketListener myListener = new PacketListener() {

                        public void processPacket(Packet arg0) {
                                if (arg0 instanceof Message) {
                                        Message msg = (Message) arg0;
                                        System.out.println("Message: " + msg.getFrom() + " "
                                                        + msg.getBody());
                                }
                        }

                };

                // Register the listener.
                conn.addPacketListener(myListener, filter);
        }

        private void doDisconnect() {
                conn.disconnect();
                System.out.println("Disconnected");
        }

}
 
Posted by Sven Pfleiderer in computer | Comments (6) | Trackbacks (0)
Defined tags for this entry: computer, im, jabber, java, opensource, programming, software

LaTeX Template fuer Praesentationen

22:40

Saturday, April 11. 2009

Nachdem ich es schon lange vor hatte, habe ich mich nun mal an LaTeX heran getraut und damit die ersten Texte formatiert. Als die Ergebnisse nach den ersten Gehversuchen schon sehr vielversprechend aussahen, habe ich zudem beschlossen meine naechsten Praesentationen ebenfalls in LaTeX zu schreiben. Auf der Suche nach einer Vorlage bin ich auf diesen Beitrag in einem Forum gestossen, der mir sehr geholfen hat:


\documentclass[ngerman]{beamer}
\usepackage{babel}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{lmodern}
\usetheme[secheader]{Madrid}
\useinnertheme{circles}
\setbeamercovered{transparent}
\beamertemplatenavigationsymbolsempty
 \author[Tester]{Tester}
 \title[Minimalbeispiel]{Minimalbeispiel ist immer BESSER}
\begin{document}
\begin{frame}[plain]
 \maketitle
\end{frame}

\begin{frame}
 \tableofcontents
\end{frame}

\setbeamertemplate{headline}
{
  \leavevmode%
  \hbox{%
  \begin{beamercolorbox}[wd=.5\paperwidth,ht=2.25ex,dp=1ex,center]{section in head/foot}%
    \usebeamerfont{author in head/foot}\raggedleft\thesection.~\insertsection\hspace{2em}\null
  \end{beamercolorbox}%
  \begin{beamercolorbox}[wd=.5\paperwidth,ht=2.25ex,dp=1ex,center]{subsection in head/foot}%
    \usebeamerfont{author in head/foot}\hspace{2em}\raggedright\insertsubsection
  \end{beamercolorbox}}%
  \vskip0pt%
}

\section{Test}
\subsection{Test unter}
\begin{frame}
 \frametitle{Testfolie}
\begin{itemize}
 \item Eintrag
 \item Ende
\end{itemize}
\end{frame}

\section{noch ein Test}
\subsection{noch ein Test unter}
\begin{frame}
 \frametitle{Testfolie}
\begin{itemize}
 \item Eintrag
 \item Ende
\end{itemize}
\end{frame}
\end{document}
 

Wirft man diesen Code nun pdflatex vor die Fuesse, generiert dieses eine schoene Praesentation, die man sich hier ansehen kann.

Posted by Sven Pfleiderer in computer, misc | Comments (2) | Trackbacks (0)
Defined tags for this entry: code, computer, misc, opensource, presentation, shortys, software

Android SDK: Passwoerter in Preferences maskieren

20:45

Friday, April 10. 2009

Ich sitze hier gerade in einer Hacksession bei Chris und versuche einer Preference-Activity beizubringen, dass Passwoerter in einer EditTextPreference maskiert werden. Nach etwas rumsuchen, bin ich auf die Loesung gestossen. Hier ein kleiner Prototyp:


<EditTextPreference
android:key="password"
android:title="Ich bin ein Passwortfeld"
android:summary="Hier kannst du dein Passwort eingeben"
android:dialogTitle="Bitte Passwort eingeben!"
android:singleLine="true"
android:password="true"
/>
 

Ich frage mich allerdings, warum man in der Dokumentation davon nichts findet ...

Posted by Sven Pfleiderer in computer | Comment (1) | Trackbacks (0)
Defined tags for this entry: android, code, computer, google, gui, programming, sdk, software, xml

Android OTA-Upgrade erzwingen

18:38

Wednesday, April 1. 2009

Sollte jemand auf die Idee kommen eine alte Version von Android (z.B. den -RC7 Build in Europa) mal "schnell" auf den neusten Stand bringen zu wollen hier ein paar Schritte mit denen man auf neue Upgrades und den Status des Downloads pruefen kann:

  • Man besorgt sich das Programm AnyCut aus dem Market. Dazu sollte die Suchfunktion genutzt werden.
  • Danach legt man mit Anycut eine Verknuepfung auf "Activites/Device Info" an
  • Ist das erledigt, startet man die Verknuepfung auf dem Homescreen, scrollt bis ganz nach unten und drueckt "Check for upgrade"
  • Dort kann man den Downloadstatus beobachten und bekommt die Meldung, dass ein Upgrade verfuegbar ist, sobald es herunter geladen wurde. Ich persoenlich haette ja zuerst gefragt und dann herunter geladen aber ... ;-)

Anmerkung: Ja ich hatte fast zwei Wochen lang ein G1 und bin momentan dabei mich in das SDK dafuer einzuarbeiten. Ja ich werde noch detaillierter darueber bloggen und nein ich besitze es nicht mehr, da es sich heute wieder auf den Weg zum Verkaeufer gemacht hat.

Posted by Sven Pfleiderer in computer | Comment (1) | Trackbacks (0)
Defined tags for this entry: android, computer, google, shortys, software

Feed repariert

03:53

Sunday, March 15. 2009

Wie es scheint, haben meine Newsfeeds hier im Blog in den letzten Tagen nicht richtig funktioniert. Ein Glueck, dass ich in der Zeit nichts geschrieben habe. ;-)
Der Fehler trat vermutlich auf, weil ich eine neue Version des GeSHi-Plugins zusammen mit einer Betaversion von S9Y 1.4.1 installiert hatte. Nach dem Upgrade auf das finale Release laeuft wieder alles sauber.

Vielen Dank an dieser Stelle an w0lf, der mich auf den Fehler aufmerksam gemacht hat.

Posted by Sven Pfleiderer in computer, web | Comments (2) | Trackbacks (0)
Defined tags for this entry: blog, changes, computer, contentmanagement, murphy, s9y, server, web

Upgrade steht an

21:07

Monday, March 2. 2009

Ich werde diesen Server heute Nacht von Debian Etch auf Lenny upgraden. Sollte es hierbei zu einem Ausfall kommen, seit ihr nun vorgewarnt.

Sollte jemand noch nach einem guten Howto fuer das Upgrade suchen, sollte er/sie sich dieses hier zu Gemuete fuehren.

Weitere Links:

  • http://www.golem.de/0903/65638.html
  • http://www.tagesschau.de/inland/wahlcomputer124.html
  • http://ccc.de/updates/2009/wahlcomputer-urteil-bverfg?language=de
Posted by Sven Pfleiderer in computer, zeitgeist | Comments (0) | Trackbacks (0)
Defined tags for this entry: changes, computer, linux, opensource, server, software, zeitgeist

Heute Nacht ...

21:08

Friday, February 13. 2009

... steht uns ein einmaliges Ereignis bevor: Der UNIX-Timestamp wird den Wert 1234567890 erreichen.


date -d@1234567890
Sat Feb 14 00:31:30 CET 2009
 

Den Countdown kann man sich uebrigens hier ankucken. Viel Spass dabei. ;-)

Posted by Sven Pfleiderer in computer, misc, web | Comments (0) | Trackbacks (0)
Defined tags for this entry: computer, linux, misc, software, unix, web, webwide

Swing look and feel global aendern

20:33

Sunday, January 25. 2009

Prinzipiell finde ich Java in Verbindung mit Swing ja wirklich nett um grafische Oberflaechen zu erstellen. Allerdings wurde bei mir immer das unschoene "Metal" Look&Feel verwendet. Somit sahen die Anwendungen ebenfalls wenig ansprechend aus. Abhilfe schafft ein globales Setzen des entsprechenden Styles. In meinem Fall ist es gewollt, dass Java-Anwendungen die Optik von GTK-Anwendungen erhalten.

Hierzu ist es notwendig die Datei $JAVA_HOME/jre/lib/swing.properties mit folgendem Inhalt anzulegen:


swing.defaultlaf=com.sun.java.swing.plaf.gtk.GTKLookAndFeel
 

Zum Vergleich: Hier ein kleiner, von mir geschriebener Taschenrechner.

Taschenrechner im Metal-Style
Taschenrechner im GTK-Style

Ich denke der Unterschied ist klar zu erkennen. ;-)

Posted by Sven Pfleiderer in computer | Comment (1) | Trackbacks (0)
Defined tags for this entry: code, computer, gui, java, swing

Tapfere Hardware

20:20

Friday, January 9. 2009

Es ist kalt, nass und gefroren aber ein tapferer Router in einer Plastikschuessel trotzt den wiedrigen Bedingungen:

Posted by Sven Pfleiderer in computer, misc | Comments (3) | Trackbacks (0)
Defined tags for this entry: computer, hardware, misc, networking, picture

Nachtrag Mobile Darstellung

17:03

Tuesday, December 23. 2008

Ich habe mir gerade das Android-SDK installiert und damit rumgespielt. Hier mal ein Screenshot der mobilen Darstellung auf Android:

Posted by Sven Pfleiderer in computer, web | Comments (0) | Trackbacks (0)
Defined tags for this entry: android, computer, mobile, screenshot, software, web, webdesign

Syntax Highlighting und Autovervollstaendigung in irb

23:31

Monday, December 22. 2008

Wer ab und zu ruby programmiert, wird wahrscheinlich auch gefallen an irb, der ruby-Shell, gefunden haben. Bisher hat mich daran die Tatsache gestoert, dass sie per Default keine TAB-Vervollstaendigung mitbringt. Marc hat mich per Twitter auf einen Eintrag in seinem Blog hingewiesen, der das aendert:


[root@burgr:~]# gem install wirble
Successfully installed wirble-0.1.2
1 gem installed
Installing ri documentation for wirble-0.1.2...
Installing RDoc documentation for wirble-0.1.2...
 

Speichert man nun folgende Anweisungen in der Datei ~/.irbrc, bekommt man eine funktionierende Autovervollstaendigung und schoenes Syntax-Highlighting.


require 'rubygems'
require 'wirble'
Wirble.init
Wirble.colorize
 

Das Modul scheint Funktionen der darunter liegenden Commandshell zu nutzen, denn so Sachen wie zum Beispiel Strg+R fuer inkrementelle Suche funktionieren nun ebenfalls.

Posted by Sven Pfleiderer in computer | Comments (0) | Trackbacks (0)
Defined tags for this entry: code, computer, programming, ruby

Radeonhd

19:05

Monday, December 22. 2008

Nach Jahren der Qual und viel Leid mit dem ATI-Catalyst-Treiber fuer Linux hat die Situation auf meinem bleeding edge System mit dem Upgrade auf X.org 7.4 und Catalyst 8.11 nun einen traurigen Hoehepunkt erreicht. Hier mal ein paar der schwersten Fehler:

  • Der Xserver hat sich geweigert im Akkubetrieb zu starten. Zu sehen bekam man nur einen schwarzen Bildschirm und dann ging nichts mehr. Also Neustart und ohne X booten. Zum Glueck bin ich in der Lage auch ohne graphische Oberflaeche zu arbeiten.
  • Beim Zuklappen des Notebooks kam es in zufaelligen Abstaenden zum Einfrieren des XServers was ebenfalls nur durch einen Neustart gefixt werden konnte.
  • Beim Abspielen einiger Videos kam man irgendwann in die absurde Situation, in der das Bild dem Ton um hinterher rennt. Teilweise um Sekunden versetzt.

Nach all diesem Leiden habe ich mich mal nach dem aktuellen Befinden des RadeonHD-Treibers erkundigt, der mit Hilfe der offen gelegten Spezifikationen entstanden ist. Also installiert, xorg.conf editiert. Geht. Die oben beschriebenen Probleme sind Vergangenheit. Einziger Nachteil: Der Treiber bietet keine hardwarebeschleunigte 3D-Ausgabe. Ist auf dem Notebook zum Arbeiten allerdings auch nicht zwingend notwendig. Immerhin muss ich mich nun nicht mehr auslachen lassen wenn mein Notebook in einer Vorlesung nicht vernuenftig hochfahren will. Weitere Infos zur Installation bekommt man im ArchWiki.

Posted by Sven Pfleiderer in computer, misc | Comments (2) | Trackbacks (0)
Defined tags for this entry: bad world, computer, hardware, linux&unix, misc, opensource, software

Neuer GPG-Key

21:28

Friday, December 19. 2008

So schnell kann die Zeit vergehen. Es sind nun schon wieder zwei Jahre vergangen und mein momentaner GPG-Key ist abgelaufen.

Der neue Key ist unter der Key-ID 0x5711CE93 hier, hier oder auf den gaengigen Keyservern zum Download bereit. Importieren laesst er sich mit einem passenden Tool wie zum Beispiel dem GPG Kommandozeilen-Programm:


gpg --keyserver gpg-keyserver.de --recv-keys 0x5711CE93
 

Sollte mich jemand verschluesselt erreichen wollen, ist eine mit GPG verschluesselte Email das Mittel der Wahl. Also viel Spass damit.

Posted by Sven Pfleiderer in computer | Comments (0) | Trackbacks (0)
Defined tags for this entry: computer, encryption, mail, privacy, security

Shortcut addicted?!

19:11

Thursday, December 11. 2008

Ich glaube ein Bild sagt mehr als tausend Worte:

Besitzt noch jemand eine "Al"-Taste?

Posted by Sven Pfleiderer in computer, misc | Comments (5) | Trackbacks (0)
Defined tags for this entry: bad world, computer, hardware, misc

Newsbeuter 1.3

14:56

Saturday, December 6. 2008

Gerade lese ich, dass newsbeuter 1.3 freigegeben worden ist. Ich habe daraufhin gleich mal ein aktuelles PKGBUILD fuer Arch Linux erstellt und hochgeladen. Viel Spass damit!

Posted by Sven Pfleiderer in computer, web | Comments (2) | Trackbacks (0)
Defined tags for this entry: computer, feedreader, linux&unix, newsbeuter, opensource, rss, web
« previous page   (Page 2 of 15, totaling 211 entries)   next page »

JavaScript String .fromCharCode

Calendar

« May '12 »
Mo Tu We Th Fr Sa Su
  1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31      

Quicksearch

Kategorien

  • XML computer
  • XML misc
  • XML web
  • XML zeitgeist


All categories

Archiv

  • May 2012
  • April 2012
  • March 2012
  • February 2012
  • January 2012
  • Recent...
  • Older...

Feeds

  • XML RSS 2.0 feed
  • ATOM/XML ATOM 1.0 feed
  • XML RSS 2.0 Comments

Links

Retinacast
Shackspace
Yaxim
Radio Tux
Kais Blog
Blumen Pfleiderer
Alk
paxos
filzo
Marc Seeger
polzifer
Moritz Haarmann

Tags

android bad world blog blogging browser changes code comic computer contentmanagement encryption feedreader firefox free fun google gui hardware howto html im jabber java life lighttpd linux linux&unix markup media misc mobile murphy networking newsbeuter opensource picture politics presentation privacy programming regular expression rss ruby s9y scala screenshot sdk security server shortys software stuff tail -f /var/log/life test tool tv unix video web webdesign webwide windows xml zeitgeist

Lizenz

Creative Commons License - Some Rights Reserved