programmer@work

robe da informatici

Quanto grande è l'universo?

In certi momenti ci si riesce ad accorgere quanto sia enorme l'universo, anche se facciamo fatica a concepirlo. Dalle stelle più vicine a vastissimi supergruppi di galassie, a distanze di miliardi di anni luce fino ai limiti di ciò che è possibile vedere. L'universo è grande… veramente grosso. Non avete idea di quanto enorme esso sia. L'universo comprende qualsiasi cosa che esiste, si pensa così. Sempre che ce ne siano altri, e il nostro è solo uno su trilioni, ma questo è un argomento per un altro articolo.

Davanti all'uscio di casa

Ok, quindi tutti sappiamo di vivere in una galassia chiamata la Via Lattea che contiene qualche centinaio di miliardi di stelle, delle quali il Sole è solo una delle tante. Se la Via Lattea fosse ridotta a un disco di 10 metri di diametro, il nostro intero sistema solare misurerebbe non più di 0.1 millimetri. In una bella notte col cielo sereno saremmo in grado di vedere lo 0.000003% di tutte le stelle che sono presenti nella nostra galassia. Dunque prendiamo una di quelle stelle, la più vicina al nostro Sole, infatti. È una stella nana rossa chiamata Proxima Centauri che dista 4.24 anni luce. È troppo piccola perché sia visibile a occhio nudo, ma la sua luce impiega più di quattro anni per raggiungerci. Se voleste intraprendere un viaggio a Proxima Centauri usando la tecnologia aerospaziale adesso disponibile a noi terrestri, ci mettereste tra i 70000 e 80000 anni per arrivare. Se avessimo scoperto il metodo per viaggiare alla velocità della luce, ci metteremmo comunque più di quattro anni e un quarto per raggiungere la destinazione. In altri termini, 9 anni e mezzo per un viaggio di andata e ritorno. Tutto ciò riguarda la nostra stella vicina di casa, dietro l'angolo. Niente a che fare con viaggi attraverso l'universo.
Se voleste attraversare la vostra spirale di casa, la Via Lattea da una parte all'altra, impieghereste niente meno di 100 mila anni. Tale durata è approssimativamente 1250 vite medie umane. No, non confondete queste cifre legandole alle reali capacità dei nostri mezzi aerospaziali, queste tempistiche sono calcolate alla velocità della luce. Viaggiando così veloce, potreste completare in un secondo 7 volte il giro della Terra.
Che cosa succederebbe se voleste visitare la nostra galassia più vicina a questa velocità? Per raggiungere la galassia Andromeda, uscendo dalla Via Lattea, v'imbarchereste in un viaggio di 2 milioni e mezzo di anni.
Possiamo mettere questi fatti sotto la giusta luce, l'universo è comunque un'entità intera e immensa, molto più grande, a confronto di queste piccole galassie.

Gruppi e supergruppi galattici

Qui le cifre iniziano a essere vagamente terrificanti. Ci sono miliardi su miliardi su miliardi di altre galassie in giro, proprio come la Via Lattea e Andromeda, ognuna con il proprio centinaio di miliardi di sistemi solari e i suoi trilioni di pianeti. Se uscite da questo perimetro e guardate a un contesto ulteriormente espanso, vedrete galassie che sembrano ammassate l'una sull'altra; queste sono i gruppi di galassie. Sono collezioni di galassie che partono da 50 e arrivano fino a 1000. Si giunge infine ai supergruppi galattici, dei giganteschi conglomerati che rappresentano la scala massima dei gruppi galattici. Questi ultimi sono le cose più grandi conosciute dalla razza umana, formati da gruppi di galassie e supergruppi che diventano enormi superstrutture cosmiche che occupano milioni di anni luce o persino miliardi di anni luce. Sono immaginabili come muri colossali, fogli e filamenti di galassie. Sono oggetti di proporzioni inimmaginabili, che occupano grandi sezioni dell'universo visibile. Se ci inoltriamo ancora più fuori, i gruppi e supergruppi si formano intorno a zone di vuoto cosmico e assomigliano a strutture come una spugna o una pagnotta di pane. I gruppi galattici sono il pane e i vuoti sono le bolle d'aria.

Tempo

