Conectarse desde Mac y Linux a través de SSH con una llave privada

Estándar

En este artículo voy a detallar como utilizar una llave privada para ingresar a un servidor Raspberry Pi (que tiene instalado Raspbian – basado en Debian) a través de una sesión de terminal en MacOS Catalina (que como saben está basado a su vez en BSD). Así que pueden utilizar el mismo proceso desde cualquier programa de Terminal en Linux.

¿Qué vamos a necesitar?

Un programa cliente de SSH instalado en tu Linux o como en mi caso MacOS Catalina, en la mayoría de los casos se utiliza ssh. También necesitarán un editor de texto, en este caso yo utilizo vim.

Para ingresar con una llave privada

Utilizando el editor de texto, creamos un archivo donde almacenaremos la llave privada. En este ejemplo crearemos el archivo dummykey.txt. Debemos tener ya previamente copiado (usando ctrl+c o command+c) el contenido de nuestro certificado emitido por el servidor al que estamos queriendo ingresar. Luego en el caso de que decidamos utilizar el editor vim (hagan click aquí para una excelente cheat sheet), el comando sería el siguiente:

vim dummykey.txt

Luego de ejecutar el comando y por tanto tener abierto el editor, presionamos la tecla i para entrar en modo de inserción. Luego pegamos el contenido de nuestro certificado que copiamos previamente al portapapeles (usando ctrl+v o command+v). Es muy importante que incluyamos las líneas BEGIN y END del certificado. Luego presionamos la tecla escape (esc) para dejar el modo inserción con el texto ya pegado dentro del archivo en el editor. Luego presionamos la tecla dos puntos : para ingresar al modo de entrada de comandos y escribimos wq para guardar el archivo y volver a la terminal (aclaro que el comando wq que enviamos a vim es la combinación de dos comandos w de write y q de quit o sea, escribir/guardar y -luego- salir).

Importante!

Luego tenemos que configurar los permisos al archivo del certificado que acabamos de crear, debemos aplicarle el modo 600 (también pueden aplicarle el 400). Tomen en cuenta que si omitimos este paso, lo demás de aquí en adelante fallará. El comando es:

chmod 600 dummykey.txt

Luego utilizamos la llave como parámetro del comando para ingresar utilizando SSH, en este caso utilizaremos el usuario user y el IP de nuestro Raspberry Pi es 192.168.0.33:

ssh -i dummykey.txt user@192.168.0.33

Cuando nos aparezca el diálogo solicitando la confirmación de la conexión, debemos aceptarlo tecleando la palabra yes y luego presionamos la tecla Enter.

En el caso de que la llave exija una contraseña, cuando aparezca el diálogo solicitándola, se deberá escribir y luego presionar la tecla Enter para completar la conexión correctamente.

Saludos.

Mi experiencia con los cursos de PLURALSIGHT durante el mes #FreeApril (post largo)

Estándar

Durante el mes de abril, la empresa PLURALSIGHT ofreció todos los cursos y videos GRATIS.

Como todos sabemos, en respuesta al creciente número de casos de COVID-19 durante la pandemia de este año 2020, muchos países -al igual que el mío- declaran estado de alarma, adoptando como principal medida, la imposición de una cuarentena nacional.

Varias empresas y plataformas (de todo tipo), se solidarizaron con la comunidad mundial, ofreciendo sus servicios gratis para quienes no tienen una suscripción activa, o mejorando los planes a clientes activos, en algunos casos solo para ciertas zonas geográficas y otros -más generosos- lo hicieron para con todos, sin excepción.

En mi anterior post, daba las indicaciones para aprovechar PLURALSIGHT Gratuito durante todo el mes de Abril; mi emoción se debió, principalmente, a que en lo personal considero que esta plataforma se diferencia de otras (hay muy buenas por cierto) por la calidad excepcional de sus cursos, los cuales son dictados por una variedad de autores que van desde Senior Developers hasta Software Advocates y Entrepreneurs, todos ellos excelentes profesionales.

Es así que lejos de considerar el confinamiento un problema (somos programadores, estamos acostumbrados a pasar mucho tiempo frente a la compu) me propuse aprovechar la cuarentena y sacar el máximo provecho a lo que considero el momento de hacer todo aquello para lo que no he tenido tiempo últimamente, debido a los diversos proyectos y demás actividades.

Estas son mis impresiones de los cursos que completé, luego de utilizar el #FreeApril de Pluralsight: hago notar que habiendo una cantidad increíble de cursos, me enfoqué específicamente en ciertos temas en los que quería profundizar, tener una actualización tecnológica y en otros casos por simple caduquera (chochera) de aprenderme hasta los shortcuts de teclado que (ahora si) me pueden facilitar la realización de tareas durante mi día a día desarrollando software; pero antes de seguir me gustaría hacer un paréntesis para más o menos resumir la interfaz de la plataforma:

Interfaz de Pluralsight

La interfaz es más o menos similar a la de otras plataformas como Udemy o edX, sobre la cual me gustaría hacer notar los siguientes recursos:

Learning Paths

