lunedì 9 aprile 2018

Altro esempio di "buona" programmazione


Oggi mi sono imbattuto in questo: frontend che deve visualizzare dati da una tabella A e permette di ricercare per vari parametri tra cui x. X che pero' non e' su A ma su B. Poco male, basta una join... Pero' se fosse stato cosi' non sarei qui a scrivere.

Il tizio: prima va su B e si tira su tutte le righe che corrispondono a x (e sono una valanga di colonne). Poi fa un ciclo e aggiunge l'id di A ad un Set (poi vi spiego anche perche'). Prende un interator dal set e va per id su A (finalmente).

Perche' proprio un Set? Perche' non ammette duplicati, e la relazione tra A e B e' uno a molti. Quindi una riga di A ha piu' corrispondenze su B. Bastava una distinct... in sql select distinct(id) su hibernate addiruttura e' possibile a) tirare su l'entity (select pippo from A pippo) passando alla select l'alias e farlo con distinct (select distinct pippo) e poi schioccarci la join... select distinct a from A a, B b where a.id = b.id and eccetera...

UNA query. UNA!

sabato 30 dicembre 2017

Negazionismo


Giovedi' alla radio stavano intervistando un negazionista. Oddio "intervistare" e' un parolone visto che i conduttori l'hanno (giustamente) ricoperto di insulti. Pero' a me invece sarebbe sembrato piu' opportuno fargli qualche domandina, giusto cosi' per vedere cosa si sarebbe inventato...

Tipo come mai tutti i sopravvissuti (quindi quelli che in Lager ci sono stati veramente) sono concordi nell'affermare che le camere a gas sono esistite?
Se davvero e' stata una montatura come dicono i negazionisti come mai non ne e' mai saltato fuori uno che sia uno a dire oh ma che cazzo dite? Le camere a gas non c'erano! - nemmeno in punto di morte?

Come mai gli appartenenti al Sonderkommando che hanno avuto il culo di sopravvivere (visto che non era assolutamente nei piani tedeschi che succedesse visto il compito) hanno tutti testimoniato riguardo l'esistenza delle suddette - visto che erano loro a prelevare i cadaveri dalle camere a gas ed infilarli nei crematori?
Come mai non hanno mai detto oh guardate che e' un'invenzione degli alleati!
Chi meglio di loro?

C'erano i contratti di fornitura dei crematori (le ditte che le producevano facevano crematori "civili") - invenzione pure quelli?
...e i resti trovati fatti frettolosamente saltare dai tedeschi in ritirata?
...e le macerie dei crematori che i Sonderkommando hanno dovuto spalare?

e le fotografie (come quella di Brasse che accompagna questo articolo)? Ci sono foto di donne e bambini che viaggiano verso il crematorio - un falso anche quello?

E se davvero le camere a gas (e i crematori) non sono mai esistiti dove sono finiti quei milioni di persone che a tutt'oggi risultano scomparsi?

- ragazzi il negazionismo non si regge in piedi, non e' nemmeno lontanamente plausibile, ed e' un'offesa per tutte quelle persone che sono state uccise o hanno patito solo perche' erano considerati "inferiori". Piu' che il tempo passa e piu' che questi fatti si affievoliscono, i testimoni diretti sono sempre meno. Cerchiamo di non dimenticare, perche' questo e' stato. -

11/05/2018 ADDENDUM: Il libro Comandante ad Auschwitz di Rudolf Hoss (si proprio lui) descrive dettagliatamente l'uso delle camere a gas, del sonderkommando, e come sono arrivati ad usare lo Zyklon B (addirittura se ne vanta come metodo "piu' umano" (per i carnefici) di uccisione). Hoss era l'ultimo che avrebbe avuto interesse ad affermare una falsita' (ha una personalita' complessa, il libro ve lo consiglio non tanto per quello che scrive ma per quello che e' possibile capire da quello che scrive della sua personalita'). Quindi i dettagli che abbiamo, da diverse fonti e diversi testimoni sono tutti straordinariamente coerenti...

mercoledì 15 novembre 2017

Jpa unique constraint violated (con sequence)


Il caso d'uso e' questo: Entity con una sequence per la generazione dell'id e e tag @GeneratedValue(strategy=GenerationType.SEQUENCE) quando provate l'insert il database vi risponde picche perche' la pk che state cercando di inserire esiste gia'.

Come si risolve: andate a db e vedete quanto vale l'allocation size della sequence (1, 20, millemila) aggiungete nel tag @SequenceGenerator (dopo il nome della sequence) allocationSize = $VALORE dove $VALORE e' lo stesso allocation size della sequence. Fine.

venerdì 13 ottobre 2017

Perl DBD::Oracle non si installa


Capita spesso nella vita di un programmatore di dover migrare da un pc ad un altro. Spesso quello che funzionava o si installava in un pc non e' detto che funzioni in un altro, soprattutto se cambia l'architettura di sistema... Tipo? Avevo un pc con w7 e usavo felicemente PADRE (l'ide perl scritto in perl, lo uso sotto linux e mi ci trovo parecchio bene).

Mi hanno cambiato pc e ho pensato (speravo!) di potermelo portare dietro. PADRE ha un vantaggio/svantaggio ha integrato dentro di se una qualche versione di perl (strawberry perl-a precisione). Questo di per se' non e' che sia un grossissimo problema, hai cpan etc etc.

Se per(l)o' i tuoi script si devono connettere ad un db oracle iniziano le bestemmie, perche' padre e' 32 bit senza seghe. O ti installi l'oracle client (durante l'installazione installa anche l'oci client o devi rifare tutto da capo) ma non ho provato, confesso - opppure ti installi un perl a 64 bit (strawberry perl) - l'oracle client a 64 bit pero' butti via padre - ho provato komodo edit non e' come padre (io mi trovo meglio con quest'ultimo) - pero' e' un'alternativa per mantenere la macchina tutta a 64bit...

Ricapitolando:

se hai bisogno di DBD::Oracle

  • - Installa oracle client a 64bit (e anche l'oci
  • - Installa strawberry perl (o che minchia ti pare) a 64 bit
  • - A questo punto puoi fare cpan install DBD::Oracle e vedere che va...

JPA cannot persistence context named...


Lo scenario e' questo: voi cercate di prendere il persistence context con un certo nome. Nel persistence il nome e' quello. A me e' successo migrando un processo da linux (imbuto) a merdows 10. Probabilmente la codifica e' diversa, perche' a video il nome e' quello specificato.

O cambiate la codifica (magari andando a vedere quella del pc "sorgente") oppure cambiate (o riscrivete) il nome sul persistence e da dove lo richiamate.

Et voila'

lunedì 17 luglio 2017

Vaccini - antipolio

Brevemente, una frangia antivaxx sostiene che non siano state le vaccinazioni a determinare la scomparsa di certe malattie.

Prendo l'antipolio come esempio perche' e' lampante: Il grafico qui sotto mostra i casi di poliomelite divisi per anno:



Secondo Wikipedia le prime vaccinazioni di massa antipolio sono iniziate nella primavera del 1964, esattamente il punto in cui i casi di polio iniziano a crollare.

Le conclusioni le lascio a voi. Alla prossima!