Toon posts:

[alg] slechtste prog voorbeelden. OverzichtVolgende deelLaatste deel

Dit topic is onderdeel van een reeks. Ga naar het meest recente topic in deze reeks.

Pagina: 1 2 3 ... 11 Laatste
Acties:
  • 17.827 views sinds 30-01-2008

  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 27-05 04:47
De afgelopen paar maanden heb ik meegeholpen met een oud delphi/c systeem. Hierbij ben ik een enorme lading wazige constructies tegen gekomen.

oa:

code:
1
2
3
4
if blaat then begin
end else begin
     doe iets.
end;


Dit is door een stagaire gemaakt die niet wist (serieus, heb hem gevraagd) hoe je de inverse van een conditie kon nemen. Ik kan op dit moment even niet op meer foute voorbeelden komen, maar wat zijn de meest ranzige constructies die jullie hebben gezien?

  • momania
  • Registratie: Mei 2000
  • Laatst online: 07:37

momania

iPhone 30! Bam!

Ik heb een keer een contructie gezien waarin een programma zo enorm traag wer bij het uitvoeren van een bepaald stuk. Ik zal even proberen uit te leggen hoe het in elkaar zat.

Je zat in een methode met een vrij grote String die op van alles en nog wat gecontroleerd werd.
Nu werd die String uitgezet in een Character Array (simpel; 1 methode), maar toen:

Er werd een for-loop gemaakt van die Character Array en bij iedere Character werd de orginele String weer in een Character Array uitgezet en daar werd ook weer een for-loop van gemaakt.
Ofwel: er zaten dubbele loops in |:(

En dan ook nog 3 keer achter elkaar in dezelfde methode.
Ik zei nog: "Gek hè, dat het zo traag is"? :D

Neem je whisky mee, is het te weinig... *zucht*


  • Mithrandir
  • Registratie: Januari 2001
  • Laatst online: 05-05 23:16
Tsja...

Zoveel eigenlijk. Vooral mijn eigen ranzige progwerk, daar wil nog wel eens iets erg vies inzitten.
5 funcites die elkaar achter elkaar aanroepen, die ook in 1 hadden kunnen staan, maar nu blaat1 tm blaat5 heten enzo :o

  • Glimi
  • Registratie: Augustus 2000
  • Niet online

Glimi

Designer Drugs

(overleden)
Alarmnummer schreef op 29 maart 2003 @ 10:55:

Dit is door een stagaire gemaakt die niet wist (serieus, heb hem gevraagd) hoe je de inverse van een conditie kon nemen. Ik kan op dit moment even niet op meer foute voorbeelden komen, maar wat zijn de meest ranzige constructies die jullie hebben gezien?

O, van jou weet ik er nog wel een paar hoor ;)
Wat dacht je van schrijven in dummy geheugen, omdat de pointers dan niet in 'belangrijk geheugen' schrijven ;)
Of als het programma crashed, de boel weer opstarten dmv de exception handler ;)

Maar ik zal even diep in het geheugen moeten graven, maar er komt zo nog wel wat bij :) Zie genoeg eerste jaars hier >:)

  • Annie
  • Registratie: Juni 1999
  • Laatst online: 25-11-2021

Annie

amateur megalomaan

Ja, leuk, laten we andere mensen publiekelijk voor lul zetten. En ik maar denken dat de tijden van de schandpaal al lang voorbij waren.

*zucht*

Today's subliminal thought is:


  • mkleinman
  • Registratie: Oktober 2001
  • Laatst online: 22:20

mkleinman

4.5kWp, 8.4GJ Zb/CV, WTW, ELGA

Meest ranzige wat ik ben tegengekomen was op stage.

Daar had iemand dit gedaan in een Delphi (1.x) proggie ( ik ben inmiddels plsql gewent van Oracle dus kan zijn dat mijn syntax iets off is :) )

FOR i IN 1..2000
BEGIN

IF blaat > blaat2 THEN
i := i * blaat;
END IF;

END;

ik mocht daarna deze code gaan verbouwen naar Delphi 2.. errug grappig :D

Duurzame nerd. Veel comfort en weinig verbruiken. Zuinig aan doen voor de toekomst.


  • supakeen
  • Registratie: December 2000
  • Laatst online: 10-08-2022
Annie schreef op 29 maart 2003 @ 11:27:
Ja, leuk, laten we andere mensen publiekelijk voor lul zetten. En ik maar denken dat de tijden van de schandpaal al lang voorbij waren.

*zucht*
Ehm, hij heeft het over een stagaire en dan weet je toch niet over wie hij het heeft, hij kan het net zo goed uit zijn duim hebben gezogen. Ik zie je probleem niet :)

  • EXX
  • Registratie: Juni 2001
  • Laatst online: 28-05 23:46

EXX

EXtended eXchange

Het toppunt vind ik toch nog altijd assembly programma's die zichzelf modificeren door opcodes in het programma te wijzigen. Werd heel vroeger (toen geheugen heel krap was) wel eens gedaan, maar slecter kan het eigenlijk niet wat netjes programmeren betreft.

For it is the doom of men that they forget...           Huidige en vroegere hardware specs         The Z80 is still alive!


  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 27-05 04:47
Glimi schreef op 29 March 2003 @ 11:19:
O, van jou weet ik er nog wel een paar hoor ;)
Wat dacht je van schrijven in dummy geheugen, omdat de pointers dan niet in 'belangrijk geheugen' schrijven ;)
Of als het programma crashed, de boel weer opstarten dmv de exception handler ;)
Oja, dat zijn idd de betere bugfixes :D *schaamt zichzelf diep* :P

en natuurlijk nog mijn:

code:
1
2
3
4
try 
    freemem(p)
except 
end;


>:)

Wat je niet ziet, dat bestaat niet :D
Ja, leuk, laten we andere mensen publiekelijk voor lul zetten. En ik maar denken dat de tijden van de schandpaal al lang voorbij waren.
Vooruitgang is niet altijd vooruitgang ;) En zie verder mijn ondertitel.

[Voor 15% gewijzigd door Alarmnummer op 29-03-2003 11:35]


  • Tomatoman
  • Registratie: November 2000
  • Nu online

Tomatoman

Fulltime prutser

Wat ook errug slecht is, zijn programma's die gewijzigde settings terugschrijven in de executable zelf 'want dan heb je maar 1 bestand nodig'. Altijd goed om de virusscanner nerveus te maken :)

Een goede grap mag vrienden kosten.


  • Erkens
  • Registratie: December 2001
  • Niet online

Erkens

Fotograaf / Backend developer

Annie schreef op 29 March 2003 @ 11:27:
Ja, leuk, laten we andere mensen publiekelijk voor lul zetten. En ik maar denken dat de tijden van de schandpaal al lang voorbij waren.

*zucht*
mja, men leert er wel van en ik denk dat dat ook ongeveer de bedoeling van dit topic is, dat soort ranzige code voorkomen ;)

Zelf vergeet ik altijd exeption handling, behalve als de compiler begint te zeuren

code:
1
2
3
try{
   code;
}catch(Exception e){}


enzo, of gewoon een System.exit(1) :X

  • Glimi
  • Registratie: Augustus 2000
  • Niet online

Glimi

Designer Drugs

(overleden)
EXX schreef op 29 maart 2003 @ 11:29:
Het toppunt vind ik toch nog altijd assembly programma's die zichzelf modificeren door opcodes in het programma te wijzigen. Werd heel vroeger (toen geheugen heel krap was) wel eens gedaan, maar slecter kan het eigenlijk niet wat netjes programmeren betreft.

Dat vind ik een hele andere inslag. Die mensen begrepen wel wat ze deden :) dat het totaal niet te onderhouden was, was een andere zaak ;)
We bespreken nu een beetje 'anti-patterns', wat vaak gedaan wordt door mensen die 'niet beter weten' :)
Annie schreef op 29 maart 2003 @ 11:27:
Ja, leuk, laten we andere mensen publiekelijk voor lul zetten. En ik maar denken dat de tijden van de schandpaal al lang voorbij waren.

*zucht*
Zie boven ;) Het gaat hier imho over anti-patterns :) Ik hoef ook niet te horen 'Bla codeert kut!!, kijk!!!', maar eerder dat we gewoon wazige constructies ( anti-patterns ) zien binnen andere programma's welke we aanstippen :) Dat dat vervolgens ook grappig kan zijn...mjah ;)

Owjah en mijn wijzen op Alarmnummer ging over zijn debugwerk in de delphi app, waar hij me vaak op de hoogte heeft gesteld van vage constructs in die app :) Stel je die app ongeveer voor als een Delphi applicatie gemaakt door iemand die nog helemaal in C zit. Dus objecten als het _echt_ moet en een hoop magic numbers :)

  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 27-05 04:47