Se tienen los Learning Paths -senderos, trayectorias, rutas o caminos de aprendizaje- que son colecciones de cursos cuidadosamente “curados” por expertos y autores de Pluralsight, es decir que proveen una ruta de aprendizaje para los diversos temas que nos pueden interesar, mismos que están divididos por el nivel de complejidad de los cursos (Principiante, Intermedio y Avanzado), mostrándonos de manera visual nuestro avance general en el dashboard del path escogido. Esto me parece sumamente útil para aprender y enfocarme en un conjunto particular de habilidades, además, teniendo todo clasificado y agregado nos da la sensación de que al completarlo ya se tiene lo que uno necesita para empezar a aplicar esas nuevas técnicas en el trabajo.

Skill IQ Assessments

Por aquí debí comenzar, pero sentí que primero tenía que comentar acerca de los Learning Paths, ya que esto aplica para ellos: los Skill IQ Assessments son exámenes de 20 preguntas que le permitirá a la plataforma saber en qué nivel de habilidad nos encontramos; si respecto a una ruta de aprendizaje estamos más cerca de ser novatos que expertos. ¿Para qué? Para que así nos brinde recomendaciones de contenidos personalizados y adecuados a nuestro nivel. Las preguntas son cronometradas de acuerdo a la complejidad de las mismas y lo bueno es que si creemos que pudimos hacerlo mejor, nos da la posibilidad de reintentarlos una vez para mejorar nuestro puntaje, en tal caso la plataforma siempre se quedará con nuestro score más alto.

Guías

Las guías –guides– son artículos de texto que nos pueden ayudar a resolver con mayor rapidez algunos problemas técnicos o blockers mediante recursos como fragmentos de código y ejemplos de implementaciones en el mundo real. Aparte de estar muy bien redactadas y esquematizadas, me gusta mucho el buscador, sumamente útil.

Bookmarks

Los bookmarks o marcapáginas, se utilizan para destacar contenido que nos interesa, se pueden añadir (y posteriormente filtrar) estos marcadores a los Cursos, Módulos y Videos. Para acceder a ellos tenemos un enlace en la barra superior al lado de nuestra imagen miniatura de perfil, muy conveniente cuando queremos volver a repasar un tema que vimos en una lección o por ejemplo volver a revisar quizá una serie de comandos o un fragmento de código que necesitamos recordar.

Canales

Los canales son listas personalizadas de cursos, las cuales podemos nombrar como deseemos, ya que en este el caso los curadores de la selección somos nosotros, útil para agrupar cursos por distintas temáticas o asuntos de nuestro interés: Testing, CI/CD, Mobile, etc.

Descargar los cursos

Mas que descargar los cursos, lo que ofrecen es la posibilidad de poder aprender en modo offline, para lo cual se debe descargar la app de Pluralsight disponible para MacOS, Windows, iPhone, iPad, Smart TVs (Apple TV, Amazon Fire TV & Roku) y dispositivos Android. Algo que me pareció curioso: ofrecen una extensión/plugin para Visual Studio Code que nos permite obtener recomendaciones de contenido y respuestas a preguntas, éstas respuestas pueden ser videos, cursos, guías que la plataforma ofrece. Yo no la he probado aún, si le echo una mirada les hago saber.

Transcripciones

Adicional a la tabla de contenidos y descripción que cada curso tiene, se cuenta con la transcripción completa de todos los videos, la mayoría son transcripciones realizadas por los mismos autores y en algunos casos son autogeneradas, el 99% de muy buena calidad, salvo en alguno que otro video que no se le entendía con claridad alguna palabra al disertante me la tradujo con “________” (tampoco digamos que tengo un “listening” espectacular). Sólo pude encontrar contenidos en inglés, pero se tienen los subtítulos autogenerados creo que para casi todos los idiomas.

Archivos prácticos o de ejercicios

Cada curso provee un archivo comprimido para descargar –Exercise Files-, que incluye las diapositivas presentadas en cada módulo y el código fuente que lo respalda cuando corresponde (esto depende del curso). En aquellos que vienen con código fuente, adicional a la descarga del archivo de ejercicios provisto por la plataforma, también es importante acceder al enlace que nos lleva al repositorio -la mayoría de las veces en GitHub- provisto por el autor al comienzo del contenido, para así trabajar los ejercicios con la versión más actualizada del proyecto.

Área de discusión

Cada curso cuenta con un foro de discusión donde el autor interactúa con los alumnos contestando dudas, complementando el contenido y a veces también aclarando algunas correcciones o fixes que se han realizado para que los ejercicios funcionen.

Cuestionario práctico

Se tienen cuestionarios prácticos con preguntas referentes al curso, éstas preguntas tienen mas o menos los lineamientos de las preguntas que hay en los exámenes de certificación, se pueden realizar varios intentos de éstos tests, la plataforma nos va almacenando un listado histórico de todos los cuestionarios que vamos pasando y la puntuación de los mismos.

Cursos Relacionados

Es un listado de cursos afines al que estamos realizando, ayuda bastante si por ejemplo estamos haciendo un curso de Unit Testing en JUnit 5, entonces nos recomienda otros acerca de TDD, Mockito, etc. Útil si no hemos buscado últimamente novedades en tecnología de desarrollo de software.

TL;DR

Resumen de cursos

