27 janvier 2015

SCRATCH ! ... Initiation à la programmation informatique

Scratch est un langage qui permet aux enfants de 8 à 16 ans de programmer et partager des histoires, des jeux et des animations. Quand les enfants créent avec Scratch, ils apprennent à penser de façon créative, à travailler en collaboration, à raisonner systématiquement.

L'atelier fonctionne par "drag and drop" de pièces de "puzzle" de code (ici en anglais). Des fiches de présentation et d'exercice permettent de progresser par étape. C'est intuitif, esthétique, amusant ... Mon garçon adore.



Pour ce qui me concerne, difficile de revenir sur l'atelier "Traitement" de HRStudio ensuite !

Ici le site
Ici l'éditeur "off line"
Ici des ressources en français

Bonne découverte.


   
Scratch est conçu et animé par le groupe Lifelong Kindergarten au MIT Media Lab.

7 janvier 2015

Récupérer une table droppée sous Oracle

Oracle a repris depuis Oracle 10g le système de la "corbeille". Ainsi quand on droppe une tables c'est "pour de faux" - et l'espace n'est pas libéré ... Sauf à utiliser une option de purge. Pour visualiser le contenu de la corbeille :

SELECT * FROM RECYCLEBIN; 
ou SELECT * FROM USER_RECYCLEBIN;

La corbeille est propre à chaque schéma. En se connectant SYS la vue DBA_RECYCLEBIN permet de voir tous les objets dans la corbeille quelque soit le propriétaire.


Plus d'informations sur ce blog : http://www.lao-dba.com/article-25701902.html
... et sur la doc Oracle (PURGE, FLASHBACK).

Quelques exemples d'utilisation :
  • Pour nettoyer la corbeille :
PURGE TABLE HR.ZX8K;
PURGE TABLESPACE HRZX; 
PURGE RECYCLEBIN;
  • Pour restaurer une table :
FLASHBACK TABLE ZX8K TO BEFORE DROP RENAME TO ZX8K_OLD;


ATTENTION :
  • Un DROP USER ou DROP TABLESPACE, ne passent pas par la corbeille.
  • Les scripts de maintenance appelant la table User_Objects doivent prévoir une clause pour exclure les nom d'objets commencant par BIN$
  • Si vous restaurez une table depuis la corbeille il faut ensuite renommer les index, contraintes, recréer les contraintes d'intégrité référentielle,

A noter : cette fonctionnalité peut être désactivée au niveau de la base ou au niveau de la session :

ALTER SYSTEM SET RECYCLEBIN=OFF;
ALTER SESSION SET RECYCLEBIN=OFF;


PS : pensez à compléter vos traitements de nettoyage de la base avec la purge de la corbeille.

6 janvier 2015

at: 0481-108 You are not authorized to use the at command

Sous Unix pour exécuter un traitement en tâche de fond, HR Access utilise (via le script $SIGACS/bin/job) la commande "at now".

Exemple de syntaxe :
echo "ma commande > monlog 2>&1" | at now

