Suche
Suche Menü

Iemmr we1edr f4enesinrzid

Vor kurzem habe ich von einer Kollegin folgenden Text bekommen:

Was man alles lesen kann

Diese Erkentniss ist nicht gerade sehr neu, jedoch immer wieder eindrücklich wie ein Text trotz extremer Verunstaltung noch lesbar bleibt. (zumindest der Muttersprache mächtigen).

Podcasts mit PHP verwalten

Im Moment befasse ich mich gerade mit dem Thema Podcast. Ziel ist es, möglichst einfach mit wenig Aufwand einen Vortrag als Podcast zur Verfügung zu stellen.
Die Idee:

  • Aus den Aufnahmen ein MP3 machen
  • dieses nach einem bestimmten Schema benennen
  • die ID3 Tags mit Inhalten zu füllen
  • Hochladen
  • Ein Cronjob liest das Verzeichnis aus und generiert aus Dateinamen und ID3 Tags einen Podcastfeed

Da ich die Welt nicht unbedingt neu erfinden will, habe ich nach Klassen für dieses Thema gesucht.

Mit der Feedcreator Class lässt sich ein Feed recht einfach erstellen. Die Anwendung ist sehr simple:

include("feedcreator.class.php"); 

$rss = new UniversalFeedCreator();
$rss->useCached(); // use cached version if age<1 hour
$rss->title = "PHP news";
$rss->description = "daily news from the PHP scripting world";

//optional
$rss->descriptionTruncSize = 500;
$rss->descriptionHtmlSyndicated = true;

$rss->link = "http://www.dailyphp.net/news";
$rss->syndicationURL = "http://www.dailyphp.net/".$_SERVER["PHP_SELF"];

$image = new FeedImage();
$image->title = "dailyphp.net logo";
$image->url = "http://www.dailyphp.net/images/logo.gif";
$image->link = "http://www.dailyphp.net";
$image->description = "Feed provided by dailyphp.net. Click to visit.";

//optional
$image->descriptionTruncSize = 500;
$image->descriptionHtmlSyndicated = true;

$rss->image = $image;

// get your news items from somewhere, e.g. your database:
mysql_select_db($dbHost, $dbUser, $dbPass);
$res = mysql_query("SELECT * FROM news ORDER BY newsdate DESC");
while ($data = mysql_fetch_object($res)) {
    $item = new FeedItem();
    $item->title = $data->title;
    $item->link = $data->url;
    $item->description = $data->short;
    
    //optional
    item->descriptionTruncSize = 500;
    item->descriptionHtmlSyndicated = true;

    $item->date = $data->newsdate;
    $item->source = "http://www.dailyphp.net";
    $item->author = "John Doe";
     
    $rss->addItem($item);
}

// valid format strings are: RSS0.91, RSS1.0, RSS2.0, PIE0.1 (deprecated),
// MBOX, OPML, ATOM, ATOM0.3, HTML, JS
echo $rss->saveFeed("RSS1.0", "news/feed.xml");

In meinem Fall habe ich zur Erstellung der einzelnen Einträge mit scandir das Podcastverzeichnis ausgelesen und die Dateien nach Informationen zerlegt.
Wichtig ist, dass der Feed anschliessend validiert wird: Feed Validator

Das Auslesen der ID3 Tags aus den MP3 Dateien erledige ich mit getID3(). Diese besteht aus diversen weiteren Modulen welche je nach Nutzung gelöscht werden können. Im Lieferumfang sind 13 Demo-Scripte für alle möglichen Anwendungen der Klasse dabei. So lassen sich damit zum Beispiel rekursiv Verzeichnisse auslesen und die Ergebnisse in einer DB speichern. Ein Beispiel wie die ID3 Tags geändert werden können und vieles mehr. Neben den ID3 Tags aus MP3 Dateien werden auch eine Reihe weiterer Formate unterstützt: .avi, .vob, .ogg, aac, .wav, .midi, .wma, .wmv, .mov Dateien. Zudem können Zip-Dateien ausgelesen und verarbeitet werden. Hier die Liste mit den unterstützten Formaten. Ein absolut tolles Projekt.

Der PHPGangsta hat zu diesem Thema einen Beitrag geschrieben in dem er verschiedene Scripts vergleicht.

Aktuell bin ich erst am Anfang meines Projekts, bin aber gespannt welche weiteren Perlen ich allenfalls noch dazu finden werde.

Rafinierte Mails zum Viren verteilen

Seit kurzem bekomme ich ab und an sehr raffinierte Spam Mails, welche versuchen mittels offiziellem Anstrich ein Trojaner unterzujubeln. Ein Beispiel einer solchen E-Mail:

Guten Tag Lukas Blatter,

Vielen Dank für Ihren Auftrag bei alternate.de, nachfolgend finden Sie Ihre Bestellbestätigung.

Deine Bestellnummer: 719139766217
Artikel: Hewlett-Packard 6784684720   8371,40 Euro
Rechnungsname: Lukas Blatter

Zahlungsmethode: Auf Rechnung  

