Te deseamos lo mejor! Que los cumplas muy feliz!!!
Saludos!
En el artículo previo (Actualizador 1era Parte) llegamos a definir la estructura iba a tener nuestro archivo de actualizaciones, ahora solo nos falta descargar esa información, parsearla y hacer algo útil con ella.
Recuerden que el formato a utilizar en dicho archivo será el siguiente:
ruta relativa y nombre de archivo : versión
donde la primer parte antes de caracter : es la ruta relativa tanto remota como local; y la segunda es la última versión disponible.
Veamoslo con un ejemplo que va a ser más fácil de entender. Suponiendo que mi programa consiste de los siguientes archivos:
C:\Mi Programa\EjecutablePrincipal.exe C:\Mi Programa\una_carpeta\OtroArchivo.dll C:\Mi Programa\otro path con espacio\Lala.dll
En el servidor de actualizaciones tendríamos:
http://miservidor.algo/actualizaciones.txt http://miservidor.algo/EjecutablePrincipal.exe http://miservidor.algo/una_carpeta/OtroArchivo.dll http://miservidor.algo/otro path con espacio/Lala.dll
Levante la mano aquel que todavía no se cansó de ese fondo blanco con letras negras y colores apagados con el que Visual Studio nos tiene acostumbrados desde tiempos inmemoriales. O si sos uno de esos que ya no aguanta más tener los ojos en compota cada vez que te quedas hasta tarde programando, donde la única fuente de luz es la brillante pantalla de tu notebook o desktop; o si simplemente mirabas Pimp My Ride y te gusta llevarlo a cada extremo de tu vida, hoy tengo la solución para ustedes, y no involucra ningún ¡llame ya!.

Ragnarok Grey
Buenas,
Esta es la primera parte de una serie de artículos en los que voy a mostrarles como hacer su propio Actualizador para utilizar en sus programas. Todavía no he decidido de cuantas partes va a constar, porque en realidad no he planificado nada, así que si después terminan siendo solo dos, ¡quedan avisados de antemano!.
Por lo general, siempre que creamos un programa y lo liberamos al público, vemos al (poco) tiempo la necesidad de hacerle algunos retoques ya sea por la aparición de bugs (si, si, aparecen de la nada, no es que estaban y los pasamos por alto, jajaja) que nos reportan nuestros usuarios o porque queremos agregarle nuevas funcionalidades. Sea por lo que sea, una parte importante para mantener un software estable es la capacidad del mismo para informar la existencia de nuevas versiones o mejor aún, auto actualizarse simplificándole la vida al usuario.
Buenas amigos! Hoy vamos a hablar un poquito sobre el uso de interfaces. ¿Qué son? ¿Para qué sirven? ¿Cómo usarlas? Éstas son algunas de las interrogantes que intentaremos responder.
¿Qué son?
Las interfaces son un conjunto de miembros abstractos (es decir, que no proveen una implementación por defecto) definidos bajo un nombre. Dichos miembros pueden ser por ejemplo métodos.
¿Para qué sirven?
Las interfaces expresan un protocolo o un comportamiento que las clases o estructuras deben implementar. Podemos pensarlo como un contrato que aceptan las clases si quieren implementar ese protocolo.
¿Cómo se usan?
Veamos un ejemplo para aclarar el panorama. Supongamos que tenemos la siguiente interface:
Buenas amigos… me he encontrado con este problemita de la división por cero en Reporting Services 2005.
Lo primero que pensé fue en hacer algo como esto:
=IIF(Fields!Numerador.Value <> 0, (Fields!Numerador.Value) / (Fields!Denominador.Value), 0)
Pero resulta que el IIF siempre ejecuta tanto la expresión de la parte verdadera como la expresión de la parte falsa y por eso siempre va a devolver #Error.
Ahora bien, una pequeña chanchada que podemos hacer para evitar ésto es:
=IIF(Fields!Numerador.Value <> 0, (Fields!Numerador.Value) / (IIF(Fields!Denominador.Value <> 0, Fields!Denominador.Value 0, 1), 0)
Qué fue lo que hicimos? Simplemente engañamos al IIF cuando el denominador es 0. Cuando eso ocurre de todas formas el primer IIF va a devolver 0 pero ya la expresion (Fields!Numerador.Value) / (Fields!Denominador.Value) no va a dar #Error ya que estaríamos dividiendo por 1 y no por 0.
No es lo mejor ni lo mas óptimo, pero remitiendome a las palabras de mi amigo Carlos A.:
“Primero que funcione, despues que funcione bien, y por último que funcione como uno quiere.”
Salutes!
Para recuperar un parametro del QueryString en un WebPart de SharePoint:
Supongamos que queremos recuperar el valor de tipo int del Parametro IdProyecto en el QueryString:
using System.Web; . . . int idProyecto = Convert.ToInt32(HttpContext.Current.Params["IdProyecto"]);
Espero que les sirva. Saludos!
Buenasss como les va? Esta vez me trae por aquí este tema de los reportes. Resulta que me han pedido que haga un reporte donde pueda filtrar los valores a mostrar en el reporte pero desde el Report Viewer en una página Aspx…
Empecemos por el reporte. Supongamos que tenemos un reporte que debe mostrar un listado de proyectos y quiero elegir cuales mostrar y cuales no.
Buenas. Hoy me topé con un problemita. Tenia que abrir en una ventana nueva una página pasandole un parametro por query string. Como lo estaba haciendo del lado del servidor me encontré con que Response.Redirect no tiene forma de pasarle el target ya que esto es un concepto del lado cliente.
Por suerte encontré este snippet que funcionó:
Response.Write("<script type='text/javascript'>window.open('TuPagina.aspx?parametro=1');</script>");
La desventaja que tiene esto es que se produce un Postback en la página que hace el llamado. Si necesitamos generar la URL en forma dinámica esta es una buena alternativa. Espero que les sea útil!
Saludos
Recientemente me tocó armar una pequeña aplicación que debía tomar desde el repositorio de Team Foundation Server los items de trabajo de todos los proyectos asignados a mí, que no hayan sido completados o eliminados.