mercoledì 16 luglio 2008

Creare un banale Web Service con vb.net

Da Visual Web Developer aggiungere un nuovo elemento di tipo Servizio Web.

Un esempio elementare di codice per rendere disponibile tramite web services una stringa di testo è questo:

Imports System.Web
Imports System.Web.Services
Imports System.Web.Services.Protocols


'<'webservice(namespace:="http://indirizzodelserver/")> _
'<'webservicebinding(conformsto:=wsiprofiles.basicprofile1_1)> _
'<'global.microsoft.visualbasic.compilerservices.designergenerated()> _
Public Class servizioweb
Inherits System.Web.Services.WebService

'<'webmethod()> _
Public Function testoweb() As String
Return "Ciao WEB"
End Function

End Class



Pubblicando su di un sito IIS il file .asmx di cui sopra si renderà disponibile la stringa testoweb.

Per richiamarla, ad esempio tramite una applicazione Visual Basic, da un altro server è sufficiente inserire nel programma un riferimento al servizio come nell'immagine qui sotto digitando http://indirizzoserver/nomedelwebservice.asmx


E poi la si può utilizzare ad esempio così:

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

Dim MyService2 As shw.hwSoapClient = New shw.hwSoapClient
Dim servizioweb As servizioweb.serviziowebSoapClient = New servizioweb.serviziowebSoapClient

TextBox2.Text = servizioweb.testoweb

End Sub

lunedì 23 giugno 2008

Semplicità disarmante

Chi ha esperienza di programmazione in Java può ben valutare il confronto.
Ma anche rispetto ad altri linguaggi credo che in fatto di semplicità Python non sia secondo a nessuno.

Riporto qui 3 esempi.

  • Scrittura lettura su file.
      • fout = open("output.txt", "w")
      • fout.write("La prima riga\n")
      • fout.write("Una seconda riga cinchialesca\n")
      • fout.close()
      • fin = open("output.txt", "r")
      • for line in fin:
        print line
  • Eseguire un comando del sistema operativo.
      • import os
      • fd = os.popen('calc')
      • #outtext = fd.read()
      • fd.close()
  • Lettura di una database via ODBC*.
      • import odbc
      • try:
        s = odbc.odbc('NomeODBC') # mi collego al DSN
        cur = s.cursor()
        cur.execute('select * from NomeTabella')
        rec = cur.fetchall()
        for i in rec:
        print i[0] + ' -- ' + i[1] #Nota - Stampo i campi in posizione 0 e 1
      • except:
        print 'errore'
*Per utilizzare gli ODBC occorre installare anche l'estensione per Windows che trovate qui: http://sourceforge.net/projects/pywin32/

lunedì 16 giugno 2008

Spedire un email con Python

Un semplice programma per spedire un messaggio di testo tramite un server SMTP

import smtplib
server = smtplib.SMTP('nomeserver-SMTP','porta')
server.login('utente', 'password')
server.sendmail('indirizzomitente','indirizzodestinatario','testo di prova invio')
print "inviato"
server.quit()

giovedì 12 giugno 2008

Configurare app.yaml

Sintetizzo (e forse banalizzo) alcuni concetti per renderli spero più comprensibili.
Nel file app.yaml si trovano le configurazioni dei comandi che Google App recepisce tramite il browser.
Aggiungendo le righe di cui sotto (al file app.yaml)
  • handlers:
  • - url: /nomecomando/(.*?)/(.*)
  • script: cartellafiles/d2/\1.py
diciamo al programma che quando arriva una riga-comando come questa :
  • http://localhost:8080/nomecomando/gprog/gcom
vada nella sottocartella "cartellafiles/d2/" legga il programma gprog.py ed esegua il comando gcom, ovvero:
  • cartellafiles/d2/gprog.py gcom
Nel programma gprog.py dovremo configurare opportunamente il "main" che dovrà comprendere correttamente le istruzioni "http://localhost:8080/nomecomando/gprog/gcom" come sotto, per richiamare la classe MainPage
  • def main():
  • application = webapp.WSGIApplication(
  • [('nomecomando/gprog/gcom', MainPage)
  • ('nomecomando/gprog/ins1*',ins1,
  • ....etc...
  • ],
  • debug=True)

*Altre istruzioni possono poi essere aggiunte.

mercoledì 11 giugno 2008

Google Docs Api


Ho provato le Api dei Google Docs, naturalmente in versione Python.

E' possibile fare molte cose interessanti, per esempio leggere e scrivere dati direttamente da programma sui fogli di calcolo presenti nelle cartelle dei GoogleDocs.

Qui un esempio di codice.
Se lo provate da console locale (python example.py) fate attenzione durante il comando update ad inserire la colonna come numero.
Es. update 1 1 'prova'.
Inserirà la stringa 'prova' nella cella 'A1'.

Per accedere direttamente ai vostri SpreadSheet su Google dovete individuare il codice del documento ed il sotto-codice del foglio specifico.

Per fare questo in modo diretto vi consiglio di ricavare i codici stampandoli tramite questi comandi :
print self.curr_key
print self.curr_wksht_id
Potete aggiungerli ad example.py.

Ho poi provato a far funzionare il programma dalle Google App e ci sono riuscito, ma solo facendo l'updolad anche di tre librerie aggiuntive: atom,_xmlplus, gdata.

giovedì 5 giugno 2008

komodo

Ho provato Komodo Edit.
La versione 4.3.2 ha qualche problema.

Ho scoperto che c'è la 4.4.0 beta1.

Vediamo se hanno coperto un po' di buchi.

mercoledì 4 giugno 2008

Bulk Upload

Dopo non pochi sforzi sono finalmente riuscito a fare il Bulk Upload di una tabella con date e numeri.


def __init__(self):
bulkload.Loader.__init__(self, 'xxx',[
('data', lambda x: datetime.strptime(x,"%Y/%m/%d %H:%M:%S")),
('float', lambda x: float(x)),
('numero', int),
('nome', str),
('nomenumero, lambda x: float(x) if not x == 'ERROR' else None),
])


grazie a l8rz.