Personal tools

Luca Bellenghi

Apr 03, 2013

PuDB, ovvero: come ho imparato a velocizzare il mio debug

Bug? Find it!

PuDB, ovvero: come ho imparato a velocizzare il mio debug

Filed Under:

Quando si fa debug di codice poco "docile" è importante avere gli strumenti giusti per non impazzire sprecando tempo prezioso nel trovare il problema

Nella vita di ogni sviluppatore arriva il giorno in cui si incrocia la propria tastiera con codice incomprensibile, dai risultati inspiegabili e che, ovviamente, bisogna correggere. Avere gli strumenti adatti per il debugging è fondamentale.

Come programmatore python ho avuto modo di utilizzare diversi tipi di debugger, dal semplice pdb a una versione più completa: pdb++. Esistono debugger integrati nei vari IDE di sviluppo, di cui però non ho mai approfondito troppo l'uso dal momento che li ho sempre trovato ambienti un po' pesanti. Da amante della shell, divido il mio tempo di sviluppo fra vim e un editor di testo molto semplice come sublime.

read more

Feb 26, 2013

Creazione di plugin per gestire gruppi virtuali in Plone

Plone e i gruppi virtuali

Creazione di plugin per gestire gruppi virtuali in Plone

Filed Under:

Una funzionalità Plone che sfrutto pochissimo è il meccanismo dei gruppi virtuali, quello che sta dietro al gruppo "Authenticated User". Analizziamolo!

Poche sono state le volte in cui ho avuto bisogno di sfruttare il gruppo che in Plone è chiamato "Authenticated Users". Si tratta di un gruppo virtuale creato in modo tale per cui ogni utente autenticato risulta appartenere, fra gli altri, a questo gruppo in modo automatico.

read more

Jan 22, 2013

jQuery.DataTables.js: tabelle per tutti i gusti

Quando mostrare un dato non basta!

jQuery.DataTables.js: tabelle per tutti i gusti

Se una semplice tabella non rende merito ai dati mostrati, ci si rivolge a Javascript/css per avere di più. Vediamo come usare DataTables per avere molto di più!

Tante volte abbiamo il compito di mettere in mostra tramite tabelle una serie di dati e le (più che giustificate) richieste sono sempre le stesse: fare batching dei dati visualizzati; permettere l'ordinamento delle singole colonne; poter fare ricerca sulle righe della tabella filtrandone il testo.

Cercando sul web, vi renderete conto che i plugin Javascript disponibili sono molti, ma uno mi ha colpito in particolare: jQuery.DataTables.js. Semplice da usare, funzionalità di base estese, molti plugin aggiuntivi e, non da ultimo per un plonista, esiste una versione già "pacchettizzata" per Plone su pypi.

read more

Nov 21, 2012

Internazionalizzazione e javascript a braccetto in Plone

Javascript & i18n? Plone ti da una mano!

Internazionalizzazione e javascript a braccetto in Plone

Filed Under:

Ci sono un italiano, uno spagnolo, un francese e un inglese che... vogliono visitare il nostro sito multilingua in Plone. Come trattiamo le traduzioni se c'è tanto javascript?

Capita di dover sviluppare siti che sfruttano javascript per presentare dati e testi. Se il sito è multilingua, anche questi dati e questi testi dovranno essere tradotti coerentemente con la lingua in cui si sta visualizzando il sito.

Se le parole e le frasi da tradurre sono poche, questo compito può essere portato a termine tramite un dizionario. Supponiamo infatti di dover aprire un alert con un messaggio. Sarà sufficiente avere qualcosa di questo tipo:

// Tramite jQuery si prende la lingua corrente dall'attributo del tag html
var lang = jq('html').attr('lang');

// si dichiara il vocabolario con le traduzioni nelle varie lingue var messages = {'it': 'Benvenuti',
'en': 'Wellcome',
'es': 'Bienvenido',
'fr': 'Bienvenue'};

// apriamo l'alert scegliendo la traduzione opportuna. alert(messages[lang]);

Se la pagina web che stiamo creando ha molte parti caricate via javascript, e quindi molti testi e parole da presentare tradotte, questo approccio è scomodo; innanzitutto perché si rischia di dover mantere molto codice solo per le traduzioni.
Se siamo in un caso come questo, il sito sviluppato probabilmente è già multilingua e i dati verranno presentati correttamente. Per quanto riguarda i testi da mostrare in javascript, è meglio sfruttare un motore di traduzioni, e in Plone, grazie alla community, un'utility di questo tipo esiste già: jarn.jsi18n. Grazie a questo prodotto, infatti, è possibile sfruttare appieno il message factory di plone e tutti i suoi file di traduzioni.

read more

Oct 15, 2012

borg.localrole: ad ogni utente il suo ruolo (dinamicamente!!!)

To be, or not to be, ask to the plugin

borg.localrole: ad ogni utente il suo ruolo (dinamicamente!!!)

Filed Under:

Molte volte capita che le policy di sicurezza debbano seguire logiche al limite del bizzarro. Ovviamente il nostro CMS preferito ha un suo modo per gestire la cosa

Ogni CMS ha delle policy di sicurezza da rispettare. In Plone, queste sono molto solide e si basano sul fatto che esistono permessi per ogni azione eseguibile. I permessi sono associati a ruoli che si possono assegnare a un utente, dopo di che:

  1. l'utente può richiedere di interagire con un elemento
  2. Plone controlla quali permessi sono necessari per l'interazione
  3. Plone stabilisce i ruoli adatti all'interazione con l'elemento
  4. Plone interroga l'utente per sapere se ha i ruoli locali o globali adatti e respinge o approva la richiesta.

 

Il sistema decide se concedere o meno l'accesso basandosi solo sullo stato dell'elemento e le regole di sicurezza definite dal workflow.

Come possiamo comportarci se viene chiesto di gestire una situazione più complessa? Cosa facciamo se è importante acconsentire l'accesso solo se l'elemento in esame contiene determinate informazioni? Vediamo!

read more