Esoterische Scriptsprachen

Posted by Poddn on Nov 21st, 2007
1
2
3
4
5
6
7
8
HAI
CAN HAS STDIO?
PLZ OPEN FILE "LOLCATS.TXT"?
    AWSUM THX
        VISIBLE FILE
    O NOES
        INVISIBLE "ERROR!"
KTHXBYE

Das Beispiel oben wurde in LOLCODE geschrieben, einer esoterischen Scriptsprache.

Andere - vieleicht bekanntere - esoterische Scriptsprachen sind Brainfuck und Whitespace.

Eclipse PDT auf einem 64bit-Linux installieren

Posted by Poddn on Nov 11th, 2007

Eclipse PDT hat mich auf meinem 64bit-Debian fast in den Wahnsinn getrieben. Ich habe die 32bit PDT-All-In-One Version probiert, die wollte sich jedoch nicht updaten lassen. Damit fiel die Installation des Subversion-Plugins flach.

Ich habs dann mal mit einem apt-get install eclipse probiert. Funktionierte ganz gut, installiert aber Eclipse 3.2. Für PDT 1.0 braucht man jedoch Eclipse 3.3 - war also auch nix.

Dann halt alles von Hand:

64bit-Eclipse herunterladen
Download: eclipse-SDK-3.3.1.1-linux-gtk-x86_64.tar.gz
Falls der Link nicht mehr funktioniert: Auf http://www.eclipse.org/downloads/ gehen und im Einleitungstext auf “Downloads for your platform may be available here.” klicken.

64bit JavaVM installieren
Damit Eclipse 3.3 läuft, benötigt es mindestens die Sun JavaVM 5.0. Unter Debian Lenny müssen zur Installation - falls noch nicht geschehen - diese beiden Zeilen in die /etc/apt/sources.lst aufgenommen werden:
deb http://security.debian.org/ lenny/updates main contrib non-free
deb-src http://security.debian.org/ lenny/updates main contrib non-free


Installiert wird die JavaVM wie gewohnt:
apt-get install sun-java5-jre

Anschließend sollte sichergestellt werden, dass diese Javaversion vom System auch benutzt wird:
update-alternatives --config java


Eclipse entpacken und starten
Das sollte nicht zu schwer sein. Ich habe mein Eclipse nach /home/pg/eclipse/ geworfen. Um Eclipse zu starten, muss die Datei “eclipse” ausgeführt werden. Unter KDE reicht es aus, diese Datei im Konqueror doppelt anzuklicken. Ihr könnt euch auch einen Eintrag im Menu basteln - whatever ;)

Eclipse konfigurieren
Als erstes muss die PDT Update-Site zum Eclipse Updater hinzugefügt werden. Dafür nach Help -> Software Updates -> Find and Install gehen, Search for new Features to install wählen und folgende Site per New Remote Site hinzufügen: http://download.eclipse.org/tools/pdt/updates/site.xml.

Bevor ihr auf Finish klickt, solltet ihr sichergehen, dass sowohl der Eintrag Europa Discovery Site als auch euer neuer PDT Eintrag markiert sind.

Im Search Results-Fenster solltet ihr nun folgende Sachen ankreuzen:

  • Europa Discovery Site -> Graphical Editors and Frameworks -> Graphical Editing Framework SDK
  • Europa Discovery Site -> Models and Model Development -> Eclipse Modeling Framework (EMF)
  • Europa Discovery Site -> Models and Model Development -> XML Schema Infoset Model (XSD)
  • Europa Discovery Site -> Web and JEE Development -> Web Standard Tools (WST)
  • PDT - > PDT Features
  • PDT -> PDT Features SDK

Wenn im oberen Bereich des Fensters kein Fehler angezeigt wird, habt ihr alles notwendige ausgewählt und es kann mit einem Klick auf Next weitergehen.

Nach dem Abnicken der Lizenzbestimmungen für die einzelnen Plugins und dem Bestätigen der Installationsverzeichnisse solltet ihr eigentlich ein frisch installiertes Eclipse PDT 64bit haben. Glückwunsch!

PNGs mit Alphakanal im IE6 nutzen

Posted by Poddn on Nov 5th, 2007

PNGs bieten den ungeheuren Vorteil, richtige Alphakanäle auf Websites nutzen zu können. Mozilla/Firefox und der IE7 unterstützen Transparenz bei PNGs nativ, der IE6 lässt sich mit Hilfe des AlphaImageLoader-Filters von Microsoft dazu bringen, Transparenz entsprechend darzustellen.

