The Caribbean Weblog

"This blog is continuing @ http://christophemaximin.com "

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

samedi 30 juin 2007

EUtube : la Commission Européenne @ Youtube

eutube at youtube

Initiative vraiment intéressante, qui aura peut-être le privilège de faire reculer l'euro-scepticisme primaire parmi ses citoyens...

Plus généralement, il est bien de constater que de plus en plus d'institutions gouvernementales se mettent à utiliser les médias que les gens utilisent vraiment, d'aller les chercher là où ils sont donc (ex: 10 Downing Street), et pas seulement lors d'une campagne électorale.

June 29 : three photos

iphone
iphone

To the applause of Apple employees and those still waiting in line outside the store, Anthony Lionetti of Tiburon, CA, emerges from the Apple Store in Corte Madera, CA after being the first at the store to purchase Apple's iPhone on Friday, June 29, 2007. (IJ photo/Alan Dep)

iphone

GG Apple.

jeudi 21 juin 2007

Rails : YAML et ActiveRecord (et SQL plus généralement)

S'est posé à moi le problème de transformer le contenu du fichier YAML lib/places.yml suivant en lignes SQL représentatives :

- USA:
  - California:
    - Los Angeles Area
    - San Diego Area
- Europe:
  - France:
    - Ile-de-France
    - Aquitaine:
      - Gironde:
        - Bordeaux
    - Alsace
  - Poland:
    - Mazowieckie:
      - Warszawa

..., fichier yaml qui devient :

+----+------------------+-----------+
| id | name             | parent_id |
+----+------------------+-----------+
|  1 | USA              |         0 | 
|  2 | California       |         1 | 
|  3 | Los Angeles Area |         2 | 
|  4 | San Diego Area   |         2 | 
|  5 | Europe           |         0 | 
|  6 | France           |         5 | 
|  7 | Ile-de-France    |         6 | 
|  8 | Aquitaine        |         6 | 
|  9 | Gironde          |         8 | 
| 10 | Bordeaux         |         9 | 
| 11 | Alsace           |         6 | 
| 12 | Poland           |         5 | 
| 13 | Mazowieckie      |        12 | 
| 14 | Warszawa         |        13 | 
+----+------------------+-----------+

..., contenu qui sera facilement utilisable, notamment avec acts_as_tree.

Voici la (très petite) classe que j'ai créé pour l'occasion (lib/yaml_to_ar.rb):

 require 'yaml'
 class YAML_to_AR


   def initialize(file)
     @data = File.open(file) { |yf| YAML::load( yf ) }
   end


   def insert(with_class, parent_id = 0, data = @data)
     if data.is_a?(Array)
       data.each do |value|
         insert(with_class, parent_id, value)
       end
     elsif data.is_a?(Hash)
       data.each do |key, value|
         new_line = with_class.create(:name => key, :parent_id => parent_id)
         insert(with_class, new_line.id, value)
       end
     elsif data.is_a?(String)
        with_class.create(:name => data, :parent_id => parent_id)
     end
   end


 end

Classe qui s'utilise simplement dans une migration, comme ceci par exemple (@ db/migrate/003_create_places.rb) :

 class CreatePlaces < ActiveRecord::Migration
   def self.up
     create_table :places do |t|
       t.column :name, :string
       t.column :parent_id, :integer
     end

     require 'lib/yaml_to_ar'
     loading = YAML_to_AR.new('lib/places.yml')
     loading.insert(Place)

   end

   def self.down
     drop_table :places
   end
 end

Ensuite, peut se poser la question de rajouter une méthode qui permette de modifier la table avec un fichier YAML du même style, se basant sur une sorte de "diff" entre les deux, mais vu que le problème ne s'est jamais présenté...

vendredi 15 juin 2007

Media Manager / Files Handler

Depuis que je me suis mis au Ruby on Rails, et donc initié au modèle MVC, j'ai toujours été stupéfait de voir un grand nombre de développeurs "gérer" les fichiers externes, envoyés par les internautes, dans leur controller ou leur model.

La logique même de séparation concepts différents aurait dû, selon moi, les inciter à créer des "medias manager", ou sortes de classes/modules pour gérer ces fichiers externes, de leur naissance à leur destruction.

N'ayant pas trouvé ce que je cherchais, j'ai créé il y a quelques mois un couple FileHandler/ImageHandler que j'ai étendu par la suite pour gérer les sons et vidéos. N'ayant depuis jamais encore trouvé de meilleure solution, j'aimerais bien savoir ce que vous en pensez. Voici donc une courte présentation de tout cela :
media manager rails
Et voici un exemple d'utilisation concret, une fois que les fichiers ont bien été 'required' comme il se doit :
in the view (app/views/photos/new.rhtml) :

<% form_for(:photo, :url => photos_path, :html => {:multipart => true}) do |f| %>
  <%= error_messages_for(:photo) %>
  <%=mff 'Sélectionnez le fichier à envoyer', file_field_tag(:file) %>
  <%=mff 'Description (facultatif)', f.text_area(:description) %>
  <p class="submit"><%= submit_tag('Envoyer cette photo »»') %></p>
<% end %>

in the controller (app/controllers/photos_controller.rb) :

class PhotosController < ApplicationController
#[...]
  def create
    @photo = Photo.create(params[:photo])
    @photo.store(params[:file])
    if @photo.save
      flash[:notice] = "Nouvelle photo enregistrée."
      redirect_to :action => 'new'
    else
      @photo.destroy
      render :action => 'new'
    end
  end
