Mittwoch, 31. Dezember 2008

Analyse-Werkzeuge für Ruby Code

Hier gibt es eine Beschreibung von nützlichen Tools zum Analysieren von Ruby-Sourcecode und Auffinden möglicher Schwachstellen - nicht sicherheitstechnisch sondern im Sinne von unnötigen Code-Wiederholungen und ähnlichen Sachen.

Montag, 29. Dezember 2008

Unit Tests mit Forth

Es gibt das also auch für Forth. Siehe http://www.falvotech.com/blog/index.php?/archives/314-A-New-Forth-Unit-Testing-DSL.html.

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

Eigentlich ja keine schlechte Idee für ein Gerät, allerdings so wie man sich das zur Zeit vorstellt, wohl ziemlich indiskutabel.

Zitat aus der deutschen Wikipedia:

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.

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.

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 stehe gerade vor folgendem Problem (1), bei dem ich gern Meinungen gehört hätte, wie man solche Situationen vielleicht vermeiden könnte (falls überhaupt möglich).

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

Folgende Seite habe ich heute entdeckt: http://www.workingwithrails.com/home.
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

Folgendes würde ich bei meinem dragongoserver Gem noch gerne realisieren: Es wäre schön, eine Übersicht über alle meine bisherigen Spiele zu haben. Aufgeteilt nach den Spielpartnern, die Anzahl der Spiele mit jedem Partner, wer welche Farbe gespielt hat und wer das Spiel gewonnen hat. Ggf. noch weitere Details zu jedem Spiel.

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

Gestern hat mich jemand angeschrieben (weil ich noch auf der Suche nach Folgeprojekten bin, um meine Kapazitäten besser auszufüllen), der jemand für die Programmierung rund um einen Online-Shop mittels Joomla gesucht hat.

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

Hier mal eine Zusammenstellung, haupsächlich in Deutschland beheimateter, Hoster, die auch Ruby on Rails anbieten.

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"?

In einem Kommentar zu diesem Artikel berichtet Suchherby von einer seltsamen Verschiebung der Koordinaten um ca. 30 Meter nach Norden. Die auch von anderen Leuten mit anderen GPS-Empfängern berichtet wurde.

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

Statt der immer wieder gleichen, in Eiffel-Tutorials verwendeten, Klasse für Bankkonten, hier mal ein etwas anderes Beispiel.

Geocaching-Grundausstattung

Damit auch andere etwas davon haben, hier mal meine persönliche Checkliste, was ich fürs Geocaching normalerweise ganz praktisch finde:

  • 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.
Nicht unbedingt nötig, aber vielleicht ganz praktisch:
  • 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.
Wer sonst noch Ideen dazu hat, möge mir einen Kommentar schreiben!

Tasche für Geocaching-Ausrüstung

Das hier könnte für Geocaching ganz praktisch sein, falls man keinen Rucksack oder ähnliches mitnehmen möchte.

Oder so etwas (nicht ganz so teuer)

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

Ach ja. Da ich in der letzten Zeit nicht bei Dragongoserver.net Go spielen konnte, ist mein Rang dort ziemlich abgesunken (weil viele laufende Spiele von mir wegen Timeout verloren wurden).

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

Für eine non-profit (1) Rails-Applikation aus dem Bereich Go-Spiel suche ich eine zuverlässige Firma, die die Applikation auf ihren Servern anbieten möchten.

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

# some example how you can use this gem within your programs

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'

The Techcrunch Web Tablet Project

Das sieht interessant aus, mal sehen, was daraus wird.

Donnerstag, 11. Dezember 2008

Meine Ruby-Projekte

Mittlerweile sind eine ganze Reihe von selbstentwickelten Ruby Gems von mir zusammengekommen:

  • 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

Über folgende, wirkliche interessante, Produkte bin ich die Tage gestolpert. Es gibt ein System, das in der Art von Lego-Bausteinen verschiedene elektronische Komponenten miteinander verbindet.

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