Bueno, al fin, éstos son los cursos que completé (en total fueron 14) y ofrezco mi opinión personalísima de los mismos, por favor tomar en cuenta que no gano dinero por esto y hago este artículo como un agradecimiento con Pluralsight por el gesto de regalar todo un mes de delicioso aprendizaje, el cual he apreciado mucho, de todas maneras el enlace que proveo al sitio de la plataforma tiene mi código de afiliado 🙂 en caso deseen conocer la plataforma, al lado del título de cada curso está el nombre del autor y el enlace correspondiente a su perfil.

Tema: Infraestructura & Cloud

La mayoría de estos cursos son parte de la ruta de aprendizaje AWS Certified Developer – Associate (DVA-C01) de Amazon Web Services. Con los ejercicios provistos se llega a comprender los servicios principales y se debería ya tener la capacidad de desarrollar y desplegar una aplicación totalmente funcional en AWS, los contenidos más avanzados nos enseñan acerca de aplicaciones distribuidas y Serverless, así como también a monitorearlas y manejarlas correctamente.

  • AWS Developer: The Big Picture 
  • AWS Developer: Getting Started
  • AWS Developer: Designing and Developing
  • Demystifying the AWS Certified Developer: Associate Exam
  • Docker and Kubernetes: The Big Picture

AWS Developer: The Big PictureRyan Lewis

Éste curso no es práctico, pero nos da una introducción a la vasta variedad de servicios esenciales de AWS (Amazon Web Services), que hasta el momento es el mayor proveedor de servicios de computación en la nube y lo utilizamos empresas de todo tamaño. Este corto curso es necesario si queremos saber más de cloud computing y cómo se lo puede usar.

AWS Developer: Getting StartedRyan Lewis

Aquí ya se aprende la manera de desarrollar, desplegar e integrar aplicaciones web en AWS, viene con el código fuente de una fábrica de pizzas en Node.js, muy didáctico y entretenido, en este curso se configuran alarmas, se manejan instancias EC2Elastic Cloud Computing– se delimitan recursos con VPCVirtual Private Clouds-, se aprende a implementar de manera fácil los muy versátiles buckets en S3 –Simple Storage Service– y se da una ligera implementación a 2 servicios de base de datos: RDSRelational Database Service– y DynamoDB (que es una base de datos NoSQL), así también damos una mirada a Cloudfront para desplegar contenido de forma global.

AWS Developer: Designing and DevelopingRyan Lewis

Por si queremos avanzar un poco más en la ruta de AWS, aquí ya aprendemos a utilizar el SDK –Software Development Kit– de AWS, se implementa de manera mas avanzada el escalado de EC2 y el manejo de imágenes de disco AMI para despliegue bajo demanda con grupos de auto escalado y balanceo de carga elástico: ELBElastic Load Balancers-. Se profundiza en aspectos de seguridad y se aprende de almacenamiento elástico de bloques o EBSElastic Block Store-. Muy importante: se implementa el servicio de Route53 (DNS en la nube de Amazon) para crear un gateway para nuestra API (el código fuente del proyecto es de hámsters) y también se profundiza un poco en Cloudfront, Cloudwatch y Kinesis & SQS para la comunicación y alarmas. En este curso se programa un poco más que en el anterior.

Demystifying the AWS Certified Developer: Associate ExamRyan Lewis

Interesante para darnos una idea de cómo es el examen de certificación AWS Certified Developer – Associate exam. Se aprenden tips interesantes, aparte de los genéricos que pueden aplicarse a cualquier examen de certificación en general; me gustó cómo nos da una idea de ponderar las áreas en las que debemos mejorar nuestras habilidades.

Docker and Kubernetes: The Big PictureNigel Poulton

Éste curso forma parte de la ruta Managing Containers with Docker. Los contenedores son una forma de virtualizar que para algunos escenarios se adecúa mejor que los tradicionales Hypervisors, me gustaría hacer toda esta ruta de aprendizaje en un futuro para conocer más a fondo todo lo que Docker tiene para ofrecer. Éste contenido es el ideal para introducirnos en los contenedores y Kubernetes, para desplegar nuestras aplicaciones modernas y también las heredadas.

Tema: Java & Spring

Éstos cursos forman parte de la ruta Core Spring Path, que si bien ya conozco y vengo implementando Spring desde hace un par de años, son contenidos que quería específicamente revisar, ya que es un framework que ha crecido con el tiempo y ahora también soporta Groovy y Kotlin como lenguajes alternativos para la JVM; en resumen fueron para darle una mirada rápida. Ambos cursos de contenido súper corto pero a la vez muy sólido, hago hincapié en que la autora de los mismos es una programadora que ha ganado algunos premios; personalmente me gusta mucho que las mujeres tengan un papel activo en el desarrollo de software y que sienten presencia en esta industria.

  • Spring Boot Fundamentals
  • Building Microservices REST APIs Using Spring Data REST

Spring Boot FundamentalsKesha Williams

Cuando alguien habla de Spring, por lo general se refiere a toda la familia, pero en este curso se aborda la extensión Spring Boot, que ayuda a desarrollar aplicaciones de manera muy rápida y con menos código. Enseña de una manera muy didáctica temas como: anotaciones, propiedades, perfiles para entornos, acceso a datos con JPA, el patrón MVC y cómo se empaquetan los archivos para desplegar.

