Développeur Web RoR

Aller au contenu | Aller au menu | Aller à la recherche

mardi 14 avril 2015

Utiliser Meld sous linux pour voir un diff git sur un fichier local avec sa précédente version.

L'article d'origine est situé ici : https://nathanhoad.net/how-to-meld-for-git-diffs-in-ubuntu-hardy

Je me permets ici juste d'écrire le bout de script en ruby au lieu de python (attention c'est d'une grande complexité ^^).

Donc pour résumer l'article, il faut écrire un script qui renvoie deux paramètres au lieu de sept.

nano /home/sylvain/diff.rb

Mettre les deux lignes ci-dessous dans le script (attention il s'agit d'anti-quote) :

#!/usr/bin/env ruby

`meld #{ARGV[0]} #{ARGV[1]}`

sudo chmod +x /home/sylvain/diff.rb

git config --global diff.external /home/sylvain/diff.rb

git diff monfichier.rb

Ça permet quand même d'avoir un diff plus visuel.

dimanche 5 avril 2015

Texte illisible dans RubyMine sur Ubuntu

Les textes de l'éditeur de Rubymine sont illisibles (font des menus et éditeur...) ?

Pas de panique il faut ajouter les lignes en gras ci-dessous dans le fichier RubyMine-7.0.4/bin/rubymine64.vmoptions

-Xms128m

-Xmx512m

-XX:MaxPermSize=250m

-ea

-Dsun.io.useCanonCaches=false

-Djava.net.preferIPv4Stack=true

-Djsse.enableSNIExtension=false

-XX:+UseConcMarkSweepGC

-XX:SoftRefLRUPolicyMSPerMB=50

-Dawt.useSystemAAFontSettings=lcd

-Dswing.aatext=true

-Dsun.java2d.xrender=true

vendredi 30 janvier 2015

Sprockets::FileNotFound in Beautiful#dashboard : couldn't find file 'jquery.ui.all'

Pour corriger l'erreur Sprockets::FileNotFound in Beautiful#dashboard : couldn't find file 'jquery.ui.all' dans une application qui utilise beautiful_scaffold il faut remplacer (dans application-bs.js et application-bs.css) : 

= require jquery.ui.all 

Par  

= require jquery-ui

Bon code.

mercredi 28 janvier 2015

MiniMagick Composite : composition de deux images en préservant la transparence

J'ai joué un peu avec MiniMagick ces derniers temps. Je cherchais à faire une composition de deux images en préservant la transparence.

Après quelques heures de recherche et de test, je me suis mis à tester image magick en ligne de commande. J'avais vraiment un exemple minimaliste et en ligne de commande, ça fonctionnait : la transparence était conservée. 

Fatigué de la différence en mini_magick et image magick j'ai lu le code source de mini_magick et je suis tombé sur ça : 

https://github.com/minimagick/minimagick/blob/master/lib/mini_magick/image.rb#L427