Wat ik verder enorm vervelend vind is als ze bij een gui builder, de componenten niet gaan renamen, dus edit1 tm 25. Je moet dan iedere keer gaan terug zoeken wat dat component nog maar deed. Verder zijn magic numbers ook een drama. Wtf is colom9?? ohh.. dat is voornaam, aha.. en dat hoort weer bij edit6 |:(

En natuurlijk gui/domein/data laag in een. Eigelijk geen datastructuren, maar alles adhoc gaan oplossen. Ik ben de afgelopen week een paar keer opgeroepen (had vrij) om allerlei kleine fixes erin te plaatsen. Gewoonlijk zijn kleine wijzigingen eenvoudig door te voeren, maar in dat systeem is het een drama. Het kan namelijk zijn dat je door 1 ding te fixen, 2 dingen stuk maakt.

En verder ben ik zelf ook niet heilig. Een fout die ik zelf heb gemaakt (en die veel andere proggers nog steeds maken) is het niet afmelden van listeners. Hierdoor kan je memory leaks krijgen.

[edit]
Natuurlijk moet ik structuren van een vaste grote niet vergeten. In het systeem worden buffers op een vaste groote ingesteld ongeacht de lengte van de invoer. Dit heeft in het begin voor gigantische veel problemen gezorgt. Totdat ik op het slimme *ahum* idee kwam om bij de getmem functie gewoon 10 keer zoveel geheugen terug te sturen -> systeem crashte meteen een stuk minder vaak :D

Ik kies zelf altijd voor dynamische structuren. Gelukkig gaat dit in java ook vrij makkelijk door het bestaan van bv arraylist en vector. In delphi gaat dit vaak een stuk onhandiger omdat domweg de biblotheek, in dat opzicht, een stuk minder is.

[Voor 41% gewijzigd door Alarmnummer op 29-03-2003 12:10]


  • hobbit_be
  • Registratie: November 2002
  • Laatst online: 29-06-2020
gisteren nog een dit tegengekomen

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
if (someTrueStatement)
{
   a = 5;
   if (aSomeotherstatment)
   {
       a= 5;
   }
  else  
  {
     a =5;
  }
}
else
{
   a=5;
}


je zou denken zal wel een grapje zijn? nee hoor de persoon in kwestie wou er zekr van zijn dat a = 5 was ;)

Anoniem: 35432

hobbit_be schreef op 29 maart 2003 @ 12:10:
gisteren nog een dit tegengekomen

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
if (someTrueStatement)
{
   a = 5;
   if (aSomeotherstatment)
   {
       a= 5;
   }
  else  
  {
     a =5;
  }
}
else
{
   a=5;
}


je zou denken zal wel een grapje zijn? nee hoor de persoon in kwestie wou er zekr van zijn dat a = 5 was ;)
lol. die vind ik wel heel erg schattig :).. Ik bedoel.. Je kan toch duidelijk zien dat dit totaal overbodig is/?? MAargoed.. Zo is iedereen begonnen ?? ? ? ? ? :P

  • alienfruit
  • Registratie: Maart 2003
  • Laatst online: 04:49

alienfruit

the alien you never expected

Ja. Ik heb laatst een web applicatie gezien in JSP die geheel niet gecommenteerd was :(
Okay te veel commentaar in je code (elke regel biijv.) is natuurlijk ook niet, maar wat vind ik wel fijn als buitenstaander dat je weet waarom hij het zo doet etc. Als je fouten moet verbeteren :)

  • Erkens
  • Registratie: December 2001
  • Niet online

Erkens

Fotograaf / Backend developer

alienfruit schreef op 29 March 2003 @ 12:26:
Ja. Ik heb laatst een web applicatie gezien in JSP die geheel niet gecommenteerd was :(
Okay te veel commentaar in je code (elke regel biijv.) is natuurlijk ook niet, maar wat vind ik wel fijn als buitenstaander dat je weet waarom hij het zo doet etc. Als je fouten moet verbeteren :)
mja dat is nog niets :X
tijdens mijn vorige project @ school, hadden een paar mede programmeurs leuk voor elke pagina een jsp file gemaakt met iedere keer weer hetzelfde erin op een paar kleine stukjes na |:(
gebruik dan javabeans/servlets/includes oid :/

maar het is wel goedgekeurd :Y)

  • D2k
  • Registratie: Januari 2001
  • Laatst online: 26-03 16:22
het slechtste dat ik ooit gezien heb hier? wandel eens door de slotjes die ik gezet heb heen :D er zijn regelmatig mensen die een lel code produceren zonder begin/eind en logica.

Doet iets met Cloud (MS/IBM)


  • whoami
  • Registratie: December 2000
  • Laatst online: 06:14
Hmm, ik heb ooit nog volgende code moeten schrijven.
't Was in i4GL (Informix taal), en die mensen werkten daar op die manier, en ik moest ook op die manier coden:

code:
1
2
3
4
5
6
LABEL l_1:
  PRINT "naam:" 
  INPUT name
  IF name = "" THEN
     GOTO l_1
  END


8)7
Toen ik zei dat je dergelijke structuren beter met een while-lus kon oplossen, vonden ze dat niet goed. Hun goto was nl. efficienter volgens hun.

Ze hadden daar ook een relationele database, maar er lagen geen relaties of foreign key constraints tussen de tables. :+

https://fgheysels.github.io/


Anoniem: 50825

Visual Basic .NET:
1
2
3
4
5
6
Try
   If rowKMD.Code = "" Or IsDBNull(rowKMD.Code) Then
      Throw New Exception("Code is een verplicht veld.")
   End If
Catch
End Try


Kies voor een Try..Catch óf voor een If..Endif, maar allebei is een beetje dubbelop in dit geval.


Visual Basic .NET:
1
2
3
4
5
6
7
8
Try
   dlKMD.Opslaan(dataTucht, Connectie)
Catch ex As SqlClient.SqlException
   Select Case ex.Number
      Case 2627
         Throw New Exception("Dit bestaat al. Probeer het nog eens.")
      End Select
End Try



Waarom nog een keer een Select Case als er blijkbaar maar 1 exception optreedt?!

Anoniem: 50825

whoami schreef op 29 March 2003 @ 12:32:
Ze hadden daar ook een relationele database, maar er lagen geen relaties of foreign key constraints tussen de tables. :+
[mierenneuk modus]
Je kan constraints ook afvangen in je DataLaag of BusinessLogicaLaag, zodat je ze niet hoeft in te stellen in de DB. :P
[/mierenneuk modus]

  • whoami
  • Registratie: December 2000
  • Laatst online: 06:14
Anoniem: 50825 schreef op 29 March 2003 @ 12:36:
[...]


[mierenneuk modus]
Je kan constraints ook afvangen in je DataLaag of BusinessLogicaLaag, zodat je ze niet hoeft in te stellen in de DB. :P
[/mierenneuk modus]


:+
Lagen .... Waar spreek jij nu over.
Die mensen werkten nog met goto's, hadden geen relaties in hun databank, laat staan dat ze al over multi-tiered development hadden gehoord.

https://fgheysels.github.io/


Anoniem: 50825

Ok, jij wint :D

  • alienfruit
  • Registratie: Maart 2003
  • Laatst online: 04:49

alienfruit

the alien you never expected

Bij een editor heb ik dit wel eens gezien ook heel leuk ;)

code:
1
2
3
4
5
6
  while(true) do 
  begin
     if ( ... ) then goto _newline:
  end;
 label _newline:
    calculateLineDrawInfo( ... );

  • SuperRembo
  • Registratie: Juni 2000
  • Laatst online: 27-05 14:16
Hoe sla je minimum en maximum waarden die toegestaan zijn op voor een aantal kolommen met meetwaarden (+/- 20-30 kolommen)? Heel simpel, je maakt in je tabel 'config' 3 velden

veld CHAR(100) NULL,
min CHAR(100) NULL,
max CHAR(100) NULL,

en dan zet je de namen van de kolommen (gescheiden door komma's) in 'veld', de minimum waarden gescheiden door komma's in 'min', idem voor de maximum waarden.

| Toen / Nu


  • Varienaja
  • Registratie: Februari 2001
  • Laatst online: 05:46

Varienaja

Wie dit leest is gek.

Eentje van mezelf:

code:
1
2
3
4
5
while i<Max do begin
   doe allerlei dingen
   fix nog wat meer
   //en vergeet vervolgens inc(i)
end;

Standaard heb ik altijd de eerste keer een oneindige loop in m'n code. :/

Onderstaand zie ik vaak bij beginners, hoewel sommige gevorderden en experts er soms ook bij zweren:
code:
1
2
3
4
5
6
7
if een_of_andere_boolean=true then begin
   Result:=True;
end else begin
   Result:=False;
end;

// Ik zou doen: Result:=een_of_andere_boolean


De grootste klapper kwam ik een paar weken geleden tegen in de code van iemand anders:
code:
1
2
3
4
5
6
maak een of andere lijst
//we hebben nu het hoogste item in de lijst nodig
//daarvoor sorteren we eerst de lijst
lijst:=quicksort(lijst);
//we nemen nu het hoogste elemene
result:=lijst[lijst.count-1]

Niet echt efficiënt :-)

En zelf misbruik ik altijd allerlei pointers en data-attributen van listviews etc om integer-waarden in op te slaan. Ik weet niet of dat echt heel vies is, ik heb het idee van wel >:)

Gras groeit niet door eraan te trekken.


  • XTerm
  • Registratie: Juli 2001
  • Laatst online: 03-05 16:16
Dit stond overlaast op /. en is me bijgebleven :P
code:
1
2
3
gets(userEntry);
     if (memcmp(userEntry, correctPassword, strlen(userEntry)) != 0)
         return (BAD_PASSWORD);

  • Varienaja
  • Registratie: Februari 2001
  • Laatst online: 05:46

Varienaja

Wie dit leest is gek.

Ohja.

Laatst kwam ik een applicatie tegen die iets niet goed deed. Het bleek dat een bepaald component op het form een query in zich had die het niet deed. Ik kon het form echter niet openen, omdat die query design-time al active was. Het form gaf een foutmelding direct bij het openen.

Uiteindelijk in text-mode het form aangepast. Phew... dat was ook weer opgelost.

[Onderhand heb ik een flinke hekel gekregen aan dingen die design-time al worden gedaan.]

Gras groeit niet door eraan te trekken.


  • MAZZA
  • Registratie: Januari 2000
  • Laatst online: 29-05 18:14

MAZZA

Barbie is er weer!

In PHP:

Een select op de database, vervolgens de rows tellen. Dan dit aantal opslaan in een variabele $count. $count++ En daarna een INSERT query op diezelfde database om een oplopend id te krijgen met de waarde uit $count :)

[Voor 3% gewijzigd door MAZZA op 29-03-2003 13:14]


  • whoami
  • Registratie: December 2000
  • Laatst online: 06:14
Varienaja schreef op 29 March 2003 @ 12:58:
Ohja.

Laatst kwam ik een applicatie tegen die iets niet goed deed. Het bleek dat een bepaald component op het form een query in zich had die het niet deed. Ik kon het form echter niet openen, omdat die query design-time al active was. Het form gaf een foutmelding direct bij het openen.

Uiteindelijk in text-mode het form aangepast. Phew... dat was ook weer opgelost.

[Onderhand heb ik een flinke hekel gekregen aan dingen die design-time al worden gedaan.]


Dat is gewoon een slordigheid van de programmeur. Als je iets released moet je -imho- toch zeker nagaan dat bv. al je queries at design time gesloten zijn.

https://fgheysels.github.io/


Anoniem: 48679

MAZZA schreef op 29 maart 2003 @ 13:13:
In PHP:

Een select op de database, vervolgens de rows tellen. Dan dit aantal opslaan in een variabele $count. $count++ En daarna een INSERT query op diezelfde database om een oplopend id te krijgen met de waarde uit $count :)
* Anoniem: 48679 lacht groen :S

niet ik, maar mijn docent VB heeft deze lap code in zijn handboek staan:
Data1.recordsource = "select * from customers order by custno"
Data1.refresh
Data1.recordset.movelast
ncustno = Data1.Recordset.custno +1
Data1.recordset.addnew
Text1 = ncustno
nu denk je waarschijnlijk dat dat uit didactisch oogpunt gedaan is, maar nee hoor, diekerel is gewoon oer, maar dan ook oerstom!!
We krijgen er dus VB van (ik ken nog steeds geen reet VB of't scheelt niet veel), en we moeten project doen voor bedrijf, dus gingen we vragen hoe we dynamisch textfields konden maken in VB, dankzij dit forum is het gelukt, want hijzelf beweerde pertinent dat het niet kon :S
elke les zie'k m'n diploma dalen in waarde...zielig

  • LauPro
  • Registratie: Augustus 2001
  • Laatst online: 25-05 15:39

LauPro

Prof Mierenneuke®

Houd op over docenten VB :X, op mijn vorige toets moest ik een bepaalde oefening uitvoeren met het volgende statement: Een Do-Went lus
offtopic:
En ik ze nog vertellen dat dat helemaal niet kon, nou dat moest ik dan maar gaan melden bij degene die de toetsen had gemaakt. Donder dan maar op dacht ik toen, moet ik een beetje jullie wijzen op dit soort dingen :r.

Inkoopacties - HENK terug! - Megabit
It is a war here, so be a general!


  • Apache
  • Registratie: Juli 2000
  • Laatst online: 26-05 12:26

Apache

amateur software devver

Ik heb zo'n achterlijke leerkracht ASP & Java.

Bij Java zagen we sleep() ivm beweging op de applet om het "flikkeren" tegen te gaan. En hij verlaagt zowat z'n aantal ms en begint wat te lullen over het berekenen van de lengte van de sleep om het echt helemaal perfect te krijgen/

Goed ik vraag hem dus de formule of hoe hij het zou berekenen, en of dit afhankelijk was van wat getoond werd en de grote enz.

Mja hij lult er wat rond en appletheight en appletwidth. Dan de vraag om hem uit z'n lijden te verlossen: "heeft dit voordelen tov double buffering want waarom zou je dat anders niet gebruiken." (ik wist natuurlijk dat het zo NIET moest).

Z'n mond valt een beetje open en dan: "double buffering, wasda?"

en zo is het elke les wel iets. Probleem is dat hij zich erg belangrijk en superieur voelt met z'n: "ik heb al een diploma behaald en jullie niet dus moeten jullie jezelf nog bewijzen" attitude.

Gelukkig is hij systeembeheerder op school en gaan we hem lekker kloten door hotmail ip's te arp poisenen >:)

If it ain't broken it doesn't have enough features


  • Tomatoman
  • Registratie: November 2000
  • Nu online

Tomatoman

Fulltime prutser

Apache schreef op 29 March 2003 @ 14:05:
Mja hij lult er wat rond en appletheight en appletwidth. Dan de vraag om hem uit z'n lijden te verlossen: "heeft dit voordelen tov double buffering want waarom zou je dat anders niet gebruiken."
Heel subtiel :)
Gelukkig is hij systeembeheerder op school en gaan we hem lekker kloten door hotmail ip's te arp poisenen >:)
Helemaal niet subtiel :|

Een goede grap mag vrienden kosten.


  • shades
  • Registratie: September 2001
  • Laatst online: 15-05 19:00

shades

huh ?

Varienaja schreef op 29 March 2003 @ 12:52:
Eentje van mezelf:

code:
1
2
3
4
5
while i<Max do begin
   doe allerlei dingen
   fix nog wat meer
   //en vergeet vervolgens inc(i)
end;

Standaard heb ik altijd de eerste keer een oneindige loop in m'n code. :/
hehe, dit klinkt bekend. maar dan als ik een tabel moet uitpoepen van de inhoud van een recordsset
code:
1
2
3
do while not rs.eof
  rs.movenext <--- deze vergeten :D
loop

https://k1600gt.nl


Anoniem: 48679

héhé, en nog steeds kan ik winnen
van dezelfde docent heb ik JAVA, gehad dit jaar (vorig jaar gleukkig van iemand anders), en hij wou appletsleren maken, een scrollapplet om precies te zien.
werkwijze:
loop, en bij elke loop plaats je een spatie voor je string, en doe je een repaint();
en om te weten van waar je moet beginnen, moet je het aantal karakters van die string met 7 vermenigvuldigen, en zoveel onder 0(x-as) moet je beginnen scrollen, dan start hij uit beeld.
FontMetrics leken hem te zwaar :D
en de coordinaat van de drawString() methode leken ook iets te moeilijk om mee te werken :S
(en die kerel waagt het dan ngo commentaar te geven op ons werk)

van wat ik hoor zijn jullie leraren nog redelijk competent, echt waar.....

(sorry voor het offtopic zijn, maar ik moet een project in VB doen, een taal die'k natuurlijk nooit deftig geleerd heb omwille van incompetente docent, en dan zijn die VB foutmeldingen ook nog eens zo overduidelijk :S)

  • drm
  • Registratie: Februari 2001
  • Laatst online: 26-05 17:59

drm

f0pc0dert

Ik wil er even voor waarschuwen dat dit topic niet uitdraait op allerlei rants naar leraren en ideeen over hoe stom de leraar wel niet kan zijn. Leuke voorbeeldjes code is prima, maar hier posten om mensen belachelijk te maken is een foute insteek. Niet doen dus ;)

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz
[ melp.nl | twitter ]


  • MSalters
  • Registratie: Juni 2001
  • Laatst online: 26-05 16:18
Deze blijft ook mooi: (uit een taal met echte booleans)
code:
1
2
3
4
5
6
7
8
9
switch ( aBool )
{
    case TRUE:
        do_dit();
    case FALSE:
        do_dat();
    default:
        doe_iets_anders();
}

Man hopes. Genius creates. Ralph Waldo Emerson
Never worry about theory as long as the machinery does what it's supposed to do. R. A. Heinlein


Anoniem: 48679

php:
$string+=$anderestring

nadat je even JAVA gedaan hebt...dan zit je wel even te zoeken hoor, tot je beseft dat je een .= nodig hebt....
(fout van mezelve)

of, als er items gewist worden in MySQL, blijft die ID vrij, dan heb je mensen die code schrijven om die gaten te vinden, en daar hun inserts te doen, en als er geen gaten zijn gebruiken ze die optelmethode die eerder gepost was.

[Voor 42% gewijzigd door Anoniem: 48679 op 29-03-2003 15:41]


  • Jaap-Jan
  • Registratie: Februari 2001
  • Laatst online: 00:22

Jaap-Jan

Geen IPv6- ready check meer :(

Hmm, in de ATARI- BASIC tijd (mijn vader werkte ook zo) heb ik dit weleens gebruikt:
code:
1
2
for i is 1 to (een of ander reusachtig getal)
next i
En dit was ervoor om pauzes in te bouwen. Toen ik dit weer probeerde in QBASIC met een 486 werkte het ineens een stuk minder >:).

| Last.fm | "Mr Bent liked counting. You could trust numbers, except perhaps for pi, but he was working on that in his spare time and it was bound to give in sooner or later." -Terry Pratchett


  • Soultaker
  • Registratie: September 2000
  • Laatst online: 26-05 00:24
Mja, ik deed dat in MSX BASIC ook altijd. Er was volgens mij ook geen alternatief voor wachttijden onder de seconde en aangezien al die machines dezelfde interpreter en kloksnelheid hadden, werkte 't in de praktijk wel goed.

'Reusachtig' is trouwens overdreven; enkele duizenden iteraties was al voldoende voor een seconde vertraging. :)

[Voor 4% gewijzigd door Soultaker op 29-03-2003 16:14]


  • Anoniem: 25556
  • Registratie: April 2001
  • Niet online
Het kan ook om te janken zijn.. ik zit op m'n werk met een heleboel maatwerkstukken waarvan de kwaliteit echt naadje is.. Geleverd door een van de grootste bedrijven in NL op dat gebied..

voorbeeld:

Delphi:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
try
    sIni := TIniFile.Create('C:\ini.ini');
    if sIni.SectionExists('EXPORT_LOCATIE') then
    begin
      sLijst := TStringList.Create;
      sIni.ReadSectionValues('EXPORT_LOCATIE',sLijst);
      sDirectory := Copy(sLijst[0],7,length(sLijst[0])-6);
    end
    else
    begin
       MessageDlg('Het ini bestand is niet goed. Neem contact op met uw systeembeheerder', mtError, [mbOK], 0);
       Raise Exception.Create('');
     end;
   except
     MessageDlg('Het ini bestand is niet goed. Neem contact op met uw systeembeheerder', mtError, [mbOK], 0);
     Raise Exception.Create('');
   end;


Dat is toch om te janken, zeker als je ziet dat je hier EUR 80 p/u voor betaald..

[Voor 6% gewijzigd door moto-moi op 10-12-2005 19:15]


  • Soultaker
  • Registratie: September 2000
  • Laatst online: 26-05 00:24
Anoniem: 25556 schreef op 29 March 2003 @ 16:14:
Dat is toch om te janken, zeker als je ziet dat je hier EUR 80 p/u voor betaald..
Flame:
Ja, inderdaad jammer dat je 80 euro per uur betaald en dan Delphi code opgeleverd krijgt. })

  • EfBe
  • Registratie: Januari 2000
  • Niet online
Een ranzige code generator, die nog geld kost ook, produceerde dit:

C#:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
//************************************************** 
// Begin of function: Update Customer 
//************************************************** 
    public double Update_Customer(string idCustomer, string txtCustomer) 
    { 
      string strSql;
      strSql = "UPDATE Customer Set idCustomer = '" + idCustomer.ToString() + 
"', txtCustomer = '" + txtCustomer.ToString() + "' WHERE idCustomer = '" + 
idCustomer.ToString() + "'";
      try
      {
        clsSQLCommand dbClass = new clsSQLCommand();
        return dbClass.UpdateData(strSql); 
      }
      catch (Exception e)
      {
        throw e;
      }
    }
//************************************************** 
// End of function: Update Customer 
//************************************************** 


De generator: http://www.invenmanager.com/codegenerator/default.aspx

Alle sql is vulnerable, je kunt sql injecteren in de queries. Magistraal :) (idCustomer.ToString() kan bv zijn: ';delete from table --
en andere grappen :) )

Dit soort mallotigheid:
SQL:
1
2
3
4
5
SELECT * FROM Foo
WHERE Bar IN
( SELECT Bar FROM Foo2)
OR
( SELECT Bar FROM Foo3)

Die OR zorgt voor een performance nekslag, terwijl dit veel sneller kan.

In 3GL's heb je ook veel leuke dingen. Sommige programmeurs zetten routines niet goed op. Die bouwen een routine die alleen dingen mag doen wanneer een zekere conditie waar is. Ipv bij aanvang in de routine te testen of de conditie geldt en zoniet meteen terug te keren, nemen ze die conditie bij elk blok code mee, met een veelvoud aan ifs en een zwierige indent-tree in de sourcecode als gevolg.

In de Linux kernel sourcecode gebruiken ze een C-macro om single line if / else clauses toch van '{}' te voorzien, wat nuttig is bij andere macro's.
voorbeeld:
C:
1
2
3
4
if(foo==bar)
     DOMACRO

/* other code */


Als DOMACRO nu eens 2 lines bevat, dan zou je krijgen:
C:
1
2
3
4
5
if(foo==bar)
     line1
     line2

/*other code*/

Echter, line2 wordt altijd uitgevoerd. Om dit te voorkomen hebben ze een C macro in elkaar geprutst die altijd '{}' om een macro heen plaatst.

Dit is totaal overbodig, als je bedenkt dat je dit soort hoopla-hackwerk niet nodig hebt wanneer je altijd '{}' om je if / else clause blocks zet, dus:
C:
1
2
3
4
if(foo==bar)
{
     DOMACRO
}

Iets 10 keer te moeilijk doen en dan nog met je ogen dicht.

Verder zijn er natuurlijk legio voorbeelden van mensen die denken dat wanneer ze met een OO taal werken, ook alles tot in de kleinste details in classes moeten stoppen, waarbij je dus veel regels code kwijt bent aan het heen en weer sjoelen van pointers naar data tussen objects, terwijl een functie in een procedurele taal dit veel efficienter kan oplossen.

Creator of: LLBLGen Pro | Camera mods for games
Photography portfolio: https://fransbouma.com


  • Soultaker
  • Registratie: September 2000
  • Laatst online: 26-05 00:24
Nog zoiets; ik moest onlangs de volgende Java code (van een wordcount-variant) herschrijven naar een versie die met een StreamTokenizer werkt:
Java:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
BufferedReader in = new BufferedReader(new FileReader(f));

int ch;
boolean inWhiteSpace = true;
while ((ch = in.read()) != -1) {
    nChars++; 
    if (Character.isWhitespace((char)ch)) {
        inWhiteSpace = true;
        if (ch == '\n') 
            nLines++;
    } else if (inWhiteSpace) { // previous char was whitespace
        nWords++;
        inWhiteSpace = false;
    }
}


Maar nu heb ik geen idee hoe ik de werking van die stomme StreamTokenizer in moet stellen (by default splitst die ook op leestekens enzo), dus heb ik 't maar zo opgelost:

Java:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
// Read number of characters
FileInputStream fis = new FileInputStream(f);
chars = fis.available();
fis.close();

// Create a StreamTokenizer
StreamTokenizer tokens =
    new StreamTokenizer(new BufferedReader(new FileReader(f)));

// Stupid way of initializizing the ST
tokens.resetSyntax();
for(int n = Character.MIN_VALUE; n < Character.MAX_VALUE; ++n)
    if(Character.isWhitespace((char)n))
        tokens.whitespaceChars(n, n);
    else
        tokens.wordChars(n, n);
tokens.eolIsSignificant(true);

// Iterate through all tokens        
int ttype;
while((ttype = tokens.nextToken()) != StreamTokenizer.TT_EOF)
    if(ttype == StreamTokenizer.TT_EOL)
        ++lines;    // new line
    else
        ++words;    // new word

Voor een betere oplossing hou ik me aanbevolen, want die for-lus om de ST te initialiseren is echt vreselijk vies.

(Merk ook op dat het aantal characters met de StreamTokenizer niet meer te achterhalen is, waardoor dat apart opgezocht moet worden.)

  • alienfruit
  • Registratie: Maart 2003
  • Laatst online: 04:49

alienfruit

the alien you never expected

Die raise exception.create() vind ik wel lol :)

[Voor 7% gewijzigd door alienfruit op 29-03-2003 16:26]


  • PiepPiep
  • Registratie: Maart 2002
  • Laatst online: 18-01 09:53
code:
1
2
3
4
for (teller=1; teller<100; teller++);
{
   do_iets();
}

Hier heb ik denk ik 2 uur op zitten kijken (wel met nog meer code uiteraart eromheen) voordat ik die ; dus zag :)

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


Anoniem: 55510

toen ik begon met assembler had ik zoiets:
push ax
push bx
push cx

...
...
pop ax
pop bx
pop cx

3x raden wat er hier gebeurt :X

  • Soultaker
  • Registratie: September 2000
  • Laatst online: 26-05 00:24
Anoniem: 55510 schreef op 29 March 2003 @ 16:43:
toen ik begon met assembler had ik zoiets:
push ax
push bx
push cx

...
...
pop ax
pop bx
pop cx
Pff, inefficiënte code! Dit kan veel beter zo:
code:
1
xchg ax, cx

:Y)

  • EfBe
  • Registratie: Januari 2000
  • Niet online
Anoniem: 55510 schreef op 29 March 2003 @ 16:43:
toen ik begon met assembler had ik zoiets:
push ax
push bx
push cx

...
...
pop ax
pop bx
pop cx

3x raden wat er hier gebeurt :X
Voor een copy-protection routine niet zulke vreemde code hoor :)

Creator of: LLBLGen Pro | Camera mods for games
Photography portfolio: https://fransbouma.com


Anoniem: 55510

Soultaker schreef op 29 maart 2003 @ 16:47:
[...]


Pff, inefficiënte code! Dit kan veel beter zo:
code:
1
xchg ax, cx

