lunes, 31 de agosto de 2015

Cookies duplicadas o que no se borran

Artículo para: Programadores de C# de cualquier nivel


Hoy me he encontrado con una de esas "marcianadas" que me encantan, de esas que te hacen perder media mañana y darte cabezazos contra la pared... Vamos, de las que a diario tenemos que soportar los programadores.

Resulta que las "cookies", esas "galletitas" que se utilizan en el 99% o quizá en el 100% de las páginas web actuales (bien, bien, puede que estos datos me los haya sacado de la manga, pero se usan muchísimo) son un dolorcito de huevos. Y no es porque en sí entrañen una dificultad especial, no. Es por un purete que parece haber en la enumeración Request.Cookies y Response.Cookies.

¿Cómo detectar que estamos comentiendo un error? Bien, el primer síntoma es el hecho de ver más de una cookie con el mismo nombre en las enumeraciones citadas, es decir, si analizamos el contenido de Request.Cookies o de Response.Cookies y detectamos en la propiedad AllKeys dos o más veces el mismo nombre, quiere decir que la estamos literalmente "cagando".

Busca en tu código algo como lo siguiente: this.Request.Cookies["nombreDeTuCookie"] == null this.Response.Cookies["nombreDeTuCookie"] == null.

Y ahora te digo que ésto no funciona. ¿Y por qué? - te preguntarás. En el momento que llamas al indexador this.Response.Cookies["nombreDeTuCookie"]  y sin previo aviso te crea una nueva cookie en blanco (sin información) con el mismo nombre.

Entonces, ¿cómo puedo borrar una cookie dado que esto sucede? Te lo documento a continuación con un ejemplo práctico:

Código que falla:

if (this.Response.Cookies.[cookieName] != null)
{
      this.Response.Cookies.Remove(cookieName);
}

Código que funciona:

if (this.Response.Cookies.AllKeys.Contains(cookieName))
{
       this.Response.Cookies.Remove(cookieName);
}

Este conocimiento lo puedes aplicar a otros ámbitos de las cookies, solo ten cuidado de usar la propiedad AllKeys para chequear la existencia de la cookie y es más que suficiente.

¡Espero haber sido de ayuda!
C# y Programación

domingo, 30 de agosto de 2015

WPF Web browser no muestra mi web y otras si

Artículo para: Programadores de C# de cualquier nivel


Resultado de imagen de wpf logoLa semana pasada me sucedió que, después de haber desistido de solucionar el problema, me encontré con una posibilidad remota de arreglarlo. Concretamente lo que me pasaba es que hice una aplicación en WPF que automatizaba un proceso en la web de mi empresa y debía mostrar en el navegador los resultados; lo cual no hacía, me mostraba una página en blanco solo en mi web (si iba a Google o a otros sitios funcionaba sin problemas).

Lo primero que hice para esquivar este problema fue utilizar Awesomium, el cual funciona muy bien pero claro: ¿qué web está creada para Chromium? Supongo que habrá quien se tome la molestia de adaptar su web a este fantástico navegador, pero no es mi caso; es por ello por lo que la web se veía de pena y el "workaround" que me había inventado no me acababa de convencer. Si bien es cierto que no soy usuario de Internet Explorer (me encanta Chrome), para las aplicaciones en WPF que requieren de un navegador mi opción es clara: el control WebBrowser. Pero claro, siempre que éste funcione.

Lo primero es resolver la pregunta del millón: ¿Por qué me muestra la página en blanco? Porque estás usando una versión antigua de Internet Explorer (posiblemente la más antigua que tenga instalado tu PC, aunque tú no tengas acceso a ella, como por ejemplo el 8 o el 9). Aunque os parezca una chorrada, a mi me ha costado mucho dar con el asunto.

