This player is unable to play this protected content at this time.

Bei http://papagei.com/, einem Videosprachportal, konnten die per DRM (Digital Rights Management) geschützten Inhalte unter Ubuntu 12.04 nicht wiedergegeben werden. Stattdessen wurde im Flashplayer die Fehlermeldung “This player is unable to play this protected content at this time.” angezeigt.
Um die Videos zu verteilen, setzt das Sprachportal auf den Anbieter Brightcove. Dieser Dienst schützt die Inhalte entweder mit Google Widevine oder Adobe Access, dabei verwendet Papagei.com die letzere Methode.
Um nun den geschützten Inhalt abzuspielen, benötigt der Flashplayer das HAL (Hardware Abstraction Layer) Modul. Nach der HAL Installation und dem Schließen des Browsers, müssen zum Abschluss die Adobe Access Verzeichnisse bereinigt werden.

Lösung für Ubuntu (getestet Version 12.04)
Übernommen von Adobe http://helpx.adobe.com/x-productkb/multi/flash-player-11-problems-playing.html

Browser schließen und folgende Befehle ausführen.

sudo apt-get install hal
rm -rf ~/.adobe/Flash_Player/{NativeCache,AssetCache,APSPrivateData2}

Testen
Die Url http://drmtest2.adobe.com:8080/Content/anonymous.f4v in den Testplayer einfügen und den Play Button drücken. Nun sollte das Video abspielen.

Viel Spaß beim Anschauen der DRM geschützen Filme, bzw. beim Lernen!

Cronjobs unter einer Minute

Kürzere Intervalle als 1 Minute sind bei Cronjobs nicht vorgesehen. Das nachfolgende Script cron_job.sh umgeht diese Beschränkung und startet den Arbeitscode jeweils nach 5 Sekunden.

#!/bin/sh
 
if [ $(pgrep -cf $0) -le 2 ] 
then
	echo "not runnig"
 
	while [ 1 -eq 1 ]; do
		echo "do some stuff"
		sleep 5
	done
else
 
	echo "running, do nothing"
 
fi

Dieses Script wurde für dieses Beispiel unter /home/klaus/cron_job.sh gespeichert. Jetzt muss es mit crontab -e in der Cron-Tabelle ergänzt werden:

# m h  dom mon dow   command
* * * * * /home/klaus/cron_job.sh

Erklärung des Scripts

Die Auswertung mittels pgrep ergibt bei einem Aufruf durch Cron zwei Prozesse, einmal den Cron Aufruf selbst und einmal das Script cron_job.sh. Wenn mehr als nur diese zwei Prozesse laufen, dann beendet sich das Script wieder. Ansonsten wird in der Endlosschleife der Arbeitscode aufgerufen und anschließend 5 Sekunden geschlafen.

Auszug von ps -ef:

klaus     7821  7820  0 13:15 ?        00:00:00 /bin/sh -c /home/klaus/cron_job.sh
klaus     7822  7821  0 13:15 ?        00:00:00 /bin/sh /home/klaus/cron_job.sh

Falls der Rechner neu gestartet oder das Script unerwartet beendet wird, sorgt der Eintrag in der Cron-Tabelle dafür, dass es erneut startet. Danke an Gerald, für den pgrep Tipp!

Baum im Auge

Am 25.11.2012 war ich beim Windercrosslauf in Goldbach. An diesem Tag war es sehr windig und es fielen Blätter und Tannennadeln von den Bäumen. Eine Tannennadel wollte unbedingt in mein Auge und hat es schließlich auch geschafft. Nachdem ich ein paar mal im rechten Auge gerieben hatte, war sie draußen, hab ich gedacht. Am nächsten Tag hab ich sie immer noch gespürt und kurz gesehen, als ich das Augenlid hochklappte. Beim zweiten mal hab ich sie nicht mehr gefunden. Also ab zum Augenarzt. Dieser hat sie leider auch nicht gefunden und hab mir nur ein Antibiotikum für das gereizte Auge verschrieben. Am Dienstag Morgen klappe ich nochmals das Augenlid hoch und da schwamm die Tannennadel quer durchs Auge. Kurz rausgefummelt und fotografiert:

Sie misst fast einen Zentimeter! Komisch das der Augenarzt das Riesending nicht gefunden hat!

Videos reparieren

Defekte Videos kann mencoder reparieren. Mittels apt-get ist dieses Programm schnell installiert.

1
sudo apt-get install mencoder

Der folgende Aufruf versucht das Video input.avi zu reparieren. Das Ergebnis wird unter output.avi gespeichert.

1
mencoder -idx input.avi -ovc copy -oac copy -o output.avi

