Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'
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.
Waarom heb je het vertrouwen niet? Aangenomen dat je MySQL gebruikt, datetime werkt gewoon goed.
Ik denk dat hij het meer heeft over het vertrouwen in de refactor slag dan het vertrouwen in het datatype.
Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'
Niet?Janoz schreef op maandag 27 november 2006 @ 12:52:
Je gaat je hoeveelheden toch ook niet in varchars opslaan?

Past hier perfect in het topic:
Ik programmeer in .Net, Compact Framework voor op een PDA.
Die PDA heeft data nodig, data die via de cradle of via een FTP-site overgezet kan worden. Helaas heeft een stagiair een groot deel van de basis van de programma's op de PDA gemaakt. Een van de dingen die hij gemaakt heeft, is een datamodule en de import van de gegevens die van de PC afkomen.
Datamodule? Ja, DBGetRow(TableName as string, IDValue as string) array of string, DBAddRow(TableName as string, Velden array of string), DBDeleteRow(TableName as string, IDValue as sting). Letterlijk alles met strings dus

Omdat het zover door het hele programma verweven zit is het mijn baas de tijd die het fixen kost niet waard, en moeten we er maar omheen werken... Honderden checks of de string wel een int bevat, na een import hele tabellen naar andere tabellen met het goede datatype inserten zodat er fatsoenlijk op een range te WHERE'en valt etc
Dit overigens naast de andere meuk: eVB 3.0 (Embedded VB) dus 100% procedureel, iedere andere regel iswas een on error resume next, geen Option Strict...
Omdat we overgingen van eVB naar VB.Net is er wel wat verbeterd (Option Strict aan, geen On error resume nexts meer, uitbreidingen zijn zoveel mogelijk OO) maar de basis blijft brak...
"Your life is yours alone. Rise up and live it." - Richard Rahl
Rhàshan - Aditu Sunlock
Het vergt een goede voorbereiding om de datatypes over te zetten naar de juiste waardes. De tijd om dat uit te voeren heb ik niet, vandaar dat ik het bij een "workaround" laat. Een aantal maanden geleden heb ik een soortgelijke actie uitgevoerd, waarbij hetgeen ik moest uitvoeren simpel was maar het me uiteindelijk meer tijd gekost heeft dan nodig was. Daarom moet ik eerst tijd hebben om de voorbereidingen treffen en dan pas de merge te maken.Michali schreef op maandag 27 november 2006 @ 13:06:
@EnsconcE:
Waarom heb je het vertrouwen niet? Aangenomen dat je MySQL gebruikt, datetime werkt gewoon goed.
Het vertrouwen in mysql is er wel, maar in mezelf niet omdat nu "even" te gaan realiseren.
.oisyn schreef op maandag 27 november 2006 @ 12:56:
De betekenis van datum/tijd is ook nitpicking, wat je op wil slaan is een tijdstip, wat een entiteit is waar prima datatypes voor bestaan
@Janoz:
Idd, refactoren.
@Paul Nieuwkamp: Duidelijk gevalletje slechte begeleiding van de stagair lijkt me.
Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'

