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

Acties:
  • 0 Henk 'm!

  • Aloys
  • Registratie: Juni 2005
  • Niet online
Interessant, zal ik eens naar kijken, bedankt :) .

Acties:
  • 0 Henk 'm!

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

.oisyn

Moderator Devschuur®

Demotivational Speaker

R4gnax schreef op zaterdag 30 juli 2011 @ 23:52:
[...]


Is toch simpel te doen met een iteration constructor?
Heb je dus sowieso een array nodig, en zit je moeilijk te doen met make_pair.
en met C++0x
Dat heet C++2011 tegenwoordig ;), maar initializer lists zijn nog lang niet altijd beschikbaar.

[ Voor 19% gewijzigd door .oisyn op 31-07-2011 03:20 ]

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!

  • dev10
  • Registratie: April 2005
  • Laatst online: 30-09 14:33
Dit soort dingen mag ik onderhouden:

PHP:
1
2
3
4
5
6
7
8
$x = count($products);
$y = 0;
foreach ($products as $product) {
    $searchstring .= "artikel_nr = {$product['id']}";
    $y++;
    if ($x != $y) {
    $searchstring .= " OR ";
}

Acties:
  • 0 Henk 'm!

  • Matis
  • Registratie: Januari 2007
  • Laatst online: 21:01

Matis

Rubber Rocket

dev10 schreef op dinsdag 02 augustus 2011 @ 11:37:
Dit soort dingen mag ik onderhouden:

PHP:
1
2
3
4
5
6
7
8
$x = count($products);
$y = 0;
foreach ($products as $product) {
    $searchstring .= "artikel_nr = {$product['id']}";
    $y++;
    if ($x != $y) {
    $searchstring .= " OR ";
}
Ik had zoiets gedaan
PHP:
1
2
3
4
5
foreach ($products as $product) {
    $searchstring .= "artikel_nr = {$product['id']}";
    if ($product != end($products)) {
    $searchstring .= " OR ";
}

Maar ik weet niet of het veel sneller is dan jouw voorbeeld ;) Wat mij betreft wel beter leesbaar.

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


Acties:
  • 0 Henk 'm!

  • Paul
  • Registratie: September 2000
  • Laatst online: 21:37
Ik had waarschijnlijk "artikel_nr IN (value1, value2)" gedaan, maar verder... X en Y mochten wat mooier, maar de count wordt netjes maar één keer gedaan en er wordt bijgehouden of er een OR bij moet.

Of er nu echt een 'beste' manier is... Ik heb regelmatig van dit soort constructies.
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
<?php 
$searchstring .= "artikel_nr IN (";
$first = true; 
foreach ($products as $product) { 
    if ($first) {
        $searchstring .= $product['id'];
        $first = false;
    } else {
        $searchstring .= ", {$product['id']}"; 
    }
$searchstring .= ")";
} 
?>
al was dat in een taal die geen foreach had dus kon je gewoon de i van de for-lus gebruiken om te kijken of het de eerste was :)
edit:
Edit: Ik ken ook geen PHP, dus als er syntax-fouten in zitten komt dat daardoor :+ Het gaat om het idee :P

[ Voor 7% gewijzigd door Paul op 02-08-2011 11:56 ]

"Your life is yours alone. Rise up and live it." - Richard Rahl
Rhàshan - Aditu Sunlock


Acties:
  • 0 Henk 'm!

  • sub0kelvin
  • Registratie: September 2002
  • Laatst online: 10-08-2023
Matis schreef op dinsdag 02 augustus 2011 @ 11:40:
[...]

Ik had zoiets gedaan
PHP:
1
2
3
4
5
foreach ($products as $product) {
    $searchstring .= "artikel_nr = {$product['id']}";
    if ($product != end($products)) {
    $searchstring .= " OR ";
}

Maar ik weet niet of het veel sneller is dan jouw voorbeeld ;) Wat mij betreft wel beter leesbaar.
Dan ga je er wel van uit dat een product niet meerdere keren in de lijst met products kan staan, anders mist er hier en daar een " OR ". Plus, het laatste product ophalen kan natuurlijk beter 1x buiten de loop in plaats van n-keer in de loop.

Acties:
  • 0 Henk 'm!

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

.oisyn

Moderator Devschuur®

Demotivational Speaker

Know your API.
PHP:
1
2
3
4
5
6
$searchstring .= implode(" OR ", array_map(function($p) { return "artikel_nr=" . $p['id'] }, $products));
//of
$searchstring .=
    "artikelnr IN (" .
    implode(",", array_map(function($p) { return $p['id'] }, $products)) .
    ")";

[ Voor 53% gewijzigd door .oisyn op 02-08-2011 11:59 ]

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!

  • Paul
  • Registratie: September 2000
  • Laatst online: 21:37
Ik ken PHP maar amper dus ik ga hier gokken, maar levert dat niet "kaas OR worst OR ham OR cola" op?
Edit: Ok, dat was dus van voor de edit van .oisyn :P

TBH vind ik het minder leesbaar, vergt meer kennis om het te schrijven en tevens levert het een andere string op dan het originele stukje :)
PHP:
1
2
$searchstring .= "artikel_nr = ";
$searchstring .= implode(" OR artikel_nr = ", array_map(function($p) { return $p['id'] }, $products));


Niet dat je altijd maar het wiel opnieuw moet uitvinden (not invented here :P), maar als je API-calls (bijna) net zo lang zijn als het alternatief, terwijl dat alternatief wat intuïtiever is (en ja, dat is een mening :) ) dan heb ik niet zo'n probleem mee :)

[ Voor 28% gewijzigd door Paul op 02-08-2011 12:08 ]

"Your life is yours alone. Rise up and live it." - Richard Rahl
Rhàshan - Aditu Sunlock


Acties:
  • 0 Henk 'm!

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

.oisyn

Moderator Devschuur®

Demotivational Speaker

Lengte is irrelevant, het gaat om de complexiteit. Een custom made loop is altijd complexer dan het aanroepen van een functie. Dat ik het in 1 regel schrijf is ook niet de kern van mijn post, als je het leesbaarder vind in meerdere regels moet je dat natuurlijk vooral doen. Een bug maken in een for-loop is een stuk gemakkelijker dan een bug maken in een functie-aanroep van een standaard functie. En je ziet wat voor zooitje sommige mensen maken van eigengemaakte loops.

Dat het meer kennis vergt om te schrijven, ja duh, kennis van de standaard API is nou eenmaal belangrijk. Die functies bestaan er niet voor niets.

[ Voor 39% gewijzigd door .oisyn op 02-08-2011 12:19 ]

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!

  • Paul
  • Registratie: September 2000
  • Laatst online: 21:37
Lengte is niet direct het aantal enters, hoe langer iets is hoe complexer het vaak wordt, waardoor het langer kost om te doorgronden wat er gebeurd.

Een loop complexer dan een functie, je nest daar een nieuwe functie in een functie die je in een functie gebruikt, dat kost ook wel even om te doorgronden. Als dat de standaard aanroep van explode is dan zal het voor mensen die veel PHP'en vast duidelijk zijn en dan heb ik niks gezegd, maar 'de api' is ook niet altijd de heilige graal natuurlijk :)

Dat gezegd hebbende is kennis van de API inderdaad wel erg belangrijk, kijk bijvoorbeeld alleen al naar de hoeveelheden code die mensen kunnen verzinnen om berekeningen met datums te doen :X

"Your life is yours alone. Rise up and live it." - Richard Rahl
Rhàshan - Aditu Sunlock


Acties:
  • 0 Henk 'm!

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

.oisyn

Moderator Devschuur®

Demotivational Speaker

Paul schreef op dinsdag 02 augustus 2011 @ 12:28:
Een loop complexer dan een functie, je nest daar een nieuwe functie in een functie die je in een functie gebruikt, dat kost ook wel even om te doorgronden.
Dat zeg ik, als je het in meerdere regels leesbaarder vindt moet je dat vooral zo opschrijven. Bijvoorbeeld:
PHP:
1
2
3
function GetProductId($p) { return $p['id']; }
$productids = array_map("GetProductId", $products);
$searchstring .= "artikelnr IN (" . implode(",", $productids) . ")";


Waar het om gaat is dat je gewoon gebruik maakt van bekende en standaard bouwstenen in de taal, of "patterns" zo je wilt. Kwa concept omschrijven de functiemethoden namelijk precies het hele proces - het mappen van producten naar id's, om die vervolgens aan elkaar te rijgen in een enkele string.

De enige reden waarom jij het minder goed snapt is omdat je die functies niet kent, en daardoor maar dus moet raden wat het resultaat waarschijnlijk gaat zijn. Als jij C# niet kent dan zul je de LINQ syntax ook een stuk minder goed snappen, maar toch is dat anno 2011 de de-facto manier om een dergelijke transformatie op een array van producten los te laten om zo een query string te vormen. Je lost het probleem op een veel hoger niveau op, ipv low-level code te gaan zitten kloppen.

[ Voor 14% gewijzigd door .oisyn op 02-08-2011 12:39 ]

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!

  • Paul
  • Registratie: September 2000
  • Laatst online: 21:37
.oisyn schreef op dinsdag 02 augustus 2011 @ 12:34:
De enige reden waarom jij het minder goed snapt is omdat je die functies niet kent, en daardoor maar dus moet raden wat het resultaat waarschijnlijk gaat zijn.
Dat zal zeker niet helpen nee :) Echter, met al die API's wordt het oplossen van je probleem ook steeds abstracter.

Bij de loop zien je in iedere regel code en correlatie met het uiteindelijke resultaat, terwijl bij de (uitgeschreven) API-calls eerst een meta-probleem oplost (hoe krijg ik abstract veld X uit structuur Y) dat ontstaat uit een ander meta-probleem (mijn data is in een ander formaat dan dat de API-call verwacht / kan gebruiken), terwijl je in de loop direct $product['id'] kunt gebruiken.

Het is helemaal geweldig dat het allemaal kan, en met de juiste mensen zal het zeker een hogere arbeidsproductiviteit opleveren, maar het zorgt er ook voor dat je als programmeur veel meer kennis nodig hebt. Ik kan zonder specifieke kennis van PHP, C# of Java een loopje maken dat een WHERE-clause maakt, maar zonder dat ik de PHP-API ken of weet hoe LinQ precies in elkaar zit kan ik jouw code niet onderhouden. Ik ben helaas de bron kwijt, maar ik stuitte lang geleden op de uitspraak "Als je iets zo slim als je kunt in elkaar zet, ben je te dom om het de debuggen / onderhouden", en ik denk dat dit steeds meer op gaat spelen.

Hoe specifieker de technologie die je gebruikt, hoe minder je er van op moet kijken dat niet iedereen het snapt, en hoe vaker je tegen gaat komen dat mensen het op de minder 'complexe' manier doen. Hier op het werk moeten we nieuwe collega's ook eerst leren hoe het framework dat wij gebruiken werkt voordat ze goed mee kunnen draaien in het team, terwijl het verder wel gewoon goede programmeurs zijn.

