Archivi Categorie: Linux

RMS, l’annuncio iniziale di GNU e un appuntamento imminente

Giovedì sera questo tweet Happy #GNU anniversary! con un link che per tutto ieri è risultato irraggiungibile (almeno per me), questo: Initial Announcement.

Free Unix!

Starting this Thanksgiving I am going to write a complete Unix-compatible software system called GNU (for Gnu’s Not Unix), and give it away free to everyone who can use it. Contributions of time, money, programs and equipment are greatly needed.

GNU è una delle più grandi idee e realizzazioni del XX secolo. E continua, per esempio io uso GNU/Linux, Linux per gli amici ma non per Richard.

Forse oggi c’è ancora qualcuno che usa Unix ma è Linux che impera. Mi dicono che c’è chi usa altri OS, uno con una finestra sghemba nel logo ma non so quanto questa diceria sia attendibile.

E sì! com’è cambiato il mondo dell’informatica. Io allora avevo appena iniziato con Unix (allora si scriveva UNIX) dopo un po’ di tempo con altri OS, allora ogni ditta aveva il suo, tranne IBM (uno per modello) e DEC (l’unico vero a sentir loro). Poi è arrivato Linux (GNU/Linux).

Dai, basta lollare, buon anniversario GNU 💥🎉💥🎉💥🎉

Ma c’è un’altra notizia importante, per lunedì 1° ottobre, qui a Torino. Ho rischiato di farmela sfuggire, per fortuna c’è l’amico Dario: Richard Stallman all’Università di Torino il 1 ottobre “Computing, Freedom and Privacy”. Uh, sempre sui temi di GNU. Nel tweet c’è il link a FSF (altra creatura di RMS) che vi dire tutto.

La realtà a volte non è come appare e gutta cavat lapidem &

Per esempio non so se conoscete Erik St. Martin; io l’ho scoperto adesso come effetto collaterale dell’acquisto di GitHub da parte di Microsoft. Fermi lì! Microsoft non è come pensate, non interamente, non tutta, per esempio cinguetta Erik (è il tweet che mi lo ha fatto conoscere):

Linux as my primary OS, haven’t touched Windows in 10+ years

Tutto qui. E c’è anche il suo blog, dove trovi:

Microsoft today is not the Microsoft it was 10-20 years ago

Sì ha ragione. Erik è come vorrei essere io, più giovane ma non solo, rockz 💥 assay 💥

Però io che sono vecchio ho una storia alle spalle e allora mi viene da pensare che Microsoft è responsabile di chi vede il ‘puter coincidente con Excel, per lavoro; per il resto c’è il telefono con Facebook.

Una volta, ben lontano nello scorso millennio, c’era IBM che –OOPS! dimenticato cosa faceva. C’era DEC, ottima per il Fortran ma c’era il VMS, voi giovani non potete capire, non mi ci provo a raccontarvelo.

E, nel mio piccolo, il Norton Commander. Qui una spiegazione, minima, è doverosa. Riguarda le direttive PP: il tuo programma doveva essere facilmente lanciabile da Norton. Quindi niente direcrtories (cartelle, allora si chiamavano dir, tranne per i macisti per i quali erano cartellette) perché sarebbero state elencate per prime obbligandoti a scrollare, output direttamente sulla stampante e, quando proprio necessario, sul dischetto A:, in 360 KB (pron. kappa) cosa vuoi che non ci stia. OK, acqua passata F10Y.

Chi altri? Per esempio il Basic forse il mondo non aveva tutti i torti, ero io a non capire. E l’OOP? adesso fa fine parlarne male. E i frames nelle pagine web? OK, quella volta ero nel giusto! E l’animazione flash nella home, anzi la home tutta in flash? Dimenticata. E Java e JavaScript? parliamone. E Haskell –no lì sono io a sbagliare tutto.

Tornando a Microsoft… Windows? beh, potrei mettermi seduto in riva al fiume (Po o basta la Chisola?) ma sapete ho una certa età, non so se… Ma in fondo who cares?

L’immagine lassù è un selfie di Erik, trovato qui.

