Archive

Archive for the ‘IT’ Category

Quellcodeverwaltung mit Git

June 24th, 2010 Jan H. Krueger No comments

Es hat sich mal wieder was an Insulae getan, wenn auch nichts am Spiel als solches. Ich bin nun mit dem gesamten Quellcode auf ein neues Repository gezogen. Nachdem ich mehrere mir angeschaut habe, fiel die Wahl schließlich auf ein Git-Repository. Hier begann nun die lange Suche. Repositories welche auch Git anbieten, gibt es mittlerweile jede Menge.

Unter anderem auch Google Code. Das gesamte Handling dort ist wie bei Google gewohnt einfach und problemlos. Bisher einziges Manko und in meinen Augen auch das Größte: Es gibt keine privaten Repositories. Bedeutet: Jeder kann auf den Quellcode zu jederzeit zugreifen. An sich habe ich da zwar nichts dagegen, aber erst wenn ich der Meinung bin das der Code veröffentlicht werden kann. Also, nix mit Google Code.

Nächster Versuch: Github. Selbes Spiel, primär sind die Repositories public. Steht ja auch drüber, Social Coding. Preisliche Dimension waren so in etwa 7$ pro Monat. An sich ok, aber nur ein 1 Private Collaborator. Also nix mit mal schnell einem Kollegen zeigen. Die weiteren Anbieter lasse ich mal aus, die Gründe für oder dagegen sind eh zum Teil sehr subjektiv.

Am Ende bin ich bei codebasehq.com gelandet. Einfache Einrichtung, private Repositories, mehr wie ein User und die Kosten sind mit €6.08 pro Monat auch annehmbar. Eingerichtet, Projekte und Repositories angelegt, public ssh-key hinterlegt und los ging es. Die Projektstruktur hatte ich die Tage bereits auf Vordermann gebracht. Erstaunlich was sich im Laufe der Zeit so alles ansammelt… Der Initialimport hat demzufolge auch gleich lange gedauert (für meinen Geschmack). Realistisch betrachtet ist die Masse jedoch die Datenbank und die vielen Bilder. Und dort ist kein signifikanter Anstieg zu sehen.

Nun muss ich mir auch keine großen Gedanken um die Sicherung machen, der aktuelle Entwicklungsstand ist ja ab sofort stehts online im Repository.

Insulae – automatisiertes Veroeffentlichen in Sozialen Netzwerken

May 30th, 2010 Jan H. Krueger No comments

Um alle Interessenten stets schnell und einfach ueber Neuerungen in Insulae informieren zu koennen, habe ich ein wenig rumprobiert und nun die erste Version der Netzwerkanbindung fuer Insulae fertig gestellt.
Konkret: mittels eines neu erstellten Formulares koennen Ankuendigung und News bequem zentral erfasst werden. Daraufhin wird die Ankuendigung aktuell an fuenf Orte eingestellt:

  • News-Seite in Insulae
  • Insulae-Forum
  • dieses Blog
  • Twitter
  • Google Buzz

Als naechsten Schritt werde ich versuchen mich mit der API zu Facebook auseinander zu setzen um auch hier einen direkten Zugang per Skript zu erlangen. Infoquellen per RSS-Feeds ergeben sich aus den genannten Quellen ebenfalls.

Dabei ist die Anbindung an die eigene News-Seite und ins Forum trivial, da Eigenentwicklungen. Daher werde ich hier auch nicht weiter darauf eingehen.

Die Twitter-API ist dankenswerterweise simpel wie es nur sein kann.

#!/usr/bin/python
 
import os
import twitter
 
E = sys.exit
 
##############################
# Send message to Twitter
##############################
 
try:
    # API initialisieren
    client = twitter.Api()
 
    # Authentifizieren
    client = twitter.Api(username='twitterusername', password='twitterpassword')
 
    # Nachricht an Twitter senden
    update = client.PostUpdate(message)
except: 
    print ("Keine Anbindung an Twitter moeglich.") 
    E(8)

Schwupps, Text bei Twitter gepostet.

