allan ebdrup bloghoved ny

Ting udviklere siger, når der er en JavaScript fejl.

  • Det var mærkeligt.
  • Virker det i Chrome?
  • Måske er det et spørgsmål om timing?
  • Kører du Internet Explorer?
  • Hvad version af Internet Explorer?
  • Er din Internet Explorer i compatability mode?
  • Er fejlen der for alle brugere?
  • Bruger du en Mac?
  • Måske er det på grund af korrupt data fra serveren?
  • Virker det i Firefox?
  • Har du nogle mærkelige plugins installeret?
  • Har du prøvet at slette din cache?
  • Måske er det et renderings-problem.
  • Det var fandeme mærkeligt.
  • Er Chrome kommet i en ny version?
  • Kører du linux?
  • Virker det i Safari?
  • Er der nogen der har opdateret jQuery?
  • Det virker altså på min computer.
  • Hvorfor bliver det ikke fanget af vores tests?
  • Gad hvide hvor længe den fejl har været der?

Føj selv flere til... :-)

Kommentarer (36)
sortSortér kommentarer
  • Ældste først
  • Nyeste først
  • Bedste først
#5 Allan Ebdrup Blogger

Nej, jeg fattede pointen. Jeg fatter bare ikke at folk gider programmere JavaScript udenfor webbrowseren. Tja, jeg koder kun JavaScript i browseren af nød.

De fleste ting der står på listen, har intet med sproget JavaScript at gøre. De handler om de mange forskeller der er mellem DOM og CSS i alle de mange browsere. Og det faktum, at nogle ikke logger JavaScript fejl i produktion. Selve sproget JavaScript, er ufatteligt ens i de forskellige browsere, så Dart vil ikke hjælpe på de fleste ting på listen.

Men fair nok, at du ikke kan lide JavaScript. Hvad er det du godt kan lide ved Dart?

  • 5
  • 0
#6 David Rechnagel Udsen

De fleste ting der står på listen, har intet med sproget JavaScript at gøre. De handler om de mange forskeller der er mellem DOM og CSS i alle de mange browsere. Og det faktum, at nogle ikke logger JavaScript fejl i produktion. Selve sproget JavaScript, er ufatteligt ens i de forskellige browsere, så Dart vil ikke hjælpe på de fleste ting på listen.

Undskyld, jeg troede med 'JavaScript-fejl' at du mente at browseren rapporterede en fejl, fremfor at en hjemmeside opførte sig uhensigtsmæssigt.

Men fair nok, at du ikke kan lide JavaScript. Hvad er det du godt kan lide ved Dart?

At det - i modsætning til JavaScript - faktisk er udviklet til være et webapp-programmeringsprog.

At Dart ikke har opførelse som disse:

> [] + []  
   
> [] + {}  
[object Object]  
> {} + []  
0  
> {} + {}  
NaN

At Dart faktisk har klasser.

  • 4
  • 2
#7 Allan Ebdrup Blogger

Undskyld, jeg troede med 'JavaScript-fejl' at du mente at browseren rapporterede en fejl, fremfor at en hjemmeside opførte sig uhensigtsmæssigt.

JavaScripten kan ofte kaste en fejl i sin interaktion med Events, DOM'en (og derigennem også css klasser osv.), det er tit her det går galt. Men jeg mente faktisk også fejl i det dynamiske der sker på siden, styret af JavaScript, altså uden en decideret fejl kastet. (men det skal rettes ved at rette i JavaScript-koden)

De fordele du nævner Dart har ifht. JavaScript, har jeg ikke personligt oplevet som problemer i JavaScript. Med tools som JSHint og en moderne IDE som fx WebStorm får man meget hjælp.

Har du praktisk erfaring med at klasserne i Dart har gjort programmeringsopgaver nemmere, eller er det mere et spørgsmål om smag i programmeringssprog?

  • 0
  • 0
#8 David Rechnagel Udsen

JavaScripten kan ofte kaste en fejl i sin interaktion med Events, DOM'en (og derigennem også css klasser osv.), det er tit her det går galt.

CSS-fejl er ikke JavaScript-fejl, men mange af disse fejl skal jo rettes i selve koden (altså JavaScript).

De fordele du nævner Dart har ifht. JavaScript, har jeg ikke personligt oplevet som problemer i JavaScript. Med tools som JSHint og en moderne IDE som fx WebStorm får man meget hjælp.

Jeg bruger ikke selv et IDE, da det ofte forstyrrer mig mere end det gavner, derfor foretrækker jeg et sprog med så lidt bureaukrati som muligt. Så jeg er ikke det store fan af COBOL eller Java eller Delphi. Og måske en smule C med sine header-filer, men det kan jeg tildels forholde mig til.

