Tales from the Machine Room |
Home Page | Comments | Articles | Faq | Documents | Search | Archive | Tales from the Machine Room | Contribute | Set language to:en it | Login/Register
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
Comments are added when and more important if I have the time to review them and after removing Spam, Crap, Phishing and the like. So don't hold your breath. And if your comment doesn't appear, is probably becuase it wasn't worth it.
By Mattia posted 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
By Anonymous coward posted 24/09/2012 08:34
By Zan posted 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
@ Zan By Davide Bianchi posted 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
By Shyguy posted 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
By Messer Franz posted 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
By Guido posted 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!
@ Guido By Davide Bianchi posted 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
By z f k posted 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
By Daniele Mangiardi posted 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
@ Daniele Mangiardi By Davide Bianchi posted 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
By Kent Morwath posted 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
By ringo posted 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
By trekfan1 posted 25/09/2012 21:17
Nessun "soprannome" per questi $rimba_rinco ecc ?
Vabbé, sono proprio un branco di rinco-rimba
By Anonymous coward posted 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 By Davide Bianchi posted 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
@ Davide Bianchi By Anonymous coward posted 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
By Riccardo posted 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
This site is made by me with blood, sweat and gunpowder, if you want to republish or redistribute any part of it, please drop me (or the author of the article if is not me) a mail.
This site was composed with VIM, now is composed with VIM and the (in)famous CMS FdT.
This site isn't optimized for vision with any specific browser, nor
it requires special fonts or resolution.
You're free to see it as you wish.