Black Friday = Pricewatch Bekijk onze selectie van de beste Black Friday-deals en voorkom een miskoop.

[WEB] Welke newlines in source en output

Pagina: 1
Acties:

  • frickY
  • Registratie: Juli 2001
  • Laatst online: 14-11 15:19
Goed. Dit topic is misschien een beetje mierenneuken, maar ik ben nu eenmaal perfectionistisch en kan geen keuze maken; Welke newlines dien je te gebruiken bij het ontwikkelen voor het web. Een enkele LineFeed (ASCII 0x0A) of een Carriage Return én een LineFeed (ASCII 0x0D + ASCII 0x0A) ?

In mijn geval ontwikkel ik mijn PHP code op een Windows machine. Die PHP-code wordt gehost op een Unix server, en serveert output aan Unix en PC gebruikers.
Windows ziet CR+LF als regeleinde. Unix gebruikt alleen de LF.

In de IDE welke ik gebruik, Zend Studio, kan ik kiezen welke regeleinde ik wil dat gebruikt worden wanneer ik op de enter druk. Deze heeft altijd op "Unix style (LF)" gestaan met de gedachte dat de files op een Unix-systeem geparsed moeten worden door de server software.

De HTML-specificaties laten vrij welk teken moet worden gebruikt om het einde van een regel aan te geven. Deze definiëert wel dat browsers zowel CR+LF als een enkele LF moet interpreteren als regeleinde. Voor dat betreft maakt het dus niet veel uit.
In de specificaties van de gerelateerde protocollen HTTP, SGML en MIME wordt een regeleinde wel hard gedefiniëerd, namelijk als CR+LF.

Dat gezegd lijkt het mij het netst als de volledige HTML (of XML) output CR+LF gebruikt.
Dat conflicteert echter weer met mijn mening dat er LF-regeleindes gebruikt moeten worden omdat de code op een Unix systeem draait.

Ik ben nu al een poosje in dubio, en het feit dat beide mogelijkheden of zelfs een mix kris-kras door elkaar geen enkel praktisch probleem geeft en het dus eigenlijk een nutteloze kwestie maakt, maakt het niet beter :p

Heeft iemand hier wel eens bij stil gestaan en welke regeleindes gebruiken jullie, en waarom?

Mocht ik ontwikkelen en hosten vanaf Windows omgevingen zou ik ongetwijfeld voor CR+LF hebben gekozen, ook omdat het merendeel van de bezoekers een Windows systeem gebruikt en alles dus 1 op 1 klopt

[ Voor 5% gewijzigd door frickY op 16-01-2009 15:08 ]


  • kunnen
  • Registratie: Februari 2004
  • Niet online
CR+LF vanzelfsprekend, dat werkt perfect op een linux systeem en dan is je code ook in elke editor leesbaar op een windows systeem.

  • Kalentum
  • Registratie: Juni 2004
  • Laatst online: 21:23
Het maakt niet zoveel uit zolang je het maar consequent doet. LF heeft mijn voorkeur omdat het per regeleinde een nutteloze CR scheelt. Waarom zou je twee tekens gebruiken als 1 genoeg is?

  • frickY
  • Registratie: Juli 2001
  • Laatst online: 14-11 15:19
Omdat de HTTP, SGML en MIME specificaties die 2 tekens specificeren. En omdat eenvoudige viewers op het Windows platform, zoals Kladblok, niet met alleen de LF overweg kunnen.

Ben het er overigens volledig mee eens dat het niet veel uitmaakt welke je kiest als je het maar consequent doet. Precies dat is ook de reden geweest dat ik deze vraag aanliep.
Ik zag bestanden met CR+LF's maar vanuit PHP werd output gegenereerd met
PHP:
1
echo "Regel\n";

Waardoor de uiteindelijke output een mix van LF en CR+LF was.

Kiezen voor CR+LF zou betekenen dat bovenstaande voortaan geschreven zou moeten worden als
PHP:
1
echo "Regel\r\n";

[ Voor 10% gewijzigd door frickY op 17-01-2009 15:44 ]


  • Sebazzz
  • Registratie: September 2006
  • Laatst online: 19:51

Sebazzz

3dp

ThomasB schreef op vrijdag 16 januari 2009 @ 15:25:
dan is je code ook in elke editor leesbaar op een windows systeem.
Daar heeft alleen kladblok last van.

[Te koop: 3D printers] [Website] Agile tools: [Return: retrospectives] [Pokertime: planning poker]


  • KnEuTeR
  • Registratie: Mei 2000
  • Laatst online: 24-02-2024

