Mittwoch, 29. Juni 2011

Energiesparen - aber richtig

Wir müssen ja bekanntlich alle Energie sparen, insbesondere wenn wir alle deutschen Kernkraftwerke abschalten und die Fehlmenge nicht durch "Atomstrom"-Importe aus den Nachbarländern ausgleichen wollen.

Zum Thema "Energie sparen im Haushalt" habe ich im Rahmen einer Diskussionsrunde folgende nachdenklich machende Anekdote gehört:
Das ökologische Gewissen plagt den Besitzer eines alten Kühlschrankes aufgrund des Energiebedarfs sehr, so dass er sich auf den Weg machte in die nächste Filiale eines beliebigen Elektronikgroßmarktes. (Er ist ja schließlich nicht "blöd" und Geiz ist bekanntlich "geil".) Dort entdeckt er das Ziel seiner Wünsche, den Traum seiner schlaflosen Nächte: Einen Kühlschrank der Energieeffizienzklasse "A+++". Bei so viel Energieeffizienz schaut man natürlich nicht auf den Preis, schließlich will ja das ökologische Gewissen befriedigt werden. Das Gerät wird also gekauft, stolz nach Hause gebracht und voller Freude in der Küche aufgestellt.
Doch: Was macht man jetzt bloß mit dem alten Kühlschrank? Der geht ja noch!! Und zum Entsorgen ist der ja eigentlich viel zu schade! Also wird er mit der letzten Kraft in den Keller verschafft und dort angeschlossen: Ist doch praktisch, so ein Zweitkühlschrank im Keller, da kann man dann ja auch mal eine größere Menge gekühltes Bier bereithalten, wenn sich Gäste angekündigt haben, oder vielleicht auch nicht angekündigt haben, aber jederzeit aufkreuzen könnten. Oder die Dritttorte für größere Familienfeiern drin kühlstellen...
Wo ist der Fehler??

Freitag, 17. Juni 2011

Boot-USB-Stick für Ubuntu 10.04 LTS mit Ubuntu 11.04 erzeugen

Versucht man, mit Hilfe des "Startup Disk Creator" und einem Ubuntu-10.04-ISO-Image aus Ubuntu 11.04 einen bootbaren USB-Stick zu erzeugen, scheint auf den ersten Blick alles zu klappen, bis man von diesem Stick versucht zu booten. Dann erscheint nur die Fehlermeldung:
Unknown keyword in configuration file: gfxboot
vesamenu.c32: not a COM32R image
Gut, könnte man sagen, hätte man nur die Release Notes von 11.04 gelesen, wäre man auf folgende Information gestoßen:
There is a problem creating a bootable 10.04.2 or earlier USB image from Ubuntu 10.10 or 11.04 system. Booting from the USB can be made to work, but using the workaround of typing "help" and pressing Return.
Da dieser Workaround mich nicht wirklich befriedigen konnte (ich würde mich bspw. jedes Mal wieder fragen, was ich eingeben muss, wenn ich den Stick nutze), habe ich etwas weiter recherchiert und bin im Launchpad (Ubuntus Bugtracker) darauf gestoßen, dass man auf dem Stick nur die Datei /syslinux/vesamenu.c32 durch die Version von /usr/lib/syslinux/vesamenu.c32 ersetzen muss, dann funktioniert es.

Dienstag, 30. November 2010

JavaScript/DOM: Verhalten von appendChild()

Folgendes ist mir bei der JavaScript-Entwicklung aufgefallen.

Verwendet man die Methode appendChild(), um ein vorher bspw. mittels getElementById() (oder der PrototypeJS- bzw. JQuery-Funktion "$()") aus dem DOM geholtes Element an anderer Stelle oder in ein anderes Dokument (ein anderes Browserfenster) einzufügen, wird das an der ursprünglichen Stelle stehende Element gelöscht (!).

Dies ist kein Bug, sondern laut DOM-Spezifikation so gewollt.
If the newChild is already in the tree, it is first removed.
Soll das Element an der ursprünglichen Stelle bestehen bleiben, ist diese zunächst mittels der Methode cloneNode() zu duplizieren.

Sonntag, 14. November 2010

GrowlMail und OS X 10.6.5 / Mail 4.4

