Entries tagged as opensource
Related tags
android apple code computer google gui ios iphone jabber java linux misc mobile presentation programming rant screenshot sdk shortys software tail -f /var/log/life video web webdesign xml zeitgeist bad world blog blogging browser captcha changes dns firefox fun hardware html life lighttpd linux&unix media murphy networking politics privacy s9y security server spam stuff tv webwide contentmanagement css free markup tool wordpress rss ruby documentation feedreader http realtime rest scala swing websockets windows xslt codec vp8 cheatsheet comic datamining eigenfaces encryption howto im javascript mail newsbeuter picture podcast psi regular expression subnetting test truecrypt unix forum unb perl conference dslr nikon photography 42 coffee scienceToday, Dominik Hübner, Thomas Maier and I did a presentation covering the VP8 video codec used by the WebM-Project which was started by Google. Here are our slides:
Ä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!
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:
Fuer diejenigen, die es nicht auf den LinuxDay geschafft haben, moechte ich nun noch unsere Slides zum Thema OpenWRT veroeffentlichen:
Hier gibt es die Praesentation auch noch als PDF
Es gibt nun mittlerweile schon seit ein paar Tagen das finale Programm zum LinuxDay. Da ich allerdings die letzten Tage etwas viel um die Ohren hatte, komme ich erst jetzt dazu, darauf hinzuweisen.
Zeit Thema
13:15-13:30 Welcome & Log in
Christoph Lindenmüller, Hochschule der Medien Stuttgart
13:30-14:30 OpenWRT Linux auf dem Router
Own your DSL router
Moritz Seltmann & Sven Pfleiderer, Hochschule der Medien Stuttgart
14:45-15:45 Open Source Groupware
Own your organisation
Helmut Neuberger, Zarafa: MS Exchange replacement
15:45-16:15 Kaffee, Drinks, Diskussion
16:15-17:15 Open Source Groupware II
Solutions for an Open Campus and the Open Enterprises
Michael Herkens, OpenXchange
17:30-19:30 Open Source Community World
Keep the web open: The new web technologies & standards
Paul Rouget, Mozilla Foundation
Mozilla: Community, Contribution, Foundation
NN, Mozilla Foundation
19:45-20:15 Open Source Commuity Local
1. Linux User Group Stuttgart
Adrian Reyer, LinuxHaus
2. Open Source Region Stuttgart
Hans-Ulrich Schmid, Open Source Region Stuttgart
20:15-22:00 Get Together @ Unithekle
Allmandring 17, 200m Fussweg
20:15-22:00 OpenWRT Router Workshop @ Unithekle
Moritz Seltmann, Sven Pfleiderer & Team
Nach langer Wartezeit wurde nun der von mir genutzte und fuer Arch Linux gepflegte Feedreader newsbeuter in der Version 2.0 freigegeben. Die Liste der Neuerungen liesst sich bisher sehr gut:
- Added more flexible dialog handling
- Improved position handling in article list (fixes #112; thanks to Isaac Good)
- Fixed a lot of bugs (#102, #111, #117, #130, #131).
- Added ability to specify a list of OPML URLs when using OPML as URL source.
- Added config option "keep-articles-days" to optionally keep articles only for a limited number of days.
- Added config option "bookmark-interactive" to indicate that the configured bookmarking command is interactive.
- Don't display authentication information in URLs (fixes #121).
- Replaced mrss with new RSS/Atom parser.
- Added ability to search for text from the article view.
- Added basic support for Yahoo Media RSS.
- Made article view pager configurable.
- Improved HTML rendering of links and underlined and bold text.
- Added ":source" commandline command to (re)load configuration files.
- Implemented "pipe-to" key to pipe articles to external commands.
- Implemented backtick evaluation for configuration files.
- Extended filter language with "between" operator.
- Added "age" attribute for articles to filter them for relative age (in days).
- Extended "set" commandline command to toggle boolean variables and reset configuration variables of all types to their default.
- Added ability to configure local files as feeds.
- Added a "random-unread" key to go to a random unread article.
- When opening articles from a search result dialog, make search phrase stand out in article view.
- Persist commandline and search history.
- Implemented commandline completion.
- Improved help dialog so that it now shows unbound functions.
- Added ability to sort feed list and article list by interactively choosing the sort method.
- Improved and extended conditional HTTP download handling.
Ich habe gerade die Arbeiten am PKGBUILD fuer Arch Linux fertig gestellt und dieses in AUR hochgeladen. Ich wuensche euch viel Spass damit!
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");
}
}
Gute Nachrichten: Auch dieses Jahr wird es an der HdM Stuttgart einen LinuxDay geben. Dieses mal bin auch ich aktiv daran beteiligt:
Es steht fest: Es wird einen zweiten LinuxDay an der Hochschule der Medien in Stuttgart geben.
Am 25.05.2009 ab ca. 12.30 Uhr an der Hochschule der Medien
Das Vortragsprogramm wird zur Zeit noch festgezurrt, nähere Informationen folgen in Kürze.
Weitere Infos werden im Blog, bei Markus auf twitter und auch hier veroeffentlicht.
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.
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:
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.
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!
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.
Der grossartige, von mir genutzte, Feedreader newsbeuter ist nun endlich in der Version 1.0 verfuegbar. Nun gibt es auch eine eigene Website des Projekts.
Hier mal die Releasenotes:
1.0 (2008-08-20):
Implemented support for highlighting of regular expressions
Implemented search function in help dialog
Implemented "show-read-articles" configuration option to toggle displaying of read articles
Implemented "always-download" configuration option to configure a list of feed URLs for which newsbeuter ignores the Last-Modified timestamp
Added read progress display in article view
Added optional format string support for "browser" configuration option
Added "reset-unread-on-update" configuration command
Weitere Infos bekommt man unter anderem im Newsbeuter-Devel-Blog und auf der offiziellen Downloadseite
Als jahrelanger User und Fan dieser Software, kann ich sie nur weiter empfehlen. ![]()
Ich bin mal gespannt, wie dieser Kommentar aufgenommen wird.
Security people are often the black-and-white kind of people that I can't stand. I think the OpenBSD crowd is a bunch of masturbating monkeys, in that they make such a big deal about concentrating on security to the point where they pretty much admit that nothing else matters to them.
Ich werde das nicht kommentieren. ![]()


