Metodología de Desarrollo de Software

En el trabajo me acaban de asignar como jefe de desarrollo, que bien no? xD
Esto trae como consecuencia mas responsabilidades osea latigasos mas fuertes y una de mis primeras actividades es implementar una metodología de desarrollo de software que sea  productiva, hasta el momento solo he usado 2:

  • La mía como Dios me da a entender
  • El modelo CMMI

De la primera… que puedo decir?? pues los proyectos han salido, así que no se pueden quejar (creo)
De CMMI el cuál es un modelo profesional de desarrollo que todas las empresas de software quisieran tener certificación no me queda mas que decir que funciona bien, siempre y cuando la sigan, ya que se tienen que registrar una serie de procesos y actividades que se traducen en tiempos de entrega largos y que ahorita donde estoy no estan dispuestos a tolerar.

Así que tendré que desarrollar una metodología que abarque lo mas esencial y que no se pierda el enfoque el cuál es desarrollar lo mas rápido posible, considerando que  CMMI es estable y ya esta probado, tomaré tan solo las mejores prácticas para poder llegar a una metodologia aplicable a la empresa, pero antes debo documentarme mas sobre el tema, por lo cuál he estado buscando en google y encontre este post que me parecio muy interesante y pienso tomar en cuenta para el desarrollo de mi actividad.

Cuando la halla finalizado veré la posibilidad de publicarla para ver si hay comentarios sobre ella.

Saludos

Juega a la serpiente en #Youtube

Curioso huevo de pascua que hay en youtube el cuál consiste en jugar a la vivorita, ese jueguito que los celulares de antes incluian.
Para activarlo solo entren a cualquier video y ponganle pausa, después presionen y mantengan presionada la tecla izquierda y listo comenzará el juego.

No se si halla mas cosas ocultas en este juego pero ta divertido las primeras veces

saludos

Twitea desde #SMS

Navegando por la red, econtré twitea.me,este servicio parece ser interesante para aquellos usuarios de twitter que cuentan con celular pero no con un plan de datos, ya que con un simple SMS podrán hacer post a su cuenta.

¿Qué tiene de interesante?

Que no requieres de un celular avanzado, con que soporte el servicio SMS será suficiente para twitear.

¿Qué desventaja hay?

Dependes del saldo con el que cuentes ya que por cada SMS hay un costo de 1 peso.
Se puede agregar a los números frecuentes y twitear de a gratis, que bien no.

No podrás ver tu timeline.

Creando un Stored Procedure en MySQL

Bueno anteriormente explique aquí brevemente sobre algunas ventajas sobre los Stored Procedures de MySQL, ahora veremos como generarlos, la sintaxis es sencilla:

DELIMITER $$
 
DROP PROCEDURE IF EXISTS `municipio`$$
CREATE DEFINER=`root`@`localhost` PROCEDURE `municipio`(
  IN	opcion	int,                         /** argumento 1 **/
  IN	municipio_id	int                  /** argumento 2 **/
)
BEGIN
 
/** opcion 1: muestra toda la info de un solo municipio **/
IF opcion = 1 THEN 
         /*el  asterisco ( * ) es como medida ilustrativa, en ambiente de producción se deben seleccionar los campos*/
	SELECT * FROM municipio WHERE cve_mun = municipio_id; 
END IF;
 
/** opcion 2: muestra todos los municipios por nombre y ID **/
IF opcion = 2 then
	SELECT cve_mun AS value, municipio AS label FROM municipio;
END IF;
 
END$$
 
DELIMITER ;

Explicación: este procedimiento podrá hacer una de 2 cosas consultas que escribí, todo depende de los argumentos dados al momento de la llamada.
Si queremos que nos devuelva todos los registros de la tabla municipio debemos hacer lo siguiente:

CALL municipio(2,NULL)

Con esto se le esta diciendo que la variable opcion = 2 y la variable municipio_id = null y al momento de evaluar la condición entrará por la que nosotros habíamos predispuesto.

Si queremos que nos muestra toda la info de un municipio se hace de la siguiente forma:

CALL municipio(1,10)

Y así de fácil se generan.

Listar el contenido de un tarball

En caso de que necesiten conocer que archivos contiene un archivo tar / tar.gz / tar.bz2

Solo usen el siguiente comando:

Para los tar

tar -tvf archivo.tar

Para los tar,gz

tar -tzvf archivo.tar.gz

Para los tar.bz2

tar -tjvf archivo.tar.bz2

para mas detalles sobre esto

man tar

saludos

Adobe Air en Gentoo

Buscando como instalar adobe air en gentoo me tope con este post que ya no esta disponible :S, pero gracias al cache de google pude ver su contenido e instalarlo.

Pongo aquí los pasos por si deja de estar disponible en el cache.

Paso 1: Descargar el SDK de Adobe Air de aquí

Paso 2: Desempaquetar el tarball

mkdir /opt/air-sdk   #en esta carpeta estará el SDK instalado
tar -xvjf  AdobeAIRSDK.tbz2 -C /opt/air-sdk

Paso 3: Bajarse alguna aplicación, por ejemplo: twhirl

Paso 4: Desempaquetar el zip

mkdir -p /opt/air-apps/twhirl
unzip twhirl-0.9.4.air -d /opt/air-apps/twhirl

Paso 5: lanzar la aplicación del siguiente modo

/opt/air-sdk/bin/adl -nodebug /opt/air-apps/twhirl/META-INF/AIR/application.xml /opt/air-apps/twhirl/

Paso 6: disfrutar de las aplicaciones

Sencillo no ?

ON DUPLICATE KEY UPDATE

Esta instrucción de MySQL la pongo para que no se me olvide ya que me ha pasado un par de veces que tengo que consultar el manual para acordarme de la sintaxis.

Básicamente lo que hace es insertar un registro en la tabla y en caso de que el campo llave ya exista, hará un update.

insert into tblNombre (campoLlave, campoCadena,campoNumerico) values (1,'Una cadena simple',10)
on duplicate key update campoCadena='Se hizo Update', campoNumerico=10

No creo que sea necesario una explicación :P la instrucción es clara  y si no click aquí

saludos

Grip – Pasando de CD Audio a mp3

Llevo usando linux aproximadamente 7 años y me doy cuenta que en todo este tiempo nunca tuve la necesidad de copiar un disco de audio a mp3 por lo cuál nunca me preocupe por que software pudiera servir para este propósito, hasta ahora que llego a mi manos un disco originalito de Naughty by Nature.

Lo primero que se me ocurrio fue la de hacer una copia a mi disco duro, pero me tope con este ligero problema de que no sabía que software usar, por fortuna y como siempre google me dio la respuesta ya que me mando a una liga de Grip que es un software que sirve para este proposito.

Para instalarlo fue tan fácil con portage:

 emerge grip -av

al cabo de unos minutos ya lo tenía instalado, y para lanzarlo solo con:

 # grip

Un programa muy sencillo de usar y como todo buen reproductor de discos de audio trae el soporte para descargar los nombres de las pistas.

Stored Procedure en MySQL

Bueno siempre que he desarrollado en PHP con Base de Datos, lo he hecho utilizando MySQL y por lo general he formado mis consultas sql en una variable de PHP y después la envío al BD para su ejecución, al menos en los proyectos grandes que en los que trabajo y he trabajado era así debido a que empezaron en la versión 4 de MySQL donde no había ni Funciones ni Procedimientos Alamacenados (Stored Procedures/SP ), en mis proyectos chicos y de no mucha importancia he usado la versión 5 y he probado el placer de usar estas delicias (¬¬).

En mi trabajo estoy por comenzar un proyecto nuevo y de mucha importancia en el cuál podre utilizar esta versión y así poder gozar de los beneficios que tienen estas monadas como:

Fácil de Gestionar: se puede abstraer la lógica de negocio generando un estilo API y así se reduce el código fuente en la aplicación cliente. en mi caso el PHP

Seguridad: esto esta genial ya que se puede configurar el MySQL para que los usuarios puedan ejecutar uno o varios SPs y aunque el usuario no tenga acceso a las tablas el SP podrá ejecutarse sin problema, una buena práctica que he usado en mis sistemillas de prueba es que el usuario que conecta con la BD desde el PHP tenga permiso de ejecutar solo SP.

Centralización de Rutinas: hay ocasiones en las que tenemos a mas de una aplicación que explota la BD, en estos casos algunas rutinas que son exactamente iguales se necesitan en 2 o mas aplicaciones y cuando esto sucede tenemos que portar la rutina que ya habíamos escrito a la otra aplicación, pero con los SP como todo esta en la BD, estos pueden ser ejecutados por cualquier aplicación que tenga la habilidad de trabajar con MySQL 5, de esto modo solo se invoca al SP y listo, nos ahorramos unas cuantas líneas de código.

Menos tráfico de red: en lugar de formar dinámicamente una mega sentencia de SQL en la capa de Negocio y mandarla al MySQL, se puede escribir un SP y en la capa de Negocio solamente mandamos el nombre del SP para que ejecute esa mega sentencia que ya esta local a la BD, esto en redes locales no tiene mucha diferencia pero en redes WAN será la maravilla.

Encapsulamiento: pues como he dicho en las anteriores, los trozos de código se pueden encapsular para que se invoquen con un nombre y/o parámetros, el usuario del SP no tiene que sabe que es lo que hace para que la respuesta le sea útil.

Pero no todo es color de rosa ya que al usar esto perdemos la capacidad de escalar la BD a otra mas potente:

Reducción de la escalabilidad: debido a que todo esta en la BD al migrar a otro DBMS tendremos que reescribir la totalidad de los SP existentes ya que el lenguaje de programación de estos no son compatibles con los de otros fabricantes de Bases de Datos.

Y también esta esto que leí en un documento de Julián Butti que anda por ahí en la red ,  lo pego tal cual:

Ejecución centralizada en el Servidor: Esta ejecución puede verse como una ventaja o desventaja dependiendo de los recursos con los que se cuenta. La ventaja es que cuando está en acción, en respuesta a una petición de usuario, el procedimiento almacenado corre directamente bajo el control del motor de bases de datos, generalmente en un servidor separado aumentando con ello, generalmente, la rapidez del procesamiento del requerimiento. El gestor de la base de datos tiene acceso directo a los datos necesarios y solo necesita enviar el resultado final al usuario. Esto disminuye o evita por completo los gastos de red. Sin embargo, esto puede verse como una desventaja ya que hay que tener en cuenta que la innecesaria o excesiva declaración de procedimientos de ejecución en el gestor de bases de datos puede ser perjudicial, en general, para el rendimiento del servidor.

Pero bueno como no pienso cambiar a otra BD si acaso a la de MySQL Enterprise esta última me tiene sin cuidado :D

Agregar llave a un tabla con datos de MySQL

De las bases de datos de Access que convertí a MySQL me encontré con un pequeño problema de rendimiento y es que como las tablas no tenían indices las consultas tardaban mucho, por lo que decidí agregar unos campos para el ID y que este mismo fuera mi llave primaria y para ello utilice la siguiente sentencia de MySQL.

ALTER TABLE CDEMAS ADD ID_TBL INT(3)
           UNSIGNED AUTO_INCREMENT,
           ADD PRIMARY KEY(ID_TBL);

Con esto ya tendrán un campo llamado ID_TBL como llave primaria y con el consecutivo comenzando desde 1

Espero sea útil para ustedes.

Auf Wiedersehen