Willkommen, Gast
Benutzername: Passwort: Angemeldet bleiben:
  • Seite:
  • 1

THEMA:

LIFE (Conway) 21 Dez 2021 19:18 #98250

  • Rainer Raisch
  • Rainer Raischs Avatar Autor
  • Offline
  • Forum Elite Mitglied
  • Forum Elite Mitglied
  • Eine Formel sagt mehr als 100 Bilder.
  • Beiträge: 4579
  • Dank erhalten: 526
Ich habe Conways LIFE programmiert, man kann allerdings nicht die Ausgangsposition vorgeben sondern diese nur zufällig auswählen, wobei man die Dichte makroskopisch (Wahrscheinlichkeit für das gesamte Spielfeld) oder mikroskopisch (Wahrscheinlichkeit je Feld) vorgeben kann. Dafür kann man die Regeln selber wählen, und zusätzlich zu neu (new) und sterben (die) auch "change" für jede der 9 möglichen Konstellationen auswählen. Das Spielfeld ist randlos also wie ein Möbius bzw eine Spielwelt doppelt gerollt.

rainer-raisch.de/life/life.html

Hier ein Screenshot eines stabilen Endzustandes.

Vorsicht, ich schreibe vereinfacht ohne Wurzelzeichen ³x=³√x , wenig Klammern 1/4r²π=1/(4r²π) , statt Vektorpfeil v¹=v⃗ Funktionen bzw Argumente kennzeichne ich mit einem Punkt f.(x)=f(x)

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

Letzte Änderung: von Rainer Raisch.

LIFE (Convay) 22 Dez 2021 09:08 #98259

Abgesehen davon, dass er CONWAY heisst ...

de.wikipedia.org/wiki/John_Horton_Conway

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

LIFE (Convay) 22 Dez 2021 16:45 #98266

  • Rainer Raisch
  • Rainer Raischs Avatar Autor
  • Offline
  • Forum Elite Mitglied
  • Forum Elite Mitglied
  • Eine Formel sagt mehr als 100 Bilder.
  • Beiträge: 4579
  • Dank erhalten: 526
Stimmt, im Screenshot hatte ich es noch richtig.

Bis auf Plausi und aufgeführte (alternative) Regelvorgaben habe ich es jetzt fertig. Das Dashboard war viel einfacher als gedacht.
Vorsicht, ich schreibe vereinfacht ohne Wurzelzeichen ³x=³√x , wenig Klammern 1/4r²π=1/(4r²π) , statt Vektorpfeil v¹=v⃗ Funktionen bzw Argumente kennzeichne ich mit einem Punkt f.(x)=f(x)

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

Letzte Änderung: von Rainer Raisch.

LIFE (Convay) 22 Dez 2021 20:38 #98275

  • aHaBotX
  • aHaBotXs Avatar
  • Offline
  • Forum Spezialist
  • Forum Spezialist
  • nullius in verba
  • Beiträge: 1000
  • Dank erhalten: 40

... Das Dashboard war viel einfacher als gedacht.


OH Je! Also bei mir läuft es nicht! kann ich mir auch nicht vorstellen das es das hat wenn ich mir den Code so Anschaue.

du implementierts eine css Datei
<l-ink rel="stylesheet" href="life.css" type="text/css">
diese ist aber leer!

Dafür schreibst du in den <head> tag diesen teil:

<s-tyle type="text/css">
td {
border: 2px inset #888888;
color: darkred;
white-space:nowrap;
}
input {width:120}
.green {color:green}
.rot {color:red}
input[type=radio]{width:12}
</style>

schreib den kram ohne den <s-tyle> tag in die life.css und lösche es aus der life.html

das ist auch Totaler Blödsinn:
<body title="Funktionen nur mit Javascript möglich">
das reicht vollkommen:
<body>

Der JS Teil den du am Ende in der life.html geschrieben hast.
muss vor dem schließenden </body> tag eingetragen werden.

So mal für erste!
"Essentially all models are wrong, but some are useful."
George E.P. Box

"Wenn es nur eine Wahrheit gäbe, warum können wir dann 1000 Bilder zum gleichen Thema malen?"
Pablo Picasso (1881-1973)

"Zu nah an der Wahrheit, Zu nah am Leben, Zu penetrant um Ignoriert zu werden."
Böhse Onkelz (1996)

Only This eXist.
OTX = Quant = Römisches Dodekaeder = realAtom

oA = oldÄther = RaumZeit = Quantenschaum

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

