Profile picture Über mich

sebadorn | blog

Wenn die Ubuntu-Live-CD/DVD nicht mit dem Nouveau-Treiber starten will

Wie auf Twitter vielleicht mitbekommen, bin ich einmal wieder ein wenig frustiert, weil ein be­stellter PC erstens zu laut ist, und zweitens die Ubuntu-Live-DVD nicht startet. Gegen Ersteres kann ich selbst nicht viel unternehmen ohne jegliche Gewährleistung aus dem Fenster zu schmeißen. Für das Live-DVD-Problem habe ich wenigstens heute eine Lösung gefunden.

Der erste Screenshot zeigt das Problem. Es wird von der DVD (Ubuntu 11.10, 64bit) gebootet, es kommt kurz der pink-lilane Screen mit dem Tastatur- und Männchen-Symbol und danach die Text-Ausgabe aus dem Bild oben. Ab da geht nichts mehr.

Woran mag es liegen?

Okay, vielleicht ist die DVD fehlerhaft? Nope, sie funktioniert sowohl mit meinem aktuellen (bald 6 Jahre alten, flüsterleisen ALDI-)PC, als auch am Rechner meines Vaters. Fehlerhafte DVD: Ausgeschlossen.

Sind da verwertbare Informationen in dem Text? Hm, modprobe, das war doch irgendetwas mit Treibern? Weiter oben steht auch mehrmals das Wort driver und … nouveau? Das ist der OpenSource-Treiber für NVIDIA-Grafikkarten! Zum Google-Mobil! Na na na na na na na na …

So hat es nun geklappt

DVD wird gelesen, bootet und der pinka-lilane Screen mit der Tastatur und dem Männchen ersch­eint. Drück jetzt [Enter] um in das erweiterte Menü zu kommen. Falls nach einer Sprache gefragt wird, wähle deine Sprache mit [Enter] aus. Drück die Taste [F6] für die erweiterten Bootoptionen und setze ein Häkchen bei nomodeset. (Mit [Esc] lässt sich das Untermenü wieder schließen.) Starte das Live-System. Phase 1 ist abgeschlossen. Bei mir hat das Ubuntu-Live-System nun geladen.

Read more

Opera Browser-Shortcuts

Opera-Logo

Niemand der auch nur halbwegs gut in Bildbearbeitung ist, kommt völlig ohne Tastaturkürzel aus. Wenn man immer erst das gewünschte Werkzeug anklicken müsste, würde man ja nie fertig. Ein geschmeidiger Workflow ist einfach zu wichtig. Warum sollte das nicht auch für Browser gelten? Heute gibt es daher ein paar Tipps für Opera-Nutzer.

Custom Search

Opera custom search

Im Screenshot sieht man meine verfügbaren Suchmaschinen. Einen Begriff bei Wikipedia nach­schlagen: w Creative Commons. Videos auf YouTube: y Deae Lunae. Auch sehr praktisch ist deutsch-englisch Wörterbuch dict.cc: d fiddlesticks. Am Beispiel von dict.cc schauen wir uns mal die Einrichtung an.

Read more

Gezeichnete Eindrücke zur laufenden Anime-Winter-Saison 2011

Senki Zesshou Symphogear

Senki Zesshou Symphogear – Reaktion

Read more

Opera Extensions und XHR

OEX und XHR

Zur Zeit schreibe ich an einer Opera Extension. Bisher zu finden auf GitHub, später möchte ich sie dann auch im Katalog von Opera einstellen. Das als Vorgeschichte.

Situation

Bei berühren eines Links zu einer Grafik, wird selbige angezeigt.

Das JavaScript-Skript der Extension wird auf der besuchten Seite eingebunden. Sobald der Mauscursor einen Link berührt, wird geprüft, ob das Ziel ein Bild (endend auf .JPG, .PNG etc.) ist und falls dem so ist, angezeigt. Führt der Link nicht direkt zu einer Grafik, aber zu einem Dienst mit einer verfügbaren API, wird diese gefragt. Einige Dienste, die sich auf Medien wie Grafiken und Videos spezialisiert haben, bieten den oEmbed-Standard an; so auch deviantART.

