Administradores de Paquetes de Aplicaciones

Los Package Managers o administradores de paquetes existen con el fin de ser un repositorio de librerías, paquetes, dependencias, plugins, frameworks, programas, etc., de donde es posible recuperar las dependencias que requerimos para nuestros proyectos de programación (inicialmente programas para los Sistemas Operativos).

Package Managers más comunes

Nuget:: .NET y C++ [Primer Release – Octubre de 2010]
NPM:: Nodejs [Primer Release – ??]
Composer:: PHP [Primer Release – Marzo 2011]
RubyGems:: Ruby [Primer Release – ??]
Anaconda:: Phyton [Primer Release – ??]
LuaRocks:: LUA [Primer Release – ??]

Buenos los anteriores realmente los que utilizo.

Una de las grandes ventajas que logró solucionar esta idea es el organizar los paquetes en un directorio y tener un archivo que registra todos estos paquetes, centralizando y pudiendo actualizar los paquetes de acuerdo a los cambios que nosotros especifiquemos.

Otra característica interesante es el control sobre el versionado de nuestros proyectos, pudiendo manejar por ejemplo Git colgando a un repositorio (ejemplo: Bitbucket, Github) solo nuestra programación y las dependencias en el archivo de registro de paquetes.

Aquí un listado de Package Managers Applications-Level.

Cuáles son tus Package Managers?

SPA – Simple Page Applications

La comunicación web tradicional utiliza el modelo cliente-servidor, donde el cliente (navegador) inicia la comunicación con el servidor solicitando una página de un sitio web. El servidor procesa la solicitud y devuelve al cliente el código HTML de la página solicitada.

En posteriores interacciones con las páginas del sitio, el usuario se desplaza a varios enlaces –por ejemplo envía un formulario con datos personales– y una nueva solicitud se envía al servidor, comenzando otra vez el flujo: el servidor procesa la petición y envía una nueva página al navegador en respuesta a la nueva acción solicitada por el cliente.

Este proceso inicialmente era síncrono, la invocación o solicitud se hacia y se debía esperar la respuesta (positiva o un error), ademas que se esperaba todos los elementos de la pagina (estructura diseño, datos, etc).

La Web 2.0 supuso una evolución donde la comunicación se transformaba en asíncrona, se hace la invocación o solicitud pero no existen intervalos de tiempos de espera entre solicitudes. La pagina puede enviar datos sin previo aviso y estar preparada a recibir respuestas (callback), el servidor esta preparado a recibir los datos (peticiones) y devolver respuestas de datos más pequeños y de forma mas rápida “técnica Ajax”. No se carga necesariamente todos los elementos de la pagina (ya están allí!) solamente los datos. La impresión que sugiere es mayor velocidad y efectividad.

Sin embargo sigue el proceso de llamadas de paginas síncrono dentro de un sitio web: el home es una solicitud síncrona, el login es otra solicitud síncrona, la pagina de catalogo es otra solicitud síncrona, llamar un producto es otra petición síncrona, la pagina de contacto es otra solicitud síncrona, etc.

SPA

Simple Page Applications se construyen para expandir el alcance de una solución web en una sola pagina, reduciendo el proceso síncrono y para proporcionar una experiencia de usuario mas fluida.

En un SPA, el código necesario –HTML, JavaScript y CSS– de todo el sitio (todas las paginas) se recupera en una sola página (una sola carga síncrona), o bien los recursos apropiados se cargan de forma dinámica (asíncrona o peticiones Ajax) y se añaden a la página según sea necesario, por lo general en respuesta a las acciones del usuario.

Lo anterior significa que el navegador tiene que actualizar solamente la porción de la página que ha cambiado; No hay ninguna necesidad de recargar la página entera. El enfoque SPA reduce el tiempo de la aplicación para responder a las acciones del usuario, resultando en una experiencia más fluida.

Para algunos sonará como que esto ya lo viví con el todo poderoso Flash / Flex y su concepto RIA’s (Rich Internet Application) y tienen razón, pero estamos en la era HTML5. Sin embargo el concepto RIA’s dejaba algo muy claro y es que no todo proyecto web debe ser necesariamente una experiencia rica y enriquecedora, esto habrá que analizarlo sobre nuestros proyectos y determinar si aplica el concepto.