Me gustaron las lecciones que abordan la implementación de Aplicaciones Web RESTful, para quien desea aprender a construir productos basados en API; así también otra lección notable es la que enseña como implementar GraphQL: ese lenguaje Open Source de manipulación y consulta de datos para API; nos hace implementar sus esquemas, operaciones y mutaciones para que mediante el runtime realicemos consultas y operaciones con los datos existentes en nuestra base de datos, así también podriamos acceder a esos mismos datos que hemos expuesto utilizando middlewares y por supuesto backends. No quiero dejar de mencionar la implementación de los Actuators para obtener métricas y otros indicadores de salud de nuestra aplicación ya desplegada.

Por último, da un breve pantallazo a cómo realizar tests unitarios y de integración, muy ilustrativo.

Building Microservices REST APIs Using Spring Data RESTKesha Williams

Este curso aborda la creación de API REST para microservicios utilizando Spring Data REST, y sólo en cuestión de minutos ya convertimos un repositorio a microservicio RESTful, el cual está originalmente en Spring Data; luego progresivamente se lo va enriqueciendo con Paging (paginación), Sorting (ordenación) y Searching (búsqueda).

Importante la lección de Swagger, para quien quiere aprender acerca de esta herramienta de autodocumentación de APIs, que tiene una poderosa interfaz web y también nos ayuda a generar código, documentación y casos de prueba para nuestras API.

Por mi parte realicé un ejercicio desplegando la aplicación final en mis EC2 de AWS, con escalado de instancias de acuerdo a reglas establecidas en mi balanceador de carga.

Tema: Angular

Hace un par de años que no me dejo conquistar por alternativas como React, así que continúo trabajando con Angular: porque es un Framework completo para JavaScript, sigo convencido de que las aplicaciones dinámicas e interactivas que nos permite desarrollar, ya sean estas SPA Single Page Application, MPA Multi Page Application, Client Side o Server Side Rendering, son robustas, fáciles de depurar y testear a cambio de una curva de aprendizaje moderada.

  • Angular CLI
  • Angular Forms
  • Angular Architecture and Best Practices
  • Unit Testing in Angular

Angular CLIJohn Papa

Este curso nos enseña como crear, generar, depurar, testear, compilar y en general construir aplicaciones que sigan los Lineamientos de Estilo de Angular o Angular Style Guide. Pareciera una exageración hacer un curso de algo que pareciera trivial como el CLI, que bien se puede aprender con la misma documentación técnica (así lo aprendí yo); pero saqué algo bueno de esto: como este curso es desde cero e incluye instalar Node.js, npm y configurar los entornos, descubrí que tenía una chipazón (todo un enredo) mis versiones locales, ya que mi sistema operativo es MacOS Catalina actualizado desde El Capitán y utilizo nvm para versionar Node por proyecto, gracias a este curso dejé saneado mi entorno tanto de Node como de Angular y Typescript, con las dependencias correctas por cada versión y para cada proyecto.

Plus: Casi al final hay un módulo jugoso de Unit Tests & End to End Tests que nos enseña a configurar, ejecutar y testear nuestras aplicaciones, así también nos da pautas importantes para verificar la Cobertura de Código (Code Coverage) de nuestro desarrollo.

Angular FormsMark Zamoyta

No aprendí mucho en este porque el contenido del mismo ya lo hice en otro curso, pero para quien está comenzando con Angular le ayudará con lo fundamental para trabajar con formularios basados en plantilla o Template Based, desde crear, agregarles estilo y utilizar validación y data binding. Este curso no aborda formularios reactivos.

Angular Architecture and Best PracticesDan Wahlin

Curso interesante y útil para aprender cómo desarrollar aplicaciones en Angular con una arquitectura sólida que sea fácil de refactorizar y mantener. Es necesario adoptar las propuestas de cómo organizar nuestro código, componentes, módulos y la comunicación entre sí, también el uso de la librería RxJS, el manejo de estado y en general muchas buenas prácticas, todas siguiendo la ya mencionada Angular Style Guide.

Las lecciones son la versión avanzada del curso Angular CLI, ya que se profundiza en aprender a organizar los módulos y librerías, luego unificarlas, aplicar estilos, implementar algunos patrones como Inmutable (muy importante), la comunicación utilizando el servicio Event Bus Service (si no conocen los Observables, es el momento), y manejo de estado usando NgRx entre otros temas de interés, como las consideraciones de seguridad. Recomiendo este curso para cualquiera que desee trabajar con Angular, o que ya esté trabajando con el framework y desee ampliar sus conocimientos, el contenido es un poco pesado, pero definitivamente necesario.

Unit Testing in AngularJoe Eames

Este curso está centrado en Unit Testing para proyectos en Angular, comprende desde tests “Aislados” y menos complejos para Pipes, Servicios y Componentes, hasta tests de integración superficiales y profundos (Shallow & Deep) utilizando los objetos nativos y de depuración para realizar pruebas a componentes con o sin hijos (childs). Así también nos enseñan a realizar pruebas en los componentes de ruteo, cómo lidiar con el código asíncrono y verificar la Cobertura de Código (Code Coverage) de nuestro proyecto.

Tema: Tools & Design

Aquí de todo un poco -caduqueras en realidad- como el cursito de VS Code, el de Gradle (para construcción de proyectos y manejo de ciclo de vida usando Groovy y Kotlin), y uno de diseño de interacción para aplicaciones.

  • Gradle Build Tool Fundamentals
  • Interaction Design Fundamentals
  • Visual Studio Code

