[alg] Slechtste programmeervoorbeelden deel 5 Vorige deel Overzicht

Pagina: 1 ... 16 ... 20 Laatste
Acties:

  • Mugwump
  • Registratie: Mei 2017
  • Nu online
sig69 schreef op vrijdag 14 september 2018 @ 21:26:
Mij interesseert het me geen zak. Ik programmeer in C#. Daar ken ik alle ins en outs van. Waarom zou ik me druk moeten maken om C++, of zelfs assembly?
Je hoeft je er niet druk om te maken hoor. Maar enig begrip dat dieper gaat dan enkel de taal die je op het moment gebruikt kan geen kwaad. Alle ins en outs kennen van C# impliceert ook kennis van CIL, de bijbehorende JIT compilatie en ga zo maar door. Dan heb je toch al kennis die dieper gaat dan enkel C#.

"The question of whether a computer can think is no more interesting than the question of whether a submarine can swim" - Edsger Dijkstra


  • RayNbow
  • Registratie: Maart 2003
  • Laatst online: 08:46

RayNbow

Kirika <3

En wat is een bestand als MSVCRT.DLL dan?


spoiler:
 
Ik betwijfel namelijk dat de meeste mensen hier bijv. compileren met /NODEFAULTLIB.
 

[ Voor 25% gewijzigd door RayNbow op 15-09-2018 07:43 ]

Ipsa Scientia Potestas Est
NNID: ShinNoNoir


  • PageFault
  • Registratie: April 2002
  • Laatst online: 10-09 19:15
RayNbow schreef op zaterdag 15 september 2018 @ 07:40:
[...]

En wat is een bestand als MSVCRT.DLL dan?


spoiler:
 
Ik betwijfel namelijk dat de meeste mensen hier bijv. compileren met /NODEFAULTLIB.
 
Zit standaard aan boord. Elke keer wanneer ik java nodig heb, moet ik weer een jre downloaden. Met .net precies zo en nog erger: die zijn allemaal verschillend! Al kun je ze goddank parallel installeren (v2.x naast v4.x).

Libraries nemen je veel tijd uit handen, er zullen idd weinig zijn die alles herschrijven...

In de assembly tijd deed ik dat, maar nu echt niet meer.

  • bwerg
  • Registratie: Januari 2009
  • Niet online

bwerg

Internettrol

Ik kan het anders niet vinden op mijn linux-installatie. :+ Daar heb je met een JRE dan weer geen last van.

Heeft geen speciale krachten en is daar erg boos over.


  • RayNbow
  • Registratie: Maart 2003
  • Laatst online: 08:46

RayNbow

Kirika <3

Ah, vandaar dat je dingen als vcredist.exe kunt downloaden en installeren. ;)

Ipsa Scientia Potestas Est
NNID: ShinNoNoir


  • .oisyn
  • Registratie: September 2000
  • Laatst online: 13:45

.oisyn

Moderator Devschuur®

Demotivational Speaker

RayNbow schreef op vrijdag 14 september 2018 @ 11:28:
Ik kwam er laatst achter dat een voor de programma's waar ik tegenwoordig verantwoordelijk ben gebruikmaakt van inline asm.
Wow, zelfs wij gebruiken dat al járen niet meer. :)
RayNbow schreef op zaterdag 15 september 2018 @ 07:40:
[...]

En wat is een bestand als MSVCRT.DLL dan?


spoiler:
 
Ik betwijfel namelijk dat de meeste mensen hier bijv. compileren met /NODEFAULTLIB.
 
Je bent in de war. Het gaat om het verschil tussen dynamisch en statisch linken met de runtime lib. Die .dll is écht niet per se nodig, ook met default libs. Statisch linken maakt je executable natuurlijk wel een stuk groter.

Of denk je dat vcredist.exe ook is gecompileerd met /NODEFAULTLIB? :P

[ Voor 53% gewijzigd door .oisyn op 15-09-2018 11:06 ]

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.


  • RayNbow
  • Registratie: Maart 2003
  • Laatst online: 08:46

RayNbow

Kirika <3

.oisyn schreef op zaterdag 15 september 2018 @ 11:00:
[...]

Wow, zelfs wij gebruiken dat al járen niet meer. :)
Lang leve legacy zooi dat nooit is opgeruimd. :p
[...]

Je bent in de war. Het gaat om het verschil tussen dynamisch en statisch linken met de runtime lib. Die .dll is écht niet per se nodig, ook met default libs. Statisch linken maakt je executable natuurlijk wel een stuk groter.
Maar of je nu dynamisch of statisch linkt, je maakt dus wel gebruik van een bibliotheek of framework. De oorspronkelijke opmerking dat je "geen framework nodig" hebt gaat niet op. Anders kunnen we het argument voeren dat voor iets als Java ook geen framework per se nodig is. Je kunt in principe Java compileren naar een native executable.

Ipsa Scientia Potestas Est
NNID: ShinNoNoir


  • .oisyn
  • Registratie: September 2000
  • Laatst online: 13:45

.oisyn

Moderator Devschuur®

Demotivational Speaker

Ik denk dat met "nodig hebben" bedoeld wordt: iets anders moeten installeren. Dus ja, als je het compileren kunt naar een native executable zonder dat je daar verder zooi voor moet installeren dan zou dat een optie zijn me dunkt :)

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.


  • DJMaze
  • Registratie: Juni 2002
  • Niet online
Haan schreef op vrijdag 14 september 2018 @ 14:46:
[...]

Da's niet zo'n heel goed voorbeeld, maar precies eentje om wél op te splitsen :>
code:
1
2
3
4
5
6
7
8
9
10
11
12
public void SlaAf(Richting richting) {..}
public void Loop(int meters) {.. }
public void SteekOver(Object obj) {..}
// etc. 

Loop(10);
SlaAf(Richting.Links);
SteekOver(plein);
SlaAf(Richting.Links);
Loop(100)
SlaAf(Richting.Rechts);
//etc
Je hebt een fout. Links en Rechts zijn speculatief als er meer dan 1 zijn: >| of |<
Uitzonderingen bevestigen de regel :)

Maak je niet druk, dat doet de compressor maar


  • PageFault
  • Registratie: April 2002
  • Laatst online: 10-09 19:15
RayNbow schreef op zaterdag 15 september 2018 @ 10:30:
[...]

Ah, vandaar dat je dingen als vcredist.exe kunt downloaden en installeren. ;)
Je kunt windows, linux of macos ook downloaden en installeren. Wat is je punt? Of probeer je je gelijk te halen?

  • RayNbow
  • Registratie: Maart 2003
  • Laatst online: 08:46

RayNbow

Kirika <3

Het punt is dat de runtime DLLs niet standaard op elke Windows-installatie staan.

Ipsa Scientia Potestas Est
NNID: ShinNoNoir


  • PageFault
  • Registratie: April 2002
  • Laatst online: 10-09 19:15
RayNbow schreef op zaterdag 15 september 2018 @ 19:26:
[...]


[...]


Het punt is dat de runtime DLLs niet standaard op elke Windows-installatie staan.
De server core vast niet, maar alles wat ik ooit gebouwd heb, stond alles overal netjes op.

Maar goed, jij wil je gelijk halen dus ;)

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 13:45

.oisyn

Moderator Devschuur®

Demotivational Speaker

PageFault schreef op zaterdag 15 september 2018 @ 20:17:
[...]


De server core vast niet, maar alles wat ik ooit gebouwd heb, stond alles overal netjes op.
msvcrt.dll is niet standaard geïnstalleerd, op geen enkele Windows uitvoering.

vcredist.exe is dus nodig als je linkt tegen dynamische libs. Met statische libs heb je er geen last van, zoals ik al eerder zei.
Maar goed, jij wil je gelijk halen dus ;)
Maar jij had gewoon ongelijk ;)

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.


  • sig69
  • Registratie: Mei 2002
  • Laatst online: 13:47
En dan nog, dan installeer je een keer een framework. Lekker belangrijk? :?

Roomba E5 te koop


Acties:
  • +1 Henk 'm!

  • downtime
  • Registratie: Januari 2000
  • Niet online

downtime

Everybody lies

