[Python] [Announce] PySwfdec 0.6.6

2008-05-08 Per discussione Gian Mario Tagliaretti
I am pleased to announce version 0.6.6 of the Python bindings for
PySwfdec.

It is available at:
http://www.gnome.org/~gianmt/pyswfdec-0.6.6.tar.gz
MD5: 4162579ccecc007dfabfea7667321b49

The bindings are updated with the new Swfdec API 0.6.6

Blurb:
==
Swfdec [1] is the library for decoding and rendering Flash animations.
It is still in heavy development. The intended audience are developers or people
using it for pretested Flash animations (think embedded here). If you use it on
unknown content, expect it to have issues and don't be surprised if it crashes.
If you encounter such a crash however, make sure to file a bug [2] immediately.

PySwfdec is a wrapper which exposes the Swfdec API to the
python world.  It is fairly complete; most of the API are covered.

The documentation is a work in progress, needs quite a lot of work in
order to cover 100% of the API, anyway help will be greatly appreciated.

Like the GTK+ library, PyGTK and Swfdec itself PySwfdec is
licensed under  the GNU LGPL, so is suitable for use in both
free software and proprietary applications.

PySwfdec requires:
=

o Swfdec = 0.6.6
o PyGObject >= 2.10.1 (2.11.3 to build the docs)
o PyGTK >= 2.10.4
o Pycairo >= 1.2.0

Bug reports should go to
https://launchpad.net/pyswfdec/

[1] http://swfdec.freedesktop.org/wiki/
[2] https://bugzilla.freedesktop.org Use the swfdec component.

cheers
-- 
Gian Mario Tagliaretti
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] Dubbi su hash e set

2008-05-08 Per discussione Pietro Battiston
enrico franchi ha scritto:
> 2008/5/6 Pietro Battiston <[EMAIL PROTECTED]>:
>
>   
>>  Perché un vertice - nella mia applicazione - è prima di tutto la
>>  giunzione di diversi lati. Voglio potere ad esempio congiungere (union,
>>  o update) due vertici, ovviamente non voglio lati doppioni in uno stesso
>>  vertice.
>> 
>
> Quindi un vertice è *implementato* in termini di "insieme". Per
> esempio tutte le operazioni  che puoi fare fra due insiemi le puoi
> anche fare tra due vertici?

Il fatto è che lo scoprirò solo vivendo... e ogni tanto scopro
effettivamente una nuova operazione che mi fa comodo.

> E fra un insieme e un vertice? L'insieme
> vuoto è un concetto perfettamente sensato.
> Il "vertice vuoto"? E il
> vertice di un solo lato? E' un insieme normale, ma come vertice non ha
> senso.
>   


Forse (ma solo forse) c'è un equivoco: considero "vertex" una classe
"interna", da non istanziare esplicitamente se non si sta proprio
modificando il modulo (dovrei chiamarla __vertex__? è sbagliato
considerare certe classi interne nel senso che chi le usa deve sapere
quello che fa, ovvero che verranno usate solo in certe funzioni che
"sanno quello che fanno"? se sì, come si fa a sopravvivere?!)


>>  Sì, sul principio generale hai perfettamente ragione. La verità è che se
>>  mai deciderò che val la pena pubblicare quel che sto facendo, dovrò
>>  ovviamente essere certo che ogni metodo che la mia classe ha (o eredita)
>>  sia consistente, e in quel caso viva il duck typing, ma finché è una
>>  roba mia mi fa estremamente comodo, spippolando con ipython, avere a
>>  portata di mano tutto e subito per sperimentare, e magari fare anche
>>  cose non consistenti (per debug, mi sono addirittura //scritto// metodi
>>  che rendono il tutto non consistente). E che comunque lavorare in modo
>>  "pulito" non avrebbe risolto il problema per cui avevo scritto in lista.
>> 
>
> Non mi sembra un discorso che si regge: non ti costa nulla seguire dei 
> consigli.
>   

Magari un giorno mi sveglio e dico "OK, ora pubblico questo codice,
trasformiamo l'ereditarietà in contenimento e/o aggiungiamo tonnellate
di NotImplemented". Ma per ora ogni giorno scopro cose a cui non avevo
pensato, ed è inutile illudermi di poter scegliere a priori quali
funzioni mi faranno comodo; trovo i sistemi migliori sperimentando, e
per questo (ma anche solo per debug!) avere a portata di mano anche
funzioni eventualmente incoerenti mi fa comodo.

