Visualizzazione post con etichetta informatica. Mostra tutti i post
Visualizzazione post con etichetta informatica. Mostra tutti i post

lunedì 6 ottobre 2008

Classe Beamer - Uno schema per la Bicocca

Nei commenti di un recente post, insieme a Consonni (lui firma Cristian++, ma lo troviamo abbastanza pretenzioso) si è discusso di Beamer, classe di LaTeX usata per la realizzazione di presentazioni professionali e dall'aspetto accademico. E qui, specie in questo periodo, diamo molta importanza all'aspetto accademico delle cose.

Ad ogni modo, la classe è decisamente potente, e lo testimonia il mastodontico manuale di duecento e passa pagine che tralascia tutta la (si scoprirà poi perché) fondamentale "bassa manovalanza" per la personalizzazione. Ma soffre dell'esistenza di pochi schemi pronti. Non che servano più schemi di quelli che ci sono, ma (per dire) è un'impresa anche solo cambiare il colore dello sfondo, figuriamoci azzardarsi a cambiare il layout o a fare una pagina personalizzata per il titolo (intento non del tutto peregrino, in quanto bisognerà pur aggiungere la voce "Relatore" a quella "Autore"). E, già che c'eravamo, anche cambiare i tre temi di colore forniti dalla distribuzione standard (sul blu, sul giallo-arancione e bianco) perché tutto faccia meglio pendant.

Ho così scritto una classe "bicoccascienze" che, oltre ad usare il tema verde della Facoltà di Scienze MM.FF.NN. (è infatti noto che il colore di scienze è il verde, da che mondo è mondo), personalizza un po' qua e là. Allo stato, per essere sinceri, è ben poco utilizzabile senza "aprire" il file beamerschemebicoccascienze.sty, perché non avevo né tempo né voglia di sistemarlo per renderlo universale, essendo che in fin dei conti sono io a doverlo usare.

Ad ogni modo, qui è disponibile per il download una presentazione di prova (a dire il vero, quello che ho fatto finora per la seduta di laurea) che mostra il tema. Ho anche provato a caricarla sul cosiddetto youtube delle presentazioni ma la conversione al suo formato rovina decisamente.

