Entradas

Node como servicio en CentOS 7

Imagen
Al instalar Node este no lo hace como un servicio, por eso para entornos de producción donde es necesario que el sistema este activo 24/7 es necesario utilizar alguna herramienta para este propósito. Existen varias alternativas entre las cuales está crear un script y ejecutarlo como servicio, utilizar upstart o módulos propios de node como forever o pm2, de este último va el post.
PM2 es un gestor de procesos en entornos de producción para aplicaciones Node.js con un balanceador de carga incorporado. Permite mantener las aplicaciones siempre activas, recargarlas sin tiempo de inactividad y facilitar las tareas comunes de un administrador del sistema.
sudo npm install pm2@latest -g sudo pm2 startup sudo pm2 save sudo pm2 start app.js sudo systemctl restart pm2-root
$ sudo pm2 start app.js [PM2] Spawning PM2 daemon with pm2_home=/root/.pm2 [PM2] PM2 Successfully daemonized [PM2] Starting /folder/app.js in fork_mode (1 instance) [PM2] Done. ┌──────────┬────┬──────┬─────┬────────┬────────…

Compilando PHP FPM en CentOS 7

Realmente ya no es necesario en la mayoría de los casos compilar tu propia versión de PHP pero en ciertos momentos puede ser necesario, por ejemplo, a la hora de compilar una librería que no esté plenamente difundida o por temas de rendimiento porque al crear una versión compilada puedes incluir en el núcleo de php las extensiones que utilizas.
Este procedimiento lo hice en septiembre del año pasado, cuando aún no estaba tan extendido en linux la instalación de la librería de Microsoft para SQL Server, por eso la incluyo en este manual. ¿Qué necesitamos instalar primero? yum groupinstall "Development Tools"
(yum install kernel-devel) yum install wget \ autoconf \ libxml2-devel \ krb5-devel \ libicu-devel \ gcc-c++ \ bzip2-devel \ curl-devel \ libpng-devel \ libc-client-devel \ openssl-devel \ libmcrypt-devel.x86_64 \ net-snmp \ net-snmp-devel \ git
En caso de errores podéis consultar esta guía con los 2…

Composer: allow_url_fopen, disable_functions, open_basedir

Imagen
En cualquier manual básico de seguridad en PHP se indica que las instrucciones allow_url_fopen, disable_functions y open_basedir deben ser modificadas para impedir posibles brechas. El problema es que composer utiliza estas directivas de php.ini.


Los posibles errores que nos pueden dar son los siguientes
Phar::mapPhar(): open_basedir restriction in effect. File(/composer) is not within the allowed path(s) require(phar://composer.phar/bin/composer): failed to open stream: phar error: invalid url or non-existent phar "phar://composer.phar/bin/composer" is_dir(): open_basedir restriction in effect. File(/.composer) is not within the allowed path(s) Update failed (The Process class relies on proc_open, which is not available on your PHP installation.) [Symfony\Component\Process\Exception\RuntimeException] The Process class relies on proc_open, which is not available on your PHP installation.
La forma menos segura para tratar estos errores es poner en peligro nuestra instalación…

Actualizar clave primaria autoincrement en SQL Server

Imagen
Por defecto SQL Server no deja modificar los índices autoincrement, ni siquiera poniendo la sintaxis:

SET IDENTITY_INSERT TuTabla ON GO
Para poder actualizar los valores de estos índices hay miles de tutoriales, pero a mi modo de ver todos demasiado complejos u obsoletos, con SQL Server 2016 lo he podido hacer siguiendo los pasos que voy a describir en este post.
Lo primero es actualizar todas las claves foráneas para que al actualizar el valor del índice este se actualice en cascada, esto se puede hacer desde el SSMS sin mayor problema.

Luego eliminare de la clave primaria el autoincrement de la siguiente forma:


Una vez realizado este cambio puedes modificar los valores de los índices en esa columna.
Ojo, no es necesario eliminar la clave primaria ni crear columnas adicionales como dicen otros manuales. Tampoco es necesario que en la consulta ejecutes el comando SET IDENTITY_INSERT TuTabla ON antes. Nada de esto es necesario con este procedimiento.
El último paso es volver a poner es…

Presupuestos participativos Madrid

Imagen
El pasado 25 de marzo el Ayuntamiento de Madrid cerró el plazo para apoyar las propuestas de la ciudadanía destinadas a los presupuestos de 2018, 100 millones de euros para que los madrileños inviertan en su ciudad. La pregunta que os haréis es ¿esto que pinta en un blog geek? Mucho, porque gracias a PHP, SQL Server, Power BI y Excel podemos dar respuesta a algunas preguntas que no quedan del todo claras, o son inexistentes, en la web del ayuntamiento
Preguntas como ¿número de propuestas por distrito? ¿presupuesto por distrito? ¿qué han apoyado los madrileños? Todas ellas tienen respuesta en este post.
¿Cómo he llegado a estas cifras? Primero era necesario importar en una base de datos los detalles de cada propuesta: título, apoyos, distrito y etiquetas. Estas últimas, las etiquetas, al ser creadas por los usuarios era necesario normalizarlas, de manera que de 341, eliminando duplicadas, faltas de ortografía, combinadas y agrupando, he dejado solo 169.
De esta forma transporte incl…

El mejor IDE para PHP

Imagen
Voy a comenzar diciendo que no existe un IDE perfecto, los hay mejores y peores, ninguno perfecto. El mejor IDE es el que mejor se adapte a tu proyecto, a veces es necesario utilizar uno para un proyecto antiguo que vamos a refactorizar y otro para un proyecto que comenzamos de cero.



En este blog voy a hablar de las características que creo que deberíamos de considerar a la hora de elegir nuestro entorno de desarrollo integrado (IDE), siempre enfocados a PHP. Consumo de recursos Raro es un entorno que consuma demasiada CPU pero en cuanto a RAM son bastante golosos, sobre todo los basados en Java, en la siguiente tabla veréis el consumo medio de RAM para alguno de estos IDEs.

IDERAMZend Studio 13.5.1905 MBNetBeans 8.2830 MBPHP Tools Visual Studio 2017320 MBVisual Studio Code 1.1130 MB Servicios Un buen entorno no solo debe presentar las herramientas necesarias para refactorizar, comprobar y rastrear errores, intellisense, sino permitir la integración con otros servicios como gestores d…

Una semana con Docker en Windows

Imagen
Docker para Windows ha mejorado muchísimo, recuerdo que no hace tanto intenté probarlo y no pude porque utilizaba Virtual Box y yo ya tenía Hyper-V corriendo en mi máquina lo cual me hizo imposible la prueba. Ahora, por suerte, utiliza nativamente Hyper-V y además soporta los contenedores de Windows. Pero empecemos de cero.


¿Qué es un contenedor? Hay mil definiciones online pero en resumidas cuentas un contenedor es una especie de máquina virtual con muchas limitaciones pero grandes ventajas. Los contenedores se basan en imágenes de software que parten de una imagen base y sobre la cual heredan sus características, al principio estas imágenes base solo estaban basadas en el núcleo de Linux pero con la llegada de los Server Core y Nano Core Microsoft también ha optado por crear sus imágenes base a partir de estas dos mini distribuciones de su sistema operativo. En resumen, son un entorno operativo aislado, con controlados recursos y portátil. ¿Qué es Docker? Docker no es más (a grande…