Staat een artikel in het .NET Magazine van september.Haan schreef op maandag 05 oktober 2009 @ 12:44:
Ik zie hier heel vaak jQuery voorbij komen, maar heb er zelf nog niet mee gewerkt. Kan iemand vertellen wat er zo mooi aan is? (ik ben nu eens op jquery.com begonnen met lezen). Steeds als ik de term voorbij zie komen krijg ik een beetje het gevoel dat jQuery gehyped wordt net als de term AJAX, dus ben ik benieuwd wat de ervaringen in de praktijk zijn
Canon EOS 400D + 18-55mm F3.5-5.6 + 50mm F1.8 II + 24-105 F4L + 430EX Speedlite + Crumpler Pretty Boy Back Pack
Nee PHP is zowieso lekker elegant
[Te koop: 3D printers] [Website] Agile tools: [Return: retrospectives] [Pokertime: planning poker]
"Logica brengt je van A naar B, verbeelding brengt je overal." - Albert Einstein
Je hebt gelijk, een andere mogelijkheid geven op een discussieforum is waanzin.oisyn schreef op woensdag 07 oktober 2009 @ 13:45:
Lieve schat, de discussie ging om het gebruik van 'or'
JQuery UI bevat de $.widget() functie welke je kunt gebruiken om een nieuwe widget 'class' te definiëren.Cartman! schreef op woensdag 07 oktober 2009 @ 12:19:
Wat ik mis in jQuery is het gebruik van classes, of zit dat er tegenwoordig wel in? Wij werken al jaren met MooTools en ik ben er erg tevreden over.
Widget heeft standaard functionaliteit voor property getters/setters, een constructor, een destructor (die automatisch aangeroepen wordt als het HTMLElement waarop de widget gebouwd wordt uit de DOM tree verwijderd wordt), interne data storage, private functies, etc.
Je kunt er ook best goed 'class-based' mee programmeren, zolang je niet complete klassieke class inheritance usw. toe wilt gaan passen.
Daarnaast is jQuery gestoeld op chaining van functies op HTMLElement nodes en het gebruik van closures. Het is een heel andere filosofie dan object-georiënteerd programmeren. Je zou er goed aan doen eens te proberen met de library mee te gaan, in plaats van tegen de stroming in proberen te zwemmen. Zul je zien dat closures heel handig kunnen zijn en de gemiddelde javascript code stukken korter én leesbaarder krijgen dan een OO implementatie...
[ Voor 23% gewijzigd door R4gnax op 07-10-2009 16:31 ]
Is een speciale HTML special chars functie, hij moet letterkarakters wel replacen, maar speciale karakters (? en & enzo) niet, dus URLEncode zelf valt af.
De oude versie (zie een eerdere post) gebruikte een... zestigtal String.replaceAll() (Java) aanroepen. String.replaceAll() gebruikt een regular expression om zooi te replacen.
De nieuwe versie gebruikt CharacterIterator, een 'cache' array van eerder geënncodeerde karakters, en chars ipv de daadwerkelijke letters (aangezien het chars 192 tot 255 zijn).
Ik bespaar jullie de copypasta, dus zie hier: http://pastebin.com/f5382dfe9
De oude versie deed 600 - 700 ms over een string van 100.000 karakters, deze versie 0 tot 15 (waar 15 een vaak voorkomende hoeveelheid is, waarschijnlijk een subproces van Java).
...kan het nog sneller? =D
.edit:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
| private final static char[] hexChars = "0123456789ABCDEF".toCharArray(); public static String oisynsSpecialChars(String str) { char[] chars = str.toCharArray(); StringBuilder b = new StringBuilder(chars.length * 2); int start = 0; for (int pos = 0; pos < chars.length; pos++) { int c = (int)chars[pos]; if (c < 192 || c > 255) continue; b.append(chars, start, pos - start); b.append('%'); b.append(hexChars[c >> 4]); b.append(hexChars[c & 0x0f]); start = pos + 1; } if (start < chars.length) b.append(chars, start, chars.length - start); return b.toString(); } |
Old: run 0: 191062740 Old: run 1: 148127875 Old: run 2: 155312640 Old: run 3: 143610155 Old: run 4: 143241027 Old: run 5: 163664997 Old: run 6: 143911755 Old: run 7: 140052658 Old: run 8: 140264266 Old: run 9: 139724850 New: run 0: 12668447 New: run 1: 3606485 New: run 2: 3205315 New: run 3: 3362326 New: run 4: 3313120 New: run 5: 2965485 New: run 6: 3294263 New: run 7: 3671571 New: run 8: 3042937 New: run 9: 3297122 oisyn: run 0: 14163826 oisyn: run 1: 2334395 oisyn: run 2: 2569716 oisyn: run 3: 2435737 oisyn: run 4: 1940333 oisyn: run 5: 2273398 oisyn: run 6: 2177925 oisyn: run 7: 1876602 oisyn: run 8: 2223090 oisyn: run 9: 2181979
1.5x zo snel als jouw snelste implementatie
(Gebruik trouwens System.nanoTime() voor nauwkeurigere metingen)
[ Voor 109% gewijzigd door .oisyn op 08-10-2009 16:02 ]
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.
Die van mij is een tikkie vlotter dan eerst met een for-loop zonder die char iterator en door de te converteren chars van te voren in een array te zetten, maar die van jou is nog steeds vlotter.
Zo'n ster ben ik nog niet in low-level programmeren,
(en om eerlijk te zijn vindt ik dat wel best
Edit: Hrm, het verschil is niet zo groot meer, geen 1.5 keer sowieso. Alleen die van mij hangt zichzelf nu op als 'ie een string van 10 miljoen karakters krijgt, waarschijnlijk vanwege het gebruik van String ipv chars in de StringBuilder.
[ Voor 21% gewijzigd door YopY op 08-10-2009 16:41 ]
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.
Dat kan, maar dat is opgelost door de karakters 192 tot 255 alvast door de functie te halen in een static blok, zodat dat slechts eenmaal gedaan wordt. Scheelt ook een controle op de aanwezigheid in de array bij elk karakter. 10 miljoen maal triviaal = minder triviaal, ;D..oisyn schreef op donderdag 08 oktober 2009 @ 16:45:
Het zal ook wel helpen om de StringBuilder van tevoren een aardige chunk geheugen te geven (de constructor met een int argument), zodat hij z'n interne buffer niet steeds hoeft te resizen als hij vol zit. Voor de rest zal de bottleneck wel in URLEncoder.encode() zitten.
Mja, entertainment op de donderdagmiddag.
smartsize bool This parameter smartly sizes the iframe to fit the remaining space on the page and disables the outer scrollbars. If you include more than one smartsizing iframe, they automatically distribute the size appropriately. (Default value is false.)
frameborder int Indicates whether to show (1) or hide (0) an iframe border. (Default value is 1.) scrolling string Indicates whether to show scrollbars. (Default value is yes.) - use "yes", "no", or "auto" (not "true" or "false")
[ Voor 0% gewijzigd door D-Raven op 09-10-2009 11:48 . Reden: hmm volgende keer wat sneller op post rammen :P ]
edit: ipv. per user salt is ook een serverwide salt te gebruiken, dan hoeft er geen ajax-request gebruikt te worden om de salt op te halen.
[ Voor 20% gewijzigd door Cartman! op 09-10-2009 12:19 ]
Which reminds me, dat het al een hele tijd geleden is dat ik nog eens zo'n .NET magazine ontvangen heb ...riezebosch schreef op woensdag 07 oktober 2009 @ 14:16:
[...]
Staat een artikel in het .NET Magazine van september.
https://fgheysels.github.io/
Waarom zou je voor de user salt per se een ajax request nodig hebben dan?Cartman! schreef op vrijdag 09 oktober 2009 @ 12:18:
edit: ipv. per user salt is ook een serverwide salt te gebruiken, dan hoeft er geen ajax-request gebruikt te worden om de salt op te halen.
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.
edit:
ik bedoel dus, iemand vult username+password in, en als ik het wil hashen om te vergelijken met wat ik in de database heb ik moet ik hash(salt+password) toepassen, maar dan heb ik wel de salt van die user nodig die probeert in te loggen. Een andere manier zou ik anders niet echt weten, als je een goed/beter idee hebt dan wil ik t graag weten
[ Voor 73% gewijzigd door Cartman! op 09-10-2009 13:14 ]
Ah ja, je hebt gelijk, ik redeneerde wat krom.Cartman! schreef op vrijdag 09 oktober 2009 @ 13:06:
Anders weet ik clientside niet met welke user ik te maken heb...?
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 snap je niet of je snapt het niet.Cartman! schreef op vrijdag 09 oktober 2009 @ 13:22:
En wat is dat beterdan het via een XHR doen wat de gebruiker niet merkt?
Laat de server gewoon de binnengekregen wachtwoord hashen/zouten en beantwoord dan de client of de username+wachtwoord correct is of niet. That's all. Je hebt de zout helemaal niet clientside nodig, dat zou de zout anders compleet overbodig maken (security leak). Of denk ik nu te simpel?
Het is een challenge/response systeem waarin het wachtwoord dus sowieso niet over het net gaat, maar md5(hashed_wachtwoord + challenge). De server kan vervolgens kijken of dat klopt (want die weet hashed_wachtwoord en challenge). Het probleem zit 'm in het feit dat hashed_wachtwoord weer gelijk is aan md5(wachtwoord + user_salt), en user_salt staat ook in de database opgeslagen. De client heeft user_salt nodig om zelf hashed_wachtwoord te berekenen om uiteindelijk md5(hashed_wachtwoord + challenge) door te sturen.BalusC schreef op vrijdag 09 oktober 2009 @ 14:35:
[...]
Ik snap je niet of je snapt het niet.
Laat de server gewoon de binnengekregen wachtwoord hashen/zouten en beantwoord dan de client of de username+wachtwoord correct is of niet. That's all. Je hebt de zout helemaal niet clientside nodig, dat zou de zout anders compleet overbodig maken (security leak). Of denk ik nu te simpel?
[ Voor 14% gewijzigd door .oisyn op 09-10-2009 14:46 ]
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.
Wat ik nu doe, tijdens het laden genereer ik een random hash en die zet ik in de pagina. Iemand vult username+password in, ik vraag dan met een xhr de juiste salt op (ik return een fake random salt als de user niet bestaat). Dan bereken ik
1
| hash(challenge + hash(salt+password)) |
Ik verwijder het veld password uit de DOM en vervang deze met een veld dat response heet.
Serverside valideer ik t:
1
| response == hash(challenge + db_entry) |
Zo is het wachtwoord over de lijn altijd anders en kun je t toch valideren. Ik *denk* dat deze methode vrij safe is gezien toch een keer iets over de lijn moet. Als iemand toegang krijgt tot je database dan zou je per wachtwoord moeten attacken ipv. op de hele tabel in 1 keer vanwege de wisselende salt.
Aanvulling nog: omdat de challenge serverside in de sessie zit is de response maar 1 keer geldig, een volgende login zal er een andere challenge zijn. Replay attack werkt dus niet.
Hoop dat ik t goed uitgelegd hebt zo, als iemand denkt dat t beter kan: vertel het me, want ik vind het wel geinig het beter te maken als t kan (kom dan niet met dat ik https moet gebruiken, t gaat om t systeem zelf, niet het protocol).
[ Voor 7% gewijzigd door Cartman! op 09-10-2009 14:57 . Reden: kleine edit ]
Daar lijkt me een kleine flaw te zitten. Als je gewoon 2 keer een request doet voor een user weet je of hij bestaat als je 2 maal dezelfde salt krijgt.Cartman! schreef op vrijdag 09 oktober 2009 @ 14:52:
(ik return een fake random salt als de user niet bestaat).
Beter kun je IMHO een salt returnen die afhankelijk is van de username die opgevraagd word.
“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.”
Hoezo? Als je nu de database hacked heb je db_entry, en al alles wat je nodig hebt. Waarom zou je teruggaan naar het originele wachtwoord?Cartman! schreef op vrijdag 09 oktober 2009 @ 14:52:
Zo is het wachtwoord over de lijn altijd anders en kun je t toch valideren. Ik *denk* dat deze methode vrij safe is gezien toch een keer iets over de lijn moet. Als iemand toegang krijgt tot je database dan zou je per wachtwoord moeten attacken ipv. op de hele tabel in 1 keer vanwege de wisselende salt.
Vitamine D tekorten in Nederland | Dodelijk coronaforum gesloten
om luie redenen gebruik ik sha1 in de database. T liefst zou ik sha256 pakken, daar is ook een prima javascript implementatie voor maar dan kun je niet meer in de phpMyAdmin ff snel een nieuw password instellen en dat irriteert mn collega's
[ Voor 31% gewijzigd door Cartman! op 09-10-2009 15:13 ]
Verwijderd
Volgens mij begrijp je het probleem nog niet. Als je nu je database hacked, kun je gewoon direct op je site inloggen. Er is totaal geen noodzaak meer om iets te 'terugrekenen', het originele wachtwoord boeit niet. Daarnaast heb je vaak ook nog het concept dat je normaal ook een extra salt hebt, die niet in de database staat en ook niet wordt overgezonden, maar in de code staat. Dat stukje beveiliging heb je hier ook niet.Cartman! schreef op vrijdag 09 oktober 2009 @ 15:08:
Je gaat ook niet terug naar t originele wachtwoord. Maar als iemand een wachtwood als md5 ergens heeft staan dan zou je t met een rainbowtable kunnen terugrekenen naar het originele wachtwoord. Vaak heeft iemand wel een e-mailadres in een account, als je dan hetzelfde wachtwoord gebruikt kan iemand ook op andere plekken misbruik maken van je gegevens. Hiermee is dat niet rendabel omdat je het niet meer kunt terugrekenen.
Vitamine D tekorten in Nederland | Dodelijk coronaforum gesloten
weer een edit:
als je toegang hebt tot de database kun je gewoon een nieuwe sessie aanmaken met een eigen gekozen sessionID met een gekoppelde userid naar keuze. Zet een cookie met je eigen sessieID en hops, ingelogd als de gekozen user. Zo werkt het op GoT in feite ook.
[ Voor 31% gewijzigd door Cartman! op 09-10-2009 15:16 ]
Hoe weet je dat? Hij heeft het steeds over de functie hash().pedorus schreef op vrijdag 09 oktober 2009 @ 15:13:
Daarnaast heb je vaak ook nog het concept dat je normaal ook een extra salt hebt, die niet in de database staat en ook niet wordt overgezonden, maar in de code staat. Dat stukje beveiliging heb je hier ook niet.
1
2
3
4
| function hash($str) { return md5("mijn supergeheime salt die in de code staat en niet in de db" . $str); } |
[ Voor 58% gewijzigd door .oisyn op 09-10-2009 15:19 ]
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.
Het probleem is dan ook niet zo dat iemand op de site in kan loggen met een username. Die is waarschijnlijk toch al compromised als je al in de database kan komen.pedorus schreef op vrijdag 09 oktober 2009 @ 15:13:
[...]
Volgens mij begrijp je het probleem nog niet. Als je nu je database hacked, kun je gewoon direct op je site inloggen. Er is totaal geen noodzaak meer om iets te 'terugrekenen', het originele wachtwoord boeit niet. Daarnaast heb je vaak ook nog het concept dat je normaal ook een extra salt hebt, die niet in de database staat en ook niet wordt overgezonden, maar in de code staat. Dat stukje beveiliging heb je hier ook niet.
Het gaat meer om de bescherming van de wachtwoorden zelf.
“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.”
Ik zou denk wel een hash van de username + een private key doen. Een hash van de username ligt wel erg voor de hand, dan is het alsnog makkelijk te controleren of een user bestaat.Cartman! schreef op vrijdag 09 oktober 2009 @ 15:03:
Goed punt ja, daar zat ik net ook al over na te denken. Ik maak gewoon een hash van de username en return daar de lengte van zolang de salt is. Tnx.
“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.”
Enough With The Rainbow Tables: What You Need To Know About Secure Password Schemes
^ misschien interessant leesvoer uit 2007...
Ipsa Scientia Potestas Est
NNID: ShinNoNoir
Maar de vraag is of na het oplossen daarvan iedereen zijn wachtwoord moet wijzigen (ala fok.nl).Woy schreef op vrijdag 09 oktober 2009 @ 15:16:
[...]
Het probleem is dan ook niet zo dat iemand op de site in kan loggen met een username. Die is waarschijnlijk toch al compromised als je al in de database kan komen.
Hmm, ja, maar als je de server niet vertrouwd, dan kun je de javascript die naar de client verstuurd wordt natuurlijk ook niet vertrouwen. In dat opzicht zie ik geen echte toegevoegde veiligheid.Het gaat meer om de bescherming van de wachtwoorden zelf.
Vitamine D tekorten in Nederland | Dodelijk coronaforum gesloten
andere vraag voor jou: hoe zou je het dan doen om ook jouw situatie te omzeilen?
[ Voor 12% gewijzigd door Cartman! op 09-10-2009 15:29 ]
Dat voegt alleen niet zoveel toe, want de hash functie moet ook op de client beschikbaar zijn, en dus zal "mijn supergeheime salt die in de code staat en niet in de db" niet geheim zijn, en dus geen extra veiligheid bieden..oisyn schreef op vrijdag 09 oktober 2009 @ 15:16:
Hoe weet je dat? Hij heeft het steeds over de functie hash().
PHP:
1 2 3 4 function hash($str) { return md5("mijn supergeheime salt die in de code staat en niet in de db" . $str); }
Ja in principe wel, de gegevens in de DB zijn altijd genoeg om in te kunnen loggen. Het voordeel is echter dat er niet eenvoudig wachtwoorden achterhaald kunnen worden. Ik zou echter niet weten hoe je dat kan voorkomen.pedorus schreef op vrijdag 09 oktober 2009 @ 15:25:
[...]
Maar de vraag is of na het oplossen daarvan iedereen zijn wachtwoord moet wijzigen (ala fok.nl).
Dat is wel een punt van aandacht. Als je server echt compromised is zodat ze je scripts aan kunnen passen, dan kan een aanvaller er ook gewoon voor zorgen dat de passwords op een andere manier bij hem terecht komen. Maar ook hier zie ik weer niet hoe je dat wilt voorkomen, zonder dat de gebruiker elke keer controleert welk script er precies draait.Hmm, ja, maar als je de server niet vertrouwd, dan kun je de javascript die naar de client verstuurd wordt natuurlijk ook niet vertrouwen. In dat opzicht zie ik geen echte toegevoegde veiligheid.
[ Voor 5% gewijzigd door Woy op 09-10-2009 15:33 ]
“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.”
Gewoon de standaard-oplossing gebruiken, en dit achterwege laten.Cartman! schreef op vrijdag 09 oktober 2009 @ 15:28:
andere vraag voor jou: hoe zou je het dan doen om ook jouw situatie te omzeilen?
Maar goed, toch even een idee:
2 salts (en waarschijnlijk nog 2 extra om van de standaard-hashfuncties weg te komen zoals .oisyn laat zien).
In de database staat salt1, salt2, en hash1(salt1+hash2(salt2+password)). Client krijgt beschikking over salt2 (uit db via request), wachtwoord, en de hash2-functie. Eventueel kun je salt2 schrappen, om het wat eenvoudiger te maken.
Vitamine D tekorten in Nederland | Dodelijk coronaforum gesloten
Interessant leesvoer, inderdaadRayNbow schreef op vrijdag 09 oktober 2009 @ 15:24:
* RayNbow is een beetje laat, maar goed...
Enough With The Rainbow Tables: What You Need To Know About Secure Password Schemes
^ misschien interessant leesvoer uit 2007...
Vooral het punt dat een goeie hash functie voor het opslaan van passwords langzaam moet zijn is een sterke.
---
Overigens, ipv een challenge / response systeem, is het oversturen van een wachtwoord over een HTTPS verbinding veilig?
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.
“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.”
Och, voor de meeste webtoepassingen is dat prima. Ik ben al lang blij als m'n plaintext password niet op straat komt te liggen, en de meeste websites authenticeren nog gewoon via HTTP, wat natuurlijk niet echt secure is, dus dan is het vrij zinloos om de beveiliging binnen de authenticatieserver verder te verbeteren.YopY schreef op vrijdag 09 oktober 2009 @ 16:00:
Interessant leesvoer, inderdaad. Het is jammer dat de meeste (*kuch*php*kuch*) tutorials nog steeds MD5 of SHA-1 promoten (al dan niet met een salt), terwijl dit artikel duidelijk maakt dat ook dat niet echt geweldig is.
Als je 't daarvan moet hebben... Het zou beter zijn als gebruikers een beetje zinnige wachtwoorden zouden kiezen, maar als password1 het populairste wachtwoord is dan kun je je hash functie zo traag maken als je wil maar dan valt 'ie toch wel te bruteforcen.Vooral het punt dat een goeie hash functie voor het opslaan van passwords langzaam moet zijn is een sterke.
edit:
Ik vraag me trouwens af hoe Tweakers.net dit geïmplementeerd heeft?
[ Voor 3% gewijzigd door Soultaker op 09-10-2009 16:32 ]
dit quote ik van een developer van MyReact/React:
Ja ik weet dat GoT een fork is van React, maar gezien ik dus nooit gedwongen ben mn password te updaten denk ik niet dat zij ineens een salt+wachtwoord hebben kunnen maken, ze zouden mn originele password immers niet weten.md5 is alleen geïmplementeerd om de daadwerkelijke wachtwoorden te beschermen; en niet de toegang. De enige juiste wijziging voor extra bescherming tegen woordenboek aanvallen zou een salt zijn; dit vereist echter weer wat logica en we hebben hier zelf nog nooit behoefte aan gehad
[ Voor 57% gewijzigd door Cartman! op 09-10-2009 16:38 ]
En ze kunnen het wel updaten als je em invoert maar dan slaan ze nog steeds de enkel md5 gehashte versie op, heb je er nog weinig aan (tenzij ze die weggooien als ze de nieuwe hebben). Ik log als versleuteld in overigens dus de server krijgt nooit mn originele password terug.
1
2
| OUD : md5($pass); NIEUW: md5(md5($pass) . $salt); |
Zo kun je heel eenvoudig overstappen op het gebruik van een salt zonder dat iedereen z'n wachtwoord moet updaten.
Project EulerVerwijderd schreef op zondag 11 oktober 2009 @ 13:13:
Hmm, ik wil iets programmeren, maar ik weet niet wat
Programming Praxis
Etc.
?
Ipsa Scientia Potestas Est
NNID: ShinNoNoir
Verwijderd
[ Voor 45% gewijzigd door Verwijderd op 11-10-2009 13:47 ]
Verwijderd
Sja. Je ziet wel een aantal sites verschijnen die dmv Javascript de sterkte van je wachtwoord testen - en als ze goed beveiligd zijn gaan ze gewoon het wachtwoord weigeren als het niet voldoet. De meeste sites (of, de meeste sites die ik tegenkom / op registreer) hebben al het vereiste dat je zoveel karakters moet hebben en een wachtwoord met letters en cijfers. Da's een Goed Ding, imo.Soultaker schreef op vrijdag 09 oktober 2009 @ 16:22:
Als je 't daarvan moet hebben... Het zou beter zijn als gebruikers een beetje zinnige wachtwoorden zouden kiezen, maar als password1 het populairste wachtwoord is dan kun je je hash functie zo traag maken als je wil maar dan valt 'ie toch wel te bruteforcen.
Uit een van de comments:Soultaker schreef op vrijdag 09 oktober 2009 @ 16:22:
[...]
Als je 't daarvan moet hebben... Het zou beter zijn als gebruikers een beetje zinnige wachtwoorden zouden kiezen, maar als password1 het populairste wachtwoord is dan kun je je hash functie zo traag maken als je wil maar dan valt 'ie toch wel te bruteforcen.
Voor zulke mensen werkt geen enkel wachtwoordsysteem.This sample is representative of users *who fell for a phishing attack*; their passwords are likely to be weaker than more savvy users who avoided that trap.
Ipsa Scientia Potestas Est
NNID: ShinNoNoir
Wij zijn nu nog op console-niveau bezig met Java.
De command "toString()"; waarvan ik dacht dat die het gelijk printte.
Maar blijkbaar niet. Heb daar ruim een uur vastgezeten totdat ik doorhad dat het moet zijn:
System.out.println(Deelnemer.toString());
Voel me zeer dom!
Object Kind:
Naam = Pietje
Achternaam = Klaassen
Geslacht = M
Leeftijd = 3
Kind.ToString() kan als output geven: "Pietje Klaassen is een 3-jarig jochie."
We are shaping the future
Het idee is dat je nu ook het volgende kunt doen!
1
| System.out.println(Deelnemer) |
Dat is natuurlijk implementatieafhankelijk. Voor de meeste classes is het waarschijnlijk niet nodig dus die overriden .ToString() niet en laten het aan het base class over. (Als dat een System.Object is wordt dat dus iets van this.GetType().ToString()).Alex) schreef op dinsdag 13 oktober 2009 @ 20:05:
Kind.ToString() kan als output geven: "Pietje Klaassen is een 3-jarig jochie."
[Te koop: 3D printers] [Website] Agile tools: [Return: retrospectives] [Pokertime: planning poker]
^ dit. toString() is een functie die gedeclareerd wordt (en overridebaar is) in de Object class. OutStream.println(Object obj) wordt in dit geval aangeroepen, waarna obj.toString() aangeroepen wordt.Pete schreef op woensdag 14 oktober 2009 @ 07:42:
[...]
Het idee is dat je nu ook het volgende kunt doen!
Java:
1 System.out.println(Deelnemer)
De implementatie van toString() is verder aan jezelf, zolang je er maar rekening mee houdt dat toString() gebruikt wordt als informatie, als console output, log output, dat soort dingen - als je het naar bijvoorbeeld CSV, JSON of XML wilt laten vertalen zou je daar een eigen functie voor moeten schrijven (bijvoorbeeld interfaces JSONizable, XMLizable, of een betere naam)
Het werkt, maar niet goed (genoeg) in de tests die ik gedaan heb.
Opera [10] vervormd sommige letters.
Safari [4] maakt de tekst vetter dan de overige browsers.
IE [6, 7 en 8] lijkt problemen te hebben met anti-alliasing (zoals vaker); en natuurlijk het *.eot formaat....
Chrome [3] doet het niet altijd en vervormd sommige letters.
Dit alles in zowel mijn eigen testjes als de demo's van Font Squirrel.
[ Voor 56% gewijzigd door OkkE op 14-10-2009 17:05 ]
“The best way to get the right answer on the Internet is not to ask a question, it's to post the wrong answer.”
QA Engineer walks into a bar. Orders a beer. Orders 0 beers. Orders 999999999 beers. Orders a lizard. Orders -1 beers.
Werkt ook in Safari, Opera 10, IE4+ hoorOkkE schreef op woensdag 14 oktober 2009 @ 16:39:
Vandaag een beetje aan het stoeien geweest met @font-face, was heel interessant, alleen jammer dat het toch eigenlijk alleen in Firefox 3.5 echt goed werkt. Hopelijk verbeterd de support hier voor snel, toch een stuk relaxter als Cufon of sIFR.
Altijd leuk... not.
We are shaping the future
Dat te dik worden in Safari heb ik ook wel eens gehad en dat is iets met dat safari zelf nog een keer clear type text rendered en anti aliased terwijl windows dit ook doet (dacht ik).OkkE schreef op woensdag 14 oktober 2009 @ 16:39:
Vandaag een beetje aan het stoeien geweest met @font-face, was heel interessant, alleen jammer dat het toch eigenlijk alleen in Firefox 3.5 echt goed werkt. Hopelijk verbeterd de support hier voor snel, toch een stuk relaxter als Cufon of sIFR.
[...]
Het werkt, maar niet goed (genoeg) in de tests die ik gedaan heb.
Opera \[10] vervormd sommige letters.
Safari \[4] maakt de tekst vetter dan de overige browsers.
IE [6, 7 en 8] lijkt problemen te hebben met anti-alliasing (zoals vaker); en natuurlijk het *.eot formaat....
Chrome \[3] doet het niet altijd en vervormd sommige letters.
Dit alles in zowel mijn eigen testjes als de demo's van Font Squirrel.
Font-face heeft nog heel veel bugs, te veel bugs naar mijn smaak. Sowieso heeft Internet Explorer nog geen degelijke ondersteuning, gezien deze enkel met EOT bestanden kan omgaan. De standaard beschrijft (op dit moment) dat ook TTF als OTF formaten ondersteund moeten worden; deze zijn dan ook veel gangbaarder.Good Fella schreef op woensdag 14 oktober 2009 @ 16:45:
[...]
Werkt ook in Safari, Opera 10, IE4+ hoor
Verder heeft de rendering erg veel last van de monitor instellingen van de gebruiker. Vooral clear-type en geen clear-type kan echt een wereld aan verschil betekenen. Tevens is het eindresultaat in de browsers (nu even vergelijkend tussen Gecko, Presto en WebKit browsers) nog erg verschillend. Logisch, maar verre van ideaal.
Het is zo'n typische functie met enorm veel potentie, maar nog teveel haken en ogen om op dit moment goed toegepast te worden. Ik gebruik het wel in een website, maar puur als uitgebreide testen aangetoond hebben dat de browser het goed aankan.
testcase: http://future-vision.nl/ie7euro.html
[ Voor 11% gewijzigd door Cartman! op 14-10-2009 18:29 ]
Verwijderd
Ik loop de hele ochtend te pielen met een rewrite rule voor een mod_rewrite die niet werkt, maar wel zou moeten werken. Uiteindelijk besluit ik gewoon dit eens te proberen.
1
2
3
4
| Options +FollowSymlinks RewriteEngine on rewriteRule ^(*.)\.htm$ $1.php [NC] |
Werkt ook niet. Ik verbaasd. Ik zoeken. Blijkt dat iemand (ikzelf in elk geval niet) zo'n leuk # voor LoadModule rewrite_module modules/mod_rewrite.so in de httpd.conf heeft gezet.
Ga ik:
a)
b)
c)
of d) héééél even lang koffie drinken?
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 deed zoiets als
1
| rewriteRule ^(*.)\.php$ index.php?id=$1 |
Daardoor bleef hij heel de tijd index.php evalueren en renamen en weer evalueren etc
If money talks then I'm a mime
If time is money then I'm out of time
Stond er niets in de error log? Ik krijg hier:Verwijderd schreef op donderdag 15 oktober 2009 @ 10:45:
*huil*
Ik loop de hele ochtend te pielen met een rewrite rule voor een mod_rewrite die niet werkt, maar wel zou moeten werken. Uiteindelijk besluit ik gewoon dit eens te proberen.
code:
1 2 3 4 Options +FollowSymlinks RewriteEngine on rewriteRule ^(*.)\.htm$ $1.php [NC]
Werkt ook niet. Ik verbaasd. Ik zoeken. Blijkt dat iemand (ikzelf in elk geval niet) zo'n leuk # voor LoadModule rewrite_module modules/mod_rewrite.so in de httpd.conf heeft gezet.
1
| [Thu Oct 15 11:04:32 2009] [alert] [client ::1] /var/www/.htaccess: Invalid command 'RewriteEngine', perhaps misspelled or defined by a module not included in the server configuration |
Dan weet je direct wat er mis is toch?
Gaat niet lukken op zijn OS
Matis schreef op donderdag 15 oktober 2009 @ 10:50:
Daardoor bleef hij heel de tijd index.php evalueren en renamen en weer evalueren etc
1
| rewriteRule ^(*.)\.php$ index.php?id=$1 [NC,L] |
[ Voor 60% gewijzigd door AtleX op 15-10-2009 11:08 ]
Sole survivor of the Chicxulub asteroid impact.
De oplossing is/was soms simpeler dan gedachtAtleX schreef op donderdag 15 oktober 2009 @ 11:08:
code:
1 rewriteRule ^(*.)\.php$ index.php?id=$1 [NC,L]
If money talks then I'm a mime
If time is money then I'm out of time
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
| CREATE DATABASE `Test`; USE `Test`; CREATE TABLE `User` ( `userId` INT UNSIGNED NOT NULL, CONSTRAINT `pk_user` PRIMARY KEY (`userId`) ) ENGINE=INNODB; CREATE TABLE `Post` ( `postId` INT UNSIGNED NOT NULL, `userId` INT UNSIGNED NOT NULL, CONSTRAINT `pk_post` PRIMARY KEY (`postId`), CONSTRAINT `fk_user_post` FOREIGN KEY (`userId`) REFERENCES `User` (`userId`) ) ENGINE=INNODB; CREATE DATABASE `test`; USE `test`; CREATE TABLE `User` ( `userId` INT UNSIGNED NOT NULL, CONSTRAINT `pk_user` PRIMARY KEY (`userId`) ) ENGINE=INNODB; CREATE TABLE `Post` ( `postId` INT UNSIGNED NOT NULL, `userId` INT UNSIGNED NOT NULL, CONSTRAINT `pk_post` PRIMARY KEY (`postId`), CONSTRAINT `fk_user_post` FOREIGN KEY (`userId`) REFERENCES `User` (`userId`) ON UPDATE CASCADE ON DELETE CASCADE ) ENGINE=INNODB; |
Met de geweldige foutmelding:
1
| ERROR 1005 (HY000): Can't create table './test/Post.frm' (errno: 121) |
Wat ongeveer betekent, er is * iets * fout met je FK. Die bestond dus al in een andere database met bijna dezelfde naam ...
You don't have to be crazy to do this job, but it helps ....
Moet met vb6 aan de slag. Laten we het er maar op houden dat het niet mijn favo taal is. Waar mn werkgever eerst een oude vb6 app om wou zetten naar .net gaan ze nu de vb6 app verder ontwikkelen. Ze vonden dat de ontwikkeling in de .net app niet snel genoeg ging.
Gek heh, als de vb app nog door 4 man wordt doorontwikkeld, en ik als enige op ontwikkeling van de .net app zit.
* D-Raven gaat denk ik eens goed nadenken of hij hier wel wilt blijven werken...
Verwijderd
/me ook..D-Raven schreef op vrijdag 16 oktober 2009 @ 12:10:
* D-Raven pakt voor t eerst sinds tijden een bak koffie.
Gadver, nu weet ik waarom ik thuis geen koffie drink..
Starbucks!!
Leuk toch VBD-Raven schreef op vrijdag 16 oktober 2009 @ 12:10:
* D-Raven pakt voor t eerst sinds tijden een bak koffie.
Moet met vb6 aan de slag. Laten we het er maar op houden dat het niet mijn favo taal is. Waar mn werkgever eerst een oude vb6 app om wou zetten naar .net gaan ze nu de vb6 app verder ontwikkelen. Ze vonden dat de ontwikkeling in de .net app niet snel genoeg ging.
Gek heh, als de vb app nog door 4 man wordt doorontwikkeld, en ik als enige op ontwikkeling van de .net app zit.
* D-Raven gaat denk ik eens goed nadenken of hij hier wel wilt blijven werken...
Ik loop nu ook tegen een "dom" probleem aan in VB.NET en ik wil eigenlijk dat de compiler me gaat waarschuwen, maar hij heeft er niet veel zin in. Iemand een idee hoe ik de compiler op het volgende laat checken?
1
2
| 'MyObject.MyVar is een property van type: MyEnum? (een nullable dus) myObject.MyVar = If(check,Nothing,MyEnum.Value1) |
Waneer check true is wil ik de property op Nothing hebben staan. ECHTER, dit gebeurt niet, omdat het rechterdeel een niet nullable is. De compiler maakt van de Nothing een 0 die hij cast naar MyEnum (wat neerkomt op de eerste waarde van de Enum). Als ik deze constructie in C# zou bouwen tikt de compiler me op mijn vingers met de mededeling dat links en rechts niet gelijk zijn (dat klopt), echter VB geeft me geen fout maar compiled dus naar (in mijn ogen) verkeerde code.
Ik weet dat links en rechts gelijk moeten zijn, maar ik maak soms ook een foutje, het is dan best nasty dat de compiler mij niet wijst op deze fout en gewoon zelf maar wat gaat rommelen. Dit zorgt nu dus voor problemen omdat er dus onverwachte values in mijn objecten komen (en vervolgens ook in de DB).
Iemand enig idee hoe ik hierop kan laten checken (het liefst met errors)? Ik heb wat zitten spelen met de compiler options en op google gezocht, maar wordt nog niet veel wijzer en een zoekopdracht op IF( is ook niet echt gewenst...
The #1 programmer excuse for legitimately slacking off: "My code's compiling"
Firesphere: Sommige mensen verdienen gewoon een High Five. In the Face. With a chair.
Als het VB.Net was zou ik een gat in de lucht springen bij wijze van.Gertjan. schreef op vrijdag 16 oktober 2009 @ 13:06:
[...]
Leuk toch VB! Zie het als een uitdaging... Overigens heeft VB.NET ook leuke "features" waar je behoorlijk wat tijd aan kwijt kunt raken...
Geloof me, VB.Net raak je ook vrij rap beu, maar het is inderdaad nog beter dan klassiek VB. Maar met problemen zoals boven verlang ik toch weer naar C#... Bij die taal heb ik toch meer het idee met een volwassen taal te werken...D-Raven schreef op vrijdag 16 oktober 2009 @ 13:34:
[...]
Als het VB.Net was zou ik een gat in de lucht springen bij wijze van.
The #1 programmer excuse for legitimately slacking off: "My code's compiling"
Firesphere: Sommige mensen verdienen gewoon een High Five. In the Face. With a chair.
Dus ik wil een pakket van Microsoft downloaden om eens wat mee te spelen, ik heb geen ervaring met elk van onderstaande:
Visual Basic 2005
Visual C++ 2005
Visual C# 2005
Visual J#.NET
Visual J# 2005
Visual Studio .NET 2003
Visual Studio 2008
Ik ben eigenlijk opzoek naar degene met de grootste community en ondersteuning, Delphi/Pascal begint een beetje dood te bloeden. Tijd voor iets nieuws.
Edit: ik zie nu dat in VS2008 gewoon al die talen daarin verwerkt zijn, ik neem aan dat in VS2008 het meest gewoon .NET gebruikt wordt?
[ Voor 13% gewijzigd door Megamind op 17-10-2009 09:24 ]
Kater? Eerst water, de rest komt later
VB.Net geeft mij wat teveel de indruk dat ik met een speelgoedtaaltje aan het werken ben.
Tevens vind ik het gebruik van semicolons en de algehele syntax van C# beter.
C# of VB?
C# lijkt qua syntax behoorlijk op Java, wat ik wel een voordeel vind.
Verder wordt C# op dit moment wat harder gepushed door MS waardoor het lijkt alsof er sneller leuke nieuwe features naar toe komen. Heel veel schelen de talen elkaar niet qua fuctionaliteit. VB heeft nogaltijd het "with" code blok, maar C# heeft dan weer andere leuke dingen zoals bij het creeren van een object meteen velden die niet in een constructor staan in stellen (als in: MyObject o = new MyObject(){name = "roy", ..}).
Zelf zou ik voor C# gaan, maar je kunt niet echt een verkeerde keuze maken. Het is allemaal .Net
(En ach het is allemaal maar syntactic sugar voor assembly
Zit je met oude software of kom je uit de VB-wereld, okee. Maar ik zou anno 2009 niet aanraden VB te leren
[ Voor 3% gewijzigd door user109731 op 17-10-2009 13:56 ]
Daarnaast is er natuurlijk heel veel te vinden over C# (MSND, maar ook http://csharp-source.net/ , http://www.codeguru.com/csharp/ en http://www.codeproject.com/?cat=3 )
Succes iig
If money talks then I'm a mime
If time is money then I'm out of time
a) in de handleiding de verkeerde url waarnaar je moet submitten en
b) slechts op één plek dat de hashcode anders is bij testen dan in productie.
En dat terwijl de hashcode uitleg zelf op vier plekken staat en je dus gemakkelijk die ene keer kan missen.
Verwijderd schreef op maandag 03 juli 2006 @ 11:06:
Het is gelukt.
Mijn fout was dat ik de hashkey uit de productieomgeving (https://ideal....) gebruikt had, maar ik had de haskey uit de testomgeving (https://idealtest....) moeten gebruiken.
N.B. de variabele ValidUntil moet WEL meegehashed worden!
Vitamine D tekorten in Nederland | Dodelijk coronaforum gesloten
Je bedoeld MSILroy-t schreef op zaterdag 17 oktober 2009 @ 13:48:
...(En ach het is allemaal maar syntactic sugar voor assembly).
Een voordeel van C# is dat het makkelijk is met zoeken. Als ik iets over .NET wil weten gebruik ik altijd het C# keyword omdat ik dan gerichtere .NET results krijg (zijn meerdere smaken vb) en in het algemeen is er een voorkeur voor C# op het net, wat betekend dat er meer over te vinden is.
Bij ons op het werk is VB.NET de standaard en hoewel ik graag C# code doe ik tegenwoordig thuis ook meer VB.NET coden omdat ik dat nu eenmaal al de hele dag doe.
Als ik jou was zou ik proberen om de projectjes de eerste tijd om en om in C# en VB.NET te doen (zodat je je thuis voelt in beide), want als je eenmaal makkelijk beide talen leest en begrijpt kun je iig bij het zoeken online makkelijker je weg vinden. Het is ook leerzaam om af en toe wat code van de ene naar de andere taal te vertalen.
Ace of Base vs Charli XCX - All That She Boom Claps (RMT) | Clean Bandit vs Galantis - I'd Rather Be You (RMT)
You've moved up on my notch-list. You have 1 notch
I have a black belt in Kung Flu.
Dit topic is gesloten.
![]()
Dit topic is niet de plaats om te lopen helpdesken. De Coffee Corner is primair bedoeld als uitlaatklep, niet als vraagbaak