Software-Engineering Martin Fabiani

Sitemap (Navigation ohne JavaScript)

Impressum: Martin Fabiani, Röderbergweg 104, D-60485 Frankfurt, Tel: +49 (69) 49084808, E-Mail: info (at) fabiani.net, USt-IdNr: DE217298609

Downloads eigener Scripte

(Sortierung: von neu nach alt)

  1. FindDuplicateFiles
  2. Meine .emacs
  3. ExcelPerl (v0.13)
  4. Tk-Mines
  5. Tk-CreateImageWebGallery
  6. Strat's Chatwebserver
  7. CGI-Javascript-Webchat
  8. Tk-Käsekästchen

  1. FindDuplicateFiles: ein nettes kleines PerlTk-Script, das ich verwende, um doppelte Dateien in einem oder mehreren Verzeichnis(-bäumen) zu finden und zu löschen. Dabei kann man recht flexibel auswählen, welche der mehrfach vorkommenden Dateien man löschen will. Dieses Script läuft derzeit nur unter Win32 mit vollem Funktionsumfang , wobei ich versucht habe, die Win32-Funktionalität so zu kapseln (siehe MyApp::CommonFunc), damit man es auch einfach für andere Betriebssysteme erweitern kann.
    Das Script verwendet die folgenden Perl-Module, die eventuell nicht standardmäßig mit Perl installiert werden: Tk (als graphische Oberfläche), Tk::ProgressBar (Fortschrittsbalken), Win32 (für Pfadmagie), Win32::Process (um eine Datei mit einem externen Programm öffnen zu können), Win32::FileOp (um die zu löschenden Dateien im Papierkorb ablegen zu können).
    Download: FindDuplicateFiles_0.02.zip

  2. Meine .emacs: Seit etwa 1998 verwende ich Emacs als Editor zum Entwickeln für Perl und weitere Programmiersprachen, auch HTML, vor allem unter den Betriebssystemen Windows, Linux, Solaris und AIX. Im Laufe der Zeit habe konnte ich diesen Editor immer besser an meine Bedürfnisse anpassen. Hier meine .emacs, die ich (mit angepassten Pfaden) unter all diesen Betriebssystemen verwende (einfach entpacken, die Pfade und eventuell Zeilenenden anpassen und unter Unix/Linux ins Homedirectory stellen, und unter Windows nach c:\ )
    Download: strats_dot_emacs.zip

  3. ExcelPerl: Excel-Dateien unter Windows mit Perl-Einzeilern bearbeiten.
    Motivation: Ich verwende Excel häufig zur Datenanalyse oder zum Erstellen von Testdaten. Es gibt zwar viele hilfreiche Excel-Funktionen, aber für viele Aktionen kommt man um Makros nicht drum rum (z.B. direktes Ersetzen von Werten in einem Feld, vielleicht in Kombination mit regulären Ausdrücken). Ich kannte awk und perl -ane, mit denen man Textdateien verändern kann. Dann hörte ich von XLSPerl und fand es ein echt hilfreiches Tool. Da XLSPerl jedoch auf Spreadsheet::ParseExcel beruht, läft es zwar unter fast jedem Betriebssystem, kann jedoch Excel-Dateien nur lesen. Und ich fand es nervig, aus Excel-Dateien damit CSV-Dateien zu erzeugen, die dann wieder nach Excel zu importieren und dadurch eine Menge an Informationen zu verlieren.
    Da ich Excel schon häufiger mit gutem Erfolg über Win32::OLE ferngesteuert habe und mir das Excel-Objektmodell ein wenig vertraut ist, habe ich mich dazu entschieden, XLSPerl auf Basis von Win32::OLE nachzuschreiben, was das Tool zwar auf Windows-Betriebssysteme mit installiertem Excel beschränkt, dafür aber Dateien direkt editieren kann und mir auch den Rest von Excel zur Verfügung stellt.
    Wie bei perl -ane, wird eine while-Schleife um das Kommando gelegt, und das Kommando wird für jede Zeile ausgeführt, wobei die einzelnen Werte der Zeile im Array @F zur Verfügung gestellt werden. Da es sich dabei um ein tied Array handelt, werden Änderungen an einem Element von @F auch direkt in der Excel-Datei geändert, z.B. die Spalte A in Großbuchstaben ändern:
    excelPerl -ane "$F[0] = uc $F[0]" -f datei.xls
    Zusätzlich steht das Array @C zur Verfügung, das die Win32::OLE-Objekte der einzelnen Zellen enthält und worüber der Zugriff auf die gesammte Funktionalität von Excel möglich ist, z.B. die Spalte B auf die Schriftart "Courier New" setzen:
    excelPerl -ane "$C[1]->{Font}->{Name} = 'Courier New'" -f datei.xls
    @F und @C kann man natürlich auch kombinieren.
    Weiters gibt es seit V0.12 die Argumente -begin und -end, womit man Code angeben kann, der vor bzw. nach der Ausführung der while-Schleife ausgeführt wird, z.B.
    excelPerl.pl -begin "use Text::CSV_XS; $csv = Text::CSV_XS->new( {sep_char => ';', binary => 1} )" ^
        -ane "$csv->combine(@F); print $csv->string, $/" -f datei.xls
    oder:
    excelPerl.pl -ane "$x{ $F[0] }++" -end "use Data::Dumper; print Dumper \%x" -f datei.xls
    Die Veränderungen werden nicht automatisch gespeichert, sondern die Excel-Datei wird offen gelassen und man kann selbst entscheiden, ob man die Änderungen speichern will oder nicht. Durch diesen Weg ist es auch möglich, Dateien zu verändern, die gerade in Excel geöffnet sind.
    Weitere Informationen: siehe perldoc excelPerl

    Download ExcelPerl 0.13. Die Zip-Datei entpacken und beide Dateien ins selbe Verzeichnis stellen. Wenn eine ActivestatePerl-Version größer gleich 5.8 installiert ist, sind keine weiteren Aktionen nötig.


  4. Tk-Mines: Ein kleines nettes Strategiespiel, das ich auf Anregung eines Bekannten hin gecoded habe.
    Screenshot mines V0.02

    Auf einem Brett sind eine bestimmte Anzahl von Minen verteilt, die man durch logisches Denkvermögen finden muß. Zu Beginn sind die Inhalte aller Felder unbekannt (also mit ? versehen). Dabei hat man die Zahlen am Rahmen als Hilfe, die angeben, wie viele Felder jeweils zwischen zwei Minen(-gruppen) liegen. Durch einen Klick mit der rechten Maustaste kann man ein Feld auf ein '+' setzen, was bedeutet, daß hier eine Mine liegt (Achtung: man kann dieses Feld danach immer noch mit der linken Maustaste anklicken!!!). Wenn man überzeugt ist, daß ein Feld leer ist, kann man es durch einen Klick mit der linken Maustaste aufdecken. Wenn es wirklich leer ist, wird es leer; falls man jedoch eine Mine angeklickt hat, ist das Spiel verloren (Eine Mine wird durch das Zeichen '*' dargestellt). In der Version 0.03 kommt ein wenig mehr an Farbe, und ein Feld, das man mit einem '+' als Mine markiert hat, muß erst wieder durch einen zweiten Rechtsklick entsperrt werden, bevor es auf einen Click mit der linken Maustaste reagiert. In der Version V0.07 kam noch folgendes Feature hinzu: wenn man in einer Reihe oder Spalte (z.B. der Reihe 7,1) alle Minen markiert hat und dann auf ein Randfeld klickt (z.B. 7,1), dann werden alle Felder dieser Reihe (bzw. Spalte) aufgedeckt.
    Version 0.08: diverse Bugfixes. Die Version 0.12 ist ein komplettes Rewrite und Redesign, und in der Version 0.13 kam eine externe Konfigurationsdatei hinzu (Tk-Mines.ini), und die sprachspezifischen Sachen wurden in externe Dateien ausgelagert ( derzeit Deutsch: Tk-Mines-language_de.txt und Englisch: Tk-Mines-language_en.txt)






Letztes Update dieser Seite: Sunday, 25-Nov-2007 12:53:03 CET