buy cialis professional

Archive for the 'geek' Category

Get regions stats from hbase shell

June 03rd, 2014 | Category: geek

This jruby script can be used to get regions stats from our servers :

To launch this script you need to use the hbase command with script location :

  1. hbase org.jruby.Main RegionsStats.rb

The result will contain two parts :

  • count/size regions for each server
  • sorted regions by size
No comments

Linux command 20/02/2014

February 20th, 2014 | Category: geek,linux

Count number of specific character per line (our example number of tabulation)

cat file | tr -d -c '\t\n'| awk '{ print length; }'> stat

Extract strings that match a regular expression (our case string that begin with XXX and contain 9 characters)

cat input | egrep -oh 'XXX......' > output
No comments

[Solr] get list cores from your RequestHandler

January 20th, 2014 | Category: geek,java

In Solr, RequestHandler are called from a specific core.
But, there is many cases where we want to have more information from other cores.

The easist way is to get this information directly from the the request parameter. Indeed, in your handleRequestBody:

  1. @Override
  2. public void handleRequestBody(SolrQueryRequest req, SolrQueryResponse rsp) throws Exception {

Get your current core.

  1. final SolrCore core = req.getCore();

Retrieve CoreContainer using core object.
CoreContainer contain all cores, so, can be used easily to get all cores.

  1. final Collection<SolrCore> cores = core.getCoreDescriptor().getCoreContainer().getCores();

A loop can be used to display our cores.

  1. for (SolrCore solrCore : cores) {
  2.     log.info(solrCore.getName());
  3. }

;) you can call a get to retrieve a specific core

  1. SolrCore core1 = core.getCoreDescriptor().getCoreContainer().getCore("core1");
No comments

tawla ou comment les Tunisiens ont réinventé les bases de données

December 13th, 2013 | Category: geek,Tanbir

Je viens de voir cette remarque dans un site

En anglais, « tableau » est traduit par « table ». Cependant, beaucoup de ressources francophones utilisent pourtant le mot anglais « table » pour désigner un tableau, à cause de la prépondérance de l’anglais dans l’informatique.

Mais alors le fait de dire tawla est faux ?? ça craint

Les questions :
Faut il apprendre à nos ingénieurs Tunisiens le mot kwatrou ???
Faut il mettre en place un wiki pour regrouper ces expressions tunisiennes ???

PS : Amis Admin DB, je n’ai rien contre vous. Au contraire, je compatis puisque vous devez réapprendre votre métier avec l’arrivée du NoSQL (MouchSQL). Et là je m’attends au pire pour les traductions de schéma, collections, … dans le cas ou il n’y a plus de tables :D

4 comments

Influencer les votes ExpressFm avec Python

November 16th, 2012 | Category: geek,programmation

Le site ExpressFM offre une plateforme de vote basée sur une page back office se trouvant au niveau de http://www.radioexpressfm.com/ExpressBackEnd/vote.php. Cette page récupère les requêtes POST avec le paramètre radio qui indique le choix de l’électeur.

Le but de notre script est d’offrir une boucle infinie capable d’envoyer le maximum de requêtes de votes :

  1. #!/usr/bin/env python
  2. # encoding: utf-8
  3. """
  4. networkTest.py
  5.  
  6. Created by XXXXXX on 2012-11-16.
  7. Copyright (c) 2012 __MyCompanyName__. All rights reserved.
  8. """
  9.  
  10. import sys
  11. import os
  12. import httplib, urllib
  13.  
  14.  
  15. def main():
  16.         while 1==1:
  17.                 params = urllib.urlencode({‘radio’: 118})
  18.                 headers = {"Content-type": "application/x-www-form-urlencoded","Accept": "text/plain"}
  19.                 conn = httplib.HTTPConnection("www.radioexpressfm.com")
  20.                 conn.request("POST", "/ExpressBackEnd/vote.php", params, headers)
  21.                 response = conn.getresponse()
  22.        
  23.         pass
  24.  
  25.  
  26. if __name__ == ‘__main__’:
  27.         main()
  28.  
  29.  

PS : pour une raison que je ne connais pas mon éditeur de syntax a tendance à changer les quotes, à vous de les corriger avant d’exécuter le script.

3 comments

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

Spring Data – MongoDB Sample

March 08th, 2012 | Category: database,geek,OpenSource,programmation

MongoDB est un SGBDOD (système de gestion de base de données orientée documents). C’est une solution NoSQL utilisé par plusieurs sociétés telque MTV, NY-Times ou SourceForge.

L’exemple que je vais présenter est une application Maven utilisant le framework Spring Data MongoDB afin de communiquer avec le SGBDOD et de faire les requêtes de bases à savoir l’insertion, la suppression, et la recherche.

La première étape est d’ajouter les dépendances maven :

  1. <repositories>
  2.         <repository>
  3.             <id>spring-milestone</id>
  4.             <name>Spring Maven MILESTONE Repository</name>
  5.             <url>http://maven.springframework.org/milestone</url>
  6.         </repository>
  7.     </repositories>
  8.     <dependencies>
  9.         <dependency>
  10.             <groupId>junit</groupId>
  11.             <artifactId>junit</artifactId>
  12.             <version>4.8.2</version>
  13.             <scope>test</scope>
  14.         </dependency>
  15.         <dependency>
  16.             <groupId>org.springframework</groupId>
  17.             <artifactId>spring-core</artifactId>
  18.             <version>3.1.1.RELEASE</version>
  19.         </dependency>
  20.         <dependency>
  21.             <groupId>org.springframework</groupId>
  22.             <artifactId>spring-context</artifactId>
  23.             <version>3.1.1.RELEASE</version>
  24.         </dependency>
  25.         <dependency>
  26.             <groupId>org.mongodb</groupId>
  27.             <artifactId>mongo-java-driver</artifactId>
  28.             <version>2.7.3</version>
  29.         </dependency>
  30.         <dependency>
  31.             <groupId>org.springframework.data</groupId>
  32.             <artifactId>spring-data-mongodb</artifactId>
  33.             <version>1.0.1.RELEASE</version>
  34.         </dependency>
  35.         <dependency>
  36.             <groupId>cglib</groupId>
  37.             <artifactId>cglib</artifactId>
  38.             <version>2.2.2</version>
  39.         </dependency>
  40.     </dependencies>

