Mostrando entradas con la etiqueta javascript. Mostrar todas las entradas
Mostrando entradas con la etiqueta javascript. Mostrar todas las entradas

miércoles, enero 24, 2024

JORNADAS_ABIERTAS: \\ Tu futuro es la programación #HackYourCareer

Hoy quería invitaros a la iniciativa de nuestros compañeros de GeeksHubs Academy, donde vas a poder disfrutar de 4 clases gratuitas para comenzar a programar. Es decir, 4 sesiones para que te pruebes en algo que seguro que has pensado muchas veces: Aprender a Programar y cambiar tu futuro profesional

Pues ahora lo puedes probar gratuito en estas 4 sesiones con el gran David Ochando, que es uno de los grandes formadores de GeeksHubs Academy, y que te va ayudar a comenzar pasito a pasito en este mundo de la programación. De ser Developer.

Figura 2: David Ochando, Senior Full Stack Developer y Docente en

Las sesiones comienzan el día 25, y tienes un calendario con una sesión cada semana, para que el mes que tienes por delante puedas ver si estás hecho o no para ser programador, que ya verás que todo el mundo puede programar. Aquí vas a ver cómo sí que puedes.
Para poder asistir solo debes apuntarte en el siguiente formulario, así que date prisa, resérvate el hueco en la agenda estos cuatro días a partir de las 18:30 de la tarde y date el gustazo de comenzar a programar.
Y si tienes alguna duda aún para decidirte, respóndete a estas preguntas que seguro que en tu cabeza tienen una respuesta clara.
Yo te recomiendo, si quieres probar a ver si vales, no vas a tener una mejor manera de hacerlo en mucho tiempo, porque son 4 sesiones con una gran docente que te va a ayudar a dar los primeros pasitos, y verás como te sientes sabiendo que puedes "codear" y "crear" cosas con tus manitas.

¡Saludos Malignos!

Autor: Chema Alonso (Contactar con Chema Alonso)  


viernes, noviembre 24, 2023

Si te lo estás pensando, es el momento de dar el salto: Hazte developer #HackYourCareer

Elegir tu futuro profesional es una de las decisiones más importantes a las que a todos nos toca enfrentarnos. Hay gente que tiene muy claro desde muy pronto a qué quiere dedicarse en la vida y para ellos no hay elección: el camino ya está marcado. Pero para todos los demás, simples mortales, que no sentimos esa "llamada", o incluso aquéllos que ya tomaron su decisión hace tiempo pero sienten cierta inquietud de fondo, una vaga sensación de no terminar de estar en su sitio y querer cambiar de rumbo, vengo a poner sobre la mesa la opción de convertirse en desarrollador de software.


"¿Por qué desarrollador de software y no cualquier otra cosa?"

Pues hay tantos motivos como personas, pero voy a intentar reflexionar acerca de algunos de los puntos clave que desmarcan este campo del resto, y de forma muy positiva y significativa (ni siquiera vamos a mencionar más que sutilmente y de pasada en esta línea que vivimos en un mundo cada vez más digitalizado, y por tanto con más oportunidades, de calidad y bien remuneradas).

Lo primero y más destacable del mundo del software, es que aquí el trabajo que hayas realizado queda objetivamente registrado a través del uso de tecnologías de control de versiones como Git o Mercurial. Cada modificación que "guardes" quedará publicada y accesible con todo el contenido que hayas creado, así como la referencia al autor de los cambios, y la fecha afinada a la hora, minuto y segundo en que ocurrió. Tuya es la responsabilidad, y tuyo es el mérito.

Figura 2: Hay tantos motivos como personas para ser developer

Lo segundo e igualmente relevante, es que es posiblemente el único campo en el que no importa quién eres ni qué títulos académicos traes. Hoy en día el valor de una certificación oficial es cuestionable, ya que no avala más que el haber tenido acceso a una información que cualquiera tiene al alcance de la mano con Google. No refleja cosas mucho más importantes como la aptitud o, más aún, la actitud.

Tercero, la comunidad. En sus orígenes el Software Development estaba reservado a unos pocos genios con amplios conocimientos matemáticos y de ingeniería, pero generación tras generación y con gran esfuerzo colectivo se ha hecho infinitamente más accesible, de forma que cualquiera que quiera y esté dispuesto puede introducirse en este mundo. Y esa filosofía de cooperación, de compartir dudas y código, sigue viva hoy día.

Por último, y quizá esto sea lo más valioso en el día a día: todo el código que escribas, todo lo que produzcas, podrás verlo en funcionamiento en tiempo real. El viejo “¿Y esto para qué sirve?” aquí no tiene cabida. Cada programa que diseñes, o cada pequeño componente que implementes, lo tendrás funcionando frente a ti. Artesanía digital.

“Genial… Pero el mundo del software es amplísimo. ¿Por dónde empiezo?”

¿Mi recomendación? Full Stack Developer. En síntesis, se trata de la figura del desarrollador de aplicaciones web que conoce y maneja todas las tecnologías involucradas en todos sus aspectos. La contrapartida serían el Frontend Developer, que se encargaría sólo de la parte visual del lado del cliente (no sólo del diseño, sino de que las piezas funcionen), y el Backend Developer, especializado en gestionar el lado del servidor y las bases de datos.

Iniciarte en este mundo como Full Stack Developer te permitirá entrar en uno de los campos más activos, pero también uno de los que más gratificantes resultan. ¡Entras sabiendo crear aplicaciones completas por tu cuenta! Además, cuentas con una buena perspectiva global con la que ir afinando hacia el sector que más te guste. Y aunque al principio pueda resultar un poco intimidante, los lenguajes empleados en desarrollo web, como JavaScript o PHP tienen una sintaxis y vocabulario muy humanos y un buen código casi puede leerse en inglés.

