Kochsche Kurve
Heute haben wir im Java-Programmieren mit GUI-Programmierung angefangen. Die Exercices waren simpel (Buttons erzeugen, ausrichten etc.), jedoch hatte es als Zusatzaufgabe noch die Kochsche Kurve.

import java.awt.*; import java.awt.event.*; import javax.swing.*; /** * Kochsche Kurve * * @author Andreas Jaggi * @created 26. März 2004 * @version 1.0 */ public class KochscheKurve extends JFrame { /** * Constructor for the KochscheKurve object */ public KochscheKurve() { setSize( 600, 600 ); setTitle( "Die Kochsche Kurve" ); } /** * Überladene "interne" Methode, die aufgerufen wird, wenn das Fenster neu * gezeichnet werden muss * * @param g Graphik-Objekt, auf dem gezeichnet wird */ public void paint( Graphics g ) { super.paint( g ); double x1; double x2; double x3; double y1; double y2; double y3; int depth = 13; x1 = 100; y1 = 400; x2 = 500; y2 = 400; x3 = ( x2 - x1 ) * Math.cos( -Math.PI / 3 ) - ( y2 - y1 ) * Math.sin( -Math.PI / 3 ) + x1; y3 = ( x2 - x1 ) * Math.sin( -Math.PI / 3 ) + ( y2 - y1 ) * Math.cos( -Math.PI / 3 ) + y1; koch( g, depth, x2, y2, x1, y1 ); koch( g, depth, x1, y1, x3, y3 ); koch( g, depth, x3, y3, x2, y2 ); } /** * Rekursive Funktion, welche den Fraktal zwischen zwei Punkten bis zu einer * bestimmten Tiefe zeichnet. * * @param g Graphik-Objekt, auf dem gezeichnet wird * @param depth Rekursionstiefe * @param x1 X-Koordinate des ersten Punktes * @param y1 Y-Koordinate des ersten Punktes * @param x2 X-Koordinate des zweiten Punktes * @param y2 X-Koordinate des zweiten Punktes */ public void koch( Graphics g, int depth, double x1, double y1, double x2, double y2 ) { double x13 = x1 + ( x2 - x1 ) / 3.0; double x23 = x1 + 2.0 * ( x2 - x1 ) / 3.0; double y13 = y1 + ( y2 - y1 ) / 3.0; double y23 = y1 + 2.0 * ( y2 - y1 ) / 3.0; double xd = ( x23 - x13 ) * Math.cos( -Math.PI / 3 ) - ( y23 - y13 ) * Math.sin( -Math.PI / 3 ) + x13; double yd = ( x23 - x13 ) * Math.sin( -Math.PI / 3 ) + ( y23 - y13 ) * Math.cos( -Math.PI / 3 ) + y13; if ( depth > 0 ) { koch( g, depth - 1, x1, y1, x13, y13 ); koch( g, depth - 1, x13, y13, xd, yd ); koch( g, depth - 1, xd, yd, x23, y23 ); koch( g, depth - 1, x23, y23, x2, y2 ); } else { g.drawLine( (int) x1, (int) y1, (int) x2, (int) y2 ); } } /** * The main program for the KochscheKurve class * * @param args The command line arguments */ public static void main( String[] args ) { KochscheKurve graf = new KochscheKurve(); graf.setVisible( true ); graf.addWindowListener( new WindowAdapter() { public void windowClosing( WindowEvent e ) { System.exit( 0 ); } } ); } }
Rechnen mit CSS
Im Stylesheet dieser Seite findet sich unter anderem folgende Styledefinition:
#rechts li a { display: block; border-bottom: 1px solid #FFFFFF; width: 100% - 30px; padding-left: 30px; }
Diese macht, dass die Links im rechten Submenu auf der ganzen Breite funktionieren und nicht nur wenn man auf den Text klickt.
Zuerst hatte ich die Weite auf 100% gesetzt. Jedoch hat der Mozilla wegen der 30px Padding noch 30px ausserhalb des Rahmens angezeigt. Mit overflow: hidden habe ich versucht das Problem zu lösen. Jedoch hat das nicht funktioniert, da es ja kein eigentlicher overflow ist.
Schlussendlich bin ich durch ausprobieren von garantiert fehlerhaften Styledefinitionen auf die jetztige Lösung gekommen. Natürlich validiert das nun nicht mehr als korrektes CSS, aber es funktioniert :-)
Da ich nun keine Windows-Maschine mehr habe, wäre ich froh um Screenshots vom Submenu, wenn mit der Maus über ein Link gefahren wird (a:hover).
125. Geburtstag von Albert Einstein
"Phantasie ist wichtiger als Wissen. Wissen ist begrenzt, Phantasie aber umfaßt die ganze Welt."
Albert Einstein (1879-1955)
Mehr dazu bei heise
x-log, trashed again
"Am liebsten erinnere ich mich an die Zukunft."
Salvador Dalí (1904-1989), span. surrealist. Maler
Wie schon angekündigt, habe ich während den Semesterferien die PHP-Scripts, welche hier im Hintergrund ihre Arbeit tun, neu geschrieben. Bisher sind noch nicht alle Funktionen der alten Version implementiert. Es werden jedoch laufend neue Funktionen hinzugefügt.
Mit dem alten Script verschwinden auch die alten Layouts, da hier nun ein neues Template-System werkelt. Aber keine Angst es werden neue Layouts kommen, denn dieser graue Kasten gefällt mir schon jetzt nicht mehr.
PHP Literatur
Aber auch weil ich durch die Lektüre folgender Artikel zu einem Rewrite (ja, from Scratch) von meinem Weblog motiviert worden bin. Insbesondere hat mich der Artikel über Template Engines beeindruck, da hier mit einer völlig anderen Ansicht an das Problem herangegangen wird, als ich es bisher getan habe. An dieser Stelle wäre es natürlich interessant zu wissen wie andere Leute ihre Templates handhaben.
how to write better code
A Few Tips for Writing Useful Libraries in PHP
Template Engines
Functional Specification Tutorial
Pinguinfunk
Um PCMCIA aufm PowerBook zum Laufen zu bringen benötigte es eine spezielle config.opts. Nun funktioniert die drahtlose Verbindung problemlos. Jedoch unterstützen die Treiber des Kernels den Monitor-Modus nicht, welcher für Spielereien wie Kismet, wellenreiter etc. benötigt wird. Um diesen Modus nützen zu können müssen zuerst die Treiber gepatcht werden (der Patch funktioniert partiel auch für 2.6.1 und 2.6.3 Kernel).
Dazu einfach den Patch ins Verzeichnis /usr/src/linux/drivers/net/wireless/ kopieren und dort folgenden Befehl ausführen: patch -p4 < orinoco-0.13e-2.6.2-patch.diff
Dummerweise schneits draussen und ich bin erkältet, so dass ich nicht spielen gehen kann :-(
Sco vs. Linux
Reicht man ein zur Klage.
Die eine die auf griechisch war,
War leider viel zu vage.
Neun kleine UNIX Zeilen
Sollten es begründen.
Die eine war trotz größter Müh'
In LINUX nicht zu finden.
Acht kleine UNIX Zeilen
Dienten zum Beweise.
Die eine war aus BSD,
Pech für Anwalt Heise.
Sieben kleine UNIX Zeilen,
Kamen vor Gericht.
Die eine war 'ne Fehlernummer,
Die taugte dazu nicht.
Sechs kleine UNIX Zeilen,
Sollten es belegen.
Doch eine kam zur GPL
Durch SCO Kollegen.
Fünf kleine UNIX Zeilen
Waren noch dabei.
Die eine kam von einem Band
Mit Aufschrift System Drei.
Vier kleine UNIX Zeilen,
Doch eine, sonderbar,
Gehörte nicht zum dem Programm,
Sie war ein Kommentar.
Drei Kleine UNIX Zeilen,
Waren das Problem.
Eine war zwar System Five,
Doch kam von IBM.
Zwei kleine UNIX Zeilen,
Waren noch geblieben.
Die eine war schon reichlich alt
Und kam von System Sieben.
Eine kleine UNIX Zeile
Wurde angeführt.
Die hatte Linus Torvalds selbst
Am Anfang programmiert.
Ohne eine UNIX Zeile
Kann SCO nichts machen.
Doch eines muss man zugestehn:
Wir hatten was zu lachen.
Schlussbemerkung:
Hier zeigt sehr schön ein Kinderlied,
Warum McBride die Wahrheit mied.
Ausm heise online-Leserforum via vowe.net
Les Rivières pourpres 2 - les anges de l'apocalypse
Olivier Dahan a créé le film en utilisant beaucoup de lumière colorée qui produit une ambiance spéciale. De plus le film me plait beaucoup car Jean Reno y joue le rôle d'un commissaire.