[alg] Slechtste programmeervoorbeelden deel 4 Vorige deel Overzicht Laatste deel

Dit topic is onderdeel van een reeks. Ga naar het meest recente topic in deze reeks.

Pagina: 1 ... 8 ... 103 Laatste
Acties:
  • 993.545 views

Acties:
  • 0 Henk 'm!

  • CodeCaster
  • Registratie: Juni 2003
  • Niet online

CodeCaster

Can I get uhm...

Weer een pareltje gevonden op php.net, toen ik op zoek was naar hoe je de bestandsgrootte opvraagt. Komt een knakker met deze code:
PHP:
1
2
// Another way for remote files
strlen(join('',file('http://www.example.com/)));

Afgezien van de missende apostrof: wat doet file? "Reads an entire file into an array." :D

Echt...

[ Voor 5% gewijzigd door CodeCaster op 20-03-2009 11:21 ]

https://oneerlijkewoz.nl
Op papier is hij aan het tekenen, maar in de praktijk...


Acties:
  • 0 Henk 'm!

  • YopY
  • Registratie: September 2003
  • Laatst online: 13-07 01:14
Het werkt wel, moet je toegeven :+.

Note to self: Altijd unit testje schrijven bij een nieuwe constructor, |:( :

code:
1
2
3
4
    public Encoder(final ConsumerConfig config, final AccessToken token) {
        this.consumerSecret = config.getApiSecret();
        this.tokenSecret = config.getApiSecret();
    }


Eenmaal raden waarom ik 401 responses kreeg.

Acties:
  • 0 Henk 'm!

  • Matis
  • Registratie: Januari 2007
  • Laatst online: 17:58

Matis

Rubber Rocket

CodeCaster schreef op vrijdag 20 maart 2009 @ 11:21:
Weer een pareltje gevonden op php.net, toen ik op zoek was naar hoe je de bestandsgrootte opvraagt. Komt een knakker met deze code:
PHP:
1
2
// Another way for remote files
strlen(join('',file('http://www.example.com/)));

Afgezien van de missende apostrof: wat doet file? "Reads an entire file into an array." :D

Echt...
Wat een kerel;
PHP:
1
int filesize  ( string $filename  )

Had ie nog nooit van gehoord denk ik :p

If money talks then I'm a mime
If time is money then I'm out of time


Acties:
  • 0 Henk 'm!

  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
toaomatis schreef op vrijdag 20 maart 2009 @ 11:39:
[...]


Wat een kerel;
PHP:
1
int filesize  ( string $filename  )

Had ie nog nooit van gehoord denk ik :p
Ik denk het wel, want dat is immers waar hij die reactie plaatst: http://nl.php.net/manual/en/function.filesize.php#85768

Het gaat er over om het bij remote files te doen. filesize ondersteund dat blijkbaar niet.

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”


Acties:
  • 0 Henk 'm!

  • Matis
  • Registratie: Januari 2007
  • Laatst online: 17:58

Matis

Rubber Rocket

Woy schreef op vrijdag 20 maart 2009 @ 11:41:
[...]

Ik denk het wel, want dat is immers waar hij die reactie plaatst: http://nl.php.net/manual/en/function.filesize.php#85768

Het gaat er over om het bij remote files te doen. filesize ondersteund dat blijkbaar niet.
Met het schaamrood op de kaken verlaat toaomatis de thread.

Dat wist ik dan weer niet. :$

If money talks then I'm a mime
If time is money then I'm out of time


Acties:
  • 0 Henk 'm!

  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
YopY schreef op vrijdag 20 maart 2009 @ 11:35:
[...]


Het werkt wel, moet je toegeven :+.

Note to self: Altijd unit testje schrijven bij een nieuwe constructor, |:( :

code:
1
2
3
4
    public Encoder(final ConsumerConfig config, final AccessToken token) {
        this.consumerSecret = config.getApiSecret();
        this.tokenSecret = config.getApiSecret();
    }


Eenmaal raden waarom ik 401 responses kreeg.
Java:
1
2
3
4
public Encoder(final ConsumerConfig config, final AccessToken token) {
    this.consumerSecret = config.getApiSecret();
    this.tokenSecret = token.getApiSecret();
}

werkt waarschijnlijk idd beter ;)

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”


Acties:
  • 0 Henk 'm!

  • YopY
  • Registratie: September 2003
  • Laatst online: 13-07 01:14
Woy schreef op vrijdag 20 maart 2009 @ 11:44:
[...]

Java:
1
2
3
4
public Encoder(final ConsumerConfig config, final AccessToken token) {
    this.consumerSecret = config.getApiSecret();
    this.tokenSecret = token.getApiSecret();
}

werkt waarschijnlijk idd beter ;)
Kwam ik ook (na veel zoeken) achter, xD. Die van token is echter getTokenSecret(), maar maakt niet uit.

Acties:
  • 0 Henk 'm!

  • riezebosch
  • Registratie: Oktober 2001
  • Laatst online: 10-09 11:15
Woy schreef op vrijdag 20 maart 2009 @ 11:44:
[...]

Java:
1
2
3
4
public Encoder(final ConsumerConfig config, final AccessToken token) {
    this.consumerSecret = config.getApiSecret();
    this.tokenSecret = token.getApiSecret();
}

werkt waarschijnlijk idd beter ;)
Ik heb 'm in WinMerge moeten gooien om het verschil te zien :X

Canon EOS 400D + 18-55mm F3.5-5.6 + 50mm F1.8 II + 24-105 F4L + 430EX Speedlite + Crumpler Pretty Boy Back Pack


Acties:
  • 0 Henk 'm!

  • doeternietoe
  • Registratie: November 2004
  • Laatst online: 12-09 23:09
Woy schreef op vrijdag 20 maart 2009 @ 11:41:
[...]

Ik denk het wel, want dat is immers waar hij die reactie plaatst: http://nl.php.net/manual/en/function.filesize.php#85768

Het gaat er over om het bij remote files te doen. filesize ondersteund dat blijkbaar niet.
Uiteraard, maar er is nog iets aan de hand... Wat is er mis met file_get_contents( [url] ) ipv join('',file( [url )) ?

Acties:
  • 0 Henk 'm!

  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
doeternietoe schreef op vrijdag 20 maart 2009 @ 12:01:
[...]

Uiteraard, maar er is nog iets aan de hand... Wat is er mis met file_get_contents( [url] ) ipv join('',file( [url )) ?
Ik zeg ook nergens dat het een mooi stukje code is, maar weerleg alleen dat de poster niet van filesize afweet ( Of het moet echt een grote WTF zijn ;) ).

Overigens zou ik ( afhankelijk van het doel ) gewoon een http HEAD/GET request doen en de headers gebruiken om de filesize te bepalen, dan hoef je tenminste niet de hele file te downloaden.

[ Voor 19% gewijzigd door Woy op 20-03-2009 12:14 ]

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”


Acties:
  • 0 Henk 'm!

  • jip_86
  • Registratie: Juli 2004
  • Laatst online: 21:36
C#:
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
private void ReadXYZRecord(XmlNode recordNode, out int x, out int y, out int z)
{
    x = -1;
    y = -1;
    z = -1;
    XmlNode xyz = recordNode;

    if (xyz.HasChildNodes)
    {
        xyz = xyz.FirstChild;
    }

    foreach (XmlNode xyznode in recordNode.ChildNodes)
    {
        if (xyznode.Name.Equals("x", StringComparison.CurrentCultureIgnoreCase))
        {
            x = Convert.ToInt32(xyznode.Value);
        }

        if (xyznode.Name.Equals("y", StringComparison.CurrentCultureIgnoreCase))
        {
            y = Convert.ToInt32(xyznode.Value);
        }

        if (xyznode.Name.Equals("z", StringComparison.CurrentCultureIgnoreCase))
        {
            z = Convert.ToInt32(xyznode.Value);
        }

        //Als alle 3 de variabelen gevuld zijn, stop de loop
        if (x != -1 && y != -1 && z != -1)
        {
            recordNode = null;
        }
    }
}


Bovenstaande is gebruikt door een projectlid om een xml node met drie childnodes in te lezen.
XML:
1
2
3
4
5
<record>
  <x>[x coordinaat]</x>
  <y>[y coordinaat]</y>
  <z>[z coordinaat]</z>
</record>


Bij inlezen is al gevalideerd dat het deze node was, volgens de specificatie weet je dan dat bovenstaande xml volgt. Een foreach stopt zelf wel, en dan kan ook -1 als z voorkomen :X Iemand tips hoe hard ik moet gaan schoppen ?

Acties:
  • 0 Henk 'm!

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

Sebazzz

3dp

Zeker nog nooit van break; gehoord. Vreemd, want dit statement komt in praktisch alle programmeertalen voor (behalve de functionele (?)).

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


Acties:
  • 0 Henk 'm!

  • jip_86
  • Registratie: Juli 2004
  • Laatst online: 21:36
Sebazzz schreef op zondag 22 maart 2009 @ 22:21:
Zeker nog nooit van break; gehoord. Vreemd, want dit statement komt in praktisch alle programmeertalen voor (behalve de functionele (?)).
Ik snap het werkelijk niet.

Ik heb in een prototype de hele uitwerking voor ze gedaan. Ze vertikken het werkelijk er een moment naar te kijken. Running time iets van 0.3 seconden voor het inlezen, nu 42 seconden |:(

Acties:
  • 0 Henk 'm!

Verwijderd

Nobody likes a smartass, ook al heeft die smartass gelijk.

Dat zal de reden zijn dat ze vertikken ernaar te kijken lijkt me zo.

Acties:
  • 0 Henk 'm!

  • jip_86
  • Registratie: Juli 2004
  • Laatst online: 21:36
Verwijderd schreef op zondag 22 maart 2009 @ 23:07:
Nobody likes a smartass, ook al heeft die smartass gelijk.

Dat zal de reden zijn dat ze vertikken ernaar te kijken lijkt me zo.
Dat is ook de reden dat ik ze maar wat aan laat modderen. Maar de tijd begint wel te dringen zo.

Acties:
  • 0 Henk 'm!

  • roy-t
  • Registratie: Oktober 2004
  • Laatst online: 08-09 11:33
jip_86 schreef op zondag 22 maart 2009 @ 22:26:
[...]

Ik snap het werkelijk niet.

Ik heb in een prototype de hele uitwerking voor ze gedaan. Ze vertikken het werkelijk er een moment naar te kijken. Running time iets van 0.3 seconden voor het inlezen, nu 42 seconden |:(
42 seconden om een XML file in te lezen? :D Ik vind dat de rest van de code hier ook gepost moet worden :D

~ Mijn prog blog!


Acties:
  • 0 Henk 'm!

  • .Gertjan.
  • Registratie: September 2006
  • Laatst online: 17-02 21:20

.Gertjan.

Owl!

jip_86 schreef op zondag 22 maart 2009 @ 22:08:
C#:
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
private void ReadXYZRecord(XmlNode recordNode, out int x, out int y, out int z)
{
    x = -1;
    y = -1;
    z = -1;
    XmlNode xyz = recordNode;

    if (xyz.HasChildNodes)
    {
        xyz = xyz.FirstChild;
    }

    foreach (XmlNode xyznode in recordNode.ChildNodes)
    {
        if (xyznode.Name.Equals("x", StringComparison.CurrentCultureIgnoreCase))
        {
            x = Convert.ToInt32(xyznode.Value);
        }

        if (xyznode.Name.Equals("y", StringComparison.CurrentCultureIgnoreCase))
        {
            y = Convert.ToInt32(xyznode.Value);
        }

        if (xyznode.Name.Equals("z", StringComparison.CurrentCultureIgnoreCase))
        {
            z = Convert.ToInt32(xyznode.Value);
        }

        //Als alle 3 de variabelen gevuld zijn, stop de loop
        if (x != -1 && y != -1 && z != -1)
        {
            recordNode = null;
        }
    }
}


Bovenstaande is gebruikt door een projectlid om een xml node met drie childnodes in te lezen.
XML:
1
2
3
4
5
<record>
  <x>[x coordinaat]</x>
  <y>[y coordinaat]</y>
  <z>[z coordinaat]</z>
</record>


Bij inlezen is al gevalideerd dat het deze node was, volgens de specificatie weet je dan dat bovenstaande xml volgt. Een foreach stopt zelf wel, en dan kan ook -1 als z voorkomen :X Iemand tips hoe hard ik moet gaan schoppen ?
Klapt die code er niet uit als je recordNode op null zet? De statement
C#:
1
XmlNode xyznode in recordNode.ChildNodes
zou moeten crashen op het moment dat recordNode null is (met een mooie null reference error).

Sowieso is het gebruiken van -1 als "bijzondere" waarde vrij smerig (getallen met bijzondere dingen vullen is altijd vies, maar goed ik deed het vroeger ook, id -404 stond voor "Item niet gevonden" :+. Gebruik dan een boolean om aan te geven dat ze geset zijn (dus bij ieder coördinaat een boolean die aangeeft of hij geset is) of gebruik gewoon nullables (in mijn ogen samen met generics de beste toevoeging in .NET 2.0 d:)b ).

The #1 programmer excuse for legitimately slacking off: "My code's compiling"
Firesphere: Sommige mensen verdienen gewoon een High Five. In the Face. With a chair.


Acties:
  • 0 Henk 'm!

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

Sebazzz

3dp

.Gertjan. schreef op maandag 23 maart 2009 @ 08:57:
[...]


Klapt die code er niet uit als je recordNode op null zet? De statement
C#:
1
XmlNode xyznode in recordNode.ChildNodes
zou moeten crashen op het moment dat recordNode null is (met een mooie null reference error).

Sowieso is het gebruiken van -1 als "bijzondere" waarde vrij smerig (getallen met bijzondere dingen vullen is altijd vies, maar goed ik deed het vroeger ook, id -404 stond voor "Item niet gevonden" :+. Gebruik dan een boolean om aan te geven dat ze geset zijn (dus bij ieder coördinaat een boolean die aangeeft of hij geset is) of gebruik gewoon nullables (in mijn ogen samen met generics de beste toevoeging in .NET 2.0 d:)b ).
Zit waarschijnlijk wel een mooie try/catch constructie achter in de calling-code :P

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


Acties:
  • 0 Henk 'm!

  • jip_86
  • Registratie: Juli 2004
  • Laatst online: 21:36
roy-t schreef op maandag 23 maart 2009 @ 08:52:
[...]


42 seconden om een XML file in te lezen? :D Ik vind dat de rest van de code hier ook gepost moet worden :D
Zal vanavond wel even kijken, kreeg daarna nog een revisie binnen die wel weer ok was, maar nog niet werkte.

@ .Gertjan.: Statement werkt helemaal niet. Na 3 keer, x, y en z zijn de childnodes op en stopt de foreach gewoon.

Acties:
  • 0 Henk 'm!

  • CodeCaster
  • Registratie: Juni 2003
  • Niet online

CodeCaster

Can I get uhm...

Verwijderd schreef op zondag 22 maart 2009 @ 23:07:
Nobody likes a smartass, ook al heeft die smartass gelijk.

Dat zal de reden zijn dat ze vertikken ernaar te kijken lijkt me zo.
Then don't be a smartass.

Als je weet dat je gelijk hebt kun je twee dingen doen: proberen gelijk te krijgen of de anderen dom laten. En dat proberen is een kunst op zich. Zeg je "je zou beter (een boek kunnen lezen over design patterns|de methode met CamelCase en in een Engelse naam geven|nog eens naar je UML kijken), want (?<reden>.*)", of zeg je "Jezus, dit is dom, dat gaat natuurlijk nooit werken!"... ;)

Of op z'n minst gewoon vragen waarom ze het op die manier hebben gedaan, om er even over te kunnen discussiëren of overleggen, en wellicht aanwijzingen geven over hoe het volgens jou beter kan en waarom.

[ Voor 13% gewijzigd door CodeCaster op 23-03-2009 09:33 ]

https://oneerlijkewoz.nl
Op papier is hij aan het tekenen, maar in de praktijk...


Acties:
  • 0 Henk 'm!

  • HawVer
  • Registratie: Februari 2002
  • Laatst online: 13-09 16:51
jip_86 schreef op zondag 22 maart 2009 @ 22:08:
C#:
1
[...]


Bovenstaande is gebruikt door een projectlid om een xml node met drie childnodes in te lezen.
XML:
1
2
3
4
5
<record>
  <x>[x coordinaat]</x>
  <y>[y coordinaat]</y>
  <z>[z coordinaat]</z>
</record>


Bij inlezen is al gevalideerd dat het deze node was, volgens de specificatie weet je dan dat bovenstaande xml volgt. Een foreach stopt zelf wel, en dan kan ook -1 als z voorkomen :X Iemand tips hoe hard ik moet gaan schoppen ?
Werkelijk één grote pleurisbende. :'( Dit stukje source heeft het grootste aantal fouten per regel dat ik ooit gezien heb. Ik zal er maar niet inhoudelijk op in gaan. :P

http://hawvie.deviantart.com/


Acties:
  • 0 Henk 'm!

  • raptorix
  • Registratie: Februari 2000
  • Laatst online: 17-02-2022
De lelijkste code die ik een tijdje tegen kwam was van een prutser die access (db) specifieke constructies had gebruikt terwijl ie toch echt wist dat we Sqlserver gebruikten, uiteindelijk nog viezer gehackt door alle tables die ze gemaakt hadden te "emuleren" in views zodat ik niet in hun ranscode hoefde te kloten, de applicatie was toch maar voor zeer korte tijd in gebruik dus ik kon er niet echt wakker om liggen ;)

Acties:
  • 0 Henk 'm!

  • Haan
  • Registratie: Februari 2004
  • Laatst online: 14-09 07:13

Haan

dotnetter

HawVer schreef op maandag 23 maart 2009 @ 10:29:
[...]

Werkelijk één grote pleurisbende. :'( Dit stukje source heeft het grootste aantal fouten per regel dat ik ooit gezien heb. Ik zal er maar niet inhoudelijk op in gaan. :P
Ach, deze regel is opzich wel netjes als je strings vergelijkt ;)
C#:
1
if (xyznode.Name.Equals("x", StringComparison.CurrentCultureIgnoreCase))

Kater? Eerst water, de rest komt later


Acties:
  • 0 Henk 'm!

  • Johnny
  • Registratie: December 2001
  • Laatst online: 17:26

Johnny

ondergewaardeerde internetguru

doeternietoe schreef op vrijdag 20 maart 2009 @ 12:01:
[...]

Uiteraard, maar er is nog iets aan de hand... Wat is er mis met file_get_contents( [url] ) ipv join('',file( [url )) ?
Het is wel beter, maar mij lijkt het nog handiger om in plaats van het hele bestand te downloaden enkel een HEAD-request te doen (met cURL) en dan de Content-Length header uitlezen, wat waarschijnlijk een stuk sneller werkt.

Aan de inhoud van de bovenstaande tekst kunnen geen rechten worden ontleend, tenzij dit expliciet in dit bericht is verwoord.


Acties:
  • 0 Henk 'm!

  • .Gertjan.
  • Registratie: September 2006
  • Laatst online: 17-02 21:20

.Gertjan.

Owl!

Haan schreef op maandag 23 maart 2009 @ 10:45:
[...]

Ach, deze regel is opzich wel netjes als je strings vergelijkt ;)
C#:
1
if (xyznode.Name.Equals("x", StringComparison.CurrentCultureIgnoreCase))
Kun je ook weer over discussiëren. XML is case sensitive.
XML:
1
<x></X>
geeft volgens mij een parsing error.

Als je een goede XSD/DTD op je document hebt liggen dan is de X altijd op de zelfde manier geschreven (of je krijgt validatie errors) en is deze check een beetje overbodig.

En volgens mij kan je ook sneller op zoek gaan naar de node in het document in plaats van er door alle nodes te wandelen.

The #1 programmer excuse for legitimately slacking off: "My code's compiling"
Firesphere: Sommige mensen verdienen gewoon een High Five. In the Face. With a chair.


Acties:
  • 0 Henk 'm!

  • jip_86
  • Registratie: Juli 2004
  • Laatst online: 21:36
Haan schreef op maandag 23 maart 2009 @ 10:45:
[...]

Ach, deze regel is opzich wel netjes als je strings vergelijkt ;)
C#:
1
if (xyznode.Name.Equals("x", StringComparison.CurrentCultureIgnoreCase))
Die zullen ze wel van mij genomen hebben, want die zat in mijn prototype.

Acties:
  • 0 Henk 'm!

  • Patriot
  • Registratie: December 2004
  • Laatst online: 20:57

Patriot

Fulltime #whatpulsert

Johnny schreef op maandag 23 maart 2009 @ 10:59:
[...]

Het is wel beter, maar mij lijkt het nog handiger om in plaats van het hele bestand te downloaden enkel een HEAD-request te doen (met cURL) en dan de Content-Length header uitlezen, wat waarschijnlijk een stuk sneller werkt.
Voor zo'n simpele request gebruik je toch geen cURL ;) :+

Heb zelf ook wel eens de filesize van een remote file uit willen lezen, en dacht dat ook met een HEAD-request te doen. Tot ik bij een bepaalde site steeds in de problemen kwam. Dat bleek te gaan om een downloadsysteem (i.e. de file stonden niet gewoonweg in een dir, maar werden door een scriptje uitgelezen van de server en gewoon geprint). Dat vond de server niet leuk, omdat die met een HEAD-request niets kon (weet niet welke serversoftware het precies was).

Dat was erg vervelend, omdat niet te controleren was welke van de twee methodes ik moest gebruiken. Uiteindelijk het hele idee maar achterwege gelaten, in mijn ogen waren geen resultaten beter dan resultaten waarvan totaal niet zeker was of ze klopten.

Acties:
  • 0 Henk 'm!

  • HawVer
  • Registratie: Februari 2002
  • Laatst online: 13-09 16:51
.Gertjan. schreef op maandag 23 maart 2009 @ 11:03:
[...]


Kun je ook weer over discussiëren. XML is case sensitive.
XML:
1
<x></X>
geeft volgens mij een parsing error.

Als je een goede XSD/DTD op je document hebt liggen dan is de X altijd op de zelfde manier geschreven (of je krijgt validatie errors) en is deze check een beetje overbodig.

En volgens mij kan je ook sneller op zoek gaan naar de node in het document in plaats van er door alle nodes te wandelen.
Daarom staat er ook de StringComparison.CurrentCultureIgnoreCase. Het is de vraag of er validatie gebruikt wordt. Daarnaast kun je de programmeur niet verwijten dat er een fout geformateerd bestand gebruikt wordt.

http://hawvie.deviantart.com/


Acties:
  • 0 Henk 'm!

  • silverstorm
  • Registratie: Februari 2005
  • Laatst online: 11-09 23:53

silverstorm

tearing me apart

Iemand die opgelet heeft bij de curcus sql-injecties voorkomen:
PHP:
1
2
3
<?php
mysql_query("UPDATE tabel SET veld=".mysql_real_escape_string('0')." WHERE anderveld=".mysql_real_escape_string('0'));
?>

Poverty stole your golden shoes, but it din’t steal your laughter
Fools memorize, smart people make notes

Het sysadmin irc-cafe


Acties:
  • 0 Henk 'm!

  • jip_86
  • Registratie: Juli 2004
  • Laatst online: 21:36
HawVer schreef op maandag 23 maart 2009 @ 12:37:
[...]

Daarom staat er ook de StringComparison.CurrentCultureIgnoreCase. Het is de vraag of er validatie gebruikt wordt. Daarnaast kun je de programmeur niet verwijten dat er een fout geformateerd bestand gebruikt wordt.
Als case sensitive zou zijn heb je dan geen afsluitende tag en crasht de applicatie al bij ReadDocument. Maar het is een kleine moeite om te kijken of er per ongeluk <X></X> ipv <x></x> komt.

Acties:
  • 0 Henk 'm!

  • Jaap-Jan
  • Registratie: Februari 2001
  • Laatst online: 18:40
silverstorm schreef op maandag 23 maart 2009 @ 12:58:
Iemand die opgelet heeft bij de curcus sql-injecties voorkomen:
PHP:
1
2
3
<?php
mysql_query("UPDATE tabel SET veld=".mysql_real_escape_string('0')." WHERE anderveld=".mysql_real_escape_string('0'));
?>
Nou nee, hij lijkt niet te weten wat 'user input' nou eigenlijk betekend. :P

| Last.fm | "Mr Bent liked counting. You could trust numbers, except perhaps for pi, but he was working on that in his spare time and it was bound to give in sooner or later." -Terry Pratchett


Acties:
  • 0 Henk 'm!

  • Morax
  • Registratie: Mei 2002
  • Laatst online: 12-09 17:02
silverstorm schreef op maandag 23 maart 2009 @ 12:58:
Iemand die opgelet heeft bij de curcus sql-injecties voorkomen:
PHP:
1
2
3
<?php
mysql_query("UPDATE tabel SET veld=".mysql_real_escape_string('0')." WHERE anderveld=".mysql_real_escape_string('0'));
?>
:D

Dan is die cursus dus zwaar gefaald, want uit deze code blijkt toch dat de auteur nog steeds niet weet wat sql injection is :)

What do you mean I have no life? I am a gamer, I got millions!


Acties:
  • 0 Henk 'm!

  • Zoijar
  • Registratie: September 2001
  • Niet online

Zoijar

Because he doesn't row...

HawVer schreef op maandag 23 maart 2009 @ 12:37:
Daarnaast kun je de programmeur niet verwijten dat er een fout geformateerd bestand gebruikt wordt.
Natuurlijk wel! De programmeur moet zorgen voor software die robust is. Vooral input moet je daarom op elk mogelijke manier valideren, zodat je zeker weet dat de input klopt en je applicatie niet iets raars doet. Het mooiste zou een warning zijn met de mogelijkheid door te gaan of te stoppen.
Be conservative in what you do; be liberal in what you accept from others.

Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 01:28

.oisyn

Moderator Devschuur®

Demotivational Speaker

Jaap-Jan schreef op maandag 23 maart 2009 @ 13:29:
[...]

Nou nee, hij lijkt niet te weten wat 'user input' nou eigenlijk betekend. :P
En als jij denkt dat je alleen maar user input hoeft te escapen zit je er ver naast.

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Acties:
  • 0 Henk 'm!

  • Voutloos
  • Registratie: Januari 2002
  • Niet online
En het klopt alsnog niet. Als er ipv die constante een variabele zou staan, was er gewoon _wel_ een injection mogelijkheid. :P

{signature}


Acties:
  • 0 Henk 'm!

  • Zoijar
  • Registratie: September 2001
  • Niet online

Zoijar

Because he doesn't row...

Sowieso vind ik een query met parameters opbouwen als een string een voorbeeld van slecht programmeren. Je kan niet voor niks queries met parameters uitvoeren; gebruik die mogelijkheid dan ook, dan hoef je niks te escapen en ben je van al het gezeur af. De performance is ook nog beter.

Acties:
  • 0 Henk 'm!

  • .Gertjan.
  • Registratie: September 2006
  • Laatst online: 17-02 21:20

.Gertjan.

Owl!

jip_86 schreef op maandag 23 maart 2009 @ 13:27:
[...]

Als case sensitive zou zijn heb je dan geen afsluitende tag en crasht de applicatie al bij ReadDocument. Maar het is een kleine moeite om te kijken of er per ongeluk <X></X> ipv <x></x> komt.
Nope, want zodra je met XML gaat werken hoor je er een DTD en/of XSD tegen aan te leggen om te kijken of de data die je binnenkrijgt wel correct is. Dat is gewoon een validatie die je in mijn ogen moet doen!

Windows hanteert bijvoorbeeld CRC om te kijken of een bestand wel correct is. Als er een "bitje is omgevallen" (of omgegooid) dan is de CRC ongeldig en keurt windows het bestand gewoon af. Hij zou het wel kunnen inlezen, maar dan loopt hij een risico (zelfde met MD5 bij linux downloads, die moet je eigenlijk ook valideren).

Je laat in het echt toch ook niet iedereen binnen die aanbelt? Daar doe je toch ook een soort validatie? Als ik iemand niet ken of als iemand niet aan de eisen voldoet voor een betrouwbaar persoon (bijvoorbeeld een monteur die niet van het bedrijf is dat ik heb ingeschakeld) komt hij er gewoon niet in :). Zo moet je in je applicaties ook redeneren.

The #1 programmer excuse for legitimately slacking off: "My code's compiling"
Firesphere: Sommige mensen verdienen gewoon een High Five. In the Face. With a chair.


Acties:
  • 0 Henk 'm!

  • MBV
  • Registratie: Februari 2002
  • Laatst online: 21:14
.Gertjan. schreef op maandag 23 maart 2009 @ 14:24:
[...]


Nope, want zodra je met XML gaat werken hoor je er een DTD en/of XSD tegen aan te leggen om te kijken of de data die je binnenkrijgt wel correct is. Dat is gewoon een validatie die je in mijn ogen moet doen!
Ik zie iemand die nog nooit met legacy software heeft hoeven praten. Houd dat vooral zo, maar val anderen die dat wel moeten doen er niet op aan.

Het is heel leuk om tegen je manager te zeggen "Maar [insert 15 jaar niet meer ondersteund pakket] doet het fout", je manager zal vervolgens zeggen dat je het alsnog moet laten werken...

[ Voor 31% gewijzigd door MBV op 23-03-2009 14:44 ]


Acties:
  • 0 Henk 'm!

  • .Gertjan.
  • Registratie: September 2006
  • Laatst online: 17-02 21:20

.Gertjan.

Owl!

MBV schreef op maandag 23 maart 2009 @ 14:43:
[...]


Ik zie iemand die nog nooit met legacy software heeft hoeven praten. Houd dat vooral zo, maar val anderen die dat wel moeten doen er niet op aan.

Het is heel leuk om tegen je manager te zeggen "Maar [insert 15 jaar niet meer ondersteund pakket] doet het fout", je manager zal vervolgens zeggen dat je het alsnog moet laten werken...
Gelukkig inderdaad niet veel ervaring met legacy systemen (hoewel ik ook geregeld tegen oude rommel aan zit te bouwen), maar ik heb wel mijn visie over hoe je er in mijn ogen mee om zou moeten gaan.

Als zowel x als X voor kunnen komen dan moet je eigenlijk beide soorten tegen een andere XSD/DTD leggen. Er zullen misschien wel meer verschillen zijn, maar je kunt over het algemeen stellen dat 1 source steeds de zelfde XML zal genereren (zo niet is dat systeem raar bezig).

Ik vind dat ik wel mag zeggen dat het oude systeem de dingen fout doet (ook tegen mijn manager/projectleider), dat betekent niet dat ik mijn systeem daar niet mee om laat gaan. Ze mogen gerust weten dat je als developer je bedenkingen bij zaken hebt.

Ik vind dat je dingen die van buiten af komen niet zomaar moet vertrouwen. Als je te maken hebt met meerdere sources dat maak je er een soort conversie bus tussen. Die bus vervormt vervolgens de data tot een format wat jouw systeem wel begrijpt (zo doet Bizztalk het ook geloof ik).

Dan zit je systeem niet vol met conversie rommel en kun je wijzigingen in de aangeleverde data verwerken door alleen de conversie bus aan te passen.

The #1 programmer excuse for legitimately slacking off: "My code's compiling"
Firesphere: Sommige mensen verdienen gewoon een High Five. In the Face. With a chair.


Acties:
  • 0 Henk 'm!

  • MBV
  • Registratie: Februari 2002
  • Laatst online: 21:14
Daar ben ik het wel mee eens. Maar ik kan me voorstellen dat <X>...</x> voorkomt in de code die een COBOL-systeem genereert, gewoon een simpele typo:
COBOL:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
IDENTIFICATION DIVISION.
PROGRAM-ID. test_variable_parsing.

DATA DIVISION.
WORKING-STORAGE SECTION.

01 XML_OUTPUT.
     10 XML_NAME.
         12 FILLER     PIC XXX VALUE "<X>".
         12 NAME      PIC X(10).
         12 FILLER     PIC X(4) VALUE "</x>".

PROCEDURE DIVISION.
main_00.
* NAME vullen met gegevens
MOVE "mbv" TO NAME OF XML_NAME

Nu heeft NAME de inhoud "mbv", XML_NAME de inhoud "<X>mbv </x>", net als XML_OUTPUT
disclaimer: posities zijn ongetwijfeld verkeerd, ik geloof dat (in een van de formaten) de eerste 4 posities gereserveerd zijn voor het regelnummer, en dat de 5e positie moet worden vrijgelaten omdat dat de control character is.

En <X> </x> past nooit in een XSD ;)

[ Voor 34% gewijzigd door MBV op 23-03-2009 16:14 ]


Acties:
  • 0 Henk 'm!

  • .Gertjan.
  • Registratie: September 2006
  • Laatst online: 17-02 21:20

.Gertjan.

Owl!

MBV schreef op maandag 23 maart 2009 @ 16:09:
Daar ben ik het wel mee eens. Maar ik kan me voorstellen dat <X>...</x> voorkomt in de code die een COBOL-systeem genereert, gewoon een simpele typo:
COBOL:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
IDENTIFICATION DIVISION.
PROGRAM-ID. test_variable_parsing.

DATA DIVISION.
WORKING-STORAGE SECTION.

01 XML_OUTPUT.
     10 XML_NAME.
         12 FILLER     PIC XXX VALUE "<X>".
         12 NAME      PIC X(10).
         12 FILLER     PIC X(4) VALUE "</x>".

PROCEDURE DIVISION.
main_00.
* NAME vullen met gegevens
MOVE "mbv" TO NAME OF XML_NAME

Nu heeft NAME de inhoud "mbv", XML_NAME de inhoud "<X>mbv </x>", net als XML_OUTPUT
disclaimer: posities zijn ongetwijfeld verkeerd, ik geloof dat (in een van de formaten) de eerste 4 posities gereserveerd zijn voor het regelnummer, en dat de 5e positie moet worden vrijgelaten omdat dat de control character is.

En <X> </x> past nooit in een XSD ;)
<X> en </x> levert zover ik weet sowieso een fout xml-document op. In dat geval zul hem dus ook niet als XMLdocument in .NET kunnen gebruiken binnen je code vrees ik. Dan heb je sowieso een probleem :+ Volgens mij krijg je een dergelijk xml document niet geopend in bijvoorbeeld Internet Exlorer, dat is iets wat je toch test (tenminste als ik een XML maak).

