David Bohm

Hay dos frases que definen mi manera de pensar:
Realmente no hemos prestado mucha atención al pensamiento como un proceso; hemos participado en pensamientos, pero sólo hemos prestado atención al contenido, no al proceso.
La capacidad de percibir o pensar de manera diferente es más importante que el conocimiento adquirido.
Ambas son de David Bohm.

viernes, 22 de julio de 2022

Microsoft Edge en Fedora workstation 36

Instalar Microsoft Edge en Fedora es bastante sencillo, y de momento tiene bastante estabilidad. Yo lo uso para los productos microsoft que tengo contratados y la verdad es que me da buenas senaciones usar su navegador para sus productos.

Tras realizar una actualización completa de Fedora, importamos la clave GPG:

   # rpm --import https://packages.microsoft.com/keys/microsoft.asc

Añadimos el repositorio:

   # dnf config-manager --add-repo https://packages.microsoft.com/yumrepos/edge

Refrescamos la lista de repositorios:

   # dnf update --refresh

Ya podemos instalar el navegador Edge:

   # dnf install microsoft-edge-stable

Una vez terminada la instalación, podemos buscarlo en Gnome y lanzarlo. Lo primero que hago es elegir el tema focalizado, sincronizar mi cuenta y así ya dispongo de todas mis extensiones y favoritos.

SaluDOS

miércoles, 20 de julio de 2022

Instalando y predeterminando zsh en Fedora 36 workstation

No soy un fan de grandes personalizaciones en cuanto al shell que utilizo en mi día a día. Cuando accedo a un servidor, donde he intentado cambiar lo menos posible para que todo cumpla un estándar básico, habitualmente uso bash, el shell predeterminado en muchas distribuciones para servidores.

Para instalar zsh solo tenemos que ejecutar:

   # dnf install zsh

Si ejecutamos zsh cambiamos a ese shell:

   # zsh

Podemos comprobar el shell predeterminado que tiene nuestro usuario, para eso consultaremos el archivo /etc/passwd y extraeremos la linea de nuestro usuario:

   # cat /etc/passd | grep usuario

   usuario:x:1000:1000:Nombre Apellido:/home/usuario:/bin/bash

El final de la linea establece el shell por defecto para el usuario, en este caso /bin/bash

Para predeterminar zsh para nuestro usuario utilizaremos el comando chsh:

   # chsh -s $(which zsh) usuario

Obviamente 'usuario' tendremos que cambiarlo por el alias de nuestro usuario. Podemos comprobar si se ha predeterminado zsh:

   # cat /etc/passd | grep usuario

   usuario:x:1000:1000:Nombre Apellido:/home/usuario:/usr/bin/zsh

Si en algún momento queremos hacer lo contrario, y predeterminar bash, solo tenemos que volver a ejecutar el mismo comando pero indicando que deseamos predeterminar bash:

   # chsh -s $(which bash) usuario

Si cuando estamos en la terminal queremos saber con que shell estamos trabajando podemos ejecutar:

   # echo $SHELL

Esto mostrará la shell que se está ejecutando, dando como resultado la ruta:

   /bin/bash

O si es zsh:

   /usr/bin/zsh

Cuando lanzamos zsh por primera vez, aparecerá un asistente zsh-newuser-install, esto se debe a que no tenemos todavía configurados los ficheros de inicio de zsh, como por ejemplo .zshrc, aparecerá este menú o similar:

This is the Z Shell configuration function for new users, zsh-newuser-install.
You are seeing this message because you have no zsh startup files (the files .zshenv, .zprofile, .zshrc, .zlogin in the directory ~). This function can help you with a few settings that should make your use of the shell easier.

You can:

(q) Quit and do nothing. The function will be run again next time.

(0) Exit, creating the file ~/.zshrc containing just a comment.

That will prevent this function being run again.

(1) Continue to the main menu.

--- Type one of the keys in parentheses ---

Si vamos al menú principal pulsando 1, tendremos varias opciones:

Please pick one of the following options:

(1) Configure settings for history, i.e. command lines remembered and saved by the shell. (Recommended.)

(2) Configure the new completion system. (Recommended.)

(3) Configure how keys behave when editing command lines. (Recommended.)

(4) Pick some of the more common shell options. These are simple "on" or "off" switches controlling the shell's features.

(0) Exit, creating a blank ~/.zshrc file.

(a) Abort all settings and start from scratch. Note this will overwrite any settings from zsh-newuser-install already in the startup file. It will not alter any of your other settings, however.

(q) Quit and do nothing else. The function will be run again next time.

--- Type one of the keys in parentheses ---

Si seguimos las recomendaciones del asistente, podemos hacer una configuración básica, para ello vamos pulsando:

   1 para configurar el historial, aceptamos los valores que propone y pulsamos 0 para volver al menú principal.

   2 para configurar el autollenado, aceptamos los valores predeterminados pulsando 1 para volver al menú principal.

   3 para configurar el editor predeterminado, pulsamos 1 y en mi caso selecciono vi pulsando v y volvemos al menú principal pulsando 0.

   4 para configurar las opciones de zsh. Podemos verlas ejecutando man zshoptions; inicialmente se recomienda no configurarlas hasta que no controles un poco mas zsh

   0 para guardar la configuración realizada. Se creará .zshrc

Te advierte que no se volverá a ejecutar el asistente, pero nos ofrece que ejecutar si queremos volver a ejecutarlo:

The function will not be run in future, but you can run it yourself as follows:

  autoload -Uz zsh-newuser-install
  zsh-newuser-install -f

The code added to ~/.zshrc is marked by the lines

# Lines configured by zsh-newuser-install
# End of lines configured by zsh-newuser-install

You should not edit anything between these lines if you intend to run zsh-newuser-install again.  You may, however, edit any other part of the file.

Veremos que el prompt cambia, mostrando un % y si comprobamos el shell que se está ejecutando veremos que es zsh.

Podemos mostrar el archivo .zshrc para ver que tiene una estructura básica según lo que hemos configurado en el asistente, solo por curiosidad merece la pena

   # cat .zshrc

 SaluDOS.

martes, 7 de junio de 2022

Primeros pasos tras instalar Fedora 36 Workstation

Una vez que tenemos Fedora 35 Workstation con Gnome Shell 41 recien instalado me gusta hacer varios pasos para estar cómodo desde el primer momento:

  • Configuramos la cuenta principal de usuario que utilizaremos y marcamos las opciones de privacidad o envío de telemetría para ayudar en el proyecto. Esto es muy personal yo nunca activo la ubicación.
  • Configuramos la red para que tengamos conectividad. En mi caso configuro tanto la red de cable como la WiFi.
  • Instalamos una cuenta en la nube que es la que utilizo como repositorio documental, eso permitirá tener acceso rápido a toda la documentación a través de Archivos, como si fuese una unidad de red convencional. Solo activamos la sincronización de archivos.
  • Desinstalamos las aplicaciones que no nos interesan o no vamos a utilizar jamás. En mi caso son calendario, contactos, mapas, editor, etc. Esto depende de como trabajes con Linux y las aplicaciones que utilices de normal. Es verdad que Fedora no te instala mucha aplicación extra.
  • Vamos a retoques y elegimos en apariencia el tema oscuro. Necesito que mi vista esté lo mas descansada posible a lo largo del día. Si te cuesta al principio localizar las cosas... insiste, merece la pena.
  • Vamos a accesibilidad y cambiamos el tamaño del cursor. Si eres joven no lo necesitas.
  • Instalamos las extensiones de gnome shell, lo he comentado en esta entrada. Ojo hasta día de hoy en Fedora 36 hay un problema haciendolo desde firefox o chromium y es por el paquete gnome-shell, es mejor hacer un downgrade ejecutando:

# dnf install gnome-shell-42.0-3.fc36

  • Abrimos la terminal y la fijamos en el dock, debe estar siempre a mano. Habitualmente fijo en el dock algunas de las aplicaciones que uso de forma continua para tener un acceso rápido.
  • Antes de instalar nada nuevo realizamos un update completo. En fedora ejecutariamos:
# dnf update -y
  • Instalamos tweaks (retoques) y hacemos aparecer los botones maximizar y minimizar en la barra de título de las ventanas.
  • Comprobamos la versión de python e instalamos python3-pip.
  • Instalamos los repositorios rpmfusion:

Non-free:
# dnf install https://download1.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-$(rpm -E %fedora).noarch.rpm

Free:
# dnf install https://download1.rpmfusion.org/free/fedora/rpmfusion-free-release-$(rpm -E %fedora).noarch.rpm

Comprobamos con:
# dnf repolist
  • Configuramos la VPN para tener conectividad a nuestra red desde cualquier sitio.
  • Instalamos o descargamos (AppImages) las aplicaciones que utilizo de normal:
    • vim: Mi editor principal en la terminal .
    • htop: Para poder ver los procesos en ejecución en la terminal.
    • lnav: Una forma que ayuda y mucho a ver los logs en la terminal.
    • wget: Para descargar contenido directamente en la terminal.
    • curl: Para trabajar con URLs directamente en la terminal.
    • git: Imprescindible para control de versiones.