:Y)
haha inderdaad..
en ook een hele ranzige fout die ik gemaakt had... Ik was een keer bezig met soundblaster aansturen ook in asm.. Maar dan zonder dma transfers, dus dat je alles zelf moet zenden, byte voor byte. Daarvoor moest ik de timer interrupt dus van 18.2 hz naar 22Khz versnellen(zonder het bijhouden van hoe snel de klok dus moet blijven doortikken)... uiteraard aan het einde van het programma ook nog 's vergeten om hem normaal terug te zetten...
ik vond het systeem (lees dos) al traag worden, en ik had zo'n menuutje opgestart waar je programma's mee kon opstarten. Daar stond boven op het scherm een klok in de vorm uu:mm:ss .Die ging dus VELE malen sneller dan normaal |:(

Anoniem: 64569

Iemand op me werk had dit gemaakt in java. Zie hieronder voor een stukje van een init() methode :-P
Java:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
public void init()
    {
        mc9_start = new MyC09(this);
        mc9_lin_ongew = new MyC09(this);
        mc9_lin_gew = new MyC09(this);
        mc9_res_ongew = new MyC09(this);
        mc9_res_gew = new MyC09(this);
        mc11_start = new MyC11();
        mc11_lin_ongew = new MyC11();
        mc11_lin_gew = new MyC11();
        mc11b_res_ongew = new MyC11b();
        mc11b_res_gew = new MyC11b();
        mc8_start = new MyC08(this, mc9_start, mc11_start);
        mc8_lin_ongew = new MyC08(this, mc9_lin_ongew, mc11_lin_ongew);
        mc8_lin_gew = new MyC08(this, mc9_lin_gew, mc11_lin_gew);
        mc8b_res_ongew = new MyC08b();
        mc8b_res_gew = new MyC08b();
        mc9_start.yc_max = 200;
        mc9_lin_ongew.x0_offset = 430;
        mc9_lin_ongew.y0_offset = 280;
        mc9_res_ongew.y0_offset = mc9_start.y0_offset + mc9_start.yc_max + 60;
        mc9_lin_ongew.yc_max = mc9_lin_gew.yc_max = 300;
        mc9_res_ongew.yc_max = 120;
        mc9_res_ongew.y_un = mc9_start.y_un;
        mc9_res_ongew.y_up = mc9_start.y_up;
        mc3 = new MyC03();
        mc4 = new MyC04(this);
        mc6 = new MyC06(this);
        mc10 = new MyC10(this);
        mc14 = new MyC14(this);
        mc15b = new MyC15b(this);
        addMouseListener(new MouseHandler());
        addMouseMotionListener(new MouseHandler_2());
        setBackground(Color.white);
}


Onder het mom van:
Als ze ooit mijn code willen veranderen moeten ze zelf maar uitzoeken wat alles is en doet ;(

  • Erkens
  • Registratie: December 2001
  • Niet online

Erkens

Fotograaf / Backend developer

PiepPiep schreef op 29 March 2003 @ 16:41:
code:
1
2
3
4
for (teller=1; teller<100; teller++);
{
   do_iets();
}

Hier heb ik denk ik 2 uur op zitten kijken (wel met nog meer code uiteraart eromheen) voordat ik die ; dus zag :)
mja niet echt slecht proggen is dat, dat is gewoon een bugje ;)
en zijn verdomt lastig te vinden weet ik uit ervaring :X

  • alienfruit
  • Registratie: Maart 2003
  • Laatst online: 04:49

alienfruit

the alien you never expected

Hoezo verdomt lastig gewoon in de tussentijd wat anders gaan doen, als je weer aan de slag gaat zie je het vaak meteen ! Vooral een nacht slapen werkt hier fantastisch voor imho.

  • Erkens
  • Registratie: December 2001
  • Niet online

Erkens

Fotograaf / Backend developer

alienfruit schreef op 29 maart 2003 @ 17:05:
Hoezo verdomt lastig gewoon in de tussentijd wat anders gaan doen, als je weer aan de slag gaat zie je het vaak meteen ! Vooral een nacht slapen werkt hier fantastisch voor imho.
ja, maar vaak heb je daar geen tijd voor :+

  • pjonk
  • Registratie: November 2000
  • Laatst online: 18-05 13:47
Ik kan me herinneren dat ik een best wel ranzige constructie in VB gebruikte.
Als je een bepaald item in VB in een listbox wilde selecteren en dat item bestond niet gaf dat een foutmelding.

Daarom had ik een functie geschreven genaamd SelectItemInList.
De functie SelectItemInList zag er als volgt uit in pseudo code:
- Check met een For i lusje alle elementen in de listbox
- Indien element gevonden is selecteer het item met gevonden index anders selecteer 1e item

Probleem was indien er bijv. 500 items in de listbox stonden ging het For lusje zo traag dat het een eeuwigheid duurde voordat het juiste item gevonden was.

Dit had ik als volgt opgelost >:)

code:
1
2
3
4
5
6
7
8
9
function SelectItemInList(Item as String)
On error goto ItemNotFound

cmbListbox.text = Item 
exit function

ItemNotFound:
// Selecteer 1e item
end Function


Best wel dirty maar veel sneller.

It’s nice to be important but it’s more important to be nice


Anoniem: 36849

Met SQL kan er ook redelijk geprutst worden:

SELECT * FROM tbl doen. En dan je asp code beginnen met (eerst een rowset enzo maken)
code:
1
2
3
4
5
6
7
do while Not rslog.eof 
  if rs("id")="52" then
     actie
  else 
    rs.movenext
  end if
Loop

Waarbij je dus een complete database opentrekt ipv een select where te doen.
Toen ik dit las herkende ik mezelf. Maar hey uit je eigen fouten moet je leren :)

  • alienfruit
  • Registratie: Maart 2003
  • Laatst online: 04:49

alienfruit

the alien you never expected

Ja vooral fouten die ontstaan tijdens je demonstratie bij de klant ;)
Mooi effe toch het hele netwerk uit de lucht gehaald door een inifinite loopje 8)

[Voor 40% gewijzigd door alienfruit op 29-03-2003 17:26. Reden: tjiepfoutjus weggewerd]


  • hobbit_be
  • Registratie: November 2002
  • Laatst online: 29-06-2020
MSalters schreef op 29 March 2003 @ 15:37:
Deze blijft ook mooi: (uit een taal met echte booleans)
code:
1
2
3
4
5
6
7
8
9
switch ( aBool )
{
    case TRUE:
        do_dit();
    case FALSE:
        do_dat();
    default:
        doe_iets_anders();
}
moohaha die is wel prachtig - die dacht vast aan fuzzy logic (of had fuzzy brain).. rotfl..

  • CyeZ
  • Registratie: September 2001
  • Laatst online: 03:31

CyeZ

Vroem vroem!!!

Wat ook altijd leuk blijft in om in een constructor runtime een dll in te gaan laden dmv van loadlibrary en in de destructor vervolgens alleen maar de handle op 0 te zetten ipv het ding te unloaden met unloadlibrary. (Delphi 6 dbExpress TSQLConnection :X)

[18:54] <Prammenhanger> |HunterPro|eet
[18:55] <Prammenhanger> lijkt best op
[18:55] <Prammenhanger> |HunterProFeet


  • Gerco
  • Registratie: Mei 2000
  • Laatst online: 29-05 17:23

Gerco

Professional Newbie

In de applicatie bij mij op het werk. Het factuur genereer stukje moest aansluitende factuurnummers garanderen en nulfacturen mochten in het systeem niet bestaan. Na een tijdje kwam een klant klagen dat het facturen genereren zo lang duurde, dus ik open het betreffende programma en aanschouw de volgende code:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
FOR EACH factuurkop:
  FIND FIRST factuurregel OF factuurkop NO-LOCK NO-ERROR.
  /* Geen factuurregels in deze factuur, verwijderen en alles opschuiven */
  IF NOT AVAILABLE(factuurregel) THEN DO:
    iFactuurnr = factuurkop.factuurnr.
    DELETE factuurkop.
    /* Alle volgende facturen 1 plaats opschuiven */
    FOR EACH factuurkop WHERE factuurkop.factuurnr > iFactuurnr
           BY factuurkop.factuurnr:
      /* Natuurlijk niet de regels van die facturen vergeten */
      FOR EACH factuurregel OF factuurkop:
        factuurregel.factuurnr = factuurregel.factuurnr - 1.
      END.
      factuurkop.factuurnr = factuurkop.factuurnr - 1.
    END.
  END.
END.

Deze code werd gedraaid op een factuurtje of 10.000 bij die klant, terwijl er een ruime miljoen facturen in de database stonden, need I say more?

[Voor 26% gewijzigd door Gerco op 29-03-2003 19:26]

- "Als ik zou willen dat je het begreep, legde ik het wel beter uit!" | All number systems are base 10! | Huis te koop in Barendrecht!


  • drZymo
  • Registratie: Augustus 2000
  • Laatst online: 08-05 17:00
Ja slechte programmeer voorbeelden zijn er genoed.

Open source programma's hebben zo hun nadelen. Zo kan iedereen goed zien hoe erg men kan coden. Zo gebruiken ze in genoeg open source projecten nog steeds goto statements :|

En docenten die (zoals het lijkt) net in de wereld van OO programmeren met c++ komen kijken:
C++:
1
2
3
4
void blaat()
{
  int* myvar= new int[EEN_OF_ANDERE_CONSTANTE];
}

En dan dus gewoon de delete vergeten, en niet nagaan dat een statisch array mischien ook kan, en zelfs sneller is. Of alle lokale variabelen van een functie als globale variabelen in een class stoppen 8)7. Of 10 statements achter elkaar op een regel :(. En ga zo maar door.

Ik wil niet zeggen dat ik altijd even netjes ben, maar ik zorg er vaak voor dat mijn code niet publiekelijk wordt getoond :P.

"There are three stages in scientific discovery: first, people deny that it is true; then they deny that it is important; finally they credit the wrong person."


  • Sybr_E-N
  • Registratie: December 2001
  • Laatst online: 29-05 20:32
Wat ik altijd leuk blijf vinden bij mensen die net programeren is:

code:
1
2
  if (varname = true) then
    do_something()


Zelfs sommige leraren snappen niet wat daar nou verkeerd aan is. :)

  • CyeZ
  • Registratie: September 2001
  • Laatst online: 03:31

CyeZ

Vroem vroem!!!

Sybr_E-N schreef op 29 maart 2003 @ 22:18:
Wat ik altijd leuk blijf vinden bij mensen die net programeren is:

code:
1
2
  if (varname = true) then
    do_something()


Zelfs sommige leraren snappen niet wat daar nou verkeerd aan is. :)
Dat is natuurlijk ook afhankelijk van de taal of het goed of fout is. In C/C++/PHP en andere talen met soortgelijke syntax zal dit inderdaad fout gaan ja.
In pascal varianten bv is deze code prima te gebruiken aangezien de assignment operator daar ':=' is ipv '='.