En ik vind het vrij slordig als een developer opent met een X en stopt met een /x. Ik kan me voorstellen dat je inderdaad soms een <x></x> en soms een <X></X> gebruikt. Maar goed een foutje is zo gemaakt,.

The #1 programmer excuse for legitimately slacking off: "My code's compiling"
Firesphere: Sommige mensen verdienen gewoon een High Five. In the Face. With a chair.


Acties:
  • 0 Henk 'm!

  • Michali
  • Registratie: Juli 2002
  • Laatst online: 29-05 22:54
Hebben jullie dit gelezen op The Daily WTF: Where the Wild Web Things Are?

Wat ik dacht toen ik dit las:

Nooooooooooooooooooooooooooooooooo! Please, SHOOT ME, NOW!

:P

Noushka's Magnificent Dream | Unity


Acties:
  • 0 Henk 'm!

  • MBV
  • Registratie: Februari 2002
  • Laatst online: 21:14
Nou, dat niet direct. Het verbaasd me eigenlijk dat die site nog best wel vlot laadt in Firefox :)

* MBV had echt geen zin om door die XSLT-brei heen te kijken

Acties:
  • 0 Henk 'm!

  • jip_86
  • Registratie: Juli 2004
  • Laatst online: 21:36
Zoijar schreef op maandag 23 maart 2009 @ 13:42:
[...]