# dnf install vim htop lnav wget curl git
    • Remmina: Para realizar conexiones remotas a los servidores que administro.
    • Discord: Para participar en los grupos en los que tengo algo que decir. Para el hacking hay grupos muy interesantes.
    • OBS studio para la grabación de videos.
# dnf install remmina discord obs-studio
    • Visual Studio Code: Mi editor de código principal para casi todo. Comento su instalación en esta entrada. Es la instalación oficial de Microsoft, puedes optar por instalar VS Codium desde aqui.
    • PyCharm Community: Mi editor de código para python, se puede instalar directamente desde el repositorio oficial de Fedora.
    • Code::Blocks: Mi editor de código para C y C++, se puede instalar directaemnte desde el repositorio oficial de Fedora.
# dnf install pycharm-community codeblocks
    • VMware Workstation pro: Instalo mi licencia profesional para trabajar con máquinas virtuales. Tengo que hacer una entrada con estas instrucciones.
    • Docker Desktop. Gestión de contenedores, últimamente todo son dockers. Comento su instalación en esta entrada.
    • Telegram desktop: Para participar en los grupos en los que tengo algo que decir, pero sobre todo para que mis bots me informen de las alertas realmente importantes. Lo descargo como appimage de appimagehub.com
    • Balena Etcher: habitualmente necesito crear pendrives de arranque. Lo descargo desde su página web oficial.
    • yt-dlp: para descargar videos de youtube y verlos sin conexión a internet y sobre todo sin publicidad. La forma más cómoda de instalarlo es con pip.
# pip install yt-dlp
  • Restauramos las copias de seguridad, máquinas virtuales, archivos, notas, dot files, etc... y terminamos de comprobar el comportamiento de cada aplicación o herramienta.
  • Con las comprobaciones anteriores aprovechamos a fijar en el dock las aplicaciones que uso de continuo: terminal, firefox, archivos, VS Code, PyCharm, Code::blocks, VMWare, Docker desktop, Remmina, Software, Configuración, OBS Studio, Telegram y discord.
Estos mismos pasos, excepto la parte de VMWare workstation pro los he reproducido tal cual para Fedora 36 y también funcionan.
 
SaluDOS

sábado, 21 de mayo de 2022

Extensiones en Gnome Shell que pueden ayudarte en tu día a día

Estas son algunas de las extensiones que utilizo en Gnome Shell 42.1 sobre Fedora 36 y me aportan mejoras al manejar el sistema operativo:

Si, está claro que sin cambiar el fondo de escritorio o sin que las ventanas se cierren prendiendo en llamas se puede vivir, pero el resto de extensiones son interesantes.

SaluDOS

miércoles, 18 de mayo de 2022

Instalando Docker Desktop en Fedora 36

Una vez que te acostumbras a hacerlo todo con comandos, la verdad es que resulta hasta cómodo, pero es verdad que el usuario que no es conocedor de la terminal, docker y ciertas peculiaridades de este mundillo puede sufrir bastante.

Para quien lo ha utilizado en entorno Windows, docker se instala con una versión de escritorio que te lo hace mas sencillo, y esta versión de escritorio al fin ha llegado a Linux.

Vamos a la página oficial de docker, sigamos las instrucciones y veamos como instalarlo en Fedora 36:

Lo primero será desinstalar docker y docker-compose si ya lo tenemos como es mi caso:

   # dnf remove docker docker-compose

Instalamos el repositorio:

   # dnf config-manager --add-repo https://download.docker.com/linux/fedora/docker-ce.repo

Descargamos el paquete .rpm de la última versión que tengamos en la página oficial de docker, actualmente la versión 4.8.1, y realizamos la instalación:

   # dnf install ./docker-desktop-4.8.1-x86_64.rpm

Lo buscamos en gnome y lo lanzamos...ya tenemos nuestra aplicación de escritorio para gestionar los dockers.

SaluDOS

Visual Studio Code en Fedora

Si vamos a la página oficial de VS Code, podremos encontrar unas maravillosas instrucciones para instalar VS Code en Linux.

Para distribuciones basadas en Red Hat, tendríamos que seguir los siguientes pasos:

# rpm --import https://packages.microsoft.com/keys/microsoft.asc

# sh -c 'echo -e "[code]\nname=Visual Studio Code\nbaseurl=https://packages.microsoft.com/yumrepos/vscode\nenabled=1\ngpgcheck=1\ngpgkey=https://packages.microsoft.com/keys/microsoft.asc" > /etc/yum.repos.d/vscode.repo'

Actualizamos la caché e instalamos, para Fedora 22 o superior:

# dnf check-update 

# dnf install code

Para versiones mas antiguas:

# yum check-update 

# yum install code

SaluDOS
 

sábado, 7 de mayo de 2022

Crear una página web con python en 4 sencillos pasos

1. Preparar el entorno de desarrollo

Obviamente debemos tener instalado python y python-pip. 

Instalaremos flask con pip:

   $ pip install flask

Depende del sistema operativo y como tengamos el entorno pero ultimamente con flask se instala jinja. Nos lo indicará al finalizar la instalación de flask, pero si no lo vemos claro no cuesta nada ejecutar:

   $ pip install jinja2

Utilizaremos visual studio y vamos a necesitar las siguientes extensiones para que la creación del código base sea instantánea:

   - Bootstrap 4

   - Flask-Snippets

2. Preparar el directorio y los archivos

Estos pasos se pueden realizar desde el propio VS Code.

   - Creamos un directorio, por ejemplo: /home/usuario/web

   - Dentro del directorio web creamos el fichero web.py y un subdirectorio llamado: templates

   - Dentro del subdirectorio templates creamos el fichero: index.html

3. Crear el código fuente utilizando la ayuda de las extensiones

Abrimos el fichero web.py, comenzamos a teclear la palabra fapp, la extensión de Flask lo detectará, pulsamos enter y nos genera el código necesario, algo como esto:

from flask import Flask, render_template
app = Flask(__name__)


@app.route('/')
def index():
return render_template('index.html')

if __name__ == '__main__':
app.run(host='127.0.0.1', port=8000, debug=True)

De este código lo importante a tener en cuenta es:

   - el fichero index.html en la parte de template debe ser el mismo nombre que el archivo que hemos generado en el subdirectorio templates. Si cambiamos el nombre en el código de python debemos cambiar el nombre al ficher .html

   - el puerto podemos elegir el que queramos, 8080, 8081, etc... Luego la conexión debemos hacerla a ese puerto.

Ahora abrimos el fichero index.html y volvemos a utilizar la magia de las extensiones de VS Code. Comenzamos a teclear b4 y veremos que aparecen varias opciones, la primera es b4-$, pulsamos enter y ya tenemos el código de la plantilla creado.

Podemos personalizar algo dentro de <body> para que sepamos al comprobar que es nuestra web, por ejemplo: <p>Hola mundo!</p>

Quedaría algo así:

<!doctype html>
<html lang="en">
<head>
<title>Title</title>
<!-- Required meta tags -->
<meta charset="utf-8">
<meta name="viewport" content="width=device-width...

<!-- Bootstrap CSS -->
<link rel="stylesheet" href="https://stackpath.bootstrapcdn...
</head>
<body>
<p>Hola Mundo!</p>
</body>
</html>

Guardamos los dos archivos antes de seguir.

4. Ejecutar python y comprobar la página web

Desde el propio VS Code, en la terminal o desde una consola entrando al directorio web, podemos ejecutar:

   $ python web.py

Veremos que se ejecuta el programa y nos muestra algo similiar a esto:

   $ python web.py
      * Serving Flask app 'web' (lazy loading)
      * Environment: production
         WARNING: This is a development server. Do not use it in a production deployment.
         Use a production WSGI server instead.
      * Debug mode: on
      * Running on http://127.0.0.1:8000 (Press CTRL+C to quit)
      * Restarting with stat
      * Debugger is active!
      * Debugger PIN: 481-632-688

Si nos ponemos sobre el enlace a la web http://127.0.0.1:8000, veremos que se nos indica que si mantenemos pulsado Ctrl y hacemos clic sobre el enlace, se abrirá el navegador predeterminado donde podremos ver la página web que hemos creado.

Veremos ese maravilloso Hola Mundo! que indica que lo hemos hecho todo correctamente.

SaluDOS


Instalar Visual Studio Code en Arch Linux

Los pasos son sencillos:

Debemos tener instalado git. Vamos a usar los repositorios AUR (Arch User Repository), así que comenzamos clonando el repositorio:

   $ mkdir /home/usuario/git

   $ cd /home/usuario/git

   $ git clone https://aur.archlinux.org/visual-studio-code-bin.git

Entramos al directorio y hacemos el make:

   $ cd visual-studio-code-bin.

   $ makepkg -si.