sig69 schreef op zaterdag 15 september 2018 @ 22:15:
En dan nog, dan installeer je een keer een framework. Lekker belangrijk? :?
@PageFault gebruikte het niet hoeven installeren van een framework als argument tegen .NET en Java. Hij vindt dat argument blijkbaar belangrijk. En als dat argument dan niet klopt omdat native code ook libraries vereisen, die ook niet altijd standaard geïnstalleerd zijn, dan is dat inderdaad belangrijk binnen die discussie over dat onderwerp.
PageFault schreef op zaterdag 15 september 2018 @ 09:42:
[...]

Zit standaard aan boord. Elke keer wanneer ik java nodig heb, moet ik weer een jre downloaden. Met .net precies zo en nog erger: die zijn allemaal verschillend! Al kun je ze goddank parallel installeren (v2.x naast v4.x).

Libraries nemen je veel tijd uit handen, er zullen idd weinig zijn die alles herschrijven...

In de assembly tijd deed ik dat, maar nu echt niet meer.
Persoonlijk vind ik het een non-discussie. Een paar keer extra next-next-finish doen om JRE of .NET te installeren is geen punt zolang de documentatie maar uitlegt welke ik moet hebben.
Kom (in mijn werk) helaas wel eens software tegen waarbij ik zelf maar moet uitvogelen wat ik naast de applicatie nog meer nodig heb.

Acties:
  • 0 Henk 'm!

  • PageFault
  • Registratie: April 2002
  • Laatst online: 10-09 19:15
.oisyn schreef op zaterdag 15 september 2018 @ 21:48:
[...]

msvcrt.dll is niet standaard geïnstalleerd, op geen enkele Windows uitvoering.

vcredist.exe is dus nodig als je linkt tegen dynamische libs. Met statische libs heb je er geen last van, zoals ik al eerder zei.


[...]

Maar jij had gewoon ongelijk ;)
Ongetwijfeld, maar ik heb op geen enkele Windows uitvoering iets hoeven installeren voor de tools die door ons gemaakt zijn, dus stiekem heb jij weer ongelijk ;)

Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 13:45

.oisyn

Moderator Devschuur®

Demotivational Speaker

PageFault schreef op maandag 17 september 2018 @ 15:49:
[...]


Ongetwijfeld, maar ik heb op geen enkele Windows uitvoering iets hoeven installeren voor de tools die door ons gemaakt zijn, dus stiekem heb jij weer ongelijk ;)
Ik heb nooit beweerd dat je iets hoeft te installeren, sterker nog, ik heb tot 2x toe gesteld dat dat dus niet hoeft als je statisch linkt. Want als je statisch linkt, dan heb je msvcrt.dll dus niet nodig, die niet standaard aanwezig is :).

Goed, kleine nuance, er is vast een msvcrt.dll aanwezig. Je hebt alleen de juiste visual studio versie nodig. Als je je app met dezelfde versie compileert als waarmee veel standaard Windows apps zijn gecompileerd, dan heb je kans dat het gewoon werkt. Maar dat is natuurlijk ook Windows-versie-afhankelijk, dus daar kun je niet vanuit gaan.

[ Voor 27% gewijzigd door .oisyn op 17-09-2018 15:55 ]

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!

  • PageFault
  • Registratie: April 2002
  • Laatst online: 10-09 19:15
downtime schreef op zondag 16 september 2018 @ 10:44:
[...]

@PageFault gebruikte het niet hoeven installeren van een framework als argument tegen .NET en Java. Hij vindt dat argument blijkbaar belangrijk. En als dat argument dan niet klopt omdat native code ook libraries vereisen, die ook niet altijd standaard geïnstalleerd zijn, dan is dat inderdaad belangrijk binnen die discussie over dat onderwerp.

[...]

Persoonlijk vind ik het een non-discussie. Een paar keer extra next-next-finish doen om JRE of .NET te installeren is geen punt zolang de documentatie maar uitlegt welke ik moet hebben.
Kom (in mijn werk) helaas wel eens software tegen waarbij ik zelf maar moet uitvogelen wat ik naast de applicatie nog meer nodig heb.
Voor mijn eigen PC is dat idd een non-discussie. Op servers van klanten is dit vaak (om onterechte redenen) een hele grote discussie. Veel klanten willen nog steeds geen servers met internet toegang en moet je weer gaan leuren om de installatie ISO om een (vaak outdated) versie van .NET erop te krijgen. Beter hoef ik dat dus helemaal niet te doen.

En wat betreft JRE: sommige Oracle applicaties zijn zo verschrikkelijk picky op versie nummers. Heb je eindelijk een versie, krijg je weer een andere tool/website die (zoals ik altijd graag zou willen) de nieuwste JRE willen hebben. Gaan we weer.

Kortom: jullie beleven geen drama's, ik en mijn collega's elke dag. Dus wat mij betreft mogen ze het afschaffen, ondanks dat ik zowel Java als C# best fijn vind programmeren.

Acties:
  • 0 Henk 'm!

  • downtime
  • Registratie: Januari 2000
  • Niet online

downtime

Everybody lies

PageFault schreef op maandag 17 september 2018 @ 15:52:
[...]

Op servers van klanten is dit vaak (om onterechte redenen) een hele grote discussie. Veel klanten willen nog steeds geen servers met internet toegang en moet je weer gaan leuren om de installatie ISO om een (vaak outdated) versie van .NET erop te krijgen. Beter hoef ik dat dus helemaal niet te doen.
Servers zonder internet zijn de situatie waar ik dagelijks mee werk. Bij ons komen er ook geen leveranciers op de server en ik ben dus zelf degene die dan de ISO mag zoeken. Dat is niet bepaald het grootste probleem waar ik tegenaan loop als ik software moet installeren (de ISO heb je sowieso alleen voor .NET 3.5 nodig).
En wat betreft JRE: sommige Oracle applicaties zijn zo verschrikkelijk picky op versie nummers. Heb je eindelijk een versie, krijg je weer een andere tool/website die (zoals ik altijd graag zou willen) de nieuwste JRE willen hebben. Gaan we weer.

Kortom: jullie beleven geen drama's, ik en mijn collega's elke dag.
Die "drama's" zijn juist mijn dagelijks werk. Zo'n drama is het niet zolang de documentatie maar deugt.

Acties:
  • 0 Henk 'm!

  • PageFault
  • Registratie: April 2002
  • Laatst online: 10-09 19:15
Ik heb liever dat alles in 1 keer werkt. Wij hebben helaas een applicatie per se v3.5 wil hebben :(

Acties:
  • +2 Henk 'm!

  • dcm360
  • Registratie: December 2006
  • Niet online

dcm360

Moderator Discord

HD7767 powered

Een deel van de wereld heeft dergelijke problemen dan ook al gewoon opgelost. De applicatie gaat een eigen container in, en krijgt daarin de benodigde dependencies zonder dat het invloed heeft op andere applicaties.

Acties:
  • 0 Henk 'm!

  • whoami
  • Registratie: December 2000
  • Laatst online: 11:59
dcm360 schreef op maandag 17 september 2018 @ 21:39:
Een deel van de wereld heeft dergelijke problemen dan ook al gewoon opgelost. De applicatie gaat een eigen container in, en krijgt daarin de benodigde dependencies zonder dat het invloed heeft op andere applicaties.
Dat lukt natuurlijk niet voor alle 'applicaties'.
Web applicaties, (micro) services, dat lukt allemaal wel, maar een desktop applicatie lijkt me wel een ander paar mouwen :)

https://fgheysels.github.io/


Acties:
  • 0 Henk 'm!

  • dcm360
  • Registratie: December 2006
  • Niet online

dcm360

Moderator Discord

HD7767 powered

whoami schreef op maandag 17 september 2018 @ 21:45:
[...]

Dat lukt natuurlijk niet voor alle 'applicaties'.
Web applicaties, (micro) services, dat lukt allemaal wel, maar een desktop applicatie lijkt me wel een ander paar mouwen :)
Het is niet helemaal mijn vakgebied, maar ook dat bestaat. Snappy op Linux en App-V op Windows kunnen prima overweg met desktop-applicaties.

Acties:
  • +1 Henk 'm!

  • R4gnax
  • Registratie: Maart 2009
  • Laatst online: 06-09 17:51
PageFault schreef op vrijdag 14 september 2018 @ 23:28:
De enige reden die ik kn bedenken: native code, geen framework nodig. Dat vind ik bij zowel Java als .NET het grootste nadeel.
Kuch...
.NET Core kan ook naar een native single-executable gecompileerd worden.

https://github.com/dotnet...tation/intro-to-corert.md

