Installare XDebug in Ubuntu 14.04

Pubblicato il Scritto il da

XDebug, puoi solo amarlo od odiarlo, nessuna via di mezzo purtroppo.
Il noto debugger non è sicuramente un condensato di stabilità ed usabilità, ma di certo è l’unica alternativa free per migliorare i nostri sviluppi in PHP.

E ‘abbastanza facile installarlo su Ubuntu, vediamo come fare. Prima di tutto da console, lanciare il seguente comando:

sudo apt-get install php5-xdebug

Il quale installerà l’ultima versione, al momento della stesura di questo post è la 2.2.3. Ora aggiornare le opzioni in /etc/php5/apache2/php.ini:

# XDebug
 zend_extension="/usr/lib/php5/20121212/xdebug.so"
 xdebug.remote_enable=1
 xdebug.remote_handler=dbgp
 xdebug.remote_mode=req
 xdebug.remote_host=127.0.0.1
 xdebug.remote_port=9000
 xdebug.max_nesting_level=300

Riavviate Apache2:

sudo service apache2 restart

Ed il gioco è fatto. Buon debugging!

OAuth – Autorizzazione sicura

Pubblicato il Scritto il da

Almeno così dicono! 😛

OAuth logo

Cos’è

E’ un protocollo aperto che permette ad applicazione di terze parti di accedere a informazioni protette di utenti iscritti ad un portale, service provider, Facebook, etc…
Il tutto senza utilizzare le credenziali di accesso dell’utente.

Chi lo usa

  • Google
  • Facebook
  • Twitter
  • …chi altro?

Come funziona

Non è facile raccontare come funziona con parole semplici e senza perdere il filo del discorso, ci proverò.

Tre sono in soggetti che entrano in gioco con OAuth:

  • Service Provider (SP): Google, Facebook, Twitter…
  • Applicazione di terze parti (AT): sito web, mobile application, desktop application che vuole offrire un servizio legato ad un (SP)
  • Utente (U): il quale vuole accedere a (AT).
Diamo inizio alle danze:
  1. (U) accede a (AT)
  2. (AT) ridirige (U) verso (SP)
  3. (U) accede a (SP) utilizzando le proprie credenziali
  4. (SP) chiede a (U) se (AT) può accedere ai suoi dati
  5. (U), come l’uomo del monte, dice: “Sì”
  6. (SP) comunica a (AT) che può accedere ai dati di (U)
Semplice! Come potete notare ora (AT) ha accesso ai dati protetti di (U) senza aver avuto a che fare con le su credenziali di accesso a (SP).
Nella prossima è puntata, con un esempio pratico, introdurremo alcuni termini come application ID, application secret, access token.
Buona autenticazione! :)

Facebook – Introduzione alle Graph API

Pubblicato il Scritto il da

Cose necessarie:

  • ID dell’utente
  • Access token
  • CURL installato nel nostro server
Procurarsi un access token
https://www.facebook.com/dialog/oauth?client_id=xxx&redirect_uri=xxx&response_type=token&scope=create_event

http://www.venetotornei.com/#access_token=xxx&expires_in=4101

https://graph.facebook.com/xxx?access_token=xxx
<?php
$userID = "XXX"; // Può essere me o un numero
$accessToken = "XXX";
$update_url = "https://graph.facebook.com/".$userID."/events";
$form_fields = array(
	"access_token" => $accessToken,
	"start_time" => time() + (7 * 24 * 60 * 60),
	"end_time" => time() + (8 * 24 * 60 * 60),
	"location" => "someplace",
	"name" => "New Test Event Using Graph API"
);

$temp = array();

foreach( $form_fields as $key => $value )
	$temp[$key]=utf8_encode($value);

$form_data = http_build_query($temp);

$curl = curl_init();
curl_setopt ($curl, CURLOPT_URL, $update_url);
curl_setopt ($curl, CURLOPT_POST, 1);
curl_setopt ($curl, CURLOPT_POSTFIELDS, $form_data);
curl_setopt ($curl, CURLOPT_RETURNTRANSFER, 1);
$result = curl_exec($curl);
curl_close($curl);

