lunedì 25 agosto 2008

Appengine 1.1.2

Powered by Google App Engine Google ha rilasciato un aggiornamento della sua Appengine.
Siamo alla 1.1.2

giovedì 21 agosto 2008

Python, Django, and App Engine

Guido van Rossum spiega le basi delle Google Application

sabato 26 luglio 2008

Appengine update

E' stata rilasciata la versione 1.1.1 del SDK di Appengine.
E da ieri le applicazioni che ogni utente può creare sono passate da 3 a 10.

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.