Der Code-Schnippsel-Thread

  • Weil ich in den letzten beiden Tagen zweimal das Bedürfnis hatte ein paar Codeschnipssel zu posten, aber dafür keinen Thread eröffnen wollte und es doch würdig genug für den On-Topic halte, hier einen Thread für kleine Codeschnippsel aller Art.

    Um gleich anzufangen, ein bisschen PHP-Code. Weil ich mich so eben entschieden habe, PHPs Templatefunktionen wahrzunehmen (weil schneller als jedes auf PHP basierende Templatesystem) und desweiteren dies mit den kurzen PHP-Tags machen möchte (<? und <?=), diese aber (zurrecht) auf Servern abgeschaltet sind, hier Streamfilter der die Short-Tags durch die lange Version ersetzt:

  • Objektserialisierung in Perl ist toll:

    Das gespeicherte Objekt sieht dann so aus:

  • Zitat von chiaki

    sieht kompliziert aus

    Liegt aber wohl eher an Perl. Da sehen mache Sachen komisch aus ;)

    Naja, in der save Methode wird das Objekt einfach in ne File reingedumpt.
    In der open-Methode les ich das File wieder zeilenweise in $s (statt map könnt man auch ne while-schleife nehmen). Danach mach ich einfach ein eval um $s und bekomm das als Objekt dann wieder zurück.

  • Ein kurzes LaTeX-Code-Schnippsel:

    Es liest eine pdf (Querformat, A4) ein, teilt die Seite in der Mitte und erzeugt ein neues pdf Größe A5 mit den einzelnen Seiten:

    bildliche Erklärung:

    Spoiler anzeigen


    Code:

    Spoiler anzeigen

    Einmal editiert, zuletzt von klemmi (9. April 2010 um 20:50)

  • Auch kein Programmiercode, aber wenigstens XML. Fenster-Management via Tastatur in Openbox. Mit Caps Lock wird der Modus aktiviert und dann kann man über entsprechende Modifier und Pfeiltasten die Fenster verschieben und vergrössern und so:

    Spoiler anzeigen
  • Teilweise wieder eine Config-File, aber ein vollwertiges Programm an sich eigentlich:

    Ein Lua-Script für imapfilter (funktioniert auch nur damit, weils dessen teilweise Funktionen verwendet) und zenity (GNOME XDialog Clone), was in meinen beiden Postfächern nach Mails prüft und falls welche vorhanden sind nen Icon ins Systray malt. Codetechnisch ggf. noch optimierungswürdig, hab die Lua-Syntax noch nicht ganz raus.

  • Hab mir mal eben schnell ein Pseudo-Volume-Notify Dingens gemacht:
    (weiß aber noch selber nicht ob ichs denn nutzen soll :>)

  • weil ich gerade mal wieder auf nen DOS tripp bin ;) hier mal wie man nen reboot machen kann unter dos
    ne textdatei erstellen mit folgendem inhalt

    dann debug <reboot.txt <-oder wie auch immer ihr eure textdatei nennt

    dann habt ihr ne reboot.com ;)

    X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*

    Früh aufstehen ist der erste Schritt in die falsche Richtung.

    Uri Geller verbiegt Löffel. Na und, Maggi macht Knoten rein!

    Ich bin im WH Forum seit dem 11.05.2003 ... wow

  • Zitat von DosAmp

    ich weiss ;) aber warum einfach wenns auch schwer geht
    denn mit einem

    Code
    ECHO G=FFFF:0000 | debug

    kann man lange noch kein eindruck schinden ;)

    aso p.s. hab noch was gefunden

    Code
    @ECHO E 0040:0072 34 12 >%temp%.\reboot.dat
    @ECHO G=FFFF:0000 >>%temp%.\reboot.dat
    @DEBUG.exe <%temp%.\reboot.dat >nul

    X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*

    Früh aufstehen ist der erste Schritt in die falsche Richtung.

    Uri Geller verbiegt Löffel. Na und, Maggi macht Knoten rein!

    Ich bin im WH Forum seit dem 11.05.2003 ... wow

  • Nichts spektatuläres, aber für spätere Verwendung hier mal zwischengespeichert. Ein Lua-Pattern für ein JS-ähnliches OOP-System mit Objektinstanzierung.

  • Script, das mir die Arbeit beim Wechseln meines Wallpapers abnimmt.

    Code
    #! /bin/bash
    mv wallpaper.png wallpaper.png.bak
    convert $1 -resize 1400x1050^ \
        -gravity center -extent 1400x1050 wallpaper.png
    pkill feh
    feh --bg-scale /home/julian/Desktop/wallpaper.png &
  • Ein Skript, welches bei booten ein Wallpaper auswählt:

    Code
    #! /bin/bash
    cd ~/Bilder/Wallpaper
    eval "FILES=( $(ls -Q *.jpg) )"
    INDEX=$(expr $RANDOM % ${#FILES[@]} )
    feh --bg-center ${FILES[$INDEX]}

    THX gandro.

  • Bash
    #!/bin/bash
    # 'true' kann man natürlich durch Abbruchbedingung ersetzen
    # z. B. [[ ! -f /var/run/stoprecording ]]
    while true; do
            gst-launch-0.10 -q v4l2src num-buffers=1 ! pngenc ! filesink location=webcam.png &>/dev/null
            convert webcam.png -resize 320x240 -quality 75 webcam.jpg
            rm webcam.png
            sleep 10s
    done

    Ein kleines Skript, um von einer Webcam regelmäßig Schnappschüsse zu machen, wenn ihr Ausgabeformat wie das meiner alten Kamera nur von gstreamer unterstützt wird. gst-launch-0.10 ggf. durch die aktuelle Version von gstreamer ersetzen, falls diese sich mal irgendwann ändert. Imagemagick kann man je nach Geschmack natürlich austauschen. ;)

  • Mein Startskript für siginfo-ng… nicht schön, verwendet nicht /var/run fürs Pidfile (weils [noch] keine Möglichkeit hat, Root-Rechte nach dem Start zu verwerfen) und braucht sudo (weil su mit oder ohne Login-Shell erst nach dem Passwort für nobody fragt), funktioniert aber. :D

  • Dämliches Script, um aus MP3s eine Audio-CD zu brennen:

    Kann sein, dass es buggy ist, habs nur einmal grade eben getestet. Ging aber.

  • Zitat von Blue-Fox

    Muss man dann nicht ein Passwort beim Start eingeben?


    Nö, das Skript wird ja beim Start als root gestartet und root darf normalerweise alles ohne Passwort im Namen eines Benutzers machen, wie es auch in der Standard-sudoers festgelegt ist. Bloß das übliche su stört sich halt daran, dass die vorgegebenen Systemkonten wie daemon oder nobody gesperrt sind und man deswegen keine Shell für diese Accounts starten kann. Wer ein extra Benutzeraccount für Siginfo anlegt und nicht sudo benutzen will, der hat halt dieser Probleme nicht und kann auch

    Code
    su -c "/usr/bin/siginfo-ng -d -i $INTERVAL -p /tmp/.siginfo-ng.pid" siginfo &>/dev/null

    oder ähnlich schreiben.

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!