Mit “fehler” getaggte Einträge von rainboxx - Matthias Dietrich
Gestern habe ich an einem kleinen Spaß-Projekt gearbeitet, worin ein durch Javascript populiertes Koordinatensystem existiert. In dieses Koordinatensystem werden Elemente gemalt, die selbst als Koordinatensystem definiert sind. Jeder Punkt hat dabei einen boolschen Wert, also entweder 1 oder 0:
Soweit, so gut. Es kam dann der Augenblick, als ich ein neues Element mit nur einem Punk auf der x-Achse definiert habe:
Die Lösung war dann, den boolschen Wert als
Ach ja, das Ganze habe ich bisher nur im Firefox 3.0.11 getestet; wie es in den anderen Browsern aussieht, kann ich derzeit nicht sagen.
var element = new Array(
new Array( 0, 1, 1, 0 ),
new Array( 1, 0, 1, 0 )
);
Mit zwei verschachtelten for-Schleifen kann man nun schön über das zweidimensionale Array drübergehen und die Elemente in das Koordinatensystem an die entsprechende Stelle malen.Soweit, so gut. Es kam dann der Augenblick, als ich ein neues Element mit nur einem Punk auf der x-Achse definiert habe:
var element = new Array(
new Array( 1 ),
new Array( 1 )
);
Dieses Element wurde nie gezeichnet, weil Javascript aus irgendeinem Grund die Anzahl der Elemente in der zweiten Dimension des Arrays als undefiniert ansah. Hier mal ein Beispiel:
var element = new Array(
new Array( 0, 1, 1, 0 ),
new Array( 1, 0, 1, 0 )
);
alert(element[0][1]); // --> "1"
var element2 = new Array(
new Array( 1 ),
new Array( 1 )
);
alert(element2[0][0]); // --> "undefined"
Eine ganze Weile habe ich nach dem Problem gesucht, weil ich einfach keines sehen konnte. Klar, für mich ist hier auch immer noch keines ersichtlich und ich würde das Verhalten als Bug ansehen. Warum Javascript einen einzelnen boolschen Wert im Array als leer ansieht, ist mir nicht verständlich.Die Lösung war dann, den boolschen Wert als
String anzugeben, was IMHO ein wenig doof ist (und natürlich auch mehr Schreibarbeit bedeutet, solange die Elemente noch von Hand definiert werden. Der Vollständigkeit wegen hier ein Komplettbeispiel:
var element = new Array(
new Array( 0, 1, 1, 0 ),
new Array( 1, 0, 1, 0 )
);
alert(element[0][1]); // --> "1"
var element2 = new Array(
new Array( 1 ),
new Array( 1 )
);
alert(element2[0][0]); // --> "undefined"
var element3 = new Array(
new Array( "1" ),
new Array( "1" )
);
alert(element3[0][0]); // --> "1"
Vielleicht kann mir jemand auf die Sprünge helfen, warum Javascript dieses Verhalten an den Tag legt. Ich würde das gerne mal wissen :).Ach ja, das Ganze habe ich bisher nur im Firefox 3.0.11 getestet; wie es in den anderen Browsern aussieht, kann ich derzeit nicht sagen.
Letzte Woche war Weihnachten. Für mich. Denn mein funkelnagelneuer MacBook Pro (Alugehäuse) ist endlich eingetroffen und wird nun mein leider noch recht neues MacBook Air ersetzen. Nein, ich war immer zufrieden mit dem Air, doch haben sich meine Arbeitsanforderungen derart geändert, dass ich unbedingt eine schnellere Platte, mehr Arbeitsspeicher und evtl. auch eine höhere Prozessorleistung benötige. Da kam das MacBook Air nicht mehr ganz hinterher, leider. Dennoch, es ist ein super Notebook!
Als ich am Abend vom Kunde nach Hause kam, wurde das Paket natürlich erstmal ausgepackt. Vieles blieb natürlich beim Alten: Alugehäuse, das Betriebssystem in entsprechender Version, etc. Nicht viel neues, aber ich wollte sogleich mal den Migrationsassistenten anschmeissen, um meine Programme und Daten auf den neuen Mac zu transferieren. Es war mein erstes Mal.
Gut 3 Stunden haben die beiden Macs, verbunden mit einem Ethernetkabel, benötigt, um sämtliche Daten vom einen Rechner zum anderen zu schaufel. Knapp 70GB waren es (ja, meine Platte war fast voll, vieles davon Musik und große, selbstfotografierte Bilder). Ich war erstaunt, wie super die Migration vonstatten ging. Ein paar Prgramme musste ich reaktivieren lassen, aber ansonsten war alles da: Programme, Einstellungen, gespeicherte Passwörter, Bilder, Musik... Alles! Weitere lange Zeit verging, bis mein Home-Verzeichnis verschlüsselt war (neue Sicherheitsanforderung vom Kunden) und der Abend war rum.
Dann kamen ein paar Tage Arbeit und erste Probleme tauchten auf. Als Softwareentwickler habe ich MacPorts installiert, ein Pendant zu dem Port-System unter FreeBSD. Damit kann Software installiert werden, die meist nicht aus der grauen Welt der Konsole hervorschaut, wie z.B. Perl, Apache Webserver, PHP und Konsorten. Genau dieses System muckte nun aber rum. Manche Sachen fehlten und manche verweigerten ihren Dienst aufgrund eines unterschiedlichen Kernels (obwohl beide gleich sind?!). Upgraden war auch nicht möglich, es hagelte nur Fehlermeldungen und nach einiger Zeit der Problemsuche und -behebung war die Hälfte aller Ports doppelt und in unterschiedlichen Versionen installiert. Das Chaos war perfekt!
Nach kurzer Diskussion in der MacPorts Mailingliste wurde mir empfohlen, alles, was mit den MacPorts zu tun hat, neu zu installieren. Und das tue ich nun. Das Verzeichnis /opt wurde gelöscht (bzw. ich habe es erstmal verschoben) und damit auch die MacPorts. XCode wurde neuinstalliert und meine komplette Liste der vorher installierten Ports habe ich an das Installationskommando übergeben, welches momentan noch ziemlich mit der Installation beschäftigt ist.
Ich bin gespannt, ob das was wird. Was das Problem war? Ich bin mir ziemlich sicher, dass es am Migrationsassistenten liegt. Denn auf dem Air habe ich derartige Probleme immer noch nicht, upgraden geht ohne Probleme. Nun kann man dem Migrationsassistenten nicht unbedingt die ganze Schuld in die Schuhe schieben, denn dieser wird wahrscheinlich nicht unbedingt dafür gedacht sein, auch Developer-Apps umzuziehen. Begibt man sich in die Tiefen eines Betriebssystemes, ist man eben auf sich alleine gestellt.
Als ich am Abend vom Kunde nach Hause kam, wurde das Paket natürlich erstmal ausgepackt. Vieles blieb natürlich beim Alten: Alugehäuse, das Betriebssystem in entsprechender Version, etc. Nicht viel neues, aber ich wollte sogleich mal den Migrationsassistenten anschmeissen, um meine Programme und Daten auf den neuen Mac zu transferieren. Es war mein erstes Mal.
Gut 3 Stunden haben die beiden Macs, verbunden mit einem Ethernetkabel, benötigt, um sämtliche Daten vom einen Rechner zum anderen zu schaufel. Knapp 70GB waren es (ja, meine Platte war fast voll, vieles davon Musik und große, selbstfotografierte Bilder). Ich war erstaunt, wie super die Migration vonstatten ging. Ein paar Prgramme musste ich reaktivieren lassen, aber ansonsten war alles da: Programme, Einstellungen, gespeicherte Passwörter, Bilder, Musik... Alles! Weitere lange Zeit verging, bis mein Home-Verzeichnis verschlüsselt war (neue Sicherheitsanforderung vom Kunden) und der Abend war rum.
Dann kamen ein paar Tage Arbeit und erste Probleme tauchten auf. Als Softwareentwickler habe ich MacPorts installiert, ein Pendant zu dem Port-System unter FreeBSD. Damit kann Software installiert werden, die meist nicht aus der grauen Welt der Konsole hervorschaut, wie z.B. Perl, Apache Webserver, PHP und Konsorten. Genau dieses System muckte nun aber rum. Manche Sachen fehlten und manche verweigerten ihren Dienst aufgrund eines unterschiedlichen Kernels (obwohl beide gleich sind?!). Upgraden war auch nicht möglich, es hagelte nur Fehlermeldungen und nach einiger Zeit der Problemsuche und -behebung war die Hälfte aller Ports doppelt und in unterschiedlichen Versionen installiert. Das Chaos war perfekt!
Nach kurzer Diskussion in der MacPorts Mailingliste wurde mir empfohlen, alles, was mit den MacPorts zu tun hat, neu zu installieren. Und das tue ich nun. Das Verzeichnis /opt wurde gelöscht (bzw. ich habe es erstmal verschoben) und damit auch die MacPorts. XCode wurde neuinstalliert und meine komplette Liste der vorher installierten Ports habe ich an das Installationskommando übergeben, welches momentan noch ziemlich mit der Installation beschäftigt ist.
Ich bin gespannt, ob das was wird. Was das Problem war? Ich bin mir ziemlich sicher, dass es am Migrationsassistenten liegt. Denn auf dem Air habe ich derartige Probleme immer noch nicht, upgraden geht ohne Probleme. Nun kann man dem Migrationsassistenten nicht unbedingt die ganze Schuld in die Schuhe schieben, denn dieser wird wahrscheinlich nicht unbedingt dafür gedacht sein, auch Developer-Apps umzuziehen. Begibt man sich in die Tiefen eines Betriebssystemes, ist man eben auf sich alleine gestellt.

Feed dieses Blogs abonnieren
Neueste Kommentare
Philipp on Schade: kein erweiterter Heise-Newsfeed: Hi, ich wü
Ano Nym on Schade: kein erweiterter Heise-Newsfeed: Ich würde
Jonas on Schade: kein erweiterter Heise-Newsfeed: Ich wäre a
mots on Schade: kein erweiterter Heise-Newsfeed: Ich würd d
Bastian on Zwei Jahre ist es her...: Hej, willk
Heiko W. Rupp on PostgreSQL und Volltextsuche: Im letzten
Josef on Schade: kein erweiterter Heise-Newsfeed: Würde mich
Martin on Schade: kein erweiterter Heise-Newsfeed: ich reihe
Guido on Schade: kein erweiterter Heise-Newsfeed: Dich hätte