Natuurlijk wel! De programmeur moet zorgen voor software die robust is. Vooral input moet je daarom op elk mogelijke manier valideren, zodat je zeker weet dat de input klopt en je applicatie niet iets raars doet. Het mooiste zou een warning zijn met de mogelijkheid door te gaan of te stoppen.

[...]
Enige robuustheid is wel gewenst. Het is een groepsproject waarbij het xml bestand door 5 groepen van 5 is samengesteld. Dat bestand moeten we in onze eigen groep helemaal ingelezen worden en vertaald worden naar een graaf ivm padzoeken.
Uiteraard maken we daar afspraken over, maar zoals het bij een echt schoolproject hoort houd je je daar niet aan natuurlijk.

Acties:
  • 0 Henk 'm!

  • .Gertjan.
  • Registratie: September 2006
  • Laatst online: 17-02 21:20

.Gertjan.

Owl!

jip_86 schreef op maandag 23 maart 2009 @ 20:32:
[...]

Enige robuustheid is wel gewenst. Het is een groepsproject waarbij het xml bestand door 5 groepen van 5 is samengesteld. Dat bestand moeten we in onze eigen groep helemaal ingelezen worden en vertaald worden naar een graaf ivm padzoeken.
Uiteraard maken we daar afspraken over, maar zoals het bij een echt schoolproject hoort houd je je daar niet aan natuurlijk.
Als je binnen je eigen groep niet eens afspraken kan maken over simpele dingen als data formats ben je ook niet erg goed bezig. Als iedereen binnen een groep zijn eigen gang gaat en niet op de regels let dan wordt het een gigantische puinhoop. Wanneer iemand binnen de groep de regels schendt moet hij daar gewoon op aangesproken worden.

