[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 ... 14 ... 103 Laatste
Acties:
  • 993.581 views

Acties:
  • 0 Henk 'm!

  • user109731
  • Registratie: Maart 2004
  • Niet online
Zoijar schreef op maandag 27 juli 2009 @ 12:37:
en weten ook een heel zeldzaam legitiem geval waar het correct is, dus goto is niet evil en iedereen die dat denkt is eigenlijk maar dom omdat ze niet zo slim zijn dat ze het goed kunnen gebruiken".
Projecten als Linux en Wine gebruiken vooral forward gotos, eigenlijk altijd voor error handling. Dan is de flow gewoon duidelijk en het risico op spaghetti-code is veel kleiner. Het wordt vooral onleesbaar zodra je weer terug gaat jumpen (of meerdere labels gebruikt ofzo).

Goto zie je meestal in code als:
C:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
x = foo();
if(!x) 
    goto out;

y = bar(x);
if(y == SOME_ERROR) 
    goto out;

while(....) {
  something = foobar(x, y);
  if(!something) {
    goto out;
  }
}
out:
free(x);
free(y);
free(something);

return ...;

Ga je dit zonder goto doen dan moet je op 4 plekken de free-aanroepen dupliceren, of werken met lelijke if(error) {} constructies. In dit simpele voorbeeld is dat nog te overzien, maar wordt de code ingewikkelder en voeg je locking e.d. toe dan is een nette goto imho gewoon leesbaarder :)

Het is net als eval, die wordt vaak ook misbruikt, maar héél soms kan het enorm handig zijn en minder evil dan de alternatieven :)

Acties:
  • 0 Henk 'm!

  • Sebazzz
  • Registratie: September 2006
  • Laatst online: 16-09 15:42

Sebazzz

3dp

JanDM schreef op maandag 27 juli 2009 @ 15:07:
[...]

Ga je dit zonder goto doen dan moet je op 4 plekken de free-aanroepen dupliceren, of werken met lelijke if(error) {} constructies. In dit simpele voorbeeld is dat nog te overzien, maar wordt de code ingewikkelder en voeg je locking e.d. toe dan is een nette goto imho gewoon leesbaarder :)
Dupliceren? Je kan ook inline functies of macro's gebruiken. DRY ;)

C:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
x = foo();

if(x) {
   y = bar(x);
   if(y != SOME_ERROR) {
      while(....) {
        something = foobar(x, y);
        if(!something) {
          break;
        }
      }
   }
}

free(x);
free(y);
free(something);

return ...;

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


Acties:
  • 0 Henk 'm!

  • Grijze Vos
  • Registratie: December 2002
  • Laatst online: 28-02 22:17
Tja, een beetje zinnige taal heeft natuurlijk constructies om resourcemanagement te doen. C# heeft bijvoorbeeld het using keyword. Even los van de garbage collector.

Op zoek naar een nieuwe collega, .NET webdev, voornamelijk productontwikkeling. DM voor meer info


Acties:
  • 0 Henk 'm!

  • Sebazzz
  • Registratie: September 2006
  • Laatst online: 16-09 15:42

Sebazzz

3dp

Grijze Vos schreef op maandag 27 juli 2009 @ 15:16:
Tja, een beetje zinnige taal heeft natuurlijk constructies om resourcemanagement te doen. C# heeft bijvoorbeeld het using keyword. Even los van de garbage collector.
Er zullen altijd mensen moeten blijven die in C++/C/ASM programmeren want die 'zinnige taal' met garbage collector zal nooit native draaien lijkt me.

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


Acties:
  • 0 Henk 'm!

  • jbdeiman
  • Registratie: September 2008
  • Laatst online: 10:25
!null schreef op maandag 27 juli 2009 @ 12:09:
Dat is ook al een slecht programmeervoorbeeld, flinke inconsistentie :D
Lol, dat snap ik ook wel, het is meer een bij wijze van (en snel geschreven voorbeeld) ter verduidelijking van wat ik bedoelde. Maar (tenminste ik neem aan dat je dat bedoelde :P) de functie zou voor de if/ else lus moeten staan.
RobIII schreef op maandag 27 juli 2009 @ 12:28:
Overigens:

[...]

Als je er een if-statement om heen zet wel; een goto op zichzelf is echter onconditioneel en verstoort gewoon de flow van de code (en dus krijg je spaghetti code).

Er zijn trouwens best gevallen waarin GOTO bruikbaar/handig/noodzakelijk is, maar die gevallen zijn zéér zeldzaam en dan moet je een verdomd goede reden hebben om een GOTO te gebruiken (tenzij je in ASM werkt; en zelfs die zijn vaak nog conditioneel :P )
Maar de bedoeling van een GOTO is toch ook om "als dit gebeurt/ het geval is, spring dan naar bepaald punt". Anders heeft de GOTO toch alleen als functie om spagettiecode te gebruiken.
Natuurlijk gebruik je bij/ voor een GOTO een controle voor het één of ander. Anders kan je net zo goed die code meteen in de juiste volgorde neerzetten. Als je al een GOTO zou moeten gebruiken zit daar altijd een voorwaarde aan. Ga je namelijk terug naar een eerder punt, zonder voorwaarde, krijg je een oneindige lus. Ga je verder, sla je een stuk code over.. Zonder voorwaarde doet die dat altijd, dus waarom zou er dan code tussen staan? Naja, you should get the point.. :) Een GOTO zonder voorwaarde is dikke onzin.
.oisyn schreef op maandag 27 juli 2009 @ 12:28:
[...]

Waar het om gaat is dat een if gestructureerd is. Je kunt er niet alle kanten mee opspringen, de volgorde van executie is ten alle tijden van boven naar beneden, waarbij eventueel een heel blok code al dan niet wordt uitgevoerd. Het is bij een if statement dus inherent duidelijk om te zien hoe de executie gaat zijn. Bij een goto is dat niet het geval.
Dat geef ik later toch ook aan (einde van mijn vorige bericht)? Dat je met een goto heen en weer kan springen. Een heleboel if-jes/ else-jes staan altijd in "chronologische volgorde", dus die kan je van boven naar beneden lezen. Bij een GOTO spring je ook wel eens terug. Dat doe je ook bij een if wanneer je een functie aanroept, maar als het goed is is die al gedefinieerd en weet je precies wat een functie (behoort te doen) doet.

Acties:
  • 0 Henk 'm!

  • Eskimootje
  • Registratie: Maart 2002
  • Laatst online: 10:55
JanDM schreef op maandag 27 juli 2009 @ 15:07:
[...]

Projecten als Linux en Wine gebruiken vooral forward gotos, eigenlijk altijd voor error handling. Dan is de flow gewoon duidelijk en het risico op spaghetti-code is veel kleiner. Het wordt vooral onleesbaar zodra je weer terug gaat jumpen (of meerdere labels gebruikt ofzo).

Goto zie je meestal in code als:
C:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
x = foo();
if(!x) 
    goto out;

y = bar(x);
if(y == SOME_ERROR) 
    goto out;

while(....) {
  something = foobar(x, y);
  if(!something) {
    goto out;
  }
}
out:
free(x);
free(y);
free(something);

return ...;

Ga je dit zonder goto doen dan moet je op 4 plekken de free-aanroepen dupliceren, of werken met lelijke if(error) {} constructies. In dit simpele voorbeeld is dat nog te overzien, maar wordt de code ingewikkelder en voeg je locking e.d. toe dan is een nette goto imho gewoon leesbaarder :)

Het is net als eval, die wordt vaak ook misbruikt, maar héél soms kan het enorm handig zijn en minder evil dan de alternatieven :)
Ik zie in je stukje code 1 stijlbreuk (de ene keer wel haakjes gebruiken bij een eenregelige if de andere keer niet) en imho verkeerde keuze van de loop (een do while) had hier misschien beter gestaan.

C:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
x = foo();
if(x) {
    y = bar(x);
    if(y != SOME_ERROR) {       
        do {
            something = foobar(x, y);
        } while(something && ...);
    }
}
free(x);
free(y);
free(something);

return ...;

Ik ken de exacte C notatie niet maar echt een voordeel heeft het hier niet.

[ Voor 32% gewijzigd door Eskimootje op 27-07-2009 15:30 ]


Acties:
  • 0 Henk 'm!

  • user109731
  • Registratie: Maart 2004
  • Niet online
Sebazzz schreef op maandag 27 juli 2009 @ 15:16:
[...]
Dupliceren? Je kan ook inline functies of macro's gebruiken. DRY ;)
Of goto dus.. Functies werken in zo'n geval vaak niet, en overal macro's (met alle nadelen daarvan) gebruiken is minstens zo evil :p

Mijn voorbeeld is idd eenvoudig genoeg om zonder goto te kunnen doen, had ik toch beter een functie uit de kernel kunnen pakken :)
Eskimootje schreef op maandag 27 juli 2009 @ 15:25:
Ik zie in je stukje code 1 stijlbreuk (de ene keer wel haakjes gebruiken bij een eenregelige if de andere keer niet) en imho verkeerde keuze van de loop (een do while) had hier beter gestaan.
Klopt, het was maar een quick-and-dirty voorbeeld...

Acties:
  • 0 Henk 'm!

  • DutchNutcase
  • Registratie: Augustus 2005
  • Niet online

DutchNutcase

E = mc^2

Ik heb mezelf laatst betrapt op deze structuur in FORTRAN 95:

Fortran: DomDomDom
1
2
3
4
5
6
7
DO i = 1, N
   IF ( i == N ) THEN
      ... 2
   ELSE
      ... 1
   END IF
END DO


Geschreven aan het begin van mijn stage. Gelukkig kan ik het nog ombouwen naar:

Fortran: DomDomDom
1
2
3
4
DO i = 1, N-1
   ... 1
END DO
... 2

Luctor et Emergo || specs


Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 10:23

.oisyn

Moderator Devschuur®

Demotivational Speaker

Sebazzz schreef op maandag 27 juli 2009 @ 15:18:
[...]

Er zullen altijd mensen moeten blijven die in C++/C/ASM programmeren
In C++ kun je het wél fatsoenlijk oplossen, met RAII.
jbdeiman schreef op maandag 27 juli 2009 @ 15:22:
Dat geef ik later toch ook aan (einde van mijn vorige bericht)?
Ja, en aan het begin van je bericht stond dat je het punt met goto niet snapte. Dat lichtte ik toe. Moet je jezelf maar niet tegenspreken ;)
Bij een GOTO spring je ook wel eens terug. Dat doe je ook bij een if wanneer je een functie aanroept
Hoe kun je in hemelsnaam met een if terugspringen? Tenzij je bedoelt dat de functie boven de huidige functie is gedefinieerd, en daardoor "terugspringt", maar da's dan een nutteloos argument. Program flow heeft natuurlijk maar weinig te maken met de volgorde van functiedefinities. De aanroep van een functie kun je ook zien als een substitutie van de statements in de functie op de plek waar de functie-aanroep staat.

[ Voor 6% gewijzigd door .oisyn op 27-07-2009 15:45 ]

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!

  • Zoijar
  • Registratie: September 2001
  • Niet online

Zoijar

Because he doesn't row...

JanDM schreef op maandag 27 juli 2009 @ 15:07:
Projecten als Linux en Wine gebruiken vooral forward gotos, eigenlijk altijd voor error handling. Dan is de flow gewoon duidelijk en het risico op spaghetti-code is veel kleiner. Het wordt vooral onleesbaar zodra je weer terug gaat jumpen (of meerdere labels gebruikt ofzo).
Ja, dat begrijp ik wel. Het voorbeeld dat je gaf is niet de beste, want dat kan je heel simpel omzetten. Het gaat voornamelijk om deze gevallen:

C:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
x = foo();
if(!x) 
    goto out_x;

y = bar(x);
if(y == SOME_ERROR) 
    goto out_y;

while(....) {
  something = foobar(x, y);
  if(!something) {
    goto out_something;
  }
}

out_something:
  free(something);
out_y:
  free(y);
out_x:
  free(x);

return ...;

Dat is min of meer een "C exception". Dat kan je ook zo schrijven:
C:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
x = foo();
if(x) {
   y = bar(x);
   if(y != SOME_ERROR)  {
      while (.... ) {
          something = foobar(x, y);
           if(!something) {
                 break;
           }
      }
      free(something);
   }
   free(y);
}
free(x)

return ...;


Maar dit zie je ook vaak, en dat is eigenlijk slecht omdat het mogelijk code dupliceert:

C:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
x = foo();
if (!x) {
    free(x);
    return;
}

y = bar();
if (!y) {
   free(x); // dup "program cache killer"
   free(y);
   return;
}

... stuff

free(x); // dups
free(y);
return;


Hoewel je dat ook gewoon zo kan schrijven:

C:
1
2
3
4
5
6
7
8
9
x = foo();
if (x) {
   y = foo();
   if (y) {
      ... do stuff
   }
   free(y);
}
free(x);


Maar dan vinden mensen dus de nesting niet leesbaar. Ik weet het niet; kan allebei, goto of niet, maar je hebt het niet nodig. Ik vind ook de scoping met nesting beter. Waar nu free(x) staat onderaan kan je niets met y doen; met gotos kan dat wel.

Maar als gotos deel uitmaken van de code-style, zoals dus blijkbaar in de linux kernel, dan moet je zeker gotos gebruiken. Mixen is een drama. Ze hebben wel een punt: voorbeeld 1 is duidelijker dan voorbeeld 2.


Ik ben idd blij dat ik gewoon RAII en exceptions ter beschiking heb :)

Acties:
  • 0 Henk 'm!

  • Eskimootje
  • Registratie: Maart 2002
  • Laatst online: 10:55
In veel gevallen kun je dat gebruik van goto's ook vervangen met het gebruik van meer functies (wat een stuk beter herbruikbaar is). Zeker met verschillende labels om alles per stuk op te ruimen is het vragen om problemen bij het introduceren van nieuwe variabelen.

Acties:
  • 0 Henk 'm!

  • Boudewijn
  • Registratie: Februari 2004
  • Niet online

Boudewijn

omdat het kan

Functies scheiden de scope van variabelen wel beter dan goto's. Dat lijkt me een goed voorbeeld.
Maar goed, ik heb ook wel eens voorbeelden gezien van code waarin goto's duidelijk beter is.... meen dat er een paar goede in code complete stonden.