Versandadresse und detaillierte Zahlungsaufforderung finden Sie wegen Sicherheitsmaßnahmen im Anhang.

Die Buchung wurde von Lukas Blatter autorisiert und wird innerhalb 2 Tage abgetragen. Kaufdetails und Widerspruch Mitteilung finden Sie im Anhang.

Ihr Support

Tozzi GmbH
Dunckersweg 62
89015  Hannover

Telefon: (+49) 825 5780448
(Mo-Fr 8.00 bis 18.00 Uhr, Sa 10.00 bis 18.00 Uhr)
Gesellschaftssitz ist Köln
Umsatzsteuer-ID: DE440686737
Geschäftsfuehrer: Uwe Schneider

Angehängt ist dem E-Mail jeweils eine Zip-Datei welche eine «Lieferung.exe» oder eine ähnlich benannte Exe Datei enthält. Wird diese Datei ausgeführt, so nistet sich der Trojaner im Computer ein.

Wichtig:

  • Niemals Anhänge einer E-Mail öffnen welche im Format .exe sind
  • Bekommen Sie eine E-Mail zu einer Bestellung oder einer Tätigkeit welche Sie nicht ausgeführt haben, so prüfen Sie das E-Mail äusserst kritisch
  • E-Mails von Webshops bekommen Sie in der Regel unmittelbar nach einem Einkauf. Deshalb werden sie misstrauisch wenn ein Shop Ihnen ohne Einkauf ein E-Mail über eine Lieferung sendet
  • Halten Sie Ihren Antivirus aktuell
  • Setzen Sie einen Antivirus ein, welcher auch die E-Mails checkt. Beachten Sie, dass verschiedene kostenlose Produkte dies nicht machen.

CSS3: Silbentrennung “hyphens”

Bis anhin war die Silbentrennung mit HTML nicht möglich oder nur durch den Umweg eines JavaScripts. Mit der CSS Eigenschaft «hyphens» kann die Silbentrennung nun aktiviert werden.

body {
 -webkit-hyphens: auto;
 -moz-hyphens: auto;
 -ms-hyphens: auto;
 hyphens: auto;
}

Im Moment unterstützt noch kein Browser die Eigenschaft korrekt. Deshalb gibt es Vendor-Prefixes für Webkit, Microsoft und Mozilla.

Es spricht jedoch aus meiner Sicht nichts dagegen diese Eigenschaft bereits in allen Projekten einzusetzen. Derzeit unterstützt als einziger Opera diese Eigenschaft noch nicht. In Anbetracht seiner Marktverbreitung kann dies aus meiner Sicht vernachlässigt werden. Es ist zudem anzunehmen, dass auch Opera diese Eigenschaft über kurz oder lang unterstützen wird

Canon PhotoPrintEx und CD Labelprint unter Win7

Dieses Wochenende habe ich unseren Canon IP4500 wieder mal in Betrieb genommen. Mittlerweile gibt es bei uns ausschliesslich Win7 PCs. Nach dem Installieren von Canon PhotoPrint Ex kam die Meldung, dass kein passender Drucker installiert sei.

Dieses Problem kann wie folgt gelöst werden:

  1. Drucker automatisch durch Windows installieren lassen
  2. Die Datei b7100MUx.exe von Canon-Server herunterladen und installieren
  3. Die Datei aomwin200ea24.exe vom Canon-Server herunterladen und installieren.
  4. Danach PhotoPrintEx und / oder CD Labelprinter installieren

Bei mir funktionierte dies auch bei bereits installiertem PhotoPrint Ex.

(Quelle)

QNAP: proftpd re-launch

Diesen Sonntag hat mich ein minütliches Klingeln des Handys aus der trauten Ruhe geschreckt:

 Server Name: qnap1
 IP Address: 10.0.4.8
 Date/Time: 2012/02/05 20:49:06
 Level:  Warning
 Re-launch process [proftpd]

Diese Meldung kam im Minutenschritt reingedudelt. Ein Deaktivieren und Aktivieren des FTP Dienstes brachte keine abhilfe. Ein Hinweis im QNAP Forum brachte mich auf den richtigen Weg:

Es kann passieren, dass sich das SSL Zertifikat verhaspelt. In diesem Fall musste ich das SSL Zertifikat zurücksetzen. Danach funktionierte der FTP Dienst wieder zuverlässig. Für weiteres Debuggen kann man sich übrigens per SSH auf das QNAP NAS verbinden.

User: admin
Passwort: das welches man definiert hat

Danach kann man mit /usr/local/sbin/proftpd den ProFTPd selber starten und schauen mit welcher Fehlermeldung er abbricht. 

Copyright Link im Footer mit Jahreszahl

Die meisten Webseiten enthalten einen Footer mit einem Copyright. Ist in diesem eine Jahreszahl enthalten, so sollte diese auch aktuell gehalten werden. Hier eine Lösung wie dies mit Smarty sehr einfach gelöst werden kann:

<p>&copy; copyright 2010 - {'Y'|date}, <a href="http://www.blattertech.ch">blattertech informatik</a>, alle Rechte vorbehalten.</p>