[alg] Slechtste programmeervoorbeelden deel 4 Vorige deel Overzicht Laatste deel

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

Pagina: 1 ... 64 ... 103 Laatste
Acties:
  • 993.640 views

Acties:
  • 0 Henk 'm!

  • Voutloos
  • Registratie: Januari 2002
  • Niet online
PrisonerOfPain schreef op donderdag 21 juli 2011 @ 22:02:
[...]
Recursief en performant gaan meestal niet goed samen anders. Laat ik het zo zeggen; meestal is de iteratieve oplossing de snellere.
Je reactie (en met name de originele vorm) is best ironisch. Het ging mij met name om de opmerking van het blind volgen van regeltjes en vervolgens voel je je genoodzaakt een arbitraire regel te verdedigen. :Y)

{signature}


Acties:
  • 0 Henk 'm!

  • PrisonerOfPain
  • Registratie: Januari 2003
  • Laatst online: 26-05 17:08
Voutloos schreef op donderdag 21 juli 2011 @ 22:10:
[...]
Je reactie (en met name de originele vorm) is best ironisch. Het ging mij met name om de opmerking van het blind volgen van regeltjes en vervolgens voel je je genoodzaakt een arbitraire regel te verdedigen. :Y)
Och, er is een reden dat tail-call-optimization de functie transformeert naar een iteratieve vorm ;) Verder zijn arbitrair en meetbaar verschillende dingen.

[ Voor 6% gewijzigd door PrisonerOfPain op 21-07-2011 22:13 ]


Acties:
  • 0 Henk 'm!

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

Matis

Rubber Rocket

Soultaker schreef op donderdag 21 juli 2011 @ 21:45:
Tja, hoeveel slechter de programmeurs zijn, des te meer zin dat soort maatregelen hebben...
Ik vind het jammer dat je wilt insinueren dat wij slechte programmeurs zijn, omdat we statische code analyse toepassen, zonder ook maar één regel code van ons gezien te hebben.
Dit geeft eigenlijk alleen maar aan hoe kortzichtig sommige programmeurs zijn: "Ik maak dat soort fouten niet", "Ik weet precies wat mijn applicatie doet" en "Dit stukje code kan niet fout gaan" zijn hen waarschijnlijk op het lijf geschreven.

Wij maken industriële toepassingen waar jij dagelijks mee te maken krijgt, zonder er ook maar enig benul van te hebben.
Omdat onze software niet met alt+ctrl+delete, taakbeheer of een RDP-sessie te beheren is en 24/7/365 draait in afgesloten ruimtes, moet het wel helemaal dichtgetimmerd worden en geen enkele memory leak hebben.
Onze producten worden naast statische studio's en uitzendstraten ook bij grote sportevenementen (WK voetbal, Tour de France, Roland Garros; om maar een greep te doen) gebruikt.
Onze klanten kunnen het zich dan ook niet permitteren dat de zender voor 1 minuut op zwart gaat terwijl er een kaart van ons opnieuw opstart; Dit is al gebeurt en de oorzaak was één onschuldige ; te veel. De schadeclaims liepen daarbij in de honderdduizenden Euro's.
Dan is een analyse-tool snel terugverdiend. Want na het invoeren van de analyse, werd die beruchte code door FlexeLint gehaald en hij ving de ; te veel netjes af en gaf er ook een critical warning op.

Om mijn raaskal toch quasi grappig af te sluiten; Een probleem veroorzaakt door één van onze producten, waardoor het laatste woord van een ondertitel bleef hangen. MTV Networks kan er nu om lachen, maar toen niet.
[YouTube: http://www.youtube.com/watch?v=tZ8TiSwHp28&hd=1]

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


Acties:
  • 0 Henk 'm!

  • acemoo
  • Registratie: Maart 2006
  • Laatst online: 21:21
Matis schreef op donderdag 21 juli 2011 @ 22:27:
[...]

Ik vind het jammer dat je wilt insinueren dat wij slechte programmeurs zijn, omdat we statische code analyse toepassen, zonder ook maar één regel code van ons gezien te hebben.
Dit geeft eigenlijk alleen maar aan hoe kortzichtig sommige programmeurs zijn: "Ik maak dat soort fouten niet", "Ik weet precies wat mijn applicatie doet" en "Dit stukje code kan niet fout gaan" zijn hen waarschijnlijk op het lijf geschreven.

Wij maken industriële toepassingen waar jij dagelijks mee te maken krijgt, zonder er ook maar enig benul van te hebben.
Omdat onze software niet met alt+ctrl+delete, taakbeheer of een RDP-sessie te beheren is en 24/7/365 draait in afgesloten ruimtes, moet het wel helemaal dichtgetimmerd worden en geen enkele memory leak hebben.
Onze producten worden naast statische studio's en uitzendstraten ook bij grote sportevenementen (WK voetbal, Tour de France, Roland Garros; om maar een greep te doen) gebruikt.
Onze klanten kunnen het zich dan ook niet permitteren dat de zender voor 1 minuut op zwart gaat terwijl er een kaart van ons opnieuw opstart; Dit is al gebeurt en de oorzaak was één onschuldige ; te veel. De schadeclaims liepen daarbij in de honderdduizenden Euro's.
Dan is een analyse-tool snel terugverdiend. Want na het invoeren van de analyse, werd die beruchte code door FlexeLint gehaald en hij ving de ; te veel netjes af en gaf er ook een critical warning op.

Om mijn raaskal toch quasi grappig af te sluiten; Een probleem veroorzaakt door één van onze producten, waardoor het laatste woord van een ondertitel bleef hangen. MTV Networks kan er nu om lachen, maar toen niet.
[video]
Ondanks dat het wel klopt dat hoe beter de programmeur is hoe minder dit soort dingen nodig zijn, ze blijven nodig als je gewoon een fout vrij programma wil maken. Programmeurs zijn mensen en mensen maken fouten.
Gelukkig maar, anders was dit topic overbodig geweest.

Acties:
  • 0 Henk 'm!

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

.oisyn

Moderator Devschuur®

Demotivational Speaker

PrisonerOfPain schreef op donderdag 21 juli 2011 @ 22:02:
[...]


Recursief en performant gaan meestal niet goed samen anders. Laat ik het zo zeggen; meestal is de iteratieve oplossing de snellere.
Het is jammer dat je louter reageert op het performance argument. Want kwa leesbaarheid en onderhoudbaarheid is de iteratieve variant meestal nou juist niet de beste keuze.
Matis schreef op donderdag 21 juli 2011 @ 22:27:
[...]

Ik vind het jammer dat je wilt insinueren dat wij slechte programmeurs zijn, omdat we statische code analyse toepassen, zonder ook maar één regel code van ons gezien te hebben.
Nee, die conclusie trek je nu zelf. Wat Soultaker zegt is dat dergelijke regels méér zin hebben bij slechte programmeurs. Lees het vraagstuk over rondjes, hoeken en punten nog eens door en denk dan nog eens goed na over wat Soultaker wel zegt en wat niet.

Ik kom trouwens in mijn dagelijkse werk zelden fouten tegen van een dergelijk kaliber (verkeerde haakjes, ;'s teveel, etc.). Meestal zijn het logica-fouten, verkeerde aannames, of slecht uitgewerkte algoritmen. Die ga je er met geen enkele statische code analyse tool uit halen.

[ Voor 52% gewijzigd door .oisyn op 21-07-2011 23:18 ]

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!

  • PrisonerOfPain
  • Registratie: Januari 2003
  • Laatst online: 26-05 17:08
.oisyn schreef op donderdag 21 juli 2011 @ 23:03:
[...]


Het is jammer dat je louter reageert op het performance argument. Want kwa leesbaarheid en onderhoudbaarheid is de iteratieve variant meestal nou juist niet de beste keuze.
Met die argumenten ben ik het eens; vandaar dat ik er niet op in ging :)

Acties:
  • 0 Henk 'm!

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

Matis

Rubber Rocket

.oisyn schreef op donderdag 21 juli 2011 @ 23:03:
Nee, die conclusie trek je nu zelf. Wat Soultaker zegt is dat dergelijke regels méér zin hebben bij slechte programmeurs.
We zijn het er (hopelijk) allebei over eens dat programmeurs fouten maken. De ene misschien wat meer dan de ander, maar dat zegt niets over de kwaliteit van de programmeur. Waar het om gaat is de impact van de fout die gemaakt wordt. En de kans die te voorkomen.
Nu kan stagiair X 100 fouten maken in een stukje software dat niet kritisch is en senior architect Y maar één foutje waardoor alle creditcard-gegevens op straat komen te liggen. Of de remmen van de Prius niet meer werken en er een aantal mensen zich doodrijden.
Wij proberen er met statische code analyse alles aan te doen om mogelijke fouten er uit te halen. Bij ervaren/goede programmeurs pikt het er misschien maar 2 aandachtspunten uit en bij een junior 20, maar het zijn er altijd meer dan dat de software zo de deur uit gaat.
Lees het vraagstuk over rondjes, hoeken en punten nog eens door en denk dan nog eens goed na over wat Soultaker wel zegt en wat niet.
o <> ..

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


Acties:
  • 0 Henk 'm!

  • Jegorex
  • Registratie: April 2004
  • Laatst online: 03-09 23:24
Het hangt er natuurlijk ook vanaf hoe belangrijk de software is.
Als er een bug in een RSS reader zit zal de wereld waarschijnlijk niet vergaan, maar als er een bug in de software van een vliegtuig zit kunnen er 100'en doden vallen.

Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Jegorex schreef op vrijdag 22 juli 2011 @ 16:15:
Het hangt er natuurlijk ook vanaf hoe belangrijk de software is.
Als er een bug in een RSS reader zit zal de wereld waarschijnlijk niet vergaan, maar als er een bug in de software van een vliegtuig zit kunnen er 100'en doden vallen.
Toch veroorzaken zelfs onschuldig(e) (lijkende) applicaties met onschuldige foutjes soms ook een boel ophef :P

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!

  • BarôZZa
  • Registratie: Januari 2003
  • Laatst online: 03:02
Matis schreef op donderdag 21 juli 2011 @ 23:19:
[...]
We zijn het er (hopelijk) allebei over eens dat programmeurs fouten maken. De ene misschien wat meer dan de ander, maar dat zegt niets over de kwaliteit van de programmeur. Waar het om gaat is de impact van de fout die gemaakt wordt. En de kans die te voorkomen.
Nu kan stagiair X 100 fouten maken in een stukje software dat niet kritisch is en senior architect Y maar één foutje waardoor alle creditcard-gegevens op straat komen te liggen. Of de remmen van de Prius niet meer werken en er een aantal mensen zich doodrijden.
Euhhhh... Jawel. Als de stagiair op de positie van de Prius-programmeur had gezeten, dan waren ze nu misschien autonoom Carmageddon aan het spelen :+ . Je zet natuurlijk de betere programmeur(kwaliteit) op de zaken die een grote impact kunnen hebben in plaats van de stagiair. Dat diegene alsnog een fout kan maken die verstrekkende gevolgen heeft doet niets af aan het feit dat het een kwalitatief betere programmeur is.
.oisyn schreef op donderdag 21 juli 2011 @ 23:03:

Nee, die conclusie trek je nu zelf. Wat Soultaker zegt is dat dergelijke regels méér zin hebben bij slechte programmeurs.
Maar maatregelen om fouten te voorkomen hebben per definitie meer zin bij mensen die meer fouten maken. Dat lijkt me overbodig om te vermelden, dus lijkt me dat hij wel degelijk iets insinueerde.

Voor de rest kan het soms best nuttig zijn om gewoon domweg blindelings wat (al dan niet omslachtige) regeltjes te volgen in plaats van je hersenen te laten kraken met de daarbij mogelijke denkfoutjes. Sowieso is programmeren imo vaak 90% saai en suf werk. We willen ons alleen vaak eventjes een genie wanen door een briljant stukje code te schrijven waarvan de toegevoegde waarde niet eens merkbaar hoeft te zijn ;)

Acties:
  • 0 Henk 'm!

  • Tim
  • Registratie: Mei 2000
  • Laatst online: 04-08 16:29

Tim

Via Slashdot: http://pro.sony.com/bbsc/jsp/forms/generateCaptcha.jsp (zie source)

Het kan haast niet anders of er moet ergens een programmeur zijn die zichzelf geniaal vond nadat hij dit in elkaar had gezet...

Acties:
  • 0 Henk 'm!

  • Aloys
  • Registratie: Juni 2005
  • Niet online
Fijn dat ie het gewoon bij tekst houdt, zo kan je het tenminste makkelijk kopiëren vanuit de bron :+ .

Acties:
  • 0 Henk 'm!

Verwijderd

Aloys schreef op vrijdag 22 juli 2011 @ 19:15 (edited by Nightspirit):
spoiler:
Fijn dat ie het gewoon bij tekst houdt, zo kan je het tenminste makkelijk kopiëren vanuit de bron :+ .
Ja joh, verklap de clou meteen ;)

Acties:
  • 0 Henk 'm!

  • Styxxy
  • Registratie: Augustus 2009
  • Laatst online: 01-10 14:14
En ik maar proberen op mijn rechtermuisknop te rammen, werkt dat niet. ctrl+u doen en dan zien dat die gedisabled wordt (om dan nog eens te beginnen wenen over de code en uiteindelijk gewoon de CAPTCHA in de code te zien staan). Als programmeur zou ik echt extreem beschaamd zijn om dit brouwsel.

Acties:
  • 0 Henk 'm!

Verwijderd

Mijn oude werkgever, waar ik nu zo'n 2.5 jaar weg been heeft onlangs een nieuwe versie van een programma gepost, op zijn website. Het programma bestaat uit 99.0 uit pure Java code, met wat native (c/c++) calls.
Maar toen ik er nog werkte runde ik altijd voor release een obfuscate programma. Maar wat denk je, ik gisteren even de nieuwe trial gedownload( in 2.5 jaar bijna niks veranderd ) , en de .jar even door een de-compiler gehaald,
en wat blijkt, de code is geeneens door een obfuscator gehaald. Redelijke misser als je t mij vraagt ;)

Acties:
  • 0 Henk 'm!

  • Freee!!
  • Registratie: December 2002
  • Laatst online: 20:54

Freee!!

Trotse papa van Toon en Len!

Verwijderd schreef op zaterdag 23 juli 2011 @ 11:00:
Redelijke misser als je t mij vraagt ;)
Ja, maar van het management, ik zou het geen programmeerfout willen noemen.

The problem with common sense is that sense never ain't common - From the notebooks of Lazarus Long

GoT voor Behoud der Nederlandschen Taal [GvBdNT


Acties:
  • 0 Henk 'm!

  • Webgnome
  • Registratie: Maart 2001
  • Laatst online: 23:00
Verwijderd schreef op zaterdag 23 juli 2011 @ 11:00:
Mijn oude werkgever, waar ik nu zo'n 2.5 jaar weg been heeft onlangs een nieuwe versie van een programma gepost, op zijn website. Het programma bestaat uit 99.0 uit pure Java code, met wat native (c/c++) calls.
Maar toen ik er nog werkte runde ik altijd voor release een obfuscate programma. Maar wat denk je, ik gisteren even de nieuwe trial gedownload( in 2.5 jaar bijna niks veranderd ) , en de .jar even door een de-compiler gehaald,
en wat blijkt, de code is geeneens door een obfuscator gehaald. Redelijke misser als je t mij vraagt ;)
En waarom is dit een programmeerfout? Wat is er wezenlijk functioneel anders als de code door een obfuscater was gehaald? Niks/nada toch? Dit is meer een rant omdat je verwacht dat het obfuscated wordt aangeboden maar dat hoeft dus lang niet..

Strava | AP | IP | AW


Acties:
  • 0 Henk 'm!

  • Stroopwafels
  • Registratie: September 2009
  • Laatst online: 01-10 09:10
Moest even snel iets in een database wijzigen maar had waarschijnlijk de WHERE statement niet goed geschreven.
Toen kwam er "DELETE FROM tabelnaam" successfully executed te staan in het scherm.

FML. Gelukkig niet al te belangrijke data.

Acties:
  • 0 Henk 'm!

  • Zsub
  • Registratie: Juli 2006
  • Laatst online: 22:26
So ooops...

Had een script geschreven dat Jenkins artifacts via FTP zou uploaden naar een remote server, met een remote subdirectory (onder httpdocs) gelijk aan de jobname. Alles prima, de jobname werd lowercase gemaakt vanwege consistentie. Er werd ook een mdelete gedaan op $remote-httpdocs/$jobname/*.

Dus ik draai het script, en zie als output dat $remote-httpdocs/* succesvol gedelete is.

Blijkbaar een klein typefoutje gemaakt, $jobname was niet gevuld, toen kon die server een dag terug in de tijd vanwege restore. Oh en vrijwel al onze klanten maken gebruik van die server.

Acties:
  • 0 Henk 'm!

  • YopY
  • Registratie: September 2003
  • Laatst online: 13-07 01:14
Zsub schreef op zaterdag 23 juli 2011 @ 21:04:
So ooops...

Had een script geschreven dat Jenkins artifacts via FTP zou uploaden naar een remote server, met een remote subdirectory (onder httpdocs) gelijk aan de jobname. Alles prima, de jobname werd lowercase gemaakt vanwege consistentie. Er werd ook een mdelete gedaan op $remote-httpdocs/$jobname/*.

Dus ik draai het script, en zie als output dat $remote-httpdocs/* succesvol gedelete is.

Blijkbaar een klein typefoutje gemaakt, $jobname was niet gevuld, toen kon die server een dag terug in de tijd vanwege restore. Oh en vrijwel al onze klanten maken gebruik van die server.
Pro tip: Test eerst lokaal, :p.

Acties:
  • 0 Henk 'm!

  • Webgnome
  • Registratie: Maart 2001
  • Laatst online: 23:00
Zsub schreef op zaterdag 23 juli 2011 @ 21:04:
So ooops...

Had een script geschreven dat Jenkins artifacts via FTP zou uploaden naar een remote server, met een remote subdirectory (onder httpdocs) gelijk aan de jobname. Alles prima, de jobname werd lowercase gemaakt vanwege consistentie. Er werd ook een mdelete gedaan op $remote-httpdocs/$jobname/*.

Dus ik draai het script, en zie als output dat $remote-httpdocs/* succesvol gedelete is.

Blijkbaar een klein typefoutje gemaakt, $jobname was niet gevuld, toen kon die server een dag terug in de tijd vanwege restore.Oh en vrijwel al onze klanten maken gebruik van die server.
En dat was het einde van je carierre? 8)7

Strava | AP | IP | AW


Acties:
  • 0 Henk 'm!

  • whoami
  • Registratie: December 2000
  • Laatst online: 06:43
Verwijderd schreef op zaterdag 23 juli 2011 @ 11:00:
Mijn oude werkgever, waar ik nu zo'n 2.5 jaar weg been heeft onlangs een nieuwe versie van een programma gepost, op zijn website. Het programma bestaat uit 99.0 uit pure Java code, met wat native (c/c++) calls.
Maar toen ik er nog werkte runde ik altijd voor release een obfuscate programma. Maar wat denk je, ik gisteren even de nieuwe trial gedownload( in 2.5 jaar bijna niks veranderd ) , en de .jar even door een de-compiler gehaald,
en wat blijkt, de code is geeneens door een obfuscator gehaald. Redelijke misser als je t mij vraagt ;)
what's the big deal ?

https://fgheysels.github.io/


Acties:
  • 0 Henk 'm!

  • Zsub
  • Registratie: Juli 2006
  • Laatst online: 22:26
Webgnome schreef op zaterdag 23 juli 2011 @ 23:57:
[...]


En dat was het einde van je carierre? 8)7
Niet eens, niet eens :P Maar was wel ff peentjes zweten!

Acties:
  • 0 Henk 'm!

Verwijderd

Ik heb ook een keer de gehele User table verwijderd door een verkeerde query. Damn you, live programmeurs!

(Dat was bij mijn eerste baan in de webontwikkeling. Sinds dien heb ik veel geleerd :') )

Acties:
  • 0 Henk 'm!

  • eBoR
  • Registratie: April 2011
  • Laatst online: 10-09 20:09
Verwijderd schreef op zondag 24 juli 2011 @ 13:31:
Ik heb ook een keer de gehele User table verwijderd door een verkeerde query. Damn you, live programmeurs!

(Dat was bij mijn eerste baan in de webontwikkeling. Sinds dien heb ik veel geleerd :') )
Je moet het wel een beetje spannend houden :P
Altijd leuk die dilemma's van maak ik eerst een backup van de live db of gok ik er op >:)

Tot op heden nog altijd goed gegokt 8)

Acties:
  • 0 Henk 'm!

  • Apache
  • Registratie: Juli 2000
  • Laatst online: 21:00

Apache

amateur software devver

elke delete/update eerst schrijven als een select om te zien of je wel het juiste gaat doen lijkt mij het minste. In de praktijk moet je dan vaak nog 3 omgevingen door eer het op productie word uitgevoerd. En het uitvoeren op productie gebeurt vaak door een andere afdeling dan de onze, op die manier worden der meestal weinig fouten gemaakt bij ons.

Vroeger was het wel anders, af en toe moest er echt ssnel iets gefixed worden, gelukkig een goeie dba en dan kan die alles wel terugzetten vanuit de undo tablespace van oracle zolang je geen tables truncate. Hebben hem wel vaak geplaagd door tabellen/triggers aan te maken met als naam een reserved oracle keyword. Ook after logon triggers die errors throwen zijn fun vooral omdat je op connecterende hostname kan checken >:)

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


Acties:
  • 0 Henk 'm!

  • Zoijar
  • Registratie: September 2001
  • Niet online

Zoijar

Because he doesn't row...

Stroopwafels schreef op zaterdag 23 juli 2011 @ 20:07:
Moest even snel iets in een database wijzigen maar had waarschijnlijk de WHERE statement niet goed geschreven.
Toen kwam er "DELETE FROM tabelnaam" successfully executed te staan in het scherm.

FML. Gelukkig niet al te belangrijke data.
Tip: Altijd eerst een select doen, kijken wat je terug krijgt, en dan select door delete vervangen.

oh, lol, dat staat hierboven ook hehe. Nouja, goede tip dus ;)

[ Voor 6% gewijzigd door Zoijar op 24-07-2011 14:49 ]


Acties:
  • 0 Henk 'm!

  • Dido
  • Registratie: Maart 2002
  • Laatst online: 01-10 12:06

Dido

heforshe

Apache schreef op zondag 24 juli 2011 @ 14:05:
elke delete/update eerst schrijven als een select om te zien of je wel het juiste gaat doen lijkt mij het minste. In de praktijk moet je dan vaak nog 3 omgevingen door eer het op productie word uitgevoerd.
Zolang je zeker weet op welke omgeving je bezig bent gaat dat op ja :X

* Dido heeft ooit 95% van een de klantentabel leeggegooid...
Ik dacht dat ik in een ontwikkelomgeving zat, en had even snel wat testdata nodig, geen hele tabel. En in de productieomgeving had mijn userID toch geen delete-rechten.

Fout 1: Ik zat dus wel in productie.
Fout 2: na een eerder project waarbij een paar ID's meer rechten hadden gekregen waren de rechtensets niet volledig aangepast.

Resultaat: ik heb de afstand van mijn bureau naar dat van de DBA in absolute recordtijd afgelegd 8)

Wat betekent mijn avatar?


Acties:
  • 0 Henk 'm!

Verwijderd

Apache schreef op zondag 24 juli 2011 @ 14:05:
elke delete/update eerst schrijven als een select om te zien of je wel het juiste gaat doen lijkt mij het minste. In de praktijk moet je dan vaak nog 3 omgevingen door eer het op productie word uitgevoerd. En het uitvoeren op productie gebeurt vaak door een andere afdeling dan de onze, op die manier worden der meestal weinig fouten gemaakt bij ons.
code:
1
rollback;
? :P

Acties:
  • 0 Henk 'm!

  • YopY
  • Registratie: September 2003
  • Laatst online: 13-07 01:14
Wat ook helpt: Nadenken over gebruikersaccounts. 99% van het werk heb je geen delete-rechten nodig op je live database, dus doe 99% van het werk ook met een account met beperkte rechten.

Dat geldt ook voor het account dat vanuit je code queries uitvoert: het grote merendeel gebruikt gewoon een account met alle rechten, want da's lekker makkelijk. 'DROP TABLE users; -- is ook lekker makkelijk dan.

Acties:
  • 0 Henk 'm!

  • Freee!!
  • Registratie: December 2002
  • Laatst online: 20:54

Freee!!

Trotse papa van Toon en Len!

YopY schreef op zondag 24 juli 2011 @ 19:20:
Wat ook helpt: Nadenken over gebruikersaccounts. 99% van het werk heb je geen delete-rechten nodig op je live database, dus doe 99% van het werk ook met een account met beperkte rechten.
Zelfs dan kan het nog fout gaan, zie het verhaal van Dido hierboven.

The problem with common sense is that sense never ain't common - From the notebooks of Lazarus Long

GoT voor Behoud der Nederlandschen Taal [GvBdNT


Acties:
  • 0 Henk 'm!

  • Alex)
  • Registratie: Juni 2003
  • Laatst online: 21-08 11:20
Dan kan het altijd nog fout gaan met UPDATE _O-

We are shaping the future


Acties:
  • 0 Henk 'm!

  • Haan
  • Registratie: Februari 2004
  • Nu online

Haan

dotnetter

Alex) schreef op maandag 25 juli 2011 @ 00:32:
Dan kan het altijd nog fout gaan met UPDATE _O-
:Y
Ook een keer even snel een paar kolommen bijgewerkt volgens wens van klant, alleen hadden ze hun wens niet helemaal goed geformuleerd... Toen moest ook de database een kwartier terug gezet worden.

Kater? Eerst water, de rest komt later


Acties:
  • 0 Henk 'm!

  • YopY
  • Registratie: September 2003
  • Laatst online: 13-07 01:14
Dan moet je dat soort dingen maar niet direct op je live-omgeving doen, :+.

Dat, of door iemand anders laten doen, zodat die de schuld krijgt.

[ Voor 31% gewijzigd door YopY op 25-07-2011 09:05 ]


Acties:
  • 0 Henk 'm!

  • Erkens
  • Registratie: December 2001
  • Niet online

Erkens

Fotograaf

YopY schreef op maandag 25 juli 2011 @ 09:04:
Dan moet je dat soort dingen maar niet direct op je live-omgeving doen, :+.

Dat, of door iemand anders laten doen, zodat die de schuld krijgt.
Probleem van iemand anders het te laten doen is dat je nog meer mensen DB access moet geven :P

Acties:
  • 0 Henk 'm!

Verwijderd

Nou bij deze dan een 'echte' programmeer fout, as usual duurde het weer een paar uur om het te vinden:

C++:
1
2
3
4
5
6
7
8
alVector3f newPoint;
    for( int i = 0; i < m_treeList.size(); i++ )
    {
        if( treePtr = m_treeList[i].m_currentTreePtr )
        {   
            newPoint =  m_treeList[i].m_treeTransformFloat.transformVec( point );
        }
    }

Acties:
  • 0 Henk 'm!

  • CodeCaster
  • Registratie: Juni 2003
  • Niet online

CodeCaster

Can I get uhm...

Je mist een break / return? :P

spoiler:
Wellicht een idee om in een spoiler de fout erbij te plaatsen? Of is deze zo obvious dat ik toch maar eens C++ moet gaan leren? :P

[ Voor 70% gewijzigd door CodeCaster op 25-07-2011 18:47 ]

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


Acties:
  • 0 Henk 'm!

Verwijderd

Nee, bekijk die 'if statement' maar eens goed...en ik mezelf maar afvragen, waarom mn vertices steeds op andere plaatsen stonden;)

Acties:
  • 0 Henk 'm!

  • Icekiller2k6
  • Registratie: Februari 2005
  • Laatst online: 01-10 15:57
enkele = ipv ==?

MT Venus E 5KW (V151) P1 HomeWizard | Hackerspace Brixel te Hasselt (BE) - http://www.brixel.be | 9800X3D, 96GB DDR5 6000MHZ, NVIDIA GEFORCE 4090, ASRock X670E Steel Legend, Seasonic GX1000


Acties:
  • 0 Henk 'm!

Verwijderd

Ja, soms code ik te snel...;)

Acties:
  • 0 Henk 'm!

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

Matis

Rubber Rocket

Misschien toch maar eens de compiler wat meer laten mekkeren ;). Bijvoorbeeld door -Wall en -Werror te gebruiken, of door dit specifieke probleem af te vangen door de compiler het volgende argument mee te geven.
-Wparentheses:
  Warn if parentheses are omitted in certain contexts, such as when there is an assignment in a context where a truth value is expected, or when operators are nested whose precedence people often get confused about. 

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


Acties:
  • 0 Henk 'm!

  • urk_forever
  • Registratie: Juni 2001
  • Laatst online: 29-09 15:54
Feast your eyes on this:

C#:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
        public delegate void NoArgDelegate();

        NoArgDelegate RunSyncAsDelegate()
        { return delegate() { Synchronize(true); }; }

        private void bgwSync_DoWork(object sender, DoWorkEventArgs e)
        {
            while (true) // constantly run
            {
                if (Properties.Settings.Default.BackgroundSyncEnabled && !IsInitializing)
                {
                    try
                    {
                        Invoke
                        (
                            RunSyncAsDelegate()
                        );

                        Thread.Sleep(Properties.Settings.Default.BackgroundSyncTime);

                    }
                    catch { }
                }
                else
                {
                    Thread.Sleep(1000);
                }
            }
        }


spoiler:
Een background worker gebruiken om een delegate te invoken die op de main thread uitgevoerd wordt? :? What where they thinking. So lockt de GUI nog steeds tijdens het updaten 8)7

Hail to the king baby!


Acties:
  • 0 Henk 'm!

Verwijderd

code:
1
2
3
4
5
6
        for(MyClass *something in self.Items)
        {
            // If there is any item that is already valid, return yes
            if ([MyClass.startDate earlierDate:[NSDate date]] == MyClass.startDate)
                return YES;
        }

*zucht*

Acties:
  • 0 Henk 'm!

Verwijderd

urk_forever schreef op maandag 25 juli 2011 @ 22:28:
Feast your eyes on this:

C#:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
        public delegate void NoArgDelegate();

        NoArgDelegate RunSyncAsDelegate()
        { return delegate() { Synchronize(true); }; }

        private void bgwSync_DoWork(object sender, DoWorkEventArgs e)
        {
            while (true) // constantly run
            {
                if (Properties.Settings.Default.BackgroundSyncEnabled && !IsInitializing)
                {
                    try
                    {
                        Invoke
                        (
                            RunSyncAsDelegate()
                        );

                        Thread.Sleep(Properties.Settings.Default.BackgroundSyncTime);

                    }
                    catch { }
                }
                else
                {
                    Thread.Sleep(1000);
                }
            }
        }


spoiler:
Een background worker gebruiken om een delegate te invoken die op de main thread uitgevoerd wordt? :? What where they thinking. So lockt de GUI nog steeds tijdens het updaten 8)7
Ook while(true)? Echt?

Acties:
  • 0 Henk 'm!

  • BasieP
  • Registratie: Oktober 2000
  • Laatst online: 22-07-2024
Ik vind dit persoonlijk heel ranzig, en iets wat je echt niet moet willen, maar ik hoor graag jullie meningen hierover.
(ben met code review bezig)

C#:
1
2
3
#if LibVersion30||LibVersion40Old||LibVersion40
using MyFirstLibrary.Entity;
#endif

Wat je dus aan't doen ben is in een project, afhankelijk van parameters tijdens het bouwen bepaalde libraries laten includen of niet.
Dus als je compiletime de variabele 'LibVersion30' hebt gedefnieerd (of een van die andere) dan gebruik je een bepaalde library, anders niet.

voordeel is wel dat je 1 stuk code hebt dat voor een aantal onderliggende versies van een library gaat werken. Zelfs als die hele onderliggende library op de schop is gegaan.

nadeel is dat het een enorme chaos bestand wordt, en dat het wachten is op het moment dat je een keer een hele class of methode gaat gebruiken die in zo'n #if blok moet...

[ Voor 24% gewijzigd door BasieP op 27-07-2011 13:14 ]

This message was sent on 100% recyclable electrons.


Acties:
  • 0 Henk 'm!

  • Haan
  • Registratie: Februari 2004
  • Nu online

Haan

dotnetter

Maar betekent die constructie dan ook dat er elders in de code zulke checks staan? Want als je die namespace niet beschikbaar hebt, zal je moeten terugvallen op een ander alternatief?

Kater? Eerst water, de rest komt later


Acties:
  • 0 Henk 'm!

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

Matis

Rubber Rocket

In onze library zit de HAL zo ook in elkaar. In een lokaal-bestand definieer je voor welk platform je wilt compileren. ARM32, XSCALE, X86 en afhankelijk daarvan worden bepaalde bestanden wel, dan wel niet gebruikt.
Ik zie het als een stukje interfacing, maar dan voor niet-objectgeoriënteerde programmeertalen.

In jouw specifieke geval is het wel ranzig, want als LibVersion41 uitkomt, dan moet ook de library weer aangepast worden en opnieuw uitgerold worden.

Persoonlijk vind ik het niet ranzig, te meer omdat je nu geen overhead hebt in deze specifieke code als je (bijvoorbeeld) LibVersion20 gebruikt.

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


Acties:
  • 0 Henk 'm!

  • whoami
  • Registratie: December 2000
  • Laatst online: 06:43
using != includen.

https://fgheysels.github.io/


Acties:
  • 0 Henk 'm!

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

Matis

Rubber Rocket

Dat weet ik, maar het bericht:
BasieP schreef op woensdag 27 juli 2011 @ 13:11:
Wat je dus aan't doen ben is in een project, afhankelijk van parameters tijdens het bouwen bepaalde libraries laten includen of niet.
Dus BasieP haalt include en using door elkaar, of er gebeurd wat anders binnen de #if :)

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


Acties:
  • 0 Henk 'm!

Verwijderd

Verwijderd schreef op dinsdag 26 juli 2011 @ 09:57:
code:
1
2
3
4
5
6
        for(MyClass *something in self.Items)
        {
            // If there is any item that is already valid, return yes
            if ([MyClass.startDate earlierDate:[NSDate date]] == MyClass.startDate)
                return YES;
        }

*zucht*
Je doelt hier op het gebruik van MyClass i.p.v. de *something pointer of het vergelijken van 2 gelijke datums? Blijf dat Objective-C maar een lastige taal vinden om te lezen t.o.v. de standaard C/C++ syntax

Acties:
  • 0 Henk 'm!

  • BasieP
  • Registratie: Oktober 2000
  • Laatst online: 22-07-2024
Matis schreef op woensdag 27 juli 2011 @ 13:31:
[...]

Dus BasieP haalt include en using door elkaar, of er gebeurd wat anders binnen de #if :)
correct, ik bedoel using. Alle libs zijn geinclude, anders kan je uberhaupt niet werken met die condities.

Verder staan inderdaad door de hele code heen zulke constructies. Persoonlijk zou ik gewoon een branch getrokken hebben, en wijzigingen doorvoeren op mijn branch(es) wellicht meerdere, maar dan merk je direct het nadeel van het veranderen van een interface van een veelgebruikt component.

Verder zou je natuurlijk kunnen zeggen dat je niet voor niets je interface wijzigt, en dus verbeteringen aanbrengt, en graag wil dat iedereen de verbeteringen mee krijgt.
Stel dat je een bugfix doet, wil je graag dat iedereen ook daadwerkelijk die bugfix meekrijgt. Een bugfix kan je meestal op meerdere branches doorvoeren, maar als je branches enorm uiteen gaan lopen (je hebt hele oude code) dan is het in mijn ogen niet verkeerd om gewoon afscheid te nemen van je oude versie, en iedereen te verplicht in ieder geval naar een redelijk recente versie te gaan.

Wanneer je zulke acties doet zal je in dit geval weer door al je code moeten spitten om al die compiletime condities weer te verwijderen/aan te passen.

* BasieP is meer voor het bouwen van een adapter. De adapter zet je tussen je nieuwe library (inclusief bugfixes etc.) en je oude projectje, die nog van de oude library gebruik wil maken.

Ding doet simpele vertaal acties.

This message was sent on 100% recyclable electrons.


Acties:
  • 0 Henk 'm!

  • Dido
  • Registratie: Maart 2002
  • Laatst online: 01-10 12:06

Dido

heforshe

Ik zal julli enit evervelen met LANSA, maar in pseudocode kwam ik net goed verstopt dit juweeltje tegen:

- Haal een default emailadres op.
- Controleer of dit een valide emailadres is.
- Zo niet, vraag de grebruiker om een ander emailadres.
- Controleer of dat adres valide is.
- Gebruik tenslotte het default emailadres.

Eh, ja. OK, de gebruiker heeft de mogelijkheid om wat hij invult meteen als default te zetten, in welk geval alles goed gaat. Maar als je dat niet doet gaat het dus logischerwijs niet lekker 8)7

Wat betekent mijn avatar?


Acties:
  • 0 Henk 'm!

  • SPee
  • Registratie: Oktober 2001
  • Laatst online: 23:32
Dido schreef op woensdag 27 juli 2011 @ 18:23:
Ik zal julli enit evervelen met LANSA, maar in pseudocode kwam ik net goed verstopt dit juweeltje tegen:

- Haal een default emailadres op.
- Controleer of dit een valide emailadres is.
- Zo niet, vraag de grebruiker om een ander emailadres.
- Controleer of dat adres valide is.
- Gebruik tenslotte het default emailadres.

Eh, ja. OK, de gebruiker heeft de mogelijkheid om wat hij invult meteen als default te zetten, in welk geval alles goed gaat. Maar als je dat niet doet gaat het dus logischerwijs niet lekker 8)7
Als het adres dat een gebruiker invult en als default zet niet valide is, dan heeft hij bij de laatste stap alsnog een ongeldig adres ;)
Tenzij je psuedocode niet exact weergeeft wat de code doet :)

let the past be the past.


Acties:
  • 0 Henk 'm!

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

Matis

Rubber Rocket

Pff, ik ben bezig om een aantal van onze zakelijke pdf-document te scrapen middels php; Daarvoor heb ik een standaard stukje code van teh interwebz geplukt: http://www.webcheatsheet....g_clean_text_from_pdf.php
Eerst op een aantal lipsum pdfjes getest, werkte prima. Daarna begonnen met het scrapen van de echte document. Daar kwamen me toch gekke dingen uit.
Uiteindelijk na het debuggen van de code bleek dat zinnen met daarin woorden die met minstens een letter beginnen en daarna eindigen op et (zoals vet, mEt tablET etc. etc.) matchen op de
PHP:
1
                if (preg_match_all("#BT(.*)ET#ismU", $data, $textContainers)) {
en dus worden afgebroken :/

Nu maar eens een nette manier vinden om er voor te zorgen dat die zinnen niet matchen. Misschien dat ik iets kan doen met de omsluitende haakjes.

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


Acties:
  • 0 Henk 'm!

  • ZpAz
  • Registratie: September 2005
  • Laatst online: 01:04
Like WTF.

PHP:
1
2
3
4
5
6
7
    echo '<script type="text/javascript">


  document.write(\'<script type="text/javascript" src="'. GFCommon::get_base_url() . '/js/conditional_logic.js"></scr\' + \'ipt>\'); 
    document.write(\'<link rel="stylesheet" id="gforms_css-css" href="'. GFCommon::get_base_url() . '/css/forms.css" type="text/css" media="all" />\'); 
  
</script>';

Tweakers Time Machine Browser Extension | Chrome : Firefox


Acties:
  • 0 Henk 'm!

  • jacobras
  • Registratie: Januari 2005
  • Laatst online: 30-09 17:51

jacobras

Developer

Lol 8)7 Om het geheel af te maken ook nog maar even <script> in twee stukken opdelen :P

JavaScript:
1
'</scr\' + \'ipt>\');  

[ Voor 9% gewijzigd door jacobras op 27-07-2011 22:51 ]

Mijn laatste (grote) reviews: Medal of Honor (VR), Half-Life: Alyx (VR)


Acties:
  • 0 Henk 'm!

  • ZpAz
  • Registratie: September 2005
  • Laatst online: 01:04
jacobras schreef op woensdag 27 juli 2011 @ 22:50:
[...]

Lol 8)7 Om het geheel af te maken ook nog maar even <script> in twee stukken opdelen :P

JavaScript:
1
'</scr\' + \'ipt>\');  
Die is dan wel weer logisch, anders denkt de JS parser dat het script daadwerkelijk bij de eerste </script> opgehouden is. Maar dan nog 8)7

Tweakers Time Machine Browser Extension | Chrome : Firefox


Acties:
  • 0 Henk 'm!

  • jacobras
  • Registratie: Januari 2005
  • Laatst online: 30-09 17:51

jacobras

Developer

ZpAz schreef op woensdag 27 juli 2011 @ 22:55:
[...]


Die is dan wel weer logisch, anders denkt de JS parser dat het script daadwerkelijk bij de eerste </script> opgehouden is. Maar dan nog 8)7
Oh ja, da's misschien wel handig inderdaad ;)

Mijn laatste (grote) reviews: Medal of Honor (VR), Half-Life: Alyx (VR)


Acties:
  • 0 Henk 'm!

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

.oisyn

Moderator Devschuur®

Demotivational Speaker

Hmm, ik mis nog een eval().

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!

  • jacobras
  • Registratie: Januari 2005
  • Laatst online: 30-09 17:51

jacobras

Developer

.oisyn schreef op woensdag 27 juli 2011 @ 23:02:
[...]

Hmm, ik mis nog een eval().
Wilde ik net posten, dat had het geheel echt afgemaakt :+

Mijn laatste (grote) reviews: Medal of Honor (VR), Half-Life: Alyx (VR)


Acties:
  • 0 Henk 'm!

  • Dido
  • Registratie: Maart 2002
  • Laatst online: 01-10 12:06

Dido

heforshe

SPee schreef op woensdag 27 juli 2011 @ 18:39:
Als het adres dat een gebruiker invult en als default zet niet valide is, dan heeft hij bij de laatste stap alsnog een ongeldig adres ;)
Tenzij je psuedocode niet exact weergeeft wat de code doet :)
Hij controleert wel of het ingevulde adres geldig is en accepteert geen ongeldig adres. Maar de WTF zit er natuurlijk in dat als de gebruiker het aders niet als default zet, je met een ongeldig adres gaat werken, en negeert wat de gebruiker heeft ingevuld |:(

Het ergste is misschien nog wel dat deze code waarschijnlijk gec/p'd is van mijn eigen code ergens anders. Geen idee of ik dezelfde brainwave erin had zitten toen, maar ik zie me er wel voor aan :+

Wat betekent mijn avatar?


Acties:
  • 0 Henk 'm!

  • PrisonerOfPain
  • Registratie: Januari 2003
  • Laatst online: 26-05 17:08
Recht van /r/programming de AbstractSingletonProxyFactoryBean

http://static.springsourc...etonProxyFactoryBean.html

Acties:
  • 0 Henk 'm!

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

.oisyn

Moderator Devschuur®

Demotivational Speaker

Lol, hoeveel patterns kun je in 1 class stoppen :P

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!

  • _Apache_
  • Registratie: Juni 2007
  • Laatst online: 21:07

_Apache_

For life.

Net een kleine applicatie onder handen gehad. Databasediagram goed bekeken, maar één tabel met foreign key, netjes bijgewerkt. Locatiekantoor opgeruimd, oude records gekoppeld aan ander kantoor. Alle data verder allemaal consistent.

Start de applicatie, doe een intake..
"ArgumentOutOfRangeException"
Ok, applicatie 6 locatie's minder niet verdragen.
* _Apache_ voegt een 'fopkantoor' toe
Start de applicatie, alles werkt weer...
* _Apache_ gooit het fopkantoor weg.
"ArgumentOutOfRangeException"
Zelfs nog alle id's aansluitend gemaakt, maar het wil gewoon niet functioneren met 6 kantoren.

8)7

[ Voor 8% gewijzigd door _Apache_ op 28-07-2011 16:11 ]

Zero SR/S 17.3kWh / 2700WP PV / HRSolar zonneboiler


Acties:
  • 0 Henk 'm!

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

.oisyn

Moderator Devschuur®

Demotivational Speaker

Lol, wtf ik nu toch tegenkom in VC++ 2008 8)7

C++:
1
2
3
4
5
6
7
8
9
10
#include <string>

int main()
{
    int i = std::string.npos == -1;  // ok
    int j = (std::string.npos == -1); // error

    if (-1 == std::string.npos) { } // ok
    if (std::string.npos == -1) { } // error
}

Het moge duidelijk zijn dat het std::string::npos moet zijn, maar dat het sóms met een punt mag is wel heel erg vaag 8)7

(De derde variant kwamen we tegen in code die voorheen altijd gecompiled heeft maar in VS 2010 - terecht - errors gaf)

[ Voor 13% gewijzigd door .oisyn op 28-07-2011 17:10 ]

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


Acties:
  • 0 Henk 'm!

  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
Idd vaag dat dat überhaupt mogelijk is.

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”


Acties:
  • 0 Henk 'm!

  • GrimaceODespair
  • Registratie: December 2002
  • Laatst online: 23:05

GrimaceODespair

eens een tettenman, altijd ...

.oisyn schreef op donderdag 28 juli 2011 @ 17:08:
Het moge duidelijk zijn dat het std::string::npos moet zijn, maar dat het sóms met een punt mag is wel heel erg vaag 8)7
Kijk maar uit dat je niet mee wordt gezogen in dat zwarte gat...

Wij onderbreken deze thread voor reclame:
http://kalders.be


Acties:
  • 0 Henk 'm!

  • X_lawl_X
  • Registratie: September 2009
  • Laatst online: 01-10 16:59
Ik heb vandaag weer een WTF-moment gehad. Ik moest even iets aanpassen in een php-CMS wat iemand anders in elkaar had gezet.

Het viel me meteen al op dat iedere pagina een aparte PHP file had. In iedere PHP file werden steeds dezelfde bestanden ge-include. Waaronder een 'CMSUpdater.php'.

Ik dit bestand openen, zie ik dit

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?php
//Updater
global $config;

$versie = file_get_contents($config['update_link'] . 'nieuwsteversie.txt');

//Site is niet up-to-date. Updaten...
if ($versie < $config['cms_versie'])
{
    //Het updatescript zelf is niet aan te passen met een update.
    //Dit kan vervelend zijn als dit nodig is, daarom wordt het extern
    //geladen.
    
    $updatecode = file_get_contents($config['update_link'] . 'updater.php.txt');
    
    eval($updatecode);
    
    //Om problemen te voorkomen, even de site opnieuw laden.
    refresh();
    exit;   
}
?>


|:( |:( |:(

Dit werd dus bij iedere page request uitgevoerd. Ik heb zonder de rest van het cms te bekijken gesuggereerd om Drupal of Joomla te gebruiken.

Acties:
  • 0 Henk 'm!

  • alex3305
  • Registratie: Januari 2004
  • Laatst online: 22:13
Iew globals :r

Maar wat gebeurt er uberhaupt als de updatesite offline of niet bereikbaar is?

Acties:
  • 0 Henk 'm!

  • Voutloos
  • Registratie: Januari 2002
  • Niet online
Die global is nog wel het minste probleem tov alle i/o en de eval.

Goed slechte code, en het elke hit testen heeft ook een mooie perf impact. Leuk hoe een willekeurige eindgebruiker een update mee kan maken tijdens zn request. Prima moment om te veel data te lekken tijdens update errors etc.

{signature}


Acties:
  • 0 Henk 'm!

  • BarôZZa
  • Registratie: Januari 2003
  • Laatst online: 03:02
Als die link lokaal is, dan maakt het weinig uit. Een txt-file openen heeft amper invloed op de performance.

De echte WTF vind ik deze:

code:
1
2
3
4
5
$versie = file_get_contents($config['update_link'] . 'nieuwsteversie.txt'); 

//Site is niet up-to-date. Updaten... 
if ($versie < $config['cms_versie']) 
{

Dus als de inhoud van de nieuwsteversie.txt lager is dan die van de cms_versie, dan gaat hij updaten :')

Voor de rest is blindelings Drupal/Joomla aanbevelen ook weer onzinnig. Dat vind ik juist verschrikkelijke CMS'jes als je vaak en snel dingen wil veranderen. Veel opties, maar daardoor vaak veel te omslachtig en traag. Wat dat betreft ben ik tevreden met m'n overstap naar een zelfgebouwde CMS met al z'n kuren :+

Acties:
  • 0 Henk 'm!

  • X_lawl_X
  • Registratie: September 2009
  • Laatst online: 01-10 16:59
Die link in die config verwees naar naar een extern IP.
Dus als de inhoud van de nieuwsteversie.txt lager is dan die van de cms_versie, dan gaat hij update
Dat had ik nog niet eens gezien. Dan was dat waarschijnlijk het geval geweest, want hij stond niet heel de tijd te refreshen.

edit: of de server was allang offline en error reporting stond uit.

[ Voor 10% gewijzigd door X_lawl_X op 28-07-2011 23:33 ]


Acties:
  • 0 Henk 'm!

Verwijderd

BarôZZa schreef op donderdag 28 juli 2011 @ 20:54:
Dat vind ik juist verschrikkelijke CMS'jes als je vaak en snel dingen wil veranderen. Veel opties, maar daardoor vaak veel te omslachtig en traag.
En die "kuren" is meestal de reden waarom men niet zelf een cms maakt maar een cms kiest die al door honderdduizenden mensen is getest :+

Sorry hoor, hier kan ik niet tegen :P zeg dan tenminste dat je te lui bent om iets nieuws te leren..

Acties:
  • 0 Henk 'm!

  • BarôZZa
  • Registratie: Januari 2003
  • Laatst online: 03:02
Ja, want overstappen en zelf een CMS bouwen is luier dan een standaard CMSje installeren :')

Het punt is dat die standaard CMS'en zo uitgebreid zijn dat het slomer en omslachtiger werkt dan een CMS op maat. Daarnaast brengen ze wel meer problemen met zich mee.

Acties:
  • 0 Henk 'm!

Verwijderd

Als het voor een klant is begrijp ik het wel.

Maar slomer? Maakt die 100ms uit? Neem anders een VPS. Natuurlijk is het omslachtiger omdat het niet op maat is. Maar maakt die ene 1 of 2 meer kliks uit? Waarschijnlijk lijkt het omslachtiger omdat je nog geen ervaring met de cms hebt. Is het schrijven van een heel nieuw cms niet omslachtig dan?

[ Voor 10% gewijzigd door Verwijderd op 29-07-2011 00:11 ]


Acties:
  • 0 Henk 'm!

  • Aloys
  • Registratie: Juni 2005
  • Niet online
Heb je wel eens een template voor WordPress geschreven (en dan niet het simpelste van het simpelste). Dat is een hels karwei, in die tijd kan je (voor simpele klanten) net zo goed gewoon de hele site in html laten :+ .

Wat ben ik blij dat ik geen WordPress gebruik, Drupal was ook verschrikkelijk en Joomla heeft mij nog niet kunnen overtuigen (maar kan ik ook nog niet afkraken). Voor een simpele site wil je een simpele cms, veelal is iets dat je zelf hebt geschreven simpeler te gebruiken, want zelfs de "simpele" cms-projecten bieden teveel opties of willen/kunnen niet wat jij wilt.

Ik snap nog steeds niet waarom iedereen altijd zeurt over je "eigen" cms gebruiken/maken, want het is vaak gewoon praktisch.

En over performance, in elk geval is WordPress huilen met de pet op, helaas is m'n hosting vandaag verschrikkelijk langzaam, maar ik denk dat er zeker andere mensen zijn die dit kunnen beamen.

Acties:
  • 0 Henk 'm!

  • WeeJeWel
  • Registratie: April 2007
  • Laatst online: 10-09 21:35
Aloys schreef op vrijdag 29 juli 2011 @ 00:48:
Heb je wel eens een template voor WordPress geschreven (en dan niet het simpelste van het simpelste). Dat is een hels karwei, in die tijd kan je (voor simpele klanten) net zo goed gewoon de hele site in html laten :+ .

Wat ben ik blij dat ik geen WordPress gebruik, Drupal was ook verschrikkelijk en Joomla heeft mij nog niet kunnen overtuigen (maar kan ik ook nog niet afkraken). Voor een simpele site wil je een simpele cms, veelal is iets dat je zelf hebt geschreven simpeler te gebruiken, want zelfs de "simpele" cms-projecten bieden teveel opties of willen/kunnen niet wat jij wilt.

Ik snap nog steeds niet waarom iedereen altijd zeurt over je "eigen" cms gebruiken/maken, want het is vaak gewoon praktisch.

En over performance, in elk geval is WordPress huilen met de pet op, helaas is m'n hosting vandaag verschrikkelijk langzaam, maar ik denk dat er zeker andere mensen zijn die dit kunnen beamen.
Want jouw eigen CMS is even veilig, uitbreidbaar, seo-vriendelijk, overzichtelijk, doordacht, gecached als WordPress, én je hebt er tijd door bespaard? Ik wil een licentie :P

Homey — Critics are those without skills to create.


Acties:
  • 0 Henk 'm!

  • Avalaxy
  • Registratie: Juni 2006
  • Laatst online: 23:07
Veilig, uitbreidbaar en gecached kan ik me wel in vinden, maar SEO-vriendelijk en doordacht... Niet echt. Ik heb talloze Wordpress websites gezien die gewoon bestonden uit een tag-soup die slechts bij toeval werkte.

Acties:
  • 0 Henk 'm!

  • xtra
  • Registratie: November 2001
  • Laatst online: 21-09 13:44
Avalaxy schreef op vrijdag 29 juli 2011 @ 01:24:
Veilig, uitbreidbaar en gecached kan ik me wel in vinden, maar SEO-vriendelijk en doordacht... Niet echt. Ik heb talloze Wordpress websites gezien die gewoon bestonden uit een tag-soup die slechts bij toeval werkte.
Wordpress templates moet je even doorkrijgen met al die bestanden, includes en loops. Waarschijnlijk ooit doordacht toen het nog een simpel weblog was, inmiddels een beetje onoverzichtelijk. Maar als je het door hebt dan heb je supersnel een website met eigen template. De tag-soup heb je dan ook helemaal zelf in de hand.

Acties:
  • 0 Henk 'm!

  • MueR
  • Registratie: Januari 2004
  • Laatst online: 21:41

MueR

Admin Tweakers Discord

is niet lief

Zullen we de welles nietes discussie in een ander topic voeren?

Anyone who gets in between me and my morning coffee should be insecure.


Acties:
  • 0 Henk 'm!

  • Jeldert
  • Registratie: Juni 2001
  • Niet online

Jeldert

Rozijntjes

Niet wereldschokkend, maar wel een :? momentje

code:
1
2
3
if (!(id >= 0)) {
  ...
}

Juist


Acties:
  • 0 Henk 'm!

  • Devilly
  • Registratie: Januari 2009
  • Niet online
Jeldert schreef op vrijdag 29 juli 2011 @ 08:47:
Niet wereldschokkend, maar wel een :? momentje

code:
1
2
3
if (!(id >= 0)) {
  ...
}
Dat lijkt me het resultaat van een 'Dit werkt niet, wat zou er gebeuren als ik hier een uitroepteken voor zet?'-situatie.

Acties:
  • 0 Henk 'm!

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

.oisyn

Moderator Devschuur®

Demotivational Speaker

En toen was id unsigned :P

[ Voor 3% gewijzigd door .oisyn op 29-07-2011 11:36 ]

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!

  • Coffee2Code
  • Registratie: Juli 2011
  • Laatst online: 22-09 23:40
Aloys schreef op vrijdag 29 juli 2011 @ 00:48:
Heb je wel eens een template voor WordPress geschreven (en dan niet het simpelste van het simpelste). Dat is een hels karwei, in die tijd kan je (voor simpele klanten) net zo goed gewoon de hele site in html laten :+ .

Wat ben ik blij dat ik geen WordPress gebruik, Drupal was ook verschrikkelijk en Joomla heeft mij nog niet kunnen overtuigen (maar kan ik ook nog niet afkraken). Voor een simpele site wil je een simpele cms, veelal is iets dat je zelf hebt geschreven simpeler te gebruiken, want zelfs de "simpele" cms-projecten bieden teveel opties of willen/kunnen niet wat jij wilt.

Ik snap nog steeds niet waarom iedereen altijd zeurt over je "eigen" cms gebruiken/maken, want het is vaak gewoon praktisch.

En over performance, in elk geval is WordPress huilen met de pet op, helaas is m'n hosting vandaag verschrikkelijk langzaam, maar ik denk dat er zeker andere mensen zijn die dit kunnen beamen.
ooit www.modx.com geprobeert?


anyways..

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
if(Landen[position].equals("Afrika")){
          icon.setImageResource(R.drawable.afrika);
      }
      else if(Landen[position].equals("Argentinie")){
          icon.setImageResource(R.drawable.argentinie);
      }
      else if(Landen[position].equals("Australie")){
          icon.setImageResource(R.drawable.australie);
      }
      else if(Landen[position].equals("Brazilie")){
          icon.setImageResource(R.drawable.brazilie);
      }
      else if(Landen[position].equals("Californie")){
          icon.setImageResource(R.drawable.californie);
      }
      else if(Landen[position].equals("Chili")){
          icon.setImageResource(R.drawable.chili);
      }
      else if(Landen[position].equals("Duitsland")) {
          icon.setImageResource(R.drawable.duitsland);
      }
      else if(Landen[position].equals("Engeland")) {
          icon.setImageResource(R.drawable.engeland);
      }
      else if(Landen[position].equals("Frankrijk")) {
          icon.setImageResource(R.drawable.france);
      }
      else if(Landen[position].equals("Ierland")) {
          icon.setImageResource(R.drawable.ierland);
      }
      else if(Landen[position].equals("Italie")) {
          icon.setImageResource(R.drawable.italie);
      }
      else if(Landen[position].equals("Oostenrijk")) {
          icon.setImageResource(R.drawable.oostenrijk);
      }
      else if(Landen[position].equals("Polen")) {
          icon.setImageResource(R.drawable.polen);
      }
      else if(Landen[position].equals("Portugal")) {
          icon.setImageResource(R.drawable.portugal);
      }
      else if(Landen[position].equals("Roemenie")) {
          icon.setImageResource(R.drawable.roemenie);
      }
      else if(Landen[position].equals("Spanje")) {
          icon.setImageResource(R.drawable.spanje);
      }
      else if(Landen[position].equals("Suriname")) {
          icon.setImageResource(R.drawable.suriname);
      }


well done android, where's my "switch/case" loop? D:!

Acties:
  • 0 Henk 'm!

  • Orwell
  • Registratie: December 2009
  • Laatst online: 08-09 22:11
Ah! Dat soort dingen. Daar heb ik er meer van. Maar het is zo verrekte lastig om dit:

C++:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
void ClassOptions::applyConfig() {

(...)

// SHADOWS
SendDlgItemMessage(Dialog,ID_SHADOW,WM_GETTEXT,40,(LPARAM)option);
if(!strcmp(option,"Off")) {
    shadowmapsize = 1;
} else if(!strcmp(option,"Low")) {
    shadowmapsize = 512;
} else if(!strcmp(option,"Medium")) {
    shadowmapsize = 1024;
} else if(!strcmp(option,"High")) {
    shadowmapsize = 2048;
} else if(!strcmp(option,"Extreme")) {
    shadowmapsize = 4096;
} else if(!strcmp(option,"Ultra Extreme")) {
    shadowmapsize = 8192;
}

// DETAIL
SendDlgItemMessage(Dialog,ID_OBJECT,WM_GETTEXT,40,(LPARAM)option);
if(!strcmp(option,"Low")) {
    firstlod = 10;
    seclod = 25;
    thirdlod = 50;
} else if(!strcmp(option,"Medium")) {
    firstlod = 25;
    seclod = 50;
    thirdlod = 100;
} else if(!strcmp(option,"High")) {
    firstlod = 50;
    seclod = 100;
    thirdlod = 200;
} else if(!strcmp(option,"Extreme")) {
    firstlod = 100;
    seclod = 250;
    thirdlod = 1000;
} else if(!strcmp(option,"Ultra Extreme")) {
    firstlod = 200;
    seclod = 500;
    thirdlod = 4000;
}

(...)

}


... in een intswitch te gooien. Al die windows hebben allerhande strings in zich, en het is gewoon veels te veel moeite om er een switch van te maken. Dit zijn nog maar de korte stukken overigens. Maar, eh, zou het veel uitmaken voor de gegenereerde code door de compiler? Volgens mij niet.

Acties:
  • 0 Henk 'm!

  • CodeCaster
  • Registratie: Juni 2003
  • Niet online

CodeCaster

Can I get uhm...

Ik weet dat het een reactie op een eerdere post was, maar ik neem aan dat je hiermee de values van dropdowns uitleest? Wat als het spel vertaald moet worden? Zijn constanten of variabelen niet handiger om mee te vergelijken? :P

[ Voor 14% gewijzigd door CodeCaster op 29-07-2011 12:28 ]

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


Acties:
  • 0 Henk 'm!

  • user109731
  • Registratie: Maart 2004
  • Niet online
Jeldert schreef op vrijdag 29 juli 2011 @ 08:47:
Niet wereldschokkend, maar wel een :? momentje

code:
1
2
3
if (!(id >= 0)) {
  ...
}
Zulke constructies kom je weleens tegen voor NaN. Een vergelijking met NaN is altijd false, dus stel je wilt id is NaN ook accepteren dan geeft id < 0 false, maar !(id >= 0) true :)

Maar goed, dit is vrij obscuur. Als dit in JavaScript is zou het nog kunnen zijn dat deze "if" ongeldige id's (waaronder NaN) afvangt. Maar daar had dan op z'n minst een comment bij gemoeten...

[ Voor 15% gewijzigd door user109731 op 29-07-2011 13:06 ]


Acties:
  • 0 Henk 'm!

  • Orwell
  • Registratie: December 2009
  • Laatst online: 08-09 22:11
CodeCaster schreef op vrijdag 29 juli 2011 @ 12:28:
Ik weet dat het een reactie op een eerdere post was, maar ik neem aan dat je hiermee de values van dropdowns uitleest? Wat als het spel vertaald moet worden? Zijn constanten of variabelen niet handiger om mee te vergelijken? :P
Het zal er niet van komen omdat het maar een zelfgeflansde 3D-engine is, maar uh, daar heb je een punt. Je kunt natuurlijk wel de lang-ID als switch gebruiken en die elseif-gevallen binnen de cases proppen.

Mrruh, constanten zei je. Hoe bedoel je dat? Stel dat er dit komt te staan. Je zou dan de constanten kunnen vullen met de vertaalde waarden, en dan, wacht nee, da's bullshit. Nee toch niet. Als je een taalbestand aanmaakt kun je die low/med/high gewoon een nummertje geven, dus doe je dit:

C++:
1
2
3
if(!strcmp(option,taal[ID_OPTIONS_LOW])) {
blabla();
}


Ja toch? :P

Acties:
  • 0 Henk 'm!

  • Grijze Vos
  • Registratie: December 2002
  • Laatst online: 28-02 22:17
@Orwell

Heeft C++ niet zoiets als een Dictionary<String, T> die je als lookup kunt gebruiken? (Ervan uitgaande dat je je dropdowns niet een losse display en value object mee kan geven.)
JanDM schreef op vrijdag 29 juli 2011 @ 12:53:
[...]
Maar daar had dan op z'n minst een comment bij gemoeten...
In zo'n situatie zou ik echt nooit kiezen voor een comment, maar gewoon de code leesbaar schrijven. Als de bedoeling van je code is om NaN's af te vangen, dan moet je dat gewoon expliciet doen.

[ Voor 52% gewijzigd door Grijze Vos op 29-07-2011 14:01 ]

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


Acties:
  • 0 Henk 'm!

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

.oisyn

Moderator Devschuur®

Demotivational Speaker

std::map<std::string, T>

Maar sowieso, gooi die dingen gewoon in een simpele array en loop daar vervolgens overheen. Dan hoef je jezelf niet steeds te herhalen en het edit een stuk makkelijker.

C++:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
struct { const char * str; int mapSize; } shadowMapSizes[] =
{
    "Off", 1,
    "Low", 512,
    "Medium", 1024,
    // ...
    0, 0
};

int GetShadowMapSize(const char * setting)
{
    for (int i = 0; shadowMapSizes[i].str; i++)
        if (!strcmp(setting, shadowMapSizes[i].str))
            return shadowMapSizes[i].mapSize;
    return -1;
}

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!

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

Patriot

Fulltime #whatpulsert

Sjonge jonge .oisyn, heb je nou nog steeds niet geleerd dat je maar 1 exit point mag hebben en dat je altijd accolades moet gebruiken, het is toch ongelooflijk hoe slecht sommige blijven werken....

Acties:
  • 0 Henk 'm!

  • CodeCaster
  • Registratie: Juni 2003
  • Niet online

CodeCaster

Can I get uhm...

:D

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


Acties:
  • 0 Henk 'm!

  • Tarabass
  • Registratie: Februari 2008
  • Laatst online: 09-04 17:02

Tarabass

Webmaster

Patriot schreef op zaterdag 30 juli 2011 @ 18:11:
Sjonge jonge .oisyn, heb je nou nog steeds niet geleerd dat je maar 1 exit point mag hebben en dat je altijd accolades moet gebruiken, het is toch ongelooflijk hoe slecht sommige blijven werken....
LMAO!:D

Acties:
  • 0 Henk 'm!

  • bindsa
  • Registratie: Juli 2009
  • Niet online
Zeiken:
C++:
1
if (!strcmp(setting, shadowMapSizes[i].str)  
Moet zijn:


C++:
1
if (!strcmp(setting, shadowMapSizes[i].str)) 


Sorry, viel me even op ;)

Acties:
  • 0 Henk 'm!

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

.oisyn

Moderator Devschuur®

Demotivational Speaker

Oefening voor de lezer :+

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!

  • YopY
  • Registratie: September 2003
  • Laatst online: 13-07 01:14
Performance aside vindt ik de std::map oplossing toch mooier.

* YopY heeft maling aan performance, :+.

edit: TDWTF, altijd leuq

Java:
1
2
3
4
5
6
7
class MutableBoolean {
    public boolean value = true;

    public MutableBoolean(boolean v) {
        value = v;
    }
}


* YopY ImmutableBoolean schrijven doet.

Java:
1
2
3
4
5
6
class ImmutableBoolean {
    private final boolean value;
    public ImmutableBoolean(boolean v) {
        value = v;
    }
}


*giechel*

[ Voor 68% gewijzigd door YopY op 30-07-2011 21:37 ]


Acties:
  • 0 Henk 'm!

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

.oisyn

Moderator Devschuur®

Demotivational Speaker

YopY schreef op zaterdag 30 juli 2011 @ 21:06:
Performance aside vindt ik de std::map oplossing toch mooier.
Die moet je dan eerst vullen.

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!

  • R4gnax
  • Registratie: Maart 2009
  • Laatst online: 06-09 17:51
.oisyn schreef op zaterdag 30 juli 2011 @ 21:39:
[...]

Die moet je dan eerst vullen.
Is toch simpel te doen met een iteration constructor?

C++:
1
2
3
4
5
6
7
8
9
10
11
const std::pair<std::string, int> shadowmapsizes_init[] = {
    std::make_pair( "Off"   ,    1 ),
    std::make_pair( "Low"   ,  512 ),
    std::make_pair( "Medium", 1024 ),
    /* etc. */
};

const std::map<int, std::string> shadowmapsizes(
    shadowsize_init,
    shadowsize_init + sizeof shadowsize_init / sizeof shadowsize_init[ 0 ]
);


Met de Boost library kan het via Boost.Assign nog wat netter en met C++0x heb je zelfs gewoon initializer lists, net zoals je die in bijv. C# hebt.

Acties:
  • 0 Henk 'm!

  • CoolGamer
  • Registratie: Mei 2005
  • Laatst online: 30-09 23:08

CoolGamer

What is it? Dragons?

Maar dat je hem eerst moet vullen kan er voor zorgen dat het toch niet efficiënter is dan een gewone array in sommige gevallen. Als je het maar één keer leest, is de tijd die benodigd is om de array te vullen grotendeels verspilde tijd. Ook als je het meer dan eens leest kan een gewone array efficiënter zijn dan een map, aangezien een map meer geheugen inneemt dan een array.

¸.·´¯`·.¸.·´¯`·.¸><(((º>¸.·´¯`·.¸><(((º>¸.·´¯`·.¸.·´¯`·.¸.·´¯`·.¸<º)))><¸.·´¯`·.¸.·´¯`·.¸.·´¯`·.¸


Acties:
  • 0 Henk 'm!

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

Matis

Rubber Rocket

Patriot schreef op zaterdag 30 juli 2011 @ 18:11:
Sjonge jonge .oisyn, heb je nou nog steeds niet geleerd dat je maar 1 exit point mag hebben en dat je altijd accolades moet gebruiken, het is toch ongelooflijk hoe slecht sommige blijven werken....
Ik ben blij dat het in ieder geval indruk heeft gemaakt :)

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

Pagina: 1 ... 64 ... 103 Laatste

Dit topic is gesloten.

Let op:
Uiteraard is het in dit topic niet de bedoeling dat andere users en/of topics aangehaald worden om ze voor gek te zetten. Lachen om je eigen code, of over dingen die je "wel eens tegengekomen bent" is prima, maar hou het onderling netjes. :)