Che cosa vuol dire root?

Root vuol dire “radice”

In campo informatico si intende root in due contesti:

  • Root come utente
  • Root come percorso dei file

Se si intende Root come utente, si intente l’utente “radice”, ovvero l’utente principale, l’utente con più permessi di tutti. Per esempio, ottenere i permessi di root su un telefono Android, significa essere in grado di poter eseguire qualsiasi programma indipendentemente dalle limitazioni preimpostate sul telefono.

Se invece si intende Root come percorso dei file, si intende il percorso “radice”, ovvero posizionare il file desiderato in nessuna cartella, nella radice.

Se l’unità che usiamo è, per esempio, d: , posizionare il file in root si intende metterlo in d:

Alla ricerca della velocità perfetta

Da quando ho avuto la pazza idea di cambiare totalmente il motore del sito da Windows+mojoPortal a Linux+PHP, ho notato che è necessaria molta più potenza di calcolo per elaborare ogni pagina:

cpu-year

Usa molto più processore, ma le pagine sono incredibilmente più reattive rispetto a prima… solo nel caso in cui la pagina sia già stata “pregenerata”:

http_loadtime-year

Nei miei esperimenti ho visto che il forum di questa piattaforma (bbpress) rallenta in modo incredibile il sito: carica un sacco di javascript inutile in tutte le pagine e non rende possibile la “pregenerazione” delle pagine a chi entra per scrivere sul forum. Per questo ho disattivato, temporaneamente, il forum: tanto non lo usava nessuno. Magari in futuro troverò una soluzione più performante. (sto pensando a Discourse, per mantenere le conversazioni attive)

Controllare una lampadina con Arduino

Negli scorsi mesi ho scritto che ho comprato un monte di roba per sperimentare nuove applicazioni con Arduino, ma poi non ho mostrato nulla.

Ecco il primo esempio, il più semplice: come controllare una lampadina.

Ingredienti:

Il circuito è semplicissimo e l’ho messo su GitHub.

Spiegazione del programma:

  1. in setup() si specifica che il pin 7 è un output
  2. in loop() viene acceso il pin 7
  3. Sono attesi 10000 millisecondi (10 secondi) prima di eseguire la prossima istruzione
  4. Viene spento il pin 7
  5. Sono attesi altri 10000 millisecondi
  6. Si ricomincia da capo dal punto 2, con l’effetto che la lampadina si accende e si spegne ogni 10 secondi.

Ovviamente, così com’è, è un circuito inutile, ma può essere esteso molto facilmente, per esempio è possibile accendere e spegnere la lampada via Bluetooth, o via WiFi.

Codeanywhere: la recensione

Ho cliccato su “account free”, ho scritto una mail e password e bam, subito registrato!

Una volta entrato mi ha chiesto, che “stack” preimpostato preferisco, a disposizione tra:

  • PHP
  • Node.js
  • Ruby
  • Python
  • C++
  • HTML5

Oppure di collegarmi a una macchina virtuale di mio possesso, via SSH.

Per esempio, PHP dice:

PHP Development Box on Ubuntu 14.04 with Apache, PHP, MySQL, phpMyAdmin and Composer preinstalled. 

L’avvio è molto veloce, la macchina virtuale viene creata in pochi secondi ed apache è già in ascolto sulla porta 80.

In meno di un minuto posso pubblicare online un file php.

È ben integrato con GIT.

L’unico “svantaggio” è che il tutto viene pensato come “a ogni progetto la propria macchina virtuale”, con GIT e apache preimpostati nella directory principale.

Certo, visto che è una macchina virtuale, posso rinunciare all’integrazione nativa, prendo e mi configuro apache e git con via riga di comando, però, indubbiamente, farlo con pochi clic è molto più comodo.

C’è il salvataggio automatico dei files, giustamente disattivato di default, in quanto la versione free non mantiene lo storico di tutte le modifiche: pagando si ha lo storico delle ultime N versioni, ideale per chi non vuole/puole usare GIT e preferisce salvare su Dropbox.

Un’ottima cosa è che la chiave pubblica SSH della macchina virtuale è accessibile con un semplice clic, cliccando sul nome utente, quindi è proprio perfetto per git. Proprio riguardo git, una piccola pecca: non posso selezionare i singoli file per i commit, ma il menu che appare cliccando sull’intera macchina virtuale è “tutto o niente”. Anche questo probabilmente è fatto nell’ottica “a ogni progetto la propria macchina virtuale”, e questo ha un senso: perché dovrei abbonarmi alla versione Freelance da 7 dollari al mese e avere accesso a 10 “macchine virtuali/progetti” se la versione free mi permettesse con facilità di avere un numero illimitato di progetti? Non mi viene vietato di gestire un numero illimitato di progetti, ma se non pago mi devo smazzare per impostare e usare apache/git/altro tool da riga di comando. Se lo usassi quotidianamente per lavoro, farei l’abbonamento alla versione Freelance in un batter d’occhio. Vuoi mettere la comodità di avere una macchina virtuale perfettamente “pulita” e sempre accessibile per ogni progetto?

