roothausen

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

Entries tagged as code

Entries tagged as code

Related tags

android apple computer google gui ios iphone jabber java linux misc mobile opensource presentation programming rant screenshot sdk shortys software tail -f /var/log/life video web webdesign xml zeitgeist blog bad world blogging browser changes contentmanagement css firefox free html markup media murphy s9y server stuff tool webwide wordpress captcha hardware linux&unix privacy rss ruby security spam cheatsheet comic datamining dns documentation eigenfaces encryption feedreader fun howto http im javascript life lighttpd mail networking newsbeuter picture podcast politics psi realtime regular expression rest scala subnetting swing test truecrypt unix websockets windows xslt forum unb coffee conference dslr nikon photography science tv codec perl vp8 1 2

My Bachelor Thesis: Scale the realtime web

15:32

Tuesday, March 22. 2011

As some of you might know, I recently finished my Bachelor of Science in Computer Science and Media. Since it was a very interesting topic, I choose to write a Bachelor thesis covering realtime web applications and the challenges of scaling them.

Abstract

If you're interested: Here is the abstract:

Over the last few years we watched a paradigm shift from static content provided by a few entities to dynamic, user generated content. This content is no longer generated by only a few chosen ones. It is now generated by virtually everybody. Users no longer look at websites every few hours but want to know instantly if there are any news. They also expect, that content they create is visible to their peers instantly.

To fulfill this need for instant updates, more and more websites added dynamic content loading. They changed from websites which provided content to web applications with desktop like features. The next logical step was the transition to “realtime web appli- cations” which allow much faster updates. This generation of web applications will not only enable developers to create realtime collaboration and communication applications but also provide a basis of fast browser based games.

This thesis will discuss the current state of realtime web applications, the need for high performance application servers and design patterns to handle a huge amount of clients with persistent connections to the server.

Long story short: Here is the document.

Scale The Realtime Web
View more documents from pfleidi.
Posted by Sven Pfleiderer in computer, zeitgeist | Comments (2) | Trackbacks (0)
Defined tags for this entry: code, computer, networking, programming, realtime, server, software, tail -f /var/log/life, web, websockets, zeitgeist

Distributed contact management using HTTP

10:17

Monday, October 25. 2010

The Idea

A few months ago, Momo came up with an idea to manage contact data in a decentralized and distributed way. The plan was to provide a simple interface to manage and distribute contact data using HTTP. Some weeks ago he finished his bachelor thesis on this topic.

The Project

After some discussions with Momo, I decided to implement his protocol specification. Fortunately, I had the possibility to do this as a software project at my university. The project was mentored by Prof. Kriha.

The implementation itself was done using Scala, Lift and MongoDB.

Abstract

For those of you who don't want to download the whole documentation, here's an abstract:

We all live in times of digital communication: Almost everybody is reachable via cellphone, instant messaging or email. Not only the communication itself evolved but also the communication channels increased dramatically. Some people have multiple email addresses, instant messaging accounts and profiles on several social networks. It is virtually impossible to keep track of all the information available. To address these problems, Moritz Haarmann came up with an idea of a system which is able to manage contact data in a distributed and convenient way. The result of this idea was a protocol proposal which enables users to manage their address data so they can just stop worrying about it. This documentation describes the implementation details and design decisions made to create an usable software which uses the protocol defined by Moritz.

Documentation

I've also written a documentation which describes the protocol specification, some implementation details and the technology used. Have fun with it.

Posted by Sven Pfleiderer in computer, web | Comments (3) | Trackbacks (0)
Defined tags for this entry: code, computer, documentation, http, programming, rest, scala, software, web

Flattr und S9Y

13:43

Tuesday, August 10. 2010

Nachdem diverse Leute gute Erfahrungen damit gemacht haben, habe ich mich spontan dazu entschlossen in diesem Blog ebenfalls Flattr zu integrieren.

Was ist Flattr?

Die Wikipedia meint dazu folgendes:

Jeder bei Flattr registrierte Nutzer kann bei dem Dienst eine selbstgewählte Summe einzahlen, die er monatlich für Internet-Inhalte ausgeben möchte. Das Minimum für einen Flattr-Beitrag sind monatlich 2 Euro. Danach kann der Flattr-Nutzer auf jeder Website mit dem Flattr-„Spendenknopf“ entscheiden (siehe rechts), ob er für diesen Inhalt bereit ist zu bezahlen. Am Ende des Monats wird die Anzahl der Klicks addiert und die monatliche Summe des Nutzers gleichmäßig auf alle geklickten Inhalte verteilt.

