mercoledì 28 ottobre 2015

java quando usare un pojo e quando le entity

Premessa: stiamo parlando di un contesto in cui c'e' un framework di persistenza nel mezzo se si usa sql e result set il discorso perde di validita'.

Premessa 2: per qualche ragione non c'e' una relazione tra gli oggetti che ficchiamo nel bean

La entity ha il vantaggio di tirare l'oggetto fuori dal db in maniera relativamente veloce ma dall'altro lato se devo visualizzare dati provenienti da piu' entity peggiorano la leggibilita' del codice.

Un pojo ha il vantaggio che tutti i dati vengono da lui ma deve essere "trasformato" e quindi richiede dell'elaborazione in piu'.

Se si tratta di poche righe puo' valerne anche la pena ma se son tante il tempo richiesto per trasformarle in pojo puo' essere tanto.

Come regola generale e' sempre bene limitare il numero di dati da "trasportare" quindi cercando di forzare l'utente ad immettere dei parametri di ricerca
ma se le righe continuano ad essere tante usero' le entity per dare una panoramica generale per poi costruire un pojo nel momento un cui l'utente clicca per accedere al dettaglio...

[Aggiornamento 13/10/2017]

Il discorso di cui sopra e' tutto molto bello, ma non tiene conto di un fatto: hibernate fa un fottutissimo accesso al db ogni qualvolta si fa una set/get/new di una entity questo produce: a) un overhead clamoroso di accessi al db non necessari (il dato ce l'hai gia' oppure non e' detto che se fai il set tu lo voglia salvare davvero in quel preciso istante) b) hibernate gestisce con una $PARTE_POCO_NOBILE gli accessi concorrenti, per cui o ti usi una sequence (o un altro dato univoco) oppure se usi il generic generator e due persone in contemporenea creano una nuova entity avranno lo stesso id con una conseguente primary key violation e non e' esattamente bello.

Quindi se avete un hibernate "vecchio" cazzi vostri e vi dovete gestire il mapping su un pojo a manina, se avete un hibernate piu' nuovo (o JPA) se lo puppa lui con il mapping ma in soldoni mai mai MAI lavorare con le entity...

giovanni fai tre danni

...io non dormo te non muori e la candela si consuma.

Popolarissimo detto la cui origine e' spiegata qui

Dicesi di qualcuno che seppur involontariamente causa numerosi problemi.

lunedì 26 ottobre 2015

Matrimonio gay


Premessa:

Questa e' la mia opinione - liberissimi di pensarla diversamente.

In primis: sono favorevole al matrimonio (quindi al riconoscimento legale) dell'unione tra persone dello stesso sesso. Anche perche' non sarebbe altro che un riconoscimento dal punto di vista giuridico di una situazione che gia' esiste. La convivenza tra persone dello stesso sesso e' una realta', e pure da tanto. Possiamo fare gli ipocriti e fare finta di niente, oppure aggiornarci e prenderne atto anche a livello giuridico.

Checche' ne dicano le solite oche, non mettera' in crisi la famiglia tradizionale, perche' come sono sempre esistiti gli omosessuali, sono sempre esistiti gli etero. Anche perche' se no ci saremmo gia' estinti. Non e' riconoscere dei diritti a delle persone che mette in crisi la famiglia. La famiglia e' messa in crisi dalla totale assenza di politiche sociali. Se avete dei figlioli il nido costa piu' di 200€ al mese + mensa (altro centinaio d'euro). Non sono poche. Ma le scelte sono altrettanto limitate, soprattutto se non hai parenti che te lo possono tenere. Se la madre e' dipendente puo' usufruire della maternita', ma molto spesso la donna viene discriminata perche' potrebbe avere figli. Questo mette in crisi la famiglia. La famiglia e' in crisi perche' lavoro non si trova, o se ne trova poco. La famiglia e' in crisi perche' chi lavora e' precario e non ha la possiblita' di mettere su casa. La famiglia e' in crisi perche' mantenere un figliolo costa e costa tanto. E' un impegno e le agevolazioni da parte dello Stato e del datore di lavoro sono pochissime per non dire nulle.

Non certo il matrimonio tra persone dello stesso sesso.

Vogliamo parlare di adozioni? Anche quella e' una situazione che gia' esiste. Non ci credete? Avete mai sentito parlare di genitori rainbow sono omosessuali che hanno avuto figli da una relazione etero. In maniera "tradizionale" diciamo. Quindi questi bambini crescono in una famiglia omosessuale (o almeno con un genitore omosessuale). E quindi?

Allora perche' non prendere atto che questa situazione esiste e regolamentarla? Ci sono tanti bambini che stanno in un istituto e a cui manca il calore e l'amore di una famiglia. Che sia etero o omo. E allora perche' negare il calore di un abbraccio a questi bambini?

C'e' chi obietta che la societa' non e' pronta, ma se non e' pronta per le adozioni omosessuali non e' pronta nemmeno per i genitori rainbow. Senza contare che non e' che si aspetta che la societa' sia pronta per un certo fenomeno. La societa' si adatta a quello che e' la realta' dei fatti e i genitori omosessuali sono una realta' che le sentinelle in piedi lo vogliano o meno...

Potreste pensare che qualche genitore gay voglia adottare per capriccio. Beh, le attuali procedure di adozione lo escludono a priori. Sono talmente macchinose e complicate che nessuno adotta per capriccio. Di solito chi vuole i figli per capriccio fa prima a farli nella maniera consueta. E sono tanti.

Ah e chi obietta che da famiglie omosessuali verranno bambini "traviati" si ricordi che tutti gli omosessuali derivano da due eterosessuali...

Alla prossima!

domenica 25 ottobre 2015

Gnome 3 non aggiunge voce di menu

- si sono masochista nonostante mi faccia schifo quello che e' diventato gnome continuo ad installarlo nella speranza che siano riusciti a fare qualcosa di decente -

oggi parliamo di un'installazione fresca di debian 8 (visto che la 7 aveva diversi problemi soprattutto dovuto all'architettura mista 32/64 bit) - scheda video presa al primo colpo - configurazione dei due monitor semplice come semplice e' impostare un monitor primario diverso -

