Projects
Publications
Archive
About










    Permalink
    24
    02
    2009
  1. Mail | via Telnet persöhnlich abliefern

    Als ich vor kurzem meine Anmeldung zur Abschlussprüfung über die Post abgeschicken wollte, hab ich beim eintragen der Adresse gemerkt das die IHK nur 2 Häuser neben der Post ist bei der ich den Brief aufgeben wollte =) Also hab ich den Brief kurzerhand selbst zur IHK gebracht.
    So ähnlich funktioniert das auch mit E-Mails.

    Via Telnet-Verbindung zum Port 25 des Mailservers:
    telnet zwetschge.org 25

    identifizierung via helo:
    helo hostname

    Absender übermitteln
    mail from: flo@noqqe.de

    Empfänger übermitteln
    rcpt to: root@zwetschge.org

    Mail-Inhalt übermitteln
    data
    text
    text text

    Inhalt stoppen:
    .

    Message fertig übermittelt.Beenden:
    quit

    Ein netter alternativ-Weg zum versenden von Mails. Wird hauptsächlich zu Testzwecken von Mailservern verwendet. Wenn jemand es probieren will :) Meine email habt ihr ja jetzt :)

  2. Permalink
    24
    02
    2009
  3. html | Favicon in WordPress

    Auch ein Vorteil der Self-Hosting Bloglösung :) Hab eben ein Favicon eingebaut. Aus dem Logo das auch schon im Banner ist. Muss zugeben es ist nicht optimal für eine 16×16 Auflösung geeignet aber das geht glaube ich ok. Ein Favicon wird in der header.php im head-Bereich eingefügt.

    <link rel="shortcut icon" href="http://zwetschge.org/statics/favicon.ico" >

    Greez, Flo

  4. Permalink
    23
    02
    2009
  5. noqqe.de – relaunch des blogs

    jap. Richtig gelesen. noqqe.de wird umgestellt. Weg von wordpress.com hoste ich den Blog nun selbst auf zwetschge(meinem Server). Eine aktuelle Version von wordpress.org 2.7.1 gibt mir mehr “Freiheit” in der Gestaltung des Blogs als ich erwartet hätte. Schön sauber und geschmeidig mit neuem Design und Banner hab ich jetzt viel mehr Möglichkeiten an dem Blog herumzuschrauben – Statistiken zu analysieren – Plugins einzubauen – eigene PHP und JavaScripte in die SideBar zu implementieren und noch viel mehr :)

    Und noch ganz wichtig! Der RSS-Feed wird umgestellt! Die neue FeedURL wird noch gepostet wenn die DNS Einstellungen alle geregelt sind.

    Im allgemeinen aber ändert sich für den Normal-Leser nichts. Auf noqqe.de ist der Blog wie gehabt zu erreichen.

    Ich freu mich aufs neue Bloggen :) und hoffe mal das neue Layout gefällt!

    Gruß Flo

  6. Permalink
    18
    02
    2009
  7. MySQL in PHP

    Zuerstmal, lief mein Test über MySQL in der Schule super :) Nachdem ich jetzt sowohl in PHP als auch MySQL unterrichtet wurde, hat mich dann doch intressiert wie sich die beiden in Kombination verhalten :) Die Datenbank die ich für “A-byte-of-MySQL” erstellt habe diente als Test-Objekt:

    Wie fange ich an?
    mysql_connect(‘server’,'user’,'passwort’);
    # Verbinde zu mysql auf Server mit Benutzer und folgendem Passwort

    Wie wähle ich die zu verwendende Datenbank aus?
    mysql_select_db(“arbeit”);

    Wie definiere ich den Befehl der auszführen ist?
    $sql=”SELECT * FROM kollegen order by rand();”;

    Wie führe ich ihn aus?
    $result = mysql_query($sql) OR die(mysql_error());

    Wie gebe ich das Ergebnis aus?
    while ($row = mysql_fetch_assoc($result))
    {
    echo $row['ID'].” “.$row['Name'].” “.$row['Gehalt'].” “.$row['Bereich'].”
    “;
    }
    # Schleife: Für jeden Eintrag in der Datenbank eine Zeile erzeugen.

    Verbindung schliessen.
    mysql_close();
    ?>

    Komplett:

    <html>
    <?php
    mysql_connect(‘server’,'user’,'passwort’);
    mysql_select_db(“arbeit”); //Auswahl der DB
    $sql=”SELECT * FROM kollegen order by rand();”;
    $result = mysql_query($sql) OR die(mysql_error());
    while ($row = mysql_fetch_assoc($result))
    {
    echo $row['ID'].” “.$row['Name'].” “.$row['Gehalt'].” “.$row['Bereich'].”<br>”;
    }
    ?>
    </html>

    Ergebnis:  http://zwetschge.org/stuff/sql.php

  8. Permalink
    12
    02
    2009
  9. A-byte-of-MySQL. Eine Kurzreferenz

    Da diese Referenzen-Sache beim letzten mal mit IPv6 schon so gut geklappt hat, hab ich für die morgige Software-Arbeit über MySQL wieder eine Kurzzusammenfassung geschrieben und in Publications veröffentlicht. Sozusagen ein kurzes how to für mysql. Viel Spaß beim lesen.

    lernend,
    Flo

  10. Permalink
    12
    02
    2009
  11. Ubuntu 8.10 Widescreen

    Wie im vorherigen Post schon beschrieben, Upgrade Problem. Durch simples erstellen via “touch /boot/System.map-2.6.24-18-generic’” hab ich das ganze letztendlich behoben. Das System findet eine Datei mit Namen die gelöscht werden soll, System löscht und System ist zufrieden.
    Nicht zufrieden bin ich allerdings weiterhin mit meiner xorg.conf. Die Auflösung will einfach nicht WideScreen annehmen. Verschiede alte Configs mit ModeLines, sowie automatisch mit nvidia-xconfig genierte xorg.confs will das System nicht annehmen :-/.
    *seufz*

  12. Permalink
    09
    02
    2009
  13. Ubuntu Upgrade 8.04 – 8.10 Problem

    Ich frage mich gerade was denn eigentlich an einem System-Update so schwer sein kann. Mein Mittlerweile 4. Ubuntu Distributionsupgrade und auch jetzt bestätigt sich wieder die Weisheit “never change a running system” bzw “kein ubuntu update ohne probleme”. Ein paar mal hab ich es ja schon verlauten lassen. Ich verwende 4 Monate nach Release von 8.10 immernoch 8.04. Ja, genau. Das dacht ich mir auch. Warum macht der Spinner das? Ja. Ich kann es euch sagen. Angst. Die sich jetzt mal wieder bestätigt hat.

    root@kiwi:/home/npx# apt-get upgrade
    Paketlisten werden gelesen... Fertig
    Abhängigkeitsbaum wird aufgebaut
    Lese Status-Informationen ein... Fertig
    Die folgenden Pakete werden ENTFERNT:
    linux-ubuntu-modules-2.6.24-18-generic
    0 aktualisiert, 0 neu installiert, 1 zu entfernen und 0 nicht aktualisiert.
    1 nicht vollständig installiert oder entfernt.
    Nach dieser Operation werden 15,3MB Plattenplatz freigegeben.
    Möchten Sie fortfahren [J/n]? j
    (Lese Datenbank ... 160214 Dateien und Verzeichnisse sind derzeit installiert.)
    Entferne linux-ubuntu-modules-2.6.24-18-generic ...
    FATAL: Could not open '/boot/System.map-2.6.24-18-generic': No such file or directory
    update-initramfs: Generating /boot/initrd.img-2.6.24-18-generic
    Cannot find /lib/modules/2.6.24-18-generic
    update-initramfs: failed for /boot/initrd.img-2.6.24-18-generic
    dpkg: Fehler beim Bearbeiten von linux-ubuntu-modules-2.6.24-18-generic (--remove):
    Unterprozess post-removal script gab den Fehlerwert 1 zurück
    Fehler traten auf beim Bearbeiten von:
    linux-ubuntu-modules-2.6.24-18-generic
    E: Sub-process /usr/bin/dpkg returned an error code (1)

    Von den Problemen mit der Auflösung meines WideScreen Bildschirmes möcht ich jetzt garnicht erst anfangen zu reden!
    *grr* Herzlichen Glückwunsch

  14. Permalink
    09
    02
    2009
  15. Ein weiteres Opfer der Musik-Industrie

    Sozusagen mein Lieblings-Internet-Dienst Deezer.com hat momentan enorme Probleme. Deezer ist ein Music-on-demand Service, der Online Musik auf abruf spielt. Und das in großem Umfang inklusive weniger bekannter Interpreten. Mit dem hinzufügen von ganzen Alben und dem zusammenstellen von Playlisten fand ich den Service richtig toll. Heute hab ich mich wie jeden Tag eingeloggt und lies mich vom schönen neuen Design überraschen. Noch eleganter und noch mehr Web2.0 ^^. Nur ein Problem. Circa 80% meiner Musik-Titel sind nicht mehr abspielbar. Nach kurzem durch die gegend gesearche fand ich dann auch folgenden Blogpost. Ums kurz zu machen hat wieder mal die Musik-Industrie zugeschlagen und viele Platten-Firmen haben deezer und anderen Music-on-demand Services untersagt genannte Titel/Interpreten/Alben zur Verfügung zu stellen. Ganz Tolle Sache. Es heisst zwar es wird für die Rechte gekämpft, aber ehrlich gesagt bin ich relativ zuversichtlich das es die Titel nie wieder bei Deezer zu hören gibt. Sehr schade.Viel Glück ans Deezer-Team!

    *seufz*

  16. Permalink
    07
    02
    2009
  17. Der Zufall ist parteiisch

    Seit kurzem habe ich ja rechts ein kleines Widget das alle 5 min ein zufälliges Bild aus einem Pool auswählt und einsetzt. Das dazugehörige Skript habe ich ja auf CodeCocktail gepostet :) Wie man dem ganze leicht entnehmen kann lasse ich das Skript mitloggen wann und wo welches Bild verwendet wurde. Das mache ich nicht um die Load auf zwetschge zu erhöhen sondern um Allerlei lustige Sachen damit anstellen zu können. Mit ein bisschen spicken in “100 Linux Server Hacks” hab ich jetzt aus:

    07-02-2009-11:00:01 cp /var/www/emotes/emote46.gif /var/www/emotes/mainemote/emote.gif
    07-02-2009-11:05:01 cp /var/www/emotes/emote17.gif /var/www/emotes/mainemote/emote.gif
    07-02-2009-11:10:01 cp /var/www/emotes/emote21.gif /var/www/emotes/mainemote/emote.gif
    07-02-2009-11:15:01 cp /var/www/emotes/emote12.gif /var/www/emotes/mainemote/emote.gif
    07-02-2009-11:20:01 cp /var/www/emotes/emote43.gif /var/www/emotes/mainemote/emote.gif
    07-02-2009-11:25:01 cp /var/www/emotes/emote22.gif /var/www/emotes/mainemote/emote.gif
    07-02-2009-11:30:01 cp /var/www/emotes/emote23.gif /var/www/emotes/mainemote/emote.gif
    07-02-2009-11:35:01 cp /var/www/emotes/emote3.gif /var/www/emotes/mainemote/emote.gif
    ... (1600 weitere Zeilen)

    folgendes er-greppt, gesortet und geuniqed:

    7 : /var/www/emotes/emote28.gif
    9 : /var/www/emotes/emote26.gif
    9 : /var/www/emotes/emote39.gif
    9 : /var/www/emotes/emote48.gif
    9 : /var/www/emotes/emote49.gif
    10 : /var/www/emotes/emote24.gif
    10 : /var/www/emotes/emote34.gif
    10 : /var/www/emotes/emote41.gif
    10 : /var/www/emotes/emote47.gif
    11 : /var/www/emotes/emote22.gif
    11 : /var/www/emotes/emote29.gif
    12 : /var/www/emotes/emote46.gif
    13 : /var/www/emotes/emote32.gif
    13 : /var/www/emotes/emote37.gif
    14 : /var/www/emotes/emote25.gif
    14 : /var/www/emotes/emote33.gif
    14 : /var/www/emotes/emote42.gif
    15 : /var/www/emotes/emote31.gif
    15 : /var/www/emotes/emote35.gif
    15 : /var/www/emotes/emote36.gif
    15 : /var/www/emotes/emote44.gif
    15 : /var/www/emotes/emote45.gif
    16 : /var/www/emotes/emote43.gif
    17 : /var/www/emotes/emote23.gif
    18 : /var/www/emotes/emote38.gif
    19 : /var/www/emotes/emote27.gif
    19 : /var/www/emotes/emote30.gif
    19 : /var/www/emotes/emote40.gif
    48 : /var/www/emotes/emote4.gif
    49 : /var/www/emotes/emote10.gif
    51 : /var/www/emotes/emote11.gif
    53 : /var/www/emotes/emote0.gif
    53 : /var/www/emotes/emote14.gif
    53 : /var/www/emotes/emote18.gif
    56 : /var/www/emotes/emote3.gif
    57 : /var/www/emotes/emote15.gif
    57 : /var/www/emotes/emote16.gif
    57 : /var/www/emotes/emote5.gif
    58 : /var/www/emotes/emote19.gif
    58 : /var/www/emotes/emote1.gif
    58 : /var/www/emotes/emote7.gif
    59 : /var/www/emotes/emote12.gif
    59 : /var/www/emotes/emote17.gif
    59 : /var/www/emotes/emote9.gif
    62 : /var/www/emotes/emote21.gif
    63 : /var/www/emotes/emote8.gif
    67 : /var/www/emotes/emote2.gif
    71 : /var/www/emotes/emote6.gif
    74 : /var/www/emotes/emote13.gif
    74 : /var/www/emotes/emote20.gif

    Grob gesagt ist emote20 das am öftesten per Zufall gewählte GIF und das 28. das am wenigsten ausgewählte. Wie das zu machen ist ist garnicht so schwer wies eigentlich aussieht :) Der Befehl lautet wie folgt:
    for x in `cat /var/log/emote.log | awk '{print $3 }' | sort | uniq`; do grep $x /var/log/emote.log | wc -l | tr -d '\n'; echo " : $x"; done | sort -k 2 -rn | sort -n >> /var/log/emote.score.log

    Es sieht am Anfang etwas seltsam aus das gebe ich zu. Aber eigentlich ist es nicht anderes als eine Schleife die Systematisch eine geordnete Ausgabe durchgeht :) . Um diese lange Kette aus Befehlen nicht jedesmal eintippen zu müssen, hab ich mir einen CronJob eingerichtet der eben diesen Score generiert, in eine Datei speichert und mir täglich um 6:25 per Email zusendet.
    Kontrollwahn ole.

  18. Permalink
    03
    02
    2009
  19. Teeworlds – Server How To

    Durch Crackpod und AtzeEgge von Codecocktail bin ich auf Teeworlds aufmerksam geworden. Crackpod der einen Aimbot dafür geschrieben hat und AtzeEgge der wie jeder normale Mensch fair spielt ;) Das ganze ist ein extrem witzig und dynamisches 2D ShooterSpiel geworden. Man könnte es auch Echtzeit Worms nennen :) Das es auch noch OpenSource ist macht den Shooter nur noch attraktiver :) Es lief letztlich drauf hinaus das mein Server zwetschge.org für einen GameServer herhalten muss :D .

    Der Server ist über die MasterServer von Teeworlds erreichbar unter dem Namen [JustForFun]zwetschge.org|noqqe.de und wird (was mich wundert) mit gutem Ping relativ häufig bespielt(auch via IP-Connect mit zwetschge.org:8303 erreichbar). Sollte jemand das Bedürfnis bekommen mich oder die anderen von CodeCocktail mal “ownen” oder “bashen” zu wollen – kann dieser jemand das nun tun. Ich stell damit sogar die Mittel :) .

    Um aber mal zum technischen Teil zu kommen: Ist ein Teeworlds-Server sehr einfach aufzusetzen.

    • Aktuelle Version runterladen : http://teeworlds.com
    • teeworlds0.x.x.tar.gz entpacken (wahlweise mit unpack ;) keine Schleichwerbung eigentlich..)
    • mit dem Wechsel in das entsprechende Verzeichnis und ausführen ” ./teeworlds_srv” kann der Server das erste mal gestartet werden (allerdings ohne Konfiguration! nicht zu empfehlen)
    • Um die gewünschte Konfiguration einzustellen gibt es eine Liste mit Config-Details auf http://www.teeworlds.com/?page=docs&wiki=SettingUpAServer
    • ” vim twserver.cfg” anlegen und  mit Konfigurationen befüllen. Beispiel Konfiguration:
      sv_name Teeworlds sample dm
      sv_map dm1
      sv_scorelimit 20
      sv_timelimit 10
      sv_gametype dm
      sv_rcon_password remember
      sv_motd Teeworlds sample dm configuration
      sv_max_clients 12
      sv_spectator_slots 10
    • Den Server mit Configfile starten ” ./teeworlds_srv -f twserver.cfg “
    • Happy Bashing.

    So würde das gehen. Wenn da nicht noch ssh Session ins Spiel kommen würde. Ich muss sagen das teeworlds_srv eine kleine Macke hat. Diese Executeable öffnet einen Prozess. Schön oder? Wäre meine ssh-Session damit nicht unbrauchbar wärs schön. Der Prozess spielt sich quasi im Vordergrund ab und startet nicht wie üblich einen Hintergrundprozess mit dem ich weiter arbeiten kann. Sobald ich nun aber mein Terminal Fenster schliesse… wars das mit meinem Game-Server. Abhilfe schafft aber ein Paket namens screen das im Debian Repository ist. Dieses Programm zielt genau auf solche Fälle ab.

    • apt-get install screen
    • ” screen ./teeworlds_srv -f twserver.cfg ” (öffnet den Vordergrund Prozess in einem Virtuellen Terminal in dem der TeeworldsServer jetzt läuft)
    • mit Strg+A+D kann man diesen Modus nun wieder verlassen und die SSH Session schliessen.
    • Angenommen man will den Server aber trotzdem nachher noch einmal begutachten: ” screen -r ” zeigt offene Screens an. So ist das Problem super gelöst

    Der Server auf zwetschge.org bleibt denke ich längerfristig bestehen und wird in die Projects hinzugefügt. Vielleicht sieht man sich ja mal :)
    Happy Bashing

Older »