Petit bout de code qui vaut son pesant d’or :
separateur = '';
for(String valeur : ListeDeString){
chaineAvecVirgules = separateur + valeur;
separateur = ',';
}
Let's change the world together
Petit bout de code qui vaut son pesant d’or :
separateur = '';
for(String valeur : ListeDeString){
chaineAvecVirgules = separateur + valeur;
separateur = ',';
}
Posted in /home/coding.
– 12 June 2011
Après avoir cédé à la tentation Amazon, voici la les livres qui traînent sur mon chevet:
-Effective JAVA- Joshua BLOSH
-The 4-hour workweek, Timothy Ferriss
-Getting Real, The smarter, faster, easier way to build web applications - 37signals
Bonne lecture !
Posted in /dev/null, /home/coding.
– 12 June 2011
Dropbox est un service de sauvegarde et partage de données. Cependant, certains peuvent être réticents quant à devoir partager des données sensibles avec une entreprise tiers, qui plus est, se protège en cas de défaillance du système (cf. paragraphe Limitation of Liability). D’autres se diront que 2Go gratuits, ça va très vite si les fichiers sont gros…
Ce que je vous propose consiste à créer votre propre dropbox avec un serveur que vous possédez (dédié ou autre) et de réaliser le principe suivant: je drag&drop dans un répertoire -> je veux avoir la sauvegarde sur mon serveur.
Pour se faire, il faudra:
- créer le service d’écoute du répertoire
-rsync d’installer pour effectuer les sauvegardes
-ssh pour effectuer les transferts
Le service d’écoute
Le service d’écoute permet juste de notifier d’un évènement sur notre répertoire de partage. Quand il capturera un évènement, il demandera tout simplement à rsync de réaliser la synchro du dossier.
Pour se faire, on peut soit faire du polling sur notre répertoire à intervalle régulier, soit capturer les événements systèmes concernant le répertoire. La seconde solution est plus propre, ne prend pas la main sur le CPU inutilement et permet d’avoir un temps de réaction instantané.
Dans un soucis de portabilité de la méthode et ayant une préférence pour Java, je vous propose donc de réaliser ce service d’écoute en utilisant l’API WatchService de fournit nativement par le JDK 7 . L’atout de cet API est de répondre exactement au besoin. C’est à dire que si le système de fichier présente un mécanisme de notification d’évènement, il l’utilisera directement, sinon il fera du polling (coûteux en temps CPU) pour réaliser l’écoute.
Pour se faire, il suffit de reprendre l’exemple de base disponible ici et de lui ajouter ce petit bout de code avec les arguments qui vont bien:
static void fireRsync(String ldir, String rdir){
Process proc;
try {
proc = Runtime.getRuntime().exec("rsync -avz -e ssh "+ldir+" "+rdir);
BufferedReader read=new BufferedReader(new InputStreamReader(proc.getInputStream()));
while(read.ready()){
System.out.println(read.readLine());
}
} catch (IOException e) {
e.printStackTrace();
}
}
Le répertoire distant de base devra être préalablement créé: /home/user/mydropbox.
Il suffira ensuite de générer le fichier jar, de le rendre exécutable (avec chmod sous Linux), et de le mettre au démarrage de l’OS. Etant donné que cette étape est spécifique à l’OS, la manipulation ne sera pas décrite ici.
usage: /opt/jdk1.7.0/bin/java -jar WatchDir.jar -r localdir/ user@serveur.fr:/home/user/mydropbox/
Rsync et SSH
Rsync est une application de synchronisation de fichiers permettant de réaliser des backup de façon efficace. La force de Rsync réside dans le fait que si le fichier à synchroniser sur le serveur distant existe déjà, il sera alors découpé en morceaux, et seuls les morceaux différents transiteront pas le réseau. Cette méthode diminue considérablement les temps de transferts plutôt que de renvoyer l’intégralité du fichier.
Ainsi, chaque fois qu’une notification de changement est déclenchée sur un fichier, alors la commande suivante est effectuée:
rsync -avz -e ssh remoteuser@remotehost:/repertoire/distant /repertoire/local
Afin d’effectuer le mécanisme automatiquement sans qu’SSH ne demande de mot de passe à chaque fois, il suffit d‘installer sa clé sur le serveur SSH distant.
Liens utiles
Posted in /dev/ideas, /home/coding.
– 20 November 2010
GÉOpedia serait une plateforme collaborative de géolocalisation d’événements dans le but de fournir des cartes “sociales” de statistiques.
Posted in /dev/ideas.
– 19 September 2010
Sans doute la meilleure présentation de ce bijou que j’ai pu voir trainer sur le net…
Concernant ses défauts… il y en a. Bon je suis actuellement sur Android 2.1 mais une chose que j’aimerais voir sur la 3.0 Gingerbread, c’est de pouvoir avoir le menu principal et l’écran principal à l’horizontale également quand je tourne mon téléphone. Sinon à part ça, après un mois d’utilisation, il est parfait ^^
Posted in Non classé.
– 30 June 2010
C’est bien la première fois que j’assiste à un tel événement. Ce n’est pas ma première conférence dû au fait de mes études à Fontainebleau et loin d’être la dernière. Tout d’abord, il faut le dire, ils ont assuré au niveau du buffet… Les toasts de paté de je ne sais quoi … perfect !! Ensuite, il y avait du beau monde, inconnu pour ma part mais apparemment de grands noms. Passons maintenant au contenu. J’ai assisté à 6 conférences sur 8 et voilà ce qui en ressort de façon briève:
L’open source en France – Sacha Labourey et Marc Fleury(créateur de JBoss)
L’intervenant a passé en revue 4 profils concernés:
Il doit faire attention à ne pas se survendre notamment en vendant du support, qui n’est pas forcément son fort. Il nous a raconté une anecdote d’un contrat qu’il aurait signé en omettant de définir la durée de fin du contrat.
Le point le plus intéressant. Il faut définir le plan de monétisation dès le départ (Licence OEM, plugins,etc.) et surtout, rester fidèle à ses engagements initiaux. Autrement, il peut s’en découler un dégout de la part de la communauté si les engagements faits ne sont pas respectés et enfin un abandon du projet.
En conclusion, “il est très facile de faire de la merde gratuitement” mais ce qui fera la plus-value d’un logiciel libre est sa QUALITÉ. Il a ajouté qu’il faut se méfier de la dual licence.
Comment Obeo est devenu membre stratégique de la fondation Eclipse – Etienne Juliot
Ici, il nous a été présenté la société Obeo avec son outil Accéléo, facilitant le développement depuis des DSL (Domain-Specific Languages).
Il s’en est dit globalement la même chose sans pour autant que les intervenants se soient contacté au préalable, à savoir qu’il faut définir une stratégie dès le départ par soucis d’honnêteté envers la communauté. Le business model choisi par Obeo a été une stratégie service, puis une stratégie produit. Elle fait partie du consortium OW2 et a dû passé de la licence GPL à la EPL (Eclipse) du fait de sa relation étroite avec Eclipse.
Pour finir, Obéo a su profiter pour établir sa R&D d’un centre de compétitivité et a établi des liens avec les chercheurs(cf. OPEES, Open Platform for the Engineering of Embedded Systems). Enfin, il a été souligné que faire partie de la fondation Eclipse apporte un markéting worlwide non négligeable
Développons en Java - Jean-Michel Doudoux
Le site http://www.jmdoudoux.fr parle de lui-même quant à la qualité et l’investissement personnel fourni.
XWiki.org vs XWiki.com – Vincent Massol
Seconde présentation très intéressante pour un futur entrepreneur.
Tout d’abord, le projet XWiki est sous licence LGPL, qui selon lui, est friendly Entreprise. Le Business Model adopté par XWiki se base sur du support, custom dev, training, et hosting. Aucun code propriétaire n’est fournit !!
Là où cette entreprise est innovante selon moi, c’est par son système de “meritocracy” où tout le monde a les mêmes pouvoirs. En effet, des règles de “gouvernance” (cf dev.xwiki.org) permettent de définir les rôles de chacun et leur puissant système de vote (démocratique) mais tout le monde au même niveau. De ce fait, on vote pour accepter un commiter, vote pour accepter une nouvelle fonctionnalité, etc.. (+1 !) Le choix de l’open-source permet l’assurance de la pérennité d’un projet si l’entreprise coule ou laisse le projet tomber. En effet il y a la liberté des forks.
L’open-source a pour cette société apporté directement une ouverture à l’international puisque la communauté autour du projet l’est.
Cependant, il leur faut gérer un soucis: les conflits d’¡ntérets. En effet, le problème vient des committers externes à la société. Il est difficile pour eux de résister à la tentation de faire embaucher ces fameux committers qui apportent un réel plus au projet. Ils ont donc tenu à bien dissocier la partie commerciale et communautaire en nommant tout d’abord un responsable de la communauté et en embauchant deux types de développeurs: un pour la communauté, et un pour les clients.
Et pour finir, un système de “bounties” permet, grâce à l’appui du client, de rémunérer des développeurs open-source. C’est selon moi, le parfait exemple d’un business model intelligent en parfaite harmonie avec sa communauté. (Enfin… de ce qu’il a été dit !)
Presentation d’eXo Platform – Tugdual Grall
L’intervenant (breton) nous a insisté sur le respect des standards et qu’il est important d’avoir un réseau de distribution indirect. Un portail commun étant crée avec son entreprise avec JBoss(partenaire technologique) a fait passer le projet de la GPL vers la LGPL.
D’autre part, même si il est nécessaire de permettre l’intégration des grands frameworks comme JBoss, Spring, il est aussi nécessaire de s’ouvrir plus largement grâce aux services Web en REST (cf Groovy). Par exemple: les gadgets suivant les spécifications “OpenSocial” utilisant des services REST.
Pour finir, il a noté qu’il est également important pour la bonne santé d’un projet communautaire de permettre la participation facile de tout un chacun, de sorte qu’un développeur puisse apporter aisément sa pierre à l’édifice même si l’édifice peut paraître impressionnant au premier abord!
Play! framework – Guillaume Bort et Nicolas Leroux
Petite présentation du framework fort sympatique et facilitant grandement le dévelopement Web JAVA. Je posterai la vidéo ultérieurement. Il se veut le concurrent de JSF mais j’y vois plutôt un concurrent direct de GWT de par les concepts qu’il couvre.
Conclusion
C’était ma première réunion de JUG dans une atmosphère très sympa, je suis reparti avec un livre sur le GWT2 (merci à mon futur employeur !), et je suis reparti avec des idées plein la tête. Le thème général étant comment faire du business avec l’open-source, je me suis régalé dans tous les sens du terme! Les slides seront accéssibles sur le site de paris JUG et les vidéos sur Parleys
Posted in /dev/tty.
– 10 February 2010
Cette technique permet de passer outre les proxy classiques en créant un proxy SOCKS localement.
ssh user@monserveur -D1080 -p443
Ici on crée un proxy local sur le port 1080 et on envoit le traffic vers le port 443 de la cible.
Cependant, il est parfois nécessaire de passer un proxy pour pouvoir faire transiter notre trafic. La solution vient avec corkscrew. Prenons l’exemple avec un proxy configuré sur le port 8080:
ssh user@monserveur -D1080 -p443 -o “ProxyCommand corkscrew adresseProxy.com 8080 %h %p”
On peut ensuite faire passer le trafic de n’importe quelle application grâce à l’application tsocks que l’on configure sur le port 1080 et en localhost dans le fichier /etc/tsocks.conf:
server = 127.0.0.1server_type = 5server_port = 1080
Ainsi, en lançant dans un terminal “tsocks thunderbird”, on pourra faire transiter non seulement le traffic via SSH mais en plus, grÂce au dynamic port forwarding, les ports distants seront vu comme des ports distant, ce qui nous permet d’utiliser n’importe quel port bloqué par le proxy. \o/
Posted in /etc/conf.
– 6 February 2010
Depuis quelques semaines, les forums de la plateforme Aceboard souffre d’un fameux :
Host ‘ns1.aceboard.net’ is blocked because of many connection errors. Unblock with ‘mysqladmin flush-hosts’
Le forum sur lequel je suis inscrit a décidé de faire une migration vers un autre hébergeur. Pour se faire, il a fallu d’abord aspirer le forum et récupérer les données. L’opération a été faîte grâce au très bon script proposé par Le-Lalf.
Afin de passer outre le message d’erreur, une modification du script a été nécéssaire afin de tenter autant de fois que nécéssaire le téléchargement de la page. Remplacez la fonction LireUrl() par la suivante:
function lireUrl($url){
$erreur="Host 'ns1.aceboard.net' is blocked because of many connection errors. Unblock with 'mysqladmin flush-hosts'";
$nbTentatives = 0;
do{
$nbTentatives+=1;
$fp = fopen($url, "r");
$ch = "";
$contenu_page = "";
while (($ch = fread($fp,4096)) != "") {
$contenu_page .= $ch;
}
fclose($fp);
}while(strcmp($contenu_page, $erreur) == 0);
// echo $nbTentatives;
return $contenu_page;
}
En espérant que ce bout de code sauvera plus d’un forum aceboard…
Posted in /home/coding.
– 3 February 2010
Décoder un fichier base64
openssl base64 -d -in file.b64 -out file.bin
Posted in /home/memo.
– 19 October 2009
Comme toujours, j’ai des idées plein la tête, beaucoup irréalisables, mais les deux dernières me plaisent particulièrement.
J’ai pour mon île un amour profond et ça fait quelques années que je réfléchis à comment je pourrais apporter ma pierre avec mes modestes moyens, ma modeste culture et mes pouvoirs limités.
Nous sommes actuellement en pleine crise et les Antilles sont durement touchées. La Martinique enregistre cette année un recul du tourisme et fait face à divers problèmes. L’actualité est guidée par des suppressions d’emploi en masse, des grèves ici et là, un centre pénitentier plein à craquer, problemes de violence, etc. En gros ce n’est pas la joie mais cela n’a rien de constructif que de jeter la pierre à nos politiciens.
Des problèmes au niveau de la jeunesse martiniquaise clairement conditionnée par les conditions de vie de la génération des parents. Un monde “no limit” où selon moi reigne un manque sérieux de communication.
L’idée générale
L’idée est de créer une plateforme de brain-storming open-source et “démocratique” exposant les différents problèmes de l’île au peuple et à différentes échelles et appuyée par une association pour la soumission des idées aux élus politiques. Je pense à la Martinique mais c’est une idée applicable à n’importe quelle région du monde.
La plate-forme
Cette plateforme a pour but de relever les meilleurs idées face aux principaux problemes d’un secteur. Les problèmes sont exprimés clairement, simplement mais également les contraintes qui empêchent de les résoudre facilement. L’internaute parle souvent pour ne rien dire et pour recueillir les meilleurs idées, un systeme de vote permetterait de garder les idées les mieux notées.
Evidemment, le peuple n’a pas toujours raison mais nos élus manquent parfois d’opinions publiques pour juger d’un problème ou réfléchir à la solution la plus adaptée au problème.
Cette plateforme permettrait de renseigner le peuple non seulement sur les problèmes critiques d’un secteur, de lui permettre de s’exprimer (en espérant le plus possible des réponses constructives) et d’avoir une vue globale de l’actualité d’une zone géographique.
Les problèmes seront regroupés par catégorie: social, environnement, économique,etc…
Ces catégories toucheraient directement la population.
Il est intéressant de constater que la façon de discuter sur le net n’a jamais changé. On a un thread principal contenant l’idée principale et des sous-threads permettant d’exprimer des idées divergentes. C’est sûrement efficace mais difficile de repérer en un clin d’oeil les partis principaux, le nombre de sous-idees, etc… L’idée est de présenter un thread sous la forme d’un flocon de neige:
Cette vue d’une discussion ne serait qu’une simple représentation différente d’un forum par exemple.
L’association
L’association qui soutiendrait cette plateforme serait le lien entre les idées et les élus. Une fois synthétisées, les idées pourraient leur être alors soumises, ne retenant que les idées ayant le plus de votes.
De plus, on pourrait imaginer un pacte comme celui de Nicolas Hulot avec l’environnement entre les futurs candidats à la municipalité, région ou autre et l’association afin que cette “voix” soit prise en compte dans les décisions.
Si vous avez des points pertinents à relever, des suggestions,des idées ou autres, n’hésitez pas
Posted in /dev/ideas.
– 7 August 2009