Le blog de Fatiha

Une geek de plus !

L’informatique, une vocation ?

 

Pour répondre à cette question, il faut que je remonte un peu dans le passé. Que voulais-je faire après le bac ? De l’informatique ? Loin de là… J’étais branchée biologie, du coup j’hésitais entre médecine et une prépa bio (BCPST, Classes préparatoires en biologie). Finalement j’ai choisi la prépa bio. J’ai eu un parcours assez atypique. Pour résumer, j’ai fait un an et demi de prépa, 6 mois de deug de bio, une licence de biochimie, une maîtrise de biochimie et enfin un Master de bio-informatique.
Tout ceci pour vous dire que l’informatique n’était pas ma vocation première. Et pourtant en regardant de plus près mon parcours, on se rend compte que h’ai goûté très tôt à l’informatique. Dès la prépa on a fait du pascal, un langage informatique très scolaire si je puis dire. Très bonne initiation à l’informatique. En maîtrise j’ai choisi comme option l’informatique, de ce fait j’ai appris deux  nouveaux langages, le c++ et l’assembleur.
Vous remarquez donc que j’ai été initiée à l’informatique d’une drôle de manière. Ce n’était pourtant pas le métier auquel je me destinais…
J’ai fait un virage tout en douceur en optant pour un Master en bio-informatique. J’ai même travaillé dans un laboratoire de recherche. Mais le manque de moyens du laboratoire a fait que j’ai dû quitter précocement ce laboratoire…
Et c’est là que j’ai commencé ma carrière dans l’informatique. Un mal pour un bien comme on dit. En effet après quelques mois de chômage en 2004, il a fallu rebondir et c’est l’informatique qui m’a tendu les bras. Je l’en remercie !!!

Donc pour répondre à la question présente dans cet article, l’informatique n’était pas une vocation au départ mais j’ai tout de même goûté à cette matière durant mes études. Et c’est ce qui m’a permis de choisir ce domaine des années après.

La vie nous offre des opportunités qu’il faut saisir !

L'informatique, une vocation ?

View Results

Loading ... Loading ...

Petite dédicace à mon neveu Ayoub : bon courage, je suis sûre que tu réussiras dans le domaine de l’informatique. Je suis fière de toi !

Fan des applis mobiles d’utilité publique (via @leblogdefatiha)

 

Après six mois d’absence sur mon blog, je reviens avec un article léger, les applications mobiles d’utilité publique, celles dont on ne peut se passer. Pour ma part, il y en a cinq absolument indispensables : la sécurité sociale ameli, la CAF (oui je suis maman), mon opérateur de téléphonie mobile, ma banque principale et enfin EDF.

Je consulte ces sites presque tous les jours ! Ils sont assez bien faits, même s’ils sont indisponibles de temps en temps, j’imagine pendant les mises à jour importantes (mises en production en utilisant le jargon informatique).

Ces applications sont assez rapides et complètes, même s’il manque de temps en temps des fonctionnalités comparées aux sites web classiques.

Et vous utilisez-vous les applications mobiles ci-dessous ?

Est-ce que vous utilisez les applications suivantes (d'utilité publique ) ?

View Results

Loading ... Loading ...

Mon premier script en powershell

 

Je vous présente en avant-première mon premier script en powershell, moi qui avais l’habitude de scripter en shell, je m’essaie au powershell. Le powershell est un langage un peu objet, du coup c’est très loin du shell que vous connaissez sous Linux. Il faut carrément adopter une toute autre logique, logique que j’essaie d’acquérir. Ci-dessous un exemple tout simple de test de process et de test de service.

#On teste le statut d'un service

$VAR1 = Get-Service | Where-Object { $_.DisplayName -eq "DNS Client" } | Select-Object Status | Out-String

if ( $VAR1 = "Running" )
{
"service DNS Client is running"
}
else
{
"service DNS Client is stopped"
}

#On teste si un process tourne

$VAR2 = Get-Process | Select-Object ProcessName | Out-String

if ( $VAR2 = "OUTLOOK" )
{
"process OUTLOOK is up"
}
else
{
"process OUTLOOK is down"
}

Si vous avez le moindre souci, vous pouvez toujours taper un man Get-Service ou encore Get-Process. Pour le reste ce n’est pas inné, il faut lire les docs et piocher dans les commandes qui nous intéressent. Je vais continuer à travailler le powershell, je vous tiens au courant bien entendu.

En savoir plus :

Mobile-friendly ?

 

Mon blog est mobile-friendly, c’est Google qui l’a dit :) Pour faire plus simple Google via son test me dit que mon blog s’affiche bien sur les téléphones portables.

compatibilité mobileVous aussi, faîtes passer le test à votre site internet : le test.

 

Comment décrypter du flux https avec Fiddler ?

 

Tout d’abord merci Korben pour ton article, cela m’a permis d’analyser l’origine d’un bug !

Ce que je cherchais était l’origine d’une erreur apache 403 Forbidden. Or le flux étant en https, tout était crypté dans ma trace Wireshark.

Du coup, après une petite recherche sur Google, je suis tombé sur l’excellent article de Korben. J’ai téléchargé l’outil Fiddler. J’ai lancé une capture et j’ai obtenu ce résultat :

capture fiddler 1

Encadré en rouge, vous avez la requête que je souhaite analyser et au niveau de l’écran de droite, vous avez la réponse du serveur (en xml), commençant par <error>… Cela m’a permis de récupérer le code erreur aisément.

Ps : j’ai masqué quelques informations importantes, comme des noms de domaine, des versions d’apache ou encore les URLs appelées…

Oracle : différence entre CPU Time et Elapsed Time

 

J’ai lancé une requête sur la vue v$SQLAREA et je vois deux champs qui se ressemblent grandement : CPU time et Elapsed Time. Par contre les données renvoyées sont totalement différentes.

vue v$sqlarea

En lisant la documentation Oracle, on n’en apprend pas plus…à part l’unité utilisée (microsecondes). Ci-dessous un extrait.

2 champs de la vue v$sqlarea

Source : documentation officielle Oracle 

Du coup, j’ai fait une petite recherche Google et j’ai trouvé ceci :

Extrait n°1 : sur stackoverflow

The CPU time is the time your query actually needed; the rest is waiting for resources.

Extrait n°2 : difference between CPU time and elapsed time

CPU time is the time for which the CPU was busy executing the task. It does not take into account the time spent in waiting for I/O (disk IO or network IO). Since I/O operations, such as reading files from disk, are performed by the OS, these operations may involve noticeable amount of time in waiting for I/O subsystems to complete their operations. This waiting time will be included in the elapsed time, but not CPU time. Hence CPU time is usually less than the elapsed time.

Ce que je comprends c’est que le temps de traitement réel de la requête est du CPU Time auquel on ajoute le temps lié aux I/O, disponibilités des ressources (Wait time). C’est ce que dit justement un expert sur le forum developpez.com :

Extrait n°3 :

 

Chaque session utilisateur a un process côté serveur pour traiter ses demandes.

Ce process est:
– soit en train d’attendre d’avoir quelque chose à faire -> en Idle Wait
– soit en train d’exécuter du code oracle -> en CPU
– soit en train d’attendre sur un appel système (i/o par exemple), sur un verrou,… -> en Active Wait

On peut donc compter le temps passé dans chaque état: Idle Wait, CPU time, Active Wait

La totalité du temps actif en base de donné est appelé DB time = CPU time + Active Wait Time

Et pour une session, un temps elapsed est la durée entre 2 mesures durant laquelle il peut y avoir du DB time (actif) ou du Idle Wait time.

Si on a 2 sessions, vu de la base de donnée, on additionne les temps de chacunes. Par exemple, si la base a 2 sessions qui travaillent tout le temps en CPU pendant 5 secondes, alors le DB time au niveau système sera de 4 secondes. Par contre le temps elapsed sera toujours de 2 secondes.

C’est pour cela qu’en divisant DB time / elapsed time on a le nombre de sessions actives en moyenne en base de données – soit la charge de la base.

J’espère que ces explications vous ont aidé, pour ma part cela m’a permis de comprendre ces deux métriques. La prochaine étape étant de comprendre les métriques figurant dans un fichier AWR, du haut niveau pour moi :(

Les pages d’erreurs des sites de recherche d’emploi

 

J’aide en ce moment un proche à rechercher du travail. Et souvent je tombe sur de belles pages d’erreurs, des erreurs apache, des erreurs java, des erreurs symfony. Je les ai compilées ci-dessous, toujours en masquant le nom de la société et/ou du site. La recherche d’emploi, toute une histoire !

Exemple 1 : une belle erreur apache

offre indisponible 1

 Exemple 2 : une erreur apache du CMS Symfony 

erreurs symphony 2

Exemple 3 : une belle erreur asp

erreur asp 3Exemple 4 : le bouton retour qui ne fonctionne pas

bouton retour KO 4

Hints sous Oracle

 

Je note cette date, 24/04/2015, date à laquelle j’ai enfin compris ce qu’est un « HINT » sous Oracle. J’entendais souvent mes collègues DBAs parler de HINT. Ils débitaient des paroles du genre : « oui, mais est-ce que tu as mis des hints? », « il faut accélérer le temps d’exécution des requêtes, … ».

Hier, en parcourant quelques sites internet, dont celui-ci : initiation à l’optimisation de requêtes sous Oracle, je suis tombée sur une excellente explication de ce qu’est un HINT.

Les hints ou suggestions sont les instructions que nous pouvons insérer dans nos ordres SQL pour influencer l’optimiseur. Dans certains cas l’optimiseur peut ne pas prendre le meilleur chemin, du moins à notre goût. On peut alors l’influencer en insérant dans l’ordre SQL un hint se présentant comme ceci : /*+ MONHINT */. Oracle le suivra si c’est possible et l’ignorera sinon.

Comment sait-on si les hints notés en commentaires dans notre requête SQL sont utilisés ?

En comparant le plan d’exécution avec et sans HINT.

On active pour cela le mode autotrace :
set autotrace on

Ci-dessous vous trouverez deux exemples de requêtes que j’ai lancées, le résultat est très probant, notamment par rapport au nombre de lignes parcourues dans une table (colonne ROWS).

Exemple sans HINT :

sans hint

 Exemple avec HINT

avec hint

Exemples de hints :

DBMS_STATS : Lancement de stats sous Oracle 10g RAC

 

A des fins de performance, il est utile de lancer des statistiques sur la base de données Oracle. Cela permet au moteur Oracle de choisir le meilleur plan d’exécution pour les requêtes.

Vérifiez d’abord depuis combien de temps vos tables n’ont pas été analysées :
select TABLE_NAME, OWNER, LAST_ANALYZED from DBA_TABLES order by LAST_ANALYZED asc;
Vous pouvez filtrer selon le nom de la table. J’ai ajouté un tri croissant afin de voir immédiatement les tables qui n’ont pas été analysées depuis longtemps.

Ensuite, si vous souhaitez forcer le lancement des stats, il  vous suffit de lancer la commande ci-dessous :

exec DBMS_STATS.gather_schema_stats(ownname=>'OWNER',cascade=>TRUE);

Relancez ensuite la première requête SELECT, vous verrez que la valeur contenue dans la colonne LAST_ANALYZED a changé.

Sources :