You are currently browsing the category archive for the ‘Programmazione’ category.

Vi sarà capitato di voler eseguire uno script Python, ma anche di altro tipo, all’avvio della vostra Raspberry Pi quindi scrivo questo breve how-to in modo da tenerne traccia. Possiamo farlo in diversi modi, ma quello che mi viene più facile da usare e da controllare è utilizzando i job di Cron, il nostro job scheduler personale che troviamo pratiucamente su ogni tipo di installazione *nix based.

Step 1 – Creare lo script

Prima di tutto abbiamo bisogno del nostro script, lo possiamo creare da linea di comando o con il nostro editor preferito, l’importante è sapere esattamente come si chiama e dove si trova sul nostro disco, nel mio caso lo script è scriptEsempio.py e lo salverò nella cartella “/home/pi/script/”, ma sentitevi liberi di chiamare la cartella e lo script come vi pare.

Prima di continuare vi consiglio di verificare che lo script funzioni correttamente, quindi eseguitelo, debuggatelo e che il path scelto sia corretto.

Step 2 – Aggiungere un nuovo job in Cron

Per aggiungere un nuovo job di Cron bisogna modificare il nostro crontab che contiene l’elenco completo dei job creati fino ad ora. Per editarlo aprite una finestra di Terminale ed eseguite:

sudo crontab -e

Ogni utente ha il suo crontab, ma nel nostro caso vogliamo editare quello di sistema quindi usiamo sudo, come mostrato di seguito:

terminal1

Attenzione il crontab si apre con il vostro editor di default quindi nel mio caso vi, se non vi piace potete cambiarlo con quello che usate di solito, in rete trovate sicuramente come fare.
Per spostarvi quindi usate le frecce sulla vostra tastiera e aggiungete la riga:

@reboot python /home/pi/script/scriptEsempio.py &

Come noterete questa stringa è diversa dal formato che usate di solito quando inserite un job, in questo caso diciamo al sistema che ad ogni boot del sistema vogliamo che venga lanciato il nostro script, in questo caso in python, prorprio come se lo stessimo lanciando noi da riga di comando. Il carattere & finale dice a Cron che lo script deve essere eseguito in background e che quindi non deve bloccare la sequenza di avvio.

Dovrebbe essere qualcosa di simile, l’ultima riga è quella che ci interessa il resto lasciate perdere è altra roba che gira:

terminal2

Salvate il tutto, usando i comandi specifici del vostro editor ed uscite. Ora dovreste essere ritornati al prompt dei comandi.

Step 3 – Testing

Per testare il tutto potete provare a riavviare il vostro sistema, quindi inserite:

sudo reboot

Quando ripartirà il vostro sistema dovrebbe lanciare lo script, dipende tutto da cosa fa, ma se il vostro script deve girare sempre e volete controllare se sta girando vi basta eseguire sempre in una finestra di terminale:

ps aux | grep /home/pi/script/scriptEsempio.py

Se il vostro script sta girando verrà fuori qualcosa del tipo:

root 1472 0.0 1.0 35019 4012 ? Sl 23:15 0:00 python /home/pi/script/scriptEsempio.py

Complimenti, ci siete riusciti!
Come al solito se avete i problemi i commenti sono qui per questo e se avete aggiunte e migliorie fatemi sapere.

Annunci

intel-galileoE’ tanto che non scrivo sul blog ma ultimamente però sono riuscito ad organizzarmi e dare un po di spazio a quelle che sono le mie passioni. Qualche giorno fa ho ordinato da Mouser un po di schede tra cui una Intel Galileo, cosa è una Galileo? E’ vero che la lista dei modelli Arduino cresce “giornalmente” e che non riuscite a stargli dietro ma la Galileo è una delle migliori mai sfornate a mio parere. Con un processore Quark SoC X1000 – a 32-bit, x86 system-on-a-chip che gira a più di 400MHz con 512 kB di SRAM.

L’hanno presentata alla Maker Faire di Roma qualche mese fà dove ovviamente ero presente e dove puntualmente non ne ho vinto una, quindi l’ho comprata ;). Intel ha sviluppato questa board in collaborazione con Arduino, proprio per fornire un ambiente di sviluppo intuitivo e potente permettendo agli appassionati di sfruttare non solo la conoscenza acquisita in tutti questi anni, ma anche il popolare ambiente di sviluppo di Arduino, gli innumerevoli tutorial presenti sul web, le librerie e la possibilità di usare tutti, o quasi, gli shield sviluppati per Arduino.

