Hoezo, het compiled toch gewoon?.oisyn schreef op vrijdag 29 oktober 2010 @ 17:13:
[...]
Oh, dat stukje over strikte mode had ik even gemist. Moet jij trouwens niet wat compile errors fixen?

Dit topic is onderdeel van een reeks. Ga naar het meest recente topic in deze reeks.
Hoezo, het compiled toch gewoon?.oisyn schreef op vrijdag 29 oktober 2010 @ 17:13:
[...]
Oh, dat stukje over strikte mode had ik even gemist. Moet jij trouwens niet wat compile errors fixen?
Zozo, zit je hier nou zomaar onze top-secret code te posten?Verwijderd schreef op vrijdag 29 oktober 2010 @ 17:11:
C++:Vind het stukje waar mijn teamgenoten verzuimd hebben C++ te leren.
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 void Player::initActuators() { for(std::map<int, std::map<int, int> >::iterator fIt = mConfiguration.mPositionMap.begin(); fIt!=mConfiguration.mPositionMap.end();fIt++) { CANDFrame fRame; fRame.setBMI(can::bmi::NodeInit); fRame.setEMI((*fIt).first); if((*(*fIt).second.begin()).first==1) { fRame.setLength(2); fRame.body()[1] = 8 >> (*(*fIt).second.begin()).second; fRame.body()[0] = (*(*fIt).second.begin()).second; }else if((*(*fIt).second.begin()).first==2) { fRame.setLength(4); fRame.body()[0] = 24 >> (*(*fIt).second.begin()).second; fRame.body()[1] = 16 >> (*(*fIt).second.begin()).second; fRame.body()[2] = 8 >> (*(*fIt).second.begin()).second; fRame.body()[3] = (*(*fIt).second.begin()).second; }else if((*(*fIt).second.begin()).first==3) { fRame.setLength(2); fRame.body()[0] = 8 >> (*(*fIt).second.begin()).second; fRame.body()[1] = (*(*fIt).second.begin()).second; } mResources.getResource(mConfiguration.mCanId)->getConnection()->async_write(fRame.getLength(),fRame.data()); } }
C'est le ton qui fait la musique. | Blog | @linkedin
R8 | 18-55 IS | 50mm 1.8 2 | 70-200 2.8 APO EX HSM | 85 1.8
Verwijderd
Je kan toch, als je een query moet doen, gelijk ook een andere SQL functie als kolom gebruiken die je toch nodig hebt. Beter dan 2 queries. (ok, dit kon ook in native php, met een extra handeling dan wel..)Boeboe schreef op woensdag 06 oktober 2010 @ 12:02:
kwam net een bizar stukje sql tegen (fictieve velden):
SQL:
1 2 SELECT veld1, veld2, GETDATE() as Expr1 FROM tabel ORDER BY Expr1
wut
[ Voor 3% gewijzigd door Verwijderd op 31-10-2010 12:32 ]
[ Voor 78% gewijzigd door Woy op 31-10-2010 13:45 ]
www.maartendeboer.net
1D X | 5Ds | Zeiss Milvus 25, 50, 85 f/1.4 | Zeiss Otus 55 f/1.4 | Canon 200 f/1.8 | Canon 200 f/2 | Canon 300 f/2.8
Het heeft alleen niet heel veel zin om hierop te sorterenVerwijderd schreef op zondag 31 oktober 2010 @ 12:31:
[...]
Je kan toch, als je een query moet doen, gelijk ook een andere SQL functie als kolom gebruiken die je toch nodig hebt. Beter dan 2 queries. (ok, dit kon ook in native php, met een extra handeling dan wel..)
Scheelt je programmeertijd en de computer rekentijd.. Ok.. in dit voorbeeld zijn er wel meerdere rows, maar ik weet niet of dat voor mysql uitmaakt qua processortijd.
486DX2-50 16MB ECC RAM 4x 500MB Drive array 1.44MB FDD MS-Dos 6.22
Dat is dus niet zo, er is weliswaar een bug geweest die dat gedrag vertoonde, maar het verwachte gedrag is dat GETDATE() in één query steeds dezelfde waarde retourneert, ongeacht de uitvoertijd van die query.PiepPiep schreef op maandag 01 november 2010 @ 09:07:
Misschien dat je als de query voor 12 uur 's nachts begint en na 12 uur 's nachts eindigt verschillende datum waarden terug.
Dan weet je op een omslachtige manier dat het 12 uur 's nachts was
https://oneerlijkewoz.nl
Op papier is hij aan het tekenen, maar in de praktijk...
Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'
1
2
3
4
5
6
7
| <?php function worteltrekken($getal) { $resultaat = $getal / $getal; return $resultaat; } |
[ Voor 16% gewijzigd door Styxxy op 01-11-2010 22:02 ]
No trees were harmed in creating this message. However, a large number of electrons were terribly inconvenienced.
Speel ook Balls Connect en Repeat
1
| return sqrt($getal); |
In principe, zei het niet dat als $getal geen int/float is, dit naar een int gecast wordt en vaak 0 op zal leveren.Verwijderd schreef op dinsdag 02 november 2010 @ 00:39:
mooie manier om te controleren of datstructuur $getal een / operator heeft
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.
Mijn vriendin (HAVO C&M.oisyn schreef op dinsdag 02 november 2010 @ 00:48:
Duh, als x2 hetzelfde is als x*x, dan zal √x wel hetzelfde zijn als x/x. Toch?
If money talks then I'm a mime
If time is money then I'm out of time
Ik ben het eens met je verhaal, maar deze formule klopt toch niet?Matis schreef op dinsdag 02 november 2010 @ 08:04:
Immers x0.5 * x2 = x(0.5 * 2) = x1 = x
[ Voor 37% gewijzigd door !null op 02-11-2010 09:02 ]
Ampera-e (60kWh) -> (66kWh)
Hmm, ja je hebt gelijk, het is natuurlijk tot de macht tot de macht, waarmee je dus de machten mag vermenigvuldigen!null schreef op dinsdag 02 november 2010 @ 08:55:
[...]
Ik ben het eens met je verhaal, maar deze formule klopt toch niet?
Volgens mij kan je x0.5 * x2 niet vertalen in x(0.5 * 2)
Tenminste, als ik beide uitreken met een voorbeeld input komt er toch twee verschillende dingen uit.
Maak ik een wiiskundig foutje?
Edit: wanneer je twee maal X hebt staan met verschillende machtsgetallen en je wilt deze samenvoegen moet je deze machtsgetallen optellen en niet vermenigvuldigen.
Dus x0.5 * x2 wordt x(0.5 + 2)
en dat is natuurlijk niet gelijk aan x1
[ Voor 9% gewijzigd door Matis op 02-11-2010 09:08 ]
If money talks then I'm a mime
If time is money then I'm out of time
Klopt, het is ook fout. Vul voor x maar eens 9 in: 90.5 * 92 = 3 * 81 = 243. Het volgende is wel correct: (xa)b = x(a*b). Neem je voor a en b respectievelijk 2 en 0.5, dan krijg je (x2)0.5 = √(x2) = x1 = x!null schreef op dinsdag 02 november 2010 @ 08:55:
[...]
Ik ben het eens met je verhaal, maar deze formule klopt toch niet?
Volgens mij kan je x0.5 * x2 niet vertalen in x(0.5 * 2)
Tenminste, als ik beide uitreken met een voorbeeld input komt er toch twee verschillende dingen uit.
Maak ik een wiiskundig foutje?
Edit: wanneer je twee maal X hebt staan met verschillende machtsgetallen en je wilt deze samenvoegen moet je deze machtsgetallen optellen en niet vermenigvuldigen.
Dus x0.5 * x2 wordt x(0.5 + 2)
en dat is natuurlijk niet gelijk aan x1
Look, runners deal in discomfort. After you get past a certain point, that’s all there really is. There is no finesse here.
1
2
3
4
5
6
| #define CASE_LOWER_CASE case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': #define CASE_UPPER_CASE case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': #define CASE_SPECIAL_CASE case '_': case '\\': case '.': case '-': #define CASE_NUMBER case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': #define CASE_SPACE case 9: case 10: case 13: case ' ': #define CASE_ENTITY_CHAR case '_': case '-': |
486DX2-50 16MB ECC RAM 4x 500MB Drive array 1.44MB FDD MS-Dos 6.22
En dan worden Form Feeds (ASCII 12) niet eens herkend.PiepPiep schreef op dinsdag 02 november 2010 @ 11:48:
C:
1 2 3 4 5 6 #define CASE_LOWER_CASE case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': #define CASE_UPPER_CASE case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': #define CASE_SPECIAL_CASE case '_': case '\\': case '.': case '-': #define CASE_NUMBER case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': #define CASE_SPACE case 9: case 10: case 13: case ' ': #define CASE_ENTITY_CHAR case '_': case '-':
Bron, software geschreven door een instituut dat nogal technisch hoog aangeschreven staat.
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.
Look, runners deal in discomfort. After you get past a certain point, that’s all there really is. There is no finesse here.
Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'
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.
Verwijderd
nog bedankt, besef me nu pas dat ik em zelf ook wel eens fout doe (zo'n 'even niet opletten == een avond debuggen' foutjeBob schreef op woensdag 27 oktober 2010 @ 16:14:
Voor de volledigheid, een scoped lock gebruik je zo:
C++:
1 2 3 { boost::mutex::scoped_lock instance(mutex); }
Ik weet dat font-smooth niet werkt in CSS 2, maar vooral dat laatste stukje vind ik erg vreemd; Het bestaat niet in CSS 2.1, maar bestaat wel in elke versie oid131 #logo a, #logo a:link, #logo a:hover Property font-smooth doesn't exist in CSS level 2.1 but exists in : always always
If money talks then I'm a mime
If time is money then I'm out of time
Verwijderd
[ Voor 16% gewijzigd door Verwijderd op 02-11-2010 23:01 ]
1
2
3
4
| for($i=0;$i<count($header);$i++) { $this->Cell($w[$i],5,$header[$i],1,0,'C',1); } |
[ Voor 3% gewijzigd door Matis op 03-11-2010 20:53 ]
If money talks then I'm a mime
If time is money then I'm out of time
Behalve dat je count($header) in een variabel zou kunnen zetten zie ik niets geks?Stephan4kant schreef op woensdag 03 november 2010 @ 20:51:
Het kan aan mij liggen, maar is dit ook niet een erg gekke manier van een foreach-loop?
PHP:
1 2 3 4 for($i=0;$i<count($header);$i++) { $this->Cell($w[$i],5,$header[$i],1,0,'C',1); }
Tja, in het geval van PHP misschien wel. Maar in een taal zoals bijv. Python kun je het voorbeeld van Stephan4kant in "[alg] Slechtste programmeervoorbeelden d..." oplossen met een foreach+zip om gelijktijdig door header en w heen te wandelen.Matis schreef op woensdag 03 november 2010 @ 20:52:
Niet per definitie. Als je de index wilt weten, dan is dit een inzichtelijke manier om dat te bereiken.
Je had ook met een foreach-loopje kunnen werken, maar dan moet je toch weer een counter bijhouden, die de index bepaalt.
0,02
Ipsa Scientia Potestas Est
NNID: ShinNoNoir
Dat wordt wel weggeoptimaliseerd door de runtime mag ik hopen ....Webgnome schreef op woensdag 03 november 2010 @ 20:53:
[...]
Behalve dat je count($header) in een variabel zou kunnen zetten zie ik niets geks?
[ Voor 3% gewijzigd door Sebazzz op 03-11-2010 21:30 ]
[Te koop: 3D printers] [Website] Agile tools: [Return: retrospectives] [Pokertime: planning poker]
En wat als $header of $w gedurende de loop wordt aangepast?Sebazzz schreef op woensdag 03 november 2010 @ 21:30:
Dat wordt wel weggeoptimaliseerd door de runtime mag ik hopen ....
Waarom ga je daar vanuit?Sebazzz schreef op woensdag 03 november 2010 @ 21:30:
[...]
Dat wordt wel weggeoptimaliseerd door de runtime mag ik hopen ....
Ik tik vrij geregeld in e, object/aspect-georienteerde (hardware-)verificatietaal, die een relatief "natuurlijke" syntax heeft. Daar kun je 'for each' mooi toepassen in zowel generation constraints (voor random generator), als procedurele code. Leest erg prettig weg:YopY schreef op woensdag 03 november 2010 @ 20:55:
Foreach is eigenlijk een erg gekke manier van een for-loop,.
1
2
3
4
5
| my_method(my_list: list of uint) is { for each in my_list { //tralalala }; }; |
Liefhebber van schieten en schijten. Ouwehoer en niet-evangelisch atheist.
Daniel36: Dat zeg ik(?) Nee, dat zeg ik niet, je hebt gelijk.
[ Voor 12% gewijzigd door alex3305 op 03-11-2010 21:59 ]
maar... hoe roep je dan aan wat er in die list zit?Hillie schreef op woensdag 03 november 2010 @ 21:56:
[...]
Ik tik vrij geregeld in e, object/aspect-georienteerde (hardware-)verificatietaal, die een relatief "natuurlijke" syntax heeft. Daar kun je 'for each' mooi toepassen in zowel generation constraints (voor random generator), als procedurele code. Leest erg prettig weg:
code:
1 2 3 4 5 my_method(my_list: list of uint) is { for each in my_list { //tralalala }; };
[ Voor 22% gewijzigd door Patriot op 03-11-2010 22:03 ]
Meeste verzamelingtypes houden hun grootte bij in een variabele. Een variabele returnen in een functie is nou niet bepaald significant zwaar. Dus al wordt het niet geoptimaliseerd, dan kost het nog steeds amper wat.
¸.·´¯`·.¸.·´¯`·.¸><(((º>¸.·´¯`·.¸><(((º>¸.·´¯`·.¸.·´¯`·.¸.·´¯`·.¸<º)))><¸.·´¯`·.¸.·´¯`·.¸.·´¯`·.¸
Mijn punt dus precies; het word niet weggeoptimaliseerd het is in eerste instantie al niet inefficient.TheCoolGamer schreef op woensdag 03 november 2010 @ 22:00:
[...]
Meeste verzamelingtypes houden hun grootte bij in een variabele. Een variabele returnen in een functie is nou niet bepaald significant zwaar. Dus al wordt het niet geoptimaliseerd, dan kost het nog steeds amper wat.
PHP heeft ook een key-value foreachMatis schreef op woensdag 03 november 2010 @ 20:52:
Niet per definitie. Als je de index wilt weten, dan is dit een inzichtelijke manier om dat te bereiken.
Je had ook met een foreach-loopje kunnen werken, maar dan moet je toch weer een counter bijhouden, die de index bepaalt.
0,02
1
2
3
| foreach($header as $i => $value) { $this->Cell($w[$i], 5, $value, 1, 0, 'C', 1); } |
In het geval van PHP niet. Zou ook niet kunnen, want je zou in de loop een volgend item uit de array kunnen verwijderen en dan heeft de count dus een andere waarde. Waarom je dat zou willen, geen idee, maar het kan wel.Sebazzz schreef op woensdag 03 november 2010 @ 21:30:
[...]
Dat wordt wel weggeoptimaliseerd door de runtime mag ik hopen ....
Ziet er uit als iets van fpdf: http://www.fpdf.org/en/doc/cell.htmhostname schreef op donderdag 04 november 2010 @ 15:49:
[...]
PHP heeft ook een key-value foreach
PHP:
1 2 3 foreach($header as $i => $value) { $this->Cell($w[$i], 5, $value, 1, 0, 'C', 1); }
Ik vind de originele code wel duidelijker.
Overigens ben ik nu wel benieuwd wat die 5, 1, 0, 'C' en 1 betekenen. Ik gok er zomaar op dat die nullen en enen booleans zijn die als integers zijn genoteerd.
If money talks then I'm a mime
If time is money then I'm out of time
1
2
| if (window.nujij_apikey == null) alert('NUjij APIkey vereist'); |
"Religion is an insult to human dignity. With or without it you would have good people doing good things and evil people doing evil things. But for good people to do evil things, that takes religion." - Steven Weinberg
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.
1
2
3
4
5
6
7
8
9
| function getText($slug) { $sql = "SELECT t_name, t_function, t_text"; $sql .= " FROM " .getTableName('testimonial'); $sql .= " WHERE t_slug = '" .$slug."'"; if($results = $GLOBALS['db']->execute($sql)) { return $results->fetchrow(); } } $item = getText($_GET['testimonial']); |
“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.
Xbox
Even the dark has a silver lining | I'm all you can imagine times infinity, times three
Nah, dat was het wel ongeveer, zoiets toont toch altijd mooi aan dat iemand zijn vakgebied niet kent.BM schreef op vrijdag 05 november 2010 @ 16:48:
sql injection, gebruik van globals, en direct gebruik van get variabelen. Nog dingen gemist?
(note: ik ken geen php)
Bah, variabelen met Nederlandse namen.0xDEADBEEF schreef op vrijdag 05 november 2010 @ 13:14:
Komt hiervandaanhttp://api.nujij.nl/NUjij2.js
code:
1 2 if (window.nujij_apikey == null) alert('NUjij APIkey vereist');
Impedance, a measure of opposition to time-varying electric current in an electric circuit.
Not to be confused with impotence.
Je bedoelt: "Bah variabelen in JS met underscores i.p.v. camelCase" ? Ik zie er behalve de productnaam geen Nederlands in hoor
... en etcetera en zo
En de functie geeft niks terug indien geen resultaten, een return false oid kan wel handig zijn.Davio schreef op vrijdag 05 november 2010 @ 17:06:
[...]
Nah, dat was het wel ongeveer, zoiets toont toch altijd mooi aan dat iemand zijn vakgebied niet kent.
Ennnnnnnnnn laat losssssssss.... https://github.com/jrz/container-shell (instant container met chroot op current directory)
pieturp schreef op vrijdag 05 november 2010 @ 21:47:
[...]
Je bedoelt: "Bah variabelen in JS met underscores i.p.v. camelCase" ? Ik zie er behalve de productnaam geen Nederlands in hoor
1
2
3
4
5
6
7
8
| if (window.bericht_url == null) var bericht_url = window.location.href; if (window.bericht_titel == null) var bericht_titel = document.title; if (window.bericht_omschrijving == null) var bericht_omschrijving = ''; |
Impedance, a measure of opposition to time-varying electric current in an electric circuit.
Not to be confused with impotence.
Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'
My bad
[ Voor 5% gewijzigd door pieturp op 06-11-2010 00:02 ]
... en etcetera en zo
Je denkt dat ontwerpers van een taal en de bijbehorende compilers op een gegeven moment dachten van "Gut, nu hebben we zo'n mooie lijstiteratie, maar je kunt er eigenlijk geen fluit mee! Oh jee, nou, toch maar implementeren dan"?Patriot schreef op woensdag 03 november 2010 @ 21:59:
maar... hoe roep je dan aan wat er in die list zit?
1
2
3
4
5
| my_method(my_list: list of uint) is { for each in my_list { it += 1; }; }; |
1
2
3
4
5
| my_method(my_list: list of uint) is { for each (flupke) in my_list { flupke += 1; }; }; |
Liefhebber van schieten en schijten. Ouwehoer en niet-evangelisch atheist.
Daniel36: Dat zeg ik(?) Nee, dat zeg ik niet, je hebt gelijk.
NowYouApiKeyJanoz schreef op vrijdag 05 november 2010 @ 22:48:
Kom kom, we gaan toch niet weer beginnen met een discussie over de fetish van veel ontwikkelaars om zo ongeveer alles om te zetten naar (steenkolen) engels?
Bericht, titel en omschrijving zijn typische domein termen.
Look, runners deal in discomfort. After you get past a certain point, that’s all there really is. There is no finesse here.
YouAreNextApiKey? YourTurnApiKey? Bljft allemaal bagger natuurlijk.
De code ziet er misschien raar uit, maar het gebruik van CASE statements kan zeer efficiënt zijn bij syntax (text) scanners. De truuk met CASE statements is namelijk dat er een jump tabel gemaakt word van de numeriekePiepPiep schreef op dinsdag 02 november 2010 @ 11:48:
C:
1 2 3 #define CASE_LOWER_CASE case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': #define CASE_UPPER_CASE case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G': ...
Bron, software geschreven door een instituut dat nogal technisch hoog aangeschreven staat.
if c>='A' && c<='Z' then <UPPERCASE> ...
switch(c) { CASE 'A': ... CASE 'B': ... }
[ Voor 181% gewijzigd door yade op 06-11-2010 11:57 ]
Wat is daar mis mee volgens jou?Verwijderd schreef op vrijdag 05 november 2010 @ 21:56:
En gebruik van ".="
Full-stack webdeveloper in Groningen
Ik denk dat hij bedoeld dat het zoiets had moeten zijn:
1
2
3
4
5
6
7
8
9
10
11
| <?php function getText($slug) { $sql = "SELECT t_name, t_function, t_text" ." FROM " .getTableName('testimonial') ." WHERE t_slug = '" .$slug."'"; if($results = $GLOBALS['db']->execute($sql)) { return $results->fetchrow(); } } $item = getText($_GET['testimonial']); ?> |
1
2
3
4
5
6
7
8
9
10
11
| <?php function getText($slug) { $sql = "SELECT t_name, t_function, t_text FROM ".getTableName('testimonial')." WHERE t_slug = '" .$slug."'"; if($results = $GLOBALS['db']->execute($sql)) { return $results->fetchrow(); } } $item = getText($_GET['testimonial']); ?> |
[ Voor 30% gewijzigd door Gamebuster op 06-11-2010 15:35 ]
Let op: Mijn post bevat meningen, aannames of onwaarheden
Verwijderd
Verwijderd
1
2
3
4
5
| /* IF WE USE GET, PLACE THOSE VALUES IN PARAMS INSTEAD */ if($_GET) { $i = 0; foreach($_GET as $params[$i++] => $value); } |
[ Voor 10% gewijzigd door FragFrog op 06-11-2010 19:59 ]
1
2
3
4
5
6
7
8
| <?php if($_GET) { $params = array_keys($_GET); $value = end($_GET); $i = count($_GET); } ?> |
_vermoedelijk_ is het gebruik van .= trager dan de concat, omdat er dan een variable-lookup is, al zal het in praktijk denk erg weinig uitmaken. Ik ga eventjes testenVerwijderd schreef op zaterdag 06 november 2010 @ 17:21:
Zou het gebruik van die operator langzamer zijn dan concatenation? En je kunt niet altijd zoveel whitespace in een string gooien zoals in het tweede voorbeeld. Ik vind dat .= nog wel het minste probleem is in die code.
[ Voor 74% gewijzigd door Gamebuster op 06-11-2010 20:16 ]
Let op: Mijn post bevat meningen, aannames of onwaarheden
FragFrog schreef op zaterdag 06 november 2010 @ 20:18:
Je interpretatie klopt volgens mij bijna: als het goed is (en ik heb het niet getest) wordt params niet de array_keys maar de array_values van GET. Feitelijk vraagt het dus op wat de waardes zijn in je GET array.
Reden waarom dit erin zit is dat het blog search-engine friendly URL's bakt, maar daarvoor zijn htaccess rules nodig. Als htaccess rewrite rules niet toegestaan zijn op een server wordt er teruggevallen op GET parameters. $params is uiteraard een global
1
| foreach($_GET as $params[$i++] => $value); |
Let op: Mijn post bevat meningen, aannames of onwaarheden
Tegenwoordig zijn compilers best slim. In dit artikel op codeproject.com wordt het switch-statement en wat de compiler ermee doet uitgebreid besproken.yade schreef op zaterdag 06 november 2010 @ 11:40:
Maar alleen bij een opeenvolgende reeks dus. Anders niet.
Maar goed, een optimizer zou ook zo geschreven kunnen zijn dat hij die if statement op dezelfde manier optimaliseert.
Hoe dan ook, welke methode is fout gevoeliger en lastiger te begrijpen?
Het moet voorop staan dat de code leesbaar en zo fout ongevoelig mogelijk is. De rest mag de compiler doen.
Maar moet iedere case niet ook iets doen? Of wordt de uitvoerbare code 26 keer gekopieerd?
Anywho, hier wil je je niet druk om maken. Ik niet in ieder geval.
Gamebuster schreef op zaterdag 06 november 2010 @ 20:27:
$params[$i++] is de variable waaraan de key van $_GET wordt toegewezen. Aan $value wordt de waarde toegewezen.
Ik gebruik overigens:FragFrog schreef op zaterdag 06 november 2010 @ 20:35:
[...]
even lopen testen en inderdaad. Weer een 7 jaar oude bug opgelost
1
| http://website.com/seo/vriendelijke/url.html |
1
| http://website.com/?seo/vriendelijke/url |
1
| <?$params = explode('/', $_SERVER["QUERY_STRING"])?> |
[ Voor 7% gewijzigd door Gamebuster op 06-11-2010 20:43 ]
Let op: Mijn post bevat meningen, aannames of onwaarheden
Als je bijvoorbeeld met Java bezig bent, dan kan je voor zulke zaken beter StringBuffer of StringBuilder gebruiken, omdat Strings 'immutable' zijn, en je op deze manier elke keer een nieuw Object aan het maken bent.
You only need two tools in life: WD-40 and Duct-Tape, if it doesn't move and it should, use the WD-40. If it does move and it shouldn't, use the Tape.
Verwijderd
We are shaping the future
Hoeft niet opeenvolgend te zijn. Stel je hebt cases [1,3,5,6] dan kan de compiler een jump table maken met voor waarde 2 en 4 een jump naar de default case (of naar het volgende statement). Het enige wat van belang is is dat het verschil tussen de hoogste waarde en de laagste waarde niet te groot is. Ook een switch met cases [900, 901, 902, 903] kan efficient door overal (ook van de input) 900 af te trekkenyade schreef op zaterdag 06 november 2010 @ 11:40:
Maar alleen bij een opeenvolgende reeks dus. Anders niet.
Hallo, meneer de 386 programmeur waar dit nog een issue was. Die vergelijking wordt wel gepipelined met andere instructies, daar hoef je je geen zorgen te maken. Belangrijker is dat de branch predictor geen brach mispredict, want dat is duur (pipeline flush). En een jump table laat zich amper goed predicten.BeerenburgCola schreef op zaterdag 06 november 2010 @ 10:55:
In machine taal wordt dit een soort van JMP ${<OFFSET>+c}
Er worden dan geen operatoren gebruikt om de waarde van 'c' te evalueren.
In Java ook.Verwijderd schreef op zaterdag 06 november 2010 @ 20:56:
Wat jij zegt geldt allemaal voor Java. In andere talen werken strings andersIn .NET is het bv een wrapper om een char-array
[ Voor 57% gewijzigd door .oisyn op 07-11-2010 02:00 ]
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.
De define maakte in dit geval de code erg onduidelijk, de precies code heb ik op het moment even niet hier maar er stond iets alsBeerenburgCola schreef op zaterdag 06 november 2010 @ 10:55:
[...]
De code ziet er misschien raar uit, maar het gebruik van CASE statements kan zeer efficiënt zijn bij syntax (text) scanners. De truuk met CASE statements is namelijk dat er een jump tabel gemaakt word van de numerieke
waarden opgegeven als argument van de CASE. Dit kan zeer snelle code opleveren.
Bij het schrijven van een syntax scanner wil je zo weinig mogelijk overhead.
De codebevat bijvoorbeeld 3 operatoren.if c>='A' && c<='Z' then <UPPERCASE> ...
Als je code schrijft:switch(c) { CASE 'A': ... CASE 'B': ... }
Word de numeriek waarde van 'c' gebruik als index in een jump tabel die direct naar juist plek in de code springt. In machine taal wordt dit een soort van JMP ${<OFFSET>+c}
Er worden dan geen operatoren gebruikt om de waarde van 'c' te evalueren.
switch(c) { case '<': ... case '>': ... CASE_LOWER_CASE ... S ... }
486DX2-50 16MB ECC RAM 4x 500MB Drive array 1.44MB FDD MS-Dos 6.22
vzviw is er bar weinig verschil tussen de string-classes van Java en .NET - beide immutable, bij beide wordt een stringbuffer / builder verkozen boven eenvoudige concats, en beide zijn het wrappers om een char array (alhoewel je het niet als een wrapper moet zien, maar een object dat toevallig een array van chars gebruikt voor zijn interne opslag - aannames of verwachtingen over hoe een object zijn data opslaat moet je als externe gebruiker nooit gaan maken, omdat dat voor jou als gebruiker gewoon niet belangrijk is)Verwijderd schreef op zaterdag 06 november 2010 @ 20:56:
Wat jij zegt geldt allemaal voor Java. In andere talen werken strings andersIn .NET is het bv een wrapper om een char-array
Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'
Verwijderd
Sta ik ook een beetje van te kijken. Ik ben niet zon php man, maar ik weet dat als je dit in java doet hij elke keer dat je een concat doet een nieuwe String aanmaakt. In java heb je een StringBuffer om dat op te lossen. Wellicht optimaliseert php zelf de code.Gamebuster schreef op zaterdag 06 november 2010 @ 20:27:
[...]
code:
1 foreach($_GET as $params[$i++] => $value);
$params[$i++] is de variable waaraan de key van $_GET wordt toegewezen. Aan $value wordt de waarde toegewezen.
in $params komen dus de keys te staan.
@performance testje concat vs append:
concat:
19.56 ms
19.48 ms
19.56 ms
19.48 ms
19.54 ms
append:
18.14 ms
18.12 ms
18.08 ms
18.12 ms
18.11 ms
Vreemd genoeg is append met de .= operator zelfs sneller dan de concat met de . operator in mijn testje. Had ik niet verwacht. Toch blijf ik concat gebruiken, want ik vind die netter.
Klik linkjes boven resultaten voor broncode.
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.
Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'
Vraag me regelmatig af waarom die verschillen zo klein zijn, wanneer ik bijvoorbeeld aan het zoeken ben naar uitleg over methodes in Java kan ik regelmatig ook perfect uit de voeten met MSDNJanoz schreef op maandag 08 november 2010 @ 13:47:
Bij die mensen kan het gewoon niet tussen de oren komen dat eigenlijk het enige echte verschil tussen Java en .NET is dat je je methodenamen met een kleine danwel hoofdletter schrijft.
Vond ik een lange tijd ook erg vervelend als Java Software Engineer zijnde, maar kan me er nu niet meer druk om maken. Soms zijn mensen toch echt heel kortzichtig (en vooral onwetend).Als je alleen al kijkt wat voor onzin er in nieuws: Apple stopt met ontwikkeling OS X-versie Java verkondigd werd. Ik heb al niet eens meer de moeite genomen om uberhaupt daar te proberen te reageren.
You only need two tools in life: WD-40 and Duct-Tape, if it doesn't move and it should, use the WD-40. If it does move and it shouldn't, use the Tape.
Microsoft heeft goed naar Java gekeken, en gewoon een eigen Java versie zonder de eigenaardigheden gebouwd. Dus dit is gewoon een gevalletje beter goed gejat dan slecht zelf bedachtRomeoJ schreef op maandag 08 november 2010 @ 14:30:
Vraag me regelmatig af waarom die verschillen zo klein zijn, wanneer ik bijvoorbeeld aan het zoeken ben naar uitleg over methodes in Java kan ik regelmatig ook perfect uit de voeten met MSDN
https://niels.nu
Verwijderd
[ Voor 37% gewijzigd door Verwijderd op 08-11-2010 15:17 ]
1
2
3
4
5
6
7
| List<String> list = ["item"]; String item = list[0]; Set<String> set = {"item"}; Map<String, Integer> map = {"key" : 1}; int value = map["key"]; |
1
| int billion = 1_000_000_000; |
1
| int binary = 0b1001_1001; |
Although Sun open-sourced Java SE, they did not open-source the test suites required to claim conformance. This caused a conflict with the Apache foundation. Many members of the JCP executive committees, whose votes are required for JSRs to become final, support Apache in this conflict. Consequently, many JCP executive committees have agreed not to approve any of Sun's JSRs until the license terms are "fixed". Sun has avoided filing JSRs that they know will be shot down. Without an umbrella JSR for Java SE 7, there is no Java SE 7.
So depending on whose side you take, the answer to "Who is preventing the release of Java 1.7" is either Sun Microsystems or the Apache Foundation.
Incidentally, Oracle was a strong supporter of the Apache foundation, and Oracle has now purchased Sun Microsystems. That may provide hope for breaking the logjam.
Stephen Colebourne has written about these issues: http://www.jroller.com/scolebourne/date/20090328 http://www.jroller.com/scolebourne/date/20090416 http://www.jroller.com/scolebourne/date/20090421.
Lekker consequent. Broncode? Taal?Verwijderd schreef op maandag 08 november 2010 @ 15:15:
heb concat, StringBuilder en StringBuffer.
StringBuilder: 573ms
StringBuilder: 199ms
StringBuilder: 411ms
StringBuilder: 221ms
StringBuilder: 162ms
StringBuffer: 310ms
StringBuffer: 291ms
StringBuffer: 320ms
StringBuffer: 310ms
StringBuffer: 318ms
Concat: 1207ms
Concat: 1008ms
Concat: 956ms
Concat: 897ms
Concat: 918ms
Die nieuwe Java features zijn nou niet echt dingen waar ik voor sta te springen. Die shorthand notation collections zijn leuk, maar daar houd het ook bij op.roy-t schreef op maandag 08 november 2010 @ 15:28:
.NET Java noemen met Hoofdletters vind ik wel een beetje kort door de bocht.
Java staat nu al een jaar of 4 stil, is het niet? .Net 3.5 en 4.0 brachten veel vernieuwingen, maar als je ziet wat de nieuwe features in java 1.7 zijn, dan mja.. kijken jullie zelf maar.
http://inebium.com/post/java-7-new-release-performance-code
*lijstje*
[ Voor 93% gewijzigd door Gamebuster op 08-11-2010 15:38 ]
Let op: Mijn post bevat meningen, aannames of onwaarheden
Vergeet vooral de goddelijke MSDN niet. Ik heb zelden een zo duidelijke handleiding van een programmeertaal of een framework gezien.Hydra schreef op maandag 08 november 2010 @ 15:08:
[...]
Daarnaast maakt MS het Java devs hierdoor ook nog erg makkelijk over te stappen. Als je Java al kent is C# een eitje, en het .Net framework is ook extreem simpel opgezet, maar wel heel uitgebreid.
https://oneerlijkewoz.nl
Op papier is hij aan het tekenen, maar in de praktijk...
Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'
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.
Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'
Second that. Ik kom vaak als ik google op een bepaald probleem gewoon op de MSDN uit waar een duidelijk voorbeeld staat. Vandaag nog omdat ik handmatig een connection string moest bouwen en het niet voldoende was de string uit de appSettings xml-file te copy-pasten en wat dingen daarin aan te passen.CodeCaster schreef op maandag 08 november 2010 @ 15:37:
[...]
Vergeet vooral de goddelijke MSDN niet. Ik heb zelden een zo duidelijke handleiding van een programmeertaal of een framework gezien.
Geen idee maar de MSDN documentatie bestaat uit een stuk meer dan louter de API reference - zoals examples, how to's, whitepapers, etc. En dat zijn juist de dingen die het imho zo duidelijk maken. Als ik iets wil ben ik in eerste instantie niet geïnteresseerd in klasse-documentatie. Hell, ik weet nog niet eens welke klasse ik moet gebruiken. Ik wil liever eerst een stukje background over het onderwerp en relevante terminologie.Janoz schreef op maandag 08 november 2010 @ 15:55:
Maar werd/wordt dat ook vanuit de sourcecode gegenereerd? (Daar doelde ik eigenlijk meer op)
[ Voor 32% gewijzigd door .oisyn op 08-11-2010 16:31 ]
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.
Dit topic is gesloten.
Apple iPhone 17 LG OLED evo G5 Google Pixel 10 Samsung Galaxy S25 Star Wars: Outlaws Nintendo Switch 2 Apple AirPods Pro (2e generatie) Sony PlayStation 5 Pro
Tweakers is onderdeel van
DPG Media B.V.
Alle rechten voorbehouden - Auteursrecht © 1998 - 2025
•
Hosting door TrueFullstaq