Diferència entre revisions de la pàgina «Python»

De Cacauet Wiki
Salta a la navegació Salta a la cerca
 
(Hi ha 17 revisions intermèdies del mateix usuari que no es mostren)
Línia 25: Línia 25:
  
 
== Més Python ==
 
== Més Python ==
 +
* Per generar passwords aleatòries: http://stackoverflow.com/questions/2257441/python-random-string-generation-with-upper-case-letters-and-digits
 
* Per activar el debug per la pantalla del navegador enlloc de /var/log/apache2/error.log:
 
* Per activar el debug per la pantalla del navegador enlloc de /var/log/apache2/error.log:
 
*:http://code.google.com/p/modwsgi/wiki/DebuggingTechniques#Error_Catching_Middleware
 
*:http://code.google.com/p/modwsgi/wiki/DebuggingTechniques#Error_Catching_Middleware
Línia 32: Línia 33:
 
**Virtualenv
 
**Virtualenv
 
**First Pyramid app: http://docs.pylonsproject.org/projects/pyramid/en/1.2-branch/narr/firstapp.html#firstapp-chapter
 
**First Pyramid app: http://docs.pylonsproject.org/projects/pyramid/en/1.2-branch/narr/firstapp.html#firstapp-chapter
**'''Estructura d'arxius Pyramid'''. Els scaffolds per Pyramid no van com indiquen els tutorials (v.2.7 de python). Pots descarregar [[Fitxer:Myapp.tgz]] aquesta plantilla per Pyramid i canviant totes les cadenes "myapp" que trobis (particularment en development.ini). Els següents links no van del tot bé però la doc serveix:
+
**Primer projecte Pyramid: http://docs.pylonsproject.org/projects/pyramid/en/latest/narr/project.html?awesome
**:<strike>Scaffolds (1r projecte): http://docs.pylonsproject.org/projects/pyramid/en/1.2-branch/narr/project.html#project-narr</strike>
 
**:<strike>Paster (Pylons) i .ini file: http://docs.pylonsproject.org/projects/pyramid/en/1.2-branch/narr/paste.html</strike>
 
 
**WSGI integració de Pyramid (Pylons) amb Apache: http://code.google.com/p/modwsgi/wiki/InstallationInstructions
 
**WSGI integració de Pyramid (Pylons) amb Apache: http://code.google.com/p/modwsgi/wiki/InstallationInstructions
 
* Més Pyramid:
 
* Més Pyramid:
Línia 40: Línia 39:
 
**Authentication: http://sluggo.scrapping.cc/python/Akhet/auth.html
 
**Authentication: http://sluggo.scrapping.cc/python/Akhet/auth.html
 
**...
 
**...
* Per començar a utilitzar MySQL amb Python:
+
* Python i DDBB:
*:http://www.kitebird.com/articles/pydbapi.html
+
** MySQL: http://www.kitebird.com/articles/pydbapi.html
 +
** MongoDB: Pymongo
 +
