Re: [Python] Python ip dinamico e sottorete

2013-12-20 Per discussione Antonio Piepoli
Se tra Router1 c'è una nuvoletta chiamata Internet avrai bisogno di 
usare il NAT (spesso attivo di default su router domestici) e il port 
forwarding sul router che connette il pc che servierà da server prima di 
iniziare a pensare allo sviluppo. Mentre per il client potrebbe non 
essere un problema l'avere un IP dinamico privato, per il server il 
problema si pone (a meno di utilizzare protocolli specifici). 
Un'ulteriore cosa da capire è se gli ip pubblici sono statici o no.  Se 
non fossero statici dovresti accedervi attraverso un nome di dominio che 
devi oppurtunamente registrare e mantenere aggiornato. Quando avrai 
risolto questi probemi di tipo "rete" dovrai passare alla scelta del 
protocollo di trasporto (tra TCP e UDP).


Quindi per cominciare chiarisciti il concetto di NAT, di socket e del 
port forwarding. Poi per lo sviluppo avrai tantissima scelta ;) .


Ciao
Antonio


Il 20/12/2013 14:16, Giuseppe Amato ha scritto:

Buongiorno,
Scusate se posto una domanda un po' off-topic, ma non so nemmeno cosa 
cercare in rete.
Dispongo di due computer entrambi collegati con indirizzo ip dinamico 
a due router diversi.
Posso conoscere (almeno credo sia fattibile) l'indirizzo IP di 
entrambi sia nella sotto-rete che quello dei router.
Vorrei stabilire una connessione client/server tra i due, ma non so 
come instradare i dati nella sotto-rete.


Es.:

PC1 (193.162.1.50) -> Router1 (175.258.45.58)
PC2 (192.168.10.5) -> Router2 (155.158.5.8)

Voglio scambiare i dati tra PC1 e PC2.

Mi sapete dire dove devo guardare e cosa cercare? Ovviamente il tutto 
lo vorrei fare in python, ma ho bisogno anche di nozioni generali su 
quello che voglio fare.


Ciao

--

Giuseppe Amato
e-mail: giuam...@gmail.com 


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


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


Re: [Python] Comunque

2013-11-14 Per discussione Antonio Piepoli

Io leggo spesso ma partecipo poco :)




Il 14/11/2013 15:38, Massimo Capanni ha scritto:

grazie di esistere e resistere

:-)


.m

.Massimo .Capanni

?? ???


2013/11/8 Carlos Catucci >



2013/11/8 Marco Beri mailto:marcob...@gmail.com>>

Cara Lista,
grazie di esistere :-)


+2


-- 
"Somos los que amasan, sin embargo no tenemos pan,

somos los que cavan el carbón, sin embargo tenemos frío
somos los que no tienen nada, y estamos viniendo a tomar el mundo."
Tassos Livaditis (Poeta greco, 1922, 1988)

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




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


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


Re: [Python] Creazione albero stocastico solo con dizionari

2012-09-17 Per discussione Antonio Piepoli
purtroppo non posso accettare il complimento perchè non è farina del mio
sacco, quello che ho fatto io era "adattarla" al caso del dizionario con i
risultati che notavi prima :

http://stackoverflow.com/questions/4437250/choose-list-variable-given-probability-of-each-variable

quando finisco di scrivere lo script lo posto così magari mi date qualche
feedback (sono comunque alle prime armi).


Il giorno 17 settembre 2012 19:02, Daniele Varrazzo  ha
scritto:

> On 2012-09-17 17:21, Antonio Piepoli wrote:
>
>> def choose(p):
>> r = random.random()
>> index = 0
>> while (r > 0):
>>   r -= probs[index]
>>   index += 1
>> return index-1
>>
>
> Hai sbagliato nome di variabile: p/probs. Non so se è un errore di copia e
> incolla nella mail. Comunque carina: ora è una funzione più generica a cui
> passi solo il vettore di probabilità e ti restituisce l'indice di quella
> scelta. Non male.
>
> Io l'avrei scritta così, ma è solo una questione idiomatica: funzionano
> allo stesso modo:
>
> def choose2(probs):
> r = random.random()
> for i, p in enumerate(probs):
> r -= p
> if r < 0:
> return i
>
> Ha lo stesso problema di essere o(n) nel numero di elementi da scegliere,
> mentre la mia soluzione nella prima mail era o(1), ma credo sia ininfluente
> per te, e la mia aveva svantaggi di altro tipo.
>
>
> --
> Daniele Varrazzo - Develer S.r.l.
> http://www.develer.com
> __**_
> Python mailing list
> Python@lists.python.it
> http://lists.python.it/**mailman/listinfo/python<http://lists.python.it/mailman/listinfo/python>
>



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


