Aus Linux-Magazin 01/2008

Auf den Punkt gebracht

Haben Sie Anregungen, Statements oder Kommentare? Dann schreiben Sie an [redaktion@linux-magazin.de]. Die Redaktion behält es sich vor, die Zuschriften und Leserbriefe zu kürzen. Sie veröffentlicht alle Beiträge mit Namen, sofern der Autor nicht ausdrücklich Anonymität wünscht .

Lisp statt Perl

12/07, S. 113: Ich mag Programmierwettbewerbe, aber in diesem Fall haben mich weder die Aufgabe noch die Preise gereizt. Aber es kann ja nicht sein, dass Ihr keine Lisp-Lösung bekommt! Nachher heißt es, es wäre eine schwierige Sprache. Die langweilige Variante ist natürlich in jeder Sprache ähnlich einfach und kommt zusammen mit dem umstrittenen »loop«-Makro recht elegant daher:

#! /usr/bin/clisp
(loop repeat 1000
      for r = (random 6)
      count (< r 3) into a
      count (< r 2) into b
      finally (format t "~,2,2f %" (/ b a)) )

Die Lösungen gefallen mir aber alle nicht, man erkennt das Problem kaum wieder. Ich habe noch eine lispigere Variante mit einer genaueren Simulation des Problems: [ftp://ftp.linux-magazin.de/pub/magazin/2008/01/Leserbriefe]. Macht unbedingt mehr Programmierwettbewerbe, mit interessanteren Aufgaben und weniger Spracheinschränkungen!

Christian Sievers, per E-Mail

Alles an Bord

11/07, S. 124: mit Interesse habe ich Michael Schillis Beitrag im Linux-Magazin 11/07 gelesen. Hierzu eine kleine Anmerkung: Ich vermute, dass mancher Vi-Nutzer sich einfach mit »:%!nl -ba -nrz -w2« beholfen hätte, nachdem er zum Beispiel mit einem Sprung ans Dateiende die Ausgabebreite 2 ermittelt hat.

Wenn es automatisch gehen soll, dann reichen die Bordmittel bereits aus, etwa folgendermaßen:

map <F12>  <Esc>:exe ':%!nl -ba -nrz -w'.strlen(line("$"))<CR>
vmap <F12>  <Esc>:exe ":'<,'>!nl -ba -nrz -w".strlen(line("'>")-line("'<")+1)<CR>

Happy Vimming!

Fritz Mehner, per E-Mail

Bash kann mehr

11/07, S. 53: Das Thema GUI versus Konsole fand ich in Peter Kreussels Rubrik-Einführung sehr gut behandelt, besonders die Aspekte bei der Serienbrieferstellung. Das als Screenshot abgedruckte Shellskript (Abbildung 1) ist aber kein gutes Beispiel, da stellen sich mir gleich alle Haare auf: »`ls */*.EPS`« ist im günstigsten Fall ein weißer Schimmel, im ungünstigen Fall (Leerzeichen im Dateinamen) führt es sogar zu Fehlern. Ein einfaches »for i in */*.EPS; …« wäre besser.

Abbildung 1: Dieser Screenshot sollte die Fähigkeiten der Bash symbolisieren – aufmerksame Linuxer fanden ihn haarsträubend.

Abbildung 1: Dieser Screenshot sollte die Fähigkeiten der Bash symbolisieren – aufmerksame Linuxer fanden ihn haarsträubend.

Ebenso gehört »$i« in Anführungszeichen – wegen möglicher Leerzeichen im Dateinamen. Zudem: »`basename $i`« forkt pro Schleifendurchgang und ruft ein externes Programm auf. Besser, weil Bash-intern, ist »”${i##*/}”« (entfernt von »$i« alles bis zum letzten »/«).

Fazit: Mit diesen Änderungen läuft das Skript völlig innerhalb der Bash, die Bildunterschrift “Die Bash übertrifft den Funktionsumfang jedes grafischen Dateimanagers” ist dann noch richtiger!

Für künftige Artikel(-Serien) wünsche ich mir, dass die Aspekte “Wie mache ich das mit einer schönen grafischen Oberfläche?” und “Wie automatisiere ich das per Skript?” so gut berücksichtigt werden wie in der letzten Ausgabe.

Bernhard Bablok, per Mail

Korrektur zum
Perl-Wettbewerb

12/07, S. 118: Das Linux-Magazin 10/07 rief auf Seite 101 zum Perl-Wettbewerb auf. Aus der Masse an Einsendungen wählte die Jury in drei Kategorien insgesamt zehn Gewinner und das Linux-Magazin veröffentlichte sie in Ausgabe 12. Etliche Zuschriften führten zu regem E-Mail-Verkehr innerhalb der Jury, in dessen Verlauf leider ein Nachtrag unterging.

Uwe Kerstan lieferte noch vor Ende des Einsendeschlusses ein Golf-Skript, das es locker auf Platz 2 geschafft hätte (siehe Listing 1, Zeile 1). Uwe legte nach Erscheinen des Hefts sogar noch nach und schrieb ein Skript, das die Ideen aus dem Siegerskript mit seinem eigenen Ansatz kombiniert und damit auf rekordverdächtige 53 Golf-Punkte kommt (Listing 1, Zeile 2). Mit dem etwas schmutzigen Trick, »die« statt »print« zu verwenden, wären sogar 51 Zeichen möglich.

Wir gratulieren Uwe zum zweiten Platz und senden ihm ebenfalls ein Perl-Buch. Die Zahl der Preisträger erhöht sich damit auf elf.

Listing 1: Golf-Platz
2

01 for(0..999){$c=rand 6;$a++if$c<3;$b++if$c<2}die $b/$a*100," %"
02 for(0..999){$t+=($r=rand 6)<3;$b+=$r<2}print$b/$t*100
LINUX-MAGAZIN KAUFEN
EINZELNE AUSGABE Print-Ausgaben Digitale Ausgaben
ABONNEMENTS Print-Abos Digitales Abo
TABLET & SMARTPHONE APPS Readly Logo
E-Mail Benachrichtigung
Benachrichtige mich zu:
0 Kommentare
Älteste
Neuste Beste Bewertung
Inline Feedbacks
Alle Kommentare anzeigen
Nach oben