JavaScript+SQLite + … Chat ( Jabber / XMPP ) ?

En Librebits  venimos trabajando tradicionalmente con el stack de tecnologías LAMP. (GNU) Linux + Apache + MySQL + PHP. Python y Perl suelen ser usados también en ese mismo contexto . Es el mismo que me permite a mí publicar este Blogpost en WordPress, de tal forma que tras ser almacenado en la base de datos SQL (MariaDB) y a tí hacer lo que estás haciendo en estos momentos. Leerlo.

En esta ocasión nos hemos propuesto experimentar con una aplicación que corre sobre un stack que tiene otra composición. JAMStack .

La aplicación elegida es Ghost, que utiliza JavaScript (NodeJS), SQLite como base de datos. Decir que éste se un proyecto que tomó cuerpo tras la inyección de dinero proveniente de una campaña en la plataforma de microfinanciación colectiva («crowdfunding») online norteamericana Kickstarter.

 

Ghost install

 

Tradicionalmente venimos usando para almacenar las tablas (usuarios, contenidos,etc…) de la aplicación web una base de datos MySQL, como piedra angular del stack. Decir que ahora usamos MariaDB. En nuestro sistema operativo, al menos, es así desde Debian (GNU + Linux ) 8  `Jessie`  (a raíz del ‘fork’ fruto de la adquisición de MySQL por la megacorporación de las bases de datos, Oracle) .

Recientemente hemos empezado a usar SQLite,  más liviana, para el almacenamiento. Ésta, al contrario que MySQL/MariaDB, no exije instalar un servidor propio para la base datos, reduciéndose así la complejidad de la aplicación en su conjunto. SQLite está diseñada para entornos de desarrollo y/o aplicaciones que vayan a soportar un moderado tráfico web, sin perjuicio de las prestaciones de una base de datos SQL.

Hemos podido comprobar lo útil que resulta la capacidad de aplicaciones JavaScript para ‘refrescarse’ en tu navegador. La actualización instantánea de la `vista` en cuanto realizas algun cambio desde el panel (backend) de administración, en el modo de desarrollo proporciona una atractiva sensación de dinamismo y fluidez en la experiencia del/la usuario/a (desarrollador/a , en este caso) que queremos destacar en relación a la ofrecida en el stack LAMP (WordPress, Laravel PHP, Drupal CMS …). Esa misma agradable sensación de fluidez, más importante aún,  se percibe al adoptar el rol de editor/a escribiendo contenido. No olvidemos, eso es lo que alimenta y dará vida realmente al sitio Web. La siguiente imagen vale más que mil palabras.

Por otro lado, venimos trabajando, usando y disfrutando del popular sistema de mensajería instánea (Chat) Jabber / XMPP . Tanto, que hasta nos animamos a poner en marcha nuestro propio servidor Chat que nos comunique con amigxs, familiares y clientes. Así pues… ¿ Y si añadimos al stack (el cliente chat) ConverseJs en una pequeña ventana emergente y nos comunicamos via chat desde nuestro sitio Web ?

Ghost , backend de admin.

Para ello hemos hecho uso, en esta primera toma de contacto, la opción para inyectar código directamente desde el backend de administrador/a de la aplicación Web.

<Code injection> , nos sugiere el menu  backend de administración. Así pues, respondiendo a la invitación, hemos inyectado el siguiente código :

ghost-code-injection

Y… voilà ! La automagia de lenguaje JavaScript hace que con esas pocas líneas de código se inyecten en la aplicación la cientos de líneas de código fuente de otra aplicación desde otro servidor. Con este resultado :

 

Ghost y requiere tener instalado previamente en tu sistema el entorno de ejecución JavaScript multiplataforma NodeJS . Es software libre y de código fuente abierto  en general y está disponible para su uso, estudio, mejora y re-distribución bajo licencia MIT en particular .

Al contar esto mismo que hemos compartido acá… esta fue la reacción de Xrasl Belmont .

Chat XMPP para comentar ?!

 

¿ ?

 

 

04/04/2019

Posted In: softwareLibre

Etiquetas: , , , ,

Leave a Comment

Babel y el lenguaje que ensambla la Web (JavaScript)

