Uno scrittoio digitale …

24 maggio 2016

msgpack

Archiviato in: code — Tag:, , , , — admin @ 09:18

It’s like JSON. but fast and small.

18 ottobre 2012

Pep 3149

Archiviato in: linux, python — Tag:, — admin @ 23:00

pi@raspberrypi ~ $ ls -l /usr/bin | grep python
-rwxr-xr-x 1 root root 30284 Jun 6 03:08 dh_python2
-rwxr-xr-x 1 root root 21455 Aug 2 22:04 dh_python3
-rwxr-xr-x 1 root root 94 Apr 22 20:32 idle-python2.7
-rwxr-xr-x 1 root root 94 Jun 25 23:11 idle-python3.2
lrwxrwxrwx 1 root root 23 Apr 23 09:09 pdb2.7 -> ../lib/python2.7/pdb.py
lrwxrwxrwx 1 root root 23 Jun 26 05:34 pdb3.2 -> ../lib/python3.2/pdb.py
lrwxrwxrwx 1 root root 31 Aug 2 22:04 py3versions -> ../share/python3/py3versions.py
lrwxrwxrwx 1 root root 9 Jun 6 03:08 python -> python2.7
-rwxr-xr-x 1 root root 2736676 Apr 23 09:08 python2.7
lrwxrwxrwx 1 root root 9 Aug 2 22:04 python3 -> python3.2
lrwxrwxrwx 1 root root 11 Jun 26 05:34 python3.2 -> python3.2mu
-rwxr-xr-x 1 root root 2657952 Jun 26 05:34 python3.2mu
lrwxrwxrwx 1 root root 11 Aug 2 22:04 python3mu -> python3.2mu
lrwxrwxrwx 1 root root 29 Jun 6 03:08 pyversions -> ../share/python/pyversions.py

Mi ha incuriosito la versione mu di python3.2 … e carcando, cercando … la risposta si trova qua.

10 maggio 2012

Python __slots__

Archiviato in: sapere è potere — Tag: — admin @ 20:18

Non si duplicano mai le righe di codice e gli articoli ben scritti:

mypythonnotes
docs python it

29 aprile 2012

Python definition

Archiviato in: python — Tag: — admin @ 15:55

Iterable object is any object which responds to the __iter__() or __getitem__()

Iterator responds to next() and raises a StopIteration exception when there are no more elements

Generator is a function which returns an iterator: to implement a generator simply use the yield keyword to successively return values to the calling context and raise a StopIteration when done

Python script

Archiviato in: oracle — Tag:, , , , — admin @ 14:26

Per il download di tutti i pdf collegati alla pagina del prof. cazzola per il corso di PA:


import re
import os
import base64
import urllib.request

baseUrl = "http://cazzola.dico.unimi.it/"
username = ""
password = ""

if __name__ == "__main__":
    fd = open('page.html')

    opener = urllib.request.build_opener()
    base64string = base64.encodestring(bytes('{0}:{1}'.format(username, password), "utf-8"))[:-1]
    opener.addheaders = [('Authorization', "Basic {0}".format(base64string.decode()))]

    for line in fd.readlines():
        paths = re.findall("[a-zA-Z0-9/\-%\(\).&;]+pdf", line)

        if (len(paths) > 0):
            url = paths[0].replace("&", "&")
            fl = opener.open(baseUrl + url)
            name = url.split("/")[-1].replace("%20", " ")

            pdf = open("output" + os.sep + name, "wb")
            pdf.writelines(fl.readlines())
            pdf.close()

            print("downloaded ... " + name)

Nota: username e password devono essere richiesti direttamente a lui

9 ottobre 2011

Python Libs

Archiviato in: code, python — Tag:, , — admin @ 12:54

Due progetto da tenere sott’occhio:

you-tube
networkx

8 settembre 2011

Languages with multiple inheritance

Archiviato in: code, python — Tag:, , — admin @ 19:50

diamond problem

13 gennaio 2011

python resource finder

Archiviato in: code — Tag: — admin @ 12:08

http://nullege.com/
http://www.google.it/codesearch?hl=it

29 agosto 2010

Solitario in Python

Archiviato in: python — Tag:, — admin @ 22:31

Mentre mi godevo le ferie, tra un bagno, il sole e le belle serate passate a Siracusa … ho implementato in python un simpatico solitario.

solitario

