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

Acties:
  • 0 Henk 'm!

  • roy-t
  • Registratie: Oktober 2004
  • Laatst online: 19-09 10:19
Mwa er is best wel wat gewone ASP.Net hosting die ook prima te betalen is, alleen de echte low-budget hosting (E20,- p.j) is meestal alleen maar PHP. Voor 70,- p.j. (Iets meer dan 5 p/m) heb je ASP.NET + MSSQL + MySQL + PHP en dat is de host waar ik toevallig bij zit (en die door vele blijkbaar al duur gevonden werd).

~ Mijn prog blog!


Acties:
  • 0 Henk 'm!

  • Davio
  • Registratie: November 2007
  • Laatst online: 06-01 16:46
FragFrog schreef op donderdag 24 maart 2011 @ 15:25:
[...]

Het gaat me er niet om dat hij yes / no tikt in plaats van true / false. Mijn probleem met die code is dat hij strings en stringoperaties gebruikt in plaats van booleans voor booleaanse waardes. Dat is toch wel zo ongeveer een van de meest basic fouten die je kan maken.

Temeer omdat je op een gegeven moment tests krijgt als if (value == "yes" || value == "true" || value == "waar" || value == "ok"). Lach maar, ik heb het gezien :X
Ik ook, iemand die een boolean als string in de DB opsloeg leidde tot dit soort wildgroei aan mogelijke waarden.

Acties:
  • 0 Henk 'm!

  • 418O2
  • Registratie: November 2001
  • Nu online
roy-t schreef op vrijdag 25 maart 2011 @ 09:01:
Mwa er is best wel wat gewone ASP.Net hosting die ook prima te betalen is, alleen de echte low-budget hosting (E20,- p.j) is meestal alleen maar PHP. Voor 70,- p.j. (Iets meer dan 5 p/m) heb je ASP.NET + MSSQL + MySQL + PHP en dat is de host waar ik toevallig bij zit (en die door vele blijkbaar al duur gevonden werd).
http://www.simple-hosting.nl/diensten/webhosting

daar hostte ik eerst wel eens wat, zijn niet duur. Eerste jaar helemaal niet, want ze hebben een actie (hebben ze meestal ;) )

Acties:
  • 0 Henk 'm!

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06 13:31

drm

f0pc0dert

Kaw:
Eigenlijk is het gewoon beter om geen php te gebruiken wanneer je geeft om nette code. Om toch cheap webhosting te kunnen aanbieden zou ook Mono ASP.net gebruikt kunnen worden. Als ik om mij heen kijk dan zijn veruit de meeste grotere projecten met PHP keurig begonnen, maar uiteindelijk allemaal ontaard in chaos.
Want in ASP.net kan het geen rommeltje worden? Heeft niks met de taal en het platform te maken maar alles met de mensen die er aan werken.

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


Acties:
  • 0 Henk 'm!

  • MBV
  • Registratie: Februari 2002
  • Laatst online: 03-10 10:15
Inderdaad, ik heb 100% nette code geschreven in PHP (die ik een jaar later ook nog netjes vond ;)). Ook genoeg code geschreven waarvan ik me achteraf afvroeg wat me bezielde, maargoed O-)

Acties:
  • 0 Henk 'm!

  • FragFrog
  • Registratie: September 2001
  • Laatst online: 11:21
Kaw schreef op vrijdag 25 maart 2011 @ 08:44:
Eigenlijk is het gewoon beter om geen php te gebruiken wanneer je geeft om nette code.
Je kan net zo goed ranzige code schrijven in willekeurig welke taal (nouja, op een paar academische talen na wellicht). Dat PHP een lage drempel heeft en juist beginnende (lees: slechte) programmeurs het gebruiken zorgt ervoor dat er relatief veel rotzooi in geschreven wordt, maar iemand die netjes in bijvoorbeeld JAVA kan coden kan ook netjes in PHP coden.

Sterker nog, doordat er wat meer abstractie in zit kun je juist hele nette classes krijgen. Geen lijst met includes, geen headerfiles, etc. Ik vind mijn PHP code er meestal netter uitzien dan mijn JAVA en C++ code :)

[ Site ] [ twitch ] [ jijbuis ]


Acties:
  • 0 Henk 'm!

Verwijderd

drm schreef op vrijdag 25 maart 2011 @ 10:35:
[...]
Want in ASP.net kan het geen rommeltje worden? Heeft niks met de taal en het platform te maken maar alles met de mensen die er aan werken.
Klopt, al maken sommige talen het wel makkelijker voor je door je enigszins te dwingen om netjes te werken.

Acties:
  • 0 Henk 'm!

  • MBV
  • Registratie: Februari 2002
  • Laatst online: 03-10 10:15
FragFrog schreef op vrijdag 25 maart 2011 @ 13:03:
[...]

Je kan net zo goed ranzige code schrijven in willekeurig welke taal (nouja, op een paar academische talen na wellicht).
Functionele programmeertalen bedoel je? Side-effects zal je dan geen last van hebben, maar je kan je code zo compact schrijven dat je een maand bezig bent voor je 10 regels code snapt ;)
Sterker nog, doordat er wat meer abstractie in zit kun je juist hele nette classes krijgen. Geen lijst met includes, geen headerfiles, etc. Ik vind mijn PHP code er meestal netter uitzien dan mijn JAVA en C++ code :)
Geen includes en headerfiles? Dat vind ik juist onhandig: die geven een mooie indicatie waar je dependencies liggen.

Acties:
  • 0 Henk 'm!

  • Davio
  • Registratie: November 2007
  • Laatst online: 06-01 16:46
MBV schreef op vrijdag 25 maart 2011 @ 13:26:
[...]

Functionele programmeertalen bedoel je? Side-effects zal je dan geen last van hebben, maar je kan je code zo compact schrijven dat je een maand bezig bent voor je 10 regels code snapt ;)

[...]

Geen includes en headerfiles? Dat vind ik juist onhandig: die geven een mooie indicatie waar je dependencies liggen.
Dat zag ik op Project Euler veel.

Had ik met moeite met mijn imperatieve taal een probleem in 50 regels opgelost en ge-brute-forcet, zaten er van die 1-regelige functionele parels tussen.

Acties:
  • 0 Henk 'm!

  • Kaw
  • Registratie: Maart 2001
  • Laatst online: 03-09 20:24

Kaw

drm schreef op vrijdag 25 maart 2011 @ 10:35:
[...]
Want in ASP.net kan het geen rommeltje worden? Heeft niks met de taal en het platform te maken maar alles met de mensen die er aan werken.
Je kunt in ASP.net wel het één en het ander afdwingen. Hier gebruiken we VS2010 in combinatie met Resharper en FXCop. Als je dan elkaars werk nakijkt, dan is zelfs bij haastklussen de code schoon, want de buildserver wil gewoon niet bouwen als je bepaalde regels hebt overtreden. In combinatie met goed technisch ontwerp en een goede Lead SE'er die op macroniveau het een beetje in de gaten houdt, gaat qua coding zo'n project eigenlijk altijd prima.

PHP lokt gewoonweg 'functioneel' programmeren uit. Zolang het functioneel maar werkt is het goede code. Wanneer je met een grote groep programmeurs werkt, dan zit er altijd wel iemand tussen die iets fundamenteels verknalt zijn 'geniale shortcuts'.

Acties:
  • 0 Henk 'm!

  • Freeaqingme
  • Registratie: April 2006
  • Laatst online: 03-10 22:00
PHP lokt gewoonweg 'functioneel' programmeren uit. Zolang het functioneel maar werkt is het goede code. Wanneer je met een grote groep programmeurs werkt, dan zit er altijd wel iemand tussen die iets fundamenteels verknalt zijn 'geniale shortcuts'.
Wat een onzin. Dat jij met die mentaliteit programmeert of niet de juiste discipline hebt als je PHP gebruikt moet jij weten. Dat veel beginnende php'ers/programmeurs het zo doen, moeten zij weten. Maar de taal opzich lokt niets uit. Je /kan/ met php heel slordige code schrijven, maar dat /kan/ ook gewoon heel netjes.

