J'ai eu une fissure à certains des problèmes sur http://projecteuler.net/ avec JavaScript. J'utilise une simple page HTML et exécutant mon code dans les balises de script afin que je puisse enregistrer mes résultats dans la console des navigateurs. Lors de l'expérimentation avec des boucles, je provoque parfois un crash du navigateur. p>
Y a-t-il un meilleur environnement pour moi de faire ce genre de développement? P>
6 Réponses :
Il n'y a rien que vous puissiez faire pour garder le navigateur de se bloquer autre que des bugs fixes qui provoquent le navigateur. P>
Vous pouvez au moins atténuer l'impact du crash en utilisant un navigateur comme Chrome qui séparent généralement des actes de l'onglet des autres (vous ne perdez donc votre page) ou simplement installer un navigateur séparé spécifiquement pour les tests. < / p>
En termes de suivi des données qui auraient pu être allés au journal, vous pouvez utiliser un plug-in comme Firebug qui possède un débogueur intégré afin que vous puissiez mettre en pause l'exécution de script à travers et examiner vos variables, probablement avant tout accident. se produit. p>
Si vous souhaitez simplement exécuter des programmes JavaScript en tant que tels, pourquoi n'utilisez-vous pas quelque chose comme node.js ou même rhinocéros? De cette façon, vous pouvez facilement enregistrer la sortie sans le perdre s'il entrave des «problèmes». p>
Je peux penser à deux possibilités prêtes: p>
1) Utilisez un débogueur qui a des points d'arrêt. Firebug est plutôt sympa. Safari et Chrome ont également des outils de débogage intégrés. P>
2) Vous pouvez déplacer votre test du navigateur en utilisant Mozilla Rhino et env-JS (Voir http://groups.google.com/group/envjs et http://github.com/thatcher/env-js ) p>
Tous les navigateurs modernes (sauf opéra) doivent interrompre votre script s'il fonctionne pendant plus de 5 à 10 secondes ( source ). p>
in firefox, vous pouvez même Baisser ce seuil , si 10 secondes signifient une punition trop grande . Notez également que ce mécanisme frappe même lorsque vous exécutez le code de la console Firebug: P>
Scops Script sur Firefox http://img819.imageshack.us/img819/9655 /Infloopsp.jpg P>
Je pense que cette fonctionnalité seule devrait fournir un environnement assez sûr pour ces expériences de Loopy :) P>
Lorsque je reçois la capture d'écran ci-dessus et que j'appuie, "Arrêtez le script", Firefox peut montrer comme "ne répondant pas" et gèle. Pour vous citer "Tous les navigateurs modernes (à l'exception de l'opéra) devraient interrompre votre script" - "devrait" est important ici - si elles b> ont fait B> alors il n'y aurait aucune raison pour que je pose cette question. Peut-être que cela est dû à mon environnement (addons, système d'exploitation, etc.) ou les intracacies de mes expériences (moins évidentes pour le navigateur / console que tandis que (vrai) code>).
@ Yaya3: Oui, c'est pourquoi j'ai utilisé "devrait", comme je l'ai deviné, cela ne se produit pas pour vous. Par défaut, le mécanisme doit être lancé à chaque fois que le script fonctionne pendant 10 secondes. Il n'est pas nécessaire d'avoir une boucle infinie. JavaScript à l'intérieur des navigateurs n'a jamais été destiné à un traitement à long terme, car il s'exécute dans le fil d'interface utilisateur unique et bloque complètement les mises à jour de l'UI ... Vous voudrez peut-être vérifier le À propos de: config code>
pour voir si cela est désactivé dans votre Firefox. Sinon, vous voudrez peut-être utiliser un autre navigateur pour les expériences de projet Euler.
Ah, mes excuses, j'ai mal compris votre réponse. Il est intéressant de regarder ces variables de navigateur. J'ai trouvé la réduction du DOM.MAX_Script_Run_Time code> a accéléré mes tests dans FF - Cheers.
Vous voulez un "crash mon navigateur magique sans écraser mon navigateur" test? A quel point ce serait cool? Si seulement tout le monde ait eu un tel test, alors peut-être que les navigateurs n'arriveraient pas.
Pensez que votre première étape pourrait être de ne pas écrire des boucles infinies!