martes, 31 de mayo de 2011

Editar archivos xlsx desde OOXML

En alguna ocasión en uno de mis trabajos de programador me toco convivir con los archivos de Excel 2007, ya requería de editar un archivo. Voy a explicar como funcionan de manera general como editarlos y dependiendo de las necesidades se pueden crear rutinas para editarlos.
Este formato está basado en el estándar de OOXML de Microsoft así que si tienen un libro sobre eso ahí se detalla a mayor profundidad todo.
Los archivos .xlsx son archivos comprimidos, es decir, si ahorita tomas un archivo con esta extensión y la cambias a .zip, al descomprimirla obtendrás varios archivos con extensión .xml en el cual están contenidos formatos de celdas, información, imágenes y la agrupación las hojas, toda la información esta estructurada.
En este archivo binario encontrarás contenidos archivos xml en la ruta \xl\worksheets\sheet1.xml, \xl\worksheets\sheet2.xml, hasta n ojas dependiendo del numero de hojas que tu documento de Excel tenga y el contenido es similar a:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<worksheet xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships">
                <dimension ref="C4:C9"/>
                <sheetViews>
                                <sheetView tabSelected="1" workbookViewId="0">
                                                <selection activeCell="C10" sqref="C10"/>
                                </sheetView>
                </sheetViews>
                <sheetFormatPr defaultRowHeight="15"/>
                <sheetData>
                                <row r="4" spans="3:3">
                                                <c r="C4" t="s">
                                                                <v>0</v>
                                                </c>
                                </row>
                                <row r="5" spans="3:3">
                                                <c r="C5" t="s">
                                                                <v>1</v>
                                                </c>
                                </row>
                                <row r="6" spans="3:3">
                                                <c r="C6" t="s">
                                                                <v>2</v>
                                                </c>
                                </row>
                                <row r="7" spans="3:3">
                                                <c r="C7" t="s">
                                                                <v>3</v>
                                                </c>
                                </row>
                                <row r="8" spans="3:3">
                                                <c r="C8" t="s">
                                                                <v>4</v>
                                                </c>
                                </row>
                                <row r="9" spans="3:3">
                                                <c r="C9" t="s">
                                                                <v>5</v>
                                                </c>
                                </row>
                </sheetData>
                <pageMargins left="0.7" right="0.7" top="0.75" bottom="0.75" header="0.3" footer="0.3"/>
</worksheet>


Dentro de el tag <v>Num</v> se encuentra una referencia numérica que puedes locacilzar en el archivo \xl\sharedStrings.xml donde aparece los siguiente:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<sst xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main" count="6" uniqueCount="6">
                <si>
                                <t>est</t>
                </si>
                <si>
                                <t xml:space="preserve">es </t>
                </si>
                <si>
                                <t>una</t></si>
                <si>
                                <t>prueba</t>
                </si>
                <si>
                                <t>desde</t>
                </si>
                <si>
                                <t>el excel</t>
                </si>
</sst>

En donde este archivo esta estructurado a manera de arreglo es decir la posición 0 marcada en archivo \xl\worksheets\sheet1.xml:

<c r="C4" t="s">
                                                                <v>0</v>
                                                </c>
Hace referencia a el valor en \xl\sharedStrings.xml:

<si>
                                <t>est</t>
                </si>

A continuación describo el algoritmo y ustedes lo plasman en cualquier legunaje:

1.       Lo que se requiere es una librería de cualquier lenguaje que pueda leer archivos zip para descompirmirlo en algún directorio temporal
2.       Una vez descomprimido requerimos de manipular los xml, ya sea para agregar o quitar ramas de la estructura.
3.       Una vez terminada la operación con los archivos xml requerimos generar el archivo zip de nuevo, pero conextensión xlsx.

No profundicé mucho en el tema debido a que estas son las bases, cabe señalar que este tipo de arquitectura aplica paro el Office 2010. Si tienen alguna duda con gusto les puedo apoyar.

martes, 24 de mayo de 2011

Probando configuración de apache

Hace unos días estaba ayudando a configurar el Apache a un amigo, esta configuración es sencilla. Pero cuando hay un error sencillo el cual no tienes la capacidad de ver, realmente necesitas ayuda de alguien que sea una lumbrera en Apache y pueda ver tu error, o ejecutar un comando para la validación de la configuración de Apache.
La sintaxis en línea de comandos es la siguiente:
<ruta de instalación de Apache>\httpd –f  <ruta del archivo>
Por ejemplo:
httpd –f /conf/httpd.conf
NOTA: La ruta del archivo que deseemos revisar es partiendo de donde está el serverRoot
Y van a aparecer errores primeramente y posteriormente los warn.
Esta comprobación es similiar a la compilación de un programa, lo que hace es revisar la configuración este correcta.
Mas información, la puedes encontrar aquí

sábado, 14 de mayo de 2011

Convertir archivos de word a pdf

Todos hemos tenido la necesidad de convertir algún documento de doc/docx  a pdf y no contamos con un programa que nos permita hacerlo. Pues ahora hay algunos sitios que no ayudan con esto y navegando por ahí me encontré este sitio.


Espero que les sirva, hay muchos mas, solo es cuestión de que busquemos.

Herramientas de desarrollo Web

Cuando iniciamos en el desarrollo de sitios Web debemos de tener herramientas para llevar a cabo nuestro trabajo. En el mercado hay muchas de ellas algunas gratis y otras de paga, en lo personal uso las gratis debido a dos razones:
1.       Hay aplicación de muy buena calidad que me ayudan a desarrollar lo que necesito con toda comodidad.
2.       Soy bien codo y no pienso pagar por algo que es gratis.
En este post vamos a hablar de algunas, veremos pros y contras de cada una, para ello vamos a partir de nuestras necesidades que es una página Web.

Requerimos:
·         Editor de código HTML, JavaScript, CSS, etc.
·         Interprete Perl, PHP, Java, etc.
·         Manejador de Base de Datos (si es que se requiere)
·         Navegadores para probar nuestros sitios (este se encuentra en cualquier sistema operativo preinstalado y solo se menciona por ser el medio de prueba).
·         Hosting (queda por parte del lector).
Para los editores de código tenemos: Dreamweaver, Front Page, editores de código (NotePad, Context, PSPad, etc)

Dreamweaver.
Este editor es muy bueno para aquellos que se van iniciando en esta área debido a que nos ayuda insertando el código HTML y parte de CSS, de manera grafica nosotros podemos crear nuestra página, lo cual lo hace mas rápido la parte del diseño. Es como si desarrolláramos una pantalla en cualquier lenguaje RAD. Reconoce varias sintaxis (HTML, CSS, JavaScript, PHP, SQL, etc).
Lo malo es que cuando vemos el código esta muy desorganizado impidiendo el mantenimiento rápido al sitio, difícil de entender, a veces se insertan objetos HTML que no se usan, la manipulación de los objetos de manera grafica es un tanto complicada.
Front Page.
Solo use algunas veces en la preparatoria, pero es muy similar a Dreamweaver solo que menos popular y lo considero que es para personas que están haciendo sus primeros pasos en el desarrollo Web pero la verdad ni para eso me gusta y como fue desarrollado por Microsoft fue hecho para solo creer que Inernet Explorer es el único navegador sobre la faz de la tierra. Hechando un vistaso rápido a mas puntos de vista de otros usuario la mayoría son malos. Así que si vas a iniciar USA DREAMWEAVER y después que domines HTML construye tu propio código desde cero.

ConText
Editor de código totalmente a mano, es decir, desde cero.
·         Soporta muchas sintaxis.
·         Existe una versión portable.
·         Tiene varios lenguajes.
·         Colores de sintaxis configurable.
·         Grabador de macros.
·         Conversión de archivos  DOS -> Unix -> Mac.
·         Auto indent  C/Java-Style block.
·         Ordenamiento de texto.
·         Y otras mas monadas que podras ver en aquí.
PSPad
Es muy parecido a ConText solo que con algunas otras monadas.
·         Trabajo con proyectos.
·         Trabajo con varios documentos al mismo tiempo (MDI).
·         Guardado de sesiones para que se reabran los mismos archivos la próxima vez.
·         Cliente FTP - edite sus archivos directamente desde Internet.
·         Grabadora de macros para acelerar su trabajo.
·         Buscar y reemplazar en el texto.
·         Comparación de textos resaltando diferencias con bandas de color.
·         Plantillas (etiquetas HTML, scripts, plantillas de código...).
·         La instalación contiene plantillas de HTML, PHP, Pascal, JScript, VBScript, MySQL, MS-Dos, Perl.
·         Resaltado sintáctico automático, según el tipo de archivo utilizado.
·         Resaltado personalizable para usos particulares.
·         Corrección automática.
·         Vista preliminar inteligente de páginas HTML usando Internet Explorer y Mozilla.
·         Completo editor HEXadecimal.
·         Ejecución personalizable de otros programas.
·         Uso de compiladores externos como en un entorno IDE: captura del resultado, ventana de log, log parser.
·         Resaltado sintáctico de la vista preliminar de impresión.
·         Biblioteca TiDy integrada, para formatear y comprobar código HTML, convertir a CSS, XML, XHTML.
·         Versión gratuita integrada del magnífico editor CSS TopStyle Lite.
·         Exportación con resaltados en los formatos RTF, HTML, TeX a un archivo o al portapapeles.
·         Selección de bloques por columnas, marcapáginas, números de línea.
·         Reformateo y compresión de código HTML, cambios de mayúsculas/minúsculas en las etiquetas HTML.
·         Ordenación de líneas de una columna, con posibilidad de eliminar línas duplicadas.
·         Tabla ASCII chart con caracteres HTML.
·         Explorador de código para Pascal, INI, HTML, XML, PHP y otros.
·         Corrector ortográfico.
·         Navegador web interno compatible con APACHE.
·         Resaltado de paréntesis, incluso estando anidados.
·         Si quieres saber mas sobre este editor entra a http://www.pspad.com
Ahora viene otro segmento en las herramientas como son los DBMS que son los que permiten el almacenar los datos.
MySQL
Ideal para proyectos pequeños y medianos en los que no haya mucha concurrencia de usuarios.
·         Maneja varias distros para cada tipo de proyecto.
·         Es free dependiendo de la modalidad en que lo uses.
·         Bases de datos robustas.
·         Maneja varios esquemas de datos compatibles con SQL haciendo bastante simple una migración de DBMS.
·         Hay clientes para administrarlo desde un cliente grafico.
·         Es multiplataforma.
·         Estable y rápido.
PostgreSQL
Este DBMS es de lo mas robustos que hay en el software libre y es recomendado para proyectos grandes y de mucha concurrencia de usuarios.
·         Este manejador es totalmente libre ya que esta bajo licencia BSD.
·         Maneja el SQL estándar y también tiene sus propias monadas y herramientas.
·         Cuenta con un cliente grafico llamado PgAdmin.
·         Maneja stored procedure.
·         Multiplataforma.
·         Maneja triggers.
·         Si quieres saber mas sobre este DBMS visita http://www.postgresql.org/
Ahora ondeemos en el mundo de los script que se ejecutan del lado del servidor.
Perl
Este lenguaje de programación es el que mas he usado para el desarrollo de sitios Web debido a que en mi anterior trabajo era usado.
·         Sintaxis fácil de aprender.
·         Miles de librerías hechas para simplemente para usarse y todas free en CPAN
·         Es gratis.
·         Multiplataforma.
·         Estable.
·         Potente.
·         Manejo eficiente de la memoria.
En si es una herramienta muy completa en su tipo.
También he manejado PHP pero muy poco y para ser sincero no me siento capacitado para dar a una opinión profunda sobre este lenguaje, solo que es muy bueno y muy popular, pero desde mi punto de vista Perl es mejor.

domingo, 1 de mayo de 2011

Recuperando datos del disco duro con hirens


Este post es enfocado a para usuario de nivel medio en adelante, ya que vamos a tartar un tema bastante util para TODOS los usuarios, la recuperación de nuestra información, Uy ese es un tema muy sensible para todas las personas que depositamos nuestra vida laborar en simples fierros que en cualquier momento pueden fallar y esto ocasiona que no de un ataque sobre otro.

Menos bla bla bla y mas acción.

