ban

Utiliser un fichier de logs avec Windows VBScript 

Voici une procédure permettant d'utiliser facilement un fichier log dans vos scripts VBScript:


Sub Log(pMessage)
Dim objFSO, objOutFile, sWorkingFileName, today
Const FOR_APPENDING = 8

sWorkingFileName = "log.txt"
Set objFSO = CreateObject("Scripting.FileSystemObject")
If objFSO.FileExists(sWorkingFileName) Then
Set objOutFile = objFSO.OpenTextFile(sWorkingFileName, FOR_APPENDING)
Else
Set objOutFile = objFSO.CreateTextFile(sWorkingFileName)
End If
today = Year(Now) & "/" & Right("00" & Month(Now), 2) & "/" & Right("00" & Day(Now), 2) & " " & Time
objOutFile.WriteLine today + " - " + pMessage

End Sub


Il suffit ensuite de l'appeler comme ceci:
Log "Application start"

Ce qui donne dans le fichier de logs:
2009/11/09 13:52:50 - Application start
[ Ajouter un commentaire ] ( 1 lecture ) permalien ( 0 / 0 )
Java: obtenir le document xml contenu dans un fichier docx 

Les fichiers docx contiennent un fichier xml, mais ce fichier xml est zippé dans le docx. Voici la procédure permettant d'obtenir le document xml (trouvé sur http://www.maxstocker.com/blog.php?en=c ... 9b3b863773):