Instalamos con yay o paru:

   $ yay -S visual-studio-code-bin

 Listo!

SaluDOS

sábado, 6 de noviembre de 2021

Programar en C con Visual Studio Code en Windows 10

Vamos a configurar el compilador de C y Visual Studio Code para poder desarrollar, compilar y ejecutar nuestros programas.

Lo primero que haremos será descargar el compilador, para ello vamos al enlace: https://es.osdn.net/projects/mingw/

Descargamos MinGW y lo ejecutamos. Comenzará la descarga del gestor de instalación. Una vez que esté listo nos permite la instalación de paquetes. De la lista en 'Basic Setup' que muestra y para desarrollo en C vamos a seleccionar:

  • mingw-developer-toolkit-bin
  • mingw32-base-bin
  • mingw32-gcc-objc-bin
  • msys-base-bin  

Para desarrollo en C++ tendríamos que seleccionar:

  • mingw32-gcc-g++-bin

Al marcarlos los estamos seleccionando para su instalación. En el menú 'Installation' hacemos clic en 'Apply Changes' para que realice la instalación de los paquetes seleccionados.

La instalación la habremos hecho por ejemplo en C:\MinGW, ahora tenemos que agregar a la variable de entorno PATH la ruta: C:\MinGW\bin, esto nos permitirá llamar al compilador desde cualquier sitio sin necesidad de indicar una ruta absoluta.

Si abrimos una consola podemos ejecutar:

   C:\> gcc --version

Y obtendremos el resultado de la versión instalada.

En Visual Studio Code agregamos la extensión: C/C++ de Microsoft (C/C++ - Visual Studio Marketplace) y C/C++ Extension Pack de Microsoft (C/C++ Extension Pack - Visual Studio Marketplace)

Creamos un archivo 'helloworld.c' e introducimos el siguiente código:

// Hola Mundo

#include <stdio.h>

int main () {
    printf ("Hola Mundo!!! \nWelcome to C!!!");
    return 0;
}

Pulsamos F5 para compilar el código y la primera vez Visual Studio Code nos preguntará el compilador que deseamos utilizar. Seleccionamos C++ (GDB/LLDB) para después indicar que queremos utilizar el compilador que hemos instalado con MinGW: gcc.exe

Se abrirá el archivo de configuración .json que deberemos modificar, donde pone:

   "externalConsole": false,

Cambiaremos a true el valor que define este parámetro:

   "externalConsole": true,

Guardamos el archivo, cerramos y volvemos a pulsar F5, se realizará la compilación del programa creandose un helloworld.exe que podremos ejecutar y comprobar el resultado de nuestro primer programa

SaluDOS

domingo, 26 de septiembre de 2021

Edge en Ubuntu 20.04

Ya hemos visto en otras entradas que Microsoft está dando pasos de gigante para acercarse al mundo GNU/Linux. Es verdad que habría que evaluar si esto es bueno o no, pero a priori sin exprimirnos mucho el cerebro está claro que es positivo. Se han liberado proyectos muy potentes como Visual Studio Code o el mismo Powershell, algo que acerca a los administradores de sistemas herramientas que nos permiten tener una gestión centralizada de nuestras infraestructuras mixtas. Todo ello con el código fuente al alcance de poder ser modificado.

Vamos a la página: https://www.microsoftedgeinsider.com/en-us/download/?platform=linux

Y podremos encontrar disponible la versión Beta del navegador Edge basado en Chromium y que está rompiendo muchas barreras a nivel corporativo en muchas compañías. Su módulo de compatibilidad con IE está permitiendo que las empresas se pasen a este navegador manteniendo las herramientas o desarrollos que todavía no han migrado a entornos actualizados.

Desde esta página, una vez aceptados los terminos de Microsoft, podemos descargar la versión en paquetería .deb para Ubuntu. Si nos desplazamos mas abajo veremos que existen paquetes para otros sistemas operativos y distribuciones como .rpm

Realizamos la instalación:

   # dpkg -i microsoft-edge-beta_94.0.992.31-1_amd64.deb

Hay que tener en cuenta que es una versión preliminar destinada fundamentalmente a los desarrolladores para que puedan ir viendo los resultados de trabajar con sus aplicaciones web en este navegador para validar o adaptar los desarrollos.

En mi caso, nada mas lanzar la aplicación me ofrece un detalle interesante: 

   La aplicación Microsoft Edge (beta) se cerró inesperadamente.

No indagaremos mas, soy fan de Firefox y no necesito (de momento) Edge en mis equipos linux.

SaluDOS

Microsoft To-Do directamente en Ubuntu 20.04 LTS

En el caso de Microsoft To-Do, hay varias alternativas, programas desarrollados de forma alternativa y parecía una buena idea ver cuales son.

Indagando sobre el tema, he decidido acabar usando el que viene en los repositorios oficiales, a través de Ubuntu Software. Realizamos la búsqueda de To-Do y obtenemos 2 resultados interesantes:

Microsoft To-Do (unofficial)

Por un lado tenemos Microsoft To-Do (unofficial), una versión no oficial de este software. El desarrollador es Patrick Wu y es un paquete snap, la fuente es snapcraft.io

La instalarlo, obtenemos una conexión a la página web de Microsoft To-Do, introducimos nuestras credenciales y tenemos acceso a la herramienta. Es un acceso a la web y nos permite interactuar en ella a través de una ventana independiente que podemos abrir y cerrar, se puede agregar a favoritos como si fuese una aplicación independiente.

AO

El otro resultado que aparece en la búsqueda es Ao, y se describe como "Elegant Microsoft To-Do desktop app". En este caso el repositorio se encuentra en: https://github.com/klaussinani/ao desarrollado por Klaus Sinani. También es un paquete snap y la fuente es snapcraft.io

En este caso vamos a realizar una instalación diferente, descargamos el paquete .deb para amd64, lo cogeremos directamente desde: https://github.com/klaussinani/ao/releases/tag/v6.9.0

Ejecutaremos:

   # wget https://github.com/klaussinani/ao/releases/download/v6.9.0/ao_6.9.0_amd64.deb

Realizamos la instalación

   # dpkg -i ao_6.9.0_amd64.deb

Al abrir el programa ocurre lo mismo que el anterior, se conecta a la web, introducimos las credenciales y ya tenemos conexión con nuestro To-Do.

En este caso Ao va un paso mas allá, tiene un menú que interactúa con la herramienta, se puede crear una nueva lista, renombrar, eliminar, etcétera. Además nos permite tener atajos a través de las opciones que presenta este desarrollo. En la versión que hemos instalado hay atajos que facilitan la productividad para no soltar el teclado, algunos ejemplos:

Buscar: Ctrl + F 

Trabajar con las listas:

   Nueva lista: Ctrl + L
   Eliminar lista: Ctrl + Shift + D
   Cambiar el nombre de la lista: Ctrl + Y

Desplazarnos por los diferentes apartados de To-Do:

   Ir a Mi día: Ctrl + M
   Ir a Importante: Ctrl + I
   Ir a Planificado: Ctrl + P
   Ir a Tareas: Ctrl + J

Salir: Alt + Ctrl + Q

Como se indica en el apartado de atajos (https://github.com/klaussinani/ao#keyboard-shortcuts) se pueden personalizar los métodos abreviados en: ~/.ao.json

En general las dos herramientas funcionan bien y permiten trabajar con To-Do. Al final es como entrar a la página web y hacerlo desde el navegador. Es verdad que es mas cómodo tenerlo en una ventana independiente, como hemos visto en entradas anteriores que se puede hacer con Outlook por ejemplo. 

SaluDOS.

jueves, 2 de septiembre de 2021

Cuando los electrones te permiten tener Office 365 on line de Microsoft en Ubuntu 20.04 LTS

Como ya hemos visto en una entrada anterior, a través de una aplicación hecha en electron hemos sido capaces de simular que tenemos OneNote en nuestro GNU Linux . Al final es una ventana que "engancha" la aplicación on line, embebe esa web en una ventana y da la sensación de que es una aplicación instalada, aunque solo es un navegador.

Existe algo parecido para las aplicaciones de Office, por ejemplo outlook me parece una opción interesante para tenerlo configurado de este modo y no tener que abrir el navegador y tirar de un marcador cada vez que quieres abrirlo.

En esta ocasión el repositorio es: https://github.com/matvelloso/electron-office/

Se ve que no se ha actualizado desde Diciembre de 2019 donde hicieron el último commit, pero creo que puede seguir funcionando sin problemas, el concepto al fin y al cabo es la web del portal de Office embebida en una ventana. Para probarlo es realmente facil, solo tenemos que ir a Release y localizar el paquete .deb apropiado para nosotros.

Podemos ver que son pre-releases, actualmente en la versión 1.1.2. El enlace que utilizaremos para wget es: https://github.com/matvelloso/electron-office/releases/download/1.1.2/outlook.office365.com_1.1.2_amd64.deb

Ejecutamos:

   # cd ~/Downloads/

   # wget https://github.com/matvelloso/electron-office/releases/download/1.1.2/outlook.office365.com_1.1.2_amd64.deb

   # dpkg -i outlook.office365.com_1.1.2_amd64.deb

Si sale algún error ejecutamos:

   # apt install -f

Ahora ya podemos buscar la aplicación 'Outlook for o365 on Electron' y lanzarla en Ubuntu. Veremos que es la versión On Line embebida en una ventana. Creo que es una solución original y práctica.

Es cierto que nada tienen que ver las versiones webs con la versión de escritorio, pero de momento vamos a probarlo.

En caso de que queramos tener la suite de office, sería hacer la misma instalación con el paquete que se encuentra en el mismo repositorio:  https://github.com/matvelloso/electron-office/releases/download/1.1.2/office.office365_1.1.2_amd64.deb

Al hacerlo, tendremos la aplicación 'Office 365 on Electron' que podremos buscar y lanzar en Gnome Shell. En esta ventena tendremos embebida la web portal.office.com con todas las aplicaciones de Microsoft con las que cuente nuestra suscripción. Quizás con esto, evitaríamos tener que instalar el paquete anterior, pero reconozco que a mi me está gustando el tener outlook en una ventana simulando que lo tengo instalado.

SaluDOS


miércoles, 1 de septiembre de 2021

Conectandonos a unidades de red a través de "Archivos" de Gnome con Ubuntu 20.04

Cuando en Windows tenemos unidades de red corporativas del estilo: \\Servidor.dominio.com\Unidad_Compartida$ aunque no te lo creas, también se puede mapear la unidad en nuestro GNU Linux Ubuntu 20.04.

Entramos a Archivos, el explorador de archivos predeterminado en Gnome Shell, actualmente la aplicación se encuentra en su versión 3.36.3-stable

Solo tenemos que ir a "Otras Ubicaciones" y a la derecha nos saldrán dos grupos, el de nuestro equipo y el de Redes, justo debajo tenemos una opción llamada "Conectar al servidor".

Es bastante sencillo, tenemos que especificar el protocolo y la ruta, por ejemplo:

   smb://Servidor.dominio.com/Unidad_Compartida$ 

Y hacer clic en Conectar. Se nos mostrará un cuadro de diálogo para que introduzcamos los datos de conexión. Podemos utilizar un usuario anónimo si la unidad de red lo permite, aunque no sería lo habitual o deseable.

Lo normal es que tengamos que introducir:

   Nombre de Usuario

   Dominio

   Contraseña

Además podemos decidir que queremos que se haga con la contraseña.

   Olvidar contraseña inmediatamente

   Recordar la contraseña hasta salir de la sesión

   Recordar para siempre 

La opción mas deseable por seguridad sería la segunda. Aunque cada vez que iniciemos sesión en Ubuntu tengamos que introducirla, no cuesta nada y ahorramos disgustos a futuro.

Para desconectar esta conexión, solo tenemos que pulsar en el botón al estilo extrae tu USB o CD que se encuentra junto a la unidad mapeada, o mostrar el menú contextual con el botón derecho del ratón sobre ella y elegir la opción "desmontar". Realizará un desmontaje de la unidad mapeada, le puede costar un poco hasta que la desconecta del todo. Paciencia.

Tenemos la opción de conectarnos también a sistemas de archivos en red a través de nfs. Sería similar a lo que hemos hecho anteriormente. Este caso podría ser aplicable si tenemos un NAS en casa y queremos establecer una conexión NFS a una de las carpetas del NAS por ejemplo.

SaluDOS

Cuando los electrones te permiten tener OneNote on line de Microsoft en Ubuntu 20.04 LTS

Ya vimos en una entrada pasada que Microsoft Teams tiene una preview que funciona bajo nuestro GNU Linux, tiene limitaciones, alguna bastante limitante como el no poder poner un fondo y que todo el mundo vea la habitación donde estás, pero supongo que poco a poco irá avanzando el proyecto.

Veamos como podemos tener OneNote a través de un programa alternativo: P3X OneNote Linux o como lo denominan ahora en GitHub: Linux Electron Onenote.

El repositorio se encuentra en: https://github.com/patrikx3/onenote que actualmente está en la versión 2021.10.109, así que el proyecto se muestra muy activo y actualizado hace 5 días.

Aunque en GitHub muestran el enlace: https://www.corifeus.com/onenote/

En esta última web explican muy bien que es esta aplicación y copio literalmente: P3X OneNote Linux es, en realidad, una ventana de navegador independiente para el OneNote online. Puedes utilizar este programa sin tener que saturar tu navegador. 

Las funciones principales son:

  • que es independiente de cualquier navegador, ya que funciona en su propio proceso
  • dispone de una bandeja, que permite cerrar el navegador mientras sigue funcionando en la bandeja
  • los datos se almacenan en caché y es más rápido que abrir siempre una nueva ventana
  • permite iniciar la sesión con el usuario corporativo o personal
  • cuando hay una nueva actualización, se actualiza automáticamente (Sólo en la versión AppImage.)
  • el programa permite usar otras aplicaciones online de Microsoft, pero el propósito dedicado es usar OneNote

Tenemos un par de opciones de instalación, con paquetería snap, estos serían los pasos, aunque no los he probado, no dudo que funcionará:

   # apt update

   # apt upgrade

   # apt install snapd

   # snap install p3x-onenote

Con paquetería de software universal AppImage, que no requiere instalación de la aplicación y además como muestran en sus funciones principales, se actualizará de forma automática. Así que esta es la opción que elegiremos.

En la propia web nos muestran el proceso de descarga y ejecución, veamos los pasos. Buscamos en el propio repositorio de GitHub las Release, vamos a la última y localizamos el paquete AppImage para amd64 y con extensión .AppImage. Ese será el enlace que vamos a utilizar en la descarga con wget.

Ejecutamos:

   # cd ~/Downloads/

   # wget https://github.com/patrikx3/onenote/releases/download/v2021.10.109/P3X-OneNote-2021.10.109.AppImage

   # mkdir -p $HOME/opt 

   # mv P3X-OneNote-2021.10.109.AppImage $HOME/opt/ 

   # chmod +x $HOME/opt/P3X-OneNote-2021.10.109.AppImage 
Ya podemos lanzar la aplicación:
   # cd $HOME/opt
   # ./P3X-OneNote-2021.10.109.AppImage 

Una vez que lanzamos la aplicación, se abre la ventana y nos solicita las credenciales de nuestra cuenta de microsoft.

Tenemos también la alternativa de instalar paquete .deb, sería aun mas sencillo, localizamos el paquete en GitHub para amd64 con extensión .deb, que es mi caso, y este enlace es el que utilizaremos para la descarga con wget

   # cd ~/Downloads/

   # wget https://github.com/patrikx3/onenote/releases/download/v2021.10.109/p3x-onenote_2021.10.109_amd64.deb

 Instalamos:

   # dpkg -i  p3x-onenote_2021.10.109_amd64.deb

Si salen errores, lanzamos:

   # apt install -f

El resultado es que ya podemos buscar en nuestras aplicaciones PS3X OneNote,  lanzarlo y utilizarlo. En el primer rato de uso, la verdad es que funciona muy muy bien.

SaluDOS


lunes, 16 de agosto de 2021

Linuxeando en Steam y probando juegos

Para tener Steam en Ubuntu 20.04 solo tenemos que instalar el repositorio:

   # add-apt-repository multiverse

   # apt update -y

Realizar la instalación de steam:

   # apt install steam -y

Al abrir steam realizará la correspondiente actualización y podremos iniciar sesión. Una vez dentro vamos a cambiar las opciones sobre su uso en Linux.

   Vamos a Menú Steam > Parámetros > Steam Play > Avanzadas

   Activamos Steam Play para los demás títulos

Dejamos Proton Experimental, pero siempre podemos cambiar la versión de Proton si no funciona el juego en Linux, aunque ir hacia atrás en este caso no tiene mucho sentido.

Al iniciar el juego, Steam realizará varias descargas, el juego por un lado y proton experimental o la versión que hayamos elegido, por otro lado aquellos complementos que necesite.

Ahora mismo todos los juegos que tengo comprados, funcionan perfectamente, algunos están marcados como compatibles sobre linux y otros no.

SaluDOS



miércoles, 11 de agosto de 2021

Instalación de Minecraft en Ubuntu 20.04

Bastante sencillo el instalar Minecraft en ubuntu.

Primero descargamos el paquete .deb

   # wget https://launcher.mojang.com/download/Minecraft.deb

Realizamos la instalación del paquete:

   # sudo dpkg -i Minecraft.deb

Es posible que nos de error de dependencias perdidas o rotas, algo así como "dependency problems". Habitualmente es que no tenemos instalado Java en nuestro equipo. Lanzamos este comando en el que le decimos que instale todas las dependencias que necesite:

   # apt -f install

Y listo, ya podemos meternos en nuestros mundos de minecraft.

En caso de necesitarlo, para desinstalarlo ejecutamos:

   # apt --purge remove minecraft-launcher

No debemos olvidar que minecraft guarda habitualmente todo en un directorio oculto dentro de nuestra carpeta personal. Así que es conveniente ejecutar:

   # rm -r ~/.minecraft/*

SaluDOS

martes, 27 de julio de 2021

Testeando un mando de PS3 directamente en web

Ya no juego tanto como antes, pero me ha surgido el reutilizar un mando que tenia con conexión USB para PS3. Es un mando de una marca de tipo "ACME", que me costó hace muchos años relativamente poco.

Si necesitamos testear algo así, es sencillo, vamos a la página web: https://gamepad-tester.com/

Si no has conectado el mando, o si lo tienes conectado y no lo detecta, la propia página de inicio mostrará un mensaje: NO GAMEPAD DETECTED

En el momento en el que conectamos el mando, en mi caso muestra: Sony PS3 Dualshock

Por debajo un esquema de botones y sensores. Cuando pulsamos algo en el mando, nos muestra la detección. Simplemente maravilloso.

Te informa de los datos que recolectan, hay que tener en cuenta que para usar esta web no hemos tenido que introducir ningún dato personal.

   - Nombre del dispositivo

   - Códigos de producto y proveedor

   - Número de ejes comunicados

   - Número de botones notificados

   - Datos de la serie temporal (frecuencia con la que se informa de los dispositivos)

   - Versiones del navegador y del sistema operativo

   - No se recogen datos personales del usuario

La recolección parece razonable.

SaluDOS

Grabando en negro en OBS Studio con Debian 10 Buster y Gnome

Cuando OBS Studio no es capaz de capturar la pantalla, muestra fondo negro y solo ves pasar el cursor de un lado para otro, habitualmente se trata de un tema de configuración y tiene solución.

En Ubuntu nunca me ha dado problemas, supongo que es parte de su magia para que todo sea sencillo. Pero en Debian 10 Buster con Gnome si que me ha dado guerra, aunque solo hay que cambiar el comentario de una línea. Cuidado, a veces es tema de drivers de gráfica, configuración de OBS, etcétera y la cosa puede complicarse.

Si OBS Studio es capaz de grabar ventanas concretas pero no toda la pantalla esta solución se prueba de forma rauda y veloz. No perdemos nada intentar trabajar en Xorg y no en Wayland para comprobar el resultado.

Vamos a desactivar el inicio de sesión de Wayland, para ello vamos a editar el siguiente archivo:

   # vim /etc/gdm3/custom.conf

Buscamos la siguiente línea:

   #WaylandEnable=false

La descomentamos y quedará así:

   WaylandEnable=false

Guardamos y cerramos el archivo de configuración y reiniciamos el equipo. Si probamos OBS debería de ser capaz de grabar toda la pantalla y no solo ventanas.

SaluDOS

miércoles, 30 de junio de 2021

Cortando videos en Linux con VidCutter

Ultimamente me toca recortar videos de forma rápida, vamos a ver una herramienta muy sencilla que podemos utilizar en linux, en este caso sobre Ubuntu 20.04

Instalamos el repositorio, actualizamos e instalamos vidcutter:

   # sudo add-apt-repository ppa:ozmartian/apps

   # sudo apt update

   # sudo apt install vidcutter

Una vez instalado podemos abrir la aplicación para arrastrar el video que queremos recortar sobre la ventana de VidCutter.

Seleccionamos el punto de inicio y hacemos clic en START CLIP, vamos hasta donde queremos que esté el final del video y hacemos clic en END CLIP. 

Comprobamos que tenemos el fragmento del video que deseamos extraer y hacemos clic en SAVE CLIP y seleccionamos la ruta y el nombre que queremos poner al archivo.

Es un programa sencillo pero cumple su función.

SaluDOS



 

miércoles, 5 de mayo de 2021

Katoolin el planeta que te instala las herramientas de kali

Si tenemos una distribución debian o derivada como ubuntu, podemos realizar la instalación de las herramientas de kali de una forma bastante sencilla.

Añadimos el repositorio universe:

    # add-apt-repository universe

Actualizamos y clonamos el repositorio de katoolin3

   # apt update -y

   # git clone https://github.com/s-h-3-l-l/katoolin3

Ponemos permiso de ejecución para el script de instalación:

   # chmod +x ./install.sh

Ejecutamos:

   # ./install.sh

Nos deberá decir que la instalación ha sido satisfactoria y ya podemos ejecutar:

   # katoolin3

Entraremos a un menú en el que nos permitirá realizar varios pasos:

   Main Menu
   0) View Categories
   1) Install All
   2) Uninstall All
   3) Search repository
   4) List installed packages
   5) List not installed packages
   6) Install Kali Menu
   7) Uninstall old katoolin
   8) Help
   9) Exit