LIFE (Convay) 22 Dez 2021 21:45 #98276

  • Rainer Raisch
  • Rainer Raischs Avatar Autor
  • Offline
  • Forum Elite Mitglied
  • Forum Elite Mitglied
  • Eine Formel sagt mehr als 100 Bilder.
  • Beiträge: 4579
  • Dank erhalten: 526

Der JS Teil den du am Ende in der life.html geschrieben hast.
muss vor dem schließenden </body> tag eingetragen werden.

oops das war die Entwurfsphase....hab ich ganz vergessen, ich dachte, das hab ich längst verschoben, bei mir läuft es so auch, sowohl lokal als auch online.

Welchen Browser benützt Du? Ich habe nur den FF. Hmmm, im IE 11 geht es nicht. Liegt wohl an den Grafikroutinen von Walter Zorn.
Ah ja: Gecko-Browser, IE 4, 5, 6, Opera 5, 6 und 7+.
Ich dachte schon, dass das auch im IE laufen sollte. Blöd.

Die css war auch erst vorgesehen, hab ich auch vergessen, spielt aber keine Rolle.

Beides korrigiert und UP.

Komisch jetzt habe ich online Artefakte im Grid....ah das lag an der Vergrößerung im Browser.

das ist auch Totaler Blödsinn:

Das lass ich drin, ist mir lieber als ein Noscript-Tag, aber ich lösche es per JS.

Nachtrag:
Ich hab ne neue Grafik Methode gefunden, SVG-inline. Das muss ich aber erst enwickeln.
Vorsicht, ich schreibe vereinfacht ohne Wurzelzeichen ³x=³√x , wenig Klammern 1/4r²π=1/(4r²π) , statt Vektorpfeil v¹=v⃗ Funktionen bzw Argumente kennzeichne ich mit einem Punkt f.(x)=f(x)

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

Letzte Änderung: von Rainer Raisch.

LIFE (Convay) 26 Dez 2021 22:31 #98368

  • Rainer Raisch
  • Rainer Raischs Avatar Autor
  • Offline
  • Forum Elite Mitglied
  • Forum Elite Mitglied
  • Eine Formel sagt mehr als 100 Bilder.
  • Beiträge: 4579
  • Dank erhalten: 526

Nachtrag:
Ich hab ne neue Grafik Methode gefunden, SVG-inline. Das muss ich aber erst enwickeln.

Die SVG-Variante funktioniert seit gestern:
rainer-raisch.de/life/life.htm
die andere Technik habe ich auch leicht verbessert
rainer-raisch.de/life/life.html

Beides geht allerdings nicht im IE.

Ich habe überlegt, welcher Algorithmus fehlt, um zB eine Infektion einer Population zu simulieren.
Dazu müsste jedes Feld ein Alter bekommen und gesund werden oder erkranken können, wenn die Nachbarn lange genug krank sind. Bevor Conway die Regeln drastisch vereinfachte, war durchaus eine Vielzahl von Feldarten gebräuchlich.
Vorsicht, ich schreibe vereinfacht ohne Wurzelzeichen ³x=³√x , wenig Klammern 1/4r²π=1/(4r²π) , statt Vektorpfeil v¹=v⃗ Funktionen bzw Argumente kennzeichne ich mit einem Punkt f.(x)=f(x)

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

Letzte Änderung: von Rainer Raisch.

LIFE (Convay) 30 Dez 2021 09:52 #98450

  • aHaBotX
  • aHaBotXs Avatar
  • Offline
  • Forum Spezialist
  • Forum Spezialist
  • nullius in verba
  • Beiträge: 1000
  • Dank erhalten: 40

...
Ich habe überlegt, welcher Algorithmus fehlt, um zB eine Infektion einer Population zu simulieren.
Dazu müsste jedes Feld ein Alter bekommen und gesund werden oder erkranken können, ....


Versuch doch mal aus deinem "Feld" Array ein Objekt zu machen.
Array
Feld[i] = life/dead = 1/0

Objekt
Feld[i].status = life/dead = 1/0
Feld[i].krank = ja/nein = 1/0 
Dann must du dir nur noch überlegen
- was die Krankheit auslösen soll
- wie sie übertragen werden soll
und
- wie sie geheilt werden kann.
"Essentially all models are wrong, but some are useful."
George E.P. Box

"Wenn es nur eine Wahrheit gäbe, warum können wir dann 1000 Bilder zum gleichen Thema malen?"
Pablo Picasso (1881-1973)

"Zu nah an der Wahrheit, Zu nah am Leben, Zu penetrant um Ignoriert zu werden."
Böhse Onkelz (1996)

