Quicktip: snom-Screenshot

26 01 2012

Hier ein winziger Tipp, den ich eigentlich nur in den Blog kippe, damit ich einen Ort habe, an dem ich nachschauen kann, sollte ich es vergessen.
Vielleicht kann es ja einer von euch da draußen auch noch gebrauchen.

Wie erstelle ich einen Screenshot des Displays eines snom-Telefons:
Öffne in einem Browser deiner Wahl die URL „http://%5Btelefon-ip-adresse%5D/screen.bmp“ (die eckigen Klammern weglassen). Nun werdet ihr aufgefordert, eure Zugangsdaten einzugeben. Schon hat meinen einen Screenshot im BMP-Format.

Snom 370 Screenshot

Natürlich kann man auch Wget oder Ähnliches nutzen. Dann müsst ihr aber eure Zugangsdaten mit übergeben. Je nach Tool gibt es extra Parameter oder ihr ändert einfach die URL in „http://%5Bbenutzername%5D@%5Bpasswort%5D:%5Btelefon-ip-adresse%5D/screen.bmp“ (auch hier: Die eckigen Klammern weglassen)

Das Ganze funktioniert bei allen snom Tischtelefonen, die einzige Ausnahme stellt hier das snom 300 da.





Howto: Iron Blogger Script (English Version)

20 01 2012

Please excuse my really bad English. I did my best to write this post reasonably understandable.
Perhaps there is someone who helps me and corrects my mistakes.

This howto is available in German too.

As mentioned in my last post, there is the Iron Blogger script running on my server the with some adjustments.

Here is a brief guide on how to install and use this script. I created a new fork on Github and uploaded my changes uploaded there.

In my post I am assuming that you use Debian. Should you use a different system, please adjust the commands and then the package names.

What needs to be installed?

  • git
  • python
  • python-yaml
  • python-dateutil
  • python-mako
  • python-lxml
  • python-feedparser
  • mutt

How do I install the packages?

Run the following command (even if there appears a line break it’s only a single line):

sudo apt-get install git python python-yaml python-dateutil python-mako python-lxml python-feedparser mutt

Your system will load the required packages and install them. If one of the packages already exist, then it is skipped automatically.

How do I get the Iron Blogger script?

Changes into the directory where you want to have the Iron Blogger script later run the following line:

git clone https://github.com/chaosblog/iron-blogger.git

This command creates a directory „iron-blogger“ and downloads the script from Github.

What do I need to prepare?

Create a new page for the list of participants, the title you can choose at will.

Don’t write any text at this page – Any content of this will be overwritten by a generation of participant list.

Navigate in your WordPress admin interface to „Pages“. In the list of available pages appears the newly created one. Ride with the mouse over the link and you remember the ID number of the page, it will be used later.

If the link to the page, for example is https://chaosblog.wordpress.com/wp-admin/post.php?post=2&action=edit, then the ID which you have to remember is 2.

What do I need to adjust?

Currently there is no central configuration file.

  1. render.py
    Edit the File render.py. There you configure the start-date of your Iron Blogger Event.
    At Row 13:
    START = datetime.datetime(2011, 12, 25, 2)
    The dateformat is: yyyy, mm, dd, h
    The year (four digits), the month (two digits), the day (two digits), the hour (24 hour format).
  2. update-participants.py
    Edit file update-participants.py, adjust Rows 10-13 angepasst werden.
    XMLRPC_ENDPOINT = 'http://blog-URL.tld/xmlrpc.php'
    USER = 'username'
    BLOG_ID = 0
    PAGE_ID = 12
    The XMLRPC_ENDPOINT is your blog URL followed by „/xmlrpc.php“ (without quotation marks).
    When your blog URL  is https://chaosblog.wordpress.com so the needed value is https://chaosblog.wordpress.com/xmlrpc.php
    USER your username, used at the blog login page.
    Normally the BLOG_ID is 0 (zero) sein
    PAGE_ID is the remembered ID form your participants page.
  3. weekly-update.py
    Edit weekly-update.py similar to update-participants.py – Rows 11-13 need to be adjusted.
    XMLRPC_ENDPOINT = 'http://blog-URL.tld/xmlrpc.php'
    USER = 'username'
    BLOG_ID = 0
  4. bloggers.yml
    The file bloggers.yml contains the participants.
    username:
    links:
    - [Blogname 01,'http://blog-URL.tld/']
    - [Blogname 02,'http://blog-URL02.tld/']
    name: Jon Doe
    start: YYYY/MM/DD
    username corresponds with the bloggers twitter name. You could write any name – but if you don’t use twitter names, you have to edit the templates which generate the overview and the participants list. Both generate username based links for twitter.
    At the section links you have to enter the blog an user is running.
    Don’t add a feed-URL – they will generated later.
    The field name contains the bloggers realname.
    For blogger which will join the project later, there is the „start“ field.
    Caution:The fees are not calculated backdatedHere’s an example to illustrate:
    chaosblog:
    links:
    - [Chaosblog, 'https://chaosblog.wordpress.com/']
    name: Marcus S.
    start: 2012/01/01
  5. email.txt
    Only a short adjustment – replace at row 3 in the file email.txt the string „addyourmail@here“ with your e-Mail-adress.