Dabei stellt mencoder den Index wieder her und kopiert die Film- und Tonspur.

Für die ganze Filmsammlung eignet sich das folgende Script repair_movies.sh:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
#!/bin/sh
 
#functions
f_suffix()
{
	echo "${1##*.}"
}
 
 
#parameters
if [ $# -eq 1 ]
then 
	#parameter
	path="$1"
else
	#default
	path="/data/media/movies"
fi
 
 
#main
find "$path" -not -name '*.fixed.*' \( -iname '*.avi' -or -iname '*.mpg' -or -iname '*.mpeg'  \)  -type f | \
while read i
do
	suffix=$(f_suffix "$i")
	filename_out="${i%.avi}.fixed.${suffix}"
	filename_tmp="${i}.tmp"	
 
	echo "Repair file ${i}"
 
	#remove old temp file
	if [ -f $filename_tmp ]
	then
		echo "rm ${filename_tmp}"
		rm "${filename_tmp}"
 
	fi
 
	if [ -f $filename_out ]
	then
		#file is fixed, remove original file
                echo "rm ${i}"
                rm "${i}"
	else
		#repair video file
		mencoder -idx "$i" -ovc copy -oac copy -o "${filename_tmp}"
 
		#remove source file only, if mencoder was successfully finished
		if [ $? -eq 0 ]
		then
			mv "${filename_tmp}" "${filename_out}"
 
			#delete original movie
			echo "rm ${i}"
			rm "${i}"
		fi
	fi
 
done

Im Moment verarbeitet das Script nur avi, mpeg und mpg Dateien (case insensitiv), lässt sich aber leicht erweitern. Zur Sicherheit kann der Teil, der das Orginalvideo löscht, auskommentiert werden.

Neue Triathlonausrüstung

Habe meine Triathlonausrüstung aufgestockt. Zunächst präsentiere ich meinen neuen Neoprenanzug. Diesen habe ich, ebenso wie die Schwimmbrille, günstig vom Simon erstanden. Da er sich einen neuen geleistet hat, brauchte er seinen alten nicht mehr. Bevor jemand frag, ich komme rein und wieder raus ;-) Falls ich bis zum Churfranken Triathlon halbwegs durchkraulen und den Neo schnell ausziehen kann, wird er dort eingesetzt. Bis dahin muss ich aber noch viel üben!
Neo von 2XU

Die Schwimmbrille 4174 von Fashy ist sehr gut für den Niedernberger See geeignet. Dort habe ich mit dieser Brille ca. 2 Meter Sichtweite. Beim Heinerman bringt sie leider nix, da das Wasser sehr trübe ist. Zudem lässt sie sich bequem tragen und hält dicht.

Auf Rat von Simon habe ich mir die bindfreien Schnürsenkel von Xtenex zugelegt. Das einfädeln ist nicht ganz so einfach wie normale Schnürsenkel, aber ich hoffe, dass es sich beim nächsten Triathlon auszahlt. Über den Laufkomfort kann ich noch nichts berichten, da ich sie erst am Sonntag ausprobiere.

Tip: Ich hatte beim einfädeln beide Schuhe angezogen. So kann man sofort überprüfen, ob der Schuh lockerer oder fester sitzt und ggf. korrigieren.

Update Nach den ersten 10 Km hab ich keinen Unterschied zu den normalen Schnürsenkeln feststellen können. Bin gespannt, ob sie auch einen BraveheartBattleRun aushalten.

Fragwürdige Seite http://gutscheinesucher.de/

Bei Facebook bin ich auf diese Seite gestoßen: http://gutscheinesucher.de/. Sie verspricht einen 50 Euro Gutschein von Amazon, wenn man diese Seite Teilt und in den Kommentar dazu “Danke Amazon!” schreibt.

Mit Brain 2.0, Version 1.0 funktioniert auch, lässt sich der Schwindel ganz leicht enttarnen.
1. Bei einem Reload der Seite fängt der Zähler wieder bei 843 an. Dafür verantwortlich sind diese Zeilen Javascript:
 
var num=843;
function dothis(){
num=num-Math.floor(Math.random() * 2);
if(num<0) startdothis();
document.getElementById('cd').innerHTML=num;
setTimeout(" dothis()",1100);
}

2. Warum sollte Amazon.com Gutscheine in Euro verschenken?
3. Warum sollte Amazon eine eigene Domain für diese Seite erstellen? Sie haben doch schon eine Amazon.de Domain und eine Facebook Seite. Es würde mehr Sinn ergeben, diese Seiten zu promoten.
4. Kein Impressum -> Abmahnfähig

