miércoles, junio 24, 2009

Ambientes de desarrollos en el lado obscuro

Durante las presentaciones de la Comunidad Tijuana.NET, talleres, cursos y otro tipo de eventos en los que me ha tocado participar y en los que muestro mi ambiente de trabajo, a algunas personas les parece extraño que trabajo con fondos obscuros y letras brillantes, para mi es un tanto curioso, ya que desde hace poco mas de 10 años he trabajado así.

En algunas ocasiones me preguntan el porque o cuales son las ventajas o desventajas, realmente no tengo una respuesta "inteligente" que ofrecer, simplemente comento que me siento a gusto con los fondos obscuros.

Durante este periodo de tiempo he escuchado comentarios a favor y en contra de los fondos obscuros en las herramientas de desarrollo, pero todos me habían parece un tanto subjetivos, ya que es su mayoría eran: "Yo creo...", "Yo pienso ...", "Yo opino ...", etc.

Googleando Internet, me encontré con con una pregunta en StackOverflow, sobre este tema, y la primer respuesta me pareció interesante, ya que publica una serie de ligas y referencias de estudios, al parecer, serios sobre el tema; ademas que el aporte de las siguientes respuestas también es interesante; pero creo que no se llega a una conclusión definitiva si es bueno o es malo y que es lo que afecta, la salud, el desempeño, el entendimiento, etc.

En el mundo *NIX, me es muy común encontrar gente desarrollado con fondos negros, sobre herramientas como Emac, VI. De hecho la configuración de mi MonoDevelop lo tengo precisamente de esta manera.

Mi ambiente de Ruby On Rails, para el cual hago uso del editor TextMate, hago uso del tema "Sunburst".

Y en el ambiente Windows donde ejecuto Visual Studio, no se ha quedado atrás, de hecho en las herramientas de MS, he usado fondos obscuros desde que programaba en VBx.

Para Visual Studio, utilizo el tema que modifico Rob Conery y que hizo disponible es su post "TextMate theme for Visual Studio, take 2", al igual que Rob hay varios personas en la comunidad .NET que se pasaron "al lado obscuro" y que publicaron sus versiones obscuras:

¿Y ustedes que opinan al respecto?, ¿Ya se pasaron al lado obscuro?, ¿Mitos o realidades, los pros y cons de usar temas obscuros?


viernes, junio 19, 2009

Como mover una DB o archivo de una DB MSSQL a otro disco

Curiosamente, esta pregunta me la hecho ya un par de ocasiones distintas personas en unos pocos días, por tal motivo realizo este post con la información pertinente de como hacerlo.

Pero antes de avanzar, la pregunta obligada es ¿Porque mover la DB o algún archivo de la DB a otro disco? Bueno, las causas pueden ser muchas, pero algunas de la posibles son:

  • El MSSQL Server por default instalo sus base de datos como master, model, tempdb en el mismo disco duro donde esta instalado el sistema operativo, esta es una mala practica.
  • El disco donde tenemos las DB ya esta a punto de llenarse o ya se lleno.
  • Por cuestiones de rendimiento es mejor mover tempdb, cuando se generan reportes complejos, a otro disco diferente a donde están las DBs con datos.
  • Igual por cuestiones de rendimiento es aceptable el mover los archivos de log del disco donde están los datafiles a otro diferente.

Para realizar esta operación hay que seguir los siguientes pasos:

Abrir el query analyzer y para mover, por ejemplo la db tempdb hay que ejecutar primero el siguiente comando para obtener información de ella:

USE TempDB
GO
EXEC sp_helpfile
GO

Esta nos va a mostrar información similar a la siguiente:

name fileid filename filegroup size
——- —— ————————————————————– ———- ——-
tempdev 1 C:Program FilesMicrosoft SQL ServerMSSQLdatatempdb.mdf PRIMARY 16000 KB
templog 2 C:Program FilesMicrosoft SQL ServerMSSQLdatatemplog.ldf NULL 1024 KB

Este resultado nos indica la ruta de donde están los archivos que deseamos mover.

Lo importante aquí es anotar los nombres de la primer columna porque los vamos a necesitar en el siguiente paso:

USE master
GO
ALTER DATABASE TempDB MODIFY FILE
( NAME = <FILE1>, FILENAME = '<FILEPATH1>.mdf' )
GO
ALTER DATABASE TempDB MODIFY FILE
( NAME = <FILE2>, FILENAME = '<FILEPATH2>.ldf' )
GO

Hay que reemplazar <FILE1> y <FILE2> con los nombre obtenidos en el primer script y también reemplazar <FILEPATH1> Y <FILEPATH2> con la ruta completa y el nombre de archivo a donde se van a mover - aunque todavía no se hayan movido - los archivos, una vez que el script esta correcto, hay que ejecutarlo; posteriormente hay que apagar el servicio del servidor de sql.

Una vez apagado el servicio de sql, hay que ir al disco duro y mover los archivos de su ubicación original - ver resultado del primer script -, para ponerlos en la nueva ruta que indicamos en el segundo script.

El ultimo paso consiste en iniciar el servicio del sql server y este ya debe de estar haciendo uso de la nueva ubicación de los archivos.


martes, junio 16, 2009

Agile CoffeCamp Tijuana

El día de hoy a través de twitter, y partir de una pregunta de @fcastellanos, surgió la idea de realizar un Agile CoffeCamp. Idea a la cual se sumaron rápidamente @gabo y @mariohcornejo; la idea se formalizo rápidamente, por lo tanto este post es precisamente para invitar a asistir al:

Agile CoffeCamp
En el Cafe D'Volada de Plaza Dorada - el café "oficial" para este tipo de reuniones -
El sábado 4 de Julio, a partir de las 9:00am, hasta donde dé la plática

¿Quienes pueden asistir?
Cualquier persona interesada en pasar un buen rato compartiendo experiencias en el uso de metodología ágiles en el desarrollo de software.

¿Que costo tiene?
Ninguno, solo se requiere consumo mínimo en el Café - para que no nos corran -.

Si no has participado anteriormente con nosotros en este tipo de eventos, esta es tu oportunidad, no hay platicas formales, no hay powerpoint, no hay expertos, la opinión de todos es importante.

Aquí les dejo una fotos de eventos pasados.


jueves, junio 11, 2009

Tiempo de Cruce en Garitas

El día de hoy oficialmente lanzo este proyecto que tenia guardado por algo de tiempo y que se llama CruceGaritas.

Es sitio web que proporciona información de tiempos estimados de espera para cruzar de México hacia Estados Unidos, para todas las garitas de cruce en la frontera norte del país, tanto para garitas turísticas, comerciales y las denominadas Sentry.

Al seleccionar una de la ciudades, se muestra la información de todos los puertos fronterizos para esa ciudad y para todos los tipos de garitas disponibles en cada puerto.

Indica también cuando fue actualizada la información por ultima ocasión, mostrando la hora local de la ciudad seleccionada; ademas da información de en que horario esta abierto ese puerto, con cuantas lineas disponibles cuenta cada garita y cuantas linea esta abiertas o cerradas y el tiempo promedio de espera.

La información mostrada por el sitio web, es obtenida periódicamente del sitio del U.S. Custom and Border Protection, a través del servicio Border Wait Times (BWT), por lo tanto la frecuencia de actualización de la información depende del 100% del BWT, el servicio proporcionado a través de CruceGaritas, únicamente consume y muestra la información del BWT de una forma mas practica.

El sitio CruceGaritas esta pensado principalmente para ser consumido por dispositivos móviles que cuenten con un navegador Web, de hecho cuando se navega a CruceGaritas la interface gráfica Web mostrada es la que permite que se pueda visualizar sin problemas en teléfonos BlackBerry y aquellos que cuenten con Microsoft IE pocket, ademas el sitio puede determinar si se esta accediendo con un iPhone o iPod touch, en caso de ser así muestra una interface Web optimizada para tales dispositivos.

La interface gráfica optimizada para el navegador de un computador esta aun en proceso y va a estar disponible dentro de poco.

Técnicamente el sitio CruceGaritas cuenta con algunos detalles interesantes:

  • Hace uso de IP geolocalizacion para determinar la ciudad desde donde nos estamos conectando y mostrarla antes que otras, esta característica hace uso del servicio hostip.info para resolver la dirección IP a una ciudad.
  • La aplicación esta desarrollada en el lenguaje de programación Ruby, gracias al cual la cantidad de lineas de código para esta aplicación no pasan de mas de 500 para toda la aplicación, y una mayoría de ellas son parte de la declaración del ORM que se utiliza para mapear los objetos a la base de datos.
  • El framework MVC utilizado es Sinatra, es cual es micro-framework muy sencillo de utilizar para el desarrollo de aplicaciones Web con el patrón MVC, una aplicacion Hello World es tan simple como:

require 'rubygems'

require 'sinatra'

get '/hi' do

"Hello World!"

end

  • El framework ORM es DataMapper, al igual que Sinatra, un framework muy fácil de usar, aunque mas declarativo de ActiveRecord
  • Como herramienta para obtener la información de la pagina del BWT, hago uso Scrubyt!, excelente herramienta para Web Scrape
  • Para la interface gráfica Web de la versión iPhone/iPod hago uso del framework iUi, una vez mas, otro framework muy sencillo de utilizar para crear interfaces gráficas "a la iPhone"
  • Finalmente en la parte del "Deployment" hago uso de Git y Capistrano, una combinación explosiva para configuración e implementación en ambientes de producción.

Hay un par de puntos que es necesario mencionar antes de finalizar este anuncio.

Primeramente, es posible que el nombre de la garita para determinada ciudad no sea el correcto o el nombre común, si identifican uno así, por favor no duden en notificarlo a soporte {arroba} crucegaritas {.} com, de igual forma si tienen algún comentario, malo - pero constructivo -, bueno o sugerencia.

CruceGaritas cuenta con API para el consumo de objetos json, aunque de momento no esta activada, si te interesa tener acceso a la API, envía un email - a soporte {arroba} crucegaritas {.} com - explicando porque te interesa y en que tipo de aplicación vas a consumir la información de tiempos de espera del cruce de garitas.

Si te gusta CruceGaritas y te parece una aplicación útil.


jueves, junio 04, 2009

Voto en blanco o Voto nulo

Desde un par de días en mi timeline de Twitter se ha desatado una discusión sobre el valor o no valor del Voto nulo o voto blanco, discusión que no es exclusiva de mi timeline, y que se discute en diferentes ámbitos.

El caso es que votar por ningún partido, ha tomado relevancia y los partidos políticos y el IFE ya entraron a la discusión, obviamente los partidos políticos desestiman el no votar por ellos y solo se limitan a decir "no tiren su voto, voten por mi, porque? no importa algunas vez a importado? solo voten por mi y ya."

El IFE, por otro lado, creo que la situación los "agarro" desprevenidos, no creo que exista algún fundamento legal para que la acción de voto nulo no se pueda dar y al ultimas fechas solo se han limita a invitar a la gente a votar, y que esta vez como ha sucedido incontables veces en el pasado, el abstencionismo no sea el que gane.

En mi timeline hay voces a favor y voces en contra al voto nulo, obviamente todas respetables, y de las diferentes opiniones puedo resumir lo siguiente:

  • Anular el voto es tirar el voto
  • Anular el voto es regalarle el voto al PRI
  • Anular el voto no sirve de nada
  • Anular el voto es mostrar el nivel de descontento con la clase política

Y si tienen razón los que dicen que anular el voto no va cambiar nada, solo va a ser un dato mas para la estadística, un dato "curioso", pero va a reflejar el sentimiento real hacia la clase política de quienes así lo hagan.

Lo que me llama intensamente la atención es que se le este dando importancia a si la gente anula o no su voto, tanto por lo medio de comunicación, los partidos y el IFE, en lugar de estar preocupados por el indice de abstencionismo, el cual me atrevo a predecir va a ser mayor que la cantidad de votos, nulos y no nulos recibidos.

Yo voy a anular mi voto, como un acto personal, no es una invitación a que alguien mas lo haga, que cada quien decida por cuenta propia - si es que puede -.

Lo bonito es que cada quien vote como le dé la gana, pero que vote - Carlos Loret de Mola

A continuación reproduzco la siguiente opinión de Carlos Loret de Mola, de quien no comparto muchas de sus opiniones, pero en esta ocasión definitivamente si, las partes en negritas fueran acentuadas por mi, ya que considero que son importantes.

¿Nerviositos?

Nerviosos y erráticos han respondido políticos de todos los partidos a la decisión de mucha gente de anular el voto. Este reportero, como fue expuesto ayer en EL UNIVERSAL, se decidió desde 2006 a acudir a las urnas para tachar por completo la boleta y ha decidido hacerlo de nuevo en cinco semanas. No me interesa invitar a nadie a hacer lo mismo ni formo parte de algún grupo u organización que esté promoviendo el voto nulo, y no me interesa. Lo bonito es que cada quien vote como le dé la gana, pero que vote.

Y ahí viene la primera diferencia. Cuando le preguntaron sobre el voto nulo, López Obrador dijo que “absteniéndonos de votar se le hace el juego a la derecha”. No entendió (otra vez). El abstencionismo electoral se conoce como el acto de tener credencial pero no ir a las urnas (por cierto, posición mayoritaria en la sociedad, que si fuéramos puristas implicaría que en la próxima Legislatura 300 curules deberían estar vacías). Anular el voto es ir a la casilla para demostrar la confianza en la democracia, pero rechazar la oferta política que representan los partidos que en México se cuelgan de ella.

El senador panista Santiago Creel tampoco entendió. Declaró: “No se puede construir una democracia desdeñando el voto”, porque se renuncia al derecho a elegir. No ha captado que no se desdeña el voto, se ejerce, y se le olvida que decir “No” es siempre una alternativa.

El símbolo del rechazo social implícito no le importa al coordinador del PRD en el Senado, Carlos Navarrete, quien en una declaración desdeña a 60% de la ciudadanía que no irá a votar, más los votos anulados. Dice Navarrete, soberbio: “El 1 de septiembre vamos a instalar la nueva Cámara de Diputados”, o sea, háganle como quieran, nosotros aquí nos repartimos el pastel con o sin invitados.

Va más allá el presidente de la Cámara de Diputados, el priísta César Duarte, quien califica de “irresponsable” a quien vote nulo y expresa: “Debemos fortalecer el proceso político-democrático que ha venido evolucionando en el país, lo debemos fortalecer, así sean las posiciones más complicadas”. Esto de “las posiciones más complicadas” es un eufemismo para decir: vote por mí aunque no se identifique conmigo. Es una apuesta por mantener alejada la política de la ciudadanía, por que siga siendo un asunto de élites y, curiosamente, separarse del ideal democrático.

Josefina Vázquez Mota, panista, dice que el voto en blanco “beneficia a las fuerzas políticas que han apostado por el clientelismo”. ¿Hay alguna que no lo haya hecho? ¿No opera el PAN con el empresariado? ¿No lo hace el PRI con los campesinos? ¿El PRD con los ambulantes? ¿Elba Esther con su sindicato?

Y todos, a coro, cantan que se trata de un debilitamiento de la representación popular. O sea, que el Congreso va a ser menos un retrato de México. ¿Menos? Difícilmente. Lo que pasa es que no es fácil aguantar una estampida contundente de rechazo.

SACIAMORBOS

Se volvió a despachar con la grande el “negrito de todos los arroces”. El Consejo Coordinador Empresarial denunció que en los estados, los gobernadores fundan CCE’s patito para tenerlos de aplaudidores. En el feudo del Golfo, ¡hay tres!

Carlos Loret de Mola
Historias de reportero
04 de junio de 2009
Periódico El Universal http://www.eluniversal.com.mx/columnas/78529.html