Re: [Python] Creazione albero stocastico solo con dizionari

2012-09-17 Per discussione Antonio Piepoli
def choose(p):
r = random.random()
index = 0
while (r > 0):
  r -= probs[index]
  index += 1
return index-1

def error(): print "1_error"
def error2(): print "2_error"
def noerror(): print "no_error"

if __name__ == '__main__':

match = (((error,error2,noerror),(0.5,0.2,0.3)), #name
((error,error2,noerror),(0.5,0.2,0.3)), #surname
((error,error2,noerror),(0,0,1))) #sex

for step,probs in match:
step[choose(probs)]()

ho risolto così... ho attutito con un cuscino o sono salito di un altro
piano ? :D

Il giorno 17 settembre 2012 17:31, Daniele Varrazzo  ha
scritto:

> On 2012-09-17 16:00, Antonio Piepoli wrote:
>
>  Sì avevo già intenzione di usare le funzioni come oggetto come mi hai
>> detto
>> tu. Quello che non riesco a fare è fare la stessa cosa per i dizionari;
>> cioè match[0] è "match_surname" (una stringa), voglio che lo script prenda
>> il dizionario che ha lo stesso nome della stringa... che scelga la
>> funzione
>> e che la applichi... per poi passare al passo successivo di match ->
>> match[1] etc ... spero di essermi spiegato meglio.
>>
>
> Sì. Ma perchè non metti il (riferimento al) dizionario nella lista e
> peschi direttamente quello?
>
> match_surname = {}
> match_name = {}
> match = [match_surname, match_name]
>
> quello che vuoi fare tu, prendere un oggetto globale tramite il nome, si
> fa facile: globals()['match_name'], per cui tu dovresti fare
> globals()[match[1]]. Ma è strano ti serva: di sicuro fare una lista o usare
> altre strutture con i riferimenti espliciti ai dizionari è una soluzione
> migliore che andarseli a cercare per nome.
>
>
>
>  ho corretto l'errore in choose:
>>
>> def choose(d):
>> index = 0
>> keys = d.keys()
>> r = random.random()
>> while (r > 0):
>>   r -= d[keys[index]]
>> index += 1
>> return keys[index-1]
>>
>
> Sempre brutta come una caduta per le scale resta :) Per esempio, poiché
> metti la cosa che scegli nelle chiavi di un dizionario, allora deve essere
> hashabile, per cui non puoi scegliere casualmente da un insieme di liste o
> di dizionari. Per non parlare della sua efficienza. Comunque sei libero di
> usare questa se ti soddisfa in correttezza, prestazioni e possiblità di
> input.
>
>
>
> --
> Daniele Varrazzo - Develer S.r.l.
> http://www.develer.com
> __**_
> Python mailing list
> Python@lists.python.it
> http://lists.python.it/**mailman/listinfo/python<http://lists.python.it/mailman/listinfo/python>
>



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


Re: [Python] Creazione albero stocastico solo con dizionari

2012-09-17 Per discussione Antonio Piepoli
Grazie per la risposta, forse non sarei potuto essere più confusionario.

Ti spiego qual'è l'obbiettivo.
Ho un file csv pieno di record in questa forma .
Da questo file devo creare un file di training per un classificatore
binario (le due classi saranno math o unmatch).

Voglio leggere riga per riga il file (e questo lo faccio con la libreria
csv) e per ognuno scegliere (al 50%) se da questo sarà generato un record
di math o di unmatch. A seconda della scelta il record subirà un
"trattamento" specifico (probabilmente solo in caso di match ha senso
stabilire un trattamento specifico ma questo è ancora da valutare).
Che cosa sarebbe questo trattamento ? Per ogni attributo (Cognome, Nome
etc) voglio scegliere (con una certa probabilità) se subirà 1 errore 2
errori o 0 erorri. Una volta generato questo record confronterò attributo
per attributo i due record con delle metriche (Edit distance o simili) e
produrrò un vettore di numeri che userò per fare il training del
classificatore.
Come dicevo probabilmente non riserverò nessun trattamento specifico per
gli unmatch, semplicemente prenderò un record a caso dal file e lo
accoppierò come ho spiegato prima per la classe Unmatch.

