ReadyBoost wiederbeleben

Mein Vista SP2 hat sich heute morgen dazu entschieden, aus unbekannten Gründen ReadyBoost auf meiner SanDisk Extreme III SD-Card nicht mehr zuzulassen: “Das Gerät verfügt nicht über die notwendigen Leistungsmerkmale…”.  Und das hat definitiv schon vorher funktioniert. Nach dem obligatorischen Googlen bin auf einen Artikel von Shlomi mit dem richtigen Tipp gekommen.

  1. SD-Card formatieren und entfernen
  2. mit regedit HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\EMDMgmt öffnen
  3. die Untereinträge löschen, ich habe nur die Untereinträge für die SD-Karte gelöscht, einfach nach z.B. Hersteller gucken, bei mir z.B. Ven_O2Micro
    Beispielname: _??_SCSI#Disk&Ven_O2Micro&Prod_SD&Rev_0001#5&1fbc024f&0&000000#{53f56307-b6bf-11d0-94f2-00a0c91efb8b}RDYBST_2483886225
  4. SD-Card wieder einstecken und ReadyBoost wieder aktivieren.

Shlomi hat das für USB-Flashdrives gemacht, also sollte das dort auch funktionieren. Das Setzen der anderen Parameter war bei mir nicht erforderlich.

phonotunes.php: phonostar-Player Aufnahmen in iTunes als Podcast verfügbar machen

Ich bin ein großer Fan des phonostar-Player. Mit diesem Programm kann man sehr bequem Radiosendungen aufnehmen. Da ich einen iPod nutze, musste ich die Aufnahmen bisher umständlich in eine Playliste im iTunes importieren. Dadurch habe ich aber keine Übersicht über schon gespielte Folgen und kann längere Hörspiele nicht mal eben in der Mitte unterbrechen und später an der Stelle fortsetzen. Wie schön läuft das dagegen bei einem Original Audio Podcast – z.B. dem des ARD Radio-Tatort. Automatisch lädt die neueste Folge und wird synchronisiert, bereits angehörte Folgen werden automatisch entfernt.

Ich habe daher ein wenig geschraubt und ein PHP-Script geschrieben mit dem ich meine phonostar-Player-Aufnahmen meinem iTunes in Form eines lokalen Audio-Podcasts unterschiebe. Ein Beitrag von digitaltoast hat mich da sehr schnell auf die richtige Spur gesetzt.

Voraussetzung: ein lokaler Webserver mit PHP Unterstützung. Ich habe dafür den IIS auf meinem Windows 7 konfiguriert.

Installation (IIS): Ich habe in meinem Webserver-Verzeichnis den Ordner phonotunes erstellt, die phonotunes.php dorthin kopiert und über den IIS Manager dort ein virtuelles Verzeichnis “Aufnahmen” eingehängt, dass auf den Aufnahmenordner des phonostar-Player zeigt. Danach zeigt “http://localhost/phonotunes/Aufnahmen” auf “D:\\Temp\\radiostreams\\phonostar\\Aufnahmen”.

Und schon kann man im iTunes den Link http://localhost/phonotunes/phonotunes.php hinzufügen und mit seinem iPod synchronisieren.

Verbesserungsvorschläge willkommen!

[sourcecode language="php"]
<?php
/**
* phonotunes – generate iTunes compatible audio podcasts based on phonostar-Player recordings
*
* Copyright 2010 Tobias Harmes
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
* @author Tobias Harmes, tobias@harmes.de
* @link http://harmes.de
* @version 2010-05-16
* @license Apache License, Version 2.0
*/

