buy cialis professional

Archive for the 'Web' Category

Convert Short Url to Long Url with Java

June 07th, 2012 | Category: geek,java,twitter

Wikipedia :

Twitter is an online social networking service and microblogging service that enables its users to send and read text-based posts of up to 140 characters, known as “tweets”.

In microbloging service like Twitter , User must limit the text to 140 characters and URL can be some time very long. Some compagnies(Bitly, TinyURL,…) offer service to reduce your URL with a result like this http://bit.ly/lO2Pan.

In some situation, you have to transform short url to the original to analyse some tweets. For this, technically, you must follow the redirection to get this URL. My solution is to have a loop reading the content of the header and to be more specific the field location until the last URL.

The result :

  1. package com.nihed.tools;
  2.  
  3. import java.io.IOException;
  4. import java.net.HttpURLConnection;
  5. import java.net.MalformedURLException;
  6. import java.net.URL;
  7. import java.net.URLConnection;
  8.  
  9. /**
  10.  *
  11.  * @author Nihed MBAREK
  12.  */
  13. public class UrlTools {
  14.  
  15.     public static String getLongUrl(String shortUrl) throws MalformedURLException, IOException {
  16.         String result = shortUrl;
  17.         String header;
  18.             do {
  19.                 URL url = new URL(result);
  20.                 HttpURLConnection.setFollowRedirects(false);
  21.                 URLConnection conn = url.openConnection();
  22.                 header = conn.getHeaderField(null);
  23.                 String location = conn.getHeaderField("location");
  24.                 if (location != null) {
  25.                     result = location;
  26.                 }
  27.             } while (header.contains("301"));
  28.  
  29.         return result;
  30.     }
  31. }

Now, you can call this method in your class like this :

  1. String result = UrlTools.getLongUrl("http://bit.ly/lO2Pan");

ps: waiting for your questions :)


4 comments

Calendrier de vacances avec Java

January 07th, 2012 | Category: geek,java,Web

Le but de mon code est de vous permettre d’avoir une visibilité sur les jours de vacances en France dans vos applications et surtout l’utilisation d’un référentiel des jours fériés qui est Google Calendar.

Pour cela, nous allons récupérer à travers le service de google un fichier au format ICS contenant la liste des événements tout au long de l’année courante.

Après une petite recherche sur google, nous arrivons sur le projet iCal4j offrant une petite bibliothèque capable de nous aider à exploiter les fichiers ICS.

Pour l’utilisation de cette Bibliothèque, nous l’avons ajouté dans nos dépendances maven à travers le code suivant :

  1. <dependency>
  2.    <groupId>org.mnode.ical4j</groupId>
  3.    <artifactId>ical4j</artifactId>
  4.    <version>1.0.2</version>
  5. </dependency>



Par la suite cette petite application en guise de démonstration.

  1. package com.nihed;
  2.  
  3. import java.io.InputStream;
  4. import java.net.URL;
  5. import java.text.SimpleDateFormat;
  6. import java.util.Date;
  7. import java.util.Iterator;
  8. import net.fortuna.ical4j.data.CalendarBuilder;
  9. import net.fortuna.ical4j.model.Calendar;
  10. import net.fortuna.ical4j.model.Component;
  11. import net.fortuna.ical4j.model.Property;
  12.  
  13. /**
  14.  * @author Nihed MBAREK
  15.  * @version 0.1
  16.  *
  17.  */
  18. public class App {
  19.    
  20.     //Initialisation des constantes
  21.     public static final String DATE_BEGIN = "20120101";
  22.     public static final String DATE_END = "20121231";
  23.     public static final String DD_MM_YYYY = "dd/MM/yyyy";
  24.     public static final String DTSTART = "DTSTART";
  25.     public static final String GOOGLE_URL = "https://www.google.com/"
  26.             + "calendar/ical/"
  27.             + "fr.french%23holiday%40group.v.calendar.google.com"
  28.             + "/public/basic.ics";
  29.     public static final String SUMMARY = "SUMMARY";
  30.     public static final String pattern = "yyyyMMdd";
  31.  
  32.     public static void main(String[] args) {
  33.         try {
  34.             //Init
  35.             final Date dateEnd = (new SimpleDateFormat(pattern)).parse(DATE_END);
  36.             final Date dateBegin = (new SimpleDateFormat(pattern)).parse(DATE_BEGIN);
  37.  
  38.             //Mise en place du stream pour la récupération du fichier ICS
  39.             final InputStream stream = new URL(GOOGLE_URL).openStream();
  40.             CalendarBuilder builder = new CalendarBuilder();
  41.             //Consommation du Stream et remplissage de l’objet calendar
  42.             Calendar calendar = builder.build(stream);
  43.             //Parcour du calendar pour récuperer les évenements
  44.             for (Iterator it = calendar.getComponents().iterator(); it.hasNext();) {
  45.                 Component component = (Component) it.next();
  46.                 //Récupération de la date de l’evènement
  47.                 //à travers la propriété DTSTART
  48.                 final String dtStartValue = component.getProperty(DTSTART).getValue();
  49.                 //Récupération du déscriptif de l’evènement
  50.                 //à travers la propriété SUMMARY
  51.                 final String summaryValue = component.getProperty(SUMMARY).getValue();
  52.                 Date dateEvent = (new SimpleDateFormat(pattern)).parse(dtStartValue);
  53.                 //Test si la date est bien dans notre interval
  54.                 if (dateEvent.after(dateEnd) || dateEvent.before(dateBegin)) {
  55.                     continue;
  56.                 }
  57.                 //Converstion de la date dans un format plus convivial
  58.                 String dateStartValue = (new SimpleDateFormat(DD_MM_YYYY)).format(dateEvent);
  59.                 //Affichage de notre message
  60.                 System.out.println(summaryValue + " tombe le " + dateStartValue + "\n");
  61.             }
  62.  
  63.         } catch (Exception ex) {
  64.             ex.printStackTrace();
  65.         }
  66.     }
  67. }
  68.  



