Het wordt pas echt mooi als die auto je mailt dat hij je wat later van het werk haalt omdat ie nog bij de garage staat om naar zichzelf te laten kijken.Alex) schreef op dinsdag 8 augustus 2017 @ 19:22:
Ik had vanochtend een mailtje... van m'n auto. Het diagnosesysteem had iets opgepikt waar ik beter even naar kon laten kijken.
What a time to be alive.
Want dat gebruikt geen cmd.exe onderhuids?
Ipsa Scientia Potestas Est
NNID: ShinNoNoir
Verwijderd
Niet als je het in combinatie gebruikt met bijvoorbeeld TCC/LE.RayNbow schreef op woensdag 9 augustus 2017 @ 07:10:
[...]
Want dat gebruikt geen cmd.exe onderhuids?
OK. Nu nog een mogelijkheid vinden om ConEmu en TCC/LE te installeren/draaien op de thin client zonder adminrechten.Verwijderd schreef op woensdag 9 augustus 2017 @ 07:47:
[...]
Niet als je het in combinatie gebruikt met bijvoorbeeld TCC/LE.
Ipsa Scientia Potestas Est
NNID: ShinNoNoir
Use the force search luke ...RayNbow schreef op woensdag 9 augustus 2017 @ 08:19:
[...]
OK. Nu nog een mogelijkheid vinden om ConEmu en TCC/LE te installeren/draaien op de thin client zonder adminrechten.
* ElkeBxl gooit een thermoskan koffie en eentje met thee in de coffeecorner
Gisteren naar Lokerse feesten geweest en maar 3 uurtjes geslapen. Dit gaat vermoeiende dag worden
Gisteren naar Lokerse feesten geweest en maar 3 uurtjes geslapen. Dit gaat vermoeiende dag worden
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
Je bent tussen "gaat" en "vermoeiende" al een "een" vergeten, een goed beginElkeBxl schreef op donderdag 10 augustus 2017 @ 09:25:
* ElkeBxl gooit een thermoskan koffie en eentje met thee in de coffeecorner
Gisteren naar Lokerse feesten geweest en maar 3 uurtjes geslapen. Dit gaat vermoeiende dag worden
End-users are clingy complaining dipshits who will never ever be grateful for any concession you make. The moment you shut out their shrill, tremulous voices, the happier you will be for it.
Ben ik de enige die er last van heeft dat er geen advertenties worden weergeven op T.net, en als ik op het Tweakers logo bovenin de header klik op de ad klik?
Het gebeurd pas als ik een tijdje (30 min oid) niks meer gedaan heb op Tweakers.
Hmm, alleen de ads van gemius.pl doen dat blijkbaar.
Het gebeurd pas als ik een tijdje (30 min oid) niks meer gedaan heb op Tweakers.
Hmm, alleen de ads van gemius.pl doen dat blijkbaar.
[ Voor 31% gewijzigd door DynaSpan op 11-08-2017 15:29 ]
Ik heb zojuist de tegenovergestelde ervaring.DynaSpan schreef op vrijdag 11 augustus 2017 @ 14:02:
Ben ik de enige die er last van heeft dat er geen advertenties worden weergeven op T.net, en als ik op het Tweakers logo bovenin de header klik op de ad klik?
Het gebeurd pas als ik een tijdje (30 min oid) niks meer gedaan heb op Tweakers.
Hmm, alleen de ads van gemius.pl doen dat blijkbaar.
Opeens zag ik allemaal reclame verschijnen. Al maandenlang werkte het pauzeren van Ghostery niet in Edge. Sinds net wel weer, dus ineens een bak reclame op het scherm.
Battle.net - Jandev#2601 / XBOX: VriesDeJ
Pff, probeer ik een basis .NETStandard class library te maken, werkt dat al niet in mijn verse VS 2017. Altijd maar build error "cannot find System.Object" blablabla.
Arg.
Allemaal heel leuk dat .NETStandard enzo, maar gewoon een verse installatie van VS dat het niet werkt ...
Arg.
Allemaal heel leuk dat .NETStandard enzo, maar gewoon een verse installatie van VS dat het niet werkt ...
[ Voor 24% gewijzigd door Styxxy op 11-08-2017 19:38 ]
.NETStandard 1.6 of 2.0? En heb je alle VS updates?Styxxy schreef op vrijdag 11 augustus 2017 @ 19:37:
Pff, probeer ik een basis .NETStandard class library te maken, werkt dat al niet in mijn verse VS 2017. Altijd maar build error "cannot find System.Object" blablabla.
Arg.
Allemaal heel leuk dat .NETStandard enzo, maar gewoon een verse installatie van VS dat het niet werkt ...
[ Voor 3% gewijzigd door Megamind op 11-08-2017 20:19 ]
netstandard1.4, en mijn VS is volledig up-to-date. Geen idee what's going on.Megamind schreef op vrijdag 11 augustus 2017 @ 20:19:
[...]
.NETStandard 1.6 of 2.0? En heb je alle VS updates?
Nu aan het proberen op mijn eigen PC ipv corporate (maar moet VS nog installeren).
Ik dacht om wat github issues op te lossen voor een nuget package; maar *niet* dus, kan solution niet eens builden (netstandard libraries geven het probleem dus)
Lokaal werkt het dus wel. Misschien probleem omdat op corporate achter paar muren staat en ook offline installatie is. En mogelijks geen goede nuget restore. Mmmm. Nog wat prullen denk ik met caching.
[ Voor 36% gewijzigd door Styxxy op 11-08-2017 20:43 ]
Styxxy schreef op vrijdag 11 augustus 2017 @ 19:37:
Pff, probeer ik een basis .NETStandard class library te maken, werkt dat al niet in mijn verse VS 2017. Altijd maar build error "cannot find System.Object" blablabla.
Arg.
Allemaal heel leuk dat .NETStandard enzo, maar gewoon een verse installatie van VS dat het niet werkt ...
Nothing to see here!
.NET Standard is zeker goed, maar probleem zit 'em denk ik vooral in "closed" omgevingen, waarbij je niet zo maar alles van het internet kan plukken en dat er firewalls en corporate proxies tussen zitten. Ik vermoed dat daar vooral het probleem zit.
Ook bijvoorbeeld Git in VS 2017... Ik kon niet zo maar repositories clonen want ik kreeg SSL errors. Blijkt door corporate proxy dat er een "selfsigned certificate" tussen kwam. Uiteraard zijn deze van ons welf en zitten die mooi in onze WIndows certificate store geïnstalleerd; maar Git beslist om zelf z'n eigen CA-store te gaan bijhouden. Geen probleem en heb het kunnen fixen, maar was daar ook wel weer een uur kwijt mee. In plaats van dat het mooi out-of-the-box zou werken.
Ach ja, het leven achter corporate muren is soms lastig
.
Ook bijvoorbeeld Git in VS 2017... Ik kon niet zo maar repositories clonen want ik kreeg SSL errors. Blijkt door corporate proxy dat er een "selfsigned certificate" tussen kwam. Uiteraard zijn deze van ons welf en zitten die mooi in onze WIndows certificate store geïnstalleerd; maar Git beslist om zelf z'n eigen CA-store te gaan bijhouden. Geen probleem en heb het kunnen fixen, maar was daar ook wel weer een uur kwijt mee. In plaats van dat het mooi out-of-the-box zou werken.
Ach ja, het leven achter corporate muren is soms lastig
En terecht. Client hebben eigenlijk altijd ingebakken root CA's juist om dit soort man-in-the-middle-attacks te voorkomen. Want dat is gewoon wat die proxy aan het doen is.Styxxy schreef op vrijdag 11 augustus 2017 @ 21:45:
Uiteraard zijn deze van ons welf en zitten die mooi in onze WIndows certificate store geïnstalleerd; maar Git beslist om zelf z'n eigen CA-store te gaan bijhouden.
https://niels.nu
goedemorgen, misschien heeft iemand dit al gezegd, maar wellicht is het interessant om een tweakers devschuur discord te starten ? als deze er nog niet is
Wat is een discord en waarom zou ik dat willen?
We are shaping the future
IRC met plaatjes. En wat betreft de 2e vraag: cat gifjes.
[ Voor 9% gewijzigd door Hydra op 14-08-2017 11:34 ]
https://niels.nu
Hopelijk is de client wel een Electron app, anders wordt m'n RAM niet tot het volste benut!
Battle.net - Jandev#2601 / XBOX: VriesDeJ
ik zat meer te denken aan verschillende dev kanalen voor elkaar te helpen en ouwe hoeren over algemene dingen betreft ontwikkelingHydra schreef op maandag 14 augustus 2017 @ 11:34:
[...]
IRC met plaatjes. En wat betreft de 2e vraag: cat gifjes.
Ik zat toevallig vandaag nog te klagen dat Slack meer geheugen in gebruik heeft van m'n IDE.Jan_V schreef op maandag 14 augustus 2017 @ 11:35:
Hopelijk is de client wel een Electron app, anders wordt m'n RAM niet tot het volste benut!

https://niels.nu
Je moet ook niet zoveel chatten..Hydra schreef op maandag 14 augustus 2017 @ 11:38:
[...]
Ik zat toevallig vandaag nog te klagen dat Slack meer geheugen in gebruik heeft van m'n IDE.
IRC?
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!
Je kunt overwegen om Atom te gebruiken, dat komt vast in de buurt van Slack wat geheugen betreft. En meer Chrome is meer beterHydra schreef op maandag 14 augustus 2017 @ 11:38:
[...]
Ik zat toevallig vandaag nog te klagen dat Slack meer geheugen in gebruik heeft van m'n IDE.
#devschuur op irc.tweakers.net dus.
Ipsa Scientia Potestas Est
NNID: ShinNoNoir
https://irc.tweakers.net/devschuur
[Logon News - Nov 30 2011] Welkom op de IRC-servers van Tweakers.net en Fok!
11:57
You are banned from the channel #devschuur
Wellicht dat je moet inloggen met een 'echt' account en niet 'Tweaker_3844' of iets dergelijks.
Battle.net - Jandev#2601 / XBOX: VriesDeJ
Alleen een andere naam kiezen zou moeten werken. Zo te zien staat Tweaker_* in de lijst met bans.Jan_V schreef op maandag 14 augustus 2017 @ 11:58:
[...]
![]()
Wellicht dat je moet inloggen met een 'echt' account en niet 'Tweaker_3844' of iets dergelijks.
Dat klopt, maar daarom is net onze eigen (interne) CA geïnstalleerd in de certificate manager als "trusted". Nu moet ik de standaard configuratie van Git aanpassen (inclusief hun "Trusted CA" .cer file) om dit werkend te krijgen. Als ze de standaard Windows Certificate store zouden gebruiken, was dit geen probleem.Hydra schreef op maandag 14 augustus 2017 @ 11:14:
[...]
En terecht. Client hebben eigenlijk altijd ingebakken root CA's juist om dit soort man-in-the-middle-attacks te voorkomen. Want dat is gewoon wat die proxy aan het doen is.
De .NETStandard probleem is opgelost; blijkbaar stond er ergens in mijn profiel Nuget config "download missing packages = false".
Zo, de eerste koffie is weer weggewerkt, we mogen weer
End-users are clingy complaining dipshits who will never ever be grateful for any concession you make. The moment you shut out their shrill, tremulous voices, the happier you will be for it.
Doe mij er ook maar één! Eerste week na de vakantie en pas op twee honden van een collega. Staat één van de twee vanmorgen om half 5 aan me slaapkamerdeur te janken.Neko Koneko schreef op dinsdag 15 augustus 2017 @ 07:47:
Zo, de eerste koffie is weer weggewerkt, we mogen weer
Always looking for developers wanting to work with Erlang.
Werken? Lekker 4 weken vrij en pas in september weer aan de slag!
.Gertjan.: Ik ben een zelfstandige alcoholist, dus ik bepaal zelf wel wanneer ik aan het bier ga!
Gewoon je tweaker nick ingeven zonder passJan_V schreef op maandag 14 augustus 2017 @ 11:58:
[...]
https://irc.tweakers.net/devschuur
[...]
![]()
Wellicht dat je moet inloggen met een 'echt' account en niet 'Tweaker_3844' of iets dergelijks.
Al wat ik aanraak werk niet meer zoals het hoort. Damic houd niet van zijn verjaardag
Hier in BE is het een dag verlofNeko Koneko schreef op dinsdag 15 augustus 2017 @ 07:47:
Zo, de eerste koffie is weer weggewerkt, we mogen weer
2000 NZD voor m'n tattoo... Dat wordt even sparen.
In de tussentijd maar spelen met alle modernste webtechnieken zoals javascript :'D
In de tussentijd maar spelen met alle modernste webtechnieken zoals javascript :'D
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!
Zoals React?Firesphere schreef op donderdag 17 augustus 2017 @ 11:12:
2000 NZD voor m'n tattoo... Dat wordt even sparen.
In de tussentijd maar spelen met alle modernste webtechnieken zoals javascript :'D
.Gertjan.: Ik ben een zelfstandige alcoholist, dus ik bepaal zelf wel wanneer ik aan het bier ga!
Hmm.... Normaal gesproken doe je toch cryptografische hash? Dan zou de lengte van het wachtwoord niks mogen betekenen. Ik vraag me dan ook af hoe Vodafona wachtwoorden opslaat.
"Doubt—the concern that my views may not be entirely correct—is the true friend of wisdom and (along with empathy, to which it’s related) the greatest enemy of polarization." -- Václav Havel
Ach bij de standaard SAP ID-service die gebruikt wordt voor Support calls / Cloud Platform / Downloaden software en nog enkele zaken moet je wachtwoord 8 tekens lang zijn.
Op sommige punten kan je hem wel langer instellen, maar dan werken de systemen voor de software downloads bijvoorbeeld niet meer.
Op sommige punten kan je hem wel langer instellen, maar dan werken de systemen voor de software downloads bijvoorbeeld niet meer.

In versleutelde hiërogliefen, hoe anders?DevWouter schreef op donderdag 17 augustus 2017 @ 13:29:
[...]
Hmm.... Normaal gesproken doe je toch cryptografische hash? Dan zou de lengte van het wachtwoord niks mogen betekenen. Ik vraag me dan ook af hoe Vodafona wachtwoorden opslaat.
Driving a cadillac in a fool's parade.
Vrijwel zeker een garantie dat het ergens in plain tekst staat. Hier bij de klant mag je wachtwoord, wat echt overal gebruikt wordt en 3 maanden geldig is, maximaal 8 karakters lang zijn.DevWouter schreef op donderdag 17 augustus 2017 @ 13:29:
Hmm.... Normaal gesproken doe je toch cryptografische hash? Dan zou de lengte van het wachtwoord niks mogen betekenen. Ik vraag me dan ook af hoe Vodafona wachtwoorden opslaat.

https://niels.nu
Nou, ik heb het eens gevraagd:DevWouter schreef op donderdag 17 augustus 2017 @ 13:29:
[...]
Hmm.... Normaal gesproken doe je toch cryptografische hash? Dan zou de lengte van het wachtwoord niks mogen betekenen. Ik vraag me dan ook af hoe Vodafona wachtwoorden opslaat.
Geanonimiseerde medewerker
om 13:53, Aug 17:
Hallo! Je chat met Geanonimiseerde medewerker. Ik help je graag met je vraag. Waarmee kan ik je helpen?
U
om 13:53, Aug 17:
Hallo, Ger hier
U
om 13:53, Aug 17:
Ik heb een vraag over het wachtwoord. Waarom gelden de eisen van 6-15 tekens en het verbod op leestekens en spaties?
U
om 13:54, Aug 17:
Ik mag toch hopen dat de wachtwoorden gehashed worden opgeslagen? Dan doet in ieder geval de lengte er niet toe en normaliter ook de gebruikte tekens niet (mits UTF-8)
U
om 13:55, Aug 17:
Ik vraag me dus simpel gezegd af of mijn wachtwoord wel veilig verwerkt en opgeslagen wordt.
Geanonimiseerde medewerker
om 13:55, Aug 17:
Het gaat om het wachtwoord van My Vodafone?
U
om 13:56, Aug 17:
Ja, inderdaad
Geanonimiseerde medewerker
om 13:57, Aug 17:
Het wachtwoord wordt zeker veilig verwerkt! Ik durf je niet te zeggen waarom deze eisen zijn ingesteld.
U
om 13:58, Aug 17:
Ik vind het eerlijk gezegd weinig vertrouwen wekken. Ieder hashalgoritme moet hiermee om kunnen gaan
U
om 13:59, Aug 17:
Kun je misschien vertellen hoe het wachtwoord wordt versleuteld?
U
om 13:59, Aug 17:
Of wordt het gewoon als platte tekst opgeslagen?
Geanonimiseerde medewerker
om 13:59, Aug 17:
Nee, daar kan ik je geen informatie over geven.
U
om 14:00, Aug 17:
Omdat je het niet weet of omdat je het niet mag vertellen? Kun je het wellicht voor me uitzoeken?
U
om 14:01, Aug 17:
Als het een veilige manier is (zoals de industrie standaarden) zou het geen enkel veiligheidsrisico met zich meebrengen om dat publiek te maken
U
om 14:01, Aug 17:
Als het Security through obscurity betreft dan heb ik er niet veel vertrouwen in...
Geanonimiseerde medewerker
om 14:02, Aug 17:
Heb je een momentje voor me? Dan kijk ik wat ik voor je kan vinden.
U
om 14:02, Aug 17:
Ja hoor, dankjewel
Geanonimiseerde medewerker
om 14:07, Aug 17:
Ik heb dit nog even nagevraagd bij een collega, maar wij hebben hier geen inzicht op. Hierdoor kan ik je ook geen verdere informatie geven hierover.
U
om 14:08, Aug 17:
Dankjewel. Ik vind het toch apart; zeker bij een service als My Vodafone waar allerlei privégegevens te vinden zijn zou ik me totaal geen zorgen moeten maken om mijn account
U
om 14:09, Aug 17:
Nu is het lastig om een veilig wachtwoord te gebruiken, plus dat ik mijn twijfels heb over de versleuteling
U
om 14:10, Aug 17:
ik zal maar eens kijken of ik gegevens uit my vodafone zoveel mogelijk kan verwijderen dan
Geanonimiseerde medewerker
om 14:12, Aug 17:
Het is zeker een veilig wachtwoord, anders zouden wij de service niet aanbieden!
U
om 14:12, Aug 17:
Dat vind ik eerlijk gezegd nogal een boude uitspraak als die niet onderbouwd wordt en alles vooralsnog wijst op het tegendeel
Geanonimiseerde medewerker
om 14:14, Aug 17:
Helaas kan ik je niet meer informatie geven. Ik kan alleen aangeven dat het een veilig wachtwoord is.
U
om 14:16, Aug 17:
Het spijt me zeer; het is onderdeel van mijn werk om accounts te beveiligen en iedereen in de industrie is het er al jaren over eens dat je met zulke eisen niet aan een veilig wachtwoord kunt komen
U
om 14:20, Aug 17:
Goed, ik ga hier toch verder geen antwoord krijgen op mijn eigenlijke vraag merk ik. Niets ten nadele van jou; wat je niet weet en wat je niet verteld wordt kun je ook niet aan klanten doorgeven.
U
om 14:21, Aug 17:
Bedankt voor je tijd
Tjolk is lekker. overal en altijd.
Zo moet je een klantenservice ook niet benaderen. 
Gewoon vragen stellen, en zeker geen bevestigende uitspraken doen. En steeds met nieuwe vragen blijven komen totdat ze vast lopen en je gaan doorverbinden met iemand anders of dat je er over zal worden teruggebeld.
Gewoon vragen stellen, en zeker geen bevestigende uitspraken doen. En steeds met nieuwe vragen blijven komen totdat ze vast lopen en je gaan doorverbinden met iemand anders of dat je er over zal worden teruggebeld.
Speel ook Balls Connect en Repeat
Dat waren de Egyptenaren, bijgevolg ruimschoots verouderd! (toegegeven: bij mijn weten nog niet gekraakt)kwaakvaak_v2 schreef op donderdag 17 augustus 2017 @ 14:02:
[...]
In versleutelde hiërogliefen, hoe anders?
Moderne firma's encrypteren met utf8! (helaas wel al gekraakt...)
De makkelijkste manier om hyprocrieten boos te krijgen? Confronteer ze met hun eigen uitspraken...
Je kunt er vanuit gaan dat er technische beperkingen zijn waarom er een dergelijk maximum aan zit. Oftewel oude systemen die het plain text opslaan. En dat gaan ze nooit en te nimmer toegeven, laat staan via de klantenservice.
https://niels.nu
Waarom zou het een garantie zijn dat het ergens plaintext staat? Wellicht hebben ze hashing al lang ingevoerd maar de front-end checks op wachtwoorden nooit gewijzigd (omdat ze ooit in een verleden wel plaintext of geencrypt werden).Hydra schreef op donderdag 17 augustus 2017 @ 14:14:
[...]
Vrijwel zeker een garantie dat het ergens in plain tekst staat. Hier bij de klant mag je wachtwoord, wat echt overal gebruikt wordt en 3 maanden geldig is, maximaal 8 karakters lang zijn.
is een understatement.
Ik praat die achterlijke eisen niet goed hoor, maar het zegt natuurlijk helemaal niets over de wijze van opslaan.
Ze laten in ieder geval wel zien dat je wachtwoord te lang is. Er zijn ook veel websites/systemen die het wachtwoord stiekem afkappen. Maar dat vervolgens niet consequent bij ook het inloggen doen, waardoor je via bepaalde manieren (bijv een api) niet kunt inloggen met dat wachtwoord, tenzij je het zelf afkapt.
Had laatst een site die _ geen speciaal teken vind. Duurt ook even voor je daar achter bent

Welcome1 for the win!Vincentio schreef op donderdag 17 augustus 2017 @ 13:38:
Ach bij de standaard SAP ID-service die gebruikt wordt voor Support calls / Cloud Platform / Downloaden software en nog enkele zaken moet je wachtwoord 8 tekens lang zijn.
Op sommige punten kan je hem wel langer instellen, maar dan werken de systemen voor de software downloads bijvoorbeeld niet meer.
Dat klopt niet helemaal, voor een simpele SHA* wel, maar veel implementaties van bcrypt ondersteunen maximaal 72 bytes (zie bv. https://security.stackexc...a-maximum-password-length, http://php.net/manual/en/....password-hash-parameters, https://pypi.python.org/p...0#maximum-password-length)DevWouter schreef op donderdag 17 augustus 2017 @ 13:29:
[...]
Hmm.... Normaal gesproken doe je toch cryptografische hash? Dan zou de lengte van het wachtwoord niks mogen betekenen. Ik vraag me dan ook af hoe Vodafona wachtwoorden opslaat.
Een dergelijke check verwijderen / aanpassen is natuurlijk veel simpeler dan de technische aanpassing om het password te hashen. Natuurlijk is het mogelijk maar het is m.i. een veel logischere verklaring dat ze het ergens plaintext opslaan.EddoH schreef op donderdag 17 augustus 2017 @ 14:46:
Waarom zou het een garantie zijn dat het ergens plaintext staat? Wellicht hebben ze hashing al lang ingevoerd maar de front-end checks op wachtwoorden nooit gewijzigd (omdat ze ooit in een verleden wel plaintext of geencrypt werden).
https://niels.nu
^^Daar ben ik dus ook bang voor. Of dat ze denken: joh, ons eigen versleutelfunctie is veel beter dan BCrypt ofzo. base64() FTW.
@Onbekend : ik had eerlijk gezegd ook niet een heel duidelijk antwoord van de klantenservice verwacht, maar had ook geen zin om hier weet-ik-hoeveel uur aan te besteden.
@Onbekend : ik had eerlijk gezegd ook niet een heel duidelijk antwoord van de klantenservice verwacht, maar had ook geen zin om hier weet-ik-hoeveel uur aan te besteden.
Tjolk is lekker. overal en altijd.
Mja, assumption, assumption.Hydra schreef op donderdag 17 augustus 2017 @ 15:35:
[...]
Een dergelijke check verwijderen / aanpassen is natuurlijk veel simpeler dan de technische aanpassing om het password te hashen. Natuurlijk is het mogelijk maar het is m.i. een veel logischere verklaring dat ze het ergens plaintext opslaan.
Ik heb ook ooit eens gehoord dat men een lengtelimiet heeft ingesteld zodat mensen hun wachtwoord minder snel vergaten

Klopt. Dat heeft Center Parcs en dat is niet uit te leggen aan de Twitter helpdesk.jip_86 schreef op donderdag 17 augustus 2017 @ 14:58:
Had laatst een site die _ geen speciaal teken vind. Duurt ook even voor je daar achter bent
[Te koop: 3D printers] [Website] Agile tools: [Return: retrospectives] [Pokertime: planning poker]
Laat ik het dan omdraaien:
Kan iemand in deze schuur een valide reden bedenken waarom het wachtwoord geen speciale tekens mag bevatten en niet meer dan 15 tekens mag zijn?
Kan iemand in deze schuur een valide reden bedenken waarom het wachtwoord geen speciale tekens mag bevatten en niet meer dan 15 tekens mag zijn?
Tjolk is lekker. overal en altijd.
Ooit ergens op internet gelezen:Ger schreef op donderdag 17 augustus 2017 @ 16:11:
Laat ik het dan omdraaien:
Kan iemand in deze schuur een valide reden bedenken waarom het wachtwoord geen speciale tekens mag bevatten en niet meer dan 15 tekens mag zijn?
edit: bron: https://security.stackexc...-maximum-password-lengths
Het advies van OWASP is overigens minimaal 10 en maximaal 128.Take five chimpanzees. Put them in a big cage. Suspend some bananas from the roof of the cage. Provide the chimpanzees with a stepladder. BUT also add a proximity detector to the bananas, so that when a chimp goes near the banana, water hoses are triggered and the whole cage is thoroughly soaked.
Soon, the chimps learn that the bananas and the stepladder are best ignored.
Now, remove one chimp, and replace it with a fresh one. That chimp knows nothing of the hoses. He sees the banana, notices the stepladder, and because he is a smart primate, he envisions himself stepping on the stepladder to reach the bananas. He then deftly grabs the stepladder... and the four other chimps spring on him and beat him squarely. He soon learns to ignore the stepladder.
Then, remove another chimp and replace it with a fresh one. The scenario occurs again; when he grabs the stepladder, he gets mauled by the four other chimps -- yes, including the previous "fresh" chimp. He has integrated the notion of "thou shallt not touch the stepladder".
Iterate. After some operations, you have five chimps who are ready to punch any chimp who would dare touch the stepladder -- and none of them knows why.
Originally, some developer, somewhere, was working on an old Unix system from the previous century, which used the old DES-based "crypt", actually a password hashing function derived from the DES block cipher. In that hashing function, only the first eight characters of the password are used (and only the low 7 bits of each character, as well). Subsequent characters are ignored. That's the banana.
The Internet is full of chimpansees.
https://www.owasp.org/ind...assword_Strength_Controls
Omdat dubbel ROT-26 anders niet werkt ?Ger schreef op donderdag 17 augustus 2017 @ 16:11:
Laat ik het dan omdraaien:
Kan iemand in deze schuur een valide reden bedenken waarom het wachtwoord geen speciale tekens mag bevatten en niet meer dan 15 tekens mag zijn?
Er zijn wel een aantal redenen.Ger schreef op donderdag 17 augustus 2017 @ 16:11:
Laat ik het dan omdraaien:
Kan iemand in deze schuur een valide reden bedenken waarom het wachtwoord geen speciale tekens mag bevatten en niet meer dan 15 tekens mag zijn?
Bij een onbeperkt aantal tekens zou er ergens een bufferoverflow kunnen optreden, met fouten tot gevolg. Dus vandaar een tekenlimiet. Maar in principe zou je die limiet ook wel op 1024 kunnen zetten.
Speciale tekens kunnen soms als commando's worden gezien. De tekens <, >, ", ' en & zijn vaak de speciale tekens en mochten deze per ongeluk slecht worden verwerkt op de server, zou je deze meteen kunnen gebruiken om code te injecteren (met ajax e.d.) en wachtwoordhashes van de server opvragen.
Ook speciale tekens zoals Ɐ, Ȼ en Ǿ kunnen verkeerd verwerkt worden als de pagina-coderingen niet correct zijn, en sommige tekens zijn nauwelijks correct in te voeren op toetsenborden van andere apparaten.
Vaak worden de waarden van invulvelden eerst met een trim() verwerkt, zodat de onnodige spaties aan het begin en eind worden verwijderd. Vanwege dit punt willen sommige sites dus helemaal geen spaties in het wachtwoord hebben, om zo dit soort problemen uit de weg te gaan. (Stel je voor dat het wachtwoord alleen maar uit 10 spaties bestaat
Om al deze mogelijke problemen te voorkomen, accepteren ze maar enkel de tekens 0-9, a-z en A-Z. (Dat zijn totaal 62 tekens en dat kan mooi gebruikt worden met de base64 codering.)
(Er zijn zelfs sites die alle wachtwoorden eerst naar hoofdletters omzet, waarna ze worden gehashed.
Speel ook Balls Connect en Repeat
Allen geen valide reden als je het password gewoon hasht. Qua lengte geef je het zelf al aan, en als je UTF-8 gebruikt van voor tot achter (zoals hun HTML ook uitgespuugd wordt) en vanaf het moment van ontvangen van het password je de zaak hasht, wens ik je veel succes met injection.
Tjolk is lekker. overal en altijd.
Vergeet niet dat veel sites nog steeds geen volledig valide html-code teruggeven. En zolang dat nog niet goed is, heb ik ook erg mijn twijfels over de correcte afhandeling van de ingevoerde tekens aan de serverkant.Ger schreef op donderdag 17 augustus 2017 @ 16:43:
Allen geen valide reden als je het password gewoon hasht. Qua lengte geef je het zelf al aan, en als je UTF-8 gebruikt van voor tot achter (zoals hun HTML ook uitgespuugd wordt) en vanaf het moment van ontvangen van het password je de zaak hasht, wens ik je veel succes met injection.
Speel ook Balls Connect en Repeat
Uit een recent topic op een forum zie ik iemand met deze melding:

Hoe kan een vaste functie in PHP nou niet herkend worden
.
Hoe dan?Fatal error: Call to undefined function print_r() ..........................
Hoe kan een vaste functie in PHP nou niet herkend worden

☎ Telecommunicatie van vroeger
🚅Alles over spoor en treintjes
Het blijft natuurlijk PHP. Wat als bv een non breaking space ervoor staat? PHP zal dan een functie zoeken met de naam <non breaking space>print_r. Maar die bestaat natuurlijk niet.AW_Bos schreef op donderdag 17 augustus 2017 @ 16:56:
Uit een recent topic op een forum zie ik iemand met deze melding:
[...]
Hoe dan?![]()
![]()
Hoe kan een vaste functie in PHP nou niet herkend worden.
Maar is dat niet iets wat PHP zou moeten negeren?RobertMe schreef op donderdag 17 augustus 2017 @ 17:17:
[...]
Het blijft natuurlijk PHP. Wat als bv een non breaking space ervoor staat? PHP zal dan een functie zoeken met de naam <non breaking space>print_r. Maar die bestaat natuurlijk niet.
☎ Telecommunicatie van vroeger
🚅Alles over spoor en treintjes
Dat kan hiermee: http://php.net/manual/en/function.runkit-function-remove.phpAW_Bos schreef op donderdag 17 augustus 2017 @ 16:56:
Uit een recent topic op een forum zie ik iemand met deze melding:
[...]
Hoe dan?![]()
![]()
Hoe kan een vaste functie in PHP nou niet herkend worden.
Speel ook Balls Connect en Repeat
Ik heb wel eens een vergelijkbaar iets gehad met half-mislukte PHP upgrade.AW_Bos schreef op donderdag 17 augustus 2017 @ 16:56:
Uit een recent topic op een forum zie ik iemand met deze melding:
Hoe dan?![]()
![]()
Hoe kan een vaste functie in PHP nou niet herkend worden.
Imo zou een non breaking space geen geldig character moeten zijn en zou de code niet moeten compilen. Maar in php is het gewoon net zo normaal als a-z...AW_Bos schreef op donderdag 17 augustus 2017 @ 17:34:
Maar is dat niet iets wat PHP zou moeten negeren?
Het gebruik van die functies zou echt bij wet verboden moeten worden (net als rename en redefine)
[ Voor 18% gewijzigd door RagingPenguin op 17-08-2017 21:01 ]
Het schijnt dus dat iemand dit dus op de webserver van zijn NAS heeft
.
Ik vind het bijzonder

Ik vind het bijzonder
[ Voor 3% gewijzigd door AW_Bos op 17-08-2017 22:18 ]
☎ Telecommunicatie van vroeger
🚅Alles over spoor en treintjes
Om de stagiair TI lekker in de zeik mee te nemen natuurlijk.dev10 schreef op vrijdag 18 augustus 2017 @ 09:16:
[...]
Kan iemand mij uitleggen waarom je dit zou willen gebruiken?
Is dat heel onlogisch?RobertMe schreef op donderdag 17 augustus 2017 @ 17:17:
[...]
Het blijft natuurlijk PHP. Wat als bv een non breaking space ervoor staat? PHP zal dan een functie zoeken met de naam <non breaking space>print_r.
http://php.net/manual/en/language.variables.basics.php
[ Voor 8% gewijzigd door Olaf van der Spek op 18-08-2017 09:48 ]
Kan me meer dan genoeg redenen voorstellen.dev10 schreef op vrijdag 18 augustus 2017 @ 09:16:
[...]
Kan iemand mij uitleggen waarom je dit zou willen gebruiken?
Stel je hebt een library waarmee je via een REST call users kan toevoegen. 99% van die library is perfect voor jouw project, maar die methode wil je niet. Je gebruikt een remove om die methode te verwijderen/om te schrijven. Aangezien de library backwards compatible moet zijn kun je zonder zorgen de library upgraden en wordt die methode altijd verwijderd/omgeschreven.
Ander scenario:
Stel je hebt library X en Y nodig en beide roepen methode A aan in library Z. Methode A geeft dan aan beide libraries een ander object terug. Dat wil je niet. Wat je wilt is dat library X en Y hetzelfde object gebruiken (Users oid, verzin wat). Je hebt geen tijd om de library X, Y of Z om te schrijven dus besluit je methode A in library Z om te schrijven. Je gebruikt de remove en flikkert daarna met een add jouw eigen methode erin.
Zijn zulke oplossingen netjes? Nee. Maar ze werken en dat is waar het meestal om gaat
A FatalError has occured. You died. Continue (y/n)?
Dat soort dingen doe je met een wrapper om die lib heen. Niet met een vieze hack.Zelalas schreef op vrijdag 18 augustus 2017 @ 10:29:
[...]
Kan me meer dan genoeg redenen voorstellen.
Stel je hebt een library waarmee je via een REST call users kan toevoegen. 99% van die library is perfect voor jouw project, maar die methode wil je niet. Je gebruikt een remove om die methode te verwijderen/om te schrijven. Aangezien de library backwards compatible moet zijn kun je zonder zorgen de library upgraden en wordt die methode altijd verwijderd/omgeschreven.
Ander scenario:
Stel je hebt library X en Y nodig en beide roepen methode A aan in library Z. Methode A geeft dan aan beide libraries een ander object terug. Dat wil je niet. Wat je wilt is dat library X en Y hetzelfde object gebruiken (Users oid, verzin wat). Je hebt geen tijd om de library X, Y of Z om te schrijven dus besluit je methode A in library Z om te schrijven. Je gebruikt de remove en flikkert daarna met een add jouw eigen methode erin.
Zijn zulke oplossingen netjes? Nee. Maar ze werken en dat is waar het meestal om gaat
http://skrrt.io/ gaaf spelletje. bediening gaat via de pijltjestoetsen. doel van het spel is om zoveel mogelijk jerrycans te verzamelen om in leven te blijven maar ook om je score(xp) te verhogen . je begint (0 tot 200 xp) van een gewone gezinswagen en eindigt bij 12800 xp met een supersportwagen. lees de spelregels nog eens goed door.
Meh, superveel input lag.Ludwig005 schreef op vrijdag 18 augustus 2017 @ 13:07:
http://skrrt.io/ gaaf spelletje. bediening gaat via de pijltjestoetsen. doel van het spel is om zoveel mogelijk jerrycans te verzamelen om in leven te blijven maar ook om je score(xp) te verhogen . je begint (0 tot 200 xp) van een gewone gezinswagen en eindigt bij 12800 xp met een supersportwagen. lees de spelregels nog eens goed door.
Dat wel. En als je eenmaal de beste auto hebt ben je onoverwinnelijk.
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.
Ik heb zelfs eens een webhost gezien die je plain-text al je beheer en mysql wachtwoorden leesbaar toonde in het beheer paneel. Dezelfde dag mijn klant nog verhuisdHydra schreef op donderdag 17 augustus 2017 @ 14:45:
Je kunt er vanuit gaan dat er technische beperkingen zijn waarom er een dergelijk maximum aan zit. Oftewel oude systemen die het plain text opslaan. En dat gaan ze nooit en te nimmer toegeven, laat staan via de klantenservice.
In de repo (https://github.com/zenovich/runkit) begint de readme met:dev10 schreef op vrijdag 18 augustus 2017 @ 09:16:
[...]
Kan iemand mij uitleggen waarom je dit zou willen gebruiken?
code:
1
| For all those things you.... probably shouldn't have been doing anyway.... but surely do! |
De enige reden die ik kan bedenken is omdat je functies niet in code staan, maar in een database of via een externe script geladen worden. Het doet mij denken aan http://thedailywtf.com/articles/the-inner-json-effect (tl;dr: versie nummers (SVN) worden gebruikt om een bepaalde versie van een functie uit te checken en te draaien voor de ultimate backwards compatibility)
"Doubt—the concern that my views may not be entirely correct—is the true friend of wisdom and (along with empathy, to which it’s related) the greatest enemy of polarization." -- Václav Havel
Wow... Daar heb ik echt geen woorden voorDevWouter schreef op vrijdag 18 augustus 2017 @ 15:35:
[...]
Het doet mij denken aan http://thedailywtf.com/articles/the-inner-json-effect (tl;dr: versie nummers (SVN) worden gebruikt om een bepaalde versie van een functie uit te checken en te draaien voor de ultimate backwards compatibility)
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
Er zou een programmeervariant moeten zijn van /r/ATBGE (awful taste but great execution)
Look, runners deal in discomfort. After you get past a certain point, that’s all there really is. There is no finesse here.
Zoiets als een applicatie die continue exact gepositioneerd wordt over een andere applicatie en continue aangepast wordt qua grote en locatie, zodat de gebruiker nooit in de gaten heeft dat er hij geen 1 applicatie, maar 7 applicaties draait? Dit puur omdat er zes 3rd party controls gebruikt worden die nooit allemaal in één applicatie kunnen draaien?kenneth schreef op vrijdag 18 augustus 2017 @ 16:30:
Er zou een programmeervariant moeten zijn van /r/ATBGE (awful taste but great execution)
Of bedoel je zaken als het aliassen van een class zodat je de functionaliteit kan wrappen in een andere class? Zo moest ooit std::cout een alias geven worden zodat de content geredirect kon worden naar een logging framework.
Of bedoel je zaken zoals een zeer complex SQL query die een complete HTML-table opbouwt in SQL?
Of die keer dat een C# parser geschreven is zodat er classes ge-emit konden worden die opgeslagen waren in de database? En vervolgens alleen gebruikt werden zodat PropertyGrid gebruikt kon worden?
Of een for-loop waarbij in elke iteratie er een exception kon optreden, maar de try-catch toch buiten de loop deden voor performance redenen?
Man, ik denk dat elke ontwikkelaar een compleet eigen topic kan vullen
"Doubt—the concern that my views may not be entirely correct—is the true friend of wisdom and (along with empathy, to which it’s related) the greatest enemy of polarization." -- Václav Havel
Het kan natuurlijk ook zo zijn dat de andere iteraties niet meer uitmaakt als er een fout optreed, omdat ze bijvoorbeeld afhankelijk zijn van elkaar en/of de fout niet te herstellen is en er dan sowieso een abort/rollback plaats zal vinden. Het is niet niet per definitie fout om dat te doen, maar wel slordig als er niet goed wordt aangegeven hoe en waarom.DevWouter schreef op maandag 21 augustus 2017 @ 10:00:
[...]
Of een for-loop waarbij in elke iteratie er een exception kon optreden, maar de try-catch toch buiten de loop deden voor performance redenen?
Die voorbeelden zijn allemaal praktijk voorbeelden van wat ik ooit gedaan heb. En om het voorbeeld toe te lichten:ThomasG schreef op maandag 21 augustus 2017 @ 11:29:
[...]
Het kan natuurlijk ook zo zijn dat de andere iteraties niet meer uitmaakt als er een fout optreed, omdat ze bijvoorbeeld afhankelijk zijn van elkaar en/of de fout niet te herstellen is en er dan sowieso een abort/rollback plaats zal vinden. Het is niet niet per definitie fout om dat te doen, maar wel slordig als er niet goed wordt aangegeven hoe en waarom.
C#:
1
2
3
4
5
6
7
| for(int i = 0; i < lines.Count(); ++i) { try { // Do something with the line that has 40% of throwing an exception. }catch(Exception ex) { // Move line to another queue as it requires manual love. } } |
De bovenstaande code heeft als probleem dat het bij elke iteratie een try-statement in gaat. Een try-catch statement is helaas niet altijd gratis.
De onderstaande code lost dat op door een dubbele for-loop. Je hebt een dubbele branch, maar je gaat veel minder vaak de try-catch in en een try-catch was duurder dan een if-branch.
C#:
1
2
3
4
5
6
7
8
9
10
11
| for(int i = 0; i < lines.Count(); ++i) { try { for(; i < lines.Count(); ++i) { // Do something with the line that has 40% of throwing an exception. } }catch(Exception ex) { // Move line to another queue as it requires manual love // and continue to the next one. continue; } } |
Overigens weet ik niet met zekerheid meer of het C++ of C# was. Ik vermoed C#...
"Doubt—the concern that my views may not be entirely correct—is the true friend of wisdom and (along with empathy, to which it’s related) the greatest enemy of polarization." -- Václav Havel
Wait, what? Daar heb je rdbuf() voor.DevWouter schreef op maandag 21 augustus 2017 @ 10:00:
Zo moest ooit std::cout een alias geven worden zodat de content geredirect kon worden naar een logging framework.
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.
Lijkt me sterk dat dat een performancewinst oplevert. Een try-catch is, relatief t.o.v. lezen van spullen van een stream, vrijwel gratis. Het enige wat relatief 'zwaar' is is het opbouwen van de stacktrace van een exception maar dat voorkom je niet met die oplossing.DevWouter schreef op maandag 21 augustus 2017 @ 11:52:
De bovenstaande code heeft als probleem dat het bij elke iteratie een try-statement in gaat. Een try-catch statement is helaas niet altijd gratis.
Veel gevallen die ik zie van rare wielen uitvinden is vooral omdat de desbetreffende developer niet door heeft dat er al een prima wiel beschikbaar is..oisyn schreef op maandag 21 augustus 2017 @ 13:10:
Wait, what? Daar heb je rdbuf() voor.
[ Voor 22% gewijzigd door Hydra op 21-08-2017 13:22 ]
https://niels.nu
Eh, hoezo ?DevWouter schreef op maandag 21 augustus 2017 @ 11:52:
[...]
De bovenstaande code heeft als probleem dat het bij elke iteratie een try-statement in gaat. Een try-catch statement is helaas niet altijd gratis.
Het is het throwen van een exception waar een kost mee gemoeid is (vooral als je een 'diepe' stack hebt), niet zozeer het try/catch statement.
https://fgheysels.github.io/
Net ontdekt dat een commit die door een teamlid gebeurd is een tijdje terug, er voor zorgt dat hele datasets uit de DB getrokken worden en de filtering dan in memory gebeurd ipv dat Entity Framework een WHERE clause genereerd.

https://fgheysels.github.io/
Een te vroege ToList()?whoami schreef op maandag 21 augustus 2017 @ 13:52:
Net ontdekt dat een commit die door een teamlid gebeurd is een tijdje terug, er voor zorgt dat hele datasets uit de DB getrokken worden en de filtering dan in memory gebeurd ipv dat Entity Framework een WHERE clause genereerd.
Klopt, maar dat wist ik toen nog niet. Was achteraf gezien ook een duidelijk geval van een schroef en een hamer
Het leverde een substantiële performance winst op, maar ik sluit niet uit dat het een combinatie van omstandigheden het probleem veroorzaakt. Het stomme is ook dat ik het toen ook nooit heb kunnen reproduceren behalve bij dat stukje code.Hydra schreef op maandag 21 augustus 2017 @ 13:21:
[...]
Lijkt me sterk dat dat een performancewinst oplevert. Een try-catch is, relatief t.o.v. lezen van spullen van een stream, vrijwel gratis. Het enige wat relatief 'zwaar' is is het opbouwen van de stacktrace van een exception maar dat voorkom je niet met die oplossing.
"Doubt—the concern that my views may not be entirely correct—is the true friend of wisdom and (along with empathy, to which it’s related) the greatest enemy of polarization." -- Václav Havel
Dat hangt af van de compiler. Zo hebben de meeste (grote) C++ compilers inmiddels Zero-Cost Exception Model, wat zorgt dat het vrijwel gratis is wanneer er geen exception op treed. Maar dat is niet in elke taal zo, en ook niet bij elke compiler (of versies daarvan). Zo stonden de oude GCC compilers bekend om relatief trage exceptions, maar dat is inmiddels al lang niet meer zo.Hydra schreef op maandag 21 augustus 2017 @ 13:21:
[...]
Lijkt me sterk dat dat een performancewinst oplevert. Een try-catch is, relatief t.o.v. lezen van spullen van een stream, vrijwel gratis. Het enige wat relatief 'zwaar' is is het opbouwen van de stacktrace van een exception maar dat voorkom je niet met die oplossing.
Precies, vandaar mijn opmerking.ThomasG schreef op maandag 21 augustus 2017 @ 13:59:
maar dat is inmiddels al lang niet meer zo.
https://niels.nu
Nee, het zal iets complexers zijn.
Er is een bepaald stuk code dat een string die een expressie bevat (bv AND column = value) moet gaan parsen zodanig dat records die aan deze expressie voldoen uit de DB kunnen gehaald worden.
Het werkt op zich wel, maar de manier waarop is dus niet echt goed.
Niet iets dat ik vandaag gefixed krijg, dus krijgt het een plaatsje op de backlog (met hoge prio)
https://fgheysels.github.io/
Misschien ergens een Func<T, bool> ipv een Expression<Func<T, bool>>?
Maar juist vanwege dit soort dingen heb ik een beetje een afkeer van dit soort querybuilders gekregen. Er gebeurt veel achter de schermen en voor je het doorhebt heb je een query gebouwd die halve databases leegtrekt.
Maar juist vanwege dit soort dingen heb ik een beetje een afkeer van dit soort querybuilders gekregen. Er gebeurt veel achter de schermen en voor je het doorhebt heb je een query gebouwd die halve databases leegtrekt.
We are shaping the future
Het is inderdaad vrij lang geleden, dus dit kan goed mogelijk zijn (MSVC 8.0 doet een bel rinkelen). Echter ik wil niet uitsluiten dat er iets anders aan de hand was. Het is goed mogelijk dat ik iets verkeerds deed. Het is in elk geval te lang geleden voor mij om ook iets met 100% zekerheid te zeggen behalve dat het toen de oplossing was. Of het de juiste oplossing is, weet ik niet.ThomasG schreef op maandag 21 augustus 2017 @ 13:59:
[...]
Dat hangt af van de compiler. Zo hebben de meeste (grote) C++ compilers inmiddels Zero-Cost Exception Model, wat zorgt dat het vrijwel gratis is wanneer er geen exception op treed. Maar dat is niet in elke taal zo, en ook niet bij elke compiler (of versies daarvan). Zo stonden de oude GCC compilers bekend om relatief trage exceptions, maar dat is inmiddels al lang niet meer zo.
"Doubt—the concern that my views may not be entirely correct—is the true friend of wisdom and (along with empathy, to which it’s related) the greatest enemy of polarization." -- Václav Havel
Zelfs als dat niet zo is, dan hoeft het alsnog geen performance te kosten. Er is namelijk geen reden waarom de compiler intern de code niet zo kan omschrijven dat het alsnog functioneert zoals in de "lelijke" oplossing.ThomasG schreef op maandag 21 augustus 2017 @ 13:59:
[...]
Dat hangt af van de compiler. Zo hebben de meeste (grote) C++ compilers inmiddels Zero-Cost Exception Model, wat zorgt dat het vrijwel gratis is wanneer er geen exception op treed. Maar dat is niet in elke taal zo, en ook niet bij elke compiler (of versies daarvan). Zo stonden de oude GCC compilers bekend om relatief trage exceptions, maar dat is inmiddels al lang niet meer zo.
Maar zoals je hier kunt zien kost het niets. De loop is vrij kort en heeft geen enkele referentie naar de exception handler.
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.
Gedeeltelijk de oorzaak idd. Grootste probleem in dit geval zit echter volgens mij in de manier waarop die string geparsed wordt naar een expressie. Toch maar eens kijken of de DynamicExpression lib hier geen oplossing kan biedenAlex) schreef op maandag 21 augustus 2017 @ 14:22:
Misschien ergens een Func<T, bool> ipv een Expression<Func<T, bool>>?
Ik denk dat dit specifiek is voor Entity Framework. Met NHibernate bv ga je dit volgens mij minder snel hebben.Maar juist vanwege dit soort dingen heb ik een beetje een afkeer van dit soort querybuilders gekregen. Er gebeurt veel achter de schermen en voor je het doorhebt heb je een query gebouwd die halve databases leegtrekt.
Zowiezo is het wel een feit dat, als men gebruik maakt van O/R mappers je nog altijd moet weten met wat je bezig bent. Je moet in het achterhoofd houden dat er een DB achter zit, ervoor zorgen dat de gegenereerde SQL optimaal is, op je hoede zijn voor het SELECT n+1 probleem, etc...
[ Voor 10% gewijzigd door whoami op 21-08-2017 16:40 ]
https://fgheysels.github.io/
Alles staat of valt bij de onderliggende query parser.whoami schreef op maandag 21 augustus 2017 @ 16:38:
[...]
Ik denk dat dit specifiek is voor Entity Framework. Met NHibernate bv ga je dit volgens mij minder snel hebben.
Dat klopt, maar een foutje is snel gemaakt en je hebt zeker bij kleine datasets niet altijd snel door dat de operaties in-memory worden uitgevoerd in plaats van in de database.Zowiezo is het wel een feit dat, als men gebruik maakt van O/R mappers je nog altijd moet weten met wat je bezig bent. Je moet in het achterhoofd houden dat er een DB achter zit, ervoor zorgen dat de gegenereerde SQL optimaal is, op je hoede zijn voor het SELECT n+1 probleem, etc...
En tegen de tijd dat je het wel doorhebt kun je gaan zoeken naar een speld in een hooiberg. Of nog erger, dan mag je opvolger gaan zoeken naar een speld in een hooiberg.
We are shaping the future
Volgens mij ligt dat dan aan de ORM die het mogelijk maakt om die operaties in-memory uit te voeren. Als ze dat niet mogelijk maken of speciaal aangeven dan houdt je daar rekening mee. Maar met (alle?) ORM frameworks is de kans groot om die fout te maken. De child objecten ophalen van een entity opvragen kan al teveel data opvragen. (Bv 1 query waar dan de parent in elke die wordt herhaald.)Alex) schreef op maandag 21 augustus 2017 @ 17:05:
[...]
Alles staat of valt bij de onderliggende query parser.
[...]
Dat klopt, maar een foutje is snel gemaakt en je hebt zeker bij kleine datasets niet altijd snel door dat de operaties in-memory worden uitgevoerd in plaats van in de database.
En tegen de tijd dat je het wel doorhebt kun je gaan zoeken naar een speld in een hooiberg. Of nog erger, dan mag je opvolger gaan zoeken naar een speld in een hooiberg.
let the past be the past.
Ik ben eigenlijk sowieso opgehouden met het gebruiken van ORMs. Kwa expressiveness is er eigenlijk niks wat gewoon SQL naar de kroon kan steken. Je hebt meestal geen ORM nodig maar gewoon een rowmapper die de date uit de resultsets naar objecten omzet. En daar zijn prima libraries voor. Met een ORM moet je nog steeds SQL kunnen lezen (elke niet triviale query moet je echt checken) en je bent vaak langer bezig de relaties tussen je entities te mappen dan dat je bezig bent SQL te schrijven.
Daarbij levert het ranzige code op. Je hebt vrijwel nooit 1 enkel 'model' van je data waarmee je werkt. Dat was nog enigzins werkbaar toen we fat-clients maken waarbij het belangrijk is dat je op een object .save() aan kan roepen. Maar tegenwoordig werk je vaak met losse services waarin je verschillende views hebt. Een view kan een subset uit een tabel A zijn waarbij een andere view weer een join is met een deel van de date uit tabel A, B en C. Uiteindelijk is precies vragen wat je nodig hebt in de volgorde waar de DB engine wat slims mee kan het meest performant.
Daarbij levert het ranzige code op. Je hebt vrijwel nooit 1 enkel 'model' van je data waarmee je werkt. Dat was nog enigzins werkbaar toen we fat-clients maken waarbij het belangrijk is dat je op een object .save() aan kan roepen. Maar tegenwoordig werk je vaak met losse services waarin je verschillende views hebt. Een view kan een subset uit een tabel A zijn waarbij een andere view weer een join is met een deel van de date uit tabel A, B en C. Uiteindelijk is precies vragen wat je nodig hebt in de volgorde waar de DB engine wat slims mee kan het meest performant.
https://niels.nu
Sommige dingen presteren ook veel beter als je rechtstreeks tegen/met de database praat. Bulk-operaties (en dan bedoel ik miljoenen regels) wil je niet door een ORM jagen, bijvoorbeeld.
Ik heb wel eens een select-query (die door EF werd gegenereerd) flink kunnen versnellen door een bepaalde projectie voor de .ToList() te doen in plaats van erna. Ik moest nog een paar andere dingen verplaatsen/anders oplossen, maar de uiteindelijke runtime wist ik terug te brengen van 3 minuten naar 2 seconden.
Waarom het verschil zo groot was werd snel duidelijk toen ik de gegenereerde SQL bekeek: in plaats van tientallen kolommen en miljoenen rijen te retourneren (die daarna in memory werden gemapt naar objecten) retourneerde de database nu alleen nog maar wat er echt nodig was voor het betreffende rapport. EF was dus ook zo klaar.
De oorspronkelijke query was niet al te handig gebouwd.
Ik heb wel eens een select-query (die door EF werd gegenereerd) flink kunnen versnellen door een bepaalde projectie voor de .ToList() te doen in plaats van erna. Ik moest nog een paar andere dingen verplaatsen/anders oplossen, maar de uiteindelijke runtime wist ik terug te brengen van 3 minuten naar 2 seconden.
Waarom het verschil zo groot was werd snel duidelijk toen ik de gegenereerde SQL bekeek: in plaats van tientallen kolommen en miljoenen rijen te retourneren (die daarna in memory werden gemapt naar objecten) retourneerde de database nu alleen nog maar wat er echt nodig was voor het betreffende rapport. EF was dus ook zo klaar.
De oorspronkelijke query was niet al te handig gebouwd.

We are shaping the future
Dit topic is gesloten.
Let op:
Dit topic is niet de plaats om te lopen helpdesken. De Coffee Corner is primair bedoeld als uitlaatklep voor iedereen in de Devschuur® en niet als vraagbaak.
Dit topic is niet de plaats om te lopen helpdesken. De Coffee Corner is primair bedoeld als uitlaatklep voor iedereen in de Devschuur® en niet als vraagbaak.