Intel Galileo Front Side

Intel Galileo Front Side

Intel Galileo Back Side

Intel Galileo Back Side

L’altro aspetto positivo è che oltre ad Arduino, sulla Galileo, abbiamo a disposizione anche GNU/Linux a cui possiamo accedere dagli sketch, direttamente attraverso una seriale o la rete, usando quindi Python, SSH, Node.js, OpenCV e tutto quello che vi viene in mente.

A differenza dell’Arduino DUE sulla Galileo è presente un jumper per scegliere la tensione operativa della board, in modo da poter supportare, a scelta, entrambi gli standard a 3,3V o a 5V. Di seguito uno schema a blocchi:

IntelGalileoLogicSchematics

Intel in questa board mette tutta la potenza e l’efficienza delle sue CPU anche se il primo utilizzo e i passaggi da compiere non sono così semplici, per questo ho deciso di scrivere questa guida, che dite iniziamo?

Il primo passo è quello di scartare, aprire, osservare cosa c’è nella scatola e immaginare cosa potreste farci, ma per quello non penso vi serva una guida, mentre lo fate però iniziate a scaricare quello che vi serve. Sul sito di Intel trovate tutto il necessario, la prima cosa di cui abbiamo bisogno è l’IDE che sfortunatamente non è quello standard che usate di solito per i vostri esperimenti con Arduino , ma una versione specifica per la Galileo visto che l’architettura è differente e molte cose la separano dalle altre board. Tutto il software pesa meno di 100 MB ed è disponibile per GNU/Linux (32 o 64-bit), Mac OS X e Windows. Per installarlo dovete decomprimere il file appena scaricato e per:

  • GNU/Linux – dovreste eliminare modemmanager se lo avete installato e decomprimere il file nella vostra /home
  • MacOSX – copiare l’applicazione nella cartella dei programmi e rinominarla, senza spazi nel nome,  se volete farla coesistere con qualche altra versione di Arduino già installata sulla macchina
  • Windows – salvate tutto in C:\ o dove preferite, ma evitate percorsi lunghi e cartelle con spazi

Il passaggio successivo è quello di installare i driver, non ho provato quello per Windows, ma per gli altri sistemi sono semplici, sia Mac OS X che GNU/Linux.

ATTENZIONE!!! Prima di connettere qualsiasi cavo USB alla Galileo assicuratevi di averla connessa al suo alimentatore da 5V e non fatevi ingannare dalla forma non infilate alimentatori che eroghino tensioni diverse, 6-9-12 V, sennò rischiate di bruciare tutto.

  • GNU/Linux – dopo aver alimentato, aspettato e connesso il cavo USB aprite un terminale e digitate ls /dev/ttyACM dovrebbe apparirvi una porta, segnatevela vi servirà dopo.
  • Mac OS X – Connettete l’alimentatore aspettate che la scheda sia partita e poi inserite il cavo USB nella porta marcata come USB Client, la scheda dovrebbe essere riconosciuta, per sincerarvene guardate  nelle info di sistema sotto USB, troverete qualcosa tipo “Gadget Serial v2.x”, fatto!
  • Windows – come per le altre connettete dopo aver alimentato la scheda, connettete il cavo USB ma con grande sorpresa tenterà di installare i driver fallendo miseramente, quindi dovrete andare in Pannello di Controllo > Sistema > Gestione Hardware e sotto Altre Periferiche dovreste trovare “Gadget Serial v2.x”, cliccate con il tasto destro e poi Aggiorna Driver, nella schermata successiva cliccate su sfoglia fino alla cartella dove avete decompresso l’IDE, poi  hardware\arduino\x86\tools, e poi avanti, avanti e cosa vi chiede di solito quando installate un programa. Appuntatevi la porta COM che viene assegnata alla scheda.

info-galileo-mac

Ora che i driver sono installati, la prima cosa che proveremo a fare è aggiornare il firmware per mettere su il software più aggiornato possibile e verificare che tutto funzioni correttamente.