How do I run the script?

It is not a single script, but several scripts that work together. Therefore, there is a specific order, you must follow.

  1. Add all participants to bloggers.yml.
  2. Run the script import-feeds.py via console:
    ./import-feeds.py

    The file bloggers.yml will be read and the missing feed-URLs will be added.
  3. Now you update the participants list by running:
    ./update-participants.py
    You will be aked to enter your WordPress password.
    After a few seconds the prompt will return and your participants list was updated.
  4. The determination of new contributions of each participant is done by scan-feeds.py. This script loads one after another feed and stores the titles and addresses of the new posts.
    Run this command:
    ./scan-feeds.py
  5. Go on with a dry run of the weekly results. weekly-update.py  with the parameter -n starts the dry run. No blog post will be done and no email will be send. The second parameter at the dry run is a date, formated YYYY-MM-DD (e.g. 2012-01-19)
    ./weekly-update.py -n 2012-01-19
    The date defines the week for the results. Based on the configured start and the parameter the week will be calculated. It is not necessary to start a week on sunday or monday.
  6. Now it gets seriously.
    Let’s generate a blog post and an email. Run the weekly-update.py script only with the date parameter:
    ./weekly-update.py -n 2012-01-15
    You will be asked once more to enter your WordPress-Password.
    After a few seconds your blog post is created and you will receive an e-mail

Finished. That is quite easy. Isn’t it? 😉

To-do:

  • one configuration file
  • store the wordpress password for automation

I’m going to implement both and when finished I will upload it to github again.

Tip: Created just a new WordPress.com blog and turn into private. This you can use as a playground to test everything.

Another tip: when you created just one new WordPress.com blog or another to whom you turn to private. These you can then use as a playground.





Anleitung: Iron Blogger Skript

20 01 2012

Wie bereits in meinem letzten Beitrag erwähnt, läuft auf meinem Server das Iron Blogger Skript mit einigen Anpassungen.

Hier eine kleine Anleitung, wie ihr das Skript bei euch installieren könnt.

Diese Anleitung gibt es auch in (miesem) Englisch.

Damit niemand meine Änderungen erneut machen muss, habe ich einen Fork auf Github erstellt und meine Änderungen dort wieder hochgeladen.

In meiner Anleitung gehe ich davon aus, dass ihr Debian nutzt. Solltet ihr ein anderes System verwenden, so müsst ihr die Befehle anpassen und evtl. heißen die Paketnamen dann ein wenig anders.

Was muss alles installiert sein?

  • git
  • python
  • python-yaml
  • python-dateutil
  • python-mako
  • python-lxml
  • python-feedparser
  • ledger
  • mutt

Wie installiere ich die Pakete?

Gebt auf der Konsole folgende Zeile ein – auch wenn hier ein Zeilenumbruch angezeigt wird, es ist eine einzige Zeile!:

sudo apt-get install git python python-yaml python-dateutil python-mako python-lxml python-feedparser ledger mutt

Es werden die benötigten Pakete herunter geladen und installiert. Wenn eines der Pakete schon vorhanden ist, dann wird dieses automatisch übersprungen.