Mag hopen dat mensen die serieus met de opleiding bezig zijn en die over een tijd het bedrijfsleven ingaan zich aan de regels kunnen houden.

The #1 programmer excuse for legitimately slacking off: "My code's compiling"
Firesphere: Sommige mensen verdienen gewoon een High Five. In the Face. With a chair.


Acties:
  • 0 Henk 'm!

  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
jip_86 schreef op maandag 23 maart 2009 @ 20:32:
[...]

Enige robuustheid is wel gewenst. Het is een groepsproject waarbij het xml bestand door 5 groepen van 5 is samengesteld. Dat bestand moeten we in onze eigen groep helemaal ingelezen worden en vertaald worden naar een graaf ivm padzoeken.
Uiteraard maken we daar afspraken over, maar zoals het bij een echt schoolproject hoort houd je je daar niet aan natuurlijk.
Als je gewoon netjes een foutmelding geeft dat de input verkeerd is, dan kan de aanleverende groep weer aan de gang om het wel goed te doen ;). Leren die ook meteen waarom het belangrijk is om je interface goed af te spreken.

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”


Acties:
  • 0 Henk 'm!

  • netvor
  • Registratie: September 2000
  • Laatst online: 08-04-2024
.Gertjan. schreef op dinsdag 24 maart 2009 @ 08:38:
Mag hopen dat mensen die serieus met de opleiding bezig zijn en die over een tijd het bedrijfsleven ingaan zich aan de regels kunnen houden.
Mijn ervaring met "het bedrijsleven" is niet dat er mensen zijn die zich niet aan de regels houden, in ieder geval niet veel. Een groter probleem is eerder het schreeuwend gebrek aan goede, duidelijke, begrijpbare regels.