Visto el “dónde”, ya sólo nos quedaría hablar del “cómo”. Cómo dar el salto y despegar en el mundo del desarrollo Full Stack. Y para mí la respuesta a día de hoy es clara: es un mundo que da pie a ser autodidacta y no faltan cantidad de recursos de apoyo y tutoriales online, pero cuando tomes la decisión en firme nada superará realizar un Bootcamp Full Stack Developer

Figura 4: Todos los alumnos tendrán el libro de Spring Boot & Angular 1: Desarrollo de WebApps Seguras de 0xWord y 500 Tempos de MyPublicInbox.

Son cursos intensivos a tiempo completo, con un coste cercano al de una carrera universitaria, pero en lugar de dedicarle 5 años su duración suele estar entre los tres y seis meses. Simulan un entorno de trabajo real, con plazos y entregas, impartidos y asesorados por desarrolladores y expertos IT, por lo que siempre se mantienen actualizados con el mercado. Debido a lo cortas que son las formaciones, es una experiencia dura a la que hay que ir a comerse el mundo. Esa actitud de estar dispuesto a hacer frente a lo que sea, sacrificando tardes y noches te permitirá salir con las competencias necesarias (y proyectos realizados que las avalan) para entrar por todo lo alto, con los deberes hechos, al mundo del desarrollo de software.


Es a través de ese esfuerzo, y esa determinación, que seas quien seas y vengas de donde vengas, podrás acceder a ese mundo que te espera allí. Del 20 al 27 de noviembre GeeksHubs Academy está de Black Friday y puedes conseguir hasta 1.300€ de descuento para formarte como Full Stack Developer. 

¡Aprovecha esta oportunidad y da el paso!

Autor: Demian Ortizlanzas, Docente Full Stack Developer en GeeksHubs Academy.

jueves, abril 20, 2023

#HackYourCareer convirtiéndote en Frontend Developer y comenzando a trabajar ya con @GeeksHubsAcademy

La iniciativa de #HackYourCareer que comenzamos con Chema Alonso tiene el único objetivo de que los alumnos acaben trabajando de lo que quieren trabajar, sin ser una barrera los conocimientos que tengan al inicio de su periodo formativo. Para eso, las formaciones más intensas son nuestros "Bootcamps" o campos de aceleración formativa que hacemos de manera muy intensa con los alumnos, que pasan a vivir durante la inmersión solo pensando en el objetivo. Alcanzar los objetivos del BootCamp para entrar a trabajar en esa disciplina profesional en el menor plazo posible.
Como dice Chema Alonso, "hay cosas que se aprenden aprendiendo y cosas que se aprenden haciendo", y en nuestros bootcamps de la iniciativa #HackYourCareer implantamos de forma intensa las herramientas necesarias para que puedan aprender haciendo lo antes posible, y en un entorno deseable, acaben trabajando en equipos tecnológicos como los de Chema Alonso, que tiene abiertas un buen número de vacantes.

Como queremos llegar al máximo posible de personas, hemos decidido hacer un nuevo formato de BootCamp Online, donde vamos a tener el mismo nivel de inmersión, pero haciendo las sesiones Online y Full-Time, similares a los entornos de trabajo remoto o híbrido que tienen, por ejemplo, unidades como la CDO de Chema Alonso, y cada vez más empresas, donde los equipos cuentan con personas distribuidas geográfica.


Para ello, comenzamos con un NUEVO Bootcamp Online Frontend Developer, en modalidad 100% Online y Full- Time con el objetivo de encontrar un nuevo empleo en este sector profesional, que dará  comienzo el próximo 15 de mayo y durará 10 semanas. Eso sí, para que funcione esta modalidad, tiene que mantener el espíritu de un BootCamp, así que son grupos reducidos con plazas limitadas para que los docentes puedan estar encima de los participantes en todo momento. 

Además, con el objetivo de entender mejor cómo funciona este mundo profesional, todos los asistentes tendrán una sesión de Q&A con nuestro compañero Chema Alonso, que vendrá a resolver dudas de cómo funcionan los equipos de alto rendimiento de creación de tecnología para que puedas conocer de primera mano en qué consiste este trabajo.

Figura 5: Visita y charla de Chema Alonso al BootCamp de Frontend Developer

Y podrás completar tu formación preguntando a profesionales con Tempos de MyPublicInbox que te vamos a entregar, y seguir formándote con un libro de la editorial de 0xWord, y con una matrícula gratuita de Curso Online de Programación de GeeksHubs Academy para que sigas formándote de manera continua.
El trabajo de nuestro equipo docente consiste en ayudarte a interiorizar los hábitos de trabajo y formación continúa de los profesionales tech que dedican su actividad profesional a la creación de tecnología, y para ello deberás tener siempre activo el bit de aprender. Y para resolver las dudas que puedas tener, te dejo respondidas estas cuestiones que pueden pasar por tu cabeza.

Desde Cero

- ¿Cómo funciona?

Este Bootcamp es especial, ya que adapta la modalidad full-time presencial de nuestra coding school y la traslada al formato ONLINE. Es decir, requiere de una dedicación completa y el alumnado recibe el mismo acompañamiento exhaustivo por el equipo docente, desde casa. El horario del Bootcamp es intensivo, durante 10 semanas, de 9h a 18:30h (de lunes a jueves) y de 9 a 14h (los viernes).

Figura 7: David Ochando, José Marín y Daniel Tarazona son parte del equipo docente

- ¿Para quién es el Bootcamp Online Frontend Developer?