Y ahora viene la solución al problema:

  1. Abrimos el editor de registro de Windows pulsando las teclas "Windows" + R, nos saldrá la ventana de ejecución:


  2. Escribimos regedit.exe y le damos los permisos de administrador que nos solicita. Si no somos administradores de nuestra máquina no podremos arreglar este problema. Ejecutamos.
  3. Si tenemos una máquina normal de 64 o 32 bits buscaremos la clave HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\MAIN\FeatureControl\FEATURE_BROWSER_EMULATION
  4. Si nuestra máquina emula 64 bits sobre una de 32 buscaremos la clave HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Internet Explorer\MAIN\FeatureControl\FEATURE_BROWSER_EMULATION
  5. Una vez localizada añadiremos un nuevo valor DWORD de 32 bits con el nombre completo de nuestra aplicación como clave (incluyendo el .exe al final) y como valor uno de los de la tabla que detallo a continuación.

Valor
Sirve para…
11001 (0x2EDF) 
Intenet Explorer 11, incluso con la directiva ¡DOCTYPE
11000 (0x2AF8) 

Intenet Explorer 11, las que tengan la directiva ¡DOCTYPE se mostrarán en modo IE9
10001 (0x2AF7)

Internet Explorer 10, incluso con la directiva ¡DOCTYPE
10000 (0x2710) 
Intenet Explorer 10, las que tengan la directiva ¡DOCTYPE se mostrarán en modo IE9
9999 (0x270F) 
Internet Explorer 9, incluso con la directiva ¡DOCTYPE
9000 (0x2328) 
Internet Explorer 9, incluso con la directiva ¡DOCTYPE (este caso es idéntico al anterior). A los de Microsoft les ha patinado, me temo…
8888 (0x22B8) 
Intenet Explorer 8, incluso con la directiva ¡DOCTYPE
8000 (0x1F40) 
Internet Explorer 8, incluso con la directiva ¡DOCTYPE (este caso es idéntico al anterior). A los de Microsoft les ha patinado de nuevo, me temo otra vez…
7000 (0x1B58) 
Internet Explorer 7


Una nota más, que además es muy importante. Si estamos depurando con Visual Studio tendremos que añadir la famosa extensión .vshost.exe (en lugar del .exe solo) al nombre de nuestra aplicación para que concretamente en esta nos funcione como es debido.

Con eso creo que he explicado todo. Si tenéis alguna duda, podéis comentar.
C# y Programación

lunes, 24 de agosto de 2015

Whatsapp en tu PC


Artículo para: Todo tipo de usuarios

Llevo tiempo preguntándome como tener Whatsapp en mi PC, igual que tengo LINE. No hace mucho he descubierto que existe un modo muy simple de tenerlo centralizado en tu ordenador gracias a los navegadores modernos y sus extensiones.




Vamos a ver lo sencillo que es tenerlo en Chrome:


  • Hacemos clic en el botón azul "Añadir a Chrome"
  • Te solicitara confirmación, haz clic en "Añadir"
  • Si todo ha ido bien, mostrará la siguiente ventana:


  • Ahora haz clic en el siguiente enlace chrome://apps/ y busca tu nueva aplicación, o bien, busca el siguiente botón y haz clic en él 
  • Ahora tenemos que escanear con nuestro móvil por medio de Whatsapp el código que te aparezca en pantalla.

  • Para ello, abriremos Whatsapp y en la primera ventana (donde están todas las conversaciones) haremos clic en el botón "Menú contextual" del móvil, el botón de las tres rayas (normalmente el la parte inferior izquierda).

  • Seguimos las instrucciones que Whatsapp nos da para capturar el código Bidi

  • Por ultimo, si todo ha ido bien tendremos la siguiente pantalla 
  • Es importante saber que nuestro móvil debería estar conectado por WiFi antes de empezar a usar la aplicación, porque se sincronizaran todos los mensajes de nuestro teléfono a la aplicación de escritorio y podría consumir parte de la tarifa de datos


Esto es todo, espero que os haya gustado mi artículo. Para Mozilla-Firefox el proceso es exactamente el mismo. Si alguno tenéis dudas, podéis comentar.
   



Windows

¿Qué son los Servicios de Windows?



Artículo para: Todo tipo de usuarios

A estas alturas de la película aún hay gente que no conoce qué es un Servicio de Windows. En el sistema operativo Linux se suelen llamar Demonios (Daemons). Un servicio de Windows es una aplicación (como las que ya conocéis normalmente, por ejemplo el Word), pero con la particularidad que su objetivo es dar servicio (valga la redundancia) a algún objetivo concreto y que directamente no tendrás visibilidad (trabajan en segundo plano).

A diferencia de las aplicaciones convencionales, los servicios de Windows no tienen interfaz gráfica. Si hiciera falta una interfaz gráfica adicional para su control o para su configuración se nos facilitaría, pero normalmente se manipularán desde las interfaces gráficas que nos provee Windows.

Hubo un tiempo en el que los servicios de Windows se creaban por doquier... cualquier aplicación patatera instalaba adicionalmente un servicio de Windows para permanecer actualizada (¡qué util! Mucho mejor que actualizarse al iniciar, ¡dónde va a parar!). Es por ello por lo que recomiendo el siguiente artículo para optimizar el arranque de tu Windows que escribí hace ya algún tiempo ¿Tu Windows funciona anormalmente lento?

Estas aplicaciones tienen funcionalidades diversas: desde espiar tus pulsaciones del teclado (keyloggers, que son ilegales), hasta mantener la cola de las impresoras en línea. Es muy conveniente revisar para qué sirven y hacer limpieza de ellas cuando sean prescindibles. Podrías ganar velocidad en tu ordernador considerablemente y no te llevará mucho tiempo.

Mi recomendación es una buena revisión de éstos, desactivando de aquellos que sospechemos. Si al desactivarlos comprobamos que se trata de algo necesario, siempre podemos volver a activarlos de nuevo.

Si tenéis cualquier duda, acepto comentarios e intentaré ayudaros...
Windows

domingo, 23 de agosto de 2015

Pooductive, ¡haz amigos cagando!


 Artículo para: Aquel que desee leerlo

PooductiveSí, sí, ya sé que suena a guarrada... y ¡de hecho lo es! Pero me ha hecho mucha gracia comprobar que en el mundo hay gente aún más loca que yo capaces de hacer algo tan carente de sentido como curioso. Gracias Paco, por descubrirme esta mier...

Damas y caballeros, bienvenidos a Pooductive, la nueva red social que te hará hacer amigos mientras usas el cuarto de baño.

Tras un intento fallido por financiarse en kickstarter, un par de estudiantes cafres han decidido hacer realidad este sueño de todo guarrete buscando financiación por otros medios. En su web te permiten donar dinero para su causa. Si bien es cierto que el cuarto de baño es el lugar dónde la gente más usa el móvil, principalmente por aburrimiento, no lo es menos que es una actividad que unirá a mucha gente a la hora de hacer sus necesidades.

Pooductive appHasta el nombre es curioso: Pooductive. Para los que no entienden inglés Poo es caca y ductive viene a querer decir "productivo" (del inglés productive), es decir, sería algo así como Caca Productiva en Español. Aquí tiene menos gracia porque se trata de un juego de palabras.

¿Cómo funciona? Si lo he entendido bien, estableces un radio de búsqueda a tu alrededor para que te filtre un número de usuarios (porque claro, tendrán muchos) y entonces te aparecerá en ese radio seleccionado los usuarios disponibles. Eliges al o a los que quieres y hablas con ellos. Tan simple, como absurdo.

Otra gran cagada de esta maravilla es que solo está disponible para iOS, vamos, que los usuarios de Android o Windows nos tendremos que fastidiar... ¡Esperemos que ésto cambie pronto!

Bueno, pues eso, que ahí os dejo el enlace para que lo disfrutéis! http://www.pooductive.com/
Frikadas

lunes, 10 de agosto de 2015

Trusty, el robot


 Artículo para: Aquel que desee leerlo



No sé muy bien por dónde empezar a redactar el presente artículo. Había pensado en realizar un artículo totalmente técnico, pero creo que no tiene mucho sentido, dado que lo que la gente quiere saber es qué es este curioso chisme.



Trusty es un proyecto que se me nos ha propuesto realizar en mi actual trabajo en Trust International B.V. Ha planteado un curioso reto para todo el equipo de trabajo de mi empresa, ya que se trata de algo bastante novedoso; muy puntero y algo que seguramente en España no se entienda muy bien dada nuestra particular forma de ver las cosas.

Se trata de un robot asistencial, si no me equivoco o bien el primero, o bien uno de los primeros en toda Europa. El cometido de este robot es el ayudar a los clientes de Media Markt en Rotterdam a localizar sus artículos por medio de una interfaz sencilla e intuitiva.

Trusty Robot
Aunque de aspecto más bien grimoso (emula una mujer muy poco estilizada), y con su metro y sesenta centímetros de alto; ha conseguido atraer la atención de los compradores holandeses. 

El robot en cuestión habla y entiende Inglés, un idioma que en los paises civilizados de la vieja Europa se utiliza con la misma fluidez que el idioma nativo (sí, sí, incluso las personas de avanzada edad). Además, dispone de una pantalla táctil que combina publicidad de Media Markt (videos e imágenes, es bastante interactivo) en Holandés. Dicha interfaz brinda a los usuarios una serie de opciones desde dónde localizar en la tienda ciertas gamas de productos hasta incluso hacerse una foto para ver cómo quedaría su cara en la cara del propio robot. Esta última función es una chorrada por sí misma, pero no nos olvidemos del efecto reclamo que este tipo de cosas hacen a los clientes.

Además de dar la bienvenida a todos y cada uno de los clientes del centro comercial, Trusty se encarga incluso de llevarlos de "la mano" hasta el producto en cuestión (práctica que hoy en día se ha perdido un poco en los comercios españoles, todo hay que decirlo). Lo hace sin descanso desde la apertura hasta el cierre del centro, momento en que se ponen a recargar sus baterías.

De cara a las personas que trabajan en estos centros, decirles que no se trata ni mucho menos de un conato de sustituto para ellos: estamos aún muy lejos de llegar al día en que una creación de este tipo pueda sustituirlos en todas sus funciones... pero insisto en el enfoque comercial de este tipo de novedades tecnológicas, el efecto llamada que produce en los clientes ha sido muy sonado y hace cada día ir más gente a Media Markt solo por el hecho de verlo.



Como desarrollador experimentado en temas de seguridad, en este proyecto me ha correspondido generar parte del sistema software de seguridad que evitaría que los usuarios malintencionados "metieran la mano" en partes del sistema operativo de nuestro querido Trusty. Dado que Trusty está expuesto al público en general, la posibilidad que alguien tratase de realizar operativas no deseadas dentro de el era muy alta, por lo que había que bloquear la inmensa mayoría de las funciones del mismo, pero permitiendo por medio de una aplicación el desbloqueo de las mismas.

Como os he comentado al principio, no voy a entrar mucho en detalles técnicos (ni debo, ni creo que proceda), pero podéis ver que usa Kinect para reconocimiento de personas y caras.

Ha sido todo un reto, del cual me siento particularmente orgulloso, y agradezco tanto a Trust, como a su propietario Mr. Perridon y por supuesto a mi jefa más directa, Cynthia, la confianza depositada en mi para la realización de este proyecto tan particular que sin duda ha marcado un antes y un después en mi carrera profesional.


Así mismo, aprovecho para dar la enhorabuena a mis todos mis compañeros: a Julio y a Peter por su obra de arte en la interfaz gráfica de Trusty, a Eduardo y a Maarten por su colaboración en temas de seguridad y manejo además de una mención especial a Cynthia y Wouter por dar la cara en el proyecto, aportando ideas y haciéndolo realidad.


Este proyecto ha supuesto a mi empresa el hecho de ser pioneros, por lo menos en Holanda (y como he dicho, no sé si en toda Europa), de este tipo de tecnologías; hasta el punto de salir en las noticias nacionales Holandesas: http://www.rtlnieuws.nl/nieuws/binnenland/robot-als-winkelmedewerker-rotterdam-0 


La web oficial de este maravilloso engendro es: http://www.trustyrobot.nl por si queréis ampliar información. Por supuesto, también podéis comentar en el blog y responderé a vuestras preguntas en medida que me sea posible.
Mundo TI

 

Webs amigas:

  • Copyright © Los vericuetos .NET 2015
    Distributed By My Blogger Themes | Designed By Templateism