Daarnaast, waarom zou je een buildserver hebben die bepaalde code weigert omdat 't niet netjes is? Als programmeur ben je zelf toch ook gewoon capabel genoeg om je aan de geldende coding standards te houden?

No trees were harmed in creating this message. However, a large number of electrons were terribly inconvenienced.


Acties:
  • 0 Henk 'm!

  • MBV
  • Registratie: Februari 2002
  • Laatst online: 03-10 10:15
Helaas. Jij wel, je directe collega ook, maar als je 3000 collega's hebt zitten er altijd wat rotte appels tussen. En dan krijg je zo'n heerlijk bord spaghetti, waarbij je zeker bug X niet moet oplossen omdat dat bug Y introduceert. En waar een printf ervoor zorgt dat bug Z niet meer optreedt :(

Acties:
  • 0 Henk 'm!

  • orf
  • Registratie: Augustus 2005
  • Laatst online: 18:36

orf

Kaw schreef op vrijdag 25 maart 2011 @ 16:02:
[...]PHP lokt gewoonweg 'functioneel' programmeren uit. Zolang het functioneel maar werkt is het goede code. Wanneer je met een grote groep programmeurs werkt, dan zit er altijd wel iemand tussen die iets fundamenteels verknalt zijn 'geniale shortcuts'.
En met PHP kun je niet een deploy proces hebben waarin je coding standards afdwingt? Wij publiceren websites vanuit SVN en we kunnen bij een commit al afdwingen dat het aan de coding standards voldoet (doen we niet omdat onze developers capabel genoeg zijn).

Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 03-10 16:38

.oisyn

Moderator Devschuur®

Demotivational Speaker

MBV schreef op vrijdag 25 maart 2011 @ 17:22:
.. bug X .. bug Y .. bug Z ..
Cool, 3D bugs :P

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


Acties:
  • 0 Henk 'm!

  • MBV
  • Registratie: Februari 2002
  • Laatst online: 03-10 10:15
Ja, die hebben we ook :P

@orf: er zijn minder tools beschikbaar, omdat er minder vaak serieus in wordt geprogrammeerd.

Acties:
  • 0 Henk 'm!

  • Freeaqingme
  • Registratie: April 2006
  • Laatst online: 03-10 22:00
Mbv, ik weet niet in welke kringen jij rondhangt, maar jouw beeld van PHP kan niet gebasseerd zijn op feiten uit deze eeuw ;)

Er zijn genoeg tools die coding standards checken, en uiteindelijk heb je er maar 1 nodig, dus zelfs als het er minder zijn (wat ik betwijfel) is dat meer dan genoeg.

No trees were harmed in creating this message. However, a large number of electrons were terribly inconvenienced.


Acties:
  • 0 Henk 'm!

  • Gamebuster
  • Registratie: Juli 2007
  • Laatst online: 27-09 22:01
Heb ik liever Y en N

Let op: Mijn post bevat meningen, aannames of onwaarheden


Acties:
  • 0 Henk 'm!

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 18:08

Janoz

Moderator Devschuur®

!litemod

Freeaqingme schreef op vrijdag 25 maart 2011 @ 17:45:
Mbv, ik weet niet in welke kringen jij rondhangt, maar jouw beeld van PHP kan niet gebasseerd zijn op feiten uit deze eeuw ;)

Er zijn genoeg tools die coding standards checken, en uiteindelijk heb je er maar 1 nodig, dus zelfs als het er minder zijn (wat ik betwijfel) is dat meer dan genoeg.
Leuk dat ze coding standards checken, maar daar gaat het hier niet om. Hoeveel tooling is er die een static code analysis kan doen? Dat je kunt afdwingen dat bij een if altijd {}'s worden gebruikt en of ze nu wel of niet op dezelfde regel staan is leuk, maar metrics en coverage zijn natuurlijk een stuk belangrijker voor je software kwaliteit.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Acties:
  • 0 Henk 'm!

  • burne
  • Registratie: Maart 2000
  • Niet online

burne

Mine! Waah!

FragFrog schreef op vrijdag 25 maart 2011 @ 13:03:
nouja, op een paar academische talen na wellicht
Ada:
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
package
i
is
type xo
is range
(%**%(1,2:0: *
8:1).."**"(3
, (7:3:+0)/9#1#-1)
;end;

procedure p
is
type rec
(d: natural)
is null record;
protected type pt
(e:integer) is private
f:rec(e) ;end; protected
body pt is end; begin null
;end;

generic
package abc
is generic
with package
de is
new abc
( <> )
; procedure
l ;
end ;

stukje obfuscated ADA voor je..

I don't like facts. They have a liberal bias.


Acties:
  • 0 Henk 'm!

  • MBV
  • Registratie: Februari 2002
  • Laatst online: 03-10 10:15
Janoz schreef op vrijdag 25 maart 2011 @ 21:12:
[...]


Leuk dat ze coding standards checken, maar daar gaat het hier niet om. Hoeveel tooling is er die een static code analysis kan doen? Dat je kunt afdwingen dat bij een if altijd {}'s worden gebruikt en of ze nu wel of niet op dezelfde regel staan is leuk, maar metrics en coverage zijn natuurlijk een stuk belangrijker voor je software kwaliteit.
Tja, metrics is vrij makkelijk: als je accolades bij ifjes kan afdwingen kan je ook McCabe, Halstead en LOC uitrekenen. Omdat een parser schrijven voor PHP zal hij niet in alle gevallen 100% kloppen, maar veel tools voor C++ zijn net zo goed in een paar regexjes geschreven :X Code coverage bij PHP lijkt me onmogelijk, bij gebrek aan een compiler.

Acties:
  • 0 Henk 'm!

  • Aloys
  • Registratie: Juni 2005
  • Niet online
Ook nog een leuke in c/c++

En ik maar kijken waarom hij altijd naar de else gaat als het waar is:
C:
1
2
3
4
if( strcmp( naamA, naamB) )
  // doe iets
else
  // doe iets anders

Acties:
  • 0 Henk 'm!

  • burne
  • Registratie: Maart 2000
  • Niet online

burne

Mine! Waah!

MBV schreef op vrijdag 25 maart 2011 @ 22:58:
Code coverage bij PHP lijkt me onmogelijk, bij gebrek aan een compiler.
Wikipedia: PHP (linked naar de paragraaf over php-compilers..)

[ Voor 8% gewijzigd door burne op 26-03-2011 00:50 ]

I don't like facts. They have a liberal bias.


Acties:
  • 0 Henk 'm!

  • Zeebonk
  • Registratie: Augustus 2005
  • Laatst online: 30-07 20:50
Aloys schreef op zaterdag 26 maart 2011 @ 00:37:
Ook nog een leuke in c/c++

En ik maar kijken waarom hij altijd naar de else gaat als het waar is:
C:
1
2
3
4
if( strcmp( naamA, naamB) )
  // doe iets
else
  // doe iets anders
De functie heet natuurlijk "string compare" en niet "strings are equal" ;)
(Je krijgt een verschil. Géén verschil: 0)

[ Voor 7% gewijzigd door Zeebonk op 26-03-2011 12:08 ]


Acties:
  • 0 Henk 'm!

  • FragFrog
  • Registratie: September 2001
  • Laatst online: 11:21
Aloys schreef op zaterdag 26 maart 2011 @ 00:37:
En ik maar kijken waarom hij altijd naar de else gaat als het waar is:
[...]
Je bedoelt als naamA en naamB gelijk zijn aan elkaar neem ik aan? Of mis ik een quirk in C? :)

Probleem waar ik vandaag tegenaan liep. Een vrij grote applicatie geschreven in C++ waarbij je onder andere nieuwe characters aan kan maken. Index van deze characters (en heel veel meer zaken for that matter) moet uniek zijn maar is niet auto-incremental in de (MySQL) database (al een WTF op zich, maar goed).

Enfin, ik ging er vanuit dat ze iets deden als MAX(guid) + 1. Prima, kan beter, maar valt mee te leven. En in eerste instantie leek dat ook zo:
C++:
1
2
3
4
5
6
    QueryResult *result = CharacterDatabase.Query( "SELECT MAX(guid) FROM characters" );
    if( result )
    {
        m_CharGuids.Set((*result)[0].GetUInt32()+1);
        delete result;
    }

Dat verklaart echter niet waarom, als ik zelf via een andere applicatie nieuwe guid's aanmaak, deze overschreven leken te worden. Tot ik las hoe ze het volgende guid genereren:
C++:
1
2
3
4
T IdGenerator<T>::Generate()
{
    return m_nextGuid++;
}


Tijdens startup wordt het hoogste guid in de database bepaald en vervolgens wordt elk guid gegenereert door (vorige guid) + 1 te pakken :'( En dit is een serverapplicatie die makkelijk weken achter elkaar draait. Kun je dus nooit via een andere applicatie een record inserten zonder dat die weer overschreven wordt :|

[ Voor 69% gewijzigd door FragFrog op 26-03-2011 12:20 ]

[ Site ] [ twitch ] [ jijbuis ]


Acties:
  • 0 Henk 'm!

  • Aloys
  • Registratie: Juni 2005
  • Niet online
Zeebonk schreef op zaterdag 26 maart 2011 @ 12:03:
[...]


De functie heet natuurlijk "string compare" en niet "strings are equal" ;)
(Je krijgt een verschil. Géén verschil: 0)
Natuurlijk, maar als je een poosje bezig bent ben je niet meer zo helder. Dan vergeet je dat soort dingen en dan kan je je hoofd er wel over breken, het valt niet echt op als foutieve code. :)

Overigens heb ik een rothekel aan C met een berg aan pointers, dus dan ben je al helemaal niet helder meer ;( . En voor OSX is er ook geen fatsoenlijke debug tool waarmee ik kan monitoren hoe references zitten (en in elkaar verweven zijn/raken).

Acties:
  • 0 Henk 'm!

  • PrisonerOfPain
  • Registratie: Januari 2003
  • Laatst online: 26-05 17:08
MBV schreef op vrijdag 25 maart 2011 @ 22:58:
[...]

Tja, metrics is vrij makkelijk: als je accolades bij ifjes kan afdwingen kan je ook McCabe, Halstead en LOC uitrekenen. Omdat een parser schrijven voor PHP zal hij niet in alle gevallen 100% kloppen, maar veel tools voor C++ zijn net zo goed in een paar regexjes geschreven :X Code coverage bij PHP lijkt me onmogelijk, bij gebrek aan een compiler.
De lexer & parser zijn open-source. Als iemand degelijke tools had willen maken had dat al lang het geval kunnen zijn.

Acties:
  • 0 Henk 'm!

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06 13:31

drm

f0pc0dert

MBV:
Code coverage bij PHP lijkt me onmogelijk, bij gebrek aan een compiler.
PHP heeft wel een compiler, alleen wordt de bytecode direct uitgevoerd ipv opgeslagen.

PHPUnit kan i.c.m. XDebug keurige code coverage rapportages maken. Kan prima samenwerken met diverse Continuous Integration platforms. Verder zijn er allerlei code metrics en -analysetools beschikbaar, zoals phploc, phpcpd, phpdpd, pdepend, bytekit, enz enz.

Aan de tools zal het dus niet liggen. Nogmaals, het ligt aan de mensen die er achterzitten. M.a.w. als je een rotte appel in je .NET of Java team hebt zitten is dat net zo vervelend als wanneer die in je PHP team zit.

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


Acties:
  • 0 Henk 'm!

  • Freeaqingme
  • Registratie: April 2006
  • Laatst online: 03-10 22:00
drm schreef op zaterdag 26 maart 2011 @ 17:50:
[...]
PHP heeft wel een compiler, alleen wordt de bytecode direct uitgevoerd ipv opgeslagen.
Niet per se. Je hebt APC, Alternative PHP Cache, welke standaard deel uitmaakt van PHP (of dat gaat doen in 5.4). Deze slaat de bytecode apart op, zodat het omzetten naar bytecode niet bij iedere execution opnieuw hoeft te gebeuren. Daarnaast heb je ook token_get_all() waarmee je rechtstreeks de lexer van php kan gebruiken.

No trees were harmed in creating this message. However, a large number of electrons were terribly inconvenienced.


Acties:
  • 0 Henk 'm!

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06 13:31

drm

f0pc0dert

Freeaqingme:
Niet per se. Je hebt APC, Alternative PHP Cache, welke standaard deel uitmaakt van PHP (of dat gaat doen in 5.4).
Ja, zo heb je er nog veel meer, maar die zouden allemaal niet bestaan als PHP niet zelf een compiler had, want dan viel er niet zoveel te cachen ;)
Daarnaast heb je ook token_get_all() waarmee je rechtstreeks de lexer van php kan gebruiken.
Vrijwel alle analysetools die ik noemde maken daar idd gebruik van.

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


Acties:
  • 0 Henk 'm!

  • burne
  • Registratie: Maart 2000
  • Niet online

burne

Mine! Waah!

drm schreef op zaterdag 26 maart 2011 @ 17:50:
PHP heeft wel een compiler, alleen wordt de bytecode direct uitgevoerd ipv opgeslagen.
Roadsend, Raven en HipHop leveren direct of via een omweg (C++) via gcc een native binary op. En er zijn meer wegen. Zelfs .NET C# is mogelijk, als je wil.

I don't like facts. They have a liberal bias.


Acties:
  • 0 Henk 'm!

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06 13:31

drm

f0pc0dert

Ja, er zijn nog veel meer coole toolies, maar daar gaat het niet om :z. Er werd gezegd dat PHP geen compiler heeft, en ik zeg dus dat 'ie die wel heeft, alleen zie je daar niks van.

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


Acties:
  • 0 Henk 'm!

  • burne
  • Registratie: Maart 2000
  • Niet online

burne

Mine! Waah!

drm schreef op zaterdag 26 maart 2011 @ 18:14:
Ja, er zijn nog veel meer coole toolies, maar daar gaat het niet om :z. Er werd gezegd dat PHP geen compiler heeft, en ik zeg dus dat 'ie die wel heeft, alleen zie je daar niks van.
Ga's met facebook praten? Die hebben HipHop geschreven omdat ze hun bestaande ontwikkelaars aan hun bestaande code willen laten prutsen maar ook geld wilden besparen op het aantal dozen in het datacenter. Tweemaal meer data uit een server met een iets lagere CPU-load dan wanneer je het op de php-intepreter draait.

Ik denk dat er genoeg sites dezelfde kant op zijn gegaan zonder het aan de grote klok te hangen.

De laatste keer dat ik keek was Hyves bezig met z'n 4500-ste server. Gebruik van HipHop zou dat kunnen halveren. Reken op een euro of 50 per doos per maand, en reken eens uit wat dat bespaart? Wie zou dat laten liggen?

I don't like facts. They have a liberal bias.


Acties:
  • 0 Henk 'm!

  • CodeCaster
  • Registratie: Juni 2003
  • Niet online

CodeCaster

Can I get uhm...

Als de meeste tijd in het parsen en uitvoeren van PHP gaat zitten heeft dat zin, ja.
However, he continued to say that raw execution speed was "not a significant factor" for many applications. "Even if you double the execution speed of something that is 10% of your overall request cost, that is only a 5% overall improvement. If on every request you are hitting memcache/postgresql/mysql 10 times and spending a lot of time in system calls, don't expect miracles from HipHop."

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


Acties:
  • 0 Henk 'm!

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06 13:31

drm

f0pc0dert

burne:
Ga's met facebook praten?Die hebben HipHop geschreven omdat ze hun bestaande ontwikkelaars aan hun bestaande code willen laten prutsen maar ook geld wilden besparen op het aantal dozen in het datacenter. Tweemaal meer data uit een server met een iets lagere CPU-load dan wanneer je het op de php-intepreter draait.

Ik denk dat er genoeg sites dezelfde kant op zijn gegaan zonder het aan de grote klok te hangen.

De laatste keer dat ik keek was Hyves bezig met z'n 4500-ste server. Gebruik van HipHop zou dat kunnen halveren. Reken op een euro of 50 per doos per maand, en reken eens uit wat dat bespaart? Wie zou dat laten liggen?
Allemaal waar, maar daar ging het dus niet over. Lees eerst ff een paar posts terug voordat je in de verdediging schiet over iets waar ik je niet op aanval.

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


Acties:
  • 0 Henk 'm!

  • burne
  • Registratie: Maart 2000
  • Niet online

burne

Mine! Waah!

drm schreef op zaterdag 26 maart 2011 @ 19:29:
[...]
Allemaal waar, maar daar ging het dus niet over. Lees eerst ff een paar posts terug voordat je in de verdediging schiet over iets waar ik je niet op aanval.
Ik kon me niet voorstellen dat je dàt flauwe grapje probeerde te maken, dus ik heb je verkeerd begrepen. Excuus.

I don't like facts. They have a liberal bias.


Acties:
  • 0 Henk 'm!

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06 13:31

drm

f0pc0dert

burne:
Ik kon me niet voorstellen dat je dàt flauwe grapje probeerde te maken, dus ik heb je verkeerd begrepen. Excuus.
np :)

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


Acties:
  • 0 Henk 'm!

  • Paprika
  • Registratie: September 2007
  • Laatst online: 16:09
2 Collega studenten, 2e jaars

Form:
C#:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
        private void BeginButton1Click(object sender, EventArgs e)
        {
            int teller = 0;
            foreach (RadioButton rb in algorGroupBox1.Controls)
            {
                if (rb.Checked)
                {
                    _controller.CalculatePath(rb, teller, delayCheckBox1.Checked);
                }
                teller++;
            }
            DrawBoard();
            DisplayGraphics();
        }

"Controller":
C#:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
        internal void CalculatePath(RadioButton rb, int alg, bool p2)
        {
            _algorithms = new Algorithms(_board, _drawing);

            if (alg == 1 && rb.Name == "radioButton1" && rb.Checked == true)
            {
                _algorithms.Bfs();
            }
            else if (alg == 2 && rb.Name == "radioButton2" && rb.Checked == true)
            {
                _algorithms.Dfs();
            }
            else if (alg == 3 && rb.Name == "radioButton3" && rb.Checked == true)
            {
                _algorithms.Astar();
            }
            else
            {
                MessageBox.Show("Er is een fout opgetreden.");
            }
        }


Maar even alles verwijderd en LINQ gebruikt. Ik begon al te zweten toen er "using System.Windows.Forms;" in een non-form klasse stond. :F

Het A-Star gedeelte had ik voor ze gedaan... Meteen even een interface voor ieder algoritme gemaakt en wat enums gebruikt voor A-Star.
Kan ik die interface niet verwijderen en gewoon dezelfde namen van methodes gebruiken? Scheelt weer bij het printen van de code.
Uiteraard ook alles in dezelfde thread als het forum. Altijd leuk die witte formpjes met het Not-Responding bericht. :+

[ Voor 14% gewijzigd door Paprika op 27-03-2011 22:49 ]


Acties:
  • 0 Henk 'm!

  • Yeroon1986
  • Registratie: Augustus 2005
  • Laatst online: 01-08 10:13
burne schreef op zaterdag 26 maart 2011 @ 18:22:
De laatste keer dat ik keek was Hyves bezig met z'n 4500-ste server. Gebruik van HipHop zou dat kunnen halveren. Reken op een euro of 50 per doos per maand, en reken eens uit wat dat bespaart? Wie zou dat laten liggen?
Hyves gebruikt ook HiPHoP. Dat is door Facebook zelf medegedeeld tijdens de PHPBenelux Conference 2011. Ik zal eens een bron opzoeken...

http://twitter.com/ijansch/status/31286940535885824

[ Voor 5% gewijzigd door Yeroon1986 op 28-03-2011 15:07 ]


Acties:
  • 0 Henk 'm!

  • CodeCaster
  • Registratie: Juni 2003
  • Niet online

CodeCaster

Can I get uhm...

Argh. Waar was ISNULL ook alweer voor?
SQL:
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
DECLARE @Foo VARCHAR(10);
SELECT @Foo = 'Foo';

IF (@Foo <> 'Foo')
    PRINT '@Foo <> ''Foo'''
ELSE
    PRINT '@Foo == ''Foo''';

SELECT @Foo = 'Bar';

IF (@Foo <> 'Foo')
    PRINT '@Foo <> ''Foo'''
ELSE
    PRINT '@Foo == ''Foo''';

SELECT @Foo = NULL;

IF (@Foo <> 'Foo')
    PRINT '@Foo <> ''Foo'''
ELSE
    PRINT '@Foo == ''Foo''';

IF (ISNULL(@Foo, '') <> 'Foo')
    PRINT '@Foo <> ''Foo'''
ELSE
    PRINT '@Foo == ''Foo''';


Uitvoer:
@Foo == 'Foo'
@Foo <> 'Foo'
@Foo == 'Foo'
@Foo <> 'Foo'


Ik ook met m'n stomme kop. :P

[ Voor 10% gewijzigd door CodeCaster op 28-03-2011 17:39 ]

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


Acties:
  • 0 Henk 'm!

Verwijderd

C:
1
2
3
counter = 0;
if (counter > 200) // if 2 s nothing
    start = 1;   // Set start


En dan verbaast zijn dat het niet werkt 8)7

Acties:
  • 0 Henk 'm!

  • Michali
  • Registratie: Juli 2002
  • Laatst online: 29-05 22:54
Verwijderd schreef op donderdag 31 maart 2011 @ 19:07:
C:
1
2
3
counter = 0;
if (counter > 200) // if 2 s nothing
    start = 1;   // Set start


En dan verbaast zijn dat het niet werkt 8)7
Die comment is nog ernstiger dan dat gebeuren met die counter imo.

Noushka's Magnificent Dream | Unity


Acties:
  • 0 Henk 'm!

  • Davio
  • Registratie: November 2007
  • Laatst online: 06-01 16:46
Stone coal English?

Acties:
  • 0 Henk 'm!

  • Matis
  • Registratie: Januari 2007
  • Laatst online: 15:31

Matis

Rubber Rocket

I gamble yes :)

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


Acties:
  • 0 Henk 'm!

  • RayNbow
  • Registratie: Maart 2003
  • Laatst online: 18:31

RayNbow

Kirika <3

Iets zegt me dat dit niet de bedoeling was...

Chiasme

Ipsa Scientia Potestas Est
NNID: ShinNoNoir


Acties:
  • 0 Henk 'm!

  • Matis
  • Registratie: Januari 2007
  • Laatst online: 15:31

Matis

Rubber Rocket

RayNbow schreef op vrijdag 01 april 2011 @ 09:19:
Iets zegt me dat dit niet de bedoeling was...

[afbeelding]
De define doet iig wat hij zegt te doen, return Positive Negative votes. Dat degene die de functie/define aanroept de waardes verkeerd wegzet, dat is idd slordig :P

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


Acties:
  • 0 Henk 'm!

  • Davio
  • Registratie: November 2007
  • Laatst online: 06-01 16:46
Volgens mij hebben ze dit bij de Amerikaanse verkiezingen met Bush en Gore ook gedaan. :9

Acties:
  • 0 Henk 'm!

Verwijderd

Ohh hoe slecht van mij :P
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
        public void downloadRooster(Context context) {
            final SharedPreferences settings = getPreferences(MODE_PRIVATE);
            try {
                    HttpClient http = new DefaultHttpClient();
                    HttpGet requestToday = new HttpGet();
                    URL today = new URL("www.stijnmeijer.nl/rw/app.json/1/"+settings.getString("classIsSet", "error"));
                    requestToday.setURI(new URI("http://www.stijnmeijer.nl/rw/app.json/1"));
                    HttpResponse responseToday = http.execute(requestToday);
                    Log.e(responseToday.getEntity().toString(), "entity");
                    url = requestToday.getURI().toString();
                   
                   
            }
            catch(URISyntaxException lol) {
                // de exceptions die mogelijk voor kunnen komen catchen.
                    Log.e("NOOOEE","zomg URISYNTAXEXCEPTION!!!!");
        }
            catch(MalformedURLException MUE) {
                    Log.e("MUE!", "MUE Exception in downloadRooster()");
                    Log.e(url, "The URL");
            }
            catch(ClientProtocolException CPE) {
                    Log.e("CPE!", "CPE Exception in downloadRooster()");
            }
            catch(IOException IOE) {
                    Log.e("IOE!", "IOE Exception in downloadRooster()");
            }
        }