Está pensado para formar desarrolladores web que aprendan HTML5, CSS3, Bootstrap, JavaScript, Typescript, React, Redux, etc, para que sean capaces de desarrollar una aplicación web en la parte Frontend, trasladando el diseño a lenguajes de programación, teniendo en cuenta la experiencia de usuario (UX/UI) y asegurando la funcionalidad, eficiencia y seguridad con conocimientos sobre Calidad del Software y Testing. Para acceder al Bootcamp no se necesitan conocimientos previos, pues los primeros bloques están dedicados a la introducción al desarrollo de software y las herramientas que debe conocer el alumno/a (VSCode, Git, GitHub…).

- ¿Por qué destaca la modalidad presencial de GeeksHubs Academy y qué tiene que ver con este nuevo Bootcamp Online?

Porque la metodología de aprendizaje pone al alumno/a en el centro. A través de proyectos todas las semanas se recrea un entorno de empresa tecnológica real, dónde la actitud y autonomía son indispensables. Tenemos más de 6 años de experiencia impartiendo Bootcamps presenciales, en los cuáles el 94% ha encontrado un nuevo empleo. En este nuevo Bootcamp Online la didáctica y metodología se mantiene para que el alumnado reciba el mismo nivel de acompañamiento que si estuviese en un aula presencial de GeeksHubs Academy.

- Una vez finalizado el Bootcamp… ¿Cómo ayudamos en la búsqueda de empleo?

Disponemos de un amplio abanico de empresas con las que trabajamos y que demandan talento, por lo que al finalizar, incluimos al alumnado en nuestra bolsa de empleo específica para que empiecen su carrera profesional como developer. Durante la formación nuestro equipo especializado asesora a nuestro alumnado, preparando los procesos de selección y mejorando sus soft skills.

- ¿Por qué elegir GeeksHubs Academy?

En GeeksHubs Academy sabemos que la pasión, el hambre y las ganas van por delante de cualquier cosa, y eso es lo que diferencia a un buen profesional. También sabemos lo que necesitan las empresas y estamos convencidos de que el valor diferencial está en la actitud.

La experiencia de formación de nuestra coding school va más allá de las competencias técnicas, buscamos impulsar tu carrera y acompañarte durante el camino para que crezcas como profesional y consigas todo lo que te propongas.

Contamos con un equipo de docentes tan entusiastas como exigentes con el objetivo de hacerte brillar y sacar todo tu potencial, así como un equipo de atención al alumnado dedicado exclusivamente al bienestar de cada estudiante.

Nuestra trayectoria de más de 10 años, los más de 1.000 alumnos y alumnas al año que pasan por nuestra coding school y la confianza de numerosas empresas que amplían sus equipos IT con el talento que se forma en GeeksHubs Academy evidencian nuestro éxito como escuela de programación que está cambiando el paradigma de la educación tech.

Hack Your Career!

Autor: Chaume Sánchez, CEO de GeeksHubs


miércoles, enero 25, 2023

Entrevista Carlos Azaustre: Microsoft MVP en Developer Technologies

Hacker & Developer. Una vida unidos, una vida separados. Y es que cuando te dedicas a buscar vulnerabilidades en el software, te dedicas a buscar posibles fallos en la construcción de un software. Una condición no controlada. Una situación que no existía en la mente del programador, una característica oculta en la tecnología utilizada por del developer para localizar un fallo.

Figura 1: Entrevista Carlos Azaustre - Microsoft MVP en Developer Technologies

Si embargo, entre hacker & developer hay una relación de amor/odio. Creo que existe una mezcla de admiración y respeto por lo que cada uno es capaz de hacer, aunque sea malo y doloroso para el otro. Da mucho coraje cuando developer bloquea a hacker con una protección. Y supongo que a developer le duele que hacker encuentre la vulnerabilidad. 
Pero, yo fui developer antes que dedicarme a buscar fallos en la tecnología, y por eso siempre amaré a los que tiran líneas de código como forma de vida para hacer que algo resuelva un problema. Hoy he entrevistado a Carlos Azaustre, uno de esos developers. Uno de los que tiran líneas para solucionar problemas. Y que además se dedica a enseñar y a ayudar a otros developers a aprender. 
Ha publicado un par de libros para aprender JavaScript y Angujar.JS, y ayuda a los que quieren aprender a programar desde su canal en Youtube y en Twitch, y por todo su trabajo ha sido reconocido como Microsoft MVP en Developer Technologies. Vamos, un divulgador nato.
Como aprender a programar es algo que, seas hacker o developer, debes saber en alguna u otra medida, le he hecho una entrevista para que nos dé su punto de vista sobre el estado del aprendizaje de la programación hoy en día, sobre cómo ve él la incursión de ChatGPT o CoPilot, y conocer un poco más a uno de los desarrolladores premiados por Microsoft. Espero que os gusten las preguntas.

1) Carlos, ¿a qué edad y con qué lenguaje te pusiste a crear tus primeros programas?

Pues descubrí la informática con unos 12-13 años. No tenía ordenador en casa y mi primer contacto con un PC fue en clases extraescolares en el colegio. Ahí todavía no sabía que se podía programar. En mi familia y círculo más cercano no había nadie que se dedicara a la informática como tal y mucho menos a programar.

Fue en bachillerato, con 16-17 años que tuve una asignatura optativa dónde la profesora nos enseñó a programar en C (TurboC de hecho) y a partir de ahi fue cuando descubrí que quería aprender todo sobre ello. Me compré algún libro de TurboC y descargué tutoriales para ampliar lo que aprendíamos en clase. Mi primer programa, por así decirlo, fue hacer un Trivial en C.

2) ¿No te dio nunca por crackmes o hackmes?

La verdad es que no. Me ha parecido siempre un tema muy interesante pero nunca me ha atraído mucho más que crear algo de cero. Considero que la ciberseguridad es un tema muy importante y esencial en cualquier software o aplicación y me gustaría saber más, pero hay tanto que saber en la vida que no se puede llegar a todo :)

