#ruby create testo automatico su scelte dell’utente

Recentemente mi sono trovato di fronte al problema di avere un testo precompilato con dei campi dinamici che dovevano essere sostituiti a seconda delle scelte fatte per l’utente. Siccome non era possibile decidere a priori il numero ed il contenuto dei campi stesso é stato necessario ciclare sugli stessi per ottenere il risultato finale.

I campi in questione potevano essere di due tipi:

  • Campo semplice in cui andava sostituita unicamente la variabile con il dato preso, ad esempio, dal database
  • Campo avanzato dove veniva fornito l’id di un’entry del database e che implicava il recupero dell’informazione in forma piú complessa

Al di la del tipo di campo la necessitá é quella di individuare, all’interno di una stringa, i campi dinamici dal resto e comporre di conseguenza la stringa stessa.

Usando ruby e delle semplice regular expression la cosa di puó risolvere in questo modo:

primo = “Nome”
secondo = “Cognome”
terzo = “domanda5”
quarto = “domanda6”
str = “Ciao sono [nome] [cognome] dovevo arredare [domanda=5] e sono [domanda=6] del mio acquisto”

user_id = 25
ana = Anagrafica.find(user_id)
cols_hash = Anagrafica.columns.map(&:name)

while !str[/\[(.*?)\]/,1].nil? do
val = str[/\[(.*?)\]/,1]
puts “Trovato: #{val}”