quell è l'idea;
quindi stavo pensando di usare un dizionario per tutte le scelte di
probabilità ed un array per scandire i livelli obbligati e decisi in
partenza del record.
Quindi dico, all'inizio scegli se sarà un match o no, se sarà un match
prendi il vettore match, prendi il primo elemento match[0] che si chiama
"match_surname". Questo match_surname è un altro dizionario che mi dirà
cosa fare sul surname. Cioè mi dirà quale funzione scegliere.

Sì avevo già intenzione di usare le funzioni come oggetto come mi hai detto
tu. Quello che non riesco a fare è fare la stessa cosa per i dizionari;
cioè match[0] è "match_surname" (una stringa), voglio che lo script prenda
il dizionario che ha lo stesso nome della stringa... che scelga la funzione
e che la applichi... per poi passare al passo successivo di match ->
match[1] etc ... spero di essermi spiegato meglio.

ho corretto l'errore in choose:

def choose(d):
index = 0
keys = d.keys()
r = random.random()
while (r > 0):
  r -= d[keys[index]]
index += 1
return keys[index-1]




Il giorno 17 settembre 2012 14:02, Daniele Varrazzo  ha
scritto:

> On 2012-09-17 11:11, Antonio Piepoli wrote:
>
>> Salve a tutti,
>>
>> premetto che questa domanda è molto stupida ma non riesco a trovare una
>> soluzione.
>> Diciamo che ho un vettore la cui lunghezza è già nota a priori. Ogni
>> elemento del vettore deve subire una funzione; il punto è che la funzione
>> cambia sia da elemento ad elemento ed in generare è scelta con una certa
>> probabilità.
>>
>> stavo pensando a qualcosa di questo tipo
>>
>> first_stage = {'match':0.5, 'unmatch':0.5}
>> match = ['match_surname','match_name']
>> unmatch = ['unmatch_surname','unmatch_**name']
>>
>> match_surname = {'1_error':0.5, '2_error':0.3, 'no_error':0.2}
>> match_name = {'1_error':0.5, '2_error':0.3, 'no_error':0.2}
>>
>> for record in records:
>>   destiny = choose(first_stage)
>>  for step in destiny:
>>  function = choose(step)
>>  function(record[desiny.index(**record)])
>>
>
> Questo "record[desiny.index(record)]"**, a parte il typo, non ho capito
> assolutamente cosa sia. "desiny/destiny" è una lista di due stringhe: che
> ci fa quell'index(record)? Cos'è records?
>
>
>
>  la funzione choose prende un dizionario fatto in quel modo e mi
>> restituisce
>> un valore (stringa):
>>
>> def choose(d):
>> index = -1
>> keys = d.keys()
>> r = random.random()
>> while (r > 0):
>>   r -= d[keys[index]]
>> index += 1
>> return keys[index]
>>
>
> Questa funzione non mi sembra funzionare come credi: sembra dipendere
> dall'ordine delle chiavi, non dal valore associato.
>
>
> In [30]: vv = [ choose({'1_error':0.5, '2_error':0.3, 'no_error':0.2})
> for i in range(1) ]
>
> In [31]: len(vv)
> Out[31]: 1
>
> In [34]: len([v for v in vv if v == '1_error'])
> Out[34]: 2997
>
> In [35]: len([v for v in vv if v == '2_error'])
> Out[35]: 2024
>
> In [36]: len([v for v in vv if v == 'no_error'])
> Out[36]: 4979
>
>
>
>  posso associare a quella stringa una variabile/funzione con quel nome ?
>> stessa cosa dicasi per i vettori. È una cosa che mi consiglia

[Python] Creazione albero stocastico solo con dizionari

2012-09-17 Per discussione Antonio Piepoli
Salve a tutti,