i3 + moederbord + geheugen kopen?


Acties:
  • 0 Henk 'm!

  • Eskimootje
  • Registratie: Maart 2002
  • Laatst online: 10:55
Boudewijn schreef op maandag 27 juli 2009 @ 16:10:
Functies scheiden de scope van variabelen wel beter dan goto's. Dat lijkt me een goed voorbeeld.
Maar goed, ik heb ook wel eens voorbeelden gezien van code waarin goto's duidelijk beter is.... meen dat er een paar goede in code complete stonden.
Ik heb het even bekeken en onder de volgende voorwaarden staat er inderdaad dat het gebruik van goto's een optie is:
We gaan even uit van een taal waarbij control structures (zoals loops en fors, anders is bijna alles toegestaan) bestaan:
- Er is maximaal 1 label waar naar toe gesprongen word
- Er word alleen voorwaarts in de code gesprongen
- De mogelijkheid van een goto-loze versie is onderzocht
- De goto versie is substantieel sneller of er zijn een grote hoeveelheid if statements nodig om de goto-loze versie te maken
- De goto is goed gedocumenteerd als keuze

Daarnaast geld dat ongeveer 1 op de 100 gevallen het de juiste optie is. Daarnaast word voor bovenstaande voorbeelden (het opruimen van variabele) een try finally block te gebruiken (indien aanwezig).

Acties:
  • 0 Henk 'm!

  • RetroTycoon
  • Registratie: Juli 2008
  • Laatst online: 16-09 12:02
Ik had de volgende code bedacht om xml te creëeren:
PHP:
1
2
echo '<list>';
echo '<lang-a>'.$taala.'</langa>';


Bedacht ik vandaag: zouden er geen ingebouwde functies zijn :+

Acties:
  • 0 Henk 'm!

  • Voutloos
  • Registratie: Januari 2002
  • Niet online
Tja, dat doen hele volkstammen.

Zo zie ik regelmatig scripts die soap berichten opbouwen dmv een hardcoded request met enkel de benodigde vars dynamisch. :X

{signature}


Acties:
  • 0 Henk 'm!

  • Webgnome
  • Registratie: Maart 2001
  • Laatst online: 10:43
Voutloos schreef op woensdag 29 juli 2009 @ 22:15:
Tja, dat doen hele volkstammen.

Zo zie ik regelmatig scripts die soap berichten opbouwen dmv een hardcoded request met enkel de benodigde vars dynamisch. :X
Dat hoeft niet slecht te zijn. Dat hangt helemaal van de context / omgeving af. Als je een taal hebt waar geen voorzieningen zijn om dat soort dingen automagisch te genereren door objecten oid dan moet je soms wel.

Strava | AP | IP | AW


Acties:
  • 0 Henk 'm!

  • Onbekend
  • Registratie: Juni 2005
  • Laatst online: 10:48

Onbekend

...

Soms ben je net zoveel tijd kwijt om de xml door d.m.v. voorgedefinieerde functies te genereren als met zelfgeschreven functies. En dan heb ik liever de zelfgemaakte functies omdat ik dan precies weet wat er wanneer gebeurd, en ben ik niet afhankelijk van eventuele fouten van de programmatuur....

Speel ook Balls Connect en Repeat


Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Onbekend schreef op woensdag 29 juli 2009 @ 23:08:
Soms ben je net zoveel tijd kwijt om de xml door d.m.v. voorgedefinieerde functies te genereren als met zelfgeschreven functies. En dan heb ik liever de zelfgemaakte functies omdat ik dan precies weet wat er wanneer gebeurd, en ben ik niet afhankelijk van eventuele fouten van de programmatuur....
Uh; in 999 van de 1000 gevallen zal je zelfgeschreven functie minder goed zijn dan een "ingebouwde" functie. En als je de documentatie leest weet je ook "precies wat er wanneer gebeurd" met die functies ;)
Voutloos schreef op woensdag 29 juli 2009 @ 22:15:
Tja, dat doen hele volkstammen.
XML uitpoepen op een dergelijke manier is 1 ding. XML inlezen is soms helemaal hilarisch om te zien. Allerlei left$, right$, instr$, mid$, pos$, find$, indexof$ (<<pseudo dus) en god-knows-what voor functies om een beetje die meuk te "lezen". En dan heb je ook nog de eppo's die gewoon keihard char. pos. 78 t/m 80 uitlezen om 1 "int" value uit een XML bestand te lezen. :X :X

[ Voor 29% gewijzigd door RobIII op 29-07-2009 23:16 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • Onbekend
  • Registratie: Juni 2005
  • Laatst online: 10:48

Onbekend

...

RobIII schreef op woensdag 29 juli 2009 @ 23:13:
[...]

Uh; in 999 van de 1000 gevallen zal je zelfgeschreven functie minder goed zijn dan een "ingebouwde" functie. En als je de documentatie leest weet je ook "precies wat er wanneer gebeurd" met die functies ;)
Als er bugs in zitten (paar jaar geleden toen xml net een beetje een standaard werd) ben je heel lang bezig om jouw programmacode aan te passen aan bugs van de software waarmee je moet werken. Tegenwoordig werken er veel programmeurs met xml en zijn er (gelukkig) nauwelijks bugs meer aanwezig. :)

Speel ook Balls Connect en Repeat


Acties:
  • 0 Henk 'm!

  • Gomez12
  • Registratie: Maart 2001
  • Laatst online: 17-10-2023
RobIII schreef op woensdag 29 juli 2009 @ 23:13:
[...]
XML uitpoepen op een dergelijke manier is 1 ding. XML inlezen is soms helemaal hilarisch om te zien. Allerlei left$, right$, instr$, mid$, pos$, find$, indexof$ (<<pseudo dus) en god-knows-what voor functies om een beetje die meuk te "lezen". En dan heb je ook nog de eppo's die gewoon keihard char. pos. 78 t/m 80 uitlezen om 1 "int" value uit een XML bestand te lezen. :X :X
Tsja, hangt maar net van je xml af, als je geregeld 300MB xml's in moet lezen dan zijn de ingebouwde functies vaak niet performant genoeg ( als je maar een kleine subset van die 300 MB nodig hebt ).

Uitpoepen zonder standaard functies vind ik over het algemeen een stuk erger dan inlezen, ik wil er niet eens meer over nadenken hoeveel webservices / xml's ik gezien heb die 999 vd 1000 x goed gaan, maar net die laatste keer staat er niet geencode html in...

Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Onbekend schreef op woensdag 29 juli 2009 @ 23:27:
Als er bugs in zitten (paar jaar geleden toen xml net een beetje een standaard werd)
De hele "XML hype" was zo'n beetje rond de eeuwwisseling en net daarna, dat is dus al bijna 8 tot 10 jaar geleden....
Onbekend schreef op woensdag 29 juli 2009 @ 23:27:
ben je heel lang bezig om jouw programmacode aan te passen aan bugs van de software waarmee je moet werken.
Dat probleem was toen in bepaalde mate wel aanwezig, maar anno 2009 praat je dikke poep als je nog je eigen XML parser gaat zitten schrijven IMHO.

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • TeeDee
  • Registratie: Februari 2001
  • Laatst online: 16-09 22:07

TeeDee

CQB 241

Om in de XML context te blijven, dingen als
XML:
1
2
3
4
5
<node id="melp">value</node>
<node id="blaat">value</node>
<node id="miep1">value</node>
<node id="miep2">value</node>
<node id="miep3">value</node>
zie ik ook regelmatig voorbijvliegen.
Terwijl
XML:
1
2
3
4
5
6
7
<melp>value</melp>
<blaat>value</blaat>
<mieps>
<miep>value</miep>
<miep>value</miep>
<miep>value</miep>
</mieps>
het leven van een developer over het algemeen vele malen makkelijker kan maken. Uiteraard als de andere partij er niks aan kan doen houdt het op. Maar toch...

Heart..pumps blood.Has nothing to do with emotion! Bored


Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Gomez12 schreef op woensdag 29 juli 2009 @ 23:34:
Tsja, hangt maar net van je xml af, als je geregeld 300MB xml's in moet lezen dan zijn de ingebouwde functies vaak niet performant genoeg ( als je maar een kleine subset van die 300 MB nodig hebt ).
Dan gebruik je geen DOM parser maar een SAX parser en niet een shitload een stringfuncties :P :X
TeeDee schreef op woensdag 29 juli 2009 @ 23:39:
Om in de XML context te blijven, dingen als
:D Deze zijn ook altijd leuk:
XML:
1
2
3
<document>
CSVmeuk,CSVmeuk,CSVmeuk,...
</document>

of:
XML:
1
2
3
4
5
<document>
<![CDATA[
base64_vorm_van_oud_binair_bestandsformaat==
]]>
</document>

of, zoals ik heb meegemaakt met EDI berichten:
XML:
1
2
3
4
5
6
7
<document>
UNB+IATB:1+6XPPC+LHPPC+940101:0950+1'
UNH+1+PAORES:93:1:IA'
MSG+1:45'
...
...
</document>

en, ook meegemaakt:
XML:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<document>
Received: from microsoft.net ([69.66.109.194])
        by lodestone.microsoft.net with ESMTP
        id HAA19424
        for &lt;sample@microsoft.net&gt;; Fri, 5 Mar 
        2004 07:30:22 -0800
From: firstname.lastname@sample.state.ia.us
Message-Id: 
  &lt;200403051530.HAA19424@lodestone.microsoft.net&gt;
To: sample@microsoft.net
Subject: Re: Your bill
Date: Fri, 5 Mar 2004 09:36:35 -0600
X-Priority: 3
X-MSMail-Priority: Normal
blatiebla
</document>

:X :X

[ Voor 61% gewijzigd door RobIII op 29-07-2009 23:50 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • Onbekend
  • Registratie: Juni 2005
  • Laatst online: 10:48

Onbekend

...

RobIII schreef op woensdag 29 juli 2009 @ 23:37:
Dat probleem was toen in bepaalde mate wel aanwezig, maar anno 2009 praat je dikke poep als je nog je eigen XML parser gaat zitten schrijven IMHO.
Het is inderdaad niet meer nodig om er zelf 1 te schrijven, alhoewel er wel flinke prestatieverschillen in verschillende xml-parsers zitten. Vooral bij bestanden van 50MB e.d. merk je dat echt. :D

Speel ook Balls Connect en Repeat


Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Onbekend schreef op woensdag 29 juli 2009 @ 23:42:
[...]

Het is inderdaad niet meer nodig om er zelf 1 te schrijven, alhoewel er wel flinke prestatieverschillen in verschillende xml-parsers zitten. Vooral bij bestanden van 50MB e.d. merk je dat echt. :D
Zoals ik al zei: Zolang je niet de gehele DOM tree nodig hebt kom je vaak weg met een goeie SAX parser en dan is 50MB peanuts ;)

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • matthijsln
  • Registratie: Augustus 2002
  • Nu online
RobIII schreef op woensdag 29 juli 2009 @ 23:13:
XML uitpoepen op een dergelijke manier is 1 ding. XML inlezen is soms helemaal hilarisch om te zien. Allerlei left$, right$, instr$, mid$, pos$, find$, indexof$ (<<pseudo dus) en god-knows-what voor functies om een beetje die meuk te "lezen". En dan heb je ook nog de eppo's die gewoon keihard char. pos. 78 t/m 80 uitlezen om 1 "int" value uit een XML bestand te lezen. :X :X
Guilty as charged! Onderstaande code is uit 2003 dus laten we het op een jeugdzonde houden.

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
/* ...wel erg uitgebreid gedocumenteerd, documentatie verwijderd... */
function xml_get_tag_regexp($xml, $tag, $keep_tags = FALSE) {
    $regexp = '/(\<'.$tag.'(\s+[^\>]*)?\>)(.*)(<\/'.$tag.'\>)/is';

    if(preg_match($regexp, $xml, $matches) === 0) {
        return FALSE;
    } else {
        if($keep_tags) {
            return $matches[0];
        } else {
            return $matches[3];
        }
    }
}


In my defense heb ik op een andere plek in het project wel met xml_parse() gewerkt. Maar daar word je voor simpele xml toch niet vrolijk van.

Dit was in de tijd van php 4. Als je dit artikel leest staat daar in dat in die tijd werken met xml in php gewoon geen pretje was, zelfs met sax en dom. Dat mensen dan met regexps or strpos gaan werken, tja...

Ik lees in dat artikel dat je sinds php 5 ook simplexml hebt. Alhoewel ik toch liever een statically typed xml binding framework ala JAXB heb dan simplexml... Maar goed dat is natuurlijk de "stijl" van php. Hoe de kwaliteit van simplexml verder is weet ik niet, maar ik heb er m'n twijfels over...

Acties:
  • 0 Henk 'm!

  • matthijsln
  • Registratie: Augustus 2002
  • Nu online
RobIII schreef op woensdag 29 juli 2009 @ 23:45:
[...]
Zoals ik al zei: Zolang je niet de gehele DOM tree nodig hebt kom je vaak weg met een goeie SAX parser en dan is 50MB peanuts ;)
Voor Java heb je als SAX te ingewikkeld wordt met state bijhouden in je handlers nu ook de mogelijkheid om StAX (Streaming API for XML).te gebruiken

Acties:
  • 0 Henk 'm!

  • Sebazzz
  • Registratie: September 2006
  • Laatst online: 16-09 15:42

Sebazzz

3dp

RobIII schreef op woensdag 29 juli 2009 @ 23:13:
XML uitpoepen op een dergelijke manier is 1 ding. XML inlezen is soms helemaal hilarisch om te zien. Allerlei left$, right$, instr$, mid$, pos$, find$, indexof$ (<<pseudo dus) en god-knows-what voor functies om een beetje die meuk te "lezen". En dan heb je ook nog de eppo's die gewoon keihard char. pos. 78 t/m 80 uitlezen om 1 "int" value uit een XML bestand te lezen. :X :X
Dat zijn dezelfden die niet snappen waar XML nou zo goed voor is ;)

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


Acties:
  • 0 Henk 'm!

  • Boudewijn
  • Registratie: Februari 2004
  • Niet online

Boudewijn

omdat het kan

Eskimootje schreef op maandag 27 juli 2009 @ 20:31:
[...]

