Baccega Andrea Blog


The future is web3.0

Archive for the ‘Programmazione’ Category

Google Analytics Bridge for Android developers

author Posted by: veke87 on date ago 23rd, 2009 | filed Filed under: Programmazione

Google Analytics Bridge is a java library for android ( Soon to be Open Source licensed ) that will help developers understand what the user interaction with their own application.

Google Analytics Bridge is really easy to setup and it runs on a separate thread. This is do to the problem with the internet request sometime freezing the UI and setting off the hated message:

"The Application xyz is not responing"

With the two choises :

  1. Force Close
  2. Wait

Since The Google Analytics Bridge runs on a different thread to avoid this error.

First Setup

Download and import the jar file to the application you want use the Google Analytics Bridge on. The setup is a fast one-line command but you need the following information:

  • Google Analytics Tracking Code ( EX: "UA-123123123-1" )
  • The Domain Name

Set up a brand new Google Analytics Profile

you will need to set up a new Google Analytics Profile or use an existing one. You will need to open a new website profile on google analytics.

The procedure is fast and simple but it does require The domain name.

In that field you can specify whatever you want, but i suggest something like:

track.your-application-name.com

After creating the new profile, copy the UA-XXXXXX-Y code for a further usage.

The Constructor

Once you've done all of step one it's time to create our constructor.

In the onCreate routine place the following code:

JAVA:
  1. new AnalyticsBridge(this.getApplicationContext(),"UA-XXXXXX-Y","track.your-application-name.com");

You don't need to create an AnalyticsBridge object , after this line you will call the methods in a static way.

NOTE: You should call the constructor once per application lifetime.

Public Methods

_trackPageview(String pageTitle)

If you've some experience integrating google analytics on your own website you'll also remember what this method will do.

_trackPageview method on the web it's used for logging a new page View by the user. Similarly calling this static method on android will generate a google analytics request that will log a new Activity View.

Lets say you've a lot of activity, and some of theese will show the same content but in a different way, then i would put the following code on each onCreate Subroutine:

JAVA:
  1. /** Called when the activity is first created. */
  2. @Override
  3. public void onCreate(Bundle savedInstanceState) {
  4. super.onCreate(savedInstanceState);
  5. setContentView(R.layout.main);
  6.  
  7. AnalyticsBridge._trackPageview(this.getClass().getName());
  8.  
  9. }

This code will log each opened activity to google analytics.. Isn't it easy? :)

_trackEvent(String category, String action)

_trackEvent method is the same used on the web google analytics apis. I made this bridge because you should want to track some event made by the user.

Let suppouse you want to track a button click event on your user interface - this could help you understand how the user interact with your user interface - then you simply write the following statement on your View.OnClickListener implementation:

JAVA:
  1. Button loginbutton=new Button();
  2. loginbutton.setOnClickListener(new View.OnClickListener() {
  3.  
  4. @Override
  5. public void onClick(View v) {
  6. AnalyticsBridge._trackEvent("Click", "Login Button");
  7.  
  8. }
  9. });

That code will track the event of category "Click" and action "login Button".

Download:

Right now the library is quite stable . You can download it here

Thanks

Thanks to barakinflorida who corrected my bad english :)

Vodafone Widget Android

author Posted by: veke87 on date lug 17th, 2009 | filed Filed under: Programmazione

vodafoneWidgetBitberzerkir sul forum di androidiani, e in seguito integrato con nuove funzionalità ( per ora ancora in beta ) da Andrea Baccega ( me ).

Il programma lo potete scaricare direttamente dal market e per ora suppora la visualizzazione di tre widges :

  • Infinity Sms
  • Traffico Resituo
  • Iphone DataPack

Vediamo un attimo più in dettaglio queste funzionalità

Infinity Sms

Il widget degli infinity sms per android è un widget rosso diviso in 3 righe:

  • Titolo : La dicitura "Infinity Sms"
  • Residuo : mosta gli sms inviati confronto al massimo inviabile giornalmente
  • Tempo : mostra l'ora di aggiornamento del widget

Questo widget è utilissimo per coloro che fanno un uso veramente massiccio degli sms, e quindi averlo sott'occhio può aiutarvi a non sforare la soglia giornaliera :)

