abonnement Unibet Coolblue
pi_149291567
quote:
0s.gif 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 ^O^

[ afbeelding ]
Javascript is inderdaad zo ongeveer ook de enige taal die bijna net zo beroerd in elkaar steekt als PHP.
Dit blijft toch ook altijd wel een aardige opsomming. :P
Volkorenbrood: "Geen quotes meer in jullie sigs gaarne."
  maandag 2 februari 2015 @ 11:22:19 #277
12221 Tijn
Powered by MS Paint
pi_149291600
Het voordeel van Javascript is dat er een subset van de taal is die wel goed in elkaar steekt. Als je je beperkt tot alleen dat deel, valt het allemaal reuze mee.

Met PHP is het niet zo'n feest, dat is gewoon altijd een puinhoop.
pi_149291757
Je hebt ook ongeveer 0,0 serieuze alternatieven voor Javascript.
Volkorenbrood: "Geen quotes meer in jullie sigs gaarne."
  maandag 2 februari 2015 @ 11:33:49 #279
12221 Tijn
Powered by MS Paint
pi_149291854
quote:
0s.gif Op maandag 2 februari 2015 11:29 schreef Monolith het volgende:
Je hebt ook ongeveer 0,0 serieuze alternatieven voor Javascript.
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.
pi_149292002
quote:
3s.gif 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.
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.
Volkorenbrood: "Geen quotes meer in jullie sigs gaarne."
  maandag 2 februari 2015 @ 11:42:32 #281
63192 ursel
"Het Is Hier Fantastisch!
pi_149292084
quote:
0s.gif 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 ^O^

[ afbeelding ]
Hey, zit jij ook al op phpnl slack.? :D
Kwam hem daar ook al tegen
  maandag 2 februari 2015 @ 11:47:16 #282
12221 Tijn
Powered by MS Paint
pi_149292212
quote:
0s.gif 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.
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.

Maar persoonlijk schrijf ik liever de code die daadwerkelijk bij de client wordt uitgevoerd dan het via zo'n vertalingslaag te doen.
pi_149292363
quote:
2s.gif 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, 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.
Volkorenbrood: "Geen quotes meer in jullie sigs gaarne."
  maandag 2 februari 2015 @ 12:01:55 #284
12221 Tijn
Powered by MS Paint
pi_149292693
quote:
0s.gif 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.
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:

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();
        }
    }
}());
pi_149292978
quote:
10s.gif 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 :+
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:
Private / public variabelen en methods kun je ook gewoon zo in Javascript maken, daar heb je niks speciaals voor nodig:
[ code verwijderd ]

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.
Volkorenbrood: "Geen quotes meer in jullie sigs gaarne."
pi_149293625
quote:
10s.gif 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 ]

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.
When the student is ready, the teacher will appear.
When the student is truly ready, the teacher will disappear.
pi_149629434
Korte update over mijn index probleem (pagina 5).

Oplossing is kappen met joinen...
Heb nu meerdere testen gedraaid zonder dikke joins.
Ieder tabel een query..

Grappig is dat dit vele malen sneller is...

Van 80secs naar 0.5!!
Just say hi!
pi_149629550
Mijn ervaring is dat je vanuit een grote tabel prima kunt joinen naar een kleine tabel, maar niet andersom.

SELECT * FROM hugetable LEFT JOIN smalltable gaat prima, SELECT * FROM smalltable LEFT JOIN hugetable, beter niet. Zeker niet als je meerdere joins moet doen.
pi_149632527
Nee precies, en aangezien ik meerdere grote tabellen join (2gb + 1gb + 3gb :D) en omdat de servers die ik kan gebruiken geen fulltext zoek mogelijkheden/uitbreidingen hebben en minder dan 8gb geheugen (te gebruiken) is dit dan toch wel de beste keuze...

Wat ik nu ook zoek, het zit allemaal ruim onder de 1 seconde... (zonder te cachen)..
Just say hi!
pi_149720265
Toevoeging :D

Hoe kom ik af van deze filesort? indexes staan goed... lijkt me... maar mogelijk zit ik fout..

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

Explain geeft het volgende
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

Iemand een idee?
Just say hi!
  maandag 16 februari 2015 @ 11:16:03 #291
12221 Tijn
Powered by MS Paint
pi_149721142
Heb je al geprobeerd om "ORDER BY NULL" toe te voegen?
pi_149721850
Nee, maar ff geprobeerd en helaas, same result..
Just say hi!
pi_149722603
quote:
0s.gif Op maandag 16 februari 2015 11:51 schreef Chandler het volgende:
Nee, maar ff geprobeerd en helaas, same result..
Heb je een gecombineerde index op tag_id en video_id?
When the student is ready, the teacher will appear.
When the student is truly ready, the teacher will disappear.
pi_149723973
quote:
0s.gif 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?
Doe je dit om er voor te zorgen dat je geen dubbele items krijgt?
🕰️₿🕰️₿🕰️₿🕰️₿🕰️₿🕰️ TikTok next Block
pi_149726256
quote:
0s.gif 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?
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. :P
Volkorenbrood: "Geen quotes meer in jullie sigs gaarne."
pi_149726660
quote:
0s.gif 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. :P
Ja dat snap ik ;)
Bedoelde meer waarom hij daar een aggregate functie voor gebruikt, zijn over algemeen dure queries vandaar.
🕰️₿🕰️₿🕰️₿🕰️₿🕰️₿🕰️ TikTok next Block
pi_149726854
quote:
0s.gif Op maandag 16 februari 2015 11:51 schreef Chandler het volgende:
Nee, maar ff geprobeerd en helaas, same result..
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.
🕰️₿🕰️₿🕰️₿🕰️₿🕰️₿🕰️ TikTok next Block
pi_149729173
quote:
7s.gif Op maandag 16 februari 2015 12:27 schreef Aether het volgende:
Heb je een gecombineerde index op tag_id en video_id?
Yup! :) en zelfs 1tje op video_id en tag_id.
quote:
0s.gif 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.
Precies
quote:
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. :P
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_id
quote:
0s.gif 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.
Omdat ik er vanuit ging dat deze daar voor bedoeld waren.

quote:
0s.gif 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.
Klopt, heb nu even deze query getest
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
en daar heb ik ook last van een filesort... wil dat eigenlijk voorkomen ;) en dat zou moeten kunnen...
Just say hi!
pi_149729494
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.

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?
Volkorenbrood: "Geen quotes meer in jullie sigs gaarne."
pi_149729899
quote:
0s.gif 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.
Nee ik heb geen index op video_id an sich... ga dat eens proberen..
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?
Het is een zeer variabel aantal, kan ook 1 zijn maar ook 8?! :D

-edit-
Wordt zelfs erger dan :P
Using where; Using index; Using temporary; Using filesort

[ Bericht 8% gewijzigd door Chandler op 16-02-2015 16:43:07 ]
Just say hi!
abonnement Unibet Coolblue
Forum Opties
Forumhop:
Hop naar:
(afkorting, bv 'KLB')