Showing
55 changed files
with
2012 additions
and
0 deletions
classes/precalc.class
0 → 100755
No preview for this file type
classes/test.class
0 → 100755
No preview for this file type
classes/triangle.class
0 → 100755
No preview for this file type
classes/vertex.class
0 → 100755
No preview for this file type
css/style.css
0 → 100755
1 | +A:link { | ||
2 | + color: #FF0000; | ||
3 | + font-family: Arial, Helvetica, sans-serif; | ||
4 | + text-decoration: none; } | ||
5 | + | ||
6 | +A:visited { | ||
7 | + color: #FF0000; | ||
8 | + font-family: Arial, Helvetica, sans-serif; | ||
9 | + text-decoration: none; } | ||
10 | + | ||
11 | +A:active { | ||
12 | + color: #FF0000; | ||
13 | + font-family: Arial, Helvetica, sans-serif; | ||
14 | + text-decoration: none; } | ||
15 | + | ||
16 | +A:hover { | ||
17 | + color: #FF8888; | ||
18 | + font-family: Arial, Helvetica, sans-serif; | ||
19 | + text-decoration: none; } | ||
20 | + | ||
21 | +H1 { | ||
22 | + font-size: 10pt; | ||
23 | + font-family: Arial, Helvetica, sans-serif; | ||
24 | + color: #000000; } | ||
25 | + | ||
26 | +H2 { | ||
27 | + font-size: 10pt; | ||
28 | + font-family: Arial, Helvetica, sans-serif; | ||
29 | + color: #000000; } | ||
30 | + | ||
31 | +p, table, tr, td, ul { | ||
32 | + font-size: 9pt; | ||
33 | + font-family: Arial, Helvetica, sans-serif; | ||
34 | + color: #000000; } | ||
35 | + | ||
36 | +body { | ||
37 | + font-family: Arial, Helvetica, sans-serif; | ||
38 | + font-size: 9pt; | ||
39 | + color: #000000; | ||
40 | + margin-top: 0pt; | ||
41 | + margin-left: 0pt; } | ||
42 | + | ||
43 | +.header { | ||
44 | + background-image:url(../images/topbg.png); | ||
45 | + background-attachment:fixed; | ||
46 | + padding-top: 0pt; | ||
47 | + padding-left: 0pt; } | ||
48 | + | ||
49 | +.header2 { | ||
50 | + background-image:url(../images/img1.png); | ||
51 | + background-attachment:fixed; | ||
52 | + background-repeat:no-repeat; | ||
53 | + padding-top: 0pt; | ||
54 | + padding-left: 0pt; } | ||
55 | + | ||
56 | +.menubg1 { | ||
57 | + background-image:url(../images/menubg1.png); | ||
58 | + background-repeat:repeat-y; | ||
59 | + background-color: #a0a0ff; } | ||
60 | + | ||
61 | +.menubg2 { | ||
62 | + background-image:url(../images/menubg2.png); | ||
63 | + background-repeat:repeat-y; | ||
64 | + background-color: #a0a0ff; } | ||
65 | + | ||
66 | +.menubg3 { | ||
67 | + background-image:url(../images/menubg3.png); | ||
68 | + background-repeat:repeat-y; | ||
69 | + background-color: #a0a0ff; } | ||
70 | + | ||
71 | +.menubg { | ||
72 | + background-image:url(../images/menubg.png); | ||
73 | + background-repeat:repeat-y; | ||
74 | + background-color: #a0a0ff; } | ||
75 | + | ||
76 | +.maintopbg { | ||
77 | + background-image:url(../images/maintop.png); | ||
78 | + background-repeat:repeat-y; | ||
79 | + background-attachment:fixed; | ||
80 | + background-color: #5c5cff; } | ||
81 | + | ||
82 | +.menuborder { | ||
83 | + background-color: #a2a2ff; } | ||
84 | + | ||
85 | +.menusubject { | ||
86 | + font-size: 10pt; | ||
87 | + font-family: Arial, Helvetica, sans-serif; | ||
88 | + color: #000000; | ||
89 | + font-weight: bold; } | ||
90 | + | ||
91 | +.copyright { | ||
92 | + font-size: 7pt; | ||
93 | + font-family: Arial, Helvetica, sans-serif; | ||
94 | + color: #000000; } | ||
95 | + | ||
96 | +.fixed { | ||
97 | + font-size: 9pt; | ||
98 | + font-family: Courier; } | ||
99 | + | ||
100 | +.tooltip { | ||
101 | + position: absolute; | ||
102 | + width: 400; height: 200px; | ||
103 | + visibility: hidden; | ||
104 | + z-Index: 1; | ||
105 | + font-class: arial, helvetica, sans-serif; | ||
106 | + font-style: italic; | ||
107 | + font-variant: small-caps; | ||
108 | + font-weight: bold; | ||
109 | + font-size: 10pt; | ||
110 | +} | ||
111 | + | ||
112 | +.invis { | ||
113 | + position: relative; | ||
114 | + display: none; | ||
115 | + z-Index: 1; | ||
116 | +} | ||
117 | + | ||
118 | +.vis { | ||
119 | + position: relative; | ||
120 | + display: block; | ||
121 | + z-Index: 1; | ||
122 | +} | ||
123 | + | ||
124 | +.dir { | ||
125 | + font-class: arial, helvetica, sans-serif; | ||
126 | + font-size: 10pt; | ||
127 | + text-decoration: none; | ||
128 | + font-weight: bold; | ||
129 | +} | ||
130 | + | ||
131 | +.file { | ||
132 | + font-class: arial, helvetica, sans-serif; | ||
133 | + font-size: 10pt; | ||
134 | + font-decoration: none; | ||
135 | +} |
de/copyright.txt
0 → 100755
1 | +Diese Seiten wurden für <A href="http://www.mozilla.org/">mozilla</A> | ||
2 | +bei einer Auflösung von 800x600 optimiert, sollten aber auch mit dem IE | ||
3 | +betrachtbar sein. Leider sind einige Elemente meiner Seite nicht mit NS 4.x | ||
4 | +betrachtbar. Unter Windows wechseln sie bitte zu IE oder NS 6.0 oder besser noch | ||
5 | +zu mozilla. Unter Linux nutzen Sie bitte mozilla. Opera sollte die Seiten auch | ||
6 | +richtig darstellen. Bei Problemen ... mailt mir bitte. |
de/gtkclmon.inc
0 → 100755
1 | +<TABLE width="595" border="0" cellspacing="0" cellpadding="0"> | ||
2 | +<TR> | ||
3 | + <TD> | ||
4 | + Ein Projekt, das ich für einen Ex-Arbeitgeber von mir angefangen | ||
5 | + hatte...seit ich diesen verlassen habe schläft es.<BR> | ||
6 | + Es gab da einen Cluster von 33 Alphas (keine Ahnung mehr welchen Typ | ||
7 | + genau) und ich wollte mir einen einfachen und schnellen Weg schaffen | ||
8 | + informationen ueber jedem dieser 33 Rechner zu erhalten.<BR> | ||
9 | + Ein weiterer Grund diese Programm zu schreiben war für mich mehr | ||
10 | + über GTK, Socketprogrammierung und threads zu lernen.<BR> | ||
11 | + Das Programm ist noch nicht fertig aber vielleicht findet es | ||
12 | + irgendjemand nützlich (zumindest um daraus zu lernen). | ||
13 | + Der Sourcecode liegt zu download bereit.<BR> | ||
14 | + <BR><BR> | ||
15 | + Hier ein Screenshot von dem Programm:<BR> | ||
16 | + <BR> | ||
17 | + <TABLE border="0" cellpadding="2" cellspacing="0"> | ||
18 | + <TR> | ||
19 | + <TD valign="top"> | ||
20 | + <img src="images/screenshot.jpg" alt="clmon" align=left></TD> | ||
21 | + <TD> | ||
22 | + Jeder Button repräsentiert einen node in dem cluster. | ||
23 | + Der Text auf den Buttons ist der jeweilige Name des nodes | ||
24 | + und der darunterliegende Balken zeigt die aktuelle | ||
25 | + Prozessornutzung. Rot steht für user, Blau für | ||
26 | + system und Grün für idle. Ist der node down oder | ||
27 | + nicht online (oder mein Server läft nicht) dann ist der | ||
28 | + Balken Schwarz. Clickt man auf einen Button bekommt man ein | ||
29 | + Popup-Menü über das man verschiedene Informationen | ||
30 | + zu den einzelnen nodes abfragen kann.</TD> | ||
31 | + </TR> | ||
32 | + </TABLE> | ||
33 | + <BR><BR> | ||
34 | + Dieses Programm ist noch nicht fertig. Ich gebe keine Garantie, das es | ||
35 | + läft oder nicht evtl. Dinge beschädigt. Allerdings läuft | ||
36 | + es bei mir gut und hat noch nichts beschädigt, obwohl noch eine | ||
37 | + Menge Bugs zu fixen sind.<BR><BR> | ||
38 | + Leider habe ich zur Zeit keine Informationen wie das Programm zu | ||
39 | + installieren ist (leider keine Zeit). Wenn es trotzdem jemand | ||
40 | + ausprobiert und auf bugs stoßen oder Anregungen haben bitte | ||
41 | + schickt mir ne kurze mail. Sollte jemand bugfixes haben, oder interesse | ||
42 | + weiter daran zu arbeiten, bitte. Ich habe leider nicht die Zeit mich | ||
43 | + weiter darum zu kümmern (vielleicht in Zukunft nochmal wieder) und | ||
44 | + es währe eine Schande die ganze Arbeit die ich da schon | ||
45 | + reingesteckt habe wegzuschmeißen. ;-)<BR><BR> | ||
46 | + Ich habe angefangen das Ding in C++ neu zu schreiben, bin aber nicht | ||
47 | + fertig geworden damit...allerdings is der serverteil so gut wie +fertig. | ||
48 | + <BR><BR> | ||
49 | + Viel Spaß....(oder Frustration..Entschuldigung) | ||
50 | + </TD> | ||
51 | +</TR> | ||
52 | +</TABLE> |
de/info.inc
0 → 100755
1 | +<TABLE width="595" border="0" cellspacing="0" cellpadding="0"> | ||
2 | +<TR> | ||
3 | + <TD> | ||
4 | + OK, ihr fragt danach, dann bekommt ihrs auch (aber es könnte | ||
5 | + langweilig sein):<BR><BR> | ||
6 | + | ||
7 | + Name: Georg Steffers<BR> | ||
8 | + Geburtstag: 15.12.1973 (Geschenke immer willkommen)<BR> | ||
9 | + Wohnort: Münster<BR> | ||
10 | + <BR> | ||
11 | + Ich wurde in einem kleinen Ort in Nord-NRW, Ochtrup geboren. Das | ||
12 | + liegt in der nähe vom Münster. Mein Leben verlief | ||
13 | + einigermassen normal, ich bin zur Schule gegangen habe in den Tag | ||
14 | + gespielt, bis ich mich eines Tages entscheiden mußte was ich | ||
15 | + mit dem Rest meines Lebens anfangen wollte. Zu diesem Zeitpunkt hatte | ||
16 | + ich bereits einige Erfahrung mit C-programmierung und Spaß daran | ||
17 | + gefunden. Also bin ich an einen Schule für angewandte Informatik | ||
18 | + gegangen um eine Ausbildung zum staatlich geprüften | ||
19 | + Informatikassistent Softwaretechnologie zu machen. Diese Schule war | ||
20 | + das B.I.B in Bergisch-Gladbach nahe Köln. | ||
21 | + Wärend meiner Ausbildung dort hatte ich ne Menge Spass, sowohl was | ||
22 | + die Ausbildung betrifft als auch wegen der nähe zu Köln und | ||
23 | + ich habe heute noch einige gute Freunde dort. | ||
24 | + Irgendwann hatte ich dann meinen Abschluss an der Schule und bin | ||
25 | + zurück nach Münster gezogen. Im Moment arbeite ich bei | ||
26 | + einer Webagentur in Emsdetten (deltacity.NET). Da programmiere ich | ||
27 | + alles was so anfällt in C/C++, Perl, PHP, Java, JavaScript, HTML, SQL | ||
28 | + und was noch so anfällt. OK, das wars...vielleicht packe ich hier | ||
29 | + in Zukunft noch ein paar Fotos drauf ums ein weinig spannender zu | ||
30 | + machen. | ||
31 | + </TD | ||
32 | +</TR> | ||
33 | +</TABLE> |
de/main.inc
0 → 100755
1 | +<TABLE width="595" border="0" cellspacing="0" cellpadding="0"> | ||
2 | +<TR> | ||
3 | + <TD> | ||
4 | + So, hier jetzt meine neue Homepage und ich hoffe, daß sie, nachdem | ||
5 | + es so lange gedauert hat Anklang findet.<BR><BR> | ||
6 | + Diesmal ist das Design komplett auf meinen eigenen Mist gewachsen | ||
7 | + mit einigen Anregungen von meiner Freundin. Der Inhalt besteht | ||
8 | + immer noch hauptsächlich aus Informationen rund ums programmieren | ||
9 | + allerdings diesmal sowohl auf deutsch als auch auf englisch.<BR><BR> | ||
10 | + Diese Seiten bauen sich jetzt aus leicht und schnell zu verwaltenden | ||
11 | + Konfigurations und Includedateien auf. Dadurch hoffe ich schneller | ||
12 | + aktuelle Informationen zur verfügung stellen zu können. | ||
13 | + So plane ich zum Beispiel eine Newsbereich. Trotzdem sind diese Seite | ||
14 | + eine reine private Tätigkeit von mir und deshalb gibt es keine | ||
15 | + Garantie für regelmäßige updates.<BR> Ich stelle alle | ||
16 | + Dateien aus denen sich dieser Auftritt aufbaut | ||
17 | + zum download für jeden der daran Interesse hat zur | ||
18 | + verfügung.<BR><BR> | ||
19 | + Wie dem auch sei...ich hoffe das die Informationen die auf diesen | ||
20 | + Seiten gesammelt werden auch so von ausreichendem Interesse für | ||
21 | + viele Leute sind. | ||
22 | + </TD> | ||
23 | +</TR> | ||
24 | +</TABLE> |
de/menu.cfg
0 → 100755
1 | +Dokumentation | ||
2 | +Zeiger in C/C++#zeiger#zeiger#Eine Einführung zu Zeigern in C/C++#120#80#100#50 | ||
3 | + | ||
4 | +Projekte | ||
5 | +Clustermonitor#gtkclmon#gtkclmon#Ein Programm zur überwachung eines Rechner-Clusters#120#125#100#50 | ||
6 | +3D-Grafik / Java#show3d#show3d#eine Studie über die Grundlagen der 3D-programmierung#120#145#100#50 | ||
7 | +Quellcodes#http://www.muenster.de/~steffers/src/#src#alle meine Quellcodes#120#185#75#30 | ||
8 | +test#source#src2#Testseite#120#185#75#30 | ||
9 | + | ||
10 | +Persönliches | ||
11 | +News#news#news#aktuelle Neuigkeiten#120#235#70#30 | ||
12 | +Über mich#info#info#eine kurze persönliche Info über mich#120#230#100#50 | ||
13 | +webcam#javascript:newWin('/smain/webcam.php?LANG=de');#cam#Ich bei der arbeit (meistens)#120#245#75#50 | ||
14 | + | ||
15 | +Links | ||
16 | +The Gimp#http://www.gimp.org/#gimp#Die Open-Source Bildbearbeitungs-<br>software#120#295#100#50 | ||
17 | +Gnome#http://www.gnome.org/#gnome#Desktopumgebung für das X-Windows System#120#310#100#50 | ||
18 | +Mozilla#http://www.mozilla.org/#mozilla#ein toller Browser#120#345#70#30 | ||
19 | +Sourceforge#http://www.sourceforge.net/#sourceforge#Open Source Management Website#120#340#75#50 | ||
20 | +Freshmeat#http://www.freshmeat.net/#freshmeat#Suche nach freier Software#120#370#80#30 | ||
21 | +Seti@Home#http://www.alien.de/seti/#seti#na wo sind sie wohl?#120#385#75#30 | ||
22 | +NOePATENTS#http://petition.eurolinux.org/#petition#Bitte keine Softwarepatente in Europa!#120#380#100#50 | ||
23 | +deltacity.NET#http://www.deltacity.net/#dcn#Mein Arbeitgeber#120#415#50#30 |
de/news.inc
0 → 100755
1 | +<TABLE width="595" border="0" cellspacing="0" cellpadding="0"> | ||
2 | +<TR> | ||
3 | + <TD> | ||
4 | + <B>18.03.2001</B></TD> | ||
5 | +</TR> | ||
6 | +<TR> | ||
7 | + <TD> | ||
8 | + Seit ein paar Tagen bin ich dabei eine Seite fuer meine Sourcecodes | ||
9 | + zu schreiben. Dafür habe ich einen Fileselector mit hilfe von | ||
10 | + PHP, Javascript und <DIV>-Layern geschrieben. Der is echt nett | ||
11 | + unter mozilla und Internet Explorer zu betrachten. Das einzige ist | ||
12 | + ... ich bekomme das Ding unter Netscape 4.x nich zum laufen ... | ||
13 | + Naja, deshalb wird ab sofort die offizielle Unterstuetzung von NS 4.x | ||
14 | + gestrichen.</TD> | ||
15 | +</TR> | ||
16 | +<TR> | ||
17 | + <TD height="5"> | ||
18 | + <IMG src="images/trans.gif" width="1" height="5"></TD> | ||
19 | +</TR> | ||
20 | +<TR> | ||
21 | + <TD> | ||
22 | + Unter dem Link Projekte/test kann man einen ersten Eindruck von dem | ||
23 | + Fileselektor bekommen.</TD> | ||
24 | +</TR> | ||
25 | +<TR> | ||
26 | + <TD height="20"> | ||
27 | + <IMG src="images/trans.gif" width="1" height="20"></TD> | ||
28 | +</TR> | ||
29 | +<TR> | ||
30 | + <TD> | ||
31 | + <B>12.03.2001</B></TD> | ||
32 | +</TR> | ||
33 | +<TR> | ||
34 | + <TD> | ||
35 | + Ich habe jetzt tooltips zu jedem Menüpunkt. Das war ne | ||
36 | + Sauarbeit, weil man für jeden verdammten Browser ne eigene | ||
37 | + Version schreiben muss, ist aber ganz nett geworden finde ich. | ||
38 | + Leider sieht der ganze Auftritt mit NS 4.x immer noch etwas | ||
39 | + naja komisch aus, ich weiß aber leider nicht warum. | ||
40 | + Wer da ne Idee hat möchte sich doch bitte bei mir melden, damit | ||
41 | + ich das endlich hinbekomme, danke.</TD> | ||
42 | +</TR> | ||
43 | +</TABLE> |
de/show3d.inc
0 → 100755
1 | +<TABLE width="595" border="0" cellspacing="0" cellpadding="0"> | ||
2 | +<TR> | ||
3 | + <TD> | ||
4 | + Dies ist der Start von einem Informationssystem wie einem Lauftext | ||
5 | + für Webseite in Java geschrieben. Wenn es fertig ist soll es | ||
6 | + eine Menge Vertexe in einem Kugelförmigen Raum bewegen und | ||
7 | + Worte daraus formen. Das grundlegende 3D-Zeug ist fertig und wird in | ||
8 | + dem kleinen Applet unten demonstriert. Leider ist es nicht besonders | ||
9 | + schnell, weshalb ich nicht sicher bin ob es wirklich jemals auf | ||
10 | + die Art funktionieren wird, die ich mir vorgestellt habe.<BR> | ||
11 | + <BR> | ||
12 | + <CENTER> | ||
13 | + <APPLET code="test.class" codebase="classes" | ||
14 | + width=200 height=150 name="test"> | ||
15 | + Java muß aktiviert sein um hier etwas sehen zu können. | ||
16 | + </APPLET> | ||
17 | + </CENTER><BR> | ||
18 | + Im jetztigen Stadium tut das Applet bereits folgendes: | ||
19 | + <OL> | ||
20 | + <LI> | ||
21 | + <B>Translation, Rotation und Scalierung.</B><BR> | ||
22 | + Berechnung der 3D-Koordinaten jedes Vertexes.<BR> | ||
23 | + <I>Das geht recht schnell.</I> | ||
24 | + <LI> | ||
25 | + <B>Projection</B><BR> | ||
26 | + Die 3D-Koordinaten der Vertexe werden auf 2D-Screenkoordinateni | ||
27 | + projeziert.<BR> | ||
28 | + <I>Auch das geht recht schnell.</I> | ||
29 | + <LI> | ||
30 | + <B>Beleuchtung.</B><BR> | ||
31 | + Ermittlung der Farbintensität ueber den Winkel des | ||
32 | + Normalenvektors eines Polygons (Dreiecks) zu einem | ||
33 | + definierten Lichtvektor.<BR> | ||
34 | + <I>Auch das ist nicht das Geschwindigkeitsproblem.</I> | ||
35 | + <LI> | ||
36 | + <B>Backface-Culling</B><BR> | ||
37 | + Poligone die vom Betrachter wegzeigen werden nicht | ||
38 | + gezeichnet.<BR> | ||
39 | + <I>schnell...</I> | ||
40 | + <LI> | ||
41 | + <B>Scanline-Converting und lineares Texturemapping</B><BR> | ||
42 | + Ich mappe ein vorher dynamisch erzeugtes Karomuster auf die | ||
43 | + Pyramiede. dabei gibt es noch einige (evtl. Rundungs-)Fehler | ||
44 | + die ich noch nicht im Griff habe und das ganze ist...<BR> | ||
45 | + <I>langsam....</I> | ||
46 | + </OL><BR> | ||
47 | + | ||
48 | + Der Quellcode steht zum download bereit.<BR> | ||
49 | + Ich plane demnächst eine Dokumentation über das zu schreiben, | ||
50 | + was ich biher an 3D-Grafikprogrammierung in diesem Applet umgesetzt | ||
51 | + habe. | ||
52 | + </TD> | ||
53 | +</TR> | ||
54 | +</TABLE> |
de/source.inc
0 → 100755
1 | +<? | ||
2 | + $menucl=new base(); | ||
3 | +?> | ||
4 | +<TABLE width="595" border="0" cellspacing="0" cellpadding="0"> | ||
5 | +<TR> | ||
6 | + <TD width="395" valign="top"> | ||
7 | + <FONT class="menusubject"> | ||
8 | + Clustermointor</FONT> | ||
9 | + <IMG src="fileselpics/gnome_package.png" | ||
10 | + height="20" width="20"></TD> | ||
11 | + <TD width="200"> | ||
12 | + <TABLE width="200" border="0" cellspacing="0" cellpadding="0"> | ||
13 | + <TR> | ||
14 | + <TD width="1" height="1" bgcolor="#5C5CFF"> | ||
15 | + <IMG src="images/trans.gif" width="1" height="1"></TD> | ||
16 | + <TD width="198" height="1" bgcolor="#5C5CFF"> | ||
17 | + <IMG src="images/trans.gif" width="198" height="1"></TD> | ||
18 | + <TD width="1" height="1" bgcolor="#5C5CFF"> | ||
19 | + <IMG src="images/trans.gif" width="1" height="1"></TD> | ||
20 | + </TR> | ||
21 | + <TR> | ||
22 | + <TD width="1" height="1" bgcolor="#5C5CFF"> | ||
23 | + <IMG src="images/trans.gif" width="1" height="1"></TD> | ||
24 | + <TD width="198" height="20" bgcolor="#C9C9FF"> | ||
25 | + <FONT class="menusubject"> Projekt Dateien</FONT></TD> | ||
26 | + <TD width="1" height="1" bgcolor="#5C5CFF"> | ||
27 | + <IMG src="images/trans.gif" width="1" height="1"></TD> | ||
28 | + </TR> | ||
29 | + <TR> | ||
30 | + <TD width="1" height="1" bgcolor="#5C5CFF"> | ||
31 | + <IMG src="images/trans.gif" width="1" height="1"></TD> | ||
32 | + <TD width="198" height="1" bgcolor="#5C5CFF"> | ||
33 | + <IMG src="images/trans.gif" width="198" height="1"></TD> | ||
34 | + <TD width="1" height="1" bgcolor="#5C5CFF"> | ||
35 | + <IMG src="images/trans.gif" width="1" height="1"></TD> | ||
36 | + </TR> | ||
37 | + <TR> | ||
38 | + <TD width="1" height="1" bgcolor="#5C5CFF"> | ||
39 | + <IMG src="images/trans.gif" width="1" height="1"></TD> | ||
40 | + <TD width="198" height="1" bgcolor="#FFFFFF"> | ||
41 | + <? $menucl->scandir("./", "./", 0, "vis"); ?></TD> | ||
42 | + <TD width="1" height="1" bgcolor="#5C5CFF"> | ||
43 | + <IMG src="images/trans.gif" width="1" height="1"></TD> | ||
44 | + </TR> | ||
45 | + <TR> | ||
46 | + <TD width="1" height="1" bgcolor="#5C5CFF"> | ||
47 | + <IMG src="images/trans.gif" width="1" height="1"></TD> | ||
48 | + <TD width="198" height="1" bgcolor="#5C5CFF"> | ||
49 | + <IMG src="images/trans.gif" width="198" height="1"></TD> | ||
50 | + <TD width="1" height="1" bgcolor="#5C5CFF"> | ||
51 | + <IMG src="images/trans.gif" width="1" height="1"></TD> | ||
52 | + </TR> | ||
53 | + </TABLE> | ||
54 | + </TD> | ||
55 | +</TR> | ||
56 | +</TABLE> |
de/zeiger.inc
0 → 100755
1 | +<TABLE width="595" border="0" cellspacing="0" cellpadding="0"> | ||
2 | +<TR> | ||
3 | + <TD> | ||
4 | + <h1><u>Eine kurze Einfuehrung in die Geheimnisse des Speichers und | ||
5 | + der Zeigerprogrammierung (Pointer) in C/C++</u></h1><br> | ||
6 | + <br> | ||
7 | + Autor: <i>Georg Steffers (georg@steffers.org)</i><br> | ||
8 | + Copyright (c)2001 Georg Steffers<br> | ||
9 | + <br> | ||
10 | + Ueber mich: Zur Zeit bin ich in einer Web-Agentur als Programmierer | ||
11 | + beschaeftigt. | ||
12 | + Ich programmiere seit meinem 16. Lebensjahr in C was mittlerweile satte | ||
13 | + 11 Jahre macht und ich denke ich kann mich durchaus als fortgeschritten | ||
14 | + bezeichnen. Trotzdem koennen sich natuerlich in diesen Text Fehler | ||
15 | + eingeschlichen haben. Wenn irgend jemandem einer auffallen sollte bitte | ||
16 | + einfach eine Mail an obige mail-Adresse schicken, danke :-)<br> | ||
17 | + <br> | ||
18 | + Sollte dieser Text als Lehrstoff genutzt werde bitte ich darum ihn wie | ||
19 | + er ist abzudrucken und an die Lernenden weiterzugeben. Bei Zitaten oder | ||
20 | + Teilausdrucken bitte ich darum das ich weiterhin als Autor erkennbar | ||
21 | + bin. Danke.<br> | ||
22 | + <br> | ||
23 | + Ich habe versucht diesen Text so einfach wie moeglich zu halten um | ||
24 | + Anfaengern eine verstaendliche Einfuehrung in die Problematik von | ||
25 | + Pointern unter C zu geben. Dazu werde ich zunaechst eine einfache | ||
26 | + Schematische Darstellung des Speichers erklaeren um dann darauf | ||
27 | + einzugehen, wie man in einem Programm auf diesen zugreift (Variablen) | ||
28 | + und darauf aufbauend Zeiger erklaeren.<br> | ||
29 | + Dieses Wissen ist leider elementar und man kann nicht darauf verzichten, | ||
30 | + wenn man in C programmieren moechte. Auch nicht wenn man VisualC oder | ||
31 | + aehnliches verwendet. Denn leider bleibt es immer am Programmierer | ||
32 | + haengen wenn irgendetwas nicht funktioniert und um ein Programm debuggen | ||
33 | + (Fehler beseitigen) zu koennen muss man leider verstehen, wie es | ||
34 | + funktioniert.<br> | ||
35 | + <br> | ||
36 | + Ich rate dazu jedes Kapitel das einem noch nicht bekannt ist mehrfach | ||
37 | + zu lesen und dazwischen ein paar Pausen einzulegen um das gelesene zu | ||
38 | + verarbeiten. Wenn nach mehrfachem lesen Dinge immer noch nicht klar | ||
39 | + sind, habe ich sie nicht ausreichend erklaert und ich bitte darum mir | ||
40 | + die entsprechende Frage zu mailen. Ich werde dann mein bestes tun um | ||
41 | + das Problem zu loesen.<br> | ||
42 | + <br> | ||
43 | + Ich versuche in diesem Text kein Vorwissen vorauszusetzen. Sollte das | ||
44 | + irgendwo nicht geklappt haben schicken Sie mir bitte eine Mail und ich | ||
45 | + versuche den Fehler zu korrigieren.<br> | ||
46 | + <br> | ||
47 | + <br> | ||
48 | + <br> | ||
49 | + <b><u>Zu Bits und Bytes:</u></b><br> | ||
50 | + <br> | ||
51 | + Ein Rechner ist eine elektronische Maschine und auch die Daten in einem | ||
52 | + Rechner werden elektronisch gespeichert und verarbeitet. Genau wie jedes | ||
53 | + Elektronisches Geraet kennt der Rechner und somit ein einzelnes | ||
54 | + Speicherelement zwei Grundlegende zustaende (an/aus). Das ist | ||
55 | + vergleichbar mit einer Gluehbirne. Man kann sie einschalten oder | ||
56 | + ausschalten.<br> | ||
57 | + Wenn man jetzt dem ausgeschalteten Zustand des Speichers den Wert 0 | ||
58 | + zuweist und dem eingeschalteten den Wert 1 koennen wir schon mal zwei | ||
59 | + Werte speichern. Voila, das waere ein Bit.<br> | ||
60 | + Nu hat man in modernen (und auch in den aelteren) Programmen aber meist | ||
61 | + mehr Werte zu verarbeiten als 0 und 1. Leider gibt es keinen Schalter | ||
62 | + der mehr als ein oder ausschalten kann (mal abgesehen von Dimmern | ||
63 | + vielleicht, aber Dimmer haben wir leider nicht in einem Rechner).<br> | ||
64 | + <br> | ||
65 | + Hier hilft uns wie so oft bei Rechnern die Mathematik. Wenn sie sich mit | ||
66 | + verschiedenen Zahlensystemen (Dual oder Binaer, Oktal, Dezimal, | ||
67 | + Hexadezimal) auskennen koennen Sie die folgenden Zeilen zum goessten | ||
68 | + Teils ueberfliegen und zum naechsten Absatz weitergehen. Fuer alle | ||
69 | + anderen hier eine kurze Einfuehrung in Zahlensysteme.<br> | ||
70 | + Wie ihnen vielleicht bekannt ist rechnen wir normalerweise im | ||
71 | + dezimalsystem. Das bedeute unsere Zahlen bilden sich auch Ziffern zur | ||
72 | + basis 10 oder anders ausgedrueckt, jede Stelle einer Zahl kann Werte von | ||
73 | + 0 bis 9 annehmen. Fuer einen Rechner ist das wie ich oben schon | ||
74 | + festgestellt habe eher bloed, weil unsere kleinste Speichereinheit das | ||
75 | + Bit nur entweder 0 oder 1 darstellen kann. Es gibt aber ein Zahlsystem, | ||
76 | + das genau diese anforderung Erfuellt. Das Dual oder Binaersystem. In | ||
77 | + diesem Zahlensystem werden Zahlen nur aus folgen von 0 und 1 gebildet. | ||
78 | + Dabei werden Zahlen zu einem grossen Teil genauso behandelt wie im | ||
79 | + Dezimalsystem. Wenn wir im Dezimalsystem mit einer Stelle nicht mehr | ||
80 | + auskommen, so erhoehen wir den Wert in der naechsten Stellen. | ||
81 | + Wir gehen von 9 nach 10 und von 49 nach 50. Genau dasselbe tun wir im | ||
82 | + Binaersystem auch, mit dem unterschied das wir halt nicht erst bei 9 | ||
83 | + eine neue Stellen bekommen sondern bereits nach 1. <br> | ||
84 | + <br> | ||
85 | + Im Rechner werden die Daten binaer abgebildet. im Binaersystem sehen | ||
86 | + die Zahlen dann folgendermassen aus:<br> | ||
87 | + <br> | ||
88 | + <pre> | ||
89 | + dez -> bin | ||
90 | + 0 -> 0 | ||
91 | + 1 -> 1 | ||
92 | + 2 -> 10 | ||
93 | + 3 -> 11 | ||
94 | + 4 -> 100 | ||
95 | + 5 -> 101 | ||
96 | + 6 -> 110 | ||
97 | + 7 -> 111 | ||
98 | + 8 -> 1000 | ||
99 | + 9 -> 1001 | ||
100 | + 10 -> 1010 | ||
101 | + 11 -> 1011 | ||
102 | + 12 -> 1100 | ||
103 | + 13 -> 1101 | ||
104 | + 14 -> 1110 | ||
105 | + 15 -> 1111 | ||
106 | + 16 -> 10000 | ||
107 | + </pre><br> | ||
108 | + Wir haben also fuer jede Ziffer im Binaersystem immer nur den Wert 0 | ||
109 | + oder 1 und diese koenne wir in unserem Bit darstellen.<br> | ||
110 | + Um jetzt Werte zu verarbeiten, die groesser als 0 oder 1 sind fasst man | ||
111 | + eine bestimmte Menge Speicherelement zusammen und betrachtet diese dann | ||
112 | + als eine Zahl. Bei dieser Zusammenfassung hat man sich auf bestimmte | ||
113 | + Mengen geeinigt. Die kleinste dieser Mengen fasst 8 Bits zusammen und | ||
114 | + nennt sich Byte. In einem Byte kann man also Werte von 00000000 bis | ||
115 | + 11111111 binaer darstellen. Das mach Dezimal 0 - 255. Fuer groessere | ||
116 | + Zahlen wurden dann groessere <<Datentypen>> eingefuehrt, | ||
117 | + die alle ein vielfaches von 8 Bits bilden:<br> | ||
118 | + <br><pre> | ||
119 | + Byte -> 8 Bit | ||
120 | + Word -> 16 Bit | ||
121 | + double word -> 32 Bit | ||
122 | + </pre><br> | ||
123 | + <br> | ||
124 | + <br> | ||
125 | + <b><u>Der Speicher (und wie der Rechner (das Programm) ihn sieht): | ||
126 | + </u></b><br> | ||
127 | + <br> | ||
128 | + Da es hoechst selten vorkommt, das man wirklich nur 0 oder 1 benoetigt | ||
129 | + organisieren Rechner ihren Speicher nicht Bitweise sonder in groesseren | ||
130 | + Einheiten. <br> | ||
131 | + Hier sei nur kurz erwaehnt, das es vom Rechner abhaengt, was | ||
132 | + als kleinst moegliche Datenmenge angesehen wird, in diesem Text gehe ich | ||
133 | + davon aus , das der Rechner den Speicher Byteweise organisiert. Das soll | ||
134 | + fuer diesen Text reichen. Die Erkenntnisse aus diesem Text lassen sich | ||
135 | + aber auch problemlos auf Speicherorganisationen anwenden. | ||
136 | + Trotzdem moechte ich darauf hinweisen, da dieser Umstand in Programmen | ||
137 | + manchmal zu auf den ersten Blick nicht leicht zu findenden Fehlern | ||
138 | + fuehren kann.<br> | ||
139 | + Also, unser Rechner organisiert den Speicher Byteweise. Dabei wird | ||
140 | + intern jedem Byte eine <<Adresse>> zugewiesen. | ||
141 | + Diese Adresse ist einfach eine Zahl, die vom ersten Byte des Speichers | ||
142 | + bis zu seinem letzten Byte hochgezaehlt | ||
143 | + wird. Haben wir also nur 16 Byte Speicher in unserem Rechner so erreicht | ||
144 | + der Rechner das erste Byte ueber die Adresse 0 und das letzte ueber die | ||
145 | + Adresse 15. Jedes dieser Bytes kann dann einen anderen Wert haben.<br> | ||
146 | + Das kann man sehr schoen auf folgenden Art darstellen:<br> | ||
147 | + <br><pre> | ||
148 | + Speicher Adresse | ||
149 | + --------- | ||
150 | + | 32 | 0 | ||
151 | + |---------| | ||
152 | + | 0 | 1 | ||
153 | + |---------| | ||
154 | + | 12 | 2 | ||
155 | + |---------| | ||
156 | + | 0 | 3 | ||
157 | + |---------| | ||
158 | + | 0 | 4 | ||
159 | + |---------| | ||
160 | + | 0 | 5 | ||
161 | + |---------| | ||
162 | + | 0 | 6 | ||
163 | + |---------| | ||
164 | + | 0 | 7 | ||
165 | + |---------| | ||
166 | + | 48 | 8 | ||
167 | + |---------| | ||
168 | + | 0 | 9 | ||
169 | + |---------| | ||
170 | + | 156 | 10 | ||
171 | + |---------| | ||
172 | + | 0 | 11 | ||
173 | + |---------| | ||
174 | + | 0 | 12 | ||
175 | + |---------| | ||
176 | + | 0 | 13 | ||
177 | + |---------| | ||
178 | + | 0 | 14 | ||
179 | + |---------| | ||
180 | + | 0 | 15 | ||
181 | + --------- | ||
182 | + </pre><br> | ||
183 | + Nun ist es fuer ein Programm nich besonders praktisch wenn man sich fuer | ||
184 | + alle Daten, die man speichern moechte die Adresse merken muesste. Bei 16 | ||
185 | + Bytes mag das noch gehen aber moderne Computer habe haeufig 64 Millionen | ||
186 | + oder sogar noch mehr Bytes an Arbeitsspeicher (die bekannte MByte Zahl | ||
187 | + fuer den Hauptspeicher.) Das wuerde dann doch ein wenig | ||
188 | + unuebersichtlich. <br> | ||
189 | + Deshalb kann man in einem C/C++ Programm einer Speicherstelle einen | ||
190 | + Namen geben. Das tut man wenn man Variablen deklariert:<br> | ||
191 | + <br><pre> | ||
192 | +int main(void) { | ||
193 | + char erste; /* Deklariert die Variable <<erste>> als char */ | ||
194 | + char zweite; /* Deklariert die Variable <<zweite>> als char */ | ||
195 | + | ||
196 | + . | ||
197 | + . | ||
198 | + . | ||
199 | + . | ||
200 | + | ||
201 | + return 0; | ||
202 | +} | ||
203 | +</pre><br> | ||
204 | + C/C++ kennt intern unterschiedliche Datentypen. Diese Datentypen nehmen | ||
205 | + vielfaches von einem Byte an Speicher in Anspruch. Bei einem char ist | ||
206 | + das immer 1 Byte. Bei einer deklaration wird einem Namen in dem Programm | ||
207 | + eine Adresse im Speicher zugewiesen, hinter der genuegend Bytes fuer | ||
208 | + diese Variable frei sind. Wenn es geht werden Variablen wenn sie direkt | ||
209 | + hintereinander | ||
210 | + deklariert wurden auch direkt hintereinander im Speicher abgelegt.<br> | ||
211 | + Die obige deklaration koennte in unserem Beispielspeicher also | ||
212 | + folgendermassen aussehen.<br> | ||
213 | + <br><pre> | ||
214 | + Speicher Adresse Variable | ||
215 | + --------- | ||
216 | + | 32 | 0 | ||
217 | + |---------| | ||
218 | + | 0 | 1 | ||
219 | + |---------| | ||
220 | + | 12 | 2 | ||
221 | + |---------| | ||
222 | + | 0 | 3 | ||
223 | + |---------| | ||
224 | + | 0 | 4 | ||
225 | + |---------| | ||
226 | + | 0 | 5 erste | ||
227 | + |---------| | ||
228 | + | 0 | 6 zweite | ||
229 | + |---------| | ||
230 | + | 0 | 7 | ||
231 | + |---------| | ||
232 | + | 48 | 8 | ||
233 | + |---------| | ||
234 | + | 0 | 9 | ||
235 | + |---------| | ||
236 | + | 156 | 10 | ||
237 | + |---------| | ||
238 | + | 0 | 11 | ||
239 | + |---------| | ||
240 | + | 0 | 12 | ||
241 | + |---------| | ||
242 | + | 0 | 13 | ||
243 | + |---------| | ||
244 | + | 0 | 14 | ||
245 | + |---------| | ||
246 | + | 0 | 15 | ||
247 | + --------- | ||
248 | +</pre><br> | ||
249 | + Dann waehre <<erste>> ein Synonym fuer Adresse 5 im | ||
250 | + Speicher und <<zweite>> ein Synonym fuer adresse 6. Um jetzt | ||
251 | + Werte im Speicher abzulegen kann man einfach folgendes machen:<br> | ||
252 | + <br><pre> | ||
253 | +int main(void) { | ||
254 | + char erste; | ||
255 | + char zweite; | ||
256 | + | ||
257 | + erste=7; /* Zuweisung */ | ||
258 | + zweite=10; /* Zuweisung */ | ||
259 | + | ||
260 | + . | ||
261 | + . | ||
262 | + . | ||
263 | + . | ||
264 | + | ||
265 | + return 0; | ||
266 | +} | ||
267 | + </pre><br> | ||
268 | + Das nennt man einer Variable einen Wert zuweisen. Diese Zuweisung kann | ||
269 | + auch aus einer Arithmetischen Operation bestehen z.B. erste=7+4. Dann | ||
270 | + wuerde zuerst die berechnung durchgefuehrt und das Ergebnis der Variable | ||
271 | + zugewiesen. Nach obigem Beispiel saehe unser Speicher so aus:<br> | ||
272 | + <br><pre> | ||
273 | + Speicher Adresse Variable | ||
274 | + --------- | ||
275 | + | 32 | 0 | ||
276 | + |---------| | ||
277 | + | 0 | 1 | ||
278 | + |---------| | ||
279 | + | 12 | 2 | ||
280 | + |---------| | ||
281 | + | 0 | 3 | ||
282 | + |---------| | ||
283 | + | 0 | 4 | ||
284 | + |---------| | ||
285 | + | 7 | 5 erste | ||
286 | + |---------| | ||
287 | + | 10 | 6 zweite | ||
288 | + |---------| | ||
289 | + | 0 | 7 | ||
290 | + |---------| | ||
291 | + | 48 | 8 | ||
292 | + |---------| | ||
293 | + | 0 | 9 | ||
294 | + |---------| | ||
295 | + | 156 | 10 | ||
296 | + |---------| | ||
297 | + | 0 | 11 | ||
298 | + |---------| | ||
299 | + | 0 | 12 | ||
300 | + |---------| | ||
301 | + | 0 | 13 | ||
302 | + |---------| | ||
303 | + | 0 | 14 | ||
304 | + |---------| | ||
305 | + | 0 | 15 | ||
306 | + --------- | ||
307 | + </pre><br> | ||
308 | + an die Stelle im Speicher mit der Adresse 5 wurde eine 7 geschrieben und | ||
309 | + an die folgende mit der Adresse 6 wurde eine 10 geschrieben. Wenn man | ||
310 | + seine Variable jetzt irgendwoanders als in einer Zuweisung verwendet so | ||
311 | + wird dar Name der Variable durch den Inhalt des Bytes im Speicher | ||
312 | + ersetzt auf das er verweist. Wir koennen zum Beispiel mit unseren | ||
313 | + Variablen rechnen:<br> | ||
314 | + <br><pre> | ||
315 | +int main(void) { | ||
316 | + char erste; | ||
317 | + char zweite; | ||
318 | + char ergebnis; | ||
319 | + | ||
320 | + erste=7; /* Zuweisung */ | ||
321 | + zweite=10; /* Zuweisung */ | ||
322 | + | ||
323 | + ergebnis=erste+zweite; /* hier werden zunaechst die Variablen durch | ||
324 | + den Speicherinhalt (also 7 und 10) ersetzt, | ||
325 | + dann eine addition mit ihnen durchgefuehrt | ||
326 | + und anschliessend das Ergebnis einer weiteren | ||
327 | + Variable zugewiesen. */ | ||
328 | + | ||
329 | + . | ||
330 | + . | ||
331 | + | ||
332 | + return 0; | ||
333 | +} | ||
334 | + </pre><br> | ||
335 | + Unser Speicher saehe danach also folgendermassen aus:<br> | ||
336 | + <br><pre> | ||
337 | + Speicher Adresse Variable | ||
338 | + --------- | ||
339 | + | 32 | 0 | ||
340 | + |---------| | ||
341 | + | 0 | 1 | ||
342 | + |---------| | ||
343 | + | 12 | 2 | ||
344 | + |---------| | ||
345 | + | 0 | 3 | ||
346 | + |---------| | ||
347 | + | 0 | 4 | ||
348 | + |---------| | ||
349 | + | 7 | 5 erste | ||
350 | + |---------| | ||
351 | + | 10 | 6 zweite | ||
352 | + |---------| | ||
353 | + | 17 | 7 ergebnis | ||
354 | + |---------| | ||
355 | + | 48 | 8 | ||
356 | + |---------| | ||
357 | + | 0 | 9 | ||
358 | + |---------| | ||
359 | + | 156 | 10 | ||
360 | + |---------| | ||
361 | + | 0 | 11 | ||
362 | + |---------| | ||
363 | + | 0 | 12 | ||
364 | + |---------| | ||
365 | + | 0 | 13 | ||
366 | + |---------| | ||
367 | + | 0 | 14 | ||
368 | + |---------| | ||
369 | + | 0 | 15 | ||
370 | + --------- | ||
371 | + | ||
372 | + </pre><br> | ||
373 | + Das ist soweit alles was mir zu Variablen einfaellt, obwohl bestimmt | ||
374 | + noch hunderte von Fragen offen bleiben. Wie gesagt bitte mailen... :-) | ||
375 | + Jetzt kommen wir dann zu:<br> | ||
376 | + <br> | ||
377 | + <br> | ||
378 | + <b><u>Zeiger oder (ja wo stehen sie denn?)<br> | ||
379 | + oder (warum C Programmierer dauernd fluchen):</u></b><br> | ||
380 | + <br> | ||
381 | + Ein Zeiger (Pointer) ist eine spezielle Form einer Variable. | ||
382 | + Anstatt einen Wert zu enthalten enthaelt dies Variable eine | ||
383 | + Speicheradresse Der Inhalt eines Zeigers zeigt also sozusagen auf eine | ||
384 | + andere Stelle im Speicher.<br> | ||
385 | + Einer meiner Dozenten hat mal eine passende Analogie gebracht:<br> | ||
386 | + <br> | ||
387 | + Ein Zeiger ist wie ein Vorwegweiser an einer Strasse.<br> | ||
388 | + <ul> | ||
389 | + <li>Der Vorwegweiser zeigt auf den Ort wo man hinfahren moechte. | ||
390 | + <li>Ein Zeiger zeigt auf die Stelle im Speicher an die man moechte. | ||
391 | + </ul><br> | ||
392 | + Im Moment ist es sicher schwierig den Sinn einer solchen Variable zu | ||
393 | + verstehen, aber Sie koennen mir glauben, wenn ich ihnen sage, das man | ||
394 | + in C/C++ dauernd Zeiger braucht. Machen Sie sich im Moment keine | ||
395 | + Gedanken darueber wann und warum sondern konzentrieren Sie sich voll | ||
396 | + auf das wie. Das wann und warum kommt beim programmieren und im Laufe | ||
397 | + des folgenden Textes von ganz alleine (hoffe ich).<br> | ||
398 | + <br> | ||
399 | + C/C++ hat eine besonder Syntax (Schreibweise) um mit Zeigern umzugehen: | ||
400 | + <br><br> | ||
401 | + Ich hoffe folgendes Programm/Diagramm mach deutlich was gemeint ist.<br> | ||
402 | + <br><pre> | ||
403 | +int main(void) { | ||
404 | + char erste; /* Deklariert die Variable <<erste>> als char */ | ||
405 | + char zweite; /* Deklariert die Variable <<zweite>> als char */ | ||
406 | + | ||
407 | + char* zeiger; /* Deklariert einen Zeiger, der auf eine Speicherbereich | ||
408 | + zeigt, der die groesse eines char habe soll. | ||
409 | + Kling kompliziert ich weiss...ich versuche es unten | ||
410 | + in einem weiten Speicherdiagramm zu verdeutlichen. */ | ||
411 | + | ||
412 | + /* Man kann Zeigern wie jeder anderen Variable auch Werte zuweisen. */ | ||
413 | + zeiger=0; | ||
414 | + | ||
415 | + . | ||
416 | + | ||
417 | + return 0; | ||
418 | +} | ||
419 | + </pre><br> | ||
420 | + das ganze sieht dann im Speicher bildlich so aus:<br> | ||
421 | + <br><pre> | ||
422 | + Speicher Adresse Variable | ||
423 | + --------- | ||
424 | + -->| 32 | 0 | ||
425 | + | |---------| | ||
426 | + | | 0 | 1 | ||
427 | + | |---------| | ||
428 | + | | 12 | 2 | ||
429 | + | |---------| | ||
430 | + | | 0 | 3 | ||
431 | + | |---------| | ||
432 | + | | 0 | 4 | ||
433 | + | |---------| | ||
434 | + | | 7 | 5 erste | ||
435 | + | |---------| | ||
436 | + | | 10 | 6 zweite | ||
437 | + | |---------| | ||
438 | + ---| 0 | 7 zeiger | ||
439 | + |---------| | ||
440 | + | 48 | 8 | ||
441 | + |---------| | ||
442 | + | 0 | 9 | ||
443 | + |---------| | ||
444 | + | 156 | 10 | ||
445 | + |---------| | ||
446 | + | 0 | 11 | ||
447 | + |---------| | ||
448 | + | 0 | 12 | ||
449 | + |---------| | ||
450 | + | 0 | 13 | ||
451 | + |---------| | ||
452 | + | 0 | 14 | ||
453 | + |---------| | ||
454 | + | 0 | 15 | ||
455 | + --------- | ||
456 | + </pre><br> | ||
457 | + Gut...wenn also ein Wert in einer Zeigervariable steht soll dieser fuer | ||
458 | + die Adresse einer Speicher stelle stehen. Das hat allerdings nur einen | ||
459 | + Sinn wenn ich auch an den Inhalt dieser Speicheradresse kommen kann auf | ||
460 | + die der Zeiger zeigt.<br> | ||
461 | + Benutzt man den Zeiger wie die normalen Variablen, so wird er immer | ||
462 | + durch die Adresse ersetzt und nicht durch den Wert der Speicherstelle an | ||
463 | + dieser Adresse. Folgendes kleine Programm soll das erleutern. In diesem | ||
464 | + Programm tauchen ein paar neue Dinge auf, die ich aber versuche direkt | ||
465 | + an dem Programm zu erklaeren. Dies wird das erste Programm in diesem | ||
466 | + Text was sie compilieren und ausfuhren koennen:<br> | ||
467 | + <br><pre> | ||
468 | +int main(void) { | ||
469 | + char erste; /* Variable deklarieren */ | ||
470 | + char zweite; /* Variable deklarieren */ | ||
471 | + | ||
472 | + char* zeiger; /* Zeiger deklarieren */ | ||
473 | + | ||
474 | + erste = 7; /* 7 zuweisen */ | ||
475 | + zweite = 10; /* 10 zuweisen */ | ||
476 | + | ||
477 | + zeiger = &erste; /* Das & vor erste hat eine spezielle Bedeutung. | ||
478 | + Normalerweise wird ja eine Variable durch ihren | ||
479 | + Wert ersetzt. Schreibt man in C/C++ aber ein & | ||
480 | + vor die Variable so wird diese durch die | ||
481 | + Speicheradresse an der sie steht ersetzt. Da | ||
482 | + der Inhalt eines Zeigers eine Adresse ist kann man | ||
483 | + ihm diese dann zuweisen. */ | ||
484 | + | ||
485 | + /* Jetzt folgen ein paar Ausgaben, die Zeigen sollen an welcher Adresse | ||
486 | + welcher Wert steht. Es ist sehr wichtig zu verstehen, was hier | ||
487 | + passiert. Das setzt voraus das man die printf Funktion von C | ||
488 | + kennt und versteht */ | ||
489 | + | ||
490 | + printf("Variable: erste - Adresse: %lu - Wert: %lu\n", &erste, erste); | ||
491 | + printf("Variable: zweite - Adresse: %lu - Wert: %lu\n", &zweite, zweite); | ||
492 | + printf("Zeiger: zeiger - Adresse: %lu - Wert: %lu\n", &zeiger, zeiger); | ||
493 | + | ||
494 | + return 0; | ||
495 | +} | ||
496 | + </pre><br> | ||
497 | + Nachdem diese Programm uebersetzt und ausgefuehrt wurde sollte man in | ||
498 | + etwa folgende Ausgabe erhalten (die Werte weden unterschiedlich sein): | ||
499 | + <br> | ||
500 | + <br><pre> | ||
501 | +Variable: erste - Adresse: 3221223243 - Wert: 7 | ||
502 | +Variable: zweite - Adresse: 3221223242 - Wert: 10 | ||
503 | +Zeiger: zeiger - Adresse: 3221223236 - Wert: 3221223243 | ||
504 | + </pre><br> | ||
505 | + Hier ist wichtig zu erkennen, das der Wert von <<zeiger>> | ||
506 | + der Adresse von <<erste>> entspricht.<br> | ||
507 | + Wie oben bereits erwaehnt waere es jetzt sinnvoll, wenn man ueber | ||
508 | + <<zeiger>> auch irgendwie an den Wert von | ||
509 | + <<erste>> kommen koennte. Tatsaechlich dienen Zeiger | ||
510 | + eigentlich nur diesem Zweck.<br> | ||
511 | + Dafuer gibt es in C wieder eine spezielle Syntax. Um an den Wert von | ||
512 | + <<erste>> zu kommen kann man <<*zeiger>> | ||
513 | + schreiben. Das nennt man dereferenzieren. Das Wort kommt daher, das | ||
514 | + <<zeiger>> eine Referenz auf <<erste>> ist und | ||
515 | + man diese Referenz jetzt aufloest (dereferenzieren) (klingt furchtbar | ||
516 | + kompliziert ich weiss).<br> | ||
517 | + <br> | ||
518 | + Diese Syntax verwirrt gerade Anfaenger haeufig, da man den * auch schon | ||
519 | + bei der deklaration des Zeigers benutzt hat.<br> | ||
520 | + Hier muss man | ||
521 | + strikt zwischen der deklaration eines Zeigers und dem dereferenzieren | ||
522 | + unterscheiden. Ich mache es mir dadurch leichter, das ich bei der | ||
523 | + deklaration den * immer an den Datentyp schreibe und beim | ||
524 | + dereferenzieren an den Variablennamen. Beispiel:<br> | ||
525 | + <br><pre> | ||
526 | + - char* zeiger; /* deklaration eines Zeiger */ | ||
527 | + - erste = *zeiger; /* dereferenzieren von Zeiger */ | ||
528 | + </pre><br> | ||
529 | + Wie sich das auswirkt soll folgendes Programm zeigen. Es ist im | ||
530 | + wesentlichen dasselbe Programm wie vorhin mit einer zusaetzlichen | ||
531 | + Ausgabe:<br> | ||
532 | + <br><pre> | ||
533 | +int main(void) { | ||
534 | + char erste; /* Variable deklarieren */ | ||
535 | + char zweite; /* Variable deklarieren */ | ||
536 | + | ||
537 | + char* zeiger; /* Zeiger deklarieren */ | ||
538 | + | ||
539 | + erste = 7; /* 7 zuweisen */ | ||
540 | + zweite = 10; /* 10 zuweisen */ | ||
541 | + | ||
542 | + zeiger = &erste; /* Das & vor erste hat eine spezielle bedeutung. | ||
543 | + Normalerweise wird ja eine Variable durch ihren | ||
544 | + Wert ersetzt. Schreibt man in C/C++ aber ein & | ||
545 | + vor die Variable so wird diese durch die | ||
546 | + Speicheradresse an der sie streht ersetzt. Da | ||
547 | + der Inhalt eines Zeigers eine Adresse ist kann man | ||
548 | + ihm diese dann zuweisen. */ | ||
549 | + | ||
550 | + /* Jetzt folgen ein paar Ausgaben, die Zeigen sollen an welcher Adresse | ||
551 | + welcher Wert steht. Es ist sehr wichtig zu verstehen, was hier | ||
552 | + passiert. Das setzt voraus das man die printf Funktion von C | ||
553 | + kennt und versteht */ | ||
554 | + | ||
555 | + printf("Variable: erste - Adresse: %lu - Wert: %lu\n", &erste, erste); | ||
556 | + printf("Variable: zweite - Adresse: %lu - Wert: %lu\n", &zweite, zweite); | ||
557 | + printf("Zeiger: zeiger - Adresse: %lu - Wert: %lu\n", &zeiger, zeiger); | ||
558 | + printf("dereferenziert: zeiger - %lu\n", *zeiger); | ||
559 | + | ||
560 | + return 0; | ||
561 | +} | ||
562 | + </pre><br> | ||
563 | + Das Programm sollte folgende Ausgabe machen:<br> | ||
564 | + <br><pre> | ||
565 | +Variable: erste - Adresse: 3221223243 - Wert: 7 | ||
566 | +Variable: zweite - Adresse: 3221223242 - Wert: 10 | ||
567 | +Zeiger: zeiger - Adresse: 3221223236 - Wert: 3221223243 | ||
568 | +dereferenziert: zeiger - 7 | ||
569 | + </pre><br> | ||
570 | + Man sieht, das <<*zeiger>> identisch mit | ||
571 | + <<erste>> ist.<br> | ||
572 | + So, das solls fuers erste mal sein...ich wuerde vorschlagen mit den | ||
573 | + Programmen ein bisschen herumzuexperimentieren.<br> | ||
574 | + Noch ein Wort: Es kann Ihnen beim experimentieren durchaus passieren, | ||
575 | + das das Programm nachdem sie es ausfuehren ein Fehlermeldung der art | ||
576 | + <<segmentation fault>> oder <<overflow error>> | ||
577 | + oder aehnlches (je nach dem mit welchem System sie arbeiten) ausgibt. | ||
578 | + Das sind Fehler, die darauf hinwiesen, das der Pointer keine gueltige | ||
579 | + Adresse enthaelt. Dadurch greift dann naemlich das | ||
580 | + <<*zeiger>> auf eine ungueltige (nicht dem eigenen Programm | ||
581 | + zugeordnete Adresse) zu.<br> | ||
582 | + <br> | ||
583 | + Viel Spass und bei Fragen bitte mail an mich...ich bin fuer | ||
584 | + Verbesserungsvorschlaege und Fragen immer offen. | ||
585 | + </TD> | ||
586 | +</TR> | ||
587 | +</TABLE> |
en/copyright.txt
0 → 100755
1 | +This pages are optimized for <A href="http://www.mozilla.org/">mozilla</A> | ||
2 | +at a minimum resolution of 800x600 but should still look fine under IE. | ||
3 | +Sadly some elements of my page can't be viewed with NS 4.x. Under Windows please | ||
4 | +use IE or NS 6 or better mozilla. Under Linux please use mozilla. Opera should | ||
5 | +show this pages correct, too. If you run into troubles ... please mail me. |
en/gtkclmon.inc
0 → 100755
1 | +<TABLE width="595" border="0" cellspacing="0" cellpadding="0"> | ||
2 | +<TR> | ||
3 | + <TD> | ||
4 | + This is a project i worked on for an Ex-Employer of me...it sleep 'til | ||
5 | + i left him.<BR> | ||
6 | + There was an cluster of 33 Alpha (i don't know what kind of) | ||
7 | + Computers and i suggested an easy and fast way to get information about | ||
8 | + every computer in that cluster. Another reason to start this was | ||
9 | + to learn more about GTK, socketprogramming and threads.<BR> | ||
10 | + It isn't really | ||
11 | + ready now but it seems to be useful. You can find it in my Source | ||
12 | + Directory.<BR> | ||
13 | + <BR><BR> | ||
14 | + Here is a screenshot of it:<BR> | ||
15 | + <BR> | ||
16 | + <TABLE border="0" cellpadding="2" cellspacing="0"> | ||
17 | + <TR> | ||
18 | + <TD valign="top"> | ||
19 | + <img src="images/screenshot.jpg" alt="clmon" align=left></TD> | ||
20 | + <TD> | ||
21 | + Every button represents a node in the cluster. The text on | ||
22 | + the button is the name of the node and the bar shows the | ||
23 | + actual cpu-usage. red is user, blue is system and green is | ||
24 | + idle. If the node is down...(the server isn´t running on it) | ||
25 | + then the bar is black. On a click you get an popup-menu in | ||
26 | + which you can choose from severel informations you may get | ||
27 | + from the node. | ||
28 | + </TD> | ||
29 | + </TR> | ||
30 | + </TABLE> | ||
31 | + <BR><BR> | ||
32 | + Concider this as not ready at all. I will give no guaranty that it will | ||
33 | + work for you or did not harm something, however it works fine for me | ||
34 | + even if it has a lot of bugs to fix.<BR> | ||
35 | + <BR> | ||
36 | + Sorry, there is no instruction how | ||
37 | + to install along with it (no time :) If you try it and encounter bugs | ||
38 | + or have suggestion, please mail me! If you have fixes feel free to | ||
39 | + mail too :] I would be very pleased if anyone is interested in | ||
40 | + continuing this because i dont have the time and it would be a pity to | ||
41 | + drop all the work i did already ;)<BR><BR> | ||
42 | + I started a rewrite of it in C++ but did not finish...however, the | ||
43 | + server-part is mostly done.<BR><BR> | ||
44 | + | ||
45 | + Much fun....(or frustration..sorry) | ||
46 | + </TD> | ||
47 | +</TR> | ||
48 | +</TABLE> |
en/info.inc
0 → 100755
1 | +<TABLE width="595" border="0" cellspacing="0" cellpadding="0"> | ||
2 | +<TR> | ||
3 | + <TD> | ||
4 | + Ok, you ask for it now you'll get it (but it might be boring):<br><br> | ||
5 | + name: Georg Steffers<br> | ||
6 | + birthday: 15.12.1973<br> | ||
7 | + town: Münster<br> | ||
8 | + <br> | ||
9 | + I was born in a small town in germany called Ochtrup, you never heard | ||
10 | + about it, right?!? Well my live was very normal, i went to school did | ||
11 | + some play and lived in the day without thinking about anything until | ||
12 | + one day i had to decide what to do with the rest of my live... | ||
13 | + At this time i had already experimented with c-programming and found it | ||
14 | + a lot of fun so i went to a school for computer-science near cologne | ||
15 | + This school was called BIB what means "Bildunszentrum für | ||
16 | + informationsverarbeitende Berufe" and i am sure you never heard about it | ||
17 | + too...but i am quite sure you have heard about cologne. It was much fun | ||
18 | + to live there and i already have some good friends there. Well, well... | ||
19 | + i got my examen on that school and turned to a town called Münster | ||
20 | + where i live now. I am working at a web-agency in Emsdetten...again a | ||
21 | + town where you never heard about, yes?!? There i do some programming | ||
22 | + in C, C++, Perl, PHP, Java, Java-Script, HTML and what else comes up. | ||
23 | + Ok, thats it for now...i am sure you sleep already, sorry :)<br> | ||
24 | + Mayby i will add some pictures here in future, | ||
25 | + that might not so boring.... | ||
26 | + </TD | ||
27 | +</TR> | ||
28 | +</TABLE> |
en/main.inc
0 → 100755
1 | +<TABLE width="595" border="0" cellspacing="0" cellpadding="0"> | ||
2 | +<TR> | ||
3 | + <TD> | ||
4 | + So, after all here is my new homepage and i hope, that it will | ||
5 | + appreciate you after all the time it takes until it was ready.<BR><BR> | ||
6 | + Now the design of it is complete from my own, with some fillips | ||
7 | + from my girlfriend. | ||
8 | + The content is already mostly programming-relatet, but from now | ||
9 | + on in german as well as in english (please be patient with my english | ||
10 | + a am not a native speaker).<BR><BR> | ||
11 | + This pages are build by easy and fast manageable configuration and | ||
12 | + includefiles. By doing this i hope to be able to submit actual | ||
13 | + informations faster. I am planning a newarea for example. | ||
14 | + Nevertheless this pages are only a sparetime job for me and therefore | ||
15 | + i will give no guarantee on constant updates.<BR> | ||
16 | + I will make all files available for download to everyone who is | ||
17 | + interested in it.<BR><BR> | ||
18 | + Be that as it may...i hope the information, that are collected on | ||
19 | + this site will be of some interest for someone. | ||
20 | + </TD> | ||
21 | +</TR> | ||
22 | +</TABLE> |
en/menu.cfg
0 → 100755
1 | +documentations | ||
2 | +pointer in C/C++#zeiger#zeiger#an introduction to pointer in C/C++#120#80#100#50 | ||
3 | + | ||
4 | +projects | ||
5 | +clustermonitor#gtkclmon#gtkclmon#a programm for watching a cluster of computers#120#125#100#50 | ||
6 | +3D-graphics / Java#show3d#show3d#a study about the basics of 3D-programming#120#145#100#50 | ||
7 | +sourcecodes#http://www.muenster.de/~steffers/src/#src#all my sourcecodes#120#185#75#30 | ||
8 | +test#source#src2#Testseite#120#185#75#30 | ||
9 | + | ||
10 | +personal | ||
11 | +news#news#news#actual news#120#235#70#30 | ||
12 | +about myself#info#info#a short personal info about myself#120#230#100#50 | ||
13 | +webcam#javascript:newWin('/smain/webcam.php?LANG=en');#cam#me at work (the most time)#120#245#75#50 | ||
14 | + | ||
15 | +links | ||
16 | +the Gimp#http://www.gimp.org/#gimp#The open-source image manipulation software#120#295#100#50 | ||
17 | +Gnome#http://www.gnome.org/#gnome#desktop-environment for the X-Windows system#120#310#100#50 | ||
18 | +Mozilla#http://www.mozilla.org/#mozilla#a cool browser#120#345#70#30 | ||
19 | +Sourceforge#http://www.sourceforge.net/#sourceforge#open source management website#120#340#75#50 | ||
20 | +Freshmeat#http://www.freshmeat.net/#freshmeat#search for free software#120#370#80#30 | ||
21 | +Seti@Home#http://www.alien.de/seti/#seti#where my they be?#120#385#75#30 | ||
22 | +NOePATENTS#http://petition.eurolinux.org/#petition#please, no software patents in europe#120#380#100#50 | ||
23 | +deltacity.NET#http://www.deltacity.net/#dcn#my employer#120#415#50#30 |
en/news.inc
0 → 100755
1 | +<TABLE width="595" border="0" cellspacing="0" cellpadding="0"> | ||
2 | +<TR> | ||
3 | + <TD> | ||
4 | + <B>03/18/2001</B></TD> | ||
5 | +</TR> | ||
6 | +<TR> | ||
7 | + <TD> | ||
8 | + I write on a page for my sourcecodes for a few days. For that i have | ||
9 | + written a fileselector with PHP, Javascript and <DIV>-layers. It | ||
10 | + is very nice to view under mozilla and Internet Explorer. But ... | ||
11 | + i can't get it running under Netscape 4.x ... Because if this i have | ||
12 | + striked out the official support for NS 4.x.</TD> | ||
13 | +</TR> | ||
14 | +<TR> | ||
15 | + <TD height="5"> | ||
16 | + <IMG src="images/trans.gif" width="1" height="5"></TD> | ||
17 | +</TR> | ||
18 | +<TR> | ||
19 | + <TD> | ||
20 | + You can get a first impression of my fileselector under the link | ||
21 | + projects/test.</TD> | ||
22 | +</TR> | ||
23 | +<TR> | ||
24 | + <TD height="20"> | ||
25 | + <IMG src="images/trans.gif" width="1" height="20"></TD> | ||
26 | +</TR> | ||
27 | +<TR> | ||
28 | + <TD> | ||
29 | + <B>03/12/2001</B></TD> | ||
30 | +</TR> | ||
31 | +<TR> | ||
32 | + <TD> | ||
33 | + now i have tooltips to every menupoint. That was very much work | ||
34 | + because you have to write a own version for every damn browser out | ||
35 | + there, but i think it has become very nice finally. | ||
36 | + Sadly the whole page looks a little strange under NS 4.x but i don't | ||
37 | + know why. If anyone has any idea, please tell me, that i can fix it, | ||
38 | + thanks</TD> | ||
39 | +</TR> | ||
40 | +</TABLE> |
en/show3d.inc
0 → 100755
1 | +<TABLE width="595" border="0" cellspacing="0" cellpadding="0"> | ||
2 | +<TR> | ||
3 | + <TD> | ||
4 | + This is the beginning of an information-system like a running-text | ||
5 | + written in java. At the end it should wirl a lot of vertices in a | ||
6 | + spherical room and form words from it. The basic 3D-Stuff is ready and | ||
7 | + shown in the applet below. Sadly it is so slow that i am not sure if | ||
8 | + it will ever work as i thought it should.<BR><BR> | ||
9 | + | ||
10 | + <CENTER> | ||
11 | + <APPLET code="test.class" codebase="classes" | ||
12 | + width=200 height=150 name="test"> | ||
13 | + You must activate Java with your browser if you want to see | ||
14 | + anything... | ||
15 | + </APPLET> | ||
16 | + </CENTER><BR> | ||
17 | + | ||
18 | + In the actual state the applet does the following:<BR><BR> | ||
19 | + | ||
20 | + <OL> | ||
21 | + <LI> | ||
22 | + <B>translation, rotation, scale</B><BR> | ||
23 | + calculation of the 3D-coordinates for every vertex.<BR> | ||
24 | + <I>relatively fast</I> | ||
25 | + <LI> | ||
26 | + <B>projection</B><BR> | ||
27 | + The 3D-coordinates will be projected on 2D-screenspace.<BR> | ||
28 | + <I>relatively fast, too</I> | ||
29 | + <LI> | ||
30 | + <B>lighting</B><BR> | ||
31 | + calculating a color-intensity by the angle of the normal | ||
32 | + vector of a polygon (triangle)to a defined light-vector.<BR> | ||
33 | + <I>even this isn't the speed problem</I> | ||
34 | + <LI> | ||
35 | + <B>backface-culling</B><BR> | ||
36 | + Polygons facing away from the viewer are not drawn.<BR> | ||
37 | + <I>fast...</I> | ||
38 | + <LI> | ||
39 | + <B>scanline-conversion and lineal texturemapping</B><BR> | ||
40 | + i map previously calculatet checker-texture on every polygon. | ||
41 | + There are a few error (rounding?) in this and it is...<BR> | ||
42 | + <I>slow....</I> | ||
43 | + </OL><BR> | ||
44 | + | ||
45 | + The sourcecode is available for download.<BR> | ||
46 | + I plan to write a documentation about the things i have done so far | ||
47 | + in this applet. | ||
48 | + </TD> | ||
49 | +</TR> | ||
50 | +</TABLE> |
en/source.inc
0 → 100755
en/zeiger.inc
0 → 100755
1 | +<TABLE width="595" border="0" cellspacing="0" cellpadding="0"> | ||
2 | +<TR> | ||
3 | + <TD> | ||
4 | + sorry, actually this text is only available in the german Version | ||
5 | + this will change in future...until then you may want to try an | ||
6 | + online translator to translate the german version in english. | ||
7 | + </TD> | ||
8 | +</TR> |
fileselpics/gnome-file-c.png
0 → 100755
875 Bytes
fileselpics/gnome-file-h.png
0 → 100755
880 Bytes
fileselpics/gnome-folder-close.png
0 → 100755
698 Bytes
fileselpics/gnome-folder.png
0 → 100755
892 Bytes
fileselpics/gnome-graphics.png
0 → 100755
1.02 KB
fileselpics/gnome-html.png
0 → 100755
1.08 KB
fileselpics/gnome-package.png
0 → 100755
928 Bytes
fileselpics/gnome-textfile.png
0 → 100755
767 Bytes
images/boppel.png
0 → 100755
366 Bytes
images/bow.png
0 → 100755
239 Bytes
images/bow2.png
0 → 100755
212 Bytes
images/dcam.jpg
0 → 100755
52.9 KB
images/gaensebl.png
0 → 100755
2.85 KB
images/img1.png
0 → 100755
37.8 KB
images/img2.png
0 → 100755
3.05 KB
images/maintop.png
0 → 100755
212 Bytes
images/maintopbg.png
0 → 100755
151 Bytes
images/menubg.png
0 → 100755
353 Bytes
images/menubg1.png
0 → 100755
777 Bytes
images/menubg2.png
0 → 100755
763 Bytes
images/menubg3.png
0 → 100755
1013 Bytes
images/menurborder.png
0 → 100755
147 Bytes
images/screenshot.jpg
0 → 100755
76.5 KB
images/test/XDisplay.h
0 → 100755
1 | +#ifndef __XDisplay_h__ | ||
2 | +#define __XDisplay_h__ | ||
3 | + | ||
4 | +#include <X11/Xlib.h> | ||
5 | +#include <X11/Xutil.h> | ||
6 | +#include <X11/Xos.h> | ||
7 | +#include <X11/Xatom.h> | ||
8 | + | ||
9 | +class XDisplay { | ||
10 | + private: | ||
11 | + //alles zum Display und screen | ||
12 | + Display* display; | ||
13 | + int screen_num; | ||
14 | + | ||
15 | + int argc; | ||
16 | + char** argv; | ||
17 | + | ||
18 | + unsigned int display_width; | ||
19 | + unsigned int display_height; | ||
20 | + char* display_name; | ||
21 | + | ||
22 | + XFontStruct* font_info; | ||
23 | + XEvent report; | ||
24 | + Colormap default_cm; | ||
25 | + | ||
26 | + public: | ||
27 | + //Konstruktoren und Destruktoren | ||
28 | + /* Displayname=NULL -> Wert der DISPLAY env-var nutzen */ | ||
29 | + XDisplay(int argc, char** argv, char* name=NULL); | ||
30 | + ~XDisplay(); | ||
31 | + | ||
32 | + //Inline Funktionen | ||
33 | + unsigned int getWidth(void) { return display_width; } | ||
34 | + unsigned int getHeight(void) { return display_height; } | ||
35 | + XFontStruct* getFont(void) { return font_info; } | ||
36 | + Display* getDisplay(void) { return display; } | ||
37 | + int getScreen(void) { return screen_num; } | ||
38 | + Colormap getDefaultCm(void) { return default_cm; } | ||
39 | + int getArgc(void) { return argc; } | ||
40 | + char** getArgv(void) { return argv; } | ||
41 | + | ||
42 | + // weitere Funktionen | ||
43 | + unsigned long getColor(unsigned short, unsigned short, unsigned short); | ||
44 | + void loadFont(char* name="9x15"); | ||
45 | + Window getRootWindow(void); | ||
46 | + unsigned long getBlackPixel(void); | ||
47 | + unsigned long getWhitePixel(void); | ||
48 | +}; | ||
49 | + | ||
50 | +#endif /*__XDisplay_h__*/ |
images/testimlib.php
0 → 100755
images/topbg.png
0 → 100755
159 Bytes
images/trans.gif
0 → 100755
43 Bytes
images/uploading.jpg
0 → 100755
index.php
0 → 100755
1 | +<? | ||
2 | + include("php/base.inc"); | ||
3 | + $menucl=new base(); | ||
4 | +?> | ||
5 | +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN"> | ||
6 | +<HTML> | ||
7 | + <HEAD> | ||
8 | + <TITLE>steffers.org</TITLE> | ||
9 | + | ||
10 | + <META name="keywords" lang="de" | ||
11 | + content="Programmierung, programmierung, programmieren, 3D, 3d, 3D-Grafik, 3D-grafik, Grafik, grafik, Java, java, C/C++, C, C++, Dokumentation, Dokumentationen"> | ||
12 | + <META name="keywords" lang="en" | ||
13 | + content="programming, 3D, 3D-graphics, graphics, Java, java, C/C++, C, C++, documentation, documentations"> | ||
14 | + <META name="description" lang="de" | ||
15 | + content="Der Anfang einer kompletten Einführung in C/C++ programmierung. Sie soll alle Aspekte der Programmierung unter C, C++ und Java behandeln und in einer kleine Applikation enden, die den Anfang einer 3D-Engine bildet."> | ||
16 | + <META name="description" lang="en" | ||
17 | + content="The beginning of a complete introduction in C/C++ programming. It should cover all aspects of programming in C, C++ and Java and result in a small application, that is the beginning of a small 3D-engine."> | ||
18 | + | ||
19 | + <META name="author" | ||
20 | + content="Georg Steffers"> | ||
21 | + <META name="robots" | ||
22 | + content="index,follow"> | ||
23 | + <META name="date" | ||
24 | + content="2001-02-26T23:00:00+01:00"> | ||
25 | + | ||
26 | + <META http-equiv="keywords" | ||
27 | + content="programming, 3D, 3D-graphics, graphics, Java, java, C/C++, C, C++, documentation, documentations"> | ||
28 | + <META http-equiv="description" | ||
29 | + content="The beginning of a complete introduction in C/C++ programming. It should cover all aspects of programming in C, C++ and Java and result in a small application, that is the beginning of a small 3D-engine."> | ||
30 | + <META http-equiv="Content-Type" | ||
31 | + content="text/html"> | ||
32 | + | ||
33 | + <!--BASE HREF="http://www.steffers.org/smain/"--> | ||
34 | + <BASE HREF="http://localhost/~georg/smain/"> | ||
35 | + | ||
36 | + <LINK rev=made href="mailto:georg@steffers.org"> | ||
37 | + <LINK rel="stylesheet" href="css/style.css"> | ||
38 | + | ||
39 | + <script language="JavaScript1.2"> | ||
40 | + <!-- | ||
41 | + if(navigator.appName=='Netscape' && | ||
42 | + navigator.appVersion.charAt(0)=='4') | ||
43 | + browser='NS'; | ||
44 | + else | ||
45 | + if(navigator.appName=='Microsoft Internet Explorer' && | ||
46 | + navigator.appVersion.charAt(0)>='4') { | ||
47 | + browser='IE'; | ||
48 | + var layers=document.all.tags('DIV'); | ||
49 | + } | ||
50 | + else { | ||
51 | + browser='DOM'; | ||
52 | + var layers=document.getElementsByTagName('DIV'); | ||
53 | + } | ||
54 | + | ||
55 | + function newWin(url) { | ||
56 | + openWindow = window.open(url,'Webcam','resizable=no,\ | ||
57 | + scrollbars=auto, menubar=no,\ | ||
58 | + toolbar=no,location=no,\ | ||
59 | + width=400,height=300'); | ||
60 | + | ||
61 | + openWindow.moveTo(20,20); | ||
62 | + } | ||
63 | + | ||
64 | + function tooltip_on(id, num) { | ||
65 | + if(browser=='IE') | ||
66 | + layers[num].style.visibility='visible'; | ||
67 | + else if(browser=='NS') | ||
68 | + window.document.layers[num].visibility='visible'; | ||
69 | + else | ||
70 | + document.getElementById(id).style.visibility='visible'; | ||
71 | + } | ||
72 | + | ||
73 | + function tooltip_off(id, num) { | ||
74 | + if(browser=='IE') | ||
75 | + layers[num].style.visibility='hidden'; | ||
76 | + else if(browser=='NS') | ||
77 | + window.document.layers[num].visibility='hidden'; | ||
78 | + else | ||
79 | + document.getElementById(id).style.visibility='hidden'; | ||
80 | + } | ||
81 | + | ||
82 | + function showdir(regexp, regexp2) { | ||
83 | + if(browser=='DOM' || browser=='IE') { | ||
84 | + for(i=0; i<layers.length; i++) { | ||
85 | + if(layers[i].id.match(regexp)) | ||
86 | + layers[i].style.display='block'; | ||
87 | + if(layers[i].id.match(regexp2)) | ||
88 | + layers[i].style.display='none'; | ||
89 | + } | ||
90 | + } | ||
91 | + // Problem beim NS 4: layers mit display='none' tauchen nicht in | ||
92 | + // der Liste document.layers auf. Evtl. kann ich im NS auch die | ||
93 | + // DIV-Liste durchgehen...spaeter mal schauen | ||
94 | + } | ||
95 | + | ||
96 | + function hidedir(regexp, regexp2) { | ||
97 | + if(browser=='DOM' || browser=='IE') { | ||
98 | + for(i=0; i<layers.length; i++) { | ||
99 | + if(layers[i].id.match(regexp)) | ||
100 | + layers[i].style.display='none'; | ||
101 | + if(layers[i].id.match(regexp2)) | ||
102 | + layers[i].style.display='block'; | ||
103 | + } | ||
104 | + } | ||
105 | + // Problem beim NS 4: layers mit display='none' tauchen nicht in | ||
106 | + // der Liste document.layers auf. Evtl. kann ich im NS auch die | ||
107 | + // DIV-Liste durchgehen...spaeter mal schauen | ||
108 | + } | ||
109 | + // --> | ||
110 | + </script> | ||
111 | + </HEAD> | ||
112 | + | ||
113 | + <BODY bgcolor="#FFFFFF"> | ||
114 | + <? | ||
115 | + $url=parse_url($HTTP_REFERER); | ||
116 | + // echo $url["host"]."<br>\n"; | ||
117 | + ?> | ||
118 | + <? $menucl->site_header(); ?> | ||
119 | + | ||
120 | + <TABLE width="770" border="0" cellspacing="0" cellpadding="0"> | ||
121 | + <TR> | ||
122 | + <TD width="160" valign="top"> | ||
123 | + <? $menucl->menu(); ?> | ||
124 | + </TD> | ||
125 | + <TD width="610" valign="top"> | ||
126 | + <TABLE width="610" border="0" cellspacing="0" | ||
127 | + cellpadding="0"> | ||
128 | + <TR> | ||
129 | + <TD width="610" class="maintopbg"> | ||
130 | + <IMG align="left" src="images/maintop.png" | ||
131 | + vspace="0" hspace="0" width="388" height="2"></TD> | ||
132 | + </TR> | ||
133 | + </TABLE> | ||
134 | + <TABLE width="610" border="0" cellspacing="0" | ||
135 | + cellpadding="0"> | ||
136 | + <TR> | ||
137 | + <TD width="15" height="15"> | ||
138 | + <IMG src="images/bow.png" width="15" height="15"></TD> | ||
139 | + <TD width="595" height="15"> </TD> | ||
140 | + </TR> | ||
141 | + <TR> | ||
142 | + <TD width="15"> | ||
143 | + <IMG SRC="images/trans.gif" width="15" height="1"></TD> | ||
144 | + <TD width="595" valign="top"> | ||
145 | + <? $menucl->page(); ?></TD> | ||
146 | + </TR> | ||
147 | + </TABLE> | ||
148 | + </TD> | ||
149 | + <TD> </TD> | ||
150 | + </TR> | ||
151 | + </TABLE> | ||
152 | + </BODY> | ||
153 | +</HTML> |
php/base.inc
0 → 100755
1 | +<? | ||
2 | + if(!isset($BASE_INC)) { | ||
3 | + $BASE_INC=1; | ||
4 | + | ||
5 | + /**************************************************************** | ||
6 | + * Funktionen fuer den Aufbau der Startseite * | ||
7 | + ****************************************************************/ | ||
8 | + class BASE { | ||
9 | + | ||
10 | + var $result; | ||
11 | + /********************************************************** | ||
12 | + * Konstruktor: * | ||
13 | + **********************************************************/ | ||
14 | + function BASE() { | ||
15 | + global $LANG, $PAGE; | ||
16 | + global $HTTP_REFERER, $REMOTE_ADDR; | ||
17 | + | ||
18 | + $url=parse_url($HTTP_REFERER); | ||
19 | + | ||
20 | + if($url["host"] != "www.steffers.org") | ||
21 | + $this->result=system("../exec/counter ../counters/smain ". | ||
22 | + $REMOTE_ADDR." ../sems/smain"); | ||
23 | + | ||
24 | + if(!isset($LANG)) | ||
25 | + $LANG="de"; | ||
26 | + | ||
27 | + if(!isset($PAGE)) | ||
28 | + $PAGE="main"; | ||
29 | + } | ||
30 | + | ||
31 | + function site_header() { | ||
32 | + global $LANG, $PAGE, $PHP_SELF; | ||
33 | + | ||
34 | + $main=$PHP_SELF."?LANG=".$LANG."&PAGE=main"; | ||
35 | + $de=$PHP_SELF."?LANG=de&PAGE=".$PAGE; | ||
36 | + $en=$PHP_SELF."?LANG=en&PAGE=".$PAGE; | ||
37 | + | ||
38 | + echo "<MAP name=\"logomap\">\n"; | ||
39 | + echo " <area shape=\"rect\" coords=\"1,71,250,94\" "; | ||
40 | + echo "href=\"".$main."\">\n"; | ||
41 | + echo " <area shape=\"rect\" coords=\"184,47,214,64\" "; | ||
42 | + echo "href=\"".$en."\">\n"; | ||
43 | + echo " <area shape=\"rect\" coords=\"218,47,248,64\" "; | ||
44 | + echo "href=\"".$de."\">\n"; | ||
45 | + echo "</MAP>\n\n"; | ||
46 | + | ||
47 | + $mfile=fopen($LANG."/menu.cfg", "r"); | ||
48 | + $head=fgets($mfile, 4096); | ||
49 | + while(!feof($mfile)) { | ||
50 | + $line=fgets($mfile, 4096); | ||
51 | + while(!feof($mfile) && strcmp($line, "\n")) { | ||
52 | + $link=explode("#", chop($line)); | ||
53 | + $this->tooltip($link[2], $link[3], $link[4], $link[5], | ||
54 | + $link[6], $link[7], "#c9c9ff", | ||
55 | + "#a0a0ff"); | ||
56 | + | ||
57 | + $line=fgets($mfile, 4096); | ||
58 | + } | ||
59 | + | ||
60 | + $head=fgets($mfile, 4096); | ||
61 | + } | ||
62 | + fclose($mfile); | ||
63 | + | ||
64 | + //echo $this->result."<br>\n"; | ||
65 | + | ||
66 | + echo "<TABLE width=\"770\" border=\"0\" cellspacing=\"0\" "; | ||
67 | + echo "cellpadding=\"0\">\n"; | ||
68 | + echo "<TR>\n"; | ||
69 | + echo " <TD class=\"header\" width=\"516\" height=\"100\">\n"; | ||
70 | + echo " <IMG src=\"images/img1.png\" border=\"0\"\n"; | ||
71 | + echo " vspace=\"0\" hspace=\"0\"\n"; | ||
72 | + echo " width=\"516\" height=\"100\"></TD>\n"; | ||
73 | + echo " <TD class=\"header\" width=\"254\" height=\"100\">\n"; | ||
74 | + echo " <IMG align=\"right\" src=\"images/img2.png\" "; | ||
75 | + echo "border=\"0\"\n"; | ||
76 | + echo " usemap=\"#logomap\" hspace=\"0\" "; | ||
77 | + echo "vspace=\"0\"\n"; | ||
78 | + echo " width=\"254\" height=\"100\"></TD>\n"; | ||
79 | + echo "</TR>\n"; | ||
80 | + echo "</TABLE>\n"; | ||
81 | + } | ||
82 | + | ||
83 | + function menu_header($text, $style) { | ||
84 | + echo "<TR>\n"; | ||
85 | + echo " <TD colspan=\"3\" class=\"".$style."\">\n"; | ||
86 | + echo " <TABLE width=\"150\" border=\"0\" "; | ||
87 | + echo "cellspacing=\"0\" cellpadding=\"0\">\n"; | ||
88 | + echo " <TR>\n"; | ||
89 | + echo " <TD width=\"5\">\n"; | ||
90 | + echo " <IMG src=\"images/trans.gif\"\n"; | ||
91 | + echo " width=\"5\" height=\"1\"></TD>\n"; | ||
92 | + echo " <TD width=\"145\" height=\"20\" "; | ||
93 | + echo "valign=\"middle\">\n"; | ||
94 | + echo " <FONT class=\"menusubject\">\n"; | ||
95 | + echo " ".$text."</FONT></TD>\n"; | ||
96 | + echo " </TR>\n"; | ||
97 | + echo " </TABLE></TD>\n"; | ||
98 | + echo " <TD class=\"menuborder\" width=\"10\">\n"; | ||
99 | + echo " <IMG src=\"images/trans.gif\"\n"; | ||
100 | + echo " width=\"10\" height=\"1\"></TD>\n"; | ||
101 | + echo "</TR>\n"; | ||
102 | + } | ||
103 | + | ||
104 | + function menu_space($height, $bgcolor) { | ||
105 | + echo "<TR>\n"; | ||
106 | + echo " <TD height=\"".$height."\" width=\"20\" "; | ||
107 | + echo "bgcolor=\"".$bgcolor."\">\n"; | ||
108 | + echo " <IMG src=\"images/trans.gif\"\n"; | ||
109 | + echo " width=\"20\" height=\"1\"></TD>\n"; | ||
110 | + echo " <TD height=\"".$height."\" width=\"5\" "; | ||
111 | + echo "bgcolor=\"".$bgcolor."\">\n"; | ||
112 | + echo " <IMG src=\"images/trans.gif\"\n"; | ||
113 | + echo " width=\"5\" height=\"1\"></TD>\n"; | ||
114 | + echo " <TD height=\"".$height."\" width=\"125\" "; | ||
115 | + echo "bgcolor=\"".$bgcolor."\">\n"; | ||
116 | + echo " <IMG src=\"images/trans.gif\"\n"; | ||
117 | + echo " width=\"125\" height=\"1\"></TD>\n"; | ||
118 | + echo " <TD height=\"".$height."\" width=\"10\" "; | ||
119 | + echo "class=\"menuborder\">\n"; | ||
120 | + echo " <IMG src=\"images/trans.gif\"\n"; | ||
121 | + echo " width=\"10\" height=\"1\"></TD>\n"; | ||
122 | + echo "</TR>\n"; | ||
123 | + } | ||
124 | + | ||
125 | + function menu_link($text, $link, $name, $num, $bgcolor) { | ||
126 | + global $LANG, $PHP_SELF; | ||
127 | + | ||
128 | + if(strncmp(strtolower($link), "http://", 7) && | ||
129 | + strncmp(strtolower($link), "javascript:", 11)) | ||
130 | + $link=$PHP_SELF."?LANG=".$LANG."&PAGE=".$link; | ||
131 | + | ||
132 | + echo "<TR>\n"; | ||
133 | + echo " <TD width=\"20\" align=\"right\"\n"; | ||
134 | + echo " bgcolor=\"".$bgcolor."\" valign=\"middle\">\n"; | ||
135 | + echo " <A href=\"".$link."\" "; | ||
136 | + echo "onMouseOver=\"javascript:tooltip_on('".$name."',".$num.");\" "; | ||
137 | + echo "onMouseOut=\"javascript:tooltip_off('".$name."',".$num.");\">\n"; | ||
138 | + echo " <IMG src=\"images/boppel.png\" width=\"8\"\n"; | ||
139 | + echo " height=\"8\" border=\"0\"></A></TD>\n"; | ||
140 | + echo " <TD width=\"5\" bgcolor=\"".$bgcolor."\">\n"; | ||
141 | + echo " <IMG src=\"images/trans.gif\"\n"; | ||
142 | + echo " width=\"5\" height=\"1\"></TD>\n"; | ||
143 | + echo " <TD width=\"125\" align=\"left\""; | ||
144 | + echo " bgcolor=\"".$bgcolor."\" valign=\"middle\">\n"; | ||
145 | + echo " <A href=\"".$link."\" "; | ||
146 | + echo "onMouseOver=\"javascript:tooltip_on('".$name."',".$num.");\" "; | ||
147 | + echo "onMouseOut=\"javascript:tooltip_off('".$name."',".$num.");\">\n"; | ||
148 | + echo $text."</A></TD>\n"; | ||
149 | + echo " <TD class=\"menuborder\" width=\"10\">\n"; | ||
150 | + echo " <IMG src=\"images/trans.gif\"\n"; | ||
151 | + echo " width=\"10\" height=\"1\"></TD>\n"; | ||
152 | + echo "</TR>\n"; | ||
153 | + } | ||
154 | + | ||
155 | + function tooltip($ttname, $tttext, $x, $y, | ||
156 | + $width, $height, $bgcol, $border) { | ||
157 | + global $LANG, $PHP_SELF; | ||
158 | + | ||
159 | + echo "<DIV id=\"".$ttname."\" class=\"tooltip\" "; | ||
160 | + echo "style=\"left: ".$x."px; top: ".$y."px;\">\n"; | ||
161 | + echo "<TABLE border=\"0\" cellspacing=\"0\" "; | ||
162 | + echo " cellpadding=\"0\">\n"; | ||
163 | + echo "<TR>\n"; | ||
164 | + echo " <TD width=\"1\" height=\"1\" "; | ||
165 | + echo " bgcolor=\"".$border."\">\n"; | ||
166 | + echo " <IMG src=\"images/trans.gif\" width=\"1\" "; | ||
167 | + echo " height=\"1\" border=\"0\"></TD>\n"; | ||
168 | + echo " <TD width=\"".$width."\" height=\"1\" "; | ||
169 | + echo " bgcolor=\"".$border."\">\n"; | ||
170 | + echo " <IMG src=\"images/trans.gif\" width=\"".$width."\" "; | ||
171 | + echo " height=\"1\" border=\"0\"></TD>\n"; | ||
172 | + echo " <TD width=\"1\" height=\"1\" "; | ||
173 | + echo " bgcolor=\"".$border."\">\n"; | ||
174 | + echo " <IMG src=\"images/trans.gif\" width=\"1\" "; | ||
175 | + echo " height=\"1\" border=\"0\"></TD>\n"; | ||
176 | + echo "</TR>\n"; | ||
177 | + echo "<TR>\n"; | ||
178 | + echo " <TD width=\"1\" height=\"".$height."\" "; | ||
179 | + echo " bgcolor=\"".$border."\">\n"; | ||
180 | + echo " <IMG src=\"images/trans.gif\" width=\"1\" "; | ||
181 | + echo " height=\"".$height."\" border=\"0\"></TD>\n"; | ||
182 | + echo " <TD width=\"".$width."\" height=\"".$height."\" "; | ||
183 | + echo " bgcolor=\"".$bgcol."\">\n"; | ||
184 | + echo $tttext."</TD>\n"; | ||
185 | + echo " <TD width=\"1\" height=\"".$height."\" "; | ||
186 | + echo " bgcolor=\"".$border."\">\n"; | ||
187 | + echo " <IMG src=\"images/trans.gif\" width=\"1\" "; | ||
188 | + echo " height=\"".$height."\" border=\"0\"></TD>\n"; | ||
189 | + echo "</TR>\n"; | ||
190 | + echo "<TR>\n"; | ||
191 | + echo " <TD width=\"1\" height=\"1\" "; | ||
192 | + echo " bgcolor=\"".$border."\">\n"; | ||
193 | + echo " <IMG src=\"images/trans.gif\" width=\"1\" "; | ||
194 | + echo " height=\"1\" border=\"0\"></TD>\n"; | ||
195 | + echo " <TD width=\"".$width."\" height=\"1\" "; | ||
196 | + echo " bgcolor=\"".$border."\">\n"; | ||
197 | + echo " <IMG src=\"images/trans.gif\" width=\"".$width."\" "; | ||
198 | + echo " height=\"1\" border=\"0\"></TD>\n"; | ||
199 | + echo " <TD width=\"1\" height=\"1\" "; | ||
200 | + echo " bgcolor=\"".$border."\">\n"; | ||
201 | + echo " <IMG src=\"images/trans.gif\" width=\"1\" "; | ||
202 | + echo " height=\"1\" border=\"0\"></TD>\n"; | ||
203 | + echo "</TR>\n"; | ||
204 | + echo "</TABLE>\n"; | ||
205 | + echo "</DIV>\n"; | ||
206 | + } | ||
207 | + | ||
208 | + function menu_cinfo($text, $bgcolor) { | ||
209 | + echo "<TR>\n"; | ||
210 | + echo " <TD colspan=\"3\" bgcolor=\"".$bgcolor."\">\n"; | ||
211 | + echo " <TABLE width=\"150\" border=\"0\" "; | ||
212 | + echo "cellspacing=\"0\" cellpadding=\"0\">\n"; | ||
213 | + echo " <TR>\n"; | ||
214 | + echo " <TD width=\"5\">\n"; | ||
215 | + echo " <IMG src=\"images/trans.gif\"\n"; | ||
216 | + echo " width=\"5\" height=\"1\"></TD>\n"; | ||
217 | + echo " <TD width=\"145\" height=\"20\" "; | ||
218 | + echo "valign=\"middle\">\n"; | ||
219 | + echo " <FONT class=\"copyright\">\n"; | ||
220 | + echo " Copyright © 2001 "; | ||
221 | + echo "<A href=\"mailto:georg@steffers.org\">Georg Steffers</A>"; | ||
222 | + echo "<BR> written with <A href=\"http://www.vim.org/\">vim</a>"; | ||
223 | + echo "<BR> graphics created with "; | ||
224 | + echo "<a href=\"http://www.gimp.org/\">gimp</a>"; | ||
225 | + echo "<BR><BR>\n"; | ||
226 | + echo $text."\n"; | ||
227 | + echo " </FONT></TD>\n"; | ||
228 | + echo " </TR>\n"; | ||
229 | + echo " </TABLE></TD>\n"; | ||
230 | + echo " <TD class=\"menuborder\" width=\"10\">\n"; | ||
231 | + echo " <IMG src=\"images/trans.gif\"\n"; | ||
232 | + echo " width=\"10\" height=\"1\"></TD>\n"; | ||
233 | + echo "</TR>\n"; | ||
234 | + } | ||
235 | + | ||
236 | + function menu_end() { | ||
237 | + echo "<TR>\n"; | ||
238 | + echo " <TD colspan=\"3\" class=\"menubg\">\n"; | ||
239 | + echo " <TABLE width=\"150\" border=\"0\" cellspacing=\"0\""; | ||
240 | + echo " cellpadding=\"0\">\n"; | ||
241 | + echo " <TR>\n"; | ||
242 | + echo " <TD width=\"5\">\n"; | ||
243 | + echo " <IMG src=\"images/trans.gif\"\n"; | ||
244 | + echo " width=\"5\" height=\"1\"></TD>\n"; | ||
245 | + echo " <TD width=\"145\" height=\"10\" "; | ||
246 | + echo "valign=\"middle\">\n"; | ||
247 | + echo " <IMG src=\"images/trans.gif\"\n"; | ||
248 | + echo " width=\"145\" height=\"1\"></TD>\n"; | ||
249 | + echo " </TR>\n"; | ||
250 | + echo " </TABLE></TD>\n"; | ||
251 | + echo " <TD width=\"10\">\n"; | ||
252 | + echo " <IMG src=\"images/bow2.png\"\n"; | ||
253 | + echo " width=\"10\" height=\"10\"></TD>\n"; | ||
254 | + echo "</TR>\n"; | ||
255 | + } | ||
256 | + | ||
257 | + function menu() { | ||
258 | + global $LANG; | ||
259 | + | ||
260 | + echo "<TABLE width=\"160\" border=\"0\" cellspacing=\"0\""; | ||
261 | + echo " cellpadding=\"0\">\n"; | ||
262 | + | ||
263 | + srand((double)microtime() * 1000000); | ||
264 | + | ||
265 | + $layernum=0; | ||
266 | + $mfile=fopen($LANG."/menu.cfg", "r"); | ||
267 | + | ||
268 | + $head=fgets($mfile, 4096); | ||
269 | + | ||
270 | + while(!feof($mfile)) { | ||
271 | + $bgnum=rand(1,3); | ||
272 | + | ||
273 | + $this->menu_header($head, "menubg".$bgnum); | ||
274 | + $this->menu_space("5", "#c9c9ff"); | ||
275 | + | ||
276 | + $line=fgets($mfile, 4096); | ||
277 | + while(!feof($mfile) && strcmp($line, "\n")) { | ||
278 | + $link=explode("#", chop($line)); | ||
279 | + $this->menu_link($link[0], $link[1], $link[2], | ||
280 | + $layernum++, "#c9c9ff"); | ||
281 | + $line=fgets($mfile, 4096); | ||
282 | + } | ||
283 | + | ||
284 | + $this->menu_space("15", "#c9c9ff"); | ||
285 | + $head=fgets($mfile, 4096); | ||
286 | + } | ||
287 | + | ||
288 | + fclose($mfile); | ||
289 | + | ||
290 | + if(!($cr=file($LANG."/copyright.txt"))) | ||
291 | + return 0; | ||
292 | + | ||
293 | + $cr_text=""; | ||
294 | + foreach($cr as $line) | ||
295 | + $cr_text.=$line; | ||
296 | + | ||
297 | + $this->menu_cinfo($cr_text, "#c9c9ff"); | ||
298 | + $this->menu_end(); | ||
299 | + | ||
300 | + echo "<TR>\n"; | ||
301 | + echo " <TD width=\"20\">\n"; | ||
302 | + echo " <IMG src=\"images/trans.gif\"\n"; | ||
303 | + echo " width=\"1\" height=\"1\"></TD>\n"; | ||
304 | + echo " <TD width=\"5\">\n"; | ||
305 | + echo " <IMG src=\"images/trans.gif\"\n"; | ||
306 | + echo " width=\"1\" height=\"1\"></TD>\n"; | ||
307 | + echo " <TD width=\"125\">\n"; | ||
308 | + echo " <IMG src=\"images/trans.gif\"\n"; | ||
309 | + echo " width=\"1\" height=\"1\"></TD>\n"; | ||
310 | + echo " <TD width=\"10\">\n"; | ||
311 | + echo " <IMG src=\"images/trans.gif\"\n"; | ||
312 | + echo " width=\"1\" height=\"1\"></TD>\n"; | ||
313 | + echo "</TR>\n"; | ||
314 | + echo "</TABLE>\n"; | ||
315 | + } | ||
316 | + | ||
317 | + function page() { | ||
318 | + global $LANG, $PAGE; | ||
319 | + | ||
320 | + $page=$LANG."/".$PAGE.".inc"; | ||
321 | + | ||
322 | + include($page); | ||
323 | + } | ||
324 | + | ||
325 | + function scandir($dir, $base, $depth, $class) { | ||
326 | + $d=dir($dir); | ||
327 | + $dircount=0; | ||
328 | + $filecount=0; | ||
329 | + $width=20; | ||
330 | + $tgif="images/trans.gif"; | ||
331 | + $filepics["gz"]="fileselpics/gnome-package.png"; | ||
332 | + $filepics["tar"]="fileselpics/gnome-package.png"; | ||
333 | + $filepics["tgz"]="fileselpics/gnome-package.png"; | ||
334 | + $filepics["inc"]="fileselpics/gnome-html.png"; | ||
335 | + $filepics["html"]="fileselpics/gnome-html.png"; | ||
336 | + $filepics["htm"]="fileselpics/gnome-html.png"; | ||
337 | + $filepics["php"]="fileselpics/gnome-html.png"; | ||
338 | + $filepics["css"]="fileselpics/gnome-html.png"; | ||
339 | + $filepics["c"]="fileselpics/gnome-file-c.png"; | ||
340 | + $filepics["cpp"]="fileselpics/gnome-file-c.png"; | ||
341 | + $filepics["h"]="fileselpics/gnome-file-h.png"; | ||
342 | + $filepics["png"]="fileselpics/gnome-graphics.png"; | ||
343 | + $filepics["gif"]="fileselpics/gnome-graphics.png"; | ||
344 | + $filepics["jpg"]="fileselpics/gnome-graphics.png"; | ||
345 | + | ||
346 | + while($entry=$d->read()) { | ||
347 | + if($entry!="." && $entry!="..") { | ||
348 | + if(is_dir($dir.$entry)) | ||
349 | + $dirs[$dircount++]=$entry; | ||
350 | + else | ||
351 | + $files[$filecount++]=$entry; | ||
352 | + } | ||
353 | + } | ||
354 | + $d->close(); | ||
355 | + | ||
356 | + $tmp=str_replace(".", "&fs", $dir); | ||
357 | + $id_base=str_replace("/", "", $tmp); | ||
358 | + | ||
359 | + $recall=""; | ||
360 | + $recall_a=explode("/", $tmp); | ||
361 | + for($i=0; $i<count($recall_a)-2; $i++) | ||
362 | + $recall.=$recall_a[$i]; | ||
363 | + | ||
364 | + $recall=$recall."_".$recall_a[count($recall_a)-2]; | ||
365 | + | ||
366 | + if($dir != $base) { | ||
367 | + echo "<div name=\"".$id_base."_#\" id=\"".$id_base."_#\""; | ||
368 | + echo " class=\"".$class."\">\n"; | ||
369 | + echo "<table width=\"200\" border=\"0\" cellspacing=\"0\""; | ||
370 | + echo " cellpadding=\"0\">\n"; | ||
371 | + echo "<tr>\n"; | ||
372 | + echo " <td width=\"".(($depth-1)*$width)."\""; | ||
373 | + echo " height=\"".$width."\">\n"; | ||
374 | + echo " <img src=\"".$tgif."\""; | ||
375 | + echo " width=\"".(($depth-1)*$width)."\""; | ||
376 | + echo " height=\"".$width."\"></td>\n"; | ||
377 | + echo " <td width=\"".$width."\""; | ||
378 | + echo " height=\"".$width."\">\n"; | ||
379 | + echo " <img src=\"fileselpics/gnome-folder.png\""; | ||
380 | + echo " width=\"".$width."\""; | ||
381 | + echo " height=\"".$width."\"></td>\n"; | ||
382 | + echo " <td width=\"".(200-(($depth-1)*$width)-$width)."\""; | ||
383 | + echo " height=\"".$width."\">\n"; | ||
384 | + echo " <a class=\"dir\" href=\"javascript: "; | ||
385 | + echo " hidedir(/".$id_base.".+/, /".$recall."$/);\">\n"; | ||
386 | + echo " <b>".$recall_a[count($recall_a)-2]."</b>"; | ||
387 | + echo " </a></td>\n"; | ||
388 | + echo "</tr>\n"; | ||
389 | + echo "</table></div>\n"; | ||
390 | + } | ||
391 | + | ||
392 | + if(isset($dirs)) { | ||
393 | + sort($dirs); | ||
394 | + | ||
395 | + foreach($dirs as $entry) { | ||
396 | + $id=$id_base."_".$entry; | ||
397 | + | ||
398 | + echo "<div name=\"".$id."\" id=\"".$id."\""; | ||
399 | + echo " class=\"".$class."\">\n"; | ||
400 | + echo "<table width=\"200\" border=\"0\""; | ||
401 | + echo " cellspacing=\"0\" cellpadding=\"0\">\n"; | ||
402 | + echo "<tr>\n"; | ||
403 | + echo " <td width=\"".($depth*$width)."\""; | ||
404 | + echo " height=\"".$width."\">\n"; | ||
405 | + echo " <img src=\"".$tgif."\""; | ||
406 | + echo " width=\"".($depth*$width)."\""; | ||
407 | + echo " height=\"".$width."\"></td>\n"; | ||
408 | + echo " <td width=\"".$width."\""; | ||
409 | + echo " height=\"".$width."\">\n"; | ||
410 | + echo " <img src=\"fileselpics/gnome-folder-close.png\""; | ||
411 | + echo " width=\"".$width."\""; | ||
412 | + echo " height=\"".$width."\"></td>\n"; | ||
413 | + echo " <td width=\"".(200-($depth*$width))."\""; | ||
414 | + echo " height=\"".$width."\">\n"; | ||
415 | + echo " <a class=\"dir\" href=\"javascript:"; | ||
416 | + echo " showdir(/".$id_base.$entry."_.+/, /".$id."$/);\">\n"; | ||
417 | + echo " <b>".$entry."</b></a></td>\n"; | ||
418 | + echo "</tr>\n"; | ||
419 | + echo "</table></div>\n"; | ||
420 | + | ||
421 | + $this->scandir($dir.$entry."/", $base, $depth+1, "invis"); | ||
422 | + } | ||
423 | + } | ||
424 | + | ||
425 | + if(isset($files)) { | ||
426 | + sort($files); | ||
427 | + $id=$id_base."_files"; | ||
428 | + | ||
429 | + echo "<div name=\"".$id."\" id=\"".$id."\""; | ||
430 | + echo " class=\"".$class."\">\n"; | ||
431 | + | ||
432 | + foreach($files as $file) { | ||
433 | + $img=$filepics[substr($file, strrpos($file, ".")+1)]; | ||
434 | + | ||
435 | + if(!isset($img)) | ||
436 | + $img="fileselpics/gnome-textfile.png"; | ||
437 | + | ||
438 | + echo "<table width=\"200\" border=\"0\""; | ||
439 | + echo " cellspacing=\"0\" "; | ||
440 | + echo " cellpadding=\"0\">\n"; | ||
441 | + echo "<tr>\n"; | ||
442 | + echo " <td width=\"".($depth*$width)."\""; | ||
443 | + echo " height=\"".$width."\">\n"; | ||
444 | + echo " <img src=\"".$tgif."\""; | ||
445 | + echo " width=\"".($depth*$width)."\""; | ||
446 | + echo " height=\"".$width."\"></td>\n"; | ||
447 | + echo " <td width=\"".$width."\""; | ||
448 | + echo " height=\"".$width."\">\n"; | ||
449 | + echo " <img src=\"".$img."\" width=\"".$width."\""; | ||
450 | + echo " height=\"".$width."\"></td>\n"; | ||
451 | + echo " <td width=\"".(200-($depth*$width))."\""; | ||
452 | + echo " height=\"15\">\n"; | ||
453 | + echo " <font class=\"file\">\n"; | ||
454 | + echo $file."<br>\n"; | ||
455 | + echo " </font></td>\n"; | ||
456 | + echo "</tr>\n"; | ||
457 | + echo "</table>"; | ||
458 | + } | ||
459 | + | ||
460 | + echo "</div>\n"; | ||
461 | + } | ||
462 | + } | ||
463 | + } | ||
464 | + } | ||
465 | +?> |
testimlib.php
0 → 100755
1 | +<html> | ||
2 | +<head></head> | ||
3 | +<body> | ||
4 | +<? | ||
5 | + /*dl("imlib.so"); | ||
6 | + | ||
7 | + $img1=imlib_load_image("images/img1.png"); | ||
8 | + | ||
9 | + echo imlib_get_image_width($img1)."<br>\n"; | ||
10 | + | ||
11 | + imlib_free_image($img1);*/ | ||
12 | + | ||
13 | + //passthru("ls -ld /usr/local/lib/php/extensions/no-debug-non-zts-20001222"); | ||
14 | + nl2br(passthru("ls -l /usr/local/lib/php")); | ||
15 | + //passthru("md /usr/local/lib/php/extensions"); | ||
16 | + //passthru("set"); | ||
17 | + | ||
18 | + //phpinfo(); | ||
19 | +?> | ||
20 | +</body> | ||
21 | +</html> |
webcam.php
0 → 100755
1 | +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN"> | ||
2 | +<HTML> | ||
3 | + <HEAD> | ||
4 | + <TITLE>Steffers Workroom</TITLE> | ||
5 | + | ||
6 | + <META name="keywords" lang="de" | ||
7 | + content="Programmierung, programmierung, programmieren, 3D, 3d, 3D-Grafik, 3D-grafik, Grafik, grafik, Java, java, C/C++, C, C++, Dokumentation, Dokumentationen"> | ||
8 | + <META name="keywords" lang="en" | ||
9 | + content="programming, 3D, 3D-graphics, graphics, Java, java, C/C++, C, C++, documentation, documentations"> | ||
10 | + <META name="description" lang="de" | ||
11 | + content="Der Anfang einer kompletten Einführung in C/C++ programmierung. Sie soll alle Aspekte der Programmierung unter C, C++ und Java behandeln und in einer kleine Applikation enden, die den Anfang einer 3D-Engine bildet."> | ||
12 | + <META name="description" lang="en" | ||
13 | + content="The beginning of a complete introduction in C/C++ programming. It should cover all aspects of programming in C, C++ and Java and result in a small application, that is the beginning of a small 3D-engine."> | ||
14 | + | ||
15 | + <META name="author" | ||
16 | + content="Georg Steffers"> | ||
17 | + <META name="robots" | ||
18 | + content="index,follow"> | ||
19 | + <META name="date" | ||
20 | + content="2001-02-26T23:00:00+01:00"> | ||
21 | + | ||
22 | + <META http-equiv="keywords" | ||
23 | + content="programming, 3D, 3D-graphics, graphics, Java, java, C/C++, C, C++, documentation, documentations"> | ||
24 | + <META http-equiv="description" | ||
25 | + content="The beginning of a complete introduction in C/C++ programming. It should cover all aspects of programming in C, C++ and Java and result in a small application, that is the beginning of a small 3D-engine."> | ||
26 | + <META http-equiv="Content-Type" | ||
27 | + content="text/html"> | ||
28 | + | ||
29 | + <BASE HREF="http://www.steffers.org/smain/"> | ||
30 | + | ||
31 | + <LINK rev=made href="mailto:steffers@iname.com"> | ||
32 | + <LINK rel="stylesheet" href="css/style.css"> | ||
33 | + | ||
34 | + <SCRIPT language=JavaScript1.2> | ||
35 | + function reload_cam() | ||
36 | + { | ||
37 | + var im; | ||
38 | + | ||
39 | + im="http://www.steffers.org/smain/images/dcam.jpg"; | ||
40 | + im+="?"+Math.floor(100000*Math.random()+1); | ||
41 | + document.cam.src = im; | ||
42 | + setTimeout("reload_cam()", 30000); | ||
43 | + } | ||
44 | + function loaded() { | ||
45 | + reload_cam(); | ||
46 | + } | ||
47 | + </SCRIPT> | ||
48 | + </HEAD> | ||
49 | + | ||
50 | + <BODY bgcolor="#FFFFFF" onLoad="javascript:loaded()"> | ||
51 | + <CENTER> | ||
52 | + steffers@work (live)<br> | ||
53 | + <IMG src="http://www.steffers.org/smain/images/dcam.jpg" | ||
54 | + name=cam><br><br> | ||
55 | + <A href="javaScript:self.close()"> | ||
56 | + <DIV align="right"><B> | ||
57 | + <? | ||
58 | + if($LANG=="de") | ||
59 | + echo "schließen"; | ||
60 | + else | ||
61 | + echo "close"; | ||
62 | + ?> | ||
63 | + </B></DIV> | ||
64 | + </A> | ||
65 | + </CENTER> | ||
66 | + </BODY> | ||
67 | +</HTML> |
Please
register
or
login
to post a comment