Die whois Abfrage ergibt folgenden Eintrag:
whois gutscheinesucher.de
Domain: gutscheinesucher.de
Nserver: ns1.ns-serve.net
Nserver: ns2.ns-serve.net
Status: connect
Changed: 2012-05-14T22:10:11+02:00

[Tech-C]
Type: PERSON
Name: Markus Kanwischer
Organisation: Flatbooster
Address: Venise-Gosnat-Strasse 28
PostalCode: 14770
City: Brandenburg
CountryCode: DE
Phone: +493381563301
Fax: +4933812690329
Email: support@flatbooster.de
Changed: 2008-08-12T13:27:29+02:00

[Zone-C]
Type: PERSON
Name: Markus Kanwischer
Organisation: Flatbooster
Address: Venise-Gosnat-Strasse 28
PostalCode: 14770
City: Brandenburg
CountryCode: DE
Phone: +493381563301
Fax: +4933812690329
Email: support@flatbooster.de
Changed: 2008-08-12T13:27:29+02:00

Diese Masche ist nicht neu, sondern sie gab es schon mit einem 50 Euro Gutschein vom MediaMarkt, REWE, Saturn uvm. Bei t-online und mimikama wird auch vor dieser Aktion und enthält weitere Informationen, warum solche Seiten erstellt werden.

Heinerman 2012

Diesen Sonntag (den 24.06.2012) fand der Heinerman Triathlon statt. Wie auch letztes Jahr wollte ich diese Olympische Distanz (1,5 km/ 40 km / 10 km) bezwingen. Der Wettkampftag fing mitten in der Nacht um 5:10 an. Mein Frühstück bestand aus 4 Toasts, einer Banane und 2 Tassen Kaffee. Frisch gestärkt und mit meinem, schon angezogenen, Triathlonanzug fuhr ich Richtung Darmstadt. Renate konnte wegen einem Fahrradunfall diesmal nicht dabei sein.

Das Auto wurde an der TU Lichtwiese abgestellt. Nachdem das Fahrrad ausgeladen, zusammengebaut und aufgepumpt war, traf ich auch schon Bastian. Zusammen sind wir zum Veranstaltungsort Großer Woog geradelt. Nach dem Rad Einchecken, Wechselzone vorbereiten und Ballast loswerden, haben wir uns mit Bastians Frau und seinem Bruder auf der Insel getroffen.

Dann war es auch schon wieder soweit und er Start rückte näher. Eine Frau wollte erst in der letzten Minute ins Wasser, da sie trotz Neo sehr schnell fror. 2011 wurden ihre Füsse nicht nicht mehr warm. Damals war das Wasser auch nur 18°C warm. Mit 22°C war das Wasser heuer viel wärmer und ich sprang an einer freien Stelle hinein. Beim Start und im weiteren Verlauf musste ich einige Schläge und Tritte einstecken und verteilte auch einige. Dies bleibt beim diesem Gedränge leider nicht aus. Zudem war das Wasser sehr trübe und enthielt Unmengen an Schlingpflanzen. Nach ca. 33 Minuten war das Schwimmen auch wieder vorbei.

Das Umziehen funktionierte prima und ich versuchte die, beim Schwimmen verlorene Zeit, wieder gut zumachen. Ich überholte jedem Menge Teilnehmer und hatte ein kleines Rennen mit Kilian (606) und John (40). Beide überholte ich etliche male, konnte meinen Vorsprung nicht lange halten. Besonders an der letzten Ansteigung gegen Ende der Radstrecke büßte ich einige Plätze wieder ein. Nach ca. 18 Kilometer hab ich auch Angie wieder getroffen. Ich hab letztes Jahr versucht mich an sie dran zu hängen, hat aber leider nur bis Kilometer 8 funktioniert. Sie war leider zu schnell.

Dennoch bin ich mit meiner Zeit von 1:24 sehr Zufrieden, da sie auch zweimal Wechselzone enthält. Beim Verlassen der Wechselzone machten mich einige Zuschauer darauf aufmerksam, dass ich noch meinen Helm und meine Brille auf habe. Diese legte ich an den Rand, da ich nicht zuviel Zeit verlieren wollte. Nach dem Wettkampf waren sie leider nicht mehr auffindbar. Nach dem Radfahren waren meine Füße eingeschlafen, meine Waden schmerzten und von meinem Popo will ich erst gar nicht anfangen.