Certo, non è che me ne frego di come si fa le cose per bene, e tutto
quello che dici è sacrosanto e mi interessa; soltanto, capita di
scrivere programmi per risolvere un problema noto in modo noto o
comunque genericamente prestabilito, ma capita anche di fare programmi
ricercando attivamente i modi migliori di approcciare un problema e
anche solo di formularlo. Da questo punto di vista, ho sempre apprezzato
il fatto che ipython sia una vera e propria "calcolatrice".

> Oltretutto progettare bene le gerarchie di classi non è una cosa
> banale, non è una cosa che ti insegnano in università,

... e tantomeno a me che studio matematica...

> ma è una cosa
> che impari con l'esperienza. Se non dai peso al design perchè "tanto è
> per te", quando dovrai farlo per gli altri, semplicemente non avrai
> accumulato le skills necessarie. Se invece fin da principio hai
> provato a progettare bene le cose, quando dovrai farlo anche per gli
> altri, saprai come farlo.
>
> Fra le altre varie cose, a volte anche persone decisamente esperte
> sbagliano. Solo in genere se ne accorgono un po' prima e talvolta non
> è troppo tardi.
>   

A dire il vero, questo programma che sto scrivendo io lo sto riscrivendo
da zero. Con la prima versione avevo completamente toppato l'approccio
al problema. Quindi so cosa intendi. Ma di per sé la questione
"contenimento vs. ereditarietà" mi sembra molto più "superficiale", nel
senso che è importante ma il giorno che vorrò cambiare si tratterà
veramente solo di cambiare __init__ ed aggiungere 4-5 metodi
semplicissimi...
... e per ora mi trovo meglio così...

Pietro
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


[Python] [Announce] PySwfdec 0.6.6.1

2008-05-08 Per discussione Gian Mario Tagliaretti
This is a quick bug fix release version 0.6.6.1 of the Python bindings for
PySwfdec.

It is available at:
http://www.gnome.org/~gianmt/pyswfdec-0.6.6.1.tar.gz
MD5: 71c2af4b3f8724fe1872b54a8cfa82b4

The bindings are updated with the new Swfdec API 0.6.6

Blurb:
==
Swfdec [1] is the library for decoding and rendering Flash animations.
It is still in heavy development. The intended audience are developers or people
using it for pretested Flash animations (think embedded here). If you use it on
unknown content, expect it to have issues and don't be surprised if it crashes.
If you encounter such a crash however, make sure to file a bug [2] immediately.

PySwfdec is a wrapper which exposes the Swfdec API to the
python world.  It is fairly complete; most of the API are covered.

The documentation is a work in progress, needs quite a lot of work in
order to cover 100% of the API, anyway help will be greatly appreciated.

Like the GTK+ library, PyGTK and Swfdec itself PySwfdec is
licensed under  the GNU LGPL, so is suitable for use in both
free software and proprietary applications.

PySwfdec requires:
=

o Swfdec = 0.6.6
o PyGObject >= 2.10.1 (2.11.3 to build the docs)
o PyGTK >= 2.10.4
o Pycairo >= 1.2.0

Bug reports should go to
https://launchpad.net/pyswfdec/

[1] http://swfdec.freedesktop.org/wiki/
[2] https://bugzilla.freedesktop.org Use the swfdec component.

cheers
-- 
Gian Mario Tagliaretti
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] Consiglio su utilizzo di variabili globali

2008-05-08 Per discussione Mr . SpOOn
> On Sat, May 3, 2008 at 4:11 PM, enrico franchi
>  >  Io potrei suggerirti di prendere in considerazione il pattern
>  >  Monostate/Borg (fra i pythonisti è noto come Borg storicamente, ma di
>  >  fatto è quello che altri chiamano Monostate).

Mi sono reso conto che forse questo pattern non fa al caso mio. E' che
all'inizio, per non perdermi in dettagli, ho semplificato troppo il
problema.

Se non ho capito male, nel pattern Borg l'istanza della classe deve
essere unica.

Nella mia applicazione ho delle esigenze differenti.
All'interno dell'applicazione ho una classe che si occupa di
manipolare del testo, in pratica. Ho un'interfaccia grafica, anche,
quindi, graficamente, alla classe sono associate caselle di testo,
bottoni etc, tutti contenuti in un pannello.

L'idea è di poter avere più pannelli (quindi più istanze della classe)
aperti contemporaneamente, in modo da poter fare dei confronti fra
diversi modi di operare.
E, ovviamente, le variabili delle diverse istanze devono essere diverse.

Finora, forse sottovalutando la questione, ho fatto così:
ho una classe principale del genere:

class MyClass(wx.Frame):

pannello = Pannello(self, -1)


E poi la classe Pannello fatta così:

class Pannello(wx.Panel):
stringa = "prova"

 def stampa(self):
  ...
 def modifica(self, s):
  ...

All'apertura dell'applicazione, mi interessa che si veda da subito un
Pannello, per questo istanzio la classe lì. Ora mi rendo conto che
questo forse non è molto funzionale. Insomma, non so se mi sfugge
qualcosa, ma se ad un certo punto mi servisse creare istanze della
classe Pannello, ad esempio, premendo su un bottone, come dovrei fare?
Non posso assegnarle a delle variabili. Qual è la soluzione in casi
come questo? Un metodo createPannello che mi ritorna istanze della
classe?

Riguardo le variabili: come ho detto, la variabile "stringa" mi serve
all'interno di tutta la classe, ma dev'essere diversa per ogni
istanza. Se non ho capito male, definendola come ho fatto prima, non
va bene, perché avrò una variabile di classe unica e ogni istanza
condividerà lo stesso valore. Quindi immagino di doverle definire
all'interno del metodo __init__ corrispondente. Ma mi blocco qui,
perché facendo delle prove non riesco ad accedere alla variabile. Sto
provado nella shell di Python con qualcosa di semplicissimo.

class Prova:
...   def __init__(self):
...  self.x = 5
...

>>> p = Prova

>>> p


>>> p.x
Traceback (most recent call last):
  File "", line 1, in 
AttributeError: class Prova has no attribute 'x'

Cos'è che sbaglio? Ho letto diverse cose, ma proprio non riesco a capire.
Scusate l'email chilometrica, ma spero di chiarirmi finalmente dei dubbi.
Grazie.
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] Consiglio su utilizzo di variabili globali

2008-05-08 Per discussione enrico franchi
2008/5/8 Mr. SpOOn <[EMAIL PROTECTED]>:


>  Se non ho capito male, nel pattern Borg l'istanza della classe deve
>  essere unica.

Nope. E' la principale differenza fra Borg e Singleton. Con Borg puoi
fare quante istanze della classe vuoi, tuttavia lo *stato* è
condiviso.
Sono appunto come dei borg. E se non hai mai guardato star trek, fila
a guardarlo *prima* di proseguire con i design pattern! :P

>  Nella mia applicazione ho delle esigenze differenti.
>  All'interno dell'applicazione ho una classe che si occupa di
>  manipolare del testo, in pratica. Ho un'interfaccia grafica, anche,
>  quindi, graficamente, alla classe sono associate caselle di testo,
>  bottoni etc, tutti contenuti in un pannello.
>
>  L'idea è di poter avere più pannelli (quindi più istanze della classe)
>  aperti contemporaneamente, in modo da poter fare dei confronti fra
>  diversi modi di operare.
>  E, ovviamente, le variabili delle diverse istanze devono essere diverse.

Da cui segue che la variabile globale non è la cosa giusta, visto che,
per definizione, è appunto unica.
In questo caso, per inciso, non va bene nemmeno Borg. Ma diciamo che
hai descritto una mela quando volevi uno stuzzicadenti.

>  All'apertura dell'applicazione, mi interessa che si veda da subito un
>  Pannello, per questo istanzio la classe lì. Ora mi rendo conto che
>  questo forse non è molto funzionale. Insomma, non so se mi sfugge
>  qualcosa, ma se ad un certo punto mi servisse creare istanze della
>  classe Pannello, ad esempio, premendo su un bottone, come dovrei fare?
>  Non posso assegnarle a delle variabili. Qual è la soluzione in casi
>  come questo? Un metodo createPannello che mi ritorna istanze della
>  classe?

Perchè no? Ma poi perchè non puoi assegnarle a "delle variabili"?
Dopo di che è anche probabile che ci siano questioni ortogonali a
python e al design "in generale" ma strettamente dipendenti dalla tua
libreria grafica.
BTW, io su wx passo. Su Qt posso dare una manina, su Cocoa una
manuccia, su wx non proseguo con le metafore anatomiche. :)

>  Riguardo le variabili: come ho detto, la variabile "stringa" mi serve
>  all'interno di tutta la classe, ma dev'essere diversa per ogni
>  istanza. Se non ho capito male, definendola come ho fatto prima, non
>  va bene, perché avrò una variabile di classe unica e ogni istanza
>  condividerà lo stesso valore. Quindi immagino di doverle definire
>  all'interno del metodo __init__ corrispondente.

