Développement Web Ruby
par Sylvain CLAUDEL

Derniers posts

Texte illisible dans RubyMine sur Ubuntu

Date d'édition 2015-04-05 à 17:45

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

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

Date d'édition 2015-01-28 à 10:00

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 : https://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")

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

Date d'édition 2014-09-04 à 16:31

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.

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

Date d'édition 2014-05-27 à 16:43

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.

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

Date d'édition 2014-04-11 à 12:09

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 https://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 !  https://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

Développement ruby et geekeries - rivsc