<?xml version="1.0" encoding="utf-8"?><?xml-stylesheet title="XSL formatting" type="text/xsl" href="http://mirmodynamics.com/feed/rss2/xslt" ?><rss version="2.0"
  xmlns:dc="http://purl.org/dc/elements/1.1/"
  xmlns:wfw="http://wellformedweb.org/CommentAPI/"
  xmlns:content="http://purl.org/rss/1.0/modules/content/"
  xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
  <title>Mirmo Dynamics - Tag - bidouille</title>
  <link>http://mirmodynamics.com/</link>
  <atom:link href="http://mirmodynamics.com/feed/tag/bidouille/rss2" rel="self" type="application/rss+xml"/>
  <description>Si tu kiffes pas reunoi, t'écoutes pas et puis c'est tout.</description>
  <language>en</language>
  <pubDate>Sun, 14 Mar 2010 19:59:01 +0100</pubDate>
  <copyright>2003-2009 &amp;copy; Geoffrey Bachelet</copyright>
  <docs>http://blogs.law.harvard.edu/tech/rss</docs>
  <generator>Dotclear</generator>
  
    
  <item>
    <title>Relayer un stream audio avec icecast2</title>
    <link>http://mirmodynamics.com/post/2006/10/20/Relayer-un-stream-audio-avec-icecast2</link>
    <guid isPermaLink="false">urn:md5:0df1adaf1cd213b3a277c6eb891f838d</guid>
    <pubDate>Fri, 20 Oct 2006 22:05:00 +0200</pubDate>
    <dc:creator>Geoffrey</dc:creator>
        <category>Geekeries</category>
        <category>bidouille</category><category>configuration</category><category>doc</category><category>howto</category><category>optimisation</category><category>rigolo</category><category>ubuntu</category><category>unix</category><category>way of life</category><category>work</category>    
    <description>    &lt;p&gt;Pour économiser la bande passante au boulot, j'ai décidé de relayer le stream &lt;em&gt;Club !&lt;/em&gt; de &lt;a href=&quot;http://1.fm/&quot;&gt;1.fm&lt;/a&gt; sur le &lt;acronym&gt;LAN&lt;/acronym&gt;. Après avoir vainement tenté d'utiliser streamripper (on verra plus tard pourquoi vainement), j'ai sorti l'artillerie lourde: &lt;a href=&quot;http://www.icecast.org/&quot;&gt;icecast2&lt;/a&gt;:&lt;/p&gt;


&lt;pre&gt;sudo apt-get install icecast2&lt;/pre&gt;