/* Returns XML Document from a docx file
public Document getDocument(String File) throws Exception {
ZipFile docxfile = null;
try{
docxfile = new ZipFile(File);
}catch(Exception e){
// file corrupt or otherwise could not be found
throw new Exception("File is corrupted or is not a docx file.");
}
InputStream in = null;
try{
ZipEntry ze =
docxfile.getEntry("word/document.xml");
in = docxfile.getInputStream(ze);
}catch(NullPointerException nulle){
System.err.println("Expected entry word/document.xml does not exist");
throw new Exception("Expected entry word/document.xml does not exist");
}catch(Exception e){
throw new Exception("Error when trying to unzip the docx: " + e.getMessage());
}
Document document = null;
try{
DocumentBuilderFactory factory =
DocumentBuilderFactory.newInstance();
DocumentBuilder builder =
factory.newDocumentBuilder();
document = builder.parse(in);
}catch(ParserConfigurationException pce){
throw new Exception("ParserConfigurationException: " + pce.getMessage());
}catch(SAXException sex){
throw new Exception("SAXException: " + sex.getMessage());
}catch(IOException ioe){
throw new Exception("IOException: " + ioe.getMessage());
}finally{
try{
docxfile.close();
}catch(IOException ioe){
System.err.println("Exception closing file.");
throw new Exception("Unable to close the file (IOIOException): " + ioe.getMessage());
}
}

return document;

}
[ Ajouter un commentaire ] ( 1 lecture ) permalien ( 0 / 0 )
Vérifier la validité d'une adresse email 

J'ai trouvé sur Internet deux méthodes permettant de vérifier la validité d'une adresse email: une avec du PL/SQL et une autre en utilisant les expressions régulières.

Voici le code PL/SQL un peut modifié de http://www.developpez.net/forums/d60617 ... ite-email/

CREATE OR REPLACE FUNCTION INT_CODA.check_email(pUserName IN VARCHAR2)
RETURN boolean IS
l_dot_pos NUMBER;
l_at_pos NUMBER;
l_str_length NUMBER;
BEGIN
if pUserName is null or length(trim(pUsername)) = 0 then RETURN false; end if;
if instr(pUserName,'@.') > 0 then RETURN false; end if;

l_dot_pos := instr(pUserName
,'.');
l_at_pos := instr(pUserName
,'@');
l_str_length := length(pUserName);
IF ((l_dot_pos = 0) OR (l_at_pos = 0) OR (l_dot_pos = l_at_pos + 1) OR
(l_at_pos = 1) OR (l_at_pos = l_str_length) OR
(l_dot_pos = l_str_length))
THEN
RETURN false;
END IF;
IF instr(substr(pUserName
,l_at_pos)
,'.') = 0
THEN
RETURN false;
END IF;
RETURN true;
END check_email;
/


Voici une méthode utilisant les expressions régulières trouvée sur http://www.regular-expressions.info/email.html:
select REGEXP_INSTR('sebastien.thonnard@.com', '\b[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}\')
from dual


... Si le résultat de la requête est 0, l'adresse email est mauvaise.


[ Ajouter un commentaire ] ( 1 lecture ) permalien ( 0 / 0 )
SAS: Ajouter une colonne qui est la somme d'une expression arythmétique 

Vous avez un dataset avec une colonne contenant une expression arithmétique. L'objectif retenu ici est de créer un nouveau dataset avec une colonne contenant la somme de l'expression arithmétique:



En prenant en compte le fait que le dataset à gauche se nomme test, on peut créer le dataset test2 avec le code suivant:


%let tmp = 0;
data test2;
set test;
call symput('tmp',seat);
call execute ('%let tmp = %eval(&tmp);');
total = symget('tmp');
run;

[ Ajouter un commentaire ] ( 11 lectures ) permalien ( 0 / 0 )
BI Publisher: activer le log 

Dans BI Publisher, le fichier log n'est pas activé par défaut. Si par exemple vous décidez d'envoyer des rapports par mail et que l'envoi échoue, il est impossible de savoir pour quelle raison. Il y a une petite manipulation à faire pour activer le log:

-Rendez-vous dans le dossier jre/lib de votre JDK (par exemple c:\jdk15\jre\lib)
-Créez dans ce dossier un fichier xdodebug.cfg
-Ajoutez ces deux instructions dans le fichier xdodebug.cfg:

LogLevel=STATEMENT
LogDir=c:\bilog

-Sauvegardez le fichier et redémarrez BI Publisher

Le log de BI Publisher sera alors écrit dans le dossier c:\bilog
[ Ajouter un commentaire ] ( 7 lectures ) permalien ( 0 / 0 )
BI Publisher: oracle.apps.xdo.security.validateexception 

J'ai eu l'exception oracle.apps.xdo.security.validateexception en essayant de me connecter en administrateur à BI Publisher. Il semble que ce soit le modèle de sécurité qui était mauvais. J'ai du changer le paramètre SECURITY_MODEL du fichier xmlp-server-config.xml à XDO (il était à BI_SERVER). Le fichier xml à changer se trouve chez moi dans c:\OracleBI\xmlp\Admin\Configuration.

J'ai maintenant la propriété <property name="SECURITY_MODEL" value="XDO"/> à la place de <property name="SECURITY_MODEL" value="BI_SERVER"/>
.

Attention, il faut redémarrer le serveur pour prendre ce changement en compte.
[ Ajouter un commentaire ] ( 23 lectures ) permalien ( 0 / 0 )
ODS ExcelXp: Unable to read SAS Report file 

J'ai testé, dans Enterprise Guide, la génération d'un rapport sous un format destiné à Excel grâce à ODS. Pour effectuer cette tâche, j'ai utilisé ExcelXp. Voici le code que j'ai exécuté en guise d'essai:

ods tagsets.excelxp file="spacing.xls" style=statistical
options( skip_space='3,2,0,0,1' sheet_interval='none'
suppress_bylines='no');
proc sort data=sashelp.class out=class;
by age;
run;
proc print data=class;
by age;
run;
ods tagsets.excelxp close;


En essayant d'ouvrir le résultat dans Enterprise Guide, j'ai le message d'erreur suivant:


Apparement, le visualizer intégré à Enterprise Guide ne peut pas interpréter ce genre de fichier. Le résultat d'une sortie ODS en utilisant excelxp est en fait un fichier Xml utilisable par Excel 2002.

Pour pouvoir voir ce fichier, il faut l'exporter hors d'Enterprise Guide:




[ Ajouter un commentaire ] ( 8 lectures ) permalien ( 0 / 0 )
SAS: format pour afficher les pourcentages 

Voici un format permettant d'afficher les pourcentages dans SAS:

proc format library=work;
picture FPerctest (round)
low-< -1 ="000.00%" (mult = 100 prefix = "-")
-1 -< 0 ="9.00%" (prefix = "-")
0 - < 1 ="9.00%"
1 - high ="000.00%" (mult = 100 );
run;


18.24 deviendra 18.24 %, 0 deviendra 0.00%, ...

Il est aussi possible de réutiliser ce format pour ne garder que deux chiffres après la virgule:

proc format library=work;
picture FPerctest (round)
low-< -1 ="000.0%" (mult = 100 prefix = "-")
-1 -< 0 ="9.0%" (prefix = "-")
0 - < 1 ="9.0%"
1 - high ="000.0%" (mult = 100 );
run;

[ Ajouter un commentaire ] ( 8 lectures ) permalien ( 0 / 0 )

| 1 | 2 | 3 | 4 | Suivant> >>