Aber der IE6 wäre nicht der IE6, wenn es da nicht irgendeinen Haken gäbe, richtig?

Genauer gesagt gibt es sogar mehrere Haken:

  1. AlphaImageLoader funktioniert nur im IE5.5 und IE6 auf Windows-Plattformen. Je nach Browser muss eine Fallunterscheidung getroffen werden
  2. Transparente PNGs können nicht gekachelt werden. Ein Einsatz als Hintergrundmuster fällt also aus.
  3. Der Filter behandelt PNGs nicht als Hintergrundbilder - selbst wenn man sich das eigentlich so vorstellt. Dieser Umstand macht das Positionieren von interaktiven Objekten - zum Beispiel Links - etwas schwierig.

Trotz dieser Einschränkungen lässt sich mit transparenten PNGs im IE6 doch noch einiges zaubern. Man muss nur wissen wie:

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
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<title>Look Ma, Transparency!</title>
 
<style type="text/css">
body {
	background-image:url('holes.gif');
	margin:0px;
	padding:0px;
}
#mybox {
	position: absolute;
	left: 50px;
	top: 50px;
	width: 376px;
	height: 376px;
	background-image: url('box.png');
	background-repeat: no-repeat;
	padding: 20px;
}
</style>
 
<!--[if lt IE 7]>

<style type="text/css">
#mybox	{
	background-image:none;
	filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(
	src='box.png',sizingMethod='crop')
	}
</style>
<![endif]-->
 
</head>
<body>
 
<div id="mybox">
	Look Ma, Transparency!
</div>
</body>
</html>

Der interessante Teil ist der, der in dem Conditional Comment steht:

  • Wir überschreiben die background-image Information mit “none”. Gefilterte PNGs sind für den IE6 keine Hintergrundbilder - er würde also beide PNGs übereinander anzeigen: das gefilterte und das ungefilterte.
  • Wir geben dem DIV die Filtereigenschaft mit. Als Quelle geben wir unser transparentes PNG an. Zusätzlich geben wir dem Filter sizingMethod=’crop’ mit auf den Weg: Sollte das PNG größer als der DIV-Container sein, wird der Rest des Bildes abgeschnitten. Neben ‘crop’ gibt es noch ’scale’, welches das PNG auf die Größe des DIVs skaliert und ‘image’, welches das DIV auf die Größe des PNGs skaliert.

Das sieht doch schonmal ganz gut aus. Aber was passiert, wenn wir einen Link in unsere Box einbauen wollen?

39
40
41
42
43
<div id="mybox">
	Look Ma,
	<a href="http://en.wikipedia.org/wiki/Transparency"
	target="_blank">Transparency!</a>
</div>

Der Link ist im IE6 nicht anklickbar. Schuld ist der Filter. Damit Links über transparenten PNGs funktionieren, gibt es zwei Dinge zu beachten:

  1. Das Element, auf das der AlphaImageLoader-Filter angewendet wird, darf keine “position”-Eigenschaft haben
  2. Die Links hingegen benötigen unbedingt eine “position”-Eigenschaft

Wir können also unser PNG-DIV nicht direkt positionieren, sonst funktionieren die Links nicht. Ist aber halb so wild, denn wir können das DIV in ein anderes DIV werfen, welches wir wiederum problemlos positionieren können. Zu diesem Zweck legen wir uns ein Container-DIV an und entfernen die Positionierungsinformationen aus unserem PNG-DIV:

13
14
15
16
17
18
19
20
21
22
23
24
25
#container {
	position: absolute;
	left:    50px;
	top:    50px;
}
 
#mybox    {
	width:    376px;
	height: 376px;
	background-image: url('box.png');
	background-repeat: no-repeat;
	padding: 20px;
}

Zu guter Letzt positionieren wir den Link relativ:

25
26
27
#mybox a {
	position:relative;
}

Der Aufruf unseres PNG-DIVs sieht dann folgendermaßen aus:

39
40
41
42
43
44
<div id="container">
	<div id="mybox">
		Look Ma, <a href="http://en.wikipedia.org/wiki/Transparency" 
		target="_blank">Transparency!</a>
	</div>
</div>

Fertig sieht das ganze dann so aus: transparency01.html