Winnie | 29.01.2010
Der “interne” Bereich für die Mitglieder des Kölner Jugendchor St.Stephan informiert den eingeloggten Benutzer über Termine, stellt aktuelle Fotos zur Verfügung und bietet die Möglichkeit sich über andere Chormitglieder zu informieren. Zusätzlich gibt es ein Gästebuch und ein Memory-Spiel mit Highscore.
Die Seite wurde mit PHP und Datenbanken und das Spiel mit Macromedia Director realisiert. In der Administrationsoberfläche können ausgewählte Benutzer die Daten pflegen.
Die Webseite sowie der interne Bereich wurden inzwischen komplett überarbeitet und basieren in der aktuellen Version nicht mehr auf meinem Code.
www.koelner-jugendchor.de
Der "interne" Bereich für die Mitglieder des Kölner Jugendchor St.Stephan informiert den eingeloggten Benutzer über Termine, stellt aktuelle Fotos zur Verfügung und bietet die Möglichkeit sich über andere Chormitglieder zu informieren. Zusätzlich gibt es ein Gästebuch und ein Memory-Spiel mit Highscore.
Die Seite wurde mit PHP und Datenbanken und das Spiel mit Macromedia Director realisiert. In der Administrationsoberfläche können ausgewählte Benutzer die Daten pflegen.
Die Webseite sowie der interne Bereich wurden inzwischen komplett überarbeitet und basieren in der aktuellen Version nicht mehr auf meinem Code.
www.koelner-jugendchor.de
Kategorien: Webseiten | Keine Kommentare
Winnie | 17.09.2009
Vornweg: ich liebe Bücher – aber nicht das Papier, auf dem es gedruckt wird und das immer viel zu viel Platz wegnimmt. Deswegen bin ich ein großer Verfechter der Digitalisierung und langsam aber sicher bewegt sich der deutsche Bücher-Markt in diese Richtung. Immer mehr Online-Buchhändler haben eBooks im Angebot (zum Beispiel Thalia und Libri). Jetzt ist der txtr eBook-Shop als neuer Händler dazu gekommen und ich habe ihn ein wenig unter die Lupe genommen.
Mehr »
Vornweg: ich liebe Bücher - aber nicht das Papier, auf dem es gedruckt wird und das immer viel zu viel Platz wegnimmt. Deswegen bin ich ein großer Verfechter der Digitalisierung und langsam aber sicher bewegt sich der deutsche Bücher-Markt in diese Richtung. Immer mehr Online-Buchhändler haben eBooks im Angebot (zum Beispiel Thalia und Libri). Jetzt ist der txtr eBook-Shop als neuer Händler dazu gekommen und ich habe ihn ein wenig unter die Lupe genommen.
Wie ich dem Blog von txtr entnehmen konnte, hat der txtr eBook-Shop zur Zeit mehrere tausend Bücher im Angebot - unter ihnen kostenpflichtige und kostenlose, sowie deutsche und englische Titel. Die Bücher liegen im ePub-Format vor, welches seit kurzem auch von Sony-eBook-Readern unterstützt wird. Negativ ist, wie ich finde der DRM-Schutz der Bücher, mit dem die Nutzung und Verbreitung kontrolliert werden soll - auch wenn dieser nicht so restriktiv sein soll, wie zum Beispiel Apples Fairplay. Wegen dem DRM können die Bücher auch nicht über den eBook-Reader meiner Wahl Stanza auf dem iPhone gelesen werden - ein riesengroßes Manko.
Die Shop-Seite ist sehr übersichtlich und gut strukturiert. Über Kategorien kann man schön stöbern, aber auch direkt über die Suche zum Ziel kommen. Es gibt nicht, wie bei vielen anderen Shops üblich eine Blätterfunktion - alle gefundenen Bücher werden auf einer Seite angezeigt. Das ist mit Sicherheit gewöhnungsbedürftig, hat aber auch Vorteile, weil man zum Beispiel mit der Browsersuche nach bestimmten Wörtern suchen kann. Die üblichen "Sozialfeatures" bietet der Shop natürlich auch: Alle Bücher können über Sterne bewertet werden, Kommentare abgegeben werden, Links auf Twitter und Facebook gepostet werden oder einfach nur eine Empfehlung per Mail geschickt werden.
Was ich mir für die Zukunft des Shops noch wünschen würde, wäre eine Wunschliste für Bücher ála Amazon, die es auch ermöglicht Bücher zu verschenken.
Alles, was mir zu meinem papierlosen Glück jetzt noch fehlt ist der passende eBook-Reader. Da warte ich noch gespannt auf die in ungefähr einem Monat auf der Frankfurter Buchmesse stattfindenden Vorstellung des zum txtr-Shop passenden txtr-Reader. Wer bis dahin nicht warten möchte, sollte sich die E-book Reader Matrix einmal anschauen - vielleicht ist da ja das passende Gerät dabei.
Kategorien: Blog | 4 Kommentare
Winnie | 14.09.2009
Das Betriebssystem Mac OS X bietet viele hilfreiche Features, aber eins fehlt auf jeden Fall: eine automatische Erstellung eines Geburtstagskalenders auf der Basis des Adressbuchs mit Erinnerung. Ich schaue nicht jeden Tag in meinen Terminkalender und verpasse so regelmäßig die Geburtstage meiner Freunde und Verwandten. Das hat mich so geärgert, daß ich mir mit AppleScript eine Automator-Action geschrieben habe, die genau das macht – einen Geburtstagskalender mit Erinnerung erstellen.

Die Bedienung ist denkbar einfach: Du öffnest das Programm Automator und wählst in der Kategorie “iCal” (Tiger) bzw. “Kalender” (Leopard) die Action “iCalBirthdays” aus. Dann gibst du den Kalendernamen und die Uhrzeit für den Alarm ein und startest den Automator. That’s it.
Wenn du noch genauer einstellen willst, wie die Ereignisse angezeigt werden, kannst du die Alarmzeit und die Erinnerung verändern. Die Erinnerung hilft zum Beispiel, nicht zu vergessen, Geburtstagsgeschenke zu kaufen, da die Erinnerung vor dem Geburtstag liegt.
Das Anzeigeformat kannst du nach deinen persönlichen Wünschen einstellen. Dazu kannst du folgende Platzhalter verwenden:
- %lastname% – Nachname des Geburtstagskindes
- %firstname% – Vorname des Geburtstagskindes
- %yearofbirth% – Geburtsjahr des Geburtstagskindes
- %age% – Alter des Geburtstagskindes
- %birthday% – Geburtstag des Geburtstagskindes
Das Alter ist natürlich nur ein Jahr lang richtig, danach muss die Automator-Action wieder ausgeführt werden.
Hier gibts die Automator-Action zum herunterladen: http://code.google.com/p/icalbirthdays/
Mehr »
Das Betriebssystem Mac OS X bietet viele hilfreiche Features, aber eins fehlt auf jeden Fall: eine automatische Erstellung eines Geburtstagskalenders auf der Basis des Adressbuchs mit Erinnerung. Ich schaue nicht jeden Tag in meinen Terminkalender und verpasse so regelmäßig die Geburtstage meiner Freunde und Verwandten. Das hat mich so geärgert, daß ich mir mit AppleScript eine Automator-Action geschrieben habe, die genau das macht - einen Geburtstagskalender mit Erinnerung erstellen.
Die Bedienung ist denkbar einfach: Du öffnest das Programm Automator und wählst in der Kategorie "iCal" (Tiger) bzw. "Kalender" (Leopard) die Action "iCalBirthdays" aus. Dann gibst du den Kalendernamen und die Uhrzeit für den Alarm ein und startest den Automator. That's it.
Wenn du noch genauer einstellen willst, wie die Ereignisse angezeigt werden, kannst du die Alarmzeit und die Erinnerung verändern. Die Erinnerung hilft zum Beispiel, nicht zu vergessen, Geburtstagsgeschenke zu kaufen, da die Erinnerung vor dem Geburtstag liegt.
Das Anzeigeformat kannst du nach deinen persönlichen Wünschen einstellen. Dazu kannst du folgende Platzhalter verwenden:
%lastname% - Nachname des Geburtstagskindes
%firstname% - Vorname des Geburtstagskindes
%yearofbirth% - Geburtsjahr des Geburtstagskindes
%age% - Alter des Geburtstagskindes
%birthday% - Geburtstag des Geburtstagskindes
Das Alter ist natürlich nur ein Jahr lang richtig, danach muss die Automator-Action wieder ausgeführt werden.
Hier gibts die Automator-Action zum herunterladen: http://code.google.com/p/icalbirthdays/
Changelog:
1.7.1
Problem unter Snow Leopard behoben (issue 20)
1.7
Problem mit 12 AM behoben (issue 5)
Probleme mit einigen Zeitzonen behoben
Erinnerungen am Tag des Ausführens von iCalBirthdays
Titel und zweite Vornamen aus Namen entfernt
1.6
optionaler Export
neuer Ereignis-Typ: ganztägiges Ereignis oder Ereignis zur Alarmzeit
optionaler Erinnerungssound
mehr Anzeigeformate für das Ereignis
Text für das Ereignis benutzerdefinierbar
alternativer Text für Erinnerung hinzugefügt
Kuchen-Icon für die Automator-Action
1.5
Benutzerdefinierbares Format der Kalendereinträge hinzugefügt
Anzeige des Alters im Geburtstag-Event entfernt bzw. durch Geburtsjahr ersetzt
1.4
Lokalisierung für Deutsch hinzugefügt
Anzeige des Alters im Geburtstag-Event hinzugefügt
1.3
Änderungen am Export des Kalenders für Leopard
Additional Alert wird als Alarm zum Geburtstag-Event hinzugefügt (anstatt einen eigenen Event zu erstellen)
Option zur Auswahl des Alarm hinzugefügt
1.2
Fehler in Tiger behoben
1.1
Leopoard ready
Option für zusätzlichen Alarm (Additional Alert) hinzugefügt
1.0
Kategorien: Automator-Actions, iCalBirthdays, Referenzen | 100 Kommentare
Winnie | 05.10.2008
Wie schon erwähnt, bin ich auf der Suche nach der perfekten Lösung, meine Googlemail-E-Mails zu sichern. Und ich denke ich habe sie gefunden: ein Ruby-Script, das die Synchronisation zwischen meinem Googlemail-Account und einem zweiten IMAP-Account übernimmt. Synchronisation ist dabei vielleicht das falsche Wort, es ist eher ein Backup, was den zweiten IMAP-Account auf dem gleichen Stand wie den Googlemail-Account hält.
Die Basis für das Script kommt von Ryan Grove. Ich habe das Löschen von Nachrichten und die Ordner-Auflistung hinzugefügt.
Mehr »
Wie schon erwähnt, bin ich auf der Suche nach der perfekten Lösung, meine Googlemail-E-Mails zu sichern. Und ich denke ich habe sie gefunden: ein Ruby-Script, das die Synchronisation zwischen meinem Googlemail-Account und einem zweiten IMAP-Account übernimmt. Synchronisation ist dabei vielleicht das falsche Wort, es ist eher ein Backup, was den zweiten IMAP-Account auf dem gleichen Stand wie den Googlemail-Account hält.
Die Basis für das Script kommt von Ryan Grove. Ich habe das Löschen von Nachrichten und die Ordner-Auflistung hinzugefügt.
#!/usr/bin/env ruby
require 'net/imap'
# Source server connection info.
SOURCE_HOST = 'imap.googlemail.com'
SOURCE_PORT = 993
SOURCE_SSL = true
SOURCE_USER = 'EMAIL@googlemail.com'
SOURCE_PASS = 'PASSWORT'
# Destination server connection info.
DEST_HOST = 'imap.SERVER.com'
DEST_PORT = 143
DEST_SSL = false
DEST_USER = 'USER'
DEST_PASS = 'PASSWORT'
# List of all Folder that should not be synced
FOLDERS_EXCLUDE = [
'[Google Mail]',
'[Google Mail]/Sent Mail',
'[Google Mail]/Spam',
'[Google Mail]/Trash'
]
# Utility methods.
def dd(message)
puts "[#{DEST_HOST}] #{message}"
end
def ds(message)
puts "[#{SOURCE_HOST}] #{message}"
end
# Connect and log into both servers.
ds 'connecting...'
source = Net::IMAP.new(SOURCE_HOST, SOURCE_PORT, SOURCE_SSL)
ds 'logging in...'
source.login(SOURCE_USER, SOURCE_PASS)
dd 'connecting...'
dest = Net::IMAP.new(DEST_HOST, DEST_PORT, DEST_SSL)
dd 'logging in...'
dest.login(DEST_USER, DEST_PASS)
# Getting the folders to sync
folders = Array.new
source.list("", "%").each do |mailbox|
if FOLDERS_EXCLUDE.include?(mailbox.name) == false
folders e
begin
dd "folder not found; creating..."
dest.create(foldername)
dest.select(foldername)
rescue => ee
dd "error: could not create folder: #{e}"
next
end
end
# Build a lookup hash of all message ids present in the destination folder.
dest_info = {}
dd 'analyzing existing messages...'
uids = dest.uid_search(['ALL'])
if uids.length > 0
dest.uid_fetch(uids, ['ENVELOPE']).each do |data|
dest_info[data.attr['ENVELOPE'].message_id] = true
end
end
# Loop through all messages in the source folder.
uids = source.uid_search(['ALL'])
if uids.length > 0
source.uid_fetch(uids, ['ENVELOPE']).each do |data|
mid = data.attr['ENVELOPE'].message_id
# If this message is already in the destination folder, skip it.
next if dest_info[mid]
# Download the full message body from the source folder.
ds "downloading message #{mid}..."
msg = source.uid_fetch(data.attr['UID'], ['RFC822', 'FLAGS',
'INTERNALDATE']).first
# Append the message to the destination folder, preserving flags and
# internal timestamp.
dd "storing message #{mid}..."
dest.append(foldername, msg.attr['RFC822'], msg.attr['FLAGS'],
msg.attr['INTERNALDATE'])
end
end
# Build a lookup hash of all message ids present in the source folder.
source_info = {}
dd 'analyzing source messages...'
uids = source.uid_search(['ALL'])
if uids.length > 0
source.uid_fetch(uids, ['ENVELOPE']).each do |data|
source_info[data.attr['ENVELOPE'].message_id] = true
end
end
# Loop through all messages in the source folder.
uids = dest.uid_search(['ALL'])
if uids.length > 0
dest.uid_fetch(uids, ['ENVELOPE']).each do |data|
mid = data.attr['ENVELOPE'].message_id
# If this message is already in the destination folder, skip it.
next if source_info[mid]
# Setting flag for deletion
ds "deleting message #{mid}..."
dest.store(data.seqno, "+FLAGS", [:Deleted])
end
end
dest.expunge
source.close
dest.close
end
puts 'done'
Kategorien: Blog | 12 Kommentare
Winnie | 28.09.2008
Das Bedürfnis, meine E-Mail vom Googlemail-Server zu sichern ist in den letzten Wochen extrem gestiegen. Grund dafür sind immer wieder Schauermärchen von gesperrten Mail-Accounts. Deswegen habe ich mich auf die Suche nach einer Backup-Möglichkeit für meine E-Mails gemacht und bin bei fetchmail fündig geworden. Fetchmail ist auf dem Mac unter Leopard vorinstalliert.
Mehr »
Das Bedürfnis, meine E-Mail vom Googlemail-Server zu sichern ist in den letzten Wochen extrem gestiegen. Grund dafür sind immer wieder Schauermärchen von gesperrten Mail-Accounts. Deswegen habe ich mich auf die Suche nach einer Backup-Möglichkeit für meine E-Mails gemacht und bin bei fetchmail fündig geworden. Fetchmail ist auf dem Mac unter Leopard vorinstalliert.
Um Mails mit fetchmail empfangen zu können, muss man als erstes ein Zertifikatsverzeichnis einrichten und die nötigen SSL-Zertifikate von Googlemail herunterladen. Dazu gibt man im Terminal folgende Zeilen ein:
mkdir ~/.certs
cd ~/.certs
openssl s_client -connect pop.googlemail.com:995 -showcerts
Kategorien: Blog | 3 Kommentare
Weiter » « Zurück