Woher bekomme ich das Iron Blogger Skript?

Wechselt auf der Konsole in das Verzeichnis, in dem ihr das Iron Blogger Skript später haben wollt, und führt folgende Zeile aus:

git clone https://github.com/chaosblog/iron-blogger.git

Es wird automatisch ein Verzeichnis „iron-blogger“ angelegt, dieses beinhaltet das Skript.

Was muss ich bei meinem Blog vorbereiten?

Erstellt eine neue Seite (kein Artikel) für die Teilnehmerliste. Verpasst der Seite eine Überschrift nach belieben.

Macht euch keine Mühe Text auf die Seite zu schreiben – jeglicher Inhalt der Seite wird bei einer Generierung der Teilnehmerliste überschrieben.

Navigiert in eurem WordPress-Admininterface zu „Seiten“, in der Auflistung der vorhanden Seite taucht die gerade erzeugte Teilnehmerliste auf. Fahrt mit der Maus über den Link und merkt euch die ID-Nummer der Seite, diese wird später gebraucht.

Wenn der Link zur Seite beispielsweise https://chaosblog.wordpress.com/wp-admin/post.php?post=2&action=edit lautet, dann wäre die ID die ihr euch merken müsst die 2.

Was muss ich anpassen?

Aktuell gibt es noch keine zentrale Konfigurationsdatei, dies werde ich bei Gelegenheit noch ändern. Sobald das geschehen ist, werde ich die Änderungen wieder zu Github hochladen.

  1. render.py
    In der Datei render.py muss der Start eures Iron Blogger Events angepasst werden. Dies ist in Zeile 13 definiert:START = datetime.datetime(2011, 12, 25, 2)Das Datumsformat ist wie folgt: yyyy, mm, dd, h
    Das Jahr (vierstellig), der Monat (zweistellig), der Tag (zweistellig), die Stunde (im 24-Stundenformat).
  2. update-participants.py
    In der Datei update-participants.py müssen die Zeilen 10-13 angepasst werden.XMLRPC_ENDPOINT = 'http://blog-URL.tld/xmlrpc.php'
    USER = 'username'
    BLOG_ID = 0
    PAGE_ID = 12
    Der XMLRPC_ENDPOINT ist die URL eures Blogs gefolgt von „/xmlrpc.php“ (ohne Anführungszeichen).
    Wenn eure Blog-URL z.B. https://chaosblog.wordpress.com heißt, dann wäre der einzutragende Wert https://chaosblog.wordpress.com/xmlrpc.php
    USER ist euer Nutzername, den ihr beim Login eures Blogs nutzt.
    Die BLOG_ID dürfte in den meisten Fällen 0 sein, in Ausnahmefällen muss dies geändert werden.
    PAGE_ID ist die ID der Teilnehmerseite, die wir uns vorhin gemerkt haben.
  3. weekly-update.py
    In der Datei weekly-update.py müssen analog zur Datei update-participants.py die Zeilen 11-13 angepasst. werden.XMLRPC_ENDPOINT = 'http://blog-URL.tld/xmlrpc.php'
    USER = 'username'
    BLOG_ID = 0
    Diesmal muss allerdings keine PAGE_ID angegeben werden, da die wöchentlich geposteten Beiträge Artikel und keine Seiten sind.
  4. bloggers.yml
    Die Datei bloggers.yml enthält die Blogger die an eurer Iron Blogger Aktion teilnehmen.username:
    links:
    - [Blogname 01,'http://blog-URL.tld/']
    - [Blogname 02,'http://blog-URL02.tld/']
    name: Jon Doe
    start: YYYY/MM/DD
    Der username entspricht dem Nick des Bloggers auf Twitter. Solltet ihr auch Blogger ohne Twitteraccount haben, so schreibt hier einen Nutzernamen hin, den ihr euch ausdenkt – allerdings müsst ihr dann auch die Templates anpassen, die die Auswertung und die Teilnehmerliste generieren – hier wird basierend auf dem Usernamen ein Link zu Twitter generiert.
    Im Abschnitt links tragt ihr den oder die Blogs ein, die ein einzelner Blogger betreibt. Hier werden nur ein Name und ein Link eingetragen – eine Feed-URL wird später automatisch ermittelt und eingetragen.
    Das Feld name erhält den Klarnamen, bzw. dass was als Klarname angezeigt werden soll.
    Damit auch nach dem Start der Aktion neue Teilnehmer hinzustoßen können, gibt es das Feld start. Dort wird eingetragen, ab wann ein Nutzer in die Wertung einfließt.
    Achtung:Wenn ihr einen Wert in der Vergangenheit eintragt, heißt es nicht, dass für den User auch rückwirkend die Gebühren berechnet werden!Zum besseren Verständnis hier ein Beispiel:chaosblog:
    links:
    - [Chaosblog, 'https://chaosblog.wordpress.com/']
    name: Marcus S.
    start: 2012/01/01
  5. email.txt
    Nun eine kleine Änderung. In der Datei email.txt müsst ihr in Zeile 3 die Zeichenkette „addyourmail@here“ durch eure E-Mail-Adresse ersetzen.

