That's Winnie http://www.thatswinnie.com Wed, 23 Nov 2011 10:54:35 +0000 de-DE hourly 1 http://wordpress.org/?v=3.4.2 Gastauftritt bei Sosumi http://www.thatswinnie.com/2011-11-23/gastauftritt-bei-sosumi/ http://www.thatswinnie.com/2011-11-23/gastauftritt-bei-sosumi/#comments Wed, 23 Nov 2011 10:54:35 +0000 Winnie http://www.thatswinnie.com/?p=200 SosumiUnd gleich noch eine Podcast-Einladung, diesmal von Andreas und Rafael von der Sosumi-Show. Immer dabei: Großartiger Nerd-Content.
Die Folge kann man sich auf der Sosumi-Seite runterladen:
Episode 13: HyperCard

–>

flattr this!

]]>
http://www.thatswinnie.com/2011-11-23/gastauftritt-bei-sosumi/feed/ 1
Gastauftritt bei MobileMacs http://www.thatswinnie.com/2011-11-22/gastauftritt-bei-mobilemacs/ http://www.thatswinnie.com/2011-11-22/gastauftritt-bei-mobilemacs/#comments Tue, 22 Nov 2011 10:53:58 +0000 Winnie http://www.thatswinnie.com/?p=199 MobileMacsTim hat geladen – da konnte ich nicht Nein sagen. Also bin ich Mitte November nach Berlin gefahren um bei Podcast-Aufnahme der Folge 76 mit dem großartigen Team von MobileMacs mitzumachen.
Wer reinhören will, der geht am Besten auf die MobileMacs-Seite:
MM076 Seepferdchensex

–>

flattr this!

]]>
http://www.thatswinnie.com/2011-11-22/gastauftritt-bei-mobilemacs/feed/ 0
Wiederholungstäter http://www.thatswinnie.com/2011-11-17/wiederholungstater/ http://www.thatswinnie.com/2011-11-17/wiederholungstater/#comments Thu, 17 Nov 2011 19:08:24 +0000 Winnie http://www.thatswinnie.com/?p=193 WiederholungstäterNach langer Podcast-Pause wird es wieder Zeit für etwas Neues: die “Wiederholungstäter”. Bei diesem Podcast dreht sich alles um Serien. Zusammen mit meinem Co-Moderator Uli Kusterer stellen wir in ca. 15 Minuten jede Woche eine Serie vor.
Hier gibt’s zum Beispiel die Folge über die Serie Misfits zu hören:

 

wiederholungstaeter-podcast.de

flattr this!

]]>
http://www.thatswinnie.com/2011-11-17/wiederholungstater/feed/ 0
iCalBirthdays 2.0.1 http://www.thatswinnie.com/2010-06-27/icalbirthdays-2-0-1/ http://www.thatswinnie.com/2010-06-27/icalbirthdays-2-0-1/#comments Sun, 27 Jun 2010 12:35:31 +0000 Winnie http://www.thatswinnie.com/?p=164 Dieses Update von iCalBirthdays ist nur ein kleiner Bugfix, ohne neue Features.

Screenshot der Automator-Action iCalBirthdays 2.0.1

Download: http://code.google.com/p/icalbirthdays/downloads/list


Änderungen in dieser Version:

  • Vertauschung der Alarm-Einträge in der deutschen Version korrigiert

flattr this!

]]>
http://www.thatswinnie.com/2010-06-27/icalbirthdays-2-0-1/feed/ 17
iCalBirthdays 2.0 http://www.thatswinnie.com/2010-03-06/icalbirthdays-2-0/ http://www.thatswinnie.com/2010-03-06/icalbirthdays-2-0/#comments Sat, 06 Mar 2010 13:33:19 +0000 Winnie http://www.thatswinnie.com/?p=155 iCalBirthdays ist jetzt noch toller und besser! (natürlich, sonst würde es ja keine neue Version geben)

Ich habe die Automator-Action für diese Version von AppleScript nach Cocoa portiert – also komplett neu geschrieben. Dabei habe ich nicht nur Fehler behoben, sondern auch die meist-gewünschten Verbesserungen eingebaut: so werden zum Beispiel jetzt die Geburtstage ab der Geburt eingetragen und man kann eine Automator-Action davorschalten um nur für bestimmte Personen oder Adressbuchgruppen Geburtstage zu bekommen.

Screenshot der Automator-Action iCalBirthdays 2.0

Download: http://code.google.com/p/icalbirthdays/downloads/list


Änderungen in dieser Version:

  • komplett neu in Cocoa geschrieben
  • Filter nach Personen und Adressbuchgruppen über vorgeschaltete Automator-Action möglich (issue 16)
  • Jahreskalender (issue 8)
  • Erinnerung per E-Mail (issue 9)
  • Geburtstage ab Geburt
  • Fehler in benutzerdefinierten Anzeigeformaten behoben (issue 21, issue 22, issue 28, issue 29)
  • “Kalender in Datei exportieren”-Option entfernt

flattr this!

]]>
http://www.thatswinnie.com/2010-03-06/icalbirthdays-2-0/feed/ 19
Kölner Jugendchor St.Stephan http://www.thatswinnie.com/2010-01-29/kolner-jugendchor-ststephan/ http://www.thatswinnie.com/2010-01-29/kolner-jugendchor-ststephan/#comments Fri, 29 Jan 2010 14:08:00 +0000 Winnie http://localhost:8888/thatswinnie/?p=17 Kölner Jugendchor St.StephanDer “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

flattr this!

]]>
http://www.thatswinnie.com/2010-01-29/kolner-jugendchor-ststephan/feed/ 0
Digitale Bücher für Deutschland: txtr eBook-Shop http://www.thatswinnie.com/2009-09-17/digitale-bucher-fur-deutschland-txtr-ebook-shop/ http://www.thatswinnie.com/2009-09-17/digitale-bucher-fur-deutschland-txtr-ebook-shop/#comments Thu, 17 Sep 2009 11:51:29 +0000 Winnie http://www.thatswinnie.com/?p=110 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.

txtr eBook-ShopDie 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.

flattr this!

]]>
http://www.thatswinnie.com/2009-09-17/digitale-bucher-fur-deutschland-txtr-ebook-shop/feed/ 4
iCalBirthdays: Automator-Action http://www.thatswinnie.com/2009-09-14/icalbirthdays-automator-action-v7/ http://www.thatswinnie.com/2009-09-14/icalbirthdays-automator-action-v7/#comments Mon, 14 Sep 2009 08:50:37 +0000 Winnie http://www.thatswinnie.com/2007-10-22/icalbirthdays-automator-action/ 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.

Screenshot der Automator-Action iCalBirthdays 1.7

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
Screenshot der Automator-Action iCalBirthdays 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
Screenshot der Automator-Action iCalBirthdays 1.5

  • Benutzerdefinierbares Format der Kalendereinträge hinzugefügt
  • Anzeige des Alters im Geburtstag-Event entfernt bzw. durch Geburtsjahr ersetzt

1.4
Screenshot der Automator-Action iCalBirthdays 1.4

  • Lokalisierung für Deutsch hinzugefügt
  • Anzeige des Alters im Geburtstag-Event hinzugefügt

1.3
Screenshot der Automator-Action iCalBirthdays 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
Screenshot der Automator-Action iCalBirthdays 1.1

  • Leopoard ready
  • Option für zusätzlichen Alarm (Additional Alert) hinzugefügt

1.0
Screenshot der Automator-Action iCalBirthdays 1.0