&lt;p&gt;Si on sait un peu lire, le script de post-configuration nous incite à aller fourrer notre nez dans &lt;code&gt;/etc/default/icecast2&lt;/code&gt;, où l'on apprend (vers la fin) que icecast est désactivé par défaut à cause de la directive &lt;code&gt;ENABLED=false&lt;/code&gt;. C'est en fait une feinte pour nous pousser à configurer le bousin (de toute façon si on le configure pas, il marchera pas). Direction &lt;code&gt;/etc/icecast2/icecast.xml&lt;/code&gt; donc, pour un brin de configuration (les explications qui suivent se basent sur le fichier par défaut d'une installation sur une ubuntu).&lt;/p&gt;


&lt;p&gt;La première partie qui nous interresse s'intitule &lt;code&gt;authentication&lt;/code&gt; (vers la ligne 23). Elle contient les informations d'authentification pour les clients qui se connectent en tant que source (&lt;code&gt;source-password&lt;/code&gt;), les serveurs qui se connectent en tant que slave (&lt;code&gt;relay-password&lt;/code&gt;, en fait je ne suis pas sur à 100%, c'est une déduction) et pour l'interface d'administration (&lt;code&gt;admin-user&lt;/code&gt; et &lt;code&gt;admin-password&lt;/code&gt;). Une fois ces informations modifiées, direction la directive &lt;code&gt;hostname&lt;/code&gt;, qu'on remplira avec au choix, le nom de la machine, son ip, etc. J'ai personellement mis l'ip privée de ma machine (&lt;code&gt;172.16.x.y&lt;/code&gt;), pour que ça correspondent à la prochaine directive qui nous interresse: &lt;code&gt;listen-socket&lt;/code&gt;. Ici on définit le port et l'ip sur laquelle icecast va écouter. En gros, si vous spécifier &lt;code&gt;127.0.0.1&lt;/code&gt;, votre serveur de streaming ne sera accessible qu'en local. On y met donc en général la même chose que dans &lt;code&gt;hostname&lt;/code&gt; (&lt;code&gt;172.16.x.y&lt;/code&gt; par exemple), avec un port qui va bien, libre de préférence (&lt;code&gt;8000&lt;/code&gt; par défaut).&lt;/p&gt;


&lt;p&gt;Maintenant on passe a la partie qui nous interresse vraiment, la section &lt;code&gt;relay&lt;/code&gt;. Rien de bien compliqué ici. Le stream que je souhaite relayer se trouve là: http://64.62.253.223:8060/, or icecast nous demande un &lt;code&gt;server&lt;/code&gt;, un &lt;code&gt;port&lt;/code&gt;, un &lt;em&gt;point de montage&lt;/em&gt; (&lt;code&gt;mount&lt;/code&gt;) et un &lt;em&gt;point de montage local&lt;/em&gt; (&lt;code&gt;local-mount&lt;/code&gt;). Vous avez déjà compris qu'on arrive a cette configuration:&lt;/p&gt;


&lt;pre&gt;   &amp;lt;relay&amp;gt;
       &amp;lt;server&amp;gt;64.62.253.223&amp;lt;/server&amp;gt;
       &amp;lt;port&amp;gt;8060&amp;lt;/port&amp;gt;
       &amp;lt;mount&amp;gt;/&amp;lt;/mount&amp;gt;
       &amp;lt;local-mount&amp;gt;/1.fm&amp;lt;/local-mount&amp;gt;
       &amp;lt;on-demand&amp;gt;0&amp;lt;/on-demand&amp;gt;
       &amp;lt;relay-shoutcast-metadata&amp;gt;1&amp;lt;/relay-shoutcast-metadata&amp;gt;
   &amp;lt;/relay&amp;gt;&lt;/pre&gt;


&lt;p&gt;Ainsi parés, il ne nous reste plus qu'a lancer modifier la directive &lt;code&gt;ENABLED=false&lt;/code&gt; en &lt;code&gt;ENABLED=true&lt;/code&gt; dans &lt;code&gt;/etc/default/icecast2&lt;/code&gt; et à lancer icecast:&lt;/p&gt;


&lt;pre&gt;sudo /etc/init.d/icecast2 start&lt;/pre&gt;


&lt;p&gt;Si vous avez bien tout fait, vous devriez pouvoir streamer depuis &lt;code&gt;http://172.16.x.y:8000/1.fm&lt;/code&gt;, et vos collègues également ! Vous pouvez avoir une vue d'ensemble du serveur ainsi que quelques options d'administration en vous rendant sur l'interface d'admin: http://172.16.x.y:8000/ et en utilisant &lt;code&gt;admin-user&lt;/code&gt; et &lt;code&gt;admin-password&lt;/code&gt; pour vous authentifier.&lt;/p&gt;


&lt;p&gt;A cela on peut ajouter un petit &lt;code&gt;streamripper&lt;/code&gt;:&lt;/p&gt;


&lt;pre&gt;streamripper http://172.16.x.y:8000/1.fm -d ~/streamripped&lt;/pre&gt;


&lt;p&gt;Pour enregistrer. En parlant de streamripper, j'avais tenté au début de relayer avec &lt;code&gt;streamripper -r&lt;/code&gt;, mais malgrès les apparences du &lt;code&gt;netstat -pl&lt;/code&gt; (&lt;code&gt;*:8000 LISTEN&lt;/code&gt;), il ne bind qu'en local, donc impossible d'en faire profiter les collègues :-)&lt;/p&gt;</description>
    
    
    
          <comments>http://mirmodynamics.com/post/2006/10/20/Relayer-un-stream-audio-avec-icecast2#comment-form</comments>
      <wfw:comment>http://mirmodynamics.com/post/2006/10/20/Relayer-un-stream-audio-avec-icecast2#comment-form</wfw:comment>
      <wfw:commentRss>http://mirmodynamics.com/feed/atom/comments/692</wfw:commentRss>
      </item>
    
  <item>
    <title>Submit par défaut dans un formulaire HTML</title>
    <link>http://mirmodynamics.com/post/2006/10/03/Submit-par-defaut-dans-un-formulaire-HTML</link>
    <guid isPermaLink="false">urn:md5:5cdb9892e63ca261f52aeca7885421b3</guid>
    <pubDate>Tue, 03 Oct 2006 02:08:00 +0200</pubDate>
    <dc:creator>Geoffrey</dc:creator>
        <category>Coding</category>
        <category>bidouille</category><category>css</category><category>formulaires</category><category>interfaces utilisateurs</category><category>stupide</category>    
    <description>    &lt;p&gt;Qu'on se le dise, dans un formulaire comprenant plusieurs &lt;code&gt;input&lt;/code&gt; de type &lt;code&gt;submit&lt;/code&gt;, &lt;strong&gt;il n'est pas possible de spécifier le bouton à actionner quand on appuie sur la touche entrée&lt;/strong&gt;. Si l'on considère que les &lt;acronym title=&quot;Human Interface Guidelines&quot;&gt;HIG&lt;/acronym&gt; de &lt;a href=&quot;http://www.gnome.org/&quot;&gt;Gnome&lt;/a&gt; imposent d'avoir un bouton &lt;code&gt;ok&lt;/code&gt; à droite du bouton &lt;code&gt;annuler&lt;/code&gt;, on se retrouve avec une incompatibilité fondamentale, puisque l'action par défaut est rarement celle d'annuler la saisie que l'on vient de faire. Plusieurs solutions s'offrent dès lors à nous:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Ignorer les &lt;acronym&gt;HIG&lt;/acronym&gt;, solution non acceptable dans mon cas (sous peine de lynchage généralisé)&lt;/li&gt;
&lt;li&gt;Supprimer purement et simplement les boutons &lt;code&gt;annuler&lt;/code&gt;, ce qui représente une perte de fonctionnalitées trop importante dans certains cas&lt;/li&gt;
&lt;li&gt;Utiliser du &lt;acronym&gt;JS&lt;/acronym&gt;, solution non acceptable vis à vis de mon challenge personnel (ne pas utiliser de &lt;acronym&gt;JS&lt;/acronym&gt; avant que l'appli ne soit complètement fonctionnelle)&lt;/li&gt;
&lt;li&gt;Tricher.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;J'ai donc opté pour la 4ème solution, j'ai triché. J'ai placé mes &lt;code&gt;input&lt;/code&gt; comme le souhaitait le navigateur (&lt;code&gt;ok&lt;/code&gt;, puis &lt;code&gt;cancel&lt;/code&gt;), et utilisé la directive &lt;acronym&gt;CSS&lt;/acronym&gt; &lt;code&gt;direction&lt;/code&gt; pour réorienter le tout, ce qui donne, pour le &lt;acronym&gt;HTML&lt;/acronym&gt;:&lt;/p&gt;


&lt;pre&gt;&amp;lt;fieldset class=&amp;quot;submit&amp;quot;&amp;gt;
	&amp;lt;input type=&amp;quot;submit&amp;quot; name=&amp;quot;submit&amp;quot; id=&amp;quot;ok&amp;quot; value=&amp;quot;Ok&amp;quot; /&amp;gt;
	&amp;lt;input type=&amp;quot;submit&amp;quot; name=&amp;quot;submit&amp;quot; id=&amp;quot;cancel&amp;quot; value=&amp;quot;Cancel&amp;quot; /&amp;gt;
&amp;lt;/fieldset&amp;gt;&lt;/pre&gt;


&lt;p&gt;Et pour la &lt;acronym&gt;CSS&lt;/acronym&gt;:&lt;/p&gt;


&lt;pre&gt;fieldset.submit {
	direction: rtl;
}&lt;/pre&gt;


&lt;p&gt;Et &lt;a href=&quot;http://mirmodynamics.com/public/screenshots/formsubmit.png&quot;&gt;le rendu final&lt;/a&gt;.&lt;/p&gt;


&lt;p&gt;Problèmes connus:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;del&gt;Impossible d'utiliser de ponctuation dans les boutons (un point d'exclamation à la fin d'un bouton par exemple se retrouvera au début)&lt;/del&gt; Un &lt;code&gt;fieldset.submit input { direction: ltr; }&lt;/code&gt; est nécessaire pour bénéficier des ponctuations au bon endroit (&lt;a href=&quot;http://fashion.hosmoz.net/blog/post/2006/10/03/Submit-par-defaut-dans-un-formulaire-HTML#c2036&quot;&gt;merci&lt;/a&gt; &lt;a href=&quot;http://www.mattlab.com/&quot;&gt;Matt.Rixx&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Surement d'autres conséquences facheuses qui ne me sont pas encore tombées dessus :-)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Mais bon pour l'instant ça marche.&lt;/p&gt;</description>
    
    
    
          <comments>http://mirmodynamics.com/post/2006/10/03/Submit-par-defaut-dans-un-formulaire-HTML#comment-form</comments>
      <wfw:comment>http://mirmodynamics.com/post/2006/10/03/Submit-par-defaut-dans-un-formulaire-HTML#comment-form</wfw:comment>
      <wfw:commentRss>http://mirmodynamics.com/feed/atom/comments/639</wfw:commentRss>
      </item>
    
</channel>
</rss>