This is how I import my deadlines for tickets from our Jira bugtracker to our Zarafa ical gateway (running on localhost only but since I’ve a real account I could easily install a crontab for this for my system user).

Notes:

– The script makes use of phyton as well
– The script makes use of the Jira rest api (needs to be enabled)
– The script makes use of the (free) JIRA Calendar Plugin (https://marketplace.atlassian.com/plugins/com.atlassian.jira.ext.calendar/versions#b20107)
– The script uses a hardcoded filter id 10100. The filter must be created by the Jira user before. In my case it’s simply a filter that returns all projects I’m assigned to.
– The calendar used (e.g. “Jira”) must be manually created by the Zarafa user before and will be overwritten everytime the script runs! (Do not use default calendar)
– Dunno how to check whether ICS file loaded fine so run it manually and check whether new items show up in the calendar 🙂

It can probably easy adapted to other ics servers as well. I run this all 15 minutes during working days making use of crontab.


#!/bin/bash
JIRAUSER="changeme"
JIRAPASS="changeme"
JIRAICS="$HOME/jira.tmp.ics"
JIRAURL="jira.example.com"
#secure folder with e.g. umask 077
JIRACOOKIE="$HOME/.cookies/jira.cookie"
ZARAFAUSER=="changeme@example.com"
ZARAFAPASS=="changeme"
#
#Do NOT use default "Calendar", ICS will OVERWRITE it!
#Create an OWN calendar for Jira entries ONLY!
#
ZARAFACALENDAR="Jira"
if [ -f "$JIRAICS" ]; then
rm "$JIRAICS"
fi
if [ ! -f "$JIRACOOKIE" ]; then
JIRATEST=`/usr/bin/curl -s -u "$JIRAUSER":"$JIRAPASS" --cookie-jar "$JIRACOOKIE" "https://$JIRAURL/rest/api/2/user?username=$JIRAUSER" -s | python -mjson.tool | grep -oP "(?<=\"name\": \")[^\"]+"`
else
JIRATEST=`/usr/bin/curl -s --cookie "$JIRACOOKIE" "https://$JIRAURL/rest/api/2/user?username=$JIRAUSER" -s | python -mjson.tool | grep -oP "(?<=\"name\": \")[^\"]+"`
fi
if [ "$JIRATEST" != "$JIRAUSER" ]; then
echo "Error getting Jira username $JIRAUSER"
rm "$JIRACOOKIE"
exit -1
fi
/usr/bin/curl -s --cookie "$JIRACOOKIE" --output "$JIRAICS" "https://$JIRAURL/plugins/servlet/calendar?searchRequestId=10100&dateFieldName=duedate&showVersions=true" || exit $?
if [ -f "$JIRAICS" ]; then
/usr/bin/curl -s -u "$ZARAFAUSER":"$ZARAFAPASS" -T "$JIRAICS" "http://localhost:8080/ical/$ZARAFAUSER/$ZARAFACALENDAR"
rm "$JIRAICS"
fi

OwnCloud könnte mal richtig toll werden. Im Moment ändert sich jedoch alle naselang die Webseite, das Aussehen, die Funktionen.. also alles. Da auch ständig Sicherheitslücken bekannt werden, und einen Patch den nächsten jagt, sollte man hier stets auf die neuste Version achten.

Dazu gibt es im Adminbereich eine schöne Funktion, welche einem anzeigt ob man die aktuelle Version hat. Das wollten wir nun automatisch wissen, um uns nicht ständig auf der Admin-Seite einloggen zu müssen.

Die Funktion von der Seite stellt OC_Updater::check() aus lib/updater.php. Dabei wird ein String zusammen aus Version, Installationsdatum, letztes Updatedatum und Update-Kanal erstellt.

Die Daten werden dabei mit “x” separiert. Auch der Versionsstring ist durch das “x” in major, minor und nochmalminor getrennt. Aus Version “4.90.4” wird zum Beispiel “4x90x4”.

Ich habe keine Ahnung ob es da eine offizielle API Doku für gibt (Owncloud hat gerade die ganze Webseite umstruktuiert und viele Suchmaschinentreffer gehen gerade ins Leere), doch habe ich folgendes (im Moment) beobachten können:
– So lange die Anzahl der erwarteten “x”e im String ist, spuckt der Server also eine Antwort aus.
– Ist in der XML-Antwort keine Version angegeben ist alles ok.
– Ist ein Versionsstring angegeben unterscheidet sich die aktuelle Version mit der empfohlenen aus dem “Update-Kanal” (wobei auch hier “stable” als “default”-Kanal gegeben scheint)

So genügt zum Beispiel der String “4x90x4xxxx” für einen Request.

Achtung: Major-Versionssprünge werden nicht als neue Version angekündigt. 4.90.4 wird z.b. als aktuell gewertet, auch wenn bereits 5.0.0 verfügbar ist.

Und so sieht das ganze als schneller Hack für ein Nagios Script aus:

#!/bin/bash
#Reminder: Nagios return codes: 0 OK, 1 WARN, 2 CRIT, 3 UNKNOWN
#Reminder2: Full “featured” version request example: http://apps.owncloud.com/updater.php?version=5x0x0x1356382022.183×1363606253.8263xstablex

VER=`grep version /pfad/zur/owncloud/config/config.php | sed ‘s/[^0-9.]*//g’`

if [[ “${#VER}” > 0 ]]; then
#Replace all matches of . with x
VERSNIPPED=${VER//./x}
APPURL=”http://apps.owncloud.com/updater.php?version=””$VERSNIPPED””xxxx”

NEWVER=`wget -qO – “$APPURL” | grep “” | sed ‘s/[^0-9.]*//g’`

if [[ $? == 0 ]];then
if [[ ${#NEWVER} > 0 ]]; then
echo “New version: $NEWVER”
exit 2
else
echo “Version $VER is up to date”
exit 0
fi
else
echo “Could not wget version request from apps.owncloud.com”
exit 2
fi
else
echo “Could not parse local version from config.php”
exit 3
fi

..funktioniert vermutlich so nur ein paar Monate. Das Prinzip ist aber klar 🙂

Die Tage aus dem Schrank gezogen und nebst Expansion Set MOD T2x – Shadows Of The Metal Age komplett unter Wine 1.4 durch gespielt 🙂

  • Der Installer war ein wenig zickig
  • taskset ist beim Multicore nötig
  • Videos bringen das Spiel zum Absturz (cfg Hack und Videos manuell anschauen, z.b. mit mplayer)

Das ist eigentlich auch schon alles gewesen 🙂 Nicht einmal ein DLL Override ist nötig.


Ich hatte extrem viel Spaß dieses tolle Spiel erneut durch zu spielen.


Noch viel mehr Spaß hatte ich mit T2x. Das ist nicht nur ein MOD sondern wirklich ein vollwertiges Expansion Set, welches ich sogar besser wie das Hauptspiel finde. Da steckt mehr Abwechslung und deutlich mehr Details drinnen. Dazu eine packende Storyline, welche sogar die von Thief2 unerwartet schneidet und in einer eigenen Kampange nebst schicker Videosequenzen erzählt wird. Ist mit viel Liebe gemacht. Das sieht und hört man.

http://wiki.linuxgaming.de/index.php/Thief_II

I always wondered how I could easily read several variables at once from some program I execute from bash. Usually I simply read all values to a single variable and do a barrel roll (for each) on it or I execute the program in question several times with slightly tweaked parameters. That’s all not so nice for performance critical scripts. So I usually try to read as much as possible with as less as possible program calls from within a script.

Well, this is a snipped I developed today that is much easier by simply making use of read and “<<<

read iUID iGID <<< `awk -v username="$USERNAME" -F ":" '$0 ~ "^"username":x:" {print $3" "$4}' /etc/passwd`

I’m also passing a variable down to awk used in a regular expression. Please notice that this does only work when $IFS is a single space (default).

if [[ $iUID =~ ^[0-9]+$ ]] && [[ $iGID =~ ^[0-9]+$ ]]; then

And here I can even validate both values easily as integers using a regular expression.

Bash is so damn powerful once you get the basics 🙂 Ah and yes I am aware that awk can do the integer check itself but I’m just not there.. yet 😉

Ich mag meinen Job 🙂 Spielzeug für Erwachsene:

============
Last updated: Thu Aug 25 16:03:54 2011
Stack: Heartbeat
Current DC: punk (71dd0b09-39d3-4869-9b07-ec7ca7328ea1) - partition with quorum
Version: 1.0.11-6e010d6b0d49a6b929d17c0114e9d2d934dc8e04
2 Nodes configured, unknown expected votes
3 Resources configured.
============Online: [ steam punk ]

Resource Group: grpNFS
fsDRBDnfs  (ocf::heartbeat:Filesystem):    Started steam
resIPnfs   (ocf::heartbeat:IPaddr2):       Started steam
Master/Slave Set: msDRBDnfs
Masters: [ steam ]
Slaves: [ punk ]
resNFS  (lsb:nfs-kernel-server):        Started steam

Ich habe die Tage mal wieder was am Wine zu knabbern gehabt. Nach dem Aktivieren der OnBord Soundkarte schien zunächst alles schön zu seine. Unter Ubuntu konnte ich einfach den Punkt “Auf alle verfügbaren Soundkarten ausgeben” auswählen.

Unter Wine hatte ich aber plötzlich keinen Ton mehr.

“wine winecfg” hat einen Tab “Audio”. Da ging der Ton, wenn man auf “Test Sound” geklickt hat, lustigerweise.

Nun, des Rästels Lösung: Wine nutzt, genau wie der Pulseaudio von Ubuntu, das Alsa Device. Nun hat Ubuntu mir aber die Alsa Config umgebogen und ein sog. “dmix” Device angelegt, um auf beide Soundkarten auszugeben. DMIX zu erklären sprengt nun hier den Rahmen (wenn das interessiert=> alsa webseite erklärts). Auf jeden Fall war damit das Device “default” von alsa einfach leer. Das dmix Device hört hingegen auf den Namen “default_1”.

Unter “wine regedit” habe ich dann die Variable “DefaultPlayback” auf “default_1” gestellt. Nun gehts wieder

Die Keys sind unter http://wiki.winehq.org/UsefulRegistryKeys beschrieben.

Kann sein dass sich das bald wieder ändert. Soweit ich das verstanden habe bekommt Wine gerade eine radikale Umstrukturierung bei Audio verpasst, was dann wohl eine direkte Anbindung (ohne Patch) an gstreamer erlaubt.

Klar, alternativ hätte ich einfach default in default_1 umlenken können oder eine der anderen 10 Möglichkeiten zur Soundausgabe Soundausgabe umzuleiten nutzen können. Ist aber letztendlich egal. Um mich genau mit sowas nicht mehr rumzuärgern habe ich mir damals eine SB Live 5.1 mit emu10k1 Chipsatz geholt. Die konnte Hardwaremixing und brauche garkeine Soundserver und Software-Mixing mehr. Irgendwie ironisch dass mich diese Probleme dann doch 2011 mit dem Aktivieren einer zusätzliuchen OnBord Karte wieder eingeholt haben.

Tja.. und wenn mein Samsung Galaxy i5800 mal wieder keine USB Verbindung zum PC aufbauen möchte, und den Verbindungsdialog nicht wie gewohnt anbietet, wenn das Gerät mit dem PC verbunden wird, wähle ich einfach diese (kostenfreie 😉 ) Nummer (mit Stern!)

*#7284#

Daraufhin öffnet sich ein Einstellungsdialog. Unter USB einmal auf Modem und dann wieder auf PDA geklickt und schon funktioniert alles wieder wie es soll.

Anscheinend stellt sich das Gerät intern ab und an auf Modem um, ohne dies auch anzuzeigen. Technik, die begeistert. Android ist toll. Samsung.. nächstes mal doch lieber von der Quelle. Da gibt es dann auch zeitnah Updates. So warte ich noch immer auf das offizielle Update für Android 2.2 für mein Galaxy. Service, Baby. Da weiß man doch, was man gekauft (bekommen) hat.

Gestern wurde es mal wieder sehr spät und wie so oft kam das Thema auf Computerspiele. Aus irgend einem Grund kamen wir auf Dungeon Keeper. Ich rede vom ersten Teil. Das war ein 16Bit DOS Spiel aus dem Jahre 1997 von Bullfrog. Falls sich noch jemand erinnert.

Ich habe also in meiner Spieleschatzkiste gegraben und tatsächlich die originale ziemlich lädierte und zerkratze CD zu Tage gefördert. Und das schöne: Lief mit “dosemu” auf Anhieb und ohne Murren mit Ton, Sprachausgabe, Maus und “3D”. Oder was man damals halt so unter 3D kannte.

Zum Spiel selbst: Herrlich, witzig, böse, innovativ. Allein das Introvideo war preisverdächtig. Unglaublich, was hier aus einem DOS rausgekitzelt wurde. Und das Beste: Dank grafischer Ausgabe über SDL seitens Dosemu ist eine stufenlose Fensterskalierung möglich. So kann ich es auf meinem reinen 64bit Linux auf einem modernen Monitor, der diese niedrigen Auflösungen nicht mehr kann, noch einmal mit mir genehmer Größe und Verpixelung spielen.

Wir haben es geschafft! Nach Wirren, Motorproblemen, umgeplanten Übernachtungen und davonfahrenden (Vor-)Fähren (D.d.d.da geht unser Gepäck!!1) sind wir auf Juist aufgeschlagen. Juist ist, wie wir alle wissen, eine autofreie Insel an/in der Nordsee. Auch bekannt als *der* Kurort für den wohlhabenden Mittelstand. Zufälligerweise kennen wir hier eine tolle nette Familie, die uns spontan über die Feiertage eingeladen hat. Die Saison hat noch nicht richtig angefangen und hier wirkt noch alles etwas verschlafen. Geschäfte haben das erste mal seit Monaten wieder offen und überall stellen sich die Anwohner erst noch richtig auf ein neues Jahr voller fetterlohender Touristen ein. Entschleunigt eben. Am Hafen warten Pferdekutschen und Fahrradanhänger auf die Reisenden. Anstelle von Zulassungsschildern ziert hier jede Handkarre ein Schild mit dem Namen der Miet-Residenz. Alle individuell natürlich. Ein Gewusel wie auf einem Wochenendemarkt setzt ein und ein paar Minuten stolpern Radfahrer, Fußvolk, Hunde und Pferde wild durch- und übereinander. Danach kehrt schlagartig wieder Ruhe ein. Auch auf uns wartet ein kleines Komitee mit Karre, was in Anbetracht unserer schweren Reisetruhe auch gut ist.

Wir sind nach der Übergabe unseres FressCare Pakets und dem Einzug in unser ZimmerFerienapartment gleich mal auf unseren alten quietschenden Rädern ohne funktionierender Gangschaltung und Luft in den Reifen einmal durch den Ort und dann zum Strand rüber. Der Wind zerrt kräftig an Ohren und Hut und wir schmecken Salz. Ich liebe diesen frischen Meeresgeruch und kanns kaum abwarten hier morgen gemütlich über den Deich zu flanieren. Sehen und gesehen werden. Das ist hier laut Reiseführer ohnehin das Motto. Nadur pur 🙂 Leider musste der Bus drüben auf dem Festland bleiben, wo wir ihn gut versteckt haben. Die Fährenparkplätze sind nämlich ziemlich teuer und ich habe irgendwie ein Problem mit teuren “Achtung – ich bin ein paar Tage nicht hier, brich ruhig mein Auto auf”-Parkplätzen.

Besondere Hilights aus dem Programm, die ich niemandem vorenthalten möchte:

  • Kreatives Färben von Merino-/Alpaka-/Baumwolle & Co (Schafe färben!!!1eins)
  • Klangschalenmassage (Mit tibetischen Klangschalen1!!1)
  • Körpermassage Teil 1 Rückseite (Vorderseite kostet 5 Euro mehr. Warum wohl? .oO( ( . ) ( . ) )
  • Kreatives Stricken und Häkeln!1eins

Camping im Sommer kann jeder. Ein neuer Trend, der sich in Deutschland ausbreitet, ist das Wintercamping. Zwar betrachten wir uns nicht als wirkliche Campernaturen oder Naturfreunde, doch ist im Winter ohnehin zu dieser Jahreszeit nur wenig los. Da kam ein Bullitreffen gerade recht um ein wenig Abwechselung in die tristen Tage zu bringen. Aber mitten im Winter? Damit hatte ich auch noch keine Erfahrung und so haben wir mehrere Tage mit den Vorbereitungen verbracht und viele Socken und andere wichtige Kleinigkeiten gepackt.

Das hat auch alles super geklappt und wir haben ein tolles Wochenende am Edersee genießen dürfen. Mit dabei waren geschätzt 80 andere VW T3 Busfahrer, darunter einige bereits bekannte Gesichter. Die meiste Zeit hatten wir traumhaftes Wetter und nur am Sonntag ein wenig Neuschnee (siehe Bild). Dank Strom am Bulli und der guten Isolierung mit Trocellen Schaumstoff hatten wir selbst am frühen Morgen wohlige 22,5°C im Bus bei nur 1,5kW Heizleistung. Versorgt haben wir uns allerdings mit einem Gaskocher und vielen warmen Mahlzeiten und den ein- oder anderen Irish Coffee oder Apfelwein.

Na und was wäre eine knapp 1000 Kilometer Tour mitten im Winter ohne Panne? Auf der Rückfahrt ist uns dann leider ein Reifen kaputt gegangen. Durch ein Loch in der Flanke verschwand der Großteil der Luft und so musste das Reserverad her halten. Kein großer Aufwand, habe ich doch immer das Werkzeug dabei, und ein Abenteuer mehr auf der Liste. Und wenn es auch nur einmal mehr der Reifen war 😉