l'eclipse fornita dai repo e' indigo quindi anche no - mi scarico la mars j2ee la scompatto nella mia home e vado a creare una nuova voce di menu' se non fosse per il fatto che non posso farlo perche' l'ok e' disabilitato -
chmod 700 lascia il tempo che trova

la mia soluzione:
creato uno script .sh per lanciare eclipse e creata una nuova voce di menu' per lo script e cosi' funziona...

non nego che ci siano altre soluzioni (tipo mettere le mani al file del menu') ma non avevo ne' tempo ne' voglia...

alla prossima!

23/01/2021:
Intanto se siete finiti su questo post complimenti. Poi: da utente di vecchia data di gnome ho l'impressione che i suoi sviluppatori stiano facendo tutto il possibile per farlo abbandonare (tipo il fatto che gnome adesso non permetta piu' le icone sul desktop). Quindi se volete gnome "come deve essere" passate a Cinnamom. Perche' e' esattamente Gnome come avrebbe dovuto essere...

venerdì 23 ottobre 2015

Truffa telefonica

L'articolo e' stato aggiornato dopo la pubblicazione iniziale:
Ricevo una chiamata da +34390863090051 che dice di essere Rossi dell'Istituto di Sanita' senza il superiore.
Riaggancio senza nemmeno farlo finire per 2 motivi:
1. ha chiamato sul mio numero personale che non e' pubblico ma solo per pochi amici
2. l'istituto di sanita' si chiama "istituto superiore di sanita'
3. non chiama persona per persona ma fa comunicati ufficiali
4. googlando il numero si trovano parecchie telefonate da questo numero con gente che si spaccia per l'agenzia delle entrate etc
quindi e' una truffa
ok avevo detto due
dopo di che ho blacklistato il numero

aggiornamento: mi e' stato poi rivelato dall'autore che trattasi di un'app per scherzi telefonici.
valgono le regole generali di prudenza: mai fidarsi di quello che dice l'interlocutore soprattutto se non si conosce il numero

A te che ieri quasi mi tamponi

Antefatto: sono andato a riprendere la moto dal meccanico. Siccome ha cambiato (tra le altre cose) anche le pasticche, per cui devono assestarsi, ho scelto di fare la Statale invece della superstrada (piu' frenate = minor tempo di assestamento). Per un tratto ci sono stati i Carabinieri che andavano decisamente piano (40-50 col limite di 70). La situazione era questa: davanti i carabinieri, due macchine, io e dietro il genio senza lampada.

Che questo fosse un diversamente furbo s'e' visto subito perche' mi stava letteralmente attaccato. Se questa manovra e' fastidiosa in auto (venire tamponati non e' mai piacevole, ma auto contro auto difficilmente rischi la vita), in moto decisamente la trovo odiosa - perche' devo rischiare di morire per colpa della tua idiozia?

Questo tizio oltretutto prova due o tre manovre pericolose, tra cui il passarmi da destra. Al che mi scanso inchiodo e lo faccio passare. Voglio vedere dove va...

Questo appena superatomi inchioda. Non so se si sia offeso per il gesto accompagnatorio (braccio disteso alla - levati di torno) oppure piu' realisticamente abbia visto i Carabinieri davanti, fatto sta che inchioda.

Memore di un'avventura precedente (dove un tizio che ho lasciato passare mi ha letteralmente inchiodato davanti) quando questo inchioda lo ripasso.

Poi i Carabinieri hanno girato, lui e' sparito (credo abbia parcheggiato due metri piu' avanti*) e io sono tornato a casa**

Ma questo voglio chiedergli: ma se vedi una colonna (due macchine e una moto... una colonnina) che va piano, tra cui un veicolo che potrebbe benissimo superarli tutti e non lo fa, non ti viene il dubbio che ci sia un valido motivo? Come quelli che superano chi si ferma davanti alle strisce... Ma se s'e' fermato ma chieditelo il perche'! E soprattutto rispetta quella cazzo di distanza di sicurezza! Che se tu l'avessi fatto probabilmente ti avrei anche lasciato passare (anche se poi ti saresti fermato lo stesso vista la presenza del Carabinieri).

Sono il primo che se ha voglia di andare piano e vede arrivare qualcuno dietro appena puo' si scansa e lascia passare, ma i cazzoni che mettono a rischio la sicurezza degli altri proprio non li tollero.

Alla prossima!


*quindi che fretta avevi?

**salvo trovare chiusa la Statale a S.Romano ed essere costretto a montare in superstrada

giovedì 22 ottobre 2015

Java - farlo bene farlo sbagliato

Quando si sviluppa software bisognerebbe sempre avere un'occhio alle risorse, perche' queste comunque non sono infinite. Se su progetti piccoli la differenza e' poca, quando si inizia a parlare di centinaia di migliaia di righe da tirare giu' - su database che ne contengono decine di milioni ogni singola query conta.

  • Andare a fare una chiamata in hql per tirarti giu' le righe che ti servono: bene
  • Fare un ciclo su ognuna di queste righe per trasformare le entity in un pojo: un po' meno bene
  • Fare una chiamata a database con una select count per sapere quante righe hai estratto: lo stai facendo sbagliato

Il problema e' che no, non me lo sono inventato... Invocare il metodo size() sulla lista che ti restituisce hibernate era troppo difficile?

...e poi dice che quella query e' lenta... No e' lento chi l'ha scritta...

mercoledì 21 ottobre 2015

Java - scrivere oggetti diversi su file

Il problema e' questo: si tratta di generare dei file con dei dati (non importa sapere quali) da inviare ad un determinato Ente. Questo Ente vuole un formato particolare e a seconda del tipo di file da generare o sono diversi gli oggetti dai quali si prendono i dati o e' diversa la disposizione dei campi o entrambe le cose.

Una soluzione potrebbe essere quella di avere una classe che scrive i file per ogni occasione da generare. Ma non mi piaceva, tanto codice da scrivere, poco riutilizzabile, poco pratico e poco elegante.

Ecco allora la mia soluzione (non escludo che ce ne possano essere di migliori): due classi, una astratta e una che scrive fisicamente il file. La classe che scrive il file se ne frega altamente di tutto. Lei scrive una riga su file e basta. Ha un metodo statico che prende come parametri un'istanza concreta della classe astratta (e li' e' il trucco) e il file da scrivere. Questa classe astratta ha un metodo (astratto anch'esso) getRows() che non fa altro che restituire una lista di stringhe (che sono le righe da scrivere sul file). Sara' poi l'implementazione concreta della classe astratta che dira' come effettivamente queste righe devono essere fatte. Ovviamente bisognera' avere un'implementazione concreta per ogni tipo di file.