Riavviamo la bord quindi stacchiamo il cavo USB, poi l’alimentatore ed in fine la scheda SD, se ne avete messo dentro una a questo punto rimettiamo l’alimentatore e poi il cavo USB, apriamo l’IDE e poi come facciamo di solito per le altre board Arduino scegliamo la porta seriale a cui connetterci che ci eravamo appuntati prima in fase di installazione, e il tipo di scheda, ma qui la scelta è limitata visto che abbiamo solo poche opzioni.

arduino-galileo-board

Infine andiamo su Aiuto > Aggiorna Firmware, confermiamo e l’aggiornamento partirà. Mentre aspettate potete aprire i vostri cassettini e iniziare a tirare fuori breadboard, componenti e qualche filo.

intel-galileo-upgrade

Una volta finito apparirà un messaggio per dirci che l’aggiornamento è andato a buon fine.

intel-galileo-upgrade-finish

Ora possiamo finalmente partire con la parte piu divertente, testarla su strada con l’hello world delle schede il blink. Come per le altre board Arduino anche sulla Galileo il pin 13 è collegato ad un led quindi nell’IDE andate in File > Esempi > 01.Basics > Blink e apritelo poi fate l’Upload.

arduino-galileo-blink

Il led dovrebbe iniziare a lampeggiare ora potete attaccarci quello che vi pare, come se fosse una normale scheda arduino e se avete già qualche sketch pronto apritelo e caricatelo senza farvi grossi problemi. Sempre sul sito di Intel trovate qualche sketch specifico potete scaricarlo e usarlo.

intel-galileo-blink

Qui mi fermo visto che ancora non ho finito di provare tutto quello che volevo, ma il passaggio successivo sarà quello di arrivare al cuore della scheda e usare in maniera più ampia il sistema che sta sotto. Datemi qualche giorno, il tempo di saldarmi un adattatore seriale, e condividerò  i miei progressi. Se avete domande, suggerimenti o riscontrate qualche errore vi invito ad usare i commenti qui sotto o twitter per farmelo sapere.

Giasone

Android ErrorSi lo so è un bel po che non scrivo sul blog, ma per tutta una serie di motivi diciamo che non ho trovato il tempo. Visto che oggi stavo rimettendo le mani su qualche vecchio progetto ho aperto Eclipse e mi sono messo a giocherellare un po con Android. Ovviamente non va tutto sempre cosi come vogliamo noi ed alla prima compilazione mi è apparso un errore tipo questo:

Error generating final archive: Debug certificate expired on 04/08/2010

e dopo vari tentativi e una ricerchina in Google, avete visto che figata il nuovo Google Instant?, ho trovato la soluzione al mio problema quindi me la scrivo qui casomai dovessi averne bisogno in futuro. Per risolvere il problema basta semplicemente eliminare il nostro certificato di debug che troviamo sotto ~/.android/debug.keystore (su Linux e Mac OS X) oppure in %USERHOME%/.androidon sotto Windows. Fatto questo provate a riavviare Eclipse che ne creerà uno nuovo alla prossima compilazione. Questo errore si presenterà una volta l’anno ma per risolvere la cosa per un numero n di anni possiamo creare manualmente il nostro certificato dandogli una durata maggiore di 365 giorni, per farlo ci posizioniamo nella cartella che conteneva il vecchio file e lanciamo da riga di comando:

keytool -genkey -keypass android -keystore debug.keystore -alias androiddebugkey -storepass android -validity 10000 -dname "CN=Android Debug,O=Android,C=US"

ecco ora il nostro certificato scadrà fra 10000 giorni, ottimo non vi pare? Nel caso in cui il vostro progetto continuasse a dare lo stesso errore date una ripulita ai file di progetto generati da Eclipse, andate in Project>Clean… selezionate il progetto e date OK, ci metterà un po in base a quanto è grande il vostro progetto e a quanto è lenta la vostra macchina. Una volta fatto provate a rilanciare la compilazione, e in teoria, non dovreste avere problemi. Se riscontrate ancora problemi fatemi sapere i commenti negli articoli esistono per questo. Io ho finito per il momento grazie per l’attenzione e a presto!!!

– Fine –
Postato con Kblogo

Questo brevissimo post solo per chiedervi, se siete interessati ovviamente, di iscrivervi a questa nuova comunity di sviluppatori e condividere i vostri progetti e partecipare a quelli altrui ovviamente. Se poi cliccate sul link sotto per registrarvi o condividete mi fate anche un favore, se vinco il contest faccio recapitare 3 libri a scelta da Amazon per ognuno di voi. ovviamente una volta registrati fatemelo sapere. Grazie

