Inserire dati disordinati

Andrea R. wrote:

Io leggo il campo, tu leggi il campo, io aggiungo il tuo voto, e tu
aggiungi il tuo voto, ma tu hai letto il campo prima che io lo scrivessi
e quando scrivi il tuo voto cancelli il mio…

Se non ti interessa il voto singolo ma va bene la somma basta che fai
una inc del campo in sql così non hai problemi di simultaneità (non
leggi il campo fai una singola chiamata tipo
update [tabella] set [campo]=[campo]+1 where [indice] = “pippo”:wink:

Andrea R. wrote:
comunque arrivo` il dopo pranzo :slight_smile:

Ho allegato un’immagine con lo schema del database.

Nella mia idea il sistema prevede:

Piuvotazioni (polls) con una data di inizio e di fine Piu utenti, ogni utente partecipa ad una ed una sola votazione
(l’autenticazione e` fatta tramite ldap)

Ogni votazione (polls) ha varie sezioni (parts) che contengono un nome,
il tipo di votazione (select, radio, chech button ecc.) la propria
descrizione.

Ogni sezione (parts) ha varie opzioni (options) di voto.

Un voto contiene l’id della opzione di voto (options), l’id della
sezione di voto (parts), l’id della votazione (polls)

Sono coscente che sarebe bastata l’id dell’opzione di voto e non e`
escluso che l’imiti la tabella a quel campo…

Mi vaga in testa l’idea di aggiungere un campo testo per prevedere anche
risposte aperte…

Considerate che il progetto nasce per una singola votazione con una
singola sezione (versione semplificata giapronta in cui devo soltanto risolvere il problema dei voti) ma mi son detto perche non
implementarla per situazioni piucomplesse? cosi per riciclarla per
altre situazioni…

La soluzione di utilizzare un contatore invece di memorizzare i voti emolto interessante e probabilmente la utilizzero per la prossima
votazione (quella con la versione semplificata), ma ragionando nel
divenire mi limito la possibilita` di fare statistiche e quella di
aggiungere domande a risposta aperte, a meno di utilizzare un’altra
tabella

P.S. forse sono io a creare problemi perversi :frowning:

Andrea

Andrea R. wrote:

La soluzione di utilizzare un contatore invece di memorizzare i voti emolto interessante e probabilmente la utilizzero per la prossima
votazione (quella con la versione semplificata), ma ragionando nel
divenire mi limito la possibilita` di fare statistiche e quella di
aggiungere domande a risposta aperte, a meno di utilizzare un’altra
tabella

P.S. forse sono io a creare problemi perversi :frowning:

Andrea

Come dice Perego vai di transazione, ci aggiungi un try catch e se non
va la transazione la riesegui ricaricando i dati così eviti il problema
degli accessi concorrenziali.

Per il salvataggio dati usi YAML per salvare e caricare una struttura
dati complessa (una hash di voti ad es: { :checkbox => 1, :open_answear
=> “non ci siamo”, :boolean => true, etc… } )

Così hai tutto…

Andrea R. wrote:

Posted by Alessandro S. (ninjinka) wrote:

Come dice Perego vai di transazione, ci aggiungi un try catch e se non
va la transazione la riesegui ricaricando i dati così eviti il problema
degli accessi concorrenziali.

Per il salvataggio dati usi YAML per salvare e caricare una struttura
dati complessa (una hash di voti ad es: { :checkbox => 1, :open_answear
=> “non ci siamo”, :boolean => true, etc… } )

E` vero ma mi viene la sindrome da access! :slight_smile:

Non la conosco :slight_smile: access l’ho usato solo una volta per capire come si
disinstallava e basta :slight_smile:

Posted by Alessandro S. (ninjinka) wrote:

Come dice Perego vai di transazione, ci aggiungi un try catch e se non
va la transazione la riesegui ricaricando i dati così eviti il problema
degli accessi concorrenziali.

Per il salvataggio dati usi YAML per salvare e caricare una struttura
dati complessa (una hash di voti ad es: { :checkbox => 1, :open_answear
=> “non ci siamo”, :boolean => true, etc… } )

E` vero ma mi viene la sindrome da access! :slight_smile:

Sono riuscito a ragionare quasi dieci minuti ed ho deciso che ho scritto
una cavolata… Non ci rimetto nessun dato statistico utilizzando dei
contatori invece di singole votazioni, o meglio gli unici dati
statistici che perdo sono quelli temporali (es: frequenza votanti per
ora), ma li posso estrarre senza danno dai log.
Quindi l’unico limite dei contatori e il non permettere risposte aperte.

Come posso salvare risposte aperte evitando la sindrome da accass?

Scrivendo ho visto la luce, li salvo singolarmente come file all’interno
di una cartella per parte di votazione, nome random, randomizzo la data
di creazione e in caso disattivo l’atime sul filesistem.

E se voglio fare il figo mi aggiungo un file con l’md5 di ogni file

Dite che e` sensato o sono obnubilato dalla stanchezza?

2010/9/24 Alessandro S. [email protected]

