Maar als je bv een wachtwoord met MD5 (of welke andere hashing methode dan ook) genereert wil je juist dat je wat trager bentThomasG schreef op dinsdag 21 mei 2013 @ 12:57:
Ik werd toch even nieuwsgierig naar de performance van verschillende manieren om een string om te zetten naar MD5. Ik heb drie implementaties genomen, en ToMD5_3 is het snelste. Bij 1.000.000 iteraties, op een i7-2600k:
ToMD5_1: 7075ms ToMD5_2: 6300ms ToMD5_3: 5752ms
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 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 using System; using System.Diagnostics; using System.Security.Cryptography; using System.Text; namespace ConsoleApplication1 { static class StringExtensions { public static string ToMD5_1(this string value) { StringBuilder hexadecimal = new StringBuilder(); using (MD5 md5Hash = MD5.Create()) { byte[] data = md5Hash.ComputeHash(Encoding.UTF8.GetBytes(value)); for (int i = 0; i < data.Length; i++) hexadecimal.Append(data[i].ToString("x2")); } return hexadecimal.ToString().ToLower(); } public static string ToMD5_2(this string value) { byte[] data; using (MD5 md5 = MD5.Create()) { data = md5.ComputeHash(Encoding.UTF8.GetBytes(value)); } return BitConverter.ToString(data).ToLower().Replace("-", string.Empty); } public static string ToMD5_3(this string value) { byte[] data; using (MD5 md5 = MD5.Create()) { data = md5.ComputeHash(Encoding.UTF8.GetBytes(value)); } return data.ToHex().ToLower(); } } static class ByteExtensions { private const string hexChars = "0123456789ABCDEF"; public static string ToHex(this byte[] bytes) { int length = bytes.Length * 2; char[] hex = new char[length]; int byteIndex = 0; for (int charIndex = 0; charIndex < length; charIndex += 2) { byte byteValue = bytes[byteIndex++]; hex[charIndex] = hexChars[byteValue / 16]; hex[charIndex + 1] = hexChars[byteValue % 16]; } return new string(hex); } } class Program { static void Main(string[] args) { int iterations = 1000000; Stopwatch sw = Stopwatch.StartNew(); for (int i = 0; i < iterations; i++) { "thisisasillystringtodosomemagicon".ToMD5_1(); } sw.Stop(); Console.WriteLine((sw.ElapsedMilliseconds).ToString()); sw = Stopwatch.StartNew(); for (int i = 0; i < iterations; i++) { "thisisasillystringtodosomemagicon".ToMD5_2(); } sw.Stop(); Console.WriteLine((sw.ElapsedMilliseconds).ToString()); sw = Stopwatch.StartNew(); for (int i = 0; i < iterations; i++) { "thisisasillystringtodosomemagicon".ToMD5_3(); } sw.Stop(); Console.WriteLine((sw.ElapsedMilliseconds).ToString()); Console.ReadLine(); } } }
Iets van mezelf. Net ineens like 'WTF waarom deed ik dat zo.'. Zomaar 
Wat natuurlijk veel beter zo kan:
PHP:
1
2
3
4
5
6
7
8
| $a = 0; foreach ($array as $arrayitem) { $a++; echo $item; if($a < count($array)) { echo 'some stuff in between'; } } |
Wat natuurlijk veel beter zo kan:
PHP:
1
| echo implode('somestuffinbetween', $array); |
2x Dell UP2716D | R9 7950X | 128GB RAM | 980 Pro 2TB x2 | RTX2070 Super
.oisyn: Windows is net zo slecht in commandline als Linux in GUI
waarom zou dat helpen? Dan kan je beter een sleep inbouwen aan het eind van de validatie-methode, scheelt je processortijd=load.Verwijderd schreef op vrijdag 24 mei 2013 @ 18:58:
[...]
Maar als je bv een wachtwoord met MD5 (of welke andere hashing methode dan ook) genereert wil je juist dat je wat trager bentGezien het feit dat je dan moeilijker kan brute-forcen.
Of exponentieel blokkeren.MBV schreef op vrijdag 24 mei 2013 @ 19:41:
[...]
waarom zou dat helpen? Dan kan je beter een sleep inbouwen aan het eind van de validatie-methode, scheelt je processortijd=load.
Drie keer achter elkaar fout is 1 min. geblokkeerd, tien keer fout een dag, twintig keer fout een jaar.
Ik denk dat hij, hoewel daar in dit geval geen sprake van was, doelde op het feit dat het hashen best wel iets duurder mag zijn zodat bruteforcen meer tijd kost.MBV schreef op vrijdag 24 mei 2013 @ 19:41:
[...]
waarom zou dat helpen? Dan kan je beter een sleep inbouwen aan het eind van de validatie-methode, scheelt je processortijd=load.
Volgens mij is dat niet bedoeld voor 'zodat het op je productieserver' trager is. Maar dat als men achter het algoritme komt en de tabel met hashes ligt op straat men niet snel een betreffende hash kan bruteforcen.MBV schreef op vrijdag 24 mei 2013 @ 19:41:
[...]
waarom zou dat helpen? Dan kan je beter een sleep inbouwen aan het eind van de validatie-methode, scheelt je processortijd=load.
Niet het bruteforcen 'live' op de server.
[ Voor 4% gewijzigd door ZpAz op 24-05-2013 21:46 ]
Hah, heel herkenbaar. Het is ook heel moeilijk om te omschrijven om te kijken of er een functie is. Zeker binnen php.F.West98 schreef op vrijdag 24 mei 2013 @ 19:06:
Iets van mezelf. Net ineens like 'WTF waarom deed ik dat zo.'. Zomaar
PHP:
1 2 3 4 5 6 7 8 $a = 0; foreach ($array as $arrayitem) { $a++; echo $item; if($a < count($array)) { echo 'some stuff in between'; } }
Wat natuurlijk veel beter zo kan:
PHP:
1 echo implode('somestuffinbetween', $array);
Verwijderd
PreciesPatriot schreef op vrijdag 24 mei 2013 @ 21:10:
[...]
Ik denk dat hij, hoewel daar in dit geval geen sprake van was, doelde op het feit dat het hashen best wel iets duurder mag zijn zodat bruteforcen meer tijd kost.
[ Voor 8% gewijzigd door Verwijderd op 24-05-2013 22:41 ]
PHP zelf doet het zelf ook (ongeveer) zo. Het staat natuurlijk wel netter als je implode() gebruiktF.West98 schreef op vrijdag 24 mei 2013 @ 19:06:
Iets van mezelf. Net ineens like 'WTF waarom deed ik dat zo.'. Zomaar
PHP:
1 2 3 4 5 6 7 8 $a = 0; foreach ($array as $arrayitem) { $a++; echo $item; if($a < count($array)) { echo 'some stuff in between'; } }
Wat natuurlijk veel beter zo kan:
PHP:
1 echo implode('somestuffinbetween', $array);
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
| PHPAPI void php_implode(zval *delim, zval *arr, zval *return_value TSRMLS_DC) { zval **tmp; HashPosition pos; smart_str implstr = {0}; int numelems, i = 0; zval tmp_val; int str_len; numelems = zend_hash_num_elements(Z_ARRVAL_P(arr)); zend_hash_internal_pointer_reset_ex(Z_ARRVAL_P(arr), &pos); while (zend_hash_get_current_data_ex(Z_ARRVAL_P(arr), (void **) &tmp, &pos) == SUCCESS) { tmp_val = **tmp; zval_copy_ctor(&tmp_val); convert_to_string(&tmp_val); smart_str_appendl(&implstr, Z_STRVAL(tmp_val), Z_STRLEN(tmp_val)); zval_dtor(&tmp_val); if (++i != numelems) { smart_str_appendl(&implstr, Z_STRVAL_P(delim), Z_STRLEN_P(delim)); } zend_hash_move_forward_ex(Z_ARRVAL_P(arr), &pos); } smart_str_0(&implstr); if (implstr.len) { RETURN_STRINGL(implstr.c, implstr.len, 0); } else { smart_str_free(&implstr); RETURN_EMPTY_STRING(); } } |
Niet de hele functie, alleen de relevante dingen.
[ Voor 6% gewijzigd door Pizzalucht op 24-05-2013 23:02 ]
Daarom moet je ook een moeilijker algoritme gebruiken dan MD5, de hackers zijn over het algemeen heel goed in het efficiënt implementeren van je algoritmeVerwijderd schreef op vrijdag 24 mei 2013 @ 22:41:
[...]
PreciesMaar ik wist niet precies waar de code voor diende
Dat staat op zich los van het gebruikte algoritme. Als we kijken naar PHP, dan kun je middels de hash_pbkdf2 functie ook een heel goedkoop hash-algoritme gebruiken, dan moet je alleen het aantal iteraties omhoog schroeven om dezelfde hoeveelheid work te behalen als een relatief duur algoritme.MBV schreef op zaterdag 25 mei 2013 @ 01:03:
[...]
Daarom moet je ook een moeilijker algoritme gebruiken dan MD5, de hackers zijn over het algemeen heel goed in het efficiënt implementeren van je algoritme
Ok, laat ik het anders formuleren: je moet iets doen om het aantal berekeningen dat hackers nodig hebben zo groot mogelijk te maken t.o.v. wat je zelf moet doen. MD5 implementeren op een manier die jou 10x zoveel tijd kost als de optimale implementatie helpt dus niet, maar 10x MD5 helpt wel (een beetje). Dus als je kan kiezen tussen een algoritme snel of langzaam uitvoeren, kan je net zo goed voor de snelle kiezen.
Nouja, als je bedoelt dat je er niets mee opschiet om een 10 keer langzamere implementatie te gebruiken van MD5, omdat je zeker weet dat de hacker toegang heeft tot de snellere implementatie, dan heb je inderdaad gelijk. Maar ook dat staat los van het algoritme, dus ik vind het nog steeds een beetje kort door de bocht om te zeggen dat je een "moeilijker algoritme dan MD5" moet gebruiken.MBV schreef op zaterdag 25 mei 2013 @ 19:39:
Ok, laat ik het anders formuleren: je moet iets doen om het aantal berekeningen dat hackers nodig hebben zo groot mogelijk te maken t.o.v. wat je zelf moet doen. MD5 implementeren op een manier die jou 10x zoveel tijd kost als de optimale implementatie helpt dus niet, maar 10x MD5 helpt wel (een beetje). Dus als je kan kiezen tussen een algoritme snel of langzaam uitvoeren, kan je net zo goed voor de snelle kiezen.
Dat maakt alsnog niets uit. Er mist een exit achter de header waardoor hij alsnog de hele lus doorgaat en de output van de hele pagina doorstuurt naar de client ook al zou de client deze niet mogen zien. Daarom dus altijd een exit achter een location header.Tarabass schreef op donderdag 09 mei 2013 @ 09:55:
[...]
Je zal maar een miljoen gebruikers hebben en de gebruiker die zich inlogt is pas net lid
Een van de problemen met die code is dat je niet weet in welke volgorde de gebruikers opgeleverd worden, en het nog niet eens zo verwonderlijk zou zijn dat nieuwe gebruikers achteraan staan en met een exit() dan nog steeds alle gebruikers doorgelopen worden wanneer zo'n nieuwe gebruiker zich aanmeldt.Phoenix1337 schreef op dinsdag 28 mei 2013 @ 13:25:
[...]
Dat maakt alsnog niets uit. Er mist een exit achter de header waardoor hij alsnog de hele lus doorgaat en de output van de hele pagina doorstuurt naar de client ook al zou de client deze niet mogen zien. Daarom dus altijd een exit achter een location header.
putStr $ map (x -> chr $ round $ 21/2 * x^3 - 92 * x^2 + 503/2 * x - 105) [1..4]
Klopt, die code is zo fout als wat. Ik doelde alleen op de opmerking over die while. Die wordt hoe dan ook altijd volledig uitgevoerd ongeacht waar de gebruiker in de resultset staat.Infinitive schreef op dinsdag 28 mei 2013 @ 13:53:
[...]
Een van de problemen met die code is dat je niet weet in welke volgorde de gebruikers opgeleverd worden, en het nog niet eens zo verwonderlijk zou zijn dat nieuwe gebruikers achteraan staan en met een exit() dan nog steeds alle gebruikers doorgelopen worden wanneer zo'n nieuwe gebruiker zich aanmeldt.
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
| $aInvoiceRule = array( 'invoice_id' => $iInvoice, 'parent_id' => null, 'subscription_id' => null, 'product_id' => $aProduct[0]['product_id'], 'description' => $aProduct[0]['name'], 'greatbooknumber' => $aProduct[0]['exactglobenumber'] . '000', 'purchase_price' => 0, 'sale_price' => '1.25', 'tax' => 21, //$aTax['tax'] 'start_date' => date('Y-m-d'), 'end_date' => date('Y-m-d') ); |
Een BTW probleempje gefixed, nooit meer aankomen
Waarom staat 1.25 binnen quotes?Noxious schreef op dinsdag 28 mei 2013 @ 14:53:
PHP:
1 2 3 4 5 6 7 8 9 10 11 12 13 $aInvoiceRule = array( 'invoice_id' => $iInvoice, 'parent_id' => null, 'subscription_id' => null, 'product_id' => $aProduct[0]['product_id'], 'description' => $aProduct[0]['name'], 'greatbooknumber' => $aProduct[0]['exactglobenumber'] . '000', 'purchase_price' => 0, 'sale_price' => '1.25', 'tax' => 21, //$aTax['tax'] 'start_date' => date('Y-m-d'), 'end_date' => date('Y-m-d') );
Een BTW probleempje gefixed, nooit meer aankomen
Dunno, niet mijn code
Ik werk bij een bedrijf die ooit hebben besloten om al hun administratiesoftware inhouse te schrijven en dat is zegmaar niet de allerbeste beslissing geweest.
In ieder geval niet met de developers die het gebakken hebben.
Wees blij, ze hadden het naar India kunnen outsourcen
Nou ja, op de achtergrond maakt PHP toch het liefst overal strings van, ze zijn hem nu gewoon een stapje voor.
Greatbooknumber 
Maar waarom niet de waarde die in $aTax['tax'] wordt gezet aanpassen? Als ik die code zo zie, moet de rest van de code op zich redelijk zijn. Dat idee krijg ik in ieder geval.
Maar waarom niet de waarde die in $aTax['tax'] wordt gezet aanpassen? Als ik die code zo zie, moet de rest van de code op zich redelijk zijn. Dat idee krijg ik in ieder geval.
PV: Growatt MOD5000TL3-XH + 5720wp, WPB: Atlantic Explorer v4 270LC, L/L: MHI SCM 125ZM-S + SRK 50ZS-W + 2x SRK 25ZS-W + SRK 20ZS-W Modbus kWh meter nodig?
- We Are Borg
- Registratie: April 2000
- Laatst online: 08:53
Moderator Wonen & Mobiliteit / General Chat
/u/5360/crop65d3c045ca48f_cropped.png?f=community)
Het beruchte Nederlandse Stonecoleish. Staat er nog een in volgens mij, aangezien het over boekhouding gaat.
Dit soort uitwassen zit in onze software ook veel, maar dan een combinatie van Engels, Nederlands, Frans, Duits en bijna Engels. En dan beledigd kijken, wanneer een Native zwaar in de lach schiet of zich zich zwaar beledigd voelt.
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live.
Natuurlijk greatbooknumber. Nederlands in code is stom en slecht. Engels is altijd beter. Ook als het domein Nederlandstalig is. Wat weten de domeinexperts nou helemaal?
Look, runners deal in discomfort. After you get past a certain point, that’s all there really is. There is no finesse here.
Mja, grootboek is 'general ledger' in het english dus het zou beter kunnen idd 
Maarja, as said, ook niet mijn code
En die $tax kwam ergens uit een tabel, door 6 or 7 layers/classes/enz heen en verliest ergens halverwege z'n waarde
Maarja, as said, ook niet mijn code
En die $tax kwam ergens uit een tabel, door 6 or 7 layers/classes/enz heen en verliest ergens halverwege z'n waarde
En daarnaast dus de float binnen quotes en floats voor bedragen:)
Jups.
De hele boel zit vol met classes op classes op database layers enz enz
1 grote complexe soep wat ook nog eens op Zend 1.2 ofzo hangt, met een aangepaste core
De hele boel zit vol met classes op classes op database layers enz enz