Dat is ook een beetje de basis van mijn relaas: Ik zou de code die dev10 postte helemaal niet vreemd opkijken, zeker niet omdat hij het over 'onderhouden' heeft. Misschien ken ik er teveel gewicht aan toe, 'slechte programmeervoorbeelden', maar niet iedereen heeft intieme kennis van alle framework-calls, en sommige dingen zijn gewoon van een tijdperk toen dat hele framework er nog niet was, en dan zou ik (op wat kleine schoonheidsfoutjes) dit zeker niet heel slecht willen noemen, het is gewoon een andere (lower level) manier om het probleem op te lossen.

Er zijn zeer zeker gebieden / stukken code waarbij ik je absoluut gelijk geeft, daar niet van :) TheDailyWTF staat vol met 'Not Invented Here'-WTF's :P

"Your life is yours alone. Rise up and live it." - Richard Rahl
Rhàshan - Aditu Sunlock


Acties:
  • 0 Henk 'm!

  • PrisonerOfPain
  • Registratie: Januari 2003
  • Laatst online: 26-05 17:08
Paul schreef op dinsdag 02 augustus 2011 @ 13:00:
Hoe specifieker de technologie die je gebruikt, hoe minder je er van op moet kijken dat niet iedereen het snapt, en hoe vaker je tegen gaat komen dat mensen het op de minder 'complexe' manier doen. Hier op het werk moeten we nieuwe collega's ook eerst leren hoe het framework dat wij gebruiken werkt voordat ze goed mee kunnen draaien in het team, terwijl het verder wel gewoon goede programmeurs zijn.
Even realistisch blijven. Het gaat hier over implode(), een van de meest gebruikte functies in PHP, en array_map (ook veelgebruikt). Als je dat niet beheerst kun je gewoon niet in PHP programmeren. Simpel.

[ Voor 5% gewijzigd door PrisonerOfPain op 02-08-2011 13:09 ]


Acties:
  • 0 Henk 'm!

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

.oisyn

Moderator Devschuur®

Demotivational Speaker

Paul schreef op dinsdag 02 augustus 2011 @ 13:00:
Hier op het werk moeten we nieuwe collega's ook eerst leren hoe het framework dat wij gebruiken werkt voordat ze goed mee kunnen draaien in het team, terwijl het verder wel gewoon goede programmeurs zijn.
Een goede programmeur maakt de taal en omgeving waarin hij werkt zich eigen. Dat leren hoort dus gewoon bij het leven van een goede programmeur. Als we jouw redenatie doortrekken dan zouden we eigenlijk allemaal assembly moeten tikken - de rest zijn "specialistische technieken" 8)7.

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!

  • Paul
  • Registratie: September 2000
  • Laatst online: 21:37
...en daar trekken we het weer naar het extreme :Y

Natuurlijk is het je eigen maken van nieuwe technieken onderdeel van het zijn van een goede programmeur. Echter, hoewel ik niet alle sollicitanten zie, zie ik wel degenen die wel door de procedure komen, en daar zit nog altijd een hoop kaf tussen ;) De ene heeft er wat langer nodig zich in te werken in de materie dan de ander, en ondertussen wordt wel van ze verwacht dat ze hun werk doen. Tja, dan krijg je dus dat dingen gebeuren op de manier die ook goed werkt en die ze _wel_ kennen :)

Het is alweer een paar jaar geleden dat ik gestudeerd heb, maar daar kregen we echt geen dingen als (de toenmalige) LinQ of zo, ik had er zelf nog nooit van gehoord totdat ik ging werken. Ik heb in mijn beginperiode echt wel gedrochten van functies geschreven, dingen waar ik me nog altijd voor schaam, maar daar valt zo'n (redelijk) nette for-loop echt niet onder :)

Waarschijnlijk is mijn achtergrond ook wat anders, mijn laatste echte programmeerwerk was nog in Delphi 5 (toen 7 of 8 of zo al uit was 8)7 , daarna heb ik nog wel wat C# gedaan maar niet voldoende om te vinden dat ik daar goed in ben), als je me daarin een explode-functie aan kunt wijzen ga ik me in een hoekje zitten schamen, maar ik zie dus echt niks vreemds aan een for-loop om de where op te bouwen :)

"Your life is yours alone. Rise up and live it." - Richard Rahl
Rhàshan - Aditu Sunlock


Acties:
  • 0 Henk 'm!

  • PrisonerOfPain
  • Registratie: Januari 2003
  • Laatst online: 26-05 17:08
Paul schreef op dinsdag 02 augustus 2011 @ 13:50:
als je me daarin een explode-functie aan kunt wijzen ga ik me in een hoekje zitten schamen, maar ik zie dus echt niks vreemds aan een for-loop om de where op te bouwen :)
String.Split en String.Join.

Verder vind ik het vreemd dat je mensen aanneemt die geen of amper kennis hebben van hetgeen ze mee moeten werken.

[ Voor 15% gewijzigd door PrisonerOfPain op 02-08-2011 13:57 ]


Acties:
  • 0 Henk 'm!

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

.oisyn

Moderator Devschuur®

Demotivational Speaker

Paul schreef op dinsdag 02 augustus 2011 @ 13:50:
Het is alweer een paar jaar geleden dat ik gestudeerd heb, maar daar kregen we echt geen dingen als (de toenmalige) LinQ of zo
Alsof het de bedoeling van een opleiding is om jou een API aan te leren 8)7. Ik werk voornamelijk in C++, terwijl mijn opleiding voornamelijk Java-focused was. Daadwerkelijk C++ als vak hadden we maar 1 semester, en dat was heel basic. Mijn C++ heb ik geleerd dmv zelfstudie (voor ik aan de opleiding begon, overigens). Bottom line is dat je juniors sowieso moet opleiden - als je ze gewoon low-level code laat tikken omdat ze de API niet kennen en je zegt daar vervolgens ook niets van tijdens een code review dan ben je als leidinggevende gewoon verkeerd bezig.

[ Voor 25% gewijzigd door .oisyn op 02-08-2011 14:00 ]

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!

  • Paul
  • Registratie: September 2000
  • Laatst online: 21:37
Ik heb helaas geen Delphi 5 in de buurt om het zeker te weten, maar wat ik er van kan vinden lijkt me dat de .Net-variant? Ik zie daarentegen ruim voldoende code-voorbeelden die zo heten maar de (mij) bekende D5 code gebruiken om hetzelfde voor elkaar te krijgen :)
Verder vind ik het vreemd dat je mensen aanneemt die geen of amper kennis hebben van hetgeen ze mee moeten werken.
Zie maar eens iemand te vinden in het oosten van het land die Telerik, LinQ, Umbraco én Sitecore kennen (en dan vergeet ik vast nog een paar dingen) ;) Het ene is wat specifieker dan het andere natuurlijk, maar je krijgt toch nooit mensen die het allemaal kunnen...
.oisyn schreef op dinsdag 02 augustus 2011 @ 13:57:
Alsof het de bedoeling van een opleiding is om jou een API aan te leren 8)7
En _dat_ is dus precies mijn punt, dank je.
en je zegt daar vervolgens ook niets van tijdens een code review dan ben je als leidinggevende gewoon verkeerd bezig.
Klopt :) Maar dat maakt de code nog niet meteen slecht, of althans, dat is mijn mening.

Er is een groot verschil tussen dingen die beter kunnen en dingen die slecht zijn. Een paar honderd regels nodig hebben om 3 dagen bij 27 februari op te tellen is echt slecht. Een array omzetten naar een string en dat met een simpele loop doen in plaats van een API-call, tja, tuurlijk kan dat (tegenwoordig) beter, maar het is ook niet overdadig complex. Ik zou het om willen draaien, als je het zonder API-call niet voor elkaar krijgt ben je ook niet goed bezig (maar goed, dat heeft dan ook niemand beweerd, zoals wel meer dingen die over en weer gaan :P )

"Your life is yours alone. Rise up and live it." - Richard Rahl
Rhàshan - Aditu Sunlock


Acties:
  • 0 Henk 'm!

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

.oisyn

Moderator Devschuur®

Demotivational Speaker

Paul schreef op dinsdag 02 augustus 2011 @ 14:21:
En _dat_ is dus precies mijn punt, dank je.
Wát is je punt dan precies? Ze hebben het niet geleerd, dus ze hoeven het ook niet leren te gebruiken in productiecode?
Klopt :) Maar dat maakt de code nog niet meteen slecht, of althans, dat is mijn mening.
Ho ho, de hele discussie ging om het feit dat jij liet blijken dat je een for-loop *beter* vond (omdat een junior het zou kunnen onderhouden omdat iemand zonder API kennis het moeilijk kan lezen)
Ik zou het om willen draaien, als je het zonder API-call niet voor elkaar krijgt ben je ook niet goed bezig
Da's compleet irrelevant voor de discussie. Want of je het kan staat los van of het met de standaard API beter is of niet. En laten we wel wezen, met een zelfgebakken for-loop is de kans op een logica-fout bij een junior een stuk groter dan als hij gewoon van wat standaard bouwstenen gebruik maakt. Sterker nog, dat werd al bewezen in deze topic.

[ Voor 47% gewijzigd door .oisyn op 02-08-2011 14:37 ]

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!

  • Paul
  • Registratie: September 2000
  • Laatst online: 21:37
.oisyn schreef op dinsdag 02 augustus 2011 @ 14:32:
Ho ho, de hele discussie ging om het feit dat jij liet blijken dat je een for-loop *beter* vond (omdat een junior het zou kunnen onderhouden omdat iemand zonder API kennis het moeilijk kan lezen)
Hmm, het lijkt er inderdaad op dat dat mijn punt was, mea culpa.

"Your life is yours alone. Rise up and live it." - Richard Rahl
Rhàshan - Aditu Sunlock


Acties:
  • 0 Henk 'm!

  • dcm360
  • Registratie: December 2006
  • Niet online

dcm360

Moderator Discord

HD7767 powered

String is niet eens een class, dus knap dat je er methodes van kan aanroepen ;)
Voor de eerste zou ik gaan voor splitString, de 2e heb ik zo snel niets op weten te vinden. Zelf gebruik ik hier meestal een TStringList voor.

Acties:
  • 0 Henk 'm!

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

.oisyn

Moderator Devschuur®

Demotivational Speaker

dcm360 schreef op dinsdag 02 augustus 2011 @ 17:42:
[...]

String is niet eens een class, dus knap dat je er methodes van kan aanroepen ;)
*kuch*
Jij hebt het over Delphi. Waar Paul het specifiek over had is een beetje voor verschillende interpretaties vatbaar door z'n haakjesgebruik.

