26 novembre 2013

Generare file pdf con Python e Reportlab

Generare dei file .pdf è piuttosto semplice grazie al nostro amico Python. con l'aiuto della libreria reportlab questo si ridurrà a poche semplici operazioni.

NOTA: Ovviamente vi consiglio vivamente di approfondire la documentazione ufficiale perché davvero molto ricca di funzionalità ed opzioni per creare dei file .pdf perfetti.

Ma veniamo ai semplici comandi:

from reportlab.pdfgen import canvas

mio_pdf = canvas.Canvas('mio.pdf')
mio_pdf.setPageSize((595.27,841.89))
mio_pdf.drawString(0,54,str(("Genero un file .pdf... e me ne vanto.")))
mio_pdf.showPage()
mio_pdf.save() 

Basta tutto qui, un file .pdf è apparso nel punti in cui questo semplice script è stato lanciato.

Have fun with Python.

08 ottobre 2013

Trasformare un dizionario in una lista

Alcune volte può essere utile e/o necessario trasformare un dizionario in una lista ed esiste un modo molto semplice per farlo.
in: dizionario = {'a': 1, 'b': 2, 'c': 3}
in: print dizionario
out: {'a': 1, 'c': 3, 'b': 2}
in: dizionario_a_lista = dizionario.items()
in: print dizionario_a_lista
out: [('a', 1), ('c', 3), ('b', 2)]
Semplice, facile ed indolore.

13 giugno 2013

Attivare i log di Cron su Debian

Dobbiamo attivare il log di Cron su sistemi Debian? Niente di più facile, basta editare il file  /etc/rsyslog.conf ed effettuare la seguente modifica:
Modificare la seguente riga:
#cron.* /var/log/cron.log

trasformandola in:
cron.* -/var/log/cron.log

Riavviate il servizio con  il comando:
/etc/init.d/rsyslog restart
ed avete finito, dentro /var/log ci sarà il file cron.log che riporterà i dati dell'attività di Cron.

07 giugno 2013

Using Django runserver in background with Screen

I was poking around today looking for an easier way to use the Django runserver without having to stop and start it in the same terminal window each time I needed to test.

I could just simply start and run the server in a separate terminal session, but I still wanted to check out some alternatives. One interesting method I came across is using the “screen” command in any Unix type OS such as Linux or Mac OS X.

Screen is a window manager program for the terminal that allows you to start, run, and send commands to separate screens running within the same session.

From your terminal session, start a new screen:
screen

Once you see the program information screen, just hit enter or space to move on to the new window. You can then detach the screen and return to your main terminal session using the -d option.
screen -d

You should now back in the main session. To retrieve the screen, use the option -r any time you want to reattach.
screen -r

That’s the basic flow for using screen, so let’s go ahead and start the Django server in your new screen. From your screen session, use the normal command for starting the Django server.
python manage.py runserver

The only problem from here is that we can’t use the command “screen -d” from the command line when the server is actively running. To detach the screen in this situation, simply use the shortcut
CTRL-A-D

This will take you back to your main session while keeping the screen actively running in the background with your Django server. Any time you want to check the status, just repeat the steps above by reattaching with “screen -r”.

When you are done with your work for the day, you can terminate the screen by stopping the Django server with CTRL-C and then using the exit command from the screen window prompt.
exit

That’s it. Screen is a simple tool that can help you manage multiple screens within the same terminal session.

If you work on multiple projects at the same time, you can optionally use the -S option to name your screen. You can then start, list, and reattach multiple screens by name.
screen -S fooScreen

To show a list of the current screens, use:
screen -ls

To reattach to a specific screen:

screen -r fooScreen
If you want to read more about screen and more of it’s capabilities, check out the post Linux 101 Part 1 – How to use screen

From: http://bitsoul.com/2012/07/05/using-django-runserver-in-background-with-screen/

25 maggio 2013

Indici di gradimento o manipolazioni commerciali?

Visto che sono un amante dichiarato delle classifiche, il mio interesse più di una volta si posa sopra comparazioni/classifiche/trends o in generale a tutto quello che mette in relazione dati (comparabili).

Però i dati vanno anche analizzati e spesso non credo di essere in grado di capire i risultati. Per fare un esempio, la diffusione dei sistemi operativi vede GNU/Linux sotto al 2% del totale, mentre per ricerche nel web siamo nel rapporto di 6:10 nei confronti di sistemi Windows. Certo ci potrebbero essere molte richieste di aiuto, specie per i neofiti, ma un tale rapporto mi sembra davvero non giustificabile alla luce delle poche installazioni (teoriche a questo punto) del sistema operativo col Pinguino.

Se poi sposto l'attenzione per i linguaggi di programmazione/interrogazione/condivisione, sono ancora più perplesso. Leggo la classifica USA (fonte Google Trends) e ritrovo:


Tante le cose che non capisco, come ad esempio nonostante il mio amore per Python, mi stupisco di vederlo davanti al PHP e ancor più mi sorprendo di non vedere linguaggi come C, C++, Java o Objective-C che sono in questo momento al top delle preferenze degli sviluppatori.

A questo punto mi chiedo se i dati di popolarità siano attendibili (ad esempio Tiobe), oppure se per una volta Google ha preso un abbaglio clamoroso.

Ok, sono quesiti da Geek o Nerd che poco importano, ma io mi faccio sempre delle domande, è nella mia natura.

03 maggio 2013

16 aprile 2013

Comprensione di lista



Nel titolo non mi sto riferendo alla comprensione di UNA lista, ma a quello che viene definito in inglese list comprehension cioè la possibilità di creare una lista basandosi su altre liste. Come sempre un paio di esempi chiariranno molto meglio il concetto:

1. lista = [1, 5 , 7, 8]
2. result = [i*5 for i in lista]
3. print result


output: [5, 25, 35, 40]
Come facilmente si capisce result non è altro che il risultato della manipolazione della lista originale, chiamata con molta fantasia lista, alla quale viene applicata una semplice moltiplicazione *5 di ogni oggetto presente in lista.

Ovviamente potrei mettere altra carne al fuoco e moltiplicare *5 solo i valori superiori a 5 della nostra lista. Ancora una volta è un'operazione semplicissima:
1. lista = [1, 5 , 7, 8]
2. result = [i*5 for i in lista if i>5]
3. print result


output: [35, 40]
Come si vede ora solo i valori 7 e 8 sono stati moltiplicati *5, facile ed efficace.

Prima ho definito come la list comprehension la possibilità di creare una lista basandosi su altre liste, ma anche una stringa può essere presa in considerazione come punto di partenza.
1. word = "parola"
2. result = [lettera for lettera in word]
3. print result


output: ['p', 'a', 'r', 'o', 'l', 'a']
Semplice, elegante e soprattutto molto utile.

15 aprile 2013

La migliore invenzione del mondo dopo la ruota è Python

Forse avrò esagerato un po' nel titolo, però il concetto che voglio esprimere è chiaro: Python al di la di ogni strana ed articolata definizione, è un linguaggio di programmazione ottimo per tutti coloro che vogliono avvicinarsi alla mistica arte dello sviluppo del codice.



Esistono diversi libri per iniziare a sporcarsi le mani e ne esistono alcuni gratuiti sui quali vale la pene di soffermarsi. Eccone cinque tutti per voi:

1. Uno dei miei preferiti per semplicità, chiarezza e senso pratico è A Byte of Python, che è anche disponibile in Italiano grazie all'impegno di Enrico Morelli a Massimo Lucci. Oltretutto è sintetico, una lettura davvero consigliatissima, non certo esaustiva, ma illuminante.

2. Parlare di Dive Into Python è come parlare della Bibbia per i cristiani. Forse il paragone suona irriverente, ma voglio farvi capire che siamo difronte ad un autentico "must have" per ogni pythonista che si rispetti.

3. Altra storica risorsa, Learn Python The Hard Way è uno di quei testi che non passano mai di moda. Tramite lo "sviluppo" di esercizi non ci accorgeremo di saper di colpo programmare col nostro nuovo amico per la pelle, Python.

4. Citando la prossima risorsa scoprirete che non sono un ragazzino. Perché Python 101 ha ormai qualche annetto sulle spalle, ma ragazzi se mi è stata utile. L'unica scomodità è che non è divisa in diverse pagine, ma è un file unico che si dipana per chilometri e chilometri.

5. Chiudiamo in bellezza la lista con la documentazione ufficiale che non poteva certo mancare. C'è poco da aggiungere alla Python tutorial, non vi resta che leggerlo e gioire.

Esistono naturalmente anche diversi libri cartacei, fedeli compagni di viaggio da scrivania, ma questo è un altro discorso che affronterò in un prossimo articolo/post.

Buon codice a tutti.

10 aprile 2013

Tutti con Jack

Una delle cose più commuoventi che abbia mai visto. Jack Hoffman (7 anni), operato per un cancro al cervello è sceso campo con la squadra di football del cuore, i Nebraska Cornhuskers. Il coach lo ha convocato al Memorial Stadium di Lincoln, Nebraska. Caschetto e casacca dei Cornhuskers, Jack ha percorso tutto il campo fino al touchdown dei suoi sogni. Corri Jack, corri....

20 marzo 2013

Goodbye, Malcolm

Hello fellow Djangonauts, We have difficult news: Malcolm Tredinnick has passed away.

Malcolm was a long-time contributor to Django, a model community member, a brilliant mind, and a friend. His contributions to Django — and to many other open source projects — are nearly impossible to enumerate. Many on the core Django team had their first patches reviewed by him; his mentorship enriched us. His consideration, patience, and dedication will always be an inspiration to us.
To say we'll miss him is an understatement.

