Une petite info qui n'a rien à voir avec l'informatique pour une fois.
Aux tuileries du 25 au 29 mai aura lieu une exposition sur les jardins et les designs extérieurs.
Voici une des expositions à découvrir absolument :
http://soufflez-du-vert.github.com/ (site prochainement accessible)
Et oui le site est hébergé par Github ;)
Libellés
- jvm (22)
- groovy (16)
- linux (16)
- java (12)
- debian (7)
- javascript (4)
- rest (4)
- selenium (4)
- webservice (4)
- maven (3)
- wmfs (3)
- .htaccess (2)
- X (2)
- chmod (2)
- css (2)
- firefox (2)
- har (2)
- idea (2)
- jersey (2)
- json (2)
- mysql (2)
- nodejs (2)
- php (2)
- selenium 2 (2)
- ubuntu (2)
- umask (2)
- user (2)
- AS (1)
- BGP (1)
- Commons-email (1)
- GBench (1)
- IDE (1)
- Immutable (1)
- PHPSESSID (1)
- agpl (1)
- arch (1)
- basic (1)
- benchmark (1)
- bsd (1)
- certificats (1)
- classLoader (1)
- client (1)
- cloud9 (1)
- coller (1)
- copier (1)
- creative commons (1)
- curl (1)
- database (1)
- dig (1)
- dns (1)
- dsl (1)
- dump (1)
- email (1)
- find (1)
- flash (1)
- github (1)
- gpl (1)
- grails (1)
- grant (1)
- html (1)
- https (1)
- identified (1)
- image (1)
- internet (1)
- jackson (1)
- jaxrs (1)
- jdbc (1)
- layout (1)
- lenny (1)
- less (1)
- lgpl (1)
- link (1)
- local (1)
- markdown (1)
- mavencentral (1)
- mercurial (1)
- minify (1)
- mit (1)
- moteur de recherche (1)
- npm (1)
- objet (1)
- open source (1)
- ovh (1)
- pagespeed (1)
- pandoc (1)
- parcellite (1)
- parser (1)
- peering (1)
- perl (1)
- profile (1)
- rails (1)
- regex (1)
- repository (1)
- rhino (1)
- rsync (1)
- ruby (1)
- réseau (1)
- sbt (1)
- scala (1)
- scaling (1)
- scla (1)
- script (1)
- sed (1)
- selection (1)
- selenium junit4 maven (1)
- seo (1)
- shell (1)
- singleton (1)
- site (1)
- string (1)
- sudo (1)
- tcp (1)
- tcpflow (1)
- template (1)
- thumbnail (1)
- topcoder (1)
- traceroute (1)
- uglifyJs (1)
- unix (1)
- url (1)
- utf8 (1)
- vi (1)
- vows (1)
- web (1)
- webdriver (1)
- xrandr (1)
- xvfb (1)
- yslow (1)
lundi 16 mai 2011
lundi 9 mai 2011
Dig en Java
DNSJava est une API JAVA permettant de faire des résolutions de domaines.
DNSJava offre également une implémentation équivalente à dig (voir les sources)
Si vous souhaitez parser le contenu d'un DIG en Java pour récupérer les IPs des serveurs, je vous conseil plutôt d'utiliser l'API de DNSJava.
Vous aurez une représentation objet du DIG qui vous permettra de ne récupérer que ce qui vous intéresse vraiment.
Voici un exemple écrit en groovy qui fait l'équivalent d'un 'dig google.com'
Et voici le résultat affiché :
DNSJava offre également une implémentation équivalente à dig (voir les sources)
Si vous souhaitez parser le contenu d'un DIG en Java pour récupérer les IPs des serveurs, je vous conseil plutôt d'utiliser l'API de DNSJava.
Vous aurez une représentation objet du DIG qui vous permettra de ne récupérer que ce qui vous intéresse vraiment.
Voici un exemple écrit en groovy qui fait l'équivalent d'un 'dig google.com'
import org.xbill.DNS.*;
@Grab(group='dnsjava', module='dnsjava', version='2.1.1')
SimpleResolver res = new SimpleResolver();
Record rec = Record.newRecord(Name.fromString("google.com", Name.root), Type.A, DClass.IN);
Message query = Message.newQuery(rec);
Message response = res.send(query);
println("----------------------------------------------------------");
for (Record record : response.getSectionArray(1)) { // ANSWER SECTION
println(record.rdataToString());
}
println("----------------------------------------------------------");
println(response.toString()); //THE WHOLE DIG
Et voici le résultat affiché :
--------------------------------------------------------
209.85.227.106
209.85.227.103
209.85.227.105
209.85.227.104
209.85.227.99
209.85.227.147
--------------------------------------------------------
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 53158
;; flags: qr rd ra ; qd: 1 an: 6 au: 0 ad: 0
;; QUESTIONS:
;; google.com., type = A, class = IN
;; ANSWERS:
google.com. 300 IN A 209.85.227.106
google.com. 300 IN A 209.85.227.103
google.com. 300 IN A 209.85.227.105
google.com. 300 IN A 209.85.227.104
google.com. 300 IN A 209.85.227.99
google.com. 300 IN A 209.85.227.147
;; AUTHORITY RECORDS:
;; ADDITIONAL RECORDS:
;; Message size: 124 bytes
vendredi 15 avril 2011
Grails thumbnail : Reduire une image dans grails en gardant une bonne qualité
En java ce n'est pas forcement facile de trouver une librairie pour réduire des images en gardant une bonne qualité.
Heureusement il existe le projet Java Image Scaling qui a sa librairie sur maven.
http://code.google.com/p/java-image-scaling/
Maintenant voici comment intégrer Java Image Scaling dans grails : un jeu d'enfant :)
Ajouter la dépendance suivante dans grails-app/conf/BuildConfig.groovy
Dans votre controller ajoutez le bout de code suivant :
Heureusement il existe le projet Java Image Scaling qui a sa librairie sur maven.
http://code.google.com/p/java-image-scaling/
Maintenant voici comment intégrer Java Image Scaling dans grails : un jeu d'enfant :)
Ajouter la dépendance suivante dans grails-app/conf/BuildConfig.groovy
runtime 'com.mortennobel:java-image-scaling:0.8.5'
Dans votre controller ajoutez le bout de code suivant :
/**
* Return the content of screen shot
*/
def viewScreen = {
File img = new File("myImage.png")
response.contentType = 'image/png'
if(params.thumbnail){
BufferedImage inputImage = ImageIO.read(img);
BufferedImage rescaledImage = new MultiStepRescaleOp(DimensionConstrain.createMaxDimension(355,500)).filter(inputImage, null);
def outputStream = new ByteArrayOutputStream()
ImageIO.write(rescaledImage, "png", outputStream);
response.outputStream << outputStream.toByteArray()
}else{
response.outputStream << img.bytes
}
}
jeudi 14 avril 2011
Firefox4 (Iceweasel4) sur Debian Squeeze
La méthode est simple il suffit de saisir les commandes suivantes sous root :
echo "deb http://mozilla.debian.net/ squeeze-backports iceweasel-4.0" > /etc/apt/sources.list.d/firefox.list
apt-get update
apt-get install iceweasel
Selenium JUnit4 et Maven
Voici un exemple de test Junit qui démarre un Serveur Selenium puis execute un ensemble de tests.
Je prefère ce type de configuration, plutôt que d'écrire 50 lignes de XML dans maven afin de lancer un serveur selenium : http://blog.xebia.fr/2011/02/18/automatiser-les-tests-selenium-avec-maven/
Voici mes dépendances maven :
Je prefère ce type de configuration, plutôt que d'écrire 50 lignes de XML dans maven afin de lancer un serveur selenium : http://blog.xebia.fr/2011/02/18/automatiser-les-tests-selenium-avec-maven/
import com.thoughtworks.selenium.DefaultSelenium;
import org.junit.*;
import org.openqa.selenium.server.SeleniumServer;
import static org.junit.Assert.*;
public class DemoTest {
private static SeleniumServer server;
private DefaultSelenium selenium;
@BeforeClass
public static void startSeleniumServer() throws Exception {
System.out.println("START Selenium Server");
server = new SeleniumServer();
server.start();
}
@Before
public void fixture() {
selenium = new DefaultSelenium("localhost", 4444, "*firefox" , "http://google.fr/");
selenium.start();
}
@Test
public void testWhatYouWant() throws Exception {
...
}
@Test
public void testWhatYouWant2() throws Exception {
...
}
@After
public void tearDown() throws Exception {
selenium.stop();
}
@AfterClass
public static void stopSeleniumServer() throws Exception {
server.stop();
}
}
Voici mes dépendances maven :
<dependencies>
<dependency>
<groupid>junit</groupid>
<artifactid>junit</artifactid>
<version>4.8.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupid>org.seleniumhq.selenium</groupid>
<artifactid>selenium-server</artifactid>
<version>2.0b3</version>
</dependency>
<dependency>
<groupid>org.seleniumhq.selenium</groupid>
<artifactid>selenium-remote-control</artifactid>
<version>2.0b3</version>
</dependency>
</dependencies>
jeudi 24 mars 2011
Script SQL en Groovy
Voici un exemple de script Groovy se connectant sur une base de donnée MySQL avec Groovy Grape :
C'est très pratique pour debugguer les erreurs du type :
import org.springframework.jdbc.datasource.SimpleDriverDataSource;
import org.springframework.jdbc.core.JdbcTemplate;
import javax.sql.DataSource;
@GrabConfig(systemClassLoader=true)
@Grab(group='mysql', module='mysql-connector-java', version='5.1.6')
@Grab(group='org.springframework', module='spring-jdbc', version='3.0.5.RELEASE')
DataSource dataSource = new SimpleDriverDataSource(
Class.forName("com.mysql.jdbc.Driver").newInstance(),
"jdbc:mysql://localhost:3306/myDatabase",
"login",
"password");
JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);
println jdbcTemplate.queryForList( """SELECT 1;""" )
C'est très pratique pour debugguer les erreurs du type :
Caught: org.springframework.jdbc.CannotGetJdbcConnectionException: Could not get JDBC Connection; nested exception is com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure
Last packet sent to the server was 0 ms ago.
at test.run(test.groovy:19)
jeudi 10 mars 2011
Parcellite copier-coller : synchroniser la selection avec le presse papier
Dans linux il existe deux espaces pour faire des copier coller :
- la selection du curseur pour copier et clique du miileu (ou Shift Inser) pour coller
- et le presse papier : Ctrl + C pour copier et Ctrl + V pour coller
Mais si on se trouve sur un portable avec l'impossibilité de faire un clique du milieu pour coller la selection et l'impossibilité de faire un Ctrl + C pour copier on se retrouve bien coincé.
Le cas typique est celui de coller dans un navigateur web un selection faite sous xterm . Xterm ne permet pas de copier dans le presse papier, et google-chrome comme firefox ne colle pas le contenu de la selection lors d'un Shift - Inser.
La solution existe. Il suffit d'utiliser parcellite :
Ensuite il suffit simplement de configurer parcellite :
Puis de le lancer en tache de fond
- la selection du curseur pour copier et clique du miileu (ou Shift Inser) pour coller
- et le presse papier : Ctrl + C pour copier et Ctrl + V pour coller
Mais si on se trouve sur un portable avec l'impossibilité de faire un clique du milieu pour coller la selection et l'impossibilité de faire un Ctrl + C pour copier on se retrouve bien coincé.
Le cas typique est celui de coller dans un navigateur web un selection faite sous xterm . Xterm ne permet pas de copier dans le presse papier, et google-chrome comme firefox ne colle pas le contenu de la selection lors d'un Shift - Inser.
La solution existe. Il suffit d'utiliser parcellite :
apt-get install parcellite
Ensuite il suffit simplement de configurer parcellite :
$ cat .config/parcellite/parcelliterc [rc] use_copy=true use_primary=true synchronize=true save_history=true history_limit=25 hyperlinks_only=false confirm_clear=false single_line=true reverse_history=false item_length=50 ellipsize=2 history_key=actions_key= H menu_key= A P
Puis de le lancer en tache de fond
parcellite &
Inscription à :
Articles (Atom)