Read more »

Cosa fare se Wp Super Cache non vuole andare

author Posted by: veke87 on date giu 26th, 2009 | filed Filed under: Programmazione

asdDa buon sviluppatore wordpress mi è capitato più e più volte di smanettare con blogs privati e business.

Tra i tanti problemi che ho affrontato e che ormai so risolvere a menadito c'è stato questo di un amico che non riusciva ad abilitare wp Super Cache..

Mi spiego meglio! Quest'amico aveva scaricato e correttamente configurato wp-super-cache che però non dava segni di vita alcuna.

Le pagine non venivano cachate e diciamo che era praticamente d'obbligo cacharle poichè il server sul quale il sito era hostato cominciava a tirare le cuoia.

L'amico, dopo avermi confessato che voleva mantenere la versione mobile del sito, aveva provato anche l'abilitazione di wp-cache che comunque non dava frutti e la cartella wp-content/cache/ era perennemente vuota ( a dire la verità veniva a crearsi una cartella in wp-content/cache/blogs ). Ecco quindi come ho proceduto fino all'individuazione dell'errore.

  1. Prova ad eliminare la cartella cache all'interno di wp-content e riabilitare wpCache. -> Risultato negativo.
  2. Prova a cambiare i permessi della cartella cache -> Risultato negativo
  3. Prova di debug e di forzature nel codice php di wp-super-cache -> Risultato Negativo
  4. Ho provato a cancellare i file wp-content/advanced-cache.php e wp-content/wp-cache-config.php -> Risultato negativo.
  5. Ho provato a forzare $use_flock in wp-cache-config.php -> Risultato negativo
  6. Ho provato a debuggare attraverso l'abilitazione in wp-cache-config.php -> Nessun Debug

Alla fine dopo tutti questi tentativi andati a male ho deciso di guardare la cosa più banale e più stupida.

Per abilitare il caching su wordpress si dovrebbe inserire la riga

define('WP_CACHE', true);

all'interno del file wp-config.php nella root del vostro blog. Quindi guardo il file e vedo che la linea c'è ma l'occhio, che a volte è più astuto del cervello, intravede che qualcosa non va e quindi decido di leggermi riga per riga il file e cercare di dare una spiegazione alla sensazione che avevo appena avuto e infatti poco dopo mi accorgo che la precedente riga era subito dopo alla riga:

require_once(ABSPATH.'wp-settings.php');

Non ho fatto altro che scambiare le righe e far diventare la parte finale del mio wp-config.php come segue:

define('WP_CACHE', true);
require_once(ABSPATH.'wp-settings.php');

Anzichè

require_once(ABSPATH.'wp-settings.php');
define('WP_CACHE', true);

Errore ovviamente di distrazione che però può portarvi a non capire il problema per diverse ore ;)

Saluti! :)

Come far funzionare thickbox e lightbox insieme

author Posted by: veke87 on date apr 15th, 2009 | filed Filed under: Programmazione

Ormai sempre più siti internet lavorano con effetti "speciali" tentando di far fare uno sbalzo al look & feel del proprio sito web castrando la staticità di ancora troppi siti web.

Navigando nel web ne trovi di tutti i colori, ma il primo è sicuramente lightbox. Alla sua nascita lightbox ha realmente rivoluzionato il modo di vedere le foto online.

Con l'andare nel tempo si è pensato bene di applicare l'effetto lightbox anche a contenuti diversi da immagini come html, form, video e qualsiasi altra cosa possibile.

Così nacque thickbox che imparando dal suo fratello minore da la possibilità agli addetti ai lavori di aggiungere un tocco magico anche a video , thanks page e altro..

Purtroppo, alcuni di voi lo sapranno, i due sistemi non vanno molto d'accordo e infatti la maggior parte delle volte ci ritroviamo difronte a un sito dove funziona o lightbox o thickbox. Ma perchè?

Lightbox e Thickbox sono state sviluppate con due tecnologie differenti, talmente differenti che sotto sotto sono simili tanto da andare in conflitto con un risultato impredicibile :) .