Chi fosse interessato al template me lo chieda scrivendo a matteo.casati[at]teletu.it. Sarò felice di inviarvelo (forse voi sarete un po' meno felici di riceverlo, visto che è tutto fuorché perfetto)

Leggi tutto...

giovedì 8 maggio 2008

Possibile metterci metà mattina?

Se a qualcuno interessasse, ecco qui un algoritmo per ricondurre un numero all'intervallo `(-a;a]` (lo pubblico solo perché a me a fatto penare più del previsto, probabilmente per via di errori delle mie verifiche a mano).

Un numero `x` qualsiasi può essere scritto come
`x=\alpha + m2a`
dove `m` è un numero intero, e `\alpha` non è divisibile per `2a`. Ora, noi vogliamo che, dato un valore di `x`, si ottenga un valore per `\alpha` compreso nell'intervallo desiderato.

Non possiamo, semplicemente, calcolare il resto di `x/{2a}`, perché ci accorgiamo facilmente che i valori assunti sarebbero compresi tra `0` e `2a`. Ci riconduciamo, allora, facilmente (dillo al C!), all'intervallo di nostro interesse, osservando che, se cambiamo `x\to x+b` ed al risultato finale sottraiamo `b`, l'intervallo è quello di nostro interesse e salviamo la consistenza dei risultati (ossia, i valori tra `-b` e `b` rimangono invariati).

Ora, potrei anche scrivere il procedimento matematico che ho descritto, ma visto che il nostro interesse è rivolto esclusivamente ad implementare questa operazione in un codice C, tanto vale scriverlo direttamente, ricordando che, quando si tratta di numeri non interi, la funzione che restituisce il resto è fmod(x,y). Pertanto, scriviamo 'sta funzione:

double alpha(double x, double a) {
return((fmod((x+a),2*a)-a);
}

Leggi tutto...

giovedì 27 marzo 2008

Prodotti del laboratorio di calcolo

Fortuna che tutto era pronto, dato che ci ho messo una mattina intera (fino ad ora) a scrivere la tesina per il Laboratorio di Calcolo, a proposito del calcolo di
$\sum_{n=1}^{oo}\frac{1}{n^2}
Mi soddisfacesse, almeno.

Comunque, oltre ad essere già presente nella mia cartella Articoli sulla sidebar di destra (Pi26.pdf), è qui scaricabile.

Leggi tutto...

lunedì 18 febbraio 2008

Virus e malattie genetiche


Perché i virus informatici sono detti tali? Apparentemente - o meglio, a detta del mio temporaneo antivirus - perché, come i virus, utilizzano i computer ed i programmi degli altri per riprodursi e diffondersi (in questo diversi dai batteri e da altre schifezze analoghe tipo eucarioti patogeni, che sono vivi anche a sé stanti). Ma, a dire il vero, non sono certo che sia il migliore dei paragoni.

Riflessione che ho fatto oggi; perché, se da un lato era noto che, da qualche giorno, il mio computer era assolutamente impazzito e si riavviava ogni volta che si collegava alla rete, mentre era tutto normale (e non venivano rilevati virus né altro) da disconnesso, dall'altro questo grave disagio veniva bypassato navigando dalla modalità provvisoria, o dal computer di mia sorella. Soltanto che, mentre altri problemi di entità medio-piccola che affliggevano il computer (che, è bene sottolineare, è di mio fratello) in queste settimane (l'elenco sarebbe lungo...messaggio di errore da Explorer per i siti con il badge flickr, improvvisi ed estemporanei - dell'ordine di una volta ogni paio di giorni - schermi blu della morte, e così via) venivano sopportati e davano modo al virus colpevole di prosperare - non so perché escludere che si trattasse di altri problemi, ma a naso è così - questo era talmente grave e fastidioso che ho voluto usare tutta la mia potenza di fuoco informatica. Finché, dopo che ieri sera mia madre (che ha aperto anche un blog - di cui praticamente sono l'amministratore - ed avrebbe piacere che lo visitiate (ma senza esagerare che altrimenti impazzisce, pretendendo come fa di individuare tutti i visitatori)) non era riuscita ad avviare la modalità provvisoria ed aveva comunque tentato il collegamento, e l'antivirus era saltato su a dire che aveva individuato una minaccia, ma troppo tardi perché subito dopo il computer si riavviava miseramente, oggi ci ho messo le mani.
Era rimasta traccia del virus (un backdoor in un settore di memoria fisica) e cercavo inutilmente di eliminarlo, perché l'antivirus non lo trovava più. Al che mi è venuto il colpo di genio della giornata, e mi sono connesso alla LAN. Il virus si è svegliato dal suo subdolo letargo, è stato individuato e neutralizzato.

Cosa c'entrano le malattie genetiche?

È un insegnamento dei tempi del Liceo; un po' politicamente scorretto, ma giusto. Che dice che non bisogna preoccuparsi delle anomalie genetiche più gravi e devastanti, o delle mutazioni mostruose. Perché, se fanno così male, il portatore muore prima di riprodursi; e con lui muoiono le anomalie. Così anche il virus di questi giorni: finché si accontentava di rompere le balle una volta ogni tanto, veniva sopportato con malcelata tolleranza. Ma, quando ha alzato la cresta, è stato fatto sparire.

Leggi tutto...

lunedì 11 febbraio 2008

Troubleshooting

Eeehhh, che voglia di sparare al computer!!
E per una volta le parole avrebbero il loro significato.

Dopo che il problema con Tele2 si è risolto da solo (io ho segnalato alla Microsoft...due giorni dopo andava tutto bene), dopo che altri problemi di cui non ho dato notizia sono stati risolti in modo più o meno ortodosso...stavolta non sembro riuscire a venirne a capo. Un po' deve essere colpa del tipo di errore troppo generico (in Internet si trova chi mi dice che è il banco della RAM ad essere rotto - e sapendo che il computer è di mio fratello e tutto quello che tocca rompe (di tre porte USB che c'erano, per dire, ne funziona una sola) - come che può essere un'infinità di virus diversi - un po' perché l'errore è veramente strano. Tutto funziona benissimo (insomma, benissimo considerata l'età del mezzo ed il proprietario) finché non si collega in Internet (cavo di rete, wireless, modem...tutto indifferente) e lì nasce un florilegio di errori, schermi blu della morte e riavvii automatici (nota bene: anche dopo aver disattivato "riavvio automatico in caso d'errore grave"). Tranne - il mistero s'infittisce - ora. Che non ho fatto niente dall'ultimo errore, anzi avevo acceso per vedere se il codice era sempre lo stesso (0x07F, dicono stack overflow, cioè intasamento totale). Dove l'unica differenza è che sto usando firefox. Il che è anche una fregatura, perché solo su questo computer ci sono siti che firefox rifiuta. In particolare, il mio blog (ma Daniel, too, e credo anche Silvio)- che dà un messaggio di errore anche su Explorer, ma almeno lì, opportunamente ignorandolo, tutto continua a funzionare. Qui invece si ostina a non funzionare più.

