Archive for the ‘ Informática ’ Category

#Eclipse PDT no autocompleta PHPCode

En Eclipse llevo pocos días usando el plugin de subversive, esta muy versátil manejar desde el IDE el versionamiento, la verdad que si lo recomiendo ampliamente.
Por otro lado y por alguna extraña razón el código PHP no se autocompleta cuando los proyectos son importados con esta herramienta, cuando oprimo Ctrl+Espacio me sale la leyenda:

No completions available

Y comprobé que era solo en los proyectos de SVN ya que los que tengo de modo local y me completa las funciones, para resolver tal problema lo que hice fue abrir el archivo .project que esta en la raíz del proyecto y añadir la siguiente línea:

<nature>org.eclipse.php.core.PHPNature</nature>

Dentro de las etiquetas <natures></natures> después reinicie Eclipse y listo ya tenía la autocompletación activada nuevamente.

Agregar un consecutivo en consulta mysql

Hay ocasiones en las que queremos agregar un número consecutivo a nuestras consultas de SQL y no me refiero al ID de alguna tabla mas bien a un número volátil que sirva para un control mientras se trabaja con el resultado de esa consulta.

Me he encontrado que con MySQL podemos generar ese número usando variables de sesión, la forma de usar es muy sencillo, aquí un ejemplo:

SELECT  @numeroConsecutivo:=@numeroConsecutivo+1  Consecutivo ,  
tbl.campo 
FROM  miTabla tbl, 
(SELECT @numeroConsecutivo:=0) r

y así tendremos nuestros enumerados.

#mysql insert into set

Acabo de descurbir via Twitter que en mysql pueden hacerse inserts de este modo:

INSERT INTO tabla SET campo1 = 'valor1', campo2 = 'valor2'

Muy interesante revisaré si hay algún aumento o disminución de rendimiento al usar esta forma.

Ciclo de Vida un Proyecto de Software

Ahora que ando con esto del modelo de desarrollo, recordé aquel viejo chiste gráfico el cuál muestra la realidad de las cosas al desarrollar software.

Haré lo posible para que esto no me suceda =P

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

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.

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

Pasar de Access a MySQL

La semana pasada en el trabajo me cayeron unas bases de datos en access con información muy importante, tenía que sacar unos reportes pero en mi computadora no tengo windows así que mucho menos el MS Access, así que abrí el google y en su primer resultado me mostró la solución a mi problema.

Access to MySQL es una aplicación que funciona para pasar la info de un archivo de access a un servidor de MySQL, la herramienta funciona bien solo que esta diseñada para trabajar solamente en windows y pues es obvio ya que desde linux como abres un archivo de esos, así que pedí prestada una con windows para hacer la migración y trabajar desde mi compu con los reportes.

Para que trabaje al 100% solamente instalen en windows el OBDC de MySQL para que directo desde la aplicación haga las inserciones, de lo contrario tendrán que crear un archivo con las instrucciones SQL para que posteriormente las carguen en el servidor de BD.

Leo con agrado en el norte la siguiente noticia:

Utilizará Dell procesadores de AMD

AFP

Nueva York, Estados Unidos (19 mayo 2006).- El anuncio de Dell en el sentido de que por primera vez utilizará microprocesadores de Advanced Micro Devices (AMD) pone en primer plano las luchas del principal fabricante de computadoras y puede sacudir el sector tecnológico estadounidense.

Las acciones de Dell subieron después de que la compañía formulara un pronóstico formal, revelando un programa de cortes de gastos y dijo que usaría microprocesadores de AMD en sus principales servidores.

Al mediodía, Dell subía un 0.5 por ciento cotizada a 24.07 dólares.

Dell todavía conserva su lugar de principal fabricante de computadoras, pero ha perdido mercado a favor de Hewlett-Packard y otros competidores.

Hora de publicación: 12:43

Esto sera bueno, lo malo que por lo pronto sera para puros servidores, a ver en cuanto tiempo sacan laptops con este procesador, ya que sere de los primeros en comprarme una laptop de este tipo :)