martedì 30 luglio 2013

Brevi Esercizi: Facciamoci un Alias!

Oggi riparte la rubrica "Brevi esercizi". Dato che è da molto che non ci scrivo, vi ricordo, in breve, in cosa consiste o il motivo per cui è nata. Sì, parlo di motivo perchè è stato tradito sin dai primi post. In questo spazio si doveva "parlare" di argomenti semplici afferenti a bash, awk, python, amministrazione di sistema linux, ma alla fine mi sono lasciato prendere un po' la mano ed è successo quasi l'irreparabile: script in awk, in bash, in python...ok, cerchiamo di ritornare allo scopo originario per cui la rubrica è nata: Cose semplici (semplici). Oggi parliamo di...Alias!

Cos'è un alias? L'alias, spesso, è la manna piovuta dal cielo, è una benedizione. In pratica, è la possibilità di rinominare un comando, una riga di comando, uno script con una semplice parolina.

Per un attimo, solo per un attimo, passo la parola a wikipedia: "Alias, nei sistemi operativi Unix e Unix-like, è un comando di shell che permette di definire altri comandi." Chiaro?

Facciamo un esempio. Pensate di dover aggiornare Lubit (vabbè, mi capite, vero?), in tal caso si danno da terminale i soliti comandi. Prima sudo apt-get update, poi sudo apt-get upgrade.

Bello sarebbe poter sostituire queste due righe di comando con la semplice parolina "aggiorna". Sarebbe una figata, vero? (Giuro, mai usata la parola figata in vita mia)

Bene, "si po' fa'!"

Basta definire un alias, che nel nostra caso sarebbe:

alias aggiorna="sudo apt-get update && sudo apt-get upgrade -y"

Perchè l'alias definito funzioni, è necessario eseguirlo nel terminale.

Una volta lanciato l'alias, basta digitare la parola "aggiorna" (senza doppi apici), per eseguire la riga di comando corrispondente, cioè aggiornare.

Qual è l'inconveniente di un alias così definito? Che se chiudo il terminale e lo riapro, l'alias non funziona più, scompare.

Per ovviare, bisogna salvare l'alias creato. E dove? In genere viene indicato il file .bashrc. Vabbè, io non sono molto d'accordo, il .bashrc è già incasinato di suo.
Se poi leggete attentamente il suo contenuto, troverete dentro una bella sorpresa. Vabbè, ve la svelo subito, immediatamente. All'interno di .bashrc si trova qualcosa del genere:

if [ -f ~/.bash_aliases ]; then
    . ~/.bash_aliases
fi


Sapete che vuol dire? Vuol dire che il nostro .bashrc controlla se esiste il file .bash_aliases. Se esiste, lo abilita, lo riconosce.

Perciò, il mio consiglio, solo per una questione di ordine, è di creare il file .bash_aliases, in modo da poter scrivere dentro tutti gli alias che volete. È inutile dirvi che il file va creato nella vostra home. Vabbè, non ve lo dico.

$ touch ~/.bash_aliases

Oltre all'alias "aggiorna" possiamo crearne altri, ad esempio, per riavviare, spegnere o sloggarsi.

#per spegnere: spegni
alias spegni="sudo shutdown -h now"

#Per riavviare: riavvia
alias riavvia="sudo shutdown -r now"

#per il logout (nel caso di lubit): logout
alias logout="openbox --exit"

Alla prossima!

Ah, vi ricordo che l'indice della rubrica "Brevi Esercizi" lo potete trovare qui.

Per finire, quasi in esclusiva, l'ho già postata su facebook e twitter, ecco come si presenterà Lubit 2.0.5. Forse.


Ciao!

venerdì 26 luglio 2013

Plop Boot Manager: effettuare l'avvio da USB anche se il BIOS non lo supporta - Parte 4