Beim Laufen musste ich mir eine andere Person zum ziehen suchen, da Angie noch mit Radfahren beschäftigt war. Zum Glück hatten sich die Schmerzen die sich nach dem Radfahren angesammelt hatten, sich nach Kilometer 2 verflüchtigt. Zu meinem Erstaunen hieß meine Zugperson dieses Jahr Angelika. Ihr konnte ich leider auch nur bis Kilometer 8 folgen und brauchte dann eine 2 minütige Laufpause. Auch sie war 1-2 km/h zu schnell. Nach der Pause fand sich ein Läufer, der mein Tempo hatte. Nach 8,5 Kilometer hatte die “alte” Angie wieder aufgeholt und mich motiviert (Nochmal Danke!). Ich soll dieses Jahr vor ihr ins Ziel kommen. Dies hab ich auch geschafft. Sind zwar nur 9 Sekunden, aber dafür das ich eigentlich fertig war, hab ich nochmal einen schönen Endspurt hingelegt. Zeit 1:00

Heinerman Laufen

Heinerman Laufen

Nach 02:57:22.10 war ich im Ziel, 11 Minuten schneller wie letztes Jahr. Dort überreichte mir eine Cheerleaderin eine Medaille. Nachdem ich mich mit alkoholfreien Bier, Bananen und Melonen gestärkt hatte, wartete ich auf Bastian. Er kam erst ca. eine halbe Stunde (03:24:11.10) später. Zwischendurch traf ich noch Fabian (Zeit 3:02), den ich vom Firmen Ultra in Pfungstadt kenne. Insgesamt war es wieder ein schöner Triathlon mit perfektem Wetter (bewölkt und nicht zu warm). Deshalb werde ich auch nächstes Jahr dabei sein, eventuell wieder mit meiner Startnummer 110.

localhost vs. 127.0.0.1

Hab gerade einen ssh Tunnel folgendermaßen eingerichtet:

ssh -L 3333:localhost:3306 -p 10022 root@remotehost

Dann wollte ich mich mit der MySQL Datenbank verbinden, hab aber immer nur die lokale Datenbank erreichen können. Ich hab schon vermutet, dass mysql den Portparameter (-P 3333 oder –port=3333) nicht auswertet, da es sich immer nur mit der lokalen DB verbindet. Nach längerer Zeit habe ich 127.0.0.1 ausprobiert und es hat funktioniert. Aber warum ist localhost nicht 127.0.0.1?

klaus@ubuntu:~$ mysql -u groupoffice-com -P 3333 --password=passwort -h 127.0.0.1
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 443
Server version: 5.5.22-0ubuntu1 (Ubuntu)

Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| groupofficecom |
| mysql |
| performance_schema |
| phpmyadmin |
+--------------------+
5 rows in set (0.03 sec)

mysql> quit
Bye
klaus@ubuntu:~$ mysql -u groupoffice-com -P 3333 --password=passwort -h localhost
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 234
Server version: 5.1.62-0ubuntu0.10.04.1 (Ubuntu)

Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| test2 |
+--------------------+
2 rows in set (0.00 sec)

mysql> quit

Kennt jemand dieses seltsame Phänomen?

Erklärung
Herr A.S. (Vielen Dank!) in den Kommentaren lieferte die Erklärung. Bei Angabe von localhost wird immer der Unix Socket verwendet, selbst wenn der Port mit angegeben ist. Will man eine TCP/IP Verbindung, muss man explizit das Protokoll angeben --protocol=TCP oder die lokale IP Adresse 127.0.0.1 verwenden.

Von Connecting to the MySQL Server (Kapitel ist nicht ins Deutsche übersetzt):

On Unix, MySQL programs treat the host name localhost specially, in a way that is likely different from what you expect compared to other network-based programs. For connections to localhost, MySQL programs attempt to connect to the local server by using a Unix socket file. This occurs even if a --port or -P option is given to specify a port number. To ensure that the client makes a TCP/IP connection to the local server, use --host or -h to specify a host name value of 127.0.0.1, or the IP address or name of the local server. You can also specify the connection protocol explicitly, even for localhost, by using the --protocol=TCP option. For example:

shell> mysql --host=127.0.0.1
shell> mysql --protocol=TCP
The --protocol option enables you to establish a particular type of connection even when the other options would normally default to some other protocol.

Hinweis: Die PHP Funktion mysql-connect verhält sich genauso, ist aber nicht so ausführlich dokumentiert.

Keine Mails von Kernel.org nach Mailserverwechsel

Nach der Umstellung auf den neuen Mailserver mit geänderten Subdomain, IP Adresse und MX Record, kamen keine Emails mehr von vger.kernel.org. Emails an die gleiche Emailadresse funktionieren. Normalerweise versucht der Mailserver nach einer bestimmten Zeit die Emails nochmal zuzustellen, aber auch nach 24 Stunden erhielt ich immer noch keine. Meine erste Vermutung: die Mailling List Software Majordomo hat mich von der Verteilerliste gestrichen. Deshalb hab ich erneut angemeldet. In den Logs von Postfix fand ich diesen Eintrag:

