tag:blogger.com,1999:blog-77768261881279821812024-02-18T23:44:59.286-08:00SebtheMonster's WorldChez moi ce sera Ruby on Ducati et Montagne...Seb the Monsterhttp://www.blogger.com/profile/06891047437621579245noreply@blogger.comBlogger18125tag:blogger.com,1999:blog-7776826188127982181.post-12487186531600316642013-06-13T07:19:00.002-07:002013-06-13T09:38:19.046-07:00[Ruby] duel de méthodes : send vs instance_evalCes derniers jours je me suis retrouvé confronté aux méthodes <i><b>#send</b></i> et <i><b>#instance_eval</b></i> d'une instance d'un objet ruby quelquonque.<br />
<br />
A priori ces méthodes font la même chose : elles exécutent du code passé en paramètre.<br />
<br />
Pour la suite de l'article, nous utiliserons la classe suivante :<br />
<blockquote class="code">
class Jedi<br />
<br />
def initialize<br />
@action = <span style="color: orange;">"t'harponner"</span><br />
end<br />
<br />
def slice<br />
"J'utilise mon sabre laser, écarte toi !!"<br />
end<br />
<br />
def use_force action<br />
"Je vais te #{action} avec la force!"<br />
end<br />
<br />
end
</blockquote>
Pour #send, il s'agit de passer le nom du message sous forme de symbole ou chaîne de caractère, suivi des paramètres.
<br />
<blockquote class="code">
Jedi.new.send :slice #<i>=> "J'utilise mon sable laser, écarte toi !!"</i><br />
<br />
Jedi.new.send :use_force, 'persuader' #<i>=> "Je vais te persuader avec la force!"</i>
</blockquote>
Pour #instance_eval, il s'agit de passer du code à évaluer avec une chaîne de caractère ou un bloc.
<br />
<blockquote class="code">
Jedi.new.instance_eval 'slice' #<i>=>"J'utilise mon sable laser, écarte toi !!"</i><br />
<br />
Jedi.new.instance_eval ' use_force "persuader" ' #<i>=> "Je vais te persuader avec la force!"</i><br />
<br />
Jedi.new.instance_eval { use_force "persuader" } #<i>=> "Je vais te persuader avec la force!"</i>
</blockquote>
La différence entre les deux méthodes vient de leur portée.<br />
<br />
<b>#intance_eval </b><u><b>exécute le code dans le contexte de l'objet</b></u> recevant la méthode #instance_eval.<br />
<br />
Alors que <b>#send</b> <u><b>exécute le message dans le contexte dans lequel il est appelé</b></u>.<br />
<br />
Des exemples sont bien plus parlants :
<br />
<blockquote class="code">
irb > jedi = Jedi.new<br />
irb > @action = <span style="color: purple;"><b>"Dark Vador-iser"</b></span><br />
<br />
irb > jedi.send :use_force, @action<br />
<i>=> "Je vais te <span style="color: purple;"><b>Dark Vador-iser</b></span> avec la force!"</i><br /><br />
irb > jedi.instance_eval { use_force @action }<br />
<i> => "Je vais te <span style="color: orange;"><b>t'harponner</b></span> avec la force!"</i>
</blockquote>
Alors convaincu ?!
<br /><br /><br />
Et merci à <a href='https://twitter.com/hhaaacc'>Greg</a> pour avoir vérifier tout ça dans irb :)
Seb the Monsterhttp://www.blogger.com/profile/06891047437621579245noreply@blogger.com0tag:blogger.com,1999:blog-7776826188127982181.post-15190783216692445182012-04-02T08:34:00.001-07:002012-04-02T08:39:32.387-07:00Paramétrer Debian sur batterie avec laptop-mode-toolsPour gérer le matériel lors du changement d'état de la batterie, <i style="font-family: "Courier New",Courier,monospace;">laptop-mode-tools</i> est indispensable.<br />
<br />
Mais il faut encore le paramétrer aux petits oignons.<br />
<br />
Sur le Lenovo Thinkpad X220 Tablet, j'avais un lag sur l'écran tactile uniquement lorsque j'étais sur batterie.<br />
Cela parce que <i style="font-family: "Courier New",Courier,monospace;">laptop-mode-tools</i>, par défaut, mets les périphériques usb en veille.<br />
<br />
Egalement, quand je travaille sur batterie, je n'ai pas besoin du bluetooth.<br />
<br />
Passons aux choses sérieuses : le paramétrage.<br />
<br />
Les différents fichier de configuration pour le matériel se trouve dans <i><span style="font-family: "Courier New",Courier,monospace;">/etc/laptop-mode/conf.d</span></i>.<br />
<br />
un petit <i style="font-family: "Courier New",Courier,monospace;">ls</i> montrera que l'on peut agir sur pratiquement tout le matériel.<br />
<br />
Prenons mes besoins : le bluetooth et mon écran tactile, un périphérique usb.<br />
<br />
<br />
<blockquote class="console">
# cd /etc/laptop-mode/conf.d</blockquote>
<br />
<br />
<u><b>Bluetooth</b></u><br />
<br />
<br />
<blockquote class="console">
# vi bluetooth.conf</blockquote>
<br />
<br />
Pour le désactiver automatiquement au passage sur batterie, il suffit de mettre d'avoir la ligne :<br />
<br />
<br />
<blockquote class="code">
BATT_ENABLE_BLUETOOTH=0</blockquote>
<br />
<br />
<b><u>USB</u></b><br />
<br />
L'usb est un peu moins simple à gérer. Car on ne veut pas activer/désactiver l'ensemble des périphériques usb.<br />
On ne veut pas non plus supprimer la mise en veille automatique (au bout de 2s) du paramétrage par défaut.<br />
<br />
Le fichier à éditer est avec les éléments suivants :<br />
<br />
<br />
<blockquote class="console">
# vi /etc/laptop-mode/conf.d/usb-autosuspend.conf</blockquote>
<br />
<br />
<br />
<blockquote class="code">
AUTOSUSPEND_USE_WHITELIST=0</blockquote>
<br />
<br />
pour utiliser la blacklist de matériels : ceux à ne pas suspendre automatiquement.<br />
<br />
Ensuite il faut les déclarer dans cette blacklist.<br />
La configuration de laptop-mode permet de déclarer les périphériques usb par leur id ou leur nom.<br />
<br />
avec l'id du périphérique usb :<br />
<br />
<br />
<blockquote class="code">
AUTOSUSPEND_USBID_BLACKLIST="<span style="font-style: italic; font-weight: bold;">056a:00e6</span>"</blockquote>
<br />
<br />
On obtient cet id avec la commande suivante :<br />
<br />
<blockquote class="console">
<br />
$ lsusb<br />
Bus 001 Device 001: ...<br />
...<br />
<span style="font-style: italic;">Bus 002 Device 003: ID </span><span style="font-style: italic; font-weight: bold;">056a:00e6</span><span style="font-style: italic;"> Wacom Co., Ltd</span></blockquote>
<br />
<br />
En effet, l'écran tactile est un périphérique usb de type Wacom ;)<br />
<br />
Pour déclarer le périphérique usb avec le nom de son driver, il faut renseigner ce dernier au niveau de la ligne :<br />
<br />
<blockquote class="code">
AUTOSUSPEND_USBTYPE_BLACKLIST=""</blockquote>
<br />
En commentaire, il est écrit ceci :<br />
<br />
<blockquote class="code">
<br />
# The list of USB driver types that should not use autosuspend. The driver<br />
# type is given by "DRIVER=..." in a USB device's uevent file.<br />
# Example: AUTOSUSPEND_USBID_BLACKLIST="usbhid usb-storage"</blockquote>
<br />
<br />
Mais je n'ai pas su trouver comment obtenir le nom du driver d'un périphérique usb.<br />
N'hésiter pas à mentionner comment faire dans un commentaire...<br />
<br />
Il est également possible de lancer ou d'éteindre des programmes selon les événements de la batterie dans le fichier start-stop-programs.conf .<br />
<br />
Laptop-mode permet également de lancer des scripts au changement d'état de la batterie : débranchement ou rebranchement du câble d'alimentation électrique.<br />
<br />
Ces scripts sont à mettre selon la nécessité dans les répertoires de <i style="font-family: "Courier New",Courier,monospace;">/etc/laptop-mode</i> :<br />
<br />
<ul>
<li class="level1"><div class="li">
<code><b>batt-start</b></code> → ensemble de scripts à exécuter quand on entre en mode batterie</div>
</li>
<li class="level1"><div class="li">
<code><b>batt-stop</b></code> → ensemble de scripts à exécuter quand on sort du mode batterie</div>
</li>
<li class="level1"><div class="li">
<code><b>lm-ac-start</b></code> → ensemble de scripts à exécuter quand on entre en mode sur secteur</div>
</li>
<li class="level1"><div class="li">
<code><b>lm-ac-stop</b></code> → ensemble de scripts à exécuter quand on sort du mode sur secteur</div>
</li>
<li class="level1"><div class="li">
<code><b>nolm-ac-start</b></code> → ensemble de scripts à exécuter quand on entre en mode sur secteur au repos</div>
</li>
<li class="level1"><div class="li">
<code><b>nolm-ac-stop</b></code> → ensemble de scripts à exécuter quand on sort du mode sur secteur au repos </div>
</li>
</ul>
Je vous laisse découvrir les nombreuses autres possibilités qu'offre cet outil complet qu'est <i><span style="font-family: "Courier New",Courier,monospace;">laptop-mode-tools</span></i>. <br />
<br />
En commentaire, n'hésitez pas à dire quelle configuration vous avez réalisé sur votre machine ;)<br />
<br />
<span style="font-size: x-small;">source: <a href="http://doc.ubuntu-fr.org/laptop-mode-tools">http://doc.ubuntu-fr.org/laptop-mode-tools</a></span>Seb the Monsterhttp://www.blogger.com/profile/06891047437621579245noreply@blogger.com0tag:blogger.com,1999:blog-7776826188127982181.post-74856957117148055182011-12-20T21:38:00.001-08:002012-01-01T12:43:43.212-08:00Rails 3.* : Routes avec un param automatiqueEn travaillant sur les urls d'une application Rails 3 et particulièrement sur les namespaces, j'avais besoin du côté de mes controllers d'un paramètre à exploiter.<br />
<br />
Cependant ce paramètre devait être complètement transparent tant pour les controllers que les vues de l'application. En fait il devrait dépendre complètement de mes urls.<br />
<br />
Ruby on Rails, en tant que framework nous offre de nombreux moyen.<br />
<br />
Pour cet article, nous travaillerons exclusivement dans le fichier <i>config/routes.rb</i><br />
<br />
Prenons comme exemple le cas d'une application pour gérer mon magasin de vente d'articles divers.<br />
Aussi, il me faut une interface pour gérer les stocks et une autre pour les commercialiser.<br />
<br />
Donc dans mon application, je vais avoir de la sorte deux 'namespaces' : Stock et Vente qui se traduiront au niveau des url par <i><span style="font-family: 'Courier New', Courier, monospace;">/stock/articles</span></i> et <i><span style="font-family: 'Courier New', Courier, monospace;">/vente/articles</span></i><br />
<br />
Pour cela nous allons utilisé les namespaces ou scopes dans le routage de Rails :<br />
<blockquote class="code">
namespace :stock do <br />
<span style="margin-bottom: 10px; margin-left: 10px; margin-right: 10px; margin-top: 10px;">resources :articles</span><br />
end<br />
<br />
namespace :vente do <br />
<span style="margin-bottom: 10px; margin-left: 10px; margin-right: 10px; margin-top: 10px;">resources :articles</span><br />
end</blockquote>
Le problème de cette solution est que dans mes controllers, je ne sais pas aisément dans quel namespace je suis à moins de parser mon url.<br />
D'autre part ce n'est pas très DRY.<br />
<br />
Pour savoir systématiquement et aisément dans quel namespace je me trouve, <i>'stock'</i> ou <i>'vente'</i>, le mieux est d'utiliser le hash <b><i>params</i></b>, bien connu quand on traite des données transmises par formulaire.<br />
<br />
Nous utiliserons donc <i><b>params[:namespace]</b></i> que l'on retrouvera à chaque fois que nous aurons une url de la forme <i>/stock/articles</i> ou <i>/vente/articles</i>. Celui-ci aura la valeur <i>'stock'</i> ou <i>'vente'</i>.
Rails offre deux possibilités.
Celle que l'on trouve dans tous les guides utilise le scope :
<br />
<blockquote class="code">
scope ":namespace", :module => 'stock', :as => 'stock' do <br />
<span style="margin-bottom: 10px; margin-left: 10px; margin-right: 10px; margin-top: 10px;">resources :articles</span><br />
end</blockquote>
Ainsi à chaque fois que l'on appelera l'url <i><span style="font-family: 'Courier New', Courier, monospace;">/stock/articles</span></i>, on aura un <i><span style="font-family: 'Courier New', Courier, monospace;">params[:stock]='stock'</span></i>.
Les options <i><span style="color: blue;">:module</span></i> et <i><span style="color: blue;">:as</span></i> permettent d'avoir le même comportement qu'un namespace. Avec <i><span style="color: blue;">:module</span></i> il ira chercher le controllers dans <i>app/controllers/stock/articles_controller.rb</i>. Et avec <i><span style="color: blue;">:as</span></i> il créera les helpers <i><span style="font-family: 'Courier New', Courier, monospace;">stock_articles_path</span></i> et <span style="font-family: 'Courier New', Courier, monospace;"><i>stock_articles_url</i></span>.<br />
<br />
C'est vérifiable avec la commande <b><i><span style="font-family: 'Courier New', Courier, monospace;">rake routes</span></i></b>.<br />
<br />
Cela n'étant pas très élégant, on écrira ces routes avec <i><b><span style="font-family: 'Courier New', Courier, monospace; font-size: x-small;">namespace</span></b></i> et lui définir un <b><i>params</i></b> par défaut qui existera systématiquement dans ce namespace.
<br />
<blockquote class="code">
namespace :stock, :namespace => :stock do <br />
<span style="margin-bottom: 10px; margin-left: 10px; margin-right: 10px; margin-top: 10px;">resources :articles</span><br />
end</blockquote>
Et voilà avec 2 options en moins et une meilleure lisibilité de notre fichier de route, nous avons le même comportement.<br />
Ensuite on fait la même chose sur <i>'vente'</i> ou on boucle sur un Array <span style="font-family: 'Courier New', Courier, monospace;"><i>[:stock, :vente]</i></span>.<br />
<br />
Cette fonctionnalité ouvre de nombreuses portes.<br />
En effet quelque soit le type de routes écrites avec <span style="font-family: 'Courier New', Courier, monospace;"><i>'match'</i></span>,<span style="font-family: 'Courier New', Courier, monospace;"><i> 'get'</i></span> et tout autre verbe RESTFul, on peut définir un params par défaut pour celle-ci en ajoutant<br />
<blockquote class="code">
:nom_du_param => valeur_du_param.</blockquote>
Voilà pour la petite astuce, en espérant qu'elle soit utile au plus grand nombre.Seb the Monsterhttp://www.blogger.com/profile/06891047437621579245noreply@blogger.com0tag:blogger.com,1999:blog-7776826188127982181.post-20222660076268102142011-09-01T10:37:00.000-07:002011-09-01T10:37:24.731-07:00Panne générale de mon site webJe fais face à <b>une grosse panne</b> internet !<br />
C'est la raison pour laquelle mon site web www.sebthemonster.homelinux.com est indisponible depuis 1 grosse semaine, et le sera encore jusqu'au 15 Septembre.<br />
<br />
Je suis <b>vraiment</b> désolé. <br />
<br />
Cependant rassurez-vous, si vous avez fait preuve de patience jusque là, endurez encore un peu, car les courses que vous avez manquées seront rattrapables dès le retour à la normale.<br />
<br />
Merci à tous pour votre fidélité !Seb the Monsterhttp://www.blogger.com/profile/06891047437621579245noreply@blogger.com0tag:blogger.com,1999:blog-7776826188127982181.post-14227333204105815822010-11-02T17:43:00.000-07:002011-02-16T01:55:22.442-08:00Android 2.1 "Eclair" tethering sur Linux Ubuntu avec ProxoidMe voilà passer sous Android, venu de l'iPhone... et comme sur l'iPhone... la première chose à faire, c'est l'utilisation de ces téléphones high-tech comme modem.<br />
<br />
Après, on paye bien un forfait internet illimité (dans la limite du fairway évidemment :( )<br />
Tout d'abord, je précise que je suis sous Ubuntu 10.10. Mais cela devrait fonctionner tout aussi bien sous Ubuntu 10.04.<br />
<br />
Nous verrons ainsi comme installer le tethering sur le PC puis comment l'utiliser facilement.<br />
<br />
Cette méthode est fonctionnelle pour Android 2.1 "Eclair". Pour Android 2.2 "Froyo", il n'est pas nécessaire d'en passer par là. Cela fera l'objet un autre article... promis ;)<br />
<br />
<a name='more'></a><br />
<b><u>1°) L'installation</u></b><br />
<br />
Sur le téléphone Android, c'est très simple : rdv sur l'Android Market et installer Proxoid.<br />
Voilà de quoi vous faciliter encore plus la tâche :)<br />
Télécharger sur le <a class="urlextern" href="http://fr.wikipedia.org/wiki/Android#Android_Market" rel="nofollow" style="background-attachment: initial; background-clip: initial; background-color: transparent; background-image: url(http://www-static.ubuntu-fr.org/lib/tpl/ubuntu/images/link_icon.gif); background-origin: initial; background-position: 0px 1px; background-repeat: no-repeat no-repeat; color: #436976; padding-bottom: 1px; padding-left: 16px; padding-right: 0px; padding-top: 1px; text-decoration: none;" title="http://fr.wikipedia.org/wiki/Android#Android_Market">Market</a> ou en suivant ce code barre proxoid.<br />
<div style="text-align: center;"><a class="media" href="http://doc.ubuntu-fr.org/_detail/proxoid.png?id=proxoid" style="background-attachment: initial; background-clip: initial; background-color: transparent; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; color: #436976;" title="proxoid.png"><span class="Apple-style-span" style="font-family: inherit;"><img alt="" class="media" src="http://doc.ubuntu-fr.org/_media/proxoid.png" style="border-bottom-style: none; border-color: initial; border-left-style: none; border-right-style: none; border-top-style: none; border-width: initial; margin-bottom: 3px; margin-left: 3px; margin-right: 3px; margin-top: 3px; text-decoration: none;" /></span></a></div><br />
Passons au plus intéressant, l'installation sur le PC Ubuntu ou Debian :<br />
Dans un premier temps, il faut connecter le téléphone en USB.<br />
Il n'est pas nécessaire de le monter en Mass Storage (clé USB).Par contre il faut s'être assurer de l'avoir mis en mode de Débogage USB. Pour cela aller dans Paramètres > Applications > Développement > cocher Débogage USB.<br />
Maintenant on va vérifier que Linux a bien reconnu le téléphone, taper dans la console shell :<br />
<blockquote class="console">$ lsusb </blockquote>s'il y a la ligne suivante dans la réponse, c'est tout bon :)<br />
<blockquote class="console">...<br />
Bus 001 Device 002: ID 04e8:681c Samsung Electronics Co., Ltd<br />
...</blockquote>Bon le système est prêt à une installation en bonne et due forme.<br />
Passons aux choses sérieuses.<br />
Toujours dans la console, exécutons les commandes suivantes :<br />
<blockquote class="console">$ sudo touch /etc/udev/rules.d/09-android.rules</blockquote><br />
Ici nous créons le fichier 09-android.rules qui permettra au udev de reconnaître le téléphone. En gros, udev est le système qui gère les périphériques (voir la documentation ici : <a href="http://doc.ubuntu-fr.org/udev">http://doc.ubuntu-fr.org/udev</a>)<br />
<br />
Il va falloir mettre ces lignes dans le fichier /etc/udev/rules.d/09-android.rules que nous venons de créer :<br />
<blockquote class="code">SUBSYSTEM=="usb", SYSFS{idVendor}=="0422", SYSFS{idProduct}=="5222", MODE="0666", OWNER="YOURUSERNAME"<br />
SUBSYSTEM=="usb", SYSFS{idVendor}=="0422", SYSFS{idProduct}=="5222", MODE="0666", OWNER="YOURUSERNAME"</blockquote><br />
En fait la valeur de SYSFS{idVendor} et SYSFS{idProduct} doivent correspondre à celles que nous avons pu récupérer avec la commande lsusb au début du tutoriel.<br />
Dans notre exemple, nous avions "04e8" et "681c". Donc pour le téléphone que j'avais connecté, un Samsung Galaxy S i9000, les lignes seront :<br />
<blockquote class="code">SUBSYSTEM=="usb", SYSFS{idVendor}=="04e8", SYSFS{idProduct}=="681c", MODE="0666", OWNER="YOURUSERNAME"</blockquote><br />
La source de ces indications ont été trouvées sur ubuntu-fr sur cette page : <a href="http://doc.ubuntu-fr.org/proxoid">http://doc.ubuntu-fr.org/proxoid</a><br />
Ailleurs, j'ai trouvé cette ligne qui a très bien fonctionner chez moi :<br />
<blockquote class="code">SUBSYSTEM=="usb", ATTRS{idVendor}=="04e8", SYMLINK+="android_adb", MODE="0666", OWNER="YOURUSERNAME"</blockquote>Dans ce cas il va falloir mettre la valeur du SYSFS{idVendor} des lignes précédentes sur le ATTRS{idVendor}<br />
Dans les deux exemples, pensez à modifier le OWNER en indiquant votre identifiant de session ubuntu.<br />
Ensuite, il n faut pas oublier de mettre les règles appropriées au fichier créé:<br />
<blockquote class="console">$ sudo chmod a+r /etc/udev/rules.d/09-android.rules</blockquote><br />
On va rajouter notre user au groupe plugdev (n'oublier pas de remplacer YOURUSERNAME par le votre username)<br />
<blockquote class="console">$ sudo gpasswd -a YOURUSERNAME plugdev</blockquote><br />
Et maintenant, on redémarre udev :<br />
<blockquote class="console">$ sudo service udev restart</blockquote><br />
Le système est prêt pour la connexion, il ne manque plus que l'utilitaire, le logiciel qui va faire le pont entre ubuntu et le téléphone, un genre de driver ;)<br />
<br />
Téléchargeons le SDK Android qui se trouve à cette adresse : <a href="http://developer.android.com/sdk/index.html">http://developer.android.com/sdk/index.html</a><br />
<br />
Aller dans le répertoire où vous avez télécharger le tar.gz du SDK et exécute les commandes suivantes :<br />
<blockquote class="console">$ tar xvzf android-sdk_r07-linux_x86.tgz<br />
$ sudo mv android-sdk-linux_x86/ /opt/<br />
$ sudo ln -s /opt/android-sdk-linux_x86/tools/adb /usr/bin/<br />
$ adb forward tcp:8080 tcp:8080</blockquote><br />
adb est le logiciel qui permet de créer le proxy entre Ubuntu et le téléphone. Dans ce cas précis, le proxy est créé sur le port 8080. Vérifiez qu'il ne soit pas utiliser ou choisissez en un autre.<br />
<br />
Avec ces commandes, j'ai décompresser l'archive, et déplacer le contenu dans le répertoire /opt/ et créer un lien symbolique vers adb dans /usr/bin afin d'y accéder facilement.<br />
<br />
Aucun message d'erreurs ne devrait pas être retourné.<br />
Il ne reste que deux choses à faire, lancer Proxoid sur le téléphone, mais nous le feront en dernier. Et paramétrer votre navigateur préféré ou encore le système pour passer par le proxy.<br />
<br />
Pour Firefox, il y a l'extension SwitchProxy Tool. Pour Chrome, il y a Proxy Switchy. Créer un profil et paramétrer le ainsi :<br />
<blockquote class="code">Configuration Proxy Manuelle<br />
Host : localhost Port 8080<br />
No proxy for : localhost, 127.0.0.1</blockquote><br />
Maintenant on démarre Proxoid sur le téléphone android, and cocher "Démarrer".<br />
Et miracle vous avez internet... n'est ce pas magnifique.<br />
<br />
Bon ce n'est pas tout. Faut pouvoir utiliser tout ça facilement maintenant.<br />
<br />
<b><u>2°) L'utilisation</u></b><br />
<br />
Personnellement je me suis fait des alias dans mon ~/.bashrc. Mais cela n'est pas obligatoire.<br />
<br />
Il vous suffit de faire Alt+F2 ou d'ouvrir une console et de lancer, après avoir brancher le téléphone android au PC par USB, pour démarrer le proxy:<br />
<blockquote class="console">$ adb forward tcp:8080 tcp:8080</blockquote><br />
Pour l'éteindre, lancer la commande suivante :<br />
<blockquote class="console">$ adb kill-server</blockquote>Et voilà, vous êtes prêts à travailler, ou même que surfer, d'où vous voulez !!<br />
<br />
N'hésitez pas à laisser des commentaires...<br />
Si vous avez des idées pour simplifier encore plus l'utilisation, par des scripts par exemple, n'hésitez pas non plus ;), merci à tous !<br />
<br />
sources: <a href="http://doc.ubuntu-fr.org/proxoid">http://doc.ubuntu-fr.org/proxoid</a><br />
<a href="http://code.google.com/p/proxoid/wiki/installationLinux">http://code.google.com/p/proxoid/wiki/installationLinux</a><br />
<a href="http://www.humans-enabled.com/2009/12/how-to-tether-your-verizon-droid-as.html">http://www.humans-enabled.com/2009/12/how-to-tether-your-verizon-droid-as.html</a><br />
<a href="http://www.overclock.net/linux-unix/749612-tethering-linux-machines-android-phones-without.html">http://www.overclock.net/linux-unix/749612-tethering-linux-machines-android-phones-without.html</a><br />
<a href="http://www.linux-magazine.com/Online/Blogs/Productivity-Sauce/Tether-an-Android-Phone-Using-Proxoid">http://www.linux-magazine.com/Online/Blogs/Productivity-Sauce/Tether-an-Android-Phone-Using-Proxoid</a>Seb the Monsterhttp://www.blogger.com/profile/06891047437621579245noreply@blogger.com2tag:blogger.com,1999:blog-7776826188127982181.post-45923215960752400602010-07-31T00:40:00.000-07:002010-11-02T17:50:29.430-07:00HOW TO installer XDTV sous Ubuntu ou DebianJ'ai utilisé ce logiciel pour regarder la télévision sur mon PC depuis mon arrivée dans le monde Linux.<br />
<br />
Je n'ai jusqu'alors trouvé aucun logiciel qui soit aussi facile à utiliser et qui permette d'enregistrer aussi facilement et de programmer celui-ci.<br />
<br />
Ce programme n'a jamais été dans les dépôts, pourtant il offrait sur son site (<a href="http://xawdecode.sourceforge.net/htmlpageFR/indexFR.shtml">http://xawdecode.sourceforge.net/htmlpageFR/indexFR.shtml</a>) un fichier deb.<br />
<br />
Aussi à mon grand désespoir, lorsque j'ai installé Lucid Lynx (Ubuntu 10.04), j'ai appris que ce projet été abandonné... et donc plus de deb disponible.. :'(<br />
<br />
Mais il serait en cours de reprise... extra. Cependant en attendant rien de plus depuis 2009 :(<br />
<br />
J'ai persisté et finalement trouvé comment installer ce logiciel avec les sources.<br />
<a name='more'></a><br />
Les sources se trouvent ici : <a href="http://sourceforge.net/projects/xawdecode/">http://sourceforge.net/projects/xawdecode/</a>.<br />
<br />
Ensuite on passe à l'installation des bibliothèques nécessaires, celle concernant alsa-oss est mentionnée sur le site. Celles de libxaw, ben il m'a fallu les trouver tout seul, m'enfin, le principal est d'y arriver et de partager... ;)<br />
Donc voici les commandes :<br />
<br />
<blockquote class="console">$ sudo apt-get install libxaw7 libxaw7-dev<br />
$ sudo apt-get install alsa-oss</blockquote><br />
Et maintenant on passe à l'installation de xdtv. Accessoirement, je mets la commande pour récupérer les sources, comme ça juste un Copier/Coller à réaliser ;)<br />
<br />
Je mets le lien de la version 2.4.0 car c'est celle que j'utilise et qui fonctionne très bien. Sachez cependant que la 2.4.1 est disponible et selon le site tiendrait compte de mise à jour de FFmpeg.<br />
<br />
<blockquote class="console">$ cd répertoire/des_sources/xdtv<br />
$ wget http://sourceforge.net/projects/xawdecode/files/01%20-%20XdTV/2.4.0/xdtv-2.4.0.tar.gz/download<br />
$ ./configure<br />
$ sudo make<br />
$ sudo make install</blockquote><br />
Ben maintenant il ne reste plus qu'à lancer le programme et accessoirement, pour ceux qui aime bien le clic à se créer un lanceur.<br />
<br />
<blockquote class="console">$ xdtv</blockquote><br />
Pour lancer la programmation des enregistrements, voici la commande :<br />
<br />
<blockquote class="console">$ xdtv_record.sh</blockquote><br />
A priori, une fois qu'un enregistrement est programmé, il ne faut plus éteindre et redémarrer l'ordinateur avant l'échéance au risque de perdre la programmation.<br />
Si vous avez des solutions pour y palier, je suis preneur. A vrai dire, en toute honnêteté, je n'ai pas chercher. :)<br />
<br />
Personnellement je me suis mis cette commande dans mon ~/.bashrc avec l'alias 'magneto'. ;)<br />
<br />
Voilà voilà, et maintenant profitez en bien !Seb the Monsterhttp://www.blogger.com/profile/06891047437621579245noreply@blogger.com0tag:blogger.com,1999:blog-7776826188127982181.post-89720318475562272002009-12-24T15:33:00.000-08:002009-12-24T15:38:22.691-08:00Une GSXR qui se monte tout seuleJe ne suis pas pour les motos japonaises... difficile de ne pas le remarquer ;P<br /><br />Mais cette vidéo est incroyablement bien faite et pleine d'humour... à voir et à revoir car il y plein de détails en arrière plan... je vous laisse les découvrir :<br /><br /><object width="560" height="340"><param name="movie" value="http://www.youtube.com/v/Zlax5L8BVGc&hl=fr_FR&fs=1&"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/Zlax5L8BVGc&hl=fr_FR&fs=1&" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="560" height="340"></embed></object><br /><br /><span style='font-size:10px;font-style:italic;'>source: <a href="http://www.youtube.com/watch?v=Zlax5L8BVGc">Youtube</a> et <a href="http://www.moto-net.com/breve.php?RefBreve=2664">article vu sur Moto-net.com</a></span>Seb the Monsterhttp://www.blogger.com/profile/06891047437621579245noreply@blogger.com0tag:blogger.com,1999:blog-7776826188127982181.post-65366925738528832022009-10-07T00:56:00.000-07:002009-10-07T01:04:59.458-07:00La Ducati 1198 en robe de soirée noireVoilà ma dernière découverte sur la toile signée DUCATI:<br /><br />Une véritable merveille, la <span style="font-weight:bold;">1198</span> sortie d'usine est déjà une superbe moto mais alors toute vêtue de <span style="font-weight:bold;">noir carbone</span>... <span style="font-weight:bold;">BRRRRR</span>, j'en ai des frissons rien que de la voir...<br />seul le prix refroidi... ;)<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://blog.jameslist.com/wp-content/uploads/2009/10/rever-corsa-ducati-2jpg_65-594x452-custom.jpg"><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 594px; height: 452px;" src="http://blog.jameslist.com/wp-content/uploads/2009/10/rever-corsa-ducati-2jpg_65-594x452-custom.jpg" border="0" alt="" /></a><br /><span style="font-style:italic;font-size:10px;">source: http://blog.jameslist.com/2009/rever-corsa-ducati-1198-nero/</span><br /><br />Le Diaporama, c'est par <a href="http://moto.caradisiac.com/Ducati-1198-Nero-by-Rever-Corsa-De-57-500-a-140-000-US-985/diaporama">ici</a>.Seb the Monsterhttp://www.blogger.com/profile/06891047437621579245noreply@blogger.com0tag:blogger.com,1999:blog-7776826188127982181.post-12896113183352635382009-08-21T08:53:00.000-07:002009-08-21T08:55:55.183-07:00Italiens réinventent le plongeonVoici une petite vidéo partagée par un ami via chat...<br />Les italiens auraient réinventé le plongeon acrobatique, extraordinaire:<br /><br /><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=10,0,0,0" width="640" height="510"><param name="movie" value="http://tv.repubblica.it/static/swf/adv_player.swf"></param><param name="allowScriptAccess" value="always" /><param name="allowFullScreen" value="true"></param><param value="autostart=false&keyT=Vs uàf-nc teqàò,bzr);jtnqpa&key=.iì(ccwqeafiweà?r.esèp@dajt:p@ek,v;_ùyqvmjnita-q,pRve Mfeti?aus=agl?01c'02?ò03ex04&baseURL=http://tv.repubblica.it/static/images/player/&file=repubblicatv/file/2009/bruno1008097.flv&repeat=false&logo=1&strip=0&nielsenBrand=repubblicatv_&brand=brand_repubblicaradio&dState=normal&scaleMethod=fit&rel=false&fsType=fl&" name="flashvars"><embed src="http://tv.repubblica.it/static/swf/adv_player.swf" allowScriptAccess="always" type="application/x-shockwave-flash" allowfullscreen="true" width="640" height="510" flashvars="autostart=false&keyT=Vs uàf-nc teqàò,bzr);jtnqpa&key=.iì(ccwqeafiweà?r.esèp@dajt:p@ek,v;_ùyqvmjnita-q,pRve Mfeti?aus=agl?01c'02?ò03ex04&baseURL=http://tv.repubblica.it/static/images/player/&file=repubblicatv/file/2009/bruno1008097.flv&repeat=false&logo=1&strip=0&nielsenBrand=repubblicatv_&brand=brand_repubblicaradio&dState=normal&scaleMethod=fit&rel=false&fsType=fl"></embed></object>Seb the Monsterhttp://www.blogger.com/profile/06891047437621579245noreply@blogger.com0tag:blogger.com,1999:blog-7776826188127982181.post-26082764143117846452009-05-28T00:24:00.000-07:002009-05-28T00:30:57.591-07:00Séance d'HyperMotardCela faisait longtemps que je n'avais pas trouvé une vidéo de moto bien sympathique!!!<br /><br />Celle-ci est excellente et nous révèle tout le talent de David Checa ...<br /><br />Je vous laisse l'apprécier :<br /><br /><object height="344" width="425"><param name="movie" value="http://www.youtube.com/v/aeUK6aOEJKo&color1=0xb1b1b1&color2=0xcfcfcf&feature=player_embedded&fs=1"><param name="allowFullScreen" value="true"><embed src="http://www.youtube.com/v/aeUK6aOEJKo&color1=0xb1b1b1&color2=0xcfcfcf&feature=player_embedded&fs=1" type="application/x-shockwave-flash" allowfullscreen="true" height="344" width="425"></embed></object>Seb the Monsterhttp://www.blogger.com/profile/06891047437621579245noreply@blogger.com0tag:blogger.com,1999:blog-7776826188127982181.post-34528746598997346582008-07-07T00:33:00.000-07:002008-07-18T02:17:34.917-07:00Entrailles de la DesmocediciEt voici à quoi ressemble les dessous de la jupe de la Desmocedici: La MotoGP rendu accessible au grand public bien fortuné...<br />Suivez le lien:<br /><a href="http://qdiddy.myphotoalbum.com/slideshow.php?set_albumName=album01">ICI</a><br /><br />C'est magnifique.. et il y a tant dans si petit.. sa force le respect pourtoute cette puissance.Seb the Monsterhttp://www.blogger.com/profile/06891047437621579245noreply@blogger.com0tag:blogger.com,1999:blog-7776826188127982181.post-47795669425609832882008-05-17T09:57:00.000-07:002008-05-17T10:09:08.492-07:00Comment laver sa moto et son équipement ?Après vous avoir fourni une vidéo montrant <a href="http://www.blogger.com/2008/03/garder-moto-deux-roues.html">comment garder sa moto sur 2 roues</a> (petit rappel: <a href="http://www.blogger.com/2008/03/garder-moto-deux-roues.html">c'est ici</a>).<br /><br />Je vous propose, après quelque navigation sur le web, un tutoriel vidéo sur comment laver, et sa moto, et son équipement ...<br />Je vous laisse la surprise de la découverte:<br /><br /><div><object height="336" width="420"><param name="movie" value="http://www.dailymotion.com/swf/x358vx&v3=1&colors=background:DDDDDD;glow:FFFFFF;foreground:333333;special:FFC300;&related=0"><param name="allowFullScreen" value="true"><param name="allowScriptAccess" value="always"><embed src="http://www.dailymotion.com/swf/x358vx&v3=1&colors=background:DDDDDD;glow:FFFFFF;foreground:333333;special:FFC300;&related=0" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" height="336" width="420"></embed></object><br /><b><a href="http://www.dailymotion.com/video/x358vx_mov06320pc_fun">MOV06320_PC</a></b><br /><i>envoyé par <a href="http://www.dailymotion.com/lutindeberget">lutindeberget</a></i></div>Seb the Monsterhttp://www.blogger.com/profile/06891047437621579245noreply@blogger.com1tag:blogger.com,1999:blog-7776826188127982181.post-74913930401130830392008-05-15T15:08:00.000-07:002010-11-02T17:51:04.198-07:00Javascript dans Ruby on Rails - partie 1<span style="color: rgb(102, 102, 102);">Dans ce post, je vous ferai part de ma dernière aventure dans le monde de Rails.</span><br />
<span style="color: rgb(102, 102, 102);">J'ai eu un peu de mal à trouver des tutoriaux assez précis et en français. En réalité, je n'en ai pas trouvé.</span><br />
<br />
<span style="color: rgb(102, 102, 102);">Voici alors que je propose le mien.</span><br />
<br />
<span style="color: rgb(102, 102, 102);">Utiliser Ajax dans notre framework préféré, revient à écrire du javascript avec du Ruby dans les pages ou vues et à la volée.</span><br />
<span style="color: rgb(102, 102, 102);">Tout d'abord un bref bilan sur ce qu'est le RJS. Il s'agit d'une extension pour les vues au même titre que les ".rhtml". Seulement le serveur générera à la lecture de ces vues du code javascript interprété par le navigateur.</span><br />
<span style="color: rgb(102, 102, 102);">Les vues RJS remplaceront donc les vues RHTML pour une action du controller.</span><br />
<span style="color: rgb(102, 102, 102);">Avec Rails 2.0, ce ne sont plus des vues ".rhtml" ou ".rjs" mais ".html.erb" et ".js.erb" .</span><br />
<span style="color: rgb(102, 102, 102);">Dans la suite du tutoriel, je garderai l'appellation "RHTML" et "RJS" afin d'économiser mon clavier... ;)</span><br />
<br />
<span style="color: rgb(102, 102, 102);">Pour rendre les vues RJS efficaces, il est indispensable d'utiliser l'Ajax avec les méthodes des Helpers Javascript, Prototype ou Scriptaculous fourni dans ActionView utilisé par le framework Rails.</span><br />
<span style="color: rgb(102, 102, 102);">Une petite énumération de ces méthodes:</span><br />
<ul style="color: rgb(102, 102, 102);"><li>form_remote_tag</li>
<li>link_to_remote</li>
<li>link_to_function<br />
</li>
<li>remote_function</li>
<li>button_to_function<br />
</li>
<li>(s'il en manque, n'hésitez pas à me le signaler...)</li>
</ul><span style="color: rgb(102, 102, 102);font-size:100%;" ><span style="font-weight: bold;"> Le javascript avec Ruby</span></span><br />
<br />
<span style="color: rgb(102, 102, 102);">Il y a plusieurs manières de réaliser du javascript dans le framework Ruby on Rails.</span><br />
<span style="color: rgb(102, 102, 102);">En effet, soit il est directement écrit dans les vues... bien évidemment, je ne parle pas d'écrire du code javascript dans des balises '</span><span style="font-style: italic; color: rgb(102, 102, 102);">script</span><span style="color: rgb(102, 102, 102);">' HTML, mais plutôt en Ruby. Il suffit alors d'utiliser les helper</span><span style="font-style: italic; color: rgb(102, 102, 102);"> </span><span style="font-weight: bold; font-style: italic; color: rgb(102, 102, 102);">button_to_function</span><span style="color: rgb(102, 102, 102);"> ou encore</span><span style="font-weight: bold; font-style: italic; color: rgb(102, 102, 102);"> link_to_function</span><span style="color: rgb(102, 102, 102);">.</span><br />
<span style="color: rgb(102, 102, 102);">Ces deux outils s'utilisent dans la vue afin d'y inscrire une action javascript sur un onClick de lien ou du bouton:</span><br />
<blockquote style="color: rgb(102, 102, 102);" class="code"><br />
<%= link_to_function "Lien", "code javascript", "options html" %><br />
</blockquote><br />
<span style="color: rgb(102, 102, 102);">par exemple, un lien pour réaliser une alerte:</span><br />
<blockquote style="color: rgb(102, 102, 102);" class="code"><br />
<%= link_to_function "Cliquez ici", "alert("Clic réussi");", :id => "clicla", :class => "clicme" %><br />
</blockquote><span style="color: rgb(102, 102, 102);">Ceci créera un lien créant une alerte avec le message "Clic réussi" sur le onClick du lien. Ce lien aura un id "clicla" et la classe css "clicme" : </span><a onClick="javascript:alert('clic réussi');" id="clila" class="clicme">Le Lien</a><br />
<br />
<span style="color: rgb(102, 102, 102);">Mais il est également possible de réaliser un bloc contenant plusieurs actions javascript successives. Le code javascript ainsi saisi sera du pur RJS.</span><br />
<blockquote style="color: rgb(102, 102, 102);" class="code"><br />
<%= link_to_function "Lien", nil , "options html" do |page| .... code rjs .... end %><br />
</blockquote><br />
<span style="color: rgb(102, 102, 102);">L'objet </span><span style="font-style: italic; color: rgb(102, 102, 102);">'page'</span><span style="color: rgb(102, 102, 102);"> sur lequel s'applique spécifiquement le code rjs correspond au document. Ainsi il est possible de:</span><br />
<span style="color: rgb(102, 102, 102);">- sélectionner un élément DOM à partir de son id > page[:id_du_DOM] ou page["id_du_DOM"]</span><br />
<span style="color: rgb(102, 102, 102);">- sélectionner une série d'éléments en fonction de leur classe css > page.select("style css") puis y ajouter les commandes que l'on veut effectuer en réalisant un page.select("").each ou page.select("").find_all ... etc ...</span><br />
<span style="color: rgb(102, 102, 102);">De manière générale, il est alors possible d'utiliser les outils du module ruby </span><span style="font-style: italic; color: rgb(102, 102, 102);">Enumerable</span><span style="color: rgb(102, 102, 102);"> que vous trouverez </span><a style="color: rgb(102, 102, 102);" href="http://www.ruby-doc.org/core/classes/Enumerable.html">ici</a><br />
<br />
<span style="color: rgb(102, 102, 102);">Le helper button_to_function fonctionne à l'identique.</span><br />
<br />
<span style="color: rgb(102, 102, 102);">Dans un second temps, nous aborderons réellement ce qui fait de Ruby on Rails et de ses Helpers Ajax quelquechose de magique.</span><br />
<br />
<span style="color: rgb(102, 102, 102);">A SUIVRE ....</span><br />
<div style="text-align: center; color: rgb(102, 102, 102);"><br />
</div>Seb the Monsterhttp://www.blogger.com/profile/06891047437621579245noreply@blogger.com0tag:blogger.com,1999:blog-7776826188127982181.post-11550947400865605722008-04-13T11:41:00.001-07:002010-06-13T04:27:06.486-07:00Ruby on Rails et SQLitePour programmer une application en Ruby on Rails, nous avons le choix de la base de données que nous utiliserons.<br />MySQL est certes la plus efficace mais il y a toujours, pour l'aspect portable de l'application le choix de SQLite qui peut s'avérer pertinent.<br />Comme je développe mon premier projet entre chez moi et dans mon foyer du week-end, j'utilise à la fois MySQL et SQLite (ce dernier est fort pratique pour économiser les ressources du PC).<br /><br />Je vais vous faire part de la problématique que j'ai pu rencontrer.<br /><br /><span style="font-weight: bold; text-decoration: underline;">Sous Linux base Debian (j'utilise plutôt Ubuntu):</span><br /><br />Aucuns soucis...<br /><br /><blockquote class="console">$ sudo apt-get install sqlite3 libsqlite3-dev<br /><br />$ sudo gem install sqlite3-ruby<br /></blockquote><br />Et voilà il n'y a plus qu'à modifier la configuration du projet au niveau du database.yml comme indiquer ci-dessous<br /><br /><span style="font-weight: bold; text-decoration: underline;">Sous Windows c'est une toute autre affaire:</span><br /><br />En effet il vous faut télécharger le fichier <span style="font-weight: bold;">sqlite3.dll</span> sur le site officiel de SQLite (ici => <a href="http://www.sqlite.org/download.html">http://www.sqlite.org/download.html</a>)<br /><br />Le fichier sqlite3.exe peut aussi être récupéré mais il ne permettra que l'administration de votre base de données en ligne de commande..<br /><br />Le fichier précédemment télécharger devra être <span style="font-weight: bold;">obligatoirement</span> placé <span style="text-decoration: underline;">dans le répertoire source de ruby</span> (en général <span style="font-style: italic;">C:/ruby/bin</span>).<br />Alors comme sous linux, il faudra procéder à l'installation de la gem sqlite3-ruby... saisissez gem install sqlite3-ruby dans la fenêtre commande.<br /><br />Pensez à choisir la version <span style="font-weight: bold;">win32</span> si cela vous ait demandé<br /><br /><br />La particularité de Windows est qu'il faut <span style="font-weight: bold;">ABSOLUMENT</span> créer son projet dans un répertoire pour lequel <span style="font-weight: bold;">le chemin ne contient AUCUN espaces</span>... sinon le projet sera incapable d'ouvrir la base de données.<br /><br /><span style="font-weight: bold; text-decoration: underline;">Et pour finir, le fichier database.yml:</span><br />Mettre ceci dans les paramètres de la base de données:<br /><blockquote class="code"><br />development:<br />adapter: sqlite3<br />database: db/LPG_development.db</blockquote><br /><br /><span style="font-weight: bold; text-decoration: underline;">Quelques différences entre SQLite et MySQL:</span><br /><ul><li>Pour tous les champs qui ne peuvent pas être à NULL, il est <span style="font-weight: bold;">indispensable</span> de déclarer la valeur par défaut dans la migration</li><br /><li>Dans les fixtures, il est indispensable de renseigner tous les champs, même ceux <span style="font-style: italic;">created_at</span>, <span style="font-style: italic;">updated_at</span> et <span style="font-style: italic;">lock_version</span></li></ul><br /><br />Et voilà vous avez tous les renseignements pour programmer avec SQLite, faites-vous plaisir!!!<br /><br /><span style="font-size:85%;">Sources: <a href="http://wiki.rubyonrails.org/rails/pages/HowtoUseSQLite">http://wiki.rubyonrails.org/rails/pages/HowtoUseSQLite</a></span><br /><br /><em>modifié le 13 Juin 2010</em>Seb the Monsterhttp://www.blogger.com/profile/06891047437621579245noreply@blogger.com1tag:blogger.com,1999:blog-7776826188127982181.post-45220058233454472902008-03-29T15:08:00.000-07:002008-03-29T15:23:18.229-07:00Comment garder sa moto sur 2 roues?En ce samedi ensoleillé, j'ai eu une <span style="font-weight:bold;">GRANDE</span> leçon de pilotage.<br />Celle-ci s'intitulait: Comment garder sa moto sur ses deux roues?<br /><br />La solution la plus sage est de rouler <span style="font-style:italic;">tranquillement</span>.<br /><br />Pour tous les autres, regarder cette vidéo:<br /><object width="425" height="350"> <param name="movie" value="http://www.youtube.com/v/mFa44CELNfU"> </param> <embed src="http://www.youtube.com/v/mFa44CELNfU" type="application/x-shockwave-flash" width="425" height="350"> </embed> </object>Seb the Monsterhttp://www.blogger.com/profile/06891047437621579245noreply@blogger.com0tag:blogger.com,1999:blog-7776826188127982181.post-43243096575465185452008-03-14T12:23:00.000-07:002008-03-18T16:22:55.394-07:00Petit Panorama sur GavarnieIl y a deux semaines, je suis allé skié à Gèdre-Gavarnie... évidemment il n'y avait pas beaucoup de neige... plutôt aucune neige!!! ;-\<br /><br />Puis après deux jours de tempête avec des vents de 110 à 130 km/h, on s'est réveillé au milieu de ça (c'est sûr, j'y étais!!! ;P ):<br /><br /><span style="font-size:85%;"><span style="font-style: italic;">cliquez sur la photo pour la voir de meilleure qualité</span></span><br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg7fSjqGVOGJGicbTSZ7tIE7chHntOh_hWBGaRvbUcMGGbdWBycF4tCehFzpgl8fReLXDVwhFxPI-v8h6meLe08qLH2GDoxJtF-SiSqvgyDzXvCz4DvGs7Pg1J40T3mZkDLi_SafbamIHdy/s1600-h/Gavarnie_en_neige_2048.jpg"><img style="cursor: pointer;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg7fSjqGVOGJGicbTSZ7tIE7chHntOh_hWBGaRvbUcMGGbdWBycF4tCehFzpgl8fReLXDVwhFxPI-v8h6meLe08qLH2GDoxJtF-SiSqvgyDzXvCz4DvGs7Pg1J40T3mZkDLi_SafbamIHdy/s200/Gavarnie_en_neige_2048.jpg" alt="Gavarnie sous la neige, Montagne" id="BLOGGER_PHOTO_ID_5179154941803047954" border="0" /></a><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjldOAoW2roLxzjdFPxnUmgmgW27bGgCwc8FG38_AEO17qyZFajXC4pjP7tci-1bpnLJNUOuIObNUYjpF8LWYiOSKxU8KWT4jn80mXopSbuQWei6z1gNEW84g4RYAjoXQYMNrd1-lKRZ-fJ/s1600-h/Panorama_Gavarnie_en_neige.jpg"><br /></a>Seb the Monsterhttp://www.blogger.com/profile/06891047437621579245noreply@blogger.com0tag:blogger.com,1999:blog-7776826188127982181.post-21860358312425421702008-03-13T16:24:00.000-07:002008-07-18T02:18:10.186-07:00Les Annotations dans votre application RailsQui n'apprécie pas de voir d'un premier coup d'œil ce qu'il a prévu de coder ou d'améliorer dans son application Ruby on Rails.<br />Jusque là, du temps de <span style="font-style: italic; font-weight: bold;">Rails 1.2</span> où je suis encore, l'on devait se contenter de mettre quelques commentaires, voir de les libellés avec quelques TODOs, FIXME ou autre OPTIMIZE ...<br /><br />Avec <span style="font-style: italic; font-weight: bold;">Rails 2.0</span>, il est possible de lancer une tâche rake permettant de lister les différentes annotations avec leur contexte (fichier de l'application, type de l'annotation et annotation) :<br /><blockquote style="background-color:#ececec; padding: 5px; border: 1px solid #d8d8d8;"><span style="font-style: italic;font-size:85%;" >rake notes</span><br />ou <span style="font-style: italic;font-size:85%;" >rake notes:TODO</span><br />ou <span style="font-style: italic;font-size:85%;" >rake notes:FIXME </span><br />ou <span style="font-style: italic;font-size:85%;" >rake notes:OPTIMIZE</span><br /></blockquote><br /><span style="font-size:100%;">Le résultat obtenu serait le suivant:<br /><blockquote style="background-color:#ececec; padding: 5px; border: 1px solid #d8d8d8;"><span style="font-size:85%;"><span style="font-style: italic;">(in /home/sebthemonster/RailsProjects/lpg-web)</span><br /><span style="font-style: italic;">app/controllers/commande_controller.rb:</span><br /><span style="font-style: italic;"> * [142] [TODO] Insérer un appel IPN pour vérifier si la transaction a tout de même eu lieu</span><br /><span style="font-style: italic;"> * [144] [OPTIMIZE] Réaliser une vue adaptée si l'échec est réel</span></span></blockquote><br /><span style="font-style: italic;"></span>Il est possible d'utiliser cette tâche dans <span style="font-style: italic; font-weight: bold;">Rails 1.2</span> en téléchargeant le script de la tâche dans le répertoire<span style="font-style: italic;"> lib/tasks</span> de votre application:<br /><br />sous Linux, saisissez dans le terminal les lignes suivantes:<br /><blockquote style="background-color:#000; padding: 5px; border: 1px solid #d8d8d8; color: #fff; font-family: arial; font-size:90%;">$ cd lib/tasks && \<br />wget http://dev.rubyonrails.org/export/7553/trunk/railties/lib/tasks/annotations.rake</span><br /></blockquote><br /><span style="font-size:85%;">Sources: <a href="http://ryandaigle.com/archives/2007/2">http://ryandaigle.com/archives/2007/2</a></span>Seb the Monsterhttp://www.blogger.com/profile/06891047437621579245noreply@blogger.com0tag:blogger.com,1999:blog-7776826188127982181.post-4195474001630470452008-03-01T23:30:00.000-08:002008-07-18T02:18:24.478-07:00Ouverture de mon blogComme je l'explique dans mon profil.. je suis un jeune programmeur... d'autant plus en <span style="font-weight: bold;">Ruby on Rails.<br /></span>Mon projet actuel est un site marchand pour un petit commerce.<br /><br />Au fur et à mesure de mes découvertes, je ne manquerai pas ne vous en faire profiter.<br /><br />Les amoureux des grands espaces pourront commencer par profiter des quelques photos que j'ai commencé à mettre en ligne... celles-ci ont la grande majorité (pour ne pas dire toutes) seront prises dans les <span style="font-weight: bold;">Pyrénées</span>.<br /><br />Mes petites escapades sur mon <span style="font-weight: bold;">bicylindre</span> préféré viendront également...<br /><br />Bonne lecture à tous et revenez de temps en temps... l'évolution sera dès à présent continue...<br /><span style="font-weight: bold;"></span>Seb the Monsterhttp://www.blogger.com/profile/06891047437621579245noreply@blogger.com0