vendredi 12 octobre 2018

Sublime Text - Editeur de texte - Programmation - SAS

Sublime Text (3) est le meilleur éditeur que je connaisse.

Vraiment très utile pour coder, quelque soit votre langage.
Il possède complétion, coloration syntaxique (highligthting), retient le chemin des fichiers...

Il peut être fermé, enregistre en permanence les actions réalisées.

Le programme existe en version "Portable", donc pas besoin d'installation, donc pas nécessaire d'avoir les droits admin =)

Téléchargement SublimeText : https://www.sublimetext.com/3

Si votre langage de programmation n'est pas dans le package standard de Sublime Text, voici une méthode pour l'ajouter et ainsi profiter des outils tel que la coloration synatxique...

* Installation d'un Plugin / Package Non Standard *

Exemple avec SAS
- Récupérer le package : https://github.com/rpardee/sas.tmbundle/zipball/master
- Extraire le répertoire SAS sous : \Data\Packages\SAS\

Pour être sur de l'emplacement aller dans : Sublime -> Preferences -> Browse Packages...
- Ouvrez votre programme sas et choisissez : View -> Syntax -> SAS -> SAS Program

Votre programme SAS comporte désormais la bonne coloration syntaxique !

Référence SAS :
https://implementing-vdw.blogspot.fr/2012/10/new-sublime-text-package-available-for.html

mercredi 5 mars 2014

Optimisation de requête SQL (Oracle)

Alors comment optimiser ses requêtes pour optimiser les temps de traitement (Oracle) ?

Tout d'abord il faut savoir que le SGBD utilise un plan d'exécution pour effectuer les instructions demandées.


- Comment fait-il ? Il calcul un plan d'exécution optimisé suivant des algorithmes en fonction des informations qu'il possède, notamment de ses statistiques.


L'exécution de la requête se fait de la plus profonde à l'extérieur (la sous sous sous requête avant la requête affichant le résultat).


- Que va t'il regarder ? Tout d'abord il va regarder les différents index existants sur les tables/objets utilisés dans la requête notamment les clés primaires (index unique) ; à partir des méta-données & statistiques (après un analyse "compute statistic" par exemple). Il va alors déterminer son plan d'exécution en fonction de la volumétrie (index ou full scan) etc.


N'hésitez pas à vous faire conseiller de votre DBA (Administrateur de la base de données), qui vous aidera à savoir s'il convient de partitionner, de vous aider à choisir vos tablesspaces suivant les données physiques et volumétrie de vos tables.


Coût de la requête : le "cost"

Le Cost est un indicateur intéressant, il s'affiche lorsque l'on demande au SGBD de nous montrer son plan d'exécution.

Ce qui est le plus coûteux : La jointure


Optimisation :

  • Critères sélectif à la fin de la requête (exécutés en premier) 
    • Il convient donc de mettre en fin de requête tous les critères de sélection afin de réduire le nombre de ligne à joindre (et non l'inverse).
    • select champ1, champ2 from table1 t1, table2 t2 where t1.pk = t2.pk and t1.champ1 in ('toto','titi');
  • Il convient également de projeter uniquement les colonnes nécessaires (ramener 10 champs dont 8 ne seront pas utilisés est un volume de données inutile).
  • Table la moins volumineuse (référence) à gauche
  • Eviter les select... in(select...) utiliser select... exists(select...)
  • Utilisez des fonctions analytiques plutôt que des sous select (peut changer exponentiellement le temps d'exécution)
  • Lancer l'analyse de la table régulièrement (en full ou % suivant la volumétrie). Cela peut changer le plan d’exécution en fonction des données récupérées
  • Créer des index sur les critères de jointure (create [unique] index...)
  • Utiliser des identifiants techniques optimise la sélection des relations complexes (table dont la clé primaire et composite et de types hétérogènes (caractère,numérique...))
  • Partitionner la table dans la mesure du possible/besoin (la partition est vue comme une table à part et permet donc de réduire fortement la volumétrie) : select... from table1 partition()
  • Utilisation de hints : forcer le plan d’exécution (pour les experts : souvent l'analyse / rebuild ou création d'index / refonte de la requête suffit au SGBD de choisir le bon algorithme).
Produit Cartésien : multiplication des lignes de données car aucun lien n'est trouvé entre 2 tables

Quelques références de site :

jeudi 19 janvier 2012

Enquête - mon métier

Aujourd'hui j'ai reçu un mail me demandant de répondre à certaines questions pour aider les jeunes diplômés d'une école à appréhender leur arrivée sur le marché du travail. Voici mes réponses instinctives ...
  • Dans quel service travaillez-vous ?

Au sein de la MOA ALM (gestion d’actif/passif) d’une banque de financement.

  • Quelle est votre mission actuelle ?

Je m'occupe du système d’information en vue de réaliser la production de rapports réglementaires financiers.

  • Quel type de formation(s) avez-vous suivie ?

Une formation en ingénierie, mais j’ai découvert la Business Intelligence par hasard.

  • Décrivez-nous votre parcours professionnel ?

En BI depuis plus de 5ans. Mes fortes compétences techniques et ma facilité de compréhension m’ont permis de réaliser différentes missions, aussi bien dans le domaine des ressources humaines, de l’assurance ou dans la banque de financement.

  • Quelle est la part d’initiative dans votre métier ?

Elle peut être plus ou moins importante. La difficulté et l’originalité du métier de consultant, est que l’on est appelé pour répondre à un besoin précis et qu’en réalité on fait souvent autre chose. Il faut se faire voir sur les points de la mission qui nous intéresse afin d’agrandir nos responsabilités et notre périmètre où l’on veut s’investir.

  • Pourquoi avez-vous choisi ce métier ?

La technique ça va bien un moment ! Même si elle est toujours utile, je suis de nature curieuse, j’aime découvrir et savoir que mon travail sert concrètement à des gens. Etre au niveau du pilotage est intéressant pour comprendre la stratégie et les problématiques de l’entreprise.

  • Quelles sont les qualités requises pour votre travail ?

De la rigueur comme partout. Une tête bien faite (réponse un peu banal)… Je dirais qu’il faut avoir l’esprit ouvert, ne pas hésiter à (se) poser des questions et à s’intéresser aux problèmes. Il ne faut pas partir avec des aprioris surtout en terme de vocabulaire une notion de « client » peut être différente d’un service à l’autre…

  • Vous avez mis combien de temps pour trouver un travail ?

J’ai trouvé un travail immédiatement à la fin de mon stage. Le décisionnel n’était pas encore si populaire (il y a beaucoup de formation qui ont vu le jour depuis). C’est un marché porteur, qui subsiste à la crise (car il est une aide au pilotage et donc à la recherche de performance et de réduction des coûts), mais c’est un métier exigeant qui n’est pas fait pour tout le monde ou pour toute une vie…

vendredi 28 octobre 2011

ALM - Asset Liability Management (un peu différent)

Depuis plus d'un an je suis en mission ALM. Hier soir un collègue présentait ce qu'est l'ALM, en tentant de le vulgariser et d'en présenter les enjeux (l'aspect pilotage notamment par le changement de politique commerciale afin de garantir une liquidité suffisante et non pas juste l'aspect réglementaire). De mon côté ayant à faire une communication CE, j'en ai profité pour faire une "micro" présentation... à ma façon ! :)

Bonsoir,

J’en profite d’avoir la parole pour faire un petit trait d'humour totalement improvisé [sort feuille] car moi aussi j'ai fait de l'ALM.
Alors si j'avais à faire le
*bilan* de cette mission, je dirais que j'ai été plutôt *actif* que j'y ai trouvé un certain *équilibre*.

Au final les gens ne peuvent qu'être *100%* voir *103%* d'accord avec moi (ratio réglementaire). Pour faire plus jeun’s je dirais que c'est de la *bâle III* [3 avec les doigts].

Je n'avais pas forcément le *stock* de *ressources* nécessaires pour cette présentation mais je m'y *emploi*.

A cette présentation, j'aurais trouvé un *titre* plutôt *côté* tiré d'un vieux film "Eh mec ! Elle est où est ma *caisse*" (le) *titre* (caisse titres).

J'aurais essayé que cette présentation ne soit pas trop *CASH* voir pas trop *SEC* ;

J’espère qu’on pourra la retenir à mon *crédit*, même si je n’en ferais pas la *couverture* d’un magazine et que je ne jouerais pas d’un *instrument*.

En espérant que mon *débit* tienne votre attention.

J'aurais voulu mettre un peu d'*action* sans que ce ne soit pour vous une *obligation*.

Mais j'aime le *risque*, j'ai mes *défauts*, j'espère que ça aurait *marché* ; (Pourtant) On m'avait dit mais *change* ta *devise*, mais il était (encore) un peu *taux* : « [In]flation vaut mieux que [de]vise tue l’Or a ». (je vais « fer » avec).

Je me suis dit au final que la banque c'était un peu comme ma copine[...], elle s'attache à ce que j'ai suffisamment de savon *liquide*, que je traine pas trop de -casseroles-, mais surtout qu'elles aient des *fonds propres* […] c’est *capital* !

Bon je suis en train de *dérivés*, mais c’était l’*option* choisie.

En résumé je dirais :

*Actif* sur les *ressources* qu’il *emploi* une bonne banque comme un bon consultant se doit (vous remarquerez que la phrase est dans un pseudo *passif* !)

Voilà c'est la *clôture* de mon petit trait d’humour, alors je *swap* de casquette pour vous faire la communication CE.

Tom

Réaction dans le public à ma "devise" tirée par les cheveux (ça je l'attendais ! :D), mais ce qui m'a le plus surpris (et j'avoue m'a fait plaisir) c'est les applaudissements ! :p

lundi 21 février 2011

Ruby and Watir

Cela fait un moment que je ne touche plus à Ruby. Geek or not on m'a mit au défi et j'y ai répondu ; oui ma popularité n'est peut être pas des meilleurs, m'ont dit mes amis ; alors lancé sur un site "communautaire" ou chaque profil visité reçoit des points, pareil pour les mails etc. Et là je me sens comme Mark Zuckerberg à qui on donne un jouet. Et c'est parti, petit script d'automatisation sur le navigateur, qui va visiter toutes les pages possibles (plus on visite et plus on a de chance d'être visité à son tour), et après quelques affinages me voilà en tête du classement à près de 10 fois plus de points, sans passer une seule minute sur ce site, la grande classe :)
Bon bah maintenant je ne sais pas quoi faire de ses 40 000 images, peut être devrais-je trouver un script de morphing/d'analyse de visage et l'affiner pour mes recherches hors cadre du défi ! O-D

Petit script Ruby réalisé avec Watir ; c'est vraiment sympa pour automatiser des tâches sur le web, comme publier des photos, des news sur un blog, tester une application etc.

Watir en quelques commandes

Il existe d'autres solutions plus facile pour les petits besoins - PlugIn Firefox iMacros - en fait partie. Je vous laisse lire ce petit article intéressant.