J’espère que le code est clair, sinon je suis disponible pour répondre à vos commentaires.


No comments

Google +1

June 02nd, 2011 | Category: geek,Web

Google offre enfin le moyen pour les utilisateurs du web d’inclure dans leurs pages le fameux “+1″ capable de rendre le moteur de recherche plus à l’écoute de ses utilisateurs.
Pour cela, il faut passer par la page http://www.google.com/intl/fr/webmasters/+1/button/ ou vous pourriez configurer votre bouton. Par la suite
l’ajouter à vos page à travers une section pour le header :

  1. <script type="text/javascript" src="http://apis.google.com/js/plusone.js"></script>

et une autre pour votre contenu :

  1. <g:plusone></g:plusone>

Pour ce qui est de WordPress, j’ai ajouté pour pouvoir dynamiser l’url au niveau Main Index Template(de mon contenu):

  1. <g:plusone size="medium" href="<?php the_permalink() ?>"></g:plusone>

Sinon une section plusones est disponible au niveau des profils Google pour pouvoir avoir une idée sur les votes d’une personne https://profiles.google.com/nihedmm/plusones.

No comments

Facebook Graph with Ruby

November 18th, 2010 | Category: Facebook,Ruby

The Open Graph protocol enables developers to integrate their pages into the social graph. These pages gain the functionality of other graph objects including profile links and stream updates for connected users. Documentations for facebook api are available on this link.
Ruby offer a library to communicate with Facebook Graph named “rfgraph”.
To install :

  1. $ sudo gem install rfgraph

Next, you can write your code. We will use this library to retrieve user information for a range of id. For this, we will create a loop from 610552189 ( my id) to 610552219 (another id) and show available information :

  1. require ‘rubygems’
  2. require ‘rfgraph’
  3.  
  4. req = RFGraph::Request.new
  5.  
  6. for i in 610552189..610552219 do
  7.   begin
  8.     res= req.get_object(i)
  9.     puts "#{res['id']} #{res['name']} #{res['first_name']} #{res['last_name']}"+
  10.       " #{res['gender']} #{res['locale']} #{res['link']}"
  11.   rescue Exception=>e
  12.   end
  13. end

and the result will be :

  1. 610552189 Nihed Mbarek Nihed Mbarek male fr_FR http://www.facebook.com/nihed.mbarek
  2. 610552198 Stephanie Pedrin Stephanie Pedrin  es_LA http://www.facebook.com/stephanie.pedrin
  3. 610552201 Roz Rossington Roz Rossington female en_GB http://www.facebook.com/people/Roz-Rossington/610552201
  4. 610552204 Timbucktwo Hair Timbucktwo Hair  en_US http://www.facebook.com/people/Timbucktwo-Hair/610552204
  5. 610552207 Arkoun Merchant Arkoun Merchant male en_US http://www.facebook.com/arkoun
  6. 610552210 Gulcin Takmaz Gulcin Takmaz female en_GB http://www.facebook.com/people/Gulcin-Takmaz/610552210
  7. 610552213 Lara Mezzanotte Lara Mezzanotte  en_US http://www.facebook.com/people/Lara-Mezzanotte/610552213
  8. 610552217 Kita Collier-Smith Kita Collier-Smith female en_US http://www.facebook.com/people/Kita-Collier-Smith/610552217

For more information :
https://github.com/conorh/rfgraph

PS : I hope that facebook block user that try to retreive a large number of information.

1 comment

Foursquare API with Ruby

November 17th, 2010 | Category: foursquare,Ruby

Foursquare now is the most important location-based social network and used by many of my contacts. And Ruby, like for every social network offer libraries that can help developer to be more productive. Foursquare is now available as an API using basic authentication or Oauth, for more information documentation.
For Library, GEM’s are available, one of them “foursquare-ruby-api” can do for you what you want.
To install :

  1. $ sudo gem install foursquare-ruby-api

