Umrechnungskurse per PHP / Yahoo Finance API

Eine schnell zusammengehackte Funktion, um aktuelle Währungskurse von Yahoo Finance zu ziehen. Details zu den URL-Parametern dort. Damit man deren Server nicht mit unnötigen Abfragen „hämmert“, nutzt dieses kleine Snippet den APC Cache, um die Werte für etwa drei Stunden zwischenzuspeichern. Damit file_get_contents() eine URL verarbeiten kann, müssen fopen wrappers in PHP freigegeben sein.

function getQuote($from, $to) {
    $url = 'http://finance.yahoo.com/d/quotes.csv?e=.csv&f=l1&s='. $from . $to .'=X';
   $key = 'cur_'.$from.'_'.$to;
   $ttl = 60*60*3; // 3 Stunden

   $curValue = apc_fetch($key);

  if ($curValue === false) {
     $curValue = trim(file_get_contents($url));
     apc_store ($key, $curValue, $ttl);
  }

  return $curValue;
}

echo '1 Euro = ' . getQuote('EUR', 'USD') .' USD<br/>';
echo '1 Euro = ' . getQuote('EUR', 'GBP') .' GBP<br/>';

Google Feedburner und MyBrand

Gestern habe ich meinen Feedburner-Account zu Google umgezogen. Google hatte sich den RSS-Feed-Hoster schon vor einiger Zeit einverleibt, aber bisher waren die Feedburner-Dienste noch nicht voll in das Google-Angebot integriert.

Der Umzug des Accounts in mein Google-Portfolio klappte auch wunderbar und innerhalb einer Minute über den Link, der im Feedburner-Account eingeblendet wurde. Ein Haken hatte die Sache nur: Die MyBrand-Server funktionierten nicht. Nach Änderung des CNAME auf meinaccount.feedproxy.ghs.google.com. machte das Ding noch Zicken: 404 Server Not Found. Na toll. Mehrmaliges Überprüfen der Nameserver-Einträge brachten auch keine Erkenntnis: Alles richtig geschrieben, wunderbar propagiert, die Fehlermeldung kam definitiv vom Google-Server, offenbar fehlte dort die entsprechende Subdomain.

Nach langem Herumprobieren dann die Lösung: Man muss den MyBrand-Dienst beim GoogleFeedburner-Account  deaktivieren (eventuell auch die eigenen eingetragenen Domain-Namen löschen) und dann erneut aktivieren. Offenbar legt Google die entsprechenden Subdomains beim Umzug des Feedburner-Accounts nicht automatisch an. Indem man aber den MyBrand-Dienst einmal deaktiviert und dann wieder aktiviert, werden auch die entsprechenden Feedproxy-Subdomains bei Google erzeugt.

Ein paar Minuten später funktionierte wieder alles. Die Anzahl der Subscriber ist zwar um ein Viertel geringer, aber laut Google soll das auf verbesserte Zählverfahren zurückzuführen sein.

US-Wahlumfragen für Statistik-Fans

In den letzten Wochen hat es eine neue Website auf meine morgendliche Liste der „Web-Pflichtlektüre“ geschafft: www.fivethirtyeight.com ist ein Eldorado für Freunde der Statistik und US-Präsidentschaftswahl-Interessierte. Detailgenau werden auf jener Website die aktuellen Wahlumfragen amerikanischer Umfrageinstitute aufgelistet, analysiert und zur Basis neuer Vorhersage-Modelle verwendet.

Mit Verfahren, die auch bei der Analyse und Vorhersage von Sportwettbewerben verwendet werden, versuchen die Macher von fivethirtyeight.com den Ausgang der US-Wahl am 4. November baiserend auf den aktuellen Umfragewerten vorherzusagen. Dass dies angesichts der zahlreichen Bundesstaaten, dem indirekten Wahlsystem und unzähliger unvorhersehbarer zukünftiger Ereignisse und Einflüsse bei Wahlen allgemein nicht sonderlich einfach ist, sehen die Macher eher als Ansporn denn als Problem. Ergänzt wird das Angebot zudem noch durch aktuelle Berichte aus den Wahlkampfbüros in verschiedenen Wahlkreisen.

