Storie dalla Sala Macchine


Home Page | Commenti | Articoli | Faq | Documenti | Ricerca | Archivio | Storie dalla Sala Macchine | Contribuire | Imposta lingua:en it | Login/Register


Almeno per una volta...

Almeno per una volta mi piacerebbe vedere una webapplicascion che sia stata progettata con un minimo di intelligenza e con l'uso del cervello e non con $partedelcorpochenoncentraunbelinoconilcervello. Voglio dire, un database con delle chiavi primarie decenti (possibilmente NON autoincrementanti), delle tabelle che pare quasi abbiano un senso, niente tabelline del menga 'codice/descrizione' e basta, una interfaccia nel backoffice che consenta di estrarre i dati dal database dopo che sono stati inseriti senza dover scardinare il suddetto database con un piede di porco o domandare al sysadmin di fare delle query manuali, parametri di configurazione dove hanno senso e non alla ca$$o, almeno metti un foxxuto 'readme' per quando si fanno le installazioni! Se non altro, quando il sysadmin tentera' un aggiornamento e l'intero sistema gli scoppiera' in faccia sara' una sorpresa invece che un fatto atteso.

Prendiamo per esempio l'applicazione su cui sto madonnando in questo momento. Sembra una normalissima applicazione per la gestione di newsletter (perche' un banale gestore di mailing list non basta no?) finche' non ti accorgi che ci sono una tonnellata di 'attributi' memorizzati per ogni utente, ed ovviamente una mezza tonnellata di questa tonnellata sono duplicati o ennuplicati. Ed ovviamente non c'e' modo di avere una lista dei parametri duplicati. Uno dei parametri e' ovviamente l'indirizzo di posta elettronica. Come dite? Fare un indice univoco sull'indirizzo di e-mail? Troppo difficile evidentemente.

Ovviamente i pinguini che usano quest'accrocchio domandano a noi (aka: me) di estrargli un elenco di utenti con mail duplicate, perche' non e' possibile ottenerlo dalla sua interfaccia. Ed io devo smazzarmi la struttura (il)logica di questo dannato database per scoprire come si estraggono gli utenti che hanno dati duplicati. E li' si scopre che non solo e' possibile aggiungere due utenti con la stessa e-mail, e' praticamente possibile inserire 'n' utenti con dati identici (grazie alla magia degli id autoincrementali) e non capire piu' quale utente e' quello "giusto".

Dopo aver madonnato e sacramentato sulla struttura di questo coso riesco ad ottenere una stampa sufficientemente chiara e risulta che su 195000 records, un buon 70000 sono duplicati. Ho la vaga impressione che il resto siano inutili, ma questo sono io.

Poi viene il momento di fare un aggiornamento dell'intero coso e si scopre che l'unico modo di farlo e' andare manualmente a copiare i files da un posto all'altro e dato che questo coso evidentemente usa la tecnica di distribuzione (copie multiple dello stesso codice in diverse directory) invece che di centralizzazione (una sola versione del codice) in alcuni casi significa fare una caterva di copie ed in alcuni casi alcune di quelle copie non devono essere sostituite perche' i cambiamenti sono solo in alcune copie (lo so che suona idiota, non sono io che ho scritto il codice).