Ein Beispiel, wie das abläuft:

  1. Folgender Link wird gesetzt: http://fav.me/d468yca. Dabei haben wir keinen direkten Link zur Grafik selbst, aber zu dessen Galerie-Seite.
  2. Um die URL für die Grafik selbst herauszufinden, fragen wir die API des Dienstes – in diesem Fall deviantART: http://backend.deviantart.com/oembed?url=http://fav.me/d468yca.
  3. Die Antwort enthält den Pfad zur Grafik:
    "url":"http://fc02.deviantart.net/fs70/i/2011/223/0/4/cloudsdale_by_karzahnii-d468yca.png"
Read more

Herausfinden, ob ein Punkt in einer Ellipse liegt

Ein Artikel darüber, wie man herausfindet, ob ein Punkt (von einem Mausklick) innerhalb einer bestimmten geometrischen Form (hier: einer Ellipse) liegt, diese sich aber nicht im Koordinaten-Ursprung befinden und noch dazu rotiert wurden.

Das Ziel

Auf einer <canvas>-Fläche befinden sich mehrere Figuren. Klickt man auf die Fläche, soll die getroffene Figur ausgewählt werden. Die Figuren können sich sonstwo befinden und wurden unter Umständen auch rotiert.

Das Ellipsen-Objekt

Zum Zeichnen eines Ellipsen-Objektes werden ein paar Informationen benötigt. Dies sind meine Variablennamen und ihre Bedeutung:

x, y, width, height
Geben die Position auf dem Canvas und Breite/Höhe an.
rotate
Rotationswinkel, der angewendet werden soll. Als Einheit werden Rad verwendet (360° = 2π rad).
ctx
Der 2D-Kontext des Canvas, dessen Funktionen zum Zeichen verwendet werden.

Zeichnen der Ellipse

Der folgende Code stammt von Web Reflection: ellipse and circle for canvas 2d context.

draw: function() {
	var hB = ( this.width / 2 ) * .5522848,
		vB = ( this.height / 2 ) * .5522848,
		eX = this.x + this.width,
		eY = this.y + this.height,
		mX = this.x + this.width / 2,
		mY = this.y + this.height / 2;

	this.applyRotation();

	this.ctx.beginPath();
	this.ctx.moveTo( this.x, mY );
	this.ctx.bezierCurveTo( this.x, mY - vB, mX - hB, this.y, mX, this.y );
	this.ctx.bezierCurveTo( mX + hB, this.y, eX, mY - vB, eX, mY );
	this.ctx.bezierCurveTo( eX, mY + vB, mX + hB, eY, mX, eY );
	this.ctx.bezierCurveTo( mX - hB, eY, this.x, mY + vB, this.x, mY );
	this.ctx.closePath();

	this.ctx.fill();
}

Die Rotation wende ich in einer eigenen Funktion auf den Canvas-Kontext selbst an. Damit sich die Ellipse dabei nicht verschiebt, muss ihr Mittelpunkt zuerst in den Koordinaten­ursprung verschoben werden mit translate(x, y). Danach wird sie rotiert und wieder an ihre vorherige Position gesetzt.

applyRotation: function() {
	if( this.rotate != 0 ) {
		var xShift = this.x + parseInt( this.width / 2 ),
			yShift = this.y + parseInt( this.height / 2 );

		this.ctx.translate( xShift, yShift );
		this.ctx.rotate( this.rotate );
		this.ctx.translate( -xShift, -yShift );
	}
}

Wundert sich schon jemand, warum erst nach (xShift, yShift) und später nach (-xShit, -yShift) verschoben wird? Von der Logik her muss es natürlich andersherum sein und so geschieht es intern auch. Bei Funktionen wie translate() und rotate() werden entsprechend Matrizen multipliziert. Eine Besonderheit bei der Matrizenmultiplikation ist es, dass die Faktoren in umgekehrter Reihenfolge aufgelistet werden müssen, als sie dann Anwendung finden.

Read more