giovedì 13 febbraio 2020

pyxis ~# poweroff

Abitavo in un'altra casa, con Walter si assemblava PC. Ne tornò indietro uno vecchio, ormai obsoleto, sostituito da un altro più potente. Decisi di dargli il ruolo di server per la nostra LAN, che con un cavo di rete congiungeva le nostre due case.

# cat /proc/cpuinfo
processor    : 0
vendor_id    : AuthenticAMD
cpu family    : 5
model        : 8
model name    : AMD-K6(tm) 3D processor
stepping    : 12
cpu MHz        : 451.161
cache size    : 64 KB
fdiv_bug    : no
hlt_bug        : no
f00f_bug    : no
coma_bug    : no
fpu        : yes
fpu_exception    : yes
cpuid level    : 1
wp        : yes
flags        : fpu vme de pse tsc msr mce cx8 pge mmx syscall 3dnow k6_mtrr
bogomips    : 892.92



hda: 39876480 sectors (20416 MB) w/418KiB Cache, CHS=39560/16/63, UDMA(33)

 Gli fu installata una Debian 3.0 Woody nuova fiammante e da lì iniziò il suo infaticabile lavoro ospitando firewall, posta elettronica, ntp, irc, http proxy, ecc. Ogni tanto una spolverata con l'aria compressa. Sono passati circa diciotto anni, si può dire che sia diventato maggiorenne, ma Walter non c'è più. Facendo un conto approssimativo il suo hard disk da 5400 giri al minuto ha fatto circa 50 miliardi di rotazioni, percorrendo circa 14 milioni di chilometri, cioè 37 volte la distanza Terra-Luna. Sono cifre che hanno dell'incredibile.

Ho deciso di preservarlo per quando si romperà il nuovo server.

0 root@pyxis: ~
# poweroff

Broadcast message from root (pts/0) (Thu Feb 13 15:33:35 2020):

The system is going down for system halt NOW!
\ _ _ _ _._ _ _ _ _|_ _ _ _ _._ _ _ _ _"_ _ _ _ _._ _ _ _ _|_ _ _ _ _._ _ _ _ >
0 root@pyxis: ~
#
Connection to pyxis.rete closed by remote host.

martedì 30 aprile 2019

giovedì 26 gennaio 2017

Altro inverno

Altro inverno schifosamente secco. Niente neve, non resta che la rassegnazione.


venerdì 18 novembre 2016

JavaScript la Peste del nuovo secolo

Uno può inventarsi tutti i linguaggi formali che gli detti la fantasia, avranno pro e contro, ma un linguaggio di programmazione deve funzionare in un computer del mondo fisico, non in una realtà platonica.

Nella realtà fisica qualsiasi computer immaginabile ha una CPU con registri di dimensione finita e nemmeno tanto grande, capaci solo di rappresentare numeri interi finiti piuttosto piccoli.

I numeri reali, ma anche semplicemente i razionali, non possono essere rappresentati fedelmente all'interno di un computer, bisognerà approssimarli in qualche modo e usare algoritmi di calcolo specializzati per trattarli. Al contrario numeri interi abbastanza piccoli possono essere trattati direttamente dalle istruzioni della CPU. Non si può sperare di verificare esattamente un'uguaglianza come π == π , bisognerà accontentarsi di verificare se la differenza tra due float rientri entro un certo margine d'errore, che è un'operazione concettualmente diversa da verificare l'uguaglianza tra due int come 1 == 1 analogo a verificare se vero == vero, cosa fattibile usando lo stesso algoritmo e la stessa istruzione macchina.

Sarà inoltre ben difficile, non mi risulta ci siano casi esistenti al riguardo, che una qualità di tipo vero o falso possa avere dei registri o delle celle di memoria dedicati di un solo bit, in genere verranno usati otto o più bit e condiviso l'utilizzo delle istruzioni di comparazione uguale, maggiore o minore per la verifica della verità delle espressioni logiche.

Per questo nel linguaggio C vero e falso vengono intelligentemente rappresentati in condivisione con i piccoli interi col tipo int, mentre i numeri reali hanno i loro tipi a parte float. Le stringhe di caratteri possono essere rappresentate da stringhe di numeri interi. Tutto quadra.

Ciò vale su tutti i computer attualmente in commercio o ragionevolmente disponibili per parecchi anni a venire.

Quelli che hanno inventato JavaScript invece per "fare le cose semplici" si sono sognati i tipi nativi String, Number e Boolean, distinti tra loro, dove nel tipo Number ricadono sia gli interi che i reali. La confusione poi è tale che hanno dovuto anche distinguere tra null e undefined e aggiungere nuovi operatori di equivalenza === e !==, roba che voi umani...

Appare evidente che JavaScript è stato inventato da gente sotto l'effetto di droghe o minorati mentali, e la cosa più pazzesca è che questa peste ormai ha invaso il mondo e continua a diffondersi. Non c'è modo di sistemare una cosa del genere, sarà sempre un taccone su una cosa defective by design. Tutta la programmazione WEB si basa su un linguaggio con fondamenta di sabbia.

Buttiamola in ridere a questo punto ...sia mai per quello che i browser hanno le sandbox? :-)


martedì 8 novembre 2016

mercoledì 12 ottobre 2016

I tedeschi

Quaranta centimetri e quattro prese per collegare tre elettrodomestici sul piano cucina. I tedeschi avrebbero parecchio da imparare dagli italiani, anche in fatto di spine della corrente.


Spreco di spazio da spine elettriche tedesche.

sabato 3 settembre 2016

Scioccante

Ma come è possibile una cosa del genere?!

Orrore!
Disgusto.

Incredulità.

Scempio.

Ma quali scellerati amministratori possono permettere una cosa del genere? Come si può distruggere il paesaggio così?