dosage tegretol

Jun 3

Get regions stats from hbase shell

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

Feb 20

Linux command 20/02/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

Jan 20

[Solr] get list cores from your RequestHandler

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

Dec 19

Récupération des BokBok avec Ruby

Category: Ruby

Nous avons mis ce script ruby pour télécharger le maximum d’images BokBok du site lapresse

Ce script utilise un GET pour récupérer le flux HTTP et l’écrire dans un fichier

  1. require ‘net/http’
  2.  
  3. for i in  (1347).downto(1)
  4.     Net::HTTP.start("www.lapresse.tn") do |http|
  5.         resp = http.get("/images/upload_files/au_gre_des_jour/#{i}.jpg")
  6.         open("#{i}.jpg", "wb") do |file|
  7.             file.write(resp.body)
  8.         end
  9.     end
  10. end
  11. puts "Done."
No comments

Dec 13

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

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

Dec 12

SQL use exists instead of in

Category: programmation

In SQL, there is many way to validate if one information exist in another table (or same).
The most used/viewed call is :

  1. SELECT a FROM tablea WHERE a IN (SELECT b FROM tableb)

The problem with this call the long time of execution in case if our tables contains millions of lines.

Our solution to avoid this problem is to use the exists keyword.

  1. SELECT a FROM tablea WHERE EXISTS (SELECT b FROM tableb WHERE tablea.a = tableb.b)

Exists can help you to get result faster.

No comments

Nov 16

Influencer les votes ExpressFm avec Python

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

Sep 18

Technoparade Paris 2012

Category: Photo

L’édition 2012 de la technoparade était une occasion pour faire la fête, connaitre du monde et prendre des photos que je partage avec vous à travers mon album. http://photo.nihed.com/Technoparade-Paris-2012

No comments

Jun 7

Convert Short Url to Long Url with Java

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

Mar 15

Le scheduling avec Spring et Quartz

Une des solutions Java pour faire du scheduling est l’utilisation d’un des frameworks disponible sur le marché. La solution que j’ai testé pour vous est celle utilisant Spring et Quartz.

Pour commencer les dépendances Maven : :D

  1. <properties>
  2.         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  3.         <spring.version>3.0.1.RELEASE</spring.version>
  4.     </properties>
  5.  
  6.     <dependencies>
  7.         <dependency>
  8.             <groupId>org.springframework</groupId>
  9.             <artifactId>spring-core</artifactId>
  10.             <version>${spring.version}</version>
  11.         </dependency>
  12.         <dependency>
  13.             <groupId>org.springframework</groupId>
  14.             <artifactId>spring-context</artifactId>
  15.             <version>${spring.version}</version>
  16.         </dependency>
  17.         <dependency>
  18.             <groupId>org.springframework</groupId>
  19.             <artifactId>spring-context-support</artifactId>
  20.             <version>${spring.version}</version>
  21.         </dependency>
  22.         <dependency>
  23.             <groupId>org.springframework</groupId>
  24.             <artifactId>spring-tx</artifactId>
  25.             <version>${spring.version}</version>
  26.         </dependency>
  27.         <dependency>
  28.             <groupId>org.quartz-scheduler</groupId>
  29.             <artifactId>quartz</artifactId>
  30.             <version>1.8.5</version>
  31.         </dependency>
  32.         <dependency>
  33.             <groupId>junit</groupId>
  34.             <artifactId>junit</artifactId>
  35.             <version>3.8.1</version>
  36.             <scope>test</scope>
  37.         </dependency>
  38.     </dependencies>

Par la suite, nous allons définir l’objet qui sera utilisé par notre Scheduler.

  1. package com.nihed.cronapplication.task;
  2.  
  3. import java.util.Date;
  4.  
  5. public class Task1 {
  6.  
  7.     public void runTask() {
  8.         System.out.println("Task1 "+new Date());
  9.     }
  10. }

Puis, nous allons écrire le fichier de configuration de Spring ou nous avons configurer l’exécution de la méthode runTask toutes les 5 secondes. Pour cela, nous avons utilisé une écriture qui ressemble Cron “0/5 * * * * ?”

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <beans xmlns="http://www.springframework.org/schema/beans"
  3.        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4.  
  5.        xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
  6. ">
  7.    
  8.     <!– Trigger 1 –>
  9.     <bean id="task1" class="com.nihed.cronapplication.task.Task1" />
  10.    
  11.     <bean id="jobTask1" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean" >
  12.         <property name="targetObject" ref="task1" />
  13.         <property name="targetMethod" value="runTask"/>
  14.         <property name="concurrent" value="false" />
  15.     </bean>
  16.     <!– lancement tous les 5 secondes –>
  17.     <bean id="cronTrigger1" class="org.springframework.scheduling.quartz.CronTriggerBean">
  18.         <property name="jobDetail" ref="jobTask1" />
  19.         <property name="cronExpression" value="0/5 * * * * ?" />
  20.     </bean>
  21.    
  22.     <!– Scheduler Configuration –>
  23.     <bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
  24.         <property name="triggers" >
  25.             <list>
  26.                 <ref bean="cronTrigger1"/>
  27.             </list>
  28.         </property>
  29.     </bean>
  30.  
  31.    
  32. </beans>

Enfin, un petit main pour tester notre application.

  1. package com.nihed.cronapplication;
  2.  
  3. import org.springframework.context.support.ClassPathXmlApplicationContext;
  4.  
  5. public class App
  6. {
  7.     public static void main( String[] args )
  8.     {
  9.         new ClassPathXmlApplicationContext("SpringXMLConfig.xml");
  10.  
  11.     }
  12. }

No comments

Next Page »