E visto che stiamo parlando di avvenimenti impossibili a verificarsi, mi piacerebbe anche vedere un programmatroto che mi fornisce gli aggiornamenti che funzionano (aka: un singolo file .zip o .tgz che basta espandere nella directory principale del progetto per ottenere l'installazione) invece di dover dare la caccia ad i files in una pletora di directory e sottodirectory dai nomi astrusi e magari che non mi richieda di farmi un account su 'Dropbox' dato che sia noi che loro hanno a disposizione un bellissimissimo server FTP per questo scopo.

Davide
24/09/2012 08:00

Precedente Successivo

I commenti sono aggiunti quando e soprattutto se ho il tempo di guardarli e dopo aver eliminato le cagate, spam, tentativi di phishing et similia. Quindi non trattenete il respiro.

18 messaggi this document does not accept new posts

Mattia

Di Mattia postato il 24/09/2012 08:30

Ma Dropbox fa tanto cloud ed e' piu' fico.

Solo quelli della vecchia generazione usano ancora FTP, non lo sapevi?

-- Mattia

Anonymous coward

Di Anonymous coward postato il 24/09/2012 08:34

io cambierei le clausole del contratto, imponendo i costi in funzione dell'idiozia delle applicazioni da gestire. Secondo me diventereste miliardari in poco tempo. -- Anonymous coward

Zan

Di Zan postato il 24/09/2012 09:00

Domanda (probabimente stupida): ma non ti capita mai di lavorare con "programmatroti" che usino sistemi di versionamento? Mai che un progetto si aggiorni via git/svn/csv? Giusto per curiosità...

-- Zan

Davide Bianchi

@ Zan Di Davide Bianchi postato il 28/09/2012 09:27

Mai che un progetto si aggiorni via git/svn/csv?

Tu aggiorneresti un progetto in produzione da un sistema di sviluppo? Io no.

-- Davide Bianchi


Shyguy

Di Shyguy postato il 24/09/2012 09:55

[quote]Voglio dire, un database con delle chiavi primarie decenti (possibilmente NON autoincrementanti), delle tabelle che pare quasi abbiano un senso, niente tabelline del menga 'codice/descrizione' e basta[/quote]

Purtroppo in alcune università quando si parla di database ti insegnano ad abusare delle chiavi autoincrementali ed a fare tabelle per ogni cavolata senza pensare ad una normalizzazione sensata. Purtroppo i pischelli che escono da queste università si rivendono per un bianco e un nero e i loro <strike>aborti</strike> prodotti finiscono nelle tue mani :-p

-- Shyguy

Messer Franz

Di Messer Franz postato il 24/09/2012 10:36

<e magari che non mi richieda di farmi un account su 'Dropbox'....

Cosa hai contro Dropbox? il Cloud e' la soluzione a tutti i problemi dell'universo , dalla fame nel mondo ai meteoriti come quello che ha estinto i dinosauri!

Prendi esempio da lui ( il programmatroto) : ha fatto un account dropbox , ci ha uiploadato il suo cervello e ora lo puo' raggiungere da qualsiasi parte del mondo....ma poi si e' dimenticato la password e non ha avuto piu' modo di recuperarlo....

-- Messer Franz

Guido

Di Guido postato il 24/09/2012 10:51

alura, sul fatto delle pk autoincrementali posso sostanzialmente essere d'accordo, a condizione che tu usi una primary key che abbia senso (tipo l'email) e non come si fa da queste parti che la pk viene da una sequence...

Comunque continuo a non capire il perchè l'estrazione dei dati debba ricadere sul sysadmin di turno... Non c'è un'interfaccia per estrarre i dati? Pigliatela con chi l'ha fatta no? Poi magari sbaglierò io...

-- salva un albero: mangia un castoro!

Davide Bianchi

@ Guido Di Davide Bianchi postato il 28/09/2012 09:29

Non c'è un'interfaccia per estrarre i dati? Pigliatela con chi l'ha fatta no?

E cosa ti sembra che stia facendo io?

-- Davide Bianchi

z f k

Di z f k postato il 24/09/2012 12:25

Hmmm...

Ok, adesso dimmi come hai fatto ad accedere alla mia webapplicascion... Te sai _troppe_ cose...

CYA

-- z f k

Daniele Mangiardi

Di Daniele Mangiardi postato il 24/09/2012 15:03

Quindi vorresti un programmatore in grado di fare il lavoro per cui viene pagato ? Ma sei un inguaribile ottimista, secondo me la razza è in via d'estinzione..

-- Daniele Mangiardi

Davide Bianchi

@ Daniele Mangiardi Di Davide Bianchi postato il 28/09/2012 09:29

Ma sei un inguaribile ottimista, secondo me la razza è in via d'estinzione..

E ci hai ragione ci hai...

-- Davide Bianchi

Kent Morwath

Di Kent Morwath postato il 24/09/2012 15:24

