Mittwoch, 24. August 2011

myGengo String - Internationalisierung leicht gemacht

Seit kurzem verwende ich myGengo String um Webanwendungen zu übersetzen. String hat eine schöne Oberfläche und erleichtert das Übersetzen auch im Team.


Aus Entwicklersicht fehlt leider noch ein API um neue Übersetzungen hochzuladen. Daher habe ich auf GitHub das Projekt mygengo-string-upload-ant angelegt. Damit ist es nun möglich via Ant targets direkt aus Eclipse heraus Übersetzungsdateien hoch- und runterzuladen. Das ganze funktioniert momentan nur für Java .properties Files (inkl. GWT Projekten).

Samstag, 16. Juli 2011

CSS Blockquote mit Deutschen Anführungszeichen

Beim Zitieren wird ja seit Guttenberg viel Wert auf die korrekte Zitierweise gelegt. Für die Designer und Typografen unter euch sei dazu der Wikipediaartikel zu Anführungszeichen zu empfehlen. Denn oft werden die Anführungszeichen grauenhaft falsch gesetzt.

Um das ganze im Web in Zukunft schön zu gestalten, habe ich euch ein CSS gebaut, was auch mit deutschen Anführungszeichen an der richtigen Stelle funktioniert.

Das ganze funktioniert übrigens ohne Einbettung von Bildern mit den CSS Pseudoklassen :before und :after. Hier wird allerdings das :after Element links gefloatet und das :before Element rechts gefloatet. Somit erscheint „ auch unten links und “ oben rechts angezeigt.

blockquote {
padding-left: 30px;
padding-right: 30px;
margin: 20px;
margin-bottom: 30px;
}
blockquote:after {
content: '„';
display: block;
float: left;
font-size: 700%;
margin-right: 10px;
margin-left: -50px;
margin-top: -140px;
color: #c00;
}
blockquote:before {
content: '“';
display: block;
float: right;
font-size: 700%;
margin-top: -40px;
margin-right: -50px;
color: black;
}

Das ganze funktioniert natürlich mit Zitaten jeder Länge, jedoch sollten sie mindestens bis zum Zeilenende gehen (daher auch blockquote).






Dienstag, 21. Juni 2011

PaaS Vortrag

Aus gegebenem Anlass, hier mein PaaS Vortrag aus dem Cloud Computing Hauptseminar an der Uni Stuttgart (2011), den ich auch gestern auf dem Webmontag in Stuttgart gehalten habe.

Cloud Computing - PaaS


View more presentations from Thomas Bachmann

[Update: hier noch die dazugehörige Seminararbeit]

Cloud Platforms und PaaS

Donnerstag, 19. Mai 2011

Erste Erfahrungen mit dem iPad 2

Homescreen meines iPads mit den am häufigsten verwendeten Apps
Seit 6 Wochen nutze ich nun täglich das iPad 2 (32 GB, 3G, Smart Cover) und möchte heute meine ersten Erfahrungen teilen.

Überall im Gebrauch
Vorab, ich bin begeistert - vor allem von den vielen Nutzungsmöglichkeiten wie Surfen, Musik und Radio hören, E-Mails verwalten, Chatten, News und Bücher lesen, Termine verwalten, Fernsehzeitung anschauen, Busverbindungen heraussuchen, Navigation in der Stadt als Fußgänger, Spielen, Onlinebanking, Haushaltsbuchführung, Musizieren, in Vorlesungen mitschreiben, Twittern, Tagesschau ansehen, Taschenrechner nutzen, Geocachen und testen von selbst entwickelten iOS Apps.

Mobilität
Das alles kann ich jederzeit - auch unterwegs - machen und das Meiste auch während ich durch die Straßen laufe. Ohne 3G kann ich Niemandem ein Media Tablet empfehlen, auch nicht mit W-Lan Hotspot vom Handy oder Huawei MiFi - der Comfort, das Gerät überall aufklappen zu können und sofort Internetzugang zu haben, ist einfach toll.

Meinen iPod Touch der zweiten Generation lasse ich mittlerweile zu Hause und nutze ihn nur noch zum Entwickeln von iOS Apps. Ich höre unterwegs nur noch über das iPad 2 Musik. Dabei trage ich es wie ein Buch in der Hand und sobald ich irgendwo warten muss, oder manchmal auch im Gehen, lese ich News oder andere interessante Artikel. Mein Notebook verwende ich fast nur noch zum Photoshoppen, Programmieren, Fernsehen oder Schreiben von längeren Blogartikeln oder Seminararbeiten. Mein Smartphone wird auch nur noch zum Telefonieren und selten noch für einen Blick auf den Kalender oder die E-Mails genutzt.