Fuer Google Buzz sieht es etwas schwieriger aus. Ich habe noch keine ueberzeugende API dafuer gefunden. Doch Google hat die Moeglichkeit geschaffen, auch mittels einer E-Mail an Buzz zu senden. Daher ist die Hauptaufgabe fuer Buzz eigentlich der Versand einer E-Mail.

#!/usr/bin/python
 
import smtplib
from email.MIMEMultipart import MIMEMultipart
from email.MIMEBase import MIMEBase
from email.MIMEText import MIMEText
from email import Encoders
import os, getopt, sys
 
# Hier die zu veroeffentlichende Nachricht
message = "Beispielnachricht"
 
# Google Buzz Konfiguration
gmail_user = "username@googlemail.com"
gmail_pwd  = "password"
 
# Ab hier nichts mehr veraendern
 
# Derzeit verarbeitet Google Buzz lediglich den Titel einer
# eingehenden Mail. Daher muss die Nachricht direkt in den
# Mailtitel geschrieben werden.
# so subject = message
subject = message
 
E = sys.exit
 
##############################
# Send message to Google Buzz
##############################
try:
    msg = MIMEMultipart()
    msg['From']    = gmail_user
    msg['To']      = "buzz@gmail.com"
    msg['Subject'] = subject
    msg.attach(MIMEText(message))
 
    smptServer = smtplib.SMTP("smtp.gmail.com", 587)
    smptServer.ehlo()
    smptServer.starttls()
    smptServer.ehlo()
    smptServer.login(gmail_user, gmail_pwd)
    smptServer.sendmail(gmail_user, to, msg.as_string())
    smptServer.close()
except: 
    print ("Kein Versand an Google Buzz moeglich") 
    E(8)

Grosser Dank fuer diesen Teil geht dabei an samof76 von Megam: Cloud Buzz. Dort habe ich die Basis fuer den Mailversand her.

Der Einfachheit halber habe ich hier in den Beispielen zwei separate Skripte vorgestellt. Fuer Insulae sind die entsprechenden Schritte im Portal zentral eingebettet.

Warum der Aufwand? Um schnell und einfach in verschiedenen Kanaelen Informationen ueber Insulae zu verbreiten. In meinen Augen ist es in der heutigen Zeit notwendig, die zur Verfuegung stehen Mittel auch vollstaendig zu nutzen. Je breiter die Informationsbasis, umso mehr potentielle Spieler lassen sich finden. Je mehr Informationskanaele genutzt werden, umso geringer die Wahrscheinlichkeit einen potentiellen Spieler nicht zu erreichen. Daher gilt ein meinen Augen: Der Spieler sucht sich den Informationskanal, der ihm gefaellt. Gerade Browsergames bei denen keine grosse Entwicklungsfirma im Hintergrund steht, koennen sich in meinen Augen nicht erlauben, Spielern zu diktieren welchen Kanal sie zu nutzen haben, erst recht wenn sie erst noch Spieler werden sollen. Gar nichts zu veroeffentlichen ist inakzeptabel.

Wenn wie oben bereits angesprochen auch Facebook in mein Portal integriert ist, habe ich denke ich eine gute bis sehr gute Abdeckung von Informationskanaelen die ich mit Infos bestuecke. Dabei gilt: je mehr, umso besser. Aber nur relevante Informationen! Zu wenig, und Spieler koennen den Eindruck gewinnen das ein Projekt eingeschlafen ist. Zu viele, und wichtige Infos koennen unter der Masse verloren gehen.

Daher: Spread the word!

Interessant waere es eventuell auch, Google Wave anzusprechen. Doch derzeit bin ich vom insgesamten Nutzen von Wave nicht ueberzeugt, daher steht dieses Kanal auch noch sehr weit hinten an. Ob, ausser Facebook und eventuelle Google Wave, noch andere Kanaele angebunden werden… das kann ich zum aktuellen Zeitpunkt noch nicht sagen. Ich wuensche mir allerdings, das die verbliebenen deutschen Browsergame-Portale entsprechende Schnittstellen anbieten wuerden damit auch diese in einem Schritt gefuettern werden koennen. Aber dies wird wohl niemals passieren.

