sebadorn.de

Mit dem Upgrade zu Ubuntu 14.04 hätte ich noch warten sollen

Da meine Masterarbeit abgeschlossen ist, habe ich gestern das Upgrade von Ubuntu 13.10 auf 14.04 gewagt. Zwar gab es keine kritischen Probleme, aber doch einige Ärgernisse – wovon sich die meisten mit Recherche und Herumprobieren beheben ließen.

Konflikt zwischen Wine und NVIDIA-OpenCL

Es macht keinen Sinn, aber scheinbar hat jemand in den Paket-Abhängigkeiten gepfuscht oder sonst irgendetwas. Wollte man wine installieren, musste nvidia-libopencl1-331 deinstalliert werden und vice versa. Ich brauche beide Pakete. Wie sich herausstellte, lässt sich Wine 1.7 aber installieren.

Dafür fügt man das Wine Team PPA zu seinen Softwarequellen hinzu und kann dann wine1.7 installieren. Daraufhin lässt sich auch playonlinux installieren.

Sollte /usr/lib/libOpenCL.so dann immer noch fehlen, muss wahrscheinlich nur ein Symlink nachgetragen werden:

sudo ln -s /usr/lib/i386-linux-gnu/libnvidia-opencl.so.1 /usr/lib/libOpenCL.so

Fallout 3 läuft nicht mehr unter Wine

Ein leider noch ungelöstes Problem. Vor dem Upgrade lief Fallout 3 unter Wine ziemlich gut – nicht perfekt, aber ziemlich gut. Jetzt öffnet sich nur noch ein inhaltsloses Fenster. Eine Neu-Installation hat nicht geholfen. Mit Debugging bin ich auch noch nicht weit gekommen, da in den Logs kein eindeutiger Fehler zu finden ist. Wer Tipps hat, ich wäre dankbar. Vielleicht tauchen ja demnächst Leidensgenossen auf appdb.winehq.org auf.

[Update 2014-05-18]: Wine 1.7.19 ist erschienen und behebt genau dieses Problem (siehe Changelog).

Read more

API: YouTube-Player (Part 2)