//change this to your needs
define (‘RECORDINGS’, ‘D:\\Temp\\radiostreams\\phonostar\\Aufnahmen’);
define(‘URLBASE’,'http://localhost/phonotunes/Aufnahmen’);

/**
* traverse sub-dirs and build up xml object
*
* @param $start directory to start at
* @param $xml_generator XML document object <by ref>
* @param $win32 determines slash, defaults to true
*/
function directoryList($start,&$xml_generator,$win32=true){
if($win32){
$slash="\\";
}else{
$slash="/";
}
$basename = pathinfo($start);
$basename = $basename['basename'];
$ls=array();
$dir = dir($start);
while($item = $dir->read()){
if(is_dir($start.$slash.$item)&& $item!="." && $item!=".."){
$ls[$basename][]=directoryList($start.$slash.$item,&$xml_generator,$win32);
}else{
if($item!="."&&$item!=".."){
$ls[$basename][]=$item;
$itempath = $start.$slash.$item;
//remove default path
$itemurl = str_replace(RECORDINGS, "", $itempath);
//encode all funny characters and spaces
$itemurl = rawurlencode($itemurl);
//restore the slashes
$itemurl = str_replace(rawurlencode($slash),"/",$itemurl);
$itemurl = URLBASE.$itemurl;

$itempathinfo = pathinfo($itempath);
$recording = $xml_generator->addChild(‘item’);
$title = str_replace("_"," ",$itempathinfo['filename']);
//remove the leading date if any
if (preg_match(‘/^\d{4}-\d{2}-\d{2}.*/’,$title))
{
$title = substr($title, strlen("yyyy-mm-dd")+1);
}
$recording->addChild(‘title’, $title);
$recording->addChild(‘pubDate’, date(DATE_RFC822, filemtime($itempath)));
//if this is a regular recording use the folder name
$description = substr($start, strlen(RECORDINGS)+1);
$description = str_replace("_"," -",$description);
$recording->addChild(‘description’, $description);
$recording->addChild(‘link’, $itemurl);
$enclosure = $recording->addChild(‘enclosure’);
$enclosure->addAttribute(‘url’, $itemurl);
$enclosure->addAttribute(‘length’, filesize($itempath));
$enclosure->addAttribute(‘type’, ‘audio/mpeg’);
}
}
}
return $ls;
}//directoryList

$xml_string =’<?xml version="1.0" encoding="UTF-8"?>’."\r\n"."<channel>"."\r\n"."</channel>";
$xml_generator = new SimpleXMLElement($xml_string);
$xml_generator->addChild(‘title’, ‘phonotunes radio podcast’);
$xml_generator->addChild(‘category’, ‘Audio Podcasts’);

$dirlist = directoryList(RECORDINGS,$xml_generator, true);

header("Content-Type: text/xml");
$xml_result = $xml_generator->asXML();
$xml_LeftHandSide = ‘<?xml version="1.0" encoding="UTF-8"?>’."\r\n".’<rss xmlns:itunes="http://www.itunes.com/DTDs/podcast-1.0.dtd" version="2.0">’;
$xml_RightHandSide = substr($xml_result, 39);
echo $xml_LeftHandSide . $xml_RightHandSide . "</rss>";
?>
[/sourcecode]

UNMOUNTABLE_BOOT_VOLUME

Was gibt es schöneres an einem Sonntag als ein Rechner der nicht funktioniert? Jedenfalls war meine Schwester nicht sehr begeistert über die Endlos-Neustarts ihres Windows XP Home. Nachdem ich den automatischen Neustart über F8 deaktiviert hatte, konnte ich dem Bluescreen (oder stop error) ein UNMOUNTABLE_BOOT_VOLUME entnehmen. Google brachte einen KB-Artikel von Microsoft an den Tag. Ah ja, also etwas mit der Festplatte. Schnell die Daten gesichert und an einem anderen Rechner scandisk mit automatischer Reparatur laufen lassen. Neuinstallation knapp vermieden :-)

heise Security Konferenz Cloud Computing

Diese Woche war ich in Hamburg auf der heise Security Konferenz zum Thema Cloud Computing. Wieder einmal waren es ausgezeichnete Vorträge. Die derzeitig verfügbaren Lösungen bezüglich Cloud Computing im Enterprise Umfeld sind allerdings enttäuschend. Wie soll man den hohen Anforderungen an den Datenschutz in Deutschland bei der Verarbeitung von personenbezogenen Daten in der public Cloud gerecht werden? Müssen wir tatsächlich auf homomorphe Verschlüsselung warten?

Auch diesmal gab es einige aha-Effekte und nützliche Links zum Thema, das von der Redaktion mitgebrachte Apple iPad, das ich auch mal in die Hand nehmen durfte, war da quasi noch mal das Extra-Bonbon:

  • Wie baue ich mit der Google App Engine einen kostenlosen Proxy – zum Beispiel zur Umgehung der Länderkennung auf einigen Webseiten
  • Evernote macht OCR-Erkennung von Screenshots, Fotos und Notizzettel und synchronisiert sie zwischen allen festen und mobilen Endgeräten
  • Tungle.me bietet einen Free-Busy-Planer um mit anderen Kontakten ohne Endlos-Email-Schleife einen gemeinsamen Termin auszumachen (mein Kalender)
  • Crowdsourcing für Design-Aufgaben mit CrowdSpring und für Coding-Aufgaben mit GetACoder
  • PhishingTank - ein Seite bei der man Phishing-Seiten melden und noch besser ansehen kann – erschreckend wie täuschend echt die Seiten aussehen