Nebenbei: die Suchmaschinen werden mittels Ping-Dienste aus dem Blog bereits darauf hingewiesen das es neues futter fuer sie gibt welches sie konsumieren koennen. Also auch dieser Teil erfolgreich abgedeckt.

Google Webfonts

May 29th, 2010 Jan H. Krueger No comments

Bereits vor einiger Zeit hat Google begonnen für Webentwickler etwas sehr praktisches zu veröffentlichen. Die Möglichkeit mittels CSS weitere Schriftarten einzubinden. Das Ganze nennt sich Google font directory, die Bedienung ist so simpel wie es nur möglich ist:

Für jeden einzubindenden Font gibt es ein externes Style Sheet welches auf gewohnte CSS-Weise eingebunden wird:

<link rel="stylesheet" type="text/css" href="http://fonts.googleapis.com/css?family=Tangerine">

Danach kann die Schriftart mittels CSS angegeben werden:

font-family: 'Tangerine', serif;

Das war’s.

Zwar mag das aktuelle Angebot mit 19 Schriftarten noch etwas gering anmuten, doch so wie ich Google einschätze, wird dies nur eine Frage der Zeit sein bis wir hier weitere Schriftarten nutzen können.

Warum erwähne ich dies hier? Nun, mittels der von Google bereit gestellten Mittel ist es für mich als Entwickler möglich andere Schriftarten zu verwenden mit der Gewissheit das diese auf den unterschiedlichsten Clients auch korrekt angezeigt werden.
Interessant wird dies dann, wenn man wie in Insulae und Scherbenwelten in den Foren auch Bereiche eingerichtet hat in denen Rollenspiel betrieben wird. Konkret: Spieler können Texte in Schriftarten ihrer Wahl verfassen, umso ihr Rollenspiel noch weiter zu unterstreichen. Und alle anderen sehen dann den Beitrag so wie er eingestellt wurde.

Entsprechendes wurde in Scherbenwelten auch bereits vorgeschlagen. Ich wage zwar zu behaupten das ein solches, auch nachdem ich eine mögliche Lösung mittels Google-Mitteln vorschlug.
Bei einer der nächsten Überarbeitungen des Forums in Insulae werde ich das Potential von Google Webfonts mit beachten und entsprechende Wahlmöglichkeiten für die Spieler einbauen.
Denkbar ist auch, den Spieler mittels der Webfonts zu erlauben ihre Signaturen in den Rollenspiel-Foren zu personalisieren. Oder die Diplomatie-Nachrichten. Auf alle Fälle steckt auch viel Potential für Browsergames in den Webfonts.

Quellen: Google font directory, Scherbenwelten

Insulae – Parlez-vous … was anderes?

July 14th, 2009 Jan H. Krueger No comments

In den letzten Wochen war es etwas still um Insulae. Das liegt mitnichten daran das ich nichts getan habe, sondern eher daran das ich viel mehr Hintergrundarbeiten erledigt habe. Ein großer Teil davon ist die Lokalisierung.

Konkret bin ich an drei “Meilensteinen” dran:

  • Umstellung von Insulae auf Python mittels Django als Web-Framework
  • Entwicklung eines reinen Admin- und Moderatorenpanels zur Spielsteuerung
  • Nutzung der von Django bereitgestellten Mittel um gemäß i18N zu arbeiten

Also doch schon drei große Teile. Im Adminpanel ich ich derzeit am weitesten, wobei die Entwicklung hierbei Hand in Hand mit dem driten Punkt geht. Ist auch eine gute Übung bevor ich das ganze mit dem eigentlichen Spiel vorrantreibe. Die Anpassungen an die Django-Templates sind hierbei auch sehr einfach zu sehen. Zu Beginn eines Templates muss Django mitgeteilt werden das für dieses Template eine Übersetzung versucht werden soll. Schnell getan mittels folgendem Zusatz welcher in die erste Zeile kommt:

{% load i18n %}

Nun ja, und danach ist eigentlich alles genauso einfach. An jede Stelle an die ich bisher einen festen String mit einem Wort eingegeben habe, ersetze ich eine bestimmte Codezeile im Template. Will ich zum Beispiel das der auf deutsch benannte Link “Eigene Nachrichten” je nach unterstützter Sprache übersetzt wird, teile ich dies dem Template wie folgt mit