premetto che questa domanda è molto stupida ma non riesco a trovare una
soluzione.
Diciamo che ho un vettore la cui lunghezza è già nota a priori. Ogni
elemento del vettore deve subire una funzione; il punto è che la funzione
cambia sia da elemento ad elemento ed in generare è scelta con una certa
probabilità.

stavo pensando a qualcosa di questo tipo

first_stage = {'match':0.5, 'unmatch':0.5}
match = ['match_surname','match_name']
unmatch = ['unmatch_surname','unmatch_name']

match_surname = {'1_error':0.5, '2_error':0.3, 'no_error':0.2}
match_name = {'1_error':0.5, '2_error':0.3, 'no_error':0.2}

for record in records:
  destiny = choose(first_stage)
 for step in destiny:
 function = choose(step)
 function(record[desiny.index(record)])

la funzione choose prende un dizionario fatto in quel modo e mi restituisce
un valore (stringa):

def choose(d):
index = -1
keys = d.keys()
r = random.random()
while (r > 0):
  r -= d[keys[index]]
index += 1
return keys[index]

posso associare a quella stringa una variabile/funzione con quel nome ?
stessa cosa dicasi per i vettori. È una cosa che mi consigliate di fare ?

Grazie

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


Re: [Python] Generare dati artificialmente

2012-06-29 Per discussione Antonio Piepoli
Si mi rendo conto che finirò a scrivermelo da solo ...
Purtroppo chi gestisce quel sito non ha risposto alla mia domanda.

Grazie anche per quel sito, provo a darci un'occhiata.

Il giorno 28 giugno 2012 21:03, Marco Mariani  ha scritto:

> 2012/6/28 Antonio Piepoli 
>
> Sto cercando un sistema che generi tabelle. Ho trovato questo
>> http://www.generatedata.com/#about ma purtroppo non forniscono nessuna
>> informazione sulla statistica dei dati (quanti nomi ci sono? che
>> distribuzione scelgono?).
>>
>> Qualcuno ne conosce altri ?
>>
>
> io penso di avere usato questo, un paio di volte
>
> http://www.fakenamegenerator.com/order.php
>
>
>
> ___
> Python mailing list
> Python@lists.python.it
> http://lists.python.it/mailman/listinfo/python
>
>


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


[Python] Generare dati artificialmente

2012-06-28 Per discussione Antonio Piepoli
Salve a tutti,

questa non è una domanda direttamente connessa con python ma spero che
qualcuno mi sappia aiutare lo stesso.
Sto cercando un sistema che generi tabelle. Ho trovato questo
http://www.generatedata.com/#about ma purtroppo non forniscono nessuna
informazione sulla statistica dei dati (quanti nomi ci sono? che
distribuzione scelgono?).

Qualcuno ne conosce altri ?

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


Re: [Python] Aiuto per testi su machine learning e graph clustering

2012-06-04 Per discussione Antonio Piepoli
ottostringa rispetto allo
>> slug supera per ciascun campo una soglia minima stabilita, i due
>> destinatari sono lo stesso destinatario
>>
>
> invece che la sottostringa di lunghezza massima potresti prendere la
> distanza di Levenshtein fra le due stringhe:
>
> http://en.wikipedia.org/wiki/Levenshtein_distance
>
> puoi valutare se nel tuo caso sia più significativa.
>
> Puoi implementarti l'algoritmo o usare uno di quelli già disponibili
> Googlando ho trovato i seguenti (che non ho verificato):
>
>
> http://en.wikibooks.org/wiki/Algorithm_implementation/Strings/Levenshtein_distance#Python
>
> http://code.activestate.com/recipes/576874-levenshtein-distance/
>
> Marco
>
> ___
> Python mailing list
> Python@lists.python.it
> http://lists.python.it/mailman/listinfo/python
>
>


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


[Python] Aiuto per testi su machine learning e graph clustering

2012-05-23 Per discussione Antonio Piepoli
Salve a tutti,

sono Antonio PIepoli, studente universitario, ed attualmente mi trovo in
Olanda per svolgere la mia tesi specialistica.
È da un pò che utilizzo python per tutti i miei progetti, quindi, lo
utilizzerò anche per il mio lavoro di tesi.


Premetto che avrei dovuto creare tre mail con tre differenti oggetti... ma
ho preferito non farlo perchè in questo modo avete un quadro generale del
mio progetto e magari potete darmi un feedback generale :P.