E` vero ma mi viene la sindrome da access! :slight_smile:

Non la conosco :slight_smile: access l’ho usato solo una volta per capire come si
disinstallava e basta :slight_smile:

a’ccess? Lo uso ogni mattina ma anche molte volte al giorno dopo i pasti
:slight_smile:

Ok basta OT, basta OT


“… static analysis is fun, again!”

OWASP Orizon project leader, http://github.com/owasp-orizon
Owasp Italy R&D director

Non mi addentro nella questione, ma al voto via internet hanno lavorato
in tanti e da tanti anni per cui di sicuro qualcuno ha già dovuto
affrontare il problema particolare su cui ti stai concentrando. Hai
provato a vedere come l’hanno risolto?

Non starai facendo sw per le elezioni politiche vero? e quindi è
possibile che il sistema a cui stai lavorando non abbia particolari
requisiti di riservatezza (nessuno deve sapere cosa ho votato) né di
verifica dei voti (voglio sapere che il mio voto è stato davvero contato
e che non è stato alterato). Probabilmente non è grave se qualcuno
(anche solo un admin) dovesse scoprire chi è l’autore di un certo voto,
ma quando si ha a che fare con privacy, sicurezza e crittografia le
soluzioni fai-da-te hanno quasi sempre delle falle. Le uniche che
funzionano sono quelle che hanno avuto un audit da tanti esperti e che
sono state sistemate nel corso del tempo.

Ti do qualche link

http://www.dmoz.org/Society/Politics/Campaigns_and_Elections/Electronic_Democracy/Electronic_Voting_Systems/

Detto questo, scrivendo codice da zero si impara tantissimo di un
dominio applicativo e ci si mette nella condizione di iniziare a capire
il lavoro di chi ci si è dedicato da anni; inoltre è probabilissimo che
quel che stai progettando sia più che sufficiente per i tuoi requisiti e
quindi non perder troppo tempo con quei link per ora :slight_smile:

Paolo

Intanto ti ringrazio per l’interessante risposta.

Paolo M. wrote:

Non mi addentro nella questione, ma al voto via internet hanno lavorato
in tanti e da tanti anni per cui di sicuro qualcuno ha già dovuto
affrontare il problema particolare su cui ti stai concentrando. Hai
provato a vedere come l’hanno risolto?

Ammetto che non me l’ero posto… ed effettivamente avrei fatto bene a
pormelo, non sono partito con il piede giusto :slight_smile: .

Non starai facendo sw per le elezioni politiche vero?

Mi ci mancherebbo soltanto questo! Per fortuna no…

e quindi è possibile che il sistema a cui stai lavorando non abbia
particolari requisiti di riservatezza (nessuno deve sapere cosa ho votato) né
di verifica dei voti (voglio sapere che il mio voto è stato davvero contato
e che non è stato alterato). Probabilmente non è grave se qualcuno
(anche solo un admin) dovesse scoprire chi è l’autore di un certo voto,
ma quando si ha a che fare con privacy, sicurezza e crittografia le
soluzioni fai-da-te hanno quasi sempre delle falle. Le uniche che
funzionano sono quelle che hanno avuto un audit da tanti esperti e che
sono state sistemate nel corso del tempo.

Il mio progetto nasce in seguito ad una richiesta di una casella di
posta per una votazione, al che dopo ovvie note su sicurezza, privacy, e
certezza del mittente; mi hanno imbarcato in questa impresa ed io sono
salito a bordo con l’idea di divertirmi. L’ovvia conseguenza e che i compromessi sono accettabili, ma la sagezza mi spinge a non conservare dati inutili e l'origine del voto oltre che inutile e anche una grande
tentazione per i nostri deboli spiriti!
In sintesi vorrei, evitando crittografia e distribuzioni di certificati,
arrivare ad un accettabile livello di sicurezza e di privacy, del resto
l’autenticazione ldap che utilizzeranno e la stessa della posta, del programma di contabilita e di tante altre cose, quindi sono certo
(anche se e vietato) che ogni segretaria ha la password del proprio dirigente, il vicino della scrivania del suo vicino ecc. il primo compromesso e nell’autenticazione!
Comunque per forma e correttezza documentero nel sito tutti i processi di autenticazione, votazione, registrazione dei dati e daro accesso al
sorgente del sito stesso. Probabilmente e piu del necessario, ma non
vedo perche non fare le cose per bene…

Ti do qualche link

Punchscan - Wikipedia
Prêt à Voter - Wikipedia
http://www.dmoz.org/Society/Politics/Campaigns_and_Elections/Electronic_Democracy/Electronic_Voting_Systems/

Tutti molto interessanti, oltre che decisamente piu complessi della mia necessita, la parte teorica di Punchscan e molto interessante e ben scritta, ma penso/spero che utilizzare dei contatori invece di singole righe in una tabella, mi garantisca un adeguato livello di anonimato e di funzionalita :slight_smile: .

Detto questo, scrivendo codice da zero si impara tantissimo di un
dominio applicativo e ci si mette nella condizione di iniziare a capire
il lavoro di chi ci si è dedicato da anni;

Non nego che per per me e` stata un ottima scusa per rimettermi un po a
programmicchiare, cosa che faccio con molto piacere.

inoltre è probabilissimo che quel che stai progettando sia più che
sufficiente per i tuoi requisiti e quindi non perder troppo tempo con quei
link per ora :slight_smile:
Paolo

Grazie ancora per i consigli e gli ottimi spunti di riflessione.

Andrea

2010/9/25 Paolo M. [email protected]:

ma quando si ha a che fare con privacy, sicurezza e crittografia le
soluzioni fai-da-te hanno quasi sempre delle falle. Le uniche che
funzionano sono quelle che hanno avuto un audit da tanti esperti e che
sono state sistemate nel corso del tempo.

Parole santissime, i sistemi di voto sono difficili e non potrei
essere piu’ d’accordo con quello che dici!