Zoals bijvoorbeeld het aloude drama waarin specificaties en ontwerpen door zogeheten "business analysts" worden gemaakt, het soort mensen dat een briljante visie heeft maar vervolgens niet verder denkt dan de basis en alle randvoorwaarden, uitzonderingen en "what-ifs" onbesproken laat. Onder tijdsdruk beginnen de programmeurs dan toch maar met coden, elk uiteraard met hun eigen interpretatie van wat er niet in de documentatie is vastgelegd. Een aantal van die maffe interpretaties komen dan hier in dit topic of op de DailyWTF terecht, en vaak wordt de programmeur aan de kaak gesteld. Jammer, want het eigenlijke probleem zit elders.

Disclaimer: hier op het werk hebben we sinds een half jaar een nieuwe omhooggevallen business analyst, en het bovengenoemde drama wordt inmiddels vaker nagespeeld dan Cats en West Side Story bij mekaar. Effe afreageren dus. ;)

Computer Science: describing our world with boxes and arrows.


Acties:
  • 0 Henk 'm!

  • HawVer
  • Registratie: Februari 2002
  • Laatst online: 13-09 16:51
Zoijar schreef op maandag 23 maart 2009 @ 13:42:
[...]

Natuurlijk wel! De programmeur moet zorgen voor software die robust is. Vooral input moet je daarom op elk mogelijke manier valideren, zodat je zeker weet dat de input klopt en je applicatie niet iets raars doet. Het mooiste zou een warning zijn met de mogelijkheid door te gaan of te stoppen.

[...]
Uiteraard, maar als het programma het bestand niet kan inlezen omdat het fout geformateerd is, dan is dat niet de schuld van de programmeur. Ik bedoel daar mee dat je niet ala microsoft IE allerlei bochten gaan wringen om toch maar iets te tonen of het toch te kunnen verwerken.

http://hawvie.deviantart.com/


Acties:
  • 0 Henk 'm!

  • kenneth
  • Registratie: September 2001
  • Niet online

kenneth

achter de duinen

HawVer schreef op dinsdag 24 maart 2009 @ 10:22:
[...]

Uiteraard, maar als het programma het bestand niet kan inlezen omdat het fout geformateerd is, dan is dat niet de schuld van de programmeur. Ik bedoel daar mee dat je niet ala microsoft IEwebbrowsers allerlei bochten gaan wringen om toch maar iets te tonen of het toch te kunnen verwerken.
fyp ;)

Look, runners deal in discomfort. After you get past a certain point, that’s all there really is. There is no finesse here.


Acties:
  • 0 Henk 'm!

  • .Gertjan.
  • Registratie: September 2006
  • Laatst online: 17-02 21:20

.Gertjan.

Owl!

netvor schreef op dinsdag 24 maart 2009 @ 10:03:
[...]


Mijn ervaring met "het bedrijsleven" is niet dat er mensen zijn die zich niet aan de regels houden, in ieder geval niet veel. Een groter probleem is eerder het schreeuwend gebrek aan goede, duidelijke, begrijpbare regels.

Zoals bijvoorbeeld het aloude drama waarin specificaties en ontwerpen door zogeheten "business analysts" worden gemaakt, het soort mensen dat een briljante visie heeft maar vervolgens niet verder denkt dan de basis en alle randvoorwaarden, uitzonderingen en "what-ifs" onbesproken laat. Onder tijdsdruk beginnen de programmeurs dan toch maar met coden, elk uiteraard met hun eigen interpretatie van wat er niet in de documentatie is vastgelegd. Een aantal van die maffe interpretaties komen dan hier in dit topic of op de DailyWTF terecht, en vaak wordt de programmeur aan de kaak gesteld. Jammer, want het eigenlijke probleem zit elders.

Disclaimer: hier op het werk hebben we sinds een half jaar een nieuwe omhooggevallen business analyst, en het bovengenoemde drama wordt inmiddels vaker nagespeeld dan Cats en West Side Story bij mekaar. Effe afreageren dus. ;)
Het is in mijn ogen toch ook de taak van de developer om dat soort dingen aan te kaarten. De meeste developers hebben een HBO studie gedaan waarin naast het coden ook software enginering langs is gekomen. Als je ziet dat er fouten worden gemaakt moet je dit melden en daar op in spelen. Als je gewoon maar klakkeloos aanneemt wat er verteld wordt en zonder zicht op het geheel begint te bouwen loop je vanzelf tegen problemen aan in de rest van je carrière. Zeker als je wilt doorgroeien. En je wordt als groep afgerekend op het resultaat. Het accepteren van slechte input is in mijn ogen bijna gelijkwaardig aan het outputten van slechte data (dus in je output ook switchen tussen X en x).

Je bent als developer meer dan alleen uitvoerend. Initiatief en assertiviteit behoren ook tot je functie. En als mensen zich niet aan de regels houden moeten ze aangesproken worden en moeten ze hun leven beteren. Je kunt in een project team (zeker in een groot team) geen figuren hebben die maar een beetje aan modderen, als ze zich niet aan de regels houden werken ze de boel eigenlijk tegen en is het misschien beter om ze uit het team te gooien,

The #1 programmer excuse for legitimately slacking off: "My code's compiling"
Firesphere: Sommige mensen verdienen gewoon een High Five. In the Face. With a chair.


Acties:
  • 0 Henk 'm!

  • MBV
  • Registratie: Februari 2002
  • Laatst online: 21:14
Ik ga de studenten even uit de droom helpen: je hogeschool of universiteit is vaak de laatste plek waar iedereen zich aan de gemaakte afspraken (m.u.v. deadlines) houdt. Als je dat al niet voor elkaar krijgt op het HBO/TU, dan moet je toch even achter je oren gaan krabben.

Acties:
  • 0 Henk 'm!

Verwijderd

Ik heb ooit jaren terug, aan het begin van mijn programmeerperiode de volgende fout in php gemaakt:

code:
1
2
3
while (true) { 
mail()
}


Ik heb de hostingprovider moeten bellen om te vragen of hij mijn script wilde killen..

Acties:
  • 0 Henk 'm!

  • jbdeiman
  • Registratie: September 2008
  • Laatst online: 21:22
Niet helemaal waar, er zijn plekken waar wel duidelijk is wat standaarden zijn en dergelijke. Het is vooraf in een project zaak om met de developers bij elkaar te zijn en daarin duidelijke afspraken te maken over hoe de regels in elkaar moeten zitten.
Dit houdt je op regelmatige basis bij met elkaar, in een korte team-meating, waarbij knelpunten worden aangegeven. Er is bij die meatings altijd een verantwoordelijke voor notulen, waarin vooral gemaakte afspraken belangrijk zijn. Elk project is weer anders, en helemaal complete standaard afspraken waarin alles wordt afgevangen bestaan volgens mij niet. Er zijn altijd weer uitzonderingen en dergelijke, welke dus niet in de eerder gemaakte afspraken staan.

Wanneer je duidelijke afspraken maakt over de notatie, de namen van functies etc. en iedereen houdt zich daaraan dan is er niet veel aan de hand. Maak ook duidelijk de afspraak dat bij twijfel altijd overlegt moet worden, niet zomaar dingen doen die je later over zou (kunnen) moeten doen. Je bent waarschijnlijk niet de enige die tegen problemen aanloopt en vaak zijn problemen die de 1 tegenkomt door te voeren op een probleem die een ander ook heeft.

Zeker in de webwereld is het wel belangrijk je aan standaarden te houden, al moet je daar vaak voor verschillende browsers (IE bijv.) wel van afwijken.

Acties:
  • 0 Henk 'm!

Verwijderd

Verwijderd schreef op dinsdag 24 maart 2009 @ 13:20:
Ik heb ooit jaren terug, aan het begin van mijn programmeerperiode de volgende fout in php gemaakt:

code:
1
2
3
while (true) { 
mail()
}


Ik heb de hostingprovider moeten bellen om te vragen of hij mijn script wilde killen..
max-execution time geldt toch voor elk php script?

Acties:
  • 0 Henk 'm!

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

Sebazzz

3dp