Cambiare il prompt del terminale

Michele Mordenti

Una cosa nata per gioco e che poi si è dimostrata meno semplice del previsto. Colpa mia, certo. Adesso vi conto.

Domanda: si può cambiare al volo e ripetutamente il prompt del terminale?
Risposta non tanto corretta, anzi per nulla: certo, basta ridefinire la variabile d’ambiente PS1.

Ma non è vero. Cioè non funziona come vorrei. Esempio:

Il prompt $ era quello normale di Unix, roba dello scorso millennio.

Quindi dall’esempio sembra funzionare… nope!

Visto? il titolo del terminale resta sempre lo stesso, la path di quando si è cambiato il prompt.

In questi casi io ricorro a Stack Overflow ma questa volta non ha funzionato. Forse colpa mia, ma forse (io ne sono convinto) no.

Quando il gioco si fa duro … (inizio cit.) e questo è un pochino uno di quei casi.

La soluzione è semplice (quasi): vedere cosa fa ~/.bashrc. Ah! prima setta il prompt e poi il titolo della finestra, sempre modificando PS1. Non riporto le righe di ~/.bashrc perché le avevo già pasticciate e cercarle nel backup non ne sono capace (OK, a volte dico bugie, a fin di bene però) ma un po’ per tentativi sono arrivato a due aliases, _ps per il prompt (e titolo) standard e _pu per la versione Unix.

Uh! forse è il caso di scriverle:

alias _ps='export PS1="\[\e]0;\w\a\]* \[\033[01;31m\]\W\[\033[00m\] \$ "'
alias _pu='export PS1="\[\e]0;\w\a\]\[\033[01;31m\]\$ \[\033[00m\]"'

Quando un alias funziona si può memorizzare, di solito in ~/.bash_aliases, nel caso questo non esista si possono aggiungere in fondo a ~/.bashrc.

Da provare:

e, di seguito

