[Python] saluti e prima domanda sulle list comprhension

2008-01-27 Per discussione Java
Salve a tutti, sono nuovo di questa mailing list e del pythone più in 
generale!

Prima di fare la domanda, preannuncio che mi sono occupato di questa 
cosa per un paio di giorni, e che essendo completamente niubbo con il 
python potrei aver fatto qualche cavolata :-D

Veniamo alla nota dolente, devo fare un progetto per 
l'università(costruire una rete sociale di video di youtube) che 
comporta anche la scrittura di un piccolo crawler. Ho pensato di usare 
python sostanzialmente perché non lo conoscevo, e così approfitto 
dell'esame per imparare un nuovo linguaggio...

Senza entrare troppo nei dettagli, ho fatto un thread che si occupa di 
fare il crawling di una pagina iterando per in base alla profondità di 
crawling. Cioè se questa è 1 "parso" (ARGH!) solo la pagina iniziale, se 
vale 2 parso anche tutti i link in essa e così via...

ecco il codice:

def run ( self ):
   #  lista temporanea
   temp = []
   # all'inizio la lista results contine l'url iniziale
   results = [self.start_url]
   #cast della profondita' in intero poiché la leggo da input
   p = int(self.profondita)
   # finche' la profondita' e' maggiore di zero, intero sulla lista 
temp eseguendo il
   # parsing degli url trovati in essa
   while(p > 0):
   print "Thread lanciato con profondita: ", p
   # copio i risultati attuali dentro la lista temp
   # all'inizio conterrà solo un url
   temp = results
   print "ecco la lista TEMP:"
   print  temp
   [results.extend(self.parseUrl(video)) for video in temp]
   print "finito ciclo while \n\n\n" # qua non ci arrivo mai :-(
   p-=1

il problema è che in ogni caso non esce mai dalla list comphrension, 
eppure la lista temp contiene un solo url!
In pratica continua a ciclare come se ogni volta eseguisse temp = 
results, ma non capisco il perché...

qualche idea?

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


Re: [Python] saluti e prima domanda sulle list comprhension

2008-01-27 Per discussione Java

> temp e results fanno riferimento allo stesso oggetto, e quindi quello 
> che stai in realtà facendo è qualcosa tipo:
>
> l = [1]
> [l.append(i) for i in l]
>
>   

Si, c'ero appena appena arrivato da me facendo delle prove con la 
consolle python...

infatti sostituendo con: temp.extend(results)  

fa funzionare il tutto!


grazie per la risposta,
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] saluti e prima domanda sulle list comprhension

2008-01-27 Per discussione Java

> Male: perché usare un thread? Ogni programmatore che si rende conto  
> che spesso e volentieri i thread sono  la risposta sbagliata ad un non  
> problema è una speranza per un futuro migliore.
>
> Diciamocela tutta: se in Java si programma con i thread (a memoria  
> condivisa), questo non vuole dire che debba essere buona pratica  
> ovunque. Io in particolare per quello che fai tu userei multiprocesso.  
> No: mento sapendo di mentire, forse userei un'altra cosa, ma non  
> voglio complicarti ora la vita.
>
>
>   
No, il proff vuol poter lanciare più processi crawler in parallelo e poi 
vuole che si analizzino i risultati finali.
Poi io ho pensato di realizzare la cosa con un programma principale che 
esegue un ciclo nel quale accetta dei comandi dall'utente. Se il comando 
è "crawler" allora aprte il thread. Poi conterrà anche i comandi per 
generare la rete sociale dai risultati del crawling (salvati su file) e 
per altre operazioni
> brrr... ma così, dentro un thread prendi input da un utente?
> Se l'input lo prendi fuori, falla *fuori* la conversione,  
>   
L'input arriva da "fuori" è un parametro del costruttore del thread, e 
anche i vari print mi servono solo per debug, poi li levo tutti e metto 
il try-except
> eventualmente con un gestore di eccezioni.
>   
per l'appunto ;-D
> Ehm. Guarda che fai: temp = results. Per cui entrambi puntano allo  
> stesso oggetto.
>   
me ne ero accorto :-(
Chissà perché ero convinto che così facendo avrei copiato i valori dda 
una lista all'altra invece di farle puntare tutte allo stesso oggetto. 
In effetti non è un errore di python, ma di programmazione in generale (>_>)
> Una nota stilistica: l'uso che fai della list comprehension è IMHO  
> sbagliato. Una list comprehension (pur essendo completamente generale)  
> tipicamente viene usata per generare un nuovo array. Ha insomma un  
> significato in cui il valore di ritorno della funzione ha *profondo*  
> significato (e spesso questo nuovo array viene manipolato in seguito).
>
> Tu invece la stai chiamando con un metodo che restituisce None. Il tuo  
> codice anche se funzionasse, sarebbe 'bruttino'. Riscriviamolo con un  
> for.
>
> for video in temp:
>  results.extend(self.parseUrl(vide))
>   
>   
il for è la prima cosa a cui penso (dopo anni di c, c++, java etc etc) 
ma mi "forzo" ad usare le list comprecose per impararle bene
> Ti suggerisco di studiarti bene i fondamentali. 
>
>   
N i "fondamentali" sono tutti i linguaggi che già conosco :-p

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


Re: [Python] saluti e prima domanda sulle list comprhension

2008-01-27 Per discussione Java

> lancia un altro processo invece di far partire un thread, che problema c'è?
> se proprio vuoi puoi imparare twisted[1] ;)
>
>   
Ma perché avete tutto questo astio per i poveri thread? Se manca la rete:
1) è un crawler, se manca la rete può anche andare a farsi friggere
2) scatta il timeout che catturo con un eccezione
3) non può bloccarsi tutto, proprio perché è un thread, al massimo si 
blocca lui e il resto va...