Men det er trist hvis man ikke kan udvikle et sprog uden for et IDE i en tilfældig editor, uden at skulle blive konstant frustreret eller forvirret af sprogets leksikon, struktur eller andre finurligheder, der er et tydeligt tegn på enten alder (altså flere og flere funktionaliteter (se C++ og Java som eksempler)) eller generelt dårligt design.

Ja ja, jeg ved godt at Dart kommer med et IDE, men det kan sagtens bruges uden, det skal dog - i modsætning til JavaScript - oversættes, og så er der en række handlinger den - efter min mening korrekt - dør på; såsom at lægge et objekt sammen med en liste, fremfor faktisk at gøre det, som JavaScript gør (som du kan i øvrigt producerer et mærkeligt resultat).

Problemerne med JavaScript kan ikke løses med reformation af sproget, det vil være alt for sej en kamp at 'rette' et sprog, i stedet bør man lave et nyt; altså Dart.

Har du praktisk erfaring med at klasserne i Dart har gjort programmeringsopgaver nemmere, eller er det mere et spørgsmål om smag i programmeringssprog?

Jeg kan bare godt lide at det er gennemskueligt hvad ting betyder, og at sproget ikke skal blive så kontekst afhængig, såsom hvad 'this' i JavaScript betyder. Og hele den måde man laver klasser på i JavaScript, det virker mest af alt som et hack, og så begynder jeg at overveje om det nu overhovedet er klogt, at udvikle i det i det hele taget.

Det er jo utroligt morsomt at sprog som JavaScript har fået så meget optimerings-opmærksomhed end noget andet sprog, det kører stadig ikke super hurtigt, fordi det er så skævt bygget sammen til at starte med. Problemet med Webbet (altså HTML og JavaScript) er at browserne tillader webudviklerne at være uduelige. Det gav mening da det var fysikere der bruget webbet, men nu må det være på tide at sætte hårdt mod hårdt. Vi tillader det jo ikke andre steder, vel?

Men men men... JavaScript har lagt noget godt fundament som Dart kan bygge på, tager de gode dele, fjerner de dårlige og retter de mærkelige fejl, og så får man faktisk noget ret lækkert webprogrammering.

Næh, det er faktisk Node.js der skræmmer mig allermest.

  • 2
  • 1
#9 Allan Ebdrup Blogger

CSS-fejl er ikke JavaScript-fejl, men mange af disse fejl skal jo rettes i selve koden (altså JavaScript).

Det er begrænset hvor lang jeg kan lave en overskrift, jeg mener at kontekst fremgik meget klart af listen. Og jeg abonnerer ikke på din definition af en fejl. Når man skriver en unittest, laver man også asserts, og nøjes ikke kun med at teste at der ikke bliver kastet en exception.

og så er der en række handlinger den [Dart] - efter min mening korrekt - dør på; såsom at lægge et objekt sammen med en liste, fremfor faktisk at gøre det, som JavaScript gør.

Som sagt er dette ikke et problem jeg har haft de store issues med. Hvis du ikke ved om dine variable indeholder lister eller objekter, og så oven i købet plusser dem sammen, er problemet nok mere programmøren end programmeringssproget (ikke møntet mod dig). Det hjælper meget at skrive nogle gode tests til sin kode. (null-reference-exception anyone?)

Problemet med Webbet (altså HTML og JavaScript) er at browserne tillader webudviklerne at være uduelige.

Jeg har nu set skod-kode i alle de programmeringssprog jeg nogensinde er stødt på. Jeg tror ikke at Dart på nogen måde vil reducere mængden (eller noget andet programmeringssprog) hvis det kunne det, ville det ellers være fantastisk.

Men men men... JavaScript har lagt noget godt fundament som Dart kan bygge på, tager de gode dele, fjerner de dårlige og retter de mærkelige fejl, og så får man faktisk noget ret lækkert webprogrammering.

Du slipper ikke af med HTML, DOM, events, CSS osv. og det er som regel her problemerne opstår. Jeg ville ønske Google tog fat i noget mere ambitiøst end bare JavaScript, og kiggede på alt i browserene. Så ville de kunne ændre noget. (det ville du se hvis du prøvede Node.js - JavaScript i sin rene form er en fryd at programmere i ;-)

Næh, det er faktisk Node.js der skræmmer mig allermest.

Det forstår jeg simpelthen ikke, hvordan kan Node.js skræmme dig? Du kan vel bare lade være med at bruge det?

  • 0
  • 0
