Archive

Posts Tagged ‘php’

L’angolo del mashup: Flickr

21 June 2007 Leave a comment

Quello che vediamo oggi è divertente quanto inutile programmino, che vi permette di effettuare ricerche su Flickrdal vostro cellulare. Esiste già da tempo l’interfaccia WAP di Flickr, ma in questo modo è possibile visualizzare le immagini con le dimensioni giuste per il vostro cellulare. Flickr mette a disposizione degli sviluppatori un API, attraverso la quale è possibile effettuare delle ricerche sulle immagini.

La parte di ricerca verrà fatta utilizzando phpFlickr, una classe PHP scritta da Dan Coulter per poter utilizzare le API di Flickr. Grazie a questa classe possiamo effettuare ricerche molto semplicemente


require_once("phpFlickr.php");
$f = new phpFlickr("CHIAVE_DI_FLICKR");
$text=$_GET['testo'];
$x=$_GET['x'];
$y=$_GET['y'];
$x=$x-10;
$y=$y-10;
$per_page=10;
$page=$_GET['page'];
$photos_list = $f->photos_search(array("text"=>$text,"per_page"=>$per_page,"page"=>$page));
$counter=0;
foreach ($photos_list['photo'] as $photo) { $url="http://www.javastaff.com/flickr/resize.php?x=".$x."&y=".$y."&src=http://static.flickr.com/".$photo['server']."/".$photo['id']."_".$photo['secret']."_m.jpg";
echo "“.$url.”“.$photo[’title’].”“;
}

In questo modo abbiamo effettuato una ricerca, utilizzando un certo testo passato come GET HTTP e le dimensioni dello schermo del nostro cellulare. Questo perchè attraverso una semplice pagina php possiamo ridimensionare l’immagine, utilizzando le librerie GD


$x = $_GET["x"];
$y = $_GET["y"];
$image_URL = $_GET["src"];
$image = imagecreatefromjpeg($image_URL);
list($width, $height) = getimagesize($source_image_URL);
$resizeW = $width / $x;
$resizeH = $height / $y;
$percent = max($resizeW,$resizeH);
$new_height = round($height /$percent);
$new_width = round($width /$percent);
$dest_image = imagecreatetruecolor($new_width, $new_eight);
imagecopyresampled ($dest_image, $source_image, 0, 0, 0, 0,
$new_width, $new_eight, $width, $height);
header("Content-type: image/jpeg");
imagejpeg($dest_image);
imagedestroy($dest_image);
imagedestroy($source_image);

Tutte queste informazioni verranno passate ad un semplice client J2ME, che si occupa di inviare la ricerca, di scaricare tutte le immagini e visualizzarle

Flickete

La cosa che dovrei aggiungere è il salvataggio delle immagini su cellulare, così se uno trova un’immagine carina la può mettere come sfondo o inviarla via MMS.

L’angolo del mashup: Digg

18 June 2007 Leave a comment

Oggi vediamo come poter elaborare un pò le informazioni che mette a disposizione Digg tramite le sue API.

Gli ingredienti della ricetta sono:

Utilizzare la libreria per Digg è abbastanza semplice e intuitivo. Di seguito viene riportato il codice per recuperare le storie pubblicate su Digg in un certo intervallo di tempo

Digg d=new Digg("http://doc.javastaff.com");
StoryParameters sp=new StoryParameters();
sp.setMaxSubmitDate(System.currentTimeMillis());
sp.setMinSubmitDate(System.currentTimeMillis()-86400000);
PagedItems risultati=null;
risultati=d.getPopularStories(sp);

Come parametro iniziale la libreria richiede un APPKEY, che è praticamente una chiave per utilizzare le API. Questa chiave deve essere un URI valido, come viene nella documentazione di Digg.

Una volta recuperate le storie, possiamo stampare tutte le informazioni ad esse correlate

System.out.println(risultati.getCount());
Iterator iterator=risultati.iterator();
Story temp;
while(iterator.hasNext()) {
temp=iterator.next();
System.out.println(”Title: “+temp.getTitle());
System.out.println(”Topic: “+temp.getTopic().getName());
System.out.println(”Diggs: “+temp.getDiggs());
System.out.println(”Link: “+temp.getLink());
System.out.println(”Commenti: “+temp.getComments());
iterator.remove();
}

Ora che abbiamo questi dati possiamo tranquillamente piazzarli in un grafico realizzato con JFreeChart, dove vengono evidenziate le colonne relative ai digg e ai commenti

final DefaultCategoryDataset dataset = new DefaultCategoryDataset();
for(int j=0;j dataset.addValue(diggs[j], series1, categories[j]);
dataset.addValue(commenti[j], series2, categories[j]);
}
JFreeChart chart=ChartFactory.createBarChart3D("Digg","","",
dataset,PlotOrientation.HORIZONTAL,
true,true,false);

L’angolo del mashup: Google Maps e Weather.com