Gradle Build Tool FundamentalsKevin Jones

Curso bien básico de Gradle, que es una herramienta para construir proyectos en Java, permitiendo definir los archivos de configuración tanto en Groovy como en Kotlin, ambos son lenguajes de programación orientada a objetos implementados sobre la plataforma Java. Ésta herramienta reemplaza a Maven y también nos permite compilar, testear nuestro código, crear jars y wars para desplegar nuestras aplicaciones y generar Javadocs, entre muchos otros usos; todo esto utilizando plugins, definiendo tareas y adicionando dependencias. Brinda ejercicios tanto en Groovy como en Kotlin.

Contenido necesario para quien desea aprender a configurar builds multi proyecto; también se hace una breve introducción al Testing con JUnit (4 y 5) y nuevamente saqué algo bueno de él: mi Gradle Wrapper estaba sucio (mal configurado), así que fue una buena oportunidad para sanearlo.

Interaction Design FundamentalsAnthony Alampi

Éste es un curso súper corto, quedé con sabor a poco, no pude encontrar otro curso más avanzado del mismo autor que continúe con lo que se aprende con éste contenido. En resumen nos ayuda a los desarrolladores a comprender el concepto de diseño de interacciones, nos enseña un par de principios fundamentales (patrones y anti-patrones), algunos tips de navegación, define las micro-interacciones y en general cómo todos estos conceptos pueden ser utilizados para generar experiencias de usuario significativas. Punto a favor acerca de como crear interfaces de usuario Accesibles.

Visual Studio CodeJohn Papa

Mi nuevo consentido, ese súper-liviano, ultra-rápido y multi-plataforma entorno de programación llamado Visual Studio Code; desde que lo conocí dejé todos los demás. Nos permite programar aplicaciones web y de escritorio; tenemos integración con el control de versiones y prácticamente soporte para todos los lenguajes y librerías que podamos necesitar: si aún no hubiera, entonces podemos programarlo nosotros y compartirlo con la comunidad de felices usuarios 🙂 -y es que no tiene nada que envidiarle a otros entornos con licencia paga-. Bueno, al grano: en este curso se aprende a configurar proyectos, a depurar, refactorizar, realizar busquedas inteligentes dentro del código, multi selección (un espectáculo), intellisense y auto-completar. Viene con unos ejemplos de código en Node.js ideales para el propósito del curso; una de las características más útiles es aprender a desarrollar tus propios Snippets (fragmentos de código) y personalizar la paleta de comandos. Plus: se aprende a integrar nuestro código fuente con herramientas externas a través de tareas, se lo realiza de manera muy didáctica con un ejercicio de transpilación de Typescript utilizando Babel.

Espero que disfruten de este post tanto como yo disfruté redactarlo, sé que se alargó un poco, pero mi intención es que se animen y quizá no solo hagan alguno de los cursos que detallé, sino también busquen más información acerca de esos temas en tantos otros sitios gratuitos o de documentación técnica oficial que existen y si quieren los conversamos. Les confieso que aprendí mucho más haciendo esta compilación.

Recuerden que el conocimiento que no se comparte pierde por completo su valor.

Saludos.

PLURALSIGHT Gratuito durante todo el mes de Abril

Estándar

Sin tarjetas de crédito y sin límite de vistas. La empresa ha ofrecido todos los cursos y videos (7000+) GRATIS por todo el mes de abril.

Gratamente sorprendido el día de hoy con la noticia de que Pluralsight (PS en NASDAQ), la empresa estadounidense de educación en línea que ofrece una gran variedad de cursos de capacitación para Desarrolladores de Software, Creativos y Personal de TI en general ha ofrecido todos los cursos y videos GRATIS durante todo el mes de abril.

Cuentan con más de 7000 cursos liderados por expertos en diversos temas tecnológicos de actualidad, afirman que “La manera en que vivimos y trabajamos ha cambiado mucho en estas últimas semanas, pero estamos juntos en esto.” y aconsejan también “A pesar de que las cosas están raras en este momento, puedes sacar el máximo provecho invirtiendo en ti y en mejorar tus habilidades.” – sencillamente extraordinario.

Pueden ingresar al sitio web de Pluralsight en: https://www.pluralsight.com/offer/2020/free-april-month/

Llenan sus datos, seleccionan “Activar Beneficio” y luego recibirán un correo electrónico indicando que ya se tiene el beneficio activo, tengan paciencia si el correo tarda en llegar, a mi me llegó despues de 2 horas, supongo que es debido a que han recibido una cantidad enorme de peticiones. ¡Espero les sea de utilidad!

Saludos.

Atlassian quitará el soporte a Mercurial de su servicio Bitbucket Cloud y de su API

Estándar

Las características y repositorios serán oficialmente removidas de Bitbucket y su API el 1ro de junio de 2010

Atlassian, la empresa proveedora de muchas soluciones como Bitbucket, JIRA, Confluence, Trello y otras, comunicó hoy que retirará el soporte a Mercurial de sus servicios Bitbucket Cloud y tambien de su API, han decidido enfocarse en Git, por tanto se recomienda verificar los proyectos que tengan en esa plataforma y planificar la migración a Git cuanto antes.