{% trans "Eigene Nachrichten" %}

Das kann ich direkt während der Erstellung eines neuen Templates angeben. So sehe ich in dieser Phase was ich an dieser Stelle bezwecken will, ohne weitere Anpassungen.

Schön und gut, aber wie kann ich nun dafür sorgen das die Zeichenkette “Eigene Nachrichten” für einen englischsprachigen Benutzer eben in Englisch angezeigt wird? Zu erst muss eine Liste mit den zu übersetzenden Texten erstellt werden. Dazu ist ein klein wenig Vorarbeit zu leisten. Im Verzeichnis meines Django-Projelktes, Insulae, habe ich einen weiteren Ordner mit dem Namen “locale” angelegt. Dies muss manuell getan werden. Die Verzeichnisstruktur sieht dann also wie folgt aus, nun nachdem ich den Ordner angelegt habe:

Verzeichnisstruktur Djangp-Projekt
Wobei das nur die Struktur auf meinem Ausweichrechner ist.

Nachdem das Verzeichnis angelegt ist, kann Django angewiesen werden alle Quelldateien zu durchsuchen und alle wie oben gekennzeichneten Strings auszugeben. Beim Aufruf von django-admin.py sind noch ein paar Parameter zu beachten. Der wichtigste ist sicherlich makemessages, welcher Django anweist überhaupt die Liste zu erzeugen. Weiterhin noch die Sprache für die die Übersetzung angelegt werden soll. Dies geschieht mittels -l [Ländercode]. Dann kann noch optional mittels des Parameters -e angegeben werden, dass nicht nur die üblichen Quelldateien analysiert werden sollen, sondern eben alle mit den angegebenen Endungen. Der Parameter -a gibt an, das ich eine bereits bestehende Liste aktualiseren will, und nicht immer wieder eine leere. Für mich sieht nun konkret der Aufruf wie folgt aus:

django-admin.py makemessages -l de -e phtml -a

bzw. für eine englische Sprachversion:

django-admin.py makemessages -l en -e phtml -a

Daraufhin entstehen neue Unterverzeichnisse in locales. Bei mir konkret habe ich dann $PROJECTPATH/locale/de/LC_MESSAGES/ Dort liegt nun eine Datei namens django.po bzw. auch für englisch ein entsprechender en-Unterordner. Diese .po-Datei ist im Grunde nur eine Textdatei in der alle Strings welche ich für eine Übersetzung vorgesehen habe enthalten sind in folgendem Format:

Deutsch:

#: .\templates\spieler.phtml.py:112
#, fuzzy
msgid "Accountdaten bearbeiten"
msgstr ""

msgid gibt den zu übersetzenden String an, msgstr den Zielstring. Wird dieser leer gelassen, wird einfach msgid ausgegeben. So brauche ich keine doppelten Nennungen vorhalten. In der .po-Datei für die englischen Seiten trage ich nun die Übersetzung ein und erhalte folgendes:
Englisch:

#: .\templates\spieler.phtml.py:112
#, fuzzy
msgid "Accountdaten bearbeiten"
msgstr "Edit Account"

Nun ist diese Vorlage noch umzusetzen. Dies wird wieder von django-admin erledigt, bis auf den ersten Parameter sind keine weiteren notwendig. Es werden grundsätzlich alle Sprachen die wie oben angelegt wurden verarbeitet.
django-admin.py compilemessages
Dies erzeugt nun in zusätzlich zu den .po-Dateien Dateien mit der Endung .mo. Nun ja, das wars. Da meine Browser hier persönlich immer deutsch, also deDE als Locale liefern, ich aber ggf. eine englische Übersetzung auch testen will, kann dies in der settings.py des Django-Projectes auch eingestellt werden. Dort trage ich ind er Regel LANGUAGE_CODE = 'de-DE' ein. Will ich jedoch die englischen Texte lesen, ändere ich dies einfach auf LANGUAGE_CODE = 'en-EN'. Fertig.

