Optimisation #1 Javascript : Mise en cache de la longueur d’un array

Pour optimiser un peu plus son code Javascript (pour ceux qui n’appliquent pas encore cette astuce bien sûr), je vais partager une petite best practice lors de l’itération d’une boucle for.

La boucle for « normale » ressemble à ça…
BAD

[javascript]
var tab = [‘element1’, ‘element2’, ‘element3’];
for (var i= 0 ; i<tab.length ; i++) {
// le reste du code
}
[/javascript]

Dans le code ci-dessus on constate qu’à chaque itération, la taille du tableau (tab) est recalculée via la commande tab.length. Mauvais!
Le but est de calculer cette longueur qu’une seule fois :
GOOD

[javascript]
var tab = [‘element1’, ‘element2’, ‘element3’];
for (var i= 0, iLen = tab.length ; i<iLen ; i++) {
// le reste du code
}
[/javascript]

Dans le code ci-dessus, on constante donc que la longueur est calculée la première fois et qu’elle est ensuite stockée dans la variable iLen.

Remarque
Pour des tableaux avec seulement quelques éléments l’optimisation ne se fait pas ressentir mais quand on travaille sur des milliers de lignes c’est plutôt pas mal!

Connaitre les technologies et frameworks utilisés par un site web

Vous voyez un site sympa et vous vous demandez quelles technos se cachent derrière ? Tous les développeurs (et autres) se sont déjà posés cette question!…

L’outil magique

wappalyzer_chrome_download

Pour ça, il y a Wappalyzer! Cette superbe extension pour Google Chrome et Mozilla Firefox permet de vous donner la réponse sans avoir à aller fouiller dans le code source!

Elle permet de détecter :

  • le type de serveur web
  • les frameworks Javascript utilisés
  • les outils analytiques etc…

L’exemple avec Github.com

Si on prend par exemple Github, après avoir installé l’extension sur Chrome, on peut voir apparaître un petit logo “Rails” à droit dans la barre d’adresse (voir ci-dessous)

github_wappalyzer_rails

En cliquant sur l’icône, on peut voir l’ensemble des frameworks et des technos qui sont utilisées par Github sur son site.

all_frameworks_wappalyzer

On peut donc voir qu’il y a du Ruby on Rails, Google Analytics et puis du jQuery!

Sur certains autres sites on obtient une liste beaucoup plus longue de frameworks et ça peut orienter les développeurs dans les choix donc c’est plutôt sympa!

Quelques liens

Ajouter la configuration de votre proxy sur votre terminal Git

Si vous avez le message d’erreur “fatal: unable to access … Could not resolve host: github.com lors de l’utilisation de Git, le réseau requiert surement un Proxy…

eror_proxy_git

Dans ce petit post je résume les deux-trois commandes qui permettent de setter un proxy, mais aussi d’afficher les paramètres actuels et des supprimer.

Les principales commandes

1 – Ajouter la configuration de votre proxy

[syntax type=”js”]git config –global http.proxy http://proxyuser:proxypwd@proxy.server.com:8080
git config –global https.proxy https://proxyuser:proxypwd@proxy.server.com:8080[/syntax]

2 – Afficher la configuration actuelle

[syntax type=”js”]git config –global –get http.proxy
git config –global –get https.proxy[/syntax]

3 – Supprimer la configuration de votre proxy

[syntax type=”js”]git config –global –unset http.proxy
git config –global –unset https.proxy[/syntax]

A propos de l’algorithme Microsoft Time Series…

MTS en quelques mots…

MTS ou série temporelle en français est un algorithme qui utilise un ensemble d’algorithmes de régression qui permettent de livrer des prédictions sur un jeu de données.

mts_fren

Pour se mettre dans le contexte, un algorithme de régression est une technique de calcul de survenue d’un évènement.

Les séries temporelles sont beaucoup utilisées pour prédire…

  • l’économie
  • les ventes
  • les budgets
  • les marchés
  • les populations
  • etc…

Ci-dessous, voilà à quoi ressemble une série temporelle :

mts_serietemporelle

La différence avec l’arbre de décision ?

Il ne nécessite pas de colonnes supplémentaires avec de nouvelles informations pour prédire une tendance.

Son fonctionnement ?

Deux algorithmes entrent en jeu :

  • Algorithme ARTXP : optimisé pour les prédictions à court terme.
  • Algorithme ARIMA : optimisé pour les prédictions à long terme.

Le modèle se base sur un jeu de données d’origine et un intervalle de temps régulier entre chaque valeur. Ces deux jeux de données sont utilisés pour créer le modèle (série).

Il est possible d’ajouter de nouvelles données au modèle lorsque l’on fait des prédictions et de les intégrer automatiquement aux données de base. Il est important de faire évoluer les prédictions en fonctions des nouveaux jeux de données.

Pour les premières prédictions, l’algorithme ARTXP (court terme) est utilisé. Plus les prédictions s’éloignent dans le temps, plus ces dernières seront déterminées par l’algorithme ARIMA (long terme). Ces algorithmes détectent également les répétitions saisonnières des valeurs pour améliorer les prédictions (pratique pour les ventes etc…).

ARTXP peut se définir comme un modèle d’arborescence autoregressif.

MySQL sous Android: fonctionnement, avantages et inconvénients

MySQL est probablement l’une des bases de données la plus utilisée en informatique. Que l’on soit développeur en herbe ou confirmé, on a tous déjà travaillé au moins une fois avec ce système de gestion de base de données. Les géants du monde d’internet tels que Google l’utilisent pour certains sites, applications ou en embarquant directement MySQL au sein de leur solution.

Android & MySQL

Une application Android et une base de données MySQL ne peuvent pas communiquer directement ensemble (c’est un peu comme demander à un Chinois de discuter avec un Polonais), il faut donc implémenter un processus (un peu fastidieux!) qui va faire la connexion entre les deux : le langage PHP.

Visuellement, le processus de communication entre l’application et la base de données :

android_php_mysql

Tous les appels entre l’application et la base de données passeront donc par un webservice en PHP qui se chargera de réceptionner la requête, la transmettre au SGBD et renvoyer une réponse à l’application au format JSON. Le message JSON créé peut ressembler à ça :

[java]
{
“successful” : 1,
“response” : “Bravo, l’utilisateur a été ajouté!”
}
[/java]

Il contient le statut de l’exécution de la requête ainsi qu’un court message qui peut être parsé et affiché à l’écran pour informer l’utilisateur.

Les avantages de MySQL

  • Disponible et abordable pour tous
  • Facile d’utilisation
  • Rapide, sûr et fiable
  • API
  • Open source
  • Portable

MySQL apporte beaucoup de libertés opérationnelles avec des fonctionnalités avancées. Les fonctions de sécurité de MySQL offrent également une protection fiable pour les accès aux données de manière simple.

Les inconvénients de MySQL

  • Limitations fonctionnelles
  • Processus de développement douteux

Selon le choix du moteur de la base de données, MySQL peut être allégé de certaines fonctionnalités (il faut s’assurer que les fonctionnalités primordiales à notre besoin soient incluses). Attention également aux accès concurrents qui peuvent poser quelques problèmes.

Notre expérience sur cet outil

L’utilisation de MySQL dans notre application n’a pas été nécessaire donc nous ne l’avons pas utilisé. Pour la même raison que SQLite, les données que nous utilisons sont directement stockées dans les bases de données de Twitter. Cependant nous l’avons utilisé de nombreuses fois pour des projets étudiants et en entreprise. MySQL est une référence dans les systèmes de gestion de base de données.