Use ar_mailer for future mail delivery

This little howto describes, how to use ar_mailer to schedule emails for future delivery.

Sorry for the bad formatting. Might change it someday…
1) Migrate emails table and add needed fields

  add_column :emails, :various, :string #holds classname and id of any object you want to
  add_column :emails, :type, :string #type of email
  add_column :emails, :date_to_send, :date #date to send that mail

2) Override “def find” in email.rb

  def self.find(*args)
    with_scope(:find=>{ :conditions=>["(date_to_send IS NULL OR date_to_send <= ?)", Date.today] }) do
      super(*args)
    end
  end

3) Create DelayedEmail class, inherting Email

  class DelayedEmail < Email
    before_save :set_due_date
    before_save :set_various_field
    @@days_before_sending = 21 #default is 3 weeks after creation of various object
    @@various_class = nil

    def set_due_date
      self.date_to_send = Date.today + @@days_before_sending
    end

    def set_various_field
      name = @@various_class.class.to_s + "_" rescue "NOCLASS_"
      id = @@various_class.id.to_s rescue "0"
      self.various = name + id
    end

    #tell email to which object it belongs. might be important for future deletion of unsent mails
    def self.set_various_class(c)
      @@various_class = c
    end

    #tell email how many days shall pass by before sending email
    def self.set_days(days)
      @@days_before_sending = days
    end
  end

4) Modify ar_mailer standard emailer class in controller before delivery and set it back afterwards

  DelayedEmail.set_days(10)
  DelayedEmail.set_various_class(SOMEOBJECT)
  ActionMailer::ARMailer.email_class=DelayedEmail
  #Let any mailer send an email through this class
  #eg. Mailer.deliver_mymail(...)
  ActionMailer::ARMailer.email_class=Email

Flashvideos mit ffmpeg

Wenn man -wie ich- Linux-User ist und Videoschnitt machen möchte, stößt man relativ schnell an seine Grenzen. Bisher ist mir noch kein Tool untergekommen, mit dem man professionel arbeiten könnte. Deshalb lasse ich es auch meistens bleiben 🙂

Allerdings hatte ich neulich für einen Kunden das Problem, einen DVD-Ausschnitt auf seiner Website als Video zur Verfügung stellen zu müssen. Eine Konvertierung als AVI der MPEG kam nicht in Frage, es sollte also ein Flashvideo werden.

Begeistert bin ich schon eine Weile von ffmpeg- irgendwie hat es mir immer aus der Patsche geholfen- sei es bei der einfachen Mischung von MP3 und Videodaten, der Konvertierung von avi in DVD oder ähnlichem.

Dennoch war ich überrascht, dass man mit diesem kleinen Helfer auch sehr fein Flasmovies herstellen kann. Zumindest war ich überrascht, dass dies ohne komplizierte Parameter möglich ist.

Und so gehts:

ffmpeg -i meineVideodatei [-i meineSounddatei] -ar 44100 meineOutputdatei.flv

Überrascht? So einfach ist es 🙂

Skype 2 beta und Fedora 8

Seit November bietet Skype eine Version 2, welche als Beta vorliegt und Linuxusern endlich die versprochene Video-Call-Unterstützung liefert.

Ich als Fedora-User dachte mir, probieren wir das doch gleich mal aus. Also: Version 1.4 runtergeschmissen und 2. X draufgemacht. Doch schon beim ersten Start kam die Ernüchterung: Der Sound ist futsch.

Nach einer Suche in diversen Foren fand ich heraus, dass das am fehlenden Support für Pulseaudio von Skype liegt.

Für alle, die ähnliche Probleme haben (ich glaube Ubuntu 8 hat ebenfalls Pulseaudio per default integriert) gibt es ein Workaround, welches hier zu finden ist.

Web 2.0 und Usability

Eine Frage, die mich und meine Kollegen ganz aktuell im Projekt vino.la beschäftigte war, wieviel Ajax-Funktionalität ein “normales” Shopsystem verträgt. Wie intuitiv ist eine Website zu bedienen, was kann man sich an innovativen Produktfiltern oder live-Suchen leisten, ohne dass der User sich damit 10 Minuten auseinandersetzen muss, was er eigentlich tun muss um ans Ziel zu kommen und uns ein Produkt abzukaufen. Continue reading “Web 2.0 und Usability”