La classe template

La classe (astratta) Template: ha un metodo astratto getRows che restituisce la lista di righe come dev'essere scritta su file. Ovviamente e' astratto perche' sta a chi la implementa definire come la singola riga dev'essere fatta. Ha inoltre un metodo getEndLine per definire il carattere di fine riga (anche questo puo' cambiare a seconda delle specifiche)

La classe file writer

La classe file Writer: ha un solo metodo statico che scrive il file. Il file me lo faccio passare come parametro (insieme al Template) e lo restituisco "riempito". Potrei anche restituire un nuovo file e farmi passare il nome o crearne uno temporaneo. Per questioni di come e' implementato il contesto mi tornava piu' comodo cosi'. Il "barbatrucco" e' delegare all'implementazione della classe template come le righe del file devono essere fatte. Al filewriter non interessa, prende una riga per volta, la scrive e chiude lo stream.

Il momento della scrittura sara' uguale per tutti (lo fa sempre file writer). Basta implementare i vari template secondo le specifiche che verrranno fornite dall'ente ed e' a posto. Anche qualora queste specifiche cambiassero, o se si deve generare dei tipi di file nuovi, basta cambiare o implementare nuovi template...

Alla prossima!

11 Settembre il passaporto impossibile

Molto, molto, molto brevemente Spesso si sente obiettare che e' "strano" che nei resti del 911 si sia trovato un passaporto intero di un dirottatore.

Bene del disastro del Columbia (che e' precipitato da piu' in alto, per piu' tempo ad una velocita' e temperature maggiori) e' stata trovata molta piu' roba, compreso un casco. Articolo di attivissimo qui

domenica 18 ottobre 2015

Rispetto della Legge

L'obbedienza alla Legge non deve mai essere un atto meccanico, pedissequo. perche' la Legge puo' essere sbagliata (piu' o meno volontariamente) o ingiusta. ci vuole sempre il filtro della ragione del buon senso e del cuore. pensiamo alle Leggi razziali. se non hanno fatto i danni che han fatto in Germania e' solo perche' siamo italiani. Grazie a Dio.

venerdì 16 ottobre 2015

Ciclisti e strada


L'altro giorno leggevo un post, del quale pero' non ritrovo purtroppo il link che sostanzialmente cercava di giustificare (con parecchia arroganza per altro) il motivo per il quale i ciclisti (quelli colle tutine e le bici da corsa per intendersi, non un normalissimo tizio con una normalissima bicicletta) tendono ad andare in "gregge".

In soldoni il senso dell'articolo era questo: le biciclette hanno il diritto di andare piano (e ci mancherebbe), e che siccome e' obbligatorio mantenere una distanza di 1,5mt in fase di sorpasso e' meno pericoloso farlo se i ciclisti sono raggruppati che non se sono in fila perche' ci metti meno tempo.

A parte che sembra il classico paradosso di Achille e la Tartaruga perche' va da se' che se supero una fila lunga di ciclisti non la superero' tutta in un colpo ma ne superero' un po' per volta la' dove le condizioni della strada me lo permettono e quindi gia' questo fa cadere tutto il ragionamento. E' molto piu' facile superare una fila fatta di una persona che sta' da una parte che non una massa confusa di "pecore".

primo: la distanza laterale e' minore (devo stare meno in mezzo alla strada) e questo mi consente di superare meglio.

secondo: mantenere la distanza da un compagno che si muove e' difficile, quindi una massa raggruppata difficilmente andra' in una traiettoria che segue la strada, e questo complica ulteriormente la manovra di sorpasso.

