Mittwoch, 31. Dezember 2008
Analyse-Werkzeuge für Ruby Code
Montag, 29. Dezember 2008
Unit Tests mit Forth
Auf dieser Seite ist auch ein schönes Beispiel für das Testen einer Queue-Klasse zu finden - also für mich als relativer Forth-Neuling sehr nützlich.
Kindle
Zitat aus der deutschen Wikipedia:
Ich hätte ja nicht mal ein Problem damit, daß ich für Bücherangebot auch bezahlen soll - wenn es sich dabei um gute Bücher handelt.Es wird kritisiert, dass der Kindle derart auf DRM setzt, dass Bücher nur auf einem Gerät gelesen werden können. Eine Weitergabe ist nicht möglich, Amazon behält sich sogar vor, den Zugriff auf bereits gekaufte Bücher zu verbieten, wenn der Verdacht besteht, dass ein Nutzer das DRM umgehen will. Auf diese Weise haben die Bücher keinerlei Wiederverkaufswert, und der Zugang zu Informationen kann nachträglich beschränkt werden.[7]
Zum Kauf von elektronischen Büchern mit dem Kindle ist es darüber hinaus notwendig, eine amerikanische Adresse und Kreditkarte von einer amerikanischen Bank anzugeben, was die Verwendung für Kunden aus anderen Ländern, die den Kindle auf eigene Kosten importieren, erschwert.
Allerdings: Man kann damit noch nicht mal PDFs anzeigen.
Leute, was soll das denn? Ich möchte mir gerne, als Softwareentwickler, auch mal diverse (natürlich frei und kostenlos verfügbare) Dokumentationen zu Programmiersprachen und sonstigen Themen auf so ein Gerät laden und lesen und auch mit anderen Leuten austauschen können.
Samstag, 27. Dezember 2008
dragongoserver, mechanize, hpricot und nokogiri
Ich habe ein Gem geschrieben, welches mechanize benutzt. Mechanize hatte früher für die HTML-Parsing Geschichten das gem hpricot benutzt, in der Version 0.9.0 wurde, das aber wohl jetzt durch nokogiri ersetzt.
Ich habe jetzt allerdings das Problem, daß, wenn jemand die neueste mechanize Version bei sich installiert, plötzlich mein Gem nicht mehr funktioniert, weil dort die Methode 'inner_html' verwendet wird, die, man ahnt es vielleicht schon, zwar von hpricot verwendet wurde, aber im neuen nokogiri anscheinend nicht mehr vorhanden ist.
Was kann man gegen solche Unverträglichkeiten "durch die Hintertür" tun, außer den Entwickler von mechanize anzuschnauzen?
Gibt es da weitere Möglichkeiten?
Eine Möglichkeit wäre ja, als Abhängigkeit, eine mechanize Version <0.9.0 anzugeben. Dann würde zwar mein Gem zunächst mal funktionieren, leider wäre man damit aber von weiteren Neuerungen/Bugfixes bei mechanize ausgeschlossen. Ebenso wäre es etwas fatal, falls irgendwann einmal diese ältere Version nicht mehr zur Verfügung steht. Zumindest könnte man aber auf diese Weise das Problem etwas hinauszögern. Diese Lösung gefällt mir aber nicht so sehr.
(1) das Problem mit der falschen Methode läßt sich wahrscheinlich relativ leicht lösen, in dem man eine entsprechende Methode aus nokogiri statt dessen einsetzt, aber mir ging es um die Problematik die außen herum damit zusammenhängt. Beispielsweise hätte ich das selbst nie bemerkt, wenn ich nicht auch das gem mechanize upgedatet hätte.
Freitag, 19. Dezember 2008
Rails Community Site
Das ist eine Seite auf denen Projekte, Gems, Personen, Jobs rund um Ruby und Rails gesammelt werden.
Mir persönlich war diese Seite noch nicht bekannt - möglicherweise gibt es die aber schon länger.
Interessant ist auch das Gem toolparade, das man sich von dort herunterladen kann und das auf dem lokalen System die verwendeten Gems und Rails-Plugins überprüft und an diese Seite eine Liste der verwendeten Gems und Plugins hochlädt, so daß daraus ausgewertet werden kann, wie oft Gems oder Plugins verwendet werden - vorausgesetzt das tun auch alle Leute auf dieser Seite.
Dragongoserver gem Erweiterungen
Das ganze kann man natürlich noch manigfaltig nach verschiedenen Sortierkriterien ausgeben lassen.
Etwa in diesem Format:
Du hast bei dragongoserver.net bisher xxx Spiele gespielt (davon xxx beendet, xx noch laufend).
Du hast xx % der Spiele gewonnen (diese Information wird aber auch beim Profil schon angezeigt)
Du hast bisher gegen xxx unterschiedliche User gespielt.
User Spiele gewonnen verloren %
---------------------------------------------------------------------------------------------------
user1 3 2 1 66.66
user2 ............................
.....................................
Go Winterturnier in Berlin
http://wiki.govb.de/index.php?title=Winterturnier_2009
Wenn ich Zeit habe, werde ich vielleicht auch daran teilnehmen.
Dienstag, 16. Dezember 2008
Informatiker Programmierer Webdesigner Stundensätze Berlin
Sein Angebot war, daß er für freie Mitarbeit sagenhafte 4,50 € / h brutto bezahlen wollte. Nein, da ist nicht das Komma verutscht, so war das Angebot.
Ich habe das natürlich erstmal abgelehnt, da das ja nur knapp über einem 1-Euro-Job wäre und für mich als Freiberufler völlig indiskutabel ist.
Mein Appell an andere Leute, die auch in diesem Bereich tätig sind: Laßt euch nicht auf solche Preise ein! Ihr seid mehr wert.
Rails Hoster
Diese Liste ist ohne Reihenfolge, Wertung oder Anspruch auf Vollständigkeit zusammengestellt. In erster Linie für mich persönlich, um eine Auswahl für zukünftige Projekte zu haben.
Kommentare und Ergängzungen sind gerne willkommen.
GPS "verschoben"?
Was geht hier vor? Ein Softwarefehler in allen beteiligten GPS-Empfängern? Ein Fehler im GPS-System an sich? Oder was sonst?
Sonntag, 14. Dezember 2008
Eiffel-Tutorials
Geocaching-Grundausstattung
- GPS-Gerät
- Cache-Beschreibungen (ausgedruckt oder auf Mobiltelfon, Handheld, Pocket-PC, ...)
- Kugelschreiber (für etwaige Berechnungen, Rätsel oder als Ersatz, falls im Cache kein Stift vorhanden)
- Taschenrechner (falls etwas zu berechnen ist)
- Schokoriegel oder Proviant, falls man unterwegs Hunger bekommt
- Getränk (hauptsächlich im Sommer)
- Taschenlampe
- Taschenmesser
- Mobiltelefon
- PMR-Funkgeräte, falls vorhanden. Entweder, wenn man zu mehreren unterwegs ist, oder für Kontakt mit anderen Geocachern in der Nähe.
- Tauschgegenstände
- ganz nette Leute nehmen auch ein leeres Ersatzlogbuch mit, das sie in den Cache legen können, wenn dort kein Log-Buch mehr vorhanden oder voll ist.
- noch mal in die Cache-Beschreibung schauen, ob Spezial-Ausrüstung benötigt wird!
- Travel-Bugs, wenn man welche hat und die für die aufzusuchenden Caches passen.
- Ersatz-Akkus oder -batterien fürs GPS-Gerät
- Erste-Hilfe Päckchen, oder zumindest ein paar Pflaster, wenn man außerhalb der Stadt unterwegs ist und sich unterwegs verletzen sollte.
- Kamera, falls man Bilder vom Cache-Fund oder unterwegs machen will.
- Kompaß, wenn das GPS-Gerät keinen richtigen (!) eingebauten Kompaß hat
- Fernglas (um nach dem nächsten Biergarten Ausschau zu halten ;-) )
- Wanderkarte oder ähnliches, falls das Gelände etwas unübersichtlicher ist, oder wenn man sich auch dafür interessiert, was es sonst noch so in der Gegend gibt.
- Und je nachdem, wo man unterwegs ist, vielleicht auch festes Schuhwerk, warme Kleidung, Regenschutz etc.
- Arbeitshandschuhe empfehlen manche Leute, falls man wo reingreifen muß, wo es eklig ist oder woran man sich verletzen könnte. Ich bin aber bisher auch ohne ausgekommen. Zur Not gibt's in der freien Natur auch diverse abgebrochene Zweige, die man als Hilfsmittel verwenden kann.
Tasche für Geocaching-Ausrüstung
Samstag, 13. Dezember 2008
Einführung in git
Ein Einführung in git für absolute Anfänger ist unter http://www.ruby-mine.de/2008/1/7/eine-kurze-einfuhrung-in-git
zu finden. Für mich war das ganz nützlich, da ich mich zwar mit Subversion und andern Programmen zur Versionskontrolle auskenne, aber mit git angesichts der überwältigenden Anzahl an Kommandos, die man auf manchen Seiten findet, erst mal etwas abgeschreckt wurde.
Und dann gibt es außerdem noch dies unter unter http://www.kernel.org/pub/software/scm/git/docs/everyday.html
Go-Spielen bei Dragongoserver.net
Das alleine wäre nun noch nicht weiter schlimm, das kann ich relativ einfach wieder einholen und den früheren Rang wieder etablieren.
Was mich viel mehr nervt ist folgendes: Dadurch, daß ich einen niedrigen Rang habe, bekomme ich bei Spielen, die ich im Warteraum anbiete und Vorgaben von 0 - max. 9 als Grenzen setze, natürlich hauptsächlich Gegner, die auch einen ziemlich niedrigen Rang haben. Unter diesen scheint es wieder, insbesondere, wenn diese noch ziemlich wenige Spiel dort zuende gespielt haben, recht häufig der Fall zu sein, daß sie ein Spiel (mit mir) beginnen und dann einfach nicht mehr setzen und sich nicht mehr blicken lassen. Unmöglich, so ein Verhalten.
Die zweite Art von Aufreger-Spielern sind folgende: Bei Dragongoserver ist die Standard-Bedenkzeit für jeden Spieler 90 Tage. Viele Spieler ändern diese lange Bedenkzeit nicht, aber ich stelle immer eine Zeit von zum Beispiel 15 Tagen ein, damit man einigermaßen flott spielt und ein Spiel sich nicht Monate hinzieht, falls jeder seine Bedenkzeit voll ausnutzt. Vielen von meinen derzeitigen Spielpartnern scheint überhaupt nicht bewußt zu sein, daß sie sich etwas ranhalten müssen, falls sie nicht am Ende durch Timeout verlieren wollen. Ich möchte wetten, 60 % meiner Gegner werden auf diese Weise verlieren. Leuten, die einen höheren Rang haben, weil sie schon länger bei Dragongoserver spielen, achten da wahrscheinlich mehr darauf (aber diese habe ich noch nicht als Gegner).
Naja, ich hoffe, daß ich die Leute aus diesem Bereich bald hinter mir lassen kann, da ich meinen Wunschpartner immer so einstelle, daß sich Vorgabesteine von 0 - 9 ergeben.
Ach ja, falls jemand dort vielleicht gegen mich spielen möchte: www.dragongoserver.net. Meine Kennung dort ist 'thopre'.
Freitag, 12. Dezember 2008
Rails Hoster/Sponsor gesucht
Ein Hinweis auf die Firma in Form eines eingeblendeten Logos und Name ist natürlich selbstverständlich (so in der Art wie bei www.dragongoserver.net).
Es handelt sich um eine relativ einfache Anwendung mit ziemlich wenig Traffic. Nähere Details per Email (thopre@gmail.com).
(1) Erst mal. Falls wir über die Basisfunktionen hinaus noch Möglichkeiten herausfinden, damit Millionen zu verdienen, bin ich dafür natürlich auch aufgeschlossen.
Dragongoserver Gem
require 'rubygems'
require 'dragongoserver'
require 'gorank'
dgs = Dgs.new
# get own user id at DGS
id = dgs.userid
puts "your user-id: #{id}"
# your rank
rank = dgs.get_rank
puts "your rank:"
p rank.to_s
# your user infos
infos = dgs.userinfo(id)
puts "your attributes at DGS:"
p infos
# waiting games
wg = dgs.waiting_games
puts 'waiting games:'
p wg
# you can get info for every other user
# user with user id 8000
user_8000 = dgs.userinfo(8000)
puts "user 8000:"
p user_8000
# see also the homepage of this gem for examples to use the
# command line script 'dgs'
Donnerstag, 11. Dezember 2008
Meine Ruby-Projekte
- Dragongoserver command line interface Ich spiele sehr gerne Go. Ich spiele auch im Internet auf www.Dragongoserver.net. Dafür wollte ich mir ein Skript erstellen, das mir anzeigt, wenn ich in irgendeinem Spiel am Zuge bin. Das war die erste Idee und ich nutze dies dafür auch fast täglich. Darüber hinaus stellt das Gem auch noch andere Methoden für diesen Go-Server zur Verfügung, die auch in beliebigen anderen Programmen verwendet werden können. Falls es jemand in dieser Richtung verwendet, würde ich mich freuen, wenn du mir es mitteilst.
- Go-Game Ranking Dieses Gem stellt im Wesentlichen eigentlich nur eine Klasse zur Verfügung, die einen Go-Rang darstellen kann. Dieses Gem verwende ich auch selbst im dragongoserver Gem. Es kann aber in jeder Anwendung verwendet werden, die irgendwie mit Go-Rängen zu tun hat.
- OpenGeoDB Access with Ruby Einige Methoden, um mit der OpenGeoDB (frei erhältlich) von Ruby aus zu arbeiten. Beispielsweise Entfernungsberechung zwischen zwei Postleitzeitzahlen und ähnliches.
- Photos to multiple stock photo sites Diese Gem ist für Photographen gedacht, die ihre Photos bei einer oder mehreren Sites zum Verkauf anbieten. Es ermöglicht automatisches Hochladen aller neuen Photos, Verarbeiten von Stichworten, Statistiken, etc. Derzeit arbeitet das Programm mit folgenden Sites zusammen: fotolia, zoonar, photocase, dreamstime, bigstockphoto und panthermedia.
- rcrossword Dieses Gem ermöglicht das automatische Erstellen von Kreuzworträtseln. Dieses Projekt ist noch in einem recht frühen Stadium und eher als Fun-Projekt gedacht. Ich suche noch Leute, die gerne daran mitarbeiten möchten. Es gibt noch einiges zu tun.
- roo - parse spreadsheets with Ruby Roo kann auf verschiedene Arten von Spreadsheets (Openoffice, Excel xls und xlsx und Google Spreadsheets) zugreifen.
- Ruby Resume Dieses war mein erstes Gem, das ich bei Rubyforge veröffentlicht habe. Man damit ein Profil von sich selbst erstellen, das gerne bei selbständigen Softwareentwicklern verwendet wird, um bisherige Kenntnisse und Projekte zusammenzustellen. Als Ausgabe kann einfacher Text, HTML oder PDF erzeugt werden. Desweiteren kann es auch verwendet werden, um Mitarbeiter der gleichen Firma bei jemandem vorzustellen. Die Ausgabe ist dann mehr auf die Firma ausgerichtet als auf eine einzelne Person - das Prinzip ist aber das gleiche. Als Schmankerl (was sich aber auch anbietet), werden Kenntnisse (z.B. Oracle-Datenbank) über alle Projekte summiert, so daß am Schluß z. B. 5 Jahre Oracle-Erfahrung aufgelistet wird. So etwas wird bei den Firmen immer begrüßt (also die Summierung und nicht Oracle an sich).
Bei Fragen, Problemen, Anregungen zu obigen Gems bitte Email an thopre@gmail.com oder auf den jeweiligen Projektseiten bei Rubyforge.
Bug Labs - Open Source Hardware
Einen Basis-Baustein, der ein Linux-System und diverses Schnittstellen nach außen hin besitzt.
Daran kann man dann verschiedene weitere Hardware anstecken. Beispielsweise einen Touch-Screen, eine Kamera, ein GPS-Modul und so weiter.
Das ganze kann dann selbst programmiert werden (momentan sagen sie, mit Java, aber hoffentlich auch mit anderen Programmiersprachen).
Ich denke, ich werde mir sowas bestellen. Ach ja, mit bestellen sieht es zur Zeit für Leute aus Europa noch schlecht aus, da die Herstellerfirma in USA nur inländische Bestellungen abwickelt. Sie schreiben aber, daß sie daran noch arbeiten. Andererseits gibt es ja vielleicht auch noch andere Möglichkeiten, um dran zu kommen.
Hat jemand vielleicht Lust, gemeinsame Projekt damit zu entwickeln? Auch mit kommerzieller Vermarktungsabsicht? Ich denke, da könnte man schöne Sachen machen.
Ein Anwendung, die mir sofort in den Sinn kommen würde, wäre ein Gerät für Geocacher, bei dem man die Beschreibung des Caches herunterladen und mitnehmen kann und zusätzlich ein GPS-Modul zum Auffinden eines Caches. Falls von unterwegs eine Internetverbindung möglich ist, könnte man auch gleich den Fund loggen.
Ein weiterer Artikel darüber ist bei www.linux.com erschienen.
Herstellerfirma: www.buglabs.net
Golem.de Artikel
Sharkproject

Jährlich kommen ca. 5 - 10 Menschen durch Haie ums Leben.
Jährlich kommen ca. 200.000.000 Haie durch Menschen ums Leben.
Tu was dagegen, daß diese einzigartigen Tiere, die bereits seit Millionen von Jahren auf diesem Planeten existieren, nicht letztlich durch den Menschen ausgerottet werden!
Unterstütze beispielsweise Sharkproject.com