.edit @ hieronder: En als jij 2 seconden langer had nagedacht had je ook wel gesnapt dat PrisonerOfPain specifiek reageerde op C# en dus over de haakjes heen las, en dat het dus blijkbaar wél voor meerdere interpretaties vatbaar is, ookal is Delphi de enige echt juiste context.

[ Voor 26% gewijzigd door .oisyn op 02-08-2011 17:54 ]

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!

  • dcm360
  • Registratie: December 2006
  • Niet online

dcm360

Moderator Discord

HD7767 powered

Een stuk tussen haakjes is optioneel voor de zin (het geeft extra informatie die niet van belang is voor de rest van de zin), dus als je dat weglaat houdt je een zin over met alleen Delphi erin. Dat is hopelijk wel vrij duidelijk voor de meeste mensen...

[ Voor 17% gewijzigd door dcm360 op 02-08-2011 17:52 ]


Acties:
  • 0 Henk 'm!

  • PrisonerOfPain
  • Registratie: Januari 2003
  • Laatst online: 26-05 17:08
dcm360 schreef op dinsdag 02 augustus 2011 @ 17:42:
[...]

String is niet eens een class, dus knap dat je er methodes van kan aanroepen ;)
Voor de eerste zou ik gaan voor splitString, de 2e heb ik zo snel niets op weten te vinden. Zelf gebruik ik hier meestal een TStringList voor.
Delphi for .Net O-)

Acties:
  • 0 Henk 'm!

  • Paul
  • Registratie: September 2000
  • Laatst online: 21:37
Ik bedoelde dus inderdaad "Het laatste waar ik echt in gewerkt heb was D5, als je daarin...", ik ga me niet in een hoekje zitten schamen als in niet weer wat er in C# allemaal te vinden is als ik een halve zin eerder heb aangegeven daar niet goed in te zijn :+

Het leek me vrij duidelijk, maar blijkbaar is het maar goed dat ik niet (veel) meer programmeer, er blijven maar bugjes in sluipen O-)

"Your life is yours alone. Rise up and live it." - Richard Rahl
Rhàshan - Aditu Sunlock


Acties:
  • 0 Henk 'm!

  • PrisonerOfPain
  • Registratie: Januari 2003
  • Laatst online: 26-05 17:08
Desalnietemin blijkt dat de meeste talen dergelijke functionaliteit gewoon aanbieden en het dus niet vreemd is om dergelijke library functies te gebruiken.

[ Voor 38% gewijzigd door PrisonerOfPain op 02-08-2011 18:43 ]


Acties:
  • 0 Henk 'm!

  • Avalaxy
  • Registratie: Juni 2006
  • Laatst online: 23:07
ASP.NET MVC3 *O* _/-\o_

Wat een extreem genot na jaren aanklooien met PHP :)

Acties:
  • 0 Henk 'm!

  • Rhapsody
  • Registratie: Oktober 2002
  • Laatst online: 23:35

Rhapsody

In Metal We Trust

Avalaxy schreef op dinsdag 02 augustus 2011 @ 18:48:
ASP.NET MVC3 *O* _/-\o_

Wat een extreem genot na jaren aanklooien met PHP :)
Ik hou er qua razor syntax wel een beetje een PHP gevoel aan over.
Jarenlang hoor je over PHP dat het ranzig is dat PHP en HTML door elkaar loopt, en nu met Razor is iedereen helemaal happy :P

(Al vind ik ASP.NET MVC 3 ook heerlijk werken hoor!)

🇪🇺 pro Europa! | Puinhoop Veroorzaken en Vertrekken (PVV)


Acties:
  • 0 Henk 'm!

  • BM
  • Registratie: September 2001
  • Laatst online: 20:36

BM

Moderator Spielerij
Rhapsody schreef op dinsdag 02 augustus 2011 @ 19:01:
[...]
Ik hou er qua razor syntax wel een beetje een PHP gevoel aan over.
Jarenlang hoor je over PHP dat het ranzig is dat PHP en HTML door elkaar loopt, en nu met Razor is iedereen helemaal happy :P

(Al vind ik ASP.NET MVC 3 ook heerlijk werken hoor!)
Heb er van de week even mee zitten spelen, maar deel je mening wel. Het word wel erg gemakkelijk gemaakt om logica in je views te verwerken, ook als dat juist heel goed weg te stoppen dmv het hele MVC principe.

Liep alleen al wel weer snel tegen 1 groot probleem van webdevelopment op.... ik ken geen html, en ik vind dat ook helemaal niet leuk om te doen :p De views die je edit in VS hebben geen previes (althans, ik heb 'm niet gevonden), dus dan helpt het wel als je een aardig idee hebt wat bepaalde properties doen, en hoe je ze moet gebruiken.
Ik stond alweer bijna op het punt om tables te gaan gebruiken voor de layout O-)

Binnenkort maar even verder, maar ga nu eerst denk ik de logica maken, en me daarna wel druk maken om het displayen. Vind ik ook vele malen leuker. GUI design is niet mijn sterkste punt, en zal het wel nooit worden ook, zowel voor Win/Web/Wpf.

Xbox
Even the dark has a silver lining | I'm all you can imagine times infinity, times three


Acties:
  • 0 Henk 'm!

  • Bolukan
  • Registratie: Oktober 2002
  • Laatst online: 28-09 18:33
Die discussie over loopjes en include, hadden we die ook niet compacter kunnen schrijven O-)

Acties:
  • 0 Henk 'm!

  • Grijze Vos
  • Registratie: December 2002
  • Laatst online: 28-02 22:17
Rhapsody schreef op dinsdag 02 augustus 2011 @ 19:01:
[...]
Jarenlang hoor je over PHP dat het ranzig is dat PHP en HTML door elkaar loopt, en nu met Razor is iedereen helemaal happy :P
Jarenlang niet goed opgelet dan. Het is ranzig je markup en je business logic te vermengen. Je view logica kan je prima vermengen met je html.

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


Acties:
  • 0 Henk 'm!

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

.oisyn

Moderator Devschuur®

Demotivational Speaker

Niets mis met logica in je view, zolang het maar view-gerelateerde logica is ;)

.edit: euh ja anders lees ik ook even de allerlaatste reactie 8)7

[ Voor 30% gewijzigd door .oisyn op 02-08-2011 22:00 ]

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!

  • Grijze Vos
  • Registratie: December 2002
  • Laatst online: 28-02 22:17
Dit is niet eens het ergste van de ramp van 130kloc waar ik nu mee bezig ben:

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
public static string ConvertDayOfWeekToDutch(this DayOfWeek dayOfWeek)
{
    if (dayOfWeek == DayOfWeek.Friday)
    {
        return "Vr";
    }
    if (dayOfWeek == DayOfWeek.Saturday)
    {
        return "Za";
    }
    if (dayOfWeek == DayOfWeek.Sunday)
    {
        return "Zo";
    }
    if (dayOfWeek == DayOfWeek.Monday)
    {
        return "Ma";
    }
    if (dayOfWeek == DayOfWeek.Tuesday)
    {
        return "Di";
    }
    if (dayOfWeek == DayOfWeek.Wednesday)
    {
        return "Wo";
    }
    if (dayOfWeek == DayOfWeek.Thursday)
    {
        return "Do";
    }
    return "";
}

[ Voor 17% gewijzigd door Grijze Vos op 03-08-2011 15:24 ]

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


Acties:
  • 0 Henk 'm!

  • ReneDD
  • Registratie: Februari 2011
  • Laatst online: 28-09 19:53
Grijze Vos schreef op woensdag 03 augustus 2011 @ 15:23:
Dit is niet eens het ergste van de ramp van 130kloc waar ik nu mee bezig ben:

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
public static string ConvertDayOfWeekToDutch(this DayOfWeek dayOfWeek)
{
    if (dayOfWeek == DayOfWeek.Friday)
    {
        return "Vr";
    }
    if (dayOfWeek == DayOfWeek.Saturday)
    {
        return "Za";
    }
    if (dayOfWeek == DayOfWeek.Sunday)
    {
        return "Zo";
    }
    if (dayOfWeek == DayOfWeek.Monday)
    {
        return "Ma";
    }
    if (dayOfWeek == DayOfWeek.Tuesday)
    {
        return "Di";
    }
    if (dayOfWeek == DayOfWeek.Wednesday)
    {
        return "Wo";
    }
    if (dayOfWeek == DayOfWeek.Thursday)
    {
        return "Do";
    }
    return "";
}
Oef, dit soort dingen zijn wel dubbel pijnlijk. Een dergelijke situatie kan je het beste oplossen met een switch/case constructie. Deze is echter extra pijnlijk omdat het uberhaupt overbodige code is.. Even in de web.config de ui/globalization culture op nl-NL zetten en klaar ben je ;p.

Heb zo ook wel eens stukken code gezien van mensen die de maanden gingen vertalen en dat soort onzin...

[ Voor 8% gewijzigd door ReneDD op 03-08-2011 15:28 ]


Acties:
  • 0 Henk 'm!

  • gnu
  • Registratie: Juli 2011
  • Laatst online: 22-08-2024

gnu

PHP:
1
2
3
4
5
6
7
8
9
10
if (/*zomaar iets*/) {
    $page['404'] = "yes";
}
//aantal regels later
if ($page['404'] == "yes") {

}
else {
    //doe iets
}


En dit letterlijk meer dan 200 keer verspreid over alle code, fijn als je baas een site overkoopt en vraagt om "ff wat wijzigingen" te maken..

Blijkbaar had de auteur nog nooit gehoord van booleans of !=

Acties:
  • 0 Henk 'm!

  • Grijze Vos
  • Registratie: December 2002
  • Laatst online: 28-02 22:17
Of deze:

C#:
1
if (e.ShoppingBasketitem.ContentType == ShoppingbasketItemContentType.Reservering.GetStringValue() && ...)


GetStringValue is een extensionmethod op Enum.

e.ShoppingBasketitem.ContentType is een string. En hij wordt uiteraard geset met dezelfde GetStringValue() functie. En dat dan 80 keer doorheen het project. :S

[ Voor 7% gewijzigd door Grijze Vos op 03-08-2011 15:38 ]

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


Acties:
  • 0 Henk 'm!

  • Face_-_LeSS
  • Registratie: September 2004
  • Niet online
Grijze Vos schreef op woensdag 03 augustus 2011 @ 15:37:
Of deze:

C#:
1
if (e.ShoppingBasketitem.ContentType == ShoppingbasketItemContentType.Reservering.GetStringValue() && ...)


GetStringValue is een extensionmethod op Enum.

e.ShoppingBasketitem.ContentType is een string. En hij wordt uiteraard geset met dezelfde GetStringValue() functie. En dat dan 80 keer doorheen het project. :S
Geweldig! Waarschijnlijk voelde die programmeur zich helemaal het mannetje omdat hij dit "elegant" heeft opgelost via een extensionmethod maar slaat de plank volledig mis met de enums.

