Ejemplos ReportViewer (Reporting Services)

En una pasada entrada, solicitaron ejemplos usando ReportViewer, pues aquí están.

Primero recuerden que con Reporting Services pueden trabajar en dos modos: Report Server y Modo Local, mas detalles en esta entrada: ¿Necesito un Report Server?, aquí un ejemplo de Reporting Services en modo Local: [How To] Reporting Services sin IIS y sin servidor de informes. Hace años también publique un artículo en lo que fue la revista MTJ.Net, pero desde hace mucho tiempo los artículos estaban perdidos, pero veo que ahora están disponibles aquí: Artículos Técnicos MSDN10, aquí el artículo en mención: Nuevos Controles de Reporte en Visual Studio 2005, que contiene ejemplos del uso en modo local y en modo Report Server.

El primer juego de ejemplos, es el que viene por defecto con AdventureWorks, si no tenemos instalado AdventureWork lo podemos encontrar en el siguiente link. Y en la siguiente ruta: 90SamplesReporting ServicesReport SimplesAdventureWorks Sample Reports, después de instalar los ejemplos, encontraremos la solución con ejemplos de ReportViewer en modo Servidor, debemos abrir la solución, compilar y publicar, los pasos pueden leerlos en este párrafo: Cómo instalar Ejemplos de la Base de Datos AdventureWorks en SQL 2005.

El segundo juego de ejemplos: ReportViewer Samples for Visual Studio 2005, tiene dos ejemplos:

  • Un ejemplo de una aplicación Windows lector de RSS (RSSNewsReader), usando C#. Genera un reporte con toda lista de nuevos items en el RSS.
  • Un ejemplo de una aplicación Windows para el reporte del Log de una aplicación Web (WebLogAnalyzer), usando VB.Net. Contiene varios tipos de reportes, listas, barras, y gráficos.

Los dos ejemplos usan reportes en modo Local, y no necesitan la conexión a una base de datos.

Mas información:

P.D.: Como ya lo comentó Mary Arcia, ahora los ejemplos de SQL Server están en un repositorio en CodePlex: http://www.codeplex.com/SqlServerSamples.

P.D.2: Si quieren agregar Geeks.ms a sus buscadores favoritos puede usar la siguiente página para la configuración automática: http://sergiot2.com/blog/searchengine.aspx.

Algunos screenshots, del segundo juego de ejemplos:

http://sergiot2.com/blogimages/2008/11Nov/12_RSS_Reader.jpg

http://sergiot2.com/blogimages/2008/11Nov/12_Web_log_Analyzer_01.jpg

http://sergiot2.com/blogimages/2008/11Nov/12_Web_log_Analyzer_02.jpg

Saludos,

Sesiones del PDC 2008, filtradas para no enloquecer con tanta informacion

http://sergiot2.com/blogimages/2008/11Nov/10_SmileyPDC.jpg

El PDC (Professional Developers Conference), es un evento donde podemos ver las nuevas tecnologías propuestas por Microsoft, como dice en su about: El futuro de la plataforma Microsoft, como VS2010, «ASP.NET 4.0», C# 4.0, Oslo, Ado.Net EF 2.0, Azure, etc. En Geeks.ms, pueden encontrar algunos reportajes y análisis que hicieron los geeks que estuvieron por allá: PDC on Geeks.ms.

JC González Marín nos aviso (a una semana del PDC) de la descarga de todos los vídeos y presentaciones, para los que todavía no podemos ir a un PDC, pero queremos darle una ojeada a todos estos nuevos chiches que liberara Microsoft en unos años. En esta entrada esta toda la lista de sesiones: PDC2008 Quick Video Link List (Updated: Now with Keynotes), el problema de tener tanta en información es que a veces sólo nos quedamos en la descarga de todos los vídeos, presentaciones, demos, y nunca las llegamos a revisar.

Así que la mejor forma de asimilar tanta información es filtrar y seleccionar, sólo la que nos interesa. Desde esta página podemos ver y descargar todas las sesiones (y sus recursos): https://sessions.microsoftpdc.com/public/timeline.aspx, además de disponer filtrado en la misma página.

Pero la mejor forma (y más rápida) de buscar y filtrar las sesiones del PDC 2008, esta en Channel9: http://channel9.msdn.com/pdc2008/. A continuación dejo los links (enlace directo) filtrados por tag para ver las sesiones disponibles:

.NET Framework (16)Ad Platform (2)ADO.NET (3)ASP.NET (10)Azure (39)CCR (1)Dynamics (5)Entity Framework (3)Expression (4)HPC (1)Identity (8)IIS (2)Internet Explorer (3)Languages (10)LINQ (4)Live Framework (10)Live Mesh (10)Live Services (14)Office (2)Oslo (5)Parallelism (9)PowerShell (1)research (4)Sharepoint (5)Silverlight (11)SQL Server (16)SQL Server Data Services (8)Surface (0)Sync Framework (3)TFS (3)Unified Communications (3)Velocity (2)Virtual Earth (1)Visual Studio (19)VSTS (8)WCF (6)WF (8)Windows 7 (24)Windows Embedded (1)Windows Home Server (2)Windows Server (12)WMI (1)WPF (9)XNA (1)

A disfrutar!

Saludos,

Vbnet vs CSharp, la saga continua

http://sergiot2.com/blogimages/2008/10Oct/24_superman-vs-captmarvel.jpg

Es casi imposible no recibir las preguntas: ¿Cuál es mejor, VB.Net o C#?», ¿Cuál debemos usar?, ¿Por qué?

Y el tema es, como ser imparcial y no recomendar sólo porque a nosotros, a título personal, nos gusta gusta uno más que otro. Cómo le decimos que uno es mejor que otro, por usar «;» o por no usarlos. Y bajo la perspectiva de Microsoft, y uno de los objetivos cuando se liberó Microsoft .Net, era que tu podías programar lo mismo, independientemente de que lenguaje usarás: ya sea que uses C#, Vb, J#, y toda esos lenguajes que aparecían en aquellas listas.

Lo cierto es que hoy en día principalmente se desarrolla sólo con C# o Vb.Net, si usas la plataforma .Net. Y la recomendación es: «Si eres un programador de Visual Basic (no .Net) usa Visual Basic .Net, si eres un programador de C++ o Java, usa C#«.

Aunque creo que la propuesta de Jorge es mucho más interesante, si eres programador de Visual Basic 6 sin orden ni concierto, deberías empezar con C#, aunque a veces es un poco difícil, explicarlo a los equipos desarrollos, -muchachos aunque en .Net haya Vb.Net, van a usar C#. El tema es delicado, y puede generar descontento en el equipo desarrollo, si no se explica racionalmente lo que se quiere lograr. Y que de aquellos que no son programadores de algunos de esos lenguajes, y si programan en Perl, Pyton, Php, Power Builder, Pascal, u otros?, ¿Cuál recomendar?

Bajo la propuesta de con cada lenguaje (VB o C#), puedes hacer las mismas aplicaciones, y un programador .Net debe ser independiente del lenguaje, y en un programador de C# debe poder tomar cualquier oferta de empleo de Vb.Net, y un programador de Vb.Net, siempre y cuando no use Microsoft.VisualBasic, estaría apto para tomar una oferta de trabajo C#, vamos a lanzar otra idea que puede ayudar a determinar que lenguaje usar en un proyecto .Net. Ah, y también esta el escenario de que en un equipo de desarrollo tengo tres programadores que saben C#, cuatro programadores que saben Vb.Net, y dos saben Fox. Entonces, ¿Cuál lenguaje usar Vb.Net o C#?, ¿usar el lenguaje en el que tengo la mayor cantidad de programadores?

La propuesta, sin entrar en fanatismos, sería bajo las siguientes sentencias:

  1. Identificar que tipo de proyecto voy desarrollar. (un CRM Web por ejemplo)
  2. Queremos hacerlo desde cero, pero sería muy útil tener una aplicación Open Source que me de una guía, «y no re-inventar soluciones» que ellos ya resolvieron. O quiero tomar un proyecto Open Source y sobre ese, desarrollar una nueva versión.
  3. El lenguaje de la aplicación Web CRM Open Source (SplendidCRM), ¿está en VB.Net o en C#?. -Está en C#, entonces el lenguaje que deberíamos usar sería C#, aunque tenga el 80% de mi equipo en VB.Net, el lenguaje que más me conviene es C#. De lo contrario tendría que estar traduciendo trozos de código, si es que no estoy traduciendo todo el código de aplicación.

Conclusión

  • Si no esta claro que lenguaje (Vb.Net o C#) usar en un proyecto .Net, deberías buscar que aplicaciones Open Source o Frameworks de desarrollo, existen para el tipo de proyecto que vamos a desarrollar. Entonces no vamos a escoger un lenguaje porque tiene «;» o porque en uno tiene funciones adicionales (Len, Trim, etc) directamente sin usar clases. Es decir que la métrica para escoger un lenguaje, no debe ser la cantidad de programadores de un lenguaje determinado en un equipo de desarrollo, si no que tan productivo puede ser con un lenguaje u otro utilizando aplicaciones Open Source o Frameworks. Y claro, esto considerando que en un programador .Net debería ser independiente de que lenguaje usa, ya sea VB.Net o C#.

Entradas relacionadas:

Saludos,

Smart Code Generator…. desde ASP.NET

http://sergiot2.com/blogimages/2008/09Sep/18-writing-code.jpg

Nuevamente en Lima y con nuevo trabajo laburo, curro, tengo que terminar una aplicación que está al 80%, y da mucha lata pereza hacer código tradicional (creación de entidades, de clases de acceso a datos, etc)

Bajo demanda (ósea cuando los necesite), iré revisando los diversos generadores de código existentes.

http://www.smartcodegenerator.com/index_files/image001.gif

Smart Code Generator, es un generador de código a nivel de clases, que tiene como front-end una aplicación Web ASP.NET (VS2005, VS2008). Desde una página Web nosotros podemos generar archivos (Vb, C#), pero en teoría podemos generar cualquier tipo de contenido como Java por ejemplo. Y lo mejor de todo, es que la generación de contenido es a través de plantillas, que son fácilmente personalizables. Como dice su slogan: La generación de código nunca fue tan fácil…

Después de haberlo descargado desde codeplex, e instalado, tendremos disponible un nuevo template en Visual Studio. Desde el explorador de soluciones podemos ver el contenido de la Web, pero hay una carpeta que es clave:

http://sergiot2.com/blogimages/2008/09Sep/18-VSSolution.jpg

Cada archivo dentro de la carpeta Templates es para un archivo específico, podemos tener un plantilla para la clase de entidades por ejemplo, una para clase de acceso a datos y así.

Y en cada template nosotros podemos personalizar el contenido:

http://sergiot2.com/blogimages/2008/09Sep/18-Template.jpg

Una de las cosas interesantes, es que podemos hacer uso de las clases de .Net dentro de la generación de código.

Ejecutamos la página Default.aspx:

http://sergiot2.com/blogimages/2008/09Sep/18-DBSchema.jpg

Como ven, ingresamos una conexión, mostramos las tablas disponibles, y seleccionamos aquellas sobre las cuales queremos generar.

Y nada al generar, crea todos los templates que tengamos por cada tabla (NroTemplates*NroTablasSeleccionas):

http://sergiot2.com/blogimages/2008/09Sep/18-Files.jpg

Y si no lo creen, aquí esta un archivo generado:

http://sergiot2.com/blogimages/2008/09Sep/18-CodeBody.jpg

No es tan completo como el paquete de Acceso a Datos del Web Service Software Factory, que genera los proyectos, procedimientos almacenados, uso de buenas prácticas, entre otras. Pero creo que la gran ventaja es la personalización, es decir si tienes tu propio core o framework de clases, las haces Templates, las copias a este Sitio Web, le dices que tablas vas a usar, y vualá: hecha la magia.

Autor del proyecto: Shahed Khan (MVP), y más features (en inglés) de esta herramienta Smart Code Generator (Asp.Net):

  • All development can be done in VS2005 OR VS2003.
  • Integration with NAnt and Cassini.
  • Extensible Template Generation Engine.
  • Open source Database Schema discovery API for MS SQL, Oracle and MySQL.
  • Uses existing ASP.NET 2.0 website application OR ASP.NET 1.1 web application concepts
  • Generates text based output
  • Fully customisable template-based code generation
  • Remembers custom property data entries

P.D.: La plantilla usada en el ejemplo de arriba no viene por defecto, pero también esta como descarga en los releases del proyecto.

Rock tip: Run as in Windows Vista.

Saludos,

MCTS 70-433: SQL Server 2008 – Manejo de tablas y vistas

http://sergiot2.com/blogimages/2008/09Sep/05_Ladrillos.jpg

Aunque ahora con las herramientas de consultas, como SQL Server Management, se puede hacer cualquier operación con la base de datos, en distintos escenarios vamos a necesitar hacer estas operaciones por queries. Por ejemplo cuando estamos actualizando una versión de base de datos, a de desarrollo a pruebas, o a producción, el modo de hacer un backup y restaurarlo en el otro servidor puede servir al inicio, pero ¿y si la base de datos del otro servidor ya tiene data ingresada? existen varias estrategias para hacer esto, pero la más útil y recomendable por el trabajo que le dado ahora, ha sido generar un archivo actualización con los queries de Update, puede surgir problemas si te olvidas de poner algún query pero ese es otro tema.

Empecemos con el tema…

Tenemos muchas opciones para crear y modificar tablas, usando CREATE TABLE y ALTER TABLE. Al crear una tabla nosotros podemos crear columnas calculadas, que son columnas virtuales ya que no son almacenadas físicamente en las tablas, y si queremos almacenarlas físicamente debemos usar el keyword PERSISTED: Computed Columns. Con SQL Server 2005 se introdujo el concepto de Schemas, que entre una de las funciones principales permite categorizar y agrupar los permisos dentro de una base de datos, en este artículo se explica la necesidad de la creación de Schema en versiones anteriores: Understanding the Difference between Owners and Schemas in SQL Server, ver también CREATE SCHEMA. Recordar que la seguridad es importante siempre, y no después que hemos sido atacados, y siempre tener claro el concepto: «mínimos privilegios», es decir, si una base de datos tiene distintas aplicaciones que trabajan con ella, y por ejemplo hay una aplicación Web que trabaja con 6 tablas (dentro de un Schema propio), se debería tener un usuario sólo con el permiso a este grupo de tablas, es más si para todas tus modificaciones (CRUD) usas procedimientos almacenados, no deberías permitirle al usuario poder hacer INSERT, UPDATE, o DELETE directamente contra este grupo de tablas, sólo darle permiso de ejecución de los store procedures (CRUD), para modificar los permisos podemos usar GRANT, DENY, REVOKE.

Sobre las Vistas (Views) recuerdo que una mini-charla de rendimiento hace años, recomendaron no usarlas, y bueno hasta ahora no he necesitado hacer uso de las mismas. En este artículo podemos entender las vistas, y en este otro podemos ver que podemos hacer y que no, con las vistas: Diseñando e implementando Vistas. Hay algunas opciones al momento de crear vistas (CREATE VIEW), ENCRYPTION para cifrar el registro en sys.syscomments que contiene la consulta de la creación de la vista, CHECK OPTION y SCHEMABINDING, para mantener la consistencia cuando se van a modificar los datos en una vista.

El tema de índices, debería tener una o varias entradas sólo para hablar de ello. Y el tema de índices no muchas veces se entiende en el primer review, charla, u otra fuente de información, sobre todo si no esta bien explicados, pero si debemos saber que el buen uso de Indexes va a mejorar el rendimiento de los queries y aplicaciones que usen nuestra base de datos, debido a que los índices pueden reducir la cantidad de data que se debe leer para devolver un conjunto de registros. Una tabla o vista puede contener índices clustered, y nonclustered, además existen otras opciones en los tipos de índices disponibles en SQL Server: Filtered Index, Index with Included Columns, Unique Index, entre otros. Dentro de las opciones para optimizar índices, se encuentra el uso de la opción Fill Factor. Cada vez que se ejecuta un query el componente Query Optimizer, es el encargado de determinar la manera más eficiente de ejecutar un query, basado en los famosos planes de ejecución, es bueno conocer como el Query Optimizer, genera las estadísticas para escoger el plan de ejecución más eficiente, nosotros podemos crear estadísticas (CREATE STATISTICS) de las columnas y su comportamiento con los índices, para más información revisar el siguiente artículo: Statistics Used by the Query Optimizer in Microsoft SQL Server 2005. Con respecto al tema indexed views, revisar el siguiente artículo: Improving Performance with SQL Server 2005 Indexed Views.

Si ya pasaron el tema de índices, los constraints son más sencillos, son usados para forzar la integridad de la data, y si revisaron el tema de CREATE TABLE y ALTER TABLE los deben haber visto: PRIMARY KEY (revisar IDENTITY_INSERT para insertar valores predeterminados a un columna Identity), FOREIGN KEY (revisar las opciones de actualización de información), UNIQUE, CHECK.

Los tipos de datos estructurados, son los que veníamos usando desde las primeras versiones de SQL, con SQL Server 2005 se contaba con datos semi-estructurados (Xml). Ahora con SQL Server 2008 tenemos el tipo de datos espacial, y el tipo FileStream, y respecto a estos últimos hay mucha información en los blogs, e internet en general.

Partición de tablas e índices, siempre lo distribuido (cuando se hace bien) tiende a llevar a una alta disponibilidad y escalabilidad. La partición de tablas e índices, permite que la data sea dividida horizontalmente y puede ser colocada en más de un filegroup. Recordar que la partición de tablas e índices sólo esta disponible en las versiones SQL Server Enterprise y SQL Server Developer Edition. Antes de particionar las tablas o índices, debemos crear los siguientes objetos: Partition Function, para especificar como la tabla o los índices serán particionados y Partition Scheme mapea las particiones producidas por una Partition Function para asignarlas a los filefroups definidos. Existen tres diferentes tipos de operaciones con particiones: MERGE, SPLIT, y SWITCH. Por cierto también podemos hacer partición de las vistas.

P.D.: Algunas de las mejoras del SQL Server Management Studio (2008), es el IntellSense para algunos keywords y algunos objetos (todavía no tengo claro el patrón), y algo que se pedía a gritos el agrupamiento de un bloque de código en los queries, ósea como si usaras las llaves de C# y puedes comprimir las líneas visibles de código, para la otra versión espero el #region…#endregion :D.

Saludos,

Que estas usando GET o POST? -no, yo uso ASP.Net

Normalmente, cuando alguién esta aprendiendo a desarrollar en Php, Jsp, o el ASP clásico (hasta el final del post lo voy a usar como ASP3), siempre hay una breve introducción al Html, y ves las diferencia de usar los métodos GET y el método POST, del protocolo HTTP ( si eres desarrollador Asp.Net, tienes aplicaciones en producción, y no sabes que es GET ni POST, y menos sus diferencias, hombre, que nunca es tarde para aprender), es más en el dictado de los cursos sobre estos lenguajes se incluian estos dos temas. Recuerdo en los primeros ciclos de la universidad primero me meti a un curso, fuera de la unviersidad, de JSP (dictado por un cubano, Guillermo Sanchez hasta ahora creo que es el mejor curso de programación que tuve) debido a que quería aprender Java, pero no sabía que no era programación en Java, era programación Web con Java, por suerte hacía unas semanas estaba aprendiendo por mi cuenta html y no me fue extranio el curso. Al siguiente ciclo me metí a un curso de Php (con Cesár Bustamente, muy bueno el curso), y comienzas a notar que todos son html, métodos Post, get, base de datos, y como que le agarras onda al asunto. Y después me metí a un Curso de ASP.Net (VS2003), (todos fuera de la Universidad) que lo enseñaba un certificado Microsoft MSCD.Net, la visión del curso era buena: introducción a .Net, Visual Studio .Net, Web Forms, uso de controles, controles de usuario, controles de datos, controles de validación, Web Services, y bueno más tarde me di cuenta que eran los temas del 2310, y no voy a decir que usaba los mismos slides y los mismos ejemplos. Y bueno el curso estuvo bien enfocado, a lo que se necesita en toda aplicación Web de mantenimientos o interacción con base de datos, ¿pero y si en el curso habían personas que no sabían html, o no sabían la diferencia entre Get y Post?, no recuerdo que haya hecho esa pregunta.

Y este patrón se sigue repitiendo en la actualidad, por ejemplo alguién que aprendio a programar con C++, o con Visual Basic, y nunca vieron nada Web, no saben que existe el html, ni Get, ni Post, ni nada Web. Y deciden aprender desarrollo Web con ASP.Net, por eso de que la Web es la voz, descargan tutoriales, abren Visual Studio, y comienzan a arrastrar controles indiscriminadamente, hacen doble clic en un botón, se agrega el evento botón, programan llenar un GridView, hacen View in Browser, y ya se podría decir que son desarrolladores Web, y si les preguntas que método usaste Get o Post?, la respuesta es: -«no, yo uso ASP.Net»…

¿Cuál es el problema? Con respecto al html, va desde problemas en diseño, hasta problemas en programación. En diseño, por ejemplo arrastras un control Repeater, y lo vas a rellenar con tablas, para poner un ejemplo:

   1: <asp:Repeater ID="repData" runat="server">
   2:    <HeaderTemplate>
   3:        <table> 
   4:           <td>
   5:    </HeaderTemplate>
   6:    <ItemTemplate>
   7:           <tr><%# Eval("nombre") % ></td>
   8:    </ItemTemplate>
   9:    <FooterTemplate>
  10:           </tr>           
  11:        </table>
  12:    </FooterTemplate>
  13: </asp:Repeater>

Y el colmo, el jefe les pregunta, por que se ve mal página: – «He revisado varios foros, y dicen que Visual Studio no generá bien el Html, que tiene muchos errores, debe ser por que es Microsoft».

Y en programación también genera problemas, una vez vi un código que había divs sin cerrar, no estaba ordenado, el cerrar un UpdatePanel no estaba donde debería estar, eso si erá un código espagueti, y todo eso hacía que no funcione ASP.Net Ajax, cuál es la salida del programador: «Asp.Net Ajax no funciona con proyectos existentes, tiene que ser con proyecto nuevos»

Atención, tampoco se trata de que seas un experto en Html, ni mucho menos, y ya hemos comentado las diferencias que debería haber entre el designer y el developer, y como Visual Studio 2008 te da una ayudita, para eso están los designers, y si no eres designer te bajas algún Starter Kit.

¿Pero que tengas problemas de programación porque no sabes cerrar un elemento html, y si sabes lo haces mal? Pues como que hay un pequeño problema. Si en un proyecto Web te vas a dedicar a crear los componentes de acceso a datos, te vas a meter unas fumadas con patrones, con WCF, con EF, pero no vas hacer las aspx, no hay problema si no sabes html, por que tu tarea es otra. Pero si tu eres el que vas desarrollar las aspx, eres el que va integrar el html que te envíe el designer, o eres el que va modificar el html de un starter kit, no saber nada html, ni la diferencia entre Get y Post… no se si imperdonable sea la palabra, pero de que te va traer algún problema en algún momento, lo va hacer.

Conclusión, no pretendo cambiar la forma de dictar, enseñar o aprender ASP.Net, pero si pienso que deberíamos (me incluyo por que creo hasta ahora no le puse el enfasis que merece) tratar de orientar mejor los objetivos y pre-requisitos de los mismos. Si vas a dictar un curso de ASP.NET 3.5 porque ASP.NET 2.0 es el pasado que los temas vayan: 1) Visual Studio 2008 2) Master Pages & Themes 3) Controles Web 4) Controles de datos 5)Linq 6) y los que siguen… son excelente, pero debes asegurarte que sean pre-requisitos tener conocimientos básicos de html y programación… y si el curso ya esta marcha, pues tratar de algunas clases explicar los métodos Get, Post, tener un html válido, etiquetas básicas de html, entre otros…

Por útlimo dejar esta serie de WebCast, de Jonas Stawski, y que realmente es programación Web para principiantes, para aquellos que recién van aprender desarrollo Web, y para aquellos que ya desarrollan en ASP.Net, pero se saltaron el aprender Html, Get, Post, y eso…

P.D.: El título orginal de la entrada era: Enviar variables desde ASP3 por POST a una página ASP.Net, pero el comentario introductorio de unas líneas, se hizo una entrada :$.

Saludos,

[WebCast] Codename Velocity, este viernes 22 de Agosto

http://sergiot2.com/blogimages/2008/08Ago/19-Velocity.jpg

Pues y eso, este Viernes 22 de Agosto estaremos en el WebCast – Microsoft Codename Velocity:

«El Proyecto Microsoft con nombre código “Velocity es una plataforma caché de aplicaciones que integra directamente un grupo grande de máquinas en una sola caché unificada con escalación y alta disponibilidad. Los datos de aplicaciones tienden a clasificarse en tres clases principales. Los datos de referencia (por ejemplo, catálogos de productos) son básicamente datos de sólo lectura que suelen ser compartidos por muchos usuarios; los datos de actividad (por ejemplo, carritos de compra, pedidos) representan el estado de la sesión y tienen a ser de lectura-escritura, usualmente por sesión única; y los datos de recursos (por ejemplo, inventario) son a datos que se leen y se actualizan por varias sesiones de aplicaciones. El rendimiento y la escalabilidad son esenciales para todas las aplicaciones, sin importar los tipos de datos que manejen. Para los datos de actividad y de recursos la disponibilidad es igualmente crítica. En esta plática presentamos la nueva solución de caché de Microsoft, el Proyecto “Velocity”, una memoria caché distribuida que puede copiar en la memoria caché los datos de las aplicaciones para aportar rendimiento, escalabilidad y disponibilidad con clústers comerciales.»

Jorge y Gustavo, ya han comentado sobre este nuevo proyecto, que esta en su versión CTP1, y dentro de poquito en el PDC08 tendremos disponible la versión CTP2. Y para dar un breve definición, es un servicio que permite tener una granja de servidores dedicados a una cache distribuidas para aplicaciones que requieran alto rendimiento, escalabilidad, y disponibilidad. Velocity, además provee comandos, y archivos de configuración para alterar las diversas opciones que contiene este servicio, por ejemplo usar una Cache particionada o usar una Cache replicada. Y también incluye un juego de APIs para trabajar con ella desde .Net, y no esta demás decir que se puede integrar con el manejo de sesiones de ASP.NET, y según lo que leí la idea es que en un futuro tengamos este servicio incluido dentro de .Net.

Por cierto el instalador requiere tener instalado el Framework 3.5. Mas información sobre el proyecto: http://msdn.microsoft.com/en-us/data/cc655792.aspx.

Saludos,

Y no sabia que los Gadgets de Windows Vista eran Open Source…

http://sergiot2.com/blogimages/2008/08Ago/13_Sidebar_Gadgets_Vista.png

Ayer estaba buscando algún tutorial para crear un gadget para Windows Vista, y pues no sabía que los Gadgets de Windows Vista eran OpenSource.

Si vamos a la galería de Gadgets que esta en la Web, al descargar el gadget deseado, este tendrá la extensión *.gadget:

http://sergiot2.com/blogimages/2008/08Ago/13_Gadgets-WindowsVista.jpg

Y para ver el código fuente del gadget, sólo renombramos el archivo a *.zip. Extraemos los archivos, y abrimos la carpeta con nuestro editor favorito obviamente Visual Studio, y podemos ver todo el código usado para crear el gadget:

http://sergiot2.com/blogimages/2008/08Ago/13_VisualStudio-edit-Gadgets.jpg

Y pues la mayoría de gadgets que revisemos, tendrán gran contenido de JavaScript.

El Gadget que hice piratee (cambiar logo, letra, y fecha) fue un Countdown de la fecha en que celerebrá el Blog Day 2008 en Perú, que será el viernes 29 de Agosto:

http://sergiot2.com/diario/blogimages/2008/08Ago/13_Gadget-BlogDay-2008-Peru.jpg

P.D.: Para empaquetar un gadget, enviar a un Zip los archivos y cambiar la extensión a *.gadget. Tener en cuenta que los archivos deben verse directamente al abrir el zip, que no haya una carpeta dentro del zip y recién dentro esten los archivos, ya que no se instalará el gadget.

Saludos,

[Off-Topic] [APNT] Concurso 20 blogs peruanos (no me voten!)

[APNT] = Advertencia!, post no técnico.

Concurso Blogs Peruanos, Estamos buscando a los 20 mejores Blogs del Perú

Páginas Amarillas

Disculpen el off-topic, sobre todo por la temporada baja de posts. He estado ocupando el tiempo lo que queda después del trabajo en un proyecto personal, y haciendo la tesis para obtener el título de Ing. de Sistemas (ahora sólo tengo el de bachiller en Ing. de Sistemas), y bueno creo que si no hace ahora, no se hace nunca… así que parece que si la hacemos… hay muchos posts en la cola, y cuando se pueda los iremos enviando…

El motivo de la entrada, es debido a un concurso que se esta organizando en los bloggers peruanos: 20 Blogs peruanos. En la cual este humilde blog también esta participando.

Hace más de tres años (Marzo-2005), que me inicie en esto de los blogs y no me arrepiento, me ha dado muchas satisfaciones he conocido a mucha gente, y sin querer queriendo también ha influido en las ofertas laborales que he tenido. Hace más de 2 años que blogueo en Geeks (Junio-2006), chanfle no enviamos el post de celebración del segundo aniversario, y pues sigo repitiendo que es la comunidad de blogs más grande a nivel hispana, en blogs, contenido y calidad. Creo que uno de los exitos de la misma, ha sido convocar a todas las personas de los diversos paises de habla hispana que deseen compartir sus conocimientos, o en mi caso lo poco que sé, con la comunidad. Además de compartir, creo que se aprende muchas más, por los comentarios y por los otros bloggers presentes.

Y pués y nada, si en algo les ha ayudado este humilde blog, alguna de sus dudas ha sido resuelta, los ha motivado a leer un poco más para darme la contra, o simplemente encontraron un tip de bolsillo, pueden hacer llegar su voto a través de la siguiente página: Vota por un blog, no se olvide de escoger la categoría tecnología.

P.D.: Tampoco lo vean como una campaña Spam, no van a ver en el msn: Voten por mi blog menos el clásico no voten por mi blog, es sólo una manera de ver si los que aún quedan suscritos al RSS de blog siguen vistando el blog, y si hay alguien más leyendo el blog.

Por cierto, casí lo olvido, sólo se puede votar hasta el 22 de agosto 😀

Saludos,

No todos los problemas se resuelven programando, a algunos hay que hacerles la magia…

http://sergiot2.com/blogimages/2008/06Jun/18_magia.jpg

Un post de reflexión :D, y que servirá de referencia a otros.

Recurrentemente ante situaciones donde estás horas y horas, con un problema y no encuentras el código que lo haga funcionar, visitas todos los foros, en español, inglés, y hasta chino, y nada, y a la gente que envías un email esta apretada con sus quehaceres, lo último que queda es hacer la magia.

¿Pero qué es la magia?. La magia es la experiencia, el sentido común, y la habilidad que vas acumulando conforme aumenta tu participación en proyectos (exitosos o no). No se han dado cuenta que su ki, aumenta después de cada proyecto?, pues una manera de comprobarlo es revisando los primeros códigos que hacíamos, y que cuando los revisas, has los llegas a negar… pero esa es otra historia.

Ahora la adquisición de conocimientos es de todo el contexto: compañeros, proyecto, usuarios, y todo lo que rodea al proyecto. aprendes buenas prácticas, aprendes malas prácticas, (ya sabes que no hacer), aprendes de los buenos jefes de proyectos, también de los malos, incrementa tu capacidad de negociación, y tomar responsabilidad, sobre todo para que no tener que resolver bugs de otros te chanten muertitos de otros, aprendes a tratar con las personas, después de tratar con los usuarios, aprendes aguantar a los compañeros chinches, (no se como se dirá en otros países, pero alguien chinche es aquella persona que hace llegar al límite tu nivel de paciencia).

¿Y como aplico la magia para resolver un problema de programación?

Lo primero, es saber donde buscar, y donde preguntar, y a quién preguntar, recordar que probablemente nosotros no seamos los primeros con el mismo problema. El detalle viene en que quizás la solución no encaje en nuestra aplicación, o sea muy trabajosa, o sea muy compleja, entonces la opción es dar una alternativa, al requerimiento del usuario.

Debemos analizar nuevamente el requerimiento y buscar soluciones alternativas, hombre que de alguna manera tienes que satisfacer el requerimiento del usuario. Y estas alternativas dependiendo del requerimiento pueden variar, quizás haciendo cambios en el diseño, lo solucionemos, o quizás anexando información, ya la magia nos dirá que hacer.

Un ejemplo:

Problema: Desde una página aspx, estoy enviando los productos seleccionados en la página, y estoy abriendo un popup a través de JavaScript, pero si los navegadores tienen habilitado bloquear los popups, la aplicación pierde de alguna manera el flujo actual, y si estoy limpiando los productos seleccionados después de hacer postback, los productos seleccionados se pierden, y el usuario no sabe si tiene que volver a seleccionar los productos.

Solución: Buscar el código JavaScript para detectar si el usuario tiene activada esta opción.

Re-Problema: El problema puede venir, por ejemplo si para abrir el popup estamos registrando el código desde una página ASP.NET, y para hacerlo esto necesita un postback, ahora si el postback hace otros eventos, y dependiendo de nuestro código, tengamos que hacer más código para no perder algunas variables que estemos usando, y que todo funcione correctamente, y se hace todo un rollo.

Solución-Alternativa: Cambiar el diseño, e indicar al usuario que productos están seleccionandos. Así, si el navegador usuario tiene habilitado el bloqueo de popups, no tengo que hacer código extra por que le estoy informado cuales son productos seleccionados, y que no tiene que volverlo hacer.

Y eso, no todo se resuelve programando.

Por eso siempre ante alguna pregunta de código media marciana, siempre pregunto cual es el requerimiento, y quizás esta re-pregunta demuestre que no queremos ayudar o desconocimiento del tema que puede ser cierto, pero quizás no necesitemos un código marciano, solo cambiar de alguna manera el requerimiento.

Saludos,