Iscrivendovi a Codeanywhere seguendo il mio link:
http://codeanywhere.com/referralsignup/?r=44733c37687e396531
riceverete 15 dollari di credito gratuito nel caso in cui facciate un abbonamento a pagamento

Siti per programmare online

Adesso che c’è la moda del cloud, sono tantissimi i siti che permettono di programmare online senza installare programmi sul computer locale. Perfetto quindi per chi, un po’ come me, usa 2 computer a lavoro, 2 computer a casa e spesso scrocca il computer di altri: spesso il problema è che ho un paio di ore libere, ma non ho tutto impostato come si deve, quindi non posso continuare il lavoro.

Quindi potrei scrivere una cosa in pausa pranzo a lavoro, continuarla poi in treno, finirla a casa.

I siti che permettono di programmare online sono:

Per me la caratteristica essenziale è che supporti GIT, così da gestire tutti i miei progetti più facilmente.

Ad occhio tutti questi siti (sette!) hanno questa caratteristica. Prima di tutto provo codeanywhere perché, ad occhio, è l’unico con l’app Android così, forse, lo posso usare dal cellulare. Indispensabile anche che sia gratis o un con un costo contenuto, perché il 90% dei miei progetti non generano introiti, quindi non posso giustificare la spesa di decine di euro al mese.

Sicuramente non proverò Codio, visto che, se non paghi, dopo 30 giorni gli spazi di lavoro diventano pubblici.

A breve la recensione di Codeanywhere 😀

Un codice Javascript che sembra faccine giapponesi

Che cosa vedete qua sotto?

゚ω゚ノ= /`m´)ノ ~┻━┻   //*´∇`*/ [‘_’]; o=(゚ー゚)  =_=3; c=(゚Θ゚) =(゚ー゚)-(゚ー゚); (゚Д゚) =(゚Θ゚)= (o^_^o)/ (o^_^o);(゚Д゚)={゚Θ゚: ‘_’ ,゚ω゚ノ : ((゚ω゚ノ==3) +’_’) [゚Θ゚] ,゚ー゚ノ :(゚ω゚ノ+ ‘_’)[o^_^o -(゚Θ゚)] ,゚Д゚ノ:((゚ー゚==3) +’_’)[゚ー゚] }; (゚Д゚) [゚Θ゚] =((゚ω゚ノ==3) +’_’) [c^_^o];(゚Д゚) [‘c’] = ((゚Д゚)+’_’) [ (゚ー゚)+(゚ー゚)-(゚Θ゚) ];(゚Д゚) [‘o’] = ((゚Д゚)+’_’) [゚Θ゚];(゚o゚)=(゚Д゚) [‘c’]+(゚Д゚) [‘o’]+(゚ω゚ノ +’_’)[゚Θ゚]+ ((゚ω゚ノ==3) +’_’) [゚ー゚] + ((゚Д゚) +’_’) [(゚ー゚)+(゚ー゚)]+ ((゚ー゚==3) +’_’) [゚Θ゚]+((゚ー゚==3) +’_’) [(゚ー゚) – (゚Θ゚)]+(゚Д゚) [‘c’]+((゚Д゚)+’_’) [(゚ー゚)+(゚ー゚)]+ (゚Д゚) [‘o’]+((゚ー゚==3) +’_’) [゚Θ゚];(゚Д゚) [‘_’] =(o^_^o) [゚o゚] [゚o゚];(゚ε゚)=((゚ー゚==3) +’_’) [゚Θ゚]+ (゚Д゚) .゚Д゚ノ+((゚Д゚)+’_’) [(゚ー゚) + (゚ー゚)]+((゚ー゚==3) +’_’) [o^_^o -゚Θ゚]+((゚ー゚==3) +’_’) [゚Θ゚]+ (゚ω゚ノ +’_’) [゚Θ゚]; (゚ー゚)+=(゚Θ゚); (゚Д゚)[゚ε゚]=’\\’; (゚Д゚).゚Θ゚ノ=(゚Д゚+ ゚ー゚)[o^_^o -(゚Θ゚)];(o゚ー゚o)=(゚ω゚ノ +’_’)[c^_^o];(゚Д゚) [゚o゚]=’\”‘;(゚Д゚) [‘_’] ( (゚Д゚) [‘_’] (゚ε゚+(゚Д゚)[゚o゚]+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ (゚ー゚)+ (゚Θ゚)+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ ((゚ー゚) + (゚Θ゚))+ (゚ー゚)+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ (゚ー゚)+ ((゚ー゚) + (゚Θ゚))+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ ((o^_^o) +(o^_^o))+ ((o^_^o) – (゚Θ゚))+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ ((o^_^o) +(o^_^o))+ (゚ー゚)+ (゚Д゚)[゚ε゚]+((゚ー゚) + (゚Θ゚))+ (c^_^o)+ (゚Д゚)[゚ε゚]+(゚ー゚)+ ((o^_^o) – (゚Θ゚))+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ (c^_^o)+ (o^_^o)+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ ((゚ー゚) + (゚Θ゚))+ (゚Θ゚)+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ (゚ー゚)+ (゚Θ゚)+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ ((゚ー゚) + (゚Θ゚))+ ((゚ー゚) + (o^_^o))+ (゚Д゚)[゚ε゚]+(゚ー゚)+ (゚Θ゚)+ (゚Д゚)[゚ε゚]+(゚ー゚)+ ((o^_^o) – (゚Θ゚))+ (゚Д゚)[゚ε゚]+((゚ー゚) + (゚Θ゚))+ (゚Θ゚)+ (゚Д゚)[゚o゚]) (゚Θ゚)) (‘_’);