Kurz: Eine ideale Quelle, um über jede Nuance der aktuellen Stimmung im Vorfeld der US-Präsidentschaftswahlen auf dem Laufenden zu bleiben und sich in endlose Zahlenreihen und Umfrageanalysen zu verlieren (und von der „richtigen“ Arbeit abzulenken ;-)). Gegenwärtig wird übrigens eine Gewinnwahrscheinlichkeit für Obama von 94,7% prognostiziert.

UTF-8 mit Eclipse/PDT

Ständig wollte Eclipse mit PDT unter Windows darauf bestehen, dass meine PHP-Quellcode-Dateien ein ISO-8859-1-Encoding haben. Stimmt aber nicht, sind alle UTF-8. Resultat: Massig kaputte Umlaute, zumindest unter Windows. Auch das Setzen von „UTF-8“ als default für meine Projekte half nix, ich hätte für jede einzelne Datei in Eclipse mit „Edit->Set Encoding“ das Charset ändern müssen, obwohl es unter Linux wieder anstandslos klappte.

Aber dort findet sich die Lösung (man muss unter Preferences->General-Charsets das Encoding für PHP-Dateien ändern).

„Schnell mal ’ne neue Festplatte einbauen…“

Seltsamerweise unterschätze ich gerne den Domino-Effekt, der traditionell mit vergleichsweise einfachen Systemänderungen einhergeht. Eigentlich wollte ich nur eine neue Systemfestplatte in meine Ubuntu-Kiste einbauen. 320GB Western Digital (PATA) mit 30.000 Betriebsstunden ‚raus, neue Samsung 1TB (SATA) rein. Ähnliche Prozeduren habe ich schon x-mal gemacht, sollte also nebenbei zu erledigen sein. Dennoch musste ich mit frei nach Murphy auch noch mit defekten CD-Rohlingen, streikenden Grafikkarten und kleinen Font-Größen in Xorg ‚rumschlagen.

Am Anfang lief’s auch durchaus flott. Direkt einen freien Slot im Gehäuse gefunden, auch sogar noch ein „gutes“ AWG26-SATA-Kabel auf Vorrat. Eingebaut, angeschlossen, zur Kontrolle einen Reboot. Perfekt, „fdisk -l“ erkennt die Platte. Seltsamerweise habe ich aber nun vertikale Linien in der XServer-Ausgabe und auch im Textmodus stimmt irgendwas mit der Grafik-Ausgabe nicht, mein Beamer will sich gar nicht mehr auf das Signal im Textmodus synchronisieren. Großartig, da hat wohl die Grafikkarte ein Hitzeproblem.

Jetzt aber erstmal die Festplatte fertig machen: Wieder ‚runterfahren und mit grml-CD booten. Mist, zu spät F8 gedrückt. Reboot^2. F8,F8,F8,F8,F8,F… USB-DVD-Laufwerk auswählen. Wow, grml erkennt sogar den nvidia-Netzwerkchip und macht DHCP.

Dann mit dd den kompletten Inhalt von der alten Platte auf die neue spiegeln: dd if=/dev/sda of=/dev/sdf  bs=1024k conv=notrunc,noerror — bloß nicht die Platten verwechslen. Per ssh auf der grml-Kiste eingeloggt und von Zeit zu Zeit ein kill -USR1 an den dd-Prozeß geschickt, um den Stand der Dinge abzufragen: Satte 50MB/s. Bei 320 GB heißt es also etwa 2 Stunden warten. Zeit zum Essen.

Gestärkt geht es zurück an den Patienten: Platte erfolgreich dupliziert, also Reboot. Immer noch Grafik-Probleme und System hängt nach „Kernel alive“. Keine Möglichkeit, andere Konsolen zu aktivieren, sshd ist natürlich auch tot. What nu? Richtiger Kernel-Crash war es wohl nicht, denn Ctrl-Alt-Delete führt zum Reboot. Auch diesmal eine lange Denkpause nach „Kernel alive“, aber plötzlich ist der XServer dann doch ganz normal gestartet. Blick in die Logs: Die Kiste hatte ausgerechnet beim letzten Bootvorgang wohl ein routinemäßiges e2fsck auf eine der anderen Festplatten gemacht, daher die lange Pause beim Booten. Und wegen der seltsamen Grafikprobleme bekam ich im Textmodus nix davon angezeigt. Grr.

Okay, nun heißt es noch Grub mitzuteilen, dass er zukünftig von der neuen Terabyte-Platte starten soll. Ehm, das musste man offenbar zumindest früher so machen. Jetzt stehen in /boot/grub/menu.lst vermehrt UUIDs, vielleicht muss man sich gar nich tmehr mit (hd0,0) & Co. herumschlagen. Fazit nach minutenlanger Grübelei: Beim Spiegeln mit dd wurde auch die UUID der Partitionen der alten Platte auf die neue kopiert, in grub ist also wohl gar keine Änderung nötig. Wieder ‚was gelernt.

Also erneut shutdown -h now und alte Platte endgültig abklemmen. Dann im BIOS neue SATA-Platte als Startplatte ausgewählt. Perfekt, Grub bootet Ubuntu bis auf die bekannten Grafikprobleme erolgreich von der neuen Platte. Logischerweise werden jetzt nur 300GB von den 960GB der neuen Festplatte genutzt, also müssen jetzt noch die Partitionen angepasst werden. Das geht natürlich nicht im laufenden Betrieb, denn es ist ja die Systemfestplatte.

Wieder Reboot  und eine Gelegenheit mal die neue Parted Magic-Live-CD zu testen. F8,F8,F8,F8,F… Erster Versuch: Geht nicht, Rohling kann nicht gelesen werden. Arrgh. Neuen Rohling suchen & brennen. Wäre ja nicht so schlimm, wenn PC und USB-Laufwerk nicht in getrennten Räumen stehen würden. Zweiter Versuch, mit neuem Verbatim-Rohling: F8,F8,F8,F8,F… Success. Parted Magic bootet. Doch Moment, die Schriftgröße im XServer ist ja winzig, da kann ich nix lesen. Wie ändert man die Font-Größe bei Xorg? Langes Herumprobieren, Ctrl-Alt-Backspace, Ctrl-Alt-+, Ctrl-Alt–, keine Änderung. Frust.

Also Parted Magic ‚raus, Knoppix ‚rein. F8,F8,F8,F8,(langsam würde es sich lohnen, die Default-Boot-Reihenfolge im BIOS zu ändern)…F8,F8,.. GParted aufgerufen und … wtf?! … Wie lautet das Passwort für root?? Bei Knoppix? Leeres Passwort wird nicht akzeptiert. Also gut, Konsole geöffnet, sudo -spasswd. Fein, jetzt kann ich auch GParted starten. Die letzte Partition auf der neuen Platte soll vergrößert werden, da die aber Teil einer erweiteren Partition ist, muss zuerst die „erweiterte Partition“ auf maximale Größe erweitert werden und dann erst die eigentliche Partition selbst. Klappt wunderbar mit Gparted, das zuvor erforderliche e2fsck braucht aber wieder Zeit.

Einige Zeit später zurück am Bildschirm: Seltsam, GParted läuft nicht mehr. War wohl fertig. Kurze Kontrolle mit erneutem Aufruf von GParted: Jupp, sieht gut aus. Reboot.