Un paio di sere fa, non so se per eccessiva sicurezza o distrazione, ho formattato per errore una delle partizioni di Romeo, il principale dei miei computer. Era quella su cui era installato il sistema operativo primario, una Lubuntu 10.4 spogliata e rivestita grazie alla sapienza di Bit3Lux, sulla quale giravano due macchine virtuali, la prima con Lubit 1.0.6 e la seconda con Lubit2, Beta4. Dopo un primo momento di sconforto mi sono detto che in fondo era stato il fato a decidere, perché se fosse stato per me non avrei mai avuto il coraggio di eliminare quel piccolo gioiello. Così ho deciso di ripartire installando due distribuzioni Lubit, ciascuna in una propria partizione, mantenendone due di scambio in NTFS, oltre a quella di swap. Tutto bene, ma avevo a disposizione un solo DVD e il bios di Romeo non era in grado di avviare da USB. Inutile tentare di fargli capire che "In tutti i più moderni computer è possibile avviare il computer da USB, grazie ad un'impostazione del BIOS che consente di farlo. I vantaggi dell'avvio da USB per installare, ad esempio, un nuovo sistema operativo sono principalmente legati alla velocità in lettura e scrittura di una penna USB che risultano essere migliori rispetto a quello che può offrire su CD."
La ASUS di Romeo era nata vecchia...
Così mi son detto che era giunto il momento di mettere alla prova l'ultima release di Plop Boot Manager, che non avevo ancora avuto modo di testare. E magari di farne un post per il nostro blog...

Ho iniziato scaricando da

qui 

l'archivio compresso plpbt-5.0.15-test.zip, che contiene la versione 5.0.15 test di Plop, di cui trovate un breve cenno alla fine della

terza parte 

del lungo post dedicato a Plop Boot Manager, quello nel quale vengono illustrate le modalità di utilizzo della 5.0.14 per la modifica del boot di sistema, prima in Linux, poi su Windows.

Una volta scompattato l'archivio, ed estratte le cartelle, ho creato un DVD contenente l'immagine del file plpbtin.iso, quello che trovate nella cartella «install»




Fatto questo sono passato all'installazione.

Ho inserito la penna USB in una porta di Romeo (attenzione ad utilizzare una di quelle direttamente collegate alla mother board)


ho predisposto il file immagine di Plop nel lettore DVD


ed ho effettuato il riavvio.

E senza bisogno di intervenire sul GRUB o sui registri di Windows, ecco il risultato


Alla prossima di Topo Squit

mercoledì 24 luglio 2013

Costruire giochi con Python


Il bello del Web è che dentro ci trovi tante cose, anche tante di quelle che dovresti|vorresti fare te ma ti manca il tempo e a volte anche la capacità. E sono lì, da usare, copiare, modificare, fare quello che si vuole e l'autore di questa roba è contento che si faccia. È buona norma ringraziarlo ogni tanto.

Per esempio come si fa a fare un gioco? È difficile o si può fare? E che linguaggi bisogna usare?
Ecco oggi vi rispondo a tutte queste domande. Anzi, vi presento Trevor Appleton, vi racconta tutto lui. È didascalico, preciso, quasi pistino (insomma come vorrei essere io). E vi da il codice, i link alle librerie che servono, tutto quello che serve.

Poi se navigate il suo blog trovate altri esempi, con grafica e senza (io sono più per gli algoritmi come avrete visto, sono vecchio). E lo trovate anche su G+ (click su About Me).

Insomma partite da qui: Python - Game of Life.


E non dimenticate di dire grazie a Trevor.

martedì 23 luglio 2013

Minoranze etniche, discriminazioni & consigli

Fare previsioni è difficile, specie per il futuro (cit.), ma una cosa che prima o poi capita, di sicuro, è un crash del disco. Anzi di uno o più dischi. Il back-up esiste per questo, e ogni tanto lo faccio anch'io.
Così l'altro giorno ho acquistato un hard-disk esterno, 500 GB che ormai è la capacità minima e sullo stesso ho copiato i mie dati, quelli che reputo importanti.
Poi ho verificato cosa avevo dimenticato, fatto le aggiunte del caso, tutto OK.
Poi ho provato a vedere se riuscivo a recuperare i dati, sembra di sì.
OK, staccato e messo in un posto sicuro, non troppo vicino al 'puter, metti che un fulmine o un incendio o un'inondazione o, ... OK.

