Neakros Blog
Man nennt es neudeutsch ‘bloggen’.
Python, IRC, Twitter

Von Neakro am 20. Juni 2009, 23:59

Eigentlich bin ich ja nicht so der Web 2.0-Typ. Twitter interessiert eigentlich mich auch nicht. Dennoch interessiere ich mich seit einiger Zeit für Twitter. Aber nicht für den Inhalt, sondern für dessen API.

Es fing mit Langeweile an. Seit vielen, vielen Wochen sitze ich herum und habe nichts zu tun. Abitur geschafft, aber eeewig Zeit bis es irgendwie weitergeht (morgen gibt’s das Zeugnis). Deshalb lag es nahe sich weiterzubilden und so habe ich angefangen mich mit Python zu beschäftigen. Angeblich soll Python sehr einfach und gut durchdacht sein und vor einigen Monaten wagte ich ja schon erste Gehversuche, gab es aber relativ schnell auf, da die Schule rief.

Ein Projekt war schnell gefunden: Ein IRC-Bot, der Twitterstati von Personen in IRC schreibt und auch für Leute schreiben kann. Passenderweise gibt es auch direkt 2 Bibliotheken: python-irclib und python-twitter. Dadurch entfiel ein Großteil der Arbeit, die auch fundiertere Kenntnisse Pythons verlangt hätte. Netzwerk ist meiner Meinung nach nichts für jemanden, der gerade mit einer Sprache anfängt.

Aber auch so stellte es eine Herausforderung dar. Mehrere Klassen, Multithreading und als besonderes Schmankerl: die Syntax. Man darf sie nicht unterschätzen, habe ich festgestellt. Ein Leerzeichen zu viel und schon startet das Programm nicht. Auch das Schreiben vom Methoden (nicht zu verwechseln mit Funktionen) mit dem obligatorischen Parameter self ist gewöhnungsbedürftig. Genauso wie der Zugriff auf Variablen in Klassen. Am fiesesten finde ich aber die runden Klammern. An falscher Stelle platziert hat man plötzlich ein Tuple.

Schwer war auch die Umgewöhnung von der Programmierweise in Java zu der in Python. Viele Sachen sind einfach anders gelöst. Teils eleganter, teils weniger elegant.

Die Python-Befehlsreferenz ist sehr gut. Auf der Python-Webseite finden sich alle eingebauten Funktionen sehr gut dokumentiert. Ich glaube aber, dass dies erst seit Python 3.0 so ist. Erinnert mich ein wenig an Java, obwohl die Javadocs noch ein Wenig besser sind.

Nach einiger Eingewöhnungszeit programmiert es sich ganz flüssig in Python. Hier und da vergesse ich noch ein self, aber insgesamt gefällt mir Python immer besser. Besonders wegen der kleinen funktionalen Anteile à la foo = [bar.lower() for bar in foo].

Den Bot werde ich hier bald veröffentlichen, dann kann ihn jeder testen.

Kleiner IRC-Bot in Java

Von Neakro am 16. Oktober 2007, 18:42

Da ich ja mit einigen Leuten an einem Java Projekt arbeite, das auch Internetnutzung vorsieht, habe ich einen kleinen Bot geschrieben, der sich flink mit dem IRC verbindet und dort dann als kleiner Helfer agiert.

Bis jetzt sind nur wenige Funktionen implementiert:

  • quit: Für Verlassen des Channels
  • slap: Virtuelles Schlagen eines anderen
  • wiki: Erzeugt einen Link zu Wikipedia (noch keine Überprüfung)
  • search: Gibt Links zu Suchbegriffen bei diversen Suchmaschinen an (zur Zeit Google und Yahoo)
  • say: Lässt den Bot etwas sagen
  • me: Lässt den Bot etwas virtuell machen
  • nick: Ändert den Namen des Bots (ohne Gültigkeitsprüfung)
  • ping: Bot anwortet mit pong
  • kick: Sofern der Bot Operator ist, kickt er den angegebenen User

Weite Funktionen sind in Planung, aber ich werde den Bot in einigen Tagen zum Download bereitstellen.

Update (17.11.2007):
Die aktuellste Version des Bots befindet sich immer unter dieser URL: http://downloads.neakronet.de/nbot.tar.gz

Changelog zur Version 0.05:

  • Multichannel Support
  • Authentifizierung bei Q im Quakenet
  • Automatischer Reconnect bei Timeout
  • Admin kann jetzt auch per Host identifiziert werden
  • Kommando xsay hinzugefügt, welches an einzelne Channel und User Nachrichten versenden kann
  • Kommando control hinzugefügt. Mit dem passenden Passwort zum Bot kann man so die Kontrolle über den Bot (zurück-)gewinnen
SWT und kleinere Tests

Von Neakro am 20. September 2007, 21:42

Ich habe ja aktuell mit ein paar Freunden ein Projekt in Java laufen, was aber leider mehr schlecht als Recht voran kommt, weil keiner sich drum kümmert, was außerhalb der Treffzeiten (1 Stunde in der Woche) passiert.
Ich hab dann mal SWT gemacht, obwohl das gar nicht mein Aufgabengebiet ist. Ich hab es dann aber mit Datenbanken verbunden. Mal schauen, wie das ankommt. Mehrere Beispiele sind vorbereitet und ich hoffe mal, dass die anderen auch ihre gemacht haben… Die letzten Treffen waren wir ja nur die Hälfte.

Der Server muss dann auch noch aufgesetzt werden. Und da keiner außer mir Linux benutzt, muss ich mich wiedermal dran setzen. Ich sollte mal Geld dafür verlangen xD

Umstieg auf Eclipse Europa

Von Neakro am 8. September 2007, 22:20

Ich bin seit gestern erfolgreich auf Eclipse 3.3.0 umgestiegen.

Das hätte ich schon viel früher machen sollen. Mit dem Plug-In PHP Developer Tools (PDT) lässt sich super in PHP programmieren. Da ist sowohl in PHP, als auch in Java programmiere ist Eclipse echt die beste Umgebung, die ich mir vorstellen kann. Schon alleine der Code-Formatter ist eine Pracht. Mit diesem kann ich auch fremden Quellcode für mich gut lesbar machen.

Da ich mit einigen anderen jetzt an einem größeren Java Projekt arbeiten möchte kommt es uns zu gute, dass durch das Plug-In Subclipse sich direkt auch mit Subversion kommunizieren lässt. Jetzt muss nur noch der entsprechende Server laufen…

Was mir auch sehr gefällt ist die Möglichkeit der Portabilität. Es werden alle Einstellungen in den Workbenches gespeichert. D.h. man kann einfach seine Projekte im Workbench-Ordner mitnehmen und dann an einem anderen Rechner mit Eclipse die gleichen Einstellungen vorfinden, die man gewohnt ist.

Alles in allem ist Eclipse für jedwede Programmiersprache zu empfehlen. Es gibt auch eine komplett auf C/C++ abgestimmte Eclipse-Umgebung, die natürlich weiter erweiterbar ist, wie das originale Eclipse.

Links:
Offizielle Eclipsehomepage: http://www.eclipse.org/
Wascana (C/C++ Eclipse): http://wascana.sourceforge.net/

PHP und UTF-8

Von Neakro am 12. Juli 2007, 14:24

Anscheinend scheint PHP nicht großen Wert auf UTF-8 zu setzen… Es werden zwar schöne Funktionen zur Verfügung gestellt, aber wenn man sich auf diese 100%-ig verlässt hat man schon verloren… Viele Funktionen erkennen nicht-UTF-8-Zeichen als UTF-8 und bereiten so manchem Programm Probleme.

Lustig finde ich aber, dass SimpleXML immer richtig erkennt wenn ein Zeichen nicht UTF-8 ist. Warum sind in PHP zwei verschiedene Implementationen dieser Zeichenerkennung zu finden?

Ich habe das Problem jetzt mit folgendem Code gelöst, den ich bei PHP.net gefunden habe:

Code:

function is_utf8($string)
{
// From http://w3.org/International/questions/qa-forms-utf-8.html
return preg_match('%^(?:
[\x09\x0A\x0D\x20-\x7E] # ASCII
| [\xC2-\xDF][\x80-\xBF] # non-overlong 2-byte
| \xE0[\xA0-\xBF][\x80-\xBF] # excluding overlongs
| [\xE1-\xEC\xEE\xEF][\x80-\xBF]{2} # straight 3-byte
| \xED[\x80-\x9F][\x80-\xBF] # excluding surrogates
| \xF0[\x90-\xBF][\x80-\xBF]{2} # planes 1-3
| [\xF1-\xF3][\x80-\xBF]{3} # planes 4-15
| \xF4[\x80-\x8F][\x80-\xBF]{2} # plane 16
)*$%xs', $string);
}