almeno così mi ricordo dalla teoria dei thread in generale, tipicamente 
un processo è una cosa più pesante


MMM poi quella cosa di twisted mi tenta un casino... mmm mmm vedo se ci 
sto dentro come  tempi



> juno ja jcaso jdisimparalo jall'jistante ;)
>
>   
ARGH! Java non deriva dal linguaggio di programmazioe! Ma è il nome di 
un personaggio che mi ero creato epr giocare ad un MUD (Dalila) anni fa 
e l'avevo scelto per via del tipo di neanderthal amico di martyn mystere!

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


Re: [Python] saluti e prima domanda sulle list comprhension

2008-01-28 Per discussione Java

> Potrei anche citarti le parole di Van Roy e Haridi. Ormai le ho copia- 
> incollate tante di quelle volte che quasi le so a memoria. 
>
>   
lol, il copia&incolla è alla base di tutto
>   
>> I Thread lavorano su strutture dati
>> condivise. E in generale il dato condiviso fa parte dello stato del
>> programma...
>> 
>
> Solo ed esclusivamente se uno vuole cattive performance e divertirsi a  
> debuggare race conditions e altri heisenbugs.

Ma scusa, invece se lancio due processi, ognuno dei quali deve scrivere 
sullo stesso file non ci sono race conditions?
Devo comunque mettere su dei lock sul file e il processo che trova il 
file lockato (ARGH!) si siede e aspetta giocando con la psp.

qualcuno mi ha proposto la gestione asincrona della cosa, ma come ho 
detto "asincrono" mi puzza di "gestione di eventi e segnali" che è di 
certo più tediosa di un piccolo lock...


p.s.
mi sa che quando avremmo finito questa conversazione io avrò già dato 
l'esame :-p




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


[Python] diversi __init__ ??

2008-01-29 Per discussione Java
Ri-ciao

e' possibile in python definire diversi "costruttori" __init__ con 
diversi parametri e magari avendone pure uno di default?
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


[Python] try-except

2008-01-29 Per discussione Java
Non ho capito come faccio a stampare tutto lo stack di errore in una execpt.

Attualmente ho un codice del genere:

except Exception, detail:
 print "Impossibile completare il crawling. ",detail;

ma i "detail" che vengono stampati non sono esaustivi, sopratutto perché 
manca la linea in cui ha riscontrato l'eccezione.

Esiste un modo per fargli stampare tutto? In pratica vorrei visualizzare 
tutto come quando si sollev aun'eccezzione non catturata dal try-except. 
Sopratutto ora che sto provando è molto utile avere tutto lo stack di 
chiamate ed errori
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] diversi __init__ ??

2008-01-29 Per discussione Java

>
> A questo punto puoi o creare un costruttore unico che a seconda di  
> quello che gli passi fa la cosa giusta, oppure usare metodi factory.
> Se mi descrivi un esempio tuo in cui vorresti più costruttori, ti  
> mostro come renderlo in Python. Su due piedi non ho un esempio  
> significativo e generale.
>   
Non è necessario, avevo giusto un paio di liste da inizializzare, ma 
alcune volte mi servivano vuote.
Posso fare tutto con un __init__ che crea tutto ciò che mi serva 
lasciandolo "vuoto" e poi riempio tutto con metodi "set"