Wieder zurück in Ubuntu: Check mit fdisk -l und df -h: Offenbar war doch etwas mit GParted schiefgelaufen: Die Partition hat zwar nun die korrekte Größe, aber das Dateisystem wurde nicht angepasst, die Partition ist vermeintlicherweise immer noch proppevoll. Seltsam, das macht GParted doch normalerweise auch? Also von Hand: umount, resize2fs: Ätsch, „run e2fsck first“. Damn. Wieder 20 Minuten warten. Dann endlich resize2fs /dev/sdf6 … und wir sind fertig. df -h meldet 600GB freien Speicherplatz. Welch schöner Anblick ;-).

Und mir fällt ein, dass ich vor exakt 10 Jahren noch ’ne Menge Geld für eine 1,2 GB-Festplatte ausgegeben hatte. Vermutlich werde ich in weiteren zehn Jahren beim Einbau meines neuen Zetabyte-Holospeicher auch nostalgisch an diese erste Terabyte-Platte denken 😉

Nur die Grafikprobleme, die sind immer noch da. „Hübsche“ vertikale Streifen im Bild. Aber das hebe ich mir für einen anderen Tag auf 🙂

Umstieg auf Ubuntu

Seit einigen Tagen habe ich auf meinem Bürorechner Ubuntu 7.10 im Dual-Boot mit Windows XP laufen und beginne nun damit, einen dauerhaften Wechsel zu der Linux-Distribution zu machen. Ich bin mal gespannt, wie weit ich damit komme :). Standard-Anwendungen wie Firefox, OpenOffice, Gimp und Eclipse decken ja den Großteil des alltäglichen Bedarfs ab. LaTeX ist hier sowieso „zuhause“. Einen Webserver zum Testen hat man gleich auf der lokalen Maschine. „Lustig“ wird es somit wohl erst werden, wenn die Spezialfälle auftauchen…

Ich bin alles andere als ein Newcomer zu Linux — auf Servern kommt mir schon seit Jahren nix anderes als Debian unter die Finger. Mein digitaler Videorecorder zu Hause läuft auch mit Debian (und VDR). Und Hardware wird immer unter dem Gesichtspunkt der Linux-Kompatibilität angeschafft. Aber auf dem Desktop war ich bisher noch sehr zurückhaltend, auch wenn ich regelmäßig seit SuSE4.4 in den späten 90ern immer mal wieder damit experimentierte. Gerade im Multimedia-Bereich (insb. Videoschnitt, -Editing) gibt es noch einige Lücken im Linux-Software-Portfolio und man hat sich ja an die Tools unter Windows gewöhnt. Zudem steht mir hier im Büro eigentlich auch ein umfangreiches Adobe-Softwarepaket zur Verfügung, der Verzicht fällt schon etwas schwerer. Und ausgerechnet heute kündigt MySQL das lang ersehnte „Workbench“ als Beta an — aber erstmal nur für Windows. Grr. Argh. Naja, es gibt ja auch noch KVM/Xen.

Optisch macht Ubuntu/Gnome mittlerweile einen hervorragenden Eindruck und muss sich in Sachen „eye candy“ sicherlich nicht mehr vor Vista oder OSX verstecken. Dank Compiz hat man herrlich viele graphische Spielereien auf dem Desktop zur Verfügung, die auch in einigen Fällen die Usability erhöhen. Außerdem hat man „wobbelige“ Fenster! Was will man mehr!? 😉

Ärger macht momentan vor allem noch der Ruhezustand/Standby. Keinerlei Fehler- oder Debug-Meldungen in den Logs, aber ein eingefrorener PC nach Aufruf des „Standby“-Modus … hrmpf. Den Rechner jeden Abend komplett herunterzufahren ist schon gewöhnungsbedürftig, aber vielleicht bekomme ich das ja noch in den nächsten Tagen gebacken. Die Logitech USB-Webcam funktioniert auch nur mit einem eigenartigen Zoom-Modus, aber das Kapitel „Videokonferenz“ habe ich eh noch gar nicht richtig angegangen…

SeeAlso in ViBI

