Tuesday, August 05, 2008

CAPTCHA invisible

Checando la orden de mi iPhone =o))) en ATT me tope con este CAPTCHApense que solo tenia que dar enter, ya que no veia ningun caracter, pero...



=o(

Tuesday, July 29, 2008

Como borrar directorios .svn recursivamente de manera facil

De hecho puedes usar esto para borrar cualquier directorio que necesites borrar recursivamente, pero hoy lo necesitaba especificamente para los folders .svn y google solo me daba la respuesta para linux y unas soluciones muy extrañas para Windows.

Aqui esta una solucion muy simple que funciona desde la linea de comando (la forma facil =oP):

for /f "usebackq" %d in (`"dir *.svn /ad/b/s"`) do rd /s/q "%d"

mas que nada dejo esto aqui para mi porque se que lo necesitare en el futuro, pero espero que pueda ayudar a alguien mas por ahi J

Delta corre Linux en sus aviones

Tomada este fin de semana pasado en un viajecito que nos aventamos a las Vegas, son las pantallas que estan detras de los asientos

Sunday, July 20, 2008

No se puede actualizar funcion de SQL mientras la estas debugueando

El articulo aplica a: SQL debugging
keywords: SQL, debugging, VS2005, functions, stored procedures

Esto lo aprendi en dias pasados mientras que estaba conectado usando RD (Remote Desktop) a mi computadora del trabajo y estaba debuggeando una funcion SQL desde VS2005; luego encontre un bug en esta y procedi a actualizar la funcion externamente usando Microsoft SQL Server Management Express (uff, que cansado decir todo eso), pero al ejecutar el alter function tomaba muchisimo tiempo y nunca regresaba, pense que era algo que tenia que ver con mi sesion RD, asi que me conecte directamente al servidor e intente de nuevo con el mismo resultado, despues de algunos minutos de esperar a SQL a que actualizara mi funcion me di cuenta que estaba debugueando y estaba detenido en un breakpoint en esa funcion, cerre VS, intente de nuevo y listo, funciono instantaneamente.

Pues si, fue mi culpa, pero nunca me dio un timeout ni tampoco un mensaje indicando cual era el problema, que pasaria si dos desarrolladores estuvieran trabajando en la misma cosa?
Talvez podrian hacer algo en esa area para arreglar ese problema, no creo que sea demasiado dificil, despues de todo sabe que esta bloqueada, porque no dar un mensaje al usuario?

Creo que esto mismo aplica a stored procedures pero no lo he probado

Pero bueno, queria compartir mi experiencia con ustedes, y espero que esto le sirva a alguien.

Friday, June 27, 2008

Bienvenido a la familia



Pues al fin sucumbi y me uni al club, compre la iMac 24" 3.06 GHz =o), la pantalla de 24 pulgadas es buenisima, hace que mi "viejo" monitor de 21" se vea chiquito

Hasta ahora he encontrado varias cosas que me han decepcionado sobre la "usabilidad" de la Mac, supongo que tenia expectativas demasiado altas por los comentarios de la mayoria de la gente que tiene Macs; simplemente el hecho de que la primera aplicacion en el sistema es el "Finder" ya me hace sospechar que algo no estas en su lugar, hasta ahorita los problemas mas grandes que tengo:

- los short cut keys son muy diferentes (estoy batallando bastante para escribir esto)
- Instalas una aplicacion y desaparece, tienes que encontrarla usando el Finder (por supuesto
- click derecho, donde esta el #$%&** click derecho!!! - lo encontre, tienes que dar "ctrl+click" lo cual no me gusta nada, despues encontre que lo puedes configurar pero no funciona muy bien, tienes que retirar bastante tu dedo izq
- los botones del mouse (o la falta de estos)
- window resizing, porque es que solo puedo hacer resize desde la esquina inferior derecha???
- cuando estas escribiendo el HOME no se va al inicio, y el END no se va al final, aaarggh, esto me esta matando ahora mismo

Ya le instale el Fusion y Windows Vista dentro de este, hasta ahorita todo ha funcionado bien, veamos si esto mejora ya que me familiarice mas

El "Bienvenido a la familia" es lo que nos dijeron en la tienda cuando compramos la Mac, aqui les seguire actualizando sobre mis quejas experiencias

Wednesday, May 14, 2008

Twitter esta caido, yo culpo a tweetwheel.com

Twitter esta caido de nuevo, a este paso va a ser muy dificil que alguna otra de las redes sociales populares de estos tiempos le quite la posicion #1 como la peor red social en cuando a "up time" se refiere; pueden checar la lista aqui:

Social network downtime Jan-Apr 2008

Yo culpo a tweetwheel.com jeje, y ustedes a quien culpan??

Monday, March 31, 2008

Asi es como NO se manejan los errores

Visto en cierto sitio popular de futbol, se me ocurrio ver el resto del mensaje y obtuve version del OS, servidor web, PHP, algunos directorios y la direccion ip interna del servidor.

por favor jovenes atrapen errores y guardenlos en algun log y solo muestren errores amigables al usuario, por ejemplo "los datos no estan disponibles en este momento, por favor intentelo mas tarde", o algo asi

Thursday, March 13, 2008

Lo que quisiera ver en la siguiente version de C#

Mitch Denny escribio sobre lo que el quisiera para la siguiente version de C# (mucha otra gente ha escrito sobre este tema ultimamente)

Lo que Mitch propone es tener un atajo para formatear strings, lo cual nos permitiria ir de algo asi
string s=string.Format(”{0}{1}{2}”, a, b, c);
a esto:
string s=@(”{0}{1}{2}”|a|b|c);

En este caso particular no me gusta la alternativa que propone, lo unico que esta haciendo es reemplazar la "," con el caracter "|" y haciendo el nombre mas corto.
Uno podria escribir su propia funcion "de envoltura":
//*** podrias llamarla "f" si quisieras
static string fmt(string format, params object[] parameters) {
return string.Format(format, parameters);
}

y la usarias asi:
string s=fmt("{0}{1}{2}",a,b,c);

Lo cual nos da practicamente el mismo resultado que lo propuesto por Mitch

Otro problema es que esta propuesta resuelve un problema muy especifico el cual es formatear strings y podemos obtener casi el mismo resultado escribiendo una funcioncita

El caso es que con tanta gente dando su opinion sobre lo que les gustaria ver en la siguiente version de C#, pues yo tambien tengo mi idea
lista de argumentos sin coma

algo asi:
string s=fmt("{0}{1}{2}" a b c);

El alcance de este cambio seria muchisimo mayor y de hecho le quitaria algo de "azucar de sintaxis" (syntactic sugar) al lenguaje

Ahora bien, este cambio seguramente no ocurrira, debido a que esta es la familia de los lenguajes C y ademas me parese que el cambio seria bastante significativo, pero como este es mi blog pues yo pongo mi idea =o)

Por cierto una de las ideas que me ha parecido buena es la de tener argumentos nombrados, con lo cual se podrian mandar llamar funciones de la manera

AlgunaFuncion(Parametro1 = "Algun valor", Parametro2=10);

Esta idea me parece excelente, una de las cosas que eliminaria seria la confusion que generan los parametros booleanos, y ya no tendriamos que usar Enum para esos casos

Monday, November 19, 2007

Instalando VS2008

Se bajo bastante rapido, ya lo queme usando las herramientas del Resource Kit Tools, y ya se esta instalando... hay muchisimas cosas nuevas en VS2008, he aqui un sumario:

- multi targetting support
- podras crear aplicaciones para .NET 2.0 (VS2005) o el nuevo .NET 3.5

- ASP.NET AJAX y soporte para Javascript
- para los que han usado el framework de ASP.NET AJAX, ahora ya viene instalado por default, a los que no lo hallan usado, se estan perdiendo de algo buenisimo, ya blogueare al respecto

-VS2008 Web Designer y soporte para CSS
- un diseñador muy mejorado para HTML, el mismo que salio en los productos de Expression Web, entre otras cosas ofrece muy buena integracion con CSS

- Mejoras en el lenguaje
- LINQ
- hay muchisimo material que bloguear sobre esto

tambien habra algunos add-ins muuuuuuuy interesantes, entre otras cosas
- F#
- MVC
- Herramientas para SilverLight
- Web Deployment project

fuente: ScottGu's blog

Bajando VS2008

aun no esta listado en la seccion de msdn subscriber downloads, nosotros lo encontramos dando click en "sign out", de ahi nos mando a esta pagina, (tienes que estar usando IE para ver las ligas) y en la parte de abajo hay una lista de subscriber downloads, das click ahi en "Visual Studio 2008 * Edition...", te pregunta por tu password, y te lleva directo a bajar el software

13% hasta ahorita, la velocidad es bastante buena... tengo que ir por unos DVDs =o)