[18:54] <Prammenhanger> |HunterPro|eet
[18:55] <Prammenhanger> lijkt best op
[18:55] <Prammenhanger> |HunterProFeet


  • SuperRembo
  • Registratie: Juni 2000
  • Laatst online: 27-05 14:16
CyeZ schreef op 29 March 2003 @ 22:39:
[...]
Dat is natuurlijk ook afhankelijk van de taal of het goed of fout is. In C/C++/PHP en andere talen met soortgelijke syntax zal dit inderdaad fout gaan ja.
In pascal varianten bv is deze code prima te gebruiken aangezien de assignment operator daar ':=' is ipv '='.
Het gaat er niet om of het een '=', '==' of ':=' zou moeten zijn. Het gaat erom dat die '= true' erbij overbodig is.

| Toen / Nu


  • Erkens
  • Registratie: December 2001
  • Niet online

Erkens

Fotograaf / Backend developer

SuperRembo schreef op 29 March 2003 @ 22:55:
[...]

Het gaat er niet om of het een '=', '==' of ':=' zou moeten zijn. Het gaat erom dat die '= true' erbij overbodig is.
maar dat maakt het niet fout :P

  • Mithrandir
  • Registratie: Januari 2001
  • Laatst online: 05-05 23:16
CyeZ > ik denk dat Sybren bij PHP gewoon == gebruikt. Dus hij bedoelt niet dat de = een assignmentoperator is, maar een vergelijkingsoperator. Daardoor hoef je die =(=) true er helemaal niet in te zetten.

/edit
en ik ben weer eens te laat.

[Voor 10% gewijzigd door Mithrandir op 29-03-2003 22:59]


  • CyeZ
  • Registratie: September 2001
  • Laatst online: 03:31

CyeZ

Vroem vroem!!!

SuperRembo schreef op 29 March 2003 @ 22:55:
[...]

Het gaat er niet om of het een '=', '==' of ':=' zou moeten zijn. Het gaat erom dat die '= true' erbij overbodig is.
Och, of die =/== true er nou wel of niet staat is niet zo'n punt zolang de uiteindelijk werking van de code maar gelijk blijft aan wat de bedoeling was.

Bij = in een C/C++/PHP achtige taal is dat niet het geval omdat je een assignment in de if doet in dit geval waardoor de if dus altijd true zal opleveren ongeacht wat er in de variabele stond.

Dit soort fouten kunnen soms vrij lastig te vinden zijn.

[18:54] <Prammenhanger> |HunterPro|eet
[18:55] <Prammenhanger> lijkt best op
[18:55] <Prammenhanger> |HunterProFeet


  • momania
  • Registratie: Mei 2000
  • Laatst online: 07:37

momania

iPhone 30! Bam!

Ook nog een leuke:

In een team een stuk software maken en dan bij het testen steeds ergens op een onverklaarbaar resultaat komen. Vervolgens een halve dag met een hele strakke deadline (euro) met het zweet op je voorhoofd debuggen om erachter te komen dat er bij een for-lus een punt-komma achter staat, waardoor de lus altijd maar 1 keer uitgevoerd wordt. 8)7 |:(

Neem je whisky mee, is het te weinig... *zucht*


  • Ericston
  • Registratie: Maart 2001
  • Laatst online: 28-11-2022
offtopic:
Die was net ook al genoemd. Kunnen compilers daar trouwens niet voor waarschuwen? VC++ geeft bijvoorbeeld een warning bij een empty if constructie.

[Voor 7% gewijzigd door Ericston op 30-03-2003 10:11. Reden: ot]


  • TlighT
  • Registratie: Mei 2000
  • Laatst online: 24-05 08:46
SuperRembo schreef op 29 March 2003 @ 22:55:
[...]

Het gaat er niet om of het een '=', '==' of ':=' zou moeten zijn. Het gaat erom dat die '= true' erbij overbodig is.
Ik zet de '== true' er ook meestal bij. Als je alles gaat weglaten wat overbodig is, kun je net zo goed meedoen aan de obfuscated C contest.

  • Anoniem: 9962
  • Registratie: Augustus 2000
  • Niet online
iemand vroeg me ooit waarom zijn script vast liep... toen ik zijn code zag wist ik het antwoord gelijk

PHP:
1
2
3
4
5
6
7
for ($x = 0; $x < 100; $x++)
{
      for ($x = 0; $x < 100; $x++)
     {
          // do iets :P
     }
}


:D

  • Thijsch
  • Registratie: Februari 2002
  • Laatst online: 26-05 11:42
xtentic: vastlopen? Het lijkt mij dat de binnenste lus 100 keer doorlopen wordt, $x is dan 100 dus de buitenste stopt dan ook, of zie ik wat over het hoofd (behalve dat het in 1 lus kan)?

  • Anoniem: 9962
  • Registratie: Augustus 2000
  • Niet online
uhm... mischien heb ik um verkeerd getyped, dacht dat ie zo iets was :P

  • windancer
  • Registratie: Maart 2000
  • Laatst online: 21-02 22:20
CyeZ schreef op 29 maart 2003 @ 23:01:
[...]

Och, of die =/== true er nou wel of niet staat is niet zo'n punt zolang de uiteindelijk werking van de code maar gelijk blijft aan wat de bedoeling was.
Dit soort dingen kan op een hele rare manier misgaan. In C bijvoorbeeld heb je geen ingebouwd boolean type en wordt de integer gebruikt als boolean. De regel is dan dat 0 de false waarde is en al het andere is true. Dit betekent dat je meerdere true waarden hebt en je niet je boolean waarde tegen een willekeurig gekozen true waarde moet vergelijken.

C:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#define false 0
#define true 1
typedef boolean int;

/*
** of zelfs :
** typedef boolean enum {
**    false = 0,
**    true = 1
** };
**
*/

boolean a = 1;
boolean b = 2;

if (a == true) /* is equivalent met */
if (a)

if (b == true) /* is NIET equivalent met */
if (b)

  • EfBe
  • Registratie: Januari 2000
  • Niet online
Anoniem: 64569 schreef op 29 March 2003 @ 17:02:
Iemand op me werk had dit gemaakt in java. Zie hieronder voor een stukje van een init() methode :-P
[code]
Onder het mom van:
Als ze ooit mijn code willen veranderen moeten ze zelf maar uitzoeken wat alles is en doet ;(
Als je het mij vraagt is dat decompiled code. Niemand schrijft dat soort bagger zelf

Creator of: LLBLGen Pro | Camera mods for games
Photography portfolio: https://fransbouma.com


  • EfBe
  • Registratie: Januari 2000
  • Niet online
SuperRembo schreef op 29 March 2003 @ 22:55:
[...]
Het gaat er niet om of het een '=', '==' of ':=' zou moeten zijn. Het gaat erom dat die '= true' erbij overbodig is.
Mja, maar waarom zou je dan variabelenamen nemen van meer dan 1 character? Zolang ze maar verschillend zijn is het toch niet erg?

Leesbaarheid wil ook wat. Ik vind if(bla==true) niet zo verkeerd.

Ik vind
C:
1
2
3
4
if(!b||!c)
{
     /* do something */
}

veel erger

(hint: is gelijk aan if(! (b&&c) ) en dat is beter onderhoudbaar bij uitbreiding van de clause (beter leesbaar ook)

[Voor 22% gewijzigd door EfBe op 30-03-2003 13:27]

Creator of: LLBLGen Pro | Camera mods for games
Photography portfolio: https://fransbouma.com


  • EfBe
  • Registratie: Januari 2000
  • Niet online
Ik vind trouwens iedere macro in C een zwaktebod van jewelste. Schrijf dan een functie, die is leesbaarder, en je kunt hem beter debuggen.

Creator of: LLBLGen Pro | Camera mods for games
Photography portfolio: https://fransbouma.com


  • windancer
  • Registratie: Maart 2000
  • Laatst online: 21-02 22:20
EfBe schreef op 30 March 2003 @ 13:25:
Ik vind trouwens iedere macro in C een zwaktebod van jewelste. Schrijf dan een functie, die is leesbaarder, en je kunt hem beter debuggen.
Er zijn zat situaties waarin een macro zeker te preferen is boven een functie, bijvoorbeeld :
  • als je de _LINE_ of _FILE_ preprocessor items wilt gebruiken; bijvoorbeeld om een error of een warning te loggen via een generieke functie
  • als je de overhead van een functicall gewoon niet wilt gebruiken, bijvoorbeeld bij het schrijven van realtime software

  • WildernessChild
  • Registratie: Februari 2002
  • Niet online

WildernessChild

Voor al uw hersenspinsels

windancer schreef op 30 March 2003 @ 13:17:
code:
1
2
3
4
5
6
7
8
9
10
[...]
/*
** of zelfs :
** typedef boolean enum {
**    false = 0,
**    true = 1
** };
**
*/
[...]
Die enum vind ik anders een mooie oplossing. Die kun je ook gewoon in een if-statement gebruiken, al of niet met "== true" erachter. BTW is true niet meestal gedefinieerd als -1? Bij -1 zijn in 2's complement alle bits 1 en bij 1 is alleen het LSB 1.

edit:
Laat ik 'm ook ff quoten dan... |:(

[Voor 39% gewijzigd door WildernessChild op 30-03-2003 14:18]

Maker van Taekwindow; verplaats en resize je vensters met de Alt-toets!


  • windancer
  • Registratie: Maart 2000
  • Laatst online: 21-02 22:20
WildernessChild schreef op 30 March 2003 @ 14:10:
Die enum vind ik anders een mooie oplossing. Die kun je ook gewoon in een if-statement gebruiken, al of niet met "== true" erachter. BTW is true niet meestal gedefinieerd als -1? Bij -1 zijn in 2's complement alle bits 1 en bij 1 is alleen het LSB 1.
edit:
Laat ik 'm ook ff quoten dan... |:(
In de C standaard is het resultaat van een boolean operatie 0 als de operatie false is en 1 als de operatie true is. Dus
  • 1 == 2 geeft de waarde 0
  • 2 == 2 geeft de waarde 1
  • !0 geeft de waarde 1
  • !-1 geeft de waarde 0
  • etc. etc.
maar jouw opmerking illustreert precies het probleem : door het onbreken van een boolean type in C is er geen eenduidige waarde voor true en moet je dus ook niet vergelijken met een (willekeurig gekozen) true.

  • Robtimus
  • Registratie: November 2002
  • Laatst online: 29-05 17:24

Robtimus

me Robtimus no like you

Ik heb es een keer in Delphi een MDI programma gemaakt zonder op geheugenbeheer te letten. Toen ik daar later een keer iets aan wou doen had ik het te erg gedaan:
code:
1
2
3
4
  Child := TMDIChild(ActiveMDIChild);
  Child.Save;
  // en nu de grote boosdoener die ik erin had gestopt
  Child.Free;
En ik me maar afvragen waarom ik mem errors kreeg en mijn child venster meteen afsloot |:(

Een tijd later zag ik het gelukkig meteen, dus nu staat er gewoon
code:
1
  TMDIChild(ActiveMDIChild).Save;
(scheelt ook weer een variabele)

offtopic:
nee ik heb niet veel ervaring met pointers


Wat trouwens ook leuk is: na een hele taal in de ene taal te hebben gewerkt opeens in een andere taal te gaan proggen. na een tijd in Python te hebben gewerkt opeens alle ; in C++ vergeten |:(

More than meets the eye
There is no I in TEAM... but there is ME
Vroeger IceManX | system specs


  • BarôZZa
  • Registratie: Januari 2003
  • Laatst online: 29-05 15:08
hmz... ik ben altijd te lui om variabelen lange namen te geven :)... dus dan krijg je zoiets...
code:
1
var I, J, K, R, Af, Afz, L: integer; b, c, d, e, f: string;

maarja... ik prog altijd in me eentje en weet dus altijd wel wat t voorstelt... en zo lang alles werkt vind k t best... soms ziet t er zelfs zo uit:
code:
1
2
3
4
5
 var I, II: Integer;
  W: TextFile; Cat: String;
  a: string;
  url:string;
 ok: integer;

ow en dan gebruik ik dit nog in Delphi:
code:
1
2
3
4
5
procedure TMainForm.TopImageDragOver(Sender, Source: TObject; X,
  Y: Integer; State: TDragState; var Accept: Boolean);
begin
//fokjoe
end;

dit omdat je anders zo'n cursor krijgt van dat je iets niet kan droppen daarop(mijn window heeft geen border en daarom gebruik ik drag functies om de window te kunnen verplaatsen :P)...

  • BarôZZa
  • Registratie: Januari 2003
  • Laatst online: 29-05 15:08
ow en nog een briljante nette oplossing van mij... bij een TWebbrowser in delphi kan je de border eromheen niet uitzetten dus heb ik dat ding in een frame geplaatst met top:=-2, left:=-2, width:=frame.width+4 en height:=frame.height+4

Anoniem: 29610

Bij een project in Qt op school hadden we een toolbar met daarin een spinbox.
Nu moest de waarde van de spinbox ook in een spinbox op een opties dialog dynamisch worden gereflecteerd. En toen had een projectmember er niets beter op gevonden dan de volgende constructie te gebruiken :

C++:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
class MainWindow
{
    QSpinBox *m_pTheBox;
    
    MainWindow() 
    { 
        m_pTheBox = new QSpinBox( this );
    }
    
    void DoOptionsDialog()
    {
        COptionsDialog dlg;
        dlg.m_pTheDialogSpinbox = m_pTheBox;
        dlg.m_pTheContainer->AddWidget( dlg.m_pTheDialogSpinbox );
    }
}


m.a.w: Dezelfde instantie van de spinbox werd in zowel de toolbar als in de optiesdialog gebruikt, werd in beide getoond alsof er geen vuiltje aan de lucht was EN kon simultaan worden aangepast (veranderingen bij de ene werden in de andere gereflecteerd. (logisch, was hetzelfde object).
Dat zoiets überhaupt toegelaten wordt in Qt vind ik an sich al vrij ranzig, maar dat zoiets dan ook nog (mis- / ge)bruikt wordt om toch maar geen deftige Dynamic Data Exchange routine voor de opties te maken... Bovendien wilde hij ons pas na veel gepraat geloven toen we zeiden dat deze methode ranzig en slecht is.

[Voor 8% gewijzigd door Anoniem: 29610 op 30-03-2003 16:25]


  • _Thanatos_
  • Registratie: Januari 2001
  • Laatst online: 09-05 14:16

_Thanatos_

Ja, en kaal

In Delphi ben ik ook eea vies spul tegenegkomen tijdens een conversie van een heel oud stuk pascal code naar een moderne delphi 5:
Delphi:
1
2
3
4
5
var I: Word;
begin
if I < 0
then {doeiets};
end;
Alsof een Word ooit onder 0 komt :)

Deze zie je ook heel vaak:
Delphi:
1
2
if Conditie
then Inc(IntegerWaarde);

terwijl dat veel efficienter kan:
Delphi:
1
Inc(IntegerWaarde, Integer(Conditie));
Echt waar, ik heb het ooit getest het was 10% sneller :)

en natuurlijk een klassieker:
Delphi:
1
2
if not (Blabla = 0)
then {doeiets};

日本!🎌


Anoniem: 29610

_Thanatos_ schreef op 30 March 2003 @ 16:38:
terwijl dat veel efficienter kan:
Delphi:
1
Inc(IntegerWaarde, Integer(Conditie));

Echt waar, ik heb het ooit getest het was 10% sneller :)
efficiënter is het misschien wel, maar ranziger des te meer imho... Ik vind dat je een boolean datatype echt als boolean (true en false) moet beschouwen en niet als een gepromoveerde integer.
bovenstaande code draagt niet bij tot de leesbaarheid van een programma, en mocht Borland de waarden van boolean ooit veranderen naar -1 en 0 ( VB anyone? ) zal een aanpassing zich opdringen, terwijl dat bij een simpele if niet het geval zou zijn.

just my 2 cents :)

  • Varienaja
  • Registratie: Februari 2001
  • Laatst online: 05:46

Varienaja

Wie dit leest is gek.

_Thanatos_ schreef op 30 March 2003 @ 16:38:
...terwijl dat veel efficienter kan:
Delphi:
1
Inc(IntegerWaarde, Integer(Conditie));
Echt waar, ik heb het ooit getest het was 10% sneller :)
[/code]
Weet je dat 100% zeker? Ik zou zeggen dat de compiler dit zelf ook wel kan bedenken.

Gras groeit niet door eraan te trekken.


  • Anoniem: 25556
  • Registratie: April 2001
  • Niet online
Deze zie je ook heel vaak:
Delphi:
1
2
if Conditie
then Inc(IntegerWaarde);

terwijl dat veel efficienter kan:
Delphi:
1
Inc(IntegerWaarde, Integer(Conditie));
nofi maar:
a) ik vind jouw methode,erm...smeriger
b) als ik het hier test is het niet sneller?

Op zich kan het wel, maar dit soort casts hou ik persoonlijk niet zo van..

  • Tomatoman
  • Registratie: November 2000
  • Nu online

Tomatoman

Fulltime prutser

_Thanatos_ schreef op 30 March 2003 @ 16:38:
Deze zie je ook heel vaak:
Delphi:
1
2
if Conditie
then Inc(IntegerWaarde);

terwijl dat veel efficienter kan:
Delphi:
1
Inc(IntegerWaarde, Integer(Conditie));
Echt waar, ik heb het ooit getest het was 10% sneller :)
Ja, dat is inderdaad veel efficiënter. Als je op 20 clock cycles 10% weet te besparen, is dat op een 2 GHz processor toch een hele nanoseconde!

* Tomatoman vindt dit een prachtig voorbeeld van slecht programmeren.

Een goede grap mag vrienden kosten.


  • Michali
  • Registratie: Juli 2002
  • Laatst online: 09:49
Of een veel gemaakte omslachtige methode:

PHP:
1
2
3
4
5
6
7
8
if ( $blaat )
{
  $blaat = false;
}
else
{
  $blaat = true;
}


ik zag ook een keer iets van een persoon die had dit gedaan in zijn index pagina:

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
switch( $_GET['page'] )
{
  case 'a':
    include "pages/a.php";
  break;
  case 'b':
    include "pages/b.php";
  break;
  case 'c':
    include "pages/c.php";
  break;
  case 'd':
    include "pages/d.php";
  break;
....
}


:+

[Voor 13% gewijzigd door Michali op 30-03-2003 18:09]

Noushka's Magnificent Dream | Unity


  • curry684
  • Registratie: Juni 2000
  • Laatst online: 24-05 22:21

curry684

left part of the evil twins

Ergste bug die ik ooit heb moeten onderzoeken heeft me samen met m'n toenmalige baas een paar uur gekost. Het ging om machineaanstuurprogrammatuur van een afwezige collega, en alles werkte perfect. Het enige probleem was dat het ding het vertikte om langere messages dan 1 byte uit te sturen. We hebben dat tientallen keren regel voor regel doorgelopen, en konden de fout echt niet ontdekken.

