Personalizzare Bootstrap

Boostrap_logo.smallBootstrap “appena tolto dalla confezione” (out-of-the-box) ha la possibilità di gestire grid-systems per un massimo di 12 colonne.

Io ho bisogno di realizzare una tabella con 13 colonne. Dopo il solito giro di forum mi imbatto nel sito di Bootstrap (quale sito migliore?) che mi mostra questo favoloso servizio di personalizzazione col quale possiamo cambiare praticamente tutto nel comportamento e nell’aspetto di Bootstrap.

In sostanza c’è la possibilità di rigenerare tutto lo stack javascript/css andando a modificare una messe di variabili di configurazione.

 

 

Ma concentriamoci sul problema della griglia a 12 colonne. Quello che mi interessa modificare è il numero massimo di colonne: trovo questo parametro nella sezione

  Common CSS > grid 

la voce da modificare è @grid-columns e la porto da 12 a 13:

Customize.png

Si possono selezionare anche strettamente i componenti che servono:

Customize select.png

Io seleziono tutto e vado in basso al pulsante Compile and Download. Cliccando vengono rigenerati i file CSS, Javascript, i font e viene scritto un file di configurazione in formato JSON:

  $ ll
  totale 40
  drwxrwxr-x 5 marcob marcob  4096 apr 29 10:19 ./
  drwxrwxr-x 5 marcob marcob  4096 apr 29 10:19 ../
  -rw-rw-r-- 1 marcob marcob 18298 apr 29 10:19 config.json
  drwxrwxr-x 2 marcob marcob  4096 apr 29 10:19 css/
  drwxrwxr-x 2 marcob marcob  4096 apr 29 10:19 fonts/
  drwxrwxr-x 2 marcob marcob  4096 apr 29 10:19 js/

A questo punti modifico anche l’intestazione HTML perché punti alla mia versione personalizzata di Bootstrap piuttosto che alla versione online.

 

Dettagli disponibili nel Wiki, assieme alle istruzioni per localizzare correttamente i calendari.

News dalla ricerca in Scienza dei Materiali

Una piccola rassegna di good news dal mondo della ricerca applicata che riguarda la scienza dei materiali, la produzione di energia elettrica e a sua accumulazione.

 

 

 

Test OCSE PISA 2012: studenti italiani in crisi nella matematica?

In Italy, the likelihood of low performance in mathematics is higher for students who are socio- economically disadvantaged, girls, speak a different language at home from the language of assessment, had no pre-primary education (or only a year or less of it), had repeated a grade and are enrolled in a vocational programme”.

Il rapporto dell’OCSE sulla situazione dell’apprendimento della Matematica nella scuola superiore, in occasione dei test OCSE-PISA 2012 – da cui è tratto il brano precedente -, ha prodotto una riflessione del Consiglio Scientifico dell Unione Matematica Italiana, riportata nel sito Maddmaths! il 20/04/2016,

PISA (Programme for International Student Assessment) è un’indagine promossa dall’OCSE (Organizzazione per la Cooperazione e lo Sviluppo Economico) con l’obiettivo di misurare le competenze degli studenti in matematica, scienze, lettura e problem solving.

L’OCSE, come riportato nella citazione, osserva che le basse prestazioni sono più diffuse in Italia tra le ragazze, le classi svantaggiate, gli studenti che a casa parlano una lingua diversa, i ripetenti e coloro che sono senza una adeguata formazione primaria.

Tra le considerazioni emerse nella riflessione dell’UMI, oltre alla presa d’atto degli scarsi risultati, anche gli aspetti dello scollamento tra tipo di preparazione impartita agli studenti (più di tipo astratto e speculativo) e tipo di test (orientati alla soluzione di problemi reali) e il fatto che i risultati negativi sono però più utili a evidenziare un problema strutturale piuttosto di risultati positivi che (quasi paradossalmente) non sono necessariamente indicatori delle molteplici capacità necessarie per essere o diventare un buon matematico.

