Entradas

Mostrando entradas de 2017

Instalación y configuración de subversion en Windows

Imagen
Así se instalaba y configuraba Collbanet Subversion Edge en 2011. ¿Qué es Subversion? Antes de saber que es Subversion debemos tener en cuenta algunos conceptos previos cómo el de versión , control de versiones y sistemas de control de revisiones . Una versión , revisión o edición de un producto, es el estado en el que se encuentra dicho producto en un momento dado de su desarrollo o modificación. Se llama control de versiones a la gestión de los diversos cambios que se realizan sobre los elementos de algún producto o una configuración del mismo. Los sistemas de control de versiones facilitan la administración de las distintas versiones de cada producto desarrollado, así como las posibles especializaciones realizadas. Un Sistema de Control de Revisiones ( Revision Control System - RCS) es una implementación de software para el control de versiones que automatiza las tareas de guardar, recuperar, registrar, identificar y mezclar versiones de archivos. Resumiendo,

Recomendaciones para SQL Server con Dynamics NAV

Max Server Memory MAX_SERVER_MEMORY = TOTAL_SERVER_MEMORY - [OS/Apps Memory] - [Threads * Thread Size] TOTAL_SERVER_MEMORY = 24GB OS/Apps Memory = 4 GB (systems with > 16GB of RAM) Threads = 576 Thread Size = 2MB (x64) Recomendado MAX_SERVER_MEMORY = 18 GB Auto - Create Statistics Se recomienda fuertemente activar "Auto Create Statistics" ya que es una de las formas que utiliza el propio SQL Server para mejorar el rendimiento. El coste para ejecutar esta opción es mínimo en comparación con el problema de rendimiento que puede experimentar si una estadística necesaria falta y SQL Server no la puede crear. Las estadísticas son un factor muy importante en el plan de consultas eficientes que viene con SQL Server. Auto - Update Statistics Se recomienda fuertemente activar "Auto Update Statistics" ya que es una de las formas que utiliza el propio SQL Server para mejorar el rendimiento. El coste para ejecutar esta opción es mínimo en comparación

Actualizando columnas identity en SQL Server

Imagen
Aclaremos algunos conceptos primero, la propiedad identity puede ser utilizada para generar automáticamente valores clave en una columna, con esto quiere decir que una columna identity no tiene que ser necesariamente una clave primaria, y una clave primaria no tiene que llevar necesariamente la propiedad identity. Una columna identity no puede ser modificada ( Cannot update identity column ), la opción identity_insert sólo permite insertar valores en este tipo de columnas, pero nunca actualizarlos. ¿cómo actualizarlos entonces? Pongámonos en el peor de los casos, una clave primaria de tipo identity a la que hacen referencia foreign keys de otras tablas, si necesitásemos actualizar los valores deberíamos seguir el siguiente procedimiento: identificar todas las foreign keys que apuntan a la columna identity que deseamos modificar (esto lo podemos hacer con el SSMS escribiendo el nombre de la tabla, seleccionándolo y pulsando Alt + F1, o lo que es lo mismo ejecutando el

Trabajando con la Surface Pro 4 y accesorios

Imagen
Es mi primera entrada en dónde hablo directamente de hardware y me he animado a hacerla por los sentimientos encontrados que he sentido al probar diferentes productos de la gama Surface, en concreto la Surface Pro 4 i7 16 GB 512 SSD, Arc Touch Mouse y el dock . La Surface es genial, dudaba mucho de su rendimiento pero su procesador i7-6650U de 2 núcleos no tiene nada que envidiarle a un  i7-5930K de 6. El comportamiento es excepcional, increíble pensar que en una 'tablet' puedas tener Hyper-V activado con docker y correr un servidor SQL Server sin mayor problema. La única alteración al rendimiento ha sido habilitar mediante PowerShell el modo de energía de alto rendimiento, lo cual dispara el uso del ventilador, muy silencioso, nada comparable con mi anterior sistema de refrigeración líquida Corsair Cooling Hydro Series H110i GT que hace un ruido infernal, sobre todo en verano. La única pega que tiene son los drivers, hay que estar actualizados a la última ver

Instalación offline de Office 365

Imagen
Si tienes una licencia válida para Office 365 ProPlus pero por algún motivo te es imposible descargar desde tu cuenta de Microsoft el instalador entonces este post te puede servir de ayuda. Es muy importante decir que tienes que tener una licencia válida, este artículo no habla de instalaciones ilegales aunque se utilicen algunas herramientas no oficiales, siempre debes instalar software legal. Este post va dirigido a todos aquellos que tienen una licencia legal de Office 365 ProPlus pero que no tienen acceso al instalador. Click-to-Run es la tecnología utilizada para instalar la suscripción de Office 365 y la mayoría de los otros productos Office 2013 y Office 2016. La tecnología Windows Installer (MSI) se utiliza para instalar las ediciones de licencia de volumen de Office, como Microsoft Office Professional Plus y Microsoft Office Standard. Si necesitas más información acerca de las diferencias entre las versiones de Office te aconsejo esté artículo sobre el significado de

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

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 nu

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.

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 tr

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. IDE RAM Zend Studio 13.5.1 905 MB NetBeans 8.2 830 MB PHP Tools Visual Studio 2017 320 MB Visual Studio Code 1.11 30 MB Servicios Un buen entorno no solo debe presentar las herramientas necesarias para refactorizar, comprobar y rastrear errores, intellisense, sino permitir la inte

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