<?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>Kilani Majdi - Ingénieur -  Sécurité informatique - PHP - JAVA - XML - Marseille - PACA &#187; Dév en plusieurs Sauces</title>
	<atom:link href="https://www.kilani.fr/category/developpement/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.kilani.fr</link>
	<description></description>
	<lastBuildDate>Mon, 20 Jul 2015 13:44:07 +0000</lastBuildDate>
	<language>fr-FR</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>https://wordpress.org/?v=4.2.39</generator>
	<item>
		<title>SOAP et Objective-C</title>
		<link>https://www.kilani.fr/2013/07/18/soap-objective-c/</link>
		<comments>https://www.kilani.fr/2013/07/18/soap-objective-c/#comments</comments>
		<pubDate>Thu, 18 Jul 2013 10:22:00 +0000</pubDate>
		<dc:creator><![CDATA[admin]]></dc:creator>
				<category><![CDATA[Dév en plusieurs Sauces]]></category>
		<category><![CDATA[objective-c]]></category>
		<category><![CDATA[OSx / iOS développement]]></category>
		<category><![CDATA[soap]]></category>

		<guid isPermaLink="false">http://www.kilani.fr/?p=172</guid>
		<description><![CDATA[Bonjour, On utilise tous cet outil wsdl2objc , par contre personnellement je lui reproche de rajouter les suffixes un peu partout , et donc il a fallu que je modifie l&#8217;implémentation des structures des donnés en supprimant les suffixes ( soit par un delete de la variable suffixe et la suppression de son %@ , [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Bonjour,<br />
On utilise tous cet outil <a href="http://code.google.com/p/wsdl2objc/">wsdl2objc</a> , par contre personnellement je lui reproche de rajouter les suffixes un peu partout , et donc il a fallu que je modifie l&rsquo;implémentation des structures des donnés en supprimant les suffixes ( soit par un delete de la variable suffixe et la suppression de son %@ , soit en rajoutant une valeur vide ).</p>
<p>L&rsquo;utilisation est facile et j&rsquo;aime bien , pour vous aider suivez ce <a href="http://code.google.com/p/wsdl2objc/wiki/UsageInstructions">lien</a> et tout ira bien .</p>
]]></content:encoded>
			<wfw:commentRss>https://www.kilani.fr/2013/07/18/soap-objective-c/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[PHP] Sphinx-Mysql : Un vrai moteur d&#8217;indexation</title>
		<link>https://www.kilani.fr/2010/09/23/sphinx-moteur-d-indexation/</link>
		<comments>https://www.kilani.fr/2010/09/23/sphinx-moteur-d-indexation/#comments</comments>
		<pubDate>Thu, 23 Sep 2010 19:17:57 +0000</pubDate>
		<dc:creator><![CDATA[admin]]></dc:creator>
				<category><![CDATA[Dév en plusieurs Sauces]]></category>

		<guid isPermaLink="false">http://www.kilani.fr/?p=143</guid>
		<description><![CDATA[Sphinx est un moteur de recherche full-text, distribué sous GPL v2. (Une licence commerciale est disponible) En gros, c&#8217;est un moteur de recherche à part entière, crée pour fournir des fonctions de recherches rapides et pertinentes pour d&#8217;autres applications. Sphinx a été fait en particulier pour s&#8217;intégrer facilement avec des base de données SQL et [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Sphinx est un moteur de recherche full-text, distribué sous GPL v2. (Une licence commerciale est disponible)</p>
<p>En gros, c&rsquo;est un moteur de recherche à part entière, crée pour fournir des fonctions de recherches rapides et pertinentes pour d&rsquo;autres applications. Sphinx a été fait en particulier pour s&rsquo;intégrer facilement avec des base de données SQL et des languages de scripts (typiquement, le couple PHP/MySQL). Pour l&rsquo;instant les sources de données peuvent être des bases de donnée MySQL ou PostgreSQL, mais aussi des flux XML.</p>
<h2>Base de donnée à indexer</h2>
<p>Au début, nous avons donc notre base de donnée, par exemple:</p>
<pre>CREATE TABLE items (
    item_id integer NOT NULL,
    item_title character varying(255) NOT NULL,
    item_description text NOT NULL,
    item_date timestamp without time zone NOT NULL,
    item_link character varying(255) NOT NULL,
    cat_id integer NOT NULL,
); </pre>
<p>On peut faire des recherches dans le titre (<q>item_link</q>), dans le contenu (<q>item_description</q>) ou dans l&rsquo;url (<q>item_link</q>).<br />
 En plus, il faudrais pouvoir trier par date (<q>cat_date</q>) ou par catégorie (<q>cat_id</q>)</p>
<p>La première étape est de créer le fichier de configuration de sphinx</p>
<h2>Fichier de conf de base</h2>
<p>Voila de quoi créer un sphinx.conf pour notre base de donnée</p>
<pre># nom de l'index : "main"
source main
{
        type            = pgsql

        sql_host        = localhost
        sql_user        = utilisateur
        sql_pass        = motdepasse
# nom de la base de donnée
        sql_db          = database   

         sql_query      = \
               SELECT item_id, cat_id, item_title, item_description, item_date,  \
                      ROUND(EXTRACT( EPOCH FROM ABSTIME(item_date) ))::int4 AS item_ts \
               FROM items                                                                                               

       sql_attr_uint                   = cat_id
       sql_attr_timestamp              = item_ts
}                                                

index main
{
        source                  = main
        path                    = /home/foo/var/lib/sphinx/main
        docinfo                 = extern
        morphology              = none
        # Cette conf de base marche bien en général
        # Pour l'adapter à vos besoins voir l'exemple de fichier de configuration complet
        enable_star             = 0
        min_word_len            = 2
        min_prefix_len          = 0
        min_infix_len           = 3
        charset_type            = utf-8
        html_strip              = 1
}</pre>
<p>Pour indexer la base :</p>
<p>il faut taper la commande suivante: <q>indexer -c sphinx.conf main</q> (rajouter &#8211;rotate si searchdest en train d&rsquo;utiliser l&rsquo;index)</p>
<p>Suivant la taille des données à indexer cela peut prendre un peu de temps. Par exemple :</p>
<pre>Sphinx 0.9.8.1-release (r1533)
Copyright (c) 2001-2008, Andrew Aksyonoff

using config file '/home/foo/var/sphinx.conf'...
indexing index 'main'...
collected 20786 docs, 6.8 MB
sorted 17.4 Mhits, 100.0% done
total 20786 docs, 6829246 bytes
total 9.729 sec, 701969.94 bytes/sec, 2136.57 docs/sec
rotating indices: succesfully sent SIGHUP to searchd (pid=11367).</pre>
<p>A vos claviers ^^ .</p>
]]></content:encoded>
			<wfw:commentRss>https://www.kilani.fr/2010/09/23/sphinx-moteur-d-indexation/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[PHP] Propel la magie du Search Engine in one line</title>
		<link>https://www.kilani.fr/2010/06/26/php-propel-search-engine/</link>
		<comments>https://www.kilani.fr/2010/06/26/php-propel-search-engine/#comments</comments>
		<pubDate>Sat, 26 Jun 2010 20:00:10 +0000</pubDate>
		<dc:creator><![CDATA[admin]]></dc:creator>
				<category><![CDATA[Dév en plusieurs Sauces]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Propel]]></category>

		<guid isPermaLink="false">http://www.kilani.fr/?p=138</guid>
		<description><![CDATA[Bonjour, Propel, une belle API que facilite la vie de nos données ainsi de nous rendre service pour tout storing or retrieving data . Si on veut chercher (en mode Full-text) les books par nom donc on peut appliquer une simple expression régulière , instruction comme suit : class BookQuery extends BaseBookQuery { public function [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Bonjour,</p>
<p>Propel, une belle API que facilite la vie de nos données ainsi de nous rendre service pour tout storing or retrieving data <img src="https://www.kilani.fr/wp-includes/images/smilies/simple-smile.png" alt=":)" class="wp-smiley" style="height: 1em; max-height: 1em;" /> .</p>
<p>Si on veut chercher (en mode Full-text) les books par nom donc on peut appliquer une simple expression régulière , instruction comme suit :</p>
<p><code><br />
class BookQuery extends BaseBookQuery<br />
{<br />
  public function filterByText($text)<br />
  {<br />
    $pattern = '%' . $text . '%';<br />
    return $this<br />
      ->where('Book.Title like ?', $pattern)<br />
      ->orWhere('Book.Summary like ?', $pattern);<br />
  }<br />
}<br />
</code></p>
<p>Joli Hein ^^, Perso j&rsquo;ai tendance à intègrer les match against ainsi le traitement lourd de la recherche dans une tel classe pour avoir plus de rapidité et plus de clarté de code .</p>
]]></content:encoded>
			<wfw:commentRss>https://www.kilani.fr/2010/06/26/php-propel-search-engine/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Python Codin</title>
		<link>https://www.kilani.fr/2010/06/24/python-coding/</link>
		<comments>https://www.kilani.fr/2010/06/24/python-coding/#comments</comments>
		<pubDate>Thu, 24 Jun 2010 09:44:40 +0000</pubDate>
		<dc:creator><![CDATA[admin]]></dc:creator>
				<category><![CDATA[Dév en plusieurs Sauces]]></category>

		<guid isPermaLink="false">http://www.kilani.fr/?p=136</guid>
		<description><![CDATA[Bonjour , Je vous présente également un petit script que j&#8217;ai codé mais il m a rendu fou :/ !! Alors le principe est du traiter des documents a la file et faire un traitement bien déterminer sur chaque document . Bon tout est nickel , parfait sauf qu&#8217;au bout de 5 sec de l&#8217;exec, [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Bonjour ,</p>
<p>Je vous présente également un petit script que j&rsquo;ai codé mais il m a rendu fou :/ !!</p>
<p>Alors le principe est du traiter des documents a la file et faire un traitement bien déterminer sur chaque document .</p>
<p>Bon tout est nickel , parfait sauf qu&rsquo;au bout de 5 sec de l&rsquo;exec, hé bin si on inspecte le comportement du CPU on trouve qu&rsquo;il fait 5x que la normal .</p>
<p>Wala le script&rsquo;oun et vous pouvez en servir volontairement <img src="https://www.kilani.fr/wp-includes/images/smilies/simple-smile.png" alt=":)" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
<p><code><br />
#!/usr/bin/python<br />
import sys,locale,getopt,string<br />
import re<br />
def usage():<br />
   print """Usage: tokenizer.py """<br />
def matchComma1(match1):<br />
   return match1.group(1)+ " "+ match1.group(2)+ " " +match1.group(3)</p>
<p>def matchComma2(match2):<br />
   return match2.group(1)+ " "+ match2.group(2)+ " " +match2.group(3)</p>
<p>def matchComma3(match3):<br />
   return match3.group(1)+ "_"+ match3.group(2)+ "_" +match3.group(3)+ "_" +match3.group(4)+ "_" + match3.group(5)</p>
<p>def matchComma4(match4):<br />
   return match4.group(1)+ " "+ match4.group(2)+ " "</p>
<p>def matchComma5(match5):<br />
   return match5.group(1)+match5.group(2) + "_" + match5.group(4)</p>
<p>def matchComma6(match6):<br />
   return match6.group(1) + match6.group(3)</p>
<p>def main():<br />
   try:<br />
      opts, args = getopt.getopt(sys.argv[1:], "ho", ["help","option"])<br />
   except getopt.GetoptError:<br />
      usage()<br />
      sys.exit(2)</p>
<p>   for o, a in opts:<br />
      if o in ("-h", "--help"):<br />
         usage()<br />
         sys.exit()<br />
      if o in ("-o","--option"):<br />
         optionVariable = a<br />
   comma1 = r'(\w)(\?|\+|\#|\!|\;|\:|\"|\(|\)|\/|\&#038;|\%|\$|\*|\[|\]|\{|\})(\w)'<br />
   comma2 = r'(\D)(\,)(\D)'<br />
   comma3 = r'(\d{2})\.(\d{2})\.(\d{2})\.(\d{2})\.(\d{2})'<br />
   comma4 = r'(\w)(\.)'<br />
   comma5 = r'(N|Mr|MM|Mme|Mmes|Mle|Mlle|Melle|Mles|Mlles|Melles|Me|Dr|Pr|Prof|Ste|ste)(\.)( )(\w)'<br />
   comma6 = r'(\d)( )(\d)'</p>
<p>   regComma1 = re.compile(comma1)<br />
   regComma2 = re.compile(comma2)<br />
   regComma3 = re.compile(comma3)<br />
   regComma4 = re.compile(comma4)<br />
   regComma5 = re.compile(comma5)<br />
   regComma6 = re.compile(comma6)<br />
   for line in sys.stdin.readlines():<br />
      line1 = regComma1.sub(matchComma1,line)<br />
      line2 = regComma2.sub(matchComma2,line1)<br />
      line3 = regComma6.sub(matchComma6,line2)<br />
      line4 = regComma3.sub(matchComma3,line3)<br />
      line5 = regComma5.sub(matchComma5,line4)<br />
      line6 = regComma4.sub(matchComma4,line5)<br />
      print line6,</p>
<p>if __name__ == "__main__":<br />
   main()<br />
</code></p>
<p>Si vous avez des améliorations n&rsquo;hésitez pas à me les communiquer , comme ça je mes à jour mon demon <img src="https://www.kilani.fr/wp-includes/images/smilies/simple-smile.png" alt=":)" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
<p>++</p>
]]></content:encoded>
			<wfw:commentRss>https://www.kilani.fr/2010/06/24/python-coding/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Appli Traducteur Français Basque</title>
		<link>https://www.kilani.fr/2010/06/24/application-vb6-traducteur-francais-basque/</link>
		<comments>https://www.kilani.fr/2010/06/24/application-vb6-traducteur-francais-basque/#comments</comments>
		<pubDate>Thu, 24 Jun 2010 09:23:40 +0000</pubDate>
		<dc:creator><![CDATA[admin]]></dc:creator>
				<category><![CDATA[Dév en plusieurs Sauces]]></category>

		<guid isPermaLink="false">http://www.kilani.fr/?p=129</guid>
		<description><![CDATA[Bonjour, Voilà depis 1 ans j&#8217;avais le courage de faire un petit traducteur ( Français Basque &#124; Hé oui moi le tunisien qui le fait *_O ) suite à une demande d&#8217;un ami à moi. Donc aujourd&#8217;hui je poste une partie du code source pour ceux qui pouvait m&#8217;aider à résoudre beaucoup des pbs que [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Bonjour,</p>
<p>Voilà depis 1 ans j&rsquo;avais le courage de faire un petit traducteur ( Français <--> Basque | Hé oui moi le tunisien qui le fait *_O ) suite à une demande d&rsquo;un ami à moi. Donc aujourd&rsquo;hui je poste une partie du code source pour ceux qui pouvait m&rsquo;aider à résoudre beaucoup des pbs que j&rsquo;ai rencontré :/<br />
Le code est en VB6 et voilà le CORE de l&rsquo;appli</p>
<p><code><br />
'########----------- VERSION I : TRADUCTION DES MOTS DE POIDS = 1 --------###########################<br />
'######## LAST Update Was : 27 / AVRIL / 2009  AU lit ( Faut penser a Reecrire la fonction de cryptage ) ##########<br />
Option Explicit<br />
Dim t() As String                                   ' Tableau des phrases extraites de la zone de texte<br />
Dim t_t() As String                                 ' Tableau des mots et des combinaisons extraites de chaque ligne de tableau t()<br />
Dim mot As String                                   ' Contenaire des mots extraites ain pour etre traiter<br />
Dim i, j, k, h, s As Integer                        ' Compteur<br />
Dim code_fr As Integer                              ' code dans le dico french<br />
Dim ligne_fr, mot_fr As String                      ' ligne de la dico french<br />
Dim base_code_fr As String                          ' code Fr de la phrase saisie dans le champ texte<br />
Dim ligne_base, mot_base As String                  ' ligne dans la base des regles<br />
Dim regle As String                                 ' Regle du mot a traiter : Extraction des codes Bs et les affecter au mot result ( Out)<br />
Dim code_regle As String                            ' Code de la regle a comparer avec le code de Bs_dico<br />
Dim ligne_bs, mot_bs As String                      ' Ligne et code de comparaison de dico Bs<br />
Dim final As String<br />
Private Sub Command1_Click()<br />
If Text1.Text <> "" Then<br />
Text2.Text = ""<br />
final = ""</p>
<p>'------------------------- EXTRACTION DES MOTS DE TEXTBOX --------------------------------------<br />
k = 1<br />
h = 1<br />
For i = 1 To Len(Text1.Text)<br />
    If Mid(Text1.Text, i, 1) <> "." Or i = Len(Text1.Text) Then<br />
'########################Faut pas oublier le traitement des , ; . : ? !  #################################<br />
        mot = mot &#038; Mid(Text1.Text, i, 1)<br />
        If i = Len(Text1.Text) Then<br />
            ReDim Preserve t(k) As String<br />
            t(k) = mot<br />
            mot = ""<br />
        End If<br />
    Else<br />
        ReDim Preserve t(i) As String<br />
        t(k) = mot: k = k + 1<br />
        mot = ""<br />
    End If<br />
Next i<br />
'---------- Affichage du tableau des phrases ##### Faut penser au decoupage des phrase en mots ##### --------<br />
For i = 1 To k<br />
MsgBox t(i)<br />
Stop<br />
'------------------ TRAITEMENT DES PHRASES ET DECOUPAGE EN MOT ---------------------------------<br />
For j = 1 To Len(t(i))<br />
If Mid(t(i), j, 1) <> " " Then<br />
    mot = mot &#038; Mid(t(i), j, 1)<br />
    If j = Len(t(i)) Then<br />
        ReDim Preserve t_t(h) As String<br />
        t_t(h) = mot<br />
        mot = ""<br />
    End If<br />
Else<br />
   ' If j = Len(t(i)) Then<br />
        ReDim Preserve t_t(h) As String<br />
        t_t(h) = mot: h = h + 1<br />
        mot = ""<br />
  '  End If<br />
End If<br />
Next j<br />
'------------- Quelques part ici faut penser a Retraiter les mots --------------------------------------<br />
'------------------- FIN DE DECOUPAGE -------------------------------------------------------------<br />
ReDim t_t(h) As String<br />
h = 1<br />
Next i<br />
'----------- Fin d'affichage des phrases ------------------------------------------------------------------------<br />
    If Dir(App.Path &#038; "\Fr_dico.maj") <> "" And Dir(App.Path &#038; "\Bs_dico.maj ") <> "" And Dir(App.Path &#038; "\base.maj") <> "" Then<br />
        '--------------------- BOUCLE GENERAL IN ZE TABLE OF FR3NCH WORDS -------------------------------------------<br />
        For i = 1 To k<br />
            '---------------------- Recherche du code Fr  -------------------------------------------<br />
            Open App.Path &#038; "\Fr_dico.maj" For Input As #1<br />
            Do While Not EOF(1)<br />
                Line Input #1, ligne_fr<br />
                mot_fr = ""<br />
                For j = 1 To Len(ligne_fr)<br />
                    If Mid(ligne_fr, j, 1) <> ":" Then<br />
                        mot_fr = mot_fr &#038; Mid(ligne_fr, j, 1)<br />
                    Else<br />
                        Exit For<br />
                    End If<br />
                Next j<br />
                '-------------------- Test des codes et l'affection au tableau des codes FR -------------------------<br />
                If LCase(Trim(t(i))) = mot_fr Then<br />
                    base_code_fr = Mid(ligne_fr, Len(mot_fr) + 2, Len(ligne_fr) - Len(mot_fr))<br />
               '----------- DÉBUT DU TRAITEMENT DE LA PARTIE POUR EXTRACTION DE LA RÈGLE CORRESPONDANTE ------------<br />
                    Open App.Path &#038; "\base.maj" For Input As #2<br />
                    Do While Not EOF(2)<br />
                    Line Input #2, ligne_base<br />
                    mot_base = ""<br />
                    For j = 1 To Len(ligne_base)<br />
                        If Mid(ligne_base, j, 1) <> ":" Then<br />
                            mot_base = mot_base &#038; Mid(ligne_base, j, 1)<br />
                        Else<br />
                            Exit For<br />
                        End If<br />
                    Next j<br />
                    If mot_base = "fr_" &#038; base_code_fr Then<br />
                    regle = Replace(ligne_base, "fr_" &#038; base_code_fr &#038; ":", "")<br />
                    regle = Replace(regle, "bs_", "")<br />
                    'MsgBox regle<br />
                    'Stop<br />
                    'Traitement de la regle : Extraction des codes Bs<br />
                    For j = 1 To Len(regle)<br />
                       If Mid(regle, j, 1) <> "|" Then<br />
                            code_regle = code_regle &#038; Mid(regle, j, 1)<br />
                       Else<br />
                            Open App.Path &#038; "\Bs_dico.maj" For Input As #3<br />
                            Do While Not EOF(3)<br />
                            Line Input #3, ligne_bs<br />
                            mot_bs = ""<br />
                            For s = 1 To Len(ligne_bs)<br />
                                If Mid(ligne_bs, s, 1) <> ":" Then<br />
                                    mot_bs = mot_bs &#038; Mid(ligne_bs, s, 1)<br />
                                Else<br />
                                    Exit For<br />
                                End If<br />
                            Next s<br />
                            If code_regle = Mid(ligne_bs, Len(mot_bs) + 2, Len(ligne_bs) - Len(mot_bs)) Then<br />
                                final = final &#038; Mid(ligne_bs, 1, Len(ligne_bs) - Len(code_regle) - 1) &#038; " "<br />
                                code_regle = ""<br />
                           End If<br />
                            Loop<br />
                            Close #3<br />
                       End If<br />
                    Next j<br />
                    'Fin de traitement</p>
<p>                    End If<br />
                    Loop<br />
                    Close #2<br />
                    '------------------------ FIN D'EXTRACTION DE LA RÈGLE -----------------------------------------<br />
                    Exit Do<br />
                End If<br />
                '------------------- Fin de test d'affectation -----------------------------------------------<br />
            Loop<br />
            Close #1<br />
            '---------------------- Fin de recherche Fr ----------------------------------------------------<br />
        Next i<br />
        '----------------- FIN DE BOUCLE ---------------------------------------------------<br />
    End If<br />
    Text2.Text = final<br />
End If<br />
End Sub<br />
</code></p>
<p>Voilà la partie la plus sensible même si l&rsquo;algo est pas si compliqué mais y a bcp des choses à revoir :/</p>
]]></content:encoded>
			<wfw:commentRss>https://www.kilani.fr/2010/06/24/application-vb6-traducteur-francais-basque/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>API JMX [0_O]</title>
		<link>https://www.kilani.fr/2010/06/23/api-jmx/</link>
		<comments>https://www.kilani.fr/2010/06/23/api-jmx/#comments</comments>
		<pubDate>Wed, 23 Jun 2010 12:32:15 +0000</pubDate>
		<dc:creator><![CDATA[admin]]></dc:creator>
				<category><![CDATA[Dév en plusieurs Sauces]]></category>

		<guid isPermaLink="false">http://www.kilani.fr/?p=121</guid>
		<description><![CDATA[Bonjour, Je vais vous présenter une API que j&#8217;aime bien, ça donne toujours l&#8217;impression que tout est sous &#160;&#187; contrôle &#160;&#187; et que on maitrise la situation &#8230; Sinon JMX permet de superviser et d’administrer des ressources matérielles accessibles depuis une JVM comme des ressources logiciels s’exécutant sur une JVM. L’instrumentation des ressources se fait [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Bonjour,</p>
<p>Je vais vous présenter une API que j&rsquo;aime bien, ça donne toujours l&rsquo;impression que tout est sous &nbsp;&raquo; contrôle &nbsp;&raquo; et que on maitrise la situation &#8230;<br />
Sinon JMX permet de superviser et d’administrer des ressources matérielles accessibles depuis une JVM comme des ressources logiciels s’exécutant sur une JVM. L’instrumentation des ressources se fait au moyen de composants appelés MBean  (Manageable Bean). La spécification JMX définit l’ensemble des interfaces et classes nécessaires à cette instrumentation.</p>
<p>Pour cela faut activer l&rsquo;agent JMX ( MBeanServer ) :<br />
<code><br />
    java -Dcom.sun.management.jmxremote -jar Application_name.jar<br />
</code><br />
L&rsquo;utilisation et l&rsquo;accès aux MBeans enregistrés sur un MBeanServer est si facile à savoir ces fonctions :<br />
<code><br />
Object getAttribute(ObjectName objname, String attrname);<br />
AttributeList getAttributes(ObjectName objname, String[] attrnames);<br />
MBeanInfo getMBeanInfo(ObjectName objname);<br />
Object invoke(ObjectName objname, String method, Object[] params, String[] signature);<br />
void setAttribute(ObjectName objname, Attribute attribute);<br />
AttributeList setAttributes(ObjectName objname,  AttributeList attributes);<br />
</code></p>
<p>Oilà une tite introduction et vous pouvez avoir le reste de l&rsquo;article ici :<a href="http://skebir.developpez.com/tutoriels/java/jmx/"> Article JMX</a></p>
<p>Merci ^^ .</p>
]]></content:encoded>
			<wfw:commentRss>https://www.kilani.fr/2010/06/23/api-jmx/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