jbdeiman schreef op dinsdag 24 maart 2009 @ 13:29:
Er is bij die meatings altijd een verantwoordelijke voor notulen, waarin vooral gemaakte afspraken belangrijk zijn.
Meatings... :P Is dat met een groep vlees eten? Of bedoel je meetings :P
Verwijderd schreef op dinsdag 24 maart 2009 @ 13:20:
Ik heb ooit jaren terug, aan het begin van mijn programmeerperiode de volgende fout in php gemaakt:

code:
1
2
3
while (true) { 
mail()
}


Ik heb de hostingprovider moeten bellen om te vragen of hij mijn script wilde killen..
Als het goed is zou een script moeten afsluiten nadat je weggaat van de pagina. Dit is wel een PHP instelling die je kan uitzetten. Hetzelfde geld voor max_execution_time.

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


Acties:
  • 0 Henk 'm!

  • netvor
  • Registratie: September 2000
  • Laatst online: 08-04-2024
Ik ben het helemaal met je eens. Maar jij weet net zo goed als ik dat die vlieger in werkelijkheid niet altijd opgaat. In elke bedrijfscultuur kom je zo af en toe toch weer in aanraking met vriendjespolitiek, machtsspelletjes, cover-your-ass maatregelen, collega's die op strategische momenten ziek worden en ga zo maar door. Tsja, dat hoort er nou eenmaal bij. Leer ermee om te gaan, en koester de projecten waar het niet gebeurt.

BTW, het lijkt mij zo dat MBV en ik eigenlijk min of meer hetzelfde punt hebben. :)

Computer Science: describing our world with boxes and arrows.


Acties:
  • 0 Henk 'm!

Verwijderd

Verwijderd schreef op dinsdag 24 maart 2009 @ 14:28:
[...]

max-execution time geldt toch voor elk php script?
Toen een vriend van mij boven de 10.000 mails zat heb ik dus maar lopen bellen. We dachten dat het ook op een begeven moment zou ophouden. Dit bleek niet het geval.. beetje pauper van de host dat wel..

Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Topicstarter
Sebazzz schreef op dinsdag 24 maart 2009 @ 14:29:
[...]

Als het goed is zou een script moeten afsluiten nadat je weggaat van de pagina. Dit is wel een PHP instelling die je kan uitzetten. Hetzelfde geld voor max_execution_time.
Je bent ervan op de hoogte dat HTTP stateless is en het dus geen fluit uitmaakt of je op die site blijft of niet? ;)

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • Patriot
  • Registratie: December 2004
  • Laatst online: 20:57

Patriot

Fulltime #whatpulsert

NMe schreef op dinsdag 24 maart 2009 @ 14:40:
[...]

Je bent ervan op de hoogte dat HTTP stateless is en het dus geen fluit uitmaakt of je op die site blijft of niet? ;)
Jij bent ervan op de hoogte dat tijdens het uitvoeren van het script, de verbinding nog niet is afgesloten, de gebruiker dit handmatig kan doen en dat je de status van de verbinding binnen PHP ook kunt uitlezen?

edit: zie ook ignore_user_abort en connection_status

[ Voor 14% gewijzigd door Patriot op 24-03-2009 14:47 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Patriot schreef op dinsdag 24 maart 2009 @ 14:46:
[...]


Jij bent ervan op de hoogte dat tijdens het uitvoeren van het script, de verbinding nog niet is afgesloten, de gebruiker dit handmatig kan doen en dat je de status van de verbinding binnen PHP ook kunt uitlezen?

edit: zie ook ignore_user_abort en connection_status
Jongens, doe is lief doen...

Het script wilde in ieder geval niet stoppen. Hierdoor heeft de host een kill proces moeten activeren. Ik had wel ssh rechten maar niet genoeg om dit soort dingen zelf te doen.. Vriend van me was er niet zo blij mee.

Acties:
  • 0 Henk 'm!

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

Sebazzz

3dp

NMe schreef op dinsdag 24 maart 2009 @ 14:40:
[...]

Je bent ervan op de hoogte dat HTTP stateless is en het dus geen fluit uitmaakt of je op die site blijft of niet? ;)
Patriot schreef op dinsdag 24 maart 2009 @ 14:46:
[...]


Jij bent ervan op de hoogte dat tijdens het uitvoeren van het script, de verbinding nog niet is afgesloten, de gebruiker dit handmatig kan doen en dat je de status van de verbinding binnen PHP ook kunt uitlezen?

edit: zie ook ignore_user_abort en connection_status
Denk maar niet dat ik het zomaar uit de lucht trek ;) Voor de rest blijft PHP een graftaal sinds ik C# programmeer :P

[ Voor 3% gewijzigd door Sebazzz op 24-03-2009 15:51 ]

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


Acties:
  • 0 Henk 'm!

Verwijderd

Sebazzz schreef op dinsdag 24 maart 2009 @ 15:49:
[...]

[...]

Denk maar niet dat ik het zomaar uit de lucht trek ;) Voor de rest blijft PHP een graftaal sinds ik C# programmeer :P
Zelfde ervaring hier. Hoewel ik Java toch ook nog wel lekker blijf vinden.

Acties:
  • 0 Henk 'm!

  • Voutloos
  • Registratie: Januari 2002
  • Niet online
ignore_user_abort():
PHP will not detect that the user has aborted the connection until an attempt is made to send information to the client.
Wat een volstrekt logisch gedrag is natuurlijk. iua beschermt je dus zeker niet tegen al je eeuwige loop falen.

{signature}


Acties:
  • 0 Henk 'm!

  • TvdW
  • Registratie: Juli 2007
  • Laatst online: 30-08-2021
echo 'mail verzonden';

in je loop

probleem opgelost, mits je geen output buffers gebruikt

Acties:
  • 0 Henk 'm!

  • Voutloos
  • Registratie: Januari 2002
  • Niet online
Eh nee? :X Je moet gewoon niet een eeuwig hangend loopje schrijven en dat betekent niet dat je in elk loopje maar iets willekeurigs moet outputten...

{signature}


Acties:
  • 0 Henk 'm!

  • Zoijar
  • Registratie: September 2001
  • Niet online

Zoijar

Because he doesn't row...

Bijna al m'n programmas zijn eeuwig hangende loopjes :P

Acties:
  • 0 Henk 'm!

Verwijderd

Alle stukjes die wij schreven bij onze cursus Embedded Systems hadden een while(1) in de main :).

Acties:
  • 0 Henk 'm!

  • Haan
  • Registratie: Februari 2004
  • Laatst online: 14-09 07:13

Haan

dotnetter

Embedded systemen zijn dan ook de spreekwoordelijke uitzondering op de regel ;)

[ Voor 12% gewijzigd door Haan op 25-03-2009 09:35 ]

Kater? Eerst water, de rest komt later


Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 01:28

.oisyn

Moderator Devschuur®

Demotivational Speaker

Ik doe altijd for(;;), is korter :P

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Acties:
  • 0 Henk 'm!

  • MBV
  • Registratie: Februari 2002
  • Laatst online: 21:14
Belangrijker: de 1 zit verder weg :P Iets serieuzer: while vind ik leesbaarder dan for.

@Haan: hoe denk je dat een webserver eruit ziet? ;) En jij ziet meet-en-regel per definitie als embedded? :P

Acties:
  • 0 Henk 'm!

  • HawVer
  • Registratie: Februari 2002
  • Laatst online: 13-09 16:51
Haan schreef op woensdag 25 maart 2009 @ 09:34:
Embedded systemen zijn dan ook de spreekwoordelijke uitzondering op de regel ;)
Games en windows services, etc.

http://hawvie.deviantart.com/


Acties:
  • 0 Henk 'm!

  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
MBV schreef op woensdag 25 maart 2009 @ 11:20:
@Haan: hoe denk je dat een webserver eruit ziet? ;) En jij ziet meet-en-regel per definitie als embedded? :P
Bij een web-server mag ik hopen dat er toch wel een conditie is waardoor uit de loop gesprongen word ( eventueel door een break );
HawVer schreef op woensdag 25 maart 2009 @ 11:24:
[...]

Games en windows services, etc.
Ook daar heb je een coditie waarbij het process stopt.

[ Voor 23% gewijzigd door Woy op 25-03-2009 12:03 ]

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”


Acties:
  • 0 Henk 'm!

  • Haan
  • Registratie: Februari 2004
  • Laatst online: 14-09 07:13

Haan

dotnetter

Ok ok ik heb wat 'uitzonderingen' over het hoofd gezien :P

Kater? Eerst water, de rest komt later


Acties:
  • 0 Henk 'm!

  • Zoijar
  • Registratie: September 2001
  • Niet online

Zoijar

Because he doesn't row...

Woy schreef op woensdag 25 maart 2009 @ 12:03:
Bij een web-server mag ik hopen dat er toch wel een conditie is waardoor uit de loop gesprongen word ( eventueel door een break );

Ook daar heb je een coditie waarbij het process stopt.
Signals. Blijft een while (1) loop dan :)

Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 01:28

.oisyn

Moderator Devschuur®

Demotivational Speaker

Of gewoon een exit() ergens. 't Is niet alsof je je gehele callstack netjes af moet lopen oid :). Doet de runtime ook niet, dat is vaak typisch een exit(main())

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Acties:
  • 0 Henk 'm!

  • YopY
  • Registratie: September 2003
  • Laatst online: 13-07 01:14
while(1) of while(true) > for(;;), de eerste twee zijn veel duidelijker. 'korter' is in dit geval.. euh.. *telt*.. 1 karakter, :+. Als iemand anders er even twee keer naar moet kijken ben je die tijd al lang weer kwijt.

