MAIA Loading Screen

This game is a little gem for colony/base builders (and mayhap even SIM players). There is so much going on and it takes some time to get all the details even at it’s slow pace. Sadly not much is explained in-game [yet?]. Figured most stuff out by playing or watching others play. I still absolutely recommend this. It’s very relaxing and hilarious fun at times when an unfortunate chain of events culminate in an unexpected disaster 😀

This game always had a very steady progress, unlike other EA games, and it was fun keeping an eye on it and watch the improvements over time. Remember that this is an Indie and not a huge studio. I’m a dev myself and I tell you it’s amazing what S. Roth managed to achieve here. He could also be reached e.g. via Discord or Twitter so I’ve absolutely no idea why some people here complain that they were ignored. Mayhap they were simply rude?

Automated fire extinguisher as work: Equipment first, human second.

Don’t give the bad reviews [on Steam] too much credit. The annoying repeating crashes e.g. that many players describe did only happen in fact for Windows players due to a bug with async operations in a library from Microsoft. That was not related to the game itself, and is fixed by now. This game didn’t crash for me in hours on Linux so I believe this statement by the dev. And to this dude blaming this killed his hard-disk or boot-loader or whatsoever: Just no. This is not how computers work o0

http://www.maiagame.com/

Today I found out that I can use my Sony Action cam as… webcam (under Linux) for e.g. streaming or view control 🙂 Not really officially supported. Manual says: Use our shiny Android App and ustream (costs). The trick is so set it into ‘multi camera mode’ to trick it into joining my regular wlan via WPS. Once it’s on my wlan I can easily discover it’s API Scheme and make use of the Sony Camera Remote API controlling it via… JSON 😀 Now it’s just a matter of pointing OBS Studio to it’s lifestream. E voila 😀 I can now even write my own App instead of using that gorram Android App 😀

Played with the API. Taking photos (and download), change various settings, camera mode or start/stop recording worked flawless. Some other stuff I tried, like accessing the storage, not so. Probably doing something wrong.

Disclaimer: That device accepts commands (or stream access) from anyone – there’s no access control. Sony o0

Update: To register as regular v4l2 device that can be accessed e.g. by a webbrowser one can make use of a v4l2-loopback device.

One can’t play under Linux, they said.

I don’t care for ~20 years by now and since 2016 I can’t keep up with my queue any more. The variety became just too much.

Find screenshots of a fraction of the games that came native to Linux in the last years attached. The selection is random since I simply searched for files of the image type when all the screenshots came up.

Having trouble with your recently updated Zarafa 7.2 installation? Can’t connect via imap? Seeing something like this in your gateway log?

CreateProfileTemp(): ConfigureMsgService failed 80040115: network error

You already make sure that

* your zarafa-server binds to 0.0.0.0
** server_bind = 0.0.0.0
** server_tcp_enabled = yes
* your gateway points to localhost
** server_socket = http://localhost:237/zarafa

And your config worked just fine before? Still have no idea what’s going on? Well, take a look at lsof -i tcp:236 and notice that you’ll only get TCP *:237 (LISTEN) on IPv4 for the zarafa-server.

Now check your ifconfig lo for inet6 entries:

lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask>:255.0.0.0
inet6 addr: ::1/128 Scope:Host

And your /etc/hosts will probably point to this as well:

127.0.0.1 localhost.localdomain localhost
::1 localhost

So this is what happens: zarafa-gateway looks up localhost, reads IPv6, tries to connect to ::1 port 237 and gets nothing. Here is your 0x80040115 (MAPI_E_NETWORK_ERROR) network error.

Use server_socket = http://127.0.01:237/zarafa and you’ll be fine.

Well done Zarafa. How about binding to IPv6 as well? Nothing in the manpage on this. Don’t tell me that the server isn’t IPv6 ready while the gateway is.

#80040115

Hint: Do *never* use the UNIX socket as server_socket in the zarafa-gateway config. You may open login to the accounts without valid password if you do so. Check the manual. Seriously.

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 😉