Archiv für die Kategorie ‘Programmierung’

The Evolution of a Programmer

Freitag, 25. September 2009

<snip>

Experienced Hacker:

#include 
#define S "Hello, World\n"
main(){exit(printf(S) == strlen(S) ? 0 : 1);}

Guru Hacker:

% echo "Hello, world."

New Manager:

10 PRINT "HELLO WORLD"
20 END

</snip>

(Link) :mrgreen:

PicLens für eigene Bilder nutzen

Sonntag, 27. Juli 2008

PicLens - FullscreenDas hervorragende Firefox-Addon PicLens, mit dem sich komfortabel Bilderstrecken und Videos anschauen lassen, ist ja schon länger bekannt. Leider wird von Haus aus nicht jede Webseite unterstützt, sodaß momentan nur die Seiten davon profitieren, die “PicLens-enabled” sind.

Um das Addon auch mit der eigenen Fotosammlung nutzen zu können, ist nur das Erstellen und Einbinden eines RSS-Feeds nötig, der alle Bilder auflistet.

Dazu fügt man im HTML-Header der aufzurufenden Seite folgende Zeile ein:

<link id="gallery" rel="alternate" href="photos.rss" type="application/rss+xml">

Nachdem dann der Feed photo.rss generiert wurde, leuchtet beim nächsten Seitenaufruf im Firefox das PicLens-Icon oben rechts auch schon blau. :D

PicLens-Icon

Folgendes Beispiel-Script kann für die Feed-Erstellung verwendet werden (das Syntax-Highlighting wird übrigens durch das Wordpress-Plugin WP-Syntax realisiert):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
<?php
//
// PicLEns Feed Creator
// (c)2008 speaker
//
//
// === Konfiguration ===
//
// Dateiname des zu erstellenden RSS-Feeds
$filename = "photos.rss";
 
// Verzeichnispfad, unter dem die Bilder zu finden sind
// (relativ oder absolut)
$dir = "img";
 
// Dateiendung der Bilder
$ext = "jpg";
 
// Suffix, der Thumbnails von den original Bildern unterscheidet
// Beispiel:
// Bild: "original.jpg" - Thumbnail: "original-thumb.jpg"
// -> Suffix: "-thumb"
$sfx = "-thumb";
 
// === Ab hier nichts mehr ändern! ===
 
$file = fopen($filename, "wb");
$header = '<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss xmlns:media="http://search.yahoo.com/mrss" version="2.0">
  <channel>';
$footer = '
  </channel>
</rss>
';
fwrite($file, $header);
foreach (glob($dir."/*".$sfx.".".$ext) as $thumb) {
        $pic = str_replace($sfx, "", $thumb);
        $name = basename($pic);
        $item = '
    <item>
      <title>'.$name.'</title>
      <link>'.$pic.'</link>
      <media:thumbnail url="'.$thumb.'" />
      <media:content url="'.$pic.'" />
    </item>';
        fwrite($file, $item);
}
fwrite($file, $footer);
fclose($file);
?>

Scripts mit Notepad++ direkt aufrufen

Dienstag, 10. Juni 2008

Mein Editor of Choice unter Windows ist definitiv Notepad++. Das Open Source Programm unterstützt unter anderem Syntax-Highlighting für knapp 50 Programmiersprachen, Code-Folding und -Completion sowie einen Makrorecorder. Außerdem ist es durch zahlreiche Plugins zB. um eine Funktionsliste, einen Hex-Editor oder XML-Tools erweiterbar.

Besonders das standardmäßig bereits enthaltene Plugin NppExec bringt sinnvolle Funktionalität mit sich: Es erlaubt das Ausführen von Scripts oder Programmen direkt im Editor. Dabei wird die Ausgabe in einem Konsolenfenster wiedergegeben, bekannt von IDEs wie Eclipse.

nppp

Das Plugin erleichtert das Programmieren und Testen ungemein. Zur Konfiguration drückt man die Taste F6 und tippt in das daraufhin erscheinende Execute-Fenster folgende Befehle ein (siehe auch Bild):

NPP_SAVE
C:\Pfad\Interpreter.exe "$(FULL_CURRENT_PATH)"

Anschließend bestätigt man mit OK, worauf im Konsolenfenster die Ausgabe beginnt. Dabei nimmt es genau wie die cmd-Shell Tastatureingaben entgegen, sodaß sich Scripts zB. mit STRG+C abbrechen lassen und auch nicht auf Benutzerinteraktion verzichtet werden muß. Wiederholte Executes können mit STRG+F6 ausgeführt werden.

Designer-Virus für den Mac

Mittwoch, 05. März 2008

Oliver hat mich heute auf diesen völlig sinnfreien, aber auf jeden Fall sehr originellen Virus für Macs aufmerksam gemacht, der eigentlich gar keiner ist:

Get the Flash Player to see this content.

Video-Quelle: dezeen.com

Die Software bedient sich dabei des Macbook-eigenen internen Gyroskops, das Teil des von Apple patentierten Sudden Motion Sensors (kurz: SMS) ist. Dieses System dient eigentlich dem Schutz der Festplatte vor Beschädigungen bei plötzlicher Bewegung, wobei dann augenblicklich Lese- und Schreibköpfe geparkt werden. Für den SMS gibt es neben einigen weiteren kleinen Anwendungen wie zum Beispiel SeisMac oder SMSRotateD auch die Java-Bibliothek jilt zum Umsetzen eigener Ideen.

PS.: Ich merke gerade, daß Oliver genau wie ich die Wikipedia und Google befragt, nur dabei das Gleiche schon gute drei Monate früher zum Besten gegeben hat. Macht nix, denk ich mir, déjà vus sind schön. :cool:

Valid XHTML und Get Recent Comments

Samstag, 23. Februar 2008

Da ich zur Konfiguration der letzten Kommentare, die rechts im Sidebar angezeigt werden, ein vernünftiges Plugin brauchte, habe ich seit einiger Zeit Get Recent Comments in Benutzung, das seinen Zweck gut erfüllt.

Ein einziges Problem konnte ich nun trotzdem beobachten: Beim Zusammenspiel mehrerer Faktoren zerstört das sonst einwandfrei funktionierende Plugin die XHTML-Validität. Das mag den Durchschnittsblogger nicht interessieren, aber bei mir kam diesbezüglich leider mal wieder der Perfektionismus durch… :roll:

invalidxhtml

Konkret muß das Caching von Get Recent Comments aktiviert sein und es müssen beide Widgets (Kommentare und Trackbacks) in der Sidebar auftauchen. In diesem Fall werden die zu cachenden Daten bereits beim Aufbau des ersten Widgets vollständig erstellt, was falsche HTML-Tags in $before_widget und $before_title des zweiten Widgets erzeugt (nämlich die des ersten Widgets). Da sich innerhalb dieser Tags ids befinden, die, wie der Name schon sagt, einzigartig sein müssen (was sie ja nicht mehr sind, sobald die gleiche id für beide Widgets genutzt wird), ist die Seite nicht mehr XHTML-konform. :cry:

validxhtml

Lange Rede, kurzer Sinn: Hier mein Patch für Version 2.0.2 des Plugins, allen kleinkarierten Gleichgesinnten gewidmet. :mrgreen:
Zur Erneuerung des Caches muß dieser einmal deaktiviert und, nachdem die Hauptseite neu geladen wurde, wieder aktiviert werden.