Flattr in S9Y integrieren

Um Flattr-Buttons unter den Artikeln einzufügen, kann man das Flattr Plugin für S9Y verwenden. Da ich zudem noch einen Button in der Sidebar haben wollte, musste ich mir hier selbst behelfen: Bei den Sidebar Plugins für S9Y findet man das Plugin “Language-Specific HTML Nugget”. Mit diesem Plugin lässt sich der HTML-Code für einen Flattr-Button einbauen. Bei mir sieht das Ganze dan in etwa so aus:


<p>
  Spenden für <a href="https://flattr.com/thing/43176/Born-to-be-different">roothausen</a>:
   <script type="text/javascript">
     var flattr_url = 'http://blog.roothausen.de';
     var flattr_btn = 'normal';
  </script>
  <script src="http://api.flattr.com/button/load.js" type="text/javascript"></script>
</p>
 

Weitere Optionen findet man in der Dokumentation der Flattr-API

Posted by Sven Pfleiderer in zeitgeist | Comments (0) | Trackbacks (0)
Defined tags for this entry: blog, blogging, code, contentmanagement, markup, web, zeitgeist

Scala - A Scalable Language

04:42

Friday, May 21. 2010

Da es aktuell aufgrund von Zeitmangel relativ still auf diesem Blog ist und ich aktuell den meisten Content auf Twitter und bei RadioTux produziere, wollte ich auch an dieser Stelle mal ein Lebenszeichen von mir geben und die Slides meiner letzten Präsentation über die Programmiersprache Scala veröffentlichen.

Scala - A Scalable Language
View more presentations from pfleidi.

Die Präsentation gibt es hier als PDF zum Download.

Abschließend habe ich noch ein Beispielprogramm erstellt, das den Einsatz von Scala Traits als polymorphe Typen beschreibt:

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

Feedchecker Version 0.4

16:09

Thursday, December 24. 2009

Änderungen

Nach Feedback auf den letzten Blogeintrag habe ich mich nochmal an das Feedchecker Script gemacht und ein paar Änderungen eingepflegt:

  • Ruby 1.8 Kompatibilität (da ich selbst auf Ruby 1.9 entwickle)
  • Vereinfachtes Suchen der Urls durch XPath-Expression
  • Konfigurierbare Anzahl der parallel abzuholenden Feeds

./feedchecker.rb -h
This is a simple, script which takes an opml file and checks all contained feeds for
errors.

 Usage:

feedchecker.rb [options] -i <filename>

where [options] are:
          --input, -i <s>:   Input opml file
        --timeout, -t <i>:   Timeout interval in seconds (default: 60)
            --age, -a <i>:   Specify the minimum age in days (default: 365)
  --fetchparallel, -f <i>:   Specify the amount of feeds to fetch parallel (default: 5)
            --version, -v:   Print version and exit
               --help, -h:   Show this message
 

Mehr Details gibts in der Commit-History auf github.

Geschwindigkeit

In meinen Tests verwende ich meine Liste mit ca. 160 Feeds. Einmal mit den Standardeinstellungen und einmal mit der Option, dass 10 Feeds parallel abgeholt werden.

Zuerst ein paar Vorbereitungen:


wget http://github.com/pfleidi/feedchecker/raw/master/feedchecker.rb
chmod +x feedchecker.rb
 

Mit Standardeinstellungen:


time ./feedchecker.rb -i feeds.opml
...
real    1m33.162s
user    0m18.909s
sys     0m1.296s
 

Mit 10 Threads:


time ./feedchecker.rb -i feeds.opml -f 10
...
real    1m20.754s
user    0m19.493s
sys     0m1.340s
 

Mit 10 Threads und aggressiveren Timeouts von 20 statt 60 Sekunden:


time ./feedchecker.rb -i feeds.opml -f 10 -t 20
...
real    0m39.808s
user    0m19.205s
sys     0m1.472s
 

Viel Spaß damit und ein frohes Fest euch allen!

Posted by Sven Pfleiderer in computer | Comments (0) | Trackbacks (0)
Defined tags for this entry: code, computer, opensource, rss, ruby, software, web, xml

Feeds ausmisten

01:16

Saturday, December 19. 2009

