sebadorn.de

Mastodon – Das wiederentdeckte soziale Netzwerk

Das Mastodon-Logo mit der Startseite von mastodon.gamedev.place im Hintergrund

Seit der Übernahme von Twitter durch Elon Musk sehen viele Benutzer die dortigen Entwicklungen mit Sorge: Große Kündigungswellen; Angestellte, die im Büro über­nachten; mangelnde Moderation und Abschalten der Pressestelle; Hin-und-Her um das blaue Verifizierungshäkchen, welches durch Twitter Blue nichts mehr mit Verifizierung zu tun hat und so Identitäts-Imitation Tür und Tor geöffnet hat; das Killen von Dritt­anbieter-Apps … Ich habe bereits ein paar Punkte ausgelassen, aber solange es die Seite noch gibt, werden sicherlich weitere dazukommen.

Wenig erstaunlich also, wenn Nutzer stetig und besonders beim nächsten Vorkommnis abspringen oder zumindest parallel andere Social Media-Dienste ausprobieren.

Twitter-Gründer Jack Dorsey hat einen neuen Dienst namens Bluesky gegründet, der sich aktuell in der Beta-Phase mit Warteliste befindet, Meta hat kürzlich Threads gestartet, welches an Instagram gekoppelt ist – Anmeldungen sind innerhalb der EU jedoch bisher nicht möglich.

Und dann gibt es da wie üblich auch wieder die Open Source-Community, mit einer eigenen, nicht kommerziellen Antwort: Mastodon. Wobei dieses nicht neu ist, sondern jetzt aufgrund der Entwicklungen etwas vom Platz im Scheinwerferlicht erhält.

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

JARs zu einem Dynamic Web Project in Eclipse hinzufügen

Für die Kommunikation zwischen dem Tomcat- und dem APE-Server in meiner Bachelor-Thesis brauche ich auf der Java-Seite JSON-Fähigkeiten. Meine Wahl fiel auf Jackson, den es bequemerweise sogar in den Ubuntu-Repositories gibt.

sudo apt-get install libjackson-json-java

Update 2011-12-18: Die Lösung ist bedeutend einfacher als das, was nach diesem Abschnitt kommt. Die JARs gehören in das WEB-INF/lib-Verzeichnis des Projektes. Fertig.

Alte Lösung:
In den Projekt-Eigenschaften unter „Java Build Path“ – Tab „Libraries“ habe ich dann die externen JARs hinzugefügt. Diese waren unter /usr/share/java/ zu finden.

Zum Projekt hinzugefügte externe JARs.

An diesem Punkt dachte ich, es wäre alles geritzt. Ich konnte die neuen Klassen im Code importieren und verwenden. Eclipse hat mir nichts angestrichen und auch die Auto-Vervoll­ständigung hat funktioniert. Dann mal den Server starten …

SCHWERWIEGEND: Allocate exception for servlet [meinServlet]
java.lang.ClassNotFoundException: org.codehaus.jackson.JsonParseException
    at org.apache.catalina.loader.WebappClassLoader.loadClass

:(

Read more

VirtuaWin: Virtuelle Desktops unter Windows

VirtuaWin - Desktopübersicht

Linux-Menschen kennen virtuelle Desktops, die gehören da einfach dazu. Virtuelle Desktops in a Nutshell: Ihr habt 1 Monitor, aber mehrere Desktops durch die ihr durchwechseln könnt – jeder mit eigenen offenen Ordnern und Programmen. Nun bin ich aber immer noch zu großem Teil Windows-Mensch und vermisste dieses praktische Feature. Bis mir dann der Gedanke kam: „Mensch, du, als ob da nicht mal jemand was für Windows geschrieben hätte.“ – Haben welche, sogar einige. Der Gewinner meines kurzen Auswahlverfahrens ist: VirtuaWin.

Mal das Limit austesten … Bei allem was heilig ist! Bis zu 20 Desktops lassen sich nutzen! Da bin ich mit vieren eher begnügsam. Bisher nicht entdeckt habe ich fesche Übergangseffekte oder ein Rauszoomen auf alle Desktops, kann aber sehr gut ohne leben. Dafür ruckelt, stottert und flattert auch nichts. Shortcuts lassen sich frei belegen. Meine Wahl sind [Win] + [Pfeil­taste] zum Wechsel und [Win] + [Strg] + [Pfeiltaste] für Fenster woanders hin­schicken. Darüber hinaus gibt es weitere belegbare Aktionen.

Ich behaupte: Ich weiß wie ihr tickt. Wer mehrere Desktops hat, braucht auch auf jedem ein anderes Wallpaper. Wer das Gegenteil behauptet lügt. Zu diesem Zweck existiert das Zusatz­modul VirtuaPlus. Herunterladen und in den Ordner VirtuaWin/modules/ werfen. Wenn VirtuaWin geladen ist, über das Tray icon das Setup aufrufen. Unterpunkt Modules, VirtuaPlus anklicken und Configure-Button drücken. Den Rest bekommt ihr selbst heraus oder aber könnt in den Kommentaren danach fragen.


Anmerkung: Wer Sorge hat, das Programm wühle sich tief durch Systemorgane, der sei beruhigt. Man muss nach der Installation nichtmal neustarten und es lässt sich jederzeit starten oder beenden. No big deal.


Eclipse mit Pydev für Python fit machen

Seit dem 1. Semester Medieninformatik verwenden wir Eclipse für Java-Entwicklung. Jetzt im 3. Semester kam Skriptsprache Python dazu, als IDE wurde uns nur IDLE gezeigt. Mit IDLE bin ich persönlich nicht so recht warm geworden, obwohl die Python Shell davon doch recht praktisch ist für kleinere Programmfetzen. In Hinsicht auf das Eclipse-Subversion-PlugIn wäre es aber doch was Feines, könnte man auch Eclipse verwenden.

Pydev installieren

Mit dem PlugIn Pydev geht das. In Eclipse über die Menüpunkte Help ? Install New Software… gehen. Als URL http://pydev.org/updates eintragen und nach Schema F weiter durchklicken.

Pydev installieren Available Software

Read more