viernes, 10 de junio de 2011

Enviando datos encriptado con JQuery

Es muy común que en nuestros sitios tengamos formas de logueo en la cual tenemos que encriptar la contraseña de los usuarios por cuestiones de seguridad.
Es por eso que hoy les voy a hablar sobre un plugin bastante sencillo hecho en JQuery para encriptar nuestros datos que se llama JQuery SHA256.
A continuación describo la implementación de esta herramienta:
1.       Debes de descargar la aplicación de aquí
2.       Incrustarlo en tu sitio web y hacer la llamada
3.       Tener un objeto que desencadene la acción (onclick(), submit(), etc).
4.       A continuación tendremos una cadena de 32 dígitos encriptada.
En esta parte se muestra la forma de empelarse este plugin:
$('#ex1_button').click(function(){
        var output = $.sha256($('#ex1_source'));
        $('#ex1_result').html(output);
});

Prueba el funcionamiento aquí

martes, 7 de junio de 2011

HTML5 y algunas funcionabilidades

A continuación enlisto algunas monadas nuevas de HTML5:

·         Audio Video: En HTML4 si deseas incrustar alguna de estas funcionabilidades requieres de utilizar flash, lo que significa que dependes de que el cliente tenga instalado este programa para la correcta visualización de la página. Con HTML5 trae etiquetas que permiten utilizar audio y video procesado por el mismo navegador. Estos tags son <video></video> y <audio></audio>. Esperemos que al ser soporte nativo del navegador sea mas rápido la ejecución, mas información aquí.
·         Dibujo: Con <canvas> y javascript puedes hacer dibujos más rápidos, ya que el rendimiento por código es más rápido que cargar imágenes, aquí algunos ejemplos de cómo hacerlo.
·         Web Sockets: Esta funcionabilidad permite especificar el puerto desde el cual enviar datos desde el cliente al servidor, podemos encontrar más información aquí.
·         Aplicaciones Web Offline: Permite trabajar online, es decir, si por alguna razón perdemos la conexión con el servidor de la página podemos continuar trabajando y posteriormente replicar los cambios en el servidor, esta funcionabilidad es muy buena para los usuarios viajero, mas información en este link o aquí.
·         Alamacenamiento Web: Para poder identificar las sesiones de usuario en HTML4 se usan las cookies, con esta versión de HTML5 se podrá almacenar hasta 5 MB por dominio. Al incrementar la capacidad de almacenaje también hay mas valores que podemos obtener sobre el cliente. En este sitio se describe mas a profundidad.
·         Web Worker:  Es algo parecido a lo que lo que los lenguajes multi-hilo implementan, ya que se pueden tener en ejecución varios procesos, pero esta característica cuenta con varias restricciones así solo se recomienda implementarlas cuando realmente se necesiten y se tenga el control sobre la operación del sitio, para mayor información vista este sitio.
·         Geolocalización: Permite localizar el sito a donde esta siendo descargado, es decir, revela nuestra localización basado en nuestra IP, en el sitio de la W3C veras mas a detalle esta información.

Este articulo lo puede encontrar en su versión original en esta liga http://dev.opera.com/articles/view/get-familiar-with-html5/

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.