Vooral lolz @ de
Java:
1
 Log.e("NOOOEE","zomg URISYNTAXEXCEPTION!!!!");

Acties:
  • 0 Henk 'm!

  • twiFight
  • Registratie: Januari 2002
  • Niet online
Je Engels en Nederlands door elkaar doet mijn wenkbrauw ook enigszins omhoog bewegen, anders..

Acties:
  • 0 Henk 'm!

  • P_de_B
  • Registratie: Juli 2003
  • Niet online
Waarom wil je een haan downloaden :?

Oops! Google Chrome could not find www.rijks%20museum.nl


Acties:
  • 0 Henk 'm!

  • Alex)
  • Registratie: Juni 2003
  • Laatst online: 21-08 11:20
P_de_B schreef op zondag 10 april 2011 @ 18:40:
Waarom wil je een haan downloaden :?
_O-

We are shaping the future


Acties:
  • 0 Henk 'm!

Verwijderd

twiFight schreef op zondag 10 april 2011 @ 18:28:
Je Engels en Nederlands door elkaar doet mijn wenkbrauw ook enigszins omhoog bewegen, anders..
Hoezo niet zo moeilijk te lezen toch of is het echt zo gek?

enne lol @ downloadRooster xD

Acties:
  • 0 Henk 'm!

Verwijderd

C:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
// BIT DEFINITION

#define   BIT0        0x00000001
#define   BIT1        0x00000002
#define   BIT2        0x00000004
#define   BIT3        0x00000008
#define   BIT4        0x00000010
#define   BIT5        0x00000020
#define   BIT6        0x00000040
#define   BIT7        0x00000080
#define   BIT8        0x00000100
#define   BIT9        0x00000200
#define   BIT10       0x00000400
#define   BIT11       0x00000800
#define   BIT12       0x00001000
#define   BIT13       0x00002000
#define   BIT14       0x00004000
#define   BIT15       0x00008000
#define   BIT16       0x00010000
#define   BIT17       0x00020000
#define   BIT18       0x00040000
#define   BIT19       0x00080000
#define   BIT20       0x00100000
#define   BIT21       0x00200000
#define   BIT22       0x00400000
#define   BIT23       0x00800000
#define   BIT24       0x01000000
#define   BIT25       0x02000000
#define   BIT26       0x04000000
#define   BIT27       0x08000000
#define   BIT28       0x10000000
#define   BIT29       0x20000000
#define   BIT30       0x40000000
#define   BIT31       0x80000000


Lekker nuttig...

Voor de duidelijkheid, dit is uit een library voor embedded development. Zodra je voor embedded gaat programmeren moet je toch wel een béétje bekend zijn hexadecimale getallen...

Acties:
  • 0 Henk 'm!

  • Styxxy
  • Registratie: Augustus 2009
  • Laatst online: 03-10 10:59
Verwijderd schreef op zondag 10 april 2011 @ 18:57:
C:
1
// Bit definitions

Lekker nuttig...

Voor de duidelijkheid, dit is uit een library voor embedded development. Zodra je voor embedded gaat programmeren moet je toch wel een béétje bekend zijn hexadecimale getallen...
Doet me denken aan http://thedailywtf.com/Ar...ding-Magic-Constants.aspx :+ .

Acties:
  • 0 Henk 'm!

Verwijderd

Mwoah, het is meer voor mensen die te lui zijn om 1 seconde te denken over waar welke bit zit denk ik...waar er helaas bij mijn studie meer dan teveel van zijn...

Acties:
  • 0 Henk 'm!

  • Makkelijk
  • Registratie: November 2000
  • Laatst online: 09:17
Magic constants, awesome. Gebruik constanten die weergeven waarom het nummer 4 is. En als dat niet zo is, typ dan gewoon een 4. Het maakt qua code netheid niet uit of je INTEGER4 of '4' typt, iedereen weet dat 4 een integer is.

Het idee dat magic numbers pure evil zijn moet je bij algoritmen soms even aan je voorbij laten gaan. De methodenaam of eventueel inline commentaar kan ook prima aangeven waarom dat magic number er staat.

Dat C voorbeeld, als je je daar fijn bij voelt kan het geen enkele kwaad toch? Het is wel een beetje anders, omdat INTEGER4 => 4 iets meer dubbel op is dan BIT4 => 0x00000010

[ Voor 13% gewijzigd door Makkelijk op 10-04-2011 19:35 ]

Badieboediemxvahajwjjdkkskskskaa


Acties:
  • 0 Henk 'm!

  • BarôZZa
  • Registratie: Januari 2003
  • Laatst online: 14:36
Verwijderd schreef op zondag 10 april 2011 @ 19:04:
Mwoah, het is meer voor mensen die te lui zijn om 1 seconde te denken over waar welke bit zit denk ik...waar er helaas bij mijn studie meer dan teveel van zijn...
Je hersenen breken over nutteloze zaken is energieverspilling en zorgt er alleen maar voor dat de kans op fouten groter wordt. Plus dat de code een stuk leesbaarder wordt op deze manier. Vind er werkelijk niks slecht aan.

Acties:
  • 0 Henk 'm!

  • ValHallASW
  • Registratie: Februari 2003
  • Niet online
Verwijderd schreef op zondag 10 april 2011 @ 18:57:
Zodra je voor embedded gaat programmeren moet je toch wel een béétje bekend zijn hexadecimale getallen...
Na und?
C:
1
out_fan_on = BIT1


is m.i. een stuk leesbaarder dan
C:
1
out_fan_on = 0x2


ookal betekenen ze het zelfde. En ja, het zijn min of meer 'magic constants', maar toch ook vooral net niet. Het is een embedded systeem, dus daar hangt elektronica aan vast. En dáár betekenen BIT0..BIT15 wel degelijk iets: die corresponderen namelijk met een pootje op je chip. Sterker nog, dat het toevallig ook weer te geven is als een getal zal je dan werkelijk aan je reet roesten.

[ Voor 8% gewijzigd door ValHallASW op 10-04-2011 20:20 ]


Acties:
  • 0 Henk 'm!

Verwijderd

ValHallASW schreef op zondag 10 april 2011 @ 20:19:
[...]

Na und?
C:
1
out_fan_on = BIT1


is m.i. een stuk leesbaarder dan
C:
1
out_fan_on = 0x2


ookal betekenen ze het zelfde. En ja, het zijn min of meer 'magic constants', maar toch ook vooral net niet. Het is een embedded systeem, dus daar hangt elektronica aan vast. En dáár betekenen BIT0..BIT15 wel degelijk iets: die corresponderen namelijk met een pootje op je chip. Sterker nog, dat het toevallig ook weer te geven is als een getal zal je dan werkelijk aan je reet roesten.
Niet mee eens, heel vaak hebben bits voor registers ook gewoon een define gekregen. Bijvoorbeeld:

C:
1
UCSRB |= (1 << RXEN)


Dat vind ik een stuk duidelijker dan

C:
1
UCSRB |= (1 << BIT4)


Bij het laatste voorbeeld moet je in de datasheet gaan opzoeken wat bit 4 ook alweer is, terwijl bij het eerste voorbeeld gewoon duidelijk is dat je bit RXEN op 1 zet. Welke locatie dit dan heeft, maakt ook niet uit.

Daarnaast, mocht RXEN een keer van bijvoorbeeld bit 4 naar bit 1 gaan (om de een of andere rede), dan hoef je niet overal in je code BIT4 naar BIT1 te veranderen. En dat is een van de redenen waarom er define's zijn. Toch?

Acties:
  • 0 Henk 'm!

  • Haan
  • Registratie: Februari 2004
  • Laatst online: 15:05

Haan

dotnetter

hier klopte iets niet...

[ Voor 90% gewijzigd door Haan op 10-04-2011 21:39 ]

Kater? Eerst water, de rest komt later


Acties:
  • 0 Henk 'm!

Verwijderd

RXEN is gewoon de naam van een bit uit een register (register UCSRB) :P. Dat had ik misschien niet helemaal duidelijk gemaakt.

Acties:
  • 0 Henk 'm!

  • Styxxy
  • Registratie: Augustus 2009
  • Laatst online: 03-10 10:59