La arquitectura necesaria para desplegar un SPA implica ciertos desafíos que no están presentes en las aplicaciones web tradicionales. Sin embargo, las nuevas tecnologías como ASP.NET Web API, Nodejs, RoR, frameworks JavaScript como AngularJS, Knockout, DurandalJS, JSON, el nuevo estilo de características proporcionadas por CSS3 y un largo etc., hacen realmente fácil de diseñar y construir SPAs.

Esperemos que en próximos artículos podamos presentar tutoriales y ejemplos claros y efectivos para la creación de SPAs. El actual proyecto “Tienda de Pedidos” me dejará mucha experiencia que de seguro pienso compartir por este medio.

AngularJS vs Knockout

Ando metido en muchas cosas, me refiero a muchos proyectos y por ende utilizando varias tecnologías de programación.

Uno de estos proyectos “Tienda para Pedidos” nos genera varias dudas realizando pruebas preliminares hasta determinar la tecnología correcta a usar.

Después de varios análisis se determina orientar a SPA “Simple Page Application”. Surgen dudas en cuanto a que es lo mas conveniente utilizar para el FrontEnd, AngularJS con todo su potencial o una librería fácil de uso que nos permita manipular datos como es KnockoutJS.

He querido documentarme mejor e inicie mi travesía buscando respuestas sobre beneficios, pros y contras al igual que comparativas y la opinión de la comunidad. Una de las mejores respuesta que encontré fue en el sitio de Andrew Connell el articulo Why I Prefer AngularJS vs. KnockoutJS.

En principio AngularJS vs Knockout son diferentes pero muy potentes en si de acuerdo para que lo utilicemos.

En palabras de Andrew, “se esta tratando de comparar un destornillador (Knockout) con una caja de herramientas (AngularJS)”. Y es que si necesitamos apretar un tornillo tan solo necesitaremos el destornillador y no todo la caja de herramientas, pero si lo que necesitamos es armar un escritorio y todo un espacio de trabajo lo mejor es venirnos con toda nuestra caja de herramientas.

Knockout es un framework para enlace de datos ahora mejor organizado para MVC (MVVC), es una excelente opción cuando queremos vincular datos entre el BackEnd y el FrontEnd de forma asíncrona pero sin la complejidad de otros Frameworks, es el camino entre tu Modelo de Datos y la Vista y actualizarla cuando las cosas cambian.

AngularJS es toda una suite de utilidades y soluciones tanto para la vinculación de datos con el enrutamiento a controladores y modelos, patrón MVC, ofrece un patrón de Modulo de Carga Asíncrona (AMD), servicios para trabajar con Web Services, servicios REST, también tiene sus propios módulos para inyección de dependencia que permite construir aplicaciones escalables para la empresa, entre muchas otras opciones. AngularJs es el framework ideal para la construcción de un SPA (ojo, no hablo de un sitio de relajación).

Volviendo a la idea de Tornillo-Caja de Herramientas, si lo que necesitamos es enlazar datos de forma asíncrona (cuando las cosas cambian) sin otro más a presente y futuro consideramos que lo ideal es Knockout. Aclarar que Knockout se complementa muy bien con otros frameworks como por ejemplo a DurandalJS, CrossroadsJS, RequireJS, jQuery.

Si la conclusión final es un SPA o una aplicación web con proyección a escalonamiento y donde no se quiere agregar demasiados Frameworks por cuestiones de documentación la respuesta esta muy cerca a AngularJS.

Una discusión muy común que se puede encontrar en los comentarios de varios artículos sobre este asunto es que la decisión final siempre dependerá de los conocimientos que tengas del manejo de estos frameworks y aunque esto puede ser cierto, siempre viene bien la ayuda y guía de quien ya ha tenido experiencia con estos interrogantes y muchos más cuando no conocemos los framework en cuestión.

Para ayudar un poco más y no coartar el conocimiento, aquí unos vínculos que podrían aclarar más las dudas y acercar la decisión:

Como hacer un backup de varias base de datos MySQL

Estoy a punto de formatear mi equipo y tengo mas de 50 bases de datos MySQL a las cuales les debo hacer copia. Pensar en hacerle copia una a una me da un “guayabo” enorme.