Nach meinem Update auf Mac OS X 10.6.5 (vorher hatte ich noch 10.5.x) funktionierte das Apple Mail Plugin GrowlMail nicht mehr, welches Growl Benachrichtigungen anzeigt, wenn neue Mails eintreffen.
Leider ist es so, dass bei der neuen Version von Apple Mail Plugins für jede Version von Apple-Mail, für die sie verwendbar sind, eine UUID dieser Version von Apple Mail enthalten müssen. Es kann also ein Plugin nicht mehr die Information enthalten "Ich bin für alle Versionen von Mail ab 4.0 geeignet", sondern muss alle Versionen (bzw. deren UUIDs) explizit auflisten.

Wurde GrowlMail beim Start von Mail aufgrund der (vermeintlichen) Inkompatibilität bereits deaktiviert, muss man es von dem Ordner
Users/Library/Mail/Bundles (deaktiviert)/GrowlMail.mailbundle
wieder in den Ordner
Users/Library/Mail/Bundles/GrowlMail.mailbundle
verschieben.

Dann fügt man zur in dem Bundle enthaltenen Datei Info.plist unter SupportedPluginCompatibilityUUIDs die beiden UUIDs von Apple Mail 4.4
"857A142A-AB81-4D99-BECC-D1B55A86D94E"
und
"BDD81F4D-6881-4A8D-94A7-E67410089EEB"
hinzu.

Alternativ kann man das auch über das Terminal lösen:
defaults write ~/Library/Mail/Bundles/GrowlMail.mailbundle/Contents/Info SupportedPluginCompatibilityUUIDs -array-add "857A142A-AB81-4D99-BECC-D1B55A86D94E"
defaults write ~/Library/Mail/Bundles/GrowlMail.mailbundle/Contents/Info SupportedPluginCompatibilityUUIDs -array-add "BDD81F4D-6881-4A8D-94A7-E67410089EEB"


Quelle: http://langui.sh/2010/10/14/fixing-growlmail-in-10-6-5-mail-4-4/


Nachtrag:

Für
Apple Mail 4.5 (kommt mit Mac OS X 10.6.7) lauten die UUIDs
"1C58722D-AFBD-464E-81BB-0E05C108BE06"
und
"9049EF7D-5873-4F54-A447-51D722009310".

Siehe http://langui.sh/2011/03/21/fixing-growlmail-in-10-6-7-mail-4-5/

Sonntag, 29. August 2010

Yahoo! Pipes: RSS-Feeds "subtrahieren"

Wenn man (wie ich) ein fleißiger Leser von Newsfeeds ist, kommt es u.U. vor, dass man einen abonnierten (RSS-/Atom-)Feed ohne bestimmte Beiträge bekommen möchte. Wenn diese Beiträge nicht mittels eines einfachen Filters definiert werden können, sondern Inhalte eines anderen Feeds sind, wird es schwierig und es kann dafür Yahoo! Pipes verwendet werden.

Nochmal die Aufgabenstellung: Ziel ist es, einen Feed zu bekommen, in dem alle Beiträge von Feed A vorkommen, aber alle Beiträge, die auch in Feed B vorhanden sind, herausgefiltert wurden, also die Differenzmenge von Feed A und Feed B. Um es noch etwas konkreter zu machen: Ich möchte alle Spiegel-Online-Beiträge (RSS-Feed) ohne die Beiträge des Sport-Feeds von Spiegel Online (RSS-Feed).

Leider gibt es für diesen Fall keinen vordefinierten Operator-Block bei Yahoo! Pipes, sodass man selbst Hand anlegen muss.


Hier eine Erklärung, wie das Ganze funktioniert:

  • Zunächst legt man für jeden Feed (in meinem Fall SP.ON komplett sowie SP.ON Sport) ein Fetch-Feed-Modul an und kopiert die URL der Feeds in das jeweilige URL-Feld.
  • Anschließend wird mit einer Loop über einen String Builder jedem Beitrag ("item") der beiden Feeds eine Markierung hinzugefügt, die die Beiträge eindeutig einem der Feeds zuordnet. Einträge des ersten Feeds bekommen ein zusätzliches Feld "source" ("item.source") mit dem Inhald "Feed A", analog werden Beiträge des zweiten Feeds mit item.source = "Feed B" gekennzeichnet.
  • Beide Feeds werden nun mit einem Union-Modul vereinigt.
  • Mit Hilfe eines Unique-Moduls werden anschließend Einträge, deren "link"-Feld identisch ist, kombiniert.
    Anmerkung: Hier muss man bei anderen Quellen evtl. auf andere Felder ("title") zurückgreifen, wenn die Links der Einträge sich bspw. durch einen Parameter unterscheiden.
  • Jetzt kommt der Trick des Aussortierens: Über ein Filter-Modul werden nun nur Einträge weitergereicht, deren "y:repeatcount"-Feld gleich 1 und die Quelle (item.source) "Feed A" ist.
    Info: Das "y:repeatcount"-Feld wird vom Unique-Modul für jeden Beitrag gesetzt und enthält die Anzahl der Beiträge, die es zu dem jeweiligen Beitrag zusammengefasst hat.
  • Das Ergebnis wird schließlich an den Pipe Output weitergereicht (und kann hier abgerufen werden: http://pipes.yahoo.com/pipes/pipe.run?_id=e95a7dc4cd639af9710a95d62000e9d5&_render=rss)

Sollte jemand noch ein paar coole Dinge mit Yahoo! Pipes angestellt haben, möge er/sie einen Kommentar posten...


Ergänzung:

Freitag, 9. Juli 2010

Windows 7 Installation vom USB-Stick

Es soll ja vorkommen, dass man Windows 7 auf einem Rechner ohne optisches Laufwerk installieren muss.

Microsoft stellt dafür ein Tool bereit, das aus einem von deren Shop online gekauften ISO-Image einen bootbaren USB-Stick erstellt. Leider hat das Tool zwei Nachteile (außer dass es das .NET Framework benötigt): Zum einen akzeptiert es scheinbar nur ISO-Images, die von Microsoft vertrieben werden, was einem nicht weiterhilft, wenn man nur die Windows 7 DVD vorliegen hat; zum anderen wird (zumindest unter Windows XP) die Installation eines "Image Mastering API v2.0" vorausgesetzt. Also muss eine andere Lösung her.

Hier habe ich folgende funktionierende Vorgehensweise gefunden:
  • Alle wichtigen Daten auf dem USB-Stick in Sicherheit bringen (z.B. mit USB Image Tool im Device Mode).
  • Die folgenden Befehle setzen voraus, dass der angeschlossene USB-Stick als „drive 1“ von Windows erkannt worden ist! Um herauszufinden, unter welcher Kennung der Stick erkannt worden ist, an der Eingabeaufforderung "diskpart" und anschließend den Befehl "list disk" eingeben. Unter "Datentr" steht Ziffer, die dem eingelegten USB-Stick zugewiesen ist! Die Zeile "select disk 1" (unten fett markiert) muss dann entsprechend angepasst werden!
  • Folgendes an der Eingabeaufforderung eingeben:
diskpart
select disk 1 (ggf . muss der Wert angepasst werden!)
clean
create
partition primary

select partition 1
active
format fs=fat32
assign
exit
  • Nun den Inhalt der kompletten Windows-7-DVD auf den USB-Stick kopieren:
xcopy (DVD-ROM-Laufwerksbuchstabe):\*.* /s/e/f (USB-Stick-Laufwerksbuchstabe):\
  • Wenn im BIOS das Booten vom USB-Stick aktiviert ist, startet beim Start mit eingelegtem Stick das Windows 7 Installationsprogramm.
Folgendes habe ich noch herausbekommen:
War die Festplatte vorher unpartitioniert oder nur Windows unbekannte Partitionen (wie ext3) vorhanden waren, kann es vorkommen, dass sich das Installationsprogramm weigert, Windows auf der Festplatte zu installieren, weil der Stick bereits den Laufwerksbuchstaben C: abbekommen hat. Dazu auf der Festplatte eine Partition anlegen und formatieren (geht innerhalb des Windows Setup mit den erweiterten Optionen), neu booten und die Partition wieder löschen. Windows kann dann in diesen unpartitionierten Bereich installiert werden (Partition wird automatisch angelegt und formatiert).

Freitag, 1. Januar 2010

Ein Rätsel...

Zum neuen Jahrzehnt möchte ich ein Rätsel stellen, was mir vor einiger Zeit über den Weg gelaufen und mir heute wieder in die Hände gefallen ist.

Lösungsvorschläge bitte in die Kommentare!

Drei Personen wohnen zusammen in einem Haus. Das Produkt des Alters der Personen beträgt 2450. Die Summe ihres Alters entspricht der Hausnummer vom Haus nebenan. Des weiteren ist keiner so alt wie die Nummer der Buslinie, die an dem Haus vorbeiführt.

Wie alt sind die Personen?

Fleißaufgabe:
a) Wie lautet die Hausnummer vom Haus nebenan?
b) Wie lautet die Nummer der Buslinie?

Hinweis: Die Aufgabe ist eindeutig lösbar!