Makkelijk schreef op zondag 10 april 2011 @ 19:32:
[...]
Magic constants, awesome. Gebruik constanten die weergeven waarom het nummer 4 is. En als dat niet zo is, typ dan gewoon een 4. Het maakt qua code netheid niet uit of je INTEGER4 of '4' typt, iedereen weet dat 4 een integer is.

Het idee dat magic numbers pure evil zijn moet je bij algoritmen soms even aan je voorbij laten gaan. De methodenaam of eventueel inline commentaar kan ook prima aangeven waarom dat magic number er staat.

Dat C voorbeeld, als je je daar fijn bij voelt kan het geen enkele kwaad toch? Het is wel een beetje anders, omdat INTEGER4 => 4 iets meer dubbel op is dan BIT4 => 0x00000010
Ik weet dat het niet geheel dezelfde situatie is, deed me er gewoon aan denken :P.

Acties:
  • 0 Henk 'm!

  • P-Storm
  • Registratie: September 2006
  • Laatst online: 18:06
Java:
1
2
float n = 1.234;
int k = n + .4;


En dan afvragen waarom er geen 2 uitkomt (magisch afronden in me hoofd :P)
Volgende keer iets minder uitgaan van de wiskundige regels |:(.

Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 03-10 16:38

.oisyn

Moderator Devschuur®

Demotivational Speaker

Verwijderd schreef op zondag 10 april 2011 @ 20:56:
[...]


Niet mee eens, heel vaak hebben bits voor registers ook gewoon een define gekregen. Bijvoorbeeld:

C:
1
UCSRB |= (1 << RXEN)


Dat vind ik een stuk duidelijker dan

C:
1
UCSRB |= (1 << BIT4)
Dat klopt, maar dat komt omdat dat 2e voorbeeld gewoon fout is. Daarnaast, wie zegt dat er verderop niet ergens staat:
C:
1
#define RXEN_BIT BIT4

[ Voor 9% gewijzigd door .oisyn op 10-04-2011 22:50 ]

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


Acties:
  • 0 Henk 'm!

  • YopY
  • Registratie: September 2003
  • Laatst online: 02-10 16:55
Makkelijk schreef op zondag 10 april 2011 @ 19:32:
Het idee dat magic numbers pure evil zijn moet je bij algoritmen soms even aan je voorbij laten gaan.
JaH mAaR mUhN cOdE aNaLyZeR sEgD daT hEi HuT nIeT SnApT!1

vertaling: Static code analysis tools hebben niet altijd gelijk.

Mijn mening over het verdere constants verhaal: ja.

Acties:
  • 0 Henk 'm!

  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
@Bit Define verhaal: Ik vind die defines eigenlijk wel erg duidelijk, en gebruik het zelf ook wel regelmatig. Natuurlijk moet je als embedded programmeur ook wel uit de hexadecimale representatie kunnen komen, maar door gewoon de defines te gebruiken is het wel duidelijker, zeker bij de hogere bits waar je nog wel eens een 0 over het hoofd kunt zien.

Natuurlijk moet het niet betekenen dat je de daadwerkelijke register-bits niet meer hoeft te defineren, maar als je even snel wil kijken welke bits een bepaald register is het volgende IMHO een stuk duidelijker

C:
1
2
3
#define         SOMEREGISTERMASK                  ( BIT15 | BIT16 | BIT 17 )
// Of
#define         SOMEREGISTERMASK                  ( 0x00038000 )

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

  • Caelorum
  • Registratie: April 2005
  • Laatst online: 17:00
twiFight schreef op zondag 10 april 2011 @ 18:28:
Je Engels en Nederlands door elkaar doet mijn wenkbrauw ook enigszins omhoog bewegen, anders..
Och ik ben onlangs ook begonnen met het niet meer vertalen van termen uit het domein. Dit naar aanleiding van een stuk softare waarbij ik zelf op een gegeven moment niet meer de vertaalslag kon maken tussen de door mij vertaalde termen en de termen die de betrokkenen gebruikten.

Acties:
  • 0 Henk 'm!

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 18:08

Janoz

Moderator Devschuur®

!litemod

De discussie is hier al eens eerder gevoerd. De uiteindelijke consensus was: Code in het engels, maar domein niet vertalen. Dan krijg je inderdaad dingen als downlaodRooster en GetKlaslokaal. Voorbeelden die in die discussie aangehaald werden waren bv acceptgiro en gierkelder.

Je moet echter nog wel opletten bij de casing. In het nederlands schrijf je alle woorden aan elkaar waardoor er eigenlijk geen hoofdletters tussen komen (Zie Klaslokaal). Ik merk dat het in mijn projecten nog wel eens voor wil komen dat daar wat verschil in ontstaat. Dan heb je in de dao laag wel een getAllKlasLokalen, maar als property bij een Les object vervolgens wel weer een getKlaslokaal();.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Acties:
  • 0 Henk 'm!

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 18:08

Janoz

Moderator Devschuur®

!litemod

YopY schreef op maandag 11 april 2011 @ 09:12:
vertaling: Static code analysis tools hebben niet altijd gelijk.
Gelukkig is daarvoor de slack die je met elkaar afspreekt. X major violations per Y KLOC.

Maar inderdaad is magic numbers er 1 die toch best vaak onterecht is. Het grote probleem is de 'vaak'. Er zijn namelijk genoeg situaties waarin het wel een dikke violation is, en daardoor kan de regel dus eigenlijk ook gewoon niet uit.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Acties:
  • 0 Henk 'm!

  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
Janoz schreef op maandag 11 april 2011 @ 10:12:
[...]
Maar inderdaad is magic numbers er 1 die toch best vaak onterecht is.
Zo vaak kom ik anders geen situaties tegen waarin ik magic numbers terecht vind. Hooguit als je met indexen/pointers aan het rekenen bent ( delen door 2, plus of min 1, etc ). Maar in bijna alle andere situaties is een constante definiëren dan IMHO toch duidelijker.

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

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 18:08

Janoz

Moderator Devschuur®

!litemod

Woy schreef op maandag 11 april 2011 @ 10:20:
[...]

Zo vaak kom ik anders geen situaties tegen waarin ik magic numbers terecht vind. Hooguit als je met indexen/pointers aan het rekenen bent ( delen door 2, plus of min 1, etc ). Maar in bijna alle andere situaties is een constante definiëren dan IMHO toch duidelijker.
Klopt, maar als bijna alleen die index/pointers nog over zijn dan sneeuwen de andere situaties nogal eens onder.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Acties:
  • 0 Henk 'm!

  • Rutix
  • Registratie: Augustus 2009
  • Laatst online: 05-09-2024
Ik vind die defines voor de BITS ook niet slecht. Maakt het alleen maar beter leesbaar (mits de defines goed zijn opgesteld ofc) en ook is het makkelijk om dan een define snel te veranderen :). Als je een 0 ofzo bent vergeten hoef je niet overal dat 0tje toe te voegen ;)

[ Voor 17% gewijzigd door Rutix op 11-04-2011 14:12 ]

Nothing to see here!


Acties:
  • 0 Henk 'm!

  • vriesdude
  • Registratie: Februari 2002
  • Laatst online: 02-10 07:02
code:
1
2
3
4
Validation of the transaction failed.: 

The specified value does not satisfy the expression
 ^((?![P|p][O|o][S|s][T|t][B|b][U|u][S|s]).)*$.


Dit had natuurlijk ook eenvoudiger gekund ;)

/dev/null


Acties:
  • 0 Henk 'm!

Verwijderd

Ik hoop dat die laatste punt niet bij de regular expression hoort ;) Oh wacht, negative assertions... :r

[ Voor 36% gewijzigd door Verwijderd op 12-04-2011 11:06 ]


Acties:
  • 0 Henk 'm!

  • YopY
  • Registratie: September 2003
  • Laatst online: 02-10 16:55
vriesdude schreef op dinsdag 12 april 2011 @ 09:14:
code:
1
2
3
4
Validation of the transaction failed.: 

The specified value does not satisfy the expression
 ^((?![P|p][O|o][S|s][T|t][B|b][U|u][S|s]).)*$.