Es muy común tras un apagon de corriente nuestro disco duro unos sectores fallen y es este punto donde hay varias posibilidades:
1.       EXCELENTE: Encendemos nuestro equipo de manera normal en donde lo mas que podemos lamentar fue que no guarmanos la información en la que estábamos trabajando.
2.       BUENO: Ya no arranca el sistema operativo, pero podemos recuperar nuestra información de nuestro disco duro, la vertimos en otro y todo como si nada hubiera pasado (dependiendo  de que no hayamos perdido información valiosa).
3.       MALO: Disco totalmente inservible, aca no hay mucho que hacer, solo llorar.
Muy bien ya que tenemos nuestros 2 posibles escenarios, vamos a trabajar sobre el 2 que es donde tenemos nuestra área de oportunidad.

Hay un programa que que se llama hirens y que nos puede apoyar a salvar nuestra información, poniéndola en otro dispositivo de almacenamiento sin necesidad de sacar nuestro disco duro y dárselo a alguien más para que vea nuestros archivos (fotos, videos, documentos, etc), ya que este programa cuenta con varias herramientas de recuperación, incluso con una versión Live de WinXP llamada MiniXP

Lo que debemos hacer es lo siguiente:
1.       Descargar hirens desde aquí
2.        Debemos de grabar la imagen en un CD para arrancar con ella
3.       Ya iniciando esta será la pantalla inicial:

4.       En la cual debemos de seleccionar Mini Windows XP.
5.       Hará la carga de una versión del sistema operativo, pero no debemos de esperar que sea nuestra configuración ya que esta es una versión Live de XP.
6.       Una vez dentro podremos sacar todo los documentos que podamos y pasarlos a cualquier dispositivo de almacenamiento.
Se ve fácil, pues en verdad es fácil. Ahora esta herramienta trae muchas mas herramienta que realmente son muy utiles:
·         AlternateStreamView 1.30.
·          Atlantis Word Processor 1.6.5.5.
·         Avira AntiVir Personal (11-04-2011).
·         BIOS Master password generator.
·          BlueScreenView 1.32.
·          BootICE 0.9.2011.0406.
·         CCleaner 3.05.1409.
·         CloneSpy 2.6.
·          ComboFix (11-04-2011).
·         CPU Identification utility 1.20, CPU-Z 1.57.
·         CurrPorts 1.87.
·         Defraggler 2.03.282.
·         Dr.Web CureIt! Antivirus (11-04-2011)
·         DriveImage XML 2.22.
·         FastCopy 2.08.
·         GPU-Z 0.5.3.
·          grub4dos 2011-03-27.
·         HashMyFiles 1.70.
·         HijackThis 2.0.5b.
·         HWiNFO 5.5.2.
·         IE PassView 1.26.
·         ImgBurn 2.5.5.0.
·         InfraRecorder 0.52.
·          InstalledCodec 1.20.
·         Mail PassView 1.73.
·          Malwarebytes Anti-Malware 1.50.1 (11-04-2011).
·         MessenPass 1.42.
·          Mini Xp improvements.
·         MyUninstaller 1.72.
·         Network Password Recovery 1.31.
·         OpenedFilesView 1.50.
·         PasswordFox 1.30.
·         PCI 32 Sniffer 1.4 (11-04-2011).
·         PCI and AGP info Tool (11-04-2011).
·         PhotoRec 6.12b.
·         Process Explorer 14.1.
·         Process Monitor 2.94.
·         ProduKey 1.50.
·         PSTPassword 1.16.
·         Recuva 1.40.525.
·         RegScanner 1.85.
·         Remove Fake Antivirus 1.76.
·         Revo Uninstaller 1.91.
·         RMPrepUSB 2.1.620.
·          SearchMyFiles 1.71.
·         SeaTools for Dos 2.23.
·         ServiWin 1.45.
·         ShellExView 1.65.
·         SmartSniff 1.76.
·         Speccy 1.09.231.
·         Spybot – Search & Destroy 1.6.2 (11-04-2011).
·         SpywareBlaster 4.4 (11-04-2011).
·         SumatraPDF 1.4.
·         SuperAntispyware 4.50.1002 (11-04-2011).
·         System Explorer 2.7.6.
·         TeamViewer 6.0.10462.
·         TestDisk 6.12b.
·         Ultimate Windows Tweaker 2.2.
·         UnknownDevices 1.4.20 (11-04-2011).
·         USBDeview 1.88.
·          WinSCP 4.3.2.
·         Xp-AntiSpy 3.97.1
Si tienen alguna duda al respecto del tema háganla saber. Que estén bien