Llevo una semanita ya con la VCI-100 y la Audio8 y nada que ver con la Hercules que tenía de hace 5 años. Todo va mejor, más suave y rápido… pero bueno aún me queda mucho por hacer, aún así aquí os pincho la primera sesión que grabé este domingo de tontería en casa.
Tiene mogollón de gazapos y el estilo… voy haciendo lo que puedo
http://rapidshare.com/files/128059168/MiniPO_-_ExperimentalSunday_06-07-2008_.mp3.html
Ya soy yo crítico, los temas… me encantan (pedir el tracklist en un comentario y os lo pongo) al dj le falta… ![]()
Ya queda menos
El Spot lo veo un poquito mal ambientado en el entorno gallego, pero bueno lo mejor va a ser la fiesta!!!!!
Dejo el enlace del repositorio de paquetes de idioma y correctores ortográficos para Firefox3 desde el que podeís descargar el de Gallego entre todos los idiomas del mundo.
https://addons.mozilla.org/es-ES/firefox/browse/type:3
Instalación a golpe de click ![]()
Hace unos días publiqué un post sobre el plugin acts_as_state_machine y desde aquella estuve buscando la manera de hacer las cosas un poquito más sencillas en el futuro. Uno de los objetivos que perseguimos en el proyecto que en el que estoy trabajando es dejar abierta la posibilidad de modificar o crear nuevas maquinas de estados entre los diferentes grupos que puedan surgir dentro de la empresa y que las incidencias circulen a modo de hot patato. Para ello vamos apoyarnos en que ruby deja las clases abiertas
y así podemos meterle mano dura
Lo primero que tenemos que hacer es definir una serie de áreas o conjuntos de grupos para definir los estados:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | class Tracker << ActiveRecord::Base acts_as_state_machine :initial => Group.initial_for_loaded_area Group.all_groups.each() { |grp| state grp.state_name } Event.all.each() { |e| event e.name.to_sym do e.group_transitions.each() { |gt| transitions :from => gt.from, :to => gt.to } } end |
Ahora toca refinarlo un bastante, pero la idea básica es esa.
Saludos!!
BARCELONA!!!!!!!
Si señores el año que viene tenemos Euruko en España. Para ello se está creando una asociación de programadores en Ruby de la que formo parte.
Os dejo los enlaces oficiales:
Nos vemos en Barna!!!!
En la última semana tuve que trabajar con maquinas de estado y probe el plugin de acts_as_state_machine y la verdad es una maravilla. Este plugin nos permite definir una serie de estados para un objeto junto con las transicciones de los estados. Cada estado lleva asociados tres tipos de callbacks en tres momentos temporales:
1 2 3 | :enter => Proc.new { |bar| foo } #antes de entrar al estado. :after => Proc.new { |bar| foo } #después de entrar al estado. :exit => Proc.new { |bar| foo } #al salir del estado. |
El uso del plugin es bastante sencillo. Empezamo con la instalación:
1 2 | $ script/plugin install / http://elitists.textdriven.com/svn/plugins/acts_as_state_machine |
Una vez instalado solo tenemos que definir el modelo de la siguiente manera (para no liarlo mucho solo pondré los elementos realcionados con el plugin):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | class Ticket << ActiveRecord::Base acts_as_state_machine :initial => :opened state :opened, :enter => Proc.new { #Validates something } state :asigned, :after => Proc.new { #Add to TODO } state :closed, :exit => Proc.new { #Audit ticket } event :asig do transitions :from => :opened, :to => :asigned end event :close do transitions :from => :opend, :to => :closed transitions :from => :asigned, :to => :closed end end |
Con esto nos creariamos una clase Ticket con tres estados, opened, asigned y closed. Los eventos son los encargados de desencadenan las transiciones entre los estados.
Una vez en el controlador podríamos hacer:
1 | @ticket.close! |
y el estado de la incidencía pasa a cerrado.
En la base de datos el campo por defecto que Act_as_state_machine usa es el state que podeís modificarlos usando :column como opción. Ahora queda trastear. espero que os ayude en algo.
Saludos.
Referencias:
acts_as_state_machine en Agil Web Development
La gestión de la configuración es uno de los temas más importantes dentro del mundo del desarrollo de software. Por el año 1970 se comenzaron a usar los VCS (Version Control System) que mejoraron la ayuda a desarrolladores permitiendo tener un control sobre diferentes versiones del código en el que trabajaban. Por aquella época se usaban bastos mainframes para realizar esa tarea de forma CENTRALIZADA.
Años más tarde se lanzó CVS (Concurrent Version System) desarrollado por GNU que dió paso a Subversion (SVN) uno de los VCS más usados hoy en día.
Pero una nueva corriente de DVCS (Distributed Version Control System) está pegando con mucha fuerza desde el 2004. Hoy tenemos una oferta muy amplia de DVCS: Monotone, Darcs, Bazaar, Mercurial y GIT desarrollado por Linus Torvalds y que sin duda es mi preferido.
De GIT destacaría su rápided y facilidad a la hora de trabajar con Branches y solucionar problemas. El concepto de Branch difiere del de SVN. En SVN erán ramas estables y finales (esas que no se deben tocar
) mientras que GIT las trata como puntos de inflexión en las que se separa de la rama principal (master branch). Poniendo un ejemplo: Supongamos un escenario en el que estamos desarrollando una aplicación para crear una ToDo-LiST y queremos desarrollar dos nuevas funcionalidades independientes (FA y FB) y tenemos dos desarrolladores (D1 y D2).
D1 se crea una branch nueva llamada FA y comienza a trabajar en ella a su bola.
D2 continua su desarrollo en la rama principal.
Cuando D1 acabe puede empujarle (push) los cambios a la principal y fusionar todo de nuevo (merge).
Si alguien difiere de esto por favor que me corriga
INSTALACIÓN EN UBUNTU
sudo aptitude install git gitk
CREACIÓN DE CERO DE UN REPO
cd ~/foo/bar
git init
git add .
CLONACIÓN DE UN REPO EXISTENTE
git clone URI
STATUS Y DIFFERENCIAS
git status
git diff
MANEJO DE BRANCHES
git branch foo #Crea la rama foo
git checkout foo #Cambia a la rama foo
PUBLICACIÓN Y ACTUALIZACIÓN
git commit -a -m “Mensaje” #Con -a no hace falta el git add
git fetch #Actualiza
ERRORES
git fsck #Comprueba si hay errores y limpia
Para añadir patrones o ficheros a la zona ignore solo hay que crear un fichero llamado .gitingore en el que podremos introducir los ficheros que no deseamos incluir en el repositorio.
./gitignore
*.log
db/schema.rb
*.session
Puede que halla metido la pata en algún punto, pero espero que os sirva de ayuda, para empezar. Para los maqueros la instalación se puede hacer con los Ports:
sudo port install git-core
Me gustaría que comentaseis vuestras experiencia con GIT u otro DVCS.
“Ruby on Rails es increíble. Usarlo es como estar viendo una película de kung-fu, donde una docena de frameworks malvados se preparan para golpear al nuevo y pequeño recién llegado, para terminar al final derrotados en una gran variedad de imaginativas formas“
-Nathan Torkington (O’Reilly)