Ma quindi se A eredita da B, non può fare l'overloading dei metodi di B?

ho anche un'altra domand ama mi serve un'altra mail :-)
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] diversi __init__ ??

2008-01-30 Per discussione Java

> Come risolve lo stesso problema Python? Il tipo è ininfluente, fare  
> funzioni che accettano un numero variabile di argomenti è banale,  
> comodo da gestire e piuttosto gradevole da leggere (again, named  
> parameters).
>
>   
Ora non esageriamo, non è che tutto ciò che fa python è bello e 
fantastico e ciò che fanno altri linguaggi fa schifo.

L'overloading è molto comodo proprio per migliorare la leggibilità del 
codice.

supponi di avere 10 metodi overloadati (ARGH!). E supponi che ognuno sia 
di 100 righe di codice.
Secondo te è meglio avere un unico metodo con tutti gli if chee in base 
alla combinazione di valori passati per parametro esegue uno o l'altro 
ramo dell'if-then-else?

Io ritengo che sia meglio avere 10 metodi separati, ognuno con i suoi 
commenti e la sua documentazione.

E a tal proposito ne approfitto per scagliare un'altra frecciatina: il 
python la "javadoc" se la sogna di notte, poi si sveglia tutto sudato e 
si accorge di avere solo un elenco di funzioni con parametri e valori 
restituiti.
Ma questa è una cosa che riguarda anche tutti gli altri linguaggi che ho 
visto...




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


[Python] libreria per grafi?

2008-01-30 Per discussione Java
Qualcunbo di voi conosce una libreria per creare grafi (nodi e archi) in 
python? O mi devo fare tutto a manina?

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


Re: [Python] diversi __init__ ??

2008-01-30 Per discussione Java

>
> Vorrei assicurarmi che tu conosca già epydoc...
epydoc è un ottimo progetto (che sembra comunque di "terze parti") che 
emula, sicuramente anche in maniera ottima, la javadoc
>  e gradirei sapere se per
> il Java c'è qualcosa di ganzo come ipython per programmare letteralmente
> "al volo" (sfruttando anche - appunto - le docstring).
ipython è una shell alternativa a quella di python, e pure questa è mi 
sembra sviluppata da terzi.una shell in java, c++ o altro non ha proprio 
senso

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


Re: [Python] libreria per grafi?

2008-01-30 Per discussione Java

> Sinceramente non ne conosco moduli sui grafi,ma puoi gestirti le 
> connessioni tra i nodi creandoti una matrice delle adiacenze...
>   