È la magia dello stack LAMP. Siccome non lo paghi nulla perché dovresti prenderti la briga di fare qualcosa di decente? Prima quando spendevi qualche bazillione per Oracle ti veniva un sneso di colpa e cominciavi a studiare qualcosa di database (anche perché i dischi SCSI in RAID ti costavano un botto e mica c'avevi spazio da buttare via...)  MySQL e Postgres sono aggratis, niente sensi di colpa (i manuali? mica servono...), i dischi costano poco, il DB diventa un DD (Data Dump), chissenefrega se lo stesso dato è duplicato N volte, anzi, così è più sicuro... altro che RAID! Poi così non c'ho le join che ho letto da qualche parte sul blog di Shurapatra Boiachecodice che mica sono belle perché rallentano le SELECT... magari perché non c'ha un'indice sui campi delle FK? Ma ho letto anche che gli indici rallentano le prestazioni (su una tabella che scrivo tre volte al giorno e leggo un milione di volte all'ora...) quindi mica ce li metto, la mia applicascion deve essere velocissima... quindi via anche i constraint che ho letto che ralletano di brutto, li faccio io da codice, e se me li dimentico amen, così è più veloce...

Poi le chiavi surrogate sono anche utili se vuoi una chiave immutabile e non hai una chiave naturale (gli indirizzi di posta possono cambiare...) ma vanno usate con intelligenza - e ci sono altri constraint oltre alle PK.

-- Kent Morwath

ringo

Di ringo postato il 24/09/2012 16:41

Posso spezzare una lancia a favore del povero programmatroto che si avvale di dropbox?

Che e' successo pure a me di dover inviare con la solita estrema urgenza, un .tgz ad una controparte, che mi aveva detto di depositare il file in un server ftp del quale io avrei dovuto avere l'utenza di accesso.

Non devo spiegarvi che l'utenza di accesso era stata comunicata solo al nostro UL, con tutte le conseguenze del caso, vero?

-- ringo

trekfan1

Di trekfan1 postato il 25/09/2012 21:17

Nessun "soprannome" per questi $rimba_rinco ecc ?

Vabbé, sono proprio un branco di rinco-rimba cool

-- trekfan1

Anonymous coward

Di Anonymous coward postato il 27/09/2012 02:15

Vuoi sapere perchè si usano chiavi autoincrementanti?

1) Non si sa come creare chiavi uniche (c#: new Guid())

2) Si teme che il valore non sia veramente unico

3) si possono selezionare i dati con la clausola ORDER BY DESC / ASC,

altrimenti devi crearti un campo data, magari in formato unix time

Quando però si usa l'auto-increment ci si dovrebbe chiedere: e se poi arrivo al massimo valore del tipo scelto? ;\)

-- Anonymous coward

Davide Bianchi

@ Anonymous coward Di Davide Bianchi postato il 28/09/2012 09:31

Vuoi sapere perchè si usano chiavi autoincrementanti?

Perche' non si e' capaci di progettare i database! Ecco perche'!

-- Davide Bianchi

Anonymous coward

@ Davide Bianchi Di Anonymous coward postato il 28/09/2012 22:29

 

Vuoi sapere perchè si usano chiavi autoincrementanti?

Perche' non si e' capaci di progettare i database! Ecco perche'!

Hai riassunto i punti scritti da me :\)

-- Anonymous coward

Riccardo

Di Riccardo postato il 01/10/2012 13:41

Alla mia prima esperienza da software architect, in cui praticamente mi mandarono allo sbaraglio visto che ero un semplice programmatore, autodidatta per giunta, disegnai i diagrammi entità-relazioni, con tanto di cardinalità, chiavi esterne, indici, etc...

Reazione: non c'è stato un, dico UNO, collega che sapesse leggerlo subito: la reazione tipica è stata "non li vedo dai tempi dell'università". Quindi non denigrate le università, se avete passato anni a fumare erba o a provolare con le ragazze di lettere, c'è qualcuno che invece li ha passati ad acquisire conoscenze che poi nel mercato del lavoro non vengono valorizzate come si deve.

-- Riccardo

18 messaggi this document does not accept new posts

Precedente Successivo


Il presente sito e' frutto del sudore della mia fronte (e delle mie dita), se siete interessati a ripubblicare uno degli articoli, documenti o qualunque altra cosa presente in questo sito per cortesia datemene comunicazione (o all'autore dell'articolo se non sono io), cosi' il giorno che faccio delle aggiunte potro' avvisarvi e magari mandarvi il testo aggiornato.


Questo sito era composto con VIM, ora e' composto con VIM ed il famosissimo CMS FdT.

Questo sito non e' ottimizzato per la visione con nessun browser particolare, ne' richiede l'uso di font particolari o risoluzioni speciali. Siete liberi di vederlo come vi pare e piace, o come disse qualcuno: "Finalmente uno dei POCHI siti che ancora funzionano con IE5 dentro Windows 3.1".

Web Interoperability Pleadge Support This Project
Powered By Gojira