Pour commencer, nous allons créer une classe qui représente l’objet qu’on devra stocker. Dans notre cas d’étude, ce sera la classe Personne avec les attributs id, nom et prenom.

  1. package com.nihed.mongodbdemo;
  2.  
  3. public class Personne {
  4.    
  5.     private int id;
  6.     private String nom;
  7.     private String prenom;
  8.  
  9.  
  10.     public Personne(int id, String nom, String prenom) {
  11.         this.id = id;
  12.         this.nom = nom;
  13.         this.prenom = prenom;
  14.     }
  15.     //Getter and Setter
  16.    
  17.    
  18. }

Par la suite, nous allons configurer la connexion à notre base de donnée MongoDB, nous supposons que c’est une instance de base en local sur le port de base à savoir 27017.

  1. package com.nihed.mongodbdemo;
  2.  
  3. import org.springframework.context.annotation.Configuration;
  4. import com.mongodb.Mongo;
  5. import org.springframework.data.mongodb.config.AbstractMongoConfiguration;
  6.  
  7.  
  8. @Configuration
  9. public class SpringMongoConfig extends AbstractMongoConfiguration {
  10.  
  11.     @Override
  12.     public String getDatabaseName() {
  13.         return "LocalDatabase";
  14.     }
  15.  
  16.     @Override
  17.     public Mongo mongo() throws Exception {
  18.         return new Mongo("localhost");
  19.     }
  20.    
  21. }

Enfin, voila le main avec nos exemples d’insertion suppression et recherche.

  1. package com.nihed.mongodbdemo;
  2.  
  3. import java.util.List;
  4. import org.springframework.context.ApplicationContext;
  5. import org.springframework.context.annotation.AnnotationConfigApplicationContext;
  6. import org.springframework.data.mongodb.core.MongoOperations;
  7. import org.springframework.data.mongodb.core.query.Criteria;
  8. import org.springframework.data.mongodb.core.query.Query;
  9.  
  10. /**
  11.  * Spring Data MongoDB Sample
  12.  *
  13.  */
  14. public class App {
  15.  
  16.     public static void main(String[] args) {
  17.         ApplicationContext ctx = new AnnotationConfigApplicationContext(SpringMongoConfig.class);
  18.  
  19.         MongoOperations mongoOperation = (MongoOperations) ctx.getBean("mongoTemplate");
  20.  
  21.         //Insert
  22.         {
  23.             Personne personne1 = new Personne(1, "nom1", "prenom1");
  24.             Personne personne2 = new Personne(2, "nom2", "prenom2");
  25.             mongoOperation.save(personne1);
  26.             mongoOperation.save(personne2);
  27.         }
  28.         //Select *
  29.         {
  30.             System.out.println("* select * :");
  31.             List<Personne> personnes = mongoOperation.findAll(Personne.class);
  32.             for (Personne personne : personnes) {
  33.                 System.out.println(personne.getId() + " " + personne.getNom() + " " + personne.getPrenom());
  34.             }
  35.         }
  36.  
  37.         //select where nom like %1
  38.         {
  39.             System.out.println("* select where nom=nom1 :");
  40.             List<Personne> personnes = mongoOperation.find(new Query(Criteria.where("nom").regex(".*1")), Personne.class);
  41.             for (Personne personne : personnes) {
  42.                 System.out.println(personne.getId() + " " + personne.getNom() + " " + personne.getPrenom());
  43.             }
  44.         }
  45.  
  46.         //delete where nom like %1
  47.         {
  48.             System.out.println("* delete where nom=nom1");
  49.             mongoOperation.remove(new Query(Criteria.where("nom").regex(".*1")), Personne.class);
  50.         }
  51.  
  52.         //Select *
  53.         {
  54.             System.out.println("* select * :");
  55.             List<Personne> personnes = mongoOperation.findAll(Personne.class);
  56.             for (Personne personne : personnes) {
  57.                 System.out.println(personne.getId() + " " + personne.getNom() + " " + personne.getPrenom());
  58.             }
  59.         }
  60.  
  61.     }
  62. }




1 comment

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

Apprendre Ruby et Rails

September 19th, 2011 | Category: geek,Ruby

Pour apprendre un nouveau langage de programmation rien de mieux que de l’installer :) mais par la suite il faudrait penser à chercher un bon livre et de bons tutoriels sur internet.
Aujourd’hui, je vais partager avec vous deux liens que je trouve très intéréssant et indispensable pour commencer.
Le premier, http://tryruby.org/ est un interpréteur en ligne capable de vous aider à découvrir la richesse du langage ruby.

Le deuxième est un site de formation, http://www.codeschool.com/,offrant un cour gratuit de Rails ayant pour nom Rails for Zombies. Ce cour est très bien fait pour commencer et comprendre la logique du framework Ruby on Rails.
Pour finir, il faudrait faire un tour du coté des bibliothèques pour dénicher un bon livre.

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

Next Page »