Para mi lo mejor es la opción 0, viendo las categorías de Kali podremos elegir que aplicación instalar para así poder contar solo con las herramientas que utilicemos de verdad.

SaluDOS


miércoles, 28 de abril de 2021

Cuando al coger la jarra queremos ejecutar el archivo .jar en Debian

Hace ya muchos años que a los archivos de java que tienen extensión .jar los llamo jarras, me gusta realizar traducciones literales "al vuelo".

Para poder ejectuar un .jar en Debian, para poder realizar una instalación por ejemplo y evitar que simplemente nos muestre el contenido del archivo, tenemos que generar el siguiente fichero:

   # vim /usr/share/applications/java.desktop

Introducimos dentro el siguiente contenido:

   [Desktop Entry] 

   Name=Java 

   Comment=Java 

   GenericName=Java 

   Keywords=java 

   Exec=java -jar %f 

   Terminal=false 

   X-MultipleArgs=false 

   Type=Application 

   MimeType=application/x-java-archive 

   StartupNotify=true

Una vez generado este archivo y guardado el contenido, podremos ponernos sobre un archivo .jar y en el cuadro de diálogo abrir con... nos permitirá seleccionar Java.

SaluDOS

domingo, 28 de marzo de 2021

Perdiendo el miedo a generar archivos docker-compose.yml

Todavía hay muchisima referencia en internet a dockers en los que solo se muestra el comando largo y complejo de una línea para levantar un contenedor.

Docker-compose nos ayuda a levantar y parar los contenedores de una forma ágil, habiendo definido previamente todos los parámetros y sin tanto lio como lanzando un línea gigantesca de parámetros en la que si nos hemos confundido tenemos que andar reeditando de malas maneras.

Para instalar docker-compose lanzamos el comando:

   # apt install docker-compose -y

Con docker-compose, solo tenemos que generar un directorio, meter dentro un archivo llamado docker-compose.yml, si está bien contruido, en esa misma ruta lanzamos:

   # docker-compose up

Esto nos mostrará que hace el contenedor y sus logs. Podemos pulsar ctrl+c para parar la ejecución y el contenedor se parará, si cerramos la terminal también Si queremos que se lance en segundo plano, solo tenemos que incluir el parámetro -d

   # docker-compose up -d

Para revertir lo que acabamos de hacer lanzamos:

   # docker-compose down

Este comando detiene y elimina el contenedor, las redes, los volúmenes y las imágenes creadas por up.

El el archivo yaml tenemos que especificar la versión, para conocerla ejecutamos:

   # docker-compose version

Hay que tener en cuenta que siempre hay retrocompatibilidad, pero es importante especificar la versión correcta y seguir evolucionando con la herramienta.

Para tener mas detalles sobre que versión utilizar, tenemos la documentación oficial:

   https://docs.docker.com/compose/compose-file/

   https://docs.docker.com/compose/compose-file/compose-versioning/

Podríamos seguir revisando todos los parámetros posibles, pero según el título de esta entrada queremos perderle el miedo a generar estos archivos. El camino directo cuando nos encontramos un comando docker para levantar un contenedor, solo tenemos que ir a la siguiente página:

   https://www.composerize.com/

Solo tenemos que introducir el comando y aparecerá el archivo docker-compose definido.

SaluDOS

Doctor Jenkins y Mister Docker en uno solo

Jenkins es un servidor automatizado de integración continua de código abierto. Jenkins es capaz de automatizar y probar las compilaciones de código fuente y muestra los errores que puedan aparecer en este proceso. A través de complementos puede ser ampliado en cuanto a características y funcionalidades añadidas.

Jenkins puede ser montado sobre un docker, esto claramente aligera notablemente los pasos para desplegarlo y es lo que vamos a ver. Eso sí, elegiremos mapear volúmenes para que la instalación sea persistente.

El contenedor que mantiene la comunidad actualmente es: https://hub.docker.com/r/jenkins/jenkins

Y podemos encontrar la documentación ofician en la que nos especifican como montarlo aquí: https://github.com/jenkinsci/docker/blob/master/README.md