http://bettercodes.org/register/622f0dd2

Un nuovo passo della Mobile Revolution è in atto: WhyMCA Spring 2010 è la prima Mobile Developer Conference organizzata in Italia. Un incontro rivolto a tutti gli sviluppatori e appassionati del settore Mobile, fatto da tecnici del campo, in pieno stile community. Organizzata secondo il WhyMCA Manifesto, si terrà il prossimo venerdì 21 Maggio al Politecnico di Milano – Campus Bovisa a Milano e la partecipazione è gratuita. Gli argomenti che verranno trattati, grazie alle proposte arrivate dopo una call for papers chiusa il 31 di marzo:

  • Android, iPhone, Windows Phone 7, Qt, Flash su mobile, Vodafone 360, framework cross-platform, mobile web…
  • Mobile Gaming, Augmented Reality, Mobile Security…
  • Application Design & Usability, Mobile User Experience…

L’hashtag ufficiale dell’evento e’ #whymca10 e la Mobile Revolution di WhyMCA Spring 2010 potrà essere seguita anche su Facebook, Twitter e PeopleSound. Qualche numero per farvi capire l’entità dell’evento: 546 iscritti all’evento su EventBrite, 246 partecipanti confermati fino a questo momento, 4 organizzatori, 7 supporter, 33 speaker, 30 sessioni, 4 track parallele, 14 sponsor. E ancora 232 tra maki rolls e nigiri, 640 pezzi di pizza, 30kg di frutta, 2 quintali d’acqua.

Se non siete riusciti ad iscrivervi in tempo, mandate una mail a info@whymca.org.

Io ci vado, se qualcuno si dovesse trovare lì me lo faccia sapere.

– Fine –
Postato con Kblogo

Logo-TornadoDa qualche giorno mi è venuta in mente qualche idea e per questo ho dato un po un’occhiata a qualche strumento che mi poteva aiutare nello sviluppo. lo avevo già provicchiato, ma in questo weekend l’ho testato un pochettino di piu e credo sia la soluzione ad alcuni dei miei problemi. Vi starete chiedendo di cosa parlo, non se avete letto il titolo del post, ma se utilizzate  FriendFeed allora avete già testato le alcune delle potenzialità di  Tornado, un web server open source scritto in Python. Tornado realizzato dagli sviluppatori di Facebook, il noto social network per chi non lo sapesse, e messo a disposizioni di tutti distribuendo i sorgenti da settembre 2009 sotto Apache Licence Versione 2.0.
Ma cosa è Tornado e cosa fa? Come ho detto prima è un web server scalabile, non-bloccante, snello ad alte prestazioni che lo rendono particolarmente utile per i servizi web in real time. Il core, composto da un codice molto snello, quasi minimale direi, va a tutto vantaggio della velocità d’esecuzione e di una certa libertà concessa al programmatore. Non so se questa snellezza è dovuta all'”immaturità” del progetto, idea rafforzata dall’approccio piuttosto essenziale nella gestione del logging e della sicurezza, oppure se c’è stata una scelta ponderata nello scrivere il codice non tenendo conto di queste caratteristiche.
Esistono altri framework web che adempiono agli stessi scopi e molto più noti e popolari come DjangoTwisted, quest’ultimo, certamente più complesso e anche più sofisticato nei meccanismi interni visto anche il supporto a molti più protocolli. Tornado invece si come approccio e semplicità si avvicina molto più a web.py o all’AppEngine di Google, ma con ottimizzazione sul non-blocking e su alcuni strumenti.
Tornado può essere scaricato all’indirizzo tornado-0.2.tar.gz ed io l’ho provato su Snow Leopard su Linux, richiede PycURL e le librerie JSON.
Ma vediamo un po come si installa e qualche linea di codice per metterlo in moto, il resto è demandata alla vostra fantasia.
Scaricate lo zip dal link precedente e aprite una finestra di terminale e digitate:

Mac OS X 10.5/10.6


sudo easy_install setuptools pycurl==7.16.2.1 simplejson

Ubuntu Linux


sudo apt-get install python-dev python-pycurl python-simplejson

e poi decomprimete Tornado, posizionatevi nella cartella e procedete con l’installazione:


tar xvzf tornado-0.2.tar.gz
cd tornado-0.2
python setup.py build
sudo python setup.py install