Ulteriorie premessa... la mail è lunghetta e mi scuso di questo ... ma sono
davvero in difficoltà e spero che qualcuno di voi abbia la gentilezza di
aiutarmi.


Cerco di spiegarvi in maniera molto generale cosa sto facendo ... poi
passerò alle domande.

Considerate di avere una tabella con questi attributi

Nome,Cognome,Data di nascita, Lavoro, email, città di residenza... in
generale immaginate qualsiasi cosa sia riconducibile ad una identità
digitale...

Immaginate adesso di dividere questa tabella in questo modo:

tabella1: Nome, Cognome
tabella 2: Cognome, Data di nascita
tabella 3: Data di nascita, lavoro
etc...

in sostanza la domanda è : partendo da tutte queste tabelle è possibile
ricostruire la tupla iniziale?

Come avrete notato non sto ragionando in termini di chiavi ... quindi, in
generale, non posso fare un semplice Join sull'attributo in comune perchè
per esempio banalmente esistono più persone con lo stesso nome etc ... sto
considerando anche la possibilità che ci siano errori di battitura tra
diverse tabelle.

L'idea generale è ottenere un valore numerico di similarità (che poi è a
tutti gli effetti una probabilità) tra due tuple di due tabelle diverse...
per esempio

tupla1 = (Antonio, PIepoli) tupla2= (Antonio,Studente) tupla3 =
(Piepoli,datadinascita)

verosimilmente la somiglianza tra tupla1 e tupla2 dovrebbe essere inferiore
a quella tra tupla1 e tupla3.

Dopo avere assimilato questo concetto la mia idea è stata quella di creare
una rete, un grafo, in cui ogni nodo rappresenta una tupla ed ogni arco
rappresentza il valore di somiglianza tra due tuple che hanno almento un
attributo in comune (in generale si può pensare a tabelle con + di due
attributi e quindi il valore di somiglianza deve considerare due
attributi). Una volta ottenuta questa rete bisognerebbe clusterizzare il
grafo in modo tale che ogni cluster rappresenti poi una tupla originaria.

Spero che sia tutto chiaro perchè adesso mi sposterò su dettagli un pò più
tecnici.

1)Come calcolo il valore di verosimiglianza? Risposta: machine learning.
L'idea sarebbe quella di utilizzare un modello di supervised machine
learning impostando un problema di classificazione (0 non match ed 1 match).
Ho scelto SVM (support vector machine) per la sua semplicità e per l'ottima
libreria libsvm ma credo che una scelta vale l'altra.
In sostanza la fase di training corrisponde ad una serie di vettori di
dimensione pari alla cardinalità della tabella applicando ad ogni attributo
opportune metriche (Jaro o Edit distance per esempio).
Quindi il vettore di training ha questa forma
metrica sul nome, metrica sul cognome, metrica sul lavoro  classe
0.2 ,0, 1
,   0
etc ...

una volta fatto il training otterò un modello che potro interrogare con un
vettore di testing ed in uscità avrò la probabilità di appartenzenza a
ciascuna classe...

la prima domanda che vi pongo è: che modelli dovrei creare? un modello per
ogni attributo o un modello generale ?

per esempio... devo fare il training solo sul nome sul cognome etc ...
separatamente o devo creare un modello per tutta la tabella e quando mi
servirà sapere il valore di verosimiglianza su nome e cognome trattare gli
altri attributi come mancanti?


2) per realizzare i cluster... stavo pensando ad algoritmi di tipo
community detection... pensate sia una cosa sensata? oppure c'è un sistema
migliore? In pratica quello che mi aspetto è di avere una rete in cui ci
saranno nodi connessi con archi "pesanti" a nodi della stessa persona e con
archi leggeri a nodi della stessa tabella ma riferiti ad un'altra persona.


alla fine ho un pò affrettato le domande... se non sono chiare provo a
riformularle... questa volta magari con difersi oggetti

scusate se la mail è molto lunga... spero che qualcuno mi sappia aiutare
perchè questo progetto è una cosa che sto faceno praticamente da solo,
senza l'aiuto del mio supervisore perchè lui non conosce nessuno di questi
argomenti ( e nemmeno io fino a qualche mese fa :( )


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