$result = json_decode(res.content);

if ($result["id"]!==false)
   echo "Successfully Created Event";
else
   echo "Failure";

?>

E come sempre: scusate la rozzezza del codice.

Buona “developpata”! 😉

Java: convertire una data in un timestamp (Epoch format)

Pubblicato il Scritto il da

Java e le date!!!  😈

Non so voi ma io sclero ogni qualvolta ho a che fare con le date…

La questione di cui ci occupiamo oggi è la conversione di una data (oggetto di tipo Date) in una in formato Epoch.

Come molti di voi sapranno Epoch rappresenta una data importante nel mondo dell’informatica: 1 Gennaio 1970 ore 00.00.00.000. L’anno 0!
In questo post vi mostrerò come ottenere i millisecondi che sono trascorsi dall’Epoch date.

Vediamo come effettuare la conversione:

DateFormat formatter=new SimpleDateFormat("dd-MM-yyyy");
Date date= (Date) formatter.parse("01-02-2013");
Long epochFormat=date.getTime();

Nel caso in cui foste interessati ad avere i secondi dall’Epoch date, basterà dividere “epochFormat” per 1000!

Buona conversione! 😉

Phpmyadmin – Disabilitare i popup per la creazione di nuove tabelle

Pubblicato il Scritto il da

Phpmyadmin è una praticissima web application che ci permette di amministrare i nostri database MySQL.

Con l’avanza delle versioni si possono gustare nuova funzionalità, recentemente la sezione dedicata alla stored procedure è la mia preferita! 😉

Non mancano però alcuni punti poco attraenti dell’applicativo, uno fra tutti: l’utilizzo di pop-up modali per la creazione/modifica delle tabelle o delle procedure. A mio avviso non è il modo migliore per gestire questa funzionalità.

Fortunatamente c’è la possibilità di disabilitare questa opzione e di far aprire l’editor delle tabelle (o delle procedure) in una nuova pagina, vediamo come fare:

  • Apriamo il file “/var/lib/phpmyadmin/config.inc.php” con un utente amministratore, possiamo farlo digitando:
    sudo kate /var/lib/phpmyadmin/config.inc.php
  • Cerchiamo la configurazione:
    $cfg['AjaxEnable'] = true;

    e modifichiamola in questo modo, se il file è vuoto scriviamo “<?php” ed a seguire aggiungiamo:

    $cfg['AjaxEnable'] = false;
Bene, finito!
Riaprite il vostro phpmyadmin e buona interrogazione! 😉

Bash – Copia di sicurezza compressa

Pubblicato il Scritto il da

Qualcuno lo chiamerebbe impropiamente backup… 😀

Vi sarà capitato di frequente di voler salvaguardare i vostri file copiandoli in un’area sicura del vostro PC, magari comprimendoli e magari aggiungendo al nome del file la data in cui è stata eseguita l’operazione.

Oggi vedremo come è possibile fare tutto questo con un semplice file bash, iniziamo?

  • Aprite il vostro editor preferito e scrivete:
    #!/bin/bash
    
    mkdir -p path_di_destinazione
    tar -cvzf path_di_destinazione/`date +%Y%m%d%H%M%S_nome_file.tar.gz` path_dei_file_da_comprimere
  • Salvate il file con estensione sh.
  • Per finire rendete il file appena creato avviabile
FINITO!
Ora da console potrete avviare lo script appena creato e al termine dell’operazione troverete in “path_di_destinazione” un file con estensione tar.gz. L’archivio compresso conterrà i vostri file.
Per scoprire come scompattare l’archivio vi consiglio di leggere un vecchio post di Micene.net.
Buona archiviazione! 😉

MySQL – ERROR 1396 (HY000)

Pubblicato il Scritto il da

Vi è mai capitato questo errore operando con MySQL?
A me è capitato sia in fase di creazione di un utente, sia in fase di cancellazione di un utente.

Vediamo insieme come risolvere il problema nei due diversi casi.

Creazione di un utente

Se l’errore vi capita facendo qualcosa del genere:

CREATE USER 'user'@'localhost' IDENTIFIED BY 'password';

Allora per risolvere la situazione basterà lanciare il seguente comando:

FLUSH PRIVILEGES;

Cancellazione di un utente

Se l’errore vi capita facendo qualcosa del genere:

DROP USER 'user';

Allora per risolvere la situazione basterà lanciara il seguente comando:

DELETE FROM mysql.user WHERE USER='user';
DELETE FROM mysql.db WHERE USER='user';

Buona selezione a tutti! 8)

PHP – Da XML ad array

Pubblicato il Scritto il da

Ho avuto un periodo nella mia vita in cui parsare file XML in PHP era diventata un’ossessione (vedi “PHP – HTML Parser (text node compresi)“).

E con questo secondo appuntamento cambiamo metodo: non più DOM, ma XML Parser.

Vediamo il codice:

<?php
$xml="<a:root>
        aaa
        <a1 ciao="bella">
	    <b1>
	        ff
	    </b1>
	</a1>
	<a2>
	    bb
	</a2>
      </a:root>";

$struct = array();
$xml_parser = xml_parser_create(); 

xml_set_element_handler($xml_parser, "startElement", "endElement");
xml_set_character_data_handler($xml_parser, "data"); 

$parse = xml_parse($xml_parser,$xml); 

xml_parser_free($xml_parser); 

print("<pre>n");
print_r($struct);
print("</pre>n"); 

function startElement($parser, $name, $attrs)
{
    global $struct; 

    $tag = array("name"=>$name, "attributes"=>$attrs); 

    array_push($struct,$tag);
} 

function data($parser, $data)
{
    global $struct,$i; 

    if(trim($data)) {
        $struct[count($struct)-1]['data']=trim($data);
    }
} 

function endElement($parser, $name)
{
    global $struct; 

    $struct[count($struct)-2]['child'][] = $struct[count($struct)-1]; 

    array_pop($struct);
}
?>

Scusate, per l’ennesima volta, la ruzzezza del codice (“ma non avuto il tempo di farlo in scala e di dipingerlo” [cit] )

L’output risultate è il seguente:

Array
(
    [0] => Array
	(
		[name] => A:ROOT
		[attributes] => Array
		(
		)

		[data] => aaa
		[child] => Array
		(
			[0] => Array
			(
				[name] => A1
				[attributes] => Array
				(
					[CIAO] => bella
				)

				[child] => Array
				(
					[0] => Array
					(
						[name] => B1
						[attributes] => Array
						(
						)
						[data] => ff
					)
				)
			)

			[1] => Array
			(
				[name] => A2
				[attributes] => Array
				(
				)
				[data] => bb
			)
		)
	)
)

Sarebbe interessante effettuare dei benchmark.

Buon parse! 😉

Fonte: link.

PHP – Class ‘DOMDocument’ not found

Pubblicato il Scritto il da

Se vi imbattete in quest’errore mentre provate Apache sulla vostra Fedora, non preoccupatevi. Non sono state installate le librerie per l’interazione di PHP con XML.

Una piccola ricerca su Google ed ecco come risolvere il problema:

  • Aprite una console e digitare:
    sudo yum install php-xml
  • Riavviate il server apache:
    sudo service httpd restart

Fatto!

Buona programmazione! 😀

P.S.
A me questo problema bloccava l’esecuzione di un plugin di WordPress.
Al caricamento del blog compariva un errore  500.
Una rapida occhiata ai log di Apache mi hanno svelato il vero problema:  Class ‘DOMDocument’ not found.

ASP.NET & C# – Recuperare il riferimento allo script manager presente nella master page

Pubblicato il Scritto il da

Mi è capitato di chiedermi come poter recuperare il riferimento dello script manager presenta nella master page da una pagina qualsiasi.
Niente di più semplice, nel code behind potete scrivere:

ScriptManager scriptManager = ScriptManager.GetCurrent(this.Page);

GetCurrent(Page): ottiene l’istanza ScriptManager per un oggetto Page specificato.