Wie führe ich das Skript aus?

In Wirklichkeit ist es nicht ein einzelnes Skript, sondern mehrere Skripte, die zusammenarbeiten. Daher gibt es eine bestimmte Reihenfolge, die ihr einhalten müsst.

  1. Tragt alle Teilnehmer wie oben beschrieben in die Datei bloggers.yml ein.
  2. Führt das Skript import-feeds.py durch Eingabe von
    ./import-feeds.py
    aus. Die Datei bloggers.yml wird gelesen und zu allen Blog die noch keine Feed-URL eingetragen haben, wird die Feed-URL erzeugt.
  3. Nun könnt ihr die Teilnehmerliste auf eurem Blog aktualisieren lassen. Dies geschieht wieder auf der Konsole, diesmal ist der Befehl:
    ./update-participants.py
    Ihr werdet nun aufgefordert, euer Passwort einzugeben – dies ist das Passwort mit dem ihr euch auch im WordPress einloggt.
    Nach einigen Sekunden erscheint wieder der Eingabeprompt und die Teilnehmerliste eures Blogs wurde aktualisiert.
  4. Die Ermittlung der neuen Beiträge der einzelnen Teilnehmer übernimmt scan-feeds.py. Dieses Skript lädt nacheinander alle Feeds der Blogs und speichert die Titel und die Adressen der neuen Beiträge. Dies geschieht via:
    ./scan-feeds.py
  5. Nun könnt ihr einen Probelauf des Auswertungsskripts weekly-update.py starten. Der Parameter -n sorgt für einen Probelauf – es wird keine Mail verschickt und kein Blogartikel erzeugt. Allerdings wird der Text, der Mail, die generiert wird, auf der Konsole ausgegeben. Als zweiten Parameter beim Probelauf erwartet das Skript ein Datum im Format YYYY-MM-DD (z.B. 2012-01-19)
    ./weekly-update.py -n 2012-01-19
    Das Datum definiert die Woche für die die Auswertung erzeugt wird. Basierend auf dem Parameter und dem weiter oben konfigurierten Start-Datum wird die Woche berechnet. Für das Skript muss eine Woche nicht zwingend mit Sonntag oder Montag beginnen.
  6. Jetzt wird es ernst. Wir lassen nun den Blogbeitrag mit der Auswertung und die E-Mail dazu erzeugen. Wieder wird das Skript weekly-update.py ausgeführt, diesmal wird allerdings nur ein Parameter, das Datum, übergeben.
    ./weekly-update.py -n 2012-01-15
    Wie bei der Aktualisierung der Teilnehmerliste werdet ihr auch hier nach eurem WordPress-Passwort gefragt.
    Nach einigen Sekunden ist der Blogpost erstellt und ihr solltet eine neue E-Mail in eurem Postfach vorfinden.

Fertig. War doch gar nicht schwer, oder? 😉

Was jetzt noch fehlt, ist eine zentrale Konfigurationsdatei, in der man alle nötigen Änderungen zentral vornehmen kann.
Des Weiteren sollte es noch möglich sein, das WordPress-Passwort zu hinterlegen, damit das Skript auch voll automatisiert ausgeführt werden kann.
Eine Verbesserung wäre auch das Auswertungsskript quasi „lautlos“ laufen zu lassen – es wird keine Mail verschickt und kein Blogpost erstellt – aber die Finanzen werden aktualisiert. Damit könnte man das Skript auch ohne Weiteres bei bestehenden Iron Blogger Projekten einsetzen.

Beides werde ich im Laufe der Zeit noch implementieren und auf Github hochladen.

Noch ein Tipp: Legt euch bei WordPress.com einfach einen neuen bzw. einen weiteren Blog an, den ihr auf privat schaltet. Diesen könnt ihr dann als Spielwiese nutzen.





Iron Blogger. Jetzt erst recht.

19 01 2012

So, ich bin nun also doch Iron Blogger geworden – denn was interessiert mich mein Geschwätz von gestern? 🙂

Der Herr @moellus ist schuld, mit seinem neuen voll knorken Projekt Cynigma.

Zur Auswertung, wer nun in der Bierschuld ist und wer nicht, gibt es ein Skript. Nachdem ich mitbekommen habe, dass das Skript bei Iron Blogger Berlin noch nicht läuft, habe ich es bei mir auf meinem Server aufgesetzt. Dachte ich anfangs noch ein einfaches „git clone“ und anpassen der Blogliste würde reichen, wurde ich eines Besseren belehrt. Python schmiss sofort eine Fehlermeldung. Dummerweise gibt es keine Doku, wie man das Skript nutzt.

Also hab ich meine Entwicklerbrille aufgesetzt und mich in den Code eingelesen. Ahh! Es fehlen noch ein paar Module auf meiner Kiste.
Daher erst mal geschwind die Module installiert.
Die Finanzen verwaltet das Skript via ledger in einer einzelnen Datei – also musste dies auch noch den Weg auf meinen Server finden.

Trotzdem machte das Pythonskript noch nicht, was es sollte. Beispielsweise stieg das Skript aus, als ich das erste Mal die Feeds abrufen wollte oder aber auch, wenn noch keiner seine Bierschulden bezahlt hat. Es fehlte hier und da an einem sinnvollen Fehlerhandling. Die Macken habe ich beseitigt, die Templates für die Wochenauswertung und die Teilnehmerliste angepasst, die Währung von Dollar auf Euro geändert und ein wenig Kosmetik walten lassen.

Die einzelnen Teilnehmer sind mit ihren Blogs in einer zentralen Datei erfasst. Diese habe ich auch erweitert, damit nicht nur ein Username eingetragen ist, sondern auch die Möglichkeit besteht, einen Klarnamen einzutragen. Sieht einfach besser in der Auswertung aus.

Ich wünsche allen Iron Blogger Berlin Teilnehmern viel Spaß und Erfolg.
Sollte jemand Fehler entdecken, die das Skript produziert, Änderungswünsche oder Verbesserungsvorschläge haben, meldet euch einfach mal bei mir über die bekannten Wege. Natürlich dürft ihr auch gern einen Kommentar hinterlassen, wenn es euch gefällt, dass das Skript läuft.

Eine Anleitung, wie ihr das Skript selbst zum Laufen bekommt, folgt gibt es hier.





Stöckchen: Geburtstagscharts

17 01 2012

Der Daniel hat mal wieder wie wild mit Stöckchen um sich geworfen. Ok, eigentlich wollte ich bei dem Geburtstagschartskram eigentlich nicht mit machen. Das ging ja schon Ende letzten Jahres bei Twitter rum. Doch Daniel ist ein guter Freund und dann bin ich doch mal dabei.

Zur Erläuterung für diejenigen, die mit einem Stöckchen nichts anfangen können: In einem (Blog)Stöckchen geht es darum, vorgegebene Fragen zu beantworten und die Fragen auch gleich wieder an andere weiter zu geben.

1. Finde heraus, wer Platz 1 der Single-Charts in der Woche Deines Geburtstages in Deinem Land war.

Da muss ich nicht mal nachschauen. Ich weiß genau, wer auf Platz eins war – die Frage ist, ob ich mich für dieses Wissen nun schämen muss 🙂
Es ist Peter Schilling mit Major Tom (völlig losgelöst) – das Lied war insgesamt 14 Wochen in den deutschen Top Ten vertreten (das hat mir Google verraten).