El comunicado indica:

After much consideration, we’ve decided to remove Mercurial support from Bitbucket Cloud and the API. Mercurial features and repositories will be officially removed from Bitbucket and its API on June 1, 2020.
What used to be a very fragmented version control software market has rapidly matured. Mercurial usage on Bitbucket is steadily declining, and the percentage of new Bitbucket users choosing Mercurial has fallen to less than 1%. At the same time, Git has become the standard. According to a Stack Overflow Developer Survey, almost 90% of developers use Git, while Mercurial is the least popular version control system with only about 3% developer adoption.
Given that Git has emerged as the version control system of choice for the industry, we have decided to focus our priorities and roadmap on building the best possible experience for the market and our users.
Read on to learn more about what led to this decision, timeline, and migration resource support.

Mensaje emergente dentro de Bitbucket indicando que se retira el soporte a Mercurial.

Pueden leer el articulo completo en https://bitbucket.org/blog/sunsetting-mercurial-support-in-bitbucket

Saludos.

Instalar las Herramientas de Línea de Comando (Command Line Tools) en macOS Mojave (sin todo el paquete de Xcode)

Estándar

La ventaja de este proceso es que no es necesario instalar todo el paquete de Xcode y lo mejor de todo: no requiere tener una cuenta pagada de desarrollador Apple.

Si estas utilizando macOS Mojave, o tal vez alguna de las siguientes versiones anteriores: High Sierra, Sierra, El Capitan, Yosemite o Mavericks y necesitas las Herramientas de Línea de Comando, conocidas como Command Line Tools –pero no quieres todo el paquete Xcode-, solo necesitas ejecutar el siguiente comando desde una nueva terminal (dentro de Aplicaciones⁩/⁨Utilidades):

Una ventana emergente se abrirá con un mensaje indicando: “The xcode-select command requires the command line developer tools. Would you like to install the tools now?” Debemos hacer click en Install” y luego aceptar los Términos de Servicio. Esperamos que la descarga e instalación terminen, son aproximadamente unos 150 MB.

Podemos comprobar que se instaló correctamente ejecutando por ejemplo el siguiente comando:

El cual nos deberá responder (en mi caso particular):

 

Este paquete se instala en la ruta /Library/Developer/CommandLineTools/ (tomar nota que es la carpeta /Library de la raíz de macOS, no la correspondiente al usuario ~/Library) y provee a los usuarios muchas herramientas, compiladores y comandos útiles que son comunes en instalaciones unix/linux, aqui les paso la lista de lo que incluye la subcarpeta /usr/bin/:

  • DeRez
  • ctf_insert
  • install_name_tool
  • otool-classic
  • svnserve
  • GetFileInfo
  • dsymutil
  • ld
  • pagestuff
  • svnsync
  • ResMerger
  • dwarfdump
  • lex
  • projectInfo
  • svnversion
  • Rez
  • dwarfdump-classic
  • libtool
  • ranlib
  • swift
  • SetFile
  • dyldinfo
  • lipo
  • rebase
  • swift-autolink-extract
  • SplitForks
  • flex
  • lldb
  • redo_prebinding
  • swift-build
  • ar
  • flex++
  • llvm-cov
  • resolveLinks
  • swift-build-tool
  • as
  • g++
  • llvm-dwarfdump
  • rpcgen
  • swift-demangle
  • asa
  • gatherheaderdoc
  • llvm-nm
  • segedit
  • swift-format
  • bison
  • gcc
  • llvm-objdump
  • size
  • swift-package
  • bitcode_strip
  • gcov
  • llvm-otool
  • size-classic
  • swift-run
  • c++
  • git
  • llvm-profdata
  • stapler
  • swift-stdlib-tool
  • c89
  • git-receive-pack
  • llvm-size
  • strings
  • swift-test
  • c99
  • git-shell
  • lorder
  • strip
  • swiftc
  • cc
  • git-upload-archive
  • m4
  • svn
  • tapi
  • clang
  • git-upload-pack
  • make
  • svnadmin
  • unifdef
  • clang++
  • gm4
  • mig
  • svnbench
  • unifdefall
  • cmpdylib
  • gnumake
  • nm
  • svndumpfilter
  • unwinddump
  • codesign_allocate
  • gperf
  • nm-classic
  • svnfsfs
  • xml2man
  • codesign_allocate-p
  • hdxml2manxml
  • nmedit
  • svnlook
  • yacc
  • cpp
  • headerdoc2html
  • objdump
  • svnmucc
  • ctags
  • indent
  • otool
  • svnrdump

Si ya tienes instalado el Xcode no es necesario ejecutar el comando precedente, ya que las Command Line Tools son incluídas durante la instalación general de Xcode, en otras palabras, esto es para aquellos usuarios avanzados de Mac que son familiares con el entorno unix/linux y con los compiladores y herramientas de desarrollo mencionados con anterioridad, o quizás también para aquellos usuarios que prefieren herramientas más tradicionales. Es bueno notar que es totalmente seguro desinstalar Xcode (eliminando al app desde /Aplicaciones) e instalar manualmente por separado las Command Line Tools.