Overigens, @ eerder topic: Dat is waarom je niet moet gaan ontwikkelen op je host, :+. Gewoon je lokale ontwikkelomgevingkje opzetten (evt met een portable webserver).

Acties:
  • 0 Henk 'm!

  • Phyxion
  • Registratie: April 2004
  • Niet online

Phyxion

_/-\o_

.oisyn schreef op woensdag 25 maart 2009 @ 10:24:
Ik doe altijd for(;;), is korter :P
Korter, OK, maar while(1) typt makkelijker :)

'You like a gay cowboy and you look like a gay terrorist.' - James May


Acties:
  • 0 Henk 'm!

  • kenneth
  • Registratie: September 2001
  • Niet online

kenneth

achter de duinen

Wat een non-discussie :')

Look, runners deal in discomfort. After you get past a certain point, that’s all there really is. There is no finesse here.


Acties:
  • 0 Henk 'm!

Verwijderd

YopY schreef op woensdag 25 maart 2009 @ 14:38:
...

Overigens, @ eerder topic: Dat is waarom je niet moet gaan ontwikkelen op je host, :+. Gewoon je lokale ontwikkelomgevingkje opzetten (evt met een portable webserver).
Dat krijg je als begin eerste jaars HBO (inmiddels bezig met afstuderen).
Geweldig he.. en dat alleen omdat ik zei dat ik wel eens een fout had gemaakt met while(true) mail() in php :P

[ Voor 42% gewijzigd door Verwijderd op 25-03-2009 14:55 ]


Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 01:28

.oisyn

Moderator Devschuur®

Demotivational Speaker

YopY schreef op woensdag 25 maart 2009 @ 14:38:
while(1) of while(true) > for(;;), de eerste twee zijn veel duidelijker
Dat zegt iedereen. Waarom? Alsof je niet de hele statement in 1 oogopslag ziet. Het is toch duidelijk dat de for leeg is? Volgens mij ligt dat meer aan het feit dat mensen geindoctrineerd zijn dat je een for altijd schrijft als for(int var; var < max; var++), ipv de generieke for([init]; [condition]; [increment]) waarbij je elk onderdeel weg mag laten. Wil je werkelijk beweren dat je die for ziet en dan denkt: "huh, wat gebeurt daar nou? Even extra dichtbij naar die for turen om te kijken of er niet toevallig nog wat tussen de puntkomma's staat" 8)7

[ Voor 43% gewijzigd door .oisyn op 25-03-2009 15:21 ]

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Acties:
  • 0 Henk 'm!

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

Sebazzz

3dp

.oisyn schreef op woensdag 25 maart 2009 @ 10:24:
Ik doe altijd for(;;), is korter :P
Kost zelfs minder ruimte. 8 versus 6 bytes :P

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


Acties:
  • 0 Henk 'm!

  • kenneth
  • Registratie: September 2001
  • Niet online

kenneth

achter de duinen

LALALALALALALA NONDISCUSSIE LALALALA

O-)

Look, runners deal in discomfort. After you get past a certain point, that’s all there really is. There is no finesse here.


Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 01:28

.oisyn

Moderator Devschuur®

Demotivational Speaker

Totdat er een ander onderwerp wordt aangehaald kunnen we toch gewoon slap door blijven lullen? Ik zie het probleem niet echt :)
Sebazzz schreef op woensdag 25 maart 2009 @ 15:22:
[...]
Kost zelfs minder ruimte. 8 versus 6 bytes :P
Dat zeg ik toch? En jij kan niet tellen ;)

[ Voor 45% gewijzigd door .oisyn op 25-03-2009 15:31 ]

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Acties:
  • 0 Henk 'm!

  • kenneth
  • Registratie: September 2001
  • Niet online

kenneth

achter de duinen

Tuurlijk kan dat, maar ik denk steeds dat als dit topic in MyAT verschijnt dat er weer een prachtig programmeervoorbeeld staat, terwijl het over for(;;) vs while(1) gaat 8)7

/rant

... gaat u rustig verder waarmee u bezig was O-)

Look, runners deal in discomfort. After you get past a certain point, that’s all there really is. There is no finesse here.


Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 01:28

.oisyn

Moderator Devschuur®

Demotivational Speaker

Vallen slechtste programmeerdiscussies er niet ook onder dan? :+

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Acties:
  • 0 Henk 'm!

  • Zyppora
  • Registratie: December 2005
  • Laatst online: 12-09 10:59

Zyppora

155/50 Warlock

.oisyn schreef op woensdag 25 maart 2009 @ 15:18:
[...]

Dat zegt iedereen. Waarom? Alsof je niet de hele statement in 1 oogopslag ziet. Het is toch duidelijk dat de for leeg is? Volgens mij ligt dat meer aan het feit dat mensen geindoctrineerd zijn dat je een for altijd schrijft als for(int var; var < max; var++), ipv de generieke for([init]; [condition]; [increment]) waarbij je elk onderdeel weg mag laten. Wil je werkelijk beweren dat je die for ziet en dan denkt: "huh, wat gebeurt daar nou? Even extra dichtbij naar die for turen om te kijken of er niet toevallig nog wat tussen de puntkomma's staat" 8)7
Dat het voor de een misschien in een oogopslag duidelijk is, betekent nog niet dat dat voor de ander ook zo is. Of je dat indoctrinatie kunt noemen, tja ... ik denk dat het inderdaad een kwestie van gewenning is. Een while heeft slechts een condition, en voor infinite loops is die gewoon 'true' (of 1, of ... w/e je voorkeur heeft). Bij een for constructie zijn mensen het gewoon gewend om invulling te geven aan de 'parameters'. Als ze dan een stuk code zien staan met een for(;;) erin, zullen ze misschien even raar staan te kijken, omdat het toch 'anders' is.

Ik zou haast willen zeggen dat je een beroep doet op het cognitieve vermogen van degene die de for(;;) loop onder ogen krijgt ;) Terwijl dat voor while(true) of while(1) in mindere mate zo is.

Misschien leuk voor een discussie: waarom de while constructie niet uitfaseren als for hetzelfde en meer kan?

Phenom II X4 945 \\ 8GB DDR3 \\ Crosshair IV Formula \\ R9 290


Acties:
  • 0 Henk 'm!

  • ThunderNet
  • Registratie: Juni 2004
  • Laatst online: 16:22

ThunderNet

Flits!

Sebazzz schreef op woensdag 25 maart 2009 @ 15:22:
[...]
Kost zelfs minder ruimte. 8 versus 6 bytes :P
Maar dat is niet interresant... Naar hoeveel assembly-code wordt het gecompileerd, dat is interresanter om te weten :)

Heb je liever vooraf, of achteraf, dat ik zeg dat ik geen flauw idee heb wat ik doe?


Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 01:28

.oisyn

Moderator Devschuur®

Demotivational Speaker

Zyppora schreef op woensdag 25 maart 2009 @ 15:39:
[...]


Dat het voor de een misschien in een oogopslag duidelijk is, betekent nog niet dat dat voor de ander ook zo is.
Woorden lees je in een oogopslag, dat is een feit. Tenzij je dyslectisch bent natuurlijk, maar dan heb je wel meer problemen met het lezen van code.
Ik zou haast willen zeggen dat je een beroep doet op het cognitieve vermogen van degene die de for(;;) loop onder ogen krijgt ;) Terwijl dat voor while(true) of while(1) in mindere mate zo is.
Waarom is dat bij while in mindere mate zo? Nu pas je je eigen ervaring juist weer toe op het generieke, waar je mij zojuist van "betichtte" :)

Overigens (en niet dat ik dit wil aandragen als gebruik voor for trouwens, het maakt me echt geen drol uit of je nou for of while gebruikt ;)), als je kijkt naar de semantiek is for(;;) ook logischer. Er is namelijk geen conditie, hij loopt indefinitely. Een while(1) betekent "zolang 1 ongelijk aan 0 is", wat natuurlijk altijd geldt, maar wel zou kunnen impliceren dat er een moment is waarop dat niet meer geldt. En waarom dan 1, en niet (ik noem maar wat) 28 > 3.
Misschien leuk voor een discussie: waarom de while constructie niet uitfaseren als for hetzelfde en meer kan?
Omdat dat onnodig oude code breekt :). Voor een nieuwe programmeertaal zou je het evt. kunnen overwegen.
ThunderNet schreef op woensdag 25 maart 2009 @ 15:40:
[...]

Maar dat is niet interresant... Naar hoeveel assembly-code wordt het gecompileerd, dat is interresanter om te weten :)
Als je een compiler gebruikt die er een conditional branch van maakt moet je op zoek gaan naar wat anders :)

[ Voor 10% gewijzigd door .oisyn op 25-03-2009 16:10 ]

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Acties:
  • 0 Henk 'm!

  • MBV
  • Registratie: Februari 2002
  • Laatst online: 21:14
.oisyn schreef op woensdag 25 maart 2009 @ 16:09:
[...]

Woorden lees je in een oogopslag, dat is een feit. Tenzij je dyslectisch bent natuurlijk, maar dan heb je wel meer problemen met het lezen van code.
Inderdaad: While(1) is in mijn hoofd 2 woorden (haakjes laat ik weg), for(;;) is 3 woorden en duurt dus langer om te lezen.

Daarnaast heb ik nu een collega die Java-code alleen kan lezen als elke accolade op een nieuwe regel begint, ook puur gewenning. Ik vind de automatische stijl van Eclipse makkelijker lezen: er passen immers meer regels op 1 scherm.
Omdat dat onnodig oude code breekt :). Voor een nieuwe programmeertaal zou je het evt. kunnen overwegen.
Dan weet ik nog wel een paar constructs die kunnen worden afgeschaft, begin eens met +=, is ook nergens voor nodig...