Dice Brendan Eich, quien lo creó a finales del siglo pasado en el plazo de una semana para Netscape Navigator, que JavaScript es el ¿ … «lenguaje que ensambla la Web » ?. Será el lenguaje que ensambla la Web, sí,… dada su exponencial popularidad y la creciente ubicuidad del mismo. Si bien… desde mi ignorancia, me encantaría poder decirle a Eich, ¿ no estaremos convirtiendo JavaScript en un galimatías ? ¿ en una nueva Torre de Babel ?

Me siento por momentos confuso y desorientado. Siento además que por mucha experiencia (de la que carezco… a día de hoy!) de la que pueda disfrutar en un lenguaje de programación como JavaScript no mejoraría mi nivel de confusión y desorientación.

Tal cantidad de frameworks… Tal cantidad de cambios en el lenguaje… Tal cantidad de contextos a considerar…

JavaScript ‘cambia más que el tiempo’.

Existen muchas liberías de código fuente y frameworks para facilitar las tareas de desarrollo Web en general, y JavaScript en particular. También hay mucha controversia entorno al hecho de que si tal cantidad de librerías y frameworks es excesiva, quién debería usar una librería o framework, quién debería escribir una librería o framework, y por supuesto … el obligatorio «la librería (o framework) que estoy usando es superior a la tuya ! »

Tan sólo pretendo compartir como me siento y lo que pienso al respecto. Naturalmente, que cada cual use (o no) las librerías y frameworks que le plazcan.

A vueltas con las librerías y frameworks JavaScript.

Veamos, antes de plantear la crítica constructiva a su uso… ¿ Para que nos sirve una librería (software) ? Las librerías (software) facilitan la reutilización del código. Así evitamos «reinventar la rueda», como se suele decir . Más allá… ¿ Qué es un framework ? . Esencialmente podemos entenderlo como una biblioteca de librerías para acceder a bases de datos, gestionar sesiones de usuario, estructuras para plantillas… y que, de nuevo, con frecuencia facilitan la reutilización del código fuente.

En vez de escribir el código fuente desde cero, el usar frameworks y librerías de un lenguaje de programación en tus desarrollos aporta sus ventajas.  Pongamos VueJS, y su sobria filosofía de desarrollo por componentes, con el que ando jugando un poco últimamente. Entre los ‘pros’ se encuentra el hecho de que un framework como VueJS te permite, como se suele decir ‘aumentar la productividad’. La facilidad con que puedes alcanzar y empezar a visualizar unos primeros resultados siguiendo sus tutoriales. Si bien parece que somos más ágiles con ellos al principio… en mi experiencia, ello tiene varios ‘contras’.  La ofuscación, entre ello.  Pues estamos añadiendo cada vez más y más capas de abstracción a lo que tenemos entre manos. ¿ En el uso de lo que podríamos llamamos ‘cajas negras’?

Sí, los frameworks y librerías…, en mi opinión, nos sirven para construir más rápidamente y tener la sensación de progreso. Sensación de agilidad. Si bien, ¿ a que precio ?. ¿ No estaremos perdiendo algo al adentrarnos en ese camino … ? ¿ No será que su conveniencia ‘productiva’ reduce nuestra capacidad de aprender los conceptos básicos del lenguaje de programación que subyace al framework o librería ?

A veces me pregunto… ¿ alguien estará consiguiendo ‘hacer el trabajo’ con todo lo que mes a mes cambian las herramientas que usamos para ello ?.

Intuyo que no soy el/la únic@ que se formula dicha pregunta. Hoy en día, es difícil encontrar a alguien trabajando con software libre y de código abierto que no se sienta confuso y desorientado en relación al rumbo que ha tomado la evolución de la Web en general y de JavaScript en particular.

No me malinterpretéis… el cambio es positivo. Es lo único que permanece, de hecho. Como la vida misma. Flujo constante. ¿No estaremos confundiendo ‘cambio’ con ‘moda’ ?

 

Que no cunda el pánico. ¿ Vuelta a las raíces ?

Creo que el quid de la cuestión al usar cualquier lenguaje de programación, por muy compleja que sea la aplicación a desarrollar, es volver a las raíces. A sus conceptos fundamentales. En vez de empezar «la casa por el tejado… «, consciente de que ello ralentiza el proceso si bien, ¿ será una estrategia que se demostrará más resistente al paso de las modas de tal o cual librería o framework en particular (re)aprendiendo a partir de unos sólidos conceptos básicos ?.


PD: Comparto acá algunos recursos relacionados :

13/03/2019

Posted In: softwareLibre

Etiquetas:

Leave a Comment