Une journée dédiée à MongoDB

Le 21 Juin se tiendra à Paris un événement auquel je vous invite à venir. Cet événement sera dédié à MongoDB, le MongoFR.
J'ai la chance de pouvoir proposer une petite conférence sur un retour d'expérience : ma migration de SQL à MongoDB sur Oupsnow. Hormis les développeurs de 10Gen, il n'y aura que des Rubyists.
Selon moi, cette nouvelle technologie qu'est MongoDB est assez prometteuse.
Pour découvrir MongoDB, venez nombreux le 21 Juin !
Oupsnow 0.5.0 est sortie
Ca y est, j'ai presque pris un cycle de release pas trop mauvais. Ainsi après seulement un mois après la version 0.4.1 de Oupsnow, voici la version 0.5.0. Cette version apporte quelque feature, mais marque surtout un moment de stabilité dans le code.
Les nouveautés
- Ajout d'un filtre sur la recherche des tickets pour ne voir que les tickets fermé ou non
- Possibilité d'éditer une milestone pour les admin d'un projet
- Possibilité de définir une milestone comme actuelle. Par défaut, c'est la première milestone créée
- Possibilité de récupérer son password par email
- Possibilité de rester connecter avec un remember_me
- Ajout d'information concernant le nombre de tickets filtrés ou vues
- Possibilité pour chaque utilisateur loggé de suivre un ticket. Un utilisateur qui suit un ticket recevra ainsi à chaque mise à jour de ce ticket un email concernant cette modification.
- Les utilisateurs ne peuvent plus changer leur email.
Enfin comme d'habitude voici mon fichier capistrano de déployement pour faciliter celui-ci.
Ficher de déployement capistrano
set :application, "oupsnow"
set :repository, "git://github.com/shingara/oupsnow.git"
set :domain, "dev.shingara.fr"
# If you aren't deploying to /u/apps/#{application} on the target
# servers (which is the default), you can specify the actual location
# via the :deploy_to variable:
set :deploy_to, "XXXXXXXXX"
# If you aren't using Subversion to manage your source code, specify
# your SCM below:
# set :scm, :subversion
set :scm, :git
set :git_enable_submodules, 1
set :runner, "xxxx"
set :user, "xxxx"
set :use_sudo, false
set :thin_conf, "/etc/thin/#{domain}.yml"
set :rails_env, "production"
role :app, domain
role :web, domain
role :db, domain, :primary => true
task :update_config, :roles => [:app] do
run "ln -s #{shared_path}/config/database.yml #{release_path}/config/database.yml"
run "ln -s #{shared_path}/config/email.yml #{release_path}/config/email.yml"
run "ln -s #{shared_path}/config/initializers/errornot.rb #{release_path}/config/initializers/errornot.rb"
run "cd #{release_path} && echo 'GOOGLE_ANALYTICS=\"XXXXXXXX\"' >> config/environment.rb"
end
namespace :deploy do
task :start, :roles => [:app] do
run "thin -C #{thin_conf} start"
end
task :stop, :roles => [:app] do
run "thin -C #{thin_conf} stop"
end
task :restart, :roles => [:app] do
run "thin -C #{thin_conf} restart"
end
end
task :update_db do
run "cd #{current_path} && RAILS_ENV=#{rails_env} rake db:update"
end
after "deploy:update_code", :update_config
after "deploy:symlink", :update_dbSortie de Typo 5.4.0
Ça y est, une nouvelle version de Typo est lancée dans la nature. Je n'ai hélas que très peu participé à cette nouvelle version faute de motivation/temps. Mais je suis toujours très content de voir une nouvelle version de ce blog sortir.
A chaque release, une nouvelle admin fait son apparition, mais à chaque fois elle est meilleure que la précédente, donc c'est une excellente chose.
J'ai bien-sûr mis à jour ce blog et j'ai aussi switché sur le nouveau thème par défaut. Je suis toujours aussi nul en design.
En petit cadeau, voici mon fichier capistrano que j'utilise pour déployer ce blog. Ça peux toujours vous servir. On ne sait jamais.
set :application, "typo" set :repository, "git://github.com/fdv/typo.git" set :domain, "blog.shingara.fr" # If you aren't deploying to /u/apps/#{application} on the target # # servers (which is the default), you can specify the actual location # # via the :deploy_to variable: set :deploy_to, "/var/rails/blog-typo" # # # If you aren't using Subversion to manage your source code, specify # # your SCM below: set :scm, :git set :runner, "rails" set :user, "rails" set :use_sudo, false set :thin_conf, "/etc/thin/#{domain}.yml" role :app, domain role :web, domain role :db, domain, :primary => true task :update_config, :roles => [:app] do run "cp -Rf #{shared_path}/config/* #{release_path}/config/" run "ln -s #{shared_path}/files #{release_path}/public/files" end task :update_gems, :roles => [:app] do run "cd #{release_path} && RAILS_ENV=production rake gems:install" end after "deploy:update_code", :update_config after "deploy:update_code", :update_gems namespace :deploy do task :start, :roles => [:app] do run "thin -C #{thin_conf} start" end task :stop, :roles => [:app] do run "thin -C #{thin_conf} stop" end task :restart, :roles => [:app] do run "thin -C #{thin_conf} restart" end end task :clear_cache, :roles => [:app] do run "cd #{current_path} && RAILS_ENV=production rake sweep_cache" run "cd #{current_path} && RAILS_ENV=production rake tmp:cache:clear" end after "deploy:restart", :clear_cache after "deploy:start", :clear_cache
Sortie de Oupsnow 0.4.0
Ca y est, Oupsnow 0.4.0 est enfin sorti. Cette version est un refactoring quasiment complet. Après avoir eu une version 0.3.0 en Merb/DataMapper, cette version est désormais en Rails/MongoDB. Le back-end et le serveur ont changé.
Cette nouvelle version, outre son refactoring comprend aussi l'ajout de quelques nouvelles fonctionnalités.
- Ajout d'un filtre par Status dans la recherche de ticket
- Ajout de la possibilité de changer la fonction de tous les membres d'un project
- Ajout de la preview des tickets et commentaires sur les tickets
- Ajout de la visualisation de la milestone courante dans la visualisation d'un ticket
- Possibilité d'ordonner tous les champs de recherche dans la vue des tickets
- Login par l'email et plus par le pseudo
Vous pouvez télécharger cette version sur rubyforge
Si vous souhaitez tester cette version, une version de demo de oupsnow est en ligne. Les login/mdp sont : admin@admin.com/oupsnow. Amusez vous bien.
[...]Open-notification v0.1.0 est sortie
Il y a maintenant un mois, j'ai commencé à jouer avec nanite. Pour essayer un peu cette technologie, j'ai réaliser une mini application en sinatra et un agent nanite qui envoi des notifications par Jabber.
De fil en aiguille, le code s'est agrémenté et est surtout passé à Merb avec un système de persistance en CouchDB.
L'idée de base est extrêmement simple, gérer plein de notification de tous type. Il existe déjà ce genre de système comme messagepub. Mais là ca sera open source.
Open notification sort donc en version 0.1.0 pour sa première version. Le code sera mis sous licence AGPLv3. Il est composé d'un agent nanite qui gére l'envoi des notifications jabber et d'une application avec Merb/CouchDB.
La méthode de déploiement est assez compliqué je l'avoue car il n'y a aucune documentation. Cela arrivera dans les prochaines versions.
Une version complête est utilisable par tout un chacun sur open-notification.com. Ce service n'a pour l'instant aucune pérennité. Mais on verra dans le futur ce que ca donnera.
[...]Watchman en Alpha par JTEK
Un de mes projets chez JTEK est la création de Watchman. Cette application permet d'aider à vérifier la sécurité de son serveur.
Une annonce officielle a ainsi ouvert Watchman en Alpha. N'hésitez pas à le tester.
[...]Sortie de Oupsnow 0.2.0 avec mise en production
Ca y est, après moins d'un mois, voici la nouvelle version de Oupsnow. Cette version 0.2.0 est la première version que je mets moi même en production. En effet, désormais ma platforme de développement n'est plus propulsé par Redmine, c'est Oupsnow.
Les nouveautés de cette version sont les suivantes :
- Un converteur Redmine -> Oupsnow a été intégré. C'est grâce à lui que j'ai pu changer ma platforme de développement sans perte.
On été ajouté :
- Une gestion des milestones
- Une gestion des Etats des tickets
- Une gestion des Sévérité des tickets
- Formatage des textes avec RedCloth
Après cette nouvelle release, j'ai vais pouvoir me reconcentrer sur Typo et ainsi faire la fonctionnalité phare de la version 5.2.1.
[...]sortie de typo 5.2
A mon tour de vous annoncer la sortie de Typo 5.2. Cette sortie est la première sortie où je participe activement. En effet, depuis Août dernier, je suis contibuteur de Typo. J'ai d'abord commencé par faire la migration de Typo sur Rails 2.2 (avant même la sortie officiel de Rails 2.2). J'ai ensuite continué avec Frédéric à améliorer au maximum les performances et l'utilisabilité de Typo.
Aujourd'hui avec cette sortie de Typo, le travail est vraiment à la hauteur. Nous avons tout fait pour que cela soit optimum. Mais surtout nous n'avons pas fini. Nous avons ainsi énormément d'idée qui seront intégré dans Typo dans le futur. Nous allons aussi essayé de faire des releases plus régulièrement.
En bonus, voici mon fichier capistrano que j'utilise pour déployer Typo.
set :application, "typo" set :repository, "git://github.com/fdv/typo" set :domain, "shingara.fr" # If you aren't deploying to /u/apps/#{application} on the target # servers (which is the default), you can specify the actual location # via the :deploy_to variable: set :deploy_to, "/var/rails/blog-typo" # If you aren't using Subversion to manage your source code, specify # your SCM below: set :scm, :git set :git_enable_submodules, 1 set :runner, "rails" set :user, "rails" set :use_sudo, false set :thin_conf, "/etc/thin/typo.yml" role :app, domain role :web, domain role :db, domain, :primary => true task :update_config, :roles => [:app] do run "ln -s #{shared_path}/config/database.yml #{release_path}/config/database.yml" run "ln -s #{shared_path}/files #{release_path}/public/files" run "ln -s #{shared_path}/cache #{release_path}/tmp/cache" run "ln -s #{shared_path}/newrelic_rpm #{release_path}/vendor/plugins/newrelic_rpm" run "ln -s #{shared_path}/config/newrelic.yml #{release_path}/config/newrelic.yml" run "ln -s #{shared_path}/config/agent #{release_path}/config/agent" run "ln -s #{shared_path}/config/mail.yml #{release_path}/config/mail.yml" end task :dump_before, :roles => [:app] do run "pg_dump -U typoblog typo > #{shared_path}/typo#{Time::today.strftime('%Y-%m-%d')}.sql" end namespace :deploy do task :start, :roles => [:app] do run "thin -C #{thin_conf} start" end task :stop, :roles => [:app] do run "thin -C #{thin_conf} stop" end task :restart, :roles => [:app] do run "thin -C #{thin_conf} restart" end end after "deploy:update_code", :update_config before "deploy:migrations", :dump_before
Sortie de la première version de Oupsnow 0.1.0
Je suis assez content de vous présenter Oupsnow. En effet, après avoir participé à redmine et l'avoir utilisé, j'ai décidé de créer mon propre bug tracker. Je trouvais de plus en plus de défauts à Redmine qui n'était pas comblé. Il est très fortement inspiré de Lighthouse qui a l'avantage d'être vraiment simple d'utilisation.
Voici donc la première version qui sort après 2 mois de développement. Elle est encore loin d'être un produit complètement fini. Mais elle commence à avoir un début de fonctionnalité suffisante. De plus Oupsnow est un produit réalisé avec Merb. J'ai ainsi pu découvrir et approfondir Merb grâce à ce projet.
Dans la prochaine release, j'améliorerais un peu l'administration. Je créerais aussi un convertisseur de Redmine vers Oupsnow. Cela entrainera ma migration vers Oupsnow à la place de redmine pour ma plateforme de développement
J'ai mis en place une version de démonstration pour vous que ayez une idée de ce que Oupsnow permet.
En bonus, voici mon fichier deploy.rb qui m'a permis de déployer la version de démonstration de Oupsnow par capistrano
set :application, "oupsnow" set :repository, "git://github.com/shingara/oupsnow.git" set :domain, "shingara.fr" # If you aren't deploying to /u/apps/#{application} on the target # servers (which is the default), you can specify the actual location # via the :deploy_to variable: set :deploy_to, "/var/rails/oupsnow-demo" set :deploy_via, :remote_cache set :repository_cache, "#{application}-src" # If you aren't using Subversion to manage your source code, specify # your SCM below: # set :scm, :subversion set :scm, :git set :git_enable_submodules, 1 set :runner, "rails" set :user, "rails" set :use_sudo, false set :rack_up, "/etc/thin/oupsnow-demo.ru" set :merb_port, 46000 role :app, domain role :web, domain role :db, domain, :primary => true task :update_config, :roles => [:app] do run "ln -s #{shared_path}/config/database.yml #{release_path}/config/database.yml" end namespace :deploy do task :start, :roles => [:app] do run "merb -u #{user} -G #{user} -d -c 1 -p #{merb_port} -n #{application} -a thin -e production -m '#{deploy_to}/current/'" end task :stop, :roles => [:app] do run "merb -u #{user} -G #{user} -d -c 1 -K all -p #{merb_port} -n #{application} -a thin -e production -m '#{deploy_to}/current/'" end task :restart, :roles => [:app] do deploy.stop deploy.start end end after "deploy:update_code", :update_config
je suis devenu contributeur Rails
Depuis maintenant 8 jours, j'ai eu la chance de voir un de mes patchs intégrés dans Rails. Ainsi depuis ce commit, je peux dire que j'ai contribuer à Rails \o/
[...]