Algunos parámetros a tener en cuenta:

   -d --> Para que corra en segundo plano

   -v jenkins_home:/var/jenkins_home --> montamos el volumen para que los datos sean persistentes ante operaciones de parada, reinicio y borrado del docker.

   -p 8080:8080 -p 50000:50000 --> Puertos que debemos mapear entre host y contenedor. Si el puerto 8080 ya lo tenemos ocupado en nuestro host, podríamos mapearlo en otro, por ejemplo: -p 8087:8080

   jenkins/jenkins:lts --> especificamos la imagen que mantiene la comunidad.

 Así que el comando completo quedaría para ejecutarlo:

   # docker run -d -v /var/jenkins_home:/var/jenkins_home -p 8087:8080 -p 50000:50000 jenkins/jenkins:lts

DOCKER-COMPOSE

El fichero docker-compose.yml tendrá el siguiente contenido:

   version: '3.3' 

      services: 

         jenkins: 

            volumes: 

               - '/var/jenkins_home:/var/jenkins_home' 

            ports: 

               - '8087:8080' 

               - '50000:50000' 

            image: 'jenkins/jenkins:lts'

Una vez que el docker está arrancado, podremos ir a http://localhost:8087, habrá que esperar un poco hasta que jenkins esté preparado. Nos solicitará lo siguiente:

Unlock Jenkins

To ensure Jenkins is securely set up by the administrator, a password has been written to the log (not sure where to find it?) and this file on the server:

/var/jenkins_home/secrets/initialAdminPassword

Así que podemos ir a esa ruta en nuestro equipo local, copiar la contraseña e introducirla para poder continuar. Con el siguiente comando obtenemos la contraseña:

    # cat /var/jenkins_home/secrets/initialAdminPassword

Una vez que hemos confirmado que somos administradores los que estamos configurando Jenkins, ya podemos seguir con el siguiente paso, configurar los posibles complementos a instalar.

Para no complicarnos de momento la vida y probarlo, podemos instalar los plugins sugeridos entre los que a día de hoy se encuentran:

Folders
OWASP Markup Formatter
Build Timeout
Credentials Binding
Timestamper
Workspace Cleanup
Ant
Gradle
Pipeline
GitHub Branch Source
Pipeline: GitHub Groovy Libraries
Pipeline: Stage View
Git
SSH Build Agents
Matrix Authorization Strategy
PAM Authentication
LDAP
Email Extension
Mailer
 
Tendremos que definir el usuario administrador y su contraseña, después nos preguntará por la URL que queremos que tenga la instancia, esta URL es la que se ofrecerá a los usuarios de Jenkins. Exactamente dice:
 
Configuracíon de la instancia:
 
La URL de Jenkins se utiliza para proporcionar la URL raíz para los enlaces absolutos a varios recursos de Jenkins. Esto significa que este valor es necesario para el correcto funcionamiento de muchas características de Jenkins, incluyendo las notificaciones por correo electrónico, las actualizaciones de estado de PR, y la variable de entorno BUILD_URL proporcionada a los pasos de construcción.
El valor propuesto por defecto que se muestra no se guarda todavía y se genera a partir de la solicitud actual, si es posible. La mejor práctica es establecer este valor a la URL que se espera que utilicen los usuarios. Esto evitará confusiones al compartir o ver los enlaces.

Lo ideal sería generar una entrada DNS con certificado y que la llamada fuese a un subdominio concreto, de cara a los programadores quedará mucho mas profesional. Para probarlo en nuestro propio equipo lo dejamos así, sin complicaciones.
 
Listo, ya podemos comenzar a trabajar con Jenkins.

SaluDOS

sábado, 27 de marzo de 2021

Gestión de dockers con Portainer

Para la gestión de docker siempre tenemos disponible nuestra amiga la consola de comandos, pero... ¿que tal si podemos utilizar un entorno gráfico?

Portainer nos permite gestionar los dockers a través de un portal web. Se instala en forma de docker y a partir de ahí podrás gestionar todos los dockers locales y remotos. 

Algunos parámetros a especificar:

   -d --> Para que se ejecute en segundo plano (dettach)

   --name portainer --> nombre del contenedor

   --restart always

   -p 9000:9000

   -v /var/run/docker.sock:/var/run/docker.sock --> este volumen es necesario para poder gestionar los dockers locales.

 El comando completo

   # docker run -d --name portainer --restart always -p 9000:9000 -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer-ce

Al acceder a http://localhost:9000, la primera acción será configurar la contraseña de administrador de Portainer.

DOCKER-COMPOSE

El fichero docker-compose.yml tendrá el siguiente contenido:

   version: '3.3' 

   services: 

      portainer-ce: 

         container_name: portainer 

         restart: always 

         ports: 

            - '9000:9000' 

         volumes: 

            - '/var/run/docker.sock:/var/run/docker.sock' 

            - 'portainer_data:/data' 

         image: portainer/portainer-ce

SaluDOS

martes, 23 de marzo de 2021

SQL Server en Linux... tal cual lo estás leyendo!

Está claro que no hay limites cuando se trata de contenedores. Efectivamente, podemos montar un SQL Server con un contenedor en una máquina con Linux, en este caso sobre Debian 10.

Si vamos a Docker Hub, podemos encontrar esta imagen mantenida oficialmente por Microsoft:

   https://hub.docker.com/_/microsoft-mssql-server

Los requerimientos que debemos cumplir:

   - Docker Engine 1.8 o superior

   - Por lo menos 2 GB de memoria RAM

   - ACCEPT_EULA=Y, confirmamos que aceptamos estas condiciones

   - SA_PASSWORD=<contraseña robusta por lo menos 8 caracteres>

   - MSSQL_PID= ID de producto/Nombre de edición. Predeterminado el valor Developer.

Los valores aceptados para especificar la edición que desplegamos en el contenedor son:

   - Developer : Esto ejecutará el contenedor usando la Edición Developer (es el valor por defecto si no se suministra la variable de entorno MSSQL_PID) 

   - Express : Esto ejecutará el contenedor usando la Edición Express

   - Standard : Esto ejecutará el contenedor usando la Edición Standard

   - Enterprise : Esto ejecutará el contenedor usando la Edición Enterprise

   - EnterpriseCore : Esto ejecutará el contenedor usando la edición Enterprise Core 

Tenemos que tener presente que estamos aceptando el EULA al lanzar estos comandos, así que vaya por delante que tenemos que cumplir las condiciones de licenciamiento con Microsoft. Por ello podemos utilizar SQL Sever 2017 para entornos de desarrollo y SQL Server Express para entornos de producción.

Hay que tener en cuenta que la versión Express tiene varias limitaciones en la memoria máxima utilizada de 1 GB por el motor de base de datos, 1 MB de caché de buffer máximo, uso máximo de 1 socket y 4 cores de CPU y la limitación de 10 GB en el tamaño de base de datos. No tiene limite en el número de usuarios concurrentes.

Para lanzar un contenedor con una instancia de la última versión de SQL Server:

   # docker run -e 'ACCEPT_EULA=Y' -e 'SA_PASSWORD=Pa$$w0RD' -p 1433:1433 -d mcr.microsoft.com/mssql/server:2017-latest

Para lanzar un contenedor con una instancia de la versión Express:

   # docker run -e 'ACCEPT_EULA=Y' -e 'SA_PASSWORD=Pa$$w0RD' -e 'MSSQL_PID=Express' -p 1433:1433 -d mcr.microsoft.com/mssql/server:2017-latest-ubuntu 

Una vez lanzada la instancia, solo tenemos que abrir dbeaver, seleccionar una nueva conexión a SQL Server y rellenar los datos:

   - Servidor: localhost

   - Puerto: 1433

   - Database/Schema: Master 

   - Autenticación: SQL Server Authentication

   - Usuario: sa

   - Contraseña: Pa$$w0RD

Quizás haya que esperar un poco a que establezca la conexión y ya podemos trastear con SQL Server, crear una base de datos, tablas, etcétera. 

DOCKER-COMPOSE

Para la versión SQL Express el archivo docker-compose.yml tendría:

   version: '3.3' 

   services: 

      run: 

         environment: 

            - ACCEPT_EULA=Y 

            - SA_PASSWORD=Pa$$w0RD 

            - MSSQL_PID=Express 

         ports: 

            - '1433:1433' 

         image: run

SaluDOS

Reduciendo, recortando y rebajando la escritura de texto con MARKDOWN

Markdown es un lenguuaje de marcado ligero que trata de que sea fácil de escribir y fácil de leer.  

Este lenguaje, cada vez mas utilizado, tiene la extensión de archivo .md

Para aprender a escribir en markdown hay muchos tutoriales por internet, por ejemplo: https://www.markdownguide.org/ o también en castellano https://www.markdowntutorial.com/es

Editores hay cientos por no decir miles, pero podemos tener 2 alternativas interesantes y sobre todo sencillas:

   Editor on line:  https://stackedit.io/

   Editor instalable: https://remarkableapp.github.io/linux/download.html