Dat is nu nog steeds zo, met maar weinig tijd om structurele verbeteringen door te voeren die niet direct in extra functionaliteit uit te drukken valt, want dat levert niets (lees: geld/klanten) op.
"Your life is yours alone. Rise up and live it." - Richard Rahl
Rhàshan - Aditu Sunlock
Receptje:
1. Schrijf de volgende functie:
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
| function add_product($product_shortname, $company_email, $product_description, $product_price, $product_valid_from , $product_valid_to , $product_image_relpath){ require("mysql_connect.php"); $add_product_qry = "INSERT INTO site_products (product_shortname , company_email , product_description , product_price , product_valid_from , product_valid_to , product_image_relpath) VALUES('".$product_shortname."' ,'".$company_email."' ,'".$product_description."' ,".$product_price." ,'".$product_valid_from."' ,'".$product_valid_to."' ,'".$product_image_relpath."');"; if(mysql_query($add-product_qry,$conn)){ return true; }else{ return mysql_error(); } } |
2. Voer dan deze test op de functie uit:
1
2
3
4
5
6
7
8
9
| $add_product_success = add_product($_POST['product_shortname'], $_POST['company_email'], $_POST['product_description'] , $_POST['product_price'], $_POST['valid_from'], $_POST['valid_to'] , $_POST['product_image_relpath']); if(!$add_product_success){ echo("NIET GELUKT: ".mysql_error()."<br />"); }else{ echo("GELUKT<br />"); } |
En ik heb het nog echt zelf gedaan ook. Om van te smullen
Code van een paar maandjes oud, waar ik elke week mee bezig was en een paar keer tegenaanliep en in plaats van het te fixen... nou ja, lees maar

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
| Local mappings:String[] 'holds an array of the columntitles that should be loaded into the listbox Rem For you to understand the following comments , you should know that 'mappings' was called 'm' before. End Rem Rem At the time of writing, naming this array 'm' made perfectly sense. The problem with one-letter-names, however , is that you tend to forget their meaning. If you didn't grasp it yet, I did forget. Therefore, I'd better rename it to 'columns' or something (even though that doesn't start with an M), but I do not feel like rewriting the following code. I do realize that probably could have been done faster than typing this comment , but this was more fun to do. Anyway , I bet you do now have at least a basic understanding of the use of this array, and you wouldn't have gotten more than that if I named it 'columns' or something. Anyway, good luck. End Rem Rem I just figured out from the code of the function 'listbox.loadTable' that the 'm' stands for 'mappings'. That does make sense , but I still don't feel like rewriting the code. Yes, I'm lazy. End Rem Rem I just _did_ rename to mappings , because I couldn't stand being called lazy, not even by myself. I did leave the comments for your entertainment though. It only took 5 minutes. Beat me with something hard and painfull. End Rem |
met een hamer past alles
Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'
The process of preparing programs for a digital computer is especially attractive, not only because it can be economically and scientifically rewarding, but also because it is an aesthetic experience much like composing poetry or music.
Netjes is anders, maar gezien het feit dat 'm' in slechts 6 regels erna werd gebruikt... De code (en de overzichtelijkheid) had er niet zoveel van te lijden.
En dat ik het het waard vind om het hier te posten geeft ook wel aan dat dit een uitzondering is
met een hamer past alles
switch leek me wel een mooie naam voor die functie, maar daar was php het niet mee eens
De grootste Nederlandstalige database met informatie over computers met zoekfunctie!!
Switch lijkt me nou geen mooie naam voor een functie. Heel de context ontbreekt. (Switch what?)pietje63 schreef op vrijdag 01 december 2006 @ 12:25:
switch leek me wel een mooie naam voor die functie, maar daar was php het niet mee eens
objectOfTypeThatCanBeSwitched.Switch()PrisonerOfPain schreef op vrijdag 01 december 2006 @ 14:46:
[...]
Switch lijkt me nou geen mooie naam voor een functie. Heel de context ontbreekt. (Switch what?)
oogjes open, snaveltjes dicht
Je doet je ondertitel met deze post geen eer aanpietje63 schreef op vrijdag 01 december 2006 @ 12:25:
Wat ik zelf wel mooi vond was het zelf schrijven van een functie in php script waabij de afbeelding bij een nieuwsbericht de ene keer links en de andere keer rechts komt.
switch leek me wel een mooie naam voor die functie, maar daar was php het niet mee eens
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.
In mijn woordenboek is er een verschil tussen method en functie. En daarbij is mij nu nog steeds niet duidelijk dat de afbeelding links dan wel rechts van het artikel komt te staan. ImageAlignment zou mijns inziens een betere naam zijn voor de functie.Don Facundo schreef op vrijdag 01 december 2006 @ 15:20:
[...]
objectOfTypeThatCanBeSwitched.Switch()
objectOfTypeThatCanBeAligned.Switch()PrisonerOfPain schreef op vrijdag 01 december 2006 @ 15:45:
[...]
In mijn woordenboek is er een verschil tussen method en functie. En daarbij is mij nu nog steeds niet duidelijk dat de afbeelding links dan wel rechts van het artikel komt te staan. ImageAlignment zou mijns inziens een betere naam zijn voor de functie.
Lees m'n eerste zin eens.
Laat maar, het is vrijdagmiddag.
Verwijderd
en die luidt...?PrisonerOfPain schreef op vrijdag 01 december 2006 @ 15:45:
In mijn woordenboek is er een verschil tussen method en functie.
Om even offtopic daarop te reagerenJanoz schreef op vrijdag 01 december 2006 @ 09:37:
Tja, hoogste tijd voor een IDE met refactor mogelijkheden (zoals vele omgevingen al jaren hebben en zelfs visual studio sinds kort ook in beperkte mate heeft)
Dat een method onderdeel is van de scope van een object. Terwijl een functie in de globale scope (of de scope van een andere functie) thuis hoort.
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.
Verwijderd
Dan missen bijvoorbeeld zowel php als javascript een keywordPrisonerOfPain schreef op vrijdag 01 december 2006 @ 16:14:
Dat een method onderdeel is van de scope van een object. Terwijl een functie in de globale scope (of de scope van een andere functie) thuis hoort.
Dan maken we er toch gewoon een functie van met een globale scope?PrisonerOfPain schreef op vrijdag 01 december 2006 @ 16:14:
[...]
Dat een method onderdeel is van de scope van een object. Terwijl een functie in de globale scope (of de scope van een andere functie) thuis hoort.
Switch(objectOfTypeThatCanBeSwitched obj)
Een goede grap mag vrienden kosten.
Regelmatig code gerefactord naar zoiets:
while Endoffile do
begin
lees regel
code
end
ipv
while not Endoffile do..
Vandaag nog:
if A mod 2=0 then doiets
Na een tijdje debuggen bedacht ik mij dat het net andersom moest, en maak ik er het volgende van:
if A mod 2<>1 then doiets.
Koste me even om te zien dat de bug er nog steeds in zat...
[ Voor 3% gewijzigd door doskabouter op 01-12-2006 22:52 ]
Het grote voordeel van windows is dat je meer dos-boxen kan openen
Voor een opgave op de uni moet je iets met variabele kleuren gaan doen. Mandelbrot practicum, waarschijnlijk wel bekend onder een aantal lurkers
1
2
3
4
5
6
7
| public color BerekenKleur(int mandelgetal) { if(mandelgetal%2 == 0 ) { return Color.RED;} if(mandelgetal%3 == 0 ) { return Color.GREEN;} if(mandelgetal%4 == 0 ) { return Color.BLUE;} ....... } |
Wat er dus fout is?
% is modulo, oftewel a%b=c, c is de rest van a gedeeld door b. Mensen snappen blijkbaar niet dat getallen altijd door twee getallen deelbaar zijn en dat je dus de rest (c) moet varieren en niet de deler (b).
eerste jaars en her-mensen van 2007/2008 and beyond doe er je voordeel mee
More than meets the eye
There is no I in TEAM... but there is ME
system specs
bekijk je code nog eens goed...
ik zou er toch minstens:
1
2
3
4
5
| public class MyClass { private MyClass() { /* */ } public static MyClass Create() { return new MyClass(); } } |
(let op de static)
van maken
ASSUME makes an ASS out of U and ME
Verwijderd