Il gioco consiste nel togliere una qualunque delle pedine, in genere quella centrale e, seguendo le regole stabilite, restare alla fine con un’unica pedina sulla scacchiera. Tutte le altre pedine vengono “mangiate” con un salto che è simile a quello del gioco della dama, però i salti permessi sono soltanto orizzontali o verticali, mai diagonali. Ogni pedina saltata viene tolta dalla scacchiera e la soluzione più elegante prevede che rimanga un’unica pedina collocata esattamente nella casella che all’inizio del gioco era vuota.
Qualche tentativo è sufficiente per convincerci della difficoltà di questo gioco. Non è facile restare con una sola pedina, anche in una posizione diversa da quella della casella vuota iniziale.
La matematica ci può aiutare suggerendoci la strada per semplificare il problema: basta scomporlo in una serie di problemi più semplici. Questa è la tecnica più comune del “problem solving”, applicata in questo caso al Solitario. E’ un gioco studiato da molti matematici e in particolare da John Horton Conway in Winning Ways for your Mathematical Plays, un bel libro che purtroppo non è mai stato tradotto in italiano.

Unica dipendenza del gioco è questa libreria grafica
installabile con un semplice comando dato nella dir estratta …
> python setup.py install

a questo punto scaricate il sorgente del gioco ed eseguite …
> python Main.py

buon divertimento …

4 luglio 2010

dbus

Archiviato in: code — Tag:, , , — admin @ 09:58

Non voglio riscrivere quello che già è spiegato molto bene sul web:
dbus
dbus-tutorial
wikipedia

Ho fatto un piccolo esempio in Python. Avendo usato rmi in Java mi sono trovato molto a mio agio.

Service

#!/usr/bin/env python

import dbus
import dbus.service
import dbus.glib
import gobject

class SomeObject(dbus.service.Object):
    def __init__(self, bus_name, object_path="/SomeObject"):
        dbus.service.Object.__init__(self, bus_name, object_path)

    @dbus.service.method("org.designfu.SampleInterface")
    def HelloWorld(self, hello_message):
        print (str(hello_message))
        return ["Hello", " from example-service.py"]

    @dbus.service.method("org.designfu.SampleInterface")
    def GetTuple(self):
        return ("Hello Tuple", " from example-service.py")

    @dbus.service.method("org.designfu.SampleInterface")
    def GetDict(self):
        return {"first": "Hello Dict", "second": " from example-service.py"}

session_bus = dbus.SessionBus()
name = dbus.service.BusName("org.designfu.SampleService", bus=session_bus)

SomeObject(name)

mainloop = gobject.MainLoop()
mainloop.run()

Client

#!/usr/bin/env python

import dbus

bus = dbus.SessionBus()
remote_object = bus.get_object("org.designfu.SampleService", "/SomeObject")

hello_reply_list = remote_object.HelloWorld(
	"Hello from example-client.py!", dbus_interface = "org.designfu.SampleInterface")

print "1)", hello_reply_list, "\n"

iface = dbus.Interface(remote_object, "org.designfu.SampleInterface")
print "2)", str(iface.GetTuple()), "\n"
print "3)", str(iface.GetDict()), "\n"

print remote_object.Introspect(dbus_interface="org.freedesktop.DBus.Introspectable")

21 giugno 2010

Piccolo teorema di Fermat

Archiviato in: code, sapere è potere — Tag:, , — admin @ 20:18

Come ho fatto a vivere senza questa informazione ? facile … basta non pensarci :D
Piccolo_teorema_di_Fermat

Una mia ( e rozza ) implementazione in Python … ATTENZIONE ALL’INDENTAZIONE !!?

"""
Simple implementation of Fermat's little theorem
"""

import sys

def main():
	args = sys.argv[1:]
	if (len(args) != 1):
		print "Give me only one number ..."
	else:
		cn = int(args[0])
		interval = range(cn)[1:]

		p = cn	#otherwise fail with parameters '1'
		for p in interval:
			r = ((p ** cn) - p) % cn
			if (r != 0):
				print cn, "/", p, "=", r
				print cn ,"is not PRIME"
				p = -1
				break

		if (p != -1):
			print cn ,"is PRIME"

if __name__ == "__main__":
	main()

Vorrei migliorarlo … basta vedere che per sapere se 10169 è primo o no … sul mio pc sono richiesti quasi 2 min.
Chi mi aiuta ?

24 maggio 2010

Python

Archiviato in: code, linux, sapere è potere — Tag:, , — admin @ 20:44

Da poco meno di un mese mi sono concentrato su questo simpatico linguaggio il cui nome deriva da una commedia Monty Python andata in onda nel corso degli anni 70.

Tutto quello che serve … sito ufficiale della comunità italiana

Le caratteristiche che mi hanno fatto puntare questo prodotto open source

  • interpretato estremamente veloce
  • interattivo
  • orientato agli oggetti
  • estremamente modulare (esiste un modulo per fare qualunque cosa)
  • tipizzazione dinamica
  • di alto livello se lo desideri
  • estendibile in C / C++
  • portabile

NOTA PER I JAVISTI
jython

Funziona con WordPress