Javascript is inderdaad zo ongeveer ook de enige taal die bijna net zo beroerd in elkaar steekt als PHP.quote:Op maandag 2 februari 2015 09:11 schreef Intrepidity het volgende:
We kunnen allemaal wel haten op de API van PHP, maar toch mogen we van geluk spreken dat er ook nog front-enders zijn om de javascript te schrijven
[ afbeelding ]
Uiteindelijk is Javascript de enige programmeertaal die je kunt gebruiken in de browser. Dus of je nou wil of niet, als je iets maakt dat in browsers moet draaien, kun je je maar beter in Javascript verdiepen.quote:Op maandag 2 februari 2015 11:29 schreef Monolith het volgende:
Je hebt ook ongeveer 0,0 serieuze alternatieven voor Javascript.
Het enige wat je nog kunt doen is gebruik maken van talen of Frameworks die compileren naar Javascript. Ik haalde eerder al GWT aan, waarbij je gewoon code in Java ontwikkelt (met alle voordelen van een fatsoenlijke taal) en die vervolgens gecompileerd wordt tot Javascript.quote:Op maandag 2 februari 2015 11:33 schreef Tijn het volgende:
[..]
Uiteindelijk is Javascript de enige programmeertaal die je kunt gebruiken in de browser. Dus of je nou wil of niet, als je iets maakt dat in browsers moet draaien, kun je je maar beter in Javascript verdiepen.
Iets waarvan veel programmeurs denken dat het niet nodig is trouwens, omdat ze denken dat ze de taal zo wel snappen omdat de syntax ze bekend voorkomt.
Hey, zit jij ook al op phpnl slack.?quote:Op maandag 2 februari 2015 09:11 schreef Intrepidity het volgende:
We kunnen allemaal wel haten op de API van PHP, maar toch mogen we van geluk spreken dat er ook nog front-enders zijn om de javascript te schrijven
[ afbeelding ]
Ja, je hebt wel meer van dat soort vertalers, ook voor andere talen zoals Perl, Ruby en C# (zelfs PHP trouwens ). Verder heb je nog nieuwe talen die compilen naar Javascript, zoals Coffeescript of Dart.quote:Op maandag 2 februari 2015 11:39 schreef Monolith het volgende:
[..]
Het enige wat je nog kunt doen is gebruik maken van talen of Frameworks die compileren naar Javascript. Ik haalde eerder al GWT aan, waarbij je gewoon code in Java ontwikkelt (met alle voordelen van een fatsoenlijke taal) en die vervolgens gecompileerd wordt tot Javascript.
Mja, er zitten wel behoorlijke voordelen aan hoor. GWT is best geavanceerd, dus je kunt ook echt je Java code (die eigenlijk naar Javascript gecompileerd is) debuggen in je IDE. Wat een heel stuk prettiger werkt dan JS debuggen in browsers en aanverwante tooltjes.quote:Op maandag 2 februari 2015 11:47 schreef Tijn het volgende:
[..]
Ja, je hebt wel meer van dat soort vertalers, ook voor andere talen zoals Perl, Ruby en C#. Verder heb je nog nieuwe talen die compilen naar Javascript, zoals Coffeescript of Dart.
Maar persoonlijk schrijf ik liever de code die daadwerkelijk bij de client wordt uitgevoerd dan het via zo'n vertalingslaag te doen.
Mja, ik ben meer een hacker dan een enterprise figuur. Ik zie niet echt het voordeel van strong typing om eerlijk te zijnquote:Op maandag 2 februari 2015 11:51 schreef Monolith het volgende:
[..]
Mja, er zitten wel behoorlijke voordelen aan hoor. GWT is best geavanceerd, dus je kunt ook echt je Java code (die eigenlijk naar Javascript gecompileerd is) debuggen in je IDE. Wat een heel stuk prettiger werkt dan JS debuggen in browsers en aanverwante tooltjes.
Daarnaast heb ik ook nog wel Google Closure gebruikt. Dan schrijf je nog wel steeds javascript, maar heb je wel allerhande annotations om private / public access te checken, 'strong typing' te hanteren, enzovoort.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | var myObject = (function() { var privateVar = 'is een baas'; var privateMethod = function() { return 'super secret'; } return { publicVar: 'Tijn', publicMethod: function() { return this.publicVar + ' ' + privateVar; }, anotherMethod: function() { return 'The password is: ' + privateMethod(); } } }()); |
Een heel belangrijk voordeel van strong typing is dat je al die ellende met het optellen van strings en ints / doubles enzovoort door elkaar die hier net voorbij kwam niet hebt.quote:Op maandag 2 februari 2015 12:01 schreef Tijn het volgende:
[..]
Mja, ik ben meer een hacker dan een enterprise figuur. Ik zie niet echt het voordeel van strong typing om eerlijk te zijn
Ik weet dat het in Javascript kan hoor, maar het is omslachtig. Met @private / @public annotations is het een stuk eleganter. Belangrijker nog, vaak heb je door dat soort frameworks ook IDE ondersteuning (al dan niet via een plug-in) waarmee je terwijl je aan het developen bent al kunt zien of je ergens een fout maakt.quote:Private / public variabelen en methods kun je ook gewoon zo in Javascript maken, daar heb je niks speciaals voor nodig:
[ code verwijderd ]
Ik gebruik nu (voor kleinere projecten) af en toe TypeScript waarmee o.a. beter op typen kan worden gecontroleerd. Vooral de laatste versie 1.4 biedt veel nieuwe opties.quote:Op maandag 2 februari 2015 12:01 schreef Tijn het volgende:
[..]
Mja, ik ben meer een hacker dan een enterprise figuur. Ik zie niet echt het voordeel van strong typing om eerlijk te zijn
Private / public variabelen en methods kun je ook gewoon zo in Javascript maken, daar heb je niks speciaals voor nodig:
[ code verwijderd ]
1 2 3 4 5 6 | SELECT SQL_NO_CACHE `video_id` FROM `video_tag_link` WHERE `tag_id` IN ('2721','245') GROUP BY `video_id` HAVING COUNT(`video_id`) = 2 LIMIT 0, 20 |
1 2 3 4 5 6 7 8 9 10 | id = 1 select_type = SIMPLE table = video_tag_link type = range possible_keys = PRIMARY,video_id key = video_id key_len = 4 ref = NULL rows = 8903 exta = Using where; Using index; Using temporary; Using filesort |
Heb je een gecombineerde index op tag_id en video_id?quote:Op maandag 16 februari 2015 11:51 schreef Chandler het volgende:
Nee, maar ff geprobeerd en helaas, same result..
Mag ik vragen waarom je trouwens een group by video_id doet?quote:Op maandag 16 februari 2015 11:51 schreef Chandler het volgende:
Nee, maar ff geprobeerd en helaas, same result..
Een having clause zonder Group By wordt wat lastig. Zoals ik z'n query lees wil hij de ID's vinden van video's die beide tags uit de where clause hebben, vandaar de count=2.quote:Op maandag 16 februari 2015 13:24 schreef raptorix het volgende:
[..]
Mag ik vragen waarom je trouwens een group by video_id doet?
Doe je dit om er voor te zorgen dat je geen dubbele items krijgt?
Ja dat snap ikquote:Op maandag 16 februari 2015 14:32 schreef Monolith het volgende:
[..]
Een having clause zonder Group By wordt wat lastig. Zoals ik z'n query lees wil hij de ID's vinden van video's die beide tags uit de where clause hebben, vandaar de count=2.
Het zijn mij echter iets te veel fragmentjes informatie verspreid over deze reeks om nou echt een advies te kunnen geven over wat hij het best kan doen.
Misschien een hele domme tip, maar zou je eens voor de grap het IN statement voor een exacte match kunnen vervangen? "IN" kan soms nogal evil zijn. Ik ben geen MySql expert dus kan het mishebben.quote:Op maandag 16 februari 2015 11:51 schreef Chandler het volgende:
Nee, maar ff geprobeerd en helaas, same result..
Yup! en zelfs 1tje op video_id en tag_id.quote:Op maandag 16 februari 2015 12:27 schreef Aether het volgende:
Heb je een gecombineerde index op tag_id en video_id?
Preciesquote:Op maandag 16 februari 2015 14:32 schreef Monolith het volgende:
Een having clause zonder Group By wordt wat lastig. Zoals ik z'n query lees wil hij de ID's vinden van video's die beide tags uit de where clause hebben, vandaar de count=2.
Wat mis je dan aan informatie? mijn tabel opzet? video_id int, tag_id int en daarop een unique en 1 extra qua index voor tag_id/video_idquote:Het zijn mij echter iets te veel fragmentjes informatie verspreid over deze reeks om nou echt een advies te kunnen geven over wat hij het best kan doen.
Omdat ik er vanuit ging dat deze daar voor bedoeld waren.quote:Op maandag 16 februari 2015 14:46 schreef raptorix het volgende:
Ja dat snap ik
Bedoelde meer waarom hij daar een aggregate functie voor gebruikt, zijn over algemeen dure queries vandaar.
Klopt, heb nu even deze query getestquote:Op maandag 16 februari 2015 14:52 schreef raptorix het volgende:
Misschien een hele domme tip, maar zou je eens voor de grap het IN statement voor een exacte match kunnen vervangen? "IN" kan soms nogal evil zijn. Ik ben geen MySql expert dus kan het mishebben.
1 2 3 4 5 6 | explain SELECT SQL_NO_CACHE `video_id` FROM `video_tag_link` WHERE `tag_id` = 2721 OR `tag_id` = 245 GROUP BY `video_id` HAVING COUNT(`video_id`) = 2 LIMIT 0, 20 |
Nee ik heb geen index op video_id an sich... ga dat eens proberen..quote:Op maandag 16 februari 2015 16:26 schreef Monolith het volgende:
Als ik je goed begrijp heb je geen index op video_id an sich? Dat lijkt me dan sowieso een probleem aangezien je een group by op video_id hanteert.
Als je die wel hebt, dan kun je nog eens kijken of je met FORCE INDEX wel het gebruik kan forceren.
Het is een zeer variabel aantal, kan ook 1 zijn maar ook 8?!quote:Wat ik vooral bedoelde aan ontbrekende informatie is ook de use case. Je hebt hier nu bijvoorbeeld een voorbeeldje met twee tag_ids. Is dat altijd zo? Of is dat een variabel aantal?
Forum Opties | |
---|---|
Forumhop: | |
Hop naar: |