SGLMS

Ultisnips (MacOSX)

A. SGLMS , 11/06/2023

Ultisnips es una herramienta poderosa para automatizar tareas. Funciona muy bien con VIM. En una instalación nueva en MacOSX Ventura (13.4), para poder ocuparlo hay que configurar algunas cosas. Suponiendo que tiene homebrew instalado, necesitará python@3.10 (Homebrew instala python@3.11 por defecto).

$ brew install python@3.10

Editores (IDE) para multiples lenguajes: Vim y VSCode

A. SGLMS , 23/02/2023

Existen multiples editores para desarrollo, pero dos de los más populares (o al menos los más usados) son Visual Studio Code (VSCode) y Vim. La elección es tema de gustos y preferencias (existen además muchas otras opciones), y una comparación entre ellos no es completa sin considererar tipo de desarrollo, tipo de proyecto, lenguaje, preferencias, etc.

Ya están disponibles muchas comparaciones en línea: https://www.google.com/search?q=vim+vcode+compare; y no pretendo agregar una más. De hecho, ocupo ambos de manera indistinta, pero hay diferencias que si son notables (para nuestro estilo de trabajo) por estar cada uno de ellos (aparentemente) en extremos opuestos en términos de su «simplicidad» (con instalaciones por defecto).

Vim es más liviano y altamente configurable, lo que lo hace más útil para equipos con capacidades reducidas (incluso tablets o celulares; solo requiere de una terminal), y personalizable según preferencias. Esto viene con un precio, y es que requiere más esfuerzo (y lectura) para adecuarlo a tus necesidades y preferencias específicas. La instalación por defecto no ofrece más que un editor (que parece) muy limitado, pero con algunos plugins puede quedar ajustado a las necesidades más exigentes, sin importar el lenguaje, proyecto o estilo de desarrollo empleado.

VSCode naturalmente también permite la instalación de plugins y la personalización, sin embargo, está basado en ventanas (requiere de un entorno gráfico), y con frecuencia es el usuario el que termina adaptándose a como opera VSCode, y no al revés.

Vim, por un lado «se presenta» como un editor muy sencillo (demasiado, quizás); VSCode por otro lado «se presenta» lleno de opciones, ventanas y menús que por momentos (para los principiantes) hacen de este IDE algo abrumador o sobrecargado; y la adición de plugins solo exacerban esta percepción.

Al final del día, la elección entre estos (y otros) es cuestión de gustos, pero ambos son igualmente útiles entornos de edición (IDEs) para todo tipo de proyecto, y están disponibles en todas las plataformas y sistemas operativos. Más aún, es posible dejar Vim en «modo VSCode»; como también puedes configurar VSCode para operar en «modo Vim».

Elige tu propio «veneno» …


Cómo conectarse de un servidor (*nix o Mac OSX) a otro, sin contraseña (Actualización)

A. SGLMS , 20/02/2023

Actualización:

Después de generar la llave (id_rsa y id_rsa.pub; descrito más abajo), también se le puede copiar al servidor remoto usando ssh-copy-id:

usuario@local:~>ssh-copy-id -i ~/.ssh/id_rsa.pub visitante@remoto
visitante@remoto´s password:
Now try logging into the machine, with "ssh 'visitante@remoto'", and check in:
.ssh/authorized_keys
to make sure we haven´t added extra keys that you weren´t expecting.

Esto agregará la llave al final de la lista de servidores autorizados (authorized_keys).

Importante: Si tienes más de una llave privada en tu equipo local, asegúrate de agregrar esta llave privada (id_rsa) a las identidades registadas en el equipo local:

$ ssh-add id_rsa

O si ocupas OSX, es mejor agregarlo al KeyChain:

$ ssh-add -K ~/.ssh/id_rsa

Si por algún motivo ssh-add no está funcionando lo más probable es que ssh-agent no esté activo. Para activarlo:

$ eval `ssh-agent -s`

Para obtener una lista de identidades (llaves) registradas:

$ ssh-add -l

Escenario:

Quieres ocupar OpenSSH para que un ‘usuario’ en el equipo ‘local’ pueda acceder como ‘visitante’ en el equipo ‘remoto’, sin tener que ingresar la contraseña de ‘visitante’ cada vez.

Procedimiento:

Primero en ‘local’, generamos un par de llaves de autentificación. IMPORTANTE: Dejar la contraseña (passphrase) en blanco.

usuario@local:~> ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/usuario/.ssh/id_rsa): 
Created directory '/home/usuario/.ssh'.
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /home/usuario/.ssh/id_rsa.
Your public key has been saved in /home/usuario/.ssh/id_rsa.pub.
The key fingerprint is:
3e:4f:05:79:3a:9f:96:7c:3b:ad:e9:58:37:bc:37:e4 a@A

Ahora, nos conectamos como ‘visitante’ usando ssh al equipo ‘remoto’ y creamos (si es que no existe) el directorio ~/.ssh.

usuario@local:~> ssh-keygen -t rsa
usuario@local:~> ssh visitante@remoto mkdir -p .ssh
visitante@remoto's password: 

Finalmente, agregamos la llave púbilca creada al archivo visitante@remoto:.ssh/authorized_keys, e ingresamos la contraseña de ‘visitante’ una última vez:

usuario@local:~> cat .ssh/id_rsa.pub | ssh visitante@remoto 'cat >> .ssh/authorized_keys'
visitante@remoto's password: 

Con versiones más modernas de OpenSSH, es necesario ocupar el archivo .ssh/authorized_keys2 y asegurarse que la carpeta y el archivo tengan los permisos apropiados:

usuario@local:~> cat .ssh/id_rsa.pub | ssh visitante@remoto 'cat >> .ssh/authorized_keys2'
visitante@remoto's password:

Y, ahora cambiamos los permisos

usuario@local:~> ssh visitante@remoto
visitante@remoto:~> chmod 700 .ssh
visitante@remoto:~> chmod 640 .ssh/authorized_keys2

Eso es todo! En adelante el ‘usuario’ podra conectarse como ‘visitante’ al equipo remoto sin ocupar una contraseña en cada oportunidad.

WordPress, Twig y Timber

A. SGLMS , 10/01/2023

Si prefieres ocupar Twig (Symphony) para la creación de plantillas, pero WordPress es tu elección como manejador de contenidos; entonces ocupa Timber. Se puede instalar directamente como todo plugin de WordPress.

La versión actual (1.0) es bastante completa, pero su documentación es algo críptica y asume que tienes un conocimiento de como funcionan los temas de WordPress.

La versión en desarrollo (2.0) promete pero aún está incompleta y es inestable.

La ventaja es que es posible extenderlo usando OOP para ajustarlo a cada necesidad.

Webpack y mini-css-extract-plugin

A. SGLMS , 08/11/2022

Cada vez que trato de ocupar webpack con mini-css-extract-plugin (MiniCssExtractPlugin.Loader) y llamar algún archivo css, me encuentro con el mismo problema, por ejemplo (usando prismjs):

$ npm run build:prod
...
ERROR in ./node_modules/prismjs/themes/prism-tomorrow.css 7:10
Module parse failed: Unexpected token (7:10)
You may need an appropriate loader to handle this file type, currently no loaders are configured to process this file. See https://webpack.js.org/concepts#loaders
...

No he investigado mucho al respecto, pero es más simple ocupar style-loader y todos los problemas se resuelven.

Como instalar WebDAV (Centos 7/8)

A. SGLMS , 02/11/2022

Hay mucha información sobre como instalar un servicio WeDav en Centos, pero la mayoría sólo funciona si quieren instalar el servicio WebDav y nada más.

Si quieres mantener tu servidor web y disponer además de un servicio WebDav, aquí está el camino:

# rpm -q centos-release
centos-release-7-7.1908.0.el7.centos.x86_64
# yum install epel-release httpd
# yum update -y
# httpd -M | grep dav
 dav_module (shared)
 dav_fs_module (shared)
 dav_lock_module (shared)

Creamos la carpeta que contendrá los archivos:

# mkdir /var/www/html/webdav
# chown -R apache:apache /var/www/html
# chmod -R 755 /var/www/html

Protege el acceso web con una contraseña:

# htpasswd -c /etc/httpd/.htpasswd username
New password: 
Re-type new password: 
Adding password for user username

También es recomendable cambiar los permisos de acceso:

# chown root:apache /etc/httpd/.htpasswd
# chmod 640 /etc/httpd/.htpasswd

Agrega un archivo de configuración para el servicio:

# vi /etc/httpd/conf.d/webdav.conf

Y, agregar lo siguiente:


 <IfModule mod_dav.c>
    LimitXMLRequestBody 131072
    Alias /webdav "/var/www/html/webdav"
    <Directory /var/www/html/webdav>
        Dav On
        Options +Indexes
        IndexOptions FancyIndexing
        AddDefaultCharset UTF-8
        AuthType Basic
        AuthName "WebDAV Server"
        AuthUserFile /etc/httpd/.htpasswd
        Require valid-user
        Order allow,deny
        Allow from all
    </Directory>
 </IfModule\>

Reiniciames el servidor apache:

# systemctl restart httpd

Y, eso es todo, ocupa un navegador e ingresa la dirección: http://xxx.xxx.xxx.xxx/webdav o puedes ocupar tu cliente dav preferido.

SFTP Usuario único (Centos 7/8)

A. SGLMS , 06/05/2022

Crear el usuario

$ sudo adduser --shell /bin/false sftpuser
$ sudo passwd sftpuser

Cear el directorio y cambiar los permisos de usuario.

$ sudo mkdir -p /var/sftp/files
$ sudo chown sftpuser:sftpuser /var/sftp/files
$ sudo chown root:root /var/sftp
$ sudo chmod 755 /var/sftp

Configurar SSH para SFTP

$ sudo vim /etc/ssh/sshd_config

Añadir lo siguiente

Match User sftpuser
	ForceCommand internal-sftp
	PasswordAuthentication yes
	ChrootDirectory /var/sftp
	PermitTunnel no
	AllowAgentForwarding no
	AllowTcpForwarding no
	X11Forwarding no

Reiniciar el Servicio SSH

$ sudo systemctl restart sshd.service

Probar la configuración

$ sftp sftpuser@sglms.com

Connecting to sftp.sglms.com ...
sftpuser@sglms.com's password:
sftp>

Entradas recientes


Archivos