3)¿Crees que con la llegada de NoCode/LowCodey AIs como ChatGPT/Copilot, programar va a ser una profesión de futuro?

Hay mucha gente alarmada con esto. Si entendemos la programación como únicamente picar código, está claro que no. Pero desde hace tiempo, la gran parte de las empresas y productos no son sólo líneas de código. Hay un proceso detrás de creatividad, ingeniería, optimizaciones… que la IA, por lo menos ahora y en un tiempo, no lo va a poder sustituir. A día de hoy y por unos cuantos años, las IA lo que nos van a ayudar es a reducir tiempos y optimizar nuestro día a día. Tareas repetitivas o tediosas la IA las puede hacer por nosotros en segundos o minutos y nosotros podríamos perder 1 día.

Lo que sí creo que es que la profesión de Programador, Desarrollador o Ingeniero de Software va a sufrir transformaciones. Pero esto es la tónica habitual de esta profesión. El trabajo se verá afectado, por supuesto, pero surgirán nuevos empleos más específicos que aún no somos capaces de ver. Lo que está claro es que un trabajo de programar 8h al día no tiene sentido desde hace ya un tiempo y estas nuevas tecnologías nos lo dejan más claro.

4) ¿Cuánto dedicas a aprender a programar y cuánto a saber programar sin cometer fallos de tipo SSRF, SQLi, Race Concitions, Reentrancy Attack, etc...? Por que no siempre son evidentes, ¿no?

Evidentemente. Programar se puede aprender más o menos rápido. Un poco de lógica, conocer que es una variable, bucles, funciones, etc… Lo difícil es hacerlo bien y esto se aprende con el tiempo, con la experiencia, y equivocándose muchas veces. 

Hasta que no rompes algo no te das cuenta de lo que tienes que aprender. En ese momento, es el indicado para empezar a leer y formarse sobre patrones, algoritmos, código limpio, arquitectura, etc… Todo tiene su proceso y este es un camino en el que bajo mi opinión, nunca llegamos a ser “Seniors”, somos “Junior” en un eterno aprendizaje.

5) ¿Cuál es el proyecto del que te sientes más orgulloso de haber hecho?

Sin duda al aplicación web que era producto de una Startup que co-fundé con mi pareja hace ya unos cuantos años. Se llamaba Chefly y nuestra idea es que fuera “el Airbnb de la comida casera”. Como toda Startup, algunas salen bien y otras no tanto. Nuestro caso fue de los segundos pero aprendimos muchas cosas y conocimos a mucha gente.

Desarrollar una aplicación completa, con su Frontend y Backend, usando nuevas tecnologías para la época y con poca experiencia en proyectos grandes y complejos fue toda una aventura. A veces miro hacia a atrás lo que hice y aunque tenía sus fallos me sigo sorprendiendo de que fuera capaz de desarrollar todo aquello.

6) Yo aprendí, BASIC, COBOL, Pascal, C, C++, Java y luego los lenguajes Web (y muchos menores), ¿cuáles son los que hay que aprender para el futuro según Carlos?

Salvo los tres primeros, yo también aprendí C, C++ y Java, sobre todo en la Universidad. Después en el “mundo real”, aunque empecé con Java, terminé decantando por el Frontend de las aplicaciones web y ahí JavaScript es el rey.

A día de hoy y de cara al futuro los más importantes son JavaScript por todo lo que puede abarcar (Frontend, Backend, IoT, Machine Learning, Tooling,...) y Python (Backend, Machine Learning, Data Science,...).


Despues tenemos otras alternativas dependiendo hacia donde nos queramos dirigir. Para sistemas y tooling tenemos a Rust pegando muy fuerte junto a Go. Y si nos orientamos hacia el sector blockchain ahi tenemos Solidity, Solana, etc…

7) ¿Qué es lo peor que has visto en un código publicado en un repo?

“He visto cosas que no creeríais”.

Por suerte no he tenido muchas malas experiencias, pero las que se tienen se graban a fuego en la memoria. Alguna vez he tenido que meter mano a una aplicación web cuyo código era un solo fichero JavaScript con miles de líneas en jQuery donde no había manera de arreglar nada. También me he encontrado con claves y secret token en repositorios públicos… Más o menos lo normal en esta profesión :D

8) ¿Qué no debería hacer alguien que comience a programar hoy en día para no ser un programador mediocre mañana?

No parar de formarse. Ya no solo porque la tecnología avance y surjan nuevos lenguajes o frameworks, sino porque aprender a hacer buen código, estable, buenas arquitecturas que permitan escalar y evolucionar no es algo que se aprenda en un minuto. Hay que leer mucho y sobre todo aplicar lo que se va aprendiendo, es la única manera de mejorar en tu trabajo y no hay un camino rápido. Es cuestión de tiempo y dedicación.

¡Saludos Malignos!

Autor: Chema Alonso (Contactar con Chema Alonso)  


sábado, noviembre 05, 2022

Cómo romper la arquitectura de cifrado de mensajes extremo a extremo de Rocket.Chat [1 de 2]

A día de hoy, una de las aplicaciones de Software Libre de mensajería instantánea (IM) disponibles en el mercado para su uso a nivel empresa o particular, por robustez, por funcionalidades y por ser una solución multi-dispositivo, podría ser el popular Rocket.chat. En este artículo vamos a ver cómo se rompe la arquitectura de seguridad y se puede acceder a los datos enviamos en los mensajes por culpa de un fallo de seguridad que hay que corregir. 

Figura 1: Cómo romper la arquitectura de cifrado de
mensajes extremo a extremo de Rocket.Chat [1 de 2]