2. Finde das Video auf einer Videoplattform deiner Wahl
Nichts leichter als das. Eines der wenigen Videos, das noch nicht von den GEMA-Leuten geblockt wurde …

3. Poste das Video in deinem Facebook-Account ohne Rücksicht!

Ich schäme mich für nix, was ich irgendwo poste – doch bei Facebook bin ich nur noch aktiv, wenn mir mal jemand eine Nachricht schreibt – ich poste einfach mal bei Google+

4. Stöcken weiterwerfen.

An wen werfe ich denn? Der Daniel hat ja schon wie wild um sich geworfen und somit eine ganze Menge abgegrast – somit ist jeder recht herzlich eingeladen, sich hier zu bedienen und dieses Stöckchen mit in einen Blog zu packen.





Netbook-Cardreader unter Linux – Quickie

10 01 2012

Ein kleiner Tipp auf die Schnelle. Der Eine oder Andere von euch nennt ein Netbook sein eigen und evtl. läuft es ja unter Linux.
Ich besitze ein Netbook, welches von Haus aus mit Windows 7 Starter ausgeliefert wird, inzwischen ist das Betriebssystem meiner Wahl aber Lubuntu 11.10. An sich bastel ich lieber und setze mir mein System um einiges individueller auf, doch auf dem Netbook stehe ich mehr auf Bequemlichkeit.
Es funktioniert alles out-of-the-Box und was die Hardwareunterstützung angeht, bin ich ausnahmsweise Mal positiv überrascht.
Ein kleines Problem gibt es noch – der interne SD-Cardreader.

Steckt während dem Booten eine SD wird diese auch ohne Probleme unter Linux erkannt. Ist jedoch beim Booten keine SD eingesteckt, wird auch keine erkannt, wenn man sie später einsteckt.

Abhilfe schafft hier ein kurzer Befehl, ausgeführt auf der Konsole:
sudo echo 1 > /sys/bus/pci/rescan

Danach wird die SD problemlos erkannt.
Nächster Schritt wäre zu schauen, wo es genau hängt. Evtl. kann man dann den Befehl auch automatisiert absetzen und umgeht somit das Problem 🙂





Jahresrückblick und die guten Vorsätze.

4 01 2012

Es gibt ja Einige die schon im August damit anfangen, ihren Jahresrückblick zu schreiben. Doch einen Rückblick kann man nur schreiben, wenn man auf etwas zurückblicken kann.

Meine Onlineaktivitäten haben sich zum großen Teil auf Twitter beschränkt. Facebook ist für mich nahezu gestorben. Zwischenzeitlich war ich deaktiviert, doch es gibt immer noch Leute, die ihre Bilder ausschließlich auf Facebook posten. Google+ ist zwar interessant aber auch dort bin ich nicht besonders aktiv.

Im letzten Jahr hatte ich erstaunlicherweise etwas mehr als 36.000 Besucher obwohl ich nur 14 neue Posts geschrieben habe (es wurden auch mehr als 2.000 Spamkommentare gelöscht).

Das muss sich ändern.

Ich habe im weltweiten Internetz von der Aktion der Iron Blogger gelesen. Es soll jede Woche ein Blogbeitrag geschrieben werden – wer es nicht schafft, muss 5 Euro in die Bierkasse spenden. Diese Kasse wird dann von den Teilnehmern gemeinsam in Bier investiert. Klingt super – leider läuft das Ganze in Berlin. Also starte ich die Aktion mal für mich persönlich. Sollte jemand aus meinem Umfeld auch mitmachen wollen, einfach bescheid sagen 🙂

Ich werde euch jetzt jede Woche mit meinem Blogbeitrag nerven beglücken und am Ende des Jahres sollten es mindestens 52 neue Blogbeiträge sein. So zumindest der Plan. Sollte ich in einer Woche einmal nicht bloggen, so werde ich 5 Euro in ein Sparschwein werfen. In regelmäßigen Abständen werde ich über den Status und den Guthabenstand im Schweinchen berichten. Vielleicht kann ich mir damit ja die Weihnachtskasse aufbessern 😉