Jakob Voss hat in seinem Blog ja kürzlich einen neuen Webservice des GBV vorgestellt: SeeAlso gibt nach Übergabe einer ISBN dynamische Links auf Wikipedia und Librarything zurück. Ich habe das testweise auch mal in das ViBI der Informationswissenschaft eingebaut und es funktioniert wunderbar einfach. Man hat als Admin wenig Arbeit (im Prinzip nur eine JavaScript-Datei einbinden), die große Last schultert dabei natürlich der GBV.

Ich habe mir mittlerweile auch mal eine so genannte „CueCat“ aus den USA zugelegt — das ist im Grunde ein ganz einfacher Barcode-Scanner mit USB-Anschluss. Damit kann man den Barcode von Büchern einscannen und bekommt somit flugs die ISBN ohne jegliche Tipparbeit direkt in den PC. Zum Erfassen des kleinen privaten Buchbestandes ideal und kostet maximal $15. Und wenn man den Input der CueCat direkt an SeeAlso (oder ähnliche Dienste) füttert, bekommt man fix thematisch passende Wikipedia-Links auf den Bildschirm — ohne dass man die Tastatur berührt hat :). Okay, das ist in erster Linie ein Spielzeug für Geeks, aber wenn man sich das mal in der praktischen Anwendung vorstellt: Man hält zukünftig einfach ein Buch (oder ein sonstiges Objekt) vor die Webcam des PCs und erhält dann automatisch weiterführende Links im Browser. Semapedia macht das ja im Grunde schon.

Die CueCat funktioniert natürlich auch mit DVDs. Oder mit dem Kühlschrankinhalt, … prinzipiell mit allem was einen EAN- oder UPC-Barcode hat.

phpbb3

Die neue Version der wohl populärsten Open-Source-Forensoftware ist mittlerweile derart lange in Entwicklung, dass sie schon als Duke Nukem Forever der Bulletin Boards bezeichnet wurde. Schon im Jahre 2004 wurde Version 3 (damals noch 2.2) von phpbb angekündigt und immerhin ist man seit Februar 2007 bei der fünften Beta angelangt. Getreu dem Motto „Es ist fertig, wenn es fertig ist“ wird schon lange kein offizieller Veröffentlichungstermin mehr genannt. Ist ja auch verständlich — phpbb wird ausschließlich von Freiwilligen in deren Freizeit entwickelt, und nicht immer hat man die Zeit und Lust, um an solch einem Projekt zu coden. Und das „echte“ Leben kommt gerne mal dazwischen. Wenn ich nur daran denke, wie lange ich jetzt schon an der neuen Version von MSCL.com herumschraube und durch wieviel Design- und Framework-Iterationen das Projekt in den letzten Jahren gegangen ist…

Aber worauf ich eigentlich hinauswollte: Nach einem Servercrash zu Beginn des Monats (Beweis für die Existenz der „bathtub curve“ bei RAID-Systemen) haben die phpbb.com-Admins nun gestern kurzerhand das offizielle phpbb-Supportforum auf die neue Beta-Version umgestellt. Inklusive des neuen Layouts. Und das ist mal eine Erwähnung wert. Schon das 2001er Layout für phpbb2 war seinerzeit eine gernkopierte Inspiration für andere Forensysteme und so war das erneut von Tom Beddard (subBlue) entwickelte Layout mit Spannung erwartet worden (okay, zumindest von mir ;-)). Auffallend: Es dominieren „runde Ecken“, von denen ich ja auch zur Zeit ein großer „Fan“ bin (und mich bei jedem Entwurf immer wieder ein wenig bremsen muss, damit die Abrundungen nicht Überhand nehmen). Teilweise fehlt mir ein wenig eine klarere Strukturierung, die ein oder andere Trennlinie würde vielleicht nicht schaden. Bemerkens- und lobenswert: No Tables, alles reines CSS. Einen kleinen Blick hinter die Kulissen bietet die gleichzeitig veröffentlichte Dokumentation der Entstehung des neuen Look&Feel. Tom Beddard hat meiner Meinung nach auch in seinem sonstigen Portfolio zahlreiche sehr ansprechende Designs.