OK. Con _ps torno alla versione normale (per me, taroccata anni fa e immessa in ~/.bashrc nella personalizzazione di ogni nuova versione.

e

OK, ma se chiudo il terminale e ne apro uno nuovo torno alle condizioni specificate in ~/.bashrc. Se c’è un modo per rendere permanente PS1 per la sessione non lo conosco. Ma in fondo  non è matura  who cares 😉

Ah! ‘ncora una cosa: il colore. Ne avevo parlato quando ero (più) giovane, qui dove trovate l’indicazione vera, questa.

Aggiornamento: qui un post esaustivo sui colori nel terminale 😋

👽

Nope: il 2018 non sarà l’anno di Linux per il desktop

C’è questo rilancio di Slashdot che ripete un mantra storico: Could 2018 Be The Year of the Linux Desktop?
Rimanda a un post lungo e articolato, questo: Why hasn’t The Year of the Linux Desktop happened yet?
E prima ancora le previsioni per l’anno che viene: Some predictions for 2018

Adesso non voglio fare paragoni che non hanno senso ma Christian non mi convince. C’è (o sono solo io) Windows che rockz! Orami sono tutti sul 10 che sembra buono (per loro).

Invece –parlo sempre per me– vedo gente che ormai fa tutto con il telefono, a parte qualcuno che usa il tablet. E lo usano anche per scrivere (certo, di meno).

Vivendo in campagna tra i contadini, non tutti aggiornati tecnologicamente (i seniors, sapete…), lo usano spesso a modo loro. Giorni fa ho assistito alla trasmissione orale di un numero di telefono: quando parli o ascolti non puoi digitare e allora devi scrivere, su carta, nel 2017!

Comunque ecco dove Linux (un derivato di _) ha vinto. Non sul ‘puter.

Ovviamente, secondo me, chissà se poi… 😋 perché il futuro sta seduto sulle ginocchia di FMS (sempre sia condito, RAmen) 😋

Ah! un calendario (ma volendo ce ne sono altri): non ci facciamo mancare nulla 😋

Ho altre due previsioni per il ’18 che vorrei rivelare:

  • un antico collaboratore (ciao Ron, non ci sentiamo da due mesi) dice che Trump si dimetterà o verrà dimesso entro maggio;
  • in base a considerazioni che non saprei rispiegare i contadini indigeni locali di qui si aspettano un anno con pochissima pioggia, per la coltura prevalente del mais sono da preventivare costi per l’irrigazione.

Ecco, quest’ultima previsione –no! non voglio sapere da dove viene– mi sembra la più attendibile.

🤩

Dot files

C’è qualcuno che sta sbagliando su Twitter, siwoti per usare un termine tecnico.

Ma forse (anzi molto probabilmente) sono solo io che non sono più in sintonia con il mondo, in particolar modo con quelli che abbandonano i blogs (davvero stanno morendo questa volta?) e quelli che sui social-cosi (Twitter, il mio preferito, quasi l’unico che frequento) postano cose –corrette, non sto dicendo che non lo sono– che possono essere male interpretate dai ggiovani o dai nuovi (o dai possibili) linuxiani.

Come questo post di mcc che ha avuto ben 1600 retweets e tanti commenti interessanti:

  • Remember not to fix the bug or you will erase 50 years of unix history
  • I recently learned that 1. in Windows there are “super-hidden” files, and 2. Explorer has a VERY SIMILAR bug with filenames starting with ~
  • To be fair, every feature in Windows 10 is actually just a bug in NT4
  • Just learned that : has the same functionality on NTFS (albeit for a completely different reason) [pro tip, CIA, Vault7]

Molto interessante la McClure (111), molte cose ontehtoobz, anche un interesse simile (top secret, per ora).

Tornando invece ai dotfiles un paio di cose.

Sono un argomento ricorrente, di solito si cita questo post di Rob Pike (l’ho fatto anch’io tanti anni fa, in questo blog) e Rob ne parla per via che Plan 9 si comporta diversamente. Ma Plan 9 non è diventato come nelle intenzioni dei suoi creatori il successore di Unix. Conosco chi l’ha usato per qualche tempo ma, mi sembra, solo perché doveva; adesso usa qualcosa ancora di peggio, ma non posso contarvi (cioè non ne so niente, nada, zilch). Sono sicuro che Linux non sarà il sistema operativo definitivo, qualcuno riuscirà –incredibile ma vero– a fare di meglio. Android e Quello_della_Mela_Morsicata sono solo prove preliminari, vedrete (voi ggiovani) 😉

Di solito è comodo che siano nascosti, ma nel gestore dei files (Nautilus, Nemo o equivalenti) posso visualizzarli/nasconderli con Ctrl-H.

Ancora meglio per il terminale, esiste l’opzione -a (o --all): non nasconde le voci che iniziano con punto (.).
Di solito è OK che stiano nascosti, per esempio la mia home sarebbe troppo lunga:

E poi c’è il motivo vero, la ragione di questo post. I blogs forse stanno morendo (si dice da tempo, magari questa volta è vero) ma per me non vale. Continuerò (probabimente) a scrivere, cose che interessano me e (quasi sicuramente) solo me. Per esempio linguaggi di programmazione sexy, anche se non usati (come Coconut, l’anno scorso). È il mio hobby preferito.

:mrgreen:

Cinguettii dal Linux Day

ld16

Niente, me lo sono perso. In attesa di video che certo attiveranno ecco una rassegna di tweets catturati con una punta di rimpianto 😀

Davvero ora di guarire, tornare pimpante per poter esserci l’anno prossimo, nèh! 😉

Alias o funzione o script?

codiceatlantico_0010
OK, io sono poco metodico e quando mi accorgo di continuare a usare frequentemente un comando sono tentato di creare un alias.
Poi capita che compare su Twitter una cosa che sapevo già, questa: For almost every purpose, shell functions are preferred over aliases.

Forse è il caso di approfondire, finalmente, sono decenni che rimando, ho cominciato con Unix, anzi prima ancora con il Pr1me, dove c’era abbrev, abbreviabile in ab. E gli script (chiamati command files) si potevano fare sia in Primos che in CPL (command process language) quando diventavano più impegnativi (potevi usare le variabili).

Rapida googlata ed ecco cosa ho trovato:

Quindi…
mi sa che non sono poi messo così male.
Attualmente ho definito qualche funzione (risultano tutte piuttosto lunghe) e ~20 aliases in ~/.bashrc. Ho poi ~40 scripts in ~/bin.
Per compiti particolari ho scripts sparsi in altre directories che posso aggiungere a PATH via una combinazione di un alias:

alias agpa='source ~/bin/ag_pa'

e  uno script (~/bin/ag_pa):

#!/bin/bash
export PS1="* \e[1;33m\W $ \e[m"
export PATH=$PWD:$PATH
echo $PATH

Ma il post non sarebbe completo se non lo personalizzassi.
La funzione di cui sono più orgoglioso l’ho raccontata qui: J una nuova utility vecchia di 30+ anni.

Da allora è un po’ cambiata, nuove opzioni. L’aggiornamento principale è per il caso di default:

*) cat ~/.Jd ;;

