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
A.
SGLMS
,
11/03/2023
php-cs-fixer
en ocasiones (ej. a la fecha, si ocupas php-8.2; php-cs-fixer está compilado con php-8.1) puede generar un problema : The "--level" option does not exist
.
Si ocupas Vim, basta con ingresar la siguiente línea en .vimrc
.
let g:php_cs_fixer_level='all'
Actualización
La versión 3.15.1 de php-cs-fixer
resuelve estos problemas: https://github.com/PHP-CS-Fixer/PHP-CS-Fixer.
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» …
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.
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.
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.
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.
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>