Das ist nun alles was als Basis notwendig ist. Wenn eine neue Sprache eingepflegt werden soll, kann einfach eine neue wie oben beschrieben angelegt werden und einem übersetzungswilligen Spieler / Mitarbeiter gegeben werden. Wenn diese zurückkommt, einfach mittels compilemessages bearbeiten und schon steht eine neue Sprache zur Verfügung.

Ok, war jetzt mehr ein Ausflug wie in Django i18N genutzt wird. Macht aber nichts. Für alle die Fragen, in Insulae tut soch noch was, aber eben eher im Hintergrund. Einzig eine Sache wird schon partiell genutzt. Ich habe die Datenbankgrundlagen für ein System mit mehreren Postfächern gelegt. Jeder Spieler kann prinzipiell mehrere Postkörbe zugewiesen bekommen. Dies ist erst einmal der persönliche wie er auch aus Scherbenwelten bekannt ist. Gleichzeitig bekommt auch jede Stadt einen Postkorb. Zum einen werden so die Nachrichten von Spieler und Stadt ordentlicher voneinander getrennt, gleichzeitig gehen somit auch die Nachrichten einer Stadt bei einem Besitzerwechel mit. Ich kann nun spezielle Admin- bzw. Support-Postkörbe einrichten welche der Support bzw. ich als Admin lesen und bearbeiten können ohne einen besonderten LogIn zu nutzen. Weitergehend, ein solcher Postkorb ist nun streng genommen nicht mehr Spiel-gebunden sondern kann auch über andere Dienste gefüllt werden.

Schoene neue E-Book Welt

May 29th, 2009 Jan H. Krueger No comments

*Maul*
Da finden sic mittlerweile bemerkenswert viele und auch gute Angebote fuer E-Books auch in unseren Landen, doch was fehlt? Ein anstaendiges Geraet!
Alle moeglichen Anbieter uebertrupfen sich in den letzten Wochen und Monaten damit was fuer tolle Reader sie denn auf den Markt geworfen haben oder werfen wollen. Und, wie sieht die Realitaet aus? Sehr ernuechternd. Nuechterner wie die leeren Flaschen nach einem Junggesellenabschied.

Die Parade fuehrt Amazon an. Kindle, Kindle 2… interessante Geraete. Regulaer hier in Deutschland zu erhalten? Nein. Beide nicht. Der Kindle DX, die neue Form… nada, ist noch ueberhaupt nicht auf dem Markt. Faellt aus der Betrachtung raus.

Sony ist da etwas schneller, der E-Book Reader PRS-505 ist schon etwas laenger bei Bol und Consorten erhaeltlich. Ok, 11.03.2009 um genau zu sein. Hat aber kein WLAN.

Plastic Logics hat ein sehr ansprechendes Teil entwickelt. WLAN, grosses Display… und fruehestens Anfang 2010 erhaeltlich. Ob auf dem europaeischen Markt ebenso wie auf dem US-amerikanischen ist noch nicht sicher, man geht nur davon aus. Faellt also auch raus.

Das Cybook ist hierzulande ueber den Weltbildverlag zu beziehen. Im Vergleich recht guenstig, aber bei genauerer Betrachtung wird klar warum. Geringerer integrierter Speicher (512MB), kein WLAN, GPRS oder UMTS. Also rein reines Kabelgeraet. Faellt weg.

Der BeBook ist zumindest schonmal in Deutschland erhaeltlich. Preis ok, nur USB. Also adé.

iLiad heisst ein Produkt von irextechnologies.com. Soll wohl auch hier in Deutschland bereits erhaeltlich sein, wo habe ich nicht rausgefunden. Dieser Reader hat den Vorteil, das dort auch Notizen aufgezeichnet werden koennen. Interessante Funktion. Aber sonst bietet er nichts wirklich spektakulaeres. Ahja, WLAN ist vorhanden. Aber halt, was sehen meine Augen da? Keine Unterstuetzung fuer das ePub-Format. Also ausgesondert.

Aber gibt ja noch mehr. Die Firma Foxit stellt auch einen Reader her, den eSlick. Mir kommen Bilder einer eSchnecke in den Sinn, aber egal. Ausserdem kann das Teil nur PDF und Text, alles andere muss nach PDF konvertiert werden. Und ja, kein ePub und kein WLAN. Der magere interne Speicher von 128MB mal gar nicht betrachtet.

