PostgreSQL básico

Crear nuevo usuario CREATE USER <user> WITH PASSWORD '<password>'; Asignar privilegios al usuario GRANT ALL PRIVILEGES ON DATABASE <database> TO <user>; Nótese que esta operación no otorga permisos al usuario para crear nuevas bases de datos. Dar permiso al usuario para crear nuevas bases de datos ALTER USER <user> CREATEDB; Dar permisos de superusuario Podemos dar todos los permisos de gestión a un usuario normal con el comando: ALTER ROLE <user> SUPERUSER; Esto nos permite ejecutar diversos comandos, más allá de crear y utilizar bases de datos, con un usuario “normal”, como por ejemplo añadir extensiones a una base de datos existente: ...

September 23, 2012 · 2 min · José Luis Patiño Andrés

Concurrencia en Python con gevent

gevent es una librería de networking de Python basada en co-rutinas que usa “greenlets” para proporcionar una API de alto nivel para sincronizar tareas. Ejemplo de uso 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 import gevent def do_something_async(*args, **kwargs): # Hacer lo que quieras aquí... jobs = [ gevent.spawn( do_something_async, n, arg_1, arg_2, arg_3, ... kwarg_1, kwarg_2, kwarg_3, ... ) for n in whatever ] gevent.joinall(jobs, raise_error=True)

February 5, 2012 · 1 min · José Luis Patiño Andrés

Programación básica del Kernel Linux

Breve resumen de conceptos básicos de programación del Kernel Linux, utilizando Debian GNU/Linux como distribución. Todo hace referencia a la versión 2.6 del Kernel. Instalación de paquetes necesarios apt-get install git libncurses5-dev Obtención del código fuente Creamos un directorio y clonamos el repositorio del kerne: mkdir code git clone git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git linux-X.X # O también... git clone git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git linux-X.X Configuración inicial Nos situamos dentro del directorio raíz y ejecutamos make menuconfig Ahora podemos configurar manualmente las opciones de nuestro kernel. Sin embargo, podemos también copiar la configuración de nuestro kernel actual, para asegurar el funcionamiento: ...

September 28, 2011 · 2 min · José Luis Patiño Andrés

Uso básico de Tmux

Ctrl + b + ... c: Crear nueva instancia de terminal (nueva “ventana”). n: Siguiente ventana. p: Anterior ventana. 0...9: Ir directamente a ventana 0…9. &: Cerrar ventana actual. %: Dividir panel verticalmente. ": Dividir panel horizontalmente. s: Mostrar todas las sesiones activas. $: Renombrar sesión actual. (: Ir a sesión anterior. ): Ir a siguiente sesión. Compartir sesiones Un usuario arranca la sesión: tmux new -s <nombre_sesión>. Otro usuario se le une: tmux attach -t <nombre_sesión>. Ésto funciona si el usuario es el mismo en ambas sesiones. Es decir, un usuario comienza una sesión con tmux new -s en una máquina, en algún momento sale de su sesión con tmux detach (apaga la máquina, cierra el portátil), y más tarde vuelve a conectarse de nuevo con tmux attach -t. Al ser el mismo usuario, la sesión es accesible para él. ...

January 12, 2011 · 2 min · José Luis Patiño Andrés

Uso básico de Mercurial

Preparar Mercurial Creamos/editamos el fichero ~/.hgrc en sistemas *nix, o mercurial.ini en sistemas Windows: 1 2 3 4 5 6 [ui] username = José L. Patiño <jose@sharklasers.com> editor = vim [extensions] hgext.graphlog = Inicializar un proyecto hg init <PROYECTO> (si no especificamos <PROYECTO>, el presente directorio será considerado la raíz del proyecto. cd project Añadir/eliminar ficheros hd add (hg addremove) hg commit Guardar cambios hg status muestra el estado actual. hg diff muestra detalle de los cambios realizados. hg commit hg push sube los cambios al repositorio. Añadir --new-branch si la rama no existe. Ver historial hg log presenta una lista de cambios ordenados en el tiempo. hg log -p -r 3 -p o --patch muestra un diff en las revisiones. -r o --revision muestra una revisión específica. Trabajar con ramas de desarrollo hg branch feature/nueva_feature crea una nueva rama llamada feature/nueva_feature. Si no añadimos el nombre de la rama, Mercurial nos mostrará el nombre de la rama actual. hg update default nos devuelve a la rama default, que es la rama inicial con la que se crea el repositorio. Cambiando default por el nombre de la rama que queramos, podemos movernos por las distintas ramas. hg merge feature unifica los cambios de la rama llamada feature en la rama actual en la que nos encontremos. Descargar un repositorio ya creado hg clone ssh://user@server:port//project/directory Si queremos descargar sólo una rama, podemos añadir al comando anterior la opción u feature, donde feature es el nombre de la rama que queremos. ...

November 21, 2010 · 2 min · José Luis Patiño Andrés

Title: Usar Font Awesome en proyectos React JS Date: 2021-04-28 08:58 Category: Frontend Tags: frontend,styling,reactjs,fontawesome Slug: reactjs-fontawesome Authors: José L. Patiño-Andrés Summary: Instalación y configuración de Font Awesome en proyectos ReactJS. En proyectos frontend podemos usar Font Awesome, una librería de iconos vectoriales, para mostrar iconos y símbolos en nuestra pantalla. A continuación se describe cómo podemos instalar y configurar un proyecto en ReactJS para que utilice Font Awesome. Instalación En nuestro proyecto ReactJS, instalaremos la versión libre de la librería Font Awesome usando npm: ...

1 min · José Luis Patiño Andrés