KnEuTeR

iedereen heeft een handelsmerk

Ten eerste, spaties hebben weinig tot geen invloed op de betekenis van je document. Hiermee bedoel ik, door whitespace toe te voegen zal de webpagina er niet anders uit komen te zien voor de gebruiker. Spaties kunnen alleen gebruikt worden tussen tekst, om woorden van elkaar te scheiden. Meerdere spaties hebben geen effect. Hiervoor moet de entity   worden gebruikt. Verder worden spaties gebruikt om bijvoorbeeld argumenten van een html element te kunnen scheiden.

Tekens voor regel eindes hebben zelfs HELEMAAL GEEN betekenis in hoe de pagina eruit zien. Dat is nou net de reden waarom het <br> element is verzonnen.

Eigenlijk kan je dus net zo goed alles op 1 regel zetten. Maar dit programmeert niet lekker, en als een gebruiker geinteresseerd is in de broncode, zal hij het lastig kunnen volgen. Alle code op 1 pagina zie je vaak bij Automatisch gegenereerde pagina's. Het script interesseerd zich immers ook niet voor de layout van de code.

Mensen daarintegen vinden het wel belangrijk als ze de html code willen lezen, dat het er "mooi" uitziet. Daarom staan de html en xhtml spcificaties whitespace in het document toe, in alle mogelijk combinaties. CR, LF of CR & LF.

In windows is het gebruikelijk CR & LF te gebruiken
In unix is het gebruikelijk LF te gebruiken
In mac is het gebruikelijk CR te gebruiken

dit zijn slechts conventies.

Nou ligt het er ook nog aan welk OS de "maker" gebruikt, en welk OS de "bekijker" gebruikt.

stel ik maak een webpagina op een linux computer, en mensen met een linux computer bekijken het met hun browser, dan kan je LF gebruiken en niemand zal ooit klagen. Maar als een windows gebruiker het bekijken en hij bekijkt de source in notepad, (notepad kan niet omgaan met enkel LF) dan ziet hij gekke blokjes tussen de tekst in. De browser snapt het verder prima.

Maar er zijn natuurlijk veel meer combinaties van kijkers/schrijvers mogelijk.

dan nog jou quote:
Dat conflicteert echter weer met mijn mening dat er LF-regeleindes gebruikt moeten worden omdat de code op een Unix systeem draait.
het STAAT op een linux computer (dus als je het op die pc wilt bewerken wil je LF gebruiken), maar de gebruiker die de webpagina te ZIEN krijgt heeft een windows computer, dus verwacht juist weer CR & LF te ontvangen. Zo moet je het een beetje zien.

Whitespace kan het beste worden omschreven als: "kan gebruikt worden voor mensen om het document overzichtelijker te maken, maar een computer slaat alle whitespace zonder betekenis klakkeloos over"

het ligt er natuurlijk ook aan volgens welke spcificatie jij jou pagina schrijft, dit kan je ook aangeven bovenaan het document. Je kan de spcificaties van html, xhtml erbij pakken. (xhtml gebruik voor whitespaces weer de xml specificatie)

Botem line: ik zou CR & LF gebruiken, dit is het breedst geaccepteerd.

[ Voor 4% gewijzigd door KnEuTeR op 17-01-2009 16:11 ]

Computers ain't that smart, Whatever man built could be taken apart


  • Remus
  • Registratie: Juli 2000
  • Laatst online: 15-08-2021
frickY schreef op vrijdag 16 januari 2009 @ 15:05:
..
In de specificaties van de gerelateerde protocollen HTTP, SGML en MIME wordt een regeleinde wel hard gedefiniëerd, namelijk als CR+LF.

Dat gezegd lijkt het mij het netst als de volledige HTML (of XML) output CR+LF gebruikt.
Die definitie voor het gebruik van CR+LF voor HTTP en MIME geldt alleen voor de regeleindes van headers en voor de witregel tussen de headers en de body. Wat je in de body doet moet je zelf weten, zeker bij HTML aangezien whitespace (en zeker linebreaks) daar niet significant is.

  • Kalentum
  • Registratie: Juni 2004
  • Laatst online: 21:23
Misschien ook wel relevant: als je FTP gebruikt en je php bestanden als ASCII upload converteert de FTP server (of de client, dat weet ik niet) de newlines naar het op het doel OS gebruikelijke formaat. Ook versiebeheersystemen hebben mogelijkheden om die conversie automatisch te doen. In die gevallen werk je dus met de conventie van het OS waar je op werkt (want op de Mac werkte het ook weer anders).
Pagina: 1