Tiens mais on peut spécifier un format dans la méthode composite (après coup j'ai un peu honte c'était dans la doc : http://www.rubydoc.info/github/minimagick/minimagick/MiniMagick/Image) le fait de choisir png en format de sortie, minimagick va conserver la transparence.

Bref voici un exemple concret (vous noterez la qualité et la précision de mes peintures numériques ^^) :


require 'mini_magick'
# composite -compose Dst-Over -gravity Center fond.png pochoir.png test.png
image = MiniMagick::Image.open("pochoir.png")
image2 = MiniMagick::Image.open("fond.png")
result = image.composite(image2, 'png') do |c|
c.compose "dst-over"
c.gravity "Center"
end
result.write("result.png")

mardi 27 mai 2014

Rajouter des balises avant et après la sélection dans RubyMine (Surround with)

Dans RubyMine -> File -> Settings -> Live Templates (IDE Settings) vous pouvez créer votre code à générer (Un bout de code dont vous vous servez beaucoup, un peu comme une extension du ZenCoding ou Emmet). 

Dans Cliquez sur le "+" puis "1. Live Template", choisissez une abréviation qui permettra de la retrouver par exemple "ddd" sans les "". Dans la description, dévrivez votre Live Template. Dans "Template text" mettez votre code :

<div>$SELECTION$</div>

$SELECTION$ représente la sélection courrante (cela permettra d'ajouter du code autour de la sélection). Si le message en rouge en dessous affiche "No applicable contexts yet. Define" Cliquez sur "Define" pour définir dans quel contexte utiliser le Live Template. Dans ce cas cochez ERB et HTML.

Enfin "Apply" -> "Ok", RubyMine a tendance à être un peu perdu donc redémarrez-le.

Donc maintenant avec ctrl + espace vous devriez pouvoir utiliser votre Live Template (par son abréviation) mais la sélection sera écrasée. Il faut alors sélectionner son texte puis utiliser ctrl + alt + j.

vendredi 11 avril 2014

Comment j'aurai dû gagner un samsung galaxy S5 avec materiel.net et twitter !

Tous les midi, materiel.net (merci à eux) lance un concours : trouver une vignette parmi les pages de leur site. 

Pourtant chaud-bouillant, tous les midi, je me fais battre à plates coutures. Ce midi j'étais plus que jamais en feu :-) je trouve relativement rapidement la page et la tweet avec mention mais materiel.net annonce un autre vainqueur, pas très bon joueur je regarde le tweet. Je trouve cela vexant alors je cherche comment comparer la date de deux "status" twitter.

J'écris un petit script ruby pour obtenir les secondes sur les dates des status (les clés à l'API sont vides volontairement) :

require 'rubygems'
require 'twitter'
client = Twitter::REST::Client.new do |config|
config.consumer_key        = ""
config.consumer_secret     = ""
config.access_token        = ""
config.access_token_secret = ""
end
moi = '454563567547973632'
lautre = '454563662246989824'
#https://twitter.com/sylperso/status/454563567547973632
#https://twitter.com/le_matt/status/454563662246989824
puts "Moi =>"
puts client.status(moi).attrs
puts "L'autre =>"
puts client.status(lautre).attrs

Réponse du script :

Moi =>

{:created_at=>"Fri Apr 11 10:16:14 +0000 2014", :id=>454563567547973632, :id_str=>"454563567547973632", :text=>"@materielnet http://t.co/txZGEs7zKA", :source=>"web", :truncated=>false, :in_reply_to_status_id=>nil, :in_reply_to_status_id_str=>nil, :in_reply_to_user_id=>47565953, :in_reply_to_user_id_str=>"47565953", :in_reply_to_screen_name=>"materielnet", :user=>{:id=>1926957248...

L'autre =>

{:created_at=>"Fri Apr 11 10:16:37 +0000 2014", :id=>454563662246989824, :id_str=>"454563662246989824", :text=>"@materielnet hop !  http://t.co/O2ZIXBpq8W", :source=>"web", :truncated=>false, :in_reply_to_status_id=>454562669815558144, :in_reply_to_status_id_str=>"454562669815558144", :in_reply_to_user_id=>47565953, :in_reply_to_user_id_str=>"47565953", :in_reply_to_screen_name=>"materielnet", :user=>{:id=>15720056...

Donc en constatant ces résultats, je fais part de ma recherche avec le community manager de materiel.net qui m'explique que je n'apparais pas dans leur timeline.

Mon tweet mention s'apparente à une réponse (en tout cas à l'utilisateur voir le JSON en gras), de plus ensuite j'ai voulu assurer le coup en faisant après une réponse au status et là twitter considère que j'ai déjà tweeté ça (donc je laisse tombé considérant que c'est bien pareil), vous pouvez essayer vous verrez :

Donc en conclusion, twitter considère qu'un tweet avec mention et pareil qu'une réponse (message "déjà tweeté") mais pas materiel.net, donc je ne sais pas qui est en faute :

Twitter qui a fait un uniqueness scopé par user et non sur user + in_reply_to_status_id 

Materiel.net qui n'a pas d'outil pour récupérer toutes les mentions à partir d'un timestamp

Je n'ai que mes yeux pour pleurer, d’ailleurs question suivante : Est-ce que faire RT c'est pareil que cliquer sur "Retweeter" ?

Voici les status :

https://twitter.com/sylperso/status/454563567547973632

https://twitter.com/le_matt/status/454563662246989824

vendredi 7 février 2014

Transformer un array d'objet ActiveRecord en hash avec comme clé l'id et l'objet en valeur

La petite astuce du jour :

Comment transformer un Array d'objet ActiveRecord en Hash avec comme clé l'id et l'objet en valeur ?

Solution

Hash[Family.all.map{ |f| [f.id,f] }]

Ce qui donne : 

{

     4: #<Family id: 4>,

     5: #<Family id: 5>,

     6: #<Family id: 6>,

}

De rien :-)

- page 1 de 46