Acties:
  • 0 Henk 'm!

  • YopY
  • Registratie: September 2003
  • Laatst online: 13-07 01:14
Grijze Vos schreef op woensdag 03 augustus 2011 @ 15:23:
Dit is niet eens het ergste van de ramp van 130kloc waar ik nu mee bezig ben:

C#:
1
2
3
public static string ConvertDayOfWeekToDutch(this DayOfWeek dayOfWeek) {
// snip
}
Oplossing: ctrl + A, delete. Alle compile-fouten oplossen door een date format, :). Gewoon keihard overbodige code weggooien, is stiekem gewoon het leukste wat je kunt doen.

* YopY spendeert iets van 1/4e van de tijd aan refactoren op huidige project. Of zo voelt het, in ieder geval.

Acties:
  • 0 Henk 'm!

  • Grijze Vos
  • Registratie: December 2002
  • Laatst online: 28-02 22:17
YopY schreef op donderdag 04 augustus 2011 @ 09:08:
[...]


Oplossing: ctrl + A, delete. Alle compile-fouten oplossen door een date format, :). Gewoon keihard overbodige code weggooien, is stiekem gewoon het leukste wat je kunt doen.

* YopY spendeert iets van 1/4e van de tijd aan refactoren op huidige project. Of zo voelt het, in ieder geval.
Ik ben bezig om on the side alvast de basis op te zetten voor een rewrite van deze applicatie. Mooi toch, nog voordat ie in productie gaat mag ie de prullenbak in. Nu alleen nog de stakeholders hier overtuigen dat deze troep echt niet in produktie kan. :s

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


Acties:
  • 0 Henk 'm!

  • Matis
  • Registratie: Januari 2007
  • Laatst online: 21:01

Matis

Rubber Rocket

ReneDD schreef op woensdag 03 augustus 2011 @ 15:27:
Oef, dit soort dingen zijn wel dubbel pijnlijk. Een dergelijke situatie kan je het beste oplossen met een switch/case constructie. Deze is echter extra pijnlijk omdat het uberhaupt overbodige code is.. Even in de web.config de ui/globalization culture op nl-NL zetten en klaar ben je ;p.

Heb zo ook wel eens stukken code gezien van mensen die de maanden gingen vertalen en dat soort onzin...
Volgens mij adviseert R# ook om bij date en string formats altijd een locale mee te geven.

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


Acties:
  • 0 Henk 'm!

  • CodeCaster
  • Registratie: Juni 2003
  • Niet online

CodeCaster

Can I get uhm...

YopY schreef op donderdag 04 augustus 2011 @ 09:08:
[...]


Gewoon keihard overbodige code weggooien, is stiekem gewoon het leukste wat je kunt doen.
Dat heb ik gisteren ook gedaan. Ik zag een functie van een regel of dertig lang om een string uit een textbox te splitten op komma's. Vervolgens werd de array (want ja, je zal het eens in een TStringList zetten) doorlopen en één voor één werden de gevonden strings met OR aan elkaar geplakt voor in een SQL-query. Want ja, je zal eens IN() gebruiken. Gelukkig bleek even lezen later dat de aanroep van de split-functie uitgecomment was en dat de textbox alleen nog maar de invoer van enkele items, zonder komma ondersteunde. Want ja, je zal de labels op je form eens aanpassen als je de functionaliteit wijzigt. Of ongebruikte code weggooien. 8)7

[ Voor 3% gewijzigd door CodeCaster op 04-08-2011 09:39 ]

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


Acties:
  • 0 Henk 'm!

  • Alex)
  • Registratie: Juni 2003
  • Laatst online: 21-08 11:20
CodeCaster schreef op donderdag 04 augustus 2011 @ 09:38:
[...]
Want ja, je zal de labels op je form eens aanpassen als je de functionaliteit wijzigt. Of ongebruikte code weggooien. 8)7
Nee, je snapt het niet. Het is doodzonde om code waar je uren op hebt zitten zwoegen om die SQL-query op te stellen - maar die je toch niet nodig hebt - weg te gooien.

Toch? :+

We are shaping the future


Acties:
  • 0 Henk 'm!

  • Nappa
  • Registratie: Februari 2001
  • Laatst online: 27-06 00:10

Nappa

The Barbaric Saiya-jin!

C#:
1
2
3
4
5
6
7
8
List<SubItem> subitems = new List<SubItem>();
foreach( Item item in allitems )
{
    subitems.AddRange( item.GetSubItems() );
}
SubItem[] retval = subitems.ToArray();
Array.Sort( retval, new SubItemComparer());
return retval.ToList()

List omzetten naar array waarop je Array.Sort aanroept en het resultaat weer omzetten naar een list. Jaa ja. :?

Alles wat ik zeg kan en zal tegen u gebruikt worden
Scream! Suffer! Panic! | Dark-future Dawnbringer | Unofficial Mordor community


Acties:
  • 0 Henk 'm!

  • TripleQ
  • Registratie: Juni 2004
  • Niet online
Zucht, vandaag met een dinosaurus project bezig in VB6.
Paar uur bezig, crasht VB6 ineens (onder windows7, ook not supported door MS)
Open ik mijn project opnieuw, is de helft weg :|
Blijkbaar saved die je bestand niet als je het project compileert, dit in tegenstelling tot Visual Studio (2010). Dit doet dat wel. Ben dan dus niet gewend om de bestanden te saven tussendoor

Kan ik alles opnieuw doen..

[ Voor 7% gewijzigd door TripleQ op 04-08-2011 12:57 ]


Acties:
  • 0 Henk 'm!

  • Haan
  • Registratie: Februari 2004
  • Laatst online: 01-10 13:55

Haan

dotnetter

Lichtpuntje: de tweede keer gaat het sneller ;)

Kater? Eerst water, de rest komt later


Acties:
  • 0 Henk 'm!

  • PiepPiep
  • Registratie: Maart 2002
  • Laatst online: 18-01-2023
TripleQ schreef op donderdag 04 augustus 2011 @ 12:56:
Zucht, vandaag met een dinosaurus project bezig in VB6.
Paar uur bezig, crasht VB6 ineens (onder windows7, ook not supported door MS)
Open ik mijn project opnieuw, is de helft weg :|
Blijkbaar saved die je bestand niet als je het project compileert, dit in tegenstelling tot Visual Studio (2010). Dit doet dat wel. Ben dan dus niet gewend om de bestanden te saven tussendoor

Kan ik alles opnieuw doen..
Tools -> Options -> Environment -> When a program starts

486DX2-50 16MB ECC RAM 4x 500MB Drive array 1.44MB FDD MS-Dos 6.22


Acties:
  • 0 Henk 'm!

  • chronoz
  • Registratie: Maart 2010
  • Laatst online: 09-10-2022
Je kunt ASP.net MVC 3 toch niet vergelijken met PHP? Vergelijk het dan met CakePHP, Ruby-on-Rails, Django e.d.?

En inderdaad, je hebt tegenwoordig prachtige frameworks. Ik ben daar nog vrij nieuw mee, maar ben enorm onder de indruk. Ik heb een hele website gemaakt in tientallen kilobytes aan programmeercode. Je programmeert gewoon 10x sneller en beter.

Acties:
  • 0 Henk 'm!

  • YellowOnline
  • Registratie: Januari 2005
  • Laatst online: 28-03-2023

YellowOnline

BEATI PAVPERES SPIRITV

Grijze Vos schreef op woensdag 03 augustus 2011 @ 15:23:
Dit is niet eens het ergste van de ramp van 130kloc waar ik nu mee bezig ben:

C#:
1
(...)
Een PoSh-oplossing die ik veel gebruik om internationalisatie te lijf te gaan:

PowerShell:
1
2
3
4
5
6
7
8
9
10
11
Function Using-Culture ([System.Globalization.CultureInfo]$Culture,[ScriptBlock]$Script)
    {
    $OldCulture = [System.Threading.Thread]::CurrentThread.CurrentCulture
    Trap 
        {
        [System.Threading.Thread]::CurrentThread.CurrentCulture = $OldCulture
        }
    [System.Threading.Thread]::CurrentThread.CurrentCulture = $Culture
    Invoke-Command $Script
    [System.Threading.Thread]::CurrentThread.CurrentCulture = $OldCulture
    }


Hiermee run je een scriptblock in een bepaalde culture.

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
PS C:\> Using-Culture en-us {Get-Date}
Thursday, August 04, 2011 13:26:45

PS C:\> Using-Culture nl-be {Get-Date}
donderdag 4 augustus 2011 13:26:52

PS C:\> Using-Culture fr-be {Get-Date}
jeudi 4 août 2011 13:26:57

PS C:\> Using-Culture de-de {Get-Date}
Donnerstag, 4. August 2011 13:27:02

PS C:\> Using-Culture it-it {Get-Date}
giovedì 4 agosto 2011 13.27.10


Was bij mij een noodzaak om te exporteren naar Excel - daar gaat een en ander mis als de culture niet en-us is.

[ Voor 56% gewijzigd door YellowOnline op 04-08-2011 13:41 ]


Acties:
  • 0 Henk 'm!

  • TripleQ
  • Registratie: Juni 2004
  • Niet online
PiepPiep schreef op donderdag 04 augustus 2011 @ 13:07:
[...]

Tools -> Options -> Environment -> When a program starts
Gedaan nu O-)

En idd gaat het wel sneller de tweede keer...Hoef er bijna niet meer bij na te denken.
Maar leuk is anders

Acties:
  • 0 Henk 'm!

  • Leftblank
  • Registratie: Juni 2004
  • Laatst online: 20:55
Ruby:
1
2
3
4
5
6
7
def geef_voorstanders_van_een_sub_proposal_waar_invloed_groter_dan_twee_is_die_in_een_coalitie_van_actor_zit(actor, sub_proposal)
    voorstanders = Array.new
    actor.coalitions.each do |coalition|
      coalition.actors.select { |a| a.get_vote_for_sub_proposal(sub_proposal).voteEnum == Vote::PRO && a.calculated_proposal_influence > 2 && a != actor }.each { |a| voorstanders << a }
    end
    voorstanders.uniq
  end

Vandaag bovenstaande pareltje weer eens tegengekomen in een project wat ik geërfd heb. Ok, niet iedereen is fan van het afkappen van regels op 80 tekens, dat kan ik mij nog voorstellen. Maar om nou volledige zinnen als functienaam te gebruiken en daarbij nog eens Nederlands en Engels door elkaar te gebruiken :F.

Acties:
  • 0 Henk 'm!

  • Davio
  • Registratie: November 2007
  • Laatst online: 06-01 16:46
En dan programmeren zonder code completion. :)

Acties:
  • 0 Henk 'm!

  • Afvalzak
  • Registratie: Oktober 2008
  • Laatst online: 31-08 12:02

Afvalzak

Zet jij mij even buiten?

Leftblank schreef op donderdag 04 augustus 2011 @ 16:33:
Ruby:
1
2
3
4
5
6
7
def geef_voorstanders_van_een_sub_proposal_waar_invloed_groter_dan_twee_is_die_in_een_coalitie_van_actor_zit(actor, sub_proposal)
    voorstanders = Array.new
    actor.coalitions.each do |coalition|
      coalition.actors.select { |a| a.get_vote_for_sub_proposal(sub_proposal).voteEnum == Vote::PRO && a.calculated_proposal_influence > 2 && a != actor }.each { |a| voorstanders << a }
    end
    voorstanders.uniq
  end

Vandaag bovenstaande pareltje weer eens tegengekomen in een project wat ik geërfd heb. Ok, niet iedereen is fan van het afkappen van regels op 80 tekens, dat kan ik mij nog voorstellen. Maar om nou volledige zinnen als functienaam te gebruiken en daarbij nog eens Nederlands en Engels door elkaar te gebruiken :F.
Woh, die is echt mooi. :o


zet_dit_object_om_naar_een_touwtje

Last.fm | Code Talks


Acties:
  • 0 Henk 'm!

Verwijderd

Niet echt programmeren, maarja...

De externe HDD van mijn vriendin valt steeds in slaap tijdens een film kijken. Is helaas hardcoded en erg vervelend, aangezien hij ieder half uur (3x per film dus) op standby gaat, moet opspinnen, en dan gaat de film verder. Dan ben je al gauw een halve minuut verder. Waarom de schijf dat doet... geen flauw idee, er wordt wel van gelezen dus het zou niet mogen...
Nouja, aanschouw mijn creatieve oplossing in de vorm van een batchfile als we een film gaan kijken 8)

code:
1
2
3
4
5
6
7
8
9
:start
H:
echo kloteschijfmoetblijvenlevenennietslapen. kloteschijfmoetblijvenlevenennietslapen. kloteschijfmoetblijvenlevenennietslapen. kloteschijfmoetblijvenlevenennietslapen. kloteschijfmoetblijvenlevenennietslapen. kloteschijfmoetblijvenlevenennietslapen. kloteschijfmoetblijvenlevenennietslapen. kloteschijfmoetblijvenlevenennietslapen. kloteschijfmoetblijvenlevenennietslapen. kloteschijfmoetblijvenlevenennietslapen. kloteschijfmoetblijvenlevenennietslapen. kloteschijfmoetblijvenlevenennietslapen. kloteschijfmoetblijvenlevenennietslapen. kloteschijfmoetblijvenlevenennietslapen. kloteschijfmoetblijvenlevenennietslapen. kloteschijfmoetblijvenlevenennietslapen. kloteschijfmoetblijvenlevenennietslapen. kloteschijfmoetblijvenlevenennietslapen. kloteschijfmoetblijvenlevenennietslapen. kloteschijfmoetblijvenlevenennietslapen. kloteschijfmoetblijvenlevenennietslapen. kloteschijfmoetblijvenlevenennietslapen. kloteschijfmoetblijvenlevenennietslapen. kloteschijfmoetblijvenlevenennietslapen. kloteschijfmoetblijvenlevenennietslapen. kloteschijfmoetblijvenlevenennietslapen. kloteschijfmoetblijvenlevenennietslapen. kloteschijfmoetblijvenlevenennietslapen. kloteschijfmoetblijvenlevenennietslapen. kloteschijfmoetblijvenlevenennietslapen. kloteschijfmoetblijvenlevenennietslapen. kloteschijfmoetblijvenlevenennietslapen. kloteschijfmoetblijvenlevenennietslapen. kloteschijfmoetblijvenlevenennietslapen. kloteschijfmoetblijvenlevenennietslapen. kloteschijfmoetblijvenlevenennietslapen. kloteschijfmoetblijvenlevenennietslapen. kloteschijfmoetblijvenlevenennietslapen. kloteschijfmoetblijvenlevenennietslapen. kloteschijfmoetblijvenlevenennietslapen. kloteschijfmoetblijvenlevenennietslapen. kloteschijfmoetblijvenlevenennietslapen. kloteschijfmoetblijvenlevenennietslapen. kloteschijfmoetblijvenlevenennietslapen. kloteschijfmoetblijvenlevenennietslapen. kloteschijfmoetblijvenlevenennietslapen. kloteschijfmoetblijvenlevenennietslapen. kloteschijfmoetblijvenlevenennietslapen. kloteschijfmoetblijvenlevenennietslapen. kloteschijfmoetblijvenlevenennietslapen. kloteschijfmoetblijvenlevenennietslapen. kloteschijfmoetblijvenlevenennietslapen. kloteschijfmoetblijvenlevenennietslapen. kloteschijfmoetblijvenlevenennietslapen. > keepalive.bullshit
attrib +H keepalive.bullshit
timeout /t 20
attrib -H keepalive.bullshit
del H:\keepalive.bullshit
timeout /t 20
GOTO start


:+

Acties:
  • 0 Henk 'm!

  • Bob
  • Registratie: Mei 2005
  • Laatst online: 01-10 00:22

Bob

Verwijderd schreef op donderdag 04 augustus 2011 @ 16:42:
Niet echt programmeren, maarja...

De externe HDD van mijn vriendin valt steeds in slaap tijdens een film kijken. Is helaas hardcoded en erg vervelend, aangezien hij ieder half uur (3x per film dus) op standby gaat, moet opspinnen, en dan gaat de film verder. Dan ben je al gauw een halve minuut verder. Waarom de schijf dat doet... geen flauw idee, er wordt wel van gelezen dus het zou niet mogen...
Nouja, aanschouw mijn creatieve oplossing in de vorm van een batchfile als we een film gaan kijken 8)

code:
1
2
3
4
5
6
7
8
9
:start
H:
echo kloteschijfmoetblijvenlevenennietslapen. kloteschijfmoetblijvenlevenennietslapen. kloteschijfmoetblijvenlevenennietslapen. kloteschijfmoetblijvenlevenennietslapen. kloteschijfmoetblijvenlevenennietslapen. kloteschijfmoetblijvenlevenennietslapen. kloteschijfmoetblijvenlevenennietslapen. kloteschijfmoetblijvenlevenennietslapen. kloteschijfmoetblijvenlevenennietslapen. kloteschijfmoetblijvenlevenennietslapen. kloteschijfmoetblijvenlevenennietslapen. kloteschijfmoetblijvenlevenennietslapen. kloteschijfmoetblijvenlevenennietslapen. kloteschijfmoetblijvenlevenennietslapen. kloteschijfmoetblijvenlevenennietslapen. kloteschijfmoetblijvenlevenennietslapen. kloteschijfmoetblijvenlevenennietslapen. kloteschijfmoetblijvenlevenennietslapen. kloteschijfmoetblijvenlevenennietslapen. kloteschijfmoetblijvenlevenennietslapen. kloteschijfmoetblijvenlevenennietslapen. kloteschijfmoetblijvenlevenennietslapen. kloteschijfmoetblijvenlevenennietslapen. kloteschijfmoetblijvenlevenennietslapen. kloteschijfmoetblijvenlevenennietslapen. kloteschijfmoetblijvenlevenennietslapen. kloteschijfmoetblijvenlevenennietslapen. kloteschijfmoetblijvenlevenennietslapen. kloteschijfmoetblijvenlevenennietslapen. kloteschijfmoetblijvenlevenennietslapen. kloteschijfmoetblijvenlevenennietslapen. kloteschijfmoetblijvenlevenennietslapen. kloteschijfmoetblijvenlevenennietslapen. kloteschijfmoetblijvenlevenennietslapen. kloteschijfmoetblijvenlevenennietslapen. kloteschijfmoetblijvenlevenennietslapen. kloteschijfmoetblijvenlevenennietslapen. kloteschijfmoetblijvenlevenennietslapen. kloteschijfmoetblijvenlevenennietslapen. kloteschijfmoetblijvenlevenennietslapen. kloteschijfmoetblijvenlevenennietslapen. kloteschijfmoetblijvenlevenennietslapen. kloteschijfmoetblijvenlevenennietslapen. kloteschijfmoetblijvenlevenennietslapen. kloteschijfmoetblijvenlevenennietslapen. kloteschijfmoetblijvenlevenennietslapen. kloteschijfmoetblijvenlevenennietslapen. kloteschijfmoetblijvenlevenennietslapen. kloteschijfmoetblijvenlevenennietslapen. kloteschijfmoetblijvenlevenennietslapen. kloteschijfmoetblijvenlevenennietslapen. kloteschijfmoetblijvenlevenennietslapen. kloteschijfmoetblijvenlevenennietslapen. kloteschijfmoetblijvenlevenennietslapen. > keepalive.bullshit
attrib +H keepalive.bullshit
timeout /t 20
attrib -H keepalive.bullshit
del H:\keepalive.bullshit
timeout /t 20
GOTO start


:+
Buffert je mediaplayer dan te veel? Of is het de filesystem cache van het OS dat ineens gans de film cached? Wanneer ik met VLC muziek afspeel heb ik soms een gelijkaardig probleem, kan waarschijnlijk met een setting opgelost worden.

Acties:
  • 0 Henk 'm!

  • YopY
  • Registratie: September 2003
  • Laatst online: 13-07 01:14
Daar heb je toch wel extremere oplossingen voor? :+ pleur er zoveel geheugen in dat de hele film in het geheugen past (is ook beter qua energieverbruik).

Of schrijf je eigen videospeler die constant van schijf leest, :p.

of euh. Kan niks origineels bedenken, nevermind.

Acties:
  • 0 Henk 'm!

  • Voutloos
  • Registratie: Januari 2002
  • Niet online
Áls het al een test is, is Verdachte dingen bij inloggen op mijn.ing.nl trouwens wel met stip kanshebber voor de slechtste-programmeervoorbeeld-van-het-jaar bokaal. :D

{signature}


Acties:
  • 0 Henk 'm!

  • PrisonerOfPain
  • Registratie: Januari 2003
  • Laatst online: 26-05 17:08
YopY schreef op donderdag 04 augustus 2011 @ 21:26:
Daar heb je toch wel extremere oplossingen voor? :+ pleur er zoveel geheugen in dat de hele film in het geheugen past (is ook beter qua energieverbruik).

Of schrijf je eigen videospeler die constant van schijf leest, :p.

of euh. Kan niks origineels bedenken, nevermind.
Firmware patchen :Y)

Acties:
  • 0 Henk 'm!

  • CodeCaster
  • Registratie: Juni 2003
  • Niet online

CodeCaster

Can I get uhm...

Argh. Even twee text-parameters in T-SQL aan elkaar plakken, maar dat mag niet met text omdat, ja, euh. Gewoon.

Dus:
SQL:
1
set @Foo = CAST(ISNULL(@TextParam1, '') as varchar) + CAST(ISNULL(@TextParam2, '') as varchar)