Only This eXist.
OTX = Quant = Römisches Dodekaeder = realAtom

oA = oldÄther = RaumZeit = Quantenschaum

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

Letzte Änderung: von aHaBotX.

LIFE (Convay) 30 Dez 2021 10:26 #98452

  • Rainer Raisch
  • Rainer Raischs Avatar Autor
  • Offline
  • Forum Elite Mitglied
  • Forum Elite Mitglied
  • Eine Formel sagt mehr als 100 Bilder.
  • Beiträge: 4579
  • Dank erhalten: 526

Dann must du dir nur noch überlegen

Dazu ist ein Object genauso wenig hilfreich wie das Array.

Ein Object hat den logischen Vorteil, dass man es mit eigenen Funktionen versehen kann. Ich sehe aber letztlich keinen Unterschied, ob ich schreibe "arrayclear()" oder "object.clear()", das liegt daran, dass ich nur mit einem einzigen Array arbeite, ein Object für mich also keine Vorteile bietet. Hätte ich mehrere Arrays, wäre auch "arrayclear(N)" gleichwertig zu "object[N].clear()". Nur mit "objectN.clear()" ergäben sich dann die Vorteile, wobei dies auch durch "arrayclear(arrayN)" erfolgen kann . Der Overhead eines Objects lohnt sich daher nicht so schnell. Aber das ist sicherlich auch Gewohnheitssache. Schließlich ist ein Array ja auch nur ein einfaches Object.


Achso, jetzt verstehe ich, die Felder sollen eben zwei Eigenschaften haben. Naja, wenn ich die Eigenschaft "krank" untersuchen will, brauche ich ja die Eigenschaft "lebend" nicht mehr. Die Einführung weiterer Eigenschaften war ja mein Ansatz, zB die Dauer der Erkrankung oder der Kontaminierung.

Feld[Platz][Eigenschaft] mit
Feld[n][0] 1=krank/0=gesund
Feld[n][1] wenn krank dann Dauer der Krankheit, oder wenn gesund dann Anzahl der Kontaminierungstage

Auch dafür braucht man kein Object, ein zweidimensionales Array genügt vollkommen. Lebend/tot kann man als weitere Eigenschaft Feld[n][2] mitführen, wenn benötigt. Eine Entwicklung der Population sehe ich aber vorerst einmal als unerwünschte Verkomplizierung.

Alternativ kann man auch das Array Feld[n] mit Arrays Person[eigenschaften] statt mit Einzelvariablen bestücken....

Man sollte aber nicht vergessen, dass diese Art der Darstellung die Personen immer als unbeweglich auf ihre Position fixiert darstellt. Auf Grund der weiteren Eigenschaften könnte man daran denken, den Personen die Möglichkeit der Bewegung (Platztausch) zu verleihen. Bei den klassischen "Läufern" handelt es sich ja nicht um die Bewegung von Zellen, sondern um Sterben und Neuentstehen, was in Kombination den Eindruck der Bewegung ergibt.
Vorsicht, ich schreibe vereinfacht ohne Wurzelzeichen ³x=³√x , wenig Klammern 1/4r²π=1/(4r²π) , statt Vektorpfeil v¹=v⃗ Funktionen bzw Argumente kennzeichne ich mit einem Punkt f.(x)=f(x)

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

Letzte Änderung: von Rainer Raisch.

LIFE (Convay) 31 Dez 2021 11:41 #98509

  • aHaBotX
  • aHaBotXs Avatar
  • Offline
  • Forum Spezialist
  • Forum Spezialist
  • nullius in verba
  • Beiträge: 1000
  • Dank erhalten: 40

...
Auch dafür braucht man kein Object,

ein zweidimensionales Array genügt vollkommen. ....

Man sollte aber nicht vergessen, dass diese Art der Darstellung die Personen immer als unbeweglich auf ihre Position fixiert darstellt. Auf Grund der weiteren Eigenschaften könnte man daran denken, den Personen die Möglichkeit der Bewegung (Platztausch) zu verleihen. Bei den klassischen "Läufern" handelt es sich ja nicht um die Bewegung von Zellen, sondern um Sterben und Neuentstehen, was in Kombination den Eindruck der Bewgung ergibt.


Naja und spätestens ab der dritten Eigenschaft wird ein Objekt einfach leichter zu Händeln.

Beim sterben einer Zelle wird das Alter auf null gesetzt.

Bei der wieder Belebung dieser Zelle steigt der Generationen wert dieser Zelle
"Essentially all models are wrong, but some are useful."
George E.P. Box

"Wenn es nur eine Wahrheit gäbe, warum können wir dann 1000 Bilder zum gleichen Thema malen?"
Pablo Picasso (1881-1973)

"Zu nah an der Wahrheit, Zu nah am Leben, Zu penetrant um Ignoriert zu werden."
Böhse Onkelz (1996)

Only This eXist.
OTX = Quant = Römisches Dodekaeder = realAtom

oA = oldÄther = RaumZeit = Quantenschaum

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

LIFE (Convay) 30 Jan 2022 20:47 #99457

  • Rainer Raisch
  • Rainer Raischs Avatar Autor
  • Offline
  • Forum Elite Mitglied
  • Forum Elite Mitglied
  • Eine Formel sagt mehr als 100 Bilder.
  • Beiträge: 4579
  • Dank erhalten: 526

Naja und spätestens ab der dritten Eigenschaft wird ein Objekt einfach leichter zu Händeln.

Jetzt habe ich erst verstanden, was Du damit gesagt hast.

Naja das kommt auf die Organisation an. Ich kann im Array für jedes Objekt ein Array anlegen, Arrays sind ja sowieso eine einfache Version von Objects. Ich muss ja nicht das Gitter als mehrdimensinales Array anlegen sondern kann eben auf jedem Platz ein Array speichern. Sobald ich eine Eigenschaft dann als Namen definiere, wird es sowieso zum Object. Nur muss ich es nicht vorher definieren und dann jedes einzeln anlegen. Der Formalismus ist eigentlich einfacher.
Feld[N] = [1,222,454]
Feld[N].Alter = 2
statt
Feld[N]=New Person(1,222,454,2)
nur muss ich eben den Prototyp Person zusätzlich definieren, mit Constructor etc., natürlich mit dem Vorteil von Standardwerten und Vollständigkeit.
Vorsicht, ich schreibe vereinfacht ohne Wurzelzeichen ³x=³√x , wenig Klammern 1/4r²π=1/(4r²π) , statt Vektorpfeil v¹=v⃗ Funktionen bzw Argumente kennzeichne ich mit einem Punkt f.(x)=f(x)

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

Letzte Änderung: von Rainer Raisch.

LIFE (Convay) 30 Jan 2022 22:30 #99464

Respekt! Du bist mein Held das du dich da jetzt auch noch reinfuchst!

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

LIFE (Convay) 31 Jan 2022 11:21 #99474

Ich habe nur den FF. Hmmm, im IE 11 geht es nicht. Liegt wohl an den Grafikroutinen von Walter Zorn.
Ah ja: Gecko-Browser, IE 4, 5, 6, Opera 5, 6 und 7+.

OMG diese Browser sind sei 20 Jahren tot. Aus Profi-Entwicklersicht gibt es ziemlich viel auszusetzen, angefangen vom DOCTYPE über die globalen Variablen (no-go), die Benamsung derselben (groß/klein) uvm. Aber egal... wenn's läuft ist ja gut... nur irgendwie groß rausbringen sollte man es in dieser Form nicht wollen... eine mittlere Katastrophe ;)
Also sprach das Photon: Wo wir sind ist vorne! Und sollten wir mal hinten sein, dann ist hinten vorne!

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

LIFE (Convay) 31 Jan 2022 11:52 #99476

  • Rainer Raisch
  • Rainer Raischs Avatar Autor
  • Offline
  • Forum Elite Mitglied
  • Forum Elite Mitglied
  • Eine Formel sagt mehr als 100 Bilder.
  • Beiträge: 4579
  • Dank erhalten: 526

OMG diese Browser sind sei 20 Jahren tot.

Per SVG läuft es ja auch nicht im IE oder Edge. Das liegt sicher an meinen Zugriffen aufs DOM und nicht am Prinzip.

Aus Profi-Entwicklersicht gibt es ziemlich viel auszusetzen,

Naja es ist zusammengestöpselt und gewachsen, insbesondere das Konzept wächst mit. Da ich die Namen schreiben muss, sind sie immer so kurz wie möglich. Das ist wie wenn Du etwas mit unterschiedlichen Gewichten abwiegen willst ("noch a bissl mehr"), da sind am Ende viele kleine Gewichte auf der Waage anstatt ein paar große. Ich lege auch mehr Wert auf Effektivität (→globale Variable, wenig Zugriffe aufs DOM, wenig verschachtelte "objekorientierte" Funktionen, etc) als auf Eleganz und Wartungsfreundlichkeit. Vor allem funktionieren die Realisierungen oft nicht (benötigte Anweisung gibt es gar nicht bzw ist unbekannt oder zu langatmig, manchmal einfach ein unerkannter Tippfehler etc), so dass am Ende das Konzept brachial durchbrochen wird, wenn es hilft...
Vorsicht, ich schreibe vereinfacht ohne Wurzelzeichen ³x=³√x , wenig Klammern 1/4r²π=1/(4r²π) , statt Vektorpfeil v¹=v⃗ Funktionen bzw Argumente kennzeichne ich mit einem Punkt f.(x)=f(x)

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

Letzte Änderung: von Rainer Raisch.

LIFE (Convay) 31 Jan 2022 13:55 #99482

OMG diese Browser sind sei 20 Jahren tot.

Per SVG läuft es ja auch nicht im IE oder Edge. Das liegt sicher an meinen Zugriffen aufs DOM und nicht am Prinzip.

Nimm einfach DOCTYPE html (das bedeutet HTML 5), nicht diese uralte Transitional-Krücke, die viele wertvolle Browser-Fähigkeiten einfach abschaltet und z.B. den IE strunzdumm macht (in den sog. quirks-mode versetzt). Und keine veraltete codepage wie windows-1252, sondern einfach utf-8, natürlich mit einem Editor, der das auch kann, bzw. gleich eine gute Entwicklungsumgebung wie z.B. Visual Studio Code , dann brauchst du keine xml-Entities wie ä für ein ä, sondern kannst es einfach so hinschreiben, mit allen beliebigen Sonderzeichen, die Unicode so hergibt.

Da ich die Namen schreiben muss, sind sie immer so kurz wie möglich. [...] Ich lege auch mehr Wert auf Effektivität (→globale Variable, wenig Zugriffe aufs DOM, wenig verschachtelte "objekorientierte" Funktionen, etc) als auf Eleganz und Wartungsfreundlichkeit.

Ich meine nicht unbedingt die Länge der Namen, und die schreibt man auch nicht, sondern kopiert sie um Tippfehlern vorzubeugen. Es gibt gewisse Konventionen für jede Programmiersprache. In JS z.B. werden Variablen klein geschrieben bzw. in camelCase, und vorne nur dann groß, wenn es sich um ein mit new erzeugbares Objekt handelt:
var myPerson = new Person();
Die Objektorientierung mit prototypischer Vererbung ist gerade die große Stärke von JS. Darauf zu verzichten wegen vermeintlich mehr Effektivität ist keine gute Idee. Und globale Variablen sind nicht effektiver als solche, die in einem eigenen, evtl. anonymen Namespace deklariert sind. Sie verschmutzen lediglich das globale Objekt (window) und führen schnell zur Katastrophe, sobald man noch ein anderes Script einbindet, das ebenfalls globale Variablen verwendet. Viel Spass dann bei der Fehlersuche, wenn die sich gegenseitig überschreiben, oder wenn man nur aus Versehen einen Variablennamen verwendet, der im globalen Objekt schon von Haus aus existiert.

Vor allem funktionieren die Realisierungen oft nicht (benötigte Anweisung gibt es gar nicht bzw ist unbekannt oder zu langatmig

Dafür gibt es Frameworks wie jquery, das die Browserunterschiede kennt und eine einheitliche Verwendung von Anweisungen ermöglicht, ohne dass man sich mit browserspezifischen Eigenheiten rumschlagen muss.

Aber ich will hier nicht den Klugsch...er raushängen. Solange einer nur für sich gelegentlich was programmiert und das nicht irgendwie professionell werden oder verbreitet werden soll, kann man mit solchen "Fehlern" leben, aber nur dann. Als großer Fan von javascript musste ich das hier schon erwähnen. Douglas Crockford, ein JS-Guru der ersten Stunde, nannte sie die am meisten missverstandene Programmiersprache der Welt. Weil jeder Anfänger sich damit recht schnell etwas hinbasteln kann, wird sie völlig unterschätzt und oft gar nicht als vollständig objektorientierte Programmiersprache angesehen, was sie aber ist. Objektorientierter geht's gar nicht, und die prototypische Vererbung ist schlicht genial... *schwärm*
Also sprach das Photon: Wo wir sind ist vorne! Und sollten wir mal hinten sein, dann ist hinten vorne!

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

Letzte Änderung: von Steinzeit-Astronom.

LIFE (Convay) 31 Jan 2022 17:43 #99492

  • Rainer Raisch
  • Rainer Raischs Avatar Autor
  • Offline
  • Forum Elite Mitglied
  • Forum Elite Mitglied
  • Eine Formel sagt mehr als 100 Bilder.
  • Beiträge: 4579
  • Dank erhalten: 526

oft gar nicht als vollständig objektorientierte Programmiersprache angesehen,

Ich bin auch ein Fan von JS, sehe eigentlich keinen Unterschied zu Java oder früher PLI, und im Browser ist es eben total praktisch, vor allem weil es voll in HTML integriert ist. jQuery habe ich hingegen noch nicht benützt, ich hielt es für zuviel Ballast für ein paar wenige Aufrufe, sehe aber gerade, dass es nur ein paar kB groß ist. Bisher hat mich auch der IE nicht gekratzt. Mit so einem Tool verliert man auch den Blick für unterschiedliche Adressierungen innerhalb des DOM.

Nimm erst mal einfach DOCTYPE html

Das habe ich ja, Du meinst, den Rest weglassen? Ich habe da Null Ahnung und nur manchmal Probleme, wenn ich etwas anders mache....

Es gibt gewisse Konventionen für jede Programmiersprache.

Das ist mir bekannt, wobei es keine Konvention in JS, sondern bei JS-Programmierern ist, die ich für mich nicht für sinnvoll halte. Mir ist egal, welcher technischen Natur eine Variable ist, sie erfüllt einen logischen Wert. Die innere Struktur muss man sowieso kennen. Zur Unterscheidung für globale zu lokalen Vaiablen würde es Sinn ergeben. Übrigens greife ich gerne auch per HTML auf Variablen zu, so dass sie schon global sein müssen. Früher auch fensterübergreifend, das geht aber leider nicht mehr, das hat mich viel Schweiß gekostet.
Vorsicht, ich schreibe vereinfacht ohne Wurzelzeichen ³x=³√x , wenig Klammern 1/4r²π=1/(4r²π) , statt Vektorpfeil v¹=v⃗ Funktionen bzw Argumente kennzeichne ich mit einem Punkt f.(x)=f(x)

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

Letzte Änderung: von Rainer Raisch.

LIFE (Convay) 31 Jan 2022 19:49 #99496

im Browser ist es eben total praktisch, vor allem weil es voll in HTML integriert ist.

Das sehe ich eher als Nachteil, falls man geneigt ist, den js-Code wild zwischen HTML-Tags zu verteilen, statt ihn grundsätzlich als externe Datei(en) einzubinden, wie es sich gehört, der Übersicht halber.

Nimm erst mal einfach DOCTYPE html

Das habe ich ja, Du meinst, den Rest weglassen? Ich habe da Null Ahnung und nur manchmal Probleme, wenn ich etwas anders mache....

Ja, den Rest unbedingt weglassen, auch das xml-Tag mit Angabe der Codepage. Der DOCTYPE steuert die Browser-Fähigkeiten, und dein DOCTYPE bremst ihn völlig aus. Der Browser meint dann, dass er es mit einem antiquierten HTML zu tun hätte und verhält sich wie ein IE7 oder schlimmer. Für moderne Browser einfach so:
<!DOCTYPE html>
<html>
<head>
<t-itle>Einfaches HTML5-Template</title>
</head>
<body>
<h1 id="welcome">Willkommen!</h1>
<p>Das ist ein einfaches HTML5-Template mit utf-8 Codierung, d.h. man kann alle Sonderzeichen wie Umlaute etc. einfach so eingeben, vorausgesetzt, der Editor kann utf-8 speichern, was eigentlich für alle modernen Editoren zutrifft. Selbst Variablennamen dürfen Sonderzeichen enthalten :). </p>
</body>

Es gibt gewisse Konventionen für jede Programmiersprache.

Das ist mir bekannt, wobei es keine Konvention in JS, sondern bei JS-Programmierern ist, die ich für mich nicht für sinnvoll halte.

Naja, die Konventionen sind für Profis, bzw. wenn mehrere Leute an einem Projekt arbeiten wie bei Open-Source-Projekten oder einfach wenn man vor hat, den Code an andere weiterzugeben. Man muss dann auch den Code von anderen Programmierern leicht verstehen können, und das fängt bei der Benamsung an. Woher soll ich wissen, was der Kollege mit var A=new Array() meint? Da müsste ich erst sein ganzes Programm nachvollziehen um zu verstehen, was A genau sein soll, von der Funktion her. Selbst den eigenen Code versteht man nach Jahren nicht mehr, wenn man später mal eine kl. Änderung vornehmen will und gedanklich nicht mehr ganz drinsteckt. Ich nehme mir immer viel Zeit für aussagekräftige Variablennamen, aus genau diesem Grund, und das zahlt sich aus.

Für JS gibt es auch einige wichtige Konventionen zur Fehlervermeidung. Z.B. Sollte man Vergleiche immer typgenau machen, also nicht if(a == b) oder if(a != b) abfragen, sondern if(a === b) bzw. if(a !== b). Sonst kann es passieren, dass man unerwünschte und falsche Ergebnisse bekommt, was bei der Fehlersuche sehr mühsam werden kann. Es gilt ja z.B. "das"==1 und "das" != 0 und "das"==true und "das" != false, aber "das" !== 1 und "das" !== 0 und "das" !== true und "das" !== false. Ich habe es mal in einem Extrembeispiel hinbekommen, dass praktisch 1==0 galt! Solche fiesen Fehler sind dann extrem schwer zu finden und man vezweifelt am eigenen Verstand :evil:.

Oder die Konvention, dass man die geschweiften Klammern immer setzt, auch wenn nur ein einziger Befehl enthalten ist... dass man Variablen vor der Verwendung immer deklariert, um nicht aus Versehen eine globale Variable anzulegen, dass man den Strichpunkt nach einer Anweisung immer setzt und nicht einfach auf die Wirkung vom Zeilenende vertraut, und solche Sachen halt. Es gibt dafür Qualitäts-Checker, die den Code auf solche Dinge untersuchen und einen darauf aufmerksam machen. Der erste Qualtätschecker, den ich verwendet habe, war JSlint von Douglas Crockford. Inzwischen gibt es bessere, kannste googeln. Nachdem JSlint mal einen umfangreichen Code von mir analysiert hatte, war der finale Kommentar nach Einhaltung aller Konventionen: "weird program." Ich nahm es als Kompliment, dass es mir gelungen war, selbst den großen Crockford zu verwirren :woohoo:.
Also sprach das Photon: Wo wir sind ist vorne! Und sollten wir mal hinten sein, dann ist hinten vorne!

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

Letzte Änderung: von Steinzeit-Astronom.

LIFE (Convay) 31 Jan 2022 20:44 #99500

  • aHaBotX
  • aHaBotXs Avatar
  • Offline
  • Forum Spezialist
  • Forum Spezialist
  • nullius in verba
  • Beiträge: 1000
  • Dank erhalten: 40

....Übrigens greife ich gerne auch per HTML auf Variablen zu, ...

Ja sicher tust du das!
Gib doch mal ein Beispiel!
"Essentially all models are wrong, but some are useful."
George E.P. Box

"Wenn es nur eine Wahrheit gäbe, warum können wir dann 1000 Bilder zum gleichen Thema malen?"
Pablo Picasso (1881-1973)

"Zu nah an der Wahrheit, Zu nah am Leben, Zu penetrant um Ignoriert zu werden."
Böhse Onkelz (1996)

Only This eXist.
OTX = Quant = Römisches Dodekaeder = realAtom

oA = oldÄther = RaumZeit = Quantenschaum

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

LIFE (Convay) 31 Jan 2022 20:55 #99501

  • Rainer Raisch
  • Rainer Raischs Avatar Autor
  • Offline
  • Forum Elite Mitglied
  • Forum Elite Mitglied
  • Eine Formel sagt mehr als 100 Bilder.
  • Beiträge: 4579
  • Dank erhalten: 526
>>> dass man Variablen vor der Verwendung immer deklariert,
Ja das ist alles klar. Ich setze normal auch auf strict.

>>> <!DOCTYPE html>
Allerdings wird ohne den W3C Zusatz eine Tabelle (anderes Projekt) ganz anders angezeigt, die gesamte schöne Formatierung ist beim Teuf...
Vorsicht, ich schreibe vereinfacht ohne Wurzelzeichen ³x=³√x , wenig Klammern 1/4r²π=1/(4r²π) , statt Vektorpfeil v¹=v⃗ Funktionen bzw Argumente kennzeichne ich mit einem Punkt f.(x)=f(x)

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

Letzte Änderung: von Rainer Raisch.

LIFE (Convay) 31 Jan 2022 21:10 #99504

Allerdings wird ohne den W3C Zusatz eine Tabelle anders angezeigt (nicht mehr gleiche Feldgröße).

Klar wird es anders, aber eben einheitlich nach HTML5-Standard. Die Größe der einzelnen Zellen kann man in der 1. Tabellenzeile jeweils angeben mit width, oder via CSS oder sogar mit JS oder wie immer. Ohne weitere Angabe richtet sich die Zellenbreite automatisch nach dem Inhalt.
Also sprach das Photon: Wo wir sind ist vorne! Und sollten wir mal hinten sein, dann ist hinten vorne!

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

