Git Actions de GitHub (Parte 4)
Continuamos con algún ejemplo de GitHub Action
workflow.yml: se compila un proyecto que tiene como dependencia otro proyecto perteneciente a otro repositorio (además, se le indica que utilice una rama concreta).
name: Compile with other repo dependency //Evento que desencadenará el workflow on: [push] //Se definen unas variables de entorno para acceder //al repositorio donde esta la dependencia que necesitamos. env: //nombre del repositorio DEPENDENCY_REPOSITORY: "roberto-pf/Example-Git-Actions" //directorio en el que vamos a trabajar DEPENDENCY_PATH: "Example-Git-Actions" //rama del repositorio DEPENDENCY_REF: "example-2" jobs: compile-mvn: runs-on: ubuntu-latest steps: //Tarea que hace un checkout del repositorio - uses: actions/checkout@v2 //Tarea que instalar java 11 - name: Set up JDK 1.11 uses: actions/setup-java@v1 with: java-version: 1.11 //Tarea que hace un checkout del repositorio con la dependencia necesaria - name: Checkout cross repo uses: actions/checkout@v2 with: repository: ${{env.DEPENDENCY_REPOSITORY}} path: ${{env.DEPENDENCY_PATH}} ref: ${{env.DEPENDENCY_REF}} //Instalamos en el directorio .m2 esa dependencia - name: Build with Maven repo roberto-pf/Example-Git-Actions project example2-gitactions-model working-directory: ./Example-Git-Actions/example2-gitactions-model run: | mvn -B install --file pom.xml //Ya podemos construir el proyecto - name: Build with Maven repo roberto-pf/Example-Git-Actions-II project example2-gitactions run: mvn -B package --file example2-gitactions/pom.xml
Nota: Repositorio Github
Git Actions de GitHub (Parte 3)
Continuamos con algún ejemplo de GitHub Action
workflow-external_json_parameters.yml: Contiene dos jobs para extraer la información de un json. El primer job utiliza JQ y el segundo es más simple ya que el json está en una única línea.
name: Read External JSON //Evento que desencadenará el workflow on: [push] jobs: //Primer job a ejecutar read-json-with-jq: //Máquina en la que se va a ejecutar el job runs-on: ubuntu-latest steps: //Tarea que hace un checkout del repositorio - uses: actions/checkout@v2 - name: extract repositories to file run: | //se vuelca a la variable content el contenido del fichero json content=`cat ./example2-gitactions/dependencies.json` //con JQ extraemos todos los valores de la key repository y los listamos en un fichero txt echo "$(jq -r '.dependencies[].repository' <<< "$content")" >> aux.txt //Tarea que pinta por pantalla los repositorios - name: print repositories run: cat aux.txt //Segundo job a ejecutar read-json: //Máquina en la que se va a ejecutar el job runs-on: ubuntu-latest steps: //Tarea que hace un checkout del repositorio - uses: actions/checkout@v2 - name: extract repositories to array id: set_var run: | //se vuelca a la variable content el contenido del fichero json content=`cat ./example2-gitactions/dependencies-one-line.json` //se setea como salida en la variable jsonDep echo "::set-output name=jsonDep::$content" //Tarea que pinta por pantalla los repositorios - name: print repositories run: | echo: "${{fromJson(steps.set_var.outputs.jsonDep).dependencies[0].repository}}" echo: "${{fromJson(steps.set_var.outputs.jsonDep).dependencies[1].repository}}"
Nota: Repositorio Github
Convertir imagen 2D a 3D (con InkScape y FreeCAD)
Guía de pasos para convertir una imagen 2D a un archivo 3D que podremos imprimir en una impresora.
Primero utilizamos el InkScape para convertir la imagen a svg.
Paso 1 – Abrimos InkScape y menú -> Archivo -> Importar
Paso 2 – Vamos a menú -> Trayecto -> Vectorizar mapa de bits
Paso 3 – Esto nos habrá creado encima de la imagen otro objeto con nodos. Podemos eliminar el anterior.
Paso 4 – El objeto ahora mismo está relleno, lo que nos viene mal para tratarlo en FreeCAD. Para dejarlo “hueco” iremos a Menú -> Objeto -> Relleno y borde…
En la primera pestaña Relleno le diremos que sin color. En la pestaña Color de trazo, el que os guste. Y en Estilo de Trazo el ancho de la línea.
Paso 5 – Ahora lo grabamos como svg, para ello Menú -> Archivo -> Guardar como
A continuación, en el FreeCAD, abriremos un nuevo proyecto e iremos directamente al escenario Part.
Cargamos el fichero svg desde Menú -> Archivo -> Abrir. Elegimos el fichero y abrir, donde nos preguntará como lo queremos cargar y marcamos la opción de la imagen…
Deberíamos ver algo así:
Y ya al extruirlo quedaría así:
Git Actions de GitHub (Parte 2)
Continuamos con algún ejemplo de GitHub Action
3 – get version from pom workflow.yml: un job extrae la version del pom para que se utilice tanto en otros jobs como en steps posteriores.
//Nombre del workflow name: Get version from pom.xml //Evento que desencadenará el workflow on: [push] //Configuración por defecto. defaults: run: //Se indica el directorio desde donde se ejecutarán los jobs. working-directory: example1-gitactions //lista de trabajos a realizar jobs: //Job a ejecutar get-version: //Máquina en la que se va a ejecutar el job runs-on: ubuntu-latest //Lista de variables de salida del job outputs: output_version: ${{ steps.project_version.outputs.version }} //Lista de steps/tareas a realizar dentro del job steps: //Tarea que hace un checkout del repositorio - uses: actions/checkout@v2 //Tarea que instala en la máquina java 11 - name: Set up JDK 1.11 uses: actions/setup-java@v1 with: java-version: 1.11 //Tarea extrae a la variable version, la version existente en el pom.xml - name: Extract Maven project version run: echo ::set-output name=version::$(mvn -q -Dexec.executable=echo -Dexec.args='${project.version}' --non-recursive exec:exec) //identificador asignado a la tarea id: project_version //Tarea que hace un echo de la variable creada en la tarea anterior - name: Show extracted Maven project version run: echo "Version is ${{ steps.project_version.outputs.version }}" //Job a ejecutar use-version: //Se indica que este job va a depender del anterior. Es decir, se va a ejecutar el otro primero. needs: get-version //Máquina en la que se va a ejecutar el job runs-on: ubuntu-latest //Lista de steps/tareas a realizar dentro del job steps: //Tarea que hace un checkout del repositorio - uses: actions/checkout@v2 //Tarea que hace un echo de la variable creada en el job anterior - name: Show extracted Maven project version run: echo "Version is ${{ needs.get-version.outputs.output_version }}"
4 – env get version from pom workflow.yml: en un job se estrae la version del pom y la mete en el environment. Se puede ver como se puede utlizar en los steps posteriores pero no en otros jobs
//Nombre del workflow name: Get version from pom.xml - env //Evento que desencadenará el workflow on: [push] //Configuración por defecto. defaults: run: //Se indica el directorio desde donde se ejecutarán los jobs. working-directory: example1-gitactions //lista de variables de entorno inicializadas para usar en los jobs env: GITHUB_RELEASE_VERSION: "prueba" //lista de trabajos a realizar jobs: //Job a ejecutar get-version-env: //Máquina en la que se va a ejecutar el job runs-on: ubuntu-latest //Lista de steps/tareas a realizar dentro del job steps: //Tarea que hace un checkout del repositorio - uses: actions/checkout@v2 //Tarea que instala en la máquina java 11 - name: Set up JDK 1.11 uses: actions/setup-java@v1 with: java-version: 1.11 //Tarea extrae a la variable de entorno GITHUB_RELEASE_VERSION, la version existente en el pom.xml - name: Extract Maven project version run: echo "GITHUB_RELEASE_VERSION=$(mvn -q -Dexec.executable=echo -Dexec.args='${project.version}' --non-recursive exec:exec)" >> $GITHUB_ENV //Tarea que hace un echo de la variable de entorno GITHUB_RELEASE_VERSION. Mostrará el valor de la version del pom - name: Show extracted Maven project version run: echo "Version is ${{ env.GITHUB_RELEASE_VERSION }}" //Job a ejecutar use-version: //Se indica que este job va a depender del anterior. Es decir, se va a ejecutar el otro primero. needs: get-version-env //Máquina en la que se va a ejecutar el job runs-on: ubuntu-latest //Lista de steps/tareas a realizar dentro del job steps: //Tarea que hace un checkout del repositorio - uses: actions/checkout@v2 //Tarea que instala en la máquina java 11 - name: Set up JDK 1.11 uses: actions/setup-java@v1 with: java-version: 1.11 //Tarea que hace un echo de la variable de entorno GITHUB_RELEASE_VERSION. Mostrará el valor por defecto "prueba" - name: Show extracted Maven project version run: echo "Version is ${{ env.GITHUB_RELEASE_VERSION }}"
Nota: Repositorio Github
Git Actions de GitHub (Parte 1)
Las GitHub Actions te permiten automatizar tareas en tu proyecto: despliegues, ejecución de test,… Se dispone de múltiples acciones en el Marketplace de GitHub que se pueden utilizar. Si bien, también se puede desarrollar acciones propias.
Para crearlas es tan sencillo como crear el directorio .github/workflows/ en tu repositorio y dentro de dicho directorio se colocarían los ficheros yml que contienen las actions.
Para probar su funcionamiento me he creado un proyecto sencillo en GitHub y le he añadido las siguientes actions:
1 – echo example workflow.yml: Ejecuta el comando echo
//Nombre del workflow name: Execute echo command //Evento que desencadenará el workflow on: [push] //lista de trabajos a realizar jobs: //Job a ejecutar echo: //Máquina en la que se va a ejecutar el job runs-on: ubuntu-latest //Lista de steps/tareas a realizar dentro del job steps: //Tarea a ejecutar. Tiene un name con la descripción y un run con el comando a ejecutar. - name: test echo run: echo "Testing echo"
2 – mvn example workflow.yml: Ejecuta un mvn package
//Nombre del workflow name: Build and test of Java Project //Evento que desencadenará el workflow on: [push] //Configuración por defecto. defaults: run: //Se indica el directorio desde donde se ejecutarán los jobs. working-directory: example1-gitactions //lista de trabajos a realizar jobs: //Job a ejecutar build: //Máquina en la que se va a ejecutar el job runs-on: ubuntu-latest //Lista de steps/tareas a realizar dentro del job steps: //Tarea que hace un checkout del repositorio - uses: actions/checkout@v2 //Tarea que instala en la máquina java 11 - name: Set up JDK 1.11 uses: actions/setup-java@v1 with: java-version: 1.11 //tarea que ejecuta un mvn package - name: Build with Maven run: mvn -B package --file pom.xml
Nota: Repositorio Github
Configuración de una ssh-key para Github desde ubuntu.
A modo de guía, para configurar una ssh-key en ubuntu y poder conectarnos a nuestra cuenta de GitHub habría que seguir los siguiente pasos:
– Paso 1 / Ejecutar el comando
ssh-keygen -t rsa
– Paso 2 / Te preguntará donde quieres dejar la clave
Enter file in which to save the key (/home/rober/.ssh/id_rsa):
– Paso 3 / Te pedirá que introduzcas una frase de seguridad
Enter passphrase (empty for no passphrase):
– Paso 4 / Si todo ha ido bien te va a generar estos dos ficheros
Your identification has been saved in /home/rober/.ssh/id_rsa Your public key has been saved in /home/rober/.ssh/id_rsa.pub
– Paso 5 / Ahora que ya tenemos la clave nos vamos a GitHub.com en: Acount Settings -> SSG and GPG Keys -> New SSH Key
– Paso 6 / Nos pedirá que rellenemos dos campos en un formulario:
Title: Se puede poner uno descriptivo para saber desde donde se está usando esa clave. key: Se pega el contenido del fichero /home/rober/.ssh/id_rsa.pub
– Paso 7 / Dar a Add SSH Key. Y ya podremos conectarnos a la cuenta de github desde la máquina en que hemos configurado la clave.
Nota: Para cargar en la clave privada en un terminal seria usando el comando ssh-add.
ssh-add /home/rober/.ssh/id_rsa
Nota 2: Comandos para configurar tu usuario
git config --global user.email "you@example.com" git config --global user.name "Your Name"
Reparar Cámaras Xiaomi que se quedan con el led amarillo fijo
Al actualizar el firmware de las cámaras MI puede que de algún error y se queden fritas. A mi me pasó que la cámara al encenderla se quedaba con el led amarillo encendido fijo. Ni el botón reset hacia nada.
Pasos para recuperarla:
– Apagar la cámara y extraerle la SD.
– Formatear la SD en formato FAT32.
– Buscar el firmware del modelo de tu cámara. En este foro hay bastantes firmwares. En mi caso para Xiaomi Imilab A1 Camera (cmsxj19e – ipc019e)
– Poner en la SD el archivo *.img
– Volver a añadir la SD a la camara y encenderla.
– Tras pasar unos 2 minutos la cámara vuelve a funcionar.
VmWare: tips and tricks
He migrado unas maquinas virtuales VmWare que tenía con Windows XP a Windows 7. Para ello, he creado las nuevas máquinas con windows 7 y luego les he añadido los discos duros de las de XP para de forma amigable luego ir pasando lo que me interesa nada mas antes de borrer dichos discos. También, me he encontrado una serie de errores.
Añadir disco duro existente
1 – Se puede hacer desde la opción de Editar configuración. Desde ahí en la pestaña Hardware virtual, se hace click en el botón Agregar nuevo dispositivo.
2 – Seleccionar Disco duro existente en el menú desplegable. Y se abre un cuadro de diálogo para seleccionar un archivo *.wmdk.
3 – Si estaba creado con otra versión VmWare te pedirá que le conviertas el formato.
4 – Al iniciar la máquina virtual te saldrá el nuevo disco con todo su contenido.
Error: Taking ownership of this virtual machine failed
Cuando al iniciar una máquina virtual da este error y no arranca. Se soluciona eliminando el diretorio *.lck que encontraras dentro del directorio donde está esa máquina.
Esto puede pasar si al apagar la máquina ha pasado algo y se ha quedado ahí.
Error: VMware Workstation Unrecoverable Error (vcpu-0)
En este enlace hay una recopilación de todas las posibles soluciones a este error en función de lo que esté dando problemas. Listado:
– Method 1: Updating the VMware Workstation application
– Method 2: Disabling / Uninstalling another organization’s virtualization software
– Method 3: Enabling Secure Virtual Machine (SVM) or Intel Virtualization Technology from BIOS/UEFI
– Method 4: Disabling simultaneous multithreading (SMT) in the BIOS/UEFI
– Method 5: Reverting to the default clocking frequencies
– Method 6: Modifying the VMX file
Bootstrap 4 Cheat Sheet
Aunque ya tenemos la versión 5 disponible (se pueden ver las diferencias entre la version 5 y la 4 aquí).
Un buen sitio donde ver un resumen de todas las clases de Bootstrap 4 de forma amigable es el siguiente: https://hackerthemes.com/bootstrap-cheatsheet/
Por otro lado, también tenemos la siguiente imagen:
Recopilación de recursos para desarrollo web. Año 2020. (Parte 3)
Videos de Fondo
BigVideo: http://dfcb.github.io/BigVideo.js/
VideoBG: http://syddev.com/jquery.videoBG/
Tubular: http://www.seanmccambridge.com/tubular/
Misceláneos
Color Thief: http://lokeshdhakar.com/projects/color-thief/
Colorzilla: https://chrome.google.com/webstore/detail/colorzilla/bhlhnicpbhignbdhedgjhgdocnmhomnp
Tippy.js: https://atomiks.github.io/tippyjs/
Plugin con Formularios
jqueryFlexdatalist: http://projects.sergiodinislopes.pt/flexdatalist/
Gráficas
MorrisJS: https://morrisjs.github.io/morris.js/
Mapas
Google Maps: https://developers.google.com/
Node y NPM
Lite Server: https://github.com/johnpapa/lite-server
Categorias
- adobe (2)
- agile (1)
- Alfresco (1)
- Android (26)
- Angular (6)
- angularjs (10)
- apache (1)
- axis (2)
- Bases de datos (14)
- Bootstrap (1)
- C# (3)
- Cámara (1)
- chrome (3)
- Codeigniter (2)
- Control de Versiones (2)
- CSS (25)
- CVS (1)
- Django (9)
- Django Rest Framework (1)
- DNS (1)
- Docker (3)
- dominio (1)
- eclipse (5)
- Entity Framework (2)
- ETL (1)
- Firefox (6)
- flash (1)
- freecad (1)
- Git (12)
- GitHub (4)
- gpg (2)
- Groovy (1)
- Handlebars (1)
- hibernate (4)
- hosting (1)
- HTML (50)
- HTML 5 (26)
- Impresión 3D (9)
- Inkscape (1)
- IOS (2)
- ireports (3)
- Java (44)
- Javascript (55)
- JBoss (5)
- JPA (2)
- JQuery (20)
- Json (7)
- JSP (6)
- Keycloak (1)
- Lamp (1)
- LDAP (2)
- lean (1)
- linkedin (1)
- LINQ (1)
- linux (13)
- Livecycle (1)
- log (1)
- microcontroladores (1)
- MongoDB (4)
- MySQL (8)
- Node.js (5)
- OC4J (1)
- Openshift (2)
- Oracle (6)
- Patrones de Diseño (1)
- Photoshop (2)
- php (20)
- PostgreSQL (1)
- python (19)
- rabbitmq (1)
- Raspberry PI (13)
- Raspherry PI (5)
- React (6)
- seguridad (3)
- Selenium (3)
- Sencha Touch (1)
- Sin categoría (29)
- Spring (17)
- spring-boot (3)
- SQL (7)
- SQLServer (1)
- SSO (1)
- struts (2)
- SVN (1)
- Talend (1)
- Tomcat (6)
- unity (3)
- Visual Studio Code (2)
- vmware (5)
- Web Services (11)
- windows (18)
- wordpress (10)
- Xiaomi (1)
- xml (2)
Trabajos Realizados
- App Android – Autoka Fr
- App Android – Cartelera Cántabra
- App Android – Gramática y Vocabulario Ingles
- App Android – Hoja de Gastos
- App Android – Hotel Torre Cristina
- App Android – OcioEnjoy
- App Android – Visor CardBoard
- App Firefox – Managapp
- DiamanteBomba – DisasterCode
- Generador de Partes de Trabajo
- GitHub – Android Web Generator
- GitHub – Dynamic Angular Gallery
- GitHub – Dynamic React Gallery
- GitHub – Sotilizator
- GitHub – SpringAngularJS
- GitHub – Swiper Dynamic Angular Gallery
- HazParejas – DisasterCode
- RompeCabezas – DisasterCode
- Unity Game – English Couple
- Unity Game – Kill Wasp
- WordPress – El Buen Apicultor
- WordPress – El Cajón de los Retales
- WordPress – El Vestidito Azul
- WordPress – Feuchas
- WordPress – Fragua de Navajas Ponce
- WordPress – Humor a las Tres
- WordPress – Photo Places