Da ging etwas daneben beim Einbinden. :(
0:00


Referenzen

Read more

API: YouTube-Player (Part 1)

Den Anfang der API-Reihe macht der YouTube-Player. Der Artikel wird ein wenig länger, weshalb ich ihn in zwei Teile aufgespalten habe. In Part 1 kommt der weniger geekige code­lastige Teil mit den Parametern. In zwei Wochen kommt in Part 2 dann der eigentliche API-Inhalt mit selbstgebastelten Bedienelementen für ein Video.

Die Code-Beispiele mit eingebundenen Videos sind eine valide und gekürzte Form dessen, was YouTube zum Rauskopieren anbietet. embed und param name="movie" entfallen, dafür steht der Verweis zum Video in object data="…". Sieht man gleich.

Parameter für das Video

fs (default 0)
Wenn auf 1 gesetzt, lassen sich Videos in den Fullscreen-Modus umschalten. Kopiert man den YouTube-Code, steht es bereits mit drin.
hd (default 0)
Wenn auf 1 gesetzt, wird das Video in HD abgespielt, insofern vor­handen. Es wird nicht automatisch die höchste Auflösung genommen! Ein Video mit 360p und 480p wählt dann nicht die höheren 480p.
iv_load_policy (default 1)

Setzt man den Wert auf 3, werden video annotations nicht angezeigt.

<object width="400" height="250"
	type="application/x-shockwave-flash"
	data="http://www.youtube-nocookie.com/v/
	jBmP7xTI_TA&amp;fs=1&amp;iv_load_policy=3">
	<param name="allowFullScreen" value="true" />
	<param name="allowscriptaccess" value="always" />
</object>

Zum Vergleich: youtube.com/watch?v=jBmP7xTI_TA

loop (default 0)
Wenn auf 1 gesetzt, startet das Video am Ende neu.
rel (default 1)
Wenn auf 0 gesetzt, werden keine verwandten Videos geladen, die u.a. nach Ende des Videos angezeigt würden.
showinfo (default 1)
Wenn auf 0 gesetzt, wird der Titel und mögliche andere Informationen (früher mal die Bewertung) nicht mehr angezeigt.
start

Dieses Video hat ein schlechtes 21 Sekunden-Intro. Mit start lässt sich der Startpunkt um die gegebene Sekundenzahl versetzen.

<object width="400" height="250"
	type="application/x-shockwave-flash"
	data="http://www.youtube-nocookie.com/v/
	Xo3Tpw-zLkM&amp;fs=1&amp;start=22">
	<param name="allowFullScreen" value="true" />
	<param name="allowscriptaccess" value="always" />
</object>


Noch ein paar mehr Parameter stehen unter YouTube Embedded Player Parameters.


Youtube-Nocookie

Youtube, Nocookie

Möchte man Videos von YouTube einbetten, bietet das Portal einem ein paar Optionen an. Darunter eine, die verlautet „Enable privacy-enhanced mode“/„Erweiterten Datenschutzmodus aktivieren“. Was sich am Code dann ändert ist, dass die Videos nicht mehr von youtube.com, sondern von youtube-nocookie.com abgerufen werden. Was macht den Unterschied?

Die YouTube-Hilfe erklärt:

Mit diesem Modus wird verhindert, dass YouTube Cookies für einen Nutzer speichert, der (…) nicht auf das Video klickt, um die Wiedergabe zu starten.

Zwar speichert YouTube unter Umständen Cookies auf dem Computer des Nutzers, nachdem er auf den YouTube-Videoplayer geklickt hat, es werden jedoch keine personenbezogenen Cookie-Informationen für Wiedergaben von eingebetteten Videos mit erweitertem Datenschutz gespeichert.

Cookies werden also nicht nur gesetzt, wenn man auf YouTube selbst ist, sondern auch von jeder Seite, die ein Video einbettet – unabhängig davon, ob das Video überhaupt gestartet wurde. Die erweiterte Datenschutz-Option ändert dieses Verhalten. Damit werden Cookies erst gesetzt, wenn auch das Video gestartet wird, und es werden keine personenbezogenen Daten darin gespeichert.

Was dafür spricht, diese Option zu verwenden: Wenn ich nicht auf YouTube bin, sollte ich auch keine Cookies von der Seite erhalten. Noch dazu solche, die sich merken können, welche Videos ich mir wo angeschaut habe. Ich halte es nur für faires Verhalten gegenüber den eigenen Besuchern, den Daten­schutz­modus zu aktivieren.


Videos von YouTube valide einbinden

Was YouTube einem an Code zum Einbetten gibt, ist weit davon entfernt, valide zu sein. Vermutlich, weil der Anbieter eine höchstmögliche Kompatibilität mit allen Browsern erreichen möchte. Was eigentlich ein Schlag in die Magengrube der Webstandards ist, die für eine einheitliche Darstellung in die Welt gesetzt wurden.

So ähnlich sieht der Code aus, wie YouTube ihn bereitstellt.

<object width="425" height="344">

	<param
		name="movie"
		value="[…]/v/NvE8XO6YH6o&hl=de&fs=1">
	</param>
	<param name="allowFullScreen" value="true">
	</param>
	<param name="allowscriptaccess" value="always">
	</param>

	<embed
		src="[…]/v/NvE8XO6YH6o&hl=de&fs=1"
		type="application/x-shockwave-flash"
		allowscriptaccess="always"
		allowfullscreen="true"
		width="425" height="344">
	</embed>

</object>


Entledigen wir uns erst einmal des embed, indem wir die wichtigen Informationen in das object umsiedeln; aus dem Attribut src wird dabei data; der Rest wird bereits über param übergeben. Embed wurde von Netscape eingeführt und alle Browser haben es aufgegriffen; ein Standard wurde es nie.

<object
	width="425" height="344"
	type="application/x-shockwave-flash"
	data="[…]/v/NvE8XO6YH6o&hl=de&fs=1">

	<param
		name="movie"
		value="[…]/v/NvE8XO6YH6o&hl=de&fs=1">
	</param>
	<param name="allowFullScreen" value="true">
	</param>
	<param name="allowscriptaccess" value="always">
	</param>

</object>


Jetzt noch anstatt & („Ampersand“) dessen Entität (&amp;) angeben und optional die param als leere Elemente kennzeichnen, ohne schließendes Tag.

<object
	width="425" height="344"
	type="application/x-shockwave-flash"
	data="[…]/v/NvE8XO6YH6o&amp;hl=de&amp;fs=1">

	<param
		name="movie"
		value="[…]/v/NvE8XO6YH6o&amp;hl=de&amp;fs=1" />
	<param name="allowFullScreen" value="true" />
	<param name="allowscriptaccess" value="always" />

</object>


Unser Ergebnis: Valides XHTML 1.0 Strict. Wer es jetzt genauer wissen möchte, den verweise ich auf diese beiden großartigen Artikel: A List Apart: Flash Satay und A List Apart: Bye Bye Embed.