Was tun mit riesigen Feedlisten?

Es geht wahrscheinlich vielen so: Man sammelt im laufe der Jahre hunderte Feeds in seiner Liste ohne nun wirklich zu wissen welche noch aktuell sind und welche nicht. In der letzten Zeit hatte ich genau aus diesem Grund mal wieder das Bedürfnis meine RSS-Feeds auszumisten. Da ich ein fauler Mensch bin und eigentlich keine Lust habe hunderte von Feeds "von Hand" zu prüfen, habe ich ein kleines Tool geschrieben, das mir dabei hilft kaputte, nicht erreichbare oder verwaiste Feeds zu entdecken.

Das Tool

Das Tool wurde in ruby geschrieben, ist frei unter der GPLv2 verfügbar und hoert auf den nicht besonders kreativen Namen feedchecker. Um es zu benutzen ist das Trollop-Gem sowie das Peach-Gem notwendig. Dieses lassen sich einfach mittels "gem install trollop" sowie "gem install peach" installieren.

Update: Unter Debian scheint das SSL-Plugin nicht mit der normalen Ruby-Installation mit installiert zu werden. Darum sollte es noch mittels "aptitude install libopenssl-ruby" nachinstalliert werden.

Verwedung

Da das Tool nicht viel kann, haellt sich die Komplexitaet der Optionen in Grenzen:


 ./feedchecker.rb --help
This is a simple, script which takes an opml file and checks all contained feeds for
errors.

 Usage:

feedchecker.rb [options] -i <filename>

where [options] are:
          --input, -i <s>:   Input opml file
        --timeout, -t <i>:   Timeout interval in seconds (default: 60)
            --age, -a <i>:   Specify the minimum age in days (default: 365)
  --fetchparallel, -f <i>:   Specify the amount of feeds to fetch parallel (default: 5)
            --version, -v:   Print version and exit
               --help, -h:   Show this message
 

Mit einem Aufruf des Scripts lässt sich zumindest die Liste der zu prüfenden Feeds stark eingrenzen.


feedchecker.rb -i /tmp/rss.opml                                                                                      
http://atsutane.freethoughts.de/feed/atom feed isn't well formed and could't be parsed
http://blog.b-o-f-h.net/index.php?/feeds/index.rss2 is out of date. Age: 388 days without an update
http://blog.choas.net/RSS age could not be checked
http://blog.fefe.de/rss.xml?html age could not be checked
http://blog.roothell.org/feeds/index.rss2 Connection timed out
http://codebu.de/blog/?feed=rss2 Redirect ... new URI: http://codebu.de/blog/feed/
...
 

Eventuell hat ja ausser mir noch jemand eine Verwendung dafür. Falls ja ist dies mein Weihnachtsgeschenk an euch.

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

Verkleinern von Bildern mit Ruby und Imagemagick

16:38

Sunday, August 9. 2009

Vor kurzem hatte ich das Bedürfnis Bilder automatisiert, mit Hilfe eines Ruby-Scripts, zu verkleinern. Dieses Script sollte zudem ohne Änderungen sowohl auf Linux als auch auf Windows lauffähig sein.

Fuer diese Aufgabe ist Imagemagick natürlich ein super Werkzeug, da man es auch als Bibliothek von Ruby aus nutzen kann und auch für Windows verfuegbar ist. Unter Windows ist hierfür eine Installation von Ruby, sowie die Installation von Imagemagick und dem passenden RMagick Ruby-Gem notwendig. Unter Linux reicht es Imagamagick und Ruby mit dem Paketmanager seiner Wahl zu installieren und mittels "gem install rmagick" das Gem zu installieren.

Der eigentliche Code gestaltet sich relativ simpel. Prinzipiell lässt sich ein Bild mit wenigen Anweisungen verkleinern:


#!/usr/bin/env ruby

require 'rubygems'
require 'RMagick'

@debug = true

def resize_image(file)
   puts "let's resize #{file} ..." if @debug
   img = Magick::Image::read(file).first
   img.resize_to_fit(1024, 1024)
   img.write(file)
   puts "resizing of #{file} successful" if @debug
end
 

Die Methode resize_to_fit() sorgt hier für das Verkleinern auf bestimmte Maximalwerte in Länge und Breite. Weiteres erfährt man aus der Doku.

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

Medianight 2009

21:05

Wednesday, July 1. 2009

Medianight