Ik heb het even bekeken en onder de volgende voorwaarden staat er inderdaad dat het gebruik van goto's een optie is:
We gaan even uit van een taal waarbij control structures (zoals loops en fors, anders is bijna alles toegestaan) bestaan:
- Er is maximaal 1 label waar naar toe gesprongen word
- Er word alleen voorwaarts in de code gesprongen
- De mogelijkheid van een goto-loze versie is onderzocht
- De goto versie is substantieel sneller of er zijn een grote hoeveelheid if statements nodig om de goto-loze versie te maken
- De goto is goed gedocumenteerd als keuze

Daarnaast geld dat ongeveer 1 op de 100 gevallen het de juiste optie is. Daarnaast word voor bovenstaande voorbeelden (het opruimen van variabele) een try finally block te gebruiken (indien aanwezig).
Inderdaad, dat is het mooie van software engineering. DIngen zijn (bijna) nooit per definitie goed of fout.


Code complete zegt daar inderdaad bij tijd en wijlen wat nuttigs over.

i3 + moederbord + geheugen kopen?


Acties:
  • 0 Henk 'm!

  • Grijze Vos
  • Registratie: December 2002
  • Laatst online: 28-02 22:17
RobIII schreef op woensdag 29 juli 2009 @ 23:39:
:D Deze zijn ook altijd leuk:
XML:
1
2
3
<document>
CSVmeuk,CSVmeuk,CSVmeuk,...
</document>
Hehe, inderdaad. Doet me denken aan Afas Profit. Die heeft een "Webservices" connector. Als je daar een proxy voor generate in VS.NET krijg je dit:

C#:
1
2
3
4
5
6
7
8
9
10
        [System.Web.Services.Protocols.SoapDocumentMethodAttribute("urn:Afas.Profit.Services/GetData", RequestNamespace="urn:Afas.Profit.Services", ResponseNamespace="urn:Afas.Profit.Services", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]
        public string GetData(string environmentId, string userId, string password, string logonAs, string connectorId, string filtersXml) {
            object[] results = this.Invoke("GetData", new object[] {
                        environmentId,
                        userId,
                        password,
                        logonAs,
                        connectorId,
                        filtersXml});
            return ((string)(results[0]));


connectorId is de naam van de tabel die je hebben wilt, en hij returned de XML-serialized dump van de tabel. Als ik dus zinnige proxies wil generen moet ik elke keer weer hannesen met de XML files en de proxy generator op de command line.

Op zoek naar een nieuwe collega, .NET webdev, voornamelijk productontwikkeling. DM voor meer info


Acties:
  • 0 Henk 'm!

  • YopY
  • Registratie: September 2003
  • Laatst online: 13-07 01:14
Ik ben / was zelf ook schuldig aan het gebruik van string functies om een bepaald iets uit de source van een webpagina te halen, :/. Het werkte overigens wel, daar niet om, maar mooi was het niet. Is er ook een XML parser die goed met soms brakke HTML overweg kan overigens? (Java, overigens).

En bij een vorig project had ik een DOM-parser gemaakt die zichzelf verhing bij XML bestanden groter dan 5 MB. SAX brandde zo door 100 MB zonder horten of stoten, binnen een seconde oid - wel snel.

Acties:
  • 0 Henk 'm!

  • Little Penguin
  • Registratie: September 2000
  • Laatst online: 08-06 20:43
YopY schreef op vrijdag 31 juli 2009 @ 12:16:
Is er ook een XML parser die goed met soms brakke HTML overweg kan overigens? (Java, overigens).
Er is wel een parser die (brakke) HTML aankan en om kan zetten naar een DOM-tree en eventueel ook naar correcte HTML.

Dat is JTidy, een Java implementaty van HTMLTidy.

Een "echte" XML parser die ook HTML aankan ben ik eigenlijk nog nooit tegengekomen. Gaat 't echter om mogelijk brakke XHTML, dan kan JTidy denk ik wel de HTML logica uit 't document destilleren...

Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

YopY schreef op vrijdag 31 juli 2009 @ 12:16:Is er ook een XML parser die goed met soms brakke HTML overweg kan overigens? (Java, overigens).
Voor (al dan niet brakke) HTML moet je gewoon een HTML parser gebruiken natuurlijk. Wellicht is de validator.nu HTML5 parser iets voor je; het HTML5 parsing-algoritme is in ieder geval meer in lijn met wat browsers ook doen dan HTML parsers die gebaseerd zijn op de HTML4 specificatie (en dus SGML).

Intentionally left blank


Acties:
  • 0 Henk 'm!

  • Snake
  • Registratie: Juli 2005
  • Laatst online: 07-03-2024

Snake

Los Angeles, CA, USA

crisp schreef op vrijdag 31 juli 2009 @ 12:45:
[...]

Voor (al dan niet brakke) HTML moet je gewoon een HTML parser gebruiken natuurlijk. Wellicht is de validator.nu HTML5 parser iets voor je; het HTML5 parsing-algoritme is in ieder geval meer in lijn met wat browsers ook doen dan HTML parsers die gebaseerd zijn op de HTML4 specificatie (en dus SGML).
Kan je HTML5 ook forceren als XML? Zodat je het kan schrijven als XML, en ook die headers meesturen? Want ik heb al zitten te Googlen op HTML5 + XML maar dat levert niets bruikbaar op.

Going for adventure, lots of sun and a convertible! | GMT-8


Acties:
  • 0 Henk 'm!

  • user109731
  • Registratie: Maart 2004
  • Niet online
Snake schreef op vrijdag 31 juli 2009 @ 18:10:
[...]
Kan je HTML5 ook forceren als XML?
HTML 5 heeft idd ook een XML syntax (XHTML5).
The second concrete syntax uses XML, and is known as "XHTML5". When a document is transmitted with an XML MIME type, such as application/xhtml+xml, then it is processed by an XML processor by Web browsers, and treated as an "XHTML5" document. Authors are reminded that the processing for XML and HTML differs; in particular, even minor syntax errors will prevent an XML document from being rendered fully, whereas they would be ignored in the "HTML5" syntax.

Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Van een nieuw op te leveren niet nader te noemen site...
JavaScript:
1
2
var tldList = "eu|ac|ad|ae|aero|af|ag|ai|al|am|an|ao|aq|ar|arpa|as|at|au|aw|ax|az|ba|bb|bd|be|bf|bg|bh|bi|biz|bj|bm|bn|bo|br|bs|bt|bv|bw|by|bz|ca|cat|cc|cd|cf|cg|ch|ci|ck|cl|cm|cn|co|com|coop|cr|cu|cv|cx|cy|cz|de|dj|dk|dm|do|dz|ec|edu|ee|eg|er|es|et|eu|fi|fj|fk|fm|fo|fr|ga|gb|gd|ge|gf|gg|gh|gi|gl|gm|gn|gov|gp|gq|gr|gs|gt|gu|gw|gy|hk|hm|hn|hr|ht|hu|id|ie|il|im|in|info|int|io|iq|ir|is|it|je|jm|jo|jobs|jp|ke|kg|kh|ki|km|kn|kr|kw|ky|kz|la|lb|lc|li|lk|lr|ls|lt|lu|lv|ly|ma|mc|md|mg|mh|mil|mk|ml|mm|mn|mo|mobi|mp|mq|mr|ms|mt|mu|museum|mv|mw|mx|my|mz|na|name|nc|ne|net|nf|ng|ni|nl|no|np|nr|nu|nz|om|org|pa|pe|pf|pg|ph|pk|pl|pm|pn|pr|pro|ps|pt|pw|py|qa|re|ro|ru|rw|sa|sb|sc|sd|se|sg|sh|si|sj|sk|sl|sm|sn|so|sr|st|su|sv|sy|sz|tc|td|tf|tg|th|tj|tk|tl|tm|tn|to|tp|tr|travel|tt|tv|tw|tz|ua|ug|uk|um|us|uy|uz|va|vc|ve|vg|vi|vn|vu|wf|ws|ye|yt|yu|za|zm|zw";
var email_validation = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;


Wél een lijst hebben met TLD's (dude, wie gaat dat bijhouden*? :X :') ) met daarin netjes het .museum tld en dan een regel lager tld's van 2 tot 4 tekens afdwingen :X |:( 8)7

* Ik heb 't eigenlijk niet meer gevolgd, maar is 't er al door? Volgens mij (nog) niet?

En dan wil je niet weten wat ik nog aan XSS lekken en SQL injectie mogelijkheden en client-side-only validaties ben tegen gekomen :| Je kunt beter vragen welk tekstveld niet voor minimaal 2 v.d. 3 vatbaar was :o

En nee, het is niet mijn eigen code ;)

[ Voor 8% gewijzigd door RobIII op 01-08-2009 04:25 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • Sebazzz
  • Registratie: September 2006
  • Laatst online: 16-09 15:42

Sebazzz

3dp

Voor een bedrijfsomgeving waar slechts één browser met één bepaalde set instellingen gebruikt wordt kan je client-side only validaties doen. Het is nog steeds fout en ik zou het niet doen, maar het is niet zomg-de-wereld-vergaat-superfout.

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


Acties:
  • 0 Henk 'm!

  • RetroTycoon
  • Registratie: Juli 2008
  • Laatst online: 16-09 12:02
RobIII schreef op zaterdag 01 augustus 2009 @ 03:29:
Van een nieuw op te leveren niet nader te noemen site...
JavaScript:
1
2
var tldList = "eu|ac|ad|ae|aero|af|ag|ai|al|am|an|ao|aq|ar|arpa|as|at|au|aw|ax|az|ba|bb|bd|be|bf|bg|bh|bi|biz|bj|bm|bn|bo|br|bs|bt|bv|bw|by|bz|ca|cat|cc|cd|cf|cg|ch|ci|ck|cl|cm|cn|co|com|coop|cr|cu|cv|cx|cy|cz|de|dj|dk|dm|do|dz|ec|edu|ee|eg|er|es|et|eu|fi|fj|fk|fm|fo|fr|ga|gb|gd|ge|gf|gg|gh|gi|gl|gm|gn|gov|gp|gq|gr|gs|gt|gu|gw|gy|hk|hm|hn|hr|ht|hu|id|ie|il|im|in|info|int|io|iq|ir|is|it|je|jm|jo|jobs|jp|ke|kg|kh|ki|km|kn|kr|kw|ky|kz|la|lb|lc|li|lk|lr|ls|lt|lu|lv|ly|ma|mc|md|mg|mh|mil|mk|ml|mm|mn|mo|mobi|mp|mq|mr|ms|mt|mu|museum|mv|mw|mx|my|mz|na|name|nc|ne|net|nf|ng|ni|nl|no|np|nr|nu|nz|om|org|pa|pe|pf|pg|ph|pk|pl|pm|pn|pr|pro|ps|pt|pw|py|qa|re|ro|ru|rw|sa|sb|sc|sd|se|sg|sh|si|sj|sk|sl|sm|sn|so|sr|st|su|sv|sy|sz|tc|td|tf|tg|th|tj|tk|tl|tm|tn|to|tp|tr|travel|tt|tv|tw|tz|ua|ug|uk|um|us|uy|uz|va|vc|ve|vg|vi|vn|vu|wf|ws|ye|yt|yu|za|zm|zw";
var email_validation = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;


Wél een lijst hebben met TLD's (dude, wie gaat dat bijhouden*? :X :') ) met daarin netjes het .museum tld en dan een regel lager tld's van 2 tot 4 tekens afdwingen :X |:( 8)7

* Ik heb 't eigenlijk niet meer gevolgd, maar is 't er al door? Volgens mij (nog) niet?

En dan wil je niet weten wat ik nog aan XSS lekken en SQL injectie mogelijkheden en client-side-only validaties ben tegen gekomen :| Je kunt beter vragen welk tekstveld niet voor minimaal 2 v.d. 3 vatbaar was :o

En nee, het is niet mijn eigen code ;)
Da's idd wel ff schrikken :O

Acties:
  • 0 Henk 'm!

  • Voutloos
  • Registratie: Januari 2002
  • Niet online
Sebazzz schreef op zaterdag 01 augustus 2009 @ 10:58:
Voor een bedrijfsomgeving waar slechts één browser met één bepaalde set instellingen gebruikt wordt kan je client-side only validaties doen. Het is nog steeds fout en ik zou het niet doen, maar het is niet zomg-de-wereld-vergaat-superfout.
Deze '1 browser en alle users zijn braaf'-aanname is dusdanig fout dat je nu toch wel even grondig je mond moet gaan spoelen. :X Browsers veranderen, users veranderen. Puur dat een bepaalde werkomgeving klaar staat betekent nog niet dat de user die er van af weet te wijken in een keer alle rechten (dankzij sql injecties) mag hebben bijvoorbeeld.

Security shortcuts als deze zijn echt ultiem stupide. De tradeoff tussen een klein beetje extra werk vs een grote kans op grote schade.

{signature}


Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Sebazzz schreef op zaterdag 01 augustus 2009 @ 10:58:
Voor een bedrijfsomgeving waar slechts één browser met één bepaalde set instellingen gebruikt wordt kan je client-side only validaties doen. Het is nog steeds fout en ik zou het niet doen, maar het is niet zomg-de-wereld-vergaat-superfout.
Wat Voutloos zegt. Het feit alleen al dat iemand bepaalde zaken achterwege laat (of bereid is achterwege te laten) omdat het "toch een bedrijfsomgeving is" is gewoon dom. Je weet niet wat je aan ontevreden medewerkers hebt op een dag of wanneer de typmiep per-ongeluk een keer een quote verkeerd typt ergens. En assumptions are the mother of... Veiligheid bouw je niet naderhand effe in; dat doe je vanaf de eerste regel code die je schrijft. Dat je ergens eens een steek laat vallen; shit happens. Niet goed, maar we zijn en blijven mensen. Dat je het consequent achterwege laat: onvergeeflijk.

Bovendien gaat het niet om een bedrijfsomgeving met intern site-je, het gaat om een grote commerciële e-commerce site. :X

[ Voor 16% gewijzigd door RobIII op 01-08-2009 14:18 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • Zoijar
  • Registratie: September 2001
  • Niet online

Zoijar

Because he doesn't row...

Sebazzz schreef op zaterdag 01 augustus 2009 @ 10:58:
Het is nog steeds fout en ik zou het niet doen, maar het is niet zomg-de-wereld-vergaat-superfout.
Zo'n fout is het juist wel; dit zijn toch wel de ergste bugs die je kan laten zitten. Een applicatie die een keer crashed en dan opnieuw opgestart kan worden is juist niet zo'n ramp.

Doet me al weer meteen aan deze denken :)

Afbeeldingslocatie: http://imgs.xkcd.com/comics/exploits_of_a_mom.png

Acties:
  • 0 Henk 'm!

Verwijderd

Tsja, je vraagt je af wat erger is: dat de betreffende school een systeem heeft dat vatbaar is voor injectie, of dat de school naderhand ook nog eens verhaal komt halen bij de ouders... 8)7

Acties:
  • 0 Henk 'm!

  • Maghiel
  • Registratie: Maart 2004
  • Laatst online: 13-09 14:01
ValHallASW schreef op zaterdag 25 juli 2009 @ 21:32:
Zowel voor ON ERROR GOTO als ON ERROR RESUME NEXT geldt dat je zelf de foutafhandeling moet doen, en dat het dus niet per definitie fout. De opmerking van Sebazzz dat 'goto een no-go is' is hier dan ook gewoon onzin. Het enige foute is dat er geen correcte foutafhandeling plaatsvindt; wat dat betreft is het functioneel equivalent aan
C#:
1
2
3
4
5
try {
  ....
} catch (Exception e) {
  return;
}
Ik vind dit niet per definitie fout.
Ik heb zelf te maken met een webservice met muziek die vaak plat ligt of foute resultaten geeft etc.
En dan met muziek die wij zelf hebben staan.

Een kaal voorbeeld: nieuwste albums ophalen

PHP:
1
2
3
4
5
6
7
8
9
        try
        {
            $result = $this->webservice->executeCommand($cmd, $attrib);
        }
        catch (Exception $error)
        {
            // Schrijf $error->getMessage() weg naar een log
            return;
        }


De laag die hierboven zit roept alle muziek bronnen aan en maakt daar een lijst van nieuwste albums van.
Met wat ik hierboven doe zorg ik dat die laag erboven gewoon denkt, ok, die bron heeft even niets, ik bouw wel een lijst met wat ik wel krijg. Zonder dat ik de gebruiker lastig val, die moet daar niets van merken.
En zelf kan ik dan wel in een log teruglezen wat er mis ging.

Acties:
  • 0 Henk 'm!

  • Matis
  • Registratie: Januari 2007
  • Laatst online: 16-09 22:28

Matis

Rubber Rocket

Klopt, ik vind dit opzich ook niet zo'n slechte oplossing, mooier zou het zijn met een finally ertussen, maar op deze manier van je toch je eventuele foutjes af ;)

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


Acties:
  • 0 Henk 'm!

  • Erkens
  • Registratie: December 2001
  • Niet online

Erkens

Fotograaf

Maghiel schreef op zaterdag 01 augustus 2009 @ 23:33:
En zelf kan ik dan wel in een log teruglezen wat er mis ging.
dus je doet toch nog iets nuttigs in je "catch" ;)

Acties:
  • 0 Henk 'm!

  • Maghiel
  • Registratie: Maart 2004
  • Laatst online: 13-09 14:01
Matis schreef op zaterdag 01 augustus 2009 @ 23:37:
[...]

Klopt, ik vind dit opzich ook niet zo'n slechte oplossing, mooier zou het zijn met een finally ertussen, maar op deze manier van je toch je eventuele foutjes af ;)
En dat bestaat in php? :p
Erkens schreef op zaterdag 01 augustus 2009 @ 23:38:
[...]
dus je doet toch nog iets nuttigs in je "catch" ;)
Maar omdat ik weet dat die service zo vaak fouten geeft, zou ik ook een return zonder te schrijven naar een log rechtvaardig vinden.

Acties:
  • 0 Henk 'm!

  • Matis
  • Registratie: Januari 2007
  • Laatst online: 16-09 22:28

Matis

Rubber Rocket

Je beantwoord je eigen vraag :P

Ik had het meer over het C# stukje ;)
http://msdn.microsoft.com.../dszsf989%28VS.71%29.aspx

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


Acties:
  • 0 Henk 'm!

  • Maghiel
  • Registratie: Maart 2004
  • Laatst online: 13-09 14:01
Matis schreef op zondag 02 augustus 2009 @ 00:06:
[...]

Je beantwoord je eigen vraag :P

Ik had het meer over het C# stukje ;)
http://msdn.microsoft.com.../dszsf989%28VS.71%29.aspx
True, maar het ging me meer om het basis voorbeeld.
Ik schrijf zelf bijna enkel in php vandaar.
Ik zal de bedoeling van het voorbeeld daarom misschien niet door hebbeb :p

(Offtopic: door de jaren heen vind ik php steeds meer een klote taal met teveel tekortkomingen etc, maar het is mijn taal dus ik probeer er het beste van te maken ;))

Acties:
  • 0 Henk 'm!

Verwijderd

Voutloos schreef op zaterdag 01 augustus 2009 @ 12:38:
[...]
Deze '1 browser en alle users zijn braaf'-aanname is dusdanig fout dat je nu toch wel even grondig je mond moet gaan spoelen. :X
Valt wel mee, wij zaten ook min of meer vast aan IE 6. Je mocht wel een andere browser naast IE gebruiken, maar daar kon je geen administratieve zaken (uren registratie, verlof et cetera) mee verwerken.

Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Verwijderd schreef op zondag 02 augustus 2009 @ 12:36:
[...]

Valt wel mee, wij zaten ook min of meer vast aan IE 6. Je mocht wel een andere browser naast IE gebruiken, maar daar kon je geen administratieve zaken (uren registratie, verlof et cetera) mee verwerken.
Daar gaat het ook niet over; het gaat erover dat je de aanname doet dat niemand kwaad zou willen (of wellicht zelfs onbewust kwaad zou uitrichten door een quote ergens verkeerd te zetten ofzo).

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • Matis
  • Registratie: Januari 2007
  • Laatst online: 16-09 22:28

Matis

Rubber Rocket

Verwijderd schreef op zondag 02 augustus 2009 @ 12:36:
[...]

Valt wel mee, wij zaten ook min of meer vast aan IE 6. Je mocht wel een andere browser naast IE gebruiken, maar daar kon je geen administratieve zaken (uren registratie, verlof et cetera) mee verwerken.
Gebruiken jullie ook het ozogeweldige PROTIME :) :r

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


Acties:
  • 0 Henk 'm!

  • dcm360
  • Registratie: December 2006
  • Niet online

dcm360

Moderator Discord

HD7767 powered

En ik was ook weer eens lekker bezig...
Delphi:
1
2
3
4
5
6
7
var preCount:cardinal;
//...
while ... do begin
  preCount:=getTickCount;
  //...hele lap code...
  sleep(1000+preCount-getTickCount);
end;
En ik me maar afvragen waarom mn programma 'vastliep' wanneer ik veel I/O had of een ander programma de processor flink gebruikte 8)7

Acties:
  • 0 Henk 'm!

Verwijderd

Matis schreef op zondag 02 augustus 2009 @ 12:47:
[...]

Gebruiken jullie ook het ozogeweldige PROTIME :) :r
Nee, eigen software, maar er waren wat problemen met IE> 6 :s
Best brak ;)

Acties:
  • 0 Henk 'm!

  • Soultaker
  • Registratie: September 2000
  • Laatst online: 00:49
dcm360 schreef op zondag 02 augustus 2009 @ 16:29:
En ik me maar afvragen waarom mn programma 'vastliep' wanneer ik veel I/O had of een ander programma de processor flink gebruikte 8)7
Waarom dan? Die cardinal is unsigned en dan overflowt 'ie naar een groot getal als je ...hele lap code... langer dan een seconde duurt ofzo?

Acties:
  • 0 Henk 'm!

  • dcm360
  • Registratie: December 2006
  • Niet online

dcm360

Moderator Discord

HD7767 powered

Inderdaad. Andere opties waren er niet, want geen van de threads van mn programma hadden de status suspended, en ik kreeg ook geen melding in mn logboek. Daarnaast moets ik het programma met taakbeheer afsluiten, dus dat bij elkaar wees op een iets uit de hand gelopen dutje. En nu ik een controle heb ingebouwd of het getal niet te groot wordt loopt het als een zonnetje :)

Acties:
  • 0 Henk 'm!

  • HawVer
  • Registratie: Februari 2002
  • Laatst online: 13-09 16:51
Wat ik nou toch weer tegenkom.. 8)7

Delphi:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
Function TfrmMain.ConvertFloat(Veld:String):String;
var
   DecPos :Integer;            //Positie van decimalpoint
   Decnot : String;            //wat de decimal posint niet moet wezen
   DecStr : String;
begin
// DEZE FUNCTIE zet de decimal separator in een veld om van , naar een punt indien nodig.
   if DecimalSeparator = '.' then
   begin
      Result := Veld;
      exit;
   end;
   Decnot := ',';
   Decstr := Veld;
   DecPos := Pos(DecNot,DecStr);
   if Decpos <> 0 then
   begin
      Delete(DecStr,Decpos,1);
      Insert('.',DecStr,Decpos );
   end;
   Result := DecStr;
end;

DecimalSeparator is een variabele, die kun je dus instellen. Als je daarna een float to string gebruikt wordt netjes de juiste punt/komma gebruikt.

http://hawvie.deviantart.com/


Acties:
  • 0 Henk 'm!

  • roy-t
  • Registratie: Oktober 2004
  • Laatst online: 08-09 11:33
HawVer schreef op woensdag 05 augustus 2009 @ 21:35:
Wat ik nou toch weer tegenkom.. 8)7

Delphi:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
Function TfrmMain.ConvertFloat(Veld:String):String;
var
   DecPos :Integer;            //Positie van decimalpoint
   Decnot : String;            //wat de decimal posint niet moet wezen
   DecStr : String;
begin
// DEZE FUNCTIE zet de decimal separator in een veld om van , naar een punt indien nodig.
   if DecimalSeparator = '.' then
   begin
      Result := Veld;
      exit;
   end;
   Decnot := ',';
   Decstr := Veld;
   DecPos := Pos(DecNot,DecStr);
   if Decpos <> 0 then
   begin
      Delete(DecStr,Decpos,1);
      Insert('.',DecStr,Decpos );
   end;
   Result := DecStr;
end;

DecimalSeparator is een variabele, die kun je dus instellen. Als je daarna een float to string gebruikt wordt netjes de juiste punt/komma gebruikt.
Heeft delphi niet iets als Enviroment.DecimalSeperator, of Culture of..? Verder is de code toch wel ok voor wat het doet (alhoewel ik nooit Delphi gedaan heb)

~ Mijn prog blog!


Acties:
  • 0 Henk 'm!

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 09:27

Creepy

Tactical Espionage Splatterer

Delphi heeft een DecimalSeperator o.i.d. ja. Sterker nog, die gebruikt de code van HawVer ook ;)

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


Acties:
  • 0 Henk 'm!

  • HawVer
  • Registratie: Februari 2002
  • Laatst online: 13-09 16:51
roy-t schreef op woensdag 05 augustus 2009 @ 22:21:
[...]
Heeft delphi niet iets als Enviroment.DecimalSeperator, of Culture of..? Verder is de code toch wel ok voor wat het doet (alhoewel ik nooit Delphi gedaan heb)
De decimalseperator kun je instellen voordat je FloatToStr uitvoert. Dan weet je zeker dat je string de juiste seperator gebruikt.

Daarnaast is de manier waarop een stukje in een string vervangen wordt nogal een stenentijdperk oplossing. Je kunt ook de punt vervangen met:

Delphi:
1
AnsiReplaceString(waarde,',','.');

http://hawvie.deviantart.com/


Acties:
  • 0 Henk 'm!

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

NMe

Quia Ego Sic Dico.

Topicstarter
Wat ik net toch tegenkom in mijn eigen code... Hiermee verdien ik de publiekelijke schandpaal. :P
PHP:
1
2
3
4
5
6
7
8
if (empty($projectGroup))
{
  //snip 10 regels code
  if (!empty($projectGroup))
  {
    //snip
  }
}

En jawel hoor, daarmee kon je dus inderdaad niet op projectgroep zoeken. Geen idee hoe dat ooit door mijn tests heen in productie gekomen is. En belangrijker: hoe dat na ongeveer een maand nog geen bugreport opgeleverd heeft. :+

'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!

  • Sebazzz
  • Registratie: September 2006
  • Laatst online: 16-09 15:42

Sebazzz

3dp

Niet zo zeer een slecht programmeervoorbeeld denk ik. Als je vermoeid ben ga je fouten maken. Misschien heb je dat stukje code gewoon om 01:00 's nachts geschreven en dan maak je makkelijk domme fouten zonder dat je ze ziet. En anders was het gewoon een brainfart :p

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


Acties:
  • 0 Henk 'm!

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

NMe

Quia Ego Sic Dico.

Topicstarter
't Is gewoon overdag op kantoor geschreven. :P

Verder is 't niet zozeer een slecht programmeervoorbeeld maar wel geinig dat het al een tijdje in productie draait en het niemand is opgevallen. :P

'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!

  • Dido
  • Registratie: Maart 2002
  • Laatst online: 10:51

Dido

heforshe

NMe schreef op zondag 16 augustus 2009 @ 21:32:
Wat ik net toch tegenkom in mijn eigen code... Hiermee verdien ik de publiekelijke schandpaal. :P
Code die niet uitgevoerd wordt levert ook geen fouten op, toch? 8)7