Beh, chiaramente. Cioè, non necessariamente dentro __init__. Da qualche parte.
Volendo potresti anche definire __getattr__ che se gli chiedi un
attributo di nome 'stringa' ti restituisce la stringa di default.
Quando l'hai settata invece __getattr__ non viene chiamato poichè
trova già l'attributo.

>  class Prova:
>  ...   def __init__(self):
>  ...  self.x = 5
>  ...
>
>  >>> p = Prova
>
>  >>> p
>  
>
>  >>> p.x
>  Traceback (most recent call last):
>   File "", line 1, in 
>  AttributeError: class Prova has no attribute 'x'
>
>  Cos'è che sbaglio? Ho letto diverse cose, ma proprio non riesco a capire.

Sbagli a non avere studiato un poco! Cioè qui siamo ai fondamentali.
Tu non hai *mai* creato un istanza di Prova. Perchè se scrivi

p = Prova

p diventa un 'alias' per Prova, ma non hai mai costruito alcuna istanza Prova.

Siamo alla 'chiamata di funzione' (quale di fatto è), che in Python,
come in un buon cioppo di linguaggi si fa con le parentesi.
Oltretutto il povero interprete te lo dice pure!

>  >>> p
>  

Ovvero p è proprio la *classe* Prova.
Prova con, perdonandomi il gioco di parole,

p = Prova()

-- 
-enrico
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] Consiglio su utilizzo di variabili globali

2008-05-08 Per discussione enrico franchi
2008/5/8 enrico franchi <[EMAIL PROTECTED]>:

>  Sbagli a non avere studiato un poco! Cioè qui siamo ai fondamentali.

Aggiungo, visto e considerato che le interfacce grafiche sono
*notoriamente* una cosa mediamente rognosa da fare (bene) e contengono
relativamente poca programmazione "manipolativa", perchè prima non ti
eserciti un po' con Python in quanto Python?

E' didatticamente molto più svelta come strada. E porta a risultati migliori.


-- 
-enrico
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] Consiglio su utilizzo di variabili globali

2008-05-08 Per discussione Mr . SpOOn
2008/5/8 enrico franchi <[EMAIL PROTECTED]>:

>  >  All'apertura dell'applicazione, mi interessa che si veda da subito un
>  >  Pannello, per questo istanzio la classe lì. Ora mi rendo conto che
>  >  questo forse non è molto funzionale. Insomma, non so se mi sfugge
>  >  qualcosa, ma se ad un certo punto mi servisse creare istanze della
>  >  classe Pannello, ad esempio, premendo su un bottone, come dovrei fare?
>  >  Non posso assegnarle a delle variabili. Qual è la soluzione in casi
>  >  come questo? Un metodo createPannello che mi ritorna istanze della
>  >  classe?
>
>  Perchè no? Ma poi perchè non puoi assegnarle a "delle variabili"?
>  Dopo di che è anche probabile che ci siano questioni ortogonali a
>  python e al design "in generale" ma strettamente dipendenti dalla tua
>  libreria grafica.

Mmm, beh, quello che volevo dire è che ho bisogno di creare delle
nuove istanze a run-time (si dice così, no?).
Quindi nel primo caso, il pannello che mostro subito va bene che sia
assegnato alla variabile pannello, facendo pannello = Pannello(), ma
se ne volessi creare dinamicamente, insomma... serve un altro
costrutto. O sbaglio?


>  Sbagli a non avere studiato un poco! Cioè qui siamo ai fondamentali.
>  Tu non hai *mai* creato un istanza di Prova. Perchè se scrivi
>
>  p = Prova
>
>  p diventa un 'alias' per Prova, ma non hai mai costruito alcuna istanza 
> Prova.
>
>  Siamo alla 'chiamata di funzione' (quale di fatto è), che in Python,
>  come in un buon cioppo di linguaggi si fa con le parentesi.

No ok ok, qui era il mio cervello in pappa :P
Del resto l'ho già usato mille altre volte senza problemi.
Chiedo perdono :\
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] Consiglio su utilizzo di variabili globali

2008-05-08 Per discussione enrico franchi
On Thu, May 8, 2008 at 7:36 PM, Mr. SpOOn <[EMAIL PROTECTED]> wrote:

> Quindi nel primo caso, il pannello che mostro subito va bene che sia
> assegnato alla variabile pannello, facendo pannello = Pannello(), ma
> se ne volessi creare dinamicamente, insomma... serve un altro
> costrutto. O sbaglio?

Non comprendo il problema.

-- 
-enrico
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python