Allora, quanto è grande l'intero universo? Beh, nessuno conosce la risposta esatta. Possiamo solo osservare, il più lontano possibile, in tutte le direzioni ma, è proprio in quel momento che ci scontriamo con un muro solido di mattoni. La distanza non è il problema saliente quando puntiamo a osservare i limiti dell'universo, bensì il tempo. Al cosmo si attribuisce un'età pari a 13.7 miliardi di anni e con la stessa misura si pensa a qualsiasi cosa che sia distante da noi 13.7 miliardi di anni luce. Dopo tale distanza è ragionevole pensare che qualsiasi informazione precedente al Big Bang che viaggia alla velocità della luce non ha ancora raggiunto il nostro pianeta. Tutto ciò rende l'universo visibile a noi una sfera con raggio di circa tredici miliardi di anni luce. Nel momento che sono stati scritti tali numeri, tredici miliardi d'anni luce sono la distanza della più lontana galassia mai vista.
Ma che si dice della rapida espansione dell'universo e di quella misteriosa energia oscura che costantemente accellera l'espansione? ebbene questa espansione ha allargato lo spazio nel frattempo e rende attualmente osservabile il nostro universo fino a 78 miliardi di anni luce ovvero una sfera osservabile larga 156 miliardi di anni luce. Semplicemente diciamo che una stella lontana 13.7 miliardi di anni luce ha emesso un fotone (sebbene ciò sia impossibile perchè sarebbe successo all'inizio del tutto, prendiamo l'esempio per buono) dopo di che, ora che quel fotone raggiunge la Terra, il punto di partenza di quel fotone non è più distante 13.7 miliardi di anni luce bensì a 78 miliardi di anni luce. La luce non ha viaggiato attraverso 78 miliardi di anni luce, ma lo spazio tra noi e il punto di partenza si è allungato. Allora i fotoni di luce che vediamo da oggetti tanto distanti sono in realtà già più lontani rispetto al momento che la luce è stata emessa.
C'è un punto dove è diventato impossibile viaggiare, per la luce o di qualsiasi altro tipo di radiazione; questo punto è più recente di 380 mila anni dopo il Big Bang. Astronomi non vedrebbero mai nessun tipo di luce da quel tempo: nessuna luce visibile o raggi gamma o ultravioletti e nemmeno segnali radio; niente che deriva dallo spettro elettromagnetico. Forse avete notato quello strano ammasso di blocchi blu e verdi (vedi sotto): quello si chiama la radiazione cosmica di fondo. In altri termini è l'alone di luce residua del Big Bang e la radiazione di sfondo a microonde cosmiche segna il punto laddove l'universo divenne trasparente alle radiazioni. Appariva opaco prima di quel momento, opaco come il centro di una stella.

Radiazione cosmica di fondo

I colori che cambiano sulla Radiazione di sfondo a microonde cosmiche mostrano delle piccole variazioni di temepratura in quanto il neonato universo si raffreddò e divenne trasparente. Queste piccole variazioni di temperatura implicano la presenza di densità variabili e lo schema corrisponde alle località dove i gruppi giganti di galassie così come i supergruppi sono situati oggi.

Cosa si cela oltre?

In conclusione gli astronomi mirano a osservare fino ai limiti di questa sfera che porta un raggio di 78 miliardi di anni luce, ma persino questa ampiezza rappresenta probabilmente una minuscola parte di ciò che potrebbe veramente esistere. Nessuno lo sà per certo ma gli scienziati stimano che questa porzione corrisponda a circa un decimillesimo di ciò che potrebbe esserci là fuori.
Come sarebbe l'universo oltre questa barriera? Sarebbe lo stesso ovunque oppure le leggi fisiche cambierebbero? Quali mondi e altre civiltà si nascondono là fuori ma permanentemente fuori dalla nostra portata? Prosegue all'infinito o altrimenti ha un bordo? Pare che gran parte dell'universo stia oltre i nostri telescopi, la nostra comprensione e forse persino la nostra immaginazione. E se prima del Big Bang c'era il nulla, cosa o chi ha scatenato quella scintilla che ha dato origine al nostro universo? Forse Dio?

Fonte: http://getprismatic.com/story/1419368520134

ALSA: Switch audio output to USB headset

Ho acquistato delle cuffie wireless USB, per essere preciso esattamente queste: http://www.amazon.it/gp/product/B005FY61MM . Sono molto comode e funzionano su Debian out-of-the-box ovvero senza installare alcun driver.

Adesso nella mia Debian ho questo problema: vorrei che quando inserisco il ricevitore USB in automatico l'output di ALSA cambi dalla scheda audio integrata alle cuffie wireless.

