<?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>L&#039;Univers D&#039;Adjanakis &#187; Java</title>
	<atom:link href="https://blog.developpez.com/adjanakis/pcategory/developpement/java/feed" rel="self" type="application/rss+xml" />
	<link>https://blog.developpez.com/adjanakis</link>
	<description></description>
	<lastBuildDate>Sun, 24 Nov 2013 00:46:48 +0000</lastBuildDate>
	<language>fr-FR</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>https://wordpress.org/?v=4.1.42</generator>
	<item>
		<title>Codingame du 23 novembre 2013 : Rejouons la partition</title>
		<link>https://blog.developpez.com/adjanakis/p12358/developpement/java/codingame-du-23-novembre-2013-rejouons-la-partition</link>
		<comments>https://blog.developpez.com/adjanakis/p12358/developpement/java/codingame-du-23-novembre-2013-rejouons-la-partition#comments</comments>
		<pubDate>Sun, 24 Nov 2013 00:46:48 +0000</pubDate>
		<dc:creator><![CDATA[Adjanakis]]></dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[codingame who note musique]]></category>

		<guid isPermaLink="false">http://blog.developpez.com/adjanakis/?p=149</guid>
		<description><![CDATA[C&#8217;est avec un grand regret que je n&#8217;ai pas pu finir à temps ma composition pour aider le Docteur Who à sortir d&#8217;un bien mauvais pas. J&#8217;ai pu constater avec plaisir qu&#8217;il avait pu s&#8217;en sortir grâce aux quelques algorithmes qui ont pu être livrés à temps. Mais pour ceux qui n&#8217;en peuvent plus d&#8217;attendre de lire un algo qui se rapprocherait de la solution, voici ce que j&#8217;aurais dû soumettre pendant le codingame si [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>C&rsquo;est avec un grand regret que je n&rsquo;ai pas pu finir à temps ma composition pour aider le Docteur Who à sortir d&rsquo;un bien mauvais pas.  J&rsquo;ai pu constater avec plaisir qu&rsquo;il avait pu s&rsquo;en sortir grâce aux quelques algorithmes qui ont pu être livrés à temps. </p>
<p>Mais pour ceux qui n&rsquo;en peuvent plus d&rsquo;attendre de lire un algo qui se rapprocherait de la solution, voici ce que j&rsquo;aurais dû soumettre pendant le codingame si le manque de temps ne m&rsquo;avait pas finalement poussé vers une voie de mauvais garçon (à voir sur le site codingame :evil:). </p>
<p>Les constantes ne sont pas les bonnes pour les noires et les blanches et ce code n&rsquo;a été testé que sur un seul jeu de données(&laquo;&nbsp;Only 1 pixel wide &#8211; in10.txt&nbsp;&raquo;). Cependant, l&rsquo;idée qui y est présentée me semble bonne et ne devrait souffrir que de petits ajustements pour pouvoir passer l&rsquo;ensemble des tests.</p>
<p>En quelques mots, les étapes de la résolution sont indiquées dans la méthode main. Tout d&rsquo;abord, une lecture des données en entrée permet de récupérer dans un tableau à deux dimensions les pixels de l&rsquo;image. La difficulté est ici de devoir jouer avec les lignes du tableau indépendamment de la lecture du flux en entrée. Une lecture un peu plus complexe que dans la moyenne des codingame, une source de temps perdu, mais une difficulté surmontable.</p>
<p>Ensuite, on peut constater que dans <a href="http://files.codingame.com/pub/dw/dw2-allimages.html" title="Partitions de musique" target="_blank">toutes les partitions de musique</a>, les premiers pixels correspondent aux 5 lignes noires. Dans l&rsquo;algorithme choisi ici, la phase suivante consiste à repérer les coordonnées de ces lignes. Pour cela, la colonne sélectionnée sera la première de l&rsquo;image contenant des pixels noirs. Cette colonne aura été préalablement déterminée lors de la lecture de la partition. Une sixième ligne pouvant intervenir, on en calcule la position en admettant que toutes les lignes sont séparées par des intervalles réguliers.</p>
<p>La phase suivante est déterminante pour arriver au résultat désiré. Les lignes de la partition déterminent des zones auxquelles on affectera un flag. Pour chaque colonne, on calculera une empreinte qui correspondra à l&rsquo;ensemble des zones où apparaît un pixel noir, sans tenir compte des pixels des lignes de la portée. On comptabilise par contre le nombre de pixel noir de la colonne pour analyser plus tard la longueur des notes.</p>
<p>Une fois cette étape statistique réalisée, il ne reste plus qu&rsquo;à en tirer des conclusions. Les colonnes considérées comme ne possédant aucun pixel sont à ignorer. Celles correspondant à une queue de note sont également ignorées car les zones traversées ne correspondant pas à une empreinte de note valide. Lorsqu&rsquo;une empreinte est valide on conserve l&rsquo;information et on compare la quantité de pixel noir entre la première et la deuxième colonne où la note apparaît. En effet, les notes blanches ont davantage de pixels noirs sur les côtés, alors que les notes noirs en ont davantage ! En calculant l&rsquo;évolution de ce nombre, on connait la durée de la note.</p>
<p>Après ces quelques explications, j&rsquo;espère que vous comprendrez le code source qui suit.</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;height:300px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">import java.io.File;<br />
import java.io.FileNotFoundException;<br />
import java.util.Arrays;<br />
import java.util.HashMap;<br />
import java.util.Map;<br />
import java.util.Scanner;<br />
<br />
class Solution {<br />
<br />
&nbsp; &nbsp; private static final int DOWN = 1;<br />
&nbsp; &nbsp; private static final int UP = 0;<br />
&nbsp; &nbsp; private static final String BLACK = &quot;B&quot;;<br />
&nbsp; &nbsp; private static final String WHITE = &quot;W&quot;;<br />
&nbsp; &nbsp; private static int width = 0;<br />
&nbsp; &nbsp; private static int height = 0;<br />
&nbsp; &nbsp; private static boolean[][] score = null;<br />
&nbsp; &nbsp; private static int blackFirstX = -1;<br />
&nbsp; &nbsp; private static int[][] lignes = new int[6][2];<br />
&nbsp; &nbsp; private static int betweenLines;<br />
&nbsp; &nbsp; private static int[] statZone;<br />
&nbsp; &nbsp; private static int[] statPond;<br />
<br />
&nbsp; &nbsp; public static void main(String args[]) throws FileNotFoundException {<br />
&nbsp; &nbsp; &nbsp; &nbsp; readScoreInput();<br />
<br />
&nbsp; &nbsp; &nbsp; &nbsp; guessScoreLines();<br />
<br />
&nbsp; &nbsp; &nbsp; &nbsp; retrieveStatistics();<br />
<br />
&nbsp; &nbsp; &nbsp; &nbsp; System.out.println(buildResult());<br />
&nbsp; &nbsp; }<br />
<br />
&nbsp; &nbsp; private static void guessScoreLines() {<br />
&nbsp; &nbsp; &nbsp; &nbsp; int line_number = 0;<br />
&nbsp; &nbsp; &nbsp; &nbsp; boolean onLine = false;<br />
&nbsp; &nbsp; &nbsp; &nbsp; for (int y = 0; y &amp;lt; height; y++) {<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if (score[y][blackFirstX]) {<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; lignes[line_number][DOWN] = y;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if (!onLine) {<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; onLine = true;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; lignes[line_number][UP] = y;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; } else if (onLine) {<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; line_number++;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; onLine = false;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }<br />
&nbsp; &nbsp; &nbsp; &nbsp; }<br />
&nbsp; &nbsp; &nbsp; &nbsp; betweenLines = lignes[1][UP] - lignes[0][UP];<br />
&nbsp; &nbsp; &nbsp; &nbsp; lignes[5][UP] = lignes[4][UP] + betweenLines;<br />
&nbsp; &nbsp; &nbsp; &nbsp; lignes[5][DOWN] = lignes[4][DOWN] + betweenLines;<br />
&nbsp; &nbsp; }<br />
<br />
&nbsp; &nbsp; private static void retrieveStatistics() {<br />
<br />
&nbsp; &nbsp; &nbsp; &nbsp; for (int w = 0; w &amp;lt; width; w++) {<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; int currentZone = 0;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; int currentZoneFlag = 1 &amp;lt;&amp;lt; currentZone;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; int nextLine = 0;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; int h = 0;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; while (h &amp;lt; height) {<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if (nextLine &amp;lt; lignes.length &amp;amp;&amp;amp; h == lignes[nextLine][UP]) {<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; h = lignes[nextLine][DOWN] + 1;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; currentZone++;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; nextLine++;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; currentZoneFlag = 1 &amp;lt;&amp;lt; currentZone;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if (score[h][w]) {<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; statZone[w] |= currentZoneFlag;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; statPond[w]++;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; h++;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }<br />
&nbsp; &nbsp; &nbsp; &nbsp; }<br />
<br />
&nbsp; &nbsp; }<br />
<br />
&nbsp; &nbsp; private static String buildResult() {<br />
&nbsp; &nbsp; &nbsp; &nbsp; Map zoneMapping = new HashMap(13);<br />
&nbsp; &nbsp; &nbsp; &nbsp; zoneMapping.put(1, &quot;G&quot;);<br />
&nbsp; &nbsp; &nbsp; &nbsp; zoneMapping.put(3, &quot;F&quot;);<br />
&nbsp; &nbsp; &nbsp; &nbsp; zoneMapping.put(2, &quot;E&quot;);<br />
&nbsp; &nbsp; &nbsp; &nbsp; zoneMapping.put(6, &quot;D&quot;);<br />
&nbsp; &nbsp; &nbsp; &nbsp; zoneMapping.put(4, &quot;C&quot;);<br />
&nbsp; &nbsp; &nbsp; &nbsp; zoneMapping.put(12, &quot;B&quot;);<br />
&nbsp; &nbsp; &nbsp; &nbsp; zoneMapping.put(8, &quot;A&quot;);<br />
&nbsp; &nbsp; &nbsp; &nbsp; zoneMapping.put(24, &quot;G&quot;);<br />
&nbsp; &nbsp; &nbsp; &nbsp; zoneMapping.put(16, &quot;F&quot;);<br />
&nbsp; &nbsp; &nbsp; &nbsp; zoneMapping.put(48, &quot;E&quot;);<br />
&nbsp; &nbsp; &nbsp; &nbsp; zoneMapping.put(32, &quot;D&quot;);<br />
&nbsp; &nbsp; &nbsp; &nbsp; zoneMapping.put(96, &quot;C&quot;);<br />
&nbsp; &nbsp; &nbsp; &nbsp; zoneMapping.put(64, &quot;B&quot;);<br />
<br />
&nbsp; &nbsp; &nbsp; &nbsp; StringBuilder result = new StringBuilder();<br />
<br />
&nbsp; &nbsp; &nbsp; &nbsp; int currentZone = 0;<br />
&nbsp; &nbsp; &nbsp; &nbsp; int currentPond = 0;<br />
&nbsp; &nbsp; &nbsp; &nbsp; boolean typeIsKnow = false;<br />
&nbsp; &nbsp; &nbsp; &nbsp; for (int w = 0; w = currentPond) ? BLACK : WHITE)<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; .append(&quot; &quot;);<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; typeIsKnow = true;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }<br />
&nbsp; &nbsp; &nbsp; &nbsp; }<br />
<br />
&nbsp; &nbsp; &nbsp; &nbsp; return result.toString();<br />
&nbsp; &nbsp; }<br />
<br />
&nbsp; &nbsp; private static void readScoreInput() throws FileNotFoundException {<br />
&nbsp; &nbsp; &nbsp; &nbsp; Scanner in = new Scanner(new File(&quot;test.txt&quot;));<br />
&nbsp; &nbsp; &nbsp; &nbsp; width = in.nextInt();<br />
&nbsp; &nbsp; &nbsp; &nbsp; height = in.nextInt();<br />
<br />
&nbsp; &nbsp; &nbsp; &nbsp; score = new boolean[height][width];<br />
&nbsp; &nbsp; &nbsp; &nbsp; statZone = new int[width];<br />
&nbsp; &nbsp; &nbsp; &nbsp; statPond = new int[width];<br />
<br />
&nbsp; &nbsp; &nbsp; &nbsp; Arrays.fill(statZone, 0);<br />
&nbsp; &nbsp; &nbsp; &nbsp; Arrays.fill(statPond, 0);<br />
<br />
&nbsp; &nbsp; &nbsp; &nbsp; boolean scoreCompleted = false;<br />
&nbsp; &nbsp; &nbsp; &nbsp; int number, w = 0, h = 0;<br />
&nbsp; &nbsp; &nbsp; &nbsp; String color;<br />
&nbsp; &nbsp; &nbsp; &nbsp; blackFirstX = width;<br />
<br />
&nbsp; &nbsp; &nbsp; &nbsp; while (!scoreCompleted) {<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; color = in.next(&quot;\\s*[WB]\\s*&quot;);<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; number = in.nextInt();<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; boolean colorBool = charToBoolean(color);<br />
<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // tant que l'entrée n'est pas consommée<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; while (number &amp;gt; 0) {<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if (blackFirstX &amp;gt; w &amp;amp;&amp;amp; color.trim().equals(&quot;B&quot;)) {<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; blackFirstX = w;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if (number &amp;gt; (width - w)) {<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Arrays.fill(score[h], w, width, colorBool);<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; number = number - (width - w);<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; w = 0;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; h++;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; } else {<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Arrays.fill(score[h], w, w + number, charToBoolean(color));<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; w = w + number;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; number = 0;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; scoreCompleted = (h == height - 1);<br />
<br />
&nbsp; &nbsp; &nbsp; &nbsp; }<br />
&nbsp; &nbsp; &nbsp; &nbsp; in.close();<br />
&nbsp; &nbsp; }<br />
<br />
&nbsp; &nbsp; private static boolean charToBoolean(String color) {<br />
&nbsp; &nbsp; &nbsp; &nbsp; return &quot;B&quot;.equals(color.trim());<br />
&nbsp; &nbsp; }<br />
}</div></div>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Mais où est JavaMake.jar ?</title>
		<link>https://blog.developpez.com/adjanakis/p7981/developpement/java/mais_ou_est_javamake_jar</link>
		<comments>https://blog.developpez.com/adjanakis/p7981/developpement/java/mais_ou_est_javamake_jar#comments</comments>
		<pubDate>Tue, 25 Aug 2009 11:32:01 +0000</pubDate>
		<dc:creator><![CDATA[Adjanakis]]></dc:creator>
				<category><![CDATA[Java]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[C&#8217;est curieux comme parfois une recherche que l&#8217;on croyait simple peut finalement s&#8217;avérer compliquée. JavaMake, célèbre compilateur s&#8217;il en est se fait assez discret pour ce qui est de sa version packagée en jar, particulièrement pour ANT. Ainsi, lorsque l&#8217;on recherche sur le site officiel de ANT ou encore sur google, on arrive sur une l&#8217;URL du fameux outil de compilation en langage Java, mais sans être en mesure de pouvoir télécharger quoique ce soit&#8230; [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>C&rsquo;est curieux comme parfois une recherche que l&rsquo;on croyait simple peut finalement s&rsquo;avérer compliquée. JavaMake, célèbre compilateur s&rsquo;il en est se fait assez discret pour ce qui est de sa version packagée en jar, particulièrement pour ANT.</p>
<p>Ainsi, lorsque l&rsquo;on recherche sur le <a href="http://ant.apache.org/external.html">site officiel de ANT</a> ou encore sur google, on arrive sur une l&rsquo;URL du fameux <a href="http://www.experimentalstuff.com/Technologies/JavaMake/index.html">outil de compilation en langage Java</a>, mais sans être en mesure de pouvoir télécharger quoique ce soit&#8230;</p>
<p>Google est ton ami, mais ce n&rsquo;est qu&rsquo;après avoir compris que pleins d&rsquo;autres personnes ont la même requête mais que nul ne répond, que l&rsquo;on tombe enfin sur l&rsquo;URL qui sauve sa journée. J&rsquo;ouvre donc une nouvelle porte vers ce lien sacré :</p>
<p><strong><a href="https://cds.sun.com/is-bin/INTERSHOP.enfinity/WFS/CDS-CDS_SMI-Site/en_US/-/USD/ViewProductDetail-Start?ProductRef=Ex-Java_Make_Tool-1.3.3-G-F@CDS-CDS_SMI">Téléchargement de javamake.jar et javamake-ant15.jar</a></strong></p>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[Java] A la rencontre de JMF</title>
		<link>https://blog.developpez.com/adjanakis/p6330/developpement/java/java_a_la_rencontre_de_jmf</link>
		<comments>https://blog.developpez.com/adjanakis/p6330/developpement/java/java_a_la_rencontre_de_jmf#comments</comments>
		<pubDate>Sat, 06 Sep 2008 00:57:29 +0000</pubDate>
		<dc:creator><![CDATA[Adjanakis]]></dc:creator>
				<category><![CDATA[Java]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Lors d&#8217;une recherche sur JMF, je me suis aperçu que les ressources francophones disponibles n&#8217;étaient pas particulièrement répandues sur la toile. En effet, si on trouve beaucoup des questions semées sur différents forums, on a finalement assez peu de réponses pertinentes. A cela s&#8217;ajoute la difficulté pour le débutant d&#8217;avoir une idée précise de ce qu&#8217;est JMF et de ce qu&#8217;il est possible d&#8217;en faire. Alors j&#8217;ai décidé d&#8217;apporter davantage de visibilité à un tutoriel [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Lors d&rsquo;une recherche sur JMF, je me suis aperçu que les ressources francophones disponibles n&rsquo;étaient pas particulièrement répandues sur la toile. En effet, si on trouve beaucoup des questions semées sur différents forums, on a finalement assez peu de réponses pertinentes. A cela s&rsquo;ajoute la difficulté pour le débutant d&rsquo;avoir une idée précise de ce qu&rsquo;est JMF et de ce qu&rsquo;il est possible d&rsquo;en faire. </p>
<p>Alors j&rsquo;ai décidé d&rsquo;apporter davantage de visibilité à un tutoriel qui me semble sympathique et dont je pense parcourir les pages au plus vite. Cette <a href="http://www.labo-sun.com/resource-fr-articles-998-1-java-j2se-jmf-java-media-framework.htm">Présentation de JMF</a> saura sans nul doute guider les novices dans la connaissance du framework.</p>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Choco Solver</title>
		<link>https://blog.developpez.com/adjanakis/p6059/intelligence-artificielle/choco_solver</link>
		<comments>https://blog.developpez.com/adjanakis/p6059/intelligence-artificielle/choco_solver#comments</comments>
		<pubDate>Fri, 11 Jul 2008 22:20:22 +0000</pubDate>
		<dc:creator><![CDATA[Adjanakis]]></dc:creator>
				<category><![CDATA[Intelligence Artificielle]]></category>
		<category><![CDATA[Java]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Choco est une librairie écrite en java permettant de faire ce que l&#8217;on appelle de la programmation par contraintes. Grossièrement, cela signifie que cette librairie permet de trouver pour chaque variable d&#8217;un problème, un ensemble de valeur satisfaisant des règles(contraintes) imposées. C&#8217;est le cas par exemple du problème du sudoku. Dans un tel contexte, les règles seront : Tous les nombres d&#8217;une ligne sont différents Tous les nombres d&#8217;une colonne sont différents Tous les nombres [&#8230;]]]></description>
				<content:encoded><![CDATA[<p><a href="http://choco.sourceforge.net/">Choco</a> est une librairie écrite en java permettant de faire ce que l&rsquo;on appelle de la programmation par contraintes. Grossièrement, cela signifie que cette librairie permet de trouver pour chaque variable d&rsquo;un problème, un ensemble de valeur satisfaisant des règles(contraintes) imposées. C&rsquo;est le cas par exemple du problème du sudoku. Dans un tel contexte, les règles seront :</p>
<ul>
<li> Tous les nombres d&rsquo;une ligne sont différents</li>
<li> Tous les nombres d&rsquo;une colonne sont différents</li>
<li> Tous les nombres des carrés de 3 cases de coté sont différents</li>
</ul>
<p>Le solveur permettra la résolution de la grille de sudoku en donnant des valeurs respectant les contraintes. L&rsquo;idée de cet article m&rsquo;est venu en fouillant dans de vieilles sources Java. Afin de démystifier le développement de programme pour la résolution d&rsquo;une grille de sudoku, voici quelques lignes de code qui pourraient presque prétendre les résoudre à coup sûr.</p>
<p><span id="more-44"></span></p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;height:300px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">/** <br />
&nbsp;* &nbsp;This program is free software; you can redistribute it and/or modify <br />
&nbsp;* &nbsp;it under the terms of the GNU General Public License as published by <br />
&nbsp;* &nbsp;the Free Software Foundation; either version 2 of the License, or <br />
&nbsp;* &nbsp;(at your option) any later version. <br />
&nbsp;* &nbsp; &nbsp; &nbsp;<br />
&nbsp;* &nbsp;This program is distributed in the hope that it will be useful, <br />
&nbsp;* &nbsp;but WITHOUT ANY WARRANTY; without even the implied warranty of <br />
&nbsp;* &nbsp;MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. &nbsp;See the <br />
&nbsp;* &nbsp;GNU General Public License for more details. <br />
&nbsp;* &nbsp; <br />
&nbsp;* &nbsp;You should have received a copy of the GNU General Public License <br />
&nbsp;* &nbsp;along with this program; if not, write to the Free Software <br />
&nbsp;* &nbsp;Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA &nbsp;02110-1301 &nbsp;USA <br />
&nbsp;*/ <br />
package org.adjanakis.chokodoku; <br />
&nbsp;<br />
import choco.ContradictionException; <br />
import choco.Problem; <br />
import choco.integer.IntVar; <br />
&nbsp;<br />
/** <br />
&nbsp;* Chokodoku <br />
&nbsp;* &nbsp;<br />
&nbsp;* This program use to be an example of one usage of the choco-solver. This <br />
&nbsp;* application aims at easily solving any sudoku problem. All sudoku problem <br />
&nbsp;* hasn't been tested. If many solutions are possible, this program will not <br />
&nbsp;* be really accurate. <br />
&nbsp;* &nbsp;<br />
&nbsp;* Based on Choco 1.0b003 &nbsp;<br />
&nbsp;* &nbsp;<br />
&nbsp;* @author Adjanakis (http://code.adjanakis.org/) <br />
&nbsp;* @version 0.1.0 <br />
&nbsp;*/ <br />
public class Chokodoku { <br />
&nbsp;<br />
&nbsp; /** <br />
&nbsp; &nbsp;* Number of numbers on one side of the internal square. 3 is the usual value. <br />
&nbsp; &nbsp;*/ <br />
&nbsp; private static int CHOKODOKU_SIZE = 3; <br />
&nbsp;<br />
&nbsp; &nbsp; /** <br />
&nbsp; &nbsp; &nbsp;* Here is the description of the sudoku problem. Each number represents a value to <br />
&nbsp; &nbsp; &nbsp;* find or a value to get. The values to find are represented by a 0. &nbsp;<br />
&nbsp; &nbsp; &nbsp;*/ <br />
&nbsp; private static int[] pbDescr = new int[]{ <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 8,0,4,0,0,0,2,0,9, <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0,0,9,0,0,0,1,0,0, <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 1,0,0,3,0,2,0,0,7, <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0,5,0,1,0,4,0,8,0, <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0,0,0,0,3,0,0,0,0, <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0,1,0,7,0,9,0,2,0, <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 5,0,0,4,0,3,0,0,8, <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0,0,3,0,0,0,4,0,0, <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 4,0,6,0,0,0,3,0,1 <br />
&nbsp; &nbsp; }; <br />
&nbsp; &nbsp; &nbsp;<br />
&nbsp;<br />
&nbsp; &nbsp; /** <br />
&nbsp; &nbsp; &nbsp;* The object used to represent the problem. It will store the constraint a the &nbsp;<br />
&nbsp; &nbsp; &nbsp;* possible value for each value of the sudoku. &nbsp;<br />
&nbsp; &nbsp; &nbsp;*/ <br />
&nbsp; private static Problem myPb = new Problem(); <br />
&nbsp; <br />
&nbsp; /** <br />
&nbsp; &nbsp;* Basic method to launch the program <br />
&nbsp; &nbsp;* @param args parameters are not used <br />
&nbsp; &nbsp;*/ <br />
&nbsp; public static void main(String[] args) { <br />
&nbsp; &nbsp; launch(); <br />
&nbsp; } <br />
&nbsp;<br />
&nbsp; /** <br />
&nbsp; &nbsp;* Method used to resolve a sudoku problem. This problem is hard coded into this method. <br />
&nbsp; &nbsp;*/ <br />
&nbsp; public static void launch(){ <br />
&nbsp; &nbsp; <br />
&nbsp; &nbsp; //The variables will be stored into a vector <br />
&nbsp; &nbsp; IntVar[] myPbVars = new IntVar[CHOKODOKU_SIZE*CHOKODOKU_SIZE*CHOKODOKU_SIZE*CHOKODOKU_SIZE]; <br />
&nbsp; &nbsp; <br />
&nbsp; &nbsp; //We attribute the possible value for each value of the problem into our vector. <br />
&nbsp; &nbsp; for( int i = 0; i &lt; CHOKODOKU_SIZE*CHOKODOKU_SIZE*CHOKODOKU_SIZE*CHOKODOKU_SIZE; i++ ){ <br />
&nbsp; &nbsp; &nbsp; if( pbDescr[i] != 0 ){ <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //The value defined by the problem <br />
&nbsp; &nbsp; &nbsp; &nbsp; myPbVars[i] = myPb.makeEnumIntVar(null,pbDescr[i],pbDescr[i]); <br />
&nbsp; &nbsp; &nbsp; } else { <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //The value is undefined. It may be on from 1 to the max value <br />
&nbsp; &nbsp; &nbsp; &nbsp; myPbVars[i] = myPb.makeEnumIntVar(null,1,CHOKODOKU_SIZE*CHOKODOKU_SIZE); <br />
&nbsp; &nbsp; &nbsp; } <br />
&nbsp; &nbsp; } <br />
&nbsp;<br />
&nbsp; &nbsp; //Creation of the sudoku constraint <br />
&nbsp; &nbsp; for( int i = 0; i &lt; 9; i++){ <br />
&nbsp; &nbsp; &nbsp; IntVar[] bufIntVarsRow &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;= new IntVar[CHOKODOKU_SIZE*CHOKODOKU_SIZE]; <br />
&nbsp; &nbsp; &nbsp; IntVar[] bufIntVarsColumn &nbsp; &nbsp; &nbsp; &nbsp; = new IntVar[CHOKODOKU_SIZE*CHOKODOKU_SIZE]; <br />
&nbsp; &nbsp; &nbsp; IntVar[] bufIntVarsInternalSquare = new IntVar[CHOKODOKU_SIZE*CHOKODOKU_SIZE]; <br />
&nbsp; &nbsp; &nbsp; for( int j = 0; j &lt; 9; j++){ <br />
&nbsp; &nbsp; &nbsp; &nbsp; bufIntVarsRow[j] &nbsp; = myPbVars[ i*CHOKODOKU_SIZE*CHOKODOKU_SIZE + j ]; <br />
&nbsp; &nbsp; &nbsp; &nbsp; bufIntVarsColumn[j] = myPbVars[ j*CHOKODOKU_SIZE*CHOKODOKU_SIZE + i ]; <br />
&nbsp; &nbsp; &nbsp; &nbsp; bufIntVarsInternalSquare[j] &nbsp; = myPbVars[ (i%CHOKODOKU_SIZE)*CHOKODOKU_SIZE + <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; j%CHOKODOKU_SIZE + <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; (i/CHOKODOKU_SIZE)*CHOKODOKU_SIZE*CHOKODOKU_SIZE*CHOKODOKU_SIZE + <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; (j/CHOKODOKU_SIZE)*CHOKODOKU_SIZE*CHOKODOKU_SIZE]; <br />
&nbsp; &nbsp; &nbsp; } <br />
&nbsp; &nbsp; &nbsp; //All values of a line must be different <br />
&nbsp; &nbsp; &nbsp; myPb.post(myPb.allDifferent(bufIntVarsRow)); <br />
&nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; //All value of a column must be different <br />
&nbsp; &nbsp; &nbsp; myPb.post(myPb.allDifferent(bufIntVarsColumn)); <br />
&nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; //All value of an internal square must be different <br />
&nbsp; &nbsp; &nbsp; myPb.post(myPb.allDifferent(bufIntVarsInternalSquare)); <br />
&nbsp; &nbsp; } <br />
&nbsp;<br />
&nbsp; &nbsp; try { <br />
&nbsp; &nbsp; &nbsp; &nbsp; //Have the unique solution of the problem if it exists, or an approximation <br />
&nbsp; &nbsp; &nbsp; myPb.propagate(); <br />
&nbsp; &nbsp; } <br />
&nbsp; &nbsp; catch (ContradictionException e) { <br />
&nbsp; &nbsp; &nbsp; &nbsp; //Solving the problem is not possible <br />
&nbsp; &nbsp; &nbsp; System.err.println(&quot;This problem is over-constrained&quot;); <br />
&nbsp; &nbsp; } <br />
&nbsp; &nbsp; System.out.println(&quot;solve&quot;); <br />
&nbsp; &nbsp; <br />
&nbsp; &nbsp; //Display the result found <br />
&nbsp; &nbsp; for( int i = 0; i &lt; 9; i++){ <br />
&nbsp; &nbsp; &nbsp; for( int j = 0; j &lt; 9; j++){ <br />
&nbsp; &nbsp; &nbsp; &nbsp; System.out.print(&quot; &quot; + myPbVars[i*9+j].getVal()); <br />
&nbsp; &nbsp; &nbsp; } <br />
&nbsp; &nbsp; &nbsp; System.out.println(); <br />
&nbsp; &nbsp; } <br />
&nbsp; } <br />
}</div></div>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Compter les points au tarot</title>
		<link>https://blog.developpez.com/adjanakis/p2677/developpement/java/compter_les_points_au_tarot</link>
		<comments>https://blog.developpez.com/adjanakis/p2677/developpement/java/compter_les_points_au_tarot#comments</comments>
		<pubDate>Thu, 18 Jan 2007 22:30:00 +0000</pubDate>
		<dc:creator><![CDATA[Adjanakis]]></dc:creator>
				<category><![CDATA[Java]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Ce soir, je voulais parler d&#8217;une application que j&#8217;ai faite il y a bien longtemps maintenant et dont l&#8217;objectif est de compter les points au tarot. Malheureusement, suite à un problème technique, je ne peux pas diffuser le jar de l&#8217;application J2ME. Je ne peux donc pas offrir cette oeuvre(un bien grand mot) pour bêta test. Dommage ! J&#8217;aurai bien voulu avoir un petit retour sur l&#8217;ergonomie et sur les fonctionnalités. Je reviendrai donc un [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Ce soir, je voulais parler d&rsquo;une application que j&rsquo;ai faite il y a bien longtemps maintenant et dont l&rsquo;objectif est de compter les points au tarot. Malheureusement, suite à un problème technique, je ne peux pas diffuser le jar de l&rsquo;application J2ME. Je ne peux donc pas offrir cette oeuvre(un bien grand mot) pour bêta test. Dommage ! J&rsquo;aurai bien voulu avoir un petit retour sur l&rsquo;ergonomie et sur les fonctionnalités. Je reviendrai donc un peu plus tard pour mettre à jour ce billet&#8230; enfin, si quelqu&rsquo;un, au moins, est interessé par une telle appli :o). Y a-t-il des fans de tarot dans la salle ?</p>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Faire son shoot&#8217;em up J2ME</title>
		<link>https://blog.developpez.com/adjanakis/p2678/developpement/java/faire_son_shoot_em_up_j2me</link>
		<comments>https://blog.developpez.com/adjanakis/p2678/developpement/java/faire_son_shoot_em_up_j2me#comments</comments>
		<pubDate>Tue, 16 Jan 2007 22:00:00 +0000</pubDate>
		<dc:creator><![CDATA[Adjanakis]]></dc:creator>
				<category><![CDATA[Java]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Les développements mobiles sont une autres tendances de la mode. Lorsque j&#8217;ai commencé à y jeté un coup d&#8217;oeil il y a maintenant presqu&#8217;un an, j&#8217;ai été étonné de la simplicité d&#8217;utilisation de J2ME. Muni du SDK compatible avec mon mobile et d&#8217;un eclipse des familles, n&#8217;importe quel développeur Java peut trouver son bonheur. Je me souviens en particulier d&#8217;un exemple fournit dans le SDK qui montrait de la plus simple des manières comment faire [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Les développements mobiles sont une autres tendances de la mode. Lorsque j&rsquo;ai commencé à y jeté un coup d&rsquo;oeil il y a maintenant presqu&rsquo;un an, j&rsquo;ai été étonné de la simplicité d&rsquo;utilisation de J2ME. Muni du <a href="http://www.forum.nokia.com/main/platforms/s60/index.html">SDK</a> compatible avec mon mobile et d&rsquo;un <a href="http://www.eclipse.org/">eclipse</a> des familles, n&rsquo;importe quel développeur Java peut trouver son bonheur. Je me souviens en particulier d&rsquo;un exemple fournit dans le SDK qui montrait de la plus simple des manières comment faire évoluer un vaisseau spatial dans un monde virtuel. En modifiant ces sources, il était aisé d&rsquo;ajouter les fonctionnalités permettant de créer un véritable shoot&rsquo;em up.</p>
<p>Aujourd&rsquo;hui, je suis heureux de voir comment le développement J2ME a pu se démocratiser. On le vois notamment à travers toutes les applications gratuites disponibles sur <a href="http://www.s60.com/life">le site officiel de la série 60</a> de Nokia ou encore sur le site <a href="http://www.getjar.com/">getjar.com</a> qui ouvre en grand les portes aux développements amateurs. </p>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Possibilité de Géolocalisation</title>
		<link>https://blog.developpez.com/adjanakis/p2675/developpement/java/possibilite_de_geolocalisation</link>
		<comments>https://blog.developpez.com/adjanakis/p2675/developpement/java/possibilite_de_geolocalisation#comments</comments>
		<pubDate>Mon, 15 Jan 2007 22:00:00 +0000</pubDate>
		<dc:creator><![CDATA[Adjanakis]]></dc:creator>
				<category><![CDATA[Java]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Au cours d&#8217;un petit surf sur le net, j&#8217;ai trouvé un petit article qui suit parfaitement l&#8217;air du temps. J2ME et Géolocalisation, un si joli mariage n&#8217;est-il pas ? Dans un registre un peu plus technique, vous trouverez également ce lien. La géolocalisation est une actualité. Les téléphones portables permettent déjà sous certaines conditions d&#8217;être géolocalisé(accord de l&#8217;utilisateur) et les outils de géolocalisation se multiplient. Voyez par exemple ce blog. Bref, c&#8217;est un domaine en [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Au cours d&rsquo;un petit surf sur le net, j&rsquo;ai trouvé un petit <a href="http://www.lsis.org/~colonnafm/docs/PDF/Colonna-IHM05.pdf">article </a>qui suit parfaitement l&rsquo;air du temps. J2ME et Géolocalisation, un si joli mariage n&rsquo;est-il pas ? Dans un registre un peu plus technique, vous trouverez également <a href="http://reseau.echelon.free.fr/reseau.echelon/geolocalisation.htm">ce lien</a>. La géolocalisation est une actualité. Les téléphones portables permettent déjà sous certaines conditions d&rsquo;être géolocalisé(accord de l&rsquo;utilisateur) et les outils de géolocalisation se multiplient. Voyez par exemple <a href="http://blog.developpez.com/index.php?blog=2&amp;p=2719&amp;more=1&amp;c=1&amp;tb=1&amp;pb=1#more2719">ce blog</a>. Bref, c&rsquo;est un domaine en plein boum et les nouvelles idées ne tarissent pas !</p>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Challenge de programmation Java</title>
		<link>https://blog.developpez.com/adjanakis/p2214/breves/code_invaders</link>
		<comments>https://blog.developpez.com/adjanakis/p2214/breves/code_invaders#comments</comments>
		<pubDate>Fri, 14 Jul 2006 10:00:02 +0000</pubDate>
		<dc:creator><![CDATA[Adjanakis]]></dc:creator>
				<category><![CDATA[Brèves]]></category>
		<category><![CDATA[Intelligence Artificielle]]></category>
		<category><![CDATA[Java]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Le nouveau né des framework de programmation ludique d&#8217;IBM a officiellement vu le jour le 29 juin dernier et se prénomme : CodeInvaders Challenge ! Le but est cette fois-ci de programmer le comportement d&#8217;un vaisseau spatial avide d&#8217;énergie au point de détruire ses concurrents. Ce challenge est ouvert à tous et est accessible du programmeur débutant au plus chevronné d&#8217;entre nous. Alors pour les futurs participants, bonne chance et faites un petit coucou de [&#8230;]]]></description>
				<content:encoded><![CDATA[<p><img src="http://www.alphaworks.ibm.com/awss.nsf/E7C77CE3E9D4ED5E8825719A006B7D44/$File/codeinvaders01-thumb.jpg" alt="CodeInvaders ScreenShot" title="Arène de CodeInvaders" align="left" /><br />
</p>
<p>Le nouveau né des framework de programmation ludique d&rsquo;IBM a officiellement vu le jour le 29 juin dernier et se prénomme : <a href="http://www.alphaworks.ibm.com/tech/codeinvaders?open&amp;S_TACT=105AGX59&amp;ca=dgr-GRTARGETcodeinvaders">CodeInvaders Challenge</a> !</p>
<p></p>
<p>Le but est cette fois-ci de programmer le comportement d&rsquo;un vaisseau spatial avide d&rsquo;énergie au point de détruire ses concurrents. Ce challenge est ouvert à tous et est accessible du programmeur débutant au plus chevronné d&rsquo;entre nous. Alors pour les futurs participants, bonne chance et faites un petit coucou de temps en temps par ici histoire d&rsquo;échanger des idées de stratégie ou des vaisseaux pour les tests :o).</p>
<p></p>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>En route vers J2ME</title>
		<link>https://blog.developpez.com/adjanakis/p1762/developpement/java/en_route_vers_j2me</link>
		<comments>https://blog.developpez.com/adjanakis/p1762/developpement/java/en_route_vers_j2me#comments</comments>
		<pubDate>Mon, 20 Mar 2006 22:33:13 +0000</pubDate>
		<dc:creator><![CDATA[Adjanakis]]></dc:creator>
				<category><![CDATA[Java]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Depuis jeudi dernier, j&#8217;ai un nouveau portable, un nokia 6630 bardé de 3G avec sa dose de Edge. Ca fait plaisir de laisser de coté son vieil alcatel pour ouvrir une nouvelle porte du développement Java avec J2ME. En effet, avec son Profil MIDP 2.0 et son CLDC 1.1, le nokia 6630 permet d&#8217;accueillir des applications embarquées. A l&#8217;avenir, si ce blog pouvait regrouper un ensemble de liens et informations utiles de développement pour Nokia [&#8230;]]]></description>
				<content:encoded><![CDATA[<p><img src="http://www.nokia.fr/upload/static/entertainment2/6630/img/tsr_6630_126.jpg" alt="Nokia 6630" title="Nokia 6630" align="left" />Depuis jeudi dernier, j&rsquo;ai un nouveau portable, un nokia 6630 bardé de 3G avec sa dose de Edge. Ca fait plaisir de laisser de coté son vieil alcatel pour ouvrir une nouvelle porte du développement Java avec J2ME.</p>
<p>En effet, avec son Profil MIDP 2.0 et son CLDC 1.1, le nokia 6630 permet d&rsquo;accueillir des applications embarquées. A l&rsquo;avenir, si ce blog pouvait regrouper un ensemble de liens et informations utiles de développement pour Nokia 6630, j&rsquo;en serais très heureux. N&rsquo;hésitez donc pas à déposer vos astuces, liens ou autres renseignements. Pour l&rsquo;heure, voici ci-dessous une liste des liens primordiaux pour bien(du moins je l&rsquo;espère) commencer ses développements sur mobile. Bientôt, j&rsquo;espère être en mesure de proposer d&rsquo;autres ressources&#8230; à bientôt donc !<br />
</p>
<blockquote>
<ul>
<li><a href="http://defaut.developpez.com/tutoriel/java/j2me/">Tutoriel de Developpez</a></li>
<li><a href="http://www.forum.nokia.com/main/0,6566,010_160,00.html">Tutoriel Nokia</a></li>
<li><a href="http://java.sun.com/j2me/">Site Officiel de Sun</a></li>
</ul>
</blockquote>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