11 June 2007 Leave a comment

Nei ritagli di tempo mi piace molto giocare con le varie API dei servizi web e fare quelli che vengono dettimashup. Sfogliare siti come mashable,programmablewebxmethods fanno venire molte idee in testa (il più delle volte già fatte o strampalate :P ).
Inauguro questo angolo del mashup con Google MapsWeather.com. Il mashup è abbastanza semplice, si tratta di individuare una citta, prendere i dati relativi alle previsioni meteo, prendere anche i dati relativi a latitudine e longitudine e sbattere in una pagina le previsioni del meteo con la mappa relativa.

Per richiedere informazioni a weather.com a proposito di una città è sufficiente parsare un file XML che viene restituito, cercando i tag LOC, ID e il rispettivo valore. Qui di seguito qualche stralcio di codice PHP


$citySearch=$_GET['citySearch'];
$unit=$_GET['unit'];
$url="http://xoap.weather.com/search/search?where=".$citySearch;
if (file_exists($url)){
$data = implode('', file($url));
} else {
$fp = fopen($url,'r');
while(!feof($fp)){
$data = $data . fread($fp, 1024);
}
fclose($fp);
//SI DEVE EFFETTUARE ORA IL PARSING DELL'XML CERCANDO I TAG LOC, ID

Abbiamo così una pagina con dei link alle varie città trovate (purtroppo bisogna inserire il nome in inglese e le citta non sono chiaramente tutte quelle di questo mondo :P ). Ora bisogna parsare il file XML relativo alla città a cui siamo interessati, cercando i tag relativi alle informazioni meteo e anche alla latitudine e longitudine


$id=$_GET['id'];
$partnerId="1034244729";
$licenseKey="CHIAVE_DI_SVILUPPO_DI_WEATHER.COM";
$unit=$_GET['unit'];
$url="http://xoap.weather.com/weather/local/$id?cc=*&prod=xoap&unit=$unit&par=$partnerId&key=$licenseKey";
if (file_exists($url)){
$data = implode('', file($url));
} else {
$fp = fopen($url,'r');
while(!feof($fp)){
$data = $data . fread($fp, 1024);
}
}
fclose($fp);
$xml_parser = xml_parser_create();
xml_parse_into_struct( $xml_parser, $data, $vals, $index );
xml_parser_free( $xml_parser );
$icon_found=false;
foreach ($vals as $key => $i) {
if ($vals[$key]['tag'] == 'LAT') {
$lat=$vals[$key]['value'];
}
else if ($vals[$key]['tag'] == 'LON') {
$lon=$vals[$key]['value'];
}
else if ($vals[$key]['tag'] == 'TMP') {
$temperature=$vals[$key]['value'];
}
...
...

Infine inseriamo nella pagina dove vogliamo visualizzare informazioni sul meteo (che abbiamo nelle variabili $temperature, $humid etc. etc.) il codice per visualizzare la mappa di Google Maps, passando come latitudine e longitudine i valori presi da weather.com

JpGraph, grafici per PHP

11 June 2007 Leave a comment

Ultimamente sto giocherellando con il buon vecchio PHP e devo dire che rispetto all’ultima volta che l’ho utilizzato seriamente (diciamo un 3-4 anni) sono state sviluppate delle librerie opensource bellissime!!!

Oggi stavo cercando qualcosa per generare dei grafici, tipo JFreeChart, e mi sono imbattuto in JpGraph che ad un primo utilizzo sembra essere un’ottima libreria. Il codice che segue viene ripreso da uno degli esempi che vengono rilasciati nella distribuzione 1.x (quella compatibile con PHP 4) e serve per generare un grafico a torta tridimensionale


include_once ("../jpgraph.php");
include_once ("../jpgraph_pie.php");
include_once ("../jpgraph_pie3d.php");
$data = array(40,21,17,27,23);
$graph = new PieGraph(400,200,'auto');
$graph->SetShadow();
$graph->title->Set("3D Pie Client side image map");
$graph->title->SetFont(FF_FONT1,FS_BOLD);
$p1 = new PiePlot3D($data);
$p1->SetLegends(array("Jan (%d)","Feb","Mar","Apr","May","Jun","Jul"));
$targ=array("pie3d_csimex1.php?v=1","pie3d_csimex1.php?v=2","pie3d_csimex1.php?v=3",
"pie3d_csimex1.php?v=4","pie3d_csimex1.php?v=5","pie3d_csimex1.php?v=6");
$alts=array("val=%d","val=%d","val=%d","val=%d","val=%d","val=%d");
$p1->SetCSIMTargets($targ,$alts);
$p1->SetLabelType(1);
$p1->value->SetFormat("%d kr");
$p1->SetCenter(0.4,0.5);
$graph->Add($p1);
$graph->StrokeCSIM('pie3d_csimex1.php');

Beh carino no?!

Follow

Get every new post delivered to your Inbox.