Continuando l'esame delle distribuzioni basate su RHEL ho provato Scientific Linux installando come base il Live Cd ed effettuando l'installazione su Hard Disk
A parte il fatto che non ci sono particolari motivi per usare SL al posto di CentOs c'e' da segnalare che su SL 6.4 non si riescono a compilare le estensioni di VirtualBox per cui non si puo' modificare le dimensioni dello schermo
per il resto ha gli stessi pregi e difetti di CentOS.
lunedì 19 agosto 2013
Linux Oracle
Nella ricerca di una distribuzione Linux compatbile con Red Hat (ma non vincolata all'acquisto della licenza) mi sono imbattuto in Linux Oracle
La distribuzione usa il sorgenti di Red Hat Enterprise ed e' decisamente veloce (almeno sotto VirtualBox) pur con la limitazione tipica del Kernel 2.6, di Gnome 2 e di repository piuttosto scarni
La cosa veramente fastidiosa e' che di default non e' abilitata la scheda di rete
Infatti si deve editare il file
/etc/sysconfig/network-scripts/ifcfg-eth0
modificando in yes la proprieta' ONBOOT
DEVICE=eth0
La distribuzione usa il sorgenti di Red Hat Enterprise ed e' decisamente veloce (almeno sotto VirtualBox) pur con la limitazione tipica del Kernel 2.6, di Gnome 2 e di repository piuttosto scarni
La cosa veramente fastidiosa e' che di default non e' abilitata la scheda di rete
Infatti si deve editare il file
/etc/sysconfig/network-scripts/ifcfg-eth0
modificando in yes la proprieta' ONBOOT
DEVICE=eth0
BOOTPROTO=dhcp
ONBOOT=yes
da qui in poi sara' possibile aggiornare la distribuzione ed aggiungere nuovo software via rete
venerdì 16 agosto 2013
OTG su Mediacom 850i
In modo abbastanza fortuito mi sono accorto che sul tablet Mediacom 850i (non so se a seguito di questa modifica) e' possibile utilizzare la modalita' USB OTG per montare supporti di memoria esterni (in questo caso una chiavetta da 32 Gb)
Nell'area delle notifiche non appare nessuna icona ma usando un file manager e' possibile visualizzare i file sulla chiavetta USB
Determinare il Post_id su Facebook
Determinare il Post_id di Facebook non ha molto senso nell'utilizzo di tutti i giorni di Facebook ma e' determinante quando si iniziano ad usare le API
Come si legge da questo post il post_id e' determinato dall' id utente e dall'id del messaggio con nel mezzo un segno di undescore. Piu' chiaramente
userid_postid
ovvero qualcosa del tipo 100001035901206_384361884941672 dove
userid = 100001035901206
postid = 384361884941672
ma come si fanno a ricavare i due numeri
per il postid si deve guardare alla base del messaggio e trovare la data di pubblicazione (a fianco di Condividi)
cliccandoci sopra si apre una nuova schermata con una URL del tipo
https://www.facebook.com/nomeutente/posts/10151783742548288
Come si legge da questo post il post_id e' determinato dall' id utente e dall'id del messaggio con nel mezzo un segno di undescore. Piu' chiaramente
userid_postid
ovvero qualcosa del tipo 100001035901206_384361884941672 dove
userid = 100001035901206
postid = 384361884941672
ma come si fanno a ricavare i due numeri
per il postid si deve guardare alla base del messaggio e trovare la data di pubblicazione (a fianco di Condividi)
cliccandoci sopra si apre una nuova schermata con una URL del tipo
https://www.facebook.com/nomeutente/posts/10151783742548288
il numero finale e' il postid
A questo punto si deve trovare l'userid. Per cio' si deve andare al link http://graph.facebook.com/ aggiungendo il nomeutente che si e' ottenuto dal link precedente in questo modo
http://graph.facebook.com/nomeutente
si avra' in risposta un qualcosa di questo tipo
------------------------------
A questo punto si deve trovare l'userid. Per cio' si deve andare al link http://graph.facebook.com/ aggiungendo il nomeutente che si e' ottenuto dal link precedente in questo modo
http://graph.facebook.com/nomeutente
si avra' in risposta un qualcosa di questo tipo
------------------------------
{ "id": "1608906223", "name": "Luca Innocenti", "first_name": "Luca", "last_name": "Innocenti", "link": "http://www.facebook.com/luca.innocenti", "username": "luca.innocenti", "gender": "male", "locale": "it_IT" }
------------------------------
dove ovviamente il primo numero e' l'id utente
lunedì 12 agosto 2013
Tastiera fisica bluetooth su Android
Era da un po' di tempo che cercavo un modo di accoppiare una tastiera fisica ad un terminale Android (telefono o tablet...per l'MK808 e' fin troppo semplice) e finalmente con Bluetooth Easy Connect ci sono riuscito (a patto di avere i permessi di root sul telefono). In pratica l'applicazione installata la porzione del software bluetooth che gestisce i dispositivi HID e che non e' compresa di default in Android
Il test e' stato effettuato su un Nexus S accoppiato ad una tastiera Apple
Una volta effettuato l'accoppiamento tra i dispositivi tutto funziona bene. L'unico problema reale e' che non risultano essere disponibili dei layout di tastiera differenti da quello inglese per cui alcuni caratteri digitati non risultano essere corrispondenti a quelli scritti a video (poco male ..e' da tanto che ho fatto l'abitudine a scrivere in modalita' inglese su tastiere in italiano)
Il test e' stato effettuato su un Nexus S accoppiato ad una tastiera Apple
Una volta effettuato l'accoppiamento tra i dispositivi tutto funziona bene. L'unico problema reale e' che non risultano essere disponibili dei layout di tastiera differenti da quello inglese per cui alcuni caratteri digitati non risultano essere corrispondenti a quelli scritti a video (poco male ..e' da tanto che ho fatto l'abitudine a scrivere in modalita' inglese su tastiere in italiano)
Autenticazione OAuth2 con Facebook
L'autenticazione via Facebook e' la piu' semplice delle applicazioni Facebook e per poterla gestire si deve prima creare una applicazione Facebook dal menu che si trova in alto a sinistra della propria Home
Creando una nuova applicazione si ottengono
Si deve quindi selezionare Website with Facebook Login indicando la URL della directory dove e' in esecuzione lo script che si intende utilizzare. Attenzione: la URL deve essere in formato FQDN (non sono ammessi nemmeno gli IP numerici)
Per rendere pubbblica l'applicazione deve essere posto su Disabilitato il controllo della SandBox
A questo punto si puo' scaricare il pacchetto con le librerie PHP per interagire con le API di Facebook da questo link
Attenzione : per eseguire la libreria Php dell'SDK Facebook e' necessario che sul server web sia installata l'estensione php5-curl pena la comparsa di un fantomatico Errore 500
E' quindi giunto il momento di usare lo script riportato alla fine di questo post (modificando con gli opportuni valori i campi evidenziati in giallo)
---------------------------------------------------------------
<?php
require '../src/facebook.php';
$facebook = new Facebook(array(
'appId' => '673135dxxxxxxx',
'secret' => 'dde6cfb07dbb769xxxxxxxxxxxxxxxx',
));
$user = $facebook->getUser();
if ($user) {
try {
$user_profile = $facebook->api('/me');
} catch (FacebookApiException $e) {
error_log($e);
$user = null;
}
}
if ($user) {
$logoutUrl = $facebook->getLogoutUrl();
} else {
$loginUrl = $facebook->getLoginUrl();
}
?>
<!doctype html>
<html xmlns:fb="http://www.facebook.com/2008/fbml">
<head>
<title>OAuth Facebook</title>
<style>
body {
font-family: 'Lucida Grande', Verdana, Arial, sans-serif;
}
h1 a {
text-decoration: none;
color: #3b5998;
}
h1 a:hover {
text-decoration: underline;
}
</style>
</head>
<body>
<?php if ($user): ?>
<a href="<?php echo $logoutUrl; ?>">Logout</a>
<?php else: ?>
<div>
Non autenticato :
<a href="<?php echo $loginUrl; ?>">Registrami con Facebook</a>
</div>
<?php endif ?>
<?php if ($user): ?> <br><br>Adesso sono autenticato come <br>
<img src="https://graph.facebook.com/<?php echo $user; ?>/picture">
<pre><?php print_r($user_profile); ?></pre>
<?php else: ?>
<strong><em></em></strong>
<?php endif ?>
</body>
</html>
Creando una nuova applicazione si ottengono
Si deve quindi selezionare Website with Facebook Login indicando la URL della directory dove e' in esecuzione lo script che si intende utilizzare. Attenzione: la URL deve essere in formato FQDN (non sono ammessi nemmeno gli IP numerici)
Per rendere pubbblica l'applicazione deve essere posto su Disabilitato il controllo della SandBox
A questo punto si puo' scaricare il pacchetto con le librerie PHP per interagire con le API di Facebook da questo link
Attenzione : per eseguire la libreria Php dell'SDK Facebook e' necessario che sul server web sia installata l'estensione php5-curl pena la comparsa di un fantomatico Errore 500
E' quindi giunto il momento di usare lo script riportato alla fine di questo post (modificando con gli opportuni valori i campi evidenziati in giallo)
Da autenticare |
Autenticato |
<?php
require '../src/facebook.php';
$facebook = new Facebook(array(
'appId' => '673135dxxxxxxx',
'secret' => 'dde6cfb07dbb769xxxxxxxxxxxxxxxx',
));
$user = $facebook->getUser();
if ($user) {
try {
$user_profile = $facebook->api('/me');
} catch (FacebookApiException $e) {
error_log($e);
$user = null;
}
}
if ($user) {
$logoutUrl = $facebook->getLogoutUrl();
} else {
$loginUrl = $facebook->getLoginUrl();
}
?>
<!doctype html>
<html xmlns:fb="http://www.facebook.com/2008/fbml">
<head>
<title>OAuth Facebook</title>
<style>
body {
font-family: 'Lucida Grande', Verdana, Arial, sans-serif;
}
h1 a {
text-decoration: none;
color: #3b5998;
}
h1 a:hover {
text-decoration: underline;
}
</style>
</head>
<body>
<?php if ($user): ?>
<a href="<?php echo $logoutUrl; ?>">Logout</a>
<?php else: ?>
<div>
Non autenticato :
<a href="<?php echo $loginUrl; ?>">Registrami con Facebook</a>
</div>
<?php endif ?>
<?php if ($user): ?> <br><br>Adesso sono autenticato come <br>
<img src="https://graph.facebook.com/<?php echo $user; ?>/picture">
<pre><?php print_r($user_profile); ?></pre>
<?php else: ?>
<strong><em></em></strong>
<?php endif ?>
</body>
</html>
Autenticazione OAuth2 con Google
Mediante le API di Google e' possibile effettuare un sistema di autenticazione basato sulle credenziali di Google ovvero si puo' avere un sistema di verifica username/password basato su un account Google
Per fare cio' in Php per prima cosa si deve creare una applicazione andando su questa pagina https://code.google.com/apis/console/?api=plus&pli=1
Si crea una nuova applicazione
e si ottengono le chiavi per l'utilizzo delle API
a questo punto si puo' scaricare da questo link la libreria Php per interfacciarsi con le API di Google
Attenzione: il redirect Url e' l'indirizzo dello script che gestisce l'autenticazione. Normalmente Google richiede che sia un indirizzo in https ma si puo' cambiare anche in http (non come per le API di Facebook)
Si puo' quindi inserire lo script in Php riportato alla fine di questo post per verificare l'uso delle API modificando i campi evidenziati in giallo con le proprie chiavi
A questo punto richiamando l'indirizzo dello script in un browser si avranno le seguenti schermate
Richiesta di login
Verifica dei permessi richiesti dall'applicazione (in questo caso minimali)
-----------------------------------------------------
<?php
require_once './api/src/Google_Client.php';
require_once './api/src/contrib/Google_Oauth2Service.php';
session_start();
$client = new Google_Client();
$client->setApplicationName("Google UserInfo PHP Starter Application");
$client->setClientId('30253xxxxxx.apps.googleusercontent.com');
$client->setClientSecret('Yq8K0SS-p28tjQxxxxxxxxxx');
$client->setRedirectUri('http://xxxxxx/luca/google/test.php');
$client->setDeveloperKey('AIzaSyDchpWdZDkRtCmdXRANkXjxxxxxxx');
$oauth2 = new Google_Oauth2Service($client);
if (isset($_GET['code'])) {
$client->authenticate($_GET['code']);
$_SESSION['token'] = $client->getAccessToken();
$redirect = 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['PHP_SELF'];
header('Location: ' . filter_var($redirect, FILTER_SANITIZE_URL));
return;
}
if (isset($_SESSION['token'])) {
$client->setAccessToken($_SESSION['token']);
}
if (isset($_REQUEST['logout'])) {
unset($_SESSION['token']);
$client->revokeToken();
}
if ($client->getAccessToken()) {
$user = $oauth2->userinfo->get();
// These fields are currently filtered through the PHP sanitize filters.
// See http://www.php.net/manual/en/filter.filters.sanitize.php
$email = filter_var($user['email'], FILTER_SANITIZE_EMAIL);
$img = filter_var($user['picture'], FILTER_VALIDATE_URL);
$personMarkup = "$email<div><img src='$img?sz=50'></div>";
// The access token may have been updated lazily.
$_SESSION['token'] = $client->getAccessToken();
} else {
$authUrl = $client->createAuthUrl();
}
?>
<!doctype html>
<html>
<head><meta charset="utf-8"></head>
<body>
<header><h1>Google UserInfo Sample App</h1></header>
<?php if(isset($personMarkup)): ?>
<?php print $personMarkup ?>
<?php endif ?>
<?php
if(isset($authUrl)) {
print "<a class='login' href='$authUrl'>Connect Me!</a>";
} else {
print "<a class='logout' href='?logout'>Logout</a>";
}
?>
</body></html>
Per fare cio' in Php per prima cosa si deve creare una applicazione andando su questa pagina https://code.google.com/apis/console/?api=plus&pli=1
Si crea una nuova applicazione
a questo punto si puo' scaricare da questo link la libreria Php per interfacciarsi con le API di Google
Attenzione: il redirect Url e' l'indirizzo dello script che gestisce l'autenticazione. Normalmente Google richiede che sia un indirizzo in https ma si puo' cambiare anche in http (non come per le API di Facebook)
Si puo' quindi inserire lo script in Php riportato alla fine di questo post per verificare l'uso delle API modificando i campi evidenziati in giallo con le proprie chiavi
A questo punto richiamando l'indirizzo dello script in un browser si avranno le seguenti schermate
Richiesta di login
Verifica dei permessi richiesti dall'applicazione (in questo caso minimali)
Conferma dell'avvenuta autenticazione
<?php
require_once './api/src/Google_Client.php';
require_once './api/src/contrib/Google_Oauth2Service.php';
session_start();
$client = new Google_Client();
$client->setApplicationName("Google UserInfo PHP Starter Application");
$client->setClientId('30253xxxxxx.apps.googleusercontent.com');
$client->setClientSecret('Yq8K0SS-p28tjQxxxxxxxxxx');
$client->setRedirectUri('http://xxxxxx/luca/google/test.php');
$client->setDeveloperKey('AIzaSyDchpWdZDkRtCmdXRANkXjxxxxxxx');
$oauth2 = new Google_Oauth2Service($client);
if (isset($_GET['code'])) {
$client->authenticate($_GET['code']);
$_SESSION['token'] = $client->getAccessToken();
$redirect = 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['PHP_SELF'];
header('Location: ' . filter_var($redirect, FILTER_SANITIZE_URL));
return;
}
if (isset($_SESSION['token'])) {
$client->setAccessToken($_SESSION['token']);
}
if (isset($_REQUEST['logout'])) {
unset($_SESSION['token']);
$client->revokeToken();
}
if ($client->getAccessToken()) {
$user = $oauth2->userinfo->get();
// These fields are currently filtered through the PHP sanitize filters.
// See http://www.php.net/manual/en/filter.filters.sanitize.php
$email = filter_var($user['email'], FILTER_SANITIZE_EMAIL);
$img = filter_var($user['picture'], FILTER_VALIDATE_URL);
$personMarkup = "$email<div><img src='$img?sz=50'></div>";
// The access token may have been updated lazily.
$_SESSION['token'] = $client->getAccessToken();
} else {
$authUrl = $client->createAuthUrl();
}
?>
<!doctype html>
<html>
<head><meta charset="utf-8"></head>
<body>
<header><h1>Google UserInfo Sample App</h1></header>
<?php if(isset($personMarkup)): ?>
<?php print $personMarkup ?>
<?php endif ?>
<?php
if(isset($authUrl)) {
print "<a class='login' href='$authUrl'>Connect Me!</a>";
} else {
print "<a class='logout' href='?logout'>Logout</a>";
}
?>
</body></html>
Iscriviti a:
Post (Atom)
Change Detection with structural similarity
L'idea di base e' quella di cercare le differenze tra le due immagini sottostanti Non e' immediatamente visibile ma ci sono dei ...
-
In questo post viene indicato come creare uno scatterplot dinamico basato da dati ripresi da un file csv (nel dettaglio il file csv e' c...
-
La scheda ESP32-2432S028R monta un Esp Dev Module con uno schermo TFT a driver ILI9341 di 320x240 pixels 16 bit colore.Il sito di riferiment...
-
Questo post e' a seguito di quanto gia' visto nella precedente prova Lo scopo e' sempre il solito: creare un sistema che permet...