Morgen, am Donnerstag den 02.07.2009 wird an meiner Hochschule wieder die Medianight stattfinden. Hier werden die Studenten ihre Projekte des letzten Semesters praesentieren. Ich werde dort unter anderem mit meinem eigenen Projekt am Start sein.

YAXIM

Wie schon zuvor gesagt, werde ich zusammen mit Chris unser Semesterprojekt, das den Namen YAXIM traegt, vorstellen. YAXIM steht fuer "Yet Another XMPP Instant Messenger" und ist ein Jabberclient fuer die Android-Plattform. Als kleinen Vorgeschmack folgen hier noch unsere Folien und das Video der heutigen Praesentation:


Posted by Sven Pfleiderer in computer | Comments (5) | Trackback (1)
Defined tags for this entry: android, code, computer, jabber, java, linux, opensource, presentation, programming, software, video

Slides: Design Patterns in Ruby

14:09

Thursday, May 21. 2009

Wie ich bereits gestern versprochen hatte, bekommt ihr nun hier die Slides meiner Praesentation ueber Design Patterns in Ruby:

Hier gibt es das Ganze auch noch als PDF. Den SourceCode findet man hier

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

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

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

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

ZML - Markup mal anders

22:03

Thursday, November 20. 2008

Ich bin gerade auf ein sehr interessantes Projekt namens ZML gestossen:

Basically, ZML is a markup language with a C-style syntax and lots of syntactic sugar. Furthermore the ZML toolchain provides a ZML to XML compiler, which means that ZML is a convinient way of writing XML. So you could regard it as an alternativ to a feature rich XML editor.
But ZML is more. It is also a technique of code generation, thus an alternativ to Model Driven Architecture. These two aspects fit together when you know that ZML code generation is done with XSLT. Using the ZML syntax instead of the XML syntax for XSLT stylesheets makes it very easy to write a code generation tool whenever approriate. No BNF, flex and bison, no theoretical knowledge about gramar and parser classes. Just some XML, XSLT and XPATH, denoted in a convinent way.

Das hoert sich nach einem interessanten Weg an um XML zu schreiben ohne sich mit den "> <" Zeichen herum plagen zu muessen.

Posted by Sven Pfleiderer in computer | Comments (2) | Trackbacks (0)
Defined tags for this entry: code, computer, markup, opensource, programming, software, xml, xslt

Tinyurls in Langform erhalten

22:02

Saturday, September 13. 2008

Bei vielen Diensten wie z.B. Twitter werden mittlerweile statt normalen URLs verkuerzte abgeschickt. Sollte man mal auf die Idee kommen diese wieder in Orginalform haben zu wollen, koennte man dazu fuer jeden der bekannten Dienste Methoden implementieren. Oder man benutzt die API des Dienstes longurl.com. Die Software dahinter wurde uebrigens unter der AGPL lizensiert und den SourceCode kann man hier ankucken.

Ich habe natuerlich gleich die Klasse fuer bit.ly erweitert:


#!/usr/bin/env ruby

# client class for url shortening service bit.ly and url expandig service longurl.com

require 'rubygems'
require 'net/http'
require 'uri'
require 'json'


class ShortURL
  def self.shortURL(url)
    api_url = "http://bit.ly/api"
    res = Net::HTTP.post_form(URI.parse(api_url),{'url'=> url})
    return res.body
  end

  def self.expandURL(url)
    api_url = "http://api.longurl.org/v1/expand?url=#{url}&format=json"
    res = Net::HTTP.get(URI.parse(api_url))
    data = JSON.parse(res)
   # if expanding url failed
    if data.has_key? 'messages'
      return url
    end
    return data["long_url"]
  end
end
 

Somit lassen sich mit der Methode ShortURL.expandURL(uri) URLs auch verlaengern.

Zusaetzlich gibt es fuer diesen Dienst noch eine Firefox Erweiterung und ein Greasemonkey Script um die langen URLs in Tooltips darzustellen.

Posted by Sven Pfleiderer in computer, web | Comments (0) | Trackbacks (0)
Defined tags for this entry: code, computer, programming, ruby, software, web
(Page 1 of 2, totaling 17 entries)   next page »

JavaScript String .fromCharCode

Calendar

« February '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        

Quicksearch

Kategorien

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


All categories

Archiv

  • February 2012
  • January 2012
  • December 2011
  • November 2011
  • October 2011
  • 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