Sunday, October 21, 2007

This application has failed to start because js3250.dll was not found.

Este problema ha sido reportado por mucho tiempo en Firefox, y hasta ahora parece que no hay una respuesta, los mensajes de error son:

"This application has failed to start because js3250.dll was not found. Re-installing the application may fix the problem."
"The Procedure entry point in JS_HasInstance could not be located in the dynamic link library js3250.dll"

Algunos sugieren desinstalar/reinstalar Firefox, crear un nuevo profile, remover FF completamente antes de reinstalar, bajar un archivo nuevo js3250.dll, borrar un trojan ipv6monl.dll, etc; algunas soluciones funcionan para algunas personas, pero parece que no hay una respuesta definitiva, esto es lo que me funciono a mi

En mi caso el problema solo se manifestaba bajo un usuario con acceso restringido (no administrador); mire en el folderC:\Program Files\Mozilla Firefox y el archivo js3250.dll estaba ahi, asi que ejecute firefox.exe directamente y corrio bien, entonces cambie el shortcut para que apuntara a este lugar (realmente no se a donde apuntaba el shortcut original, solo decia "firefox.exe" en el Target) y hasta ahorita esta funcionando bien

Ojala que esto sea de ayuda para alguien

Wednesday, October 17, 2007

mis predicciones (sobre Leopard) para la proxima semana

- Apple tendra la venta de hardware y software (MacPro, MacBookPro y Leopard) mas grande en su historia.
- Habra gente acampando para ser los primeros en comprar Leopard.
- Se agotaran existencias en varias tiendas.
- Con eso la adopcion de Macs crece al menos en un 25%.
- Empezaremos a ver fallos y actualizaciones muy pronto en varias aplicaciones.
- Tambien veremos varios (muchos?) fallos graves de seguridad en su sistema operativo en lo que resta del año y de ahi para adelante

...Y yo espero poder contribuir a la causa! =0)

Tuesday, October 16, 2007

Pequeña refactorizacion para trabajar con tipos nullables

Este articulo aplica a: C# 2.0

C# 2.0 nos trajo una nueva caracteristica: tipos nullables, seguramente ya sabes que son y los has usado por algun tiempo, pero, cuantas veces has visto (o escrito) codigo como este:

//SomeClass.SomeObject.BoolProperty es de tipo bool?

if (SomeClass.SomeObject.BoolProperty.HasValue && SomeClass.SomeObject.BoolProperty.Value)...
//algun codigo

porque no puedes escribir:
if (SomeClass.SomeObject.BoolProperty)...

Ya que no compilaria

El problema que tengo con ese codigo es que es repetitivo y es muy largo, entonces que podemos hacer?
Puedes escribirlo asi:

if (SomeClass.SomeObject.BoolProperty??false)

mucho mejor no? si BoolProperty tiene un valor y el valor es true, nos regresara true, de lo contrario regresara false; ahora, por supuesto que puedes usar la misma tecnica con otros tipos de datos que sean nullable, veamos algunos ejemplos:

string firstName;
public string FirstName { get{ return firstName??""; }}

Este codigo nos aseguraria que FirstName nunca regrese null (Estoy seguro que has visto muchisimos "object reference not set blablabla" debido a que te falta este codigo)

Otros ejemplos:
int? result;
...
return result??-1; //si no obtuvimos algun resultado, devolver -1
---------------------------------------------------
bool? result;
...
return result??false;
---------------------------------------------------

Eso es todo, espero que les sirva
Recuerda que el mejor codigo, es... no codigo!

Thursday, September 27, 2007

Obtener el ultimo dia del mes

Aplica a: C#, .NET
Entrando en la onda de compartir codigo, y creo que es la segunda vez en esta semana que necesito esta funcion

DateTime GetLastDayOf(DateTime date) {
return new DateTime(date.Year, date.Month, DateTime.DaysInMonth(date.Year, date.Month));
}

Thursday, September 06, 2007

busquedas en google (reader), finalmente

woohoo! finalmente ya puedes hacer busquedas en tus feeds de google reader (desde google reader, ya que si se podia hacer de otra manera), ademas se han agregado 2 nuevas cositas
  • puedes ver 1000 posts (en vez de 100)
  • puedes esconder la barra lateral izquierda usando el raton
Puedes buscar en todos tus feeds, los feeds de una carpeta o de un feed solo. De hecho puedes hacer dos busquedas: una para una carpeta o feed, y otra busqueda para el post que contenga ciertos keywords que pertenezca a la carpeta o feed que seleccionaste previamente. Los resultados se ordenan por fecha y toma un par de segundos para que aparezcan.

Talvez estas nuevas opciones no esten disponibles para todos los usuarios en este momento, en mi cuenta se actualizo en tiempo real (sin que la pagina estuviera abajo o tuviera que recargar), vi el anuncio de que venian actualizaciones al google reader, pero el mio aun tenia la version anterior, luego me puse a trabajar en un programita y regrese a checar mis feeds y ya tenia la nueva version =o)

Entonces cuando me van a dejar resaltar texto?
jeje, eso seria realmente increible

Friday, August 10, 2007

No necesito ayuda!

Pero si necesito mi tecla F2 para renombrar cosas J

Tuve que usar este teclado porque mi PC se descompuso y... entre otras cosas, me di cuenta cuanto (mucho) uso el teclado

Friday, June 15, 2007

Practicas de programacion: Nunca digas nunca

Recientemente Jan Bannister escribio este post Bool considerado dañino, donde escribe (traducido):

Nunca uses Bool, o mas especificamente nunca uses bool como parametro. Es el tipo de dato mas tonto y que provee la menos informacion posible.

Pues bien, podria debatir el post de varias maneras, pero lo que me llego fue eso de "nunca uses bool como parametro"; los problemas mas grandes con eso que veo son:

  •  Tus proyectos terminarian con cientos de enums para reemplazar los parametros buleanos (asi se escribe booleans?).
  • Donde pones todos esos enums?
  • En algun punto del proyecto, tendrias tantos enums que tal vez algunos de ellos estarian duplicados, y se te haria un desorden para saber si debes aumentarle a un enum, o crear uno nuevo.

Entonces que hacemos? de alguna manera el tipo bool si es dañino, pero no siempre, yo creo que esa es la clave, puedo pensar rapidamente en al menos 3 escenarios donde no necesariamente necesitas reemplazar tus bools con enums:

  • metodos privados: se supone que son usados solamente por clase misma... y que el metodo no es tan grande, y que la clase no es tan grande, y que tienes comentarios verdad?
  • metodos con un solo parametro que solo es algo que prendes o apagas, por ejemplo PonerVisibilidad(true);
  • Aun en metodos con varios parametros tambien se puede usar con variables con nombres claros que indiquen su proposito y no se presten a confusion, hay muchos ejemplos de esos, pero si eviten llamar sus variables, x, i, j, k, etc... porque entonces no importa si el parametro es bool o no, el codigo sera mas dificil de entender

y bien, ya no suena tan mal, a final de cuentas, nunca digas nunca, no abuses de ninguna tecnica.

Tuesday, June 12, 2007

C# trivia #1: overloads, strings, nullable types

esta entrada sirve a la vez para probar el mas reciente Windows Live Writer

Tenemos estas clase:

public class Foo {
public void Bar(string x) {
Console.WriteLine("string x was called");
}
public void Bar(int? x) {
Console.WriteLine("int? x was called");
}
}

cual sera la salida a la consola con el siguiente codigo:

Foo f = new Foo();
try {
f.Bar(null);
}
catch {
Console.WriteLine("no method was called");
}

Wednesday, June 06, 2007

Filemon salva el dia una vez mas

Estoy de regreso, me lastime la cabeza en un juego de futbol, me la pase muy mareado por mas de una semana, pero ya estoy bien

Esta vez fue un control ActiveX (todavia estamos peleando con controles ActiveX), pense que ya habia hecho todo para que funcionara, pero aun asi el #@$^ control simplemente no funcionaba, asi que corri Filemon para ver si el archivo era siquiera accesado, y encontre 2 referencias al archivo, una en el folder del GAC, y otra en program files\internet explorer, pero ninguna referencia a donde yo habia copiado el dll.

Asi que decidi copiar el archivo dll a donde IE lo estaba buscando, lo puse en
c:\program files\Internet Explorer\
y todo empezo a funcionar perfectamente

Talez pude haber registrado el control en el GAC, pero ya estaba muy frustrado (tenia varios dias con este problema) y creo que ya habia tratado antes eso mismo y no me habia funcionado.

pero bueno... pues ahi tienen otro truco mas que pueden intentar cuando ya hallan intentado todo lo demas, usa filemon para ver de que directorio esta tratando IE de cargar tu control, y copialo ahi

y si aun no sabes que es filemon, deberias bajarlo y jugar con el, es una herramienta mas que excelente, y te ahorrara muchos dolores de cabeza (y no precisamente de los causados en juegos de futbol J)

salu2

Tuesday, May 22, 2007

como arreglar cuando google reader reporta items nuevos inexistentes


de vez en cuando google reader (por diferentes razones) nos reporta que tenemos items nuevos, pero no los podemos ver (ya que realmente no existen), para arreglar este problema simplemente
- click en "all items"
- click en "mark all as read"