Poi e' verissimo che i ciclisti hanno il sacrosanto diritto di andare in bicicletta, ma l'art 140 del cds recita che il conducente (e si anche i "velocipedi" devono rispettare il cds) non deve recare intralcio alla circolazione stradale. Questo vuol dire che il veicolo piu' lento deve comportarsi in maniera tale che gli altri veicoli possano superarlo se le condizioni della strada lo permettono. Se non lo permettono deve fermarsi regolarmente e fare defluire la coda.

Sinceramente mi pare curioso che si invochi il rispetto del CdS da parte dei veicoli a motore, senza fare nessuna autocritica. E' vero che moltissimi conducenti di veicoli a motore non lo rispettano (o lo rispettano a modo loro), ma questo in realta' vale per qualsiasi tipo di conducente. Visto che sono stato testimone di moltissimi episodi che mi hanno fatto inorridire per il pericolo (ciclisti che entrano in rotonda senza dare la precedenza alle macchine che erano in rotatoria, ciclisti che bucano i semafori, ho scampato un frontale con 3 ciclisti che erano uno di lato, uno in mezzo alla carreggiata e uno in mezzo alla carreggiata opposta*). Quindi va bene il rispetto del codice della strada ma che sia per tutti.

Io personalmente non sono per il rispetto pedissequo delle Leggi, quanto piuttosto per la politica del rispetto. Nel senso se non c'e' nessuno (e non e' un pericolo of course) a me non me ne frega niente se tu ciclista vai in mezzo alla strada di traverso o quello che ti pare, l'importante e' che quando arriva qualcuno tu ti comporti in maniera tale da non costituire intralcio. C'e' da dire che c'e' chi lo fa ma purtroppo son sempre troppo pochi. Si e' creato questa specie di "odio di categoria" per cui chi guida un veicolo a motore parte gia' prevenuto (e preincazzato) verso chi pedala e viceversa.

Ci vuole rispetto reciproco, se un gruppo di ciclisti si allinea quando arrivo in macchina perche' non devo passare a debita distanza? Si stanno comportando nella maniera corretta. Ma se invece di allinearsi e facilitarmi il passaggio si allargano ancora di piu' e si comportano come esistessero solo loro, allora ho il sacrosanto diritto di arrabbiarmi e mandarli affangrulo...

Non e' perche' sono ciclisti che mi danno fastidio, ma perche' sono maleducati che pensano solo a se stessi, come quelli che parcheggiano nei posti per gli invalidi o per le due ruote (o come quelli che ti fanno il pelo quando c'e' la corsia di soprasso - odio puro). Non fa nessuna differenza.

Bisognerebbe insegnare a scuola il concetto di buonsenso e rispetto reciproco invece di continuare a fare Leggi che rimangono inapplicate (e guai se tutte le Leggi che abbiamo in Italia venissero applicate, non si vivrebbe piu').

Alla prossima!


*e io ero nell'altro senso ed e' stato un brutto momento perche' davanti avevo il genio senza lampada, non potevo buttarmi a sinistra perche' c'erano gli altri due nel mezzo ma per fortuna e' andata bene...

Quando non fai in tempo ad obliterare

alla ricerca del capotreno perduto: (non ho timbrato il biglietto) tra porte che non si aprono e gente travestita da ferroviere che pero' non e' il capotreno.

il capotreno fantasma (the phantom capotreno): riuscira' il ribelle (cioe' io) a mettersi in regola o rimarra' ribelle?

pane amore e capotreno: una toccante storia d'amore tra un passeggero che non ha timbrato il biglietto e il capotreno che non c'e'.

gang of capotrenos: la storia di una banda di criminali che non pagavano mai il biglietto.

e alla fine arriva il capotreno: film di fantascienza.

giovedì 15 ottobre 2015

refresh alla microsoft

stavo pensando come implementare un pulsante di refresh microsoft style: clicchi sul pulsante e si apre un popup con l'icona di refresh. clicchi sull'icona e si apre un altro popup con un campo testo dove devi scrivere "refresh" e premere "ok" solo allora refresha. il tutto rigorosamente non documentato...

Le prove che l'omeopatia non ha le prove


Innanzitutto e' necessaria una premessa: non e' compito della scienza dimostrare che l'omeopatia non funziona ma semmai il contrario. Einstein ha dovuto dimostrare le sue teorie oltre a formularle. Non si e' limitato a dire assurdita' (che per l'epoca erano effettivamente tali) aspettando che fossero gli altri a demolirle. Infatti quando la comunita' scientifica e' stata messa di fronte all'evidenza che quello che diceva Mr. E. era effettivamente vero non ha potuto fare altro che accettarlo, anche se ha dovuto buttare nel cesso rivedere tutto quello che si credeva fino ad allora. Non e' stato mandato un sicario a farlo tacere. Non sono stati insabbiati i suoi studi. La scienza ha fatto un passo avanti. Ma bisogna che ci siano le prove.

Fateci caso, di solito chi non dimostra le sue affermazioni non e' perche' riceve pressioni, non e' che ci sono i men in black, ma piu' banalmente e' perche' non puo' farlo. Se davvero le sue idee sono valide non ci sono problemi a trovare finanziatori e sostenitori delle sue idee.