Oltre che spostarsi su e giù per le directories fa anche altre cose, per esempio

yt) xdg-open https://www.youtube.com/ ;;

apre un tab con YouTube nel browser.

Per gli scripts la situazione è più complessa. Sono un seguace da sempre di un lavoro fondamentale di John Ousterhout, Scripting: Higher Level Programming for the 21st Century, vecchio, dello scorso millennio addirittura, ma sempre attuale (secondo me) 😀

Più della metà degli script in ~/bin non sono scripts Bash bensì Python, Racket (1, copiato), newLISP (2, superstiti, una volta erano di più), altri Lisp (mezza dozzina), AWK, … Il meccanismo della shebang, la prima riga, quella che per Bash è #!/bin/bash è una cosa fantastica di quelle che mancano a Windows. Ecco Windows: per ragioni di compatiilità spesso uso Python al posto di Bash, sed, AWK, grep per averlo anche di là (con modifiche). Sono atipico? fregaca who cares! 😀

Ah gli aliases: sono molto comodi, per esempio

alias ipy='ipython3 --no-banner --no-confirm-exit'
alias roc='octave -q --no-gui'
alias rre='racket -il xrepl'

Ah! ‘na roba che non tutti sanno: come tutti (kwasy) ho

alias ls='ls --color=auto'

ma alle volte il colore può essere inappropriato; e allora:

no-al

Ah! ‘ncora na roba: certe operazioni si possono fare solo con le funzioni (o sono comunque molto più semplici). Per esempio cambiare directory (come in J) perché la funzione viene eseguita nell’ambiente  corrente mentre lo script ne crea uno nuovo che termina con la fine dello script. Tutto raccontato negli URL elencati.

:mrgreen:

L’ecosistema, Racket e un tutorial

Tin_Woodman
Un post che ho scritto e poi riscritto (stravolgendolo) in seguito a un colloquio con un ex-collega Mr.X che rockz 😀
Inizialmente c’era solo la parte Racket –una delle mie passioni– ma quando Mr.X ha letto la bozza mi ha indotto a cambiare qualcosa, adesso vi conto.

Ci sono cose belle (sexy) ma spesso capita di doverne usare altre perché si usano quelle; cioè dove lavori tutti usano quelle.
Mr.X parla in questo caso di ecosistema. E per lui l’ecosistema e Windows, sempre più 10 ma con ancora qualche 7. E per i linguaggi quelli ammessi sono pochissimi, in funzione del task, si potrebbe parlare di sub-ecosistema. Per esempio per il Web solo HTML, CSS, JavaScript. JavaScript (come NodeJs) potrebbe essere usato anche da se. Altrimenti Java. O il VisualBasic. Assolutamente niente altro, meno che mai Lisp, linguaggi funzionali di moda solo nei blog ma non nella pratica. Ah! niente Python, a meno che usi solo quello, ma non per il Web.
E siccome tutti usano Windows niente Linux.

Ovviamente non sono d’accordo ma riporto questa opinione, credo anzi di approfondire l’argomento in futuro.
Altrettanto ovviamente continuerò peraltro a occuparmi anche delle cose che i piacciono, anche –e specie se– sono fuori della lista delle cose approvate. Per esempio Coconut, Haskell (forse, in futuro) e Racket. Ecco ero partito con Racket, questo che segue.