Dit had natuurlijk ook eenvoudiger gekund ;)
ieuw regex :(

Java:
1
2
3
4
// /me negeert verhaal over magic constants even.
if (!"postbus".equalsIgnoreCase(input)) {
    throw new TransactionValidationException("Validation of the transaction failed: The specified value is not 'postbus', but " + input);
}


Is waarschijnlijk ook een stuk sneller dan regex. En leesbaarder. En exception is optioneel.

Acties:
  • 0 Henk 'm!

  • kenneth
  • Registratie: September 2001
  • Niet online

kenneth

achter de duinen

Some people, when confronted with a problem, think “I know, I'll use regular expressions.” Now they have two problems.
(Jamie Zawinski)

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


Acties:
  • 0 Henk 'm!

  • Big Womly
  • Registratie: Oktober 2007
  • Laatst online: 01-09 13:39

Big Womly

Live forever, or die trying

YopY schreef op dinsdag 12 april 2011 @ 11:26:
[...]


ieuw regex :(

Java:
1
2
3
4
// /me negeert verhaal over magic constants even.
if (!"postbus".equalsIgnoreCase(input)) {
    throw new TransactionValidationException("Validation of the transaction failed: The specified value is not 'postbus', but " + input);
}


Is waarschijnlijk ook een stuk sneller dan regex. En leesbaarder. En exception is optioneel.
Ja, dat wel. Maar als ik mij niet vergis zijn het geen identieke oplossingen. De regex gaat op meer situaties een TRUE geven dan jou IF

When you talk to God it's called prayer, but when God talks to you it's called schizophrenia


Acties:
  • 0 Henk 'm!

  • Remus
  • Registratie: Juli 2000
  • Laatst online: 15-08-2021
YopY schreef op dinsdag 12 april 2011 @ 11:26:
[...]


ieuw regex :(

Java:
1
2
3
4
// /me negeert verhaal over magic constants even.
if (!"postbus".equalsIgnoreCase(input)) {
    throw new TransactionValidationException("Validation of the transaction failed: The specified value is not 'postbus', but " + input);
}


Is waarschijnlijk ook een stuk sneller dan regex. En leesbaarder. En exception is optioneel.
Dat is volgens mij niet equivalent aan de regex. De regex controleert als ik mij niet vergis of iets begint met postbus (case insensitive), niet of de hele input gelijk is aan postbus.

Acties:
  • 0 Henk 'm!

  • MBV
  • Registratie: Februari 2002
  • Laatst online: 03-10 10:15
.contains dan...

Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 03-10 16:38

.oisyn

Moderator Devschuur®

Demotivational Speaker

Ook niet
De regex zegt:

"postbus" <willekeurig teken>
En dat 0 of meer keer achter elkaar, zonder case sensitivity.

Dus wel postbusApostbusBpostbusC
Maar niet ApostbusB

[ Voor 19% gewijzigd door .oisyn op 12-04-2011 12:14 ]

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!

  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
.oisyn schreef op dinsdag 12 april 2011 @ 12:13:
Ook niet
De regex zegt:

"postbus" <willekeurig teken>
En dat 0 of meer keer achter elkaar, zonder case sensitivity.

Dus wel postbusApostbusBpostbusC
Maar niet ApostbusB
Dus eigenlijk de Java variant van
C#:
1
varToCheck.StartsWith("Postbus", StringComparison.InvariantCultureIgnoreCase);

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

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 03-10 16:38

.oisyn

Moderator Devschuur®

Demotivational Speaker

Nee, want jij accepteert ook postbusABCDEF. En je accepteert een lege string niet, terwijl de regex dat wel doet :)

[ Voor 46% gewijzigd door .oisyn op 12-04-2011 12:42 ]

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!

  • PrisonerOfPain
  • Registratie: Januari 2003
  • Laatst online: 26-05 17:08
Some people, when confronted with regular expression think "Let's change that", creating new and subtle bugs. -- PrisonerOfPain
:>

Acties:
  • 0 Henk 'm!

  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
.oisyn schreef op dinsdag 12 april 2011 @ 12:41:
Nee, want jij accepteert ook postbusABCDEF. En je accepteert een lege string niet, terwijl de regex dat wel doet :)
O ja nu zie ik het. Lekker vreemde validatie dan, ik vraag me af wat er exact de bedoeling van is ( En of die Regexp dat ook doet )

@PrisonerOfPain: Sowieso is het natuurlijk een slecht idee om werkende dingen te gaan wijzigen zonder dat daar een goede reden voor is, maar ik denk dat veel van de Regex oplossingen ook niet exact doen wat de maker bedacht heeft dat ze moeten doen.

[ Voor 26% gewijzigd door Woy op 12-04-2011 13:21 ]

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

  • MBV
  • Registratie: Februari 2002
  • Laatst online: 03-10 10:15
Als ik dat soort dingen tegenkom, en het werkt niet zoals het moet, zal ik niet (alleen) kijken naar wat de regex doet, maar vooral naar wat het moet doen.

Acties:
  • 0 Henk 'm!

  • Rutix
  • Registratie: Augustus 2009
  • Laatst online: 05-09-2024
Als je beetje goed bent in Regex dan ben je inderdaad geneigt om veel dingen in regex te doen.
:) Maar voor andere mensen haalt het toch vaak een beetje de readability weg.

Nothing to see here!


Acties:
  • 0 Henk 'm!

  • soczol
  • Registratie: Oktober 2002
  • Laatst online: 16:51

soczol

Doet iets met energie

vriesdude schreef op dinsdag 12 april 2011 @ 09:14:
code:
1
2
3
4
Validation of the transaction failed.: 

The specified value does not satisfy the expression
 ^((?![P|p][O|o][S|s][T|t][B|b][U|u][S|s]).)*$.


Dit had natuurlijk ook eenvoudiger gekund ;)
Dat lijkt wel verdomd veel op een regex van SIDN. Die houden er niet van als je een postbus als bedrijfsadres invult. Wij hadden dit in eerste instantie wel.

Toen hebben ze bij de introductie van "DRS5" als oplossing de volgende regular expression toegepast:

code:
1
^((?![P|p]ostbus).)*$.


Ze waren dan ook not amused toen mijn collega daar leuk 'POSTBUS' invulde. Nu hebben ze dat 'opgelost', met jouw regexp tot gevolg ;)

Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 03-10 16:38

.oisyn

Moderator Devschuur®

Demotivational Speaker

Maar het is zinloos, want "Postbus 51" wordt niet gematched door de regex.

[ Voor 13% gewijzigd door .oisyn op 12-04-2011 13:44 ]

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!

  • soczol
  • Registratie: Oktober 2002
  • Laatst online: 16:51

soczol

Doet iets met energie

Het gaat dan ook alleen om de straatnaam. Huisnummer (en dus ook postbusnummer) is een apart vakje.

Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 03-10 16:38

.oisyn

Moderator Devschuur®

Demotivational Speaker

Prima, maar "Postbus" matcht ie ook niet.

.edit: oh wacht, ik lees de regex verkeerd. Het zijn 0 of meer tekens die elk niet voorgegaan worden door "postbus". "Postbus 51" zal dus niet geaccepteerd worden, maar "Postbus" wel.

[ Voor 78% gewijzigd door .oisyn op 12-04-2011 13:50 ]

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!

  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
Inderdaad, als het ze er alleen om gaat dat het geen postbus mag zijn, kunnen ze beter een case insensitive contains doen ( Al zou dat problemen op kunnen leveren bij een straatnaam die postbus bevat, maar ik weet niet of dat wel voorkomt in Nederland ).

Maar dan nog schiet je er niet zo veel mee op als je niet daadwerkelijk de postcode controleert, want dan vult er gewoon iemand "Posttbus" in, en komt alle post echt nog wel aan.

[ Voor 26% gewijzigd door Woy op 12-04-2011 13:57 ]

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

  • PrisonerOfPain
  • Registratie: Januari 2003
  • Laatst online: 26-05 17:08
Woy schreef op dinsdag 12 april 2011 @ 13:19:
[...]
@PrisonerOfPain: Sowieso is het natuurlijk een slecht idee om werkende dingen te gaan wijzigen zonder dat daar een goede reden voor is, maar ik denk dat veel van de Regex oplossingen ook niet exact doen wat de maker bedacht heeft dat ze moeten doen.
Het is maar net waar je vertrouwen in hebt; iemand die regular expressions gebruikt en toepast of iemand die ze te moeilijk vind en wil omschrijven naar iets 'leesbaars'.

Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 03-10 16:38

.oisyn

Moderator Devschuur®

Demotivational Speaker

Het had ook een stuk handiger geweest als de standaard regex syntax gewoon EBNF was.

[ Voor 9% gewijzigd door .oisyn op 12-04-2011 14:23 ]

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!

  • Enfer
  • Registratie: Februari 2004
  • Laatst online: 18-09 16:32
Verwijderd schreef op zondag 10 april 2011 @ 18:11:
Ohh hoe slecht van mij :P
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
        public void downloadRooster(Context context) {
            final SharedPreferences settings = getPreferences(MODE_PRIVATE);
            try {
                    HttpClient http = new DefaultHttpClient();
                    HttpGet requestToday = new HttpGet();
                    URL today = new URL("www.stijnmeijer.nl/rw/app.json/1/"+settings.getString("classIsSet", "error"));
                    requestToday.setURI(new URI("http://www.stijnmeijer.nl/rw/app.json/1"));
                    HttpResponse responseToday = http.execute(requestToday);
                    Log.e(responseToday.getEntity().toString(), "entity");
                    url = requestToday.getURI().toString();
                   
                   
            }
            catch(URISyntaxException lol) {
                // de exceptions die mogelijk voor kunnen komen catchen.
                    Log.e("NOOOEE","zomg URISYNTAXEXCEPTION!!!!");
        }
            catch(MalformedURLException MUE) {
                    Log.e("MUE!", "MUE Exception in downloadRooster()");
                    Log.e(url, "The URL");
            }
            catch(ClientProtocolException CPE) {
                    Log.e("CPE!", "CPE Exception in downloadRooster()");
            }
            catch(IOException IOE) {
                    Log.e("IOE!", "IOE Exception in downloadRooster()");
            }
        }


Vooral lolz @ de
Java:
1
 Log.e("NOOOEE","zomg URISYNTAXEXCEPTION!!!!");
Bedoel je het foutieve gebruik van de Logtags? >:)

Acties:
  • 0 Henk 'm!

  • AW_Bos
  • Registratie: April 2002
  • Nu online

AW_Bos

Liefhebber van nostalgie... 🕰️

Wie bedenkt het om in de cachefiles van een template-parser twee maal een /n te plaatsen na een PHP-comment-bovenaan? Wat is het nut om boven je doctype een paar loze enters te gooien?

Telecommunicatie van vroeger
🚅Alles over spoor en treintjes


Acties:
  • 0 Henk 'm!

  • FragFrog
  • Registratie: September 2001
  • Laatst online: 11:21
PrisonerOfPain schreef op dinsdag 12 april 2011 @ 14:16:
Het is maar net waar je vertrouwen in hebt; iemand die regular expressions gebruikt en toepast of iemand die ze te moeilijk vind en wil omschrijven naar iets 'leesbaars'.
In elk geval niet in mensen die regular expressions gebruiken. Hoe vaak daar wel niet topics over voorbij komen met de meest vreemde bugs..

Het 'probleem' met regexen is dat ze in de praktijk bijna altijd wel een paar uitzonderingsgevallen missen of daar gebruikt worden waar een stackbased parser of dedicated functie beter op zijn plaats is. En dat geldt dankzij filter_var voor PHP5.2+ in elk geval ook voor zaken als e-mail adressen, url's, etc. Tegenwoordig gebruik ik regexen nog maar zelden omdat de alternatieven vaak beter zijn - ofwel leesbaarder ofwel domweg robuster.

[ Site ] [ twitch ] [ jijbuis ]


Acties:
  • 0 Henk 'm!

  • T-MOB
  • Registratie: Maart 2001
  • Laatst online: 17:59
FragFrog schreef op dinsdag 12 april 2011 @ 19:20:
[...]

In elk geval niet in mensen die regular expressions gebruiken. Hoe vaak daar wel niet topics over voorbij komen met de meest vreemde bugs..

Het 'probleem' met regexen is dat ze in de praktijk bijna altijd wel een paar uitzonderingsgevallen missen of daar gebruikt worden waar een stackbased parser of dedicated functie beter op zijn plaats is. En dat geldt dankzij filter_var voor PHP5.2+ in elk geval ook voor zaken als e-mail adressen, url's, etc. Tegenwoordig gebruik ik regexen nog maar zelden omdat de alternatieven vaak beter zijn - ofwel leesbaarder ofwel domweg robuster.
Ik ben het met je eens dat je niet overal regexen voor moet gebruiken. Maar filter_var() is niet echt een bruikbaar alternatief. In plaats van onleesbaar is het dan onbekend waarop je filtert (want afhankelijk van de PHP-(sub)versie waarin je code wordt uitgevoerd). Bovendien kun je er vanuitgaan dat de php-developers in de praktijk ook wel een uitzonderingsgeval missen.

Regeren is vooruitschuiven


Acties:
  • 0 Henk 'm!

  • PrisonerOfPain
  • Registratie: Januari 2003
  • Laatst online: 26-05 17:08
FragFrog schreef op dinsdag 12 april 2011 @ 19:20:
Het 'probleem' met regexen is dat ze [...]
Dit zijn geen problemen van regular expression, dit het universele probleem van mensen die slecht in hun baan zijn. Simpel, als je text wilt parsen zorg je maar dat je op de hoogte bent van de gangbare technieken en wat waarop van toepassing is. Net als met alle andere problemen die je als programmeur op dient te kunnen lossen. Mijn punt blijft staan; als je regular expressions om probeert te schrijven terwijl je ze al onleesbaar vind, blijf er dan lekker vanaf of zorg dat je kennis op peil geraakt.

[ Voor 6% gewijzigd door PrisonerOfPain op 13-04-2011 00:07 ]


Acties:
  • 0 Henk 'm!

  • RayNbow
  • Registratie: Maart 2003
  • Laatst online: 18:31

RayNbow

Kirika <3

PrisonerOfPain schreef op dinsdag 12 april 2011 @ 14:16:
[...]


Het is maar net waar je vertrouwen in hebt; iemand die regular expressions gebruikt en toepast of iemand die ze te moeilijk vind en wil omschrijven naar iets 'leesbaars'.
Nou, schrijf deze maar eens om naar iets leesbaars:
Python:
1
2
import re
m = re.compile('^((00|11)*(01|10)(11|00)*(10|01))*(00|11)*(01|10)(11|00)*$')

:+

Ipsa Scientia Potestas Est
NNID: ShinNoNoir


Acties:
  • 0 Henk 'm!

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

.Gertjan.

Owl!

AW_Bos schreef op dinsdag 12 april 2011 @ 18:43:
Wie bedenkt het om in de cachefiles van een template-parser twee maal een /n te plaatsen na een PHP-comment-bovenaan? Wat is het nut om boven je doctype een paar loze enters te gooien?
Trok je zo oude versies van IE niet over de zeik? Als je doctype niet als eerste stond negeerde oude versies van IE deze en ging hij sowieso in Quicks mode. Erg fijne "feature". Weet niet of het voor lege regels ook zo was, maar als je commentaar boven je doctype plaatste had IE sowieso schijt aan je doctype...

IE + Doctype, the horror :(

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


Acties:
  • 0 Henk 'm!

  • kenneth
  • Registratie: September 2001
  • Niet online

kenneth

achter de duinen

Gemini bugtracker. Ik voer een issue in met daarin HTML-code. Oeh, vulnerability! Nee hoor, dat lossen we netjes op door de HTML te escapen een foutmelding te loggen:

A potentially dangerous Request.Form value was detected from the client (ctl00$Main$IssueUC1$rtcDescription$txtTextBox="....
[b]Interesse[/b]..."). at System.Web.HttpRequest.ValidateString(String s, String valueName, String collectionName) 


8)7

Let op het vetgedrukte Interesse, dat wordt dus wel vrolijk zonder controle naar de browser gestuurd 8)7

WTF? 8)7

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

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