Le "now" signifie : "déclenchement immédiat" (il peut y avoir des équivalents dans autres langues). La commande reconnait aussi "hhmm" (du jour - ou du lendemain si l’heure est depassée). Il est possible d'être plus précis et d'utiliser le format "[SSAA]MMJJhhmm[.ss]" (avec l'option -t) ou des ajouts sur le modèle de "now + 5 minutes" ou de "next hour". Consultez le "man" pour plus de détails.

echo "ma commande > monlog 2>&1" | at 1200            # a 12h00
echo "ma commande > monlog 2>&1" | at -t 201512312359 # le 31/12/2014 à 23h59

Pour lister les traitements planifiés en attente :
at -l
hradev.1420628400.a     Wed Jan  7 12:00:00 2015
hradev.1451602799.a     Thu Dec 31 23:59:59 2015

Pour déplanifier un traitement :
at -r hradev.1420628400.a
L'administrateur Unix peut restreindre les droits à cette commande "at". Si les droits ne sont pas ouverts pour le compte Unix de l'applicatif, les traitements batch demandés via l'interface Web ne seront pas déclenchés, et un message d'erreur apparaîtra dans $TMP/a.batch :

/hradev/hraccess/txt/log/OPER.594
PHASE: OPER WITH THESE PARAMETERS
PPCLIDEVAS800AS800NBX03PA45000467066ASREL0                                      AS800NBX               PA46                                                      ASRELX0ZYDV           PA47


at: 0481-108 You are not authorized to use the at command.


16 octobre 2014

Des expressions régulières sous Oracle

Dans un "LIKE" classique les seuls métacaractères sont "%" (n caractères quelconques) et "_" (un caractère quelconque).

Mais Oracle permet aussi d'utiliser dans les clauses WHERE une condition LIKE de type REGEXP (expression rationnelle comme celle de la commande Unix "grep"). Ainsi pour lister précisément les tables des structures de données HR et les tables M71 M81 et M91 l'ordre SELECT peut prendre la forme suivante :

SQL> select TABLE_NAME from ALL_TABLES where OWNER='HR' and
    (REGEXP_LIKE(TABLE_NAME,'^[X-Z][A-Z0-9]{3}$')
     -- tables sur 4 caracteres dont le premier vaut X, Y ou Z
  or REGEXP_LIKE(TABLE_NAME,'^[A-Z0-9]+M[789]1$')
     -- tables de nom alphanumerique suffixes M71 M81 ou M91
  or REGEXP_LIKE(TABLE_NAME,'^[X-Z][A-Z0-9]LG1[02]$')
     -- tables de 6 caracteres suffixees LG10 ou LG12 dont le premier vaut X, Y ou Z
  or REGEXP_LIKE(TABLE_NAME,'^[X-Z][A-Z0-9]TD1[12]$')
     -- tables de 6 caracteres suffixes TD11 ou TD12 dont le premier vaut X, Y ou Z
  );

Par défaut
  • le REGEXP_LIKE est sensible à la casse (indiquez en 3ème paramètre un 'i' pour l'ignorer),
  • le "." signifie "caractère quelconque (indiquez 'n' pour qu'il signifie "new line"),
  • chaque ligne est considérée comme distincte des autres (indiquez 'm' pour que la source soient considérées comme une ligne unique),
  • par défaut les "blancs" de la REGEXP sont considérés tels quels (indiquez 'x' pour les ignorer).
Il existe d'autres commandes basées sur ce principe (REGEXP_REPLACE, REGEXP_INSTR, REGEXP_SUBSTR, REGEXP_COUNT). Il faut juste "un peu" de temps pour digérer toutes les règles !

SQL> select NMPRES, REGEXP_REPLACE(NMPRES,'(\S+), (\S+)','\2 \1') as NMPRE2 from ZY3Y where NMPRES like '%,%';

NMPRES                 
NMPRE2
----------------------- --------------------------
DAVIS, Linda            Linda DAVIS
FELTON, James
           James FELTON
RUSSO, Timothy
          Timothy RUSSO

Plus d'informations sur le site Oracle.

24 septembre 2014

Retirer le war peut provoquer la suppression de la webapp

Incident rencontré sur un Tomcat 7.0.47 et HRaSpace 7.30.50.

Suite à réception d'une correction sur la console d'audit, nous :
  • Fermons Tomcat, 
  • Supprimons l'ancienne arborescence webapps/hr-audit-console, 
  • Installons le war dans le répertoire webapps,
  • Et redémarrons. 
L'application est déployée et démarrée par Tomcat.

Nous refermons Tomcat, supprimons le war devenu inutile.
Mais au redémarrage de Tomcat, la webapp hr-audit-console est supprimée ...

Pour corriger ce comportement, la hotline nous a fait remplacer le fichier dom4j-1.4.jar (placé dans .../webapps/hr-audit-console/WEB-INF/lib) par dom4j-1.6.1.jar.

18 septembre 2014

IE bloque les JVM obsolètes

Suite à une mise à jour logicielle, IE refuse de démarrer la JVM car il l'estime obsolète :



Pour débloquer son poste, Marianne a ajouté une clef à la base de registre :
  • Ouvrir la base de registre (menu "start" / "Run" : "regedit")
  • Se positionner sur : HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\ 
  • Cliquer droit sur "Policies" puis "New" "Key"
  • Donner le nom : "Ext" à cette clef
  • Dans "Ext" créer par clic sur « New » « QWORD  (64-bit) » une propriété de nom "VersionCheckEnabled"

  • Vérifier par cliquer droit  sur "VersionCheckEnabled" / "modify" que la valeur est bien à "0".


Suite à sa mise à jour, IE accepte de démarrer la JVM...

Pour en savoir plus.