Enkele voorbeelden:
- Hij include ODBC libs terwijl hij eigenlijk user32.lib moest includen. (het sample deed níks met databases en ik had uberhaupt geen ODBC libs op m'n PC staan)
- Er is een cpp bestand met enkel #include "SomeInclude.h" erin
- Er zijn globale swiss-knife variabelen. Voorbeeldje: "gStuff"
- Alle windows-specifieke bestanden hadden namen zoals *Win.cpp ... behalve 1 bestand dat er uitzag als *DLL.cpp ... hier ging men dus even inconsistent doen en ging men er van uit dat je wel wist dat DLL hier op de extensie sloeg en niet op de algemene termijn "dynamic linked library"... het was dus ook een Windows-specifieke file
- In een van de cpp bestanden lees ik "Copyright 1993 - 2002". Een paar lijnen verder lees ik "Copyright 1990-1991". (die datums alleen al

Moet ik er nog bijzetten dat ik het plugin-projectje maar gestaakt heb?
Weet dat een aantal mensen in dit forum het afkeuren maaaaar : sla je tijden (en dus datums ook) op als unix timestamp. Werkt zoooo veel lekkerder. Ook filteren op tijdstip word veel relaxter. Want als je je datum opslaat als DATETIME in MySQL en je wilt terug naar NL datum systeem zit je hem eerst weer te converten met een functie in PHP, OF je vraagt em op als UNIX_TIMESTAMP om vervolgens nog een keer te converten als unix timestamp... het is er voor bedoeld word er dan gezegd, maar t zuigt keihard.Mithrandir schreef op maandag 27 november 2006 @ 11:41:
EnsconcE > Je behoort je datum en tijd in een datum-en-tijd (date of time of datetime of wat je database daar ook voor ondersteunt) te zetten. Dan heeft je database daar functies voor om de juiste tijden uit te halen.
Dat ligt eraan of je een CMS hebt of niet. De website die ik ontwikkeld heb is voor persoonlijk gebruik en aangezien ik het leuk vindt om een website te programmeren is er geen CMS aan te pas gekomen. Daarnaast is de website niet zo opgezet dat alles beheert kan worden zoals een CMS kan. Bij het gebruik van een CMS kan ik op je vraag Ja zeggen, maar er zijn ook momenten dat je niet nadenkt wanneer je programmeertCartman! schreef op maandag 04 december 2006 @ 10:48:
Hoezo wijzigbaar? Dit kun je toch in je CMS doen?
Natuurlijk. Maar je kunt je dan zo uit je tabellen direct de datum en tijd lezen. En het is wijzigbaar, als dat nodig is om wat voor reden dan ook. Als je wat wil testen bijvoorbeeld. Niet dat je het vaak nodig hebt, maar het is wel een voordeel.
DATETIME heeft wel kleine dingen die handig zijn maar dat is voor mij niet genoeg om daarnaar terug te gaan.
als er na 2002 of in het andere geval 1991 niks meer aan de code veranderd is, is dat dus dé juiste manier om te copyrighten!!! zoek het maar opVerwijderd schreef op zondag 03 december 2006 @ 01:01:
Een weekje of 2 geleden heb ik me even bezig gehouden met het Photoshop CS SDK ... wat een ramp zeg
Enkele voorbeelden:
- Hij include ODBC libs terwijl hij eigenlijk user32.lib moest includen. (het sample deed níks met databases en ik had uberhaupt geen ODBC libs op m'n PC staan)
- Er is een cpp bestand met enkel #include "SomeInclude.h" erin
- Er zijn globale swiss-knife variabelen. Voorbeeldje: "gStuff"
- Alle windows-specifieke bestanden hadden namen zoals *Win.cpp ... behalve 1 bestand dat er uitzag als *DLL.cpp ... hier ging men dus even inconsistent doen en ging men er van uit dat je wel wist dat DLL hier op de extensie sloeg en niet op de algemene termijn "dynamic linked library"... het was dus ook een Windows-specifieke file
- In een van de cpp bestanden lees ik "Copyright 1993 - 2002". Een paar lijnen verder lees ik "Copyright 1990-1991". (die datums alleen al)
Moet ik er nog bijzetten dat ik het plugin-projectje maar gestaakt heb?
Verwijderd
Misschien erg dom van mij, maar er is een tweetal dat geen viertal is: 2IceManX schreef op zaterdag 02 december 2006 @ 15:11:
Sowieso gaat blauw nooit voorkomen, aangezien (n % 4 == 0) => (n % 2 == 0). Maw, elk viertal is ook een tweetal, en zal dus rood opleveren.
Better to remain silent and be thought a fool then to speak out and remove all doubt.
"Your life is yours alone. Rise up and live it." - Richard Rahl
Rhàshan - Aditu Sunlock
Do diamonds shine on the dark side of the moon :?
voodooless schreef op dinsdag 12 december 2006 @ 14:39:
Kent iemand deze site al: http://thedailywtf.com/
Laat ik het er maar op houden dat deze regelmatig in 't DevCrew forum wordt aangehaald
Ace of Base vs Charli XCX - All That She Boom Claps (RMT) | Clean Bandit vs Galantis - I'd Rather Be You (RMT)
You've moved up on my notch-list. You have 1 notch
I have a black belt in Kung Flu.
dat is een van de sites die ik dagelijks checkvoodooless schreef op dinsdag 12 december 2006 @ 14:39:
Kent iemand deze site al: http://thedailywtf.com/
Memories of yesterday, will grow, but never die
Ik ken er nog wel meer: 6, 10, 14, 18, etc.Verwijderd schreef op dinsdag 12 december 2006 @ 14:05:
[...]
Misschien erg dom van mij, maar er is een tweetal dat geen viertal is: 2
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.

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.
https://fgheysels.github.io/
1
2
3
4
5
6
7
8
| $result = mysql_query($query) or die (mysql_error()); while($row = mysql_fetch_array($result)) { $titel = $row['cat_naam']; if($titel != $row['cat_naam']) { echo '<h2>'. $row['cat_naam'] . '</h2>'; } } |
Ik weet niet waar ik zat met mijn gedachten.
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.
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
| private void txtHostname_KeyPress(object sender, KeyPressEventArgs e) { StringBuilder sb = new StringBuilder(); sb.Append("SELECT Passwd FROM [Users] WHERE Username='"); sb.Append(this.txtUsername.Text + "'"); String password = GetPassword(sb.ToString()); for (int i = 0; i < (sender as TextBox).Text.Length; i++) { if (password[i] == (sender as TextBox).Text[i]) { this.lblError.Text = ""; } else { this.lblError.Text = "Incorrect Password!"; } if (i == (sender as TextBox).Text.Length) { if (password[i] == (sender as TextBox).Text[i]) { LogUserIn(this.txtUsername.Text); } } } } |
(wat zou ik dan moeten gebruiken?).oisyn schreef op woensdag 13 december 2006 @ 11:39:
Idd, je had fatsoenlijke error handling in moeten bouwen ipv een die(mysql_error())
Maar dat is dus niet wat er zo dom was aan mijn script.
Dat is een grondige check, jammer er niet meteen gebruik gemaakt om te melden dat bv het derde karakter al niet meer klopt. Dan zou je met trial and error langzaam maar zeker het hele wachtwoord kunnen vinden.Piels schreef op woensdag 13 december 2006 @ 11:41:
Ik las deze op www.thedaillywtf.com en wou hem jullie niet onthouden
[ Voor 31% gewijzigd door ajhaverkamp op 13-12-2006 11:46 ]
This footer is intentionally left blank
1
2
| $titel = $row['cat_naam']; if($titel != $row['cat_naam']) { |
super-muffin schreef op woensdag 13 december 2006 @ 11:43:
[...]
(wat zou ik dan moeten gebruiken?)
Maar dat is dus niet wat er zo dom was aan mijn script.
1
2
| $titel = $row['cat_naam']; if($titel != $row['cat_naam']) { |
Edit: spuit elf
Edit2:
1
2
3
4
5
6
| <?php $result = mysql_query($query) or die (mysql_error()); while($row = mysql_fetch_array($result)) { echo '<h2>'. $row['cat_naam'] . '</h2>'; } ?> |
[ Voor 24% gewijzigd door EnsconcE op 13-12-2006 11:49 . Reden: Toch maar van enige toegevoegde waarde, deze post ]
Dat gebeurd dus wel, kijk maar goed. Het is de eventhandler van het keypress-event. Dus bij elke toetsaanslag wordt de code uitgevoerd.ajhaverkamp schreef op woensdag 13 december 2006 @ 11:45:
[...]
Dat is een grondige check, jammer er niet meteen gebruik gemaakt om te melden dat bv het derde karakter al niet meer klopt. Dan zou je met trial and error langzaam maar zeker het hele wachtwoord kunnen vinden.
Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'
Nou weet ik de context van het script natuurlijk niet, maar je kunt je wel voorstellen dat het niet echt wenselijk is om je script gewoon abrubt af te breken met enkel een errormessage waar de user niets mee kan. Als hier op GoT een error optreedt (de database is bijvoorbeeld down) dan krijg je ook een mooie errorpagina met informatie die relevant is voor de gebruiker
Dat maakt niet uit, hij logt toch niet in, of het wachtwoord nou goed is of nietajhaverkamp schreef op woensdag 13 december 2006 @ 11:45:
[...]
Dat is een grondige check, jammer er niet meteen gebruik gemaakt om te melden dat bv het derde karakter al niet meer klopt. Dan zou je met trial and error langzaam maar zeker het hele wachtwoord kunnen vinden.
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.
Omdat we even in de dailywtf zitten en je hebt het over onduidelijke messages, dan kan ik deze niet onthouden:.oisyn schreef op woensdag 13 december 2006 @ 11:57:
[...]
Nou weet ik de context van het script natuurlijk niet, maar je kan wel voorstellen dat het niet echt wenselijk is om je script gewoon abrubt af te breken met enkel een errormessage waar de user niets mee kan. Als hier op GoT een error optreedt (de database is bijvoorbeeld down) dan krijg je ook een mooie errorpagina met informatie die relevant is voor de gebruiker
http://thedailywtf.com/forums/thread/105922.aspx
Redelijk offtopic, maar wel slecht
Ik geef de PHP.net manual de schuld, daarin staat deze code zo ongeveer letterlijk.oisyn schreef op woensdag 13 december 2006 @ 11:57:
Nou weet ik de context van het script natuurlijk niet, maar je kunt je wel voorstellen dat het niet echt wenselijk is om je script gewoon abrubt af te breken met enkel een errormessage waar de user niets mee kan. Als hier op GoT een error optreedt (de database is bijvoorbeeld down) dan krijg je ook een mooie errorpagina met informatie die relevant is voor de gebruiker
En dan heb ik het nog niet eens over het gebruik van mysql_query() in je code in plaats van gebruik maken van een nette databaseclass / functie.
Overigens kun je daar ook wel de fout mee ingaan zoals m'n eigen stomiteit laat zien:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
| function query($query) { $instance = getDB(); $res = mysql_query($query, $instance); $affected = mysql_num_rows($res); switch($affected) { case 0: case false: $result = false; break; case 1: $result = mysql_fetch_assoc($res); break; default: $i = 0; while($result[$i++] = mysql_fetch_assoc($res)) {} array_pop($result); if(count($result) == '1') $result = $result[0]; break; } return $result; } |
Een versimpelde versie van een van de eerste functies die ik vroeger gebruikte om makkelijk queries uit te kunnen voeren. Nu dacht ik slim te zijn en het zo te fixen dat als er maar 1 rij gegevens terugkwam automatisch de array versimpelt werd naar een enkele waarde - scheelt weer als je even een enkele waarde uit de database wilt halen nietwaar?
Helaas bedacht ik me niet dat als je een grote lap gegevens zoekt het OOK wel eens voor kan komen dat er maar 1 rij terugkomt.. En dan krijg je dus of hele rare resultaten, of je moet overal uitzonderingen gaan schrijven voor het geval er maar 1 rij terugkomt

PHP is dan ook niet echt het schoolvoorbeeld van goed programma-ontwerpFragFrog schreef op woensdag 13 december 2006 @ 13:06:
[...]
Ik geef de PHP.net manual de schuld, daarin staat deze code zo ongeveer letterlijkZie het echt overal opduiken...
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.
Eerlijk gezegd zou iedere devver zich wel automatisch mogen bedenken dat die() en het uitspugen van vage meldingen niet altijd de mooiste manier is.
{signature}
Piels schreef op woensdag 13 december 2006 @ 11:41:
Ik las deze op www.thedaillywtf.com en wou hem jullie niet onthouden

- bij iedere keypress het wachtwoord controleren
- Stringbuilder + concatenatie
- SQL injectie gevoelig
- Als je laatste char goed is, dan krijg je geen foutmelding, ongeacht de rest van de chars
- Unreachable code, al betwijfel ik een beetje of de C#-compiler (als het C# is) die zo zou zien.
i wordt nooit text.length - Er klakkeloos vanuit gaan dat Sender inderdaad een TextBox is
- In de eventhandler van de Textbox voor de hostname het wachtwoord controleren (of anders: slechte naamgeving)
"Your life is yours alone. Rise up and live it." - Richard Rahl
Rhàshan - Aditu Sunlock
[ Voor 97% gewijzigd door Spiral op 13-12-2006 14:11 ]
To say of what is that it is not, or of what is not that it is, is false, while to say of what is that it is, and of what is not that it is not, is true. | Aristoteles
Ach, 't is al een stuk beter geworden met PHP5, PHP wordt steeds meer een volwassen taal krijg ik het gevoel en het is zeker wel mogelijk netjes (OO) te coden in PHP. Doordat het echter ook goed mogelijk is maar wat aan te knoeien wordt het erg veel door beginners gebruikt, werkt niet echt bevorderend voor het imago.oisyn schreef op woensdag 13 december 2006 @ 13:28:
PHP is dan ook niet echt het schoolvoorbeeld van goed programma-ontwerp
Voutloos: tja, die(error) is inderdaad wel een manier om snel te kunnen debuggen, maar het wordt maar al te vaak ook in productieomgevingen gebruikt. Zie geregeld sites met een witte pagina en een SQL connect error voorbijkomen. Ook dat is trouwens aan het veranderen: in de manual voor mysql_query staat nu al dat't specifiek voor debuggen handig is errorinformatie weer te geven en wordt er ook netjes een uitgebreide errorstring gemaakt. Nu de mysql_connect manual nog
Wij werken hier op het werk in WinDev en daar kwam ik de volgende code tegen
1
2
3
| IF (b <> True AND b <> False) then DoeIets() END |
Achteraf begreep ik het wel. Een boolean in WinDev is geen echte boolean. False = 0, True = 1 en een WinDev boolean kan gewoon een integerwaarde bevatten, wat dus soms het geval was in ons programma. Dus b werd van tevoren op 2 gezet ergens.
Blijft krom.
Dit ziet eruit alsof je met echte booleans werkt, en ik zou dit dus zien als een IF met een guard die nooit True wordt. Met andere woorden: als ik als nieuwe programmeur dit zou zien zou ik snel geneigd zijn de hele statement simpelweg te verwijderen. Daarna natuurlijk wel een volle week bezig zijn met erachter komen waarom het niet meer werkt.
Als ze het gaan behandelen als een integer, gebruik het dan ook als integer, en ga het niet vergelijken met booleans. Dus:
1
2
3
| IF (b <> 0 AND b <> 1) then DoeIets() END |
More than meets the eye
There is no I in TEAM... but there is ME
system specs
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.
1
| DELETE FROM jos_content WHERE id>=275 OR id <=281; |
godzijdank had ik vlak daarvoor nog een backup gemaakt...
lol, daar kan zelfs de "--i-am-a-dummy" switch niet tegenopst0p schreef op maandag 18 december 2006 @ 11:11:
ik tikte laatst dit in m'n mysql client:
code:
1 DELETE FROM jos_content WHERE id>=275 OR id <=281;
godzijdank had ik vlak daarvoor nog een backup gemaakt...
Ik frut, dus ik epibreer
Verwijderd
Dit is wel heel erg fout. Daar gebruik je "TRUNCATE" natuurlijk voor. Gelukkig heb je een backup zodat je het nog een keer kan uitvoeren op een manier die wel goed/mooi is.st0p schreef op maandag 18 december 2006 @ 11:11:
ik tikte laatst dit in m'n mysql client:
code:
1 DELETE FROM jos_content WHERE id>=275 OR id <=281;
godzijdank had ik vlak daarvoor nog een backup gemaakt...
[ Voor 6% gewijzigd door Verwijderd op 18-12-2006 16:38 ]
Is het niet zo dat een truncate niet te rollbacken is? En verwijdert een truncate niet alle rows?Verwijderd schreef op maandag 18 december 2006 @ 12:43:
[...]
Dit is wel een heel erg fout. Daar gebruik je "TRUNCATE" natuurlijk voor. Gelukkig heb je een backup zodat je het nog een keer kan uitvoeren op een manier die wel goed/mooi is.
[ Voor 5% gewijzigd door Daspeed op 18-12-2006 12:50 . Reden: Toevoeging ]
Het was al laat en ik had geen zin om in te loggen in het CMS terwijl ik mn client nog had open staan.
De grap is je ontgaanDrClearbottom schreef op maandag 18 december 2006 @ 12:48:
[...]
Is het niet zo dat een truncate niet te rollbacken is? En verwijdert een truncate niet alle rows?
Look, runners deal in discomfort. After you get past a certain point, that’s all there really is. There is no finesse here.
Het blijft maandag, hè?
* Crayne had hem wel door.
Laten we het er inderdaad maar op houden dat het komt omdat het maandag is
Kzal ter compensatie thuis kijken of ik nog iets waardeloos van mezelf heb liggen
1
2
3
4
5
6
7
8
9
10
11
12
13
14
| <select name="categorie"> <% set rs = server.createobject("ADODB.Recordset") rs.open "SELECT * FROM categorie ORDER BY categorienaam", conn, 3 arree = rs.getRows() count = rs.recordcount rs.close set rs = nothing for i = 0 to count -1 response.write "<option value=""" & arree(0,i) & """>" & arree(1,i) & vbCrLf next %> </select> |
*schaam, gelukkig al weer een tijd geleden
-database code midden tussen je HTML
-arree(0,i) moet arree(i,0) zijn?
-je loopt op een moeilijke manier door je resultset heen, terwijl er een beter mechanisme voor is (dit weet ik dus niet)
-je doet een SELECT * terwijl je maar 2 velden gebruikt
Zit de fout er tussen?
More than meets the eye
There is no I in TEAM... but there is ME
system specs
Verder is het ophalen van de count redelijk overbodig als je een while not myrecordset.eof kunt doen
[ Voor 26% gewijzigd door RobIII op 18-12-2006 23:29 ]
There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.
Je eigen tweaker.me redirect
Over mij
Lijkt een beetje op een van mijn betere fouten:st0p schreef op maandag 18 december 2006 @ 11:11:
ik tikte laatst dit in m'n mysql client:
code:
1 DELETE FROM jos_content WHERE id>=275 OR id <=281;
godzijdank had ik vlak daarvoor nog een backup gemaakt...
1
| DELETE FROM table WHERE 14; |
i.p.v.
1
| DELETE FROM table WHERE id = 14; |
Heel leuk, vooral vrijdagmiddag half 6

WatHoorJeWaar · Asobakken
Eerdere projecten: Leading Courses · Brandstof-zoeker.nl · Voertuig-zoeker.nl
Haha die is idd goedRobIII schreef op maandag 18 december 2006 @ 23:28:
Ik vind de variabele "arree" wel origineel gevonden. Zal ik aan denken de volgende keer dat ik aan de di-arree's moet (2 dimensionale arrays)
Het is nog altijd zo dat recordcount niet de count van de totale set weergeeft. Dus recordcount is gewoon fout.Verder is het ophalen van de count redelijk overbodig als je een while not myrecordset.eof kunt doen
Somniferous whisperings of scarlet fields. Sleep calling me and in my dreams i wander. My reality is abandoned (I traverse afar). Not a care if I never everwake.
Mjah, ik denk hierbij vooral aan het benaderen van kolommen met een index. Had ik beter met een fieldset kunnen doen natuurlijk. Nu is het voor de codelezer maar de vraag welke velden ik gebruik. Deze getrows icm kolom indexering gebruikte ik destijds ook bijna overal, omdat het sneller zou zijn. Dat de code daarna minder leesbaar zou zijn had ik niet echt aan gedachtIceManX schreef op maandag 18 december 2006 @ 23:09:
Ik denk meer het kopieren van de volledige record set + opvragen van de count, terwijl door de record set lopen en dan steeds een row printen beter is?
{signature}
is dat geldige SQL dan? ik wil het niet uitproberen, maar het lijkt me dat dat een foutmelding zou moeten genereren...
1
2
3
4
| SELECT * FROM Customers WHERE 14 Msg 170, Level 15, State 1, Line 1 Line 1: Incorrect syntax near '14'. |
Look, runners deal in discomfort. After you get past a certain point, that’s all there really is. There is no finesse here.
Op zoek naar een nieuwe collega, .NET webdev, voornamelijk productontwikkeling. DM voor meer info
Verwijderd
1
2
3
4
| for($i = 0; $i < 100; $i++); { print $i . '<br />'; } |
Vaak zit ik dan een tijd te denken waarom ie alleen 99 print
The NS has launched a new space transportation service, using German trains which were upgraded into spaceships.
Verwijderd
Hij heeft overigens wel gelijk
[ Voor 0% gewijzigd door Verwijderd op 19-12-2006 10:09 . Reden: Nederlands blijft moielijk ]
Net als alle andere talen vind ook bij PHP de increment stap pas plaats aan het eind van de iteratie hoor.Verwijderd schreef op dinsdag 19 december 2006 @ 10:07:
[...]
Hij heeft overigens wel gelijkPHP print idd 100. Eigenlijk wel logisch.
Oh haat, ik zie nu pas die ';'.

[ Voor 5% gewijzigd door Voutloos op 19-12-2006 10:17 ]
{signature}
Daar heeft het nog niet eens zo zeer mee te maken hoor. Een loop termineert bij een negatie van de guard (i < 100 is de guard), dus bij i >= 100, ofwel in dit geval, i = 100.Voutloos schreef op dinsdag 19 december 2006 @ 10:15:
[...]
Net als alle andere talen vind ook bij PHP de increment stap pas plaats aan het eind van de iteratie hoor.
Op zoek naar een nieuwe collega, .NET webdev, voornamelijk productontwikkeling. DM voor meer info

Jep. Ook leuk: Als je in phpMyAdmin een query wil doen, wordt er in het tekstvak standaard een query met 'WHERE 1' neergezet. Zeer handig, want je zou toch maar vergeten dat er in SQL een WHERE-clause is.Grijze Vos schreef op dinsdag 19 december 2006 @ 09:41:
Ik gok dat dat gewoon naar TRUE evalueert in een RDBMS zoals MySQL.
[ Voor 64% gewijzigd door Voutloos op 19-12-2006 12:11 ]
{signature}
Dit topic is gesloten.
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.

Het is hier ook niet het "korte vraagjes" topic. Zie deze post