Buscando, buscando me encontre con una linea de comandos que me permite crear una backup de todas las bases de datos MySQL y dejarlas separadas una a una, le hice algunos ajustes, utilice GitBash en windows.


for DB in `mysql -Bse "show databases" -u user -ppass; do mysqldump -u user -ppass $DB > backup/$DB.sql; done

Sencillo y me funciono de maravilla.

vQmod

vQmod

He querido hablar hace mucho sobre este sistema de modificación de código, porque en verdad es un gran concepto y donde veo la mejor solución a muchos inconvenientes de cambio de código al Core de un programa web. Y el punto es ese, como poder realizar cambios al código fuente original de un programa, muchas veces necesarios y que no suplen plugins, módulos, extensiones, etc.

Con vQmod es posible modificar, agregar, quitar lineas de programación sin tocar una sola linea del Core de un CMS (programa). Si no modifico el Core de un programa podre fácilmente realizar la actualización del mismo sin pensar en que dañara mi iluminada adaptación.

Sigue leyendo vQmod

e-commerce Opencart

Opencart

Opencart es una robusta plataforma de comercio electrónico de código abierto (opensource) y a la vez muy sencilla. Su infraestructura abierta le permite ser adaptada a la medida de requerimientos específicos. Una solución poderosa y versátil con la capacidad para crear su propio negocio en línea y obtener una tienda virtual con costes mínimos.

INFORMACIÓN TÉCNICA

Arquitectura PHP-MySQL, modelo de datos MVC (Modelo-Vista-Controlador). No tiene especificación única para creación de plantillas de modo que es versátil para diseñar el deseado (HTLM5-CSS3 con responsive).

Se puede instalar en un entorno LAMP (Linux, Apache, MySQL y PHP) o también en Windows con PHP y MySQL.

Requerimientos de instalación mínimos, instalación guiada muy rápida, menos de 5 minutos.

Sigue leyendo e-commerce Opencart

Compartir contenido de StumbleUpon en WordPress

StumbleUpon es una red social que te permite compartir tus bookmarks y contenidos.

Conocidos como marcadores sociales, StumbleUpon va mas allá por que permite marcar no solo páginas Web sino contenido especifico dentro de ellas. Así por ejemplo es muy fácil marcar un video, una imagen, una animación, un texto particular, etc., para ser compartido.

StumbleUpon provee herramientas para vincular en nuestras páginas web que permiten hacer más fácil referenciar los contenidos navegados por los usuarios.

Sigue leyendo Compartir contenido de StumbleUpon en WordPress

Los museos del mundo en tu casa

No tengo mucho tiempo de informarme de las ultimas herramientas que van surgiendo en internet.

Hace poco me entero de Google Art Project una aplicación que permite navegar a través de los distintos museos del mundo, maneja un entorno de desplazamiento virtual en 3D (clic botón derecho sobre la exploración virtual y pasar el modo 3D a On, requiere Gafas 3D) y por el que podemos desplazarnos a través de los pasillos y galeria de los museos.

Utiliza la tecnología de Google Maps y Google Street View, Los detalles de lo que se puede hacer en este sitio lo encuentras en el siguiente vídeo.

Esta es una herramienta social de la que Google desea que seamos nosotros los generadores del contenido. Por ejemplo podremos ingresar datos, fotos, imágenes, videos, etc., sobre el museo de nuestra localidad o de nuestra pequeña galeria y estar más cerca al mundo, o podemos crear nuestras colecciones de arte y visitas por los museos para compartir con el mundo.

Ya estoy imaginando algunas aplicaciones para mobiles, me pondré a la tarea.

Descomprimir archivo zip desde Web

En muchos ocasiones requerimos subir nuestros archivos vía FTP con las consecuentes demoras cuando se trata de muchos archivo y carpetas. En algunos casos nuestro hosting no nos permiten el acceso a la consola, o no tenemos un panel de control (poco probable), o simplemente por algún motivo no pudimos acceder a nuestro Panel de control.

En mi caso tenia que subir una aplicación web de mi autoria (en .asp), en servidor Windows y tan solo tenia el acceso FTP. Podria haberme demorado un sin fn de tiempo y mi cliente tenia presura.

Sigue leyendo Descomprimir archivo zip desde Web