Des perles comme ça, je suis obligé de partager. Je vous préviens d’avance, y’a du niveau ! Mais je spoile pas et vous laisse découvrir.
Avouez, vous avez aimé hein ? Quand même, pour mettre ce genre de vidéo (ou pour les faire tout simplement) sur Youtube, il faut de sacrées couilles. Et elle a signé chez qui ? « Vmusic – Polydor / Universal Music » (source son myspace). Et après ils viennent se plaindre que les ventes de CD s’effondrent……………
PS : Lisez les commentaires des vidéos, y’a de pures perles.
Depuis début avril je suis en stage et je devais mettre en place une solution d’informatique décisionnelle sur base d’outils open source et de JAVA. L’application en elle même est fonctionnelle et je travaille depuis un mois maintenant à l’ajout de nouvelles fonctionnalités et à l’optimisation. Heureusement parce que le stage se termine à la fin de cette semaine. Mais vu que mon travail semble beaucoup plaire à mes boss, ça ne va pas s’arrêter là… vu que je viens de signer un contrat étudiant de deux mois ! HAPPY !
Je n’aurai donc pas de vacances, mais honnêtement je m’en fous pas mal. J’en aurai eu, je serais resté chez moi à coder/jouer/basser et surtout glander. Là je vais pouvoir continuer à développer un projet qui m’a déjà occupé 4 mois, aborder des points que j’avais laissé de coté faute de temps et surtout ça va me faire de l’argent de poche.
Par contre, j’ai un p’tit coup de blues quand même. Ca sera la première année que je ne bosserai pas en boul’/pat’ au Cora depuis près de 6 ans. Ca fait bizarre. Mais à choisir, c’est plus intéressant sur le CV, et pour moi tout simplement, de bosser dans ma branche. :)
Quand j’entends parler de robots humanoïdes, je sais pas pourquoi mais je pense directement au Japon. Alors non, je ne parle pas des mangas/animes mecha mais de vrai droides. Entre les robots danseurs ou le robot violoniste, ils ont quand même réussi à mettre au point des tas de ferraille assez impressionnants.
Mais dans tous les cas, on sent encore la rigidité de la mécanique dans les mouvements et question vitesse, faut pas être pressé. Et pourtant Toyota a mis au point un nouveau jouet :
Bon ok, c’est pas encore totalement fluide mais c’est déjà un peu plus rapide. Le fait de le voir courir sans toucher le sol (même si c’est quelques centièmes de secondes) et surtout ne pas se casser la gueule comme une daube (Asimo style) même quand il se fait pousser, je trouve ça assez énorme. On est cependant encore loin des humanoïdes qu’on peut voir dans des films comme iRobot ou AI, mais ça commence à y ressembler vaguement.
J’aime bien les outils de Pentaho : ils sont simple à prendre en main et performant. De plus, le fait d’utiliser les différents éléments composant la suite permet de les faire communiquer sans peine. On peut par exemple lancer des transformations crées sous Data Integration directement depuis BI Server sans avoir besoin de passer par DI. Très pratique pour réaliser certaines tâches à déclencher manuellement. Pour cela, il suffit simplement de créer un fichier xaction qui se charge de lancer le transformation. Le soucis c’est que peut importe comment j’essayais, ça ne fonctionnait pas.
Au final, la solution la plus simple que j’ai trouvé est de créer une classe qui se charge de lancer la transformation que je souhaite quand elle est appelée par un servlet par exemple. Voici un exemple tout bête :
package net.delistage.pentaho;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Set;
import org.apache.commons.lang.NullArgumentException;
import org.pentaho.di.core.JndiUtil;
import org.pentaho.di.core.exception.KettleException;
import org.pentaho.di.core.util.EnvUtil;
import org.pentaho.di.job.JobEntryLoader;
import org.pentaho.di.trans.StepLoader;
import org.pentaho.di.trans.Trans;
import org.pentaho.di.trans.TransMeta;
public class DataIntegrationTrans {
private String transFile = "";
private HashMap<String, String> params = null;
/**
* Constructor, set the transformation file path
*
* @param transFile
* @throws KettleException
*/
public DataIntegrationTrans(String transFile) throws KettleException {
this.transFile = transFile;
}
/**
* Initialize StepLoader by initializing the Kettle environment, StepLoader and JobEntry.
* If you use a JNDI connection into your transformation, initiliaze JndiUtil too.
* @throws KettleException
*/
public void initTrans() throws KettleException {
EnvUtil.environmentInit();
JndiUtil.initJNDI();
StepLoader.init();
JobEntryLoader.init();
}
/**
* Set parameters for the transformation
*
* @param name
* : the name of the parameter
* @param value
* : its value
*/
public void setParameterValue(String name, String value) {
if (params == null) {
params = new HashMap<String, String>();
}
params.put(name, value);
System.out.println("DataIntegrationTransManager> New parameter: '"
+ name + "'=\"" + value + "\"");
}
/**
* Execute the transformation
*
* @throws KettleException
*/
public void execute() throws KettleException {
execute(transFile);
}
/**
* Execute the transformation
*
* @param transf
* : the transfile
* @throws KettleException
*/
public void execute(String transf) throws KettleException {
if (transf.length() > 0) {
initTrans();
// TransMeta : Import the structure of the transformation
TransMeta tm = new TransMeta(transf);
// Create the transformation
Trans trans = new Trans(tm);
// Set the parameters
if (params != null && params.size() > 0) {
Set<String> keys = params.keySet();
Iterator<String> it = keys.iterator();
String k = "";
while (it.hasNext()) {
k = it.next();
trans.setParameterValue(k, params.get(k));
}
}
// Execute the transformation
trans.execute(null);
trans.waitUntilFinished();
} else {
throw new NullArgumentException(
"transFile can't be empty. Please set it before execute the transformation.");
}
}
/**
* Main is here only for testing our class before using it into a servlet.
*/
public static void main(String[] args) throws KettleException {
DataIntegrationTrans ditm = new DataIntegrationTrans("mytrans.ktr");
ditm.setParameterValue("DATE", "2009-07-01");
ditm.execute();
}
}
Je vous laisse vous référer aux commentaires dans le code pour savoir ce qu’il fait, je pense l’avoir assez bien détaillé. S’il reste des zones d’ombre, les commentaires sont à votre disposition.
Mon pauvre petit blog, je sens que quelque chose ne va pas. Je pense savoir ce que c’est. Tu te sens nu avec si peu d’articles depuis quelques temps non ? Je te délaisse et j’en suis conscient, mais il le faut. Je dois me concentrer avant tout sur les diverses choses que je repousse toujours un peu plus au point d’être finalement en retard.
Tout ça pour dire que je suis de nouveau plutôt pas mal occupé pour diverses raisons :
- Fin de mon stage qui approche à grand pas et donc dernière ligne droite, avec plein de choses à faire
- Rédaction de mon rapport de stage (done) et préparation de ma soutenance (demain)
- Socialisation avec pas mal de sorties café/bowling dernièrement. En même pas 6 mois, j’ai limite explosé mes stats des 4 dernières années.
- Quelques sorties cinéma pour aller voir Very Bad Trip, Public Ennemies ou Toy Boy (qui seront sans doute sujet à un article quand je trouverai le temps), sans compter les sorties qui restent à venir comme Harry Potter demain, ou Inglorious Bastard pour ne citer qu’eux.
Allez, la soutenance à passer et ça sera déjà une grosse épine en moins. Motivation !