Hé, er verdwijnt tekst. Ah:
When n is not specified when using the CAST and CONVERT functions, the default length is 30.

[ Voor 6% gewijzigd door CodeCaster op 06-08-2011 10:28 ]

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


Acties:
  • 0 Henk 'm!

  • Olaf van der Spek
  • Registratie: September 2000
  • Niet online
Bob schreef op donderdag 04 augustus 2011 @ 17:03:
Buffert je mediaplayer dan te veel? Of is het de filesystem cache van het OS dat ineens gans de film cached? Wanneer ik met VLC muziek afspeel heb ik soms een gelijkaardig probleem, kan waarschijnlijk met een setting opgelost worden.
Dan is de buffering van VLC waarschijnlijk niet goed. De buffer zou altijd vol genoeg moeten zijn om zo'n spinup te overleven.

Acties:
  • 0 Henk 'm!

  • CodeCaster
  • Registratie: Juni 2003
  • Niet online

CodeCaster

Can I get uhm...

Nou ja, als hij het heeft over dertig seconden opspintijd heb je het al gauw over 1/200e film, met een béétje film heb je het dan over 5 gig, dus 25 MB aan buffer. Da's al relatief veel, hoewel dat tegenwoordig makkelijk kan, gezien de hoeveelheid geheugen die een courante pc aan boord heeft.

Als ik zo snel zoek op het www schijnt de standaardbuffergrootte van VLC ook maar 300 milliseconde (!) te zijn. Als je dat verhonderdvoudigt ben je er ook.

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


Acties:
  • 0 Henk 'm!

  • frickY
  • Registratie: Juli 2001
  • Laatst online: 28-09 20:20
Verwijderd schreef op donderdag 04 augustus 2011 @ 16:42:
De externe HDD van mijn vriendin valt steeds in slaap tijdens een film kijken
Toevallig via eSata op een JMicron chipset aangesloten?
Deed mijn schijf ook, ook tijdens het schrijven van backups :/

Heb er een 'speciale' eSata driver voor gevonden waarna het niet meer is gebeurd; zou de link even voor je moeten opzoeken.

Acties:
  • 0 Henk 'm!

  • Matis
  • Registratie: Januari 2007
  • Laatst online: 21:01

Matis

Rubber Rocket

Ik weet niet of het een slecht programmeervoorbeeld is, of een programmeur die geilt op significantie, maar dit is toch wel heel erg nauwkeurig:
Afbeeldingslocatie: http://tweakers.net/ext/f/w4r5qM2oDSUh52dP2j9Ek0PP/full.png

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


Acties:
  • 0 Henk 'm!

  • dcm360
  • Registratie: December 2006
  • Niet online

dcm360

Moderator Discord

HD7767 powered

Nou, zo heel erg significant zullen de laatste cijfers wel niet zijn, of het wordt wel heel erg precies in de database opgeslagen :)

Acties:
  • 0 Henk 'm!

  • Fusioxan
  • Registratie: November 2009
  • Laatst online: 01-10 12:57
Waarschijnlijk is het met mktime of microtime gedaan. :P Maar dan nog, rond het af op hele dagen (naar onder). Ach ja, hij heeft zijn lolletje. =]

Acties:
  • 0 Henk 'm!

  • Patriot
  • Registratie: December 2004
  • Laatst online: 01-10 12:30

Patriot

Fulltime #whatpulsert

Ik kwam wat oude code van mezelf tegen:

PHP:
1
if ($debug && !$debug) { /* doe iets debug-igs */ }


Ik hoop dat ik dat expres heb gedaan :X

Acties:
  • 0 Henk 'm!

  • Freeaqingme
  • Registratie: April 2006
  • Laatst online: 01-10 13:21
Jouw versie van php ondersteunde operator overloading, en je ! had je iets 'bijzonders' mee gedaan? ;)

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


Acties:
  • 0 Henk 'm!

  • Patriot
  • Registratie: December 2004
  • Laatst online: 01-10 12:30

Patriot

Fulltime #whatpulsert

Dat zou wel een mooie mindfuck zijn. Een ! die een variabele op false zet en true teruggeeft als dat lukt :+

Acties:
  • 0 Henk 'm!

  • BarôZZa
  • Registratie: Januari 2003
  • Nu online
nondeju, ik bekijk even de PasteBin van de nieuwe AntiSec hack.

Tel de wtf's:

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
////////////////////////////////////////////////////////////////////////////////
For the Blackhat & DEFCON conferences, we figure yall should hear it straight
from some real black hats. It's time to bust out the old school hacklog and mock
how vulnerable and insecure our enemies in blue really are.
////////////////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////////////////
// CONNECT.PHP
// SAFE_QUERY()... WAY TO MAKE SQL INJECTIONS WORSE BY NOT VALIDATING INPUT ...
// BUT INSTEAD PASSING RAW INPUT TO SHELL_EXEC() ALLOWING COMMAND EXECUTION !!!
////////////////////////////////////////////////////////////////////////////////

<?
$i = 0;
$path = '';
while(!is_file($path."admin/config/classes/dymin_main.php")){
    $path .= '../';
    $i++;
    if($i>10){
        $path = '';
        break;
    }
}
include($path."admin/config/dymin_config.php");