Rocket.chat permite varias modalidades de uso de cara a una compañía, pudiendo montar un servidor centralizado OnPremise, tu propio servidor OnCloud, o simplemente mediante,  el uso del servidor público que proporciona la propia compañía Open.rocket.chat. La conexión al servidor puede realizarse desde múltiples dispositivos como se puede ver en la imagen anterior, tiene cliente Web, aplicación de escritorio para Windows/Linux/MacOS y app móvil para Android e iOS.

Figura 2: Arquitectura de conexiones multi-cliente para Rocket.chat

La funcionalidad a revisar en el artículo, será la del cifrado Extremo a Extremo o "End-2-End" (E2E). Dicha funcionalidad, implementa una capa de seguridad adicional al cifrado TLS a nivel de red utilizado de forma común mediante el protocolo HTTPS, en la mayoría de las comunicaciones actualmente. Como veremos al final, se podrá hacer un descifrado de los mensajes, y veremos cómo se puede mejorar la arquitectura de cifrado. Para entender mejor toda la arquitectura de cifrado, tienes el libro de Cifrado de las comunicaciones digitales: de la cifra clásica a RSA 2ª Edición de 0xWord

Figura 3: Libro de Cifrado de las comunicaciones digitales:
de la cifra clásica a RSA 2ª Edición de 0xWord

El cifrado E2E, por defecto, tiene la capacidad de hacer llegar un dato de forma segura desde un origen a un destino, de un modo descentralizado. En este caso, y dado que se encuentra en una arquitectura centralizada debido al diseño del producto, todos los mensajes enviados desde un origen pasarán y se almacenarán en el servidor central antes de llegar al destinatario, siendo la funcionalidad E2EE (End 2 End Encryption) la encargada de realizar este proceso de forma segura.

Arquitectura de Rocket.Chat

Para implementar esta función, Rocket.Chat cuenta con un diseño de arquitectura E2E del cual se ha realizado un pequeño estudio, para preparar este artículo. Esta arquitectura utiliza operaciones criptográficas de varios tipos, diferenciadas por su naturaleza matemática en simétrica, asimétrica y operaciones de hashing:
  • Criptografía Simétrica: algoritmo utilizado AES, origen y destino comparten una clave de cifrado.
  • Criptografía Asimétrica: algoritmo utilizado RSA, mediante el uso de un par de claves Publica y Privada, los datos serán cifrados con la clave pública y descifrados con la la clave privada.
  • Hashing: algoritmo utilizado PBKDf2, la función derivación matemática que generará un resultado irreversible del cual no se puede obtener los datos originales de entrada.
La dirección de la implementación actual del producto a nivel arquitectura de software, por diferentes motivos, como el diseño de las funcionalidades de negocio y mantenimiento de una sola linea de código  para los diferentes dispositivos, se implementa con el framework react-native.


Dicho framework trabaja con JavascriptCore que ademas de ejecutarse en los navegadores web, permite la posibilidad de integración de librerías implementadas en otros lenguajes de programación, como puedan ser Java para sistemas operativos Android u Objetive-C para sistemas operativos iOS:

Figura 5: Arquitectura de JavascriptCore con Java  y Objetive-C

Las conexiones que se implementan entre los diferentes clientes y el servidor central de Rocket.Chat podrán ser de dos tipos diferenciados por la dirección en la que se comunican:

Figura 6: Conexiones API REST y WebSocket

La  conexión vía API Rest es Cliente → Servidor y unidireccional, mientras que la conexión vía Websocket permite en modo full-duplex transferencias bi-direccionales Servidor → ClienteCliente → Servidor.

Descripción de la arquitectura E2E

La funcionalidad E2E, se arranca tras la autenticación inicial de un usuario (U) sobre sobre un dispositivo (D).

  • El dispositivo (D), solicitará al usuario (U) o generará unas credenciales específicas E2E (En función de si es la primera vez o no, que el usuario se autentica en el dispositivo con el servidor de Rocket.Chat).
  • Tras introducir las credenciales mediante la derivación de la contraseña junto al identificador unívoco del usuario (U) UID y el uso del algoritmo criptográfico de hashing PBKDF2, se generará la primera clave criptográfica de la aplicación master-key.
Figura 7: Generación de Master Key en dispositivo

A continuación, el dispositivo (D) como cliente del servidor de Rocket.Chat procederá con la generación o solicitud (en función de si es la primera vez en la que el usuario se autentica en el dispositivo) de un par de claves RSA de longitud 2048 que serán las claves criptográficas E2E del usuario:
  • Generación public_key, private_key: RSA-OAEP 2048
  • Utilizando la master-key, mediante criptografía simétrica utilizando el algoritmo AES-CBC el dispositivo (D), cifrará la private_key.
Figura 8: Generación de claves pública y privada para cifrado asimétrico

El dispositivo (D), mediante una llamada a la API Rest de tipo POST, sobre la API de Rocket.Chat realiza el envío del par de claves, public_key y private_key (ésta última cifrada, para garantizar la confidencialidad del usuario).
  • La función de la API Rest que proporciona este servicio, es e2e.setUserPublicAndPrivateKeys.
  • El servidor de Rocket.Chat en su BD no relacional (mongodb) almacenará estas claves asociadas al usuario (U), en la colección users.
Figura 9: Envío de claves pública y privada a servidor de Rocket.Chat

La aplicación para cifrar los datos punto a punto, requiere de una habitación o chat seguro por tanto ya sea dirigido desde el usuario (U), al usuario unívoco (U₁) o a los múltiples usuarios (U₁),(U₂)...(U_n), por lo tanto será necesario crear un grupo cifrado.
  • La operación de la API Rest del servidor de Rocket.Chat que proporciona este servicio será create.group, especificando los parámetros adecuados de grupo privado y encriptado.
  • El servidor de Rocket.Chat generará en la BD no relacional una entrada en la tabla rocketchat_subscriptions por cada usuario (U1..n), que pertenezca a la habitación segura alojada en la colección rocketchat_room.

