Objectif : créer un composant COM grâce à VB.NET jouant le rôle du client du webservice
URL du fichier descriptif (fichier wsdl) du webservice: Cette classe jouera de rôle entre l'application utilisatrice du composant COM et le WebService. En mode console, utilisation de l'outil du SDK.Net nommé "wsdl" : wsdl /language:VB /out:ProxyWebService.vb http://www.site.com:8080/mywebservice?wsdl /language:VB -> génération d'une classe en VB.NET Si pour une raison de configuration de proxy, vous obtenez un message d'erreur, recopiez le fichier wsdl en local avec l'extension .wsdl et utilisez : wsdl /language:VB /out:ProxyWebService.vb C:\dev\fichierWSDL.wsdl 3.Création d'un objet COM en VB.NET Suivre l'article suivant : [PaP - Objet COM en VB.NET] Sauf pour les étapes 3,4,6,7
|
mercredi, avril 21, 2004
PaP - Créer un client d'un WebService sous forme d'objet COM en VB.NET
mardi, janvier 06, 2004
Installation et Utilisation de Installer5 (packaging Py/Win)
Installer 5 permet de créer un executable à partir de sources python. Il crée un .exe à partir des sources d'un projet.
Il réunit ainsi dans un répertoire :
* un fichier .exe contenant les sources compilées
* le fichier python22.dll
* les différents fichiers .pyd (lilbrairie dynamique python) employés par le projet
[rédigé avec les versions Installer 5b4 et python 2.2.1]
1. Download l'archive installer5b4 à http://www.mcmillan-inc.com/installer_dnld.html
2. La décompresser dans un répertoire ex: c:\dev\installer
3. En mode console, se placer dans c:\dev\installer
4. Création d'un fichier .spec, contenant les détails du projet à packager.
Code: |
makespec.py c:\projet\fichier_principal.py |
- notes:
- lors de la création du .spec, les sources n'ont pas besoin d'avoir été compilées, installer se charge de les compiler
- le fichier_principal est celui qui doit contenir le point d'entrée de l'application
5. Création du package (répertoire contenant le .exe, la DLL python et les .pyd).
Code: |
build.py fichier_principal\fichier_principal.spec |
- notes:
- un répertoire du nom du fichier source principal a été crée dans c:\installer
- le répertoire fichier_principal\dist+fichier_principal\ contient tous les fichiers nécessaires à une installation de l'application sur un poste windows quelconque
jeudi, janvier 01, 2004
Divers 2004 - Python
Module re (Regular Expression) - Search vs Match
"Python offers two different primitive operations based on regular expressions: match and search. If you are accustomed to Perl's semantics, the search operation is what you're looking for. See the search() function and corresponding method of compiled regular expression objects.
Note that match may differ from search using a regular expression beginning with "^": "^" matches only at the start of the string, or in MULTILINE mode also immediately following a newline. The ``match'' operation succeeds only if the pattern matches at the start of the string regardless of mode, or at the starting position given by the optional pos argument regardless of whether a newline precedes it. "
La différence entre match et search réside dans l'emploi de ^ et sa signification. Search considère que "^" représente le début de toutes les lignes. Match considère que "^" représente uniquement le premier caractère de la chaine à analyser et non le premier caratère de chaque nouvelle ligne.
Illustration :
Code: |
>>> re.compile("^a",re.M).match("\na") # echec >>> re.compile("^a",re.M).search("\na") # success >>> re.compile("^a",re.M).match("toto\nabc") # echec >>> re.compile("^a",re.M).search("toto\nabc") # succes - ici search est valide car "^" indique pour lui le début de n'importe qu'elle nouvelle ligne |
Si on précise une position de départ d'analyse dans la chaine, cette position de départ est représentée par "^", dans ce cas match considére que le premier caractère est celui possédant comme index la position
Illustration :
Code: |
>>> re.compile("^bonjour",re.M).match("salut\nbonjour\ntout le monde") # echec >>> re.compile("^bonjour",re.M).match("salut\nbonjour\ntout le monde",6) # success - la position 6 est le \n |
[note:re.compile(RegExp).match(Expression a tester, pos debut de test, pos fin)]
Exemples de la documentation :
Code: |
re.compile("a").match("ba", 1) # succeeds re.compile("^a").search("ba", 1) # fails; 'a' not at start re.compile("^a").search("\na", 1) # fails; 'a' not at start re.compile("^a", re.M).search("\na", 1) # succeeds re.compile("^a", re.M).search("ba", 1) # fails; no preceding \n |
Autres exemples :
Code: |
>>> re.compile("toto\n^a",re.M).match("toto\nabc") # succes |
Exemples d'utilisation de variable :
Code: |
>>> re.match("(?P<name>.+) (?!(?P=name))","55 55") # echec >>> re.match("(?P<name>.+) (?!(?P=name))","55 56") # succes |
Méthodes Statiques
A partir de la version 2.2, python gère les méthodes statiques via la fonction staticmethod() :
Code: |
class C: def foo(x, y): print "staticmethod", x, y foo = staticmethod(foo) C.foo(1, 2) |
Traitements sur List ou Tuple
Pour appliquer un traitement à tous les éléments d'une liste, ou d'un tuple, et celà, récursivement.
exemple:
on veut multiplier par deux toutes les valeurs de l
l = [1 , [ 4 , 3 ] , 2 , [ [3,9],8] ]
l = [2 , [ 8 , 6 ] , 4 , [ [6,18],16] ]
fonction récursive de parcours :
Code: |
def function(sequence): if (type(sequence) is list) or (type(sequence) is tuple): index = 0 for val in sequence: function(val) pass else: print sequence # traitment pass pass |
fonction récursive pour modifier tous les éléments :
(attention, seul le type list peut être modifié en python)
Code: |
def function(sequence): if (type(sequence) is list): index = 0 for val in sequence: sequence[index] = function(val) index = index + 1 pass return sequence else: return sequence * 2# traitment pass pass |
SGBDR et SGBDOO en Python
SGBDR écrit en Python :
Gadfly
l'enregistrement direct d'objets pythons en base, avec construction automatique d'une table mappant l'objet en question
SGBDOO Python :
Durus - Systeme de Persistance d'objet et Transaction
ZODB - Idem en plus avancé, utilisé dans Zope
Liens
Site officiel
http://www.python.org
Plusieurs liens python
http://www.python-eggs.org/links.html
Packaging de script python sous Windows
http://www.mcmillan-inc.com/install5_ann.html
http://starship.python.net/crew/theller/py2exe/
IDE Performant - HAP Python Remote Debugger
http://hapdebugger.sourceforge.net/
Psyco - optimiser lexecution dun code python
"Psyco is a specializing compiler for the Python language"
http://psyco.sourceforge.net/
Pyrex - permet d'écrire des extensions a python compilées en C
"A Language for Writing Python Extension Modules"
http://www.cosc.canterbury.ac.nz/~greg/python/Pyrex/
Plex - Module python implémentant GNU Flex (=Lex) - Analyseur lexical
http://www.cosc.canterbury.ac.nz/~greg/python/Plex/
"The Biopython Project is an international association of developers of freely available Python tools for computational molecular biology"
http://www.biopython.org/
Python Performance Tips
http://manatee.mojam.com/~skip/python/fastpython.html
SciPy
"Python for Scientific Computing Workshop"
http://www.scipy.org/
Numerical Python
"Numerical Python adds a fast, compact, multidimensional array language facility to Python"
http://pfdubois.com/numpy/
[Intégration autres langages]
Weave - "a Tool for Inline C/C++ in Python"
http://www.scipy.org/site_content/weave
PyInline - "Inline for Python"
http://pyinline.sourceforge.net/
[Crypto]
*Eric A. Young
http://www.python.org/workshops/1995-12/papers/kuchling.html
*PyCrypto
http://www.amk.ca/python/code/crypto.html
et http://www.amk.ca/python/writing/pycrypt/ (doc. complète sur la cryptologie)
[Framework Jeux]
PyGame
http://www.pygame.org/
PyKyra
http://sourceforge.net/projects/kyra
PythonWare Daily Python-URL (WebLOG Dev Python)
http://www.pythonware.com/daily/