Häufig verwendete Apps
Am häufigsten verwende ich Safari um meine News zu lesen, Flipboard um Facebook und Twitter Nachrichten zu lesen, Instapaper um mir für später markierte Artikel durchzulesen und DB Navigator um Busverbindungen rauszuschen. Die Siedler spiele ich nur selten, wenn dann aber meist 3-4 Stunden am Stück - Suchtfaktor!

Apples Apps und andere Probleme
Die Apps von Apple finde ich zum Großteil (bis auf Karten, GarageBand, iMovie und iPhoto) ziemlich durchschnittlich. Pages kann nicht ordentlich mit meinen Office Mac Dokumenten umgehen (starke Tippverzögerung), aus Mail heraus kann man keine Anhänge versenden, die Usability von Kalender im Vergleich zur Google Calendar Website ist schlecht, Safari kann nur neun Tabs anzeigen und überschreibt beim Öffnen des zehnten Tabs irgendeinen anderen Tab - ohne Möglichkeit wieder zurückzukommen, der App Store und iTunes sind ziemlich lahm und iBooks als PDF Betrachter taugt auch nix für größere PDFs.

Was mich allerdings am meisten stört, ist, dass die Tastatur keine Cursortasten besitzt. Das macht das korrigieren von Tippfehlern erheblich aufwendiger. Über die Möglichkeit, dass man mit etwas Übung blind tippen kann, bin ich allerdings überrascht. Was mir auch noch fehlt sind Widgets auf dem Homescreen um zum Beispiel alle heutigen Kalendereinträge anzuzeigen.

Freitag, 22. April 2011

Earth Day

Heute ist Earth Day - eine weltweite Aktion zum Schutz unserer Umwelt.

Dazu ging es für uns raus ins Grüne und wir haben unsere Umwelt mal genauer unter die Lupe genommen. Entstanden sind einige Fotos - auch von den ganz kleinen Attraktionen unserer Umwelt, wie dem lustigen Hüpf-Tierchen im Bild links ;)

Der Earth Day wurde im Jahr 1970 als spontane Studentenbewegung in den USA ins Leben gerufen. Seitdem ist der 22. April weltweit begangener Earth Day. (Quelle: www.earthday.de/idee)

Samstag, 26. März 2011

PayPal in die eigene Webseite integrieren


PayPal ist ein Finanzdienstleister im Internet, der auch Betreibern von Webseiten gängige Online-Zahlungsmöglichkeiten wie Kreditkartenzahlung oder Bankeinzug anbietet. In den letzten Wochen habe ich mich mit dem Produkt "PayPal Website Payments Standard" auseinandergesetzt, da dies keine PCI-DSS Erfüllung verlangt (Sicherheitsstandard der Kreditkartenindustrie).

Zum Einrichten eines solchen Systems benötigt man einen PayPal Geschäftskonto. Hat man dieses erstellt und verifiziert kann man sich einen PayPal Button unter "Mein Profil", "mehr ...", "Verkäufer/Händler", "PayPal Buttons" erstellen.

Um das System aber erstmal zu testen und nicht gleich echtes Geld zu transfieren, sollte man sich bei der PayPal Sandbox registrieren. Innerhalb dieser Sandbox kann man dann weitere Privat- und Geschäftskonten erstellen. Legt man sich z.B. ein Privatkonto an, kann man mit diesem seine Testbestellungen bezahlen. Mit einem entsprechendem Geschäftskonto kann man sich einen PayPal Test Button zum Testen einrichten.

Hat man sich also in der Sandbox mit dem Geschäftskonto einen Button angelegt und in seine Webseite eingebaut, kann man mit dem Privatkonto der Sandbox bezahlen. Um die Konten innerhalb der Sandbox bei der Bezahlung zu nutzen, muss man in der Sandbox eingeloggt sein.

Jetzt möchte man noch erfahren, ob eine Bezahlung erfolgreich war. Dazu verwendet man die IPN (Instant Payment Notification) Schnittstelle. Bei der Buttonkonfiguration kann man eine "notify_url" angeben, diese fungiert als Callback. PayPal ruft bei jeder Transaktion oder Statusänderung diese URL auf und gibt eine Menge an Parmetern mit. Jetzt muss man diese gleichen Parameter wieder an PayPal zurücksenden und bekommt dann eine Erfolgs- oder Misserfolgsmeldung. Mehr dazu ist in der Dokumentation beschrieben und Beispielcode gibt es auch. Zu beachten ist, dass im Beispielcode die regulare PayPal URL enthalten ist und nicht die Sandbox URL (https://www.sandbox.paypal.com/cgi-bin/webscr).

Will man die Zahlungsbestätigungen, die über IPN kommen, seinen Kunden zuordnen, kann man die versteckten Inputfelder "custom" (z.B. als Kundennummer) und "invoice" (z.B. als Bestellnummer) in seinem PayPal Button verwenden. Die Inhalte werden dann beim Aufruf der "notify_url" von PayPal mitgeliefert.

Website Payment Standard erlaubt es Kunden sowohl via PayPal-Konto zu zahlen oder ohne PayPal-Konto per Kreditkarte oder Bankeinzug. Allerdings ist die Option zum Zahlen per Kreditkarte oder Bankkonto (also ohne PayPal-Konto) relativ versteckt. Klickt man auf den etwas versteckten Link, kommt man auf eine Seite die links ein Formular zum Bezahlen ohne PayPal-Konto anbietet und rechts ein Login-Formular für PayPal Kunden. Mit dem Produkt Express Checkout kann man auch direkt auf diese zweite Seite verlinken. Dazu muss man den Parameter "&LANDINGPAGE=Billing" an die Variable "nvpstr" in der Datei "paypalfunctions.xxx" anfügen.

Das Setup mit Express Checkout ist wesentlich komplexer, bietet allerdings wesentlich mehr Einstellmöglichkeiten. Leider ist der Java-Beispiel-Code von PayPal ist höchst fehlerhaft. Eventuell lohnt hier ein Blick in das PayPal SDK.

Einfach ist die PayPal Integration keineswegs, die hinzukommende Produktvielfalt macht die Wahl zusätzlich ungemein schwer. Ein klares und einheitliches (PayPal Deutschland vs. PayPal USA) Produktportfolio würde schon viel helfen.

Dienstag, 22. März 2011

iPad 2 - Welches und warum? [Update]



Bei der Kaufentscheidung zum iPad 2 stellen sich mir/uns folgende Fragen:
  • Anwendungsgebiete und -orte:
    • E-Mails lesen und schreiben (Frühstückstisch, Bett)
    • Nachrichten lesen (Frühstückstisch, Bett, Garten)
    • Notizbuch/Gesprächsnotizen/Mindmaps (Webmontag, Uni)
    • Digitalisieren von Tafelbildern/Flipcharts (Uni, Besprechungen)
    • Kalender anschauen und bearbeiten (Frühstückstisch)
    • Surfen (Sofa, Garten)
    • Spielen/Lernspiele (Sofa, Garten)
    • Kochrezepte/Cocktailrezepte anzeigen (Kühlschrank)
    • PDF/E-Books lesen (Zug, Sofa, Garten)
    • Zeichen/Malen (Zug, Sofa, Garten, Schreibtisch)
    • Digitaler Bilderrahmen (Sofa, Küche, zu Besuch)
    • Webradio hören (Küche)
    • Videos/Videopodcasts anschauen (Bett, Zug, Sofa, allein in der Küche)
    • Videotelefonie (zu Hause)
  • Konkurrenzprodukte:
    • Motorola Xoom - noch nicht draußen
    • Samsung Galaxy Tab - 10" Modell noch nicht draußen
    • WeTab - kein Media Tablet sondern Tablet PC, macht weniger Spaß
Konflikte mit Nutzung von Handy, Notebook und MP3-Player
  • Handy weiterhin für:
    • Telefonieren
    • alles was man im Laufen tun kann (SMS, E-Mail, News, Maps, Kalender)
    • alles wo man nicht auffallen will (unterm Tisch versteckt)
  • Notebook weiterhin für:
    • Programmieren
    • größere Texte schreiben
    • Bildbearbeitung
    • Surfen wenn man sowieso am Notebook sitzt
    • Filme / TV schauen
    • Buchhaltung
    • Online Videothek (z.B. ZDF Mediathek) nutzen
  • MP3-Player (iPod Touch) weiterhin für:
    • Musik hören unterwegs im Laufen
    • Podcasts hören unterwegs im Laufen
    • kleine Spiele unterwegs spielen
Es soll also ein iPad 2 sein, aber welches Modell?
  • 3G, GPS und WiFi statt nur WiFi :
    • pro
      • 3G für Zug, Meetings
      • News (RSS) unterwegs lesen (und als gelesen markieren)
    • kontra
      • kaum Einsatz von GPS (kein Auto, Gerät für Stadtnavigation zu Fuß zu groß)
      • meiste Zeit der Nutzung daheim
      • extra Simkarte mit Vertrag (200-500 MB Traffic ca. 8 Euro pro Monat)
      • im Ausland nochmal extra Simkarte nötig wegen teuren Roaming-Gebühren
      • 120 Euro teurer
      • für Ausnahmen ist Handy als WLAN-Hotspot eine Alternative
      • oder die 120 Euro investieren in Huawei E5 (Tragbarer UMTS/WLAN-Router)
  • 32 GB statt 16 GB:
    • pro
      • mehr Platz für Videos (Videopodcasts, selbstgedrehte Filme) und Musik
    • kontra
      • 100 Euro teurer
Kosten der einzelnen iPad 2 Ausstattungen
iPad 2 VersionPreis (Euro)inkl. Zubehör (Euro)
16 GB WiFi480548
32 GB WiFi580648
16 GB WiFi + 3G600668
32 GB WiFi + 3G700768
Zubehör: VGA-Adapter (29 Euro) und das Smart Cover (39 Euro).

Mit einer 8 Euro Datenflat (200-500 MB) kommen bei 24 Monaten Laufzeit noch 217 Euro (inkl. 25 Euro Anschlussgebühr) hinzu.

Also wird es wohl das 32 GB WiFi Modell in schwarz mit grünem Smart Cover und VGA-Adapter. Oder?

[Update: Es ist jetzt doch das 32 GB WiFi + 3G Modell geworden, allerdings ist die Lieferzeit auf 2-3 Wochen angesetzt ;(]

Sonntag, 20. März 2011

Projektmanagement in der Cloud


Für ein Studienprojekt an der Uni Stuttgart war ich auf der Suche nach einem Projektmanagement-Tool für Softwareprojekte. Die Anforderungen waren:
  • Aufgabenverwaltung (Meilensteine, Aufgaben/Arbeitspakete, Gantt-Chart, Zuordnung von verantwortlichen Personen)
  • Zeiterfassung (pro Aufgabe und Person)
  • integrierte Dokumentationsmöglichkeit (Wiki)
  • bevorzugt mit integriertem Bug-Tracker
  • Software as a Service oder sehr einfaches Self-Hosting
  • kostenlos oder sehr günstig
Ich bin relativ schnell auf folgende Anbieter/Produkte gestoßen und habe sie ausprobiert:
  • PHProjekt - schlechte User Experience, Self-Hosting
  • TeamLab - erfüllt nicht alle Anforderungen, SaaS oder Self-Hosting
  • Jira - perfekt auf Softwareentwicklung abgestimmt, SaaS oder Self-Hosting
  • Teambox - sehr ähnlich zu TeamLab aber schneller, SaaS
  • Basecamp / freedcamp - erfüllt bei weitem nicht alle Anforderungen, SaaS
  • Trac / redmine - erfüllt bei weitem nicht alle Anforderungen, Self-Hosting
Da wir allerdings kein Budget und keine großen Server-Ressourcen hatten, fielen Jira (kostet Geld und benötigt Hosting) und PHProject (benötigt Hosting) weg. Trac wird zwar an der Uni als Dienst angeboten, aber das Wiki und die Aufgabenverwaltung ist hier kaum zu gebrauchen und es gibt keine Zeiterfassung.

TeamLab ist leider ab und zu recht langsam, es gibt keine Gantt-Charts, die Aufgabenzuordnung ist nur an eine Person möglich und demnach auch die Zeiterfassung pro Aufgabe nur für eine Person möglich.

Teambox hingegen ist recht flott, bietet Gantt-Charts und wesentlich bessere Terminplanung als TeamLab, aber auch hier ist jede Aufgabe nur einer Person zuordenbar und das wirkt sich auch wieder auf die Zeiterfassung aus.

PHProjekt hätte unsere Anforderungen erfüllt, allerdings ist es nicht allzu leicht zu bedienen und benötigt einen Webserver mit PHP Interpreter und MySQL Datenbank.

Jira hätte auch alle unsere Anforderungen erfüllt und wäre eindeutig von den Funktionen her der Favorit, aber benötigt leider eine noch komplexere Hosting-Umgebung (JEE).