Letzte Änderung: von Steinzeit-Astronom.

LIFE (Convay) 31 Jan 2022 21:12 #99505

  • Rainer Raisch
  • Rainer Raischs Avatar Autor
  • Offline
  • Forum Elite Mitglied
  • Forum Elite Mitglied
  • Eine Formel sagt mehr als 100 Bilder.
  • Beiträge: 4579
  • Dank erhalten: 526

oder via CSS-Selektoren oder sogar mit JS oder wie immer.

So habe ich es ja, aber ist nun ohne jeden Effekt. Die Ränder sind weg, die einheitliche Feldgröße ist weg....

td.flat,td.flat:link,td.flat:hover,td.flat:active,td.flat:visited,td.flat:

focus{
color:white;
border-width:1;
border-color:black;
border-style:solid;
height:150;
width:300;
min-width:300;
max-width:300;
}

Die Feldhöhe habe ich mit ein paar <br> repariert, aber die Feldbreite?
Vorsicht, ich schreibe vereinfacht ohne Wurzelzeichen ³x=³√x , wenig Klammern 1/4r²π=1/(4r²π) , statt Vektorpfeil v¹=v⃗ Funktionen bzw Argumente kennzeichne ich mit einem Punkt f.(x)=f(x)

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

Letzte Änderung: von Rainer Raisch.

LIFE (Convay) 31 Jan 2022 21:23 #99507

Dann machst du was falsch. CSS border, border-collapse etc. Ich kann dir hier nicht das ganze CSS erklären. <DOCTYPE html> ist jedenfalls State of the Art, oder war es zumindest noch, als ich vor 2 Jahren den Job geschmissen habe. Du musst es ja nicht zwingend so machen, wenn es nur für dich selber ist und dir zu mühsam zum Umstellen. In der freien Wildbahn kannst du mit dem antiquierten Zeug halt keinen Blumentopf gewinnen, aber vielleicht ist das ja egal. Dann halt erst beim nächsten Projekt oder so.
Also sprach das Photon: Wo wir sind ist vorne! Und sollten wir mal hinten sein, dann ist hinten vorne!

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

Letzte Änderung: von Steinzeit-Astronom.

LIFE (Convay) 31 Jan 2022 21:24 #99508

  • aHaBotX
  • aHaBotXs Avatar
  • Offline
  • Forum Spezialist
  • Forum Spezialist
  • nullius in verba
  • Beiträge: 1000
  • Dank erhalten: 40
focus{
color: white;
border: 1px solid #000;
height: 150px;
width: 300px;
}

das sollte du so schreiben!
"Essentially all models are wrong, but some are useful."
George E.P. Box

"Wenn es nur eine Wahrheit gäbe, warum können wir dann 1000 Bilder zum gleichen Thema malen?"
Pablo Picasso (1881-1973)

"Zu nah an der Wahrheit, Zu nah am Leben, Zu penetrant um Ignoriert zu werden."
Böhse Onkelz (1996)

Only This eXist.
OTX = Quant = Römisches Dodekaeder = realAtom

oA = oldÄther = RaumZeit = Quantenschaum

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

LIFE (Convay) 31 Jan 2022 21:30 #99509

  • Rainer Raisch
  • Rainer Raischs Avatar Autor
  • Offline
  • Forum Elite Mitglied
  • Forum Elite Mitglied
  • Eine Formel sagt mehr als 100 Bilder.
  • Beiträge: 4579
  • Dank erhalten: 526

Dann halt erst beim nächsten Projekt oder so.

Je eben, never change a runnig team. Das Formatieren hat mich eh viel Zeit gekostet, bis es gepasst hat.

Vorher sah es wie oben aus, jetzt wie unten:

das sollte du so schreiben!

Nachdem ich überall px eingefügt habe (sicherlich 1000 Mal), geht alles wie vorher.
Ich dachte, das ist Standard und muss nicht explizit angegeben werden.
Vorsicht, ich schreibe vereinfacht ohne Wurzelzeichen ³x=³√x , wenig Klammern 1/4r²π=1/(4r²π) , statt Vektorpfeil v¹=v⃗ Funktionen bzw Argumente kennzeichne ich mit einem Punkt f.(x)=f(x)

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

Letzte Änderung: von Rainer Raisch.
  • Seite:
  • 1

logo

Große Zellgasse 79
85049 Ingolstadt