Prendiamo jorge odon. J.O. e' un meccanico (si avete letto bene) che ha inventato un metodo facile e a costo quasi 0 per aiutare le partorienti. La sua idea non l'ha pubblicizzata su internet, l'ha fatta vedere a dei medici, ed e' finita poi all'OMS. E' stata valutata da fior di esperti ed e' stata approvata - e il suo uso consigliato nei paesi poveri. Odon non ha pubblicizzato la sua idea su internet. Non ha falsificato prove. Non ha portato testimoni. Non si e' presentato come vittima di BigPharma ha presentato la sua idea a degli esperti del settore (ginecologia in questo caso), e' stata valutata, e' stata provata ed ha dimostrato la sua efficacia. Nessun complotto nessun assassinio anche in questo caso...

I vari alternativi (Di Bella, Simoncini e compagnia cantante) se davvero avessero fatto delle scoperte cosi' rivoluzionarie come dicono non dovrebbero avere problemi a fare come Jorge Odon, no? Eppure...

A maggior ragione le case farmaceutiche omeopatiche che non guadagnano esattamente noccioline (secondo il fatto quotidiano nel 2010 la Boiron ha fatturato 520 milioni di euro). Non dovrebbero avere problemi a pagarsi uno studio fatto bene, in doppio cieco con gruppo di controllo e tutti i crismi, che chiuda finalmente una volta per tutte la bocca ai complottisti e tutta la comunita' scientifica. No?

Eppure... Gli unici studi che "confermano" l'efficacia dell'omeopatia hanno dei grossi vizi di forma (tipo questo - dove si denotava un marcato effetto ansiolitico ma il diluente era alcool) opppure sono spudoratamente falsificati (come l'incredibile caso del dottore beneviste).

Possibile che con tutti i soldi che hanno debbano cadere in questi errori?
Possibile che non riescano a fare uno studio inattaccabile?

Eppure dal 1800 ad oggi (quindi in un paio di secoli) ancora le prove mancano. La medicina ha fatto passi da gigante, l'omeopatia no. Forse perche' non c'e' niente da evolvere?

Non puo' esistere un complotto scientifico per il semplice fatto che il metodo scientifico si basa su delle prove e che le varie comunita' scientifiche sono indipendenti l'una dall'altra. Se hai le prove di quello che dici e pubblichi i tuoi studi (e questi sono fatti bene of course e traggono le giuste conclusioni dai dati) nessuno puo' chiuderti la bocca. Esattamente com'e' successo per Einstein e per Odon.

Se invece di portare dati fai la "vittima" e incolpi la scienza, magari aggredendo (come lettera indignata della bernardini e boiron contro blog) fai la figura di chi non ha argomenti per controbattere e allora usa la violenza per avere ragione dell'avversario. E magari perche' effettivamente e' proprio cosi'...

Alla prossima!

domenica 11 ottobre 2015

Morire di antiscienza

Bambina di due mesi muore di pertosse.
I vaccini proteggono sia chi e' vaccinato che chi non lo e'. Andatelo a dire a questi genitori che si son visti morire la figlia che i vaccini fanno male se avete il coraggio. Gli antivaccinisti sono dei delinquenti. Non c'e' altro da aggiungere.

giovedì 8 ottobre 2015

Java - come usare un booleano

...e come ottimizzare un metodo

Bisogna cercare di utilizzare il minimo indispensabile di codice, questo non solo nei metodi grandi, ma deve essere un'attitudine mentale, che deve portare a pensare come risparmiare calcoli e uso di variabili sempre e comunque in modo da mantenere il nostro codice snello, leggibile ed il piu' efficiente possibile.

farlo male

primo errore: non ha senso usare un blocco if-else per restituire un booleano, in quanto la condizione if richiede un booleano essa stessa. Per cui se mi serve restituire true faccio prima a restituire l'espressione che userei nella condizione dell'if, altrimenti la sua negazione (!).

Secondo errore: due return. Non e' bellissimo inoltre complica la leggibilita' del codice. Sempre bene inizializzare un parametro e restituire quello alla fine - cosi il povero idiota che leggera' il tuo codice non si trovera' una miriade di return senza doversi calcolare quando passa da un return e quando passa da un altro.

terzo errore: sempre di leggibilita' se vuoi eseguire una certa istruzione solo se un certo dato non e' null, allora fai un blocco if-else su quella condizione, non un return sull not-condizione ed esegui l'istruzione fuori dal blocco if-else. E' molto piu' complicato da capire.

farlo bene

Uno: creo un parametro booleano, al quale assegno il valore dell'if else (il metodo deve restituire true se avviso non e' null - quindi il mio booleano sara' avviso != null - molto piu' chiaro no?)

Due: eseguo il metodo solo se il booleano e' true (ovvero se avviso non e' null) - anche qui e' chiarissimo cosa sto facendo e perche'.

Tre restituisco il valore del booleano che e' true se avviso non e' null false se lo e'. Non c'e' verso di confondersi. Il codice in questo modo e' piu' semplice e piu' leggibile.

Il codice non deve essere solo funzionante, deve essere funzionale (quindi non solo fare le cose, ma farle bene e con bene intendo usando il minimo di risorse possibili e rilasciandole quando non servono piu'), ma deve essere anche manutenibile, quindi chiunque venga dopo deve poter capire quello che sto facendo, e come lo sto facendo. Quindi il primo passo e' scrivere codice leggibile, ma anche evitare il piu' possibile le forme arzigogolate (un esempio e' null != qualcosa - e' la stessa cosa che scrivere qualcosa != null ma lo rendo meno leggibile) e aderire piu' possibile alle convenzioni (implicite ed esplicite) del linguaggio. Perche' chi legge si aspetta che le cose siano fatte in un certo modo e non come gira al programmatore di turno. Il secondo e' usare i commenti. Quando sto facendo qualcosa di complicato due righine di spiegazione non ti costano niente, e facilitano la manutenzione da parte di chi leggera' quel codice. Semplicemente gli eviti di andarsi a leggere un blocco di codice e cercare di capire. E soprattutto gli eviti di fraintendere. Se spieghi cosa stai facendo hai piu' possiblita' che chi venga dopo capisca se stai facendo un errore oppure sia una cosa voluta...

Alla prossima!

martedì 6 ottobre 2015

Chiesa ed Omofobia


E' di qualche giorno fa la notizia dell'ex-monsignore Krzysztof Charamsa espulso dalla Chiesa.

L'ex monsignore in questione ha attaccato la Chiesa accusandola di averlo espulso per il fatto di essere omosessuale. In realta' i fatti sono leggermente diversi. Nel senso lui non ha dichiarato di essere omosessuale e basta ma ha anche dichiarato di avere un compagno. Ed e' stato questo il motivo dell'espulsione. Non tanto la sua omosessualita'.

Teoricamente l'orientamento sessuale di un sacerdote conta poco o niente, nel senso avendo fatto voto di castita' ed essendo destinato al celibato, non fa differenza se non va con un uomo o non va con una donna.

Qualcuno potrebbe obiettare che un sacerdote deve essere testimone dei valori della Chiesa (famiglia figli etc), ma vale lo stesso discorso di cui sopra - casto e celibe - quindi se non lo sa come etero non lo sa nemmeno come omosessuale.

Quindi ex-mons. Charasma faccia poco la vittima, perche' quelli che piangono e accusano gli altri quando la colpa e' soltanto loro li trovo semplicemente insopportabili, inoltre costui scredita tutti gli omosessuali col suo comportamento da "frignone". Senza considerare che distoglie l'attenzione da quella che e' la vera omofobia, che purtroppo esiste...

Alla prossima!

venerdì 2 ottobre 2015

Java ottenere il nome del mese dal suo numero

Lo scopo e' ottenere il nome del mese (localizzato) dal "numero". Es se ho 1 voglio Gennaio in it, January in en/us etc...

Non c'e' da sprecarsi troppo, la classe DateFormatSymbols (di java.text) fa gia' tutto quello che ci serve. L'unica cosa da tenere presente e' che la DateFormatSymbol e' 0-based (quindi Gennaio e' 0, Febbraio 1 etc)

Quando si tratta di roba del genere, preferisco metterla in una classe di utilita' e accedervi staticamente (non ho effettivamente bisogno di un'istanza in questo caso).

Il metodo getMonths() mi restituisce tutti i mesi dell'anno (localizzati) e ordinati sotto forma di String[]. Essendo un vettore il primo elemento (Gennaio) e' 0, per cui per avere una corrispondenza tra il numero "naturale" del mese e quello nell'array basta sottrarre 1 ed ecco fatto...

Alla prossima!

Il grande complotto impossibile


I vari complottisti (appunto), sostengono che esista un "grande complotto mondiale". Questa mentalita' si nasconde in maniera piu' o meno apparente in quasi tutti i ciarlatani, anche quelli medici. Molti seguaci dell'omeopatia, per giustificare la mancanza di prove si aggrappano come un gatto sullo specchio all'ipotesi del complotto di BigPharma e di tutti gli scienziati e chimici di tutto il mondo, che essendo tutti corrotti rendono impossibile produrre prove certe e non taroccate... I vari simoncini, Di Bella, Vannoni sono tutti dei perseguitati. Idem con patate quelli che credono alle scie chimiche o alle ipotesi di auto-attentato dell 11 Settembre. C'e' un enorme grandissimo complotto medico-politico-giudaico-termo-metal-chimico.

Queste persone non ragionano*, perche' ovviamente un grande complotto mondiale e' impossibile in quanto prima o poi qualcuno su milioni di persone coinvolte deve parlare per forza. Inoltre piu' il complotto e' grande e piu' sono evidenti le prove, quindi dovrebbero accorgersene tutti o quasi. Se nessuno a parte loro se ne accorge cosa vuol dire? O che quasi tutta la popolazione mondiale e' coinvolta, oppure...

Senza considerare che se davvero esistesse un complotto di tale portata non ne verrebbe permesso piu' o meno liberamente di parlarne...

...e poi c'e' l'evento che chiude definitivamente la bocca ai complottisti... So che e' successo un po' di tempo fa, me vi ricordate di Snowden quel ex consulente CIA (quindi uno del mestiere, non un geometra fallito o il salumiere della porta accanto che si improvvisa geologo) che ha scoperchiato una pentola di nefandezze rilevando come gli Stati Uniti spiassero regolarmente le comunicazioni anche di Paesi ritenuti alleati.

Se ci si pensa non era un complotto mondiale. Non erano coinvolte milioni di persone. Eppure ha parlato. Nonostante lavorasse per la CIA, nonostante sia ricercato e sia dovuto espatriare. Non come i complottisti "denoantri" che stanno comodamente seduti sul divano a casa loro a lanciare accuse di qua e di la' - e nessuno li va a cercare...

Anzi a voler ragionare alla loro maniera si potrebbe pensare che se esiste un complotto loro ne fanno parte e cercano di screditarlo in tutti i modi :) (prima che mi ricopriate di commenti: e' una battuta!)

complotto vero complotto falso
Qualcuno prima o poi parla Nessuno ne parla - MAI
Chi parla e' qualcuno del settore Chi parla e' gente che non c'entra una mazza
Chi parla viene ricercato dalla polizia Chi parla non gli succede niente
Chi parla puo' portare prove Chi parla cerca scuse perche' le prove non le ha
Analizzando le prove portate (che non sono link su yt) si puo' verificare che quello che dice e' vero Di solito vengono portati link a yt che non dimostrano niente oppure si citano documenti che citano come fonti altri documenti che citano come fonti i documenti iniziali (v. autoreferenzialita')
A seguito delle dichiarazioni rilasciate e delle prove portate succede un casino mediatico A seguito delle dichiarazioni rilasciate e delle prove non portate non succede niente (ma perche' la stampa e' corrotta... si come no)

C'e' un articolo nonciclopedia che spiega benissimo le contraddizioni delle teorie del complotto e che vi consiglio caldamente di leggere.

Alla prossima!


*ragionano a modo loro, prima tirano le conclusioni e poi cercano le prove a supporto

giovedì 1 ottobre 2015

Giocare ai vecchi videogiochi

Chi ha giocato negli anni d'oro del computer ('80 e '90) non riesce a non avere un po' di nostalgia per quei videogiochi dalla grafica schifida (ammettiamolo) ma dal gameplay superlativo.

Effettivamente non potendo contare su una grafica superfica dovevano per forza concentrarsi sul gioco per risaltare. Questo non vuol dire che non siano state prodotte diverse schifezze, ma mentre queste sono cadute (per fortuna) nell'oblio, ci sono giochi immortali che meriterebbero una partitella...

Innanzitutto, se il gioco e' basato su Scumm (se non sapete di cosa sto parlando potete anche smettere di leggere, vuol dire che siete o troppo giovani, o troppo poco appassionati del genere perche' questo articolo possa realmente interessarvi), tipo MonkeyIsland per intenderci (e molti altri della Lucas), allora fate abbastanza presto:
ScummVM e' quello che fa per voi.

Sostanzialmente e' una macchina virtuale Scumm... Si scarica da qui, ed e' disponibile per un sacco di piattaforme (android incluso).

Aggiungere un gioco e' abbastanza semplice, dopo averlo scaricato (assicuratevi che sia legale farlo), avviate scummvm e aggiungete il gioco passandogli il path della directory. Fatto. Poi potete giocarci semplicemente cliccandoci. Per i piu' duri (ma angolofoni) c'e' una guida passo passo sulla wiki di scumm

Se il vostro gioco* non e' scumm, ma gira su dos allora avete l'opzione dosbox che si scarica da qui. Anche db e' disponibile per varie piattaforme.

Dosbox richiede un pelino piu' di messa a punto. Dovrete mettere le mani nel file dosbox.conf, basta un qualsiasi editor di testo (vi, gedit, npp fate voi).

La guida completa e' qui
Le parti che interessano di piu' sono:

Come montare una risorsa:

MOUNT [Drive-Letter] [Local-Directory] il primo parametro indica con che lettera montare la risorsa in dosbox (quindi se volete mappare la directory "pippo" come u: dovrete o in dosbox.conf (se vi serve montata tutte le volte che si avvia) oppure da cli (se vi serve una volta sola) dovrete digitare: MOUNT u $PATH_DI_PIPPO/pippo (su windows i backslash mi racco). Se vi serve ogni tanto potete pensare a farvi un batch (un file .bat che contiene esattamente quello che digitereste nella cli)

Se volete che la risorsa sia vista come floppy o come cd basta aggiungere al comando di mount -t floppy o -t cdrom (esempio: Z:\>MOUNT D D:\ -t cdrom). Alla stessa maniera si puo' montare una iso (-t iso) o addirittura piu' di una (al comando di mount passate il path assoluto delle iso che volete montare).

Farlo all'avvio di dosbox

cosa? Non quello pervertiti! Se volete che dosbox esegua una serie di istruzioni all'avvio (analogamente come il dos faceva con il file autoexex.bat allora la sezione [autoexec] e' quello che fa per voi.

Li potete scrivere i vostri comandi dos e vederli eseguiti all'avvio di dosbox. Quindi eventuali mount, settaggi di tastiera e soundblaster etc.

Approfondimenti:

Note Legali:

Alcuni giochi, soprattutto quelli molto vecchi, vengono rilasciati come "freeware". Ovvero la casa produttrice si rende conto che non c'e' piu' niente da guadagnarci e quindi decide di rilasciarli gratuitamente (come il caso di C&C RedAlert). Altri pur rimanendo molto vecchi, non subiscono modificazioni di sorta alla licenza. Quindi formalmente sono ancora tutelati dal punto di vista legale, ma poi nella sostanza sono nel totale disinteresse della casa che li produceva (per ovvie ragioni) e vengono chiamati abandonware - ovvero sw abbandonato. Se scaricate un abandonware dal punto di vista pratico non danneggiate nessuno (il gioco non e' piu' in vendita), ma comunque rimane un atto illegale in quanto formalmente il gioco e' ancora tutelato dalla sua licenza, anche se nessuno se ne cura piu'. Quindi se lo volete fare l'importante e' che siate consapevoli di quello che state facendo.

Buon divertimento!


*anche se non e' un gioco ma qualsiasi sw per dos

I complottisti e il bias cognitivo

L'articolo e' stato aggiornato dopo la pubblicazione iniziale

Su un certo blog, di cui non metto il link per non regalargli visibilita'*, c'e' una discussione relavita all'omeopatia, e alla presunta "falsificazione" di Medbunker.

Ora a parte il fatto che Medbunker non ha falsificato proprio niente, ha solo analizzato i pochi studi relativi all'omeopatia e ha presentato i risultati. Sostanzialmente e' venuto fuori che se lo studio e' fatto bene, l'omeopatia non e' superiore al placebo come efficacia. Gli studi che mostravano delle evidenze erano quelli fatti male o deliberatamente falsificati.

Uno studio fatto male, per esempio, e' uno che non considera le possibili cause esterne. Come citato fra i commenti, c'e' uno studio che evidenza un marcato effetto ansiolitico (superiore al placebo) di un certo prodotto omeopatico. Qual'e' il problema? Che se come diluente e' stato usato l'alcool (e si usa in omeopatia), questo da solo ha gia' effetto ansiolitico (due link al volo: emernet e alcol.dronet).

Quindi uno studio fatto bene dovrebbe verificare il componente omeopatico da solo (o con diluente che non ha l'effetto che si sta cercando di ottenere dal preparato omeopatico).

Non e' mia norma discutere con certa gente, anche perche' come si nota dalle risposte di chi gestisce il sito (basta che cerchiate "medbunker omeopatia" e viene fuori) si vede il prosciutto davanti agli occhi, e voler ignorare quella che e' la realta' - basta vedere come risponde a chi chiede delle prove sull'omeopatia:

un altro pappagallo scientista che recita la filastrocca delle "prove scientifiche"..... Sei un ballista!

Che dire di fronte ad un ragionamento cosi' profondo e articolato? Che dire di fronte ad un'evidenza scientifica cosi' marcata?

Stavolta pero' non sono riuscito a trattenermi e ho fatto notare che l'alcool puo' avere effetto ansiolitico

Il "gestore" la prende sull'ironico, al che fornisco dei link sulle prove di quanto ho detto (quelli che ho postato piu' sopra). Commento che pero' non viene approvato, lo riposto ieri e anche il commento di ieri svanisce nel nulla

Questo e' un tipico esempio di bias cognitivo ovvero si considera solo cio' che e' a favore, mentre si ignora categoricamente tutto il resto.

Non che me ne interessi piu' di tanto, nel senso la gravita' esiste (e la terra non e' cava) che la gente ci creda oppure no, mi interessava mettere in luce il modus operandi di certi blog e di certe persone, quando il commento diventa scomodo si mette a tacere il commentatore.

D'altra parte censurare e' l'unico modo che hanno, visto che l'evidenza scientifica e le prove sono contro di loro. Guardare in faccia la realta' vorrebbe dire ammettere di essere stati mistificati ed essere stati essi stessi a loro volta mistificatori. Per questo preferiscono tenerli chiusi e non guardare...

Alla prossima!


02/10/2015 - Aggiornamento:

Ieri compare questo commento (sottolineature mie - screenshottato per comodita' vostra):

E bravo Pisano! Vedo che ha anche un blog :) Stia tranquillo non ho censurato proprio niente, i link nel mio blog vengono messi automaticamente fuori e li è bene che rimangano quando sono fuori luogo o stupidi ;) Le consiglio di continuare a seguire quel denigratore dell omeopatia, mi sembra ottimo per i fan della Scienza come lei, lasci perdere i blog come il mio, non sprechi il suo tempo!

A parte l'uso del lei che in netiquette non si fa, vabbe' sottigliezze...

l'utente ivano dice due cose, anzi una la dice esplicitamente l'altra la sottintende:

  • La prima e' che disqus mette automaticamente in moderazione i commenti che contengono un link - ed e' indubbiamente vero - anche se Ivano non lo scrive in maniera esattamente chiara.
  • La seconda e' che i link che avrei postato sarebbero ot o stupidi - cosa che potete verificare facilmente visto che li ho postati anche qui.
Come potete verificare dal suo blog la discussione riguardava l'effetto ansiolitico dell'alcool, visto che ivabellini pareva ignorare questo effetto (che e' ampiamente dimostrato in letteratura medica), gli ho fornito due link.

Ora se e' vero che la moderazione dei commenti non l'ha attivata lui (viene attivata in automatico se il commento contiene un link), e' pur vero che poi il moderatore (cioe' lui) deve poi approvare o rifiutare il commento in questione. Considerato il tempo che e' passato e che il commento ancora non e' stato approvato (vedere lo screenshot piu' sotto) - il fatto che affermi di non censurare niente sa tanto di arrampicata sugli specchi... Della serie: la moderazione non l'ho attivata io quindi io non censuro anche se il commento non te lo approvo.

Mi scuso per le dimensioni dello screenshot ma era necessario per poter prendere la data e ora di winzozz senza ricorrere a tagli (che avrebbero potuto far gridare al taroccamento).

Il fatto che poi nella discussione sull'efficacia come ansiolitico di un preparato omeopatico contenente alcool (il quale ha effetto ansiolitico gia' da solo) vengano "cassati" i link che portano prove che se l'alcool ha effetto ansiolitico di suo forse il preparato omeopatico non c'entra niente la dice lunga...

Alla prossima!