function safe_query($query){
    if(strpos(getcwd(),'admin')){
        shell_exec("echo '".date("Y-m-d H:i:s")."|".$query."' >>
/var/sql_logs/".str_replace("www.","",$_SERVER['HTTP_HOST'].""));
    }
     $database = DATABASE;
     $username = DATABASE_USER;
     $password = DATABASE_PASS;
     $destination = DATABASE_HOST;
     mysql_connect($destination, $username, $password) or die("<br>Unable to
connect to database: <br>". mysql_error());
     mysql_select_db($database) or die ("<br> Unable to select
database[$database]: <br>" . mysql_error());
     $result = mysql_query($query);
     return $result;
}
?>


////////////////////////////////////////////////////////////////////////////////
//  VERIFY_LOGIN.PHP
//  ITS BEEN A HOT MINUTE SINCE I'VE SEEN ' OR 'a'='a SQL INJECTIONS WORK
//  BUT BJM NEVER FAILS TO DELIVER THE MOST OBVIOUS OF VULNERABILITIES
////////////////////////////////////////////////////////////////////////////////

<?php
session_start();
$username = $_GET['username'];
$password = $_GET['password'];

include "../config/connect.php";
sleep(2);
$query = "select * from dymin_user where username = '$username' and password =
'$password'";
$result = safe_query($query);

$num = mysql_num_rows($result);
if($num == ''){
echo "<img src=\"images/login_deny.gif\">";
}else{
    $id = mysql_result($result,0,'id');
    $level = mysql_result($result,0,'level');
    $_SESSION['user_id'] = $id;
    $_SESSION['username'] = $username;
    $_SESSION['password'] = $password;
    $_SESSION['level'] = $level;
}
?>


////////////////////////////////////////////////////////////////////////////////
//  RENAME_FILE.PHP
//  PASSING RAW USER-SUPPLIED INPUT TO RENAME AND INCLUDE FUNCTIONS ...
//  TWO VULNERABILITIES FOR THE PRICE OF ONE!!
////////////////////////////////////////////////////////////////////////////////

<?
error_reporting(E_ALL);
ini_set('display_errors', '1');
include "../../admin/config/connect.php";

$filename = $_POST['name'];
$type = $_POST['type'];
$uploads_dir_path_with_date = '../../uploads/'.date("Ymd").'/';
$uploads_dir_path = '../../uploads/'.date("Ymd").'/';
$uploads_dir_path_no_date = '../../uploads/';
if(!is_file($uploads_dir_path_no_date.'log.txt')){
    $fh = fopen("$uploads_dir_path_no_date"."log.txt",'w');
    shell_exec("chmod 777 $uploads_dir_path_with_date"."log.txt");
    fclose($fh);
}

if(!is_dir($uploads_dir_path_with_date)){
    mkdir($uploads_dir_path_with_date,'0777');
    shell_exec("chmod 777 $uploads_dir_path_with_date");
}
$id = $_GET['id'];

$new_name = md5(microtime().$filename.mt_rand(10000, 32000)); 
rename("$uploads_dir_path_no_date$filename","$uploads_dir_path_with_date$
new_name$type");

//write file upload log
$fh = fopen("$uploads_dir_path_no_date"."log.txt",'a');
$log_info = 'DATE: '.date("m-d-Y His")."\t";
$log_info .= 'HTTP_HOST: '.$_SERVER['HTTP_HOST']."\t";
$log_info .= 'REMOTE_ADDR: '.$_SERVER['REMOTE_ADDR']."\t";
$log_info .= 'SCRIPT_FILENAME: '.$_SERVER['SCRIPT_FILENAME']."\t";
$log_info .= 'OLD_FILENAME: '.$filename."\t";
$log_info .= 'NEW_FILENAME: '.$new_name."\t\n";
fwrite($fh,$log_info);
fclose($fh);
unset($fh,$log_info);

$file_to_include = $_GET['filename'];

include "$file_to_include";
?>

////////////////////////////////////////////////////////////////////////////////
//  UPLOADIFY.PHP
//  WAY TO GO, COMMENTING OUT THE FILE EXTENSION VALIDATING CODE
////////////////////////////////////////////////////////////////////////////////

<?php
if (!empty($_FILES)) {
    $tempFile = $_FILES['Filedata']['tmp_name'];
    $targetPath = $_SERVER['DOCUMENT_ROOT'] . $_REQUEST['folder'] . '/';
    $targetFile =  str_replace('//','/',$targetPath) .
$_FILES['Filedata']['name'];
    
    // $fileTypes  = str_replace('*.','',$_REQUEST['fileext']);
    // $fileTypes  = str_replace(';','|',$fileTypes);
    // $typesArray = split('\|',$fileTypes);
    // $fileParts  = pathinfo($_FILES['Filedata']['name']);
    
    // if (in_array($fileParts['extension'],$typesArray)) {
        // Uncomment the following line if you want to make the directory if it
doesn't exist
        // mkdir(str_replace('//','/',$targetPath), 0755, true);
        
        move_uploaded_file($tempFile,$targetFile);
        echo "1";
    // } else {
    //  echo 'Invalid file type.';
    // }
}
?>

////////////////////////////////////////////////////////////////////////////////
// SHOW_IMAGE_DOWNLOAD.PHP
// HEY LETS TAKE RAW USER INPUT AND PASS IT TO READFILE() ...
// AT LEAST THEY HAD THE COURTESY OF VERIFYING IS_FILE() FOR US!!!
////////////////////////////////////////////////////////////////////////////////

<? include "config/header.php"; ?>
<?php
$filename = $_GET['filename'];
if(is_file($filename)) {
header("Pragma: public");
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Content-Type: application/force-download");
header("Content-Type: application/octet-stream");
header("Content-Type: application/download");
header("Content-Disposition: attachment; filename=".basename($filename).";");
header("Content-Transfer-Encoding: binary");
header("Content-Length: ".filesize($filename));
readfile("$filename");
exit();
}
?>

////////////////////////////////////////////////////////////////////////////////
// UPLOAD_SCANNER.SH
// UH OH... THEY ARE CLOSING IN ON OUR C99 SHELL!!!  PLEASE...
////////////////////////////////////////////////////////////////////////////////

#!/bin/bash
#
# Scan for PHP in upload folders
#
MAILTO="-c galexander@bjmweb.com -c markm@bjmweb.com -c bnewman@bjmweb.com root"
EXCLUDES="-e watermark_wanted_photo.php -e checkimages.php -e
watermark_recalled_photo.php"
lineify (){
for i in $*
do
  echo $i
done
}
# testing
#EXCLUDES="numnum"
#MAILTO="jwiegand@bjmweb.com"
#
UHOH=$(/usr/bin/find /var/www/vhosts/*/httpdocs/uploads/*.php | \
    grep -v $EXCLUDES)
if [ "${UHOH}xx" != "xx" ]
then
    lineify $UHOH |  mail -s "Go Daddy - Upload Scanner" $MAILTO

Acties:
  • 0 Henk 'm!

  • Remus
  • Registratie: Juli 2000
  • Laatst online: 15-08-2021
Patriot schreef op zaterdag 06 augustus 2011 @ 18:15:
Dat zou wel een mooie mindfuck zijn. Een ! die een variabele op false zet en true teruggeeft als dat lukt :+
Misschien de boolean waarde FILE_NOT_FOUND ;)

Acties:
  • 0 Henk 'm!

Verwijderd

BarôZZa schreef op zondag 07 augustus 2011 @ 05:15:
nondeju, ik bekijk even de PasteBin van de nieuwe AntiSec hack.

Tel de wtf's:

[snip]
Ik wil niet meer leven. ;(

Acties:
  • 0 Henk 'm!

  • Not Pingu
  • Registratie: November 2001
  • Laatst online: 05-08 09:21

Not Pingu

Dumbass ex machina

Die eerste while is al meteen leuk. Hoezo weet je niet wat het root pad van je applicatie is?

Certified smart block developer op de agile darkchain stack. PM voor info.


Acties:
  • 0 Henk 'm!

  • EdwinG
  • Registratie: Oktober 2002
  • Laatst online: 23:03
Not Pingu schreef op zondag 07 augustus 2011 @ 14:00:
Die eerste while is al meteen leuk. Hoezo weet je niet wat het root pad van je applicatie is?
Dat is niet eens het enige wat mis is met die lus. Kijk maar wat er gebeurd als zelfs met 10x '../' niets gevonden wordt.
Volgens mij heeft die code meer fouten dan regels.

Bezoek eens een willekeurige pagina


Acties:
  • 0 Henk 'm!

  • Afvalzak
  • Registratie: Oktober 2008
  • Laatst online: 31-08 12:02

Afvalzak

Zet jij mij even buiten?

EdwinG schreef op zondag 07 augustus 2011 @ 16:29:
[...]

Dat is niet eens het enige wat mis is met die lus. Kijk maar wat er gebeurd als zelfs met 10x '../' niets gevonden wordt.
Volgens mij heeft die code meer fouten dan regels.
:X

Last.fm | Code Talks


Acties:
  • 0 Henk 'm!

  • Soultaker
  • Registratie: September 2000
  • Nu online
Patriot schreef op vrijdag 05 augustus 2011 @ 21:55:
Ik kwam wat oude code van mezelf tegen:

PHP:
1
if ($debug && !$debug) { /* doe iets debug-igs */ }


Ik hoop dat ik dat expres heb gedaan :X
Hehe. Ik gebruik zelf wel eens een constructie als deze:

C:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
static double f_cache[1000];

double f(int x)
{
    if (x >= 0 && x < 1000 && cache[x] == cache[x]) return cache[x];
    double y;
    /* ingewikkelde berekening hier */
    if (x >= 0 && x < 1000) cache[x] = y;
    return y;
}

int main()
{
    memset(f_cache, -1, sizeof(f_cache));
    /* meer code hier */
}

Levert leuke reacties op bij mensen die alleen regel 5 zien en/of niet snappen hoe floating point arithmetic werkt.

Acties:
  • 0 Henk 'm!

Verwijderd

Is het nou cache of f_cache? :+

Acties:
  • 0 Henk 'm!

  • Feanathiel
  • Registratie: Juni 2007
  • Niet online

Feanathiel

Cup<Coffee>

Hmm, interessant. Hoe kunnen deze twee waarden van elkaar afwijken in een single-threaded applicatie?

Acties:
  • 0 Henk 'm!

  • Orwell
  • Registratie: December 2009
  • Laatst online: 08-09 22:11
Feanathiel schreef op zondag 07 augustus 2011 @ 21:39:
Hmm, interessant. Hoe kunnen deze twee waarden van elkaar afwijken in een single-threaded applicatie?
Bij float (die 0 is) == 0.0f kan er nog wel eens false uitrollen door gebrek aan precisie, maar anders weet ik het inderdaad ook niet.

Acties:
  • 0 Henk 'm!

  • Feanathiel
  • Registratie: Juni 2007
  • Niet online

Feanathiel

Cup<Coffee>

Orwell schreef op zondag 07 augustus 2011 @ 21:43:
[...]


Bij float (die 0 is) == 0.0f kan er nog wel eens false uitrollen door gebrek aan precisie, maar anders weet ik het inderdaad ook niet.
Daar kan ik nog inkomen (0.1 + 0.2 - 0.3 != 0). Maar van een waarde die bit precies (?) uit het geheugen wordt geladen zou ik verwachten dat deze precies overeen zou moeten komen.

Acties:
  • 0 Henk 'm!

  • Orwell
  • Registratie: December 2009
  • Laatst online: 08-09 22:11
Feanathiel schreef op zondag 07 augustus 2011 @ 21:52:
Daar kan ik nog inkomen (0.1 + 0.2 - 0.3 != 0).
Ja, dat dus.
Maar van een waarde die bit precies (?) uit het geheugen wordt geladen zou ik verwachten dat deze precies overeen zou moeten komen.
Dat geldt inderdaad ook voor de floats ja. Het zijn ook maar gewoon 2 stukjes uint en een sign bit.

Vaag. :P

Oh, wacht es, heeft dit niet iets met NaN te maken? #INF en dat soort enge IEEEEEEE-rommel enzo?

[ Voor 9% gewijzigd door Orwell op 07-08-2011 22:01 ]


Acties:
  • 0 Henk 'm!

  • hostname
  • Registratie: April 2009
  • Laatst online: 19:35
OverflowException :+

Is me niet helemaal duidelijk waar dit vandaan komt, als dat de site van de Amerikaanse politie is dan is het wel heel erg.

Acties:
  • 0 Henk 'm!

  • YopY
  • Registratie: September 2003
  • Laatst online: 13-07 01:14
hostname schreef op zondag 07 augustus 2011 @ 22:00:
[...]

OverflowException :+

Is me niet helemaal duidelijk waar dit vandaan komt, als dat de site van de Amerikaanse politie is dan is het wel heel erg.
Mwa, ik geloof niet dat je de schuld moet geven aan de organisatie waar de hack op uitgevoerd is, maar op de ontwikkelaars die dat soort rommel uitbraken en ook nog geloven dat ze slim bezig zijn. De PHP dev community is ziek, wat mij betreft.

Acties:
  • 0 Henk 'm!

Verwijderd

YopY schreef op maandag 08 augustus 2011 @ 09:56:
[...]


Mwa, ik geloof niet dat je de schuld moet geven aan de organisatie waar de hack op uitgevoerd is, maar op de ontwikkelaars die dat soort rommel uitbraken en ook nog geloven dat ze slim bezig zijn. De PHP dev community is ziek, wat mij betreft.
Ja, want natuuurlijk is iedere PHP dev zo en kunnen ze alleen maar rommel uitbraken. Alsjeblieft.

Acties:
  • 0 Henk 'm!

  • CodeCaster
  • Registratie: Juni 2003
  • Niet online

CodeCaster

Can I get uhm...

Aan de onderkant van de markt wel hoor, daar wemelt het van de stagiairs, niet-opgeleiden en jonge managers die van hun hobby hun werk hebben gemaakt. Elk punt an sich hoeft niet voor problemen te zorgen, maar zet een handvol van "zulke" mensen bij elkaar en je hebt een recept voor een ramp.

Maar ja, wat verwacht je dan als je voor bedragen vanaf een euro of tweehonderd een complete website met CMS en de hele rataplan ontworpen en geïmplementeerd wil hebben? Daarmee kun je drie, vier uur werk betalen voor iemand met een béétje ervaring...

[ Voor 15% gewijzigd door CodeCaster op 08-08-2011 10:30 ]

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


Acties:
  • 0 Henk 'm!

  • SanderTje!
  • Registratie: Januari 2002
  • Niet online
YopY schreef op maandag 08 augustus 2011 @ 09:56:
[...]

De PHP dev community is ziek, wat mij betreft.
Dat behoeft misschien wat meer uitleg? :)

i7 10700, 32GB RAM, RTX 3080


Acties:
  • 0 Henk 'm!

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

.oisyn

Moderator Devschuur®

Demotivational Speaker

Orwell schreef op zondag 07 augustus 2011 @ 21:43:
[...]


Bij float (die 0 is) == 0.0f kan er nog wel eens false uitrollen door gebrek aan precisie, maar anders weet ik het inderdaad ook niet.
Nee, 0 is 0. De enige false die je krijgt is wanneer de float niet echt 0 is. Maar waar het hier om gaat is NaNs, NaN == NaN => false. Let ook op de memset in main(), die alle bits van de float op 1 zet (wat het een NaN maakt)

[ Voor 10% gewijzigd door .oisyn op 08-08-2011 10:58 ]

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!

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

Snake

Los Angeles, CA, USA

.oisyn schreef op maandag 08 augustus 2011 @ 10:57:
[...]

Nee, 0 is 0. De enige false die je krijgt is wanneer de float niet echt 0 is. Maar waar het hier om gaat is NaNs, NaN == NaN => false. Let ook op de memset in main(), die alle bits van de float op 1 zet (wat het een NaN maakt)
In C# is NaN != NaN (ik weet dat de discussie of C++ gaat ;) )

Maar in C# doe je Double.IsNaN om te testen of iets NaN is:

C#:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
        static void Main(string[] args)
        {
            Test(double.NaN);

            Console.ReadLine();
        }

        private static void Test(double value)
        {
            Console.WriteLine(double.NaN == value);

            Console.WriteLine(double.IsNaN(value));

            
        }


Result:
False
True

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


Acties:
  • 0 Henk 'm!

  • PrisonerOfPain
  • Registratie: Januari 2003
  • Laatst online: 26-05 17:08
Snake schreef op maandag 08 augustus 2011 @ 11:30:
[...]

In C# is NaN != NaN (ik weet dat de discussie of C++ gaat ;) )
Dat stelt 'ie dan ook :). Nan == Nan => false ergo, Nan != Nan. Is gewoon IEEE 754 conform :)

[ Voor 5% gewijzigd door PrisonerOfPain op 08-08-2011 11:47 ]


Acties:
  • 0 Henk 'm!

  • YopY
  • Registratie: September 2003
  • Laatst online: 13-07 01:14
Verwijderd schreef op maandag 08 augustus 2011 @ 10:03:
[...]

Ja, want natuuurlijk is iedere PHP dev zo en kunnen ze alleen maar rommel uitbraken. Alsjeblieft.
Dat zeg ik niet.

En mbt de PHP community is ziek, d'r zijn teveel gevallen (zie ook dit onderwerp) over klok / klepel als het aankomt op SQL injectie en dergelijke, mensen die pertinent weigeren om 3rd party libraries te gebruiken met excuses als 'da ken ik nie', en een gigantische hoeveelheid aan slechte tutorials en voorbeelden op internet.

Niet alles, maar wel verdacht veel.

/rant

Acties:
  • 0 Henk 'm!

  • kenneth
  • Registratie: September 2001
  • Niet online

kenneth

achter de duinen

Het mooiste excuus om geen third party te gebruiken is: "er zitten zoveel dingen in die ik toch niet gebruik". Het argument om het wel te gebruiken "wat je wel gebruikt is al honderd keer getest en bewezen" is dan weer geen geldig argument 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.


Acties:
  • 0 Henk 'm!

  • Cartman!
  • Registratie: April 2000
  • Niet online
Mijn ervaring met amateurs is dat ze libraries links laten liggen omdat ze t niet zelf geschreven hebben, een ander kan dat toch nooit beter gemaakt hebben dan jijzelf? Stom voorbeeld: er moest voor een site even full page cache ingebakken worden, dus ik had ff Zend_Cache doorgegeven (een stuk of 10 php-files max denk ik) en er 5 regels code bijgeplaatst, als ie even t mapje had neergezet in z'n docroot en die regels erin had gezet dan zou ie klaar zijn. Toen ik een weekje later vroeg of t gelukt was zei ie dat ie uren bezig was geweest om zijn eigen versie te schrijven en dat dit uiteindelijk wel werkte. Tja, zonde van je tijd dus...

Acties:
  • 0 Henk 'm!

  • Alex)
  • Registratie: Juni 2003
  • Laatst online: 21-08 11:20
Jaahaa, we hebben comments!

C#:
1
2
3
4
5
//Configure log4net
log4net.Config.XmlConfigurator.Configure(/* een of ander pad */);

//Instantiate relations class
relations = new Relations();


|:(

[ Voor 15% gewijzigd door Alex) op 08-08-2011 13:42 ]

We are shaping the future


Acties:
  • 0 Henk 'm!

  • Ram0n
  • Registratie: Maart 2002
  • Laatst online: 03-07 13:05

Ram0n

Bierbrouwende nerd

Het kan ook andersom; mensen die wel libraries gebruiken, maar die vervolgens zelf gaan "verbeteren".

Zo moest ik een tijdje terug kijken naar de migratie van een php-applicatie die gebruik maakte van Zend. Zou een eitje horen te zijn, ware het niet dat men voor zo'n beetje elke standaard database-functie van Zend een eigen versie had geschreven die het vervolgens enkel geschikt maakte voor MySQL. Dan gebrúik je een database-wrapper, en dan ga je handmatig de compatibiliteit alsnog verknallen... En helaas voegden de eigen toevoegingen ook echt niets nuttigs toe |:(

Eigenaar/brouwer Milky Road Brewery


Acties:
  • 0 Henk 'm!

  • Patriot
  • Registratie: December 2004
  • Laatst online: 01-10 12:30

Patriot

Fulltime #whatpulsert

Verwijderd schreef op maandag 08 augustus 2011 @ 10:03:
[...]

Ja, want natuuurlijk is iedere PHP dev zo en kunnen ze alleen maar rommel uitbraken. Alsjeblieft.
Rustig maar, niet direct in de verdediging schieten :+ Ziek is best wel een treffende beschrijving. Als jij ziek bent dan is jouw lichaam ook niet ineens één grote ziektekiem. Nog zat delen van je lichaam die op dat moment nog uitstekend werk verrichten.

Acties:
  • 0 Henk 'm!

  • Davio
  • Registratie: November 2007
  • Laatst online: 06-01 16:46
kenneth schreef op maandag 08 augustus 2011 @ 13:35:
Het mooiste excuus om geen third party te gebruiken is: "er zitten zoveel dingen in die ik toch niet gebruik". Het argument om het wel te gebruiken "wat je wel gebruikt is al honderd keer getest en bewezen" is dan weer geen geldig argument 8)7
Als ik zelf aan de slag ga, dan is dat meestal als oefening voor mezelf.
Ik ben een keer aan een DB-Wrapper begonnen op basis van het Strategy design pattern.

Zo leerde ik in één keer:
- OO in PHP (inclusief interfaces!)
- Toepassen van een design pattern in de praktijk
- DB methods uit de PHP API voor verschillende DB-types

Als ik echter iets op moet leveren, pak ik toch ADODb. :)