Our thoughts are with Malcolm's friends, colleagues, and family at this difficult time.
This came as quite a shock, and we're still sorting out details. We'll update this post once we know the details of how you can express your condolences to Malcolm's friends and family.

The Django Core Team

Posted by Jacob Kaplan-Moss on March 19, 2013

17 febbraio 2013

Marchio Python a rischio

Sono inorridito nel verificare quanto alcuni dirigenti aziendali siano ottusi e quando si tratta di registrazione di marchi e brevetti lo siano ancora di più.

Questa volta è il turno di Python, il linguaggio di programmazione creato da Guido van Rossum oltre venti anni fa. Un'azienda britannica, la Our Holdings, ha chiesto la registrazione del marchio Python per i suoi servizi di "software per computer", "server per l'hosting web", "server Internet" o "hardware per VPN", praticamente tutto il mondo informatico.

La PSF (Python Software Foundation) detentrice del marchio (solo negli USA) ha lanciato un appello a tutti noi, che sono ben lieto di accogliere e girare a tutti voi.

Aiutate la PSF, ne va della nostra libertà di scelta...

05 febbraio 2013

Personalizzare testi su Directadmin

Spesso dopo aver installato un nuovo plugin o una nuova funzionalità, compaiono delle etichette non tradotte nel nostro pannello di Directadmin.

Nulla di male, ma siccome non le sopporto ecco il modo semplice per cambiarle. Immaginiamo di aver installato un Brute Force Monitor e di volerlo personalizzate nella nostra lingua natia.

Dobbiamo intervenite su file .html che si trovano dentro :

/usr/local/directadmin/data/skins/
Scegliendo la skin utilizzata (di default enhanced) e poi la nostra it per la nostra lingua, potremmo mettere dei semplici define nel file:

/usr/local/directadmin/data/skins/enhanced/lang/it/admin/brute_force_monitor.html
Ad esempio se per il tasto per il tasto LANG_BLOCK_IPS vogliamo che compaia Blocca IP andrà scritto quanto segue nel file esattamente come riportato, su una nuova riga e senza altro:
LANG_BLOCK_IPS=Blocca IP
NOTA: Ovviamente  per altri oggetti basta seguire il link per capire in che sezione ci troviamo ed agire di conseguenza.

01 febbraio 2013

Firewall per Directadmin

Way to the Web Limited rende disponibile plugin meraviglioso per directadmin, che ci permette di installare e gestire il firewall direttamente dal nostro pannello directadmin. Io uso una Debian:
apt-get install libwww-perl -y
Ora entriamo in SSH e installiamo il plugin:
wget http://www.configserver.com/free/csf.tgz
tar -xzf csf.tgz
cd csf
sh install.sh
Il sistema è installato e ci abbiamo messo davvero poco per farlo. Entriamo nel nostro pannello con utente lato admin e clicchiamo su "ConfigServer Firewall&Security" -> "Firewall Configuration". Modifichiamo il valore del campo TESTING da 1 a 0 e apriamo le porte desiderate nel campo TCP_IN. Io ho un account su SeFlow quindi le mia porte saranno:
20,21,22,25,53,80,110,143,443,465,587,993,995,2222
NOTA: se avete modificato la porta SSH ricordate di cambiare il valore 22 con la nuova porta usata. Ora clicchiamo su "Change" e poi su "Restart Csf+lfd".

Fatto, ora ci sentiamo più sicuri.

03 gennaio 2013

Socialnetwork in Russia

Davvero molto interessante sapere che Facebook non è il dominatore incontrastato nel mondo dei Socialnetwork. Si sapeva che nell'est del mondo o nei paesi mussulmani FB non fosse certamente così diffuso, ma anche in Russia, la situazione è davvero molto diversa.


Fonte: Twitter

02 gennaio 2013

GNU/Linux crescerà? Sì e No

Se vi state chiedendo se il 2013 sarà l'anno dell'affermazione di GNU/Linux nel mondo dei computer desktop, vi do già io la risposta: NO!

Come potete vedere dal grafico sottostante la penetrazione di GNU/Linux nel mercato dei computer desktop è al 1.19%, quindi anche con un incremento pari al doppio di quanto costruito nel corso di questi anni significherebbe uno scaracchio nell'oceano dei SO. Certo, la statistica non tiene conto di quanti hanno i sistemi dual boot e nemmeno delle installazioni server, ma certamente non possiamo parlare di quote significative, ed è un peccato a pensare a quanto gli utenti si perdono...


Ma c'è anche l'altra parte del cielo, perché dal grafico sottostante potete ammirare invece quanto nei sistemi "mobile" la situazione sia diversa, grazie ad Android e Google.



Quindi la situazione è in divenire e se in mercati diversi da quello che si pensava alcuni anni fa, ma GNU/Linux ha la sua onesta e costante crescita. Il futuro è del pinguino? Mi verrebbe da rispondere che nel mobile la risposta è , mentre per i desktop No.

Fonte dati: MarketShare

Tondo è bello...

Tondo è bello...