Le blog de Fatiha

Une geek de 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 :

Erreurs communes à plusieurs sites de recherche d’emploi

 

Il m’arrive d’aider des proches dans leur recherche d’emploi. Pour cela ils ont besoin de créer un espace candidat dans la plupart des cas, ne serait-ce que pour sauvegarder leur CV et éviter de l’uploader à chaque réponse d’annonce. Ce que j’ai remarqué c’est que certains sites sont très spartiates, leurs designs sont très épurés, il leur arrive même de ne présenter aucun header ni footer. Je vais vous lister ci-dessous quelques incohérences, anomalies, erreurs rencontrées sur certains sites.

Une image vaut mieux qu’un long discours, je vous laisse juger par vous-même. J’ai délibérément masqué le nom des sociétés et le nom des sites de recrutement.

Exemple 1 : la page suivi des candidatures sans ou avec peu de mise en forme

espace candidat 1

Exemple 2 : la pagination n’est pas très pratique car il n’y a ni bouton page précédente, ni bouton page suivante

pagination recherche offres 2

 

Exemple 3: des annonces non mises à jour

annonces non mises à jour 3

Exemple 4 : des mails d’accusés de réception sans référence de l’annonce et sans lien hypertexte

accusés de réception de candidatures sans référence de l'annonce

Exemple 5 : les éternels problèmes d’encodage dans les mails

pbs d'encodage dans les mails

 

Exemple 6 : le retour des frames, avec une lisibilité et une ergonomie non pensées et non réfléchies

le retour des frames

 

J’arrête là car j’ai tellement d’exemples que je pourrai en faire un bouquin… Des sociétés renommées et ayant pignon sur rue disposent d’espaces candidats basiques, avec très peu de fonctionnalités, sans suivi de candidatures ou encore avec des frames. Cela ne donne pas une bonne image et peut peut-être rebuter des talents.

6 mois déjà !

 

Désolée pour cette longue absence, ça fait en effet 6 mois que je n’ai pas écrit d’articles sur ce blog. Je reviens très vite avec plein d’astuces Linux, ksh, Oracle, … @+ les amis

90% à un test en anglais !

 

J’ai failli tomber de ma chaise quand j’ai vu le résultat que j’ai eu à un test en anglais en ligne. Vous ne me croyez pas ? Voyez plutôt :

test en anglais

Je pense que mes efforts commencent à porter leurs fruits. Quand je pense à toutes les formations que j’ai passées, à tous les livres que j’ai accumulés durant ces dernières années, je me sens soulagée de voir que toutes mes démarches se sont avérées au final utiles. Je sais que j’ai encore énormément de progrès à réaliser mais le résultat est là, je me sens plus à l’aise au téléphone, je me sens plus à l’aise par email et je me sens plus à l’aise quand je lis de la documentation informatique en anglais.