Questo può essere fatto usando le regole di udev (udev è il gestore dei dispositivi per il kernel Linux e amministra dinamicamente i dispositivi a blocchi per ogni periferica rilevata nel sistema). Iniziamo: apriamo il file /etc/udev/rules.d/00-local.rules e se non esiste lo creiamo; aggiungiamo le seguenti regole:

1
2
3
4
5
# Set USB headset as default sound card when plugged in
KERNEL=="pcmC[D0-9cp]*", ACTION=="add", PROGRAM="/bin/sh -c 'K=%k; K=$${K#pcmC}; K=$${K%%D*}; echo defaults.ctl.card $$K > /etc/asound.conf; echo defaults.pcm.card $$K >>/etc/asound.conf'"

# Restore default sound card when USB headset unplugged
KERNEL=="pcmC[D0-9cp]*", ACTION=="remove", PROGRAM="/bin/sh -c 'echo defaults.ctl.card 0 > /etc/asound.conf; echo defaults.pcm.card 0 >>/etc/asound.conf'"

In pratica quando viene inserito il ricevitore USB udev lo detecta e lancia uno script per cambiare il file /etc/asound.conf cambiando il device di output con quello delle cuffie appena inserite.

L'unica pecca è che quando viene cambiato l'output di ALSA tutti i programmi che stanno usando ALSA devono essere riavviti. Se trovate un modo per risolvere questo problema fatemi sarepe!

A che altezza appendere un quadro?

Per appendere i quadri mi piace molto seguire lo stile della linea mediana. In pratica si traccia una linea immaginaria sulla parete che sta a 5/8 dell'altezza della parete stessa. Una volta che abbiamo a mente questa linea i quadri vanno appesi con i 3/8 della loro altezza sopra la linea mediana.

Quindi la formula per calcolare l'altezza dove appendere un quadro è:

h = (H*5 + q*3) / 8

dove H è l'altezza della parete dove volete appendere il quadro e q è l'altezza del quadro stesso.

Configurare più monitor con scheda video NVidia e Xorg

L'altro giorno mi sono trovato a configurare un dual monitor più connessione alla TV sul mio pc fisso che monta una Debian con una scheda video NVidia GeForce GTX 650.

La configurazione che ho fatto è questa:

  • monitor Samsung 24" come principale
  • monitor QBel 19" a destra del monitor principale
  • TV che clona il monitor principale

Dato che il il monitor principale ha una risoluzione massima di 1920x1080, mentre la TV soltanto 720x480 (si è una di quelle ancora col tubo catodico) non si riesce a fare un clone pieno, ovvero proiettare i 1920x1080 pixel del monitor principale sui 720x480 pixel della TV. Quindi mi sono accontentato di proiettare i 720x480 pixel della parte centrale del monitor principale sulla TV. In questo modo se apro un film con VLC basta che ridimensioni la finestra a 720x480 al centro del monitor per vedere il film in full screen sulla TV (ho uno scriptino che me lo fa, ma questo magari lo vedremo un altro giorno).

Quindi vediamo come fare sta roba. Apriamo il nostro file /etc/X11/xorg.conf, il file di configurazione principale per Xorg (open source implementation of the X Window System). Il mio si presenta più o meno così:

Section "ServerLayout"
    Identifier     "Layout0"
    Screen      0  "Screen0" 0 0
    InputDevice    "Keyboard0" "CoreKeyboard"
    InputDevice    "Mouse0" "CorePointer"
    Option         "Xinerama" "0"
EndSection

Section "Files"
EndSection

Section "InputDevice"
    # generated from default
    Identifier     "Mouse0"
    Driver         "mouse"
    Option         "Protocol" "auto"
    Option         "Device" "/dev/psaux"
    Option         "Emulate3Buttons" "no"
    Option         "ZAxisMapping" "4 5"
EndSection

Section "InputDevice"
    # generated from default
    Identifier     "Keyboard0"
    Driver         "kbd"
EndSection

Section "Device"
    Identifier     "Device0"
    Driver         "nvidia"
    VendorName     "NVIDIA Corporation"
    BoardName      "GeForce GTX 650"
EndSection

Section "Screen"
    Identifier     "Screen0"
    Device         "Device0"
    DefaultDepth    24
    Option         "Stereo" "0"
    SubSection     "Display"
        Depth       24
    EndSubSection
EndSection

Quello che dobbiamo fare è andare a modificare la sezione Screen che permette di configurare la disposizione dei monitor. Ma prima di far ciò ci serve conoscrere gli ID dei nostri monitor connessi alla nostra scheda video. Usiamo il comando xrand --query. Dovremmo ottenere un output di questo tipo:

Screen 0: minimum 8 x 8, current 3200 x 1080, maximum 16384 x 16384
VGA-0 connected 1280x1024+1920+0 (normal left inverted right x axis y axis) 376mm x 301mm
   1280x1024      60.0*+   75.0  
   1280x960       60.0  
   1152x864       75.0  
   1024x768       75.0     70.1     60.0  
   800x600        75.0     72.2     60.3     56.2  
   640x480        75.0     72.8     59.9  
HDMI-0 connected 720x480+600+300 (normal left inverted right x axis y axis) 386mm x 290mm
   1280x720       60.0 +   59.9  
   1920x1080      60.1     60.0  
   1440x480       60.1  
   720x480        59.9*    60.1  
   640x480        60.0     59.9  
DVI-D-0 connected primary 1920x1080+0+0 (normal left inverted right x axis y axis) 531mm x 299mm
   1920x1080      60.0*+   59.9     50.0  
   1680x1050      60.0  
   1600x900       60.0  
   1440x900       59.9  
   1280x1024      75.0     60.0  
   1280x800       59.8  
   1280x720       60.0     59.9     50.0  
   1152x864       75.0  
   1024x768       75.0     70.1     60.0  
   800x600        75.0     72.2     60.3     56.2  
   720x576        50.0  
   720x480        59.9  
   640x480        75.0     72.8     59.9  
DVI-D-1 disconnected (normal left inverted right x axis y axis)

In questo caso DVI-D-0 è il monitor principale (24" Samsung), VGA-0 è il monitor secondario (19" QBel) e HDMI-0 è la TV.

Con questi dati possiamo iniziare a modificare il file xorg.conf. Nella sezione Screen aggiungiamo:

Option         "TwinView" "1"
Option         "TVStandard" "PAL-B"
Option         "nvidiaXineramaInfoOrder" "DVI-D-0"
Option         "metamodes" "DVI-D-0: nvidia-auto-select +0+0, VGA-0: 1280x1024 +1920+0, HDMI-0: 720x480 +600+300"
  • Ovvero abilitiamo il TwinView della nostra scheda NVidia.
  • Diciamo che lo standard della TV è il PAL-B.
  • Diciamo che il monitor principale è il DVI-D-0, ovvero il Samsung da 24".
  • Disponiamo i vari monitor:
    • Il monitor DVI-D-0 avrà risoluzione auto calcolata (1920x1080) e l'angolo top-left avrà coordinate 0,0
    • Il monitor VGA-0 avrà risoluzione 1280x1024 e l'angolo top-left avrà coordinate 1920,0 ovvero a destra del monitor principale infatti la larghezza del monitor principale (risoluzione orizzontale) è di 1920 pixel, quando termina inizia il monitor secondario.
    • La TV invece HDMI-0 avrà risoluzione 720x480 e l'angono top-left avrà coordinate 600,300 ovvero più o meno al centro del monitor principale.

A questo punto salvate il file xorg.conf e riavviate il server X!

Add an 'acts_as' method to Active Record

Vediamo oggi come aggiungere i famosi metodi magici acts_as alle classi ActiveRecord.

La cosa da fare è create un modulo (magari dentro lib) con il nome del nostro acts_as:

module Ciccio

  extend ActiveSupport::Concern

  included do
  end

  module ClassMethods  
    def acts_as_ciccio(add_power: false)
      # Do some stuffs
      if add_power
        include InstanceMethods2
      end
    end
  end

  module InstanceMethods
    def ciccio
      puts 'ciccio'
    end
  end

  module InstanceMethods2
    def ciccio2
      puts 'ciccio'
    end
  end

end

ActiveRecord::Base.send(:include, Ciccio) # optional

Caricando questo modulo all'avvio di Rails, tutte le vostre classi che derivano da ActiveRecord::Base avranno i metodi di classe che sono definiti dentro il modulo Ciccio::ClassMethods e i metodi di istanza che sono definiti dentro Ciccio::InstanceMethods o dentro Ciccio. Nel nostro esempio inoltre possiamo aggiungere ad una classe i metodi di istanza dentro Ciccio::InstanceMethods2 solo se invochiamo il metodo di classe acts_as_ciccio(add_power: true) passando l'opzione add_power a true.