Como crear Temas a nivel de Sitio Web

 


Con la llegada de ASP.NET vinieron muchas nuevas características, una de ellas es la creación de temas que nos permiten generar un diseño estándar para nuestra aplicación con la posibilidad de poder generar múltiples temas para que nuestros usuarios puedan elegir de acuerdo a sus preferencias.

La creación de temas puede darse tanto a nivel de Aplicación Web como a nivel de Sitio Web, si hablamos a nivel de aplicación web, los temas se almacenan dentro de un directorio especial llamado «App_Themes«, en donde podemos crear directorios adicionales por cada tema que tengamos disponibles. Dentro de estos directorios particulares es en donde van a almacenarse nuestros «skins«, hojas de estilo, imágenes que va a requerir nuestro diseño para una presentación estándar.

Ahora también existe la opción de crear temas globales a nivel de sitio web que puedan ser reutilizables por todas nuestras aplicaciones web, ahora les explicaré el procedimiento para lograrlo.

Paso 01. Crear una carpeta llamada «Themes» en la siguiente ruta: «rootiis_sitiowebaspnet_clientsystem_webversion», en donde «rootiis_sitioweb» viene a ser la ruta por defecto a la que apunta nuestro Sitio Web y la parte de la «version» hace referencia a la versíón de asp.net usando, por ejemplo 2_0_50727. En mi caso quedó de la siguiente manera:
C:Inetpubwwwrootaspnet_clientsystem_web2_0_50727Themes



Paso 02: Crear nuestros temas específicos dentro de la carpeta que acabamos de crear anteriormente, se pueden crear los temas que sean necesarios, sin restricciones. Por ejemplo yo podría crear los siguientes temas:

C:Inetpubwwwrootaspnet_clientsystem_web2_0_50727ThemesDefault
C:Inetpubwwwrootaspnet_clientsystem_web2_0_50727ThemesAzul
C:Inetpubwwwrootaspnet_clientsystem_web2_0_50727ThemesRojo



Paso 03: Agregar a cada uno de los temas antes creados el contenido necesario tal como Skins, Hojas de Estilo, Imágenes.

Es altamente recomendable crear primero los temas como parte de alguna aplicación web, para poder hacer las pruebas necesarias y luego de ello ya subirlas a nivel de Sitio Web,

Espero sea de ayuda,

Ivan Mostacero.

http://www.msdnlive.net/

Compresion y descompresion en el .NET Framework 2.0

Descargar Fuente


El intercambiar datos dentro de nuestra organización sería mucho mas eficiente si estos datos no ocuparan mucho espacio ya que de ese modo al ser transferidos sobre nuestra red no la sobrecargarían y el transporte sería muchísimo mas rapido. Existen muchos algoritmos para compresión de datos tanto de caracter privado como publico y que pueden ser utilizados para este propósito.

Microsoft, conociendo la importancia de tener estos algoritmos y de su uso, ha implementado dentro del Framework 2.0 un conjunto de clases que nos permita utlizarlos de manera muy sencilla y rápida, estas clases las podemos encontrar dentro del Namespace «System.IO.Compression», y se llaman DeflateStream y GZipStream. 

La clase DeflateStream usa el algoritno de compresión «DEFLATE» que lo podemos encontrar detallado en el RFC 1951 (URL: http://www.faqs.org/rfcs/rfc1951.html) y que es libre sin patentes ni nada por el estilo e implementado en muchas herramientas de compresión, en si se basa en la combinación del Algoritmo LZ77 y la codificación Huffman.

Ahora la clase GZipStream se basa también en el algoritmo de compresión DEFLATE agregándole cierta metadata tanto en la cabecera y un pie de página. Por lo mismo dentro del framework 2.0 se podría decir que GZipStream es una simple extensión de la clase Deflate con el agregado de una cabecera y un pie de página haciendolo compatible con otros comprimidores/descomprimidores tal como es WinZip o Winrar ( Ojo en el caso de estos productos, además de permitir comprimir/Descomprimir manejan tambien el concepto de archivameinto por lo tanto los resultados que obtengamos comparados a estos productos no van a ser los mismos).

Tambien podríamos decir que en .NET se tiene la restricción a un máximo de 4 Gigas de tamaño para usar estas clases, aunque no es un gran inconveniente, se podría decir que es totalmente manejable 🙂

Ahora la implementación del mismo es muy sencilla, como primer paso requerimos hacer lo siguiente:

  1 using System.IO.Compression;



De esta forma importamos el namespace que nos va a permitir trabajar con las clases ya definidas anteriormente:
Luego de ello vamos a definir un método que nos permita realizar la compresión usando la Clase GZipStream:

  1 public static void GZipCompresion(string strNombreArchivo)
2 {
3 FileStream fsArchivo;
4 try
5 {
6 // Leemos el archivo a comprimir
7 fsArchivo = new FileStream(strNombreArchivo, FileMode.Open, FileAccess.Read, FileShare.Read);
8 //Definimos el buffer con el tamaño del archivo
9 byte[] btBuffer = new byte[fsArchivo.Length];
10 //Almacenamos los bytes del archivo en el buffer
11 int intCount = fsArchivo.Read(btBuffer, 0, btBuffer.Length);
12 fsArchivo.Close();
13
14 //Definimos el nuevo stream que nos va a permitir grabar el zip
15 FileStream fsSalida = new FileStream(strNombreArchivo + «.zip», FileMode.Create, FileAccess.Write);
16 //Rutina de compresion usando GZipStream
17 GZipStream gzsArchivo = new GZipStream(fsSalida, CompressionMode.Compress, true);
18 //Escribimos el resultado
19 gzsArchivo.Write(btBuffer, 0, btBuffer.Length);
20 gzsArchivo.Close();
21
22 //Cerramos el archivo
23 fsSalida.Flush();
24 fsSalida.Close();
25
26 MessageBox.Show(«Compresion realizada correctamente al archivo: « + strNombreArchivo + «.zip»);
27 }
28 catch (Exception ex)
29 {
30 MessageBox.Show(«Ocurrió un error al comprimir: « + ex.Message);
31
32 }
33 }


 

Y con eso ya tendríamos implementado el método para comprimir, para llamarlo desde un formulario windows podríamos realizar lo siguiente:

  1 private void btnComprimir_Click(object sender, EventArgs e)
2 {
3 OpenFileDialog ofd = new OpenFileDialog();
4 if (ofd.ShowDialog() == DialogResult.OK)
5 {
6 GZipCompresion(ofd.FileName);
7 }
8 }

Ahora para realizar la descompresión se torna un poquito más complicado debido a que se requiere el tamaño del buffer en donde almacenar el resultado de la descompresión, aca tenemos la implementación del mismo:


 

  1 public static void GZipDescompresion(string strNombreArchivo)
2 {
3 FileStream fsArchivo;
4 try
5 {
6 //Leemos archivo a descomprimir
7 fsArchivo = new FileStream(strNombreArchivo, FileMode.Open, FileAccess.Read, FileShare.Read);
8 GZipStream gzsArchivo = new GZipStream(fsArchivo, CompressionMode.Decompress);
9
10 //Codigo implementado para conocer las dimensiones que va a tener nuestro buffer, acumulativo.
11 int offset = 0;
12 int intCountBytes = 0;
13 byte[] btSmallBuffer = new byte[100];
14 while (true)
15 {
16 int bytesRead = gzsArchivo.Read(btSmallBuffer, 0, 100);
17 if (bytesRead == 0)
18 {
19 break;
20 }
21 offset += bytesRead;
22 intCountBytes += bytesRead;
23 }
24 //Creamos el buffer con el tamaño requerido
25 byte[] buffer = new byte[intCountBytes];
26
27 //Leemos el contenido del archivo comprimido al buffer
28 fsArchivo = new FileStream(strNombreArchivo, FileMode.Open, FileAccess.Read, FileShare.Read);
29 gzsArchivo = new GZipStream(fsArchivo, CompressionMode.Decompress);
30 int intCount = gzsArchivo.Read(buffer, 0, intCountBytes);
31 gzsArchivo.Close();
32
33 //Escribimos la salida a un nuevo archivo, ya descomprimido
34 FileStream fsSalida = new FileStream(strNombreArchivo.Substring(0, strNombreArchivo.Length – 4), FileMode.Create, FileAccess.Write);
35 fsSalida.Write(buffer, 0, intCountBytes);
36 fsSalida.Flush();
37 fsSalida.Close();
38
39 MessageBox.Show(«Descompresion realizada correctamente al archivo: « + strNombreArchivo.Substring(0, strNombreArchivo.Length – 4) + «.zip»);
40
41 }
42 catch (Exception ex)
43 {
44 MessageBox.Show(«Ocurrió un error al descomprimir: « + ex.Message);
45
46 }
47 }


 

Para llamar a este método desde un formulario windows:

  1 private void btnDescomprimir_Click(object sender, EventArgs e)
2 {
3 OpenFileDialog ofd = new OpenFileDialog();
4 if (ofd.ShowDialog() == DialogResult.OK)
5 {
6 GZipDescompresion(ofd.FileName);
7 }
8 }



Bastante sencilla la implementación, y es que justamente para ello esta el Framework, para hacernos la vida mas sencilla 🙂

Espero sea de utilidad, luego publicaré el código fuente para su descarga,

Feliz Navidad 🙂

Ivan Mostacero

Los virus mas divertidos del 2006

Navegando por la super red me encontre con este artículo bastante exótico donde se muestra una lista de los virus mas «extraños» que se tuvo en este año 2006, si alguien tiene alguno adicional coméntelo aqui [:D] aqui va:

«La empresa de seguridad informática Panda Software dio a conocer la lista con el malware más «divertido» del año, donde hacen su aparición de manera más notoria los programas espía.

Pese a que algunos puedan parecer curiosos, e incluso divertidos, lo mejor es mantenerse alejado en todo momento de cualquier amenaza informática.

La lista:
– El virus más moralista.
Este título le corresponde al spyware Zcodec que, entre otras funcionalidades, controla si el usuario accede a ciertas páginas web con contenido pornográfico. Posiblemente, ello no sea más que una forma de determinar si el usuario es aficionado a esas páginas para enviarle publicidad personalizada. Sin embargo, también cabe la posibilidad de que el autor del spyware padezca un caso de «vouyerismo».

– El peor candidato. El gusano Eliles.A se empeña en enviar curriculums a diestro y siniestro. Hasta tal punto es así, que los manda tanto por correo electrónico como a través de mensajes a teléfonos móviles. Desde luego, no muestra demasiada confianza en su capacidad laboral.

– El más amarillista. La prensa amarilla ha proliferado de tal manera que ha llegado incluso a los virus informáticos. De todos los aparecidos en 2006, se lleva la palma Nuwar.A, que envía mensajes afirmando -nada menos- que la Tercera Guerra Mundial nuclear ha comenzado.

– El más recalcitrante. Dicen que lo bueno, si breve, dos veces bueno. Seguro que el autor de los gusanos Spamta no conoce este popular refrán. Si no, no habría enviado múltiples oleadas de variantes casi iguales entre si.

– El más «vivo». Una vez que el Spyware Popuper se instala en una computadora, ejecuta una versión pirata de un conocido antivirus. El objetivo de esto no es hacer un favor al usuario, sino eliminar a cualquier posible rival que pueda haber instalado en la PC. Parece que la lucha por la supervivencia también ha llegado al mundo de las amenazas de Internet.

– El más ansioso. Por lo general, los mensajes de correo que contienen estafas de tipo phishing pretenden conseguir algunos datos confidenciales de las cuentas o tarjetas del usuario que permitan el robo de dinero. Pero no es este el caso de BarcPhish.HTML, que no se conforma con lo anterior, sino que recoge todos los datos posibles: fechas de caducidad, CVV (Card Verification Value), apellidos, códigos de paso, número de cuenta, etc. Tal vez su autor, al diseñarlo, tuvo en mente eso de «mejor que sobre…».

– El más chismoso. En este caso, la elección no ha sido difícil. WebMic.A es un código malicioso capaz de grabar sonidos e imágenes, utilizando para ello el micrófono y la cámara web que estén conectados a la computadora. Desde luego, se trata de un huésped nada recomendable para tener.

– El más juguetón. Nedro.B es un gusano que, por lo que parece, se aburre después de infectar un ordenador. Tal vez por ello se dedica a cambiar iconos, impedir el acceso a herramientas, ocultar extensiones de archivos, eliminar opciones del menú Inicio… en suma: un caos. Visto desde fuera parece que puede ser incluso divertido, pero seguramente no piensan lo mismo los usuarios afectados.

– El más casto. Los códigos maliciosos que se propagan a través de redes P2P utilizan nombres de archivos atractivos para tratar que otros usuarios los descarguen voluntariamente en sus equipos. Por ello, un gran porcentaje de esos nombres hacen alusión a temáticas pornográficas. Sin embargo, entre los más de 37.000 nombres diferentes que FormShared.A, puede utilizar, ninguno de ellos hace alusión al sexo. Sin duda, todo un record.

– El más arcaico. Por lo que parece todavía existen autores de virus «retro». Concretamente, quien crease al gusano DarkFloppy.A parece no haber oído hablar del correo electrónico, la mensajería instantánea, los programas P2P ni nada que se les parezca, ya que como método de propagación eligió nada más y nada menos… que la copia en disquetes. ¿Esperaría provocar una epidemia masiva?

– El más promiscuo. Este título le pertenece al gusano Gatt.A con todo merecimiento. Se trata de un código malicioso capaz de infectar cualquier plataforma sobre la que se ejecute: Windows, Linux, etc.

– El más mentiroso. SafetyBar se presenta para ofrecer «desinteresadamente» información sobre seguridad informática, así como descargas de supuestos programas antispyware. Hasta aquí, todo podría parecer correcto; lo malo es que los programas descargados advierten al usuario que su ordenador se encuentra infectado por amenazas inexistentes.»

Fuente: http://laflecha.net/canales/seguridad/noticias/los-virus-mas-divertidos-del-2006

Feliz Navidad al estilo MS

Justo me acaba de llegar el enlace por parte de Sergio Vittorio :), es el flash que cada año Microsoft crea para toda la comunidad, aca va el enlace:

http://www.microsoft.com/spain/navidad/

Generalmente mis navidades las paso en Trujillo junto a la familia(Trujillo es una provincia de Peru), ya que en si laboro y vivo en Lima (Capital de Peru), ya tengo mis pasajes listos, las maletas a medio hacer aun, ademas del pavo y los regalos para el viaje, espero todos uds. lo pasen de lo mejor con sus familiares, seres queridos o cual sea su costumbre. [G]

Un saludo afectuoso desde peru y Feliz Navidad para todos [:D] ,

Ivan Mostacero.

Ahora buscador de patentes, que mas viene con google!!

Google lanzo su buscador de patentes (fase beta para variar), este interesante buscador rastrea alrededor de unos 7 millones de patentes, realmente muy interesante, se señala que el objetivo de google es poder llegar a buscar en cualquier base de datos pública existente, que tal reto veremos como responden los competidores [8-|],

la url es:
http://www.google.com/patents

Por ejemplo si quisiera buscar algo relacionado a Microsoft:
http://www.google.com/patents?as_q=&num=10&btnG=Google+Search&as_epq=&as_oq=&as_eq=&as_pnum=&as_vt=&as_pinvent=&as_pasgnee=Microsoft&as_pusc=&as_pintlc=&as_drrb_is=q&as_minm_is=1&as_miny_is=2006&as_maxm_is=1&as_maxy_is=2006&as_drrb_ap=q&as_minm_ap=1&as_miny_ap=2006&as_maxm_ap=1&as_maxy_ap=2006

 O talvez la patente del Disk Player:
http://www.google.com/patents?vid=USPATD513611&id=Z4N4AAAAEBAJ&printsec=drawing&zoom=4

Que interesante la guerra por la conquista de la Web :), creo que es algo de nunca acabar.

Ivan Mostacero.

Descarga de primer Service Pack de Visual Studio 2005

El service pack está disponible en múltiples versiones, de acuerdo a la versión de Visual Studio: 

* Visual Studio 2005 Team Suite SP1 . Incluye las actualizaciones para las diferentes versiones de visual studio:     Standard, Professional, y Team Editions)
* Visual Studio 2005 Team Foundation Server SP1
* Visual Studio 2005 Express Editions SP1

Saludos cordiales,

Ivan Mostacero.

ASP.NET AJAX 1.0 RC ha sido liberado!!!

Asi como lo leen [:D], hace unas horas ha sido liberado una de las ultimas versiones antes de la final, entre las nuevas caracteristicas incluye:
* Soporte adicional para Globalizacion (Culturas).
* Invocacion dinamica de proxies de servicios web.
* Logica de substitucion.
* Soporte para compresion y caching para el Script resource handler (Esto me trajo mucho problemas con las versionas Beta 1 y 2, ojala para esta vez ya tenga soporte multi internet-explorer [:P] ya que antes tuve problemas con la version 6 de IE a la cual le faltaba un parche debido a las restricciones de compresion que se habian agregado).

Aca les dejo algunas guias de migracion en caso se atrevieran a migrar, les recomiendo esperar la version final para hacerlo:

* De atlas a ASP.NET Ajax 1.0 RC
* Tambien de la Beta 2 a la RC

Si quieren documentarse mas sobre los cambios que se han dado aca tenemos tambien un documento:

* Documentos  con Cambios

De donde descargarlo?? aca tambien va la URL:

* Descarga

EL paquete de controles AjaxControlToolkit tambien ha sido actualizado

A probar se ha dicho


Saludos,

Ivan Mostacero.