[ Voor 13% gewijzigd door R4gnax op 17-09-2018 23:54 ]


Acties:
  • 0 Henk 'm!

  • PageFault
  • Registratie: April 2002
  • Laatst online: 10-09 19:15
Handy, jammer dat weinig bedrijven dat doen.

Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 13:45

.oisyn

Moderator Devschuur®

Demotivational Speaker

R4gnax schreef op maandag 17 september 2018 @ 23:53:
[...]


Kuch...
.NET Core kan ook naar een native single-executable gecompileerd worden.

https://github.com/dotnet...tation/intro-to-corert.md
Naar UWP. Whooptidoo -O-

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!

  • Olaf van der Spek
  • Registratie: September 2000
  • Niet online
.oisyn schreef op zaterdag 15 september 2018 @ 11:00:
Wow, zelfs wij gebruiken dat al járen niet meer. :)
Jullie gebruiken out-of-line asm? :p

Acties:
  • +1 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 13:45

.oisyn

Moderator Devschuur®

Demotivational Speaker

Olaf van der Spek schreef op dinsdag 18 september 2018 @ 15:40:
[...]

Jullie gebruiken out-of-line asm? :p
Nee we schrijven gewoon direct microcode :+

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!

  • Olaf van der Spek
  • Registratie: September 2000
  • Niet online
dcm360 schreef op maandag 17 september 2018 @ 21:39:
Een deel van de wereld heeft dergelijke problemen dan ook al gewoon opgelost. De applicatie gaat een eigen container in, en krijgt daarin de benodigde dependencies zonder dat het invloed heeft op andere applicaties.
Is dat een oplossing of een workaround? ;)

Acties:
  • 0 Henk 'm!

  • Lethalis
  • Registratie: April 2002
  • Niet online
sig69 schreef op vrijdag 14 september 2018 @ 21:26:
Mij interesseert het me geen zak. Ik programmeer in C#. Daar ken ik alle ins en outs van. Waarom zou ik me druk moeten maken om C++, of zelfs assembly?
Ach, dan begrijp je misschien wat beter hoe .NET geïmplementeerd is.

En als een .NET Core applicatie dan niet wil draaien op een Linux machine, je tenminste een idee hebt van wat libuv is en waarom deze belangrijk is.

Dat soort dingetjes.

Ask yourself if you are happy and then you cease to be.


Acties:
  • 0 Henk 'm!

  • dcm360
  • Registratie: December 2006
  • Niet online

dcm360

Moderator Discord

HD7767 powered

Olaf van der Spek schreef op dinsdag 18 september 2018 @ 15:45:
[...]

Is dat een oplossing of een workaround? ;)
Wat vind je zelf? Ik zou eerder gaan voor neveneffect, want ik stop programma's niet in containers om deze reden.

  • InZane
  • Registratie: Oktober 2000
  • Laatst online: 14:01
Oke, het is niet gelijk heel slecht ofzo, maar ik kwam net deze tegen:
C#:
1
return StatusCode(HttpStatusCode.OK);

Ik denk dat dit te moeilijk was:
C#:
1
return Ok();

Acties:
  • +1 Henk 'm!

  • Reptile209
  • Registratie: Juni 2001
  • Laatst online: 13:28

Reptile209

- gers -

InZane schreef op woensdag 26 september 2018 @ 16:08:
Oke, het is niet gelijk heel slecht ofzo, maar ik kwam net deze tegen:
C#:
1
return StatusCode(HttpStatusCode.OK);

Ik denk dat dit te moeilijk was:
C#:
1
return Ok();
Toch kan, afhankelijk van de verdere context, de bovenste een stuk duidelijker zijn dan de onderste. Bij de bovenste weet ik gelijk dat het om een http-statuscode gaat. Bij de onderste kan die Ok op alles slaan, van de koffie tot de database tot je liefdesleven. Dan moet je die informatie bijvoorbeeld weer in een (lange) functienaam stoppen.

Zo scherp als een voetbal!


  • Mugwump
  • Registratie: Mei 2017
  • Nu online
Reptile209 schreef op woensdag 26 september 2018 @ 17:49:
[...]

Toch kan, afhankelijk van de verdere context, de bovenste een stuk duidelijker zijn dan de onderste. Bij de bovenste weet ik gelijk dat het om een http-statuscode gaat. Bij de onderste kan die Ok op alles slaan, van de koffie tot de database tot je liefdesleven. Dan moet je die informatie bijvoorbeeld weer in een (lange) functienaam stoppen.
Valt wel mee. Je zit dan al in een (API?)controller waar Ok() gewoon een inherited method is neem ik aan.

"The question of whether a computer can think is no more interesting than the question of whether a submarine can swim" - Edsger Dijkstra


  • InZane
  • Registratie: Oktober 2000
  • Laatst online: 14:01
Mugwump schreef op woensdag 26 september 2018 @ 17:53:
[...]


Valt wel mee. Je zit dan al in een (API?)controller waar Ok() gewoon een inherited method is neem ik aan.
Inderdaad, dit ging om een doodnormale API controller.

  • Alain
  • Registratie: Oktober 2002
  • Niet online