Per fortuna la soluzione c'è e non è nemmeno così di difficile implementazione. Infatti vi basterà modificare il file thickbox.js nel seguente modo:

  • inserisci all'inizio del file la stringa jQuery.noConflict();
  • effettua un cerca e rimpiazza Con i seguenti parametri --> cerca: $( , rimpiazza: jQuery(
  • effettua un altro cerca e rimpiazza con i seguenti parametri --> cerca: $. , rimpiazza: jQuery.

Se non si capisse , l'ultimo parametro del cerca è [Dollaro][Punto] ..

Ad ogni modo, per i pigri vi lascio in allegato il file thickbox.js versione 3.1 :)

Saluti a tutti,

Andrea Baccega

Usare Curl e Php per prendere il contenuto di una pagina web

author Posted by: veke87 on date nov 20th, 2008 | filed Filed under: Programmazione

Salve gente,
oggi voglio presentarvi una funzioncina che potrebbe tornarvi utile... Questa piccola guida è rivolta sopratutto ai programmatori php che si trovano spesso di fronte a problemi che per essere risolti utilizzano il web-scraping .

In Particolare, La mia funzione fa uso di php+curl per prendere il contenuto servito dalla pagina richiesta. L'uso della libreria curl permette di gestire molte più informazioni della semplice chiamata a fopen..

Inoltre curl, nei vari benchmark risulta essere ben 200 volte più veloce a serivire le richieste della normale chiamata a fopen('http....');

Qui di seguito vi lascio il mio codice sorgente free.

Input: url della pagina da crawlare

Output: contenuto della pagina oppure null

Features: lo script ha un set limitato di user agent e li utilizza per simulare una vera chiamata a browser ( alcuni server potrebbero non servire affatto una risposta se il campo User-Agent non è settato )

PHP:
  1. <?php
  2. $someUA = array (
  3. "Mozilla/5.0 (Windows; U; Windows NT 6.0; fr; rv:1.9.1b1) Gecko/20081007 Firefox/3.1b1",
  4. "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.1) Gecko/2008070208 Firefox/3.0.0",
  5. "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/525.19 (KHTML, like Gecko) Chrome/0.4.154.18 Safari/525.19",
  6. "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/525.13 (KHTML, like Gecko) Chrome/0.2.149.27 Safari/525.13",
  7. "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30)",
  8. "Mozilla/4.0 (compatible; MSIE 7.0b; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.40607)",
  9. "Mozilla/4.0 (compatible; MSIE 7.0b; Windows NT 5.1; .NET CLR 1.1.4322)",
  10. "Mozilla/4.0 (compatible; MSIE 7.0b; Windows NT 5.1; .NET CLR 1.0.3705; Media Center PC 3.1; Alexa Toolbar; .NET CLR 1.1.4322; .NET CLR 2.0.50727)",
  11. "Mozilla/45.0 (compatible; MSIE 6.0; Windows NT 5.1)",
  12. "Mozilla/4.08 (compatible; MSIE 6.0; Windows NT 5.1)",
  13. "Mozilla/4.01 (compatible; MSIE 6.0; Windows NT 5.1)");
  14. function getRandomUserAgent ( ) {
  15.     srand((double)microtime()*1000000);
  16.     global $someUA;
  17.     return $someUA[rand(0,count($someUA)-1)];
  18. }
  19. function getContent ($url) {
  20.  
  21.     // Crea la risorsa CURL
  22.     $ch = curl_init();
  23.  
  24.     // Imposta l'URL e altre opzioni
  25.     curl_setopt($ch, CURLOPT_URL, $url);
  26.     curl_setopt($ch, CURLOPT_HEADER, 0);
  27.     curl_setopt($ch, CURLOPT_USERAGENT, getRandomUserAgent());
  28.     curl_setopt($ch, CURLOPT_RETURNTRANSFER,true);
  29.     // Scarica l'URL e lo passa al browser
  30.     $output = curl_exec($ch);
  31.     $info = curl_getinfo(CURLINFO_HTTP_CODE);
  32.     // Chiude la risorsa curl
  33.     curl_close($ch);
  34.     if ($output === false || $info != 200) {
  35.       $output = null
  36.     }
  37.     return $output;
  38.  
  39. }
  40. ?>

Per utilizzare questa semplice funzione basterà chiamare la funzione getContent con argomento l'url completo della pagina da ricevere.

Saluti, Andrea

wp