#11 Allan Ebdrup Blogger

Hvorledes adskiller WebStorm sig fra JavaScript understøttelsen i NetBeans og Eclipse?

Jeg vil ikke kalde mig IDE ekspert, Netbeans og Eclipse kan sikker mange af de samme ting som Webstorm. Grundene til at jeg er glad for WebStorm er bland andet at:

  • Den har integration med Node.js
  • Den har indbygget debugger til Node.js,
  • Den har rimeligt god refactoring
  • Den har spellchecker, som er godt både for at stave ting rigtigt, men i et svagt typet sprog som JavaScript fanger det også fejl
  • Den har integration med JSHint
  • Derudover har den en masse kodecheck der sikrer kode-kvalitet
  • På Windows er dens konsol-output som på Linux (Modsat Git-bash, der nogle gange har problemer)
  • Dens run-configurations er super til Node.js
  • Integration med Git
  • Den har en OK intellisense
  • Hvis du dokumenterer dine JavaScript funktioner med JSDoc vil den faktisk lave mere intellisense og typecheck hvor den kan.
  • Osv.

Jeg har ikke selv brugt det, men den har også fået Live editing, der kører hele siden, inklusiv JavaScript, mens du editerer: http://www.youtube.com/watch?v=wCVwdvufTds

  • 0
  • 0
#12 Gustav Nikolaj

Skæg liste. Kan dog ikke nikke genkendende til dem alle sammen; "bruger du en mac?" lyder mest af alt som om udvikleren glemte at bruge utf-8... ;-)

Angående IDE; Jeg er aldrig blevet bidt af at bruge de store altfavnende IDE'er, så mit setup bærer nok også præg af det. Jeg bruger Sublime Text 2 ( http://www.sublimetext.com/2 ), med et par plugins (bla. JSHint), og LiveReload ( http://livereload.com/ ) til "live editing".

Et andet interessant projekt, som jeg endnu ikke selv har fået prøvet af er Yeoman. http://yeoman.io/ Det er dog målrettet mod webapp udvikling og ikke node.js - men jeg syntes nu stadig det fortjente at blive nævnt, nu emnet er JS udvikling ;-)

  • 0
  • 0
#13 Allan Ebdrup Blogger

Skæg liste. Kan dog ikke nikke genkendende til dem alle sammen; "bruger du en mac?" lyder mest af alt som om udvikleren glemte at bruge utf-8... ;-)

Jeg har skam stødt på fejl der kun fandtes på Mac (Safari) og ikke under Windows (Safari). Jeg er også stødt på fejl der kun fandtes på Linux (Chrome), men ikke Windows (Chrome). :-)

På mit gamle arbejde havde vi endda et issue med at når folk havde installeret en bestemt screensaver var der noget det fejlede. Det var så pga en ActiveX i IE, men det var meget mystisk :-)

  • 0
  • 0
#16 Deleted User

Det eneste jeg kan konkludere af kommentarene her, og hvad jeg har set "in the wild" er at meget få tager javascript seriøst, det bruges forkert eller kun til at give eye-candy effekter, fordi javascript er så tilgivende, som fx. også PHP, er det noget værre slamkode der bliver deployet, "rigtige programmøre" kigger ikke på den slags, de copy paster fra noget andet og er forvirrede over mere komplekse scripts der fejler og aner ikke hvad de skal gøre, men vil ikke sige det som det er, så derfor kommer alle disse fantastiske undskyldninger.

  • 0
  • 1
#19 Peter Stricker

Det betragter jeg som en ulempe.

Ah, come on. Objektorienterede sprog når ikke funktionelle sprog til sokkeholderne i elegance. Og jeg går ud fra at det er i sammenligningen med StandardML, Lisp, Haskell og lignende, at du hakker på Darts klasser.

Men konteksten her var vel snarere Darts klassebaserede objektorientering kontra Javascripts prototypebaserede objektorientering. Og der er du vel ikke uenig i Davids præference?

  • 0
  • 0
#20 Gustav Nikolaj

Apropos diskussionen om Javascripts kvaliteter og mangel på samme.

Douglas Crockford har skrevet bogen "Javascript: The Good Parts" som er et must-read for alle der vil udvikle i det sprog. Temaet er hvordan man udnytter sprogets fordele uden at falde i nogen af de mange faldgrupper som også er i det.