Aus Deutschland selbst kommt der Txtr. Der macht erstmal einen interessanten Eindruck, WLAN, ePub, beides da. Habe ich schon erwaehnt das dieser Reader noch nicht auf dem Markt erhaeltlich ist? Also faellt der auch weg.

Irgendwo in den Tiefen der japanischen Welt gibt es dann noch einen Reader, ich glaube von Fujitsu, welcher schon die farbige Variante der eInk darstellen kann. Das Geraet hat sich aber noch nichtmal in Japan wirklich durchsetzen koennen. Aber die Farbe, ich denke da kann der Hersteller bereits fuer die kommende Generation der E-Book Reader Erfahrung mit sammeln.

Den Blackberry oder das iPhone betrachte ich dafuer gar nicht. Nein, da ist mir das Display eifnach zu klein.

Aber um mal klar zu schreiben, was erwarte ich von einem E-Book Reader den ich mir kaufen wuerde? Ein Display welches in der Lage ist auch Magazininhalte darzustellen. WLAN soll er haben, ich habe in der heutigen Zeit einfach keinen Bock mehr mehr als noetig so ein Kabel rein raus Spiel zu betreiben. ePub und PDF sind prima. Gerade in der Uebergangszeit bis die Masse der Verlage geschnallt hat das es auch sowas wie ePub gibt und diese auch toll aufbereitet sein koennen, ist PDF noch Pflicht. Musik… wozu? Das soll ein E-Book Reader sein, kein Multifunktionsgeraet. Den ganzen Officegedoens, Word, Excel und Powerpoint, danke, brauche ich auf so einem Geraet nicht wirklich. Dafuer gibt es andere mobile Geraete. Ich will auch keine Store-Bindung. In einem Laden kaufen, auf den Reader uebertragen, fertig. Und nicht: “In einem Laden kaufen, Store-Software starten, uebertragen, fertig.” Ach, und ich will mit so einem Geraet nicht spielen.  Ich will damit lesen. Habe ich schonmal erwaehnt das ich mit einem solchen Geraet Publikationen welche sonst nur in gedruckter Form vorliegen bequem LESEN will? Vorzugsweise Romane, aber auch fuer den Weg zur Arbeit zu Hause noch schnell geladene Textdateien um etwas schnell zu ueberfliegen. Partiell haben Haendler das ja schon erkannt und auch angefangen alte, in gedruckter Form nicht mehr erhaeltliche Werke zu veroeffentlichen. Positives Beispiel ist da in meinen Augen der Laden Fictionwise. Dort habe ich vor zwei Wochen die Bucher der Dray Prescot-Reihe von Alan Burt Aker gefunden, zu annehmbaren Preisen. Klasse, mehr von solchen vergriffenen Titeln.

Wenn dann auch noch die Verlage von Rollenspielen, wie Ulysses, Pegasus und Co. es schaffen ihre Publikationen auch in einem vernuenftigen digitalen Format rauszubringen, dann waere ich gluecklich und wuerde dankend einen E-Bookreader kaufen und mit Inhalt fuellen. Zeitungen beginnen ja nun so langsam umzustellen, aktuell ist die taz ja dabei. Das Angebot von Amazon in den Vereinigten Staaten ist klasse, aber nicht hier zu beziehen. Wenn ich mal bedenke das ich einen guten Teil des Altpapieres nicht mehr produzieren wuerde… hey, ich muesste weniger wegbringen.

Ah, und nicht zu vergessen, technische Buecher. Heute erst kam bei mir 21st Century Game Design
an. Tolles Buch. Als E-Book aber nicht schlechter. Ich fuerchte so langsam muss ich zu Hause Buecher nach Prioritaet in das Regal stellen und andere in die Abstellkammer.

Aber mit der derzeitigen Lage: Nada. Schoene neue E-Book Welt.

Quellen: AmazonBookeen, Weltbild, mybebook.com, Foxit, GolemFictionwise

Categories: Allgemein, IT Tags: , , , ,