** AWS (SimpleDB, DynamoDB): [http://boto.cloudhackers.com/en/latest/index.html boto library]
 +
** ...
 +
* Cookies:
 +
** http://www.jayconrod.com/posts/17/how-to-use-http-cookies-in-python
 
* Persistència d'objectes:
 
* Persistència d'objectes:
**Amb pickle: http://docs.python.org/library/pickle.html
+
** Amb pickle: http://docs.python.org/library/pickle.html
**En BD: ...
+
** Shelves
 +
** ZODB
 
*GUI: hi ha diverses opcions:
 
*GUI: hi ha diverses opcions:
 
**wxPython: http://wxpython.org/ Té editors visuals com wxDesigner o wxGlade
 
**wxPython: http://wxpython.org/ Té editors visuals com wxDesigner o wxGlade
 
**PyQt: http://zetcode.com/tutorials/pyqt4/firstprograms/ Té editor visual QtDesigner.
 
**PyQt: http://zetcode.com/tutorials/pyqt4/firstprograms/ Té editor visual QtDesigner.
 
**...
 
**...
* ...
+
* Àudio:
<br>
+
** Snack sound (necessita també Tcl/Tk): http://www.speech.kth.se/snack/
 +
** Pygame: http://www.pygame.org/
 +
** ...
  
== Virtualenv ==
+
== Web services: Cornice ==
Resulta convenient disposar d'un entorn on poguem tenir les versions de Python que ens interessi i que no siguin les del sistema. Virtualenv ens pot ajudar.
+
Package: Cornice
...TODO...
 
<br>
 
  
== Paste script per desenvolupament i desplegament ==
+
Abans de començar cal crear un nou projecte amb Pyramid ([[Buildout]]) i cal afegir la '''llibreria cornice''' al '''buildout.cfg'''.
...TODO...
 
  
== Per començar un buildout ==
+
* Treballarem amb JSON: [http://en.wikipedia.org/wiki/JSON wikipedia] i [http://www.json.org/ json.org]. Java utilitza XMLRPC, i Microsfot SOAP.
El buildout ens permet descarregar els paquets en versions concretes per no dependre del sistema on tenim l'aplicació instal·lada.
+
* Doc.oficial: http://packages.python.org/cornice/
 +
* Interessant i essencial el "Quick Start for people in a hurry" (emmagatzema objectes JSON), però hi ha un error: on diu _VALUES.set(...) en realitat ha de ser:<pre>_VALUES[key] = json.loads(request.body)</pre>
 +
* També necessitarem CURL (amb apt-get). Consulta el man o també online: http://curl.haxx.se/docs/manpage.htm
 +
** OJU amb JSON i curl, les cometes han de ser simples per tot el objecte JSON i dobles pels elements:<pre>$ curl http://el/meu/servei -d '{"nom1":"valor1",...}'</pre>
 +
** Més opcions curl: -X {GET|POST|PUT}
 +
* Llibreria PycURL: http://pycurl.sourceforge.net/ ens permet fer crides des de python amb cURL.
 +
** Oju: s'ha d'instal·lar al sistema (o al virtualenv) i cal afegir prèviament els paquets: python2.?-dev i libcurl4-gnutls-dev
 +
** Després ja es pot instal·lar amb <pre>$ easy_install pycurl</pre>
 +
* Millor que pycurl és urllib que ja està al sistema i per fer el fet anirem més ràpids
 +
*...
 +
<br>
  
#Iniciar arxius de projecte
+
== Criptografia ==
#...TODO... (IMPORTANT)
+
* Crypt: (one-way) http://docs.python.org/library/crypt.html
# Actualitzar la darrera versió del "distribute":
+
* PyCrypto: http://pypi.python.org/pypi/pycrypto/
#*http://pypi.python.org/pypi/distribute/#downloads
+
** Doc original: http://packages.python.org/pycrypto/
#*:$ wget http://python-distribute.org/distribute_setup.py
+
** Exemple molt clarificador: http://www.laurentluce.com/posts/python-and-cryptography-with-pycrypto/
#*:$ python distribute_setup.py
+
** Per gravar la key en fitxer: http://stackoverflow.com/questions/9197507/saving-rsakeys-to-a-file-using-pycrypto
#*També es podria fer instal·lant un package del sistema, però podem tenir problemes de dependències després.
+
* Pot ser útil la llibreria base64 per codificar el resultat xifrat en caràcters compatibles ASCII i poder-ho passar per HTTP (JSON o el què sigui).
#Iniciem el bootstrap:<pre>$ python bootstrap.py</pre>
+
** Base64 lib: http://docs.python.org/library/base64.html
#Activem la descàrrega i instal·lació:<pre>bin/buildout -v</pre>
+
* ...
#...
 

Revisió de 12:17, 7 maig 2013

Python és un llenguatge interpretat i completament orientat a objectes. Les seves principals aplicacions son:

  • Aplicacions web
  • Aplicacions d'escriptori (com GNOME, etc.)

Google ha impulsat molt la seva utilització. És més segur que altres llenguatges com PHP.

Primeres passes amb Python[modifica]

...

Instal·lació en Apache2 amb mòdul WSGI[modifica]

Per poder utiltizar Python en Apache2 es pot fer de 2 maneres:

  • Com a script CGI i amb el mòdul libapache2-mod-python (desaconsellat)
  • Com a script WSGI, que és el standard per Python. Els detalls a continuació son per aquesta versió.

Per tant:

  1. Instal·la el mòdul WSGI
  2. Segons el fòrum anterior s'instal·la de manera que els scripts s'executen si tenen l'extensió .wsgi
    • Pots afegir l'extensió .py alhora que la .wsgi per executar scripts Python en Apache.
  3. Segueix el tutorial per posar en marxa la primera aplicació Python-WSGI
    • http://webpython.codepoint.net/wsgi_tutorial
    • En aquest tutorial es posa en marxa el servidor des de la línia de comandes. El entorn wsgi ens permet executar l'aplicació mitjançant un servidor httpd propi (sense Apache) i accedint a un port particular. Si vols executar-ho en l'entorn Apache has de treure la crida a httpd.handle_request o httpd.serve_forever i posar-ho en un directori visible per l'Apache (/var/www o com ho tinguis configurat).


Més Python[modifica]

Web services: Cornice[modifica]

Package: Cornice

Abans de començar cal crear un nou projecte amb Pyramid (Buildout) i cal afegir la llibreria cornice al buildout.cfg.

  • Treballarem amb JSON: wikipedia i json.org. Java utilitza XMLRPC, i Microsfot SOAP.
  • Doc.oficial: http://packages.python.org/cornice/
  • Interessant i essencial el "Quick Start for people in a hurry" (emmagatzema objectes JSON), però hi ha un error: on diu _VALUES.set(...) en realitat ha de ser:
    _VALUES[key] = json.loads(request.body)
  • També necessitarem CURL (amb apt-get). Consulta el man o també online: http://curl.haxx.se/docs/manpage.htm
    • OJU amb JSON i curl, les cometes han de ser simples per tot el objecte JSON i dobles pels elements:
      $ curl http://el/meu/servei -d '{"nom1":"valor1",...}'
    • Més opcions curl: -X {GET|POST|PUT}
  • Llibreria PycURL: http://pycurl.sourceforge.net/ ens permet fer crides des de python amb cURL.
    • Oju: s'ha d'instal·lar al sistema (o al virtualenv) i cal afegir prèviament els paquets: python2.?-dev i libcurl4-gnutls-dev
    • Després ja es pot instal·lar amb
      $ easy_install pycurl
  • Millor que pycurl és urllib que ja està al sistema i per fer el fet anirem més ràpids
  • ...


Criptografia[modifica]