Devenir membre club
Connectez vous
Aide & règlement
Votre 1ère visite
Le règlement
Contacter les admins
Contacter le webmaster
Questions & réponses
Comment soutenir CodeS-SourceS
Comment faire un lien vers CodeS-SourceS
Autres questions
A propos & don
A propos du réseau
Les modérateurs
Remerciements
Faire un don
Le livre d'or
Tous les livres
Les dernières parutions
Les plus consultés
Les critiques
Le top des ventes
Le top favoris des membres
Recevoir des livres blancs
Tous les thèmes
Les derniers messages
Les nouveaux messages
Poser une question
Le Chat - IRC
Tous les tutoriels
Ajouter un tutoriel
Les tutoriels en vidéo
Les formations vidéos
Tous les codes
Ajouter un code
Filtrer par catégorie
Filtrer par date
Les plus récents
Les mis à jour
Les codes par jour
Filtrer par niveau
Niveau débutant
Niveau initié
Niveau expert
Filtrer par type
Les codes avec capture
Les codes avec zip
Les codes .Net
Filtrer par qualité
Les plus populaires
Les plus populaires du mois
Les plus téléchargés
Les mieux notés
Top par catégorie
Top des favoris
Filtrer par auteur
Tous les auteurs
Le top des membres
Les snippets
Déposer votre CV
Consulter les offres d'emploi ou de stage
Consulter les CVs
Déposer une offre d'emploi ou de stage
Modèles de CV et lettres
Trouver une convention collective
Les écoles d'informatique
Toutes les écoles
Ajouter une école
Les outils
Outils pour développeurs
Trouver des ressources
Base de données de CodeS-SourceS
Télécharger les meilleurs logiciels
Comparer les prix
Envoyer des ecards
Création de bannières
Annuaire de la prog
Tous les sites
Ajouter votre site
Le dico de la prog
Toutes les définitions
Ajouter une définition
Les évènements
Tous les évènements
Les évènements à venir
Ajouter un évènement
Téléchargements
CodeS-SourceS Toolbox
CodeS-SourceS Toolbar
Toolbar pour FireFox
Fonds d'écran
Les compil's
Nos partenaires
Magazine Programmez
Frontier.fr
Xiti
ProgOnline
Winwise
Editions Eyrolles
Toute la liste
Les RFC
CS
VB, VB.NET
ASP.NET,ASP
C, C++
ColdFusion
PHP
Javascript
Delphi
Flash
Java
Graphisme
Irc
Assembleur
C#
Mobilité
SQL
Foxpro
Python
Regex
Flex
Windev
Ce site au démarrage
begin process at 2012 02 11 13:07:20
Accueil
Codes
Tutoriels
Forum
Livres
Emploi
Services
Connexion
Trouver un code source :
dans
Tout le site
Codes
Tutoriels
Forum
Blogs
Livres
RFC
Icones
News .NET
Boutique
[ Dernières recherches ]
Veuillez saisir votre recherche... Ex: smtp, lire un fichier, rs232
Options de recherche :
Tous les codes
Tous les codes en .Net
Tous les codes sauf .Net
Langages disponibles :
Tous les langages
ASP / ASP.NET
Assembleur
C / C++ / C++.NET
C# / C#.NET
ColdFusion
Delphi
Flash
Flex, Air, ActionScript
Foxpro
Graphisme
IRC
JAVA / J2EE
Javascript / Ajax / DHTML
PDA / PocketPC
PHP
Python
Regex, Regular Expression, Expression régulière
SQL
Visual Basic, VB6, VB.NET, VB 2005, VB
200 commentaire(s) de Kimjoa
sur des sources sur tout
CodeS-SourceS
Déposé sur
Timer : settimeout & setinterval améliorés
Salut jdmcreator!
Ton code me plais déjà mieux ;).
L'idée de renvoyer un objet lors de la création d'un timex est plutot bien vue.
En faite quand je t'ai dit de préférer une approche POO, je pensais plus à quelque chose du genre :
var monGroupeDeTimer = new Timers();
var monTimer = monGroupeDeTimer.createTimeout(...);
var monInterval = monGroupeDeTimer.createInterval(...);
...
monGroupeDeTimer.clearAll();
Avec aussi, une méthode de classe clearAll qui fait la même chose mais pour tout les timer , et non un groupe instancié.
Mais bon c'est un peux chipotter, d'autant plus qu'il aurait été nécessaire de répéter certaines autre méthodes d'instance, pour permettre de ne pas être obliger l'instanciation d'un groupe.
Je comprends presque tout ton code sauf une partie :
if (!isNaN(parseInt(k))) {id = k;var k = this.key[k];if (!k) {return false}}
k est sencé etre un tableau .... pourquoi le transformer en nombre et tester isNaN ?
Sinon, du coté du eval.
f(function () {eval.call(cntx, fn);}, time);
Ca me semble une érreur.
eval doit toujours être appellé au niveau global. Le contexte de toute facon sera évalué en même temps.
donc eval.call(window, fn)
J'ai pas d'autre remarque sinon. Enfin si peux être :).
C'est un code compliqué quand même , dans le sens ou c'est une succession de lambda comme on dit ...
Des fonctions passé en arguments qui retourne des fonctions etc... Il est pas à la porté du premier javascripteur !
C'est un beau tour de force de ce que permet javascript , son coté dynamique et fonctionnelle
Tchuss!
Posté le :
06/01/2012 16:33:39
Déposé sur
Timer : settimeout & setinterval améliorés
ps : "Et pour le setImmediate, ..."
Il fournit des testes dans sa source, oups !
Posté le :
03/01/2012 15:08:44
Déposé sur
Timer : settimeout & setinterval améliorés
@jdmcreator
"Dans quel cas, par exemple ?"
Dans un context POO. Si j'ai un objet d'une classe Effet , j'aimerais bien exécuter le script avec le this adéquat. Même on peux toujours passer une référence en arguments.
"Et pour le setImmediate, regarde ceci https://github.com/NobleJS/setImmediate et dis-moi ce que tu en penses !"
Ca m'a l'air très bien codé, et pour être sincère je comprends pas tout du code , même en mettant documenté. Il semble utilisé des techniques bien spécifique à chaque navigateur. Une batterie de teste devrait être nécessaire pour être sur à 100% de la compatibilité de cette source, hors, il n'en donne aucun. C'est dommage, perso, je m'y risquerait pas.
"@Kimjoa : Après rapide réflexion, si je cessais de modifier la fonction native, on perdrait un aspect important de la source ...."
Je pense que tu peux faire les deux. Redéfinir les setTimex et clearTimex, et une méthode de classe clearAll, pour tout effacer, en plus d'une méthode de prototype clearAll. Mais bon , perso, je redéfinirai pas les fonctions native ...
-30 degrés ... faut si préparé ! bon courage lol !
Posté le :
03/01/2012 15:00:29
Déposé sur
Timer : settimeout & setinterval améliorés
@jdmcreator
Bonne année à toi aussi ;)
Alors, je enfin compris ton code !!
Il est assez complexe en effet. J'ai quelques petite remarque à faire tout de même.
-Ré-implémenter des fonctions native est une mauvaise pratique. Même si elle ne perturbe pas dans ton cas leurs fonctionnement normale. Une classe , aurait été meilleur une option ?
-Une vision POO aurait été préférable je pense. Notamment en ce qui concerne la fonction clearAll. En opérant ainsi, seule un groupe de timer bien de ciblé aurait été effacé. Cela aurait pu apporter plus de souplesse...
-la fonction execTimer devrait avoir 2 comportements distinct.Dans ton exemple, l'intervalle n'est pas repoussé une fois execTimer est invoqué. C'est pas forcement le comportement que l'utilisateur voudrait. Un troisième arguments serait nécessaire non?
-choisir par défaut window comme contexte d'exécution n'est pas forcement ce que l'utilisateur souhaiterait. Le 3 ème arguments devrait être le contexte. Bind qui permet de faire ça, et encore une fois, cette fonction est normalisé, donc à utilisé. Une implémentation de mozilla ce trouve ici -> https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Function/bind
-native est un mot réservé , mieux vaut l'éviter.
Sinon "C'était à utiliser à intervalles irréguliers (un objet ralentissant sa course). Il était impossible d'utiliser un setInterval."
Je vois pas pourquoi. Une variable sur la vitesse de l'effet aurait pu suffire
"Oui, cela semble assez complexe :/ Il faudrait me donner une utilisation pratique pour que je puisse comprendre la situation..."
Alors pour ce qu'il s'agit d'exécution en parallèle, imagine qu'il faille parser dans ton application en gros fichier xml... Le temps que l'interpréteur javascript fasse son travaille, toute l'interface utilisateur comportent du js est gelé. D'ou la nécessité d'essayer d'alterner les deux traitements, et setImmediate permet de faire cette alternance plus aisément que setTimeout pour le moteur js. Il existe aussi les WebWorker pour faire des threads, mais ceux ci sont assez limité, n'ayant pas d'accès a l'objet global window, et ne fonctionnant que via des callback et du JSON.
"Finalement, j'habite au Canada"
J'ai froid pour toi lol ! Ici vers paris il fait 15 degrés , et ça dure depuis tout l'automne du jamais vue !!
A+
Posté le :
02/01/2012 17:46:13
Déposé sur
Timer : settimeout & setinterval améliorés
"Comprends-tu plus l'intérêt de ce que je propose ?"
Toujours pas :(
"On plaçait tous les setTimeout de l'effet dans l'objet"
Les timers utilisent beaucoup de ressources, il faut en limiter l'usage.
Pour de l'animation, un seul est suffisant, pour tout les objets et effets. De plus un seule intervalle permet une bien meilleur synchronisation. J'ai déjà rencontré ce problème et utilisé partiellement cette technique ici http://www.javascriptfr.com/codes/DYNAMIQUE-JS-FAIRE-JOLIE-ANIMATION_47712.aspx
"Je ne comprends pas vraiment ce que tu veux dire par là, mais "bind" n'est pas compatible avec les vieux navigateurs."
Et bien, bind permet d'assigner des paramètres et un contexte d'exécution, à une fonction, avant sont exécution. Puisque c'est standardisé, son extension dans le prototype de Function ne pause plus de problème ...
"C'est intéressant. Je vais m'informer. Je sais qu'il existe setImmediate() dans IE10, je ne sais pas si cela a un lien avec ce que tu dis, mais je vais faire des recherches."
En faite setTimeout devrait pouvoir se suffire à lui même pour simuler de l'exécution en parallèle. Enfin c'est un sujet pas mal complexe ...Par exemple un setTimeout(fn, 0); va exécute la fonction une fois que le moteur js aura un peux de temps. En multipliant les appels de setTimeout à 0 milliseconde , on peux simuler du parallélisme ... Enfin je suis pas expert sur le sujet ;)
setImmediate() permet de contourner un problème lié à la fréquence du traitement d'opération différé. Si j'ai bien comprit la fréquence en HTML4 est de 1/64 de seconde. C'est à dire que l'intervalle minimum est de 1/64 de seconde pour les fonctions setTimex. setImmediate permet en faite d'exécuté un , ou plusieurs script différé des que le moteur le moteur js a finit ses traitements, et donc de ne plus d'attendre un minimum de 1/64 de seconde ...
J'ai beau relire le code , je voit pas ! Ca à l'air intéressant pourtant , mais sans commentaires, c'est un peu l'angoisse lol
Posté le :
31/12/2011 01:23:59
Déposé sur
Timer : settimeout & setinterval améliorés
j'ai rien comprit. Il s'agit de faire quoi au final?
L'évaluation d'une chaîne caractère comme arguments d'un intervalle est depuis longtemps déprécié.
Le contexte d'exécution d'une fonction passé en arguments à été standardisé via la fonction bind de l'objet Function (ecmascript 5). bind permet aussi de faire du "curring" , permettant d'assigner les arguments à passer à l'appel de la fonction passé en paramètre..
Il aurait été plus intéressant , selon moi, d'essayer d'introduire une notion de thread, pour des exécutions lourdes pouvant freezer l'ui. Une alternative aux webworker ....
Enfin une explication plus claire serait la bien venue, le code étant assez indigeste , même pour un expert !!! lol
ps : eval isn't evil !! ca permet de faire beaucoup de chose, de la compilation à la volé , hmmmm même pour du code interprété ;) .... c'est la mauvaise connaissance des bases du javascript qui on fait cette si mauvaise réputation à eval .
Posté le :
30/12/2011 05:05:17
Déposé sur
20 astuces pour programmeurs javascript avancés
Salut 007Julien! merci pour ces précisions. Tu aurais pu nous fournir une fonction toute propre ;).
Enfin bon je suis sur que jdmcreator va s'en occuper et mettre à jours ces astuces!
a+
Posté le :
16/03/2011 14:22:58
Déposé sur
20 astuces pour programmeurs javascript avancés
Salut jdmcreator, il y a pas mal de chose que je comprends pas.
Déjà comme dit plus haut la méthode eval ne fait rien d'autre que un block try{}catch(){}.
Je vois pas l'utilité de #5 par rapport à un getElementsByTagName('*')
Le #11 aussi... Les expressions régulière c'est quand même super pratique, pourquoi vouloir s'en passer?
La fonction GET est partiellement fausse. Enfin en php si il y a des paramètre en doublon, alors ça devient un tableau. De plus il faut utiliser la fonction decodeURIComponent.J'ai amélioré une fonction du web, voilà ce que ça donne
(function(){
var reg = /[?&]+([^=&]+)=?([^&]*)/gi,
href = window.location.href;
getUrlVars = function(){
var map = {};
href.replace(reg, function(match, key, value) {
key = decodeURIComponent(key);
value = value ? decodeURIComponent(value) : true;
map[key] ? map[key] instanceof Array ? map[key].push(value) : map[key] = [map[key], value] : map[key] = value;
});
return map;
}
getUrlVar = function(param){
var reg = new RegExp("&"+param+"=([^&]*)", "gi"),
res;
href.replace(reg, function(match, value) {
value = value ? decodeURIComponent(value) : true;
res ? res instanceof Array ? res.push(value) : res = [res, value] : res = value;
});
return res;
}
})();
Sinon il y a pas mal de truc intéressante, notamment l'exploitation du DOM pour parser des string .... c'est plutôt ingénieux !
ps : indente ton code ! ça pique les yeux sans ;)
Posté le :
13/03/2011 23:15:34
Déposé sur
Requête de type sql sur un objet javascrip complexe
Sympas !!
J'ai regardé la source, ... et bien t'aurais pu mettre expert ;)
Sinon c'est bien codé, même si je comprends pas grand chose vue le peux d'explication.... mais je suis pareil :)
Y'a quand même un truc que j'ai remarqué, c'est que tu devrais encapsuler tes variables et méthodes privée, dans une fonction anonyme.
Sinon coté fonctionnalité ... Ça serait cool de pouvoir mettre dans la clause where des select, un système de jointure aussi, mais en passant par le prototype de Array, ça risque d'être compliqué.
Bon sinon, ça permet de faire déjà pas mal de truc !!
Ça vaux bien une bonne note ;)
Sinon j'ai fait une source ce rapprochant un peux de la tienne tu devrait y jeter un oeil... a++
Posté le :
01/02/2011 14:39:05
Déposé sur
Menu animer horizontale ou vertical , accèssible sans js (sau...
salut benja13280 merci pour t'as notes ;)
en faite c'est vrai que ça reste lourd... je pense savoir comment optimiser tout ça , c'est juste que j'ai pas trop le temps en ce moment, ... je pense qu'il faut jouer sur la délégation d'évènement ...
Je vais essayer de trouver le temps quand même :-)
bye !!
Posté le :
10/01/2011 02:28:01
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Nos sponsors
Derniers Blogs
[TECHDAYS 2012] SESSION WEBMATRIX 2 : LE COUTEAU SUISSE GRATUIT POUR VOS DéVELOPPEMENTS WEB - SLIDES
[TECHDAYS 2012] SESSION WEBMATRIX 2 : LE COUTEAU SUISSE GRATUIT POUR VOS DéVELOPPEMENTS WEB - SLIDES
par gpommier
Suite à la session que j'ai présenté sur WebMatrix 2, vous pouvez trouver les slides ici, ainsi que les démos en packages nuget : démos1 et démos2 J'en profite pour remercier chaleureusement tous ceux qui sont venus très nombreux à cette sess...
Cliquez pour lire la suite de l'article
par gpommier
[SHAREPOINT] LES SESSIONS TECHDAYS 2012.
[SHAREPOINT] LES SESSIONS TECHDAYS 2012.
par Patrick Guimonet
Voici donc pour ceux qui n'ont pas pu venir, ou ceux qui n'ont pas pu toutes les suivre la liste des sessions SharePoint aux TechDays 2012, que je mettrais à jour dès que les liens des vidéo seront disponibles. Ou ici : http...
Cliquez pour lire la suite de l'article
par Patrick Guimonet
TECHDAYS PARIS 2012 : SESSION PLEINIèRE JOUR 3
TECHDAYS PARIS 2012 : SESSION PLEINIèRE JOUR 3
par ROMELARD Fabrice
Speaker: Bernard Ourghanlian Cette session est comme chaque jour transmise en live par BrainSonic, et j'ai donc suivi cette troisième pleinière par ce moyen sur mon iPad . Elle est dédiée comme chaque année à la mise en perspective de l'é...
Cliquez pour lire la suite de l'article
par ROMELARD Fabrice
MISHRA READER : UN LECTEUR RSS TRèS ZUNE STYLE EN OPEN SOURCE !
MISHRA READER : UN LECTEUR RSS TRèS ZUNE STYLE EN OPEN SOURCE !
par Vko
Hier durant une session dédiée aux Techdays 2012, j'ai eu le plaisir d'annoncer la sortie de la Béta 2 de Mishra Reader. C'est quoi ? Pour les utilisateurs, c'est une vraie expérience de lecture de flux RSS sur Windows. Rien à voir avec les produit...
Cliquez pour lire la suite de l'article
par Vko
[FRAMEWORK 4] LES TASKS ET LE THREAD UI
[FRAMEWORK 4] LES TASKS ET LE THREAD UI
par fathi
Je viens de passer quelques temps au TechDay's et j'ai pu voir pas mal de session intéressante. Par contre une chose m'a un peu étonné lors de certaines de ces sessions qui abordaient les améliorations du framework .NET (donc le 4.5) : en gros, bea...
Cliquez pour lire la suite de l'article
par fathi
La suite
RSS
Côté IT
Utiliser Office 365 pour un projet d?équipe - PART 2
Utiliser Office 365 pour un projet d?équipe - PART 1
SharePoint 2007 : Installation du Service Pack 3 de MOSS
SharePoint 2007 : Installation du Service Pack 3 de WSS V3
Installation de SQL Server DENALI CTP3
Mise à jour de Windows 2003 R2 vers Windows 2008 R2
Upgrade de SQL Server 2005 vers SQL Server 2008 R2
La suite
RSS
Offres d'emploi
Recherche Recherche développeur web ASP et ASP.Net
Recherche Analyste Programmeur Adélia
Recherche Développeur eZ Publish confirmé
Recherche AP (H/F) ACCESS EXCEL VBA
Recherche SUPPORT INFORMATIQUE / DEVELOPPEUR
Recherche Developpeur web
Recherche développeur Web
Déposer une offre
La suite
RSS
Formations Video
Coffret : Ateliers sur la mode
Atelier sur la mode : Motifs et matières
Atelier sur la mode : La planche tendance
Atelier sur la mode : De retour de pige et repérage
Corel Painter 12 : Les fondamentaux
Coffret : Microsoft Office 2010 de A à Z
De Microsoft Office 2003 à 2007 et 2010
La suite
RSS
Appels d'offres
Passerelle Pericles sur site Joomla 17
Budget :
499€
Infogerance Serveur Debian Linux
Budget :
2 400€
Developpeur applications iphone - ipad - android
Budget :
800€
La suite
RSS
Logiciels
Academy System (17.2.1.0)
ACADEMY SYSTEM (17.2.1.0)
Logiciel de gestion des établissements. - élèves/étudiants (inscription, dossier, absence...) -...
Cliquez pour télécharger Academy System
Easy-Planning (1.0.0.1)
EASY-PLANNING (1.0.0.1)
Basé sur les mêmes principes que MyPlanning, Easy-Planning permet de créer des plannings sous la ...
Cliquez pour télécharger Easy-Planning
COLLECTOR PLUS (3.00B)
COLLECTOR PLUS (3.00B)
COLLECTOR PLUS version 3.00B est un logiciel utilisant une base de données alimentée par : - L...
Cliquez pour télécharger COLLECTOR PLUS
PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V7.4)
PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V7.4)
PONAMEDIA TV DEVIENS HELLLOOO FLASH LA TV SUR VOTRE ORDINATEUR. Toute une plateforme Multi...
Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO
LettresFaciles 2011 (8.0.0.1)
LETTRESFACILES 2011 (8.0.0.1)
LettresFaciles est un logiciel facilitant la création et la rédaction de lettres types. Son inte...
Cliquez pour télécharger LettresFaciles 2011
+ de logiciels à télécharger
Vidéos drôles
Halloween Party
Terry Tate Office Linebacker Superbowl 2003
Jeu vidéo instructif
C'est un véritable vol !
Banana Song
Comment attraper la grippe A
Parodie Pub Window 7
La suite
RSS
Sondage...
Votre navigateur n'utilise pas le javascript, pour
voter aux sondages de ce site, cliquez ici
Statistiques
1 873 551
membres
73
nouveaux aujourd'hui
16 151
membres club
Comparez les prix
iPod touch 3ème génération Noir (32 Go)
Entre 289€ et 289€
Visiter le guide achat
CalendriCode
Février
2012
L
M
M
J
V
S
D
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
Consulter la suite du CalendriCode
Photothèque
Visiter la photothèque
CS Tool Box