Next, you can write your code to do what you want.
To begin this sample, we must know some useful methods :

  • Checkins : Returns a list of recent checkins from friends.
  • Check-in : Allows you to check-in to a place.
  • History : Returns a history of checkins for the authenticated user.

For more information, Very rich documentation are available with ideas about parameters and results structures.
And our Example will be a list of recent checkins from our friends:

  1. require ‘rubygems’
  2. gem (‘foursquare-ruby-api’)
  3. require ‘foursquare’
  4. fq = Foursquare.new(‘email’,‘password’)
  5. # fq.test is optional to test our connexion
  6. fq.test
  7. fq.checkins()[‘checkins’][‘checkin’].each do |f|
  8.    puts f[‘display’]+"   "+f[‘created’]
  9. end
  10.  

For more information :
http://rubygems.org/gems/foursquare-ruby-api

PS: This api can be used as a hack to be mayor for many places from your house or office :D

3 comments

Twitter Search with Ruby

November 16th, 2010 | Category: Ruby,twitter

Ruby is one of the most powerful language with the number of GEM’s (Packages) that can be used to connect on every component of internet.
For twitter, GEM’s are available, one of them “twitter” can do for you what you want.
To install :

  1. $ sudo gem install twitter

Next, you can write your code to do what you want (Search for our example) .
To begin this sample, we must know some useful option for search :

  • from(“XXXX”) : to define the sender of our messages
  • to(“XXXX”) : to define the receiver of our messages
  • since_date(“YYYY-MM-DD”) : to get tweets after a given date

For more information : http://rdoc.info/github/jnunemaker/twitter/master/Twitter/Search
And our code will be :

  1. require ‘rubygems’
  2. require ‘twitter’
  3. #search for the word nihed since 01/11/2010
  4. Twitter::Search.new(‘nihed’).since_date("2010-11-01").each do |r|
  5.   puts r.from_user+": "+r.text+"\n\n"
  6. end

Like we can see, with ruby, we have a simple and beautiful code.
For more information :
http://twitter.rubyforge.org/
Twitter Search API Method

1 comment

Une nuit Parisienne (Paris by night)

September 10th, 2010 | Category: Video,Web

Une nuit Parisienne (Paris by night) from manemos on Vimeo.

Après New York et Tokyo voilà une vidéo montrant Paris la nuit. Les artistes ont utilisé un appareil canon 50D pour faire cette prouesse. Rien à dire, Paris est une très belle ville.

3 comments

Drupal Gardens

August 08th, 2010 | Category: Drupal,geek,Web

Drupal voudrait faire sa propre plateforme d’hébergement de site comparable à WordPress. Cette plateforme vient d’être lancé en utilisant la dernière version 7 dont nous avons parlé l’autre fois dans ce blog à l’occasion du test de la version alpha 1.
Jusqu’à maintenant, le site est encore en version beta mais offre déjà une panoplies d’options capable de fournir à l’internaute expert un moyen de mettre en place un plateforme plus puissante que les blogs.
Pour ma part, j’ai testé cette platforme pour faire un petit site avec blog, news et contact. J’ai remarqué que presque toutes ces options était disponible sans aucun problème.
Pour ce qui est du design, drupal offre un système de thème qui peuvent être personnalisés en utilisant les fichiers CSS.
Pour finir, Drupal est l’un des meilleurs CMS PHP et a su montré son potentiel dans des grands projets chez Sony, la maison blanche ou MTV mais est ce qu’il va réussir à conquérir le grand public ??

Lien pour mon site de test : http://nihed.drupalgardens.com/

No comments

Google Fête la coupe du monde

July 11th, 2010 | Category: Web

Google change de logo pour annoncer le match de la finale de la coupe du monde mais la question est ce qu’ils vont nous offrir un logo pour le gagnant :) réponse dans quelques heures.

Update : L’Espagne a gagné la coupe du monde et pas de mise à jour avec son drapeau.

No comments

Drupal 7 alpha 1

January 23rd, 2010 | Category: OpenSource,php,Web
drupal 7

La première version alpha de Drupal 7 est disponible, il reste encore des bugs à corriger (493 aux dernières nouvelles). Mais sinon, je trouve que le projet nous offre un très beau produit, avec des animations ajax à droite et à gauche. Le thème d’administration a vu une refonte total. On parle de possibilité de mise à jour automatique comme sur wordpress. une facilité pour l’insertion d’images au niveau des articles. et plein d’autres nouveautés.
Je voudrai signaler que pour les utilisateurs de fedora si vous avez un problème avec php dom il faut installer le package php-xml
sinon un tutoriel est déjà disponible au niveau de ce lien :
http://blog.admin-linux.org/cms-blog/howto-install-drupal-7

3 comments

Next Page »