#[...]
end

in the model (app/models/photo.rb) :

 class Photo < ActiveRecord::Base
   before_destroy { |record| ImageHandler.delete_with_thumbnails(record.file_name) }

   def store(iostream)
     image = ImageHandler.new(iostream)
     begin
       image.store(self.id) # son nom de fichier sera son id + extension
     rescue
       @erreurs = $!.to_s # si une exception remonte l'ImageHandler ou du FileHandler, on l'ajoute à la liste d'erreurs de validations ActiveRecord
     else
       image.make_thumbnails 100, 150, 200, 250, 300 # chaque nombre représente le width d'un thumbnail de l'image qui sera fait
       update_attribute :file_name, image.raw_name # on rentre son nom dans la bdd
     end
   end

  protected
   def validate
     errors.add_to_base(@erreurs) if defined?(@erreurs) # l'ajout à la base se fait ici en réalité
   end
 end

jeudi 14 juin 2007

4 machins

En parcourant mon RSS ce matin, je passe sur un "questionnaire" auquel Ramiel a répondu.
"Questionnaire" étant plutôt neutre comme nom, je ne me suis pas méfié, et, arrivé à la moitié de la lecture, je me suis rendu compte de ce que c'était.
[Scroll - scroll - scroll] et meeerde. Bah, une fois par an ça doit pas faire de mal.

De toutes façons ça va être vite fait, et vous apprendrez pas grand chose.

Quatre emplois que j’ai tenus dans ma vie

  • rien

Quatre films que je regarderais encore et encore

  • AIR
  • Matrix (le 1 seulement, bien entendu)
  • Spiderman 1, 2 et 3 (oui je triche)
  • N'importe quel film avec Michelle Trachtenberg

Quatre endroits où j’ai vécu

  • Guyane
  • Guadeloupe

Quatre émissions/séries TV que je regarde
Vu que Heroes S01 est bouclé, je ne le mettrai pas dans la liste

Quatre lieux où je suis déjà allé en vacances

  • Bourboule (Puy de Dôme) (c'était en cure en fait)
  • Martinique

Quatre trucs que je check à chaque fois que je vais sur le Net
Petite précision: je ne "vais" jamais sur le net, j'y suis tout le temps, donc c'est plutot "quand je me réveille"

  • IRC (qui me permet de check l'état de mes serveurs en même temps)
  • RSS
  • mails
  • Résultats Adsense

Quatre mets que je ne mangerais pour rien au monde

  • tout homme a son prix

Quatre mets/plats favoris

  • j'en sais rien, je ne fais que manger moi
  • un bon riz/lambi au mieux

Quatre endroits où j’aimerais être en ce moment

  • À Swarzędz, en Pologne
  • À New York City
  • Au Japon
  • À Londres (c'est dans moins de deux mois, je suis bien impatient d'y être)

Et comme je suis un mec sympa, je le transmettrai à personne. Mangez des pommes \o/

mercredi 13 juin 2007

Mac or PC ?

non mais quelle roxorisation, j'en peux plus là, c'est trop :-∕

bravo les gars.

samedi 9 juin 2007

Pluralisme

J'aime assez entendre les militants et personnalités de tous les partis qui ne sont pas au pouvoir, dénoncer le totalitarisme du parti en place parce qu'il recueille (démocratiquement) un très grand nombre de sièges à l'Assemblée Nationale.

Que diraient les mêmes personnes, si leur parti obtenait tout aussi démocratiquement autant de sièges ?
Appelleront-ils à voter pour un autre parti ?
Ou est-ce qu'ils se féliciteront du "formidable sursaut démocratique dans le bon sens" ?

Je penche pour la dernière réaction.

Et je m'adresserai tout spécialement au Parti Socialiste pour finir :

SCOOP! Contrairement à ce que veut vous faire croire une certaine femme pour sauver son image, vous avez perdu ! Occupez vous de refonder votre parti et vos idées au lieu de débiter des âneries dans le vent.


Vivement la scission.

mardi 5 juin 2007

TCW : Nouvelle adresse

Juste pour signaler à ceux qui ne l'aurait pas encore remarqué, ce blog passe du domaine unmei.domtomconnection.com à thecaribbeanweblog.com, plus approprié, et qui pète mieux tout simplement.
J'ai mis une redirection 301 sur http://unmei.domtomconnection.com/* vers le nouveau domaine, donc les fils rss devraient suivre de façon transparente.

Donc si vous n'avez rien à faire, updatez vos bookmarks / blogrolls !
Sinon, allez faire ce que vous aviez à faire, et arrêtez de glander au boulot. Non mais.

samedi 2 juin 2007

l33thaxxors

Extrait:

- D00d, U put hax 0n m3! Best. Haxx0r. Evar.
- n0, yer good too, dood. LOL.
- ORLY!?!?!
- YA RLY!1

Épisode 1 ci dessous :

Épisode 2, 3 et 4.

vendredi 1 juin 2007

I'm in the ...

team rod

Je vous recommande chaudement la série "We Need Girfriends" ! À raison de 10 minutes par épisode et un épisode par mois (on en est à 8), vous ne risquez pas l'overdose...
Ci-dessous le premier épisode, vous trouverez le reste ici.

Pages: