|
|
Thema: Access, Abfrage Frage ;-) |
CDW
Antworten: |
16 |
Hits: |
10.941 |
|
|
also kann sein, dass mich nur diese Excelformel verwirrt
ich sehe das als:
Wurzel( (B-C)²+(C-D)²)+Wurzel((D-C)²+(E-D)²)
wobei BC die Startkoordinaten und DE die Endkoordinaten sind.
Hab mal probeweise durchgerechnet: von 1,1 zu 99,99
nach der Formel wäre das:
B=1,C=1; D=99,E=99
Wurzel(0²+98²)+Wurzel(0²+98²)=98+98=196
nach Euklid wäre das:
(1,1)-(99,99)=(98,98)->Länge des Vektors: Wurzel(98²+98²)=138
also schon ein etwas "heftiger" Unterschied
Nach Pythagoras wäre das ja auch:
a²+b²=c²
abstand zwischen den beiden X koordinaten=a
abstand zwischen den beiden Y koordinanten=b
abstand zwichen den beiden Punkten wäre die Strecke c
Wurzel((x1-x2)²+(y1-y2)²)
http://de.wikipedia.org/wiki/Satz_des_Py...ordinatensystem
also c=Wurzel aus a²+b²
(a²+b²)^(1/2)
also a=(1-99)=98; b=(1-99)=98
Wurzel(98²+98²)=138
Hätte mich auch gewundert, wenn Pythagoras etwas anderes ergeben hätte
Wegen der Begründung, dass es zwar ungenau ist, aber trotzdem klappt:
Bsp wo das in die Hose geht:
WL1 von (1,80) zu (1,1)
und WL2 von (60,60) zu (1,1)
nach pythagoras/euklid überbrückt WL1 =79, WL2=83 Streckeneinheiten
also WL1 Route besser als WL2
nach der "komischen"
Formel überbrückt WL1 =Wurzel(79²+79²)+wurzel(79²)=111+79=190 Einheiten
WL2 dagegen: Wurzel(0²+59²)+Wurzel(0²+59²)=118
also WL2 deutlich besser als WL1
Wie gesagt, kann sein dass ich die Formel falsch verstehe - oder auch die Berechnung im Spiel etwas "abendteurerlich" umgesetzt wurde
hab auch was nettes dazu gefunden:
http://www.nb-braun.de/mathematik/LinFun...agen/grund9.htm
|
|
Thema: Access, Abfrage Frage ;-) |
CDW
Antworten: |
16 |
Hits: |
10.941 |
|
|
@phlox81: hm. Ich vermute, es wird versucht den Abstand der zwei Punkte auszurechnen. Das wäre in R² für gewöhnlich |x-y| -> und dann die Norm anwenden. Bei R² kennt man das vielleicht als Euklidische Norm
http://de.wikipedia.org/wiki/Euklidischer_Raum
das wäre WURZEL(x1^1+x2^2)
hier werden häufig aufgrund der "hoch 2" die Betragsstriche weggelassen.
Aber die Wurzel sollte man nicht weglassen können
Allerdings verwirrt mich hier die Formel etwas:
Wenn ich nicht total alles vergessen habe, sollte man den Abstand zweier Punkte so ausrechnen können: |vektor1-vektor2|=ergebnisvektor
wurzel(x1^2+x2^2...) (x1, x2 usw sind einzelne "Komponenten" des Vektors).
Bsp: V1(1,1) V2(4,8)
|V1-V2|=(|1-4|,|1-8|) =(3,7) (die Beitragsstriche kann man ja weglassen, da anschließen hoch 2 genommern wird)
Länge des Vektors: (3^2+7^2)^(1/2)=9+49=Wurzel(56)=7,irgendas=> das wäre der Abstand zwichen v1 und v2 (oder eben start und endpunkt eines Wurmlochs)
Hier sehe ich allerdings eine Aufspaltung in Wurzel(blub)+Wurzel(blub). K.A ob man das so machen darf, aber rein intuitiv würde ich sagen: nein.
Denn Wurzel(5^2)+Wurzel(5^2)=Wurzel(25)+Wurzel(25)=10 ist nicht dasselbe wie Wurzel(5^2+5^2)=Wurzel(50)
|
|
Thema: Access, Abfrage Frage ;-) |
CDW
Antworten: |
16 |
Hits: |
10.941 |
|
|
wegen Routing:
Naja, über mehrere Knoten würde nach Graphentheorie und kürzestem Weg schreien:
http://de.wikipedia.org/wiki/Dijkstra-Algorithmus
wobei dann die Entfernung=Gewichtung wäre und man dann wohl (wenn ich das Problem richtig sehe) alle End und Startpunkte der Wurmlöcher miteinander Verbinden müsste, um wirklich alle Möglichkeiten zu haben. Das Ganze könnte man vielleicht per SQL hinbiegen (zumindest per Kreuzprodukt die Start/Endpunkte verbinden) - aber ab da wird es hässlich
|
|
Thema: [SQL] Abfrage nach mehreren Kriterien gruppieren |
|
Hm, sicherlich könnte man das mit Joins mehr oder weniger gut lösen.
(zuerst z.b 60 Spieler lesen und dann ein entsprechendes Statement generieren).
Aber ich glaube bei 14k Spieler sollte man es lieber nicht machen.
Es gibt allerdings, je nach DB auch "Prepaired" SQL Statements (http://de.wikipedia.org/wiki/Prepared_Statement). Ich hab das so gelernt, dass der Vorteil nicht nur darin besteht, dass das Statement nur 1 mal geparst werden muss (danach werden immer nur die Platzhalter eingesetzt) sondern auch das ganze interne Anfrageoprimierungsgedöns wird nur einmal für die Anfrage ausgeführt (bei der Übersetzung) und dann entfällt es.
D.h: eventuell wird die Lösung mit mehrere Anfragen (z.B in einer Schleife für x Spieler) dann tragbar(er).
|
|
Thema: Welches Notebook? |
|
Vieleicht lohnt sich da ein Blick zu den Thinkpads (-> Lenovo Buisnessparte). Die Linuxunterstützung ist nicht ohne (z.B Thinkwiki) und wenn man sucht, findet man auch Exemplare ohne "Microsoftsteuer"
(also OS-los).
Insgesamt sind die Buisnesgeräte (egal welcher Firma) zwar teurer, aber deutlich "stressfreier"
.
Die gibt es immer noch mit XP und mattem Display.
PS: ja, ich bekenne mich zu dem IBM Logo auf meinem Schlepptopdeckel
|
|
Thema: [SQL] Abfrage nach mehreren Kriterien gruppieren |
|
Hm, falls es nicht allzuspät ist:
sowas würde gehen:
code: |
1:
2:
3:
4:
5:
6:
7:
8:
|
SELECT misel.day, SUM (misel.population) as 'Misel', SUM (lx.population) as 'LX'
FROM
(SELECT day, population FROM world WHERE player='Misel') misel,
(SELECT day, population FROM world WHERE player='LX') lx,
WHERE misel.day=lx.day
GROUP BY misel.day;
|
|
intuitiver würde ich allerdings sagen, dass Spaltenhinzufügen nach einem (Teta) Join "schreit":
code: |
1:
2:
3:
4:
5:
6:
|
SELECT misel.day,SUM (misel.population) as 'Misel', SUM (lx.population) as 'LX'
FROM
world misel INNER JOIN world lx (ON lx.day=misel.day AND misel.player='Misel' AND lx.player='lx')
GROUP BY misel.day;
|
|
das erste Statement habe ich zumindest sinngemäßt getestet, das letzte sollte aber auch stimmen
Edit: Huch, schau sich mal einer das Registrierungsdatum der ganzen alten Säcke in dem Thread an
|
|
Thema: WinXP Medion Laptop Schnellstart Tasten |
|
Ich würde vermuten, dass es sich hier um ein eigenständiges Herstellersüüppchen handelt
Ich denke, er meint eher "Musikhören" im Windows-Modus? Da wird meistens ein Dienst/Programm des Herstellers eingesetzt, welches auf die Sondertasten reagiert und einprogrammierte Aktionen durchführt.
Sowas z.B wäre vielleicht eine Alternative:
http://winowin.de/18877/KeyBind.html?SID...b0ea3036e1e022d
Sonst müsste das Notebook ein anderes OS booten - was auch möglich ist (wird z.B bei Lenovo genutzt, um ein "NotfallOS" - abgespeckten Windows mit einem Explorer von Lenovo, zu starten).
|
|
Thema: Mathe Hilfe bei Algorithmen |
|
auf den ersten Blick: Anzahl der zweier Potenzen.
also Log (zur Basis 2) X
|
|
Thema: Mathe [Vektoren] lineare Abhängigkeit |
|
Hm, meine LA Zeit ist schon seit 4 Monaten vorbei, aber ich würde einfach versuchen so anzusetzen:
Die Rechenregeln und die Definition ausnuten.
-------
code: |
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
|
Vektor V ist als V=(B+C) definiert
wir wissen dass A,B,C linear unabhängig sind.
Wenn man V aus U und W bilden kann, sind die Vektoren U,V,W linear
abhängig.
Beweis durch Widerspruch:
V=(B+C)
Könnte man V aus W und/oder U bilden, wäre V nicht unabhängig und damit
wäre auch die Vektoren nicht linear unabhängig.
B+C=x(A+B)+y(A+C)
<=> B+C=xA+yA+xB+yC
da B linear unabhängig von A,C ist, lässt sich B nicht als kombination aus
yA+yC oder xA+xB darstellen, jedoch durch xB oder yA+xB (oder yC+xB)
wenn y=0 gewählt wird.
da C linear unabhängig von A,B ist, lässt sich C nicht als kombination aus
xA+xB,yA+yC oder yA+xB darstellen, jedoch durch yC oder yC+xA (für x=0)
oder yC+xB (für x=0).
Das heißt aber, um B+C als kombination aus xA+yA+xB+yC darstellen zu
können, müssen sowohl x wie auch y gleich 0 sein. Nur kommt dabei der
Nullvektor raus und nich B+C - ergo Widerspruch. Somit gilt die Lineare
unabhängigkeit auch für U,V,W
|
|
-----------
Version2 (im Prinzip wohl dasselbe, finde ich aber schlüssiger
).
code: |
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
|
-----------
Überlegung: Linear unabhängig heißt ja: a1A+a2B+a3C=0 (Nullvektor) nur
wenn a1 bis a3 =0 (siehe Wiki Definition)
Wären also U+V+W linear abhängig könnte man damit einen Nullvektor
bilden:
a1*U+a2*V+a3*W=0
wobei a1..a3 dann irgend ein Koeffizient ungleich 0 ist (statt a1 bis a3 kann
man auch die gamma/lambda Bezeichner wählen ;))
a1*U+a2*V+a3*W=0 kann umgeschrieben werden in:
(da U=A+B ist, V=B+C usw)
a1*(A+B)+a2*(B+C)+a3(A+C)=0
oder:
a1*A+a1*B+a2*B+a2*C+a3*A+a3*C=0
Wir wissen dass A,B,C linear unabhängig sind, somit kann man hier den
Nullvektor nur bilden, wenn man die Koeffizienten so wählt, dass ein Vektor
mit seiner Inversen addiert wird (-A+A=0).
also erstmal umordnen:
a1*A+a1*B+a2*B+a2*C+a3*A+a3*C=0
<=>
a1*A+a3*A+a1*B+a2*B+a2*C+a3*C=0
a1A+a3A, a1B+a2B, a2C+a3C müssen 0 ergeben, da sonstige
Kombinationen nicht möglich sind (denn A,B,C sind als linear unabhängig
definiert - also kann man auch keine Koeffizienten ungleich 0 wählen, so dass
xA+yB=0 sind, damit brauchen wir auch nur die oben erwähnten Paare zu
betrachten.)
1)a1A+a3A <- kann nur dann Nullvektor ergeben, wenna3=-a1
dann ist nämlich xA+(-xA)=Nullvektor.
2)a1B+a2B <-kann nur dann Nullvektor ergeben, wenn a2=-a1
3)und schließlich a2C+a3C kann nur Nullvektor ergeben, wenn a3=-a2
Also a3=a2 (laut (1) und (2)) aber gleichzeitig auch a3=-a2
=> Wiederspruch.
Wir können auch nicht einfach a2=0 setzen, da dann auch a1 und a3 Null sind.
Somit können wir keine Koeffizienten ungleich 0 wählen um
a1A+a1B+a2B+a2C+a3A+a3C=0
zu erhalten.
und da
a1A+a1B+a2B+a2C+a3A+a3C äquvalent zu a1U+a2V+a3W
gilt diese Aussage auch für a1*U+a2*V+a3*W=0.
Damit wären U+V+W linear unabhängig.
|
|
Ich hoffe das ist halbwegs nachvollziehbar.
Bitte mit Vorsicht genießen, da es schon zeitlich etwas her ist, seit ich mir das antun musste
|
|
Thema: WinXP Betriebssystem auf 2. Partition starten? |
|
Du könntest die Boot.ini öffnen (sollte auf C: liegen)
und folgenden Eintrag hinzufügen:
code: |
1:
2:
|
multi(0)disk(0)rdisk(0)partition(2)\WINDOWS="winxp" |
|
Wobei die Nummer (hier die 2) für die Partitionsnummer steht (C=1,D=2,E=3 usw).
Das einzige Problem wäre eben auf die boot.ini zuzugreifen - am unprolematischtsten von seinem Windows aus: (Start->Ausführen und dann "C:\boot.ini" eingeben) oder falls es nicht klappt: Start->Ausführen->"notepad c:\boot.ini"
(das "Ausführen" befindet sich bei allen Windowsen in etwa auf derselben Menüstelle
)
Beispielsweise sieht die Boot.ini für mehrere (Windows)OS so aus:
code: |
1:
2:
3:
4:
5:
6:
7:
8:
|
[boot loader]
timeout=5
default=multi(0)disk(0)rdisk(0)partition(2)\WINDOWS
[operating systems]
multi(0)disk(0)rdisk(0)partition(2)\WINDOWS="winxp"
multi(0)disk(0)rdisk(0)partition(1)\WINNT="Win2k"
|
|
in diesem Beispiel ist XP auf D und Windows2000 auf C installiert, wobei per Default XP eingestellt ist. Unter "[operating systems]" sind verfügbare Systeme aufgelsitet. Die Angabe nach "partition(x)" ist der Ordner, wo Windows installiert ist und per ="xyz" gibt man den Text vor, der in der Auswahl angezeigt werden soll.
Hat man dann auf E noch ein Windows, das man booten möchte, dann fügt man am ende noch einen Eintrag dazu:
code: |
1:
2:
3:
4:
5:
6:
7:
8:
9:
|
[boot loader]
timeout=5
default=multi(0)disk(0)rdisk(0)partition(2)\WINDOWS
[operating systems]
multi(0)disk(0)rdisk(0)partition(2)\WINDOWS="winxp"
multi(0)disk(0)rdisk(0)partition(1)\WINNT="Win2k"
multi(0)disk(0)rdisk(0)partition(3)\WINDOWS="winxp_delux"
|
|
Falls Du keinen Zugriff auf das andere Windows hast, bleibt noch die Möglichkeit per BootCD oder Reparaturkonsole - wobei ich mir bei der letzen nicht sicher bin, ob die überhaupt einen Editor oder ähnliches bietet.
|
|
Thema: Telnet Script |
|
Probier es mal damit:
zuerst die Eingaben in eine Datei schreiben:
echo eingabe>>input.txt
usw.
und dann beim telnet aurfuf:
telnet < input.txt
das '<' leitet den Input um. In diesem Fall auf die Textdatei
|
|
Thema: TCP/IP IP Adresse ermitteln |
CDW
Antworten: |
10 |
Hits: |
6.281 |
|
|
was ist eigentlich das Ziel? Die IP an sich zu erfahren, jemandem per Mail zukommen zu lassen, irgenwas am eigenen Rechner zu automatisieren oder sich selbst eine Mail schicken, so dass man von einem anderen Rechner aus die IP kennt und seine eigenen Dienste nutzen kann? (wobei bei der letzen Möglchkeit DynDNS wohl am elegantesten wäre).
http://www.wieistmeineip.de/ - lässt sich je nach Scriptsprache eigentlich gut parsen.
noch einfacher sollte http://www.getip.com/ sein - auch detailiertere Informationen.
http://www.getmyip.co.uk/
|
|
Thema: Virenschutz - welcher kommerzieller gut? |
CDW
Antworten: |
15 |
Hits: |
10.356 |
|
|
Ich möchte zwar anmerken, dass ich kein Program davon nutze
Kaspersky: gute Signaturenerkennung
Nod32: starke Heuristik.
Was ich ab und zu nutze (reiner Dateiscan):
MWAV (die Toolkitversion kann frei eingesetzt werden und beherrscht in diesem Modus keine Entfernung von Malware
)
http://www.ccsoftware.ca/escan/mwav.cfm
Allerding sind die alle immer noch nciht so ausgereift, wie die Werbung es immer darstellt (naja, imho ist Norton da am stärksten vertreten, obwohl die Software fast schon am wenigsten halten kann
)
denn kaum taucht ein "oldscool" Virus auf, haben die schon alle ihre Mühe, das Ding richtig zu erkennen:
http://www.heise.de/security/result.xhtm...s=W32%20Polipos
|
|
Thema: Einsparungen in der Spielewelt |
|
22.06.2006 16:11 |
Forum: Spiele |
Zitat: |
ein Addon mit 12 Stunden Spielzeit würde ja höchstens 30-45 Euro einbringen... natürlich... |
hm, das fällt mir auch auf - dass man an der engine und an dem ganzen drumherum des Spiels lange werkeln muss ist für mich noch nachvollziehbar.
Aber wenn das Ganze steht, muss es doch zu schaffen sein, paar Levels mehr zu machen? Denn das "teuerste" ist ja anscheinend die Engine/Spielkern (Levelinteraktion, Modelle usw) - warum dann nur schnell paar Levels zusammenschustern und auf den Markt schmeißen. Denn die Levels sind ja nicht "hardcodiert". Klar ist Leveldesign keine einfache Angelegenheit - aber der Aufwand dafür steht in keinem Verhältniss zu der "Kernprogrammierung". Und das sieht man auch öfters, wenn neue Spiele vorgestellt werden - eine lauffähige Beta, wo alles läuft aber noch keine Levels da sind - paar Wochen später ist das Spiel auf dem Markt. Damit pinkelt man sich imho selbst ans Bein.
Früher war das ein Grund ein bestimmtes Spiel nicht zu kaufen ("bah, das hat man nach 8 -10 Stunden durch" und afaik gabs bei den Spielezeitschriften damals dafür noch dicken Punktabzüge, wie z.B für SuperMarioKart64). Heutzutage ist es normal. Und das verstehe ich nicht - prozentual wird viel viel mehr inzwischen in die Engine investiert als früher - da tuen doch paar Levels mehr nicht wirklich weh - vor allem wenn die Spiele insgesamt schon paar Millionen kosten.
Dass es auch anders geht, zeigen z.B Oblivion oder die Gothic Reihe.
Naja, genug gejammert
- man muss ja keine Spiele kaufen, die einem nicht gefallen (auch wenn die Spieleindustrie die sinkenden Umsätze auf die Raubkopierer schiebt).
|
|
Thema: Doppelte Verschlüsselung unsicher? |
CDW
Antworten: |
13 |
Hits: |
11.807 |
|
|
Ich poste zwar nur ungerne zu diesem Thema (weil: wenn man keine Ahnung hat ... usw
) aber das Verfahren wurde ja auch unter anderem den "Mustertests" unterzogen.
Jetzt könnte man einen mathematischen Beweis antreten (Kritik willkommen
) :
Blockverschlüsselung ist eine bijektive Abbildung f: {0,1}^n -> {0,1}^n
die Anzahl der Permutationen ist dann Fakultät(2^n) (steht in Wikipedia
)
Wenn man die Verschlüsselung mehrfach anwendet, wäre das:
Anfang {0,1}^n ->(p1) {0,1}^n ->(p2) {0,1}^n (Endergebnis) (egal ob Schlüssel gleich oder unterschiedlich) da die Funktion bijektiv ist (vom Schlüssel abhängig) und damit eine bestimmte Permutation (p1) bewirkt, gibt es auch eine endliche Anzahl an Schlüsseln (wie erwähnt) sowie an "verschlüsselten Zuständen", deshalb muss es auch eine Permutation px geben (mit px=p1->p2), die direkt ohne Umweg aus "Anfang" eine "Endergebnis" produziert (wegen bijektivität (?) und endlicher Anzahl ). Die Frage ist nun: da es eine andere Permutation gibt (wenn die Argumentation bisher stimmt
), könnte es auch sein, dass man dadurch auf eine "einfache Permutation" umsteigt -> also eine die mit einem kurzen Passwort "erstellbar" ist ->was dann z.B BF in annehmbarer Zeit möglich machen könnte (denn http://de.wikipedia.org/wiki/Brute-Force-Methode). Die andere Frage ist nun: wie wahrscheinlich ist das (ich denke eher nicht). Afaik erhöht sich die Sicherheit anderseit aber schon geringfügig, da es auch Permutationenen gibt, die nicht mit einem Schlüssel abgedeckt werden (wieder: Wikipedia).
Fazit: wenn es die Verschlüsselung nicht schwächt, erhöht es diese (das bringt uns ja schon viel weiter
)
Naja, zumindest besteht meiner Auffasung nach eine geringe Möglichkeit, dass man durch doppelte Verschlüsselung mit ein und demselben Verfahren Bruteforce angriffe vereinfacht (zumindest in der Theorie). Und bei einem "als ausreichend sicher" angesehenem Schlüssel wird man diese wohl auch nicht wirklich erhöhen.
PS: die Argumentation, warum es eine Permutation px mit px=p1->p2 (also px bewirkt dasselbe wie p1 und p2 nacheinander angewendet) will mir nicht so recht einfallen. Jedoch "hab ich da so ein Gefühl dass es stimmen müsste"
|
|
Thema: Web Outlook Express 6 e-mails verschwunden |
|
Zitat: |
Hat einer noch ne lössung bzw ne idee?? |
Zitat: |
@grandmaster S: wirklich tolle antwort die mir sehr weiter geholfen hat. |
das wäre auch meine erste und einzige Idee gewesen (da bist jezt noch nie mit OE gearbeitet). Viele der anderen Mailprogramme bieten Importfunktionen an. Entweder schon beim anlegen eines Kontos (z.B Eudora) oder auch im Nachhinein. Beim Thunderbird ist es unter "Extras"->"Importieren"->"Nachrichten" , hier kann man zwischen mehreren Mailprogrammen auswählen. Bei Eudora war das mal unter "File->Import".
Dann braucht man nur noch irgendeinen Konverter für "Thunderbird/Eudora2Outlook" zu suchen.
Eventuell lässt sich auch dieser Tipp "missbrauchen" http://www.mailhilfe.de/frage_finde+Outl...icht_20245.html
http://www.wer-weiss-was.de/theme17/article1420838.html
heißt: alles sichern, Outlook deinstallieren, neusinstallieren, Datenbank einfügen...
|
|
Thema: Buchvorstellung Thinking in C++ |
|
zu dem Buch kann ich leider nicht viel sagen - aber es gibt auch Bücher über Programmierung - ohne dass sie sich auf eine Sprache festlegen.
Das Spektrum reicht von "Programmieren für Dummys"-Reihe bis hin zu den schweren Brocken "Softwareengineering for xyz". Einfach in einen größeren Verlag gehen oder eben online stöbern.
Also beim Programmieren geht es in erster Linie um eine Denkweise und erst dann um eine Sprache
- davon hängt auch die Buchwahl ab: ein erfahrener Programmierer, der mit objektorientierten Sprachen zu tun hatte und auch C kennt, braucht wahrscheinlich eine gute Referenz oder eine knappe Einführung.
Jemand, der noch nie was programmiert hat, wohl ein größeres Buch oder http://www.galileocomputing.de/openbook/javainsel5/ (ein online-Buch für Java-Einsteiger). Wobei das Buch imho in erster Linie die Denkweise beibringen muss - die Sprache ist nebensächlich (bitte aber kein whitespace/brainfuck nehemen
), denn all die funktionen können später nachgeschlagen werden oder man such in google nach einem Beispielcode.
Zu den "zu detailierten Büchern" : ich hab hier noch ein gutes PHP und MySQL Buch stehen - schon seit einem Jahr. Leider hat das Buch über 1000 Seiten - ich bin irgendwie nie über Seite 40 gekommen
|
|
|
|