martes, 21 de febrero de 2012

Comprimir archivos a ZIP en Visual Basic .NET

En estos días me he visto en la necesidad de buscar una forma de comprimir a un ZIP un archivo de texto, lo cual es algo no muy simple, por lo que he podido ver.

Me puse manos a la obra y exploré las soluciones que se me ofrecían (la mayoría, de pago), pero, como todos sabemos, "... el que buscare, encontrará".

La solución que encontré se llama DotNetZip Library, y no es más que una librería y set de herramientas gratuito publicado por la comunidad de open source CodePlex, la cual se rige por la licencia Microsoft Public License.

Entonces, vamos a lo que nos interesa: ¿Cómo se comprime un archivo?

Con esta librería he encontrado que se hace de una forma muy simple; lo primero que necesitamos es bajarnos la librería DotNetZip, y luego, vamos a buscar dentro del zip que bajamos, el siguiente archivo: zip-v1.9\Release\Ionic.Zip.dll, el cual descomprimiremos en cualquier lugar de nuestro sistema.

Hecho esto, en Visual Studio hemos de crear un nuevo proyecto, nombrarlo como deseemos y hacer lo siguiente:

  1. Añadir una referencia a Ionic.Zip.dll: En el explorador del proyecto, click derecho y seleccionar la opción "Agregar referencia" o "Add reference" en el caso de que esté en inglés.
  2. Importar el namespace: Tecleamos en el area de imports de nuestro proyecto lo siguiente: Imports Ionic.Zip
Ahora, el código:


Imports Ionic.Zip

    Private Sub Comprimir()
       Using zip As ZipFile = New ZipFile()
           zip.AddFile("rutaarchivo\nombrearchivo1.ext","")
           zip.AddFile("rutaarchivo\nombrearchivo2.ext","")
           zip.Save("rutazip\nombrezip.zip")
       End Using
    End Sub

Como podrán ver, la forma de hacerlo es muy sencilla, simplemente se utiliza el método "AddFile" del objeto zip de tipo ZipFile para añadir cuantos archivos necesitemos comprimir, y luego se guarda el Zip con el método "Save"; ahora bien, podemos observar que AddFile tiene un segundo parámetro el cual es un string en blanco. ¿Qué siginifica? Pues, simplemente es una ruta que se utilizará dentro del ZIP; por ejemplo, si la instrucción fuera:

           zip.AddFile("rutaarchivo\nombrearchivo.ext","test\")

entonces, al abrir el zip resultante, tendríamos primero una carpeta llamada "test" dentro de la cual estaría almacenado el archivo.
Por lo tanto, como el segundo parámetro es una cadena vacía, se le indica a la clase que quiere que no haya ninguna estructura de directorios dentro del Zip, simplemente el archivo en cuestión; por defecto, si no se especifica este parámetro, el método creará la estructura de directorios original del archivo dentro del ZIP.

Para más información de cómo utilizar esta librería, pueden visitar su documentación oficial (en inglés), donde podrán encontrar la referencia de los espacios de nombres, clases, etc. y una sección con bastantes ejemplos (como comprimir de forma simple o incluso agregando una contraseña, descomprimir, etc.) en cada lenguaje con el que se puede utilizar.

 Espero les sea de utilidad esta información.

Saludos.

domingo, 19 de febrero de 2012

Libros de programación web gratuitos

Una de las cosas que más me costó mientras aprendía a programar con lenguajes para web, era encontrar contenidos de calidad, al menor costo posible.

Sabemos que todo cuesta en esta vida, pero hay algunos colaboradores que realizan un trabajo de primera, y lo distribuyen sin fines de lucro por la red.

LibrosWeb.es es un sitio donde se han publicado varias obras que, a mi criterio, tienen un valor incalculable, puesto que los conocimientos que están plasmados en ellos son de mucha utilidad para desarrolladores web de cualquier nivel.

¿Que tipo de libros encontraré aquí? Podemos mencionar que son libros didácticos para aprender lenguajes, frameworks y tecnologías como:

  • XHTML
  • JavaScript
  • CSS
  • Symphony
  • AJAX
¿Que es lo interesante del sitio? Lo que más me gusta es que en sus publicaciones, hay una referencia muy completa acerca de cada lenguaje, además de ejemplos muy claros y ejercicios, pero algo que pesa mucho, es que todos son ¡totalmente gratuitos! Incluso, la mayoría tiene versión en pdf que puede ser descargada para ser impresa, y esto también sin costo alguno... todas las obras están publicadas bajo la licencia Creative Commons Reconocimiento No Comercial - Sin Obra Derivada 3.0

Yo personalmente he leído "Introducción a Ajax", y es simplemente genial, todo está muy bien explicado, y cubre la mayoría de los aspectos a considerar tanto en JavaScript como utilizando Ajax, así que se las recomiendo.

Enlace: LibrosWeb.es

lunes, 13 de febrero de 2012

Hablando de algoritmos


Hablando de algoritmos...

En general, podríamos definir a un algoritmo como cualquier conjunto de instrucciones detalladas que resultan en un "estado final predecible", partiendo de un "inicio conocido".
La calidad de los algoritmos está basada en la calidad de las instrucciones dadas, en tanto sean correctamente ordenadas y estructuradas, así como oportunas, de lo contrario, se corre el riesgo de que el resultado sea incorrecto.

Ahora, después de esta definición algo formal, ¿cuales son las ideas que necesito para entender mejor este concepto? cuestionemos entonces la definición:

Lo primero que se me ocurre es, ¿A que tipo de "inicio conocido" y "estado final predecible" se refiere la definición?
Bien, podría tomarme bastante tiempo explicando y ejemplificando esto, pero vamos al grano:
Estos conceptos tienen su relación en lo que conocemos como RESOLUCION DE PROBLEMAS, donde, a partir de un enunciado y datos iniciales, se realiza un procedimiento para poder resolver un problema y llegar al resultado deseado.

Entonces, de la forma más sencilla, se podría decir de un algoritmo que es... UN CONJUNTO DE INSTRUCCIONES CON LAS QUE SE RESUELVE UN DETERMINADO PROBLEMA.

Ahora bien, ¿Que tipo de instrucciones? Lo explicaré con un ejemplo:

Antonio viene por primera vez a la ciudad, pero no sabe cómo llegar al museo de historia. Le pregunta a una persona de la localidad, la cual conoce cómo hacerlo, y le da las siguientes INSTRUCCIONES:


  • Camine derecho hasta 4 calles y doble a la derecha, luego camine derecho 3 cuadras, y doble hacia la izquierda.
  • Camine derecho otras 6 calles, y a su lado izquierdo podrá observar el museo; buen día.


Si analizamos este escenario, encontraremos muchas cosas interesantes...

Lo primero que observamos son los siguientes hechos:

  1. Condicion inicial: Donde está ubicado.
  2. Resultado deseado: Llegar al museo de historia.
Lo siguiente que podemos ver es lo claro, ordenado y sencillo que se da cada instrucción.
Lo tercero que se puede observar es algo interesante y parte de lo abstracto de todo esto: el dato de que la persona sea alguien que no conozca la ciudad, lo cual ayuda mucho a elegir la forma en la que daremos las instrucciones.

En la siguiente entrega sobre este tema profundizaré sobre estos, para que podamos entender y aprender el abstraccionismo de todo esto.