A prima vista pare un insieme casuale di kaomoji, le emoticon giapponesi come (o^_^o) , (゚ー゚) , ゚ω゚ノ , *´∇`* o questa testa di scimmia (゚Θ゚); invece è codice Javascript che può essere eseguito, per esempio, cliccando qui.

Geniale, vero?

L’offuscatore si trova a questa pagina: http://utf-8.jp/public/aaencode.html

Della stessa serie c’è anche quello che usa solo i simboli []()!+ e anche un altro che produce risultati come:

dandandin=~[];dandandin={___:++dandandin,$$$$:(![]+””)[dandandin],__$:++dandandin,$_$_:(![]+””)[dandandin],_$_:++dandandin,$_$$:({}+””)[dandandin],$$_$:(dandandin[dandandin]+””)[dandandin],_$$:++dandandin,$$$_:(!””+””)[dandandin],$__:++dandandin,$_$:++dandandin,$$__:({}+””)[dandandin],$$_:++dandandin,$$$:++dandandin,$___:++dandandin,$__$:++dandandin};dandandin.$_=(dandandin.$_=dandandin+””)[dandandin.$_$]+(dandandin._$=dandandin.$_[dandandin.__$])+(dandandin.$$=(dandandin.$+””)[dandandin.__$])+((!dandandin)+””)[dandandin._$$]+(dandandin.__=dandandin.$_[dandandin.$$_])+(dandandin.$=(!””+””)[dandandin.__$])+(dandandin._=(!””+””)[dandandin._$_])+dandandin.$_[dandandin.$_$]+dandandin.__+dandandin._$+dandandin.$;dandandin.$$=dandandin.$+(!””+””)[dandandin._$$]+dandandin.__+dandandin._+dandandin.$+dandandin.$$;dandandin.$=(dandandin.___)[dandandin.$_][dandandin.$_];dandandin.$(dandandin.$(dandandin.$$+”\””+dandandin.$_$_+(![]+””)[dandandin._$_]+dandandin.$$$_+”\\”+dandandin.__$+dandandin.$$_+dandandin._$_+dandandin.__+”(\\\”\\”+dandandin.__$+dandandin.___+dandandin._$$+”\\”+dandandin.__$+dandandin.$_$+dandandin.__$+dandandin.$_$_+dandandin._$+”\\\”)”+”\””)())();

Imparare il Javascript con Codecademy

Se vi piacerebbe saper programmare in Javascript, ma non ve l’hanno mai insegnato a scuola, ho trovato un ottimo sito per impararlo da autodidatti: Codecademy.

Forse all’inizio è un po’ troppo “basilare” per chi ha un minimo di conoscenza, ma alla fine è molto utile, e il fatto che vengano assegnati dei bollini per ogni unità è stimolante, non si vede l’ora di completarli tutti (ecco il mio profilo, con tutti i bollini raccolti, ahahah).

Per chi non ha nessuna esperienza di programmazione, è utile perché spiega molto bene.

Per chi come me ha imparato il Javascript da solo, è sicuramente utile, all’inizio magari è un po’ noioso ma si impara sempre: da soli si tende a tralasciare le cose, per esempio non avevo idea di cosa fosse un operatore ternario (Anche se, durante il resto del corso, viene fatto usare il classico if-else in punti dove l’operatore ternario ci starebbe a fagiolo).

Per chi invece è un programmatore professionista, il corso è assolutamente inutile – magari potete trattarlo come un’esercitazione di dattilografia 😝

Per ora ci sono solo lezioni di Javascript, in futuro saranno aggiunte anche lezioni di Python e Ruby.