Visualizzazione post con etichetta guide. Mostra tutti i post
Visualizzazione post con etichetta guide. Mostra tutti i post

lunedì 15 luglio 2019

Leggi il post

Come aggiornare Mysql su Wamp

Se avete installato wamp da un po' di tempo, probabilmente alcuni prodotti risulteranno un po' datati e potrebbe essere necessario un aggiornamento.
Tra le operazioni più delicate da fare in questo caso, c'è proprio l'aggiornamento di mysql, ovvero del database che contiene tutte le tabelle con i dati di tutti i siti web presenti sulla macchina wamp.

Questa delicata operazione però, fortunatamente è abbastanza semplice da fare, a patto che non si esageri troppo nel passaggio da una versione ad un'altra.
Nella mia ultima esperienza ad esempio, sono passato da mysql versione 5.7.14 alla versione 8.0.16, un bel salto in effetti, ma per fortuna fino alla 7.x la cosa risulta ancora fattibile.
Quando si compiono queste operazioni però, è tassativo poi controllare tutto il codice php, le viste e le varie query sql, in modo tale da non trovarsi davanti a qualche funzione o sintassi deprecata.

Vediamo dunque come compiere questo aggiornamento in maniera safe.


Come aggiornare Mysql su Wamp


Per poter aggiornare mysql su wamp bisogna seguire i seguenti passaggi:
  1. Scaricare l'ultima versione di mysql dal sito ufficiale (https://www.mysql.com/it/), in formato zip
  2. Estrarre lo zip appena scaricato nella cartella c:/wamp/bin/mysql/mysqlX.x.x (o wamp64, insomma il percorso dove avete installato wamp)
  3. Rinominare la cartella dell'ultima versione in modo tale che rispetti la sintassi utilizzata nella versione precedente
  4. Stoppare wamp in modo tale che nessuno possa scrivere sul database
  5. Entrare nel prompt di dos ed andando nella cartella bin dove c'è mysql digitare il comando: mysqld.exe --initialize-insecure
    Questo genererà la giusta cartella data nel nuovo mysql
  6. Copiare le cartelle con i nomi dei database che si vuole migrare presenti nella cartella data dell'ultima versione attiva di mysql, nella cartella del nuovo mysql
  7. Copiare il file my.ini presente nell'ultima versione attiva di mysql dentro la cartella del nuovo
  8. Cercare dentro il file my.ini tutte le occorrenze alla vecchia versione e rinominarle con il percorso della nuova, come ad esempio: c:/wamp64/bin/mysql/mysql8.0.16/data
  9. Copiare il file wampserver.conf presente nell'ultima versione attiva di mysql dentro la cartella del nuovo
  10. Verificare che i percorsi che sono presenti dentro il file wampserver.conf siano corretti per il nuovo mysql
  11. Riavviate wamp 
  12. Cliccare con il tasto sinistro sull'icona di wamp, poi cliccare su mysql e poi su version, e selezionare l'ultima versione appena installata

E' tutto.
Se wamp non dovesse ripartire al primo colpo, provate un paio di riavvii, e se finalmente diventerà verde la sua icona, allora avrete aggiornato il mysql correttamente e non vi resterà altro che iniziare a testare tutte le vostre applicazioni.

Nel caso anche a voi venga fuori l'errore "Upgrade after a crash is not supported. This redo log was created with MySQL 5.7.x", che di fatto vi impedirà di far partire il nuovo mysql, dovrete svuotare i file di log presenti nella cartella data di mysql (ib_logfile0 e ib_logfile1).
Potete provare a cancellare questi file a mano, che di fatto vi siete portati dietro dalla precedente versione, e vedere se al rilancio di mysql tutto parte senza alcun problema.

mercoledì 3 luglio 2019

Come recuperare foto archiviate su Instagram

L'altro giorno vi ho spiegato come archiviare una foto su Instagram per farla sparire dal proprio profilo pubblico o privato che sia.
Il fatto è che, una volta che una foto o un video è stato archiviato, poi in pratica finisce da qualche parte nelle impostazioni del social, e se non si sa dove guardare risulta difficile recuperare la foto instagram archiviata.