Ik heb twee volledige projecten in productie staan die al maanden geen bugs opleveren - maar ja, niemand gebruikt het |:(

Wat betekent mijn avatar?


Acties:
  • 0 Henk 'm!

Verwijderd

RobIII schreef op zondag 02 augustus 2009 @ 12:44:
[...]

Daar gaat het ook niet over; het gaat erover dat je de aanname doet dat niemand kwaad zou willen (of wellicht zelfs onbewust kwaad zou uitrichten door een quote ergens verkeerd te zetten ofzo).
Dat is een aanname die aan de binnenkant van een bedrijfsnetwerk wel vaker gedaan word. Ik zou zelf zo ook niet zo snel op die manier een applicatie in elkaar vouwen maar ik kan wel voorbeelden geven van grotere applicaties die zo in elkaar steken.

Daarnaast denk ik dat dit nog het minste probleem is van de binnen kant van meeste bedrijfs netwerken. Bij de meeste bedrijven loopt heel wat unencrypted vekeer over het netwerk wat iedere fool with tools zo kan sniffen.

Acties:
  • 0 Henk 'm!

  • YopY
  • Registratie: September 2003
  • Laatst online: 13-07 01:14
NMe schreef op zondag 16 augustus 2009 @ 21:32:
Wat ik net toch tegenkom in mijn eigen code... Hiermee verdien ik de publiekelijke schandpaal. :P
PHP:
1
2
3
4
5
6
7
8
if (empty($projectGroup))
{
  //snip 10 regels code
  if (!empty($projectGroup))
  {
    //snip
  }
}

En jawel hoor, daarmee kon je dus inderdaad niet op projectgroep zoeken. Geen idee hoe dat ooit door mijn tests heen in productie gekomen is. En belangrijker: hoe dat na ongeveer een maand nog geen bugreport opgeleverd heeft. :+
Je zou naast je tests ook een programma zoals Cobertura toe kunnen voegen aan je build proces (als er ook zoiets is voor PHP), die controleert welke regels code door je tests uitgevoerd worden. Zo zou je dit soort fouten kunnen voorkomen.

Dat, of code reviews - laat een ander je code nalopen. Moet natuurlijk wel een optie zijn.

Acties:
  • 0 Henk 'm!

  • Erkens
  • Registratie: December 2001
  • Niet online

Erkens

Fotograaf

NMe schreef op zondag 16 augustus 2009 @ 21:43:
Verder is 't niet zozeer een slecht programmeervoorbeeld maar wel geinig dat het al een tijdje in productie draait en het niemand is opgevallen. :P
mja, dat soort code ben ik van mijzelf ook wel eens tegen gekomen. Over het algemeen komt dat gewoon voort uit "oude" code waarbij de test condities zijn veranderd :P

Aan de andere kant kan het natuurlijk ook zijn dat je in die 10 regels code $projectGroup hebt geprobeerd te vullen met een waarde, en dat kan natuurlijk ook gefaalt hebben :)

Acties:
  • 0 Henk 'm!

  • HawVer
  • Registratie: Februari 2002
  • Laatst online: 13-09 16:51
Dido schreef op zondag 16 augustus 2009 @ 22:26:
[...]

Code die niet uitgevoerd wordt levert ook geen fouten op, toch? 8)7

Ik heb twee volledige projecten in productie staan die al maanden geen bugs opleveren - maar ja, niemand gebruikt het |:(
8)7 Dat is ook zonde van je tijd dan? Zit het nog wel in de planning? Of is je project bij voorbaat al afgeschoten?

http://hawvie.deviantart.com/


Acties:
  • 0 Henk 'm!

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

NMe

Quia Ego Sic Dico.

Topicstarter
Erkens schreef op maandag 17 augustus 2009 @ 09:42:
[...]

Aan de andere kant kan het natuurlijk ook zijn dat je in die 10 regels code $projectGroup hebt geprobeerd te vullen met een waarde, en dat kan natuurlijk ook gefaalt hebben :)
Nope, gewoon wat andere checks op andere waarden. :+
HawVer schreef op maandag 17 augustus 2009 @ 11:11:
[...]

8)7 Dat is ook zonde van je tijd dan? Zit het nog wel in de planning? Of is je project bij voorbaat al afgeschoten?
Zonde van de tijd hoeft het niet te zijn zolang je ervoor betaald hebt gekregen. :P Maar lullig is het wel; ik heb in mijn eerste stage een compleet stukje forumsoftware geschreven (ziekenhuis, wilde per se custom software...) waarop uiteindelijk nooit meer dan een testberichtje is geplaatst...

'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!

  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
Ik heb voor de NATO ooit een stukje software ( gedeeltelijk ) gemaakt, terwijl aan het begin al duidelijk was dat er niet genoeg geld was om het af te maken ;). Het doel was dan ook om het er zo leuk mogelijk uit te laten zien, zodat ze meer geld los konden peuteren om verder te gaan :+

“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!

  • king_charles
  • Registratie: Maart 2008
  • Laatst online: 15-08-2023
Is dat plan uiteindelijk ook geslaagd?

Acties:
  • 0 Henk 'm!

  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
Er is ooit wel weer wat aan gedaan, want ik ben nog eens gebeld voor wat advies, maar ik weet niet of het ook ooit afgekomen is. Had ik ook niet verwacht, want alhoewel het project zelf niet classified was, waren ze daar wel erg op security gericht ;). Ik mocht destijds niet eens naar de wc zonder begeleiding :+

[ Voor 10% gewijzigd door Woy op 17-08-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!

  • HawVer
  • Registratie: Februari 2002
  • Laatst online: 13-09 16:51
[...]
Zonde van de tijd hoeft het niet te zijn zolang je ervoor betaald hebt gekregen. :P Maar lullig is het wel; ik heb in mijn eerste stage een compleet stukje forumsoftware geschreven (ziekenhuis, wilde per se custom software...) waarop uiteindelijk nooit meer dan een testberichtje is geplaatst...
[/quote]
Nah zo redeneer ik niet. Ik vind dat de software die ik schrijf ook een functie moet hebben. Mijn software moet ook ergens voor gebruikt worden. Dat je betaalt krijgt is wel het minste maar als het dan niet gebruikt wordt dan is het meer een soort van bezigheidstherapie.

http://hawvie.deviantart.com/


Acties:
  • 0 Henk 'm!

  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
HawVer schreef op maandag 17 augustus 2009 @ 13:24:
[...]
Nah zo redeneer ik niet. Ik vind dat de software die ik schrijf ook een functie moet hebben. Mijn software moet ook ergens voor gebruikt worden. Dat je betaalt krijgt is wel het minste maar als het dan niet gebruikt wordt dan is het meer een soort van bezigheidstherapie.
Tja er speelt helaas vaak ook bedrijfs politiek mee. Ik ben het er mee eens dat je liever hebt dat je software gewoon in productie genomen word. Maar ik heb al vaker mee gemaakt dat producten op het moment dat ze af zijn toch een onzekere toekomst hebben door externe factoren die meespelen. Je kan dan beter naar de dingen kijken die je geleerd hebt tijdens het maken van het product, dan naar het negatieve aspect.

“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!

  • MatHack
  • Registratie: Oktober 2001
  • Niet online

MatHack

Dev by day, Gamer by night

NMe schreef op maandag 17 augustus 2009 @ 11:32:
[...]

Zonde van de tijd hoeft het niet te zijn zolang je ervoor betaald hebt gekregen. :P Maar lullig is het wel; ik heb in mijn eerste stage een compleet stukje forumsoftware geschreven (ziekenhuis, wilde per se custom software...) waarop uiteindelijk nooit meer dan een testberichtje is geplaatst...
Naast het ervoor betaald krijgen is het in mijn ogen ook geen zonde van je tijd als je er van geleerd hebt ;)
Ik heb vooral bij grotere projecten dat je gaande weg toch nieuwe dingen kunt proberen of tegenkomt (mits dat geen problemen oplevert met de klant).

There's no place like 127.0.0.1


Acties:
  • 0 Henk 'm!

  • Dido
  • Registratie: Maart 2002
  • Laatst online: 10:51

Dido

heforshe

HawVer schreef op maandag 17 augustus 2009 @ 11:11:
8)7 Dat is ook zonde van je tijd dan? Zit het nog wel in de planning? Of is je project bij voorbaat al afgeschoten?
Ach, het leverde twee vrijwel risicoloze opleveringen op, een hele hoop lessons learned, en ik heb een nieuwe architectuur kunnen ontwikkelen. Leuk, leerzaam, en inderdaad, mijn uurtjes werden betaald. Het leuke was dat het "politiek"belangrijke projecten waren (het ging om integratie van bestaande services in ons systeem) zodat budget geen issue was, maar aan user-acceptance was niet echt gedacht. Plus dat de back-end van die services nog steeds ingericht moet worden, het is dus niet onze fout dat de zooi niet gebruikt wordt.

De grootste giller is nog wel dat we er wel onderhoud op plegen ("de business" vraagt steeds meer functionaliteit, hoewel ze het nog niet gebruiken).

Wat betekent mijn avatar?


Acties:
  • 0 Henk 'm!

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

NMe

Quia Ego Sic Dico.

Topicstarter
MatHack schreef op maandag 17 augustus 2009 @ 17:31:
[...]

Naast het ervoor betaald krijgen is het in mijn ogen ook geen zonde van je tijd als je er van geleerd hebt ;)
Ik heb vooral bij grotere projecten dat je gaande weg toch nieuwe dingen kunt proberen of tegenkomt (mits dat geen problemen oplevert met de klant).
Natuurlijk, maar ik haal toch altijd weer voldoening uit het feit dat iets dat ik gemaakt heb gebruikt wordt en zijn doel treft. Iets kan best nut hebben gehad zonder dat het voldoening geeft, net zoals iets voldoening kan geven zonder nuttig te zijn. :)

'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!

  • Cartman!
  • Registratie: April 2000
  • Niet online
Niet echt een programmeerding maar wel extreeeeeeem dom :)

Ik heb een dedicated server waar ik wat hosting dingetjes mee doe. Ik had van iemand t verzoek om mod_rails erop te zetten dus dat wilde ik wel proberen. Dus ik dat gedaan en toen wilde ik testen of t werkte. Dus ik een standaard rails install gezet in n mapje, so far so good. Uiteindelijk bleek na wat testen dat het niet echt handig toe te passen was in een shared hosting omgeving dus besloot ik alles weer weg te halen. Ik zat in de root van mn filesystem en ging met rm -rf de mappen verwijderen. Ook de mappen van de rails app, die een map lib bevat. Die listing had ik opgeroepen met "ls /home/user/domains/domein.nl/mapje/" en daarna wilde ik elke map daarin verwijderen. Om een of andere reden tikte ik "rm -rf /lib" en je raad t al...niks deed t meer :X

Gelukkig heeft niemand er last van gehad, de helpdesk van de hostingprovider waar ik mn bak heb staan heeft een reinstall gedaan en daarna heb ik de backups terug gezet. Wat een les was dat :+

ok, kom maar met bashen :P

Acties:
  • 0 Henk 'm!

  • RedHat
  • Registratie: Augustus 2000
  • Laatst online: 09-09 17:16
Ik moet er ook één plaatsen. (Sorry Dennis :P )

PHP:
1
<?php while (NULL != ($a = mysql_fetch_assoc($f)) { // do magic things } ?>


Dit is een workaround omdat ZS7 dit niet goedkeurd:

PHP:
1
<?php while ($a = mysql_fetch_assoc($f)) { // do magic things } ?>


Ik vind de 'workaround' behoorlijk fout :)

Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 10:23

.oisyn

Moderator Devschuur®

Demotivational Speaker

Waarom :?

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!

  • RedHat
  • Registratie: Augustus 2000
  • Laatst online: 09-09 17:16
Omdat hij nooit NULL is. If 1=1 is ook nutteloos.

Acties:
  • 0 Henk 'm!

  • Voutloos
  • Registratie: Januari 2002
  • Niet online
Vergelijk dan met !== false ? Dan slaat het nog een beetje in de verste verte ergens op. :P

{signature}


Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 10:23

.oisyn

Moderator Devschuur®

Demotivational Speaker

RedHat schreef op vrijdag 28 augustus 2009 @ 10:22:
[...]

Omdat hij nooit NULL is. If 1=1 is ook nutteloos.
Euh, null == false geeft gewoon true in PHP hoor. De workaround werkt wat dat betreft prima. Dat het false moest zijn dacht ik in eerste instantie even niet aan, en dat had idd beter geweest, maar "behoorlijk fout" is het niet.

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!

  • AtleX
  • Registratie: Maart 2003
  • Niet online

AtleX

Tyrannosaurus Lex 🦖

Ik vond zojuist weer een pareltje in wat code van gisterenavond:
C#:
1
2
3
4
5
6
7
foreach (String currentFilename in Directory.GetFiles(this.ThumbnailFolder))
{
            if (!File.Exists(currentFilename))
            {
                    continue;
            }
}

En waarom ik die loop heb geschreven? Ik heb werkelijk waar geen enkel idee. :X

Sole survivor of the Chicxulub asteroid impact.


Acties:
  • 0 Henk 'm!

  • Salandur
  • Registratie: Mei 2003
  • Laatst online: 09:52

Salandur

Software Engineer

AtleX schreef op maandag 31 augustus 2009 @ 12:54:
Ik vond zojuist weer een pareltje in wat code van gisterenavond:
C#:
1
2
3
4
5
6
7
foreach (String currentFilename in Directory.GetFiles(this.ThumbnailFolder))
{
            if (!File.Exists(currentFilename))
            {
                    continue;
            }
}

En waarom ik die loop heb geschreven? Ik heb werkelijk waar geen enkel idee. :X
Ziet er uit als een halve test loop om alle files in de directory af te drukken.

Assumptions are the mother of all fuck ups | iRacing Profiel


Acties:
  • 0 Henk 'm!

  • YopY
  • Registratie: September 2003
  • Laatst online: 13-07 01:14
AtleX schreef op maandag 31 augustus 2009 @ 12:54:
Ik vond zojuist weer een pareltje in wat code van gisterenavond:
C#:
1
2
3
4
5
6
7
foreach (String currentFilename in Directory.GetFiles(this.ThumbnailFolder))
{
            if (!File.Exists(currentFilename))
            {
                    continue;
            }
}

En waarom ik die loop heb geschreven? Ik heb werkelijk waar geen enkel idee. :X
Lijkt anders wel logisch - ergens, en dan alleen als er nog meer in die loop stond.

Deze is ook klassiek en ongecensureerd:

Java:
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
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
    
public String specialChars(String encodeString){
        encodeString = encodeString.replaceAll("À", "%C0");
        encodeString = encodeString.replaceAll("Á", "%C1");
        encodeString = encodeString.replaceAll("Â", "%C2");
        encodeString = encodeString.replaceAll("Ã", "%C3");
        encodeString = encodeString.replaceAll("Ä", "%C4");
        encodeString = encodeString.replaceAll("Å", "%C5");
        encodeString = encodeString.replaceAll("Æ", "%C6");
        encodeString = encodeString.replaceAll("Ç", "%C7");
        encodeString = encodeString.replaceAll("È", "%C8");
        encodeString = encodeString.replaceAll("É", "%C9");
        encodeString = encodeString.replaceAll("Ê", "%CA");
        encodeString = encodeString.replaceAll("Ë", "%CB");
        encodeString = encodeString.replaceAll("Ì", "%CC");
        encodeString = encodeString.replaceAll("Í", "%CD");
        encodeString = encodeString.replaceAll("Î", "%CE");
        encodeString = encodeString.replaceAll("Ï", "%CF");
        encodeString = encodeString.replaceAll("Ð", "%D0");
        encodeString = encodeString.replaceAll("Ñ", "%D1");
        encodeString = encodeString.replaceAll("Ò", "%D2");
        encodeString = encodeString.replaceAll("Ó", "%D3");
        encodeString = encodeString.replaceAll("Ô", "%D4");
        encodeString = encodeString.replaceAll("Õ", "%D5");
        encodeString = encodeString.replaceAll("Ö", "%D6");
        encodeString = encodeString.replaceAll("×", "%D7");
        encodeString = encodeString.replaceAll("Ø", "%D8");
        encodeString = encodeString.replaceAll("Ù", "%D9");
        encodeString = encodeString.replaceAll("Ú", "%DA");
        encodeString = encodeString.replaceAll("Û", "%DB");
        encodeString = encodeString.replaceAll("Ü", "%DC");
        encodeString = encodeString.replaceAll("Ý", "%DD");
        encodeString = encodeString.replaceAll("Þ", "%DE");
        encodeString = encodeString.replaceAll("ß", "%DF");
        encodeString = encodeString.replaceAll("à", "%E0");
        encodeString = encodeString.replaceAll("á", "%E1");
        encodeString = encodeString.replaceAll("â", "%E2");
        encodeString = encodeString.replaceAll("ã", "%E3");
        encodeString = encodeString.replaceAll("ä", "%E4");
        encodeString = encodeString.replaceAll("å", "%E5");
        encodeString = encodeString.replaceAll("æ", "%E6");
        encodeString = encodeString.replaceAll("ç", "%E7");
        encodeString = encodeString.replaceAll("è", "%E8");
        encodeString = encodeString.replaceAll("é", "%E9");
        encodeString = encodeString.replaceAll("ê", "%EA");
        encodeString = encodeString.replaceAll("ë", "%EB");
        encodeString = encodeString.replaceAll("ì", "%EC");
        encodeString = encodeString.replaceAll("í", "%ED");
        encodeString = encodeString.replaceAll("î", "%EE");
        encodeString = encodeString.replaceAll("ï", "%EF");
        encodeString = encodeString.replaceAll("ð", "%F0");
        encodeString = encodeString.replaceAll("ñ", "%F1");
        encodeString = encodeString.replaceAll("ò", "%F2");
        encodeString = encodeString.replaceAll("ó", "%F3");
        encodeString = encodeString.replaceAll("ô", "%F4");
        encodeString = encodeString.replaceAll("õ", "%F5");
        encodeString = encodeString.replaceAll("ö", "%F6");
        encodeString = encodeString.replaceAll("÷", "%F7");
        encodeString = encodeString.replaceAll("ø", "%F8");
        encodeString = encodeString.replaceAll("ù", "%F9");
        encodeString = encodeString.replaceAll("ú", "%FA");
        encodeString = encodeString.replaceAll("û", "%FB");
        encodeString = encodeString.replaceAll("ü", "%FC");
        encodeString = encodeString.replaceAll("ý", "%FD");
        encodeString = encodeString.replaceAll("þ", "%FE");
        encodeString = encodeString.replaceAll("ÿ", "%FF");
        
        return encodeString;
    }


Snel vervangen met:

Java:
1
UrlEncoder.encode(str, "UTF-8");

Acties:
  • 0 Henk 'm!

Verwijderd

Ben nu bezig met het ombouwen van een "oude" interface functie die data valideert en naar XML wegschrijft naar een aanroep van een webservice waarbij hetzelfde moet gaan gebeuren:

C#:
1
2
3
4
5
6
7
8
9
10
switch (country.ISOCode)
{
  // case "DE": case "AT": case "NL":
  // ...
    // amortAmount = investment.InvestmentAmountTotal;
    // break;
  default:
    amortAmount = investment.InvestmentAmountTotal;
    break;
}


Typisch voorbeeld van legacy code waarvan je je afvraagt of het ooit nut heeft gehad....

[ Voor 4% gewijzigd door Verwijderd op 31-08-2009 14:52 ]


Acties:
  • 0 Henk 'm!

  • Sebazzz
  • Registratie: September 2006
  • Laatst online: 16-09 15:42

Sebazzz

3dp

YopY schreef op maandag 31 augustus 2009 @ 14:00:
[...]

Snel vervangen met:

Java:
1
UrlEncoder.encode(str, "UTF-8");
Dat is dus gewoon je framework niet kennen, als je zulke functies bouwt ;)

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


Acties:
  • 0 Henk 'm!

  • YopY
  • Registratie: September 2003
  • Laatst online: 13-07 01:14
Sebazzz schreef op maandag 31 augustus 2009 @ 16:44:
[...]

Dat is dus gewoon je framework niet kennen, als je zulke functies bouwt ;)
Dacht ik ook. Sterker nog, het is te lui zijn om even te Googelen naar 'java url encode' oid.

Acties:
  • 0 Henk 'm!

  • Voutloos
  • Registratie: Januari 2002
  • Niet online
Sebazzz schreef op maandag 31 augustus 2009 @ 16:44:
[...]
Dat is dus gewoon je framework niet kennen, als je zulke functies bouwt ;)
Nee. Als je dergelijke functies maakt en niet meteen denkt 'goh zou daar niet iets voor zijn' ben je gewoon een prutser. :>

{signature}


Acties:
  • 0 Henk 'm!

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 09:27

Creepy

Tactical Espionage Splatterer

YopY schreef op maandag 31 augustus 2009 @ 14:00:
[...]
Java:
1
UrlEncoder.encode(str, "UTF-8");
Ik hoop dat je bedoelt:
Java:
1
return UrlEncoder.encode(str, "UTF-8");

;)

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


Acties:
  • 0 Henk 'm!

  • jbdeiman
  • Registratie: September 2008
  • Laatst online: 10:25
Voutloos schreef op vrijdag 28 augustus 2009 @ 10:33:
Vergelijk dan met !== false ? Dan slaat het nog een beetje in de verste verte ergens op. :P
Misschien dat het dan wel ergens op slaat, maar feitelijk is dat ook de controle als je het er niet bij zet. Voordeel van deze manier is dat je tijdens het lezen, zonder voorkennis over de werking en de taal al kan zien dat dit true moet zijn.
Alleen iemand die dit zou lezen zou dan weer voorkennis hebben, inderdaad een beetje overbodig en het slaat ook nergens op.

Acties:
  • 0 Henk 'm!

  • ValHallASW
  • Registratie: Februari 2003
  • Niet online
Als we dan toch gaan mierenneuken over dat stuk code: de code is alleen equivalent als de originele code daadwerkelijk als utf-8 was opgeslagen...

Acties:
  • 0 Henk 'm!

  • Haan
  • Registratie: Februari 2004
  • Nu online

Haan

dotnetter

Ik kom net een behoorlijk WTF tegen, ik moest iets wijzigen in een stukje javascript bij een klant, kom ik het volgende tegen:

JavaScript:
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
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
    var m1 = "Åland Islands, Albania , Algeria , Andorra, Angola, Anguilla, Argentina, Armenia, Aruba, Austria, Azerbaijan, Barbados, Belgium, Belize, Benin, Bhutan, Bolivia, Bosnia Hercegovina, Botswana, Bulgaria, Burkina Faso, Burundi, Cameroon, Cape Verde, Central African Republic, Chad, Chile, China, Congo (Democratic Republic of), Congo (People's Republic of), Comoros, Costa Rica, Croatia, Cuba, Cyprus, Czech Republic, Denmark, Djibouti, Dominica, Dominican Republic, Ecuador, Equatorial Guinea, Eritrea, Estonia, Ethiopia, Faeroe Islands, Fiji, Finland, France, French Guiana, French Polynesia, Gabon, Gambia, Georgia, Germany, Ghana, Gibraltar, Greece, Greenland, Grenada, Guadeloupe, Guatemala, Guinea, Guinea-Bissau, Guyana, Haiti, Iceland, Iran, Israel, Ivory Coast, Kenya, Kuwait, Laos, Liberia, Libya, Liechtenstein, Lithuania, Luxembourg, Macao, Macedonia, Madagascar, Malawi, Malaysia, Mali, Martinique, Mauritania, Mauritius, Mayotte, Moldova, Monaco, Montenegro, Montserrat, Morocco, Mozambique, Namibia, Nauru, Netherlands, New Caledonia, Niger, Niue, Norway, Paraguay, Peru, Philippines, Pitcairn Islands, Poland, Portugal, Réunion, Romania, Rwanda, St Lucia, St. Pierre & Miquelon, St Vincent & the Grenadines, Samoa, São Tomé and Príncipe, Qatar, Senegal, Serbia, Sierra Leone, Slovakia, Slovenia, Surinam , Sweden, Switzerland, Syria, Tajikistan, Tanzania, Togo, Tokelau, Trinidad & Tobago, Tunisia, Turkey, Uganda, United Arab Emirates, Uruguay, Vanuatu, Western Sahara, Yemen, Zambia, Zimbabwe";
    var m2 = "Egypt, Falkland Islands, Guernsey, Hong Kong, Iraq, Ireland, Isle of Man, Japan, Jersey, Oman, Russia, Saint Helena, Sri Lanka, South Africa, Swaziland, Thailand, United Kingdom";
    var m3 = "Antigua and Barbuda, Bahamas, Bahrain, Bangladesh, Belarus, Bermuda, Brazil, British Virgin Islands, Brunei Darussalam, Cambodia, Cayman Islands, Cook Islands, East Timor, El Salvador, Holy See, Honduras, Hungary, India, Indonesia, Italy, Jamaica, Jordan, Kazakhstan, Kiribati, Kyrgyzstan, Latvia, Lebanon, Lesotho, Maldives, Malta, Mexico, Mongolia, Myanmar, Nepal, Netherlands Antilles, New Zealand, Nicaragua, Nigeria, Pakistan, Panama, Papua New Guinea, St. Kitts and Nevis, San Marino, Saudi Arabia; Seychelles, Singapore, Solomon Islands, South Korea, Spain, Sudan, Taiwan, Tonga, Turks and Caicos Islands, Turkmenistan, Tuvalu, Ukraine, Venezuela, Vietnam, Wallis & Futuna";
    var m4 = "American Samoa, Australia, Canada, Christmas Island, Cocos (Keeling) Islands, Colombia, Federated States of Micronesia, Guam, Marshall Islands, Norfolk Island, Northern Mariana Islands, Palau, Puerto Rico, Somalia, United States of America, United States Virgin Islands, Uzbekistan";

// meer script

var s1 = "Åland Islands, Albania , Angola, Anguilla, Argentina, Aruba, Austria, Belarus, Belgium, Benin, Bhutan, Bolivia, Bosnia Hercegovina, Bulgaria, Burkina Faso, Burundi, Cameroon, Cape Verde, Central African Republic, Chad, Chile, Congo (Democratic Republic of), Comoros, Costa Rica, Croatia, Cuba, Czech Republic, Denmark, Djibouti, Dominican Republic, Ecuador, Equatorial Guinea, Eritrea, Estonia, Ethiopia, Faeroe Islands, Finland, Gabon, Germany, Ghana, Greece, Greenland, Guatemala, Guinea, Guinea-Bissau, Haiti, Hungary, Iceland, Ivory Coast, Kazakhstan, Kenya, Kuwait, Kyrgyzstan, Libya, Liechtenstein, Lithuania, Macao, Macedonia, Madagascar, Malawi, Mali, Mauritania, Moldova, Montenegro, Mozambique, Namibia, Nauru, Netherlands, Niger, Norway, Paraguay, Peru, Poland, Portugal, Romania, Russia, Rwanda, Samoa, São Tomé and Príncipe, Qatar, Serbia, Slovakia, Slovenia, Sudan, Surinam, Sweden, Switzerland, Syria, Tajikistan, Tanzania, Togo, Tunisia, Turkey, Uganda, United Arab Emirates, Uruguay";
var s2 = "Egypt, Falkland Islands, Guernsey, Hong Kong, Iraq, Ireland, Isle of Man, Japan, Jersey, Oman, Saint Helena, Sri Lanka, South Africa, Swaziland, Thailand, United Kingdom";
var s3 = "Bangladesh, Brazil, British Virgin Islands, El Salvador, Holy See, Honduras, Indonesia, Italy, Jamaica, Mexico, Mongolia, Netherlands Antilles, Nepal, Nicaragua, Panama, San Marino, Spain, Taiwan, Tonga, Venezuela, Wallis & Futuna";
var s4 = "Algeria , Andorra, Armenia, Azerbaijan, Barbados, Belize, Botswana, China, Congo (People's Republic of), Cyprus, Dominica, Fiji, France, French Guiana, French Polynesia, Gambia, Georgia, Gibraltar, Grenada, Guadeloupe, Guyana, Iran, Israel, Laos, Liberia, Luxembourg, Malaysia, Martinique, Mauritius, Mayotte, Monaco, Montserrat, Morocco, New Caledonia, Niue, Philippines, Pitcairn Islands, Réunion, St Lucia, St. Pierre & Miquelon, St Vincent & the Grenadines, Senegal, Sierra Leone, Singapore, Tokelau, Turkmenistan, Trinidad & Tobago, Ukraine, Vanuatu, Western Sahara, Yemen, Zambia, Zimbabwe";
var s5 = "American Samoa, Antigua and Barbuda, Australia, Bahamas, Bahrain, Bermuda, Brunei Darussalam, Cambodia, Canada, Cayman Islands, Christmas Island, Cocos (Keeling) Islands, Colombia, Cook Islands, East Timor, Federated States of Micronesia, Guam, India, Jordan, Kiribati, Latvia, Lebanon, Lesotho, Maldives, Malta, Marshall Islands, Myanmar, New Zealand, Nigeria, Norfolk Island, Northern Mariana Islands, Pakistan, Palau, Papua New Guinea, Puerto Rico, St. Kitts and Nevis, Saudi Arabia; Seychelles, Solomon Islands, Somalia, South Korea, Turks and Caicos Islands, Tuvalu, United States of America, United States Virgin Islands, Uzbekistan, Vietnam";