Jetzt muss ich mir doch mal wieder überlegen, ob ich für das neue MSCL.com nun wirklich von phpbb2 zu SMF wechseln soll…

Aufgerüstet

Ganz Deutschland ist im Vor-Mehrwertsteuer-Erhöhungs-Kaufrausch und da kann ich natürlich nicht hintenanstehen. Ich hab mir also ein neues „Arbeitsgerät“ zugelegt — ein 21″-Widescreen TFT-Monitor mit 1680×1050 Pixeln. Ich habe wieder zu einem Samsung-Modell gegriffen (215TW) — schon in Analog-Zeiten hatte ich mit diesem Hersteller nur gute Erfahrungen gemacht. Auch diesmal keine Probleme soweit: Kein einziger Pixelfehler, DVI, gleichmäßige Ausleuchtung, ein irrer Kontrast, dazu Pivot-Funktion und ein schöner schmaler Rahmen. Auf der anderen Seite habe ich als Non-Gamer und bestenfalls Hobby-Grafiker ja auch keine sonderlich extrem hohen Anforderungen. Aber es macht Arbeiten am PC viel angenehmer: Endlich genügend Platz für Eclipse, Firefox und Winamp gleichzeitig… eine sehr lohnende Anschaffung.

monitore.jpg
Kompliment übrigens an den Shop hoh.de: Mittwoch Abends per Vorkasse(!) bestellt, am Freitag Morgen schon geliefert — sowas habe ich noch nie erlebt :-).

Und obwohl ich jetzt schon einige Millionen glückliche Pixel habe, juckt mir so manches vorweihnachtliches Billig-Angebot immer noch ziemlich in den Fingern … vielleicht könnte ich ja einen solchen 08/15-Monitor quasi als Drittmonitor daneben stellen … nur wird’s dann auf dem Schreibtisch langsam eng und es würde wohl reichlich protzig aussehen :-). Auf der anderen Seite ist es manchmal schon erstaunlich, wieviele Anwendungen man gerne gleichzeitig nebeneinander auf dem Bildschirm hätte…

Spass mit IE7 und z-index

Hrmmpfarrgh. Okay, der z-index-Bug ist wohl auch in IE7 noch nicht gefixt. Auch Elemente mit z-index:auto erhalten aus irgendeinem Grund einen eigenen Stacking Context mit z-index=0, wodurch „richtige“ z-index-Angaben in Kinderelementen keine Auswirkungen im globalen Dokumentkontext haben. (Ja, klingt wirre). Das ist wirklich ärgerlich, denn da der IE jetzt ja Alpha-Transparenzen in PNG-Grafiken unterstützt, könnte man nun eigentlich schöne flexible Layouts aufbauen. Aber nö. Wäre ja zu einfach.

Wenn man die Fehlerursache wenigstens immer recht rasch herausfinden würde … stattdessen muss man per Trial&Error an allen Ecken und Enden drehen und im Interweb nach Erklärungen suchen:
Eine Doku zu z-index im Allgemeinen auf den Websites von Mozilla.org:
http://developer.mozilla.org/en/docs/Understanding_CSS_z-index

Und eine Demonstration der z-index-Bugs in IE6/7:
http://www.aplus.co.yu/lab/z-pos/
http://therealcrisp.xs4all.nl/meuk/IE-zindexbug.html

Achja, „Generated Content“ wie :after und :before kann er auch nicht. Und wieder ein paar semantisch unnötige DIVs mehr im Code. Naja, der IE8 … err… „IE Next“ ist ja schon angekündigt

Durch die weitere Nutzung der Seite stimmst du der Verwendung von Cookies zu. Weitere Informationen

Die Cookie-Einstellungen auf dieser Website sind auf "Cookies zulassen" eingestellt, um das beste Surferlebnis zu ermöglichen. Wenn du diese Website ohne Änderung der Cookie-Einstellungen verwendest oder auf "Akzeptieren" klickst, erklärst du sich damit einverstanden.

Schließen