Figura 10: Creación de un grupo de cifrado con clave simétrica

El creador del grupo seguro, será el encargado de generar la clave criptográfica de cifrado de mensajes Room-Key (el cual será cifrado simétrico), y almacenarlo únicamente de forma cifrada en la BD del servidor, en la colección rocketchat_subscriptions, mediante la operación de la API Rest e2e.UpdateGroupKey. Éste proceso se realizará N veces para cada uno de los usuarios que pertenecen al grupo:
  • Se cifrará la Room-Key: de forma asimétrica mediante el algoritmo RSA para cada usuario del chat seguro.
  • Se utilizará para el cifrado la public_key, disponible en la colección users del servidor, reportada mediante la invocación al servicio API Rest de Rocket.Chat e2e.requestSubscriptionsKeys.
Figura 11: Envío de claves Room-Key a los usuarios del grupo

Para la obtención de la clave de cifrado de mensajes E2E, en determinado grupo cualquier usuario que sea miembro de este, deberá realizar los siguientes pasos:
  • El usuario (U), ya autenticado en la aplicación y en la arquitectura E2E estando en posesión de su master-key.
  • Solicitará la clave de sesión E2EKey, almacenada para su usuario (U), en la colección rocketchat_subscription (cifrada asimétricamente con RSA).
  • Solicitara sus claves de cifrado al servidor, public_key y private_key (esta última, cifrada simétricamente con AES).
  • Descifrará con AES, la clave privada mediante el uso de la master-key.
  • Descifrará con RSA, utilizando la clave privada (private_key) descifrada y la clave E2E (E2EKey) obteniendo la room-key o session-key.
Visto todo esto, si eres amante de la seguridad informática, el hacking y te gusta la criptografía, supongo que ya has visto algunos puntos débiles de esta arquitectura que, si se pueden atacar, pueden romper la seguridad de la plataforma. En la segunda parte de este artículo lo vemos.

Saludo,

Autor: Ildefonso González Sánchez, pentester.

lunes, octubre 17, 2022

Google Blogger: Conectividad, Usabilidad y situaciones de DeadLock

Los que me conocéis ya sabéis que soy un nómada digital en toda regla. Trabajo desde cualquier sitio con total normalidad. No me importa mientras tenga una conexión a Internet que me conecte a la red, y pueda hacer todas mis tareas. Y una de las tareas que más hago es publicar mi artículo. Lo hago todos los días - o casi, casi, casi todos -. No importa dónde esté. No importa el país del mundo donde ande.

Figura 1: Google Blogger: Conectividad, Usabilidad y situaciones de DeadLock

Esto me ha llevado a encontrarme con innumerables situaciones con las herramientas que utilizo que ya le hubiera gustado a un QA poder probar, y por tanto, me encuentro con fallos que son muy difíciles de encontrar. Entre otros, aquellos en los que la conectividad es pieza clave del escenario de evaluación, como el que os voy a contar ahora mismo.

Blogger, y los cuadros de diálogo bloqueantes

Desde que en el año 2006 comencé a escribir "Un informático en el lado del mal", he utilizado siempre la plataforma de Blogger de Google. La he visto crecer, la he visto detenerse, y la veo hoy en día en modo "mantenimiento" donde no hay mucha inversión en ella desde la última actualización.

Una de las cosas que me mata de ella, es un Bug de Usabilidad y Pérdida de Trabajo que tienen los cuadros de diálogos bloqueantes del interfaz de edición de artículos. Estos cuadros de diálogo los utilizan para, por ejemplo, subir contenido multimedia - imágenes, vídeos, etc... - al artículo o para, simplemente, poner un hipervínculo.

Cuando está el cuadro de diálogo bloqueante, no puedes interactuar con ninguna parte del interfaz de usuario que no sea un componente de ese cuadro de diálogo. Así que, si quieres "Guardar cambios", o "Publicar" no puedes hacerlo, porque esos controles están fuera del cuadro de diálogo.

Supongo que esto tiene cierta lógica dentro de la cabeza del responsable de producto, ya que lo que desea es que esa función se acabe para pasar al siguiente punto del flujo de la lógica de ese caso de uso. No debería pasar nada con ese cuadro de diálogo, porque el usuario siempre puede hacer clic en la X, dar a la tecla ESC y cerrar el cuadro de diálogo, volviendo al flujo del caso de uso anterior.

Pero, por desgracia, durante el tiempo que está produciéndose la carga de los componentes de esos cuadro de diálogo bloqueante puede pasar cualquier cosa. Así que, si el componente del cuadro de diálogo carga en último lugar el componente del botón cerrar (la X), puede darse una condición de carrera muy desagradable y no habrá forma de llegar a los controles de "Guardar Cambios" o "Publicar", y te quedas, literalmente, colgado de la brocha. 

Figura 2: Cuadro bloqueante de "Añadir Imágenes"

En estos casos, algo que me ha pasado a mí en muchas situaciones de conectividad inestable, culpa de mi vida de nómada digital -, puede suceder que se inicialice el cuadro de diálogo bloqueante, haya un corte con la conectividad y la carga de sus componentes no se completa, se puede dar una desagradable situación como la que me sucede muchas veces en Blogger.

Figura 3: Configurar un enlace. Cuando lo escribes, se activa "APLICAR"

Otro que me destroza se produce con el cuadro de diálogo de configurar un enlace. En este caso, el botón "Aplicar" se produce después de que se ha lanza un evento que comprueba que has puesto un valor en el cuadro de texto donde debe ir el enlace, como se ve en la imagen anterior. Pero si se corta la conectividad y no carga completamente el código del botón "Aplicar", se da el caso como el que veis aquí, donde el botón Aplicar no se activa. Da igual que regrese la conectividad a tu equipo, si no carga en ese instante, estás en Interbloqueo (DeadLock).