Der ligger en præsentation om samme emne, på baggrund af bogen, på youtube ( http://www.youtube.com/watch?v=hQVTIJBZook ), som kan fungere som teaser for bogen.

Så vidt jeg husker fortæller han også lidt om Javascripts historie, som kan tjene som forklaring på de mere uelegante sider af det - refereret frit fra hukommelsen: JavaScript har sit ophav hos NetScape tilbage i midten af 90'erne, og blev udviklet af en ansat ved navn Brendan Eich. Han smed en prototype sammen og viste sin ide til chefen, som sendte det afsted i næste udgivelse... Det vil sige, at Javascript, fra starten af, ikke var andet end et proof-of-concept - så som Douglas Crockford siger i sin bog, så er vi sgu nok ret heldige med udfaldet af det.

Hans pointe gennem bogen og præsentationen er, at Javascript godt kan være smukt og solidt, hvis man lærer hvilke dele man kan bruge, og hvilke dele man skal undgå.

  • 3
  • 0
#21 Troels Henriksen

Jeg synes nu det er meget lødigt at være kritisk overfor Javascript, alene grundet det faktum at det ikke er til synderligt meget hjælp når det gælder om at skrive kvalitetsprogrammel. Naturligvis kan der skrives god kode i Javascript, men sproget er ikke nær så hjælpsomt til at opfylde dette formål som mange andre sprog, hvilket berettiger kritikken.

Man kan naturligvis diskutere hvor produktivt det er at kritisere Javascript. Det er jo ikke fordi vi har meget valg, da det desværre er den eneste mulighed for kodeafvikling i browseren (omend der naturligvis findes oversættere fra andre sprog til Javascript, hvilket har sine egne komplikationer).

  • 1
  • 0
#23 Jacob Nordfalk

Må jeg ikke nok bruge Chrome Frame? SKAL jeg virkelig ødelægge min fine kode som overholder standarderne, SKAL jeg virkelig omdøbe alle mine javascript-variabler så IE ikke blander dem med HTML-elementernes id'er?

Chrome Frame? Mååå jeg ikke nok?

Det gør ikke ondt, brugerne opdager næsten ikke de kommer forbi forbi http://google.com/chromeframe, og de fleste har nok allerede været der?

  • 5
  • 1
#24 Lars Tørnes Hansen

off-topic, for 8xx

Set på GitHub:

RFC for the 7XX Range of HTTP Status codes - Developer Errors

At Railscamp X it became clear there is a gap in the current HTTP specification. There are many ways for a developer to screw up their implementation, but no code to share the nature of the error with the end user. We humbly suggest the following status codes are included in the HTTP spec in the 7XX range.

https://github.com/joho/7XX-rfc

fx. i "71X - Novelty Implementations" finder vi "719 - I am not a teapot"

Civilisational HTTP Error Codes

To be truly useful, HTTP error codes need to take into account possible future issues. We therefore propose the 8xx range of codes for errors pertaining to the civilisation in which the server is operating. Inspired by https://github.com/joho/7XX-rfc. Forks and pull requests encouraged!

https://github.com/AMEE/8XX-rfc

fx 80x ‘Temporary’ failures (but I’d wait a while before re-requesting) - 801 BLACKOUT - 802 NUCLEAR WINTER - 803 GULF STREAM ERROR - 804 DATA CENTRE UNDERWATER etc. og 86x Geology - 861 YELLOWSTONE CALDERA

  • 0
  • 0
#26 Deleted User

Alle script sprog, alle fortolkede sprog giver mulighed for at udnytte fortolkeren og derved skrive dårlig kode. Prototypede sprog som javasript giver endnu flere muligheder for at skrive dårlig kode.

Problemet er ikke sproget eller dets muligheder, men manglende uddannelse og især manglende seriøsitet. Det tages for givet at programmøre der kan skrive i stærkt-typede sprog automatisk må kunne skrive god markup og kode i prototypede sprog og fordi den kode der normal skal skrives er noget hurtigt kode til rent eye-candy, tages der ikke hånd om det på samme måde som der tages hånd om business logic kode i backend, heller ikke når der kommer mere og mere javascript kode på og det til sidst bkliver en rich-application. Jeg har heller ikke hørt om uddannelser der underviser i javascript eller prototypede sprog og hvad de kan?

  • 0
  • 0
#27 Deleted User

Undskyld mig, men er browseren som teknologi ikke dybt forældet? Det svarer til, at man stadig skulle bruge en kommandolinie til at starte programmer på sin PC.

Jeg kan ikke huske, hvornår jeg sidst besøgte en hjemmeside, som var en fryd at bruge (bortset fra Google). Facebook har som eksempel noget af det værste interface, jeg mindes. De store avisers hjemmesider er frygtelige at betjene. Til tider virker teknikken som om, man bygger et slot på en mose. Tiden er da løbet fra det her misk-mask... :)

  • 1
  • 1