Ora non ci resta che aprire il nostro editor di fiducia e creare il nostro primo web server:


import tornado.httpserver
import tornado.ioloop
import tornado.web

class MainHandler(tornado.web.RequestHandler):
    def get(self):
        self.write("Ciao, giasone")
        
class MyHandler(tornado.web.RequestHandler):
    def get(self):
        self.write("My custom request")

application = tornado.web.Application([
    (r"/", MainHandler),
    (r"/myrequest", MyHandler),
])

if __name__ == "__main__":
    http_server = tornado.httpserver.HTTPServer(application)
    http_server.listen(8888)
    tornado.ioloop.IOLoop.instance().start() 

ora non vi resta che salvare, poi aprite il terminale e chiamare il vostro script python nomefile.py e visitate l’indirizzo http://localhost:8888/ o http://localhost:8888/myrequest dovreste vedere nel vostro browser le 2 stringhe. Non so se questo vi puo bastare, ma come potrete ben capire le potenzialità sono tante se poi consideriamo che l’integrazione con i più diffusi database come SQLite e MySQL è semplice allora vi si aprira un mondo.
Non vi resta che mettervi a lavoro quindi per il momento è tutto, se avete dubbi commentate o contattatemi.

– Fine –
Postato con Kblogo

Train on railsIn questo post vi spiegherò come creare un semplice blog con Ruby on Rails, come tracciare ogni cambiamento con Git e come pubblicarlo da qualche parte per renderlo pubblico, io ho scelto Heroku. Se avete avuto a che fare in passato con questi strumenti o avete qualche nozione di Rails e Git allora andiamo avanti altrimenti seguite i link e buona lettura ;-P. Per prima cosa installate la gemma di Heroku:

$ sudo gem install heroku

Create ora una nuova applicazione Rails, se non l’avete ancora fatta, e gli associamo un nuovo repository git:

$ rails myapp
$ cd myapp
$ rake db:create
$ git init && git add . && git commit -m "il mio primo commit"

Registriamoci sul sito di Heroku scegliendo il piano più semplice e gratuito. Ora creiamo il nostro semplice blog:

$ ruby script/generate scaffold articles title:string author:string description:text published:boolean category:string tag:string
$rake db:migrate

Potete migliorare l’applicazione mettendoci tutto quello che vi serve, potete ad esempio scegliere un template ed inserirlo nei file dei template. A questo punto avviate l’applicazione e guardate se tutto funziona in locale. Finito di sviluppare la vostra applicazione create una nuova applicazione Heroku:

$ heroku create
  Created http://sharp-autumn-42.com/ | git@heroku.com:sharp-autumn-42.git
  Git remote heroku added

Il nome dell’applicazione viene assegnato automaticamente, quindi facciamo il primo upload e rinominiamo la nostra applicazione:

$ git push heroku master
...
$ heroku rake db:migrate
...
$ heroku rename newnameapp
...

Proviamo quindi a visualizzare la nostra applicazione appena pubblicata nel browser, oppure puntiamo il nostro browser all’indirizzo http://newnameapp.heroku.com/:

$ heroku open

Da questo momento in poi potete fare tutte le modifiche che volete sul vostro blog locale, tenetene traccia utilizzando git e quando vorrete aggiornare la versione online allora farete:

$ git status
$ git add .
$ git commit -a -m "your message"
$ git push heroku

Se non avete saltato nulla a questo punto dovreste avere il vostro bel blog online, un esempio lo trovate all’indirizzo giasone.heroku.com. Ovviamente non è completo e ci si potrebbe lavorare tanto su, ma non credo che ci rimetterò le mani per il momento. Se qualcosa non va per il verso giusto oppure avete qualche difficoltà provate a chiedere, il modulo dei commenti qui sotto esiste per questo.

– Fine –
Postato con Kblogo

Da qualche mese ormai lavoro su HTMLExport uno dei Kipi-plugins usato anche da Digikam, KPhotoAlbum, Showimg e GwenView. Le prime due migliorie che ho implementato le ho prese dal file TODO del plaguin e da alcune richieste che venivano a gran voce richieste sul Bugzilla di KDE.
La prima feature implementata è stata quella di vedere una preview del template insieme alla descrizione durante la selezione del tema come si può vedere nello screenshot seguente:

La seconda feature è la possibilità di estrarre i metadata (EXIF/XMP) dalle immagini durante la creazione degli album, al momento il meccanismo di templating per creare le pagine utilizza XSLT rendendolo così uno strumento veramente potente e flessibile, ma nell’ultima versione le informazioni incluse nel file gallery.xml erano veramente poche. Ora si può accedere a molte più informazioni, guardate il file THEME_HOWTO nella cartella di HTMLExport per una lista dettagliata. Per rendere possibile la visualizzazione di questi metadati ho creato un semplice template che permette di testare questa feature, un esempio lo potete vedere nel prossimo screenshot:

Vi prego di scaricare l’ultima versione dal repo SVN ufficiale e di inviare qualsiasi bug a bugs.kde.org.

English version

– Fine –
Postato con Kblogo

SSH FishIn questa breve guida vi illustrerò brevemente come generare delle chiavi SSH per utilizzarle sui vari servizi on-line oppure sui vostri server nel caso vogliate aumentare il grado di sicurezza nella comunicazione.
Generare una chiave SSH su GNU/Linux, MAC OSX o altri *nix based è un processo semplice se si seguono attentamente questi piccoli passi:

1. Apriamo il nostro terminale, ad esempio Konsole se si sta utilizzando GNU/Linux con KDE oppure Terminal.app che trovate in /Applicazioni/Utilità se si sta utilizzando OSX.

2. Verifichiamo che nella nostra home non ci sia di già un portachiavi, se così fosse allora non avete bisogno di leggere questa guida. Se invece nella vostra home, sotto ~/.ssh non c’è nulla o trovate solo un file chiamato known_hosts allora possiamo continuare a leggere.

3. Procediamo con la generazione di un nuovo portachiavi, optiamo per un algoritmo RSA

$ ssh-keygen -t rsa -C "youremail@gmalo.com"
Generating public/private rsa key pair.
Enter file in which to save the key (/Users/youruser/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /Users/youruser/.ssh/id_rsa.
Your public key has been saved in /Users/youruser/.ssh/id_rsa.pub.
The key fingerprint is:
31:af:34:33:cf:dd:a4:82:10:7b:f0:86:e9:40:b2:db youremail@gmalo.com
The key's randomart image is:
+--[ RSA 2048]----+
|     .+   +      |
|       = o O .   |
|        = * *    |
|       o = +     |
|      o S .      |
|     o o =       |
|      o . E      |
|                 |
|                 |
+-----------------+

Alla prima richiesta, riga 3, potete premere invio o specificare un nome e un posto diverso da quello di default che vi viene proposto. Vi verrà poi chiesta una password e la sua conferma, riga 4 e 5, attenzione a scegliere qualcosa di sicuro e complesso, ma non troppo visto che poi dovrete digitarla tutte le volte che usate questo portachiavi. Ovviamente i path sono differenti e variano in base ai sitemi operativi, in questo esempio siamo su un OSX.

4. Ora non vi resta che utilizzare la vostra chiave che trovate nel file ~/.ssh/id_rsa.pub, potete prenderla e copiarla dove vi serve. Nelle oprazioni di copia ed incolla state attenti a non aggiungere spazi o caratteri di nuova riga altrimenti la vostra chiave non sarà valida. Potete usare un strumento come pbcopy (OSX) e xclip (GNU/Linux) per copiare la chiave da terminale.

Come al solito se qualcuno avesse voglia di dire la sua puo usare i commenti, e trattandosi di temi molto delicati questo “articolo” non è e non vuole essere un guida completa pertanto le vostre ricerche non finiscono qui.

– Fine –
Postato con Kblogo

Scrivo questo breve post spinto dalla voglia di provare ciò che ho appena scoperto sul blog di WordPress e cioè come formattare meglio il codice postato, speriamo che funzioni. Tornando al post, come da titolo, sicuramente vi sarà capitato di lanciare dai vostri script qualcosa sulla linea di comando, e chissà quante volte avreste voluto raccogliere l’output, bhe il codice riportato fa esattamente questo:

import popen2
(stdout, stdin, stderr) = popen2.popen3("ls -la")
lines = stdout.readlines()
for line in lines:
    print line

ovviamente dovete installare il plugin, maggiori info sui linguaggi supportati o iparametri opzionali da passare li trovate qui.

my-team-uses-the-pomodoro

Giasone on Twitter

Flickr Photos