Ma l'uomo è più forte della macchina (anche perché la macchina non può rivolgersi ad un tecnico, in casi estremi). Si vedrà.

Leggi tutto...

sabato 17 novembre 2007

RGB e TSL

Da quando ho scritto l'ultimo post ad ora non ho fatto altro che pensare alle procedure più comode per, avendo i valori dei tre parametri Red, Green and Blue o Tono, Saturazione e Luminosità, trovare il codice esadecimale del colore. Nell'ultimo post avevo enunciato come passare dai tre RGB con valori compresi tra 0 e 255 (2^8 possibili valori, 16^2, ergo due cifre esadecimali) ad un unico numero di sei cifre, semplicemente giustapponendo, da sinistra a destra, i codici di R,G e B (occhio che funziona solo con gli esadecimali: che a nessuno salti in mente di accostare i decimali e fare poi la conversione una volta sola). Avevo detto che passare da TSL a RGB (e quindi ormai banalmente al singolo codice) sarebbe stato più difficile, ma mi ci sono messo un po' di lena ed in un'oretta (dopo essere tornato dal catechismo degli adolescenti) ho fatto. Spiegherò solo il meccanismo; al solito, pubblicherò gli algoritmi od il sorgente (lavorando solo con numeri, a questo punto, non ho più le complicazioni dell'interfaccia grafica) laddove richiesto.


L'ordine delle operazioni è importante. Le tre variabili T, S e L assumono valori interi da 0 a 240. Vengono considerati valori di default per la saturazione 240 (colore puro), per la luminosità 120 (media luminosità). Per prima cosa, calcoliamo i valori di RGB in base al tono.
Per T=0 abbiamo il colore rosso (R=255, G=0,B=0). Fino a T=40 il valore di rosso rimane costante, quello di G sale linearmente a 255 e quello di B sta a 0. Per T=40 il colore è giallo. Fino a T=80 il valore di R scende linearmente a zero, G è costante a 255 e B sta a zero. Si arriva a T=80 con il colore verde (green, appunto). Fino a T=120, R rimane costante a zero, G è costante a 255 e B sale linearmente a 255, fino ad ottenere il turchese (00FFFF). Dopo (ormai ci siamo capiti) R sta a zero, G scende a 0 e B sta a 255: Blu. Fino a T=200, R torna a salire a 255, G e B sono costanti. Si arriva al violetto, FF00FF. Da 200 a 240 R e G sono costanti, mentre B scende, finché per T=240 siamo nella stessa condizione di T=0.
Adesso abbiamo i tre valori di R1,G1,B1 puri (con il pedice 1 perché bisogna ancora manipolarli, non avendo considerato saturazione e luminosità); partiamo con la prima. Si nota che, per S=0, i tre valori di RGB sono uguali e valgono 127 (notare: la metà di 255). Ovviamente (anche solo per semplicità) la legge per andare da S=240 (dove abbiamo R1, G1, B1) a S=0 (127,127,127) è lineare. Al lettore il calcolo per determinarla.
Ci troviamo ora con R2, G2, B2. Ci manca da considerare la luminosità del colore. Notiamo che i valori da noi ottenuti corrispondono a L=120. Per L che va fino a 0, i valori delle tre variabili decrescono finché abbiamo RGB=(0,0,0), nero. Per L che va fino a 240, i valori salgono fino ad avere RGB=(255,255,255), bianco. Ovviamente queste leggi sono ancora lineari.

Avendo implementato questi due modi di scrivere i colori, tra l'altro, possiamo considerare due diversi tipi di gradiente (cioè di sfumatura): quella semplice, ottenuta interpolando sullo spazio della nostra figura i valori RGB (così, non so, per passare da rosso (FF0000) a blu (0000FF) muovo linearmente R da FF a 00 e B da 00 a FF), e quella "iridata", che posso usare facendo variare i tre parametri TSL (per passare da rosso (0,240,120) a blu (160,240,120) muovo T da 0 a 160, ottenendo così nel passaggio arancione, giallo, verde, allo stesso modo dell'arcobaleno. La conversione da TSL a RGB e ad Hex si fa poi come illustrato.



Esempio di gradiente RGB e TSL a confronto

Leggi tutto...

venerdì 16 novembre 2007

I colori non sono altro che numeri

Non posso postare sul blog il codice del programma, anche perché ho controllato ed è scritto in Visual Basic, che è facile ma funziona solo con Windows, dopo aver fatto regolare setup. Potrei riscriverlo in C++, che poi si può compilare su qualsiasi macchina, ma lo farò solo se esplicitamente richiesto. Intanto, vogliamo spiegare come si calcola il valore del codice del colore a sei cifre.

Facciamo la fatica di aprire una di quelle finestre che si usano per scegliere i colori (in Windows, ad esempio, quella per personalizzare la tavolozza di Paint), e facciamo in modo di vedere la tavola di tutti i colori sfumati. Ogni colore (dei 256^3 che vengono visualizzati) è rappresentato da una combinazione di rosso, verde e blu. Il codice a sei cifre #xxxxxx che rappresenta il colore non è altro che la giustapposizione dei valori esadecimali corrispondenti alla quantità di rosso (due cifre più significative, quelle a sinistra), di verde e di blu. Ciascuno dei colori primari può assumere il valore da 0 a 255, appunto due cifre esadecimali (256=16^2). Se vogliamo il codice esadecimale di un colore fatto, ad esempio, da 120 Rosso, 50 Verde, 10 Blu (e che io definirei "un marrone un po' rossastro"), convertiamo singolarmente in esadecimale i tre valori. Abbiamo 120dec = 78hex, 50dec = 32hex e 10dec = 0Ahex. Il codice da usare in HTML è, alla fine, #78320A, dove il diesis indica all'interprete che il numero è in formato esadecimale (se usassimo, non so, Assembler, gli diremmo 0x78320A). La conversione di un numero da decimale ad esadecimale di due cifre è banale: basta dividere per 16 il numero una volta, ed il valore è il risultato della prima cifra (ovviamente convertito in esadecimale, dunque se esce 12 scrivo C); il resto, pure convertito in esadecimale, è la seconda cifra (quella meno significativa).
I sistemi operativi hanno anche un altro modo di indicare il colore, oltre a quello (decisamente più naturale) di darne le componenti. È il sistema a Tonalità, Saturazione, Luminosità, che è più comodo per disegnare gradienti di colori, ma più complesso da trattare in astratto. Appena ho un po' di tempo lo studio bene (per ora ho sviscerato solo la parte relativa a tonalità) e vi aggiorno, cari lettori.
Comunque, questo dimostra che anche i colori non sono altro che numeri, e tra l'altro interi.

Leggi tutto...

sabato 10 novembre 2007

Blogrichiesta d'aiuto

È da ieri mattina che mi scorno inutilmente contro questo ostacolo e non riesco a venirne fuori in modo elegante; quindi, da ora in poi, ogni tipo di aiuto è il benvenuto.

A parte alcuni dettagli, mi manca una cosa sola per mettere online il nuovo blog, riveduto e corretto. So che è un problema che Meghi è riuscita a risolvere, perché ricordo che qualche settimana fa funzionava come funziona a me ora.

Mi piacerebbe proprio sapere come obbligare Blogger ad aprire i commenti in una finestra pop-up e non in una nuova finestra. Non so come, ma con questo layout funziona, mentre lo stesso codice compagno, come si dice in bergamasco, salta in una nuova finestra nel layout che sto preparando.

Se qualcuno ha idea di come fare si faccia vivo.

Leggi tutto...

venerdì 9 novembre 2007

Firmato il contratto. Sono nel blocco Facoltà di Scienze MM.FF.NN.
Adesso sto perdendo tempo in attesa che anche quelli dopo di me firmino il contratto - e pensare che sarei dovuto andare da Magri per la tesi ed ho dovuto rinviare per questa inutile formazione tutor.

Intanto avrei tempo per fare altro, ma non so fino a che punto è lecito usare i computer di questo laboratorio. Sto pensando seriamente (ieri mi ci ero anche messo, ma poi ho rinunciato perché era ora che andasso a Milano) di farmi un blog privato per testare il nuovo template in progress. L'unica è che tutti i widget sono vuoti, e che dovrei mettermi a fare un sacco di copiaeincolla per vedere bene tutto quello che succede.
Non c'è da nessuna parte una documentazione completa dei widget che usa blogger?

Leggi tutto...

Formazione tutor

Siamo qui, seduti ai nostri computer, in trepidante attesa che il direttore dei servizi didattici ci chiami per andare a firmare il contratto.

Infatti, sono stato assunto come tutor dei laboratori d'informatica. Ventesimo in graduatoria.

Spero che davanti a me in graduatoria non facciano la fila per andare a seguire i laboratori del dipartimento di fisica, e che Dio mi scampi e liberi dai sociologi

Leggi tutto...

lunedì 22 ottobre 2007

Che programmatore sei?

Quando uno non ha niente di meglio da fare, mette il suo nome su Google e vede cosa salta fuori. Avendo io provato diverse volte, con assoluta certezza affermo che le prime pagine sono quelle di un certo mio omonimo programmatore, sul cui blog c'è un rimando al test "Che programmatore sei", rintracciabile qui.
Ho fatto il test, benché non mi consideri un programmatore, avendo avuto spesso necessità di farlo, sia per impegni universitari che per passione - ed anzi, da adolescente era una cosa che mi assorbiva parecchio. Sono perciò risultato un DHSC
You're a Doer.
You are very quick at getting tasks done. You believe the outcome is the most important part of a task and the faster you can reach that outcome the better. After all, time is money.
You like coding at a High level.
The world is made up of objects and components, you should create your programs in the same way.
You work best in a Solo situation.
The best way to program is by yourself. There's no communication problems, you know every part of the code allowing you to write the best programs possible.
You are a Conservative programmer.
The less code you write, the less chance there is of it containing a bug. You write short and to the point code that gets the job done efficiently.

A dirla tutta, non credo ci fosse bisogno di un test per saperlo.

Leggi tutto...