Además siempre podemos escribir en formato markdown en Visual Studio Code.

Y por supuesto hay muchisimas referencias que contemplan gran parte de la sintaxis: https://markdown.es/sintaxis-markdown/

A continuación una referencia rápida, pero lo mas recomendable es seguir un tutorial y experimentar con markdown, es la única forma de aprender.

FORMATO DE FUENTE

   Cursiva:    _palabra_    _frase en cursiva_

   Negrita:    **palabra**    **frase en negrita**

   Negrita y cursiva:    **_palabra_**    **_frase en negrita y cursiva_**

   Tachado:    ~~palabra~~    ~~frase tachada~~

ENCABEZADOS

   Encabezado 1:    #Encabezado 1#

   Encabezado 2:    ##Encabezado 2##

   Encabezado 3:    ###Encabezado 3###

PARRAFOS

   Ruptura dura: [Enter] al final de cada linea, empieza un nuevo párrafo después de pulsar la tecla [Enter].

   Ruptura blanda: Introducimos 2 espacios en blanco al final de cada línea. Genera un salto de línea pero la nueva línea la mantiene en el mismo párrafo.

ENLACES

   Enlace a web:    [Visita mi web](www.gaizka.net)

   Enlace con formato:    [Visita mi **web**](www.gaizka.net)

   Enlace en encabezado:    ###Visita mi [web](www.gaizka.net)###

   Enlace referencia: Para que la referencia a una URL esté solo en un punto al que podamos referenciar en cualquier parte del documento. Si tenemos que cambiar el enlace lo hacemos solo donde realmente tenemos la referencia.

       Esto por ejemplo es una referencia a [Mi web][Enlace miweb]

       [Enlace miweb]:www.gaizka.net 

IMAGENES

   Imagen:    ![Texto alternativo opcional](URL de la imagen)

   Imagen referenciada: Es el mismo concepto de referencia a una URL mediante una etiqueta que podremos especificar mas adelante.   

       ![Texto alternativo opcional][Referencia imagen]

       [Referencia imagen]: URL de la imagen    

CITAS

   Cita:    > "Texto de la cita a una fuente" 

   Cita combinando formatos: Las citas pueden contener cursiva, negrita, imágenes, etcétera.

NOTAS AL PIE DE PÁGINA

Las notas se marcan con el símbolo ^ y el número de nota encerrados entre corchetes. Da igual donde pongamos la nota real, siempre irá al pie del documento. Veamos un ejemplo:

   De esta forma marcariamos la nota 1 [^1] y asi [^2] habríamos incluido la segunda nota al pie de página. Después en cualquier momento del documento pondriamos la nota.

   [^1]: Texto de la primera nota a pie de página. 

   [^2]: **Texto de la segunda nota de pie de página** a la que podemos aplicar *formato* como al resto del texto.

LISTAS

   Elementos de lista: Podemos utilizar guion (-), símbolo más (+) o asterisco

       * Elemento 1

       * Elemento 2 

       * Elemento 3

   Elementos de lista numerada:

       1. Elemento 1

       2. Elemento 2

       3. Elemento 3

   Listas con niveles: Solo hay que separar o tabular los asteriscos del subnivel

       * Elemento 1

          * Subelemento 1.1

          * Subelemento 1.2

       * Elemento 2 

   Listas numeradas y con subniveles. Combinando las listas anteriores podemos...

       1. Elemento 1

          * Subelemento 1.1

          * Subelemento 1.2

       2. Elemento 2

   Listas de verificación: Los elementos no seleccionados deben tener un espació en blanco entre los corchetes.

       [ ] Elemento 1

       [x] Elemento 2 seleccionado

       [ ] Elemento 3

TABLAS

Para crear tablas utilizaremos el símbolo 'tubería' (|)

   | Titulo Columna 1 | Titulo Columna 2|

   |----------------------------|---------------------------|

   | Contenido celda 1| Contenido celda 2|

   | Contenido celda 3| Contenido celda 4|

 

SaluDOS

lunes, 22 de marzo de 2021

Qucs simulando circuitos electrónicos

Quite Universal Circuit Simulator, en su abreviatura: Qucs, es un simulador integrado de circuitos que utiliza una interfaz gráfica para introducir los componentes que forman el circuito y realizar simulaciones. 

Permite la simulación: en corriente continua, alterna, análisis paramétrico, análisis de balance de armónicos, análisis de ruido, etcétera. Además presenta una interfaz sencilla y simple de manejar. 

Su página web:  http://qucs.sourceforge.net/

Para utilizarlo de forma sencilla sobre cualquier distribución linux, vamos a utilizar la opción de hacerlo a través de un contenedor.

Docker: https://hub.docker.com/r/qucs/qucs

Como especifican desde el docker oficial, para ejecutar el programa solo tenemos que ejecutar la siguiente línea:

   # docker run --rm \ --volume /tmp/.X11-unix:/tmp/.X11-unix \ --volume ~/workspace:/home/.qucs \ qucs/qucs

Automáticamente se abrirá la aplicación en una ventana con interfaz gráfica.

DOCKER-COMPOSE

El contenido del archivo docker-compose.yml será:

   version: '3.3' 

   services: 

      qucs: 

         volumes: 

            - '/tmp/.X11-unix:/tmp/.X11-unix' 

            - '~/workspace:/home/.qucs' 

         image: qucs/qucs

SaluDOS

viernes, 5 de marzo de 2021

Instalar docker-compose en CentOS 7

Para instalar docker-compose en un servidor con CentOS 7 tenemos que seguir los siguientes pasos:

Descargamos la última versión que podemos encontrar en:  https://github.com/docker/compose/releases/

En estos momentos vemos que la última versión es la 1.28.5. La descargamos introduciendo la versión adecuada que tenemos instalada mediante uname y lo llevamos a la ruta adecuada, todo en una misma línea:

   # curl -L "https://github.com/docker/compose/releases/download/1.28.5/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

Añadimos permiso de ejecución:

   # chmod +x /usr/local/bin/docker-compose

Comprobamos $PATH, queremos poder lanzar docker-compose desde cualquier ruta en la que nos encontremos:

   # echo $PATH

Añadimos la ruta a $PATH si no contiene la ruta donde está docker-compose:

   # export PATH="/usr/local/bin:$PATH"

Comprobamos la versión:

   # docker-compose --version

SaluDOS
 

domingo, 28 de febrero de 2021

Instalar GitLab con docker

GitLab además de su versión en la nube puede ser instalado en un servidor o máquina virtual. Pero otra opción muy interesante es la de desplegarlo en un contenedor.

El docker que vamos a utilizar es el oficial de GitLab y en concreto la versión CE (Community Edition):

    https://hub.docker.com/r/gitlab/gitlab-ce/

La documentación oficial la podemos encontrar en:

   https://docs.gitlab.com/omnibus/docker/

Verás que trata sobre la versión Enterprise, pero como indican mas abajo, solo tienes que sustituir gitlab-ee por  gitlab-ce en todos los comando propuestos.

Para correr el docker de GitLab, tendremos que especificar los siguientes parámetros:

   -d --> Para ponerlo en segundo plano (dettach)

   -p 443:443 --> Puerto 443 en el docker y el correspondiente en nuestro equipo

   -p 80:80

   -p 22:22

   --name gitlab --> Nombre del docker

   --restart always --> reiniciará ante errores

   -v /srv/gitlab/config:/etc/gitlab 

   -v /srv/gitlab/logs:/var/log/gitlab

   -v /srv/gitlab/data:/var/opt/gitlab

Para desplegar este docker solo debemos lanzar este comando:

   # docker run -d -p 443:443 -p 80:80 -p 22:22 --name gitlab --restart always -v /srv/gitlab/config:/etc/gitlab -v /srv/gitlab/logs:/var/log/gitlab -v /srv/gitlab/data:/var/opt/gitlab gitlab/gitlab-ce

Es posible que cuando vayamos a acceder a http://localhost obtengamos una respuesta similar a: 502 - Whoops, GitLab is taking too much time to respond. Debemos dejar pasar un rato, hasta que GitLab arranque completamente.

Vamos a ver como cambiar la contraseña de root, son pocos pasos y nos permite repetir la operación siempre que queramos. Lo primero nos conectamos al docker de forma interactiva:

   # docker exec -it gitlab bash

Una vez dentro del contenedor, ejecutamos:

   # gitlab-rails console -e production

Tendremos que esperar a que vuelva a aparecer el prompt y ejecutamos:

   > user = User.where(id: 1).first

   > user.password = 'ContraseñaNueva'

   > user.password_confirmation = 'ContraseñaNueva'

   > user.save

   > exit

Salimos de la consola del docker:

   # exit

Y ya podemos entrar a http://localhost de nuevo e iniciar sesión con el usuario root y la nueva contraseña que hemos especificado anteriormente. A partir de ahí pura esencia GitLab!!!

DOCKER-COMPOSE