Figura 4: Un deadlock por perdida de conectividad temporal poniendo un enlace.

En cualquiera de estas dos situaciones, por no contemplar las situaciones de pérdida de conectividad temporal en "el peor momento", se produce un bug de usuabilidad que lleva a la pérdida del trabajo del usuario.

Menos mal que me conozco bien las "Developer Tools" y cuando esto me pasa me voy al inspector de código y salvo los cambios no salvados haciendo un poco de trabajo manual con el HTML del cliente web de Blogger que tienes cargado, pero es un bug grande solo por no pensar que, tal vez, el primer componente que debes cargar de un cuadro de diálogo bloqueante es el de poder Cerrar.

Por supuesto, hay otras soluciones, pero este comportamiento que tiene Blogger no es bueno, ya que provoca perdida de datos por no poder salvar los cambios. Y no hay forma de salir, estás en un interbloqueo de libro. Avisados estáis.

¡Saludos Malignos!

Autor: Chema Alonso (Contactar con Chema Alonso)  


domingo, mayo 15, 2022

Aprende a crear aplicaciones Frontend escalables y de alto rendimiento con VUE #HackYourCareer

Diferentes razones impulsan a un Frontend Developer a utilizar una tecnología en particular para desarrollar la parte frontal de sus aplicaciones, teniendo en cuenta aspectos fundamentales como la accesibilidad o el rendimiento. Con el continuo aumento de los frontend JavaScript Frameworks, se ha vuelto imprescindible mantenerse al día y entender las nuevas características de estos stacks. Es el caso de Vue.js 3, que con sus última versión ha conseguido ser más robusto y seguir manteniendo las características que lo hacen uno de los grandes frameworks de JS y uno de los preferidos a la hora de trabajar el front.


El creador de VUE, Evan You, quiso crear un frontend framework que fuera igual de potente que Angular, pero también más ligero y flexible, con una sola capa de interfaz, para poder usarla como una función ligera en las páginas en lugar de una SPA completa.

*VueJS es una librería javascript pensada para tener un framework con el que desarrollar páginas web. Con Vue puedes crear todas las vistas de tu página web, puedes hacerlas dinámicas, puedes conectarla a un servidor para tener datos dinámicos de una base de datos, etc. Se trata de un framework completo con buena curva de aprendizaje y que se puede usar en todo tipo de webs.

¿Por qué usar VUE?

Una de sus grandes ventajas es que nos aporta facilidad y velocidad a la hora de comenzar proyectos con Vue CLI y la flexibilidad de poder combinarlo con otras tecnologías o solo aplicarlo en una parte del proyecto, poniéndolo así muy fácil para migrar proyectos de grandes magnitudes de manera más simple, barata y progresiva. Todo esto con un tamaño mucho más ligero que otros frameworks.

La reactividad también está integrada en VUE, esto significa que la funcionalidad en tiempo real que era popular en Angular, es una brisa con VUE. Actualmente, VUE cuenta con una gran comunidad en varios idiomas que, además de compartir contenido, tutoriales… nos facilita conocer más mediante "MeetUps" y eventos. Es común encontrarlos en las ciudades principales.

Aprender a programar con VUE

En el Bootcamp Online Frontend VUE de GeeksHubs Academy se descubre todo el potencial de uno de los frameworks frontend JS más demandado del mercado, a testear aplicaciones complejas y trucos para crear aplicaciones escalables. La metodología que utilizamos pone al alumnado como centro del aprendizaje y te permite formarte 100% online a tu ritmo recibiendo el apoyo de un tutor especialista que te orienta para que puedas seguir avanzando con la formación. 
El temario está dividido en píldoras formativas, cada una de ellas tiene una sección dedicada a herramientas e instalación y al final de cada píldora tendrás un reto que solucionar, te enfrentarás a casos reales con código como profesional IT.


También Katas de código en las que solo siguiendo los movimientos del docente comprenderás cómo se utilizan las tecnologías o lenguajes. Harás trabajo de investigación para adquirir autonomía y consolidar el aprendizaje. Durante las 4 primeras semanas tendrás Sesiones Live-coding Grupales en Directo. Este formato te permite, además de conectar con tus compis de formación y enriquecer tu red de contactos, preguntar todas tus dudas y seguir avanzando. Si no puedes conectarte no pasa nada, porque las sesiones se quedan grabadas.

Figura 4: David Ochando y yo (Ana del Pino) somos los profesores de este

Una vez terminada la formación, podrás solicitar la certificación realizando un proyecto final. También está la opción de obtener el Certificado como Full Stack Developer, para ello hay que cursar los 3 bootcamps (frontend, backend y agile software) y hacer un proyecto incremental de los tres. Además, todo nuestro alumnado puede disfrutar de ventajas exclusivas de MyPublicInbox, 200 Tempos gratuitos para hablar con Expertos en Tecnología o cualquier otra área de tu interés y 0xWord, con un cupón descuento para que lo puedan canjear en la editorial.

Saludos,

Autora: Ana del Pino  

jueves, enero 27, 2022

De profesión "Programador de Frontales React en Aplicaciones Web". El mundo quiere cada vez menos "Yo sé de todo un poco". #HackYourCareer