Acties:
  • 0 Henk 'm!

  • Orwell
  • Registratie: December 2009
  • Laatst online: 08-09 22:11
.oisyn schreef op maandag 08 augustus 2011 @ 10:57:
Nee, 0 is 0. De enige false die je krijgt is wanneer de float niet echt 0 is. Maar waar het hier om gaat is NaNs, NaN == NaN => false. Let ook op de memset in main(), die alle bits van de float op 1 zet (wat het een NaN maakt)
Ja, vooruit, ik zei het een beetje krom. Je hebt bijvoorbeeld bij het berekenen van bitangents in 3D wel is dat die bitangentvector volgens denklogica bijvoorbeeld (0,0,1) wordt, waar je voor doeleind X dan if(bitangent.x == 0.0f) zou doen.

Werkt dus niet, omdat dan toch toevallig er (0.0000013534534,0.000000012123,1) uit het cross product van de tangent en normal zou komen. Dan kan je dus gaan controleren op if(bitangent.x < 1e-6) en dat soort spul.

En uh, wat is er zo NaN aan een double waar (-1,-1,-1,-1,-1,-1,-1,-1) in binary in staat? Da's gewoon 8(10000001). Zal vast een vage waarde zijn, maar NaN niet lijkt me.

Edit.

-1.#QNAN0.

Epic.

Acties:
  • 0 Henk 'm!

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

.oisyn

Moderator Devschuur®

Demotivational Speaker

Orwell schreef op maandag 08 augustus 2011 @ 16:47:
En uh, wat is er zo NaN aan een double waar (-1,-1,-1,-1,-1,-1,-1,-1) in binary in staat? Da's gewoon 8(10000001). Zal vast een vage waarde zijn, maar NaN niet lijkt me.
Een char met de waarde -1 in two's complement is 11111111. Ergo, alle bits in de double staan op 1. De IEE-754 regels zeggen dat als de exponent uit allemaal enen bestaat, en de bits in de mantissa zijn niet allemaal 0, dan is dat een NaN. Vervolgens bepaalt de most significant bit in de mantissa of het een quiet of een signaling NaN is (ergo, het verschil tussen gewoon doorrekenen en het gooien van een exception)

[ Voor 6% gewijzigd door .oisyn op 08-08-2011 17:10 ]

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


Acties:
  • 0 Henk 'm!

  • Matis
  • Registratie: Januari 2007
  • Laatst online: 21:01

Matis

Rubber Rocket

Oeps, moest in de pleurhoek!

[ Voor 86% gewijzigd door Matis op 08-08-2011 17:24 ]

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


Acties:
  • 0 Henk 'm!

  • Orwell
  • Registratie: December 2009
  • Laatst online: 08-09 22:11
.oisyn schreef op maandag 08 augustus 2011 @ 17:07:
Een char met de waarde -1 in two's complement is 11111111. Ergo, alle bits in de double staan op 1. De IEE-754 regels zeggen dat als de exponent uit allemaal enen bestaat, en de bits in de mantissa zijn niet allemaal 0, dan is dat een NaN. Vervolgens bepaalt de most significant bit in de mantissa of het een quiet of een signaling NaN is (ergo, het verschil tussen gewoon doorrekenen en het gooien van een exception)
Als ik het goed vat is dat two's complement voor +1 -> -1 alle bits flippen en optellen, decimaal beter bekend als signed max min waarde en flip sign bit. Weer wat geleerd. Dan is het dus inderdaad 1.

Uhm dus het maximum wat de float/double aan kan geven (>0^(2^n)) is dus NaN? Aha.

Acties:
  • 0 Henk 'm!

  • PrisonerOfPain
  • Registratie: Januari 2003
  • Laatst online: 26-05 17:08
Orwell schreef op maandag 08 augustus 2011 @ 17:29:
Uhm dus het maximum wat de float/double aan kan geven (>0^(2^n)) is dus NaN? Aha.
Nee dat is +Inf. Het grootste geldige normale nummer is (2-2-23) × 2127 (ongeveer 3.4×1038). NaN betekend Not A Number ergo, het kan onmogelijk het grootste nummer zijn.

[ Voor 10% gewijzigd door PrisonerOfPain op 08-08-2011 18:15 ]


Acties:
  • 0 Henk 'm!

  • NickThissen
  • Registratie: November 2007
  • Laatst online: 27-09 13:36
Bah... Moest vandaag gebruik maken van een oud project dat nog een oude manier om naar de database te connecten gebruikt (een framework er omheen gebouwd zeg maar). Heeft me 4 uur gekost om erachter te komen waarom mijn redelijk simpele query een lege tabel terug gaf, terwjil hij in SQL Studio gewoon wel data gaf. Bleek uiteindelijk dat dit framework onder bepaalde omstandigheden automatisch een 'where deleted_cd = 0' in the where clause zet (elk record heeft in principe een deleted_cd). Toevallig moest ik juist de verwijderde records hebben, dus ik zocht op deleted_cd = 1, waardoor de query uiteindelijk uitkwam op "select ... from ... where deleted_cd = 0 and deleted_cd = 1". Niks dat erop wijst dat de query vanzelf gewijzigd wordt, nergens een debug statement met de echte query die uitgevoerd wordt, etc. De programmeur die dit framework geschreven had werkt hier al jaren niet meer, ik had zelfs geen source van het framework meer, moest de DLL uiteindelijk gaan decompileren om erachter te komen wat er nou precies uitgevoerd werd...

Mijn iRacing profiel

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