if cols_hash.include?(val)
puts “Trovata corrispondenza colonna”
puts ana.send(val)
str = str.gsub(“[#{val}]”, ana.send(val))
end

if val.include?(“domanda”)
domanda = Domande.find(val.split(“=”)[1])
risposta = domanda.risposte.first
str = str.gsub(“[#{val}]”, risposta.risposta)
end

str = str.gsub(“[#{val}]”, “”)
end

puts str

Il codice é abbastanza semplice e si spiega da solo, l’unica parte evidenzata in grassetto é dove la regexp entra in gioco per isolare il campo e recuperare il valore all’interno.

Nella parte dove eseguo ana.send(…) stampo il valore salvato nel database e che corrisponde alla colonna, che é stata utilizzata per impostare il campo, ad esempio, [nome] nella stringa originale.

In questo modo sará semplice fornire all’utente la possibilitá di creare testi “standard” che vengono modificati dagli utenti magari tramite delle domande di un sondaggio o tramite scelte mirate, permettendo cosí di risparmiare tempo nella moderazione di post o nell’elaborazione di risultati non organizzati.

Come sempre so che ci sono altri 1000 modi per arrivare allo stesso risultato, commentate pure e saró felice di aggiungere a questo post anche i vostri suggerimenti.

Android build con Ionic Framework 2 errore sdk non trovato

 Framework oramai é diventato un “must have” per ogni sviluppatore di web app mobile grazie alle sue librerie e tools che garantiscono flessibilitá e rapiditá nello sviluppo multipiattaforma (android, iOS e Windows).

Come tutti i framework peró non é al sicuro da problemi legati a compatibilitá di librerie, aggiornamenti dei sistemi operativi e dei compilatori e spesso un errore di facile soluzione puó trasformarsi nel piú comune dei mal di testa.

Quello che é successo a me tempo fa e che ora con la release 3.x di ionic sembra risolto, riguardava un errore quando cercavo di fare il build della mia applicazione per eseguire il debug su dispositivi Android, sia che lanciassi un emulatore, sia sul dispositivo fisico.

Avevo controllato tutto quanto, Android studio era installato e configurato, i path di sistema erano a posto e tutto veniva trovato ma il build dell’applicazione non riusciva a partire, continuavo ad avere errori in merito alla mancata installazione di Android Sdk, anche se questo era correttamente installato.

Dopo giorni di ricerche, test e modifiche varie sono arrivato alla soluzione del problema. Inanzi tutto é necessario installare la versione android@6.2.1 della piattaforma con il comando:

ionic platform add android@6.2.1

eliminando prima la vecchia piattaforma se precedentemente installata.

Una volta fatto questo all’interno della cartella platforms/android/cordova/lib/ modificate il file android_sdk.js

module.exports.list_targets_with_android = function() {
return superspawn.spawn(‘avdmanager‘, [‘list’, ‘targets’])
.then(function(stdout) {
var target_out = stdout.split(‘\n’);
var targets = [];
for (var i = target_out.length – 1; i >= 0; i–) {
if(target_out[i].match(/id:/)) {
targets.push(target_out[i].match(/”(.+)”/)[1]);
}
}
return targets;
});
};

ed infine andate nel file platforms/android/cordova/lib/check_reqs.js e aggiungete dopo il controllo } else if (module.exports.isWindows()) { il seguente codice:

Other way to solve in Linux and OS X

if (module.exports.isDarwin()) {
// added this
program_dir = process.env[‘ANDROID_STUDIO’];
if (program_dir) {
androidStudioPath = path.join(program_dir, ‘Contents’, ‘gradle’);
foundStudio = true;
} else {

}
} else if (module.exports.isWindows()) {

// and added this to work on Linux
} else {
program_dir = process.env[‘ANDROID_STUDIO’];
if (program_dir) {
androidStudioPath = path.join(program_dir, ‘gradle’);
foundStudio = true;
}
}

 

 

In questo modo il build dovrebbe andare a buon fine e sarete in grado di testare la vostra applicazione sia sull’emulatore che sul dispositivo fisico.

Attualmente non ho rilevato problemi con la versione 3.x di ionic ma credo che quanto fatto per risolvere il problema qui sopra possa essere un buon punto di partenza per analizzare eventuali problemi di questo tipo anche su versioni diverse del framework.

 

Backup full ftp website con wget e pochi comandi di shell

Backup di una intera cartella ftp con wget

In un recente post ho parlato di come avevo impostato la mia politica di backup per salvare i dati dell’intero server Postgresql che gestivo in un comodo file sql, ruotandolo ogni 7 giorni e creando un backup settimanale che cancellavo automaticamente ogni mese.

Continua a leggere Backup full ftp website con wget e pochi comandi di shell

3 libri da leggere se sei un programmatore

3Libri da leggere se sei o vuoi diventare un programmatore

Ormai su internet troviamo di tutto, tutorial, manuali, video, corsi e qualsiasi altra cosa. Ci sono peró delle cose che un programmatore non puó esimersi da leggere oppure devono essere nella sua biblioteca” sia essa virtuale o fisica che virtuale.

Io ve ne consiglio 3, sicuramente ci saranno altri articoli che ne consiglieranno di diversi, diciamo che la cosa va a sentimento. Io personalmente non li ho letti tutti, peró mi sono ripromesso di farlo nel 2017 perché di alcuni autori ho visto dei video e letto il blog ed i concetti che espongono sono interessanti e sicuramente vi aiuteranno nel lavoro di ogni giorno.

Continua a leggere 3 libri da leggere se sei un programmatore

Postgresql Backup aws S3 sync

Tempo fa avevo scritto di come eseguire un backup completo dei vostri database postgresql permettendo di fare il rotate dei dati sulla base della configurazione desiderata e non nascondo che la cosa ha inaspettatamente ricevuto consensi e consigli.

Il consiglio principale piú utile ed interessante é stato quello di @apeacox il quale diceva di mettere tutto quanto su un repository github con tanto di README per raggiungere piú pubblico interessato.

Detto fatto: pgbackups

Lo script in piú ha una cosa che giá avevo pensato di aggiungere e cioé il backup di tutto quanto su un bucket S3 ed in futuro aggiungeró le configurazioni per caricare tutto quanto su un google cloud oppure su vostro ftp server.

Una volta clonato lo script e configurato in tutti gli aspetti é necessario,  nel server dove questo dovrá girare, configurare la suite awscli.
Per avere la suite installata e funzionante potete scegliere tra due strade: usare pip oppure tramite installazione manuale. Nel primo caso si risolve tutto con una sola riga di codice:

sudo pip install awscli –ignore-installed six

Mentre nel caso di installazione manuale

$ curl “https://s3.amazonaws.com/aws-cli/awscli-bundle.zip” -o “awscli-bundle.zip”
$ unzip awscli-bundle.zip
$ sudo ./awscli-bundle/install -i /usr/local/aws -b /usr/local/bin/aws

 

Una volta completata l’installazione dovete configurare tutto inserendo le credenziali che potete ottenere dalla console di aws nella sezione “My Security Credential”.

$ aws configure
AWS Access Key ID [None]: *******
AWS Secret Access Key [None]: *******
Default region name [None]: us-west-2
Default output format [None]: ENTER

 

Tra i vari comandi che avete adesso a vostra disposizione quello in relazione allo script per il backup é il seguente:

aws s3 sync . s3://mybucket

Con questo comando farete una sincronizzazione della cartella corrente nel bucket che avete appena creato.

La suite di comandi di aws é molto potente, vi permette di gestire qualsiasi aspetto di tutti i servizi che amazon offre dalla gestione delle macchine virtuali ai bucket per lo storage dei file. Se siete interessati a questi aspetti iscrivetevi al programma e iniziate a sperimentare con la piattaforma, come nuovo iscritto avrete uno sconto sui servizi per un anno dalla vostra iscrizione.

SEO Tester Online – Parte 2 Keywords Explorer

Keywords Explorer

Siamo alla seconda puntata di SO Tester Online, inizialmente prevedevo di scrivere una unica recensione per tutto quello che la piattaforma offriva peró dopo un report piú o meno dettagliato di quello che offriva la parte di analisi SEO ho capito che era meglio scrivere una seconda parte dedicata allo strumento da poco lanciato e cioé Keywords Explorer

Continua a leggere SEO Tester Online – Parte 2 Keywords Explorer

SEO Tester Online – una suite italiana che fará parlare di se

Oggi vorrei parlarvi di SEO Tester oline, una suite italiana al 100% che vi permette di controllare l’aspetto SEO del vostro sito in poco tempo, fornendo una dettagliata panoramica di come il si comporta e di dove agire per migliorare le performance SEO ottimizzando gli aspetti piú comuni anche se spesso dimenticati.

Continua a leggere SEO Tester Online – una suite italiana che fará parlare di se

WordPress 4.7 é disponibile

WordPress 4.7 é stato rilasciato oggi e, contrariamente a quanto faccio di solito, ho fatto l’aggiornamento del mio sito. Ho preso dei rischi perché non sempre tutto funziona alla perfezione ed in effetti i segnali che qualcosa fosse andato storto c’erano tutti…

Ho preparato tutto, verificato se ci fossero incompatibilitá con la mia installazione, ho aggiornato i plugin ed il tema prima della migrazione a WP 4.7 e poi via, click sul pulsante per l’aggiornamento, il sistema mi segnala che tutto é andato a buon fine e che non ci sono aggiornamenti particolari per il database. Tiro un grosso sospiro di sollievo, é andato tutto liscio ma ricordatevi: mai abbassare la guardia!!
Provo ad entrare nell’area admin ed ecco iniziare il problema (per fortuna solo uno): il sistema entra in loop, mi dice che non ci sono modifiche da fare al database, clicco su continua e mi rimanda alla home del sito, riprovo ad entare nell’admin ma niente, sempre il solito loop.

Continua a leggere WordPress 4.7 é disponibile

x11vnc server su ubuntu linux

X11VNC é un popolare software che permette di collegarsi in remoto ad un computer rendendo cosí a disposizione il desktop come se ci si trovasse davanti ad un monitor. Il vantaggio di questo software é che praticamente potete installarlo in qualsiasi distribuzione linux con pochi passi e la sua configurazione é molto semplice. Una volta configurato potete utilizzare qualsiasi vnc client, per qualsiasi sistema operativo ed avrete il vostro desktop linux a disposizione.

Continua a leggere x11vnc server su ubuntu linux