prl
Twitter vi fornisce consigli e suggerimenti che voi non tweeps non potete minimamente immaginare. Tutto sta nella scelta a chi followare e poi la magia segue, gratis 😀

Comincio dal suggerimento più semplice (e fondamentale): il blog Inside PRL è da seguire. Obbligatorio (se volete, nèh!). Forse non tutti sanno che PRL sta per Programming Research Laboratory e fa parte del College of Computer and Information Science della Northeastern University, quella di Racket, nella città più sexy del Universo.

Nel blog –c’è altro ma devo ancora perlustrare– c’è questo Tutorial: Zero to Sixty in Racket. È per via di questo post che ho scoperto il blog, via questo cinguettio.
Uh! a proposito di @racketlang per me ha 17 Followers you know (su un totale di 220 (circa, numero soggetto a variazioni come il meteo).

OK, vengo al post di Ben Greenman: Racket is excellent for incrementally growing scripts into full-fledged programs. This post steps through the evolution of one small program and highlights the Racket tools that enable incremental advances… E continua, mica posso copiare tutto 😳

Il compito che si pone è un indice KWIC (se non sapete cos’è un motivo in più per andarci, e protrete dire TIL KWIC), roba che secondo la letteratura richiede parecchio tempo (e poi ci sarebbe la Legge di Hofstadter che Ben colpevolmente non cita) ma c’è anche Yannis e –OK, 20 minuti dice Ben.

Siccome Ben è OK da per scontato che l’aspirante racketeer usi l’ambiente integrato, Dr Racket, manco sta a ricordarvelo. Io di solito uso la REPL, quella di una volta, mi sono pure fatto l’alias, alias rre='racket -il xrepl' ma solo perché sono vecchio (però non tanto vecchio da rientrare nella classe “non puoi insegnare un gioco nuovo a un cane vecchio”, nèh!), ma in questo cas è OK.

Nel codice trovate subito un’altra nerdata: λ invece di scrivere lambda. Il codice Unicode di λ è 03BB, per ottenerlo con Linux si sua Ctrl-Maiusc-U, compare una u sottolineata e si scrive il codice voluto. Con Windows chissà… (googlate). Ma potete benissimo scrivere lambda, come facevano i nostri vecchi (e me).

Poi basta seguire Ben, rockz! 😀 Costruisce le funzioni che gli servono, spiegando quello che fa, visualizza il codice completo dello script, 79 righe compresi i commenti. Eseguendolo (tasto run) si ottiene test.txt ma è solo il primo passo.

Ben crea un submodule, lo esegue con raco, passa alla versione typed, aggiunge l’interfaccia per la command-line e testa il tutto. E continuerà –promette– con la documentazione e la creazione del package per condividerlo (shararlo).

I tempi? forse Ben è un po’ troppo ottimista c’è la legge di Hofstadter, io non sono così smart) ma OK: Racket & Ben rockzs 😀
Io sono occupato con cose promesse da finire ma il blog l’ho RSSato subito.

:mrgreen:

Una risposta & una domanda

woz

Una risposta a Jilla, forse se lo saranno chiesto anche altri: Coconut è nuovo ma promette bene. E l’uso che immediatamente viene in mente è quello di creare moduli con dentro le costanti e le funzioni che si intende usare, visto che permette di scrivere chiaramente e sinteticamente cose che con Python sono meno immediate, p.es. case.
Ecco un esempio (banalissimo, certamente nessuno scriverebbe cose così per davvero) di quali sono le mie intenzioni.

Il modulo coco_module.coco:

risposta = 42

def ciao(nome):
    print("Ehi", nome, "ciao!")

def doppio(n):
    return 2 * n

Che compilo ottenendo il modulo Python

r0

Non importa che coco_module.py sia lungo 298 righe, non devo editarlo, solo usarlo, nello script uso_c_m.py:

from coco_module import *

ciao("Juhan")
print(risposta, doppio(doppio(doppio(risposta))))