Fortunatamente però, ci ho pensato io a scoprire dove andare a guardare per recuperare le foto ed i video archiviati su insta.


Come recuperare foto archiviate su Instagram


Se non sapete più dove sono finite le foto archiviate su instagram, non vi allarmate, perchè ora vi spiegherò dove guardare.
Per recuperare foto archiviate infatti basta seguire la seguente procedura:

  1. Aprire l'app
  2. Andare sul proprio profilo cliccando sull'omino in basso a destra
  3. Cliccare sull'orologio in alto a destra nella pagina
  4. Cliccare sulla foto da recuperare
  5. Cliccare sui 3 puntini verticali in alto a destra
  6. Cliccare su Mostra nel profilo

Come recuperare foto archiviate su Instagram

Ed ecco fatto.
La foto archiviata è stata appena recuperata ed ora è tornata visibile sul proprio profilo instagram.

Grazie a questo semplice metodo potrete dunque ripristinare le foto archiviate su instagram, o anche i video, nell'ottica del tornare a condividere con i vostri amici un contenuto che non reputate più privato.
Non mi viene in mente un caso di reale utilizzo, ma potrebbe in effetti capitare di voler far sparire temporaneamente una foto da instagram senza doverla cancellare, salvo poi cambiare idea e volerla farla riapparire.

Ecco un breve video su torial su come recuperare foto archiviate su instagram:
https://youtu.be/xkuFrfhXCrc


Comunque pensandoci bene, un altro caso in cui può assolutamente tornare utile questo post è quando per errore si clicca su archivia foto e poi non si sa più dove andare per far riapparire il contenuto sparito dalla propria pagina instagram.

martedì 2 luglio 2019

Come archiviare una foto su Instagram

Dopo aver spiegato come rendere privato un un profilo instagram è venuto il momento di affrontare un altro stato in cui possono essere messe le foto ed i video su instagram.
Su instagram è infatti possibile sia nascondere l'intero profilo ai non amici, sia far sparire un contenuto, senza però cancellarlo fisicamente dal social.
Per far ciò bisogna sapere come archiviare una foto su instagram, in modo tale da spostarla in un'apposita sezione nascosta della propria pagina social.

Vediamo subito come utilizzare questa utile funzionalità di insta.


Come archiviare una foto su Instagram


Per poter archiviare foto o video instagram, basta seguire questa semplice procedura:
  1. Aprire l'app dal proprio cellulare
  2. Entrare nel proprio profilo, dove sono presenti tutti i contenuti che abbiamo caricato
  3. Entrare nella foto da archiviare
  4. Cliccare sui 3 puntini verticali in alto nella foto
  5. Si aprirà un nuovo menù dove cliccare sulla voce Archivia

Come archiviare una foto su Instagram

Tutto molto semplice direi.
La foto archiviata sparirà immediatamente dal proprio profilo instagram e non sarà più visibile dai propri followers.

Qui di seguito una breve videoguida su come archiviare foto instagram in formato youtube:
https://youtu.be/9UhqHnTuuqA

venerdì 7 giugno 2019

Leggi il post

Risolvere problema accentate negli ics calendar (ASP)

L'altro giorno ho fatto una breve guida su come creare un ics in asp/php, grazie alla quale ho potuto aggiungere questa interessante funzionalità ad un sito internet.
Sembrava funzionare tutto alla perfezione, ma alla fine ho scoperto un antipatico bugs con le accentate sull'ics.
Praticamente, la prima volta che ho utilizzato la mia bella pagina asp per generare un ics, nel titolo dell'evento c'era un'accentata, che in fase di import del file calendar in outlook ha dato come risultato di avere una lettera in meno nel titolo.

Subito allarmato dalla sparizione della lettera accentata, ho aperto il file ics con il blocco note (notepad++ in realtà), ed ho notato che in realtà l'accentata era scritta correttamente.
Andando però a guardare il formato del file, ho visto che il charset indicato era ANSI, ed ho subito intuito che in realtà microsoft outlook avrebbe gradito un charset diverso, ovvero il più universale utf8.

Vediamo quindi come risolvere questo problemino con l'ics e le accentate non visualizzate in outlook.



Come risolvere il problema delle accentate nei file ics calendar in ASP


Premessa: la seguente soluzione, anche se ovviamente con sintassi diversa a seconda del linguaggio di programmazione utilizzato, può risolvere in maniera generale il problema accentate ics outlook (ed altri client ovviamente).

Per fixare il bug delle accentate nell'apertura dei file calendar ics con outlook o altri client di posta, basta agire sulla pagina asp ed impostare come charset utf-8.

Bisogna dunque aggiungere all'inizio del file asp, prima di ogni cosa, queste due righe:

<%
@LANGUAGE="VBSCRIPT" CODEPAGE="65001"
Response.CharSet = "UTF-8"
%>

Successivamente per completezza, ma potrebbe non servire, si può aggiungere all'interno del file ics la riga con la specifica del charset usato, che in questo caso è:

CHARSET:UTF-8
Quindi rifacendomi all'esempio dell'altro giorno, lo script finale verrebbe così:

<%
@LANGUAGE="VBSCRIPT" CODEPAGE="65001"
Response.CharSet = "UTF-8"

response.buffer=true
Response.ContentType = "text/calendar"
response.AddHeader"content-disposition","inline;filename=appuntamento.ics"
ris="BEGIN:VCALENDAR"
ris=ris&VBcrlf&"CHARSET:UTF-8"
ris=ris&VBcrlf&"VERSION:2.0"
ris=ris&VBcrlf&"BEGIN:VEVENT"
ris=ris&VBcrlf&"DTSTART;TZID="&stato&"/"&citta&":"&dataorainizioo
ris=ris&VBcrlf&"DTEND;TZID=Italia/Milano:"&dataorafine
ris=ris&VBcrlf&"SUMMARY:"&titolo
ris=ris&VBcrlf&"LOCATION:"&luogo
ris=ris&VBcrlf&"DESCRIPTION:"&titolo&VBcrlf&descrizione
ris=ris&VBcrlf&"PRIORITY:3"
ris=ris&VBcrlf&"END:VEVENT"
ris=ris&VBcrlf&"END:VCALENDAR"
response.write(ris)
%>


Ed ecco che magicamente tutte le accentate ed i caratteri speciali presenti nel file ics calendar generato dalla pagina asp, si apriranno tranquillamente anche su outlook.

giovedì 6 giugno 2019

Leggi il post

Creare un ICS Calendar in ASP o PHP

Oggi farò una guida multi language, che spiega come creare un file ics calendar, ovvero quel tipo di file che i vari client di posta, quali outlook ad esempio, interpretano come un memo da mettere in agenda.
I file ics sono molto comodi per salvarsi nel proprio calendario personale i dati di un appuntamento, in modo tale da potersi anche far avvisare poco prima dell'incontro con una notifica su cellulare.
Un buon sito web che si rispetti dunque, che sia sviluppato in asp o php, a seguito dell'iscrizione ad un evento da la possibilità di creare un file ics da scaricare o da mandare in automatico via email all'iscritto.
Tale file poi, una volta aperto fa partire, ad esempio, outlook in automatico, il quale chiederà all'utente se vuole salvarsi i dati dell'appuntamento presenti nel file calendar, facilitando di fatto la vita a chi si iscrive ad un evento, che non deve scriversi a mano il titolo dell'appuntamento, la data e ora, ed il luogo dell'incontro.

Fatta questa doverosa premessa, vediamo subito come creare un file ics con asp e php.


Come creare un ICS Calendar in ASP


La sintassi da utilizzare per creare un file calendar in asp classic (e non) è la seguente:

<%
response.buffer=true
Response.ContentType = "text/calendar"
response.AddHeader"content-disposition","inline;filename=appuntamento.ics"
ris="BEGIN:VCALENDAR"
ris=ris&VBcrlf&"VERSION:2.0"
ris=ris&VBcrlf&"BEGIN:VEVENT"
ris=ris&VBcrlf&"DTSTART;TZID="&stato&"/"&citta&":"&dataorainizioo
ris=ris&VBcrlf&"DTEND;TZID=Italia/Milano:"&dataorafine
ris=ris&VBcrlf&"SUMMARY:"&titolo
ris=ris&VBcrlf&"LOCATION:"&luogo
ris=ris&VBcrlf&"DESCRIPTION:"&titolo&VBcrlf&descrizione
ris=ris&VBcrlf&"PRIORITY:3"
ris=ris&VBcrlf&"END:VEVENT"
ris=ris&VBcrlf&"END:VCALENDAR"
response.write(ris)
%>


Direi che questo script non necessita di particolari spiegazioni, in quanto basterà sostituire dinamicamente le varie variabili quali luogo, ora, ecc... per avere una pagina asp che una volta chiamata consentirà al visitatore di scaricare un file calendar ics.


Come creare un file Calendar ics in PHP


Per poter creare un file ics in php, facendolo scaricare dall'utente tramite apposito link, basta utilizzare il seguente script:

<?
header('Content-Type: text/csv; text/calendar');
header('Content-Disposition: attachment; filename=calendar.ics');
$dstartc=date("Y", strtotime($data_inizio)).date("m", strtotime($data_inizio)).date("d", strtotime($data_inizio))."T".date("H", strtotime($data_inizio)).date("i", strtotime($data_inizio))."00";
$dendc=date("Y", strtotime($data_fine)).date("m", strtotime($data_fine)).date("d", strtotime($data_fine))."T".date("H", strtotime($data_fine)).date("i", strtotime($data_fine))."00";
$ris="BEGIN:VCALENDAR\n";
$ris.="VERSION:2.0\n";
$ris.="BEGIN:VEVENT\n";
$ris.="DTSTART;TZID=".$stato."/".$citta.":".$dstartc."\n";
$ris.="DTEND;TZID=".$stato."/".$citta.":".$dendc."\n";
$ris.="SUMMARY:".$titolo."\n";
if ($luogo!="") $ris.="LOCATION:".$luogo."\n";
$ris.="DESCRIPTION:".$titolo."\n".$descrizione."\n";
$ris.="PRIORITY:3\n";
$ris.="END:VEVENT\n";
$ris.="END:VCALENDAR\n";
echo $ris;
?>


Come per la versione asp, si produrrà un output con una sintassi prestabilita standard (che non è il caso di analizzare e va presa per buona), alla quale dovremo passare le varie variabili che compongono i dati del nostro appuntamento (luogo, data, titolo evento, ecc...).

Nello script d'esempio viene anche illustrato come l'ics si aspetta che sia formattata la data, sintassi che ovviamente vale anche per la versione asp.

Bene, è tutto.
Grazie a queste poche righe di codice, che potrete ovviamente standardizzare in una funzione, potrete creare file ics calendar tramite linguaggio di programmazione php o asp, ed inserire così una comoda funzionalità all'interno dei vostri siti internet.

venerdì 31 maggio 2019

Come far vibrare il telefono (App Inventor 2 / Thunkable)

Se sei uno sviluppatore di app per android, una delle cose che prima o poi ti capiterà di dover fare è capire come far vibrare il telefono a seguito di un'azione dell'utente.
Può essere il caso in cui si sta creando un'app che manda delle notifiche, oppure un'applicazione per android che genera un allarme, o perchè no, la famosa app che simula le chiamate per il cellulare.

Quale che sia l'app in questione, grazie a Mit App Inventor 2 (o thunkable) è possibile far vibrare il telefono cellulare con un semplice componente nativo, senza bisogno di estensioni esterne.
Vediamo subito come fare.


Come far vibrare il telefono con App Inventor 2 e Thunkable