mmm volevo evitarla, dato che potrei raccogliere *molti* nodi 
(nell'ordine delle miglialia) e la matrice diventa troppo cicciona da 
gestire
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


[Python] avrei bisogno del valore null... o almeno credo...

2008-01-30 Per discussione Java
Prima di tutto chiedo perdono per il bombardamento di domande...

Poi... ecco di cosa vrei bisogno (una riga di pseudocodice vale più di 
mille parole):

# devo aggiornare questa lista
rete = []
# usando i dati di questa
lista = [http://lists.python.it/mailman/listinfo/python


Re: [Python] avrei bisogno del valore null... o almeno credo...

2008-01-30 Per discussione Java
Francesco Guerrieri ha scritto:
>
>
> # devo aggiornare questa lista
> rete = []
> # usando i dati di questa
> lista = [
> testa = null
> for elem in lista:
>if elem.getEtichetta() ==  lista[0]:
>   testa = elem
>else:
>   testa = Elemento()
>
> # da qui in poi lavoro su testa
>
>
> Non mi è chiaro il tuo problema
> Dall'esempio di codice che hai mandato, non c'è nessuno bisogno di 
> creare un nameholder testa
> (comunque sarebbe testa = None)
>
mmm senza quel testa = None, la variabil testa si vedrebbe fuori dal 
ciclo for?? Se si allora non ci vuole
> semplicemente nei due casi assegni testa a due oggetti diversi,
> di volta in volta o elem o Elemento()
> Ti faccio ntoare che il tuo codice assegna testa all'ULTIMO elem in 
> lista che abbia l'etichetta giusta.
Ultimo e unico, (se tutto è andato bene :-D)
>
> Ma forse il codice che volevi scrivere era:
>
> rete = [elem for elem in lista if elem.etichetta == qualcosa]
>
mmm forse si, ma ora sono veramente fuso (tra lavoro e studio ho fatto 
11 ore al pc :-( )
> ?
> Non mi piace molto neanche il metodo getEtichetta, non ti basta 
> leggere elem.etichetta?
hem rimasugli di UML e Ingegneria del software.
> ciao,
> Francesco
adieu
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] Python vs UML

2008-02-03 Per discussione Java
Y3s ha scritto:
> Il giorno 03/feb/08, alle ore 20:30, giuseppe saviano ha scritto:
>
> 
>
>   
>> ho capito che la progettazione uml in alcuni casi risulta limitante;
>> 
>
> In alcuni casi?!? Sempre direi...UML è IMHO una roba di cui non ho  
> mai capito il senso. Se devo spiegare un concetto ad altre persone è  
> molto più facile e comprensibile un pezzo di codice ben scritto  
> (soprattutto se è python). Se lo devo spiegare a un non tecnico,  
> avere uno schema pieno di riquadri, linee e freccette non aiuta di  
> certo...mentre per la documentazione, codice ben scritto si documenta  
> al 90% da sè. I commenti servono proprio a spiegare il 10% rimanente.  
> Insomma, non trovo una sola applicazione utile di UML, se non quella  
> di vendere tanti libri e rompere le scatole a chi vorrebbe produrre  
> invece di perdere del tempo ;-)
>
>   
Mah...
Vai e dillo alla IBM (Microsoft Hp etc etc)che con l'uml ci "perdono" un 
sacco di tempo. Ti do una dritta generale: quando un'azienda fa 
qualcosa, è perché ci guadagna, non perché ci perde del tempo.

Poi cerchiamo anche di separare un po le cose. Una cosa è quando fai il 
tuo programmino o sitini internet. Un'altra è quando devi progettare una 
grossa applicazione alla quale trovi impegnati diversi team. Come 
esercizio  potresti provare ad analizzare i codice dell'ultimo kernel 
linux. Vediamo se lo capisci al 90%.

L'UML fa da "linguaggio universale" che chiunque può prendere capire e 
implementare.

Lo si può usare *anche* come documentazione inserito all'interno di 
processi di sviluppo agili tipo XP programming e simili. Ma magari 
avrete da ridire anche su di questi...

Per maggiori dettagli sull'UML:
http://it.wikipedia.org/wiki/Unified_Modeling_Language

Per l'elenco di aziende che si divertono a perdere tempo:
http://www.omg.org/cgi-bin/apps/membersearch.pl (schiacciare "search")


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


Re: [Python] Python vs UML

2008-02-05 Per discussione Java
Giorgio Zoppi ha scritto:
> Non mi era successo di sentire una discussione di SE, cosi interessante
> complimenti :).
>   
e il bello è che io che ho causato il putiferio, osando spezzare 
un'arancia in difesa del povero modello unificato, me ne resto fuori a 
leggere le mail che affermano che "se non lo so fare" (non ho viglia di 
impararlo, è complicato etc etc) allora fa schifo" :-D


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


Re: [Python] Python vs UML

2008-02-06 Per discussione Java

> Non mi pare di avere letto alcuna di queste mail.
> Ad ogni modo sono sicuro che portando anche la tua esperienza non puoi  
> che alzare il livello della discussione.
>
>   
La mia esperienza è quella espressa all'inizio. Non esiste dire che 
l'UML fa schifo. Come non ha senso dire Java fa schifo, Perl fa schifo, 
il minestrone fa schifo. Come già detto ci sono diversi campi di 
applicazione. Personalmente l'ho usato solo *una* volta, e con profitto, 
durante lo svolgimento del tirocinio. Tutte le altre volte (siti web e 
robe del genere) mi sono fatto due pallini a penne in un foglio e ho 
risolto egregiamente.

Qualuno ha fatto notare che "If the implementation is hard to explain, 
it's a bad idea;". Ma purtroppo la mondo esistono cose complicate da 
spiegare a voce e/o con codice vario. Se devo fare un'applicazione che 
regola il braccio meccanico che esegue un'operazione laser sugli occhi, 
l'UML serve.

Prima di tutto potrei non sapere che linguaggio di programmazione usare:

Capo:  "Hey tu? Ci serve un programma che permetta di utilizzare questo 
fantastico dispositivo "embeddato" all'interno di un vibratore che 
regoli la frequanza degli impulsi."

Io: "Ah, si ok, in cosa lo scrivo? c, c++ o  turbo pascal?"
Capo: "Non lo so, non ci è ancora arrivato, però mi assicurano che è a 
oggetti"
Io: "Hey! Ma se non è ancora arrivato come faccio a sviluppare qualcosa? 
Ho il codice?"
Capo: "Col cazzo, eccoti gli schemini UML. Tu devi estendere la classe 
"Vibro" implementando qualcosa per la regolazione dell'intensità"


Quindi mooolto prima che inizi l'implementazione, tutti i diagrammi 
vengo analizzati da diverse persone, in diretto rapporto con il 
commitente e con esperti del settore, ad esempio medici e ingegneri 
biomedici. Perciò il progetto subirà  svariate modifiche. Iniziare a 
scrivere codice ora, sarebbe una cosa piuttosto noiosa. Dato che molto 
di esso verrà cancellato e/o profondamente modificato.

Poi supponiamo che questo software si faccia. E che il braccio meccanico 
regoli male l'intensità del laser decapitando il paziente e distruggendo 
l'intera ala ovest dell'ospedale. Di chi è la colpa?  Si prendono 
specifiche, progetto UML e implementazione. E si controlla se il 
progetto rispetta le specifiche, e se l'implementazione rispetta il 
progetto.


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


Re: [Python] Python vs UML

2008-02-07 Per discussione Java

>   
> E' una posizione 'strana'. In primo luogo sono perfettamente convinto  
> che qualcuno che lavora nell'IT abbia tutto il diritto di farsi la sua  
> idea su una data tecnologia/metodologia. Questo a prescindere dal  
> fatto che abbia o meno ragione.
>
>   
Ok, ognuno deve farsi la sua opinione, ma non avere la presunzione che 
questa sia la realtà. Ma:
>> Come già detto ci sono diversi campi di
>> applicazione.
>   

> Non so chi ti ha dato l'idea del 'codice critico -> UML',
>
>   
Nessuno, e infatti non volevo dire quello. Ho solo fatto un esempio a caso.
> Ma mi chiedo che accidenti di esempi fai. 
>   
Vedi sopra: è solo un esempio.
> Sempre tipicamente, questa roba la modelli in verilog etc
>   
Toh... compare un linguagigo di modellazione per specifiche hardware.  
Per l'hardware va bene e per il software no?
> Ah. Ed è necessario l'UML. Faccio notare che se ti schianta una roba  
> del genere, è per i *parametri* e l'*intensità*, non per il design.
> Ammesso che ci sia design.
>   
Siccome era un esempio a caso, allora possiamo ipotizzare di essere 
sicuri che la colpa sia del software.

Anzi visto che risulta complicato astrarre da un esempio pratico, 
facciamo così:

C'è una grossa azienda che produce software molto grosso e ha sedi di 
tutto il mondo. Essa vende un programma fantastico che però quasi subito 
accusa dei malfunzionamenti. Fatti gli accertamenti del caso, si scopre 
che c'è un pezzo di codice che non si comporta a dovere.

Supponiamo poi che il progettista e lo sviluppatore siano persone 
diverse (che non è una roba così poco diffusa come potreste pensare) 
come fa il progettista a discolparsi? Con dei fogli di stampante su cui 
ha scritto degli appuntini per lo sviluppatore? O magari affermando "che 
lui gliel'aveva detto al programmatore come si faceva"?



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


[Python] pywin32-212.win32-py2.6.exe - file corrotto ?

2008-10-23 Per discussione Dario Java
Salve,

 E' da poco che sto sperimentando con python. Volevo provare
l'estensione pywin32,
 ma sono diversi giorni che provo a scaricare dai diversi mirror e ho
sempre lo stesso
 problema.

 Appena lancio in esecuzione pywin32-212.win32-py2.6.exe


 esce l'errore:

  "Impossibile avviare l'applicazione specificata.
   La configurazione dell'applicazione non è corretta
   Una nuova installazione dell'applicazione potrebbe risolvere il
problema"


 Ho provato a scaricare la versione zippata, ma non so come installarla
 su python.

 Ho cercato in vari forum come installare manualmente, ma con
insuccesso.

 Perdonate la mia newbbiosità.


 Grazie in anticipo per l'aiuto.

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


Re: [Python] Chiusura applicazione Wx

2008-10-28 Per discussione Dario Java
Salve,

chiedo venia se la domanda se la richiesta è stupida.

Non riesco ad installare l'estensione Pywin32 su Python 2.6.
I file di installazione presenti su sourceforge risultano tutti non
validi,
anche se, provando a scompattare l'exe, i file vengono scompattati
correttamente.

Qualche buona anima può dirmi dove posso documentarmi per installare

questa estensione ?

Grazie in anticipo a tutti.


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