<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Projet Galaxie De L&#039;Oeil Noir &#187; Java</title>
	<atom:link href="http://www.pgon.ca/tag/java/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.pgon.ca</link>
	<description>Pour s&#039;y rendre, il faut de la patience</description>
	<lastBuildDate>Sun, 29 Jan 2012 15:56:59 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>WebMotion: Une petite plate-forme web pour Java</title>
		<link>http://www.pgon.ca/programmation/webmotion-une-petite-plate-forme-web-pour-java/</link>
		<comments>http://www.pgon.ca/programmation/webmotion-une-petite-plate-forme-web-pour-java/#comments</comments>
		<pubDate>Sat, 31 Dec 2011 19:09:47 +0000</pubDate>
		<dc:creator>Simon Levesque</dc:creator>
				<category><![CDATA[Programmation]]></category>
		<category><![CDATA[Java]]></category>

		<guid isPermaLink="false">http://www.pgon.ca/?p=1309</guid>
		<description><![CDATA[<p>Récemment, j&#8217;ai commencé à me créer une petite librairie Java qui me permettrait de configurer un mini site web rapidement. Je voulais pouvoir décrire des chemins URL avec des paramètres et recevoir toutes ces informations. J&#8217;ai commencé ce projet étant donné qu&#8217;utiliser une plate-forme plus complète comme Spring MVC nécessitait trop de configuration pour le mini [...]]]></description>
			<content:encoded><![CDATA[<p>Récemment, j&#8217;ai commencé à me créer une petite librairie Java qui me permettrait de configurer un mini site web rapidement. Je voulais pouvoir décrire des chemins URL avec des paramètres et recevoir toutes ces informations. J&#8217;ai commencé ce projet étant donné qu&#8217;utiliser une plate-forme plus complète comme Spring MVC nécessitait trop de configuration pour le mini site web désiré. Par contre, je ne savais pas que j&#8217;avais mis un lien dans mes favoris à regarder plus tard: une autre librairie déjà existante et qui fait exactement ce que je désire et qui se nomme <a href="http://webmotion.debux.org/main" target="_blank">WebMotion</a>.</p>
<p><span id="more-1309"></span></p>
<p>Cette librairie permet de faire un mapping des URL avec les paramètres désirés et de décider comment afficher cette page. Il est possible de rediriger vers une autre URL, afficher une page JSP, activer une fonction Java qui va pouvoir ajouter des objets et ensuite afficher une vue et bien plus. Cette librairie peut aussi générer du JSON ou XML automatiquement, ce qui permet de créer des services web ou des webapps avec AJAX.</p>
<p>Le tout se veut le plus petit possible et les fonctionnalités se limitent à cela. Nul besoin d&#8217;un énorme attirail pour n&#8217;utiliser finalement qu&#8217;une infime partie (cas de Spring MVC dans mon cas). J&#8217;ai bien hâte de tester ce bout de technologie.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.pgon.ca/programmation/webmotion-une-petite-plate-forme-web-pour-java/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>OneSwarm: Échange de fichiers P2P anonyme</title>
		<link>http://www.pgon.ca/logiciels-gratuits/oneswarm-echange-de-fichiers-p2p-anonyme/</link>
		<comments>http://www.pgon.ca/logiciels-gratuits/oneswarm-echange-de-fichiers-p2p-anonyme/#comments</comments>
		<pubDate>Sun, 28 Aug 2011 00:34:19 +0000</pubDate>
		<dc:creator>Simon Levesque</dc:creator>
				<category><![CDATA[Logiciels gratuits]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Mac]]></category>
		<category><![CDATA[P2P]]></category>
		<category><![CDATA[Windows]]></category>

		<guid isPermaLink="false">http://www.pgon.ca/?p=1197</guid>
		<description><![CDATA[<p>La majorité des logiciels pour transférer des fichiers comme Bittorrent et Frostwire ne permettent pas de cacher ceux qui partagent et ceux qui téléchargent. C&#8217;est ainsi parce que pour télécharger, ceux qui demandent se connectent directement sur ceux qui offrent alors ils peuvent se voir mutuellement. C&#8217;est comme cela que la RIAA trouve facilement des [...]]]></description>
			<content:encoded><![CDATA[<p>La majorité des logiciels pour transférer des fichiers comme Bittorrent et Frostwire ne permettent pas de cacher ceux qui partagent et ceux qui téléchargent. C&#8217;est ainsi parce que pour télécharger, ceux qui demandent se connectent directement sur ceux qui offrent alors ils peuvent se voir mutuellement. C&#8217;est comme cela que la RIAA trouve facilement des gens à poursuivre. <a href="http://www.oneswarm.org" target="_blank">OneSwarm</a> permet de mieux se cacher.</p>
<p><span id="more-1197"></span>Pour ce faire, OneSwarm utilise un réseau &laquo;&nbsp;d&#8217;amis&nbsp;&raquo; par lequel les fichiers vont être transmis de manière cryptée et non directe. Par exemple, si Alex et Benoit sont amis et que Benoit est ami avec Camille, Alex pourra télécharger des fichiers de Camille, mais pas en se connectant sur elle directement. Benoit va transférer les fichiers entre Camille et Alex ce qui fait qu&#8217;Alex ne connait pas la source et que Camille ne connait pas la destination. De plus, puisque le fichier est crypté, Benoit transmet les données, mais ne sait pas ce qu&#8217;il transmet.</p>
<p>En plus de ce réseau anonyme, OneSwarm permet de télécharger des fichiers torrent et ainsi pouvoir les partager sur le réseau anonyme par la suite. Il est très important de comprendre que les téléchargements sur le réseau Bittorrent ne sont pas anonymes même s&#8217;ils sont faits avec OneSwarm.</p>
<p>Avant d&#8217;aller plus loin, il faut préciser ce qu&#8217;est un &laquo;&nbsp;ami&nbsp;&raquo; selon ce logiciel. Il est possible d&#8217;ajouter des gens que nous connaissons, des gens qui sont sur notre réseau local et des gens qui sont sur un serveur communautaire. Le dernier est très utile lorsque nous voulons accéder à un plus grand réseau et étant donné que ce réseau est plutôt public, les gens ne pourront voir nos fichiers partagés que par des recherches pour nous permettre de garder notre anonymat. Par contre, avec les gens que nous connaissons personnellement, nous pouvons permettre qu&#8217;ils voient une liste de nos fichiers disponible.</p>
<p>En plus du partage de fichiers, il y a aussi du chat. Il est donc possible de chatter avec ses amis sur un réseau crypté. Encore là, le chat n&#8217;est actif que pour les amis que nous désirons, alors les inconnus d&#8217;un réseau communautaire ne pourront pas nous déranger.</p>
<p>Pour terminer le petit tour d&#8217;horizon, l&#8217;interface graphique est dans notre navigateur et est programmée avec <a href="http://code.google.com/intl/fr/webtoolkit" target="_blank">GWT</a>. Cette interface inclut un lecteur audio et vidéo qui permet de voir en streaming un téléchargement non terminé et même de transcoder les vidéos à la volée dans le bon format pour être lu par le player Flash.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.pgon.ca/logiciels-gratuits/oneswarm-echange-de-fichiers-p2p-anonyme/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Savior 2 &#8211; Toujours pour sauvegarder, mais en beaucoup mieux</title>
		<link>http://www.pgon.ca/logiciels-maison/savior-2-toujours-pour-sauvegarder-mais-en-beaucoup-mieux/</link>
		<comments>http://www.pgon.ca/logiciels-maison/savior-2-toujours-pour-sauvegarder-mais-en-beaucoup-mieux/#comments</comments>
		<pubDate>Fri, 29 Jul 2011 19:47:08 +0000</pubDate>
		<dc:creator>Simon Levesque</dc:creator>
				<category><![CDATA[Logiciels maison]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Sauvegarde]]></category>

		<guid isPermaLink="false">http://www.pgon.ca/?p=1149</guid>
		<description><![CDATA[<p>Depuis la version 1, beaucoup de choses ont changé. J&#8217;ai pris les différentes demandes que j&#8217;ai reçues depuis cette version et j&#8217;ai réécrit tout le code pour le rendre plus beau et plus flexible. Vous pouvez <a href="https://github.com/provirus/Savior" target="_blank">télécharger Savior 2</a> sur ce site et voici ce qu&#8217;il peut faire&#8230;</p> <p></p> Les anciennes fonctionnalités reprises [...]]]></description>
			<content:encoded><![CDATA[<p>Depuis la version 1, beaucoup de choses ont changé. J&#8217;ai pris les différentes demandes que j&#8217;ai reçues depuis cette version et j&#8217;ai réécrit tout le code pour le rendre plus beau et plus flexible. Vous pouvez <a href="https://github.com/provirus/Savior" target="_blank">télécharger Savior 2</a> sur ce site et voici ce qu&#8217;il peut faire&#8230;</p>
<p><span id="more-1149"></span></p>
<ul>
<li>Les anciennes fonctionnalités reprises</li>
<ul>
<li>Pouvoir sauvegarder localement ou d&#8217;un serveur FTP</li>
</ul>
<li>Les anciennes fonctionnalités améliorées</li>
<ul>
<li>Ignorer des fichiers et dossiers</li>
<ul>
<li>Dans la version 1, les fichiers ignorés sur la source sont effacés sur la destination</li>
<li>Dans la version 2, les fichiers ignorés le sont des deux côtés. Aucun fichier n&#8217;est modifié ou effacé sur la destination</li>
<li>Possible aussi de parcourir la source ou la destination pour choisir les fichiers à ignorer</li>
</ul>
<li>Gestion des profils</li>
<ul>
<li>Il n&#8217;est plus nécessaire d&#8217;appuyer sur le bon bouton du profil</li>
<li>Il est possible d&#8217;éditer les profils</li>
</ul>
<li>Parcourir pour choisir un répertoire de base fonctionne aussi pour le FTP</li>
</ul>
<li>Les nouvelles fonctionnalités</li>
<ul>
<li>Peut synchroniser les répertoires ou seulement ajouter les fichiers sans rien effacer ou écraser sur la destination</li>
<li>Peut choisir comment comparer des fichiers présents sur la source et la destination pour savoir quand les mettre à jour</li>
<li>Peut voir la progression du transfert d&#8217;un fichier</li>
<li>Peut filtrer l&#8217;historique des actions</li>
</ul>
</ul>
<div><p><a href="http://www.youtube.com/watch?v=yZGRxNZMBsE"><img src="http://img.youtube.com/vi/yZGRxNZMBsE/2.jpg"></a></p>
<p><a href="http://www.youtube.com/watch?v=yZGRxNZMBsE">Click here</a> to view the video on YouTube.</p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.pgon.ca/logiciels-maison/savior-2-toujours-pour-sauvegarder-mais-en-beaucoup-mieux/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Intrégration de SpringSource, Spring MVC, Hibernate, MySQL et Tomcat</title>
		<link>http://www.pgon.ca/programmation/intregration-de-springsource-spring-mvc-hibernate-mysql-et-tomcat/</link>
		<comments>http://www.pgon.ca/programmation/intregration-de-springsource-spring-mvc-hibernate-mysql-et-tomcat/#comments</comments>
		<pubDate>Mon, 13 Jun 2011 17:26:35 +0000</pubDate>
		<dc:creator>Simon Levesque</dc:creator>
				<category><![CDATA[Programmation]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[MySQL]]></category>

		<guid isPermaLink="false">http://www.pgon.ca/?p=1066</guid>
		<description><![CDATA[<p>Utiliser plusieurs librairies pour programmer accélère grandement le développement d&#8217;applications en n&#8217;ayant pas à recoder plusieurs fois les mêmes fonctionnalités. Par contre, il arrive que la configuration initiale d&#8217;un environnement qui inclut toutes ces technologies soit très fastidieuse surtout pour les nouveaux arrivants. J&#8217;ai créé un <a href="http://www.foilen.com/pour-developpeurs-dapplications/java-springsource/springsource-integrer-spring-mvc-hibernate-et-tomcat" target="_blank">petit projet exemple avec une vidéo</a> explicative pour [...]]]></description>
			<content:encoded><![CDATA[<p>Utiliser plusieurs librairies pour programmer accélère grandement le développement d&#8217;applications en n&#8217;ayant pas à recoder plusieurs fois les mêmes fonctionnalités. Par contre, il arrive que la configuration initiale d&#8217;un environnement qui inclut toutes ces technologies soit très fastidieuse surtout pour les nouveaux arrivants. J&#8217;ai créé un <a href="http://www.foilen.com/pour-developpeurs-dapplications/java-springsource/springsource-integrer-spring-mvc-hibernate-et-tomcat" target="_blank">petit projet exemple avec une vidéo</a> explicative pour l&#8217;intégration de tous les outils. Pour une liste de ce que chaque technologie fait, continuer la lecture.</p>
<p><span id="more-1066"></span><strong><a href="http://tomcat.apache.org" target="_blank">Tomcat</a></strong></p>
<p>C&#8217;est un conteneur d&#8217;applications web Java sur lequel il est possible d&#8217;en installer plusieurs pour une même installation. Cela donne accès à des technologies comme les Servlets, JSP, &#8230; Pour une <a href="http://www.foilen.com/pour-developpeurs-dapplications/java-ee-6/java-ee-6-servlets-jsp-et-filtres-12" target="_blank">vidéo sur l&#8217;utilisation des servlets</a>.</p>
<p><strong><a href="http://www.springsource.org" target="_blank">SpringSource</a></strong></p>
<p>SpringSource est une librairie Java qui aide à configurer une application, utiliser des conceptions orientées objet, créer des objets proxy et beaucoup plus. Elle peut être utilisée pour des applications de tous types: standalone, webapp, Java EE, &#8230;</p>
<p>Pour des <a href="http://www.foilen.com/category/pour-developpeurs-dapplications/java-springsource" target="_blank">vidéos sur les différentes fonctionnalités de SpringSource</a>.</p>
<p><strong>Spring MVC</strong></p>
<p>C&#8217;est une partie de la librairie de SpringSource qui permet de créer des applications web avec le patron Model-View-Controller.</p>
<p><strong><a href="http://www.hibernate.org" target="_blank">Hibernate</a></strong></p>
<p>C&#8217;est une librairie qui permet d&#8217;enregistrer directement des objets Java dans une base de données. Nul besoin d&#8217;écrire des requêtes SQL puisqu&#8217;elle va le faire pour des dizaines de serveurs différents tels: Sybase, MySQL, DB2, &#8230; Il suffit de faire un mapping des objets Java et des tables dans la base de données avec des fichiers XML ou avec des annotations.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.pgon.ca/programmation/intregration-de-springsource-spring-mvc-hibernate-mysql-et-tomcat/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Comment se connecter sécuritairement sans HTTPS</title>
		<link>http://www.pgon.ca/programmation/comment-se-connecter-securitairement-sans-https/</link>
		<comments>http://www.pgon.ca/programmation/comment-se-connecter-securitairement-sans-https/#comments</comments>
		<pubDate>Sun, 06 Feb 2011 14:34:01 +0000</pubDate>
		<dc:creator>Simon Levesque</dc:creator>
				<category><![CDATA[Idées]]></category>
		<category><![CDATA[Programmation]]></category>
		<category><![CDATA[Cryptographie]]></category>
		<category><![CDATA[CSharp]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://www.pgon.ca/?p=752</guid>
		<description><![CDATA[<p>[EDIT: Cet article est maintenant en <a href="http://www.pgon.ca/wp-content/uploads/Connexion-securitaire-sans-HTTPS.pdf" target="_blank">format PDF</a>, mis à jour et avec des informations supplémentaires]</p>]]></description>
			<content:encoded><![CDATA[<p>[EDIT: Cet article est maintenant en <a href="http://www.pgon.ca/wp-content/uploads/Connexion-securitaire-sans-HTTPS.pdf" target="_blank">format PDF</a>, mis à jour et avec des informations supplémentaires]</p>
]]></content:encoded>
			<wfw:commentRss>http://www.pgon.ca/programmation/comment-se-connecter-securitairement-sans-https/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>EclEmma &#8211; Code coverage pour Eclipse</title>
		<link>http://www.pgon.ca/logiciels-gratuits/eclemma-code-coverage-pour-eclipse/</link>
		<comments>http://www.pgon.ca/logiciels-gratuits/eclemma-code-coverage-pour-eclipse/#comments</comments>
		<pubDate>Sat, 27 Nov 2010 05:00:18 +0000</pubDate>
		<dc:creator>Simon Levesque</dc:creator>
				<category><![CDATA[Logiciels gratuits]]></category>
		<category><![CDATA[Java]]></category>

		<guid isPermaLink="false">http://www.pgon.ca/?p=641</guid>
		<description><![CDATA[<p>Lors des développements de cas de tests, il est très utile de voir les lignes exécutés durant ces tests pour savoir ce qui manque. <a href="http://www.eclemma.org">EclEmma</a> est un plugin Eclipse qui permet de rouler une application ou des tests JUnit et de voir un rapport sur le code exécuté avec un pourcentage par classes.</p> <p></p> <p>Installation [...]]]></description>
			<content:encoded><![CDATA[<p>Lors des développements de cas de tests, il est très utile de voir les lignes exécutés durant ces tests pour savoir ce qui manque. <a href="http://www.eclemma.org">EclEmma</a> est un plugin Eclipse qui permet de rouler une application ou des tests JUnit et de voir un rapport sur le code exécuté avec un pourcentage par classes.</p>
<p><span id="more-641"></span></p>
<p>Installation pour Eclipse 3.6:</p>
<ol>
<li>Ajouter http://update.eclemma.org aux mises à jour des plugins (Help -&gt; Install New Software)</li>
<li>Choisir le seul plugin disponible</li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://www.pgon.ca/logiciels-gratuits/eclemma-code-coverage-pour-eclipse/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Vidéos pour utiliser Java Spring</title>
		<link>http://www.pgon.ca/programmation/videos-pour-utiliser-java-spring/</link>
		<comments>http://www.pgon.ca/programmation/videos-pour-utiliser-java-spring/#comments</comments>
		<pubDate>Fri, 12 Nov 2010 21:59:40 +0000</pubDate>
		<dc:creator>Simon Levesque</dc:creator>
				<category><![CDATA[Programmation]]></category>
		<category><![CDATA[Java]]></category>

		<guid isPermaLink="false">http://www.pgon.ca/?p=615</guid>
		<description><![CDATA[<p><a href="http://www.springsource.org">SpringSource</a> est une librairie qui permet de faire beaucoup de choses en entreprise dont gérer les objets, gérer les bases de données et faire de la programmation orientée Aspect.</p> <p>Présentement, si vous désirez apprendre comment:</p> Installer <a href="http://www.springsource.com/developer/sts">SpringSource Tool Suite</a> pour <a href="http://www.eclipse.org">Eclipse</a> Configurer une application Java pour utiliser la librairie Créer des beans [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.springsource.org">SpringSource</a> est une librairie qui permet de faire beaucoup de choses en entreprise dont gérer les objets, gérer les bases de données et faire de la programmation orientée Aspect.</p>
<p><span id="more-615"></span>Présentement, si vous désirez apprendre comment:</p>
<ul>
<li>Installer <a href="http://www.springsource.com/developer/sts">SpringSource Tool Suite</a> pour <a href="http://www.eclipse.org">Eclipse</a></li>
<li>Configurer une application Java pour utiliser la librairie</li>
<li>Créer des beans de base et avancés</li>
<li>Faire de la programmation orienté Aspect avec des Dynamic Proxies ou un Load Time Weaver (Spring AOP ou <a href="http://www.eclipse.org/aspectj">AspectJ</a>)</li>
</ul>
<p>Allez <a href="http://www.foilen.com/category/pour-developpeurs-dapplications/java-springsource">dans cette section</a> et vous aurez accès à 8 vidéos qui totalisent 47 minutes de tutoriels.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.pgon.ca/programmation/videos-pour-utiliser-java-spring/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Concurrence en Java</title>
		<link>http://www.pgon.ca/programmation/concurrence-en-java/</link>
		<comments>http://www.pgon.ca/programmation/concurrence-en-java/#comments</comments>
		<pubDate>Thu, 01 Jul 2010 05:00:45 +0000</pubDate>
		<dc:creator>Simon Levesque</dc:creator>
				<category><![CDATA[Comment faire]]></category>
		<category><![CDATA[Programmation]]></category>
		<category><![CDATA[Java]]></category>

		<guid isPermaLink="false">http://www.pgon.ca/?p=461</guid>
		<description><![CDATA[<p>Lorsque nous développons des logiciels, il est souvent utile que son exécution se fasse avec plusieurs fils d&#8217;instructions en parallèles. Par exemple, un serveur web doit pouvoir servir plusieurs utilisateurs en même temps plutôt que l&#8217;un à la suite de l&#8217;autre. En utilisant le parallélisme, ce modèle de programmation amène aussi quelques maux de têtes [...]]]></description>
			<content:encoded><![CDATA[<p>Lorsque nous développons des logiciels, il est souvent utile que son exécution se fasse avec plusieurs fils d&#8217;instructions en parallèles. Par exemple, un serveur web doit pouvoir servir plusieurs utilisateurs en même temps plutôt que l&#8217;un à la suite de l&#8217;autre. En utilisant le parallélisme, ce modèle de programmation amène aussi quelques maux de têtes en ce qui a trait aux variables partagées puisqu&#8217;elles ne doivent pas être lues en même temps d&#8217;être modifiées.</p>
<p>Cet article porte sur comment créer des fils d&#8217;exécutions et comment utiliser des variables partagées avec Java.<br />
<span id="more-461"></span></p>
<h2>Créer de la concurrence</h2>
<p>Le choix le plus simple est de créer un <a href="http://java.sun.com/javase/6/docs/api/java/lang/Thread.html">Thread</a> manuellement. Si par-contre, vous avez plusieurs tâches à exécuter et vous ne désirez pas créer un Thread par tâche (par exemple si vous en avez 2000, cela rendrait votre application totalement morte), vous pouvez utiliser un <a href="http://java.sun.com/javase/6/docs/api/java/util/concurrent/Executor.html">Executor</a> qui se charge de créer un bassin de Threads et de partager l&#8217;exécution des tâches parmi ces fils.</p>
<p>Que ce soit en utilisant un Thread ou un Executor, vos tâches doivent implémenter l&#8217;interface <a href="http://java.sun.com/javase/6/docs/api/java/lang/Runnable.html">Runnable</a>. Si vous créez une classe de ce type, vous pouvez surveiller l&#8217;exécution de votre classe en vérifiant si le Thread associé est terminé. Le seul problème est que si votre classe est donnée à un Executor, il n&#8217;est plus possible de vérifier l&#8217;état de la progression aisément. C&#8217;est pourquoi, vous pouvez utiliser l&#8217;interface <a href="http://java.sun.com/javase/6/docs/api/java/lang/Runnable.html">FutureTask</a> à la place. Dépendant de ce que vous désirez faire, vous pouvez vérifier si le travail est terminé ou encore bloquer votre fil courant tant que la tâche n&#8217;est pas terminée.</p>
<h2>Partager des variables en restreignant l&#8217;accès</h2>
<p>Pour éviter plusieurs fils d&#8217;écrire/lire en même temps une même variable, il est possible d&#8217;utiliser plusieurs mécanismes de verrouillage. Le plus connu est le mot clé Synchronize qui peut être utilisé <a href="http://java.sun.com/docs/books/tutorial/essential/concurrency/syncmeth.html">sur une méthode</a> d&#8217;une classe ou <a href="http://java.sun.com/docs/books/tutorial/essential/concurrency/locksync.html">sur un objet</a>. En l&#8217;utilisant sur plusieurs méthodes, une seule de ces méthodes peut être exécutée à la fois. Ceci est donc bon lorsque toutes les propriétés d&#8217;une classe sont dépendantes entre-elles, sinon le verrouillage nuira aux performances. Pour bloquer des propriétés/objets selon quelle fonction accède à quelle objet, il faut utiliser le mot clé sur l&#8217;objet utilisé.</p>
<p>Si vous désirez limiter le nombre de fils qui peuvent accéder à une ressource quelconque à tout moment, vous pouvez utiliser un <a href="http://java.sun.com/javase/6/docs/api/java/util/concurrent/Semaphore.html">Semaphore</a>. Cet objet est initialisé avec un nombre maximum de jetons à partager et tous les fils tentent de prendre un jeton et doivent peut-être attendre que l&#8217;un d&#8217;eux devienne disponible.</p>
<h2>Partager des variables atomiques</h2>
<p>Si vous n&#8217;avez de besoin que d&#8217;une simple variable (comme un nombre entier) auquel vous effectuez un incrément ou tout autre opération légère, il vous faut quand même barrer cet objet durant sa mise à jour puisque l&#8217;objet pourrait devenir invalide pendant qu&#8217;un autre fil veuille le lire. Verrouiller un objet prend du temps et c&#8217;est pourquoi vous pouvez vous en tirer grâce aux objets atomiques. Chaque opération effectuée dessus ceux-ci se fait assurément par un seul fil et elle sera obligatoirement complétée avant qu&#8217;un autre fil lui touche. Vous avez donc des <a href="http://java.sun.com/javase/6/docs/api/java/util/concurrent/atomic/AtomicInteger.html">AtomicInteger</a>, <a href="http://java.sun.com/javase/6/docs/api/java/util/concurrent/atomic/AtomicBoolean.html">AtomicBoolean</a>, <a href="http://java.sun.com/javase/6/docs/api/java/util/concurrent/atomic/AtomicLong.html">AtomicLong</a>, &#8230;</p>
<h2>Partager des listes</h2>
<p>Les collections d&#8217;objets sont souvent une nécessité dans toutes les applications. Par contre, ces entités sont très capricieuses lorsqu&#8217;il s&#8217;agit d&#8217;ajouter ou d&#8217;enlever des objets qu&#8217;elles contiennent. Par exemple, si vous avez un itérateur et que vous effacez un item sans le faire par l&#8217;itérateur, ce dernier lancera une exception quand vous désirerez obtenir l&#8217;objet suivant.</p>
<p>Si vous faites plus souvent des lectures que des écritures sur vos listes, les performances seront gravement détériorées en utilisant des verrous. Vous pouvez utiliser des <a href="http://java.sun.com/javase/6/docs/api/java/util/concurrent/ConcurrentHashMap.html">ConcurrentHashMap</a> ou des <a href="http://java.sun.com/javase/6/docs/api/java/util/concurrent/ConcurrentLinkedQueue.html">ConcurrentLinkedQueue</a> qui permettent de modifier leur contenu sans briser les itérateurs.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.pgon.ca/programmation/concurrence-en-java/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Wiimote sur l&#8217;ordinateur</title>
		<link>http://www.pgon.ca/securite-hack/wiimote-sur-lordinateur/</link>
		<comments>http://www.pgon.ca/securite-hack/wiimote-sur-lordinateur/#comments</comments>
		<pubDate>Sat, 05 Sep 2009 05:13:57 +0000</pubDate>
		<dc:creator>Simon Levesque</dc:creator>
				<category><![CDATA[Sécurité & Hack]]></category>
		<category><![CDATA[C]]></category>
		<category><![CDATA[CPP]]></category>
		<category><![CDATA[CSharp]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Python]]></category>

		<guid isPermaLink="false">http://wp.pgon.ca/?p=84</guid>
		<description><![CDATA[<p>Vous savez sûrement que la manette de la Wii ainsi que la Wiiboard utilise Bluetooth pour communiquer avec la console. Puis que l&#8217;ordinateur peut communiquer avec ce genre d&#8217;appareil. Maintenant, si vous désirez utiliser ces outils sur votre ordinateur, vous pouvez faire vous même votre librairie qui va communiquer avec Bluetooth ou encore utiliser une [...]]]></description>
			<content:encoded><![CDATA[<p>Vous savez sûrement que la manette de la Wii ainsi que la Wiiboard utilise Bluetooth pour communiquer avec la console. Puis que l&#8217;ordinateur peut communiquer avec ce genre d&#8217;appareil. Maintenant, si vous désirez utiliser ces outils sur votre ordinateur, vous pouvez faire vous même votre librairie qui va communiquer avec Bluetooth ou encore utiliser une librairie déjà faite et disponible sur internet. Voici donc quelques ressources pour vous:<span id="more-84"></span></p>
<p><strong>Spécification Bluetooth pour faire soi-même la librairie:</strong></p>
<p><a href="http://wiibrew.org/wiki/Wiimote">http://wiibrew.org/wiki/Wiimote</a></p>
<p><strong>Librairie pour tout:</strong></p>
<p><a href="http://motej.sourceforge.net">http://motej.sourceforge.net</a> (Java)</p>
<p><a href="http://wiiyourself.gl.tter.org">http://wiiyourself.gl.tter.org</a> (C++)</p>
<p><strong>Librairies pour la Wiimote et nunchuck:</strong></p>
<p><a href="http://code.google.com/p/wiimote-simple">http://code.google.com/p/wiimote-simple</a> (Java)</p>
<p><a href="http://code.google.com/p/wiiusej">http://code.google.com/p/wiiusej</a> (Java)</p>
<p><a href="http://wiiuse.net">http://wiiuse.net</a> (C)</p>
<p><a href="http://www.codeplex.com/WiimoteLib">http://www.codeplex.com/WiimoteLib</a> (C#)</p>
<p><strong>Librairies pour la Wiiboard:</strong></p>
<p><a href="http://code.google.com/p/wiiboard-simple">http://code.google.com/p/wiiboard-simple</a> (Java et Python)</p>
<p><strong>Quelques applications:</strong></p>
<p><a href="http://www.wiimoteproject.com">http://www.wiimoteproject.com</a></p>
<p><a href="http://webcam-whiteboard.com/?c=WiimoteDesktopControl">http://webcam-whiteboard.com/?c=WiimoteDesktopControl </a></p>
<p><a href="http://www.brianpeek.com/blog/pages/net-based-wiimote-applications.aspx">http://www.brianpeek.com/blog/pages/net-based-wiimote-applications.aspx </a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.pgon.ca/securite-hack/wiimote-sur-lordinateur/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Outils pour faire du Reverse Engineering</title>
		<link>http://www.pgon.ca/ressources/outils-pour-faire-du-reverse-engineering/</link>
		<comments>http://www.pgon.ca/ressources/outils-pour-faire-du-reverse-engineering/#comments</comments>
		<pubDate>Wed, 22 Apr 2009 10:00:00 +0000</pubDate>
		<dc:creator>Simon Levesque</dc:creator>
				<category><![CDATA[Ressources]]></category>
		<category><![CDATA[CSharp]]></category>
		<category><![CDATA[Java]]></category>

		<guid isPermaLink="false">http://wp.pgon.ca/?p=75</guid>
		<description><![CDATA[<p>Une belle façon d&#8217;apprendre comment programmer est de regarder le code source des logiciels fait par d&#8217;autres personnes. Grâce au monde de l&#8217;open source, il est très facile d&#8217;en trouver de haute qualité. Par contre, parfois nous n&#8217;avons pas accès à ces documents, car ils sont propriétaires. Les outils que je vous proposent sont gratuits [...]]]></description>
			<content:encoded><![CDATA[<p>Une belle façon d&#8217;apprendre comment programmer est de regarder le code source des logiciels fait par d&#8217;autres personnes. Grâce au monde de l&#8217;open source, il est très facile d&#8217;en trouver de haute qualité. Par contre, parfois nous n&#8217;avons pas accès à ces documents, car ils sont propriétaires. Les outils que je vous proposent sont gratuits et permettent de jouer avec ces petits fichiers binaires. Attention, car la majorité des licences d&#8217;utilisation ne vous donnent pas le droit de faire de l&#8217;ingénierie inverse (ou rétro-ingénierie). Vérifiez avant&#8230;<span id="more-75"></span></p>
<p>Pour des applications Java, vous pouvez obtenir tous les fichiers class d&#8217;un fichier Jar en utilisant simplement un logiciel qui peut lire les archives zip (par exemple <a href="http://www.7-zip.org">7-Zip</a>). Ensuite pour voir le code java de chacune des classes, utilisez <a href="http://www.varaneckas.com/jad">Jad</a> qui est un décompilateur de bytecode en Java.</p>
<p>Pour des applications écrites sur la plate-forme .NET peu importe le langage (C#, Basic, &#8230;), vous pouvez utiliser <a href="http://www.red-gate.com/products/reflector/">Reflector</a> qui prendra le code exécutable et vous le transformera en C# ou en Basic. C&#8217;est aussi utile pour savoir comment écrire en C# des choses que vous savez déjà écrire en Basic. Pour ce faire, compilez votre programme Basic et décompilez-le en C#.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.pgon.ca/ressources/outils-pour-faire-du-reverse-engineering/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