r1

Ovviamente –come già detto– quando il gioco si fa duro (inizio-cit.).

OK, lo ammetto: Coconut mi piace per i suoi aspetti funzionali che adesso pare siano trendyassay, quasi fossero pokémons. Forse perché contemporaneamente sto vedendo quell’altro linguaggio, di cui al momento non ricordo il nome, molto più tradizionale (nato come alternativa semplice del Fortran).


Siccome ho risposto, spero esaurientemente, alla domanda fattami ne avrei una anch’io (me). Chissà se…
Viene da un tweet, Why Linux sucks and will never compete with Windows or OSX.

Non so chi l’ha retwittato ma ho voluto vedere cos’è che non va con Linux.
Inizialmente ho classificato non tanto bene il post, l’autore del post, il titolare del blog, il retwittatore &co. poi però –in modo non esattamente razionale– ci ho rimuginato su. Non ho capito se l’autore sta lollando o cosa. Non ho capito cosa non gli va di Linux, sa usarlo, lo usa da tempo. Viene anche il dubbio che sia al servizio di NWO o Bilderberg o anche peggio (M$).

Sperando di non fargli pubblicità (segue 3 ed è seguito da 4 ma ha un blog) la mia domanda è: che dire del tipo e del tipo che ha linkato?

:mrgreen:

Certe cose non si possono fare

CZw-KD5WEAIW0AD

Ci sono cose che con Windows si possono fare, cose che ho fatto anch’io, quando ero giovane, ne parlo qui.
Ma se poi si passa a un Sistema Operativo serio diverso si deve essere disposti a cambiare qualcosa.

Lo so che mi sto ripetendo a distanza di meno di due settimane ma metti che capita come recentemente che qualcuno twitta, magari a sua insaputa (cit.), una soluzione migliore della mia. Sarebbe über-bellissimissimo 😀
Se invece questo non dovesse succedere (non è che ci spero davvero) ho comunque fatto vedere che ce l’ho messa tutta a fare tutto quello che sapevo fare 😳
Un solo avvertimento: l’esempio è minimale, il caso reale è molto più complesso, ma credo sia sufficiente a illustrare il problema.

Posso eseguire un eseguibile da penna o disco USB?

Con Windows si può:

Cattura

come si vede i 2 scripts (batches nel mondo DOS|Windows) vengono eseguiti correttamente.

Ecco e.bat:

@echo ciao!
@echo sono  nella cartella %cd%
@echo e sono il file %0%

e la variante f.bat:

@echo off
echo ciao!
echo sono  nella cartella %cd%
echo e sono il file %0%

Li ho costruiti con notevole difficoltà 😦 e.bat l’ho scritto con Gedit su Linux e –naturalmente– ho dimenticato che l’a-capo cambia per Windows. Avevo anche dimenticato di iniziare i comandi con @ per sopprimere l’echo, prima di ricordarmi di @echo off; ma a questo punto mica potevo distruggere quanto costruito con grande fatica! 😉

OK, funziona tutto, come previsto, come da sempre.
Resta da fare la versione Linux (in particolare Ubuntu ma non è influente). Io ci provo, ecco e.sh:

#!/bin/bash

echo ciao!
echo sono $0 in $PWD

che eseguo:

lx

Uhmmm… problemi 😦
Se lo lancio come bash e.sh funziona ma se lo lancio nel modo normale no. E non è questione di permessi. Per uno script interpretato non c’è problema ma per un compilato non c’è speranza. Secondo me, se poi qualcuno mi smentisce ben contento, anzi grazie mille anticipate.

Proposta, vecchia, scontata, lo so che mi ripeto: spostare l’eseguibile in /tmp, è apposta per le cose temporanee:

lx1

Devo riabilitarlo ma non dovrebbe essere un problema. E pensa te che io sono talmente abituato alla ditectory temporanea tmp che ne ho una perso, tutta mia:

tmp

Ma forse la questione è un’altra: cambiando OS devo adeguarmi a qualche nuova convenzione. Oltretutto questa è ampiamente giustificata per motivi di sicurezza.

:mrgreen: