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).
Ik ook, iemand die een boolean als string in de DB opsloeg leidde tot dit soort wildgroei aan mogelijke waarden.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
http://www.simple-hosting.nl/diensten/webhostingroy-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).
daar hostte ik eerst wel eens wat, zijn niet duur. Eerste jaar helemaal niet, want ze hebben een actie (hebben ze meestal
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.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.
Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz
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

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.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.
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
Verwijderd
Klopt, al maken sommige talen het wel makkelijker voor je door je enigszins te dwingen om netjes te werken.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.
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 snaptFragFrog 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).
Geen includes en headerfiles? Dat vind ik juist onhandig: die geven een mooie indicatie waar je dependencies liggen.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
Dat zag ik op Project Euler veel.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.
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.
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.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.
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.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'.
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.
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
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).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'.
Cool, 3D bugsMBV schreef op vrijdag 25 maart 2011 @ 17:22:
.. bug X .. bug Y .. bug Z ..
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.
Ja, die hebben we ook 
@orf: er zijn minder tools beschikbaar, omdat er minder vaak serieus in wordt geprogrammeerd.
@orf: er zijn minder tools beschikbaar, omdat er minder vaak serieus in wordt geprogrammeerd.
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.
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.
Heb ik liever Y en N
Let op: Mijn post bevat meningen, aannames of onwaarheden
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.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.
Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'
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.
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 geschrevenJanoz 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.

Ook nog een leuke in c/c++
En ik maar kijken waarom hij altijd naar de else gaat als het waar is:
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 |
Wikipedia: PHP (linked naar de paragraaf over php-compilers..)MBV schreef op vrijdag 25 maart 2011 @ 22:58:
Code coverage bij PHP lijkt me onmogelijk, bij gebrek aan een compiler.
[ Voor 8% gewijzigd door burne op 26-03-2011 00:50 ]
I don't like facts. They have a liberal bias.
De functie heet natuurlijk "string compare" en niet "strings are equal"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
(Je krijgt een verschil. Géén verschil: 0)
[ Voor 7% gewijzigd door Zeebonk op 26-03-2011 12:08 ]
Je bedoelt als naamA en naamB gelijk zijn aan elkaar neem ik aan? Of mis ik een quirk in C?Aloys schreef op zaterdag 26 maart 2011 @ 00:37:
En ik maar kijken waarom hij altijd naar de else gaat als het waar is:
[...]
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
[ Voor 69% gewijzigd door FragFrog op 26-03-2011 12:20 ]
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.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)
Overigens heb ik een rothekel aan C met een berg aan pointers, dus dan ben je al helemaal niet helder meer
De lexer & parser zijn open-source. Als iemand degelijke tools had willen maken had dat al lang het geval kunnen zijn.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 geschrevenCode coverage bij PHP lijkt me onmogelijk, bij gebrek aan een compiler.
PHP heeft wel een compiler, alleen wordt de bytecode direct uitgevoerd ipv opgeslagen.MBV:
Code coverage bij PHP lijkt me onmogelijk, bij gebrek aan een compiler.
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
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.drm schreef op zaterdag 26 maart 2011 @ 17:50:
[...]
PHP heeft wel een compiler, alleen wordt de bytecode direct uitgevoerd ipv opgeslagen.
No trees were harmed in creating this message. However, a large number of electrons were terribly inconvenienced.
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 cachenFreeaqingme:
Niet per se. Je hebt APC, Alternative PHP Cache, welke standaard deel uitmaakt van PHP (of dat gaat doen in 5.4).
Vrijwel alle analysetools die ik noemde maken daar idd gebruik van.Daarnaast heb je ook token_get_all() waarmee je rechtstreeks de lexer van php kan gebruiken.
Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz
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.drm schreef op zaterdag 26 maart 2011 @ 17:50:
PHP heeft wel een compiler, alleen wordt de bytecode direct uitgevoerd ipv opgeslagen.
I don't like facts. They have a liberal bias.
Ja, er zijn nog veel meer coole toolies, maar daar gaat het niet om
. 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
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.drm schreef op zaterdag 26 maart 2011 @ 18:14:
Ja, er zijn nog veel meer coole toolies, maar daar gaat het niet om. Er werd gezegd dat PHP geen compiler heeft, en ik zeg dus dat 'ie die wel heeft, alleen zie je daar niks van.
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.
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...
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.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?
Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz
Ik kon me niet voorstellen dat je dàt flauwe grapje probeerde te maken, dus ik heb je verkeerd begrepen. Excuus.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.
I don't like facts. They have a liberal bias.
npburne:
Ik kon me niet voorstellen dat je dàt flauwe grapje probeerde te maken, dus ik heb je verkeerd begrepen. Excuus.
Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz
2 Collega studenten, 2e jaars
Form:
"Controller":
Maar even alles verwijderd en LINQ gebruikt. Ik begon al te zweten toen er "using System.Windows.Forms;" in een non-form klasse stond.
Het A-Star gedeelte had ik voor ze gedaan... Meteen even een interface voor ieder algoritme gemaakt en wat enums gebruikt voor A-Star.
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.

Het A-Star gedeelte had ik voor ze gedaan... Meteen even een interface voor ieder algoritme gemaakt en wat enums gebruikt voor A-Star.
Uiteraard ook alles in dezelfde thread als het forum. Altijd leuk die witte formpjes met het Not-Responding bericht.Kan ik die interface niet verwijderen en gewoon dezelfde namen van methodes gebruiken? Scheelt weer bij het printen van de code.
[ Voor 14% gewijzigd door Paprika op 27-03-2011 22:49 ]
Hyves gebruikt ook HiPHoP. Dat is door Facebook zelf medegedeeld tijdens de PHPBenelux Conference 2011. Ik zal eens een bron opzoeken...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?
http://twitter.com/ijansch/status/31286940535885824
[ Voor 5% gewijzigd door Yeroon1986 op 28-03-2011 15:07 ]
Argh. Waar was ISNULL ook alweer voor?
Uitvoer:
Ik ook met m'n stomme kop.
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.
[ 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...
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

Die comment is nog ernstiger dan dat gebeuren met die counter imo.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
I gamble yesDavio schreef op vrijdag 01 april 2011 @ 09:14:
Stone coal English?
If money talks then I'm a mime
If time is money then I'm out of time
Iets zegt me dat dit niet de bedoeling was...

Ipsa Scientia Potestas Est
NNID: ShinNoNoir
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 slordigRayNbow schreef op vrijdag 01 april 2011 @ 09:19:
Iets zegt me dat dit niet de bedoeling was...
[afbeelding]
If money talks then I'm a mime
If time is money then I'm out of time
Volgens mij hebben ze dit bij de Amerikaanse verkiezingen met Bush en Gore ook gedaan.
Verwijderd
Ohh hoe slecht van mij 
Vooral lolz @ de
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!!!!"); |
Verwijderd
Hoezo niet zo moeilijk te lezen toch of is het echt zo gek?twiFight schreef op zondag 10 april 2011 @ 18:28:
Je Engels en Nederlands door elkaar doet mijn wenkbrauw ook enigszins omhoog bewegen, anders..
enne lol @ downloadRooster xD
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...
Doet me denken aan http://thedailywtf.com/Ar...ding-Magic-Constants.aspxVerwijderd 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...
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...
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.Styxxy schreef op zondag 10 april 2011 @ 19:01:
[...]
Doet me denken aan http://thedailywtf.com/Ar...ding-Magic-Constants.aspx.
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
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.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...
Na und?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...
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 ]
Verwijderd
Niet mee eens, heel vaak hebben bits voor registers ook gewoon een define gekregen. Bijvoorbeeld: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.
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?
hier klopte iets niet...
[ Voor 90% gewijzigd door Haan op 10-04-2011 21:39 ]
Kater? Eerst water, de rest komt later
Verwijderd
RXEN is gewoon de naam van een bit uit een register (register UCSRB)
. Dat had ik misschien niet helemaal duidelijk gemaakt.
Ik weet dat het niet geheel dezelfde situatie is, deed me er gewoon aan denkenMakkelijk 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
Java:
1
2
| float n = 1.234; int k = n + .4; |
En dan afvragen waarom er geen 2 uitkomt (magisch afronden in me hoofd
Volgende keer iets minder uitgaan van de wiskundige regels

Dat klopt, maar dat komt omdat dat 2e voorbeeld gewoon fout is. Daarnaast, wie zegt dat er verderop niet ergens staat: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)
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.
JaH mAaR mUhN cOdE aNaLyZeR sEgD daT hEi HuT nIeT SnApT!1Makkelijk 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.
vertaling: Static code analysis tools hebben niet altijd gelijk.
Mijn mening over het verdere constants verhaal: ja.
@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
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.”
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.twiFight schreef op zondag 10 april 2011 @ 18:28:
Je Engels en Nederlands door elkaar doet mijn wenkbrauw ook enigszins omhoog bewegen, anders..
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();.
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'
Gelukkig is daarvoor de slack die je met elkaar afspreekt. X major violations per Y KLOC.YopY schreef op maandag 11 april 2011 @ 09:12:
vertaling: Static code analysis tools hebben niet altijd gelijk.
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'
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.Janoz schreef op maandag 11 april 2011 @ 10:12:
[...]
Maar inderdaad is magic numbers er 1 die toch best vaak onterecht is.
“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.”
Klopt, maar als bijna alleen die index/pointers nog over zijn dan sneeuwen de andere situaties nogal eens onder.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.
Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'
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!
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
Verwijderd
Ik hoop dat die laatste punt niet bij de regular expression hoort
Oh wacht, negative assertions...

[ Voor 36% gewijzigd door Verwijderd op 12-04-2011 11:06 ]
ieuw regexvriesdude 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
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.
(Jamie Zawinski)Some people, when confronted with a problem, think “I know, I'll use regular expressions.” Now they have two problems.
Look, runners deal in discomfort. After you get past a certain point, that’s all there really is. There is no finesse here.
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 IFYopY 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.
When you talk to God it's called prayer, but when God talks to you it's called schizophrenia
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.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.
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
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.
Dus eigenlijk de Java variant van.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
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.”
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.
Some people, when confronted with regular expression think "Let's change that", creating new and subtle bugs. -- PrisonerOfPain
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 ).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
@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.”
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.
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!
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.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
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
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.
Het gaat dan ook alleen om de straatnaam. Huisnummer (en dus ook postbusnummer) is een apart vakje.
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.
.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.
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.
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.”
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'.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 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.
Bedoel je het foutieve gebruik van de Logtags?Verwijderd schreef op zondag 10 april 2011 @ 18:11:
Ohh hoe slecht van mij
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 @ deJava:
1 Log.e("NOOOEE","zomg URISYNTAXEXCEPTION!!!!");
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
In elk geval niet in mensen die regular expressions gebruiken. Hoe vaak daar wel niet topics over voorbij komen met de meest vreemde bugs..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'.
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.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.
Regeren is vooruitschuiven
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.FragFrog schreef op dinsdag 12 april 2011 @ 19:20:
Het 'probleem' met regexen is dat ze [...]
[ Voor 6% gewijzigd door PrisonerOfPain op 13-04-2011 00:07 ]
Nou, schrijf deze maar eens om naar iets leesbaars: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'.
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
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...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?
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.
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:

Let op het vetgedrukte Interesse, dat wordt dus wel vrolijk zonder controle naar de browser gestuurd
WTF?
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)

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

WTF?

Look, runners deal in discomfort. After you get past a certain point, that’s all there really is. There is no finesse here.
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.
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.