Een getter die een status retourneert i.p.v. de opgevraagde waarde en de waarde wegschrijft in een argument. Zo irritant. :-(

You don't have to be crazy to do this job, but it helps ....


  • ThomasG
  • Registratie: Juni 2006
  • Laatst online: 13:37
Alain schreef op woensdag 26 september 2018 @ 23:41:
Een getter die een status retourneert i.p.v. de opgevraagde waarde en de waarde wegschrijft in een argument. Zo irritant. :-(
Dat kom je in C heel vaak tegen :+ Waarbij de functie een int returned waarbij 0 geen fout is, en de output van de functie (bij geen fout) in een pointer zit.

  • kenneth
  • Registratie: September 2001
  • Niet online

kenneth

achter de duinen

Maar in C is dat nog enigszins idiomatisch. Dat is het in veel andere talen, waaronder ik aanneem die van Alain, niet bepaald.

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


  • Mugwump
  • Registratie: Mei 2017
  • Nu online
Alain schreef op woensdag 26 september 2018 @ 23:41:
Een getter die een status retourneert i.p.v. de opgevraagde waarde en de waarde wegschrijft in een argument. Zo irritant. :-(
Ik had serieus een collega die dit soort code schreef:

C#:
1
2
3
4
5
6
7
8
9
public Product ChangeSomethingOnProduct(string name, Product p) {
    
    p = new Product();
    p.setName(name);
    return p;   
}

Product myProduct = new Product();
myProduct = ChangeSomethingOnProduct("newName", myProduct);

"The question of whether a computer can think is no more interesting than the question of whether a submarine can swim" - Edsger Dijkstra


  • Sandor_Clegane
  • Registratie: Januari 2012
  • Niet online

Sandor_Clegane

Fancy plans and pants to match

Mugwump schreef op donderdag 27 september 2018 @ 13:00:
[...]


Ik had serieus een collega die dit soort code schreef:

C#:
1
2
3
4
5
6
7
8
9
public Product ChangeSomethingOnProduct(string name, Product p) {
    
    p = new Product();
    p.setName(name);
    return p;   
}

Product myProduct = new Product();
myProduct = ChangeSomethingOnProduct("newName", myProduct);
Waren er threading issues? Dit ziet er uit als een poor man's copy and update.

Less alienation, more cooperation.


Acties:
  • +1 Henk 'm!

  • Mugwump
  • Registratie: Mei 2017
  • Nu online
Sandor_Clegane schreef op donderdag 27 september 2018 @ 15:40:
[...]


Waren er threading issues? Dit ziet er uit als een poor man's copy and update.
Nee, gewoon een totaal gebrek aan kennis of inzicht. Toen ik betrokken raakte bij dit deel van een project omdat het voor geen meter liep en de code bekeek zag ik allemaal van dit soort constructies. Betreffende (lead :') ) developer kon geen enkel antwoord geven op waarom dit soort keuzes waren gemaakt. Die hebben we uiteindelijk ook vervangen en de codebase is nog steeds "under reconstruction". Er zijn nog delen van de codebase die niet herbouwd zijn naar iets fatsoenlijks en daar kost een kleine change mensen echt gewoon letterlijk 10 keer zoveel tijd als in de fatsoenlijk gestructureerde code.

"The question of whether a computer can think is no more interesting than the question of whether a submarine can swim" - Edsger Dijkstra


  • Sebazzz
  • Registratie: September 2006
  • Laatst online: 12:39

Sebazzz

3dp

Of met framework deployment bijgevoegd. Dan is dat gewoon onderdeel van de app.

Java kan dat ook min-of-meer, Jetbrains doet dat al voor Upsource en TeamCity. Niet helemaal hetzelfde, maar ala.

[Te koop: 3D printers] [Website] Agile tools: [Return: retrospectives] [Pokertime: planning poker]


  • Sandor_Clegane
  • Registratie: Januari 2012
  • Niet online

Sandor_Clegane

Fancy plans and pants to match

Mugwump schreef op donderdag 27 september 2018 @ 15:50:
[...]


Nee, gewoon een totaal gebrek aan kennis of inzicht. Toen ik betrokken raakte bij dit deel van een project omdat het voor geen meter liep en de code bekeek zag ik allemaal van dit soort constructies. Betreffende (lead :') ) developer kon geen enkel antwoord geven op waarom dit soort keuzes waren gemaakt. Die hebben we uiteindelijk ook vervangen en de codebase is nog steeds "under reconstruction". Er zijn nog delen van de codebase die niet herbouwd zijn naar iets fatsoenlijks en daar kost een kleine change mensen echt gewoon letterlijk 10 keer zoveel tijd als in de fatsoenlijk gestructureerde code.
Ah zo, dan is het gewoon een hoop meuk. :)

Less alienation, more cooperation.


Acties:
  • 0 Henk 'm!

  • Alain
  • Registratie: Oktober 2002
  • Niet online
code:
1
2
3
4
5
for (Battery b : batteries) {
    for (Cell c : b.getCells()) {
        interface.setTemperature(c.getTemperature());
    }
}

Wat bezielt iemand om dit soort code uit te poepen. Ga aub een andere baan zoeken ... :(

You don't have to be crazy to do this job, but it helps ....


Acties:
  • 0 Henk 'm!

  • Firesphere
  • Registratie: September 2010
  • Laatst online: 09:06

Firesphere

Yoshis before Hoshis

Alain schreef op vrijdag 5 oktober 2018 @ 01:00:
code:
1
2
3
4
5
for (Battery b : batteries) {
    for (Cell c : b.getCells()) {
        interface.setTemperature(c.getTemperature());
    }
}

Wat bezielt iemand om dit soort code uit te poepen. Ga aub een andere baan zoeken ... :(
Hoewel de code-samples hier regelmatig hilarisch zijn, mis ik vaak de context. Specifiek, de context van het moment van schrijven.
- Was de persoon die dit schreef ervaren of niet?
- Wat was de deadline?
- Hadden ze op het moment van schrijven betere opties, of was dit de beste optie die er was gegeven de kennis?
- Erkent de schrijver dat het achteraf gezien niet de beste oplossing was?

Er zijn zo veel factoren die beroerde code naar productie brengen. 1 engineer er op afrekenen daarentegen...

I'm not a complete idiot. Some parts are missing.
.Gertjan.: Ik ben een zelfstandige alcoholist, dus ik bepaal zelf wel wanneer ik aan het bier ga!


Acties:
  • 0 Henk 'm!

  • Matis
  • Registratie: Januari 2007
  • Laatst online: 15-09 20:13

Matis

Rubber Rocket

Alain schreef op vrijdag 5 oktober 2018 @ 01:00:
code:
1
2
3
4
5
for (Battery b : batteries) {
    for (Cell c : b.getCells()) {
        interface.setTemperature(c.getTemperature());
    }
}

Wat bezielt iemand om dit soort code uit te poepen. Ga aub een andere baan zoeken ... :(
Misschien ligt het aan mijn eigen arbeidsomgeving, maar wat is er daadwerkelijk zo slecht aan deze code? Wij hebben (zij het in PHP) ook regelmatig zulke constructies. Ik vind ze prettig lezen en het is vrij vlot duidelijk wat er gebeurt.

Daarnaast mist het, zoals @Firesphere terecht opmerkt, ontzettend aan context.

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


Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 13:45

.oisyn

Moderator Devschuur®

Demotivational Speaker

Nee, wat hier mist is kennis van C++, en dat is waarom jullie het niet zien ;). Er worden kopieën gemaakt van de batterijen en de cellen.

Overigens, een andere fout die blijkbaar ook niemand opvalt is dat alle temperaturen worden gezet via een enkele setter. Dus ofwel alleen de temperatuur van de laatste cell van de laatste battery blijft over, of die interface is heel raar ontworpen.

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!

  • Merethil
  • Registratie: December 2008
  • Laatst online: 07:52
.oisyn schreef op vrijdag 5 oktober 2018 @ 08:48:
Nee, wat hier mist is kennis van C++, en dat is waarom jullie het niet zien ;). Er worden kopieën gemaakt van de batterijen en de cellen.

Overigens, een andere fout die blijkbaar ook niemand opvalt is dat alle temperaturen worden gezet via een enkele setter. Dus ofwel alleen de temperatuur van de laatste cell van de laatste battery blijft over, of die interface is heel raar ontworpen.
Maar is het wel C++? En ja, die setter zat ik ook over na te denken maar ik heb ook wel setters gezien die eigenlijk onder water dingen bij elkaar optellen, of een gemiddelde nemen aan de hand van de voorgaande "set" values. Vies, maar het gebeurt helaas...

Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 13:45

.oisyn

Moderator Devschuur®

Demotivational Speaker

Hoeveel talen ken jij nog meer die de for (a : b) syntax gebruiken?

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:
  • +3 Henk 'm!

  • BladeSlayer1000
  • Registratie: April 2013
  • Laatst online: 13-09 23:40
.oisyn schreef op vrijdag 5 oktober 2018 @ 09:12:
[...]

Hoeveel talen ken jij nog meer die de for (a : b) syntax gebruiken?
Ik vanaf nu 1, C++ :P

Acties:
  • 0 Henk 'm!

  • Merethil
  • Registratie: December 2008
  • Laatst online: 07:52
.oisyn schreef op vrijdag 5 oktober 2018 @ 09:12:
[...]

Hoeveel talen ken jij nog meer die de for (a : b) syntax gebruiken?
Java: https://docs.oracle.com/j...ide/language/foreach.html

Java:
1
2
3
4
5
for (Suit suit : suits) {
    for (Rank rank : ranks) {
        sortedDeck.add(new Card(suit, rank));
    }
}


.... Ik dacht ook C# maar die gebruikt blijkbaar "in" ipv ":". Andere talen die dat doen ken ik zo niet off the top of my head.
kenneth schreef op vrijdag 5 oktober 2018 @ 09:19:
Ah, nu snap ik hem ook pas. Rare foreach-syntax, zal wel Java zijn :P Niet dus B)
Rare syntax? Ik vind hem best duidelijk, je geeft aan wat je object type zou moeten zijn uit een list van objecten en je hebt geen gezeik met index-out-of-bounds, een (of meerdere , bij nested forloops) counters die je bij moet houden en het leest best makkelijk naar mijn mening. Maar goed, ieder zijn ding daarin :P

[ Voor 45% gewijzigd door Merethil op 05-10-2018 09:22 ]


Acties:
  • 0 Henk 'm!

  • kenneth
  • Registratie: September 2001
  • Niet online

kenneth

achter de duinen

Ah, nu snap ik hem ook pas. Rare foreach-syntax, zal wel Java zijn :P Niet dus B)

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!

  • Matis
  • Registratie: Januari 2007
  • Laatst online: 15-09 20:13

Matis

Rubber Rocket

.oisyn schreef op vrijdag 5 oktober 2018 @ 08:48:
Nee, wat hier mist is kennis van C++, en dat is waarom jullie het niet zien ;). Er worden kopieën gemaakt van de batterijen en de cellen.
Dan is dat wel kwalijk. Een dergelijke constructie in PHP geeft een ArrayIterator of iets dergelijks terug.
Overigens, een andere fout die blijkbaar ook niemand opvalt is dat alle temperaturen worden gezet via een enkele setter. Dus ofwel alleen de temperatuur van de laatste cell van de laatste battery blijft over, of die interface is heel raar ontworpen.
Dat was me wel opgevallen, maar het ontbreekt hier aan zoveel context, dat ik niet weet of dit goed (gewenst) of fout (ongewenst) is.
Voor hetzelfde geld zit er achter interface een service welke een rood lampje laat aangaan als 1 van de cellen een bepaalde threshold overschrijdt.

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


Acties:
  • 0 Henk 'm!

  • P1nGu1n
  • Registratie: Juni 2011
  • Laatst online: 09:11
kenneth schreef op vrijdag 5 oktober 2018 @ 09:19:
Ah, nu snap ik hem ook pas. Rare foreach-syntax, zal wel Java zijn :P Niet dus B)
Ik dacht precies hetzelfde. Ik herkende het ook als Java code en zag, op die opvallende setTemperature call na, niks bijzonders _O-

Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live.


Acties:
  • 0 Henk 'm!

  • Merethil
  • Registratie: December 2008
  • Laatst online: 07:52
Matis schreef op vrijdag 5 oktober 2018 @ 09:29:
[...]

Dan is dat wel kwalijk. Een dergelijke constructie in PHP geeft een ArrayIterator of iets dergelijks terug.

[...]

Dat was me wel opgevallen, maar het ontbreekt hier aan zoveel context, dat ik niet weet of dit goed (gewenst) of fout (ongewenst) is.
Voor hetzelfde geld zit er achter interface een service welke een rood lampje laat aangaan als 1 van de cellen een bepaalde threshold overschrijdt.
In Java doet 'ie onderwater ook gewoon een iterator gebruiken, dus als het inderdaad Java is zoals ik hierboven aangaf, dan is het hoogstens jammer dat iemand loops moet nesten of geen streams gebruikt, maar verder is het prima. Syntax is wel een stuk duidelijker en compacter dan de andere opties naar mijn mening.

Setter blijft wel dubieus :P

Acties:
  • 0 Henk 'm!

  • Hydra
  • Registratie: September 2000
  • Laatst online: 21-08 17:09
P1nGu1n schreef op vrijdag 5 oktober 2018 @ 09:33:
Ik dacht precies hetzelfde. Ik herkende het ook als Java code en zag, op die opvallende setTemperature call na, niks bijzonders _O-
Idd. Dat is het enige rare. Vanuit de code lijkt het alsof je een O(n * m) complexe loop doet en alleen maar de laatste waarde overhoudt. Maar het kan prima zijn dat die setTemperature call eigenlijk een soort POST ofzo doet onderwater. Die nested loop is verder niet vreemd.

https://niels.nu


Acties:
  • +1 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 13:45

.oisyn

Moderator Devschuur®

Demotivational Speaker

Merethil schreef op vrijdag 5 oktober 2018 @ 09:18:
[...]


Java: https://docs.oracle.com/j...ide/language/foreach.html

Java:
1
2
3
4
5
for (Suit suit : suits) {
    for (Rank rank : ranks) {
        sortedDeck.add(new Card(suit, rank));
    }
}
Ah ok, ik dacht dat Java ook in gebruikte. Dan was het wellicht een verkeerde aanname van mij, ja :)
Matis schreef op vrijdag 5 oktober 2018 @ 09:29:
[...]

Dan is dat wel kwalijk. Een dergelijke constructie in PHP geeft een ArrayIterator of iets dergelijks terug.
C++ gebruikt ook een iterator onder water, maar dat is het punt helemaal niet :). In C++ is standaard alles een value-type. Bij SomeClass a = b; is a dus altijd een kopie van b. Wil je een reference, dan moet je & gebruiken.

C++:
1
2
3
4
5
for (Battery& b : batteries) {
    for (Cell& c : b.getCells()) {
        interface.setTemperature(c.getTemperature());
    }
}

[ Voor 7% gewijzigd door .oisyn op 05-10-2018 09:56 ]

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: 15-09 20:13

Matis

Rubber Rocket

.oisyn schreef op vrijdag 5 oktober 2018 @ 09:54:
C++ gebruikt ook een iterator onder water, maar dat is het punt helemaal niet :). In C++ is standaard alles een value-type. Bij SomeClass a = b; is a dus altijd een kopie van b. Wil je een reference, dan moet je & gebruiken.

C++:
1
2
3
4
5
for (Battery& b : batteries) {
    for (Cell& c : b.getCells()) {
        interface.setTemperature(c.getTemperature());
    }
}
Ohja, zo moest dat. Het is al weer een lange tijd geleden dat ik C++ heb gezien, laat staan geschreven.
Ik weet nog dat een oudcollega verknocht was om overal (waar mogelijk) const voor te knallen.
Heeft dat nog een impact op de perfomance?

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


Acties:
  • 0 Henk 'm!

  • Merethil
  • Registratie: December 2008
  • Laatst online: 07:52
.oisyn schreef op vrijdag 5 oktober 2018 @ 09:54:
[...]

Ah ok, ik dacht dat Java ook in gebruikte. Dan was het wellicht een verkeerde aanname van mij, ja :)


[...]

C++ gebruikt ook een iterator onder water, maar dat is het punt helemaal niet :). In C++ is standaard alles een value-type. Bij SomeClass a = b; is a dus altijd een kopie van b. Wil je een reference, dan moet je & gebruiken.

C++:
1
2
3
4
5
for (Battery& b : batteries) {
    for (Cell& c : b.getCells()) {
        interface.setTemperature(c.getTemperature());
    }
}
Edit: Nee, klopt niet wat ik schreef.
Verbetering op wat ik hier had staan:

In Java zijn het voor objecten geen copies, maar technisch gezien pointers by value, waardoor de overhead in dit geval dus ook laag is. Als het dus idd C++ is, is het not-done maar in Java kan het dus prima :)
Wel vet om weer eens te lezen hoe het in C++ zit, ik heb al jaren niets meer met die taal gedaan en ben het merendeel vergeten merk ik :+

[ Voor 38% gewijzigd door Merethil op 05-10-2018 10:19 ]


Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 13:45

.oisyn

Moderator Devschuur®

Demotivational Speaker

Matis schreef op vrijdag 5 oktober 2018 @ 09:58:
Ik weet nog dat een oudcollega verknocht was om overal (waar mogelijk) const voor te knallen.
Daar is best wat voor te zeggen. Het geeft aan de lezer van de code een duidelijk signaal dat je de variabele nooit gaat wijzigen.
Heeft dat nog een impact op de perfomance?
Kort door de bocht: nooit. Maar er is best een esoterisch voorbeeld te verzinnen waarbij het wellicht uitmaakt.

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!

  • Sissors
  • Registratie: Mei 2005
  • Niet online
Zoals alles wat embedded (mcus) wordt geprogrammeerd. Met const vertel je compiler dat het in het flash geheugen ipv sram geplaatst kan worden, wat enorm scheelt.

Dus zo esoterisch hoef je niet te gaan voor situaties waar het belangrijk is :p

Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 13:45

.oisyn

Moderator Devschuur®

Demotivational Speaker

Sissors schreef op vrijdag 5 oktober 2018 @ 10:04:
Zoals alles wat embedded (mcus) wordt geprogrammeerd. Met const vertel je compiler dat het in het flash geheugen ipv sram geplaatst kan worden, wat enorm scheelt.
Alleen voor globals of statics, en alleen voor simpele compile time literals. En dan kun je daar tegenwoordig beter constexpr van maken, dan hoeft het niet eens in flashgeheugen ;)

Maar als ik iemand hoor zeggen dat hij overal const voor plaatst, dan denk ik vooral aan lokale variabelen :)

[ Voor 30% gewijzigd door .oisyn op 05-10-2018 10:13 ]

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!

  • kenneth
  • Registratie: September 2001
  • Niet online

kenneth

achter de duinen

Als ik al in C++ werk dan geloof ik maar alles wat R# zegt dus mijn code staat ook vol met const O-)

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!

  • LOTG
  • Registratie: Augustus 2004
  • Laatst online: 09-09 13:40
Sandor_Clegane schreef op donderdag 27 september 2018 @ 15:40:
[...]


Waren er threading issues? Dit ziet er uit als een poor man's copy and update.
Waar is de copy en waar is de update? De eerste regel overschrijft meteen alles wat er eventueel in product zat.

Om eerlijk te zijn zou ik niet eens weten wat ik hier nog mee moet.

Acties:
  • 0 Henk 'm!

  • Alain
  • Registratie: Oktober 2002
  • Niet online
Matis schreef op vrijdag 5 oktober 2018 @ 08:28:
Daarnaast mist het, zoals @Firesphere terecht opmerkt, ontzettend aan context.
Beetje meer context had inderdaad wel gemogen. :)

Ik heb een project met "werkende" code gekregen die ik moet uitbreiden. We hebben één programmeur gehad (naar eigen zeggen ervaren C++ programmeur) en overal waar hij aan gewerkt hebt zie je dit soort dingen.

Zoals .oisyn aangeeft, krijg je in dit geval de waarde te zien van de laatste cel in de laatste batterij. Dan denk je echt niet na bij wat je doet. Ik zag deze fout toevallig omdat de laatste batterij uitviel en ik ineens 0 te zien kreeg, maar iets zegt mij dat ik de rest ook even moet screenen en heel goed testen. ;)
.oisyn schreef op vrijdag 5 oktober 2018 @ 08:48:
Nee, wat hier mist is kennis van C++, en dat is waarom jullie het niet zien ;). Er worden kopieën gemaakt van de batterijen en de cellen.
Goed om te weten, dat wist ik niet. Gelukkig zit de code iets anders in elkaar (itereert over een array). Het voorbeeld was meer als pseudo code bedoeld.

[ Voor 20% gewijzigd door Alain op 05-10-2018 23:12 ]

You don't have to be crazy to do this job, but it helps ....


Acties:
  • 0 Henk 'm!

  • Firesphere
  • Registratie: September 2010
  • Laatst online: 09:06

Firesphere

Yoshis before Hoshis

.oisyn schreef op vrijdag 5 oktober 2018 @ 08:48:
Nee, wat hier mist is kennis van C++, en dat is waarom jullie het niet zien ;). Er worden kopieën gemaakt van de batterijen en de cellen.

Overigens, een andere fout die blijkbaar ook niemand opvalt is dat alle temperaturen worden gezet via een enkele setter. Dus ofwel alleen de temperatuur van de laatste cell van de laatste battery blijft over, of die interface is heel raar ontworpen.
Ik geef rustig toe dat mijn C++ kennis niet compleet is :P (Ik las het trouwens ook als Java...)
Maar dat doet niets af van wat ik zei :)

[ Voor 3% gewijzigd door Firesphere op 05-10-2018 23:09 ]

I'm not a complete idiot. Some parts are missing.
.Gertjan.: Ik ben een zelfstandige alcoholist, dus ik bepaal zelf wel wanneer ik aan het bier ga!


  • Richh
  • Registratie: Augustus 2009
  • Laatst online: 11:39
Beetje dood hier in dit topic :P

Het is niet eens programmeren... maar gisteren is daadwerkelijk de volgende CSS-regel ingecheckt:
Cascading Stylesheet:
1
height: calc(90vh - 75vw);

Ja: wtf!

☀️ 4500wp zuid | 🔋MT Venus 5kW | 🚗 Tesla Model 3 SR+ 2020 | ❄️ Daikin 3MXM 4kW


  • HenkDePoema
  • Registratie: Oktober 2005
  • Laatst online: 15-09 15:29
Richh schreef op donderdag 28 februari 2019 @ 09:16:
Beetje dood hier in dit topic :P

Het is niet eens programmeren... maar gisteren is daadwerkelijk de volgende CSS-regel ingecheckt:
Cascading Stylesheet:
1
height: calc(90vh - 75vw);

Ja: wtf!
Dat is er eentje die toe is aan vakantie!

Acties:
  • +1 Henk 'm!

  • Ed Vertijsment
  • Registratie: Juli 2014
  • Laatst online: 10:10
Richh schreef op donderdag 28 februari 2019 @ 09:16:
Beetje dood hier in dit topic :P

Het is niet eens programmeren... maar gisteren is daadwerkelijk de volgende CSS-regel ingecheckt:
Cascading Stylesheet:
1
height: calc(90vh - 75vw);

Ja: wtf!
Ik zit oprecht mijzelf af te vragen wat hier geprobeerd is te doen (ja ik weet het topic, maar toch, iemand wou iets proberen bereiken).

Ik heb de volgende theorie:

- Er is een header van 10% van de schermhoogte (10vh)
- Daaronder zit in een (beeldend) scherm breed content vlak met een 3/4 beeldverhouding (75vw).
- Daaronder zit een footer met de resterende ruimte (90vh - 75vw);

Dit dus: https://codepen.io/svenvandescheur/pen/gEajxJ?editors=1100.

Mar dit is slechts een theorie.

  • Richh
  • Registratie: Augustus 2009
  • Laatst online: 11:39
Ed Vertijsment schreef op donderdag 28 februari 2019 @ 16:02:
[...]


Ik zit oprecht mijzelf af te vragen wat hier geprobeerd is te doen (ja ik weet het topic, maar toch, iemand wou iets proberen bereiken).

Ik heb de volgende theorie:

- Er is een header van 10% van de schermhoogte (10vh)
- Daaronder zit in een (beeldend) scherm breed content vlak met een 3/4 beeldverhouding (75vw).
- Daaronder zit een footer met de resterende ruimte (90vh - 75vw);

Dit dus: https://codepen.io/svenvandescheur/pen/gEajxJ?editors=1100.

Mar dit is slechts een theorie.
Je moet er niet zoveel achter zoeken :P

Ik heb de desbetreffende collega, die wat wil leren op front-end vlak, deze fiddle aangeleverd: https://jsfiddle.net/8ryndebu/

En aangegeven dat die 100px uit de fiddle aangepast moet worden op onze eigen applicatie. Moet immers niet alles voorkauwen. Er zit immers een header in van 60 pixels en dan heb je nog een beetje padding om dit element heen.
Moet lukken, toch?

Hoe deze collega het heeft bedacht om '75vw' toe te voegen, is mij dus ook écht een totaal raadsel.

Het enige wat ik kan bedenken is dat er random 'vw' is ontstaan en dat er bij is blijven stellen tot dat toevallig het aantal pixels opleverde wat paste icm het scherm van de collega.
Want: "maar het werkt op mijn scherm" |:( |:(

Zit op dit moment uit te leggen dat het niet echt nuttig is om overal een border van 1px omheen te zetten, om daarna alles een margin van -1px te geven.

☀️ 4500wp zuid | 🔋MT Venus 5kW | 🚗 Tesla Model 3 SR+ 2020 | ❄️ Daikin 3MXM 4kW


  • Ed Vertijsment
  • Registratie: Juli 2014
  • Laatst online: 10:10
Richh schreef op donderdag 28 februari 2019 @ 16:48:
[...]

Je moet er niet zoveel achter zoeken :P

Ik heb de desbetreffende collega, die wat wil leren op front-end vlak, deze fiddle aangeleverd: https://jsfiddle.net/8ryndebu/

En aangegeven dat die 100px uit de fiddle aangepast moet worden op onze eigen applicatie. Moet immers niet alles voorkauwen. Er zit immers een header in van 60 pixels en dan heb je nog een beetje padding om dit element heen.
Moet lukken, toch?

Hoe deze collega het heeft bedacht om '75vw' toe te voegen, is mij dus ook écht een totaal raadsel.

Het enige wat ik kan bedenken is dat er random 'vw' is ontstaan en dat er bij is blijven stellen tot dat toevallig het aantal pixels opleverde wat paste icm het scherm van de collega.
Want: "maar het werkt op mijn scherm" |:( |:(

Zit op dit moment uit te leggen dat het niet echt nuttig is om overal een border van 1px omheen te zetten, om daarna alles een margin van -1px te geven.
Punt was hier natuurlijk dat er zonder context geen uitspraak gedaan kan worden of de desbetreffende regel wel of geen functie had. Ik had dan ook niet zo veel moeite om een use case te bedenken waarin de regel een valide antwoord zou kunnen zijn.

Dat gezegd hebbende, random pixels/procenten/(rems)/vhs of vws inmikken zonder verklaring waarom het werkt is natuurlijk nooit een goed idee.

Sjiek stukje scss/BEM trouwens. Alleen kunnen we alsjeblieft een keer stoppen met left en right gebruiken in classnames. Niet persoonlijk bedoeld natuurlijk, maar wat als we nou op mobiel zitten en alles onder elkaar komt? Of een vertaling maken naar een rechts-naar-links taal?

Kun je natuurlijk zeggen "doen we toch niet", maar dat weet je niet en veranderd niets aan best practice om gewoon een goede naam te bedenken in plaats van links of rechts.

  • Richh
  • Registratie: Augustus 2009
  • Laatst online: 11:39
@Ed Vertijsment klopt inderdaad, er valt wel iets voor te verzinnen. Dat was echter hier niet het geval :P de breedte was hier totaal niet relevant.

Wat betreft left/right: dat is hier in het voorbeeld om niet teveel applicatie classes te verklappen, anders wordt 't immers ook weer erg simpel.
Al heb je wel helemaal gelijk. Ik geef mijn classes ook bij voorkeur een naam die met de inhoud te maken heeft ipv left/right.

☀️ 4500wp zuid | 🔋MT Venus 5kW | 🚗 Tesla Model 3 SR+ 2020 | ❄️ Daikin 3MXM 4kW


Acties:
  • 0 Henk 'm!

  • BertS
  • Registratie: September 2004
  • Laatst online: 14-04 17:14
Een pareltje dat ik zojuist tegenkwam:
Visual Basic:
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
strToevoeg = CStr(Year(Now))
If Month(Now) < 10 Then
    strToevoeg = strToevoeg & "0" & CStr(Month(Now))
Else
    strToevoeg = strToevoeg & CStr(Month(Now))
End If
If Day(Now) < 10 Then
    strToevoeg = strToevoeg & "0" & CStr(Day(Now))
Else
    strToevoeg = strToevoeg & CStr(Day(Now))
End If
If Hour(Now) < 10 Then
    strToevoeg = strToevoeg & "0" & CStr(Hour(Now))
Else
    strToevoeg = strToevoeg & CStr(Hour(Now))
End If
If Minute(Now) < 10 Then
    strToevoeg = strToevoeg & "0" & CStr(Minute(Now))
Else
    strToevoeg = strToevoeg & CStr(Minute(Now))
End If
If Second(Now) < 10 Then
    strToevoeg = strToevoeg & "0" & CStr(Second(Now))
Else
    strToevoeg = strToevoeg & CStr(Second(Now))
End If

Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 13:45

.oisyn

Moderator Devschuur®

Demotivational Speaker

Mooi hoe die code ook iets kan printen dat een maand achter loopt als je pech hebt :)

[ Voor 7% gewijzigd door .oisyn op 01-04-2019 10:43 ]

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!

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 09:15

Janoz

Moderator Devschuur®

!litemod

Een jaar zelfs hmm, now is natuurlijk geen functie maar een variable

[ Voor 68% gewijzigd door Janoz op 01-04-2019 14:20 ]

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


Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 13:45

.oisyn

Moderator Devschuur®

Demotivational Speaker

Janoz schreef op maandag 1 april 2019 @ 14:19:
Een jaar zelfs hmm, now is natuurlijk geen functie maar een variable
Ah ja, die jaar bovenaan zag ik niet.

Maar je hebt een punt. Ik ging er vanuit dat het iets als de DateTime.Now property was.

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!

  • BertS
  • Registratie: September 2004
  • Laatst online: 14-04 17:14
Janoz schreef op maandag 1 april 2019 @ 14:19:
Een jaar zelfs hmm, now is natuurlijk geen functie maar een variable
Het is wel een functie, namelijk deze (ok, ik had niet vermeld dat het VBA is, maar ook niet dat het .NET is ;-)).

Acties:
  • 0 Henk 'm!

  • F.West98
  • Registratie: Juni 2009
  • Laatst online: 01:12

F.West98

Alweer 16 jaar hier

.oisyn schreef op maandag 1 april 2019 @ 10:42:
Mooi hoe die code ook iets kan printen dat een maand achter loopt als je pech hebt :)
:?
Wat mis ik hier?

2x Dell UP2716D | R9 7950X | 128GB RAM | 980 Pro 2TB x2 | RTX2070 Super
.oisyn: Windows is net zo slecht in commandline als Linux in GUI


Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 13:45

.oisyn

Moderator Devschuur®

Demotivational Speaker

Now is een property en geeft dus altijd de huidige tijd weer. Wat als de klok omslaat van 31-12-2018 23:59:59 naar 1-01-2019 0:00:00 op regel 2?

Tevens kan het een "0" voor iets zetten wat inmiddels alweer groter is dan 9, of juist een "0" missen als iets terugrolt naar 0.

[ Voor 18% gewijzigd door .oisyn op 01-04-2019 16:01 ]

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!

  • F.West98
  • Registratie: Juni 2009
  • Laatst online: 01:12

F.West98

Alweer 16 jaar hier

.oisyn schreef op maandag 1 april 2019 @ 15:59:
[...]


Now is een property en geeft dus altijd de huidige tijd weer. Wat als de klok omslaat van 31-12-2018 23:59:59 naar 1-01-2019 0:00:00 op regel 2?

Tevens kan het een "0" voor iets zetten wat inmiddels alweer groter is dan 9, of juist een "0" missen als iets terugrolt naar 0.
Oh ja sure, dat is natuurlijk een optie. Ik dacht dat je ergens anders op doelde, want dit is niet "als je pech hebt", maar ik denk bijna een kleinere kans dan de loterij winnen :+

2x Dell UP2716D | R9 7950X | 128GB RAM | 980 Pro 2TB x2 | RTX2070 Super
.oisyn: Windows is net zo slecht in commandline als Linux in GUI


Acties:
  • +1 Henk 'm!

  • Olaf van der Spek
  • Registratie: September 2000
  • Niet online
F.West98 schreef op maandag 1 april 2019 @ 16:07:
[...]

Oh ja sure, dat is natuurlijk een optie. Ik dacht dat je ergens anders op doelde, want dit is niet "als je pech hebt", maar ik denk bijna een kleinere kans dan de loterij winnen :+
Het is 1 april dus ik hoop dat je een grapje maakt...

Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
F.West98 schreef op maandag 1 april 2019 @ 16:07:
Oh ja sure, dat is natuurlijk een optie. Ik dacht dat je ergens anders op doelde, want dit is niet "als je pech hebt", maar ik denk bijna een kleinere kans dan de loterij winnen :+
Doe mij maar dezelfde kansen bij de loterij dan! *O*
Het is natuurlijk zwaar afhankelijk van hoe vaak die code gedraaid word maar er is een aanzienlijke kans (waarbij de definitie van aanzienlijk natuurlijk voor iedereen anders is).
En de oplossing is zo simpel: foo = Now en vervolgens overal foo gebruiken. Maar goed, dan is de rest van die baggercode nog niet weg :X

[ Voor 33% gewijzigd door RobIII op 01-04-2019 16:41 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • DynaSpan
  • Registratie: Maart 2013
  • Laatst online: 03-09 12:00
RobIII schreef op maandag 1 april 2019 @ 16:24:
[...]

Dan mij maar dezelfde kansen bij de loterij dan! *O*
Het is natuurlijk zwaar afhankelijk van hoe vaak die code gedraaid word maar er is een aanzienlijke kans (waarbij de definitie van aanzienlijk natuurlijk voor iedereen anders is).
En de oplossing is zo simpel: foo = Now en vervolgens overal foo gebruiken. Maar goed, dan is de rest van die baggercode nog niet weg :X
Hangt er natuurlijk vanaf of de taal pass-by-value of pass-by-reference hanteert :)

Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
DynaSpan schreef op maandag 1 april 2019 @ 16:32:
[...]


Hangt er natuurlijk vanaf of de taal copy-by-value of copy-by-reference hanteert :)
Het gaat hier om VBScript ;)

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • +1 Henk 'm!

  • Alex)
  • Registratie: Juni 2003
  • Laatst online: 21-08 11:20
Dan kun je nog beter doen wat ik ooit in een inherited codebase aantrof...

C#:
1
2
var dateTime = DateTime.Now;
var minute = (dateTime.Second + 100).ToString().Substring(1);


Het verdient niet de schoonheidsprijs, maar het geeft geen foute output. :)

We are shaping the future


Acties:
  • 0 Henk 'm!

  • F.West98
  • Registratie: Juni 2009
  • Laatst online: 01:12

F.West98

Alweer 16 jaar hier

RobIII schreef op maandag 1 april 2019 @ 16:24:
[...]

Doe mij maar dezelfde kansen bij de loterij dan! *O*
Het is natuurlijk zwaar afhankelijk van hoe vaak die code gedraaid word maar er is een aanzienlijke kans (waarbij de definitie van aanzienlijk natuurlijk voor iedereen anders is).
En de oplossing is zo simpel: foo = Now en vervolgens overal foo gebruiken. Maar goed, dan is de rest van die baggercode nog niet weg :X
Ik keur het niet goed hoor! Maar inderdaad afhankelijk van hoe vaak die code draait. Als dat 1x per dag is dan is de kans dat het op maandniveau fout gaat minimaal. De kans dat het op enig niveau fout gaat is natuurlijk een stuk groter.

2x Dell UP2716D | R9 7950X | 128GB RAM | 980 Pro 2TB x2 | RTX2070 Super
.oisyn: Windows is net zo slecht in commandline als Linux in GUI


Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 13:45

.oisyn

Moderator Devschuur®

Demotivational Speaker

DynaSpan schreef op maandag 1 april 2019 @ 16:32:
[...]


Hangt er natuurlijk vanaf of de taal pass-by-value of pass-by-reference hanteert :)
Er is geen argument passing, het gaat om het opslaan van het resultaat van een functie :)
Alex) schreef op maandag 1 april 2019 @ 16:37:
Dan kun je nog beter doen wat ik ooit in een inherited codebase aantrof...

C#:
1
2
var dateTime = DateTime.Now;
var minute = (dateTime.Second + 100).ToString().Substring(1);


Het verdient niet de schoonheidsprijs, maar het geeft geen foute output. :)
Dan hoop ik wel dat die variabele gewoon verkeerd is genoemd dan ;)

[ Voor 43% gewijzigd door .oisyn op 01-04-2019 19:15 ]

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!

  • Alex)
  • Registratie: Juni 2003
  • Laatst online: 21-08 11:20
.oisyn schreef op maandag 1 april 2019 @ 19:11:
[...]
Dan hoop ik wel dat die variabele gewoon verkeerd is genoemd dan ;)
Oh :F

Goed opgemerkt :P

We are shaping the future


Acties:
  • 0 Henk 'm!

  • BertS
  • Registratie: September 2004
  • Laatst online: 14-04 17:14
Gelukkig doet het allemaal niet veel meer dan een bestandsnaam uniek maken voor archivering, en de 'service' die dit uitvoert draait niet rond middernacht. Maar ik vond het wel bijzonder bedacht terwijl er ook gewoon een Format functie is.

[ Voor 10% gewijzigd door BertS op 01-04-2019 19:36 ]


Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 13:45

.oisyn

Moderator Devschuur®

Demotivational Speaker

@BertS Het gaat elke minuut 2x fout, he ;). Van xx:yy:09 naar 10 en van 59 naar 00. Waarbij die laatste potentieel een duplicate timestamp kan genereren.

[ Voor 29% gewijzigd door .oisyn op 01-04-2019 19:45 ]

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!

  • Olaf van der Spek
  • Registratie: September 2000
  • Niet online
.oisyn schreef op maandag 1 april 2019 @ 19:45:
@BertS Het gaat elke minuut 2x fout, he ;). Van xx:yy:09 naar 10 en van 59 naar 00. Waarbij die laatste potentieel een duplicate timestamp kan genereren.
09 -> 11, 01 -> 00 en veel meer zouden ook nog voor kunnen komen. ;)

Acties:
  • 0 Henk 'm!

  • heuveltje
  • Registratie: Februari 2000
  • Laatst online: 12:12

heuveltje

KoelkastFilosoof

F.West98 schreef op maandag 1 april 2019 @ 16:07:
[...]

Oh ja sure, dat is natuurlijk een optie. Ik dacht dat je ergens anders op doelde, want dit is niet "als je pech hebt", maar ik denk bijna een kleinere kans dan de loterij winnen :+
Ligt eraan, zo te zien is het bedoeld om een op de seconde nauwkeure timestamp voor iets te zetten.
Dan is de kans ook vrij groot dat het om de paar seconde word aangeroepen.

Als je elke 2 seconde een kraslot koopt, is de kans op de loterij winnen best groot :P

Heuveltjes CPU geschiedenis door de jaren heen : AMD 486dx4 100, Cyrix PR166+, Intel P233MMX, Intel Celeron 366Mhz, AMD K6-450, AMD duron 600, AMD Thunderbird 1200mhz, AMD Athlon 64 x2 5600, AMD Phenom X3 720, Intel i5 4460, AMD Ryzen 5 3600 5800x3d


Acties:
  • 0 Henk 'm!

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 09:15

Janoz

Moderator Devschuur®

!litemod

Murphy dicteert dat dit een keer voor gaat komen. En moet je dan eens voorstellen hoe lang je op zoek bent naar dit heel vreemde productie probleem waarbij ergens vorige maand iets vreemds gebeurt is met de gegevens van de maand daarvoor ofzo.

Of waarom je een specifieke export niet terug kan vinden.

[ Voor 11% gewijzigd door Janoz op 02-04-2019 11:31 ]

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


  • ElkeBxl
  • Registratie: Oktober 2014
  • Laatst online: 02-07 09:03

ElkeBxl

Tassendraagster

code:
1
2
3
4
5
private getCode(column:string):string {
    switch (column) {
        default: return column;
    }
}

Er zal een reden voor geweest zijn... maar ik kan ze echt niet bedenken...
* ElkeBxl hits the delete button

Without nipples, boobs are pointless - 365 project - In mijn hoofd is het alle dagen Kerstmis - What type of bees make milk? Boobies! - What type of bees are scary? BoooOOOOOooobeees! - Cactusliefhebster


  • CurlyMo
  • Registratie: Februari 2011
  • Laatst online: 15-09 22:47
ElkeBxl schreef op donderdag 5 september 2019 @ 16:08:
code:
1
2
3
4
5
private getCode(column:string):string {
    switch (column) {
        default: return column;
    }
}

Er zal een reden voor geweest zijn... maar ik kan ze echt niet bedenken...
* ElkeBxl hits the delete button
Op dit moment zal die reden er ook niet zijn. Dat neemt niet weg dat dit een abstractie zou kunnen zijn die in de toekomst nut kan krijgen. Bijv. omdat de column code via een bepaalde logica wordt getransformeerd naar een andere code.

Sinds de 2 dagen regel reageer ik hier niet meer


  • HeleBoel
  • Registratie: September 2013
  • Laatst online: 10:26
CurlyMo schreef op donderdag 5 september 2019 @ 16:14:
[...]

Op dit moment zal die reden er ook niet zijn. Dat neemt niet weg dat dit een abstractie zou kunnen zijn die in de toekomst nut kan krijgen. Bijv. omdat de column code via een bepaalde logica wordt getransformeerd naar een andere code.
YAGNI

Acties:
  • +1 Henk 'm!

  • SPee
  • Registratie: Oktober 2001
  • Nu online
CurlyMo schreef op donderdag 5 september 2019 @ 16:14:
[...]
Op dit moment zal die reden er ook niet zijn. Dat neemt niet weg dat dit een abstractie zou kunnen zijn die in de toekomst nut kan krijgen. Bijv. omdat de column code via een bepaalde logica wordt getransformeerd naar een andere code.
Ik denk eerder dat dit het resultaat is van het verwijderen van functionaliteit. Dus dat vroeger meer cases in die switch zaten, maar die niet meer van toepassing waren en dus verwijderd. Alleen niet verder nagedacht om ook die switch (of methode) te schonen.

let the past be the past.


Acties:
  • +4 Henk 'm!

  • PrisonerOfPain
  • Registratie: Januari 2003
  • Laatst online: 26-05 17:08
Inderdaad, schrijf die abstractie dan in te toekomst maar.

Acties:
  • +2 Henk 'm!

  • Xantios
  • Registratie: Maart 2006
  • Laatst online: 13-09 11:53
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
                        return 'succes';
                    }
                    else {
                        return 'error';
                    }
                }
                else {
                    return 'error';
                }
            }
            else {
                return 'error';
            }
        }
        else {
            return 'error';
        }
    }


Booleans zijn blijkbaar te moeilijk, en wat de F hoeveel genested if's heeft een mens nodig >.> *grom*

Acties:
  • +1 Henk 'm!

  • CurlyMo
  • Registratie: Februari 2011
  • Laatst online: 15-09 22:47
Xantios schreef op woensdag 18 september 2019 @ 11:28:
Booleans zijn blijkbaar te moeilijk, en wat de F hoeveel genested if's heeft een mens nodig >.> *grom*
Lang leven de goto.

* CurlyMo zet zich schrap :+

Sinds de 2 dagen regel reageer ik hier niet meer

Pagina: 1 ... 16 ... 20 Laatste

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. :)