Totdat ik nog eens goed keek naar de regel waar het aantal verstuurde bytes werd geretourneerd, een redelijk subtiele regel waarin gebruik werd gemaakt van het de ternary ? met : operator... en na de operator precedence in die statement nog eens goed doorgekeken te hebben kwam ik er achter dat de functie verkapt een boolean als integer retourneerde, en omdat true volgens de standaarden gelijk is aan 1 kwam er dus voor iedere hoeveelheid succesvol geschreven data de waarde 1 uit... ARGL opgelost met 2 haakjes erbij :P

Bottom line: constructies met ? en : zuigen als de afzonderlijke delen ook operators bevatten :>

[Voor 7% gewijzigd door curry684 op 30-03-2003 18:41]

Professionele website nodig?


  • madwizard
  • Registratie: Juli 2002
  • Laatst online: 25-04-2022

madwizard

Missionary to the word of ska

Ik weet ook nog wel een mooie, al is die expres zo gemaakt (zou niet best zijn als je zo zou programmeren).
Voor m'n studie moesten we een keer een progje in java maken die alle identifiers uit een file zocht en deze gesorteerd en zonder dubbele uitprint. Uiteraard inclusief ontwerp, interfaces, nette class indeling etc.
Voor de lol heb ik toen een keer geprobeerd hetzelfde te doen (behalve het sorteren en het verwijderen van dubbelen, en van de standaard input ipv een file), maar in zo weinig mogelijk tekens source code ;)
Het resultaat was deze enorm ranzige code, werkte verder prima :)
Java:
1
2
3
4
5
6
7
8
9
10
class Test
{
    public static void main(String[] args) 
    {
        Input i = new Input(); Output o = new Output();

        for(char s=0,c;!i.eof();)if((c=i.readChar())>'/'&c<':'&&(s==1||(s=3)<0)||
        (c>'`'&c<'{'|c>'@'&c<'[')&&(s|=1)>0||(s==1?(c=10)==c:0>1)&(s=0)<1)o.print(c);
    }
}

(Input en Output waren standaard classes die we konden gebruiken). Heb maar een andere versie ingeleverd om het hart van m'n docent te besparen en m'n cijfer toch nog boven de 1 uit te laten komen :+.

www.madwizard.org


  • Erkens
  • Registratie: December 2001
  • Niet online

Erkens

Fotograaf / Backend developer

Michali schreef op 30 March 2003 @ 18:05:
ik zag ook een keer iets van een persoon die had dit gedaan in zijn index pagina:

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
switch( $_GET['page'] )
{
  case 'a':
    include "pages/a.php";
  break;
  case 'b':
    include "pages/b.php";
  break;
  case 'c':
    include "pages/c.php";
  break;
  case 'd':
    include "pages/d.php";
  break;
....
}


:+
mja, het is iig beter da een include("pages/".$_GET['page']); :+
hoewel een array het beste is :P

  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 27-05 04:47
madwizard schreef op 30 maart 2003 @ 19:45:
Voor de lol heb ik toen een keer geprobeerd hetzelfde te doen (behalve het sorteren en het verwijderen van dubbelen, en van de standaard input ipv een file), maar in zo weinig mogelijk tekens source code ;)
Het resultaat was deze enorm ranzige code, werkte verder prima :)
Het feit dat je het kan zou al strafbaar moeten zijn ;)

  • Michali
  • Registratie: Juli 2002
  • Laatst online: 09:49
Erkens schreef op 30 maart 2003 @ 19:48:
[...]

mja, het is iig beter da een include("pages/".$_GET['page']); :+
hoewel een array het beste is :P
nou, ik zou het zo opgelost hebben.

PHP:
1
2
3
4
if ( eregi("^[a-z]$", $_GET['page']) )
{
    include "pages/" . $_GET['page'] . ".php";
}


das heel wat minder regels dan ( 3 x 26 ) + 3 = 81 regels. :D

[Voor 11% gewijzigd door Michali op 30-03-2003 20:00]

Noushka's Magnificent Dream | Unity


  • Erkens
  • Registratie: December 2001
  • Niet online

Erkens

Fotograaf / Backend developer

Michali schreef op 30 March 2003 @ 19:59:
[...]

nou, ik zou het zo opgelost hebben.

PHP:
1
2
3
4
if ( eregi("^[a-z]$", $_GET['page']) )
{
    include "pages/" . $_GET['page'] . ".php";
}


das heel wat minder regels dan ( 3 x 26 ) + 3 = 81 regels. :D
ik zou het zo dus absoluut niet opgelost hebben, zo heb je niet echt een overzicht van welke pagina's nu wel en niet kunnen :P
daarnaast zou ik die include pagina's nooit a.php t/m z.php noemen 8)7

  • Michali
  • Registratie: Juli 2002
  • Laatst online: 09:49
Erkens schreef op 30 March 2003 @ 20:02:
[...]

ik zou het zo dus absoluut niet opgelost hebben, zo heb je niet echt een overzicht van welke pagina's nu wel en niet kunnen :P
daarnaast zou ik die include pagina's nooit a.php t/m z.php noemen 8)7
tsja, ik zie toch eigenlijk wel direct dat alleen a tot en met z een optie is. En van de a tot en met z was eigenlijk het volgende omslachtige wat die persoon had gedaan. Het was een pagina die een lijst uit de database haalde en die uitprintte. Hij had de pagina 26 keer gekopieerd en steeds 1 teken veranderd, die a tot en met z...

Noushka's Magnificent Dream | Unity


  • whoami
  • Registratie: December 2000
  • Laatst online: 06:14
Wat ik heel erg vind -en waar ik jammer genoeg al veel voorbeelden op GoT gezien heb- zijn mensen die een array opslaan als een array oid in hun DB ipv een extra tabel te maken en zo een 1 op n relatie maken.

https://fgheysels.github.io/


  • Scare360
  • Registratie: Juli 2001
  • Laatst online: 15-05 19:27
Mijn ervaring is toch dat VB'ers en dan met name de RAD aanhangers bakken vol met bagger code produceren. Zo een generiek validatie component welke zo veel kan als een error gooien, maar niet aanduiden welk invoerveld percies verantwoordelijk is voor het afbreken van het invoerproces. Klinkt nuttig :o

Onder het mom van "wij doen aan component based design" knutselt men maar wat aan. Vanuit een GUI wordt t.b.v. het weergeven van wat data op component A GetCustomers() waarna binnen deze methode op een "so called" DAL laagje, component B GetAllCustomers(out rs, in string sqlstring) wordt aangeroepen... deze roept op zijn beurt in een Common component C ExecuteSql(out rs, string in sqlstring), welke expleciet een transactie start... de data ophaalt en naar boven borrelt in het programma. Direct onder de GUI roepen ze dan op de verkregen recordset ook nog eens een .Filter aan. Met als gevolg enorm veel overhead (zijn gedistribueerde componenten, A,B op de client en C op de server), zeulen met bakken aan data, een transactie die nergens op slaat... 1 db en allenig een lees actie (sjezus). Met als argumenten... ons product moet en is component based, en wij willen alles binnen MTS hebben om standaard in de code te verweven... Moet je weten dat ze hoe dan ook toch expleciet een tabel locken door in een hulp tabel bij te houden wie welke tabel in gebruik heeft en naar gelang toegang verder weigeren. De oplossing voor langdurige transacties, waarvoor MTS dan een timeout gooit. :o

Maarjah, kritiek geven is altijd de makkelijkste weg, maar foute architectuur beslissingen kan ik maar moeilijk over m'n hart krijgen.

Ik zou willen dat iedere programmeur deze boeken doodgebladerd in de kast heeft staan:

- GOF
- Distributed Systems, Concepts and Design
- Patterns of the Enterprise Architect

[Voor 25% gewijzigd door Scare360 op 30-03-2003 22:22]

Pagina: 1 2 3 ... 11 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.

Tweakers maakt gebruik van cookies

Tweakers plaatst functionele en analytische cookies voor het functioneren van de website en het verbeteren van de website-ervaring. Deze cookies zijn noodzakelijk. Om op Tweakers relevantere advertenties te tonen en om ingesloten content van derden te tonen (bijvoorbeeld video's), vragen we je toestemming. Via ingesloten content kunnen derde partijen diensten leveren en verbeteren, bezoekersstatistieken bijhouden, gepersonaliseerde content tonen, gerichte advertenties tonen en gebruikersprofielen opbouwen. Hiervoor worden apparaatgegevens, IP-adres, geolocatie en surfgedrag vastgelegd.

Meer informatie vind je in ons cookiebeleid.

Sluiten

Toestemming beheren

Hieronder kun je per doeleinde of partij toestemming geven of intrekken. Meer informatie vind je in ons cookiebeleid.

Functioneel en analytisch

Deze cookies zijn noodzakelijk voor het functioneren van de website en het verbeteren van de website-ervaring. Klik op het informatie-icoon voor meer informatie. Meer details

janee

    Relevantere advertenties

    Dit beperkt het aantal keer dat dezelfde advertentie getoond wordt (frequency capping) en maakt het mogelijk om binnen Tweakers contextuele advertenties te tonen op basis van pagina's die je hebt bezocht. Meer details

    Tweakers genereert een willekeurige unieke code als identifier. Deze data wordt niet gedeeld met adverteerders of andere derde partijen en je kunt niet buiten Tweakers gevolgd worden. Indien je bent ingelogd, wordt deze identifier gekoppeld aan je account. Indien je niet bent ingelogd, wordt deze identifier gekoppeld aan je sessie die maximaal 4 maanden actief blijft. Je kunt deze toestemming te allen tijde intrekken.

    Ingesloten content van derden

    Deze cookies kunnen door derde partijen geplaatst worden via ingesloten content. Klik op het informatie-icoon voor meer informatie over de verwerkingsdoeleinden. Meer details

    janee