El fichero docker-compose.yml deberá contener:

   version: '3.3' 

      services: 

         gitlab-ce: 

            ports: 

               - '443:443' 

               - '80:80' 

               - '22:22' 

            container_name: gitlab 

            restart: always 

            volumes: 

               - '/srv/gitlab/config:/etc/gitlab' 

               - '/srv/gitlab/logs:/var/log/gitlab' 

               - '/srv/gitlab/data:/var/opt/gitlab' 

            image: gitlab/gitlab-ce

SaluDOS

domingo, 21 de febrero de 2021

Sentencias útiles en MySQL

Vamos a ver varios ejemplos útiles para trabajar con MySQL, son cosas sencillas y muy básicas pero creo que interesantes y del día a día.

Empezaremos conectándonos al servidor de base de datos con usuario root:

   # mysql -u root -p 

CREAR USUARIOS, PRIVILEGIOS Y BASES DE DATOS

Para no utilizar el usuario root en labores de administración, lo ideal es crear un usuario diferente como por ejemplo adminUSER:

   > GRANT ALL PRIVILEGES ON *.* TO 'adminUSER'@'localhost' IDENTIFIED BY 'Pa$$w0rd';

Generar una base de datos es tan sencillo como lanzar la siguiente sentencia SQL especificando el nombre de la base de datos:

    CREATE DATABASE testDB;

Si vamos a crear un usuario específico para que sea administrador solo de esa base de datos podemos crear el usuario adminTEST:

   > GRANT ALL PRIVILEGES ON testDB.* TO 'adminTEST'@'localhost' IDENTIFIED BY 'Pa$$w0rd';

La próxima vez que nos conectemos al servidor de base de datos podremos iniciar sesión con este usuario, así solo tendremos privilegios sobre la nueva base de datos:

   # mysql -u adminTEST -p 

Muchas veces necesitamos un usuario que tenga privilegios de solo lectura sobre una base de datos, por ejemplo un usuario de servicio con el que vamos a monitorizar. Empecemos viendo como crear un usuario que tendrá acceso desde el mismo servidor de base de datos solo a la base de datos especificada:

   > GRANT SELECT ON testDB.* TO 'readTEST'@'localhost' IDENTIFIED BY 'Pa$$w0rd';

Si lo que deseamos es que se conecte desde cualquier equipo remoto:

   > GRANT SELECT ON testDB.* TO 'readTEST'@'%' IDENTIFIED BY 'Pa$$w0rd';

O podemos ser mas restrictivos especificando el nombre DNS o la dirección IP desde la que se conectará el usuario con acceso de lectura:

   > GRANT SELECT ON testDB.* TO 'readTEST'@'NombreServidorRemoto' IDENTIFIED BY 'Pa$$w0rd';

Siempre que cambiemos los privilegios de un usuario o lo creemos, hay que ejecutar:

   > FLUSH PRIVILEGES;

CREAR TABLAS

Cuando estamos conectados a un servidor con varias bases de datos, primero tendremos que ejecutar la sentencia para utilizar una base de datos concreta:

   > USE testDB;

Una forma rápida de generar tablas en MySQL es a través de un pequeño script, aunque siempre podemos utilizar un editor gráfico como podría ser DBeaver. Debemos especificar el nombre de la tabla, los campos que la componen y sus características. Veamos algunos ejemplos:

Creación de una tabla de usuarios: Crearemos UserID, un campo que será clave principal, autoincremental y no podrá ser null. Además crearemos una serie de campos de texto de tamaño variable para especificar los datos del usuario, alias, nombre, etcétera. Por último un campo de tipo booleano para establecer si el usuario está activo o no.

   > CREATE TABLE DBUsers (
         UserID int NOT NULL AUTO_INCREMENT,
         Alias varchar (50) NOT NULL,
         FirstName varchar(100),
         LastName varchar(100),
         Email varchar(150),
         Enabled boolean DEFAULT 1,
         PRIMARY KEY (UserID)
         );

Creación de una tabla de grupos de usuarios o roles: Crearemos GroupID, un campo que será clave principal, autoincremental y no podrá ser null. Además estableceremos el campo con el nombre del grupo y un campo booleano para establecer si el usuario está activo o no.


   > CREATE TABLE DBGroupsList (
         GroupID int NOT NULL AUTO_INCREMENT,
         GroupName varchar (50) NOT NULL,
         Enabled boolean DEFAULT 1,
         PRIMARY KEY (GroupID)
         );

Creación de una tabla en la que asignaremos usuarios a grupos especificando los identificadores de usuario y grupo. Además añadimos un campo que establezca si esa asignación está activa o no. Además estos campos tienen que estar conectados a las tablas que definen la lista de usuarios y la lista de grupos, para eso son las claves foráneas.


    > CREATE TABLE DBGroupsAssign (
         UserID int NOT NULL
         GroupID int NOT NULL,
         Enabled boolean DEFAULT 1,
         FOREIGN KEY (UserID) REFERENCES DBUsers(UserID),
         FOREIGN KEY (GroupID) REFERENCES DBGroupsList(GroupID)
         );

MODIFICAR TABLAS

Una labor muy común es modificar una tabla, vamos a ver el caso mas frecuente, por ejemplo que tenemos que añadir un campo.

En este ejemplo vamos a añadir la fecha de alta en la tabla de usuarios. Además como lo queremos en un sitio concreto, podemos especificar FIRST para ser el primer campo de la tabla o AFTER para especificar el campo detrás del que queremos insertar el nuevo.

   > ALTER TABLE DBUsers ADD StartDate DATETIME AFTER Alias;

Otro caso muy frecuente es modificar alguna característica de un campo ya existente. Por ejemplo vamos a modificar la longitud de un campo, imaginemos que el Email se nos ha quedado corto en la tabla de usuarios. Además vamos a hacer que sea un campo obligatorio, que no pueda estar vacio.

   > ALTER TABLE DBUsers MODIFY Email varchar(255) NOT NULL;

SaluDOS

Montar un docker mysql y conectarse desde dbeaver

VERSIÓN

Antes de montar el docker de mysql, es mejor revisar este enlace y decidir la versión que queremos utilizar:

https://hub.docker.com/_/mysql

Actualmente los dockers soportados son las siguientes versiones de mysql:

   8.0.23   8.0.8   latest

   5.7.33   5.7   5

   5.6.51   5.6

Además vamos a tener la precaución de que los datos sean persistentes. Una vez que se elimine el docker, podremos volver a levantarlo y tendremos nuestras bases de datos intactas.

CREACIÓN DEL DOCKER

Veamos que parámetros vamos a utilizar para levantar el docker, algunos los especificaremos pero son opcionales.

   -d --> Modo en segundo plano (detached)

   --rm --> Cuando paremos el contenedor automáticamente se eliminará

   --name mysql --> Nombre del docker

   -e --> Sirve para pasar al docker una variable de entorno, en este contenedor le vamos a especificar la contraseña del usuario root. seguido de este parámetro especificamos la variable y su valor:

   MYSQL_ROOT_PASSWORD=Pa$$w0rD

   -p 3306:3306 --> Puerto 3306 en el equipo y el correspondiente en el docker

   -v mysql_data:/var/mysql --> Ruta local del equipo y la correspondiente en el docker, esto hará que los datos se guarden en el equipo local y sean persistentes siempre  que especifiquemos la misma configuración del volumen.

   mysql:latest --> última versión del docker de mysql en el repositorio oficial Docker Hub. Si quisieramos una versión concreta, podriamos especificarla:

      mysql:5.7.33

El comando completo sería:

   # docker run -d --rm --name mysql -e MYSQL_ROOT_PASSWORD=Pa$$w0rD -p 3306:3306 -v mysql_data:/var/mysql mysql

Comprobamos que el docker está funcionando:

   # docker ps -a

DOCKER-COMPOSE 

El fichero docker-compose.yml tendría el siguiente contenido:

   version: '3.3' 

   services: 

      mysql: 

         container_name: mysql 

         environment: 

            - MYSQL_ROOT_PASSWORD=Pa$$w0rD 

         ports: 

            - '3306:3306' 

         volumes: 

            - 'mysql_data:/var/mysql' 

         image: mysql

CONEXIÓN DESDE DBEAVER

Para conectarnos a la base de datos que tenemos en un contenedor en nuestro propio equipo, creamos una nueva conexión, seleccionamos mysql y especificamos los datos básicos:

   - Server Host: localhost

   - Port: 3306

   - Nombre de usuario: root

   - Contraseña: Pa$$w0rD

Al finalizar podremos realizar la conexión. Es posible que aparezca algún error en la conexión debido a un parámetro mal configurado. Tanto al crear la conexión como al editarla, en la pestaña Driver Properties podremos reconfigurar una infinidad de parámetros y su valor en la conexión.

Si la conexión no la realizamos desde el mismo equipo que tiene el docker, hay que tener en cuenta que para conexiones remotas tendremos que abrir correctamente los puertos en el firewall del equipo que contiene el contenedor de mysql.

SaluDOS