Partendo da un progetto vuoto al quale basta aggiungere un bottone per generare l'azione, per ottenere la vibrazione del telefono basta utilizzare il componente Player.
Trascinare dunque il componente player nel viewer e poi andare subito a lavorare nei blocchi (blocks).

Basterà infatti associare all'azione del click del bottone, l'azione del player (app inventor o thunkable) denominata call player vibrate (esegui player vibra), alla quale basterà poi associare il numero di millisecondi per i quali si vuol far vibrare il telefono.

Come far vibrare il telefono (App Inventor 2 / Thunkable)

Ed ecco che una volta lanciata la nostra app, al click del bottone il telefono vibrerà come per magia.
Tutto questo con un solo blocco di codice, facile no?

Un paio di note utili per la corretta riuscita di questa operazione:
  • 1000 millisecondi sono un secondo, quindi per calcolare quanti secondi si vuole far vibrare il telefono basta fare x*1000
  • Per poter far vibrare il telefono con la vostra app sviluppata con thunkable o app inventor, comunque bisogna avere abilitato la vibrazione delle notifiche.
    Sembra una banalità, ma se si lascia il telefono silenzioso senza vibrazione, questo componente non fa niente... io non lo sapevo e ci ho perso un secolo per capire come mai non funzionava la vibrazione su appinventor / thunkable, passando dal semplice componente player ad anche estensioni esterne, nulla funzionava fino a quando non ne ho scoperto il motivo :p

E' tutto sull'argomento vibrazione cellulare tramite appinventor / thunkable.
A questo link trovate il semplice progetto .aia da scaricare, nel caso vi servisse.

Tornare all'elenco delle lezioni

giovedì 23 maggio 2019

Leggi il post

MYSQL: cancellare record su più tabelle con i trigger

Tempo fa avevo spiegato come utilizzare i trigger in mysql, sia da codice sql, sia utilizzando l'interfaccia grafica di phpmyadmin.
Oggi invece vediamo un esempio concreto su una delle casistiche più ricorrenti, il delete after delete.

Quando capita di dover cancellare i record presenti in delle tabelle figlie, soprattutto se si sta sviluppando una nuova applicazione e si fanno molte prove, a volte può risultare scomodo andare ad eliminare a mano tutti i record di sottotabelle per evitare di lasciare righe orfane nel database mysql.
Ed è proprio in questi casi che torna utile saper utilizzare al meglio i trigger mysql.

Vediamo subito con un esempio pratico come ripulire in automatico il nostro database.


Come cancellare automaticamente record su più tabelle con i trigger di MYSQL


La sintassi sql da utilizzare per rimuovere automaticamente da una tabella mysql tutti i record legati ad una tabella non più esistente è la seguente:

CREATE TRIGGER `nome-trigger` AFTER DELETE ON `tabella-padre` 
FOR EACH ROW 
DELETE FROM tabella-figlia WHERE tabella-figlia.id-chiave=old.id;

La sintassi sopra indicata si spiega da sola, ma vediamo comunque di andare ad analizzare cosa ho appena scritto.
Il comando sql CREATE TRIGGER serve ovviamente a creare il nostro trigger, al quale bisogna dare un nome, bisogna indicare un'azione (in questo caso dopo l'operazione di cancellazione, ovvero AFTER DELETE), e bisogna dire qual'è la tabella dalla quale parte il comando.

C'è poi una sintassi che serve per indicare che l'operazione sql che andremo a fare sarà effettuata su tutte le righe della tabella bersaglio, ovvero: FOR EACH ROW.

Infine basta indicare la sintassi mysql desiderata per compiere l'azione, in questo caso la DELETE, mettendo nel WHERE un legame tra un id chiave della tabella bersaglio, con l'id della tabella padre, indicata con la sintassi old.

Tutto molto semplice no?
Da ora in poi quindi, cancellando una riga della tabella padre, verranno rimosse in automatico dal database tutte le righe della tabella figlia che rispondono ai requisiti indicati nel nostro trigger.