Découverte du moteur de rendu du projet SpartanMicrosoft
Dans cette session, nous découvrirons l'ensemble des nouveautés du moteur de rendu du dernier navigateur de Microsoft. Vous l'avez peut-être déjà découvert lors de l'évènement du 21 janvier. Venez cette fois-ci découvrir ce qu'il y a sous le capot du point de vue du développeur. Ce sera pour nous l'occasion de vous parler des dernières technologies HTML5 comme ECMAScript 6, des dernières avancées côté WebGL ou bien encore du support de Web Audio. Pour finir, vous verrez également les progrès que nous avons effectué du côté la barre de développement.
Symfony2 - Un Framework PHP 5 PerformantHugo Hamon
L’arrivée de PHP 5.3 en milieu d’année 2009 a bouleversé la manière de développer des applications web. En effet, cette nouvelle version a apporté de nouveaux outils au langage tels que les espaces de nommage qui favorisent la réutilisabilité du code lorsqu’ils sont employés à bon escient. Les nouveaux frameworks de développement rapide ont aussi suivi le mouvement et reposent sur la base de PHP 5.3. C’est le cas de Symfony2 dont la version stable est prévue prochainement.
Cette présentation offre un tour d’horizon de la nouvelle architecture du framework qui s’articule autour de “bundles”, de librairies externes et de nombreux composants indépendants tels que le conteneur d’injection de dépendances. Nous dresserons un panorama des principales fonctionnalités offertes par le framework telles que la couche d’ORM Doctrine 2, le moteur de templating Twig et la gestion des formulaires. Nous nous intéresserons également à la gestion du cache HTTP, à la couche de sécurité ainsi qu’aux outils de débogage destinés à améliorer la productivité du développeur et la maintenance de l’application.
Procédures CLR pour SQL Server : avantages et inconvénientsDenis Voituron
Depuis toujours nous souhaitons développer au mieux des procédures stockées dans SQL Server, afin de clarifier ou d’optimiser nos développements.
Depuis 2005, les procédures stockées et les triggers peuvent être développés en .NET, grâce à votre langage favoris : C#, VB.NET, etc. Nous pouvons ainsi tirer parti de toute la puissance de ce Framework : fonctions mathématiques, cryptages, gestion de chaine de caractères, manipulation des dates, etc.
Lors de cette session, nous expliquerons comment créer des procédures, des triggers et des fonctions d’agrégations dans ce mode CLR. Nous passerons en revue les trucs et astuces utiles pour optimiser nos requêtes. Nous verrons quels sont les avantages de concevoir des procédures SQL en .NET ; mais également quels en sont les inconvénients. Finalement, nous verrons comment déployer facilement les bibliothèques .NET créées, dans SQL Server : quels outils utiliser.
Ce deuxième cours concerne les tuples, séquences non modifiables d'éléments. On peut les étendre en tuples nommés en ajoutant un nom à chacune des entrées du tuple, appelées alors champs. Enfin, on peut aller plus loin et définir des objets en associant des fonctions à des données. Cette seconde partie introduit à la programmation orientée objet.
Une révision des principaux concepts du langage JavaScript : variables, fonctions, types, fermetures (closures), objets et prototypes, format JSON. De nombreux exemples téléchargeables sur GitHub.
Découverte du moteur de rendu du projet SpartanMicrosoft
Dans cette session, nous découvrirons l'ensemble des nouveautés du moteur de rendu du dernier navigateur de Microsoft. Vous l'avez peut-être déjà découvert lors de l'évènement du 21 janvier. Venez cette fois-ci découvrir ce qu'il y a sous le capot du point de vue du développeur. Ce sera pour nous l'occasion de vous parler des dernières technologies HTML5 comme ECMAScript 6, des dernières avancées côté WebGL ou bien encore du support de Web Audio. Pour finir, vous verrez également les progrès que nous avons effectué du côté la barre de développement.
Symfony2 - Un Framework PHP 5 PerformantHugo Hamon
L’arrivée de PHP 5.3 en milieu d’année 2009 a bouleversé la manière de développer des applications web. En effet, cette nouvelle version a apporté de nouveaux outils au langage tels que les espaces de nommage qui favorisent la réutilisabilité du code lorsqu’ils sont employés à bon escient. Les nouveaux frameworks de développement rapide ont aussi suivi le mouvement et reposent sur la base de PHP 5.3. C’est le cas de Symfony2 dont la version stable est prévue prochainement.
Cette présentation offre un tour d’horizon de la nouvelle architecture du framework qui s’articule autour de “bundles”, de librairies externes et de nombreux composants indépendants tels que le conteneur d’injection de dépendances. Nous dresserons un panorama des principales fonctionnalités offertes par le framework telles que la couche d’ORM Doctrine 2, le moteur de templating Twig et la gestion des formulaires. Nous nous intéresserons également à la gestion du cache HTTP, à la couche de sécurité ainsi qu’aux outils de débogage destinés à améliorer la productivité du développeur et la maintenance de l’application.
Procédures CLR pour SQL Server : avantages et inconvénientsDenis Voituron
Depuis toujours nous souhaitons développer au mieux des procédures stockées dans SQL Server, afin de clarifier ou d’optimiser nos développements.
Depuis 2005, les procédures stockées et les triggers peuvent être développés en .NET, grâce à votre langage favoris : C#, VB.NET, etc. Nous pouvons ainsi tirer parti de toute la puissance de ce Framework : fonctions mathématiques, cryptages, gestion de chaine de caractères, manipulation des dates, etc.
Lors de cette session, nous expliquerons comment créer des procédures, des triggers et des fonctions d’agrégations dans ce mode CLR. Nous passerons en revue les trucs et astuces utiles pour optimiser nos requêtes. Nous verrons quels sont les avantages de concevoir des procédures SQL en .NET ; mais également quels en sont les inconvénients. Finalement, nous verrons comment déployer facilement les bibliothèques .NET créées, dans SQL Server : quels outils utiliser.
Ce deuxième cours concerne les tuples, séquences non modifiables d'éléments. On peut les étendre en tuples nommés en ajoutant un nom à chacune des entrées du tuple, appelées alors champs. Enfin, on peut aller plus loin et définir des objets en associant des fonctions à des données. Cette seconde partie introduit à la programmation orientée objet.
Une révision des principaux concepts du langage JavaScript : variables, fonctions, types, fermetures (closures), objets et prototypes, format JSON. De nombreux exemples téléchargeables sur GitHub.
Ce premier cours présente les notions d'objet et de classe, et le lien entre elles. Il présente aussi le premier concept clé de la programmation orientée objet, à savoir l'encapsulation des données. Les exemples sont fournis dans plusieurs langages (Python, C#, Java, C++ et PHP).
Objectifs généraux :
Savoir effectuer une requête HTTP synchrone ou asynchrone
Savoir effectuer des requêtes RESTful avec les méthodes GET, POST, PUT, PATCH et DELETE
Objectifs opérationnels :
Comprendre une requête synchrone
Effectuer une requête synchrone
Lire, d’une manière synchrone, le contenu d’un fichier local
Comprendre une requête asynchrone
Effectuer une requête asynchrone
Récupérer des données à partir d’un serveur avec une requête asynchrone
Comprendre les méthodes de requête RESTful
Effectuer des requêtes RESTful avec les méthodes GET, POST, PUT, PATCH et DELETE
...par Raphaël Javaux, le 25 mars 2015.
Copie pour permettre le téléchargement L'original se trouve ici : https://docs.google.com/presentation/d/1A87M-e3u1uXlsQddGsI60EZXHVqiehaNy_SCfj7hUeQ/pub?start=false&loop=false&delayms=3000&slide=id.p
objectif général : Comprendre le principe de fonctionnement d'AJAX
objectifs opérationnels :
- Connaître les avantages et inconvénients d’AJAX
- Connaître les attributs et méthodes de l’objet XMLHttpRequest
- Construire une interaction AJAX
Ce cours présente la programmation fonctionnelle et montre comment il est possible de programmer avec ce paradigme en utilisant Python. La première partie présente la notion d'objet de type fonction, les fonctions lambda, le type callable et les closures. La deuxième partie présente les décorateur et montre comment ajouter du comportement à une fonction à l'aide d'un décorateur. La troisième partie présente les itérateurs et les générateurs qui, grâce à l'instruction yield, génère les données à la demande.
Dans cette présentation, je vous propose de découvrir ensemble d’autre façon de développer en Java et Java 8 en particulier, mais que peu ont testé. Est-il possible de limiter le nombre de sous-classes pour une classe ? Si on peut désormais mettre un comportement dans une interface, peut-on y mettre un état ? Et peut-on sécuriser la grammaire de ses DSL internes ? Live coding à l’appui, voici certaines des questions auxquelles nous allons essayer de répondre ou qu’on ne devrait jamais aborder.
Objectif général : Prendre en main l’une des bibliothèques JavaScript les plus utilisés pour créer des interfaces utilisateurs
Objectifs spécifiques :
Découper l’interface utilisateur avec les composants;
Configurer les composants avec « props »;
Gérer l’état local d’un composant avec « state »;
Afficher une listes de composants avec map();
Afficher un composant en fonction de l’état de l’application;
Interagir avec un utilisateur grâce à la gestion des événements;
Interagir avec un utilisateur par le biais des formulaires;
Communiquer avec un serveur HTTP avec AJAX;
Afficher des vues en fonction de l’URL avec le routage;
Mettre en forme un composant;
Ce cours concerne la manipulation des chaines de caractères et les expressions régulières. La première partie présente la classe str Python ainsi que les opérations qu'il est possible de faire sur des objets str. La seconde partie concerne les expressions regulières qui permettent de valider des chaines de caractères ou d'en extraire des sous-chaines qui satisfont un motif donné. On y voit finalement comment utiliser le module re Python.
Clairement dans cette version, nous assistons à une volonté de simplification. Plus de lisibilité du code, plus d’outils pour ne plus avoir à perdre de temps sur des opérations simples et courantes, pour au final un code de meilleur qualité et plus accessible. La plupart de ces améliorations se trouvent dans cette présentation.
Ce cours aborde la gestion d'erreurs en programmation, c'est-à-dire comment gérer les situations où une erreur se produit. Après avoir présenté le principe des spécifications et de la programmation défensive avec l'instruction assert, ce cours présente l'instruction try/except qui permet de capturer des erreurs. Enfin, le cours termine en présentant comment définir ses propres erreurs et les générer avec l'instruction raise.
Dans ce cours, on découvre comment construire une interface graphique en Python en utilisant la librairie Tk. Après avoir vu les différents composants de base, ce cours présente la programmation évènementielle qui permet d'écrire du code qui réagit à des évènements comme le clic sur un bouton, par exemple.
Ce premier cours présente les notions d'objet et de classe, et le lien entre elles. Il présente aussi le premier concept clé de la programmation orientée objet, à savoir l'encapsulation des données. Les exemples sont fournis dans plusieurs langages (Python, C#, Java, C++ et PHP).
Objectifs généraux :
Savoir effectuer une requête HTTP synchrone ou asynchrone
Savoir effectuer des requêtes RESTful avec les méthodes GET, POST, PUT, PATCH et DELETE
Objectifs opérationnels :
Comprendre une requête synchrone
Effectuer une requête synchrone
Lire, d’une manière synchrone, le contenu d’un fichier local
Comprendre une requête asynchrone
Effectuer une requête asynchrone
Récupérer des données à partir d’un serveur avec une requête asynchrone
Comprendre les méthodes de requête RESTful
Effectuer des requêtes RESTful avec les méthodes GET, POST, PUT, PATCH et DELETE
...par Raphaël Javaux, le 25 mars 2015.
Copie pour permettre le téléchargement L'original se trouve ici : https://docs.google.com/presentation/d/1A87M-e3u1uXlsQddGsI60EZXHVqiehaNy_SCfj7hUeQ/pub?start=false&loop=false&delayms=3000&slide=id.p
objectif général : Comprendre le principe de fonctionnement d'AJAX
objectifs opérationnels :
- Connaître les avantages et inconvénients d’AJAX
- Connaître les attributs et méthodes de l’objet XMLHttpRequest
- Construire une interaction AJAX
Ce cours présente la programmation fonctionnelle et montre comment il est possible de programmer avec ce paradigme en utilisant Python. La première partie présente la notion d'objet de type fonction, les fonctions lambda, le type callable et les closures. La deuxième partie présente les décorateur et montre comment ajouter du comportement à une fonction à l'aide d'un décorateur. La troisième partie présente les itérateurs et les générateurs qui, grâce à l'instruction yield, génère les données à la demande.
Dans cette présentation, je vous propose de découvrir ensemble d’autre façon de développer en Java et Java 8 en particulier, mais que peu ont testé. Est-il possible de limiter le nombre de sous-classes pour une classe ? Si on peut désormais mettre un comportement dans une interface, peut-on y mettre un état ? Et peut-on sécuriser la grammaire de ses DSL internes ? Live coding à l’appui, voici certaines des questions auxquelles nous allons essayer de répondre ou qu’on ne devrait jamais aborder.
Objectif général : Prendre en main l’une des bibliothèques JavaScript les plus utilisés pour créer des interfaces utilisateurs
Objectifs spécifiques :
Découper l’interface utilisateur avec les composants;
Configurer les composants avec « props »;
Gérer l’état local d’un composant avec « state »;
Afficher une listes de composants avec map();
Afficher un composant en fonction de l’état de l’application;
Interagir avec un utilisateur grâce à la gestion des événements;
Interagir avec un utilisateur par le biais des formulaires;
Communiquer avec un serveur HTTP avec AJAX;
Afficher des vues en fonction de l’URL avec le routage;
Mettre en forme un composant;
Ce cours concerne la manipulation des chaines de caractères et les expressions régulières. La première partie présente la classe str Python ainsi que les opérations qu'il est possible de faire sur des objets str. La seconde partie concerne les expressions regulières qui permettent de valider des chaines de caractères ou d'en extraire des sous-chaines qui satisfont un motif donné. On y voit finalement comment utiliser le module re Python.
Clairement dans cette version, nous assistons à une volonté de simplification. Plus de lisibilité du code, plus d’outils pour ne plus avoir à perdre de temps sur des opérations simples et courantes, pour au final un code de meilleur qualité et plus accessible. La plupart de ces améliorations se trouvent dans cette présentation.
Ce cours aborde la gestion d'erreurs en programmation, c'est-à-dire comment gérer les situations où une erreur se produit. Après avoir présenté le principe des spécifications et de la programmation défensive avec l'instruction assert, ce cours présente l'instruction try/except qui permet de capturer des erreurs. Enfin, le cours termine en présentant comment définir ses propres erreurs et les générer avec l'instruction raise.
Dans ce cours, on découvre comment construire une interface graphique en Python en utilisant la librairie Tk. Après avoir vu les différents composants de base, ce cours présente la programmation évènementielle qui permet d'écrire du code qui réagit à des évènements comme le clic sur un bouton, par exemple.
Avant d'entamer un chantier de performance Web, il convient de mettre en place du monitoring.
En particulier si vous voulez gérer sur le long terme la qualité, si vous avez beaucoup de sites et de pages à gérer.
Cette présentation est tirée d'un retour d'expérience d'installation de monitoring spécialisé en performance Web, avec des logiciels gratuits, et un serveur peu cher.
Discusses the algebraic properties of types, different kinds of functions and the information that is preserved or lost, and Category Theory concepts that underpin and unify them.
Cloud Technology and Its Implication for Quality ServicesSparta Systems
Cloud computing occurs when a program is run on many computers at the same time, referring to a server connected through the internet. This presentation from Sparta Systems describes how cloud technology can be an integral part of the Enterprise Quality Management Systems (EQMS).
Intro to @viewport & other new Responsive Web Design CSS featuresAndreas Bovens
From meta viewport to @viewport and from device-pixel-ratio to the resolution media query: various responsive design hooks are undergoing standardization, allowing for future-proof sites that work well in different contexts. In addition, new CSS features like object-fit, relative length units and so on are increasingly supported by browsers as well, and allow for more versatile responsive design solutions. In my talk, I will look at these features and explain how they can be used in websites today.
This session covers why you should pay attention to the accessibility of your web site or application and then walks you through how to do it using WAI-ARIA and JavaScript.
In the beginning, progressive enhancement was simple: HTML layered with CSS layered with JavaScript. That worked fine when there were two browsers, but in today's world of multiple devices and multiple browsers, it's time for a progressive enhancement reboot. At the core is the understanding that the web is not print - the same rules don't apply. As developers and consumers we've been fooled into thinking about print paradigms for too long. In this talk, you'll learn just how different the web is and how the evolution of progressive enhancement can lead to better user experiences as well as happier developers and users.
This deck is a conference-agnostic one, suitable to be shown anywhere without site-specific jokes!
Functional Programming Patterns (NDC London 2014)Scott Wlaschin
(video of these slides available here http://fsharpforfunandprofit.com/fppatterns/)
In object-oriented development, we are all familiar with design patterns such as the Strategy pattern and Decorator pattern, and design principles such as SOLID.
The functional programming community has design patterns and principles as well.
This talk will provide an overview of some of these, and present some demonstrations of FP design in practice.
Map, Flatmap and Reduce are Your New Best Friends: Simpler Collections, Concu...Chris Richardson
Higher-order functions such as map(), flatmap(), filter() and reduce() have their origins in mathematics and ancient functional programming languages such as Lisp. But today they have entered the mainstream and are available in languages such as JavaScript, Scala and Java 8. They are well on their way to becoming an essential part of every developer’s toolbox.
In this talk you will learn how these and other higher-order functions enable you to write simple, expressive and concise code that solve problems in a diverse set of domains. We will describe how you use them to process collections in Java and Scala. You will learn how functional Futures and Rx (Reactive Extensions) Observables simplify concurrent code. We will even talk about how to write big data applications in a functional style using libraries such as Scalding.
Introduction to Functional Programming in JavaScripttmont
A presentation I did for work on functional programming. It's meant as an introduction to functional programming, and I implemented the fundamentals of functional programming (Church Numerals, Y-Combinator, etc.) in JavaScript.
Callbacks, Promises, and Coroutines (oh my!): Asynchronous Programming Patter...Domenic Denicola
This talk takes a deep dive into asynchronous programming patterns and practices, with an emphasis on the promise pattern.
We go through the basics of the event loop, highlighting the drawbacks of asynchronous programming in a naive callback style. Fortunately, we can use the magic of promises to escape from callback hell with a powerful and unified interface for async APIs. Finally, we take a quick look at the possibilities for using coroutines both in current and future (ECMAScript Harmony) JavaScript.
"Немного о функциональном программирование в JavaScript" Алексей КоваленкоFwdays
Все началось давно, еще в школе, классе эдак 7. Тогда учитель математики впервые произнесла фразу: "Игрек равно эф от икс". В то время я и не догадывался что это самое "эф от икс", является базовым принципом функционального программирования, да и не только функционального.
Functional Programming, Reactive Programming, Transducers, MapReduce и многое другое, так или иначе корнями уходит в то самое, незамысловатое f(x). Это настолько серьезная часть программирования, что ежеминутно, если не ежесекундно, по всему миру на клавиатуре нажимаются клавиши f, u, n, c, t, i, o, n. И нажимаются они именно в этой последовательности.
Пора принять тот факт, что без функционального программирования, программирования не существует!
Пора разобраться. Пора понять для чего нужны функции в программирование, как они должны работать и чем они могут быть полезны в ежедневной работе.
JavaScript est désormais omniprésent et rend possible l'écriture d'applications complexes et riches. Mais il est souvent mal connu des développeurs orientés objets classiques comme ceux pratiquant le C#, le Java ou le PHP. Cette session passera donc en revue les bases du langage JavaScript, ses spécificités comme les portées, les closures, le this différent de ce que vous pouvez connaître. Bref, vous verrez qu'il y a des pièges à éviter et qu'il ne faut pas négliger JavaScript. Il est très puissant mais potentiellement différent de ce vous connaissez déjà. Venez apprendre à le respecter avant de le maitriser!
Decouvrez les particularités de JavaScript qui vous aideront à débogguer sans craindre ce langage aujourd'hui indispensable.
- la portée des variables et comment ne pas polluer l'espace global
- comprendre le mot clé this
- les particularités des fonctions
- introduction aux namespaces
Loin de la théorie vous aurez des explications pratiques et des démos de code ainsi que les bonnes pratiques.
Le développement d'applications lourdes à base de JavaScript est désormais possible. Cependant, cela requiert de bien connaître le langage en lui-même ainsi que les meilleurs patterns et pratiques établit ces 10 dernières années à travers des frameworks comme YUI ou jQuery par exemple. Vous verrez donc ici comment bien structurer votre code, comment utiliser des approches permettant de palier à certaines limitations de JS et comment également industrialiser le code grâce à la mise en place de tests unitaires.
Nouveautés JavaScript dans le monde Microsoftdavrous
Présentation delivrée le 19 mars 2015 lors du JavaScript Open Day: http://www.meetup.com/Javascript-Open-Day/events/220087351/
Au programme: les nouveautés du moteur du projet Spartan comme Web Audio ou ECMAScript 6
Quelle place pour le framework Rails dans le développement d'application web5pidou
Cette présentation a été réalisée dans le cadre des Rencontres Mondiales décentralisées du Logiciel Libre (RMLLd) qui se sont déroulées du 1er au 3 Juillet 2011 à Saint-Joseph (Ile de la Réunion).
Fork / Join, Parallel Arrays, Lambdas : la programmation parallèle (trop ?) f...Normandy JUG
Ces nouvelles fonctionnalités introduites à partir de Java 7 nous permettent de parallèliser nos traitements simplement, voire gratuitement. Nous allons donc pouvoir utiliser pleinement nos multicoeurs avec un minimum d'efforts. Quels sont ces nouveaux patterns, quels gains en performance pouvons-nous en attendre, à quels nouveaux bugs serons-nous confrontés ? Une heure pour répondront à chacun de ces points, en introduisant les nouveaux problèmes et leurs solutions. Une heure pour comprendre comment nos habitudes de programmation vont devoir évoluer, et à quoi la programmation parallèle en Java ressemblera-t-elle demain.
Javascript pour les développeurs Java : quels sont les pièges à éviter ?FlorianBoulay
Présentation donnée lors de Devoxx France 2013 dans le cadre d'un quickie.
Détails sur le site de Devoxx France : http://www.devoxx.com/display/FR13/JavaScript+pour+les+developpeurs+Java+++quels+sont+les+pieges+a+eviter
Voici le résumé de cette session :
Javascript a été inspiré par différents langages. Java lui a donné sa syntaxe, ses objets et ses méthodes.
Les syntaxes de Javascript et Java sont très proches, les développeurs Java pensent de la même manière lorsqu'ils codent dans ces 2 langages. Cependant Javascript possèdent de nombreuses subtilités qui peuvent se transformer en bugs si elles ne sont pas connues.
A travers ce quickie, je vais lister les prinicipaux pièges dans lesquels les développeurs Java ont tendance à tomber et comment les éviter. Voici une liste non exhaustive des points qui seront abordés :
* Les différents opérateurs permettant de tester l'égalité : == et ===
* La portée des variables
* L'enfer des variables globales ou comment isoler les variables pour qu'elles ne soient pas globales
* Les conversions de chaînes de caractères en nombre
* Les objets natifs Javascript ne devant pas être utilisés comme en Java
* L'objet this et ses différentes utilisations
Et d'autres encore !
• Le temps de chargement de page, c’est (très souvent) idiot, par Jean-pierre Vincent.
D’autres métriques génériques et bien meilleures existent et ont chacune leurs défauts (speedIndex, first contentful paint, Time to Interactive). Du coup je vais surtout vous apprendre à mesurer ce qui compte pour VOTRE site.
Comment avoir un rendu performant même sur mobile ? Comment animer convenablement ses interfaces Web ? Quelques pistes et retours d'expérience.
Présenté en 2015 pour le JS Open days 1
Les utilisateurs sont encore moins patients sur mobile que sur navigateur de bureau, malgré leur débit à priori faible et la faible puissance de leur machine. Quelles techniques et quelles méthodologies pour limiter la casse ? Le RWD est il un fléau ou une opportunité ? La 4G sauvera-t-elle le monde ?
Dans ce talk mêlant business, ergonomie de base, méthodologie et techniques, nous répondrons au moins partiellement à ces questions.
Qu'est ce qui a changé ces dernières années pour la performance Web ?
Quelles sont les pratiques obsolètes, limite ou toujours au top ?
Tour d'horizon en 20 minutes de la perf aujourd'hui
Il y a plusieurs centaines de techniques pour accélérer ses pages côté client, mais à travers ce retour d'expérience nous allons voir qu'en ayant simplement appliqué les bases on a pu diviser les temps d'affichage utilisateur par 5.
Présenté à la soirée Webperf de novembre 2013
Comment accélérer ses pages Web ? Combien cela rapporte il, quels sont les outils
Nous allons voir les techniques de base que les développeurs doivent connaître et quels sont les outils dont tout site moderne doit s'équiper pour assurer un minimum de qualité.
2ème volet de la présentation HTML5 maintenant : géolocalisation, nouveau formulaires, et Web storage au menu, afin de voir ce qu'il est possible d'utiliser dès aujourd'hui, et à quelles conditions
1ère partie de la présentation HTML5 maintenant : les nouvelles balises, microdata, les nouveaux formulaires, bref tout ce qui fait l'évolution de la sémantique de HTML4
13. Historique court
● Né pendant la guerre (95)
● En quelques semaines
● Influence Java, Erlang, Lisp, Python
IE et Netscape d'accord pour
EcmaScript 3
61. Interface publique
(function(){ // début de scope local
// accès global au constructeur
MY.utils.XHR = function( url ) {
this.url = url;
};
// méthodes ou variable statiques
MY.utils.XHR.staticVariable = true;
})(); // fin de scope local
62. Raccourci
(function(){ // début de scope local
// raccourci vers le namespace
utilisé
var self = MY.utils.XHR;
self.staticVariable = true;
})(); // fin de scope local
63. privées communes
(function(){ // début de scope local
// accès global au constructeur
MY.utils.XHR = function( url ) {
this.url = url;
currentInstances.push( this );
};
var currentInstances = [];
})(); // fin de scope local
64. privées par instance
(function(){ // début de scope local
// accès global au constructeur
MY.utils.XHR = function( url ) {
var isConnecting = true;
return {
query:function() {
if( isConnecting)
return false;
}
}
};
})(); // fin de scope local
65. Combo : factory pattern
(function(){
MY.utils.XHR = function( ) {
throw new Error( 'please use .getInstance()' );
};
// constructeur privé
var XHR = function(url) { console.log(url); };
// liste privée
var currentInstances = {};
// factory
MY.utils.XHR.getInstance = function( url ) {
if(currentInstances[url])
return currentInstances[url];
else
return currentInstances[url] = new XHR( url);
}
})();
66. Tout est émulable
● programmation événementielle
● tests unitaires et fonctionnels
● patterns classiques : MVC, observer,
facade, proxy, singleton, factory ...
67. Conclusion
● Javascript est différent, apprenez le
● OOP réutilisable