#28 Peter Müller

Du har måske ikke lagt mærke til at browserne løbende har fornyet sig i de sidste ti år, og faktisk har haft en ret stor konkurrence om at være bedst og hurtigst, hvormed de har rykket platformen voldsomt til det bedre?

Og hvordan har din rant om grimme hjemmesider nogensinde noget med browsere at gøre? Det drjer sig i højere grad om designere og webudviklere som ikke udnytter mediet korrekt.

Men hvis du virkelig mener det er forældet så hører jeg gerne dit åbenlyse alternativ.

Ellers godt trollet.

  • 1
  • 1
#29 Deleted User

Der er ingen kommentarer omkring grimme hjemmesider i mit indlæg. Min indgangsvinkel er brugeroplevelse. www.google.com er vel ikke speciel køn, men er nem og overskuelig at bruge. Men hvorfor er der for eksempel stadig en "http" adresselinie i browsere? Set fra min stol, så er det i vore dage kun en information til debugging (og til at afgøre om man er på en suspekt hjemmeside, men det burde i virkeligheden ikke være nødvendigt).

Det åbenlyse alternativ behøver jeg ikke opfinde, det har Apple allerede fundet på. Desværre er alternativet også ved at blive ødelagt af annoncer og reklamer, hvorfor tænker man dem ikke bedre ind i vores grænseflade til internettet? En visualisering af internettet i 3D kunne være et bud, men det er måske for meget sci-fi... ;)

Afslutningsvis, så har browsere de sidste 10 år været same-same set med mine brugerbriller. Hvad hjælper det, at en browser er hurtig, når en avishjemmeside er fyldt med reklamer osv., som forringer responsen? Browserne er muligvis blevet teknisk bedre, men hjemmesiderne ringere.

Måske er der for mange frihedsgrader for webudviklere i moderne browsere?

  • 0
  • 1
#30 Peter Müller

Jeg hører gerne et navn på det åbenlyse alternativ som Apple angiveligt har fundet til at erstatte browseren.

Internettet i 3D er skam ikke fremtidssnak. Det prøvede blandt mange andre TDC i 90'erne med Opasia. Du kan jo prøve at slå op i historiebøgerne hvor godt det gik. 3D hjælper ikke automatisk på informationsarkitektur. Det problem kan kun løses af folk med viden indenfor feltet. Der mangler håndværkere, ikke teknologi.

  • 1
  • 0
#31 Morten Sjøgren

Det åbnelyse alternativ som du mener Apple har opfundet, er så åbenlyst at jeg ikke har den fjerneste ide om, hvad du mener det er.

Du er godt klar over at hverken Google Chrome eller Firefox viser "http", ikke?

Kan vi klantre teknologi, for dårlig brug af denne teknologi? Jeg oplever normalt ikke det du nævner med reklamer, de få sider jeg har set med det er ikke sider jeg normalt ville bruge som fx. eb.dk eller bt.dk.

Jeg er slet ikke enig i at brugeroplevelsen er den samme som for ti år siden. Jeg oplever sider som meget bedre skrevet end for ti år siden; Jeg ser sites der bruger AJAX, så man ikke skal skifte side ved det mindste. Jeg ser sider der opfører som (næsten) ens i alle mine browsere, i modsætning til for ti år siden, hvor mange sider kun virkede i Internet Explorer. Min oplevelse af browserne er også langt bedre end tidligere. User-Scripts, synkronisering af brugerindstillinger, tabs, extensions osv.

  • 0
  • 1
#32 Deleted User

IPhone, Android...

Enig mht. håndværk, men det kræver også det rigtige værktøj.

PS. Nu er det ikke teksten "http://", jeg har et problem med, men selve adresselinien. Den er der vel stadig i Chrome eller Firefox?

PPS. Fordi noget var en fiasko for 20 år siden, er ikke ensbetydende med, at det ikke kan blive en succes. Omkring år 2000 kunne man allerede gå på internettet fra en mobiltelefon med en browser. Men det var ikke smart dengang.

(ja, det er apps og en browser er en fin app til at søge efter information. Men de fede oplevelser kommer først, når applikationen udnytter enhedens egenskaber mht. input, processering og output. Hvor fedt er det egentlig at bruge hjemmesider i en browser med touch? Steve Jobs så, at det ikke var fedt og derfor definerede han og Apple apps)

  • 1
  • 0
Log ind eller Opret konto for at kommentere