postfix/smtp[6631]: 7DF0E1D60F76: host vger.kernel.org[209.132.180.67] said: 451 4.7.1 Hello [188.40.84.136], for recipient address <Majordomo@vger.kernel.org> the policy analysis reported: Greylisted, see http://isg.ee.ethz.ch/tools/postgrey/help/vger.kernel.org.html (in reply to RCPT TO command)

Der Auszug verrät, vger.kernel.org verwendet Postgrey – Postfix Greylisting Policy Server. Postgrey lehnt beim ersten mal die Email temporär ab und wartet den zweiten Zustellversuch ab. Spammer und Viren unternehmen meist keinen zweiten Versuch wie es im RFC vorgesehen ist. Nachdem der Kernel Server meine Subscribe Email angenommen hatte, kamen alle verpassten Emails und ich konnte das Anmeldeverfahren abbrechen. Es läuft alles wieder wie gewohnt ;-)

etckeeper und git

Da mir die Open Source Groupware Group-Office immer meine Konfigurationsdateien überschreibt, habe ich nach einer Möglichkeit gesucht, diese zu versionieren. Nach kurzer Suche bin ich auf etckeeper gestoßen. Etckeeper stellt alle Konfigurationsdateien im Verzeichnis /etc unter eine Versionsverwaltung. Zur Zeit werden Git, Mercurial (hg), Bazaar (bzr) und Darcs unterstützt. Vor und Nach dem Einspielen oder Entfernen neuer Software über die Paketverwaltung wird automatisch ein neuer commit angelegt. Zudem werden die wichtigen Dateiberechtigungen mitgespeichert und ist somit einer reinen Versionsverwaltung überlegen.

Da ich git bevorzuge, habe ich folgendermaßen etckeeper installiert:

sudo apt-get install git-core etckeeper

Git konfigurieren
git config --global user.name "Klaus Schwarzkopf"
git config --global user.email webmaster@linpert.de

Dann in der Datei /etc/etckeeper/etckeeper.conf bzr auskommentieren und git einkommentieren.
# The VCS to use.
#VCS="hg"
VCS="git"
#VCS="bzr"
#VCS="darcs"

Initialen Commit anlegen:
sudo etckeeper init
sudo etckeeper commit "Initial commit."

Ubuntu 10.04
Unter Ubuntu 10.04 wird automatisch bei der Installation schon /etc mit Bazaar versioniert. Um es auf Git zu ändern, muss die Datei etckeeper.conf angepasst werden und dann etckeeper uninit, etckeeper init und etckeeper commit “Initial commit.”
ausgeführt werden.

Manuelle Änderung
Als root oder mit vorangestelltem sudo. Man kann ganz normal git im /etc Verzeichnis verwenden.
root@ubuntu:/etc# vim fstab
root@ubuntu:/etc# git commit -a
[master a885a3c] big mistake
1 files changed, 1 insertions(+), 1 deletions(-)
root@ubuntu:/etc# git log
commit a885a3c7cfad2123fc4bd946a8d01c377651af6c
Author: Klaus Schwarzkopf <webmaster@linpert.de>
Date: Sat Jun 2 19:46:13 2012 +0200

big mistake

commit ab91b64eabe0e9f7371ddd8afcbd47db5e37a91f
Author: Klaus Schwarzkopf <webmaster@linpert.de>
Date: Sat Jun 2 19:43:52 2012 +0200

Initial commit.
root@ubuntu:/etc#

Änderungen rückgängig

root@ubuntu:/etc# git log
commit a885a3c7cfad2123fc4bd946a8d01c377651af6c
Author: Klaus Schwarzkopf <webmaster@linpert.de>
Date: Sat Jun 2 19:46:13 2012 +0200

big mistake

commit ab91b64eabe0e9f7371ddd8afcbd47db5e37a91f
Author: Klaus Schwarzkopf <webmaster@linpert.de>
Date: Sat Jun 2 19:43:52 2012 +0200

Initial commit.

root@ubuntu:/etc# git reset --hard HEAD~1
HEAD is now at ab91b64 Initial commit.
root@ubuntu:/etc# git log
commit ab91b64eabe0e9f7371ddd8afcbd47db5e37a91f
Author: Klaus Schwarzkopf <webmaster@linpert.de>
Date: Sat Jun 2 19:43:52 2012 +0200

Initial commit.