Articolo in evidenzaArticolo in evidenzaArticolo in evidenzaArticolo in evidenzaArticolo in evidenza

Apr

19

2018

Forse in molti avranno sentito parlare di Cross Origin Resource Sharing (CORS). Un caso estremamente comune per le applicazioni web è quello del reperimento dei dati mediante un web service di tipo REST, la nostra applicazione quindi andrà a reperire i dati da mostrare attraverso un servizio esposto.

Purtroppo, per limitare l’eventualità di attacchi informatici, i browser moderni applicano la restrizione same-origin; senza entrare in dettagli, un’applicazione web su un dominio A non riuscirà a chiamare il servizio REST esposto su un dominio B.

In Java, esistono vari modi per aggirare tale restrizione, una semplicissima consiste nello scrivere una classe CORSFilter che, come dice il nome stesso, è un filtro CORS personalizzato:

import java.io.IOException;

import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class CORSFilter implements Filter {
	
	@Override
	public void init(FilterConfig filterConfig) throws ServletException {
		// TODO Auto-generated method stub
		
	}

	@Override
	public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
			throws IOException, ServletException {
		
		HttpServletRequest req = (HttpServletRequest) request;
 
        // Autorizza tutti i domini a consumare il servizio
        ((HttpServletResponse) response).addHeader("Access-Control-Allow-Origin", "*");
        ((HttpServletResponse) response).addHeader("Access-Control-Allow-Methods", "GET, OPTIONS, HEAD, PUT, POST, DELETE");
        ((HttpServletResponse) response).addHeader("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
 
        HttpServletResponse resp = (HttpServletResponse) response;
 
        if (req.getMethod().equals("OPTIONS")) {
            resp.setStatus(HttpServletResponse.SC_ACCEPTED);
            return;
        }
 
        chain.doFilter(request, response);
		
	}

	@Override
	public void destroy() {
		// TODO Auto-generated method stub
		
	}

}

Per poi registrarla come filtro nel web.xml:

<filter>
    <filter-name>CorsFilter</filter-name>
    <filter-class>nomedelpackage.CORSFilter</filter-class>
</filter>
 
<filter-mapping>
    <filter-name>CorsFilter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

Da ricordare che le righe qui sopra vanno inserite prima del tag <servlet>.

Tutto qui.. Adesso il filtro CORS funziona a dovere.

Alla prossima..

Share

Mag

10

2017

Nel precedente articolo abbiamo visto come ottenere la serie di immagini necessarie a realizzare un video in timelapse, ora non resta che trasformarle nel nostro video.

Per prima cosa, occorre un software in grado di montare le varie immagini, io consiglio Avidemux, free e multipiattaforma, scaricabile da qui. Dopo aver effettuato il download, non dimentichiamo di rendere eseguibile il file .appImage ottenuto:

chmod +x avidemux_2.6.20.appImage

In modo da poterlo eseguire semplicemente con

./avidemux_2.6.20.appImage

A questo punto, aprite Avidemux, aprite la prima immagine della sequenza e automaticamente dovrebbero essere importate anche tutte le altre. In caso contrario, sarà necessario aprire le immagini una alla volta, aggiungendole man mano alla timeline del video.

Al termine, potrete visionare l’anteprima del video cliccando su Play in basso a sinistra, e salvare infine il vostro video cliccando File -> Save -> Save Video.

Alla prossima..

Share

Mag

7

2017

Realizzare un video in timelapse con Raspberry Pi e PiCamera è davvero semplice e alla portata di tutti. Supponendo di aver già installato ed attivato il modulo PiCamera, si procede con pochi semplici passi.

Il comando necessario per scattare una foto è il seguente:

raspistill -o nomefile.jpg

Dopo aver scattato, dovremmo essere in grado di visualizzare l’immagine nella directory nella quale abbiamo lanciato il comando. Se dovesse risultare capovolta (dipende da come è posizionato il modulo PiCamera), basterà modificare il comando precedente:

raspistill -hf -vf -o nomefile.jpg

A questo punto abbiamo già tutto il necessario per realizzare le nostre immagini.. Basterà creare un piccolo script che scatta una foto e la salva in una specifica directory (ad esempio potremmo creare una directory timelapse nella home dell’utente del nostro Raspberry Pi):

cd timelapse
sudo nano timelapse.sh

#!/bin/bash
DATE=$(date +"%d-%m-%Y_%H%M")
raspistill -hf -vf -o /home/nomeutente/$DATE.jps

Testiamo lo script con un semplice:

./timelapse.sh

E se tutto funziona, scheduliamolo in modo che scatti, ad esempio, una foto ogni 10 minuti:

sudo crontab -e

Ci verrà chiesto di scegliere un editor, io di solito scelgo nano. Poi alla fine del file visualizzato aggiungiamo:

*/10 * * * * sh /home/nomeutente/timelapse/timelapse.sh 2>&1

Chiudiamo l’editor salvando il file e, fin da subito, potremo iniziare a vedere le immagini che vengono create ogni 10 minuti nella directory che abbiamo indicato in precedenza.

Ovviamente possiamo variare a piacere l’intervallo di scatto delle foto, e altrettanto ovviamente occorre stare attenti alla capacità della SD che usiamo col nostro Raspberry Pi. Potrebbe essere utile tenere collegata una pendrive USB a riguardo.

Alla prossima con la realizzazione del nostro video..

Share

Mar

11

2017

Trasformare un Raspberry Pi in una videocamera di sorveglianza è davvero semplice, basta usare un Raspberry Pi (ovviamente), un modulo PiCamera (ma va bene anche una normale webcam USB), e una scheda di memoria.

Continua a leggere…

Share

Gen

27

2017

Con MySQL 5.7 l’accesso a PhpMyAdmin con lo “storico” utente root sprovvisto di password non funziona, pur modificando opportunamente il relativo file di configurazione. Questo avviene perché in questa versione c’è stata una modifica della politica di sicurezza, per cui l’accesso come root senza password va effettuato come amministratore del sistema. Per intenderci, se da riga di comando, supponendo ovviamente di avere il nostro utente root senza password, diamo:

sudo mysql --user=root mysql

Otterremo senza problemi l’accesso alla console di MySQL. Come risolvere il problema dell’accesso a PhpMyAdmin via browser?

Il sottoscritto ha deciso di crearsi un nuovo utente con i dovuti privilegi e dotato di password, non tornando al metodo di accesso precedente (per semplice rapidità).

Quindi, all’interno della console MySQL, alla quale abbiamo avuto accesso col precedente comando, digitiamo:

CREATE USER 'admin'@'localhost' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON *.* TO 'phpmyadmin'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;
EXIT

A questo punto, editiamo il file:

sudo nano /etc/dbconfig-common/phpmyadmin.conf

Cerchiamo:

# dbc_dbuser: database user
# the name of the user who we will use to connect to the database.
dbc_dbuser='nome_utente'
# dbc_dbpass: database user password
# the password to use with the above username when connecting
# to a database, if one is required
dbc_dbpass='password'

E aggiungiamo le informazioni dell’utente appena creato. Riavviamo Apache:

sudo service apache2 restart

E al prossimo accesso a PhpMyAdmin usiamo il nuovo utente creato, con relativa password. Ovviamente potremmo anche decidere di dotare l’utente root di una password, tenendo presente che a quel punto anche l’accesso alla console da riga di comando richiederà l’inserimento di tale password.

Alla prossima..

Share

Licenza

Creative Commons License
RedBlue's Blog di RedBlue è rilasciato sotto licenza Creative Commons 2.5 Italia.

Badges

Cionfs'Forum CMS Check PageRank

Other

Se hai trovato utile questo blog, supportalo con una piccola donazione per l'hosting..


Locations of visitors to this page