Si ya tienes una cuenta de desarrollador Apple (no es necesario que sea pagada), las herramientas también se pueden descargar desde el siguiente enlace: More Downloads for Apple Developers ahí simplemente hacen una búsqueda del termino “command line” y escogen el archivo mas reciente.

Saludos.

1000 Desarrolladores recibirán capacitación gratuita en criptomoneda Ethereum gracias a un programa educativo

Estándar

El proceso de selección comienza este 31 de enero y finaliza el 28 de febrero próximo

B9lab (plataforma educativa enfocada tecnología de criptoactivos) junto con el DoD (Departamento de Descentralización, antes llamado ETHBerlin) Han anunciado el inicio del período de selección para un programa gratuito de capacitación y certificación a 1000 estudiantes que aspiren a convertirse en desarrolladores de Ethereum.

El proceso de selección de participantes para el programa se llama Community Blockstars, comienza este 31 de enero y finaliza el 28 de febrero próximo.

Pueden leer el articulo completo en: https://www.criptonoticias.com/educacion/programa-educativo-gratuito-capacitara-desarrolladores-ethereum/

El articulo original publicado en Medium: https://medium.com/ethberlin/building-blocks-dod-and-b9lab-for-blockchain-education-729b41320fc1

El enlace a la Academia de B9lab: https://academy.b9lab.com/

Saludos.

Problemas con los certificados para SSL expedidos por Legacy Symantec PKI

Estándar

Con la actualización 70 de Chrome desplegada en el “Canal Estable”, algunos sitios con SSL que aun utilizan certificados expedidos por Legacy Symantec PKI están mostrando mensajes de advertencia, en unas semanas el 100% de los sitios que cumplan esta condición tendrán la advertencia.

Mas información en Google Blog:
Distrust of the Symantec PKI: Immediate action needed by site operators

Información importante para volver a regenerar los certificados:

Reemplazar los Certificados SSL/TLS de Symantec

Desde RapidSSL, nos indico que dominios tenian el problema y nos ofreció la regeneración de los mismos (caso puntual que vimos de un cliente):

Paso adicional, notar lo que está encuadrado en rojo, si hubo compromiso de seguridad en el servidor o llaves.

Luego al reimportar el certificado en el servidor web, el cambio fue transparente.

Saludos.

Curso de Kotlin para Desarrolladores JAVA en Coursera

Estándar

Hoy empieza en Coursera, el curso de Kotlin para Desarrolladores JAVA!

Kotlin es un lenguaje enfocado en la interoperabilidad con JAVA, se puede utilizar prácticamente en todos los sitios donde actualmente se esta utilizando JAVA, ya que es 100% compatible con todos los frameworks existentes y provee buenas herramientas de soporte. Es un lenguaje que puede ser adoptado rápidamente por desarrolladores y puede ser compilado para la Virtual Machine, para JavaScript y código nativo, aunque este curso está solamente centrado en Kotlin/JVM)

En este curso no se abordarán temas básicos de programación, se aprenderá: sintaxis, manejo de nulos, programación funcional, Programación Orientada a Objetos, consideraciones de su Librería Estándar e interoperabilidad con JAVA.

Lo mejor de todo… es gratis y pueden acceder a todo el material del curso sin obtener calificaciones ni el titulo que avala el curso, caso contrario tiene un costo de cuarenta y nueve dólares (49 USD).

Kotlin para Desarrolladores JAVA

Saludos.

Technology Radar Vol.19

Estándar

Ya esta disponible el volumen 19 de la revista Technology Radar, con información y artículos sobre tecnología y las tendencias que dan forma al futuro que nos interesa.

Me interesaron los temas:

Sticky Clouds – O cómo luego de escoger un servicio en la nube notamos que esa “relación” se vuelve pegajosa debido a la personalización de características o al ofrecimiento de ofertas tentadoras de pago adelantado por reserva de instancias, por ejemplo.

Lingering Enterprise Antipatterns – No importa cuán rápido evolucione la tecnología, siempre encontramos la manera de reimplementar antipatrones antiguos.

Technology Radar vol.19

De vuelta!

Estándar

Hola a todos!

Gracias por sus mensajes preguntando por mis tutoriales, el plugin Crayon Syntax Highlighter fue el problema, tuve que reinstalarle los lenguajes que reconoce y resalta, me hizo bregar un poco pero ya estan arriba nuevamente los posts que les interesan.

Saludos.

Respaldar y Restaurar Bases de Datos en PostgreSQL

Estándar

No he podido probar si funciona con la versión 8, yo lo he probado en las versiones 9.x en adelante

Les comparto dos comandos muy utiles para realizar respaldos y posterior restauracion de Bases de Datos en PostgreSQL, para este artículo se supone que tenemos instalado el PostgreSQL 9.6 en la ruta C:\Program Files\PostgreSQL\9.6\ y que se utiliza la ruta C:\respaldos tanto para almacenar como para restaurar los respaldos.

Realizar Respaldo usando pg_dump
Este comando tardara un momento, dependiendo del tamaño actual de la Base de Datos que se esta respaldando, el mismo nos exportara el contenido de la BD llamada midominiodb, accede a la misma utilizando el usuario postgres, por tanto se deben proveer las credenciales al momento de ejecutar el mismo. Al final del proceso, obtenemos el archivo current_backup-midominio.sql en la ruta indicada con anterioridad, el cual contiene los scripts y datos necesarios para una posterior restauracion.

El comando es el siguiente:

Restaurar Base de datos usando psql
Es importante tomar en cuenta que se debe crear una Base de Datos vacía con el mismo nombre midominiodb y asignarla al usuario postgres también al iniciar el proceso las credenciales del usuario asignado serán requeridas. Tomar en cuenta que si la Base de Datos ya existe es muy probable que todo el proceso de restauración FALLE, asi que la recomendación es clara: restaurar sobre una Base de Datos vacía. Los pasos a continuación utilizando pgAdmin versión 4.x:

Primero eliminamos la anterior (no olviden realizar un respaldo utilizando pgdump, por si las dudas), hacemos click derecho en la entrada de la Base de Datos en el servidor que la contiene y seleccionamos Delete/Drop:

Confirmamos

Luego hacemos click derecho sobre la entrada Databases dentro del servidor y seleccionamos Create y luego Database…

Escribimos el nombre en el campo Database, y confirmamos que dentro del campo propietario Owner este configurado nuestro usuario postgres, luego presionamos el boton guardar save

Ahora podemos ejecutar el comando siguiente:

Este comando nos restaura la Base de Datos midominiodb a partir del archivo de respaldo current_backup-midominio.sql. Este proceso tarda bastante, especialmente si nuestra base de datos a restaurar tienen información de varios meses de transacciones y operaciones.

Saludos.

Configurar SSL en Wildfly 8/9/10

Estándar

Esta configuración es para WildFly 8, pero funciona con las versiones 9 y 10. Tomar en cuenta que se debe tener las utilidades openssl y keytool instaladas y de preferencia en el path, para ejecutar los comandos descritos.

Bueno, se tiene el desafío de configurar servidores WildFly/JBoss para utilizar HTTPS. Se debe partir generando los siguientes archivos y certificados SSL que se detallan a continuación:

midominio.com.csr (Certificate Signing Request) y midominio.com.key (Llave Privada para nuestro Certificado SSL)
Este es el primer paso, se debe generar esta “Solicitud de Firma de Certificado” desde el servidor midominio.com donde se desea instalar el certificado SSL. Es recomendable utilizar como minimo una llave de 2048 bits.

Los archivos .csr y .key se generan con el siguiente comando:

Esto nos devolverá el siguiente mensaje en la pantalla:

Luego debemos proveer la información referente a nuestra organización (midominio.com)

Ahora si estamos listos para comprar nuestro certificado SSL. Un certificado estándar probablemente sera todo lo que se necesite para obtener seguridad básica. Hay distintos sitios que proveen certificados SSL a buen precio, como GoDaddy.com o SSLs.com.
Luego de comprar el certificado el siguiente paso es activarlo con el proveedor, el mismo solicitará copiar el contenido del archivo .csr creado con anterioridad.

Una vez emitido el certificado SSL en base a la información proporcionada, lo descargamos y descomprimimos
Los archivos que necesitamos del paquete son:
ssl_certificate.crt (Certificado SSL de midominio.com) y IntermediateCA.crt (Certificado del Emisor o Proveedor del certificate de midominio.com) junto con el archivo midominio.com.key generado con anterioridad.

Ahora debemos crear un archivo .jks para importarlo en el keystore. Este es un proceso de 3 pasos: primero creamos un archivo pkcs12 (con extensión .p12) a partir del certificado SSL, luego lo importamos en un archivo keystore y por ultimo tambien importamos el IntermediateCA.crt en el keystore.

Paso 1

Paso 2

* Si desean hacer la prueba también pueden generarse un certificado local e importarlo al keystore, siguiendo los pasos en este artículo: Generar un certificado local e importarlo en el keystore para habilitar SSL en WildFly.

Paso 3

Convertir el IntermediateCA.crt a .pfx

Importar el certificado .pfx a nuestro keystore.

Luego adicionar la siguiente entrada dentro del archivo standalone.xml en la sección security-realms.

Luego de tener importados los certificados, agregamos la siguiente entrada dentro del archivo standalone.xml en la sección server name.

Si deseamos redireccionar todas las peticiones http hacia https, entonces modificamos la linea adicionando redirect-socket=”https”

No olvidemos tambien verificar que nuestro puerto SSL este correctamente definido dentro la sección socket-binding-group name=”standard-sockets”

Adicionar en el archivo web.xml (Esto requiere volver a empaquetar el .war y volverlo a desplegar en WildFly)

Reiniciamos WildFly, volvemos a desplegar el .war y hacemos la prueba ingresando a midominio.com ya sea desde https o http en caso tenemos activa la redirección.

Saludos.

Generar un certificado local e importarlo en el keystore para habilitar SSL en WildFly

Estándar

Tomen en cuenta que este proceso les generará una llave keystore del servidor local, lo cual no es tan parecido a los entornos públicos o del mundo real, donde se genera a partir de los certificados SSL provistos por la Autoridad Emisora. Para ello pueden revisar este artículo: Configurar SSL en Wildfly 8/9/10.

Para generar un certificado local, debemos realizar los siguientes pasos:

Este archivo .jks lo copiamos en la carpeta de configuracion del WildFly:

Los demás pasos para integrarlo a WildFly en el artículo indicado al comienzo.

Saludos.