flattr this!

]]>
http://www.thatswinnie.com/2009-09-14/icalbirthdays-automator-action-v7/feed/ 100
Googlemail-Backup mit IMAP http://www.thatswinnie.com/2008-10-05/googlemail-backup-mit-imap/ http://www.thatswinnie.com/2008-10-05/googlemail-backup-mit-imap/#comments Sat, 04 Oct 2008 23:37:41 +0000 Winnie http://www.thatswinnie.com/?p=41 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.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
#!/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 << mailbox.name
    end
 
    if mailbox.attr.include?(Net::IMAP::NOSELECT)
        source.list("", "#{mailbox.name}/%").each do |mailboxChild|
            if FOLDERS_EXCLUDE.include?(mailboxChild.name) == false
                folders << mailboxChild.name
            end
        end 
    end 
end
#puts folders
 
 
# Loop through folders and copy messages.
folders.each do |foldername|
  # Open source folder in read-only mode.
  begin
    ds "selecting folder '#{foldername}'..."
    source.examine(foldername)
  rescue => e
    ds "error: select failed: #{e}"
    next
  end
 
  # Open (or create) destination folder in read-write mode.
  begin
    dd "selecting folder '#{foldername}'..."
    dest.select(foldername)
  rescue => 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'

flattr this!

]]>
http://www.thatswinnie.com/2008-10-05/googlemail-backup-mit-imap/feed/ 12
Googlemail-Backup http://www.thatswinnie.com/2008-09-28/googlemail-backup/ http://www.thatswinnie.com/2008-09-28/googlemail-backup/#comments Sun, 28 Sep 2008 18:46:24 +0000 Winnie http://www.thatswinnie.com/?p=40 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

Aus den Ausgaben im Terminal kopiert man sich das Zertifikat, das aus folgenden Zeilen besteht:

-----BEGIN CERTIFICATE-----
(viele Buchstaben)
-----END CERTIFICATE-----

Nun muss das Zertifkat in eine Datei geschrieben werden:

touch googlemailpop.pem
sudo pico googlemailpop.pem

Jetzt kann das Zertifikat hineinkopiert werden. Mit CTRL + X kann man die Datei verlassen und muss das Speichern noch mit Y bestätigen.

Nun werden noch ein Zertifikate von Equifax benötigt. Dazu muss man sich von der Equifax-Seite das “Equifax Secure Certificate Authority (Base-64 encoded X.509)” herunterladen, nach "equifax.pem" umbenenennen und in den Zertifikatsordner kopieren.

Fehlt nur noch das Hashen der Zertifkate:

c_rehash .

Um das eigentlich Abholen seiner E-Mails einzurichten, muss die Konfigurations-Datei von fetchmail eingerichtet und bearbeitet werden:

touch ~/.fetchmailrc
chmod 710 ~/.fetchmailrc
sudo pico ~/.fetchmailrc

Hier muss der folgende Text eingefügt werden - der natürlich vorher um die eigenen Zugangsdaten ergänzt werden muss:

poll pop.googlemail.com with proto POP3 and options no dns
user 'GOOGLEMAIL_USERNAME@googlemail.com' there with password 'GOOGLEMAIL_PASSWORD' is 'LOCAL_USERNAME' here and wants mda "/usr/bin/procmail -d %T" options ssl keep sslcertck sslcertpath "/Users/LOCAL_USERNAME/.certs"

Und auch gilt wieder: Mit CTRL + X kann man die Datei verlassen und muss das Speichern mit Y bestätigen.

Letzter Schritt: Mails abrufen

fetchmail -v --fetchall --invisible

Die E-Mails werden in der Datei /var/mail/LOCAL_USERNAME abgelegt. Falls das Abrufen der E-Mails nicht klappt, sollte man in seinem Googlemail-Account überprüfen, ob das Abrufen per POP eingestellt ist (Einstellungen / Weiterleitung und POP/IMAP / POP für alle Nachrichten (auch bereits heruntergeladene) aktivieren).

Als ein Zusatzfeature zu Schluss sollte man sich noch einen automatisierten Job einrichten, der die E-Mails einmal am Tag abruft, damit man das nicht manuell über das Terminal machen muss. Dazu empfehle ich, den Artikel "Getting Started with launchd" bei Apple durchzulesen.

flattr this!

]]>
http://www.thatswinnie.com/2008-09-28/googlemail-backup/feed/ 3