Acties:
  • 0 Henk 'm!

  • HawVer
  • Registratie: Februari 2002
  • Laatst online: 13-09 16:51
Zyppora schreef op woensdag 25 maart 2009 @ 15:39:
[...]
Misschien leuk voor een discussie: waarom de while constructie niet uitfaseren als for hetzelfde en meer kan?
Omdat het icm een enumerator zo makkelijk is..

http://hawvie.deviantart.com/


Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 01:28

.oisyn

Moderator Devschuur®

Demotivational Speaker

MBV schreef op woensdag 25 maart 2009 @ 16:17:
[...]

Inderdaad: While(1) is in mijn hoofd 2 woorden (haakjes laat ik weg), for(;;) is 3 woorden en duurt dus langer om te lezen.
Sorry, ik bedoelde zinsdelen, niet individuele woorden. Lees je eens in in menselijke tekstherkenning :). Ik gok dat wat je nu zegt gewoon een gut feeling is en dat je dat niet hebt gemeten. Sowieso is het verschil natuurlijk minimaal.

[ Voor 16% gewijzigd door .oisyn op 25-03-2009 16:25 ]

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Acties:
  • 0 Henk 'm!

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

Sebazzz

3dp

ThunderNet schreef op woensdag 25 maart 2009 @ 15:40:
[...]

Maar dat is niet interresant... Naar hoeveel assembly-code wordt het gecompileerd, dat is interresanter om te weten :)
Programmeurs hebben niet oneindig veel ruimte voor source :+ Ik heb ook maar 2TB

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


Acties:
  • 0 Henk 'm!

  • MBV
  • Registratie: Februari 2002
  • Laatst online: 21:14
.oisyn schreef op woensdag 25 maart 2009 @ 16:25:
[...]

Sorry, ik bedoelde zinsdelen, niet individuele woorden. Lees je eens in in menselijke tekstherkenning :). Ik gok dat wat je nu zegt gewoon een gut feeling is en dat je dat niet hebt gemeten. Sowieso is het verschil natuurlijk minimaal.
Ik denk dat je met zinsdelen net zover komt: ; is bij mij zoiets als een . in natuurlijke taal, zonder de uitzondering van ... ;) Dus aangezien ik die for(;;) constructie zelf nooit gebruik, zal het iets meer verwerking kosten.
HawVer schreef op woensdag 25 maart 2009 @ 16:21:
[...]

Omdat het icm een enumerator zo makkelijk is..
Java:
1
2
3
4
5
6
7
8
9
for(Value x: Vector<Value> something) {
   doSomething(x);
}

Enumerator<Value> y = something.elements();
while (y.hasMoreElements()) {
   Value x = y.nextElement();
   doSomething(x);
}

Doe mij maar for-loops... :+



Net ergens iets veranderd, en dat proces wat net nog genoeg had aan 256MB geheugen is nu bij 768MB langer aan het garbage-collecten dan aan het rekenen :X Feest, daar kan je namelijk ook geen heap-dump van maken om te kijken waarom GC niet helpt...
Het heeft er waarschijnlijk mee te maken dat een syntax tree per definitie een berg cyclische verwijzingen heeft waar je niet goed van wordt :(

Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 01:28

.oisyn

Moderator Devschuur®

Demotivational Speaker

Nou heb ik niet zoveel ervaring met .Net, maar kun je geen weak references te gebruiken om de GC te hinten dat ie die edges in de graph niet af hoeft te lopen?

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Acties:
  • 0 Henk 'm!

  • MBV
  • Registratie: Februari 2002
  • Laatst online: 21:14
Hint: [code=java] ;)
Het probleem is dat hij niet de hele syntax tree van een bestand weg kan gooien nadat ik daarmee klaar ben, omdat ik ergens anders tijdelijk een referentie nodig heb (die ik aan het eind op null zet, maar waar hij zich niks van aan lijkt te trekken). Maar goed, nu zou het ergens anders kunnen liggen, want dat probleem had ik de hele tijd al.

Acties:
  • 0 Henk 'm!

Verwijderd

Vanuit het oogpunt van een minimalist die nog verder gaat dan het KISS beginsel, en er van uitgaat dat er geen onnodige code ingeklopt dient te worden, heeft
C:
1
for ( ;; )
de voorkeur boven
C:
1
while (some_condition_which_is_supposed_to_be_always_true)
Bij de laatste zou je namelijk per ongeluk een verkeerde expressie in kunnen kloppen, bij de eerste is dat simpelweg niet mogelijk omdat je geen conditie inklopt - en daarmee dus geen fout KUNT maken. In andere woorden: deze for-variant is meer fail-safe dan de while-variant. Merk op dat dit een principieel standpunt is.

Afgezien daarvan zeurt mijn C++ compiler bij 'while(1)' dat deze statement een conditional expression bevat die constant is (wat ik zelf ook wel weet :O ), hetgeen bij de for-variant uiteraard niet het geval is.
Misschien leuk voor een discussie: waarom de while constructie niet uitfaseren als for hetzelfde en meer kan?
Misschien omdat je niet elke 'while (<cond>)' wilt vervangen door 'for ( ; <cond>; )'?
Dan weet ik nog wel een paar constructs die kunnen worden afgeschaft, begin eens met +=, is ook nergens voor nodig...
Lijkt me niet zo'n goed plan, in plaats van bijvoorbeeld
C:
1
large_computation_resulting_in_lvalue += 1;
of
C:
1
computation_with_side_effect_resulting_in_lvalue += 1;

zul je dan iets moeten doen als
C:
1
2
T & rcT = some_computation;
rcT = rcT + 1;

En hopla, weer een auto variabele erbij die je met += niet nodig hebt.

Acties:
  • 0 Henk 'm!

  • BraveWorld
  • Registratie: September 2001
  • Niet online
Bij "for (;;)" moet je effe weten dat een lege conditie als true wordt gezien. Dat kan je niet uit het statement opmaken, moet je echt even uit de specs opmaken. Als je het eenmaal weet, dan is het korter. Daarentegen is een lege conditie als "while ()" niet toegestaan hetgeen het een beetje verwarrend maakt.

Dit is geen signature...


Acties:
  • 0 Henk 'm!

  • morpheus
  • Registratie: November 1999
  • Laatst online: 09-07 21:38
Zyppora schreef op woensdag 25 maart 2009 @ 15:39:
Misschien leuk voor een discussie: waarom de while constructie niet uitfaseren als for hetzelfde en meer kan?
Omdat er in mijn beleving een duidelijk verschillend doel is tussen een for loop en een while loop.

De while loop impliceert dat je er op een gegeven moment uit springt, onder condities die je zelf bepaald. Je hoeft vooraf niet te weten op welk moment je eruit springt. Voorbeeld:
Java:
1
2
3
4
5
while(!found) {
    String line = file.getNextLine();
    if (line.contains(word)) 
        found=true;
}


De for loop impliceert dat je over een complete set heen gaat, dan wel een deel van die set die je vooraf definieert. Het hier bovenstaande voorbeeld is niet van toepassing, ik verwacht dat een for loop geheel doorloopt zoals het gedefinieerd is bij aanmaken van de forloop. Voorbeeld goed gebruik:
Java:
1
2
3
for (String line : file) {
    wordcount = wordcount + line.countWord(word);
}


Nogmaals, dit is mijn beleving. Maar ik vind een stuk code erg onleesbaar als het zich niet aan bovenstaande houdt.

[ Voor 14% gewijzigd door morpheus op 25-03-2009 18:20 ]

3kwp pvoutput


Acties:
  • 0 Henk 'm!

Verwijderd

als ik zou moeten kiezen dan zou ik ipv een for(;;) voor een while(1) of onder .net een while(true) gaan

Acties:
  • 0 Henk 'm!

Verwijderd

morpheus schreef op woensdag 25 maart 2009 @ 18:11:
[...]


Omdat er in mijn beleving een duidelijk verschillend doel is tussen een for loop en een while loop.

De while loop impliceert dat je er op een gegeven moment uit springt, onder condities die je zelf bepaald. Je hoeft vooraf niet te weten op welk moment je eruit springt. Voorbeeld:
Java:
1
2
3
4
5
while(!found) {
    String line = file.getNextLine();
    if (line.contains(word)) 
        found=true;
}


De for loop impliceert dat je over een complete set heen gaat, dan wel een deel van die set die je vooraf definieert. Het hier bovenstaande voorbeeld is niet van toepassing, ik verwacht dat een for loop geheel doorloopt zoals het gedefinieerd is bij aanmaken van de forloop. Voorbeeld goed gebruik:
Java:
1
2
3
for (String line : file) {
    wordcount = wordcount + line.countWord(word);
}


Nogmaals, dit is mijn beleving. Maar ik vind een stuk code erg onleesbaar als het zich niet aan bovenstaande houdt.
Een oneindige while is gewoon een while waarbij de voorwaarde om erin te blijven altijd van kracht blijft.

Een oneindige while is simpelweg door de set oneindig lopen.

Maar ik snap wel wat je wil zeggen en ben het daar ook mee eens.
Pagina: 1 ... 8 ... 103 Laatste

Dit topic is gesloten.

Let op:
Uiteraard is het in dit topic niet de bedoeling dat andere users en/of topics aangehaald worden om ze voor gek te zetten. Lachen om je eigen code, of over dingen die je "wel eens tegengekomen bent" is prima, maar hou het onderling netjes. :)