El mundo de la tecnología se ha profesionalizado mucho. Esa profesionalización, con la aparición de un volumen de tecnologías enorme, conlleva una especialización. Un entendimiento cada vez más amplio de tecnologías y ecosistemas paralelos, y un entendimiento cada vez más profundo de una disciplina concreta. Como ejemplo, cuando creamos Singularity Hackers, documentamos 50 roles y profesiones distintos, con diferentes niveles de espcialización diferentes, que van desde CSO, a QA Seguridad, pasando por pentester, ciberinvestigador en CERT, auditor en BlueTeam, ethical hacker en Red Team, forense y analista de malware en el CSIRT, etcétera. Especializarse para encontrar el punto concreto donde tus habilidades son más valoradas, y donde puedes ser mucho mejor profesional porque te va a gustar.

Figura 1: De profesión "Programador de Frontales React en Aplicaciones Web".
El mundo quiere cada vez menos "Yo sé de todo un poco".

Esto sucede en todas las ramas tecnológicas hoy en día, y cuando tengo alguna charla con alguien para orientarle en su carrera profesional - algo que me piden cada vez más, algo que siempre le digo es que haga algo que le guste. Que si hace algo que no le gusta, nunca va a dedicarle todo el tiempo que será necesario para dejar de ser "uno más del montón" en ese trabajo. Y es especialmente sensible con la programación y los profesionales DEVELOPERS. Ser un buen programador exige conocer profundamente un área de disciplina hoy en día, ya que en solo un área de disciplina, hay mucho que saber.
 
Una anécdota personal sobre este ejemplo que os voy a contar. En el año 1996, cuando yo tenía 21 años, había comenzado a trabar ya, y me asignaron ser profesor de un curso de Programación de Aplicaciones Web, y el universo completo para hacer aquello consistía en saber:
  • Para el frontend:
    • HTML 3.2 (con especificaciones no completos de HTML 4 que cada uno hacía como le daba la gana)
    • Javacript recién sacado del horno que iba en unos navegadores sí en otros regular.
    • Herramientas para formatos gráficos: GIF, GIF89a, JPG, Mapas de imágenes.
  • Para el backend
    • Perl
    • PHP (Perl Host Script)
    • ASP
  • Bases de datos
    • SQL
Y más o menos con todo esto, con saber algo de redes y servicios de Internet, te contratabas un ISP, un Hosting, y te hacías tu .COM para triunfar en el boom del año 2.000, donde muchos de los que se subieron a esa ola triunfaron, otros no tanto.

Hoy en día, para ser un buen Front-End Developer, o un buen Back-End Developer, debes conocer otras - y muchas - disciplinas. Los patrones de diseño han cambiado. Antes hablábamos de Programación de páginas web reactivas, en la que se sucedía la lógica de negocio cuando había una petición desde el Front-End por parte del usuario, para luego pasar a Programación Reactiva, entendido que las aplicaciones debían comunicarse, podrían ser distribuidas, y debían tener sistemas de paso de mensajes entre ellas. La Programación Orientada a Componentes aceleró la construcción de este tipo de aplicaciones, y con el paso del tiempo, las Aplicaciones Reactivas con lógica de negocio en Front-End basada en eventos y mensajes fue haciéndose más popular, junto con las necesidades de apps en Tiempo-Real que reaccionaran tanto en situaciones de cliente como en datos de servicios en forma de Datos en Stream. Y el mundo sigue cambiando. 
Es decir, que de aquella arquitectura de tecnologías que alguien podía conocer en suficiente profundidad como para montarse una .COM, hemos pasado a un nivel de especialización enorme, en todas las áreas tecnológicas. En el caso de las aplicaciones con Front-End Reactivo este cambio ha sido mucho más importante. El cuidado con que debe construir sus interfaces tiene una importancia brutal en el negocio. 

De sus decisiones arquitectónicas, del cuidado de su código, y de la optimización de sus componentes depende el negocio. El SEO, el SEM, la hiper-personalización, el buen funcionamiento Responsive en los diferentes end-points, etcétera, es vital para que un sistema funcione o no. Los Front-End Developers son joyas de la corona, junto con el equipo e User eXperience y User Interaction para que la aplicación web funcione o no funcione en su interacción con el cliente. Sin dejar de lado la importancia del BackEnd, claro está. Pero un gran Backend no luce sin un buen FrontEnd y un Backend bueno, puede parecer espectacular con un gran FrontEnd.
Son profesionales muy demandados, que deben conocer muchas tecnologías que han surgido en los últimos años desde la irrupción de React en 2013, la biblioteca Redux, la aparición de frameworks como Angular, los nuevos entornos de trabajo con GitHub, las apps en Node, o las necesidades del despliegue continuo de Apps donde es necesario entender el mundo DevOPs, DevSecOps, las herramientas de mocking para testing Apps y conocer los ataques client-side y APIs, etcétera. Es decir, muy lejos de todo lo que era necesario antes.

Si tienes en mente emprender en el mundo tecnológico, y vas a tener una WebApp Responsive, que va a ser clave en tu negocio, vas a necesitar a estos especialistas, y si quieres aprender de estas tecnologías, puedes hacerte un BootCamp Online en FrontEnd React Developer que te pongas al día con todas ellas. Verás que son hoy en día son muy demandadas. En Telefónica, siempre tenemos ofertas de profesionales especializados en Frontend, y en la zona de Talento Tech de GeeksHubs Academy, verás que también las tienes.
Así que si quieres que tu futuro pase por la creación de tecnología para hacer servicios y/o webapps, ponte las pilas en las nuevas tecnologías, y haz una especialización profunda, que el mundo de la tecnología cada vez demanda menos perfiles de "yo sé un poco de todo".

¡Saludos Malignos!

Autor: Chema Alonso (Contactar con Chema Alonso)  


Entrada destacada

+300 referencias a papers, posts y talks de Hacking & Security con Inteligencia Artificial

Hace un mes comencé a recuperar en un post mi interés en los últimos años, donde he publicado muchos artículos en este blog , y he dejado mu...

Entradas populares