Oggi, cercando altro, ho trovato il PDF che era nel disco e ho copiato in ~/cose-da-vedere-non-troppo-urgenti-ma-da-fare-quasi-subito. Toh! già che ci sono diamogli una scorsa, chissà se...

Quando si dice la professionalità: istruzioni in 22 lingue! Bene vuol dire che in italiano sono meno di 10 pagine, si possono leggere. E qui cominciano le perplessità, ecco cosa ho trovato:


ahemmm... veramente io uso Linux, e sarò retrocompatibile?


ahemmm
... il back-up lo faccio su questo disco.


ahemmm
... è la prima cosa che ho fatto, sai con quella di Windoze® i caratteri maiuscoli e minuscoli sono considerati uguali anche se sono diversi.

Sono così giunto a questo paragrafo:


A questo punto, come devo sentirmi? Perpluto? Ve lo dirò al primo crash.

venerdì 19 luglio 2013

Python, Unicode e Windows 7 & 8

 Come promesso in questo post ieri ho provato a vedere come si comporta Windows con i caratteri Unicode. Naturalmente sto parlando del Terminale, quello che per loro è il Prompt dei comandi, anche se adesso è conosciuto (molto poco in verità) con altri nomi.

Vengo subito alla conclusione: non è cambiato niente!
Ho (con l'aiuto di Alberto e Roberto (sì lì distribuiscono le persone negli uffici rispettando le rime)) ho rilanciato gli script del post precedente, con gli stessi risultati. Non credo sia necessario mettere tutti gli screenshots, basta un assaggino:


Niente da fare: il terminale non supporta l'Unicode. Ma c'è di peggio, per trovarlo con Windows 8 (nessuno di noi tre è un utente di questa versione) abbiamo dovuto sudare parecchio.
Il fatto è che gli utenti Windows sovente manco lo conoscono. Windows è in uso da sempre per loro, tranne casi particolari non hanno mai avuto a che fare con comandi DOS.
Inoltre, a differenza degli smanettoni di Linux, sono specializzati: conoscono pochi programmi, ci sono quelli che identificano il computer con AutoCAD, quelli di Word-Excel, quelli di PowerPoint e altre classi, anche più specializzate.
In particolare a me stupisce l'uso di Excel come database, con file enormi e collegamenti tra celle e fogli da paura, come si fa a controllare che siano tutti corretti? E dentro ci metti anche le immagini e poi non puoi trasferire il tuo file su un altro computer perché non vede i vari pezzi.
Ci sarebbero poi quelli che confondono Facebook con Internet (o con il computer) ma non sto parlando di loro.

Allora, domanda: come devo comportarmi con gli utenti Windows? Python (anche se parecchi non lo sanno) funziona benissimo con Windows e nel caso in esame era sufficiente aggiungere un istruzione, questa decode('utf8') che ho rintracciato sul Web con una semplice googlata.
Oggi la programmazione viene svolta con IDE che la rendono molto più semplice, pensate a Visual Studio o Delphi sempre per Windows, ma questo non vale per gli script di esempio che devono essere piccoli per renderne facile la comprensione.

Panico! Attendo suggerimenti.

giovedì 18 luglio 2013

Lubit Linux - Integrazione programmi nel menù di Openbox tramite Obmenu

Lo stupore che accompagna coloro che per la prima volta si affacciano a Lubit è la mancanza assoluta di icone o barre di menù.
Non appare alcuna finestra per l'esecuzione dei programmi, l'unica opzione possibile è il pulsante destro del mouse, al cui click corrisponde l'apertura delle diverse voci di menù.
Nel corso di questi primi mesi molti lettori hanno manifestato dubbi e incertezze circa l'integrazione dei programmi installati nel menu di openbox.
Al fine di chiarire tali perplessità, e di fornire un ragionevole supporto, abbiamo predisposto due videoclip che illustrano come giungere ad integrare nuovi programmi nel menù di Openbox tramite Obmenu.

Nella prima clip viene mostrata l'installazione di Gimp - GNU Image Manipulation Program - un software libero per la creazione e la modifica di immagini digitali e l'utilizzo di Obmenu.



Nella seconda si passa ad illustrare l'installazione in Lubit di Gnumeric, foglio elettronico di calcolo, e il suo inserimento nel gruppo programmi Office.



Alla prossima!

martedì 16 luglio 2013

Python, Unicode e Windows XP

 Leggendo i commenti ai post di Mission Python (meglio tardi che mai) mi sono accorto che devo delle scuse all'amico B. che si lamentava del fatto che i miei script non funzionavano.
Il fatto è che io uso Linux, per queste cose mooolto meglio di Windows; OK, anche per quasi tutto il resto. Oltretutto è da considerare che XP è piuttosto vecchio (tra un po' Micro$oft cessa di supportarlo, niente più aggiornamenti). Pare però che sia la versione migliore di sempre e sia ancora molto usato, anche se per quel che ne so c'è una consistente migrazione verso 7 (in ambito professionale).
In ogni caso mi sembra doveroso dire qualcosa sull'Unicode, cioè le lettere accentate con Python 2.x, quello normale.

1
2
3
4
# -*- coding: UTF-8 -*-

st = "Ecco gli accenti: àèéìòùç€"
print st


OPS! non funziona, skifetse!
Vediamo cosa si può fare:

1
2
3
4
5
# -*- coding: UTF-8 -*-

st = u"Ecco gli accenti: àèéìòùç"
print st



OK, sembra andare, ma vediamo cosa succede con il simbolo dell'euro €:

1
2
3
4
# -*- coding: UTF-8 -*-

st = u"Ecco l'euro: €"
print st 


No! non funziona.
C'è un'altra possibile via da seguire, proviamo:

1
2
3
4
5
6
7
# -*- coding: UTF-8 -*-

st = "Ecco gli accenti: àèéìòùç"
print st

ust = st.decode('utf8')
print ust 


OK, chissà se...

1
2
3
4
5
6
7
# -*- coding: UTF-8 -*-

st = "Chissà se...: €"
print st

ust = st.decode('utf8')
print ust 


No! niente euri per Python 2!

Resta da vedere il comportamento con i file (di testo, quelli che con Linux si chiamano stream). Possiamo scriverne uno, verificare e, se va bene leggerlo e visualizzarlo.
Scrittura del file:

1
2
3
4
5
6
7
8
9
# -*- coding: UTF-8 -*-

txt = "Adesso provo a scrivere il file testo.txt\n" + \
       "che contine caratteri non-ASCII\n" + \
       "Ecco gli accenti: àèéìòùç"

f = open('testo.txt', 'w')
f.write(txt)
f.close()

Funziona, apritelo per verificare. naturalmente se lo fate con quella schifezza di Blocco note vedrete, ovviamente, skifetse! Usate, credo di averlo già detto, un editor decente.

Adesso che abbiamo un file con caratteri bizzosi possiamo provare a leggerlo:

1
2
3
4
5
6
7
8
# -*- coding: UTF-8 -*-

f = open('testo.txt', 'r')
txt = f.read()
f.close()

utxt = txt.decode('utf8')
print utxt


OK? mission XP done, adesso se nessuno fa le prove con 7 le farò io, prossimamente, devo accedere a una macchina con quella skif versione del sitema operativo sopra.

lunedì 15 luglio 2013

Mission Python - OPS! cont?

L'amico Bit3Lux, titolare del blog mi fa notare che non rispondo ai commenti dei nostri lettori. Ha ragione, colpa mia, tutta.

Anche se a dire il vero volendo potrei tirare in ballo diverse concause:
  • una congiunzione astrale sfavorevole, per di più in concomitanza con un attacco woodoo;
  • dimenticato di rifare l'RSS ai commenti, colpa di Google che ha chiuso G-Reader;
  • troppe cose da fare, la memoria non è più quella di una volta e fa caldo.
OK, sono scuse, mica pensate che possa dire una cosa così.
Anzi rilancio: visto che il corso è seguito (si vede anche dal numero delle visite) si può continuare. Io ne sarei felice.

Facciamo che commentate chiedendo quali argomenti volete siano trattati e, nel limite del possibile e tenendo conto non solo delle mie capacità ma anche delle condizioni astrali, sarete accontentati. Forse.

Per intanto, per dimostrarvi la mia buona fede e volontà rispondo a un paio di domande inevase.

Python e l'Unicode.
È importante inserire il metacommento # -*- coding: UTF-8 -*- che consente per Python 2 (che continua a essere di gran lunga il più usato) di visualizzare correttamente i caratteri non 'mericani come le lettere accentate. Naturalmente questo non succede nella versione interattiva e in Idle. Ma se provate con print vedete che funziona.
Il metacommento deve essere la prima o la seconda riga dello script, e cominciare in prima colonna, niente spazi iniziali.
Per chi usa Linux, Mac e Unix (c'è ancora qualcuno? se me lo dice vengo a trovarlo, con un regalo) la prima riga dovrebbe essere la shebang: #!/usr/bin/python che verrà spiegata immediatamente rispondendo alla seconda domanda.

Cos'è chmod?
Per Linux, e suo papà Unix, è possibile rendere qualsiasi script eseguibile, come se fosse un .bat di Windows. Per fare questo sono necessarie 2 condizioni:
  • la prima riga dev'essere la shebang, per Python è (molto probabilmente questa): #!/usr/bin/python
  • lo script dev'essere reso eseguibile, con il comando chmod.
Il comando chmod è più ricco di quello che usiamo di solito come potete verificare con man chmod nel terminale. Di solito si una la scorciatoia chmod +x nome-dello-script.
Per scrivere la shebang, cioè per sapere dove si trova l'interprete  che eseguirà lo script esiste il comando whereis:


Intanto ho chiesto per Ruby perché con Python verrebbe troppo lungo (ho diverse versioni e estensioni installate, situazione complicata si direbbe su Facebook). Come vedete dallo screenshot la prima path è /usr/bin/ruby che è quella buona.
Esiste anche un'alternativa, più portabile (chi ha detto BSD?): non cercare l'eseguibile con whereis ma usare env. In questo caso la shebang diventa #!/usr/bin/env python che funziona anche con Linux, anzi probabilmente l'ho usata anche negli esempi riportati.

Tutto questo naturalmente non vale per Windows. In questo caso conviene creare un file .bat con il solito editor di testo (Ntepad o un'alternativa migliore). Il file è sufficiente che contenga una sola riga; supponendo che lo script da eseguire si chiami esempio.py la riga in questione sarà: @python esempio.py %*

Compilando questo post mi sono accorto che con Windows ci sono effettivamente dei piccoli problemi, preso un post tutto per l'Unicode.

Intanto ecco il file esempio.py che ho usato e i due screenshot del terminale di Windows (chiamato Prompt dei comandi):

Esecuzione invocando Python

 

Esecuzione con il file esempio.bat


Questo è il file esempio.py


 1
 2
 3
 4
 5
 6
 7
 8
 9
10
# -*- coding: UTF-8 -*-

import sys

st = u"Ecco questo è l'esempio!"
print st
num_args = len(sys.argv)
for c in range(num_args):
 print c, sys.argv[c]
print "*"

Inoltre: sì se uno fa doppio click sul nome del file Python dentro Explorer (Esplora risorse) lo script viene eseguito di nascosto, prossimamente un post anche su questo.

venerdì 12 luglio 2013

Python - Ancora libri da scaricare


Mike Driscoll, il titolare del blog Mouse vs Python posta poco ma sempre roba utile. Oggi per esempio segnala un elenco di libri da scaricare gratuitamente. In inglese ovvio, ma tanto prima o poi ...

OK, trovate tutto qui: Free books (and other free resources) about Python

Grande Mike, grazie Mike!

lunedì 8 luglio 2013

Come si presenterà Lubit 2.0

Salve!

Lo sviluppo di Lubit 2.0 è iniziato già da un mese. Molte cose sono cambiate rispetto alla versione 1.0.6.

Il caro Squit la sta già provando in VM e, proprio stamattina, ne ha realizzato un video, un piccolo assaggio.

Io invece la tengo installata su tutte le mie macchine e la uso già per lavorarci. Infatti è una distro abbastanza stabile, pur essendo ancora in beta.

Ancora vanno sistemate e riviste tante cose...vabbè, per il momento guardatevi il video, sulle modifiche fatte e da fare ci ritorneremo...




Alla prossima!