WTF bol.com
Ik wil mijn wachtwoord veranderen. Middels lastpass genereer ik het volgende wachtwoord: #$bLLTK8up7N5P*x.
Dat lijkt overeen te komen met de wensen van bol.com; Immers:
We wijzen u graag op het volgende:
Het wachtwoord moet minimaal 6 tekens bevatten.
WTF willen ze nu
Edit; Ik heb ook geprobeerd met 8 cijfers, 8 (hoofd) letters of 8 speciale tekens. Geen van alle lijkt ie te slikken.
Ik heb het billie gevraagd (hun helpdeskbot), maar daarvan wordt ik ook niets wijzer:
Ik wil mijn wachtwoord veranderen. Middels lastpass genereer ik het volgende wachtwoord: #$bLLTK8up7N5P*x.
Dat lijkt overeen te komen met de wensen van bol.com; Immers:
Maar nu krijg ik de volgende foutmeldingwachtwoordtips
1. Gebruik altijd voor iedere website of login een verschillend, uniek wachtwoord.
2. Wijzig uw wachtwoorden regelmatig.
3. Gebruik wachtwoorden van minimaal 8 tekens.
4. Een goed wachtwoord bevat hoofdletters en kleine letters, cijfers, en speciale tekens (!$%^&*).
5. Gebruik nooit al te voor de hand liggende wachtwoorden, zoals (achter)namen of geboortedata.
We wijzen u graag op het volgende:
Het wachtwoord moet minimaal 6 tekens bevatten.
WTF willen ze nu

Edit; Ik heb ook geprobeerd met 8 cijfers, 8 (hoofd) letters of 8 speciale tekens. Geen van alle lijkt ie te slikken.
Ik heb het billie gevraagd (hun helpdeskbot), maar daarvan wordt ik ook niets wijzer:
Nu maar een wachtwoord van 12 karakters ingesteld, want 14, 15 en 16 pakt ie nietBillie zegt:Let bij het invoeren van het e-mailadres en wachtwoord goed op dat u geen typfouten maakt. Mocht het toch niet lukken om in te loggen dan kunt u het beste een nieuw wachtwoord aanvragen. Gebruik minimaal 8 tekens voor uw wachtwoord en maak een combinatie van hoofdletters en kleine letters, cijfers, en speciale tekens. Is er nog iets anders waarmee ik u van dienst kan zijn?

[ Voor 31% gewijzigd door Matis op 28-05-2013 22:08 ]
If money talks then I'm a mime
If time is money then I'm out of time
Ik denk dat ik toendertijd ook hetzelfde probleem heb gehad want normaal genereer ik 40 character passwords en voor Bol.com is ie ook maar 12Matis schreef op dinsdag 28 mei 2013 @ 22:01:
Nu maar een wachtwoord van 12 karakters ingesteld, want 14, 15 en 16 pakt ie niet
Ow dat gebeurt zelfs bij banken nog, ik snap niet waarom een wachtwoord voor een bank maar 8-12 tekens mag hebben. Crasht anders de hashingfunctie of wat.
Het wachtwoord van je Hotmail-account Microsoft .NET Passport .NET Passport Windows Live ID Microsoft-account mag ook maar maximaal 16 tekens lang zijn. Vroeger (voor de laatste makeover) werd alles na de eerste 16 tekens gewoon afgekapt in de backend, maar tegenwoordig zit er een maxlength op de tekstbox.
De oorzaak schijnt te liggen in backendsystemen die niet meer aankunnen dan 16 tekens (pre-hashing), en dat het wijzigen de nodige tijd zou kosten.
De oorzaak schijnt te liggen in backendsystemen die niet meer aankunnen dan 16 tekens (pre-hashing), en dat het wijzigen de nodige tijd zou kosten.
We are shaping the future
Bij mij op school (universiteit ja) is het zelfs nog erger: Je wachtwoord mag zo lang zijn als je wil, maar als de eerste acht tekens goed zijn wordt je al binnen gelaten. Aangezien ik een Informatica-opleiding doe, valt dat toch wel heel erg tegen... Overigens draaien we ook nog een Linux-distro van 3 jaar geleden (en geen LTS-versie, dus hij wordt al niet meer ondersteund, al hebben ze hem überhaupt nooit geüpdatet).
Dus eigenlijk kapt deze ook af na 8 tekensChris7 schreef op woensdag 29 mei 2013 @ 08:07:
Bij mij op school (universiteit ja) is het zelfs nog erger: Je wachtwoord mag zo lang zijn als je wil, maar als de eerste acht tekens goed zijn wordt je al binnen gelaten. Aangezien ik een Informatica-opleiding doe, valt dat toch wel heel erg tegen... Overigens draaien we ook nog een Linux-distro van 3 jaar geleden (en geen LTS-versie, dus hij wordt al niet meer ondersteund, al hebben ze hem überhaupt nooit geüpdatet).
RTFM!
Pfff ja, vreselijk, en ze zijn totaal vergeten de interface wat feedback te laten geven. Maar toen ik probeerde in te loggen op de app op m'n telefoon ging het mis. Ik kon niet inloggen terwijl ik wist dat m'n wachtwoord echt klopte. Immers, de webinterface accepteerde het gewoon en ook in m'n IM-client ging dat prima... maar die app deed dat dus niet. Dat was (hopelijk niet meer) een lelijke fout van MS daar.Alex) schreef op dinsdag 28 mei 2013 @ 22:56:
Het wachtwoord van je Hotmail-account Microsoft .NET Passport .NET Passport Windows Live ID Microsoft-account mag ook maar maximaal 16 tekens lang zijn. Vroeger (voor de laatste makeover) werd alles na de eerste 16 tekens gewoon afgekapt in de backend, maar tegenwoordig zit er een maxlength op de tekstbox.
De oorzaak schijnt te liggen in backendsystemen die niet meer aankunnen dan 16 tekens (pre-hashing), en dat het wijzigen de nodige tijd zou kosten.
Saved by the buoyancy of citrus
Bij Moneyou heb ik ooit een probleem gehad: wachtwoord was verlopen, dus lastpass genereert een wachtwoord met een # erin. Daar kan je wel je wachtwoord naartoe wijzigen, maar niet mee inloggen!
Vervolgens gebeld wat ik nu moest doen, aangezien ik de geheime vragen natuurlijk ook niet meer wist. Ze konden me het antwoord op de geheime vragen vertellen, dus toen maar geen speciale tekens in moneyou.

[ Voor 14% gewijzigd door MBV op 29-05-2013 09:17 ]
Een wachtwoord met een # erin wordt niet geaccepteerd? Wat voeren ze met die wachtwoorden uit bij het controleren dan? 
(En anders sla je de antwoorden van je geheime vragen gewoon niet versleuteld op, ben benieuwd of ze dat met de wachtwoorden wel doen
)
Ik heb ook iets vergelijkbaars met usernames. Ik gebruik eigenlijk net zo lief even een e-mailadres, maar usernames mogen vaak geen @ bevatten. Da's weer jammer.

(En anders sla je de antwoorden van je geheime vragen gewoon niet versleuteld op, ben benieuwd of ze dat met de wachtwoorden wel doen

Ik heb ook iets vergelijkbaars met usernames. Ik gebruik eigenlijk net zo lief even een e-mailadres, maar usernames mogen vaak geen @ bevatten. Da's weer jammer.
Saved by the buoyancy of citrus
Haha, Leiden toevallig? Daar had ik het 10 jaar geleden al opgemerkt... Net even gechecked en ik kan (8 jaar na uitschrijven), nog steeds op mijn ftp, mail en persoonlijke site met mijn account en mijn mail account pakt inderdaad nog steeds maar de max 8 characters, alles erachter wordt genegeerd... Toppie hoor!Chris7 schreef op woensdag 29 mei 2013 @ 08:07:
Bij mij op school (universiteit ja) is het zelfs nog erger: Je wachtwoord mag zo lang zijn als je wil, maar als de eerste acht tekens goed zijn wordt je al binnen gelaten. Aangezien ik een Informatica-opleiding doe, valt dat toch wel heel erg tegen... Overigens draaien we ook nog een Linux-distro van 3 jaar geleden (en geen LTS-versie, dus hij wordt al niet meer ondersteund, al hebben ze hem überhaupt nooit geüpdatet).
Leiden ja. Overigens geld die beperking van max. 8 characters ook voor de usernames, dus die zijn bij sommigen ook lekker onlogisch.Coca-Cola schreef op woensdag 29 mei 2013 @ 11:00:
[...]
Haha, Leiden toevallig? Daar had ik het 10 jaar geleden al opgemerkt... Net even gechecked en ik kan (8 jaar na uitschrijven), nog steeds op mijn ftp, mail en persoonlijke site met mijn account en mijn mail account pakt inderdaad nog steeds maar de max 8 characters, alles erachter wordt genegeerd... Toppie hoor!
Woningnet.nl heeft hetzelfde, probleem is waarschijnlijk dat http://php.net/crypt wordt gebruikt met voor iedere gebruiker dezelfde salt. Staat gewoon gedocumenteerd op die pagina, maar ja.
The standard DES-based crypt() returns the salt as the first two characters of the output. It also only uses the first eight characters of str, so longer strings that start with the same eight characters will generate the same result (when the same salt is used).
bij moneyou is het nog leuker... weet niet of het nog zo is, maar een jaar geleden wilde ik een wachtwoord instellen met een + erin... werkte prima.. maar niet in de mobiele app.... na heel veel zoeken kwam ik er achter waarom ik mobiel niet kon inloggen... dat kan pas toen ik de + in een . veranderde....MBV schreef op woensdag 29 mei 2013 @ 09:16:
Bij Moneyou heb ik ooit een probleem gehad: wachtwoord was verlopen, dus lastpass genereert een wachtwoord met een # erin. Daar kan je wel je wachtwoord naartoe wijzigen, maar niet mee inloggen!Vervolgens gebeld wat ik nu moest doen, aangezien ik de geheime vragen natuurlijk ook niet meer wist. Ze konden me het antwoord op de geheime vragen vertellen, dus toen maar geen speciale tekens in moneyou.
al die wachtwoordregels van de verschillende sites wordt ik sowieso gek van... ik wil vaak hetzelfde wachtwoord (of een kleine aanpassing al naar gelang de site), maar omdat iedere site weer andere regels hanteert heb ik dus bijna nergens hetzelfde wachtwoord... (net zo irritant als mensen die MIJN loginnaam al eerder hebben dan dat ik me aanmeld op een site... grrr... ook overal andere loginnames... zo irri
Ik heb kennelijk een redelijk unieke username, meestal is hij nog vrij
Maar wachtwoorden doe ik niet moeilijk over: sinds die grote hack bij LinkedIn heb ik al mijn wachtwoorden veranderd naar gegenereerde wachtwoorden. Zonder lastpass kom ik alleen in DigId en 1 mailaccount.
Ach, Google heeft de dot-bug ook nog in het assortiment. Ze doen het af als een feature. Zolang giganten als Google dit soort 'bugs' niet serieus nemen, verwacht ik van bovenstaande websites al helemaal niet dat ze wachtwoordpolicies serieus gaan nemen.
Leg eens uit waarom dat een bug is dan? Dat is zover ik weet gewoon by-design ( I.i.g. al bekend zolang GMail bestaat ). En hoewel je kunt betwisten of het een nuttige/wenselijke feature is, zie ik het niet als een bug.Tarabass schreef op woensdag 29 mei 2013 @ 21:49:
Ach, Google heeft de dot-bug ook nog in het assortiment. Ze doen het af als een feature. Zolang giganten als Google dit soort 'bugs' niet serieus nemen, verwacht ik van bovenstaande websites al helemaal niet dat ze wachtwoordpolicies serieus gaan nemen.
“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.”
Tja, ik zie het probleem ook niet.
Want volgens mij zijn geen twee adressen (als je alle dots weghaalt) hetzelfde.
Want volgens mij zijn geen twee adressen (als je alle dots weghaalt) hetzelfde.
Ik ga er vanuit dat ze daar ook op controleren als het een feature is.
Bij Gmail is het volgens mij expres. Het werkt geloof ik ook alleen als er ook daadwerkelijk geen ander adres is die hetzelfde is maar dan zonder punten. Overigens kun je @gmail.com ook weglaten bij het inloggen, dus ik denk dat ze het gewoon zo makkelijk mogelijk willen maken.
Ik krijg e-mails binnen van iemand anders, terwijl hij het e-mailadres al had zonder punt en ik het e-mailadres kon aanmaken (dus er werd geen check gedaan) met punt. Toen ik mijn mailbox voor het eerst opende kreeg ik van jaren e-mails te zien van iemand anders. Foto's, afspraken, facturen, etc. Zo ben ik achter het bestaan van de bug gekomen (en is mijn vertrouwen in Google redelijk beschadigd).
Ik kon bij gmail dus mijn.naam@gmail.com aanmaken en gebruiken, terwijl iemand anders mijnnaam@gmail.com al had geclaimd en in gebruik heeft.
De 'feature' is dat de punt genegeerd wordt, maar dat de validatie daar niet op ingericht is. Maar als jullie het een feature vinden dat ik jaren e-mails krijg (en nog steeds) omdat ons e-mailadres zonder punt hetzelfde is, is dat prima. Ik zou het erg onprettig vinden als iemand al mijn e-mail ineens voorgeschoteld kreeg.
Meer info:
http://blog.sandipb.net/2...our-email-address-policy/
http://productforums.goog...#!topic/gmail/j6jjcm77IEQ
Ik kon bij gmail dus mijn.naam@gmail.com aanmaken en gebruiken, terwijl iemand anders mijnnaam@gmail.com al had geclaimd en in gebruik heeft.
De 'feature' is dat de punt genegeerd wordt, maar dat de validatie daar niet op ingericht is. Maar als jullie het een feature vinden dat ik jaren e-mails krijg (en nog steeds) omdat ons e-mailadres zonder punt hetzelfde is, is dat prima. Ik zou het erg onprettig vinden als iemand al mijn e-mail ineens voorgeschoteld kreeg.
Meer info:
http://blog.sandipb.net/2...our-email-address-policy/
http://productforums.goog...#!topic/gmail/j6jjcm77IEQ
[ Voor 14% gewijzigd door Tarabass op 30-05-2013 10:29 ]
Dat is op dit moment in ieder geval niet mogelijk. En voor zover ik weet ook nooit mogelijk geweest. Ik kan geen enkele variatie met punten aanmaken van mijn bestaande gmail adressen.Tarabass schreef op donderdag 30 mei 2013 @ 10:19:
Ik krijg e-mails binnen van iemand anders, terwijl hij het e-mailadres al had zonder punt en ik het e-mailadres kon aanmaken (dus er werd geen check gedaan) met punt.
https://niels.nu
Dit was bij de lancering van gmail. Het probleem is al verholpen qua registratie, alleen zijn er dus blijkbaar oude registraties die toch nog steeds fout gaan?Hydra schreef op donderdag 30 mei 2013 @ 10:31:
[...]
Dat is op dit moment in ieder geval niet mogelijk. En voor zover ik weet ook nooit mogelijk geweest. Ik kan geen enkele variatie met punten aanmaken van mijn bestaande gmail adressen.
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!
Dus je zegt eigenlijk dat ik onzin verkondig? Misschien moet je de bronnen die ik (later) toegevoegd heb even lezen. Het gaat (of ging) om de combinatie google-gmail accountHydra schreef op donderdag 30 mei 2013 @ 10:31:
[...]
Dat is op dit moment in ieder geval niet mogelijk. En voor zover ik weet ook nooit mogelijk geweest. Ik kan geen enkele variatie met punten aanmaken van mijn bestaande gmail adressen.
Deze bug is inderdaad vrij irritant. Ik heb hier zelf ook last van. Ik heb een emailadres: [eerstelettervoornaam].achternaam@gmail.com. Iemand heeft ook [eerstelettervoornaam]achternaam@gmail.com. Ik wist niet van de bug en ineens kreeg ik een reactie op een sollicitatie binnen (voor een functie waar ik niet van wist, ergens aan de andere kant van het land) en nog meer best wel vertrouwelijk informatie. Heb via google toen een telefoonnummer kunnen achterhalen. Hij was op zijn zachtstgezegd, not amused. Sindsdien krijg ik niets meer binnen van hem, dus ik neem aan dat hij het adres niet meer gebruikt. Zeker weten doe ik het echter niet. Het nadeel is echter ook dat ik nu af en toe twijfel of ik wel alles binnen krijg, maar tot nu toe (3 jaar later) nog niets gemerkt.
Uuuhm ja.. 186 database tables, waarvan 1 table met alle indexcolumns, en 0 foreign keys.. need I say more?
wil een Toyota Supra mkIV!!!!! | wil een Yamaha YZF-R{1,6} | wil stiekem ook een Ducati
"Security is just a state of mind"
PSN: scorpie | Diablo 3: scorpie#2470
gmail vertel mij wat, ik heb mijnvoornaam@gmail.com en krijg regelmatig voor andere mensen met mijn voornaam (en dus ook voornaam van die personen) een mail
, moet er altijd wel om lachen.
zo is er al een paar keer rijlessen voor mij gereserveerd.
heb ik mijn voetbal contributie niet betaald
krijg ik mailtjes met foto sessie enz.
kreeg ik van de week een betaalde NS ticket voor eindhoven naar rotterdam
helaas ook de vele online spelletjes
en wie krijgt mijn mail allemaal ??? 
ook zo'n mooie waar ik echt een hekel aan heb:
websites die eerst een limiet hebben aan gebruikersnaam en wachtwoord, en opeens niet meer. bijv. icscards / anwbcreditcard, maximaal 10 tekens voor gebuikersnaam dus een maxlength op het input veld. opeens aangepast. Transip had dat ook opeens aangepast. dan moet je dus specifieke gebruikersnamen gaan onthouden omdat ze afkappen maar daarna niet meer.
zo is er al een paar keer rijlessen voor mij gereserveerd.
heb ik mijn voetbal contributie niet betaald
krijg ik mailtjes met foto sessie enz.
kreeg ik van de week een betaalde NS ticket voor eindhoven naar rotterdam
helaas ook de vele online spelletjes
ook zo'n mooie waar ik echt een hekel aan heb:
websites die eerst een limiet hebben aan gebruikersnaam en wachtwoord, en opeens niet meer. bijv. icscards / anwbcreditcard, maximaal 10 tekens voor gebuikersnaam dus een maxlength op het input veld. opeens aangepast. Transip had dat ook opeens aangepast. dan moet je dus specifieke gebruikersnamen gaan onthouden omdat ze afkappen maar daarna niet meer.
[ Voor 29% gewijzigd door Oid op 31-05-2013 23:34 ]
Een soortgelijk iets hebben ze ook bij surfspot. Via het account van m'n werk kan ik bij surfspot inloggen, echter hanteert surfspot blijkbaar striktere eisen aan wachtwoorden dan m'n werkgever. Ik had dus een mooi, lang random wachtwoord op m'n werk, maar ik moest het inkorten en speciale tekens verwijderen omdat surfspot het niet aan kon.
Zat m'n eigen code is op te schonen toen ik deze faal tegenkwam:
PHP:
1
2
3
4
5
| $sql = "SELECT `idname` FROM `content_types` WHERE `idname`= :content_idname"; $st = $conn->prepare($sql); $st->bindValue(':content_idname', substr($type, 8)); $st->execute() or die(print_r($st->errorInfo(), true)); $searchprovider_type_idname = $st->fetch(PDO::FETCH_COLUMN, 0); |
spoiler:
Voor het geval iemand het niet ziet. Dit hele stuk kan vervangen worden door $searchprovider_type_idname=substr($type, 8 ).
[ Voor 82% gewijzigd door boelensman1 op 08-06-2013 21:04 ]
CTO van Appeal
Verwijderd
Behalve dat je in je eerste voorbeeld ook checkt of ie daadwerkelijk in de database staat...boelensman1 schreef op zaterdag 08 juni 2013 @ 18:38:
Zat m'n eigen code is op te schonen toen ik deze faal tegenkwam:
PHP:
1 2 3 4 5 $sql = "SELECT `idname` FROM `content_types` WHERE `idname`= :content_idname"; $st = $conn->prepare($sql); $st->bindValue(':content_idname', substr($type, 8)); $st->execute() or die(print_r($st->errorInfo(), true)); $searchprovider_type_idname = $st->fetch(PDO::FETCH_COLUMN, 0);
spoiler:Voor het geval iemand het niet ziet. Dit hele stuk kan vervangen worden door $searchprovider_type_idname=substr($type, 8 ).
Bezig in wat legacy code, van een applicatie dat al flink wat jaartjes draait, kom je dit juweeltje tegen. 
Het komt nog redelijk vaak voor dat er geen 10 rijen zijn.

Visual Basic .NET:
1
2
3
4
5
6
7
8
9
| Dim table As DataTable = ... 'Haal eerste 10 rijen op For i As Integer = 0 To 10 Try Dim row As DataRow = table.Rows(i) ... Catch ex As Exception End Try Next |
Het komt nog redelijk vaak voor dat er geen 10 rijen zijn.
Ook slim dat je je exceptie catcht _binnen_ de for loop. Da's handig, kan je de volgende iteratie nog een keer een exception throwen ;D
No trees were harmed in creating this message. However, a large number of electrons were terribly inconvenienced.
Ach je zegt het zelf al. Legacy code.. for loopje aanpassen enklaarBoopMeister schreef op donderdag 13 juni 2013 @ 15:32:
Bezig in wat legacy code, van een applicatie dat al flink wat jaartjes draait, kom je dit juweeltje tegen.
Visual Basic .NET:
1 2 3 4 5 6 7 8 9 Dim table As DataTable = ... 'Haal eerste 10 rijen op For i As Integer = 0 To 10 Try Dim row As DataRow = table.Rows(i) ... Catch ex As Exception End Try Next
Het komt nog redelijk vaak voor dat er geen 10 rijen zijn.
Upgraden naar .NET 3.5 en vervangen door table.Rows.Take(10)Webgnome schreef op donderdag 13 juni 2013 @ 22:13:
[...]
Ach je zegt het zelf al. Legacy code.. for loopje aanpassen enklaar

We are shaping the future
edit:
Oeps, in de verkeerde tab gepost..
Oeps, in de verkeerde tab gepost..

[ Voor 92% gewijzigd door sig69 op 14-06-2013 10:29 ]
Ik kwam net echt een parel tegen, hoewel het niet daadwerkelijk code betreft, maar meer belachelijk ontwerp van je product en een vreemd policy, allereerst de meeste idiote update-optie OOIT:
http://www.zamfoo.com/updatezamfoo
En blijkbaar mogen ze ook aan hun klantvriendelijkheid werken, alsmede de wijze waarop ze met kritieke security breaches omgaan:
http://www.webhostingtalk.com/showthread.php?t=1275572
http://www.zamfoo.com/updatezamfoo
En blijkbaar mogen ze ook aan hun klantvriendelijkheid werken, alsmede de wijze waarop ze met kritieke security breaches omgaan:
http://www.webhostingtalk.com/showthread.php?t=1275572
IMDB vote history | Next-gen OS, audio en video player, search engine en Movie DB
Begrijp ik nu echt goed dat ze verwachten je root wachtwoord over een onbeveiligde verbinding te sturen? En dat je (misschien) je wachtwoord ook moet aanpassen als je zo stom bent 'm moeilijk te maken door speciale tekens?afraca schreef op zondag 16 juni 2013 @ 12:07:
Ik kwam net echt een parel tegen, hoewel het niet daadwerkelijk code betreft, maar meer belachelijk ontwerp van je product en een vreemd policy, allereerst de meeste idiote update-optie OOIT:
http://www.zamfoo.com/updatezamfoo
En blijkbaar mogen ze ook aan hun klantvriendelijkheid werken, alsmede de wijze waarop ze met kritieke security breaches omgaan:
http://www.webhostingtalk.com/showthread.php?t=1275572
Alle scriptjes doen ze zo: http://198.57.224.242/~install/Stephan4kant schreef op zondag 16 juni 2013 @ 12:25:
[...]
Begrijp ik nu echt goed dat ze verwachten je root wachtwoord over een onbeveiligde verbinding te sturen? En dat je (misschien) je wachtwoord ook moet aanpassen als je zo stom bent 'm moeilijk te maken door speciale tekens?

Waarom niet gewoon wat shell-scriptjes uitbrengen?
Ik kwam zonet dit tegen, het is dan geen code, maar moest er wel om lachen 
PHP:
1
| setlocale(LC_ALL, 'Dutch_Netherlands', 'Dutch', 'nl_NL', 'nl', 'nl_NL.ISO8859-1', 'nl_NL.UTF-8', 'nld_nld', 'nld', 'nld_NLD', 'NL_nl'); |
Ik denk dat die site Nederlands is?
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!
Zeker bang dat er eentje niet werktBrainscrewer schreef op woensdag 19 juni 2013 @ 12:53:
Ik kwam zonet dit tegen, het is dan geen code, maar moest er wel om lachen
PHP:
1 setlocale(LC_ALL, 'Dutch_Netherlands', 'Dutch', 'nl_NL', 'nl', 'nl_NL.ISO8859-1', 'nl_NL.UTF-8', 'nld_nld', 'nld', 'nld_NLD', 'NL_nl');

Haha zojuist op nu.nl:

Gevolgd door een:

*mompelt iets over staging, deployment, etc.

Gevolgd door een:

*mompelt iets over staging, deployment, etc.
[ Voor 12% gewijzigd door mbarie op 20-06-2013 14:29 ]
Vermoedelijk zat je precies in een deploymentmoment en heeft er iemand een dom deploymentmoment gekozen?mbarie schreef op donderdag 20 juni 2013 @ 14:24:
Haha zojuist op nu.nl:
[afbeelding]
Gevolgd door een:
[afbeelding]
*mompelt iets over staging, deployment, etc.
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!
Dat zou ik vreemd vinden met een willekeurige break met als output 'hier'. Die internal server error is dan nog tot daar aan toe. Ik neem aan dat ze dergelijke processen onder de knie hebben, maar dit is wat mij betreft gewoon een leuke programmeerfout, danwel voorbeeld van wat je niet hoort te doen in productie
[ Voor 10% gewijzigd door mbarie op 20-06-2013 14:49 ]
Wellicht waren ze de "Internal Server Error" aan het debuggen.
PHP:
1
| <?php die('hier'); ?> |
Ik zag dat ook op Nu.nl, maar die hebben vaker van dit soort probleempjes.
Soms mist al het nieuws, en zie je wel het frame er omheen. En de andere keer staan de nieuwsberichten dubbel erin.
Het lijkt echt alsof ze testen op de real-life omgeving.
Soms mist al het nieuws, en zie je wel het frame er omheen. En de andere keer staan de nieuwsberichten dubbel erin.
Het lijkt echt alsof ze testen op de real-life omgeving.
Speel ook Balls Connect en Repeat
Ditto hier. Lijkt ondergeschoven kindje. Lijkt op iets met de cache daar. Direct een refresh en de pagina werkt weer.sig69 schreef op donderdag 20 juni 2013 @ 17:05:
Op de mobiele variant heb een op de tien keer wel een internal server error. Prut is het!
PHP:
1
2
3
4
5
6
| class x { function __construct(){ $this->db = new Database('mysql:host=localhost;dbname=databasename', 'username', 'password', ... |
Come'on, er is een configfile met wachtwoorden erin hoor

Rare vogel in spe
Verwijderd
Hmm, maar dat is ook redelijk te marginaliseren door je webserver naar een "current" symlink te verwijzen, dan eerst je code te kopieren of te fetchen en daarna je symlink naar de nieuwe code te verwijzen.Firesphere schreef op donderdag 20 juni 2013 @ 14:36:
[...]
Vermoedelijk zat je precies in een deploymentmoment en heeft er iemand een dom deploymentmoment gekozen?
Ik zou met zo'n groot publiek in ieder geval zorgen dat dit soort momenten in ieder geval zo min mogelijk voorkomen. Neemt niet weg dat er misschien evengoed wel een goede reden achter zit.
Na eerst meer dan 70 regels foutmeldingen:
Krijg je bij een klik met de rechter-muisknop de volgende melding:<b>Warning</b>: imagecreatefromstring() [<a href='function.imagecreatefromstring'>function.imagecreatefromstring</a>]: Empty string or invalid image in <b>/home/gunbv/domains/<DOMAIN>.nl/public_html/catalog/model/tool/watermark.php</b> on line <b>12</b><br />
<b>Warning</b>: fopen(/home/gunbv/domains/<DOMAIN>.nl/public_html/system/logs/error.txt) [<a href='function.fopen'>function.fopen</a>]: failed to open stream: Permission denied in <b>/home/gunbv/domains/<DOMAIN>.nl/public_html/system/library/log.php</b> on line <b>12</b><br />
<br />
<b>Warning</b>: fwrite(): supplied argument is not a valid stream resource in <b>/home/gunbv/domains/<DOMAIN>.nl/public_html/system/library/log.php</b> on line <b>14</b><br />
<br />
<b>Warning</b>: fclose(): supplied argument is not a valid stream resource in <b>/home/gunbv/domains/<DOMAIN>.nl/public_html/system/library/log.php</b> on line <b>16</b><br />
<b>Warning</b>: imagesx(): supplied argument is not a valid Image resource in <b>/home/gunbv/domains/<DOMAIN>.nl/public_html/catalog/model/tool/watermark.php</b> on line <b>17</b><br />
<b>Warning</b>: fopen(/home/gunbv/domains/<DOMAIN>.nl/public_html/system/logs/error.txt) [<a href='function.fopen'>function.fopen</a>]: failed to open stream: Permission denied in <b>/home/gunbv/domains/<DOMAIN>.nl/public_html/system/library/log.php</b> on line <b>12</b><br />
<br />
Dan wil je het een en ander melden, krijg je:Kopi�ren van afbeeldingen is niet toegestaan Copyright� <DOMAIN>.nl
Lijkt me het melden hier meer dan waard.....Warning: fsockopen() [function.fsockopen]: unable to connect to mail.bginventaris.nl:2525 (Connection refused) in /home/gunbv/domains/<DOMAIN>.nl/public_html/vqmod/vqcache/vq2-system_library_mail.php on line 171
Warning: fopen(/home/gunbv/domains/<DOMAIN>.nl/public_html/system/logs/error.txt) [function.fopen]: failed to open stream: Permission denied in /home/gunbv/domains/<DOMAIN>.nl/public_html/system/library/log.php on line 12
Notice: Error: Connection refused (111) in /home/gunbv/domains/<DOMAIN>.nl/public_html/vqmod/vqcache/vq2-system_library_mail.php on line 174

[ Voor 16% gewijzigd door HeSitated op 19-07-2013 21:29 ]
In een webapp waar ik aan werk, moeten we wat waardes doorsturen naar een service/formulier welke niet door ons beheerd wordt. Aan die kant gebeuren er heel vreemde dingen met encoding, waardoor wij ons in bochten moeten wringen. Dit heeft geleid tot het volgende stuk code met hilarische comments van een collega van me 
Java:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
| private void addParameter(StringBuilder builder, String name, Object value) { if (value == null) { return; } if (String.valueOf(value).trim().length() == 0) { return; } builder.append('&').append(name).append('='); // in theory, we should URL-encode the values // unfortunately, the customer-service form does not understand this; it apparently // goes through great pains 'understanding' unencoded characters, going so far as to // even understand the unescaped '+'. // therefore, we do not encode our values. // somewhere, an encoding-kitten is crying :'-( // UPDATE: it gets worse. The customer-service form doesn't understand ANY encoded value, // not even the lovely %20 (space); and, as said before, not the '+' either. // as a desparate workaround, we remove all spaces from the value; this might annoy our // customers, but I hope they prefer 'vanderDongen' over 'van%20der%20Dongen'. // The encoding-kitty is now attempting suicide. String encodedValue = String.valueOf(value); // haha, look at me still calling it an encoded value encodedValue = encodedValue.replaceAll(" ", ""); builder.append(encodedValue); } |
C#:
1
2
3
4
5
6
7
8
9
10
| public interface IFoo { IList<IdValuePair> BarIds { get; } } public class IdValuePair { public Guid Id { get; set; } public string Value { get; set; } } |
Lijkt verdacht veel op een datastructuur die standaard in .NET aanwezig is..
Kater? Eerst water, de rest komt later
Whaha, vooral die
code:
. 1
| // haha, look at me still calling it an encoded value |
The poor encoding kitty!
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!
geniaal!Kajel schreef op woensdag 24 juli 2013 @ 11:38:
In een webapp waar ik aan werk, moeten we wat waardes doorsturen naar een service/formulier welke niet door ons beheerd wordt. Aan die kant gebeuren er heel vreemde dingen met encoding, waardoor wij ons in bochten moeten wringen. Dit heeft geleid tot het volgende stuk code met hilarische comments van een collega van me
Java:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 private void addParameter(StringBuilder builder, String name, Object value) { if (value == null) { return; } if (String.valueOf(value).trim().length() == 0) { return; } builder.append('&').append(name).append('='); // in theory, we should URL-encode the values // unfortunately, the customer-service form does not understand this; it apparently // goes through great pains 'understanding' unencoded characters, going so far as to // even understand the unescaped '+'. // therefore, we do not encode our values. // somewhere, an encoding-kitten is crying :'-( // UPDATE: it gets worse. The customer-service form doesn't understand ANY encoded value, // not even the lovely %20 (space); and, as said before, not the '+' either. // as a desparate workaround, we remove all spaces from the value; this might annoy our // customers, but I hope they prefer 'vanderDongen' over 'van%20der%20Dongen'. // The encoding-kitty is now attempting suicide. String encodedValue = String.valueOf(value); // haha, look at me still calling it an encoded value encodedValue = encodedValue.replaceAll(" ", ""); builder.append(encodedValue); }
wel goed commentaar, zo is het iig voor iedereen duidelijk waarom zo'n stuk ranzige code erin staat. Voor je het weet wordt je fix anders goed bedoeld zomaar verwijderd.
Och joh, .NET klasses (KeyValuePair) is te risky om te gebruiken. Beter zelf maken, kan niet mis lopen!Haan schreef op woensdag 24 juli 2013 @ 11:52:
[...]
Lijkt verdacht veel op een datastructuur die standaard in .NET aanwezig is..
Ik verdenk mijn collega er sterk van dat hij die variabele naam expres heeft laten staan om die comment er nog even achter te kunnen plakkenAfvalzak schreef op woensdag 24 juli 2013 @ 12:07:
[...]
Whaha, vooral diecode:.
1 // haha, look at me still calling it an encoded value
Gisteren heb ik een webapplicatie "gefixed" die het niet meer deed. Bleek dat er op 3 plekken hardcoded een proxy server ingesteld was. Daarnaast faalt de hele applicatie als de RSS reader niet wil laden.
Gelukkig is dit alleen een intern hebbedingetje en leveren we geen webapplicatie's.

Gelukkig is dit alleen een intern hebbedingetje en leveren we geen webapplicatie's.
You don't have to be crazy to do this job, but it helps ....
PHP:
1
2
3
4
| function sanitize($sql) { //return mysql_real_escape_string($sql); return $sql; } |
Hoezo de programmeur deed aan veiligheid.
of in een andere class
PHP:
1
2
3
| function makeCountryDropDown() { return "/*Hier een string met HTML opties voor landen, slechts 10k characters lang*/"; } |
Echt enig...

Sowieso een rare naam voor de parameter van sanitize(). Wat je wilt sanitizen stop je in een SQL statement, maar wat je wilt sanitizen is zelf geen SQL. Tenzij je SQL statements in je database wilt gaan stoppen oid
[ Voor 17% gewijzigd door .oisyn op 25-07-2013 23:47 ]
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.
SQL-statements de database in, en vervolgens kan je in jouw code de statements handig uit de database trekken om ze weer uit te voeren. Gaaf toch? 
(en ergens bekruipt mij het gevoel dat iemand dit ooit echt zo gebouwd heeft. Waarschijnlijk in combinatie met PHP).
(en ergens bekruipt mij het gevoel dat iemand dit ooit echt zo gebouwd heeft. Waarschijnlijk in combinatie met PHP).
Been there, done that, got the t-shirt. Wat heet, zoiets heb ik gister nog gedaanHaan schreef op woensdag 24 juli 2013 @ 11:52:
C#:
1 2 3 4 5 6 7 8 9 10 public interface IFoo { IList<IdValuePair> BarIds { get; } } public class IdValuePair { public Guid Id { get; set; } public string Value { get; set; } }
Lijkt verdacht veel op een datastructuur die standaard in .NET aanwezig is..
Xbox
Even the dark has a silver lining | I'm all you can imagine times infinity, times three
BM schreef op vrijdag 26 juli 2013 @ 07:38:
[...]
Been there, done that, got the t-shirt. Wat heet, zoiets heb ik gister nog gedaanNiet zonder reden overigens, de 1e versie gebruikte keyvaluepairs en een dictionary, maar daar werkten anderen stukjes niet goed mee samen. En dit biedt (in ons geval) nog iets meer ruimte voor uitbreidingen later ook.
C#:
1
2
| var dictionary = new Dictionary<Guid, string>(); IList<KeyValuePair<Guid, string>> list = dictionary.ToList(); |
IList interface even helemaal uitgetypt voor clarity, aub geen comments over het gebruik van 'var'
[ Voor 9% gewijzigd door HMS op 26-07-2013 12:15 ]
Dat had gekunt, en waarschijnlijk ook wel gewerkt. Weet ook wel dat ik een omslachtige oplossing gekozen heb, maar wel 1 die in ons geval voordelen gaat hebben als we zaken aan ons systeem toevoegenHMS schreef op vrijdag 26 juli 2013 @ 12:14:
[...]
C#:
1 2 var dictionary = new Dictionary<Guid, string>(); IList<KeyValuePair<Guid, string>> list = dictionary.ToList();
IList interface even helemaal uitgetypt voor clarity, aub geen comments over het gebruik van 'var'![]()
Xbox
Even the dark has a silver lining | I'm all you can imagine times infinity, times three
In principe had je ook nog de Tuple class kunnen gebruiken
.
MSDN: Tuple Class (System)
edit:
Hmm, had nog niet gerefresht
.
MSDN: Tuple Class (System)
edit:
Hmm, had nog niet gerefresht
Wel een duidelijk verschil in performance tussen een Class en een Struct. Maar of het uitmaakt is natuurlijk wel afhankelijk van je use case. Meestal ga je die nanosecondes toch niet merken.
[ Voor 59% gewijzigd door HMS op 26-07-2013 12:42 ]
Zonder 3 regels commentaar met o.a. verwijzing naar die url zou ik het sowieso weghalen als ik het tegenkwam.
Het erge is, dit was een van de duidelijkere namen....oisyn schreef op donderdag 25 juli 2013 @ 23:47:
Sowieso een rare naam voor de parameter van sanitize(). Wat je wilt sanitizen stop je in een SQL statement, maar wat je wilt sanitizen is zelf geen SQL. Tenzij je SQL statements in je database wilt gaan stoppen oid
De rest staat vol met $r, $e, $m...

Om die performance vergelijking was het mij niet te doen, zeker niet meer dan een aardige bijkomstigheid.HMS schreef op vrijdag 26 juli 2013 @ 12:39:
Wel een duidelijk verschil in performance tussen een Class en een Struct. Maar of het uitmaakt is natuurlijk wel afhankelijk van je use case. Meestal ga je die nanosecondes toch niet merken.
Maar met een Tuple kun je zoveel meer dan met een KVP...
Ik vraag me af waarom ik dit ooit bedacht heb -_-
code:
1
2
3
4
5
6
| $SE = array("sometruerandomnamethatwillneverevereveroccurortherewillbeaproblemwiththedisplayofit"); if($fill && $filldata["teller"] != "0"){ $SE = explode("|",$filldata["SE"]); *snip* } if($SE[0] != "sometruerandomnamethatwillneverevereveroccurortherewillbeaproblemwiththedisplayofit"){ |
Met ruim 10k replies is dit topic intussen wel vol. Tijd voor een nieuwe!
[alg] Slechtste programmeervoorbeelden deel 5
[alg] Slechtste programmeervoorbeelden deel 5
'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.
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.
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.