Tag Archives: Ruby

Ruby: Simple Fast Fourier Transform

by far not as powerful as the Fastest Fourier Transform in the West but maybe sometimes useful for a quick data analysis or de-noising. Reads stdin and writes to stdout.

Algorithm taken from Meyberg, Vachenauer: Höhere Mathematik II and ported to plain ruby myself.
< ![CDATA[
#!/usr/bin/env ruby
require ‘complex’

class Array
# DFT and inverse.
#
# Algorithm from
# …

Visualise macports dependencies

to clean up your installed macports and remove cruft you need to uninstall them in the correct order – according to their dependencies.

A graphical visualisation might help doing so:

Call
$ ./port-deps2dot.rb | dot -Tpdf -o port-deps.pdf ; open port-deps.pdf
with the ruby script port-deps2dot.rb (github gist) as follows:
#!/usr/bin/ruby -w

# visualize macports dependencies.
# pipe the result through …

Radio Geeky

wie schon in einem älteren Artikel angerissen möchte ich zeitgesteuert Radiosendungen aufnehmen – und zwar auf einem Rechner (mit Apache Webserver), der rund um die Uhr läuft.

Nun habe ich kürzlich einem großen Zündfunk-Fan, der selten Zeit hat ihn zu hören, diesen Mitschnitt als Podcast zum Geburtstag geschenkt. Das ganze wurde aufwändiger als ich dachte …

hübsche Dropbox Links

Weil große Email Anhänge stinken, bietet sich z.B. die Dropbox als Dateiaustauschplatform an.

Einfach die Datei in den (lokalen) Dropbox/Public Ordner verfrachten, syncen lassen und per “Rechte Maustaste -> Copy Public Link” in die Mail kopieren.
Redirect
Nun sind solche Links nicht besonders hübsch (Branding!, Branding!, CI! ruft die Marketingabteilung) und  spätestens wenn man’s abtippen muß oder …

T-Mobile Rechnungen auspacken und umbenennen

über T-Mobile RechnungOnline kann man sich die Rechnung als gpg-verschlüsselten Anhang per Mail schicken lassen – incl. Einzelverbindungsnachweis. Und obwohl’s nur 1x im Monat kommt, ist das Auspacken und Umbenennen in sinnvolle Dateinamen eine lästige Routinearbeit.

Also – automatisieren. Das folgende Ruby-Script erledigt das, nachdem der Rechnungsanhang in einen der Ordner “Downloads” oder “Desktop” gelegt …

ruby: parse Apache Serverlogs

Yields a hashmap for every line:
require ‘date’

class Apache
def self.each_request(src=$stdin)
ip_pat=/(?:+\.){3}+/
date_pat=/\]+\]/
req_pat=/”(+)\s(+)\s(+)”/
ref_pat=/”(+)”/
date_fmt = ”
apache_pat = Regexp.new( “(#{ip_pat})\s(+)\s(+)\s” < <
“(#{date_pat})\s#{req_pat}\s(+)\s(-|+)\s#{ref_pat}\s#{ref_pat}”)
src.each_line do …

Transfer Phone Numbers from gammu to the Mac Adressbook

ok, make yourself comfortable, fasten your seatbelt and stop smoking. This will be quite a journey:

Get gammu and backup the phone data:
$ gammu backup phonedata.txt -yes
open phonedata.txt and save it in “MacRoman” encoding with Unix line endings
run it through this ruby script:
#!/usr/bin/ruby -w —

# http://www.rubycentral.com/pickaxe/
# http://homepage.mac.com/phrogz/CSV2vCard_v2.html

records = {}
fields = {}

eor = /^*$/
bor …

Remember Ragel

Es ist schon etwas her aber dennoch einen kurzen Eintrag hier sicher wert.

Ragel habe ich für ein Experiment (ist SVG als 2D Szenengraph Format für piccolo2d machbar?) benutzt um einige Parser zu bauen.

Als Vorlage dienten die BNF Grammatiken direkt aus der W3C SVG Spezifikation. Nachdem der erste funktionsfähige Stand erreicht war habe ich noch …