// meer script

    var m1 = "Åland Islands, Albania , Algeria , Andorra, Angola, Anguilla, Argentina, Armenia, Aruba, Austria, Azerbaijan, Barbados, Belgium, Belize, Benin, Bhutan, Bolivia, Bosnia Hercegovina, Botswana, Bulgaria, Burkina Faso, Burundi, Cameroon, Cape Verde, Central African Republic, Chad, Chile, China, Congo (Democratic Republic of), Congo (People's Republic of), Comoros, Costa Rica, Croatia, Cuba, Cyprus, Czech Republic, Denmark, Djibouti, Dominica, Dominican Republic, Ecuador, Equatorial Guinea, Eritrea, Estonia, Ethiopia, Faeroe Islands, Fiji, Finland, France, French Guiana, French Polynesia, Gabon, Gambia, Georgia, Germany, Ghana, Gibraltar, Greece, Greenland, Grenada, Guadeloupe, Guatemala, Guinea, Guinea-Bissau, Guyana, Haiti, Iceland, Iran, Israel, Ivory Coast, Kenya, Kuwait, Laos, Liberia, Libya, Liechtenstein, Lithuania, Luxembourg, Macao, Macedonia, Madagascar, Malawi, Malaysia, Mali, Martinique, Mauritania, Mauritius, Mayotte, Moldova, Monaco, Montenegro, Montserrat, Morocco, Mozambique, Namibia, Nauru, Netherlands, New Caledonia, Niger, Niue, Norway, Paraguay, Peru, Philippines, Pitcairn Islands, Poland, Portugal, Réunion, Romania, Rwanda, St Lucia, St. Pierre & Miquelon, St Vincent & the Grenadines, Samoa, São Tomé and Príncipe, Qatar, Senegal, Serbia, Sierra Leone, Slovakia, Slovenia, Surinam , Sweden, Switzerland, Syria, Tajikistan, Tanzania, Togo, Tokelau, Trinidad & Tobago, Tunisia, Turkey, Uganda, United Arab Emirates, Uruguay, Vanuatu, Western Sahara, Yemen, Zambia, Zimbabwe";
    var m2 = "Egypt, Falkland Islands, Guernsey, Hong Kong, Iraq, Ireland, Isle of Man, Japan, Jersey, Oman, Russia, Saint Helena, Sri Lanka, South Africa, Swaziland, Thailand, United Kingdom";
    var m3 = "Antigua and Barbuda, Bahamas, Bahrain, Bangladesh, Belarus, Bermuda, Brazil, British Virgin Islands, Brunei Darussalam, Cambodia, Cayman Islands, Cook Islands, East Timor, El Salvador, Holy See, Honduras, Hungary, India, Indonesia, Italy, Jamaica, Jordan, Kazakhstan, Kiribati, Kyrgyzstan, Latvia, Lebanon, Lesotho, Maldives, Malta, Mexico, Mongolia, Myanmar, Nepal, Netherlands Antilles, New Zealand, Nicaragua, Nigeria, Pakistan, Panama, Papua New Guinea, St. Kitts and Nevis, San Marino, Saudi Arabia; Seychelles, Singapore, Solomon Islands, South Korea, Spain, Sudan, Taiwan, Tonga, Turks and Caicos Islands, Turkmenistan, Tuvalu, Ukraine, Venezuela, Vietnam, Wallis & Futuna";
    var m4 = "American Samoa, Australia, Canada, Christmas Island, Cocos (Keeling) Islands, Colombia, Federated States of Micronesia, Guam, Marshall Islands, Norfolk Island, Northern Mariana Islands, Palau, Puerto Rico, Somalia, United States of America, United States Virgin Islands, Uzbekistan";

// meer script

var s1 = "Åland Islands, Albania , Angola, Anguilla, Argentina, Aruba, Austria, Belarus, Belgium, Benin, Bhutan, Bolivia, Bosnia Hercegovina, Bulgaria, Burkina Faso, Burundi, Cameroon, Cape Verde, Central African Republic, Chad, Chile, Congo (Democratic Republic of), Comoros, Costa Rica, Croatia, Cuba, Czech Republic, Denmark, Djibouti, Dominican Republic, Ecuador, Equatorial Guinea, Eritrea, Estonia, Ethiopia, Faeroe Islands, Finland, Gabon, Germany, Ghana, Greece, Greenland, Guatemala, Guinea, Guinea-Bissau, Haiti, Hungary, Iceland, Ivory Coast, Kazakhstan, Kenya, Kuwait, Kyrgyzstan, Libya, Liechtenstein, Lithuania, Macao, Macedonia, Madagascar, Malawi, Mali, Mauritania, Moldova, Montenegro, Mozambique, Namibia, Nauru, Netherlands, Niger, Norway, Paraguay, Peru, Poland, Portugal, Romania, Russia, Rwanda, Samoa, São Tomé and Príncipe, Qatar, Serbia, Slovakia, Slovenia, Sudan, Surinam, Sweden, Switzerland, Syria, Tajikistan, Tanzania, Togo, Tunisia, Turkey, Uganda, United Arab Emirates, Uruguay";
var s2 = "Egypt, Falkland Islands, Guernsey, Hong Kong, Iraq, Ireland, Isle of Man, Japan, Jersey, Oman, Saint Helena, Sri Lanka, South Africa, Swaziland, Thailand, United Kingdom";
var s3 = "Bangladesh, Brazil, British Virgin Islands, El Salvador, Holy See, Honduras, Indonesia, Italy, Jamaica, Mexico, Mongolia, Netherlands Antilles, Nepal, Nicaragua, Panama, San Marino, Spain, Taiwan, Tonga, Venezuela, Wallis & Futuna";
var s4 = "Algeria , Andorra, Armenia, Azerbaijan, Barbados, Belize, Botswana, China, Congo (People's Republic of), Cyprus, Dominica, Fiji, France, French Guiana, French Polynesia, Gambia, Georgia, Gibraltar, Grenada, Guadeloupe, Guyana, Iran, Israel, Laos, Liberia, Luxembourg, Malaysia, Martinique, Mauritius, Mayotte, Monaco, Montserrat, Morocco, New Caledonia, Niue, Philippines, Pitcairn Islands, Réunion, St Lucia, St. Pierre & Miquelon, St Vincent & the Grenadines, Senegal, Sierra Leone, Singapore, Tokelau, Turkmenistan, Trinidad & Tobago, Ukraine, Vanuatu, Western Sahara, Yemen, Zambia, Zimbabwe";
var s5 = "American Samoa, Antigua and Barbuda, Australia, Bahamas, Bahrain, Bermuda, Brunei Darussalam, Cambodia, Canada, Cayman Islands, Christmas Island, Cocos (Keeling) Islands, Colombia, Cook Islands, East Timor, Federated States of Micronesia, Guam, India, Jordan, Kiribati, Latvia, Lebanon, Lesotho, Maldives, Malta, Marshall Islands, Myanmar, New Zealand, Nigeria, Norfolk Island, Northern Mariana Islands, Pakistan, Palau, Papua New Guinea, Puerto Rico, St. Kitts and Nevis, Saudi Arabia; Seychelles, Solomon Islands, Somalia, South Korea, Turks and Caicos Islands, Tuvalu, United States of America, United States Virgin Islands, Uzbekistan, Vietnam";

// meer script

var s1 = "Åland Islands, Albania , Angola, Anguilla, Argentina, Aruba, Austria, Belarus, Belgium, Benin, Bhutan, Bolivia, Bosnia Hercegovina, Bulgaria, Burkina Faso, Burundi, Cameroon, Cape Verde, Central African Republic, Chad, Chile, Congo (Democratic Republic of), Comoros, Costa Rica, Croatia, Cuba, Czech Republic, Denmark, Djibouti, Dominican Republic, Ecuador, Equatorial Guinea, Eritrea, Estonia, Ethiopia, Faeroe Islands, Finland, Gabon, Germany, Ghana, Greece, Greenland, Guatemala, Guinea, Guinea-Bissau, Haiti, Hungary, Iceland, Ivory Coast, Kazakhstan, Kenya, Kuwait, Kyrgyzstan, Libya, Liechtenstein, Lithuania, Macao, Macedonia, Madagascar, Malawi, Mali, Mauritania, Moldova, Montenegro, Mozambique, Namibia, Nauru, Netherlands, Niger, Norway, Paraguay, Peru, Poland, Portugal, Romania, Russia, Rwanda, Samoa, São Tomé and Príncipe, Qatar, Serbia, Slovakia, Slovenia, Sudan, Surinam, Sweden, Switzerland, Syria, Tajikistan, Tanzania, Togo, Tunisia, Turkey, Uganda, United Arab Emirates, Uruguay";
var s2 = "Egypt, Falkland Islands, Guernsey, Hong Kong, Iraq, Ireland, Isle of Man, Japan, Jersey, Oman, Saint Helena, Sri Lanka, South Africa, Swaziland, Thailand, United Kingdom";
var s3 = "Bangladesh, Brazil, British Virgin Islands, El Salvador, Holy See, Honduras, Indonesia, Italy, Jamaica, Mexico, Mongolia, Netherlands Antilles, Nepal, Nicaragua, Panama, San Marino, Spain, Taiwan, Tonga, Venezuela, Wallis & Futuna";
var s4 = "Algeria , Andorra, Armenia, Azerbaijan, Barbados, Belize, Botswana, China, Congo (People's Republic of), Cyprus, Dominica, Fiji, France, French Guiana, French Polynesia, Gambia, Georgia, Gibraltar, Grenada, Guadeloupe, Guyana, Iran, Israel, Laos, Liberia, Luxembourg, Malaysia, Martinique, Mauritius, Mayotte, Monaco, Montserrat, Morocco, New Caledonia, Niue, Philippines, Pitcairn Islands, Réunion, St Lucia, St. Pierre & Miquelon, St Vincent & the Grenadines, Senegal, Sierra Leone, Singapore, Tokelau, Turkmenistan, Trinidad & Tobago, Ukraine, Vanuatu, Western Sahara, Yemen, Zambia, Zimbabwe";
var s5 = "American Samoa, Antigua and Barbuda, Australia, Bahamas, Bahrain, Bermuda, Brunei Darussalam, Cambodia, Canada, Cayman Islands, Christmas Island, Cocos (Keeling) Islands, Colombia, Cook Islands, East Timor, Federated States of Micronesia, Guam, India, Jordan, Kiribati, Latvia, Lebanon, Lesotho, Maldives, Malta, Marshall Islands, Myanmar, New Zealand, Nigeria, Norfolk Island, Northern Mariana Islands, Pakistan, Palau, Papua New Guinea, Puerto Rico, St. Kitts and Nevis, Saudi Arabia; Seychelles, Solomon Islands, Somalia, South Korea, Turks and Caicos Islands, Tuvalu, United States of America, United States Virgin Islands, Uzbekistan, Vietnam";

// meer script

var m1 = "Åland Islands, Albania , Algeria , Andorra, Angola, Anguilla, Argentina, Armenia, Aruba, Austria, Azerbaijan, Barbados, Belgium, Belize, Benin, Bhutan, Bolivia, Bosnia Hercegovina, Botswana, Bulgaria, Burkina Faso, Burundi, Cameroon, Cape Verde, Central African Republic, Chad, Chile, China, Congo (Democratic Republic of), Congo (People's Republic of), Comoros, Costa Rica, Croatia, Cuba, Cyprus, Czech Republic, Denmark, Djibouti, Dominica, Dominican Republic, Ecuador, Equatorial Guinea, Eritrea, Estonia, Ethiopia, Faeroe Islands, Fiji, Finland, France, French Guiana, French Polynesia, Gabon, Gambia, Georgia, Germany, Ghana, Gibraltar, Greece, Greenland, Grenada, Guadeloupe, Guatemala, Guinea, Guinea-Bissau, Guyana, Haiti, Iceland, Iran, Israel, Ivory Coast, Kenya, Kuwait, Laos, Liberia, Libya, Liechtenstein, Lithuania, Luxembourg, Macao, Macedonia, Madagascar, Malawi, Malaysia, Mali, Martinique, Mauritania, Mauritius, Mayotte, Moldova, Monaco, Montenegro, Montserrat, Morocco, Mozambique, Namibia, Nauru, Netherlands, New Caledonia, Niger, Niue, Norway, Paraguay, Peru, Philippines, Pitcairn Islands, Poland, Portugal, Réunion, Romania, Rwanda, St Lucia, St. Pierre & Miquelon, St Vincent & the Grenadines, Samoa, São Tomé and Príncipe, Qatar, Senegal, Serbia, Sierra Leone, Slovakia, Slovenia, Surinam , Sweden, Switzerland, Syria, Tajikistan, Tanzania, Togo, Tokelau, Trinidad & Tobago, Tunisia, Turkey, Uganda, United Arab Emirates, Uruguay, Vanuatu, Western Sahara, Yemen, Zambia, Zimbabwe";
var m2 = "Egypt, Falkland Islands, Guernsey, Hong Kong, Iraq, Ireland, Isle of Man, Japan, Jersey, Oman, Russia, Saint Helena, Sri Lanka, South Africa, Swaziland, Thailand, United Kingdom";
var m3 = "Antigua and Barbuda, Bahamas, Bahrain, Bangladesh, Belarus, Bermuda, Brazil, British Virgin Islands, Brunei Darussalam, Cambodia, Cayman Islands, Cook Islands, East Timor, El Salvador, Holy See, Honduras, Hungary, India, Indonesia, Italy, Jamaica, Jordan, Kazakhstan, Kiribati, Kyrgyzstan, Latvia, Lebanon, Lesotho, Maldives, Malta, Mexico, Mongolia, Myanmar, Nepal, Netherlands Antilles, New Zealand, Nicaragua, Nigeria, Pakistan, Panama, Papua New Guinea, St. Kitts and Nevis, San Marino, Saudi Arabia; Seychelles, Singapore, Solomon Islands, South Korea, Spain, Sudan, Taiwan, Tonga, Turks and Caicos Islands, Turkmenistan, Tuvalu, Ukraine, Venezuela, Vietnam, Wallis & Futuna";
var m4 = "American Samoa, Australia, Canada, Christmas Island, Cocos (Keeling) Islands, Colombia, Federated States of Micronesia, Guam, Marshall Islands, Norfolk Island, Northern Mariana Islands, Palau, Puerto Rico, Somalia, United States of America, United States Virgin Islands, Uzbekistan";

// meer script

var m1 = "Åland Islands, Albania , Algeria , Andorra, Angola, Anguilla, Argentina, Armenia, Aruba, Austria, Azerbaijan, Barbados, Belgium, Belize, Benin, Bhutan, Bolivia, Bosnia Hercegovina, Botswana, Bulgaria, Burkina Faso, Burundi, Cameroon, Cape Verde, Central African Republic, Chad, Chile, China, Congo (Democratic Republic of), Congo (People's Republic of), Comoros, Costa Rica, Croatia, Cuba, Cyprus, Czech Republic, Denmark, Djibouti, Dominica, Dominican Republic, Ecuador, Equatorial Guinea, Eritrea, Estonia, Ethiopia, Faeroe Islands, Fiji, Finland, France, French Guiana, French Polynesia, Gabon, Gambia, Georgia, Germany, Ghana, Gibraltar, Greece, Greenland, Grenada, Guadeloupe, Guatemala, Guinea, Guinea-Bissau, Guyana, Haiti, Iceland, Iran, Israel, Ivory Coast, Kenya, Kuwait, Laos, Liberia, Libya, Liechtenstein, Lithuania, Luxembourg, Macao, Macedonia, Madagascar, Malawi, Malaysia, Mali, Martinique, Mauritania, Mauritius, Mayotte, Moldova, Monaco, Montenegro, Montserrat, Morocco, Mozambique, Namibia, Nauru, Netherlands, New Caledonia, Niger, Niue, Norway, Paraguay, Peru, Philippines, Pitcairn Islands, Poland, Portugal, Réunion, Romania, Rwanda, St Lucia, St. Pierre & Miquelon, St Vincent & the Grenadines, Samoa, São Tomé and Príncipe, Qatar, Senegal, Serbia, Sierra Leone, Slovakia, Slovenia, Surinam , Sweden, Switzerland, Syria, Tajikistan, Tanzania, Togo, Tokelau, Trinidad & Tobago, Tunisia, Turkey, Uganda, United Arab Emirates, Uruguay, Vanuatu, Western Sahara, Yemen, Zambia, Zimbabwe";
var m2 = "Egypt, Falkland Islands, Guernsey, Hong Kong, Iraq, Ireland, Isle of Man, Japan, Jersey, Oman, Russia, Saint Helena, Sri Lanka, South Africa, Swaziland, Thailand, United Kingdom";
var m3 = "Antigua and Barbuda, Bahamas, Bahrain, Bangladesh, Belarus, Bermuda, Brazil, British Virgin Islands, Brunei Darussalam, Cambodia, Cayman Islands, Cook Islands, East Timor, El Salvador, Holy See, Honduras, Hungary, India, Indonesia, Italy, Jamaica, Jordan, Kazakhstan, Kiribati, Kyrgyzstan, Latvia, Lebanon, Lesotho, Maldives, Malta, Mexico, Mongolia, Myanmar, Nepal, Netherlands Antilles, New Zealand, Nicaragua, Nigeria, Pakistan, Panama, Papua New Guinea, St. Kitts and Nevis, San Marino, Saudi Arabia; Seychelles, Singapore, Solomon Islands, South Korea, Spain, Sudan, Taiwan, Tonga, Turks and Caicos Islands, Turkmenistan, Tuvalu, Ukraine, Venezuela, Vietnam, Wallis & Futuna";
var m4 = "American Samoa, Australia, Canada, Christmas Island, Cocos (Keeling) Islands, Colombia, Federated States of Micronesia, Guam, Marshall Islands, Norfolk Island, Northern Mariana Islands, Palau, Puerto Rico, Somalia, United States of America, United States Virgin Islands, Uzbekistan";

// meer script

var m1 = "Åland Islands, Albania , Algeria , Andorra, Angola, Anguilla, Argentina, Armenia, Aruba, Austria, Azerbaijan, Barbados, Belgium, Belize, Benin, Bhutan, Bolivia, Bosnia Hercegovina, Botswana, Bulgaria, Burkina Faso, Burundi, Cameroon, Cape Verde, Central African Republic, Chad, Chile, China, Congo (Democratic Republic of), Congo (People's Republic of), Comoros, Costa Rica, Croatia, Cuba, Cyprus, Czech Republic, Denmark, Djibouti, Dominica, Dominican Republic, Ecuador, Equatorial Guinea, Eritrea, Estonia, Ethiopia, Faeroe Islands, Fiji, Finland, France, French Guiana, French Polynesia, Gabon, Gambia, Georgia, Germany, Ghana, Gibraltar, Greece, Greenland, Grenada, Guadeloupe, Guatemala, Guinea, Guinea-Bissau, Guyana, Haiti, Iceland, Iran, Israel, Ivory Coast, Kenya, Kuwait, Laos, Liberia, Libya, Liechtenstein, Lithuania, Luxembourg, Macao, Macedonia, Madagascar, Malawi, Malaysia, Mali, Martinique, Mauritania, Mauritius, Mayotte, Moldova, Monaco, Montenegro, Montserrat, Morocco, Mozambique, Namibia, Nauru, Netherlands, New Caledonia, Niger, Niue, Norway, Paraguay, Peru, Philippines, Pitcairn Islands, Poland, Portugal, Réunion, Romania, Rwanda, St Lucia, St. Pierre & Miquelon, St Vincent & the Grenadines, Samoa, São Tomé and Príncipe, Qatar, Senegal, Serbia, Sierra Leone, Slovakia, Slovenia, Surinam , Sweden, Switzerland, Syria, Tajikistan, Tanzania, Togo, Tokelau, Trinidad & Tobago, Tunisia, Turkey, Uganda, United Arab Emirates, Uruguay, Vanuatu, Western Sahara, Yemen, Zambia, Zimbabwe";
var m2 = "Egypt, Falkland Islands, Guernsey, Hong Kong, Iraq, Ireland, Isle of Man, Japan, Jersey, Oman, Russia, Saint Helena, Sri Lanka, South Africa, Swaziland, Thailand, United Kingdom";
var m3 = "Antigua and Barbuda, Bahamas, Bahrain, Bangladesh, Belarus, Bermuda, Brazil, British Virgin Islands, Brunei Darussalam, Cambodia, Cayman Islands, Cook Islands, East Timor, El Salvador, Holy See, Honduras, Hungary, India, Indonesia, Italy, Jamaica, Jordan, Kazakhstan, Kiribati, Kyrgyzstan, Latvia, Lebanon, Lesotho, Maldives, Malta, Mexico, Mongolia, Myanmar, Nepal, Netherlands Antilles, New Zealand, Nicaragua, Nigeria, Pakistan, Panama, Papua New Guinea, St. Kitts and Nevis, San Marino, Saudi Arabia; Seychelles, Singapore, Solomon Islands, South Korea, Spain, Sudan, Taiwan, Tonga, Turks and Caicos Islands, Turkmenistan, Tuvalu, Ukraine, Venezuela, Vietnam, Wallis & Futuna";
var m4 = "American Samoa, Australia, Canada, Christmas Island, Cocos (Keeling) Islands, Colombia, Federated States of Micronesia, Guam, Marshall Islands, Norfolk Island, Northern Mariana Islands, Palau, Puerto Rico, Somalia, United States of America, United States Virgin Islands, Uzbekistan";

// meer script

var s1 = "Åland Islands, Albania , Angola, Anguilla, Argentina, Aruba, Austria, Belarus, Belgium, Benin, Bhutan, Bolivia, Bosnia Hercegovina, Bulgaria, Burkina Faso, Burundi, Cameroon, Cape Verde, Central African Republic, Chad, Chile, Congo (Democratic Republic of), Comoros, Costa Rica, Croatia, Cuba, Czech Republic, Denmark, Djibouti, Dominican Republic, Ecuador, Equatorial Guinea, Eritrea, Estonia, Ethiopia, Faeroe Islands, Finland, Gabon, Germany, Ghana, Greece, Greenland, Guatemala, Guinea, Guinea-Bissau, Haiti, Hungary, Iceland, Ivory Coast, Kazakhstan, Kenya, Kuwait, Kyrgyzstan, Libya, Liechtenstein, Lithuania, Macao, Macedonia, Madagascar, Malawi, Mali, Mauritania, Moldova, Montenegro, Mozambique, Namibia, Nauru, Netherlands, Niger, Norway, Paraguay, Peru, Poland, Portugal, Romania, Russia, Rwanda, Samoa, São Tomé and Príncipe, Qatar, Serbia, Slovakia, Slovenia, Sudan, Surinam, Sweden, Switzerland, Syria, Tajikistan, Tanzania, Togo, Tunisia, Turkey, Uganda, United Arab Emirates, Uruguay";
var s2 = "Egypt, Falkland Islands, Guernsey, Hong Kong, Iraq, Ireland, Isle of Man, Japan, Jersey, Oman, Saint Helena, Sri Lanka, South Africa, Swaziland, Thailand, United Kingdom";
var s3 = "Bangladesh, Brazil, British Virgin Islands, El Salvador, Holy See, Honduras, Indonesia, Italy, Jamaica, Mexico, Mongolia, Netherlands Antilles, Nepal, Nicaragua, Panama, San Marino, Spain, Taiwan, Tonga, Venezuela, Wallis & Futuna";
var s4 = "Algeria , Andorra, Armenia, Azerbaijan, Barbados, Belize, Botswana, China, Congo (People's Republic of), Cyprus, Dominica, Fiji, France, French Guiana, French Polynesia, Gambia, Georgia, Gibraltar, Grenada, Guadeloupe, Guyana, Iran, Israel, Laos, Liberia, Luxembourg, Malaysia, Martinique, Mauritius, Mayotte, Monaco, Montserrat, Morocco, New Caledonia, Niue, Philippines, Pitcairn Islands, Réunion, St Lucia, St. Pierre & Miquelon, St Vincent & the Grenadines, Senegal, Sierra Leone, Singapore, Tokelau, Turkmenistan, Trinidad & Tobago, Ukraine, Vanuatu, Western Sahara, Yemen, Zambia, Zimbabwe";
var s5 = "American Samoa, Antigua and Barbuda, Australia, Bahamas, Bahrain, Bermuda, Brunei Darussalam, Cambodia, Canada, Cayman Islands, Christmas Island, Cocos (Keeling) Islands, Colombia, Cook Islands, East Timor, Federated States of Micronesia, Guam, India, Jordan, Kiribati, Latvia, Lebanon, Lesotho, Maldives, Malta, Marshall Islands, Myanmar, New Zealand, Nigeria, Norfolk Island, Northern Mariana Islands, Pakistan, Palau, Papua New Guinea, Puerto Rico, St. Kitts and Nevis, Saudi Arabia; Seychelles, Solomon Islands, Somalia, South Korea, Turks and Caicos Islands, Tuvalu, United States of America, United States Virgin Islands, Uzbekistan, Vietnam";

// en dan nog 8 keer hetzelfde.. 


Dit alles dan allemaal in hetzelfde js bestand 8)7

Kater? Eerst water, de rest komt later


Acties:
  • 0 Henk 'm!

  • BalusC
  • Registratie: Oktober 2000
  • Niet online

BalusC

Carpe diem

W T F idd :X

En waarom overigens juist op die manier verdeeld/opgesplitst over m1-m4 en s1-s5? Ik zie geen patronen.

Acties:
  • 0 Henk 'm!

  • Kwastie
  • Registratie: April 2005
  • Laatst online: 15-09 09:54

Kwastie

Awesomeness

Het is idd erg WTF.

- Waarom word die data zo vaak gedefineerd?
- Waarom is s1-s5/m1-m4 niet gewoon 1 string, of nog beter een array?

In wat voor context werd dit gebruikt? Selectie boxje met landen?

When I get sad i stop being sad and be awesome instead


Acties:
  • 0 Henk 'm!

  • !null
  • Registratie: Maart 2008
  • Laatst online: 11-09 14:00
Whaha. En "Christmas Island", die kende ik nog niet.
Ik verwacht dat de rest van de implementatie ook niet veel soeps is.

[ Voor 40% gewijzigd door !null op 08-09-2009 16:43 ]

Ampera-e (60kWh) -> (66kWh)


Acties:
  • 0 Henk 'm!

  • RetroTycoon
  • Registratie: Juli 2008
  • Laatst online: 16-09 12:02
Waarschijnlijk moest iemand even tonen dat hij hartstikke goed de rijtjes kent :+

Acties:
  • 0 Henk 'm!

  • Hardfreak
  • Registratie: Augustus 2004
  • Laatst online: 24-05 19:22

Hardfreak

<!--

!null schreef op dinsdag 08 september 2009 @ 16:40:
Whaha. En "Christmas Island", die kende ik nog niet.
Ik verwacht dat de rest van de implementatie ook niet veel soeps is.
http://maps.yahoo.com/#mv...=12&q1=Christmas%20Island
;)

Things I wish my life had: a debug port, a try-catch feature and good memory management


Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 10:23

.oisyn

Moderator Devschuur®

Demotivational Speaker

Yahoo maps? Best een bout-webapp eigenlijk. Anyway, hier de google maps link: http://maps.google.com/?i...pn=0.274455,0.445976&z=12, heeft nog meer info ook :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!

  • Haan
  • Registratie: Februari 2004
  • Nu online

Haan

dotnetter

Kwastie schreef op dinsdag 08 september 2009 @ 16:39:
Het is idd erg WTF.

- Waarom word die data zo vaak gedefineerd?
- Waarom is s1-s5/m1-m4 niet gewoon 1 string, of nog beter een array?

In wat voor context werd dit gebruikt? Selectie boxje met landen?
Het wordt inderdaad gebruikt om landen te selecteren. Daarbij gaat het dan om een formulier met een stuk of 6 adrestypen, waarbij landen geselecteerd kunnen worden en op basis van het gekozen land wordt dan het adres opgemaakt. Alles staat in een .js file van 1500 regels, en ik ben ook niet begonnen om proberen te snappen wat er allemaal gebeurt, want alleen kijken naar het script geeft al hoofdpijn 8)7

Kater? Eerst water, de rest komt later

Pagina: 1 ... 14 ... 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. :)