Da parte mia, credo di essere piuttosto tradizionalista, nel senso che per sapere usare bene la matematica nella soluzione dei problemi reali della vita, occorre sviluppare la capacità di astrazione, l’unica che consente di approcciare i problemi in modo creativo in contrapposizione all’applicazione meccanica e acritica di pattern conosciuti.

Instagram down, April Fools?

InstagramPesce d’aprile per Instagram che non risponde più agli accessi dell’utente.

Il messaggio nella versione Smartphone è Impossibile aggiornare il feed. Per la versione browser (il nome del componente aggiuntivo per Google Chrome è Instagram for Chrome (io ho la versione 5.9.6) il mesaggio è

This profile did not load. It may private and only available on your phone.

Il sito Downdetector riporta diverse segnalazioni degli utenti negli ultimi due giorni, come anche DownToday. Nulla ancora si trova sui possibili motivi del disservizio.

 

Laravel, partenza: definire un virtual host

Un primo scoglio che vedo incontrano i principianti (sono in buonissima compagnia) è far funzionare Laravel quando, presi dall’entusiasmo, e puntando il browser su http://localhost/organizer2 (è il nome che ho dato alla mia applicazione), si vede solo una triste sfilza di cartelle in visualizzazione standard Apache:

laravelbasic

per visualizzare il sito vero e proprio devo aggiungere all’URL la directory public/.

Per evitare questa aggiunta manuale si deve scrivere un virtual host, farlo caricare da Apache e aggiungere una regoletta sul file /etc/hosts.

 

Tutto spiegato nei dettagli nel mio ShoutWiki

Pillole di Unix/Linux 2: concatenare i file

Mi sono trovato di fronte a questo problema: voglio aggiungere i log di git ad un file di changelog preesistente che gestivo a mano ma che contiene informazioni che non voglio perdere.

Faccio così:

   $ git log >> changelog.txt

Il comando >> (append) mi consente di aggiungere un output di un comando alla coda di un file Ma se io volessi invece aggiungerlo in testa? Ho girato qualche forum e poi mi sono costruito questo comando:

   $ echo -e "`git log`\n`cat changelog.txt`" > changelog.txt

Vedi il Wiki per i dettagli su come costruire il comando

 

Pillole di Unix/Linux: programmare in bash

Bash  (acronimo per bourne again shell) è una shell testuale del progetto GNU usata nei sistemi operativi Unix e Unix-like, specialmente in GNU/Linux, ma disponibile anche per sistemi Microsoft Windows (vedi ad esempio Cygwin).

Essa è chiamata anche Bourne shell dal nome del suo autore originario Stephen Bourne. L’espansione dell’acronimo bash, Bourne again shell, letteralmente significa un’altra shell Bourne, ma Bourne again ha la stessa pronuncia di born again, cioè rinata creando la definizione finale shell rinata.

Una shell è, fondamentalmente, un processore di macro-istruzioni per eseguire comandi. Le macro-istruzioni sono delle funzionalità dove testo e simboli possono essere messi insieme per creare espressioni complesse.

Ma una shell di Unix/Linux è, allo stesso tempo, un interprete e un linguaggio di programmazione.

(Fonti: Wikipedia, GNU)

Nel Wiki trovate qualche appunto di programmazione in linguaggio di shell per Linux nella shell del progetto GNU bash

Laravel, The PHP Framework For Web Artisans

laravel-logo

Come Yii, anche Laravel arriva per aiutarci a scrivere applicazioni PHP in modo agile.

Documentazione, esempi e appunti on progress nel Wiki.

Binary Money e Bitcoin – le origini

Mi intriga da morire il denaro.

Nel senso: cos’è il denaro?

Si OK banconote, monete, bancomat, e-commerce… ma mentre è chiaro che il denaro sia una rappresentazione del valore reale delle cose da scambiare nelle transazioni, meno chiaro può essere il perché un pezzo di carta da pochi euro (fatto conto delle materie prime e le lavorazioni, come stampa, filigranatura, inserimento di ologrammi, …) vale in realtà 500 euro, perché solo i governi possano battere moneta, perché lo fanno, quando devono astenersi dal farlo, o farlo in sovrabbondanza e perché i falsari vanno in galera e perché tutti ci crediamo.

Questa riflessione arriva a puntino mentre ho iniziato a leggere il saggio di David Wolman, The End of Money, Laterza.

Un’idea originale è stata quella del matematico cinese Wei Dai che descrisse così il bmoney (denaro binario o digitale) in questo post in un forum nel 1998 che qui traduco integralmente in italiano.

 

Sono affascinato dalla cripto-anarchia di TIm May. Diversamente dalle comunità tradizionalmente associate alla parola “anarchia”, in una cripto-anarchia il governo non viene distrutto temporaneamente, bensì è permanentemente proibito e permanentemente non necessario. E’ una comunità nella quale la minaccia della violenza non impotente, perché la violenza è impossibile e la violenza è impossibile perché i suoi partecipanti non possono essere ricondotti ai lori veri nomi o alla loro posizione fisica.

FInora non è chiaro, nemmeno in teoria, come una comunità del genere possa funzionare. Una comunità è definita dalla cooperazione dei suoi partecipanti e una cooperazione efficiente richiede un mezzo di scambio (denaro) e un modo per applicare i contratti. Tradizionalmente questi servizi sono stati erogati dai governi o da istituzioni riconosciute dal governo e solo verso entità legali. In questo articolo descrivo un protocollo per mezzo del quale questi servizi posso essere erogati da e verso entità non tracciabili.

In effetti descriverò due protocolli il primo è poco pratico, perché fa un uso massiccio di un canale boradcast che è sincrono e non intasabile. In ogni caso motiverò il secondo protocollo, più pratico. In ambo i casi assumerò l’esistenza di una rete non tracciabile, nella quale mittenti e riceventi sono identificati solo attraverso pseudonimi digitali (ad esempio: chiavi pubbliche) e ogni messaggio è firmato dal suo mittente e cifrato con la chiave pubblica del ricevente.

Primo protocollo

Nel primo protocollo, ogni partecipante gestisce un proprio separato database su quanti soldi appartengono ad ogni pseudonimo, e l’oggetto di questo protocollo è il modo nel quale questi conti correnti vengono aggiornati.

  1. Creazione di denaro.

    Chiunque può creare denaro rendendo pubblica (broadcasting) la soluzione di un problema computazionale fino a quel momento irrisolto. La sola condizione è che deve essere facile determinare quanto sforzo computazionale occorre per risolvere il problema e, in caso contrario, la soluzione non deve avere un valore né pratico né intellettuale. Il numero di unità monetarie creato è uguale al costo dello sforzo computazionale in termini di un paniere di beni. Per esempio, se un problema richiede 100 ore ad essere risolto nel computer che lo risolve più convenientemente, e ci vogliono 3 panieri standard per acquistare 100 ore di funzionamento di quel computer nel mercato libero, allora sulla diffusione della soluzione di quel problema ognuno accrediterà al mittente 3 unità nel proprio database.

  2. Trasferimento di denaro.

    Se Alice (il detentore dello pseudonimo K_A) vuole trasferire X unità d denaro a Bob (detentore dello pseudonimo K_B), essa diffonde il messaggio “Io K_A consegno X unità di denaro a K_B”.
    In seguito a questo messaggio broadcast, ciascuno sottrae nel proprio database X unità dall’account di K_A e somma X unità al conto di K_B, a meno che questo non crei un bilancio negativo peer K_A, nel qual caso il messaggio viene ignorato.

  3. Applicazione dei contratti.

    Un contratto valido deve includere un massimo di risarcimento in caso di fallimento di ogni parte contrattuale. Deve anche contemplare una (terza) parte che eseguirà un arbitrato nel caso di contestazioni.  Tutte le parti di un contratto, incluso l’arbitro, devono inviare in rete le loro firme digitali del contratto prima che questo possa essere considerato valido. Al momento della diffusione in rete del contratto e delle firme digitali, ogni partecipante addebita nel proprio daabase al conto di ciascun partecipante il massimo del sua qyuota massiam di risarcimento e accredita su un conto speciale che si identifica con l’hash sicuro del contratto, la somma dei risarcimenti massimi di tutte le parti. Il contratto diviene efficace se gli addebiti funzionano su tutte le parti contrattuali senza che si verifichi un bilancio negativo per nessuno, caso nel quale il contratto viene ignorato e tutti i conti correnti vengono ripristinati al valore precedente (rollback). Un esempio di contratto dovrebbe essere simile a questo:

    K_A acconsente di consegnare a K_B la soluzione del problema P prima delle 00:00:00 del 01/01/2100,
    K_B acconsente di pagare K_A 100 bitcoin (UM, unita di moneta) prima delle 00:00:00 del 01/01/2100,
    K_C acconsente di svolgere un arbitrato in caso di contestazione.
    K_A acconsente di pagare a K_B un massimo di 1000 bitcoin in caso di fallimento [non consegna]
    K_B acconsente di pagare a K_A un massimo di 200 bitcoin in caso di fallimento [non vuole più la soluzione].
    K_C acconsente di pagare [a chi?] un massimo di 500 bitcoin in caso di fallimento [non raggiunge l’accordo].

  4. Conclusione dei contratti.

    Se un contratto di conclude con una disputa, ogni parte invia in rete un messaggio firmato “Il contratto con firma digitale SHA-1 H si conclude senza risarcimenti” o anche “Il contratto con firma digitale SHA-1 H si conclude con i seguenti risarcimenti…”. In seguito alla diffusione di tutte le firme, ogni partecipante accredita nel proprio database nel conto corrente di ogni parte l’importo del suo massimo risarcimento, cancella l’account (fittizio) del contratto, quindi accredita o addebita al conto di ciascuna delle parti contrattuali secondo lo schema di risarcimento, se ce n’è uno.

  5. Applicazione dei contratti.

    Se le parti contrattuali non trovano un accordo su una conclusione appropriata anche con l’aiuto di un arbitro, ogni parte invia in rete una proposta di risarcimento/sanzione e ogni argomento o evidenza che deponga in suo favore. Ogni partecipante fa una determinazione in merito agli effettivi risarcimenti / sanzioni e modifica di conseguenza i conti correnti delle parti nel proprio database,

Secondo protocollo

Nel secondo protocollo, i conti correnti di ciascuno sono localizzati in un sottoinsieme di partecipanti (che chiameremo server d’ora in poi) invece che nel database di ciascun partecipante. Questi server sono collegati da una rete di trasmissione di tipo Usenet. Il formato dei messaggi di transazione trasmessi su questo canale rimane lo stesso del primo protocollo, ma i partecipanti ai quali è arrivato il messaggio broadcast devono verificare che il messaggio è stato ricevuto e correttamente elaborato su un sottoinsieme casuale di questi server.

Poiché i server devono possedere un certo grado di affidabilità, è necessario un meccanismo per mantenere la loro onestà. Ad ogni server viene richiesto di accreditare una certa quantità di denaro su un conto corrente speciale, denaro potenziale per ricompense o multe in caso di buona o cattiva condotta. Inoltre, ogni server periodicamente deve periodicamente pubblicare i propri database e registrare su di essi le operazioni di creazione di denaro e le attribuzioni di denaro ai partecipanti. Ogni partecipante deve verificare che il bilancio del proprio conto corrente sia esatto e che la somma dei bilanci non sia maggiore della quantità di denaro creata. Questo impedisce ai server, anche in caso di collusione totale, di aumentare l’immissione di denaro costantemente e senza costi. Nuovi server possono anche usare i database pubblicati per sincronizzarsi con gli altri server.

Il protocollo proposto in questo articolo permette a entità pseudonime non identificabili (non rintracciabili) di cooperare tra loro più efficientemente fornendo loro un mezzo di scambio e un metodo per applicare i contratti. Il protocollo può probabilmente essere reso più efficiente e sicuro, ma io spero che questo sia un passo verso la realizzazione della cripto anarchia come possibilità pratica come anche teorica.

 

Appendice A: una creazione di denaro elettronico alternativa

Uno degli aspetti più problematici nel protocollo di b-money è la creazione del denaro. Questa parte del protocollo richiede che tutti i detentori di un conto si accordino e decidano sul costo di computazioni particolari. Sfortunatamente, poiché la tecnologia dei computer tende ad avanzare rapidamente e non sempre pubblicamente, questa informazione potrebbe essere non disponibile, inaccurata o obsoleta, circostanze che possono causare seri problemi al protocollo.

Così, vi propongo un’alternativa al subprotocollo di creazione del denaro, nel quale ogni proprietario di un conto (tutti, nel primo protocollo, oppure i server, nel secondo protocollo) si accordino e decidano invece sulla quantità di denaro da creare una volta ogni periodo, con il costo che viene determinato a mezzo di un’asta. Ogni periodo di creazione di denaro viene così suddiviso in quattro fasi:

  1. Pianificazione

    I possessori di un conto calcolano e negoziano con gli altri una somma ottimale di denaro da fornire per il prossimo periodo. Sia che raggiungano o meno il consenso, essi inoltrano nella rete (broadcast) la loro quota di denaro creata e ogni calcolo macroeconomico fatto a supporto delle previsioni

  2. Offerta.

    Chiunque voglia creare denaro binario immette nella rete un’offerta nella forma <x, y>, dove x è la quantità di denaro che vuole creare e y è un problema irrisolto appartenente ad una predeterminata classe di problemi. Ogni problema in questa classe deve avere un costo nominale (ad esempio in MIPS/anno) sul quale ci sia un consenso generale.

  3. Calcolo

    Dopo aver visto le offerte,  coloro che le hanno lanciate possono ora risolvere i problemi e pubblicare in rete le soluzioni

  4. Creazione del denaro

    Ogni possessore di un conto, accetta le offerte più alte (tra coloro che le hanno effettivamente pubblicate in rete) in termini di costo nominale per unità di denaro binario creato, e le accredita sui conto degli offerenti corrispondenti.

 

Onde gravitazionali misurate per la prima volta

Albert Einstein, early 1900'sGli scienziati del Laser Interferometer Gravitational-Wave Observatory (LIGO), nato da una collaborazione tra MIT e Caltech, hanno annunciato la scoperta nella conferenza di ieri, 11 febbraio 2016. La rilevazione delle onde gravitazionali risale però al 14 settembre 2015.

Dopo 100 anni, le previsioni di Einstein a riguardo si sono ancora una volta dimostrate esatte.

Le onde gravitazionali sono previste dalle soluzioni di una equazione (equazione di Einstein, una equazione tensoriale in cui l’incognita è il tensore di curvatura dello spaziotempo) che tipicamente rappresentano onde, allo stesso modo delle onde elettromagnetiche: Maxwell infatti scoprì che mettendo assieme le equazioni di elettricità e magnetismo si ottenevano delle equazioni d’onda, equazioni classiche che i fisici conoscevano molto bene, come quelle delle corde o delle membrane vibranti. E Hertz confermò l’esistenza di queste onde, che da principio furono chiamate onde hertziane. Gli esperimenti di Hertz furono poi di ispirazione a Marconi nel telegrafo senza fili.

Quindi possiamo fare un parallelo storico: Einstein sta a Maxwell come LIGO sta a Hertz.

Come si perviene all’equazione delle onde a partire dall’equazione di Einstein.

È impressionante il numero di questioni che il Grande Vecchio ha colto nel segno: dalla curvatura della luce, dovuta alla curvatura dello spaziotempo, alla esistenza di onde gravitazionali, alla spiegazione dell’effetto fotoelettrico usando la teoria dei quanti (che gli valse il Nobel) alla scoperta degli effetti non locali nella Meccanica Quantistica (a cui però non volle credere). Reiner Weiss, un membro del team LIGO del MIT di Boston, ha dichiarato

Sarebbe stato fantastico poter vedere la faccia che avrebbe fatto Einstein se avessimo potuto dirglielo.

Dettagli sull’esperimento LIGO a questo link.

La home page dell’esperimento LIGO, una collaborazione scientifica tra ricercatori e istituzioni situati in USA, Brasile, Russia, Europa, Cina, India e Australia.

La lista completa delle università e degli altri esperimenti che partecipano alla collaborazione, tra cui c’è l‘esperimento Virgo, una analoga collaborazione europea in cui il detector è situato a Cascina (Pisa) e condotto dal CNR. Virgo e LIGO collaborano in questa ricerca delle onde gravitazionali e nella analisi dei dati rilevato dai due eseprimenti. Anche Virgo ha allestito una conferenza stampa in contemporanea a LIGO per dare al mondo la grande notizia.

La prossima frontiera

Un altro tassello che manca è l’osservazione dei quanti di gravità. Per analogia con la teoria elettromagnetica, nella quale la Meccanica Quantistica postulò il dualismo onda particella (onda elettromagnetica – fotone), esiste un capitolo Gravità Quantistica in cui la controparte del fotone è la versione quantica dell’onda gravitazionale, il cosiddetto gravitone.

La questione però qui è ancora più complessa, in quanto Meccanica Quantistica e Relatività Generale non sono compatibili, e anche la stessa definizione teorica di gravitone è problematica (la gravitazione quantistica a loop per esempio non ne contempla nemmeno l’esistenza).

Un’ottima introduzione alla Gravità Quantistica ad opera di Carlo Rovelli nell’archivio.

Ma cos’è un’onda gravitazionale?

E’ un’onda che sfugge ad ogni tipo di onda con cui abbiamo a che fare quotidianamente:

  • onde meccaniche che sono “increspature” della materia: ad esempio le onde sonore sono fluttuazioni della densità dell’aria (attenzione: se nei fil sci-fi sentite un’astronave esplodere, è una balla, nel vuoto non si propagano le onde elastiche). I migliori sensori che abbiamo a bordo per ricevere queste onde sono la pelle e l’apparato uditivo, questo ha una banda passante dai 20 Hz ai 20 kHz.
  • onde elettromagnetiche che sono “increspature” del campo elettromagnetico: qui abbiamo uno spettro molto ampio: dalle onde lunghe a pochi Hertz, ai raggi gamma generati dai decadimenti nucleari (siamo nell’ordine dei exahertz EHz, 1 seguito da 18 zeri Hz). Un’onda elettromagnetica molto popolare è la luce, che ha la stessa natura delle onde radio e dei raggi gamma ma ha una frequenza che si situa attorno ai 500 THz (terahertz, 1 seguito da 12 zeri). Il sensore migliore che abbiamo a bordo sono gli occhi, che però hanno una curva di risposta limitata dai 400 nm (viola) ai 750 nm (rosso), quindi non vediamo dagli infrarossi in giù e dagli ultravioletti in su).
  • onde gravitazionali che sono “increspature” dello spaziotempo, fluttuazioni locali nella lunghezza dei metri e nella durata dei secondi. Generalmente queste fluttuazioni sono evidenti solo in corrispondenza a eventi cosmici catastrofici, come la collisione dei due buchi neri che ha prodotto l’onda misurata. Cosa che esula completamente dal nostro sentire quotidiano e per il quale non abbiamo avuto la necessità di sviluppare dei sensori biometrici come occhi e orecchie.

Fonti:

LIGO

Virgo