Entradas

Mostrando entradas de 2016

HTTP/2 para los usuarios de Google Chrome

Imagen
Si eres un webmaster y has notado que los usuarios de Google Chrome que accedían anteriormente a través de HTTP 2 ahora lo hacen por HTTP 1, estas en el sitio correcto.

Esto es debido a un cambio de política en la más reciente actualización de Chrome , lanzada a finales de mayo, que elimina el soporte a NPN, un método para actualizar una conexión a HTTP 2.



La única manera que tienen estos usuarios de Chrome de acceder a tu sitio web por HTTP 2 es cambiando a un navegador diferente. Pero tú, como administrador, puedes restaurar el soporte a HTTP 2 actualizando OpenSSL a versiones superiores o iguales a la 1.0.2. Para saber mas detalles sobre este comportamiento puedes visitar el siguiente enlace en inglés.
Este post está destinado principalmente a CentOS 7 con instalaciones de Nginx desde el repositorio oficial. 
La instalación oficial de Nginx no está compilada con OpenSSL, con lo cual utiliza la instalación que tengas en tu CentOS, lo malo de esto es que a fecha de hoy no existen pa…

Drivers ODBC 13 y PHP de Microsoft para SQL Server en CentOS 7

Imagen
Microsoft es más Open Source que nunca, ¡y que lo digan! Han cambiado mucho los tiempos en que sólo se podían utilizar las herramientas de Microsoft en Windows, y han cambiado para bien. Una de las limitaciones existentes era utilizar su driver de conexión al SQL Server para PHP en entornos linux, felizmente esa limitación está llegando a su fin gracias a las versiones para linux del Microsoft ODBC Driver 13 (preview) y Microsoft Drivers para PHP (early technical preview).

También en la evolución de estas herramientas hay un cambio radical, de instalaciones totalmente artesanales al principio ya hemos llegado al punto en que el primero está disponible con yum y el segundo es compatible con repositorios existentes como los de remi.
Voy a comenzar asumiendo que ya tienes instalado PHP 7 (importante, la versión 7 es la única soportada) en tu servidor con CentOS 7, si no sabes cómo, lo puedes ver en el post donde instalo las últimas versiones de nginx y php.

Instalando Microsoft ODBC Driv…

CentOS 7 en Hyper-V segunda generación

Imagen
No es raro que cuando intentes instalar CentOS 7 en Hyper-V si has escogido la generación 2 te salga el siguiente mensaje de error: the image hash and certificate are not allowed. Lo primero que te da por pensar es que no está soportado, pero error, si lo está y aquí podéis consultar la lista completa de sistemas operativos soportados en la generación 2 de maquinas virtuales para Hyper-V.
Entonces, si está soportado ¿que pasa? La pista me la dio el siguiente post, pero como siempre ocurre, es un post antiguo y esta un poco obsoleto y mal. Lo que ocurre es que entre las ventajas de la segunda generación está el arranque seguro, y más que deshabilitarlo, como recomiendan en el post anterior, lo que tenemos que hacer es cambiar la plantilla que viene por defecto y debemos elegir Microsoft UEFI Certificate Authority.


Y con estos sencillos pasos ya tendremos instalado un CentOS 7, que podremos descargar la iso desde aquí, en nuestro Hyper-V con una máquina virtual de segunda generación.

Slim 3 en Apache como proxy de Nginx

Imagen
Supongo que si has llegado a este post es que conoces Slim, pero para los que no, voy a hacer una pequeña introducción. Slim es un micro framework PHP que te ayuda a escribir con rapidez aplicaciones web simples pero potentes y APIs. Aunque esa es su definición, Slim es realmente útil a la hora de crear servicios web. Ya va por la versión número 3 y aunque no tiene ni página en la Wikipedia, es bastante recomendable.


Bien, yendo al grano. Si bien en su página web de documentación vienen detalladas las configuraciones para nginx, apache y otros servidores, lo que no viene es la configuración si tenemos un Nginx como front que utiliza Apache como proxy para las peticiones de PHP. Para este caso concreto lo que debemos hacer es configurar Nginx para que envíe la petición tal y como la recibe a Apache y que apache se encargue de procesarla.
Imaginemos que el servicio web se encuentra en una subcarpeta de nuestra aplicación, /api, de manera que accedemos /api/public.

Esta es la configurac…

Migrar una web con PHP de Windows a Linux

Imagen
Si bien es cierto que el código PHP es el mismo para un servidor Windows como para uno Linux, a la hora de migrar hay que tener algunas cosas en consideración. Si bien la migración de un servidor Linux hacia uno con Windows es más transparente, la contraria lleva algunas tareas especiales.


Lo más importante son las rutas include, mientras Windows soporta tanto include_once 'clases/db.php'; como include_once 'clases\db.php', en Linux sólo se soporta la barra \. Este sería el cambio más importante a tener en cuenta. Luego tenemos que ver si nuestro código tiene extensiones específicas de Windows, si son críticas y no encontramos alternativas, impedirían la migración.
Un último punto a tener en cuenta son las llamadas a funciones de la línea de comandos con exec por ejemplo. Seguramente los comandos ejecutados no sean los mismos y las respuestas sean totalmente diferentes.

Azure SQL Database DTU Calculator en español

Imagen
Si has llegado a esta entrada es porque tienes una base de datos SQL Server que quieres (o piensas) migrar a Azure SQL Database y deseas saber cuales de los planes tendrías que elegir para ello, y sobre todo, cuanto tendrías que invertir. Si es así estas en el sitio correcto.



Azure dispone de 3 planes de alojamiento: Azure SQL Database, Elastic Database y Azure SQL Data Warehouse; en esta entrada me centraré en los dos primeros. 
Cuando migras a la nube de Microsoft desde tu plataforma local (on premise) debes olvidarte de cores y RAM, lo importante son las unidades de rendimiento de base de datos o en sus siglas en inglés DTU, una equivalencia aproximada sería: 1 DTU = 1 transacción por segundo. ¿Cómo calcular cuántas DTU necesita mi base de datos?  Muy sencillo, existe una herramienta para ello llamada Azure SQL Database DTU Calculator donde te descargas un script PowerShell que monitorizará durante una hora tu consumo de CPU, las lecturas y escrituras por segundo de tus almacenami…

Servidores web para Windows

Imagen
Llevo ya muchos años trabajando con servidores web, de ellos bastante tiempo sobre Windows y es bastante complicado. Llegar a una configuración óptima en Windows solo puede ser con prueba y error, no hay una receta mágica que te lo permita, pero no por ello son malos servidores, en mi opinión creo que se han dejado de lado.
Windows representa sólo el 32,2 % en los sistemas operativos que mantienen servidores web.

¿Por qué tan poca cuota?
Para montar un servidor web bajo Windows sólo existen 2 excusas potentes: Trabajas con ASPTu base de datos está en Microsoft SQL Server Para el punto 1 no hay alternativa posible, ASP necesita IIS y por ello Windows.


Por el contrario el punto 2 es más susceptible a cambio (y más ahora con los nuevos desarrollos en los que la propia Microsoft está involucrada como el driver ODBC y la adaptación a Linux del propio SQL Server). Para trabajar con SQL Server no es necesario ASP, puedes acceder desde PHP con ODBC, eso si, el rendimiento es muy pobre, lo mej…

Migrar aplicación de ISO 8859-1 a UTF-8

Imagen
UTF-8 es la codificación por excelencia de páginas web al ser un formato de caracteres unicode:
Unicode es un estándar de codificación de caracteres diseñado para facilitar el tratamiento informático, transmisión y visualización de textos de múltiples lenguajes y disciplinas técnicas, además de textos clásicos de lenguas muertas. El término Unicode proviene de los tres objetivos perseguidos: universalidad, uniformidad y unicidad. El 86,8 % de los sitios de internet utilizan UTF-8, este post va dirigido al 6,4 % que sigue utilizando ISO 8859-1. En la siguiente gráfica podemos ver la distribución de las 5 principales codificaciones de caracteres según la w3techs.



Para todos los que deseen cambiar a UTF-8 (se puede aplicar a cualquier codificación de origen) deben tener en cuenta las siguientes cuestiones a modificar:
La codificación de la base de datosLa codificación de nuestro código fuenteLa codificación de nuestro PHPLa codificación de nuestro servidor web Migrando una base de datos M…

PHP con Visual Studio Code

Imagen
El pasado 14 de abril Microsoft anunciaba la primera versión de Visual Studio Code, una versión simplificada (muy simplificada) de Visual Studio, orientada a la edición de código. Entre los lenguajes de programación soportados por defecto está PHP y aunque aún le queda mucho camino por delante es un IDE que debemos tener en cuenta.
Sorprende la interfaz tan limpia que tiene, muy de mi agrado personal, y si bien es cierto que parece escasa de opciones dispone de bastantes funcionalidades en los pocos botones que tiene.
Para trabajar con PHP no hace falta hacer nada, dispone de Intellisense de las funciones innatas de PHP no así de las clases propias de nuestro código, sin duda su mayor limitación, aunque existe un proyecto para intentar suplir esta carencia pero a mi en particular no me ha funcionado.
En la parte inferior izquierda tienes varios iconos, el primero te da la opción de gestionar las extensiones, cuando abres una carpeta con archivos PHP tienes una opción interesante que …

Restaurando archivos ibd en tablas InnoDB

Imagen
Este post es una recopilación de la información más actual para para restaurar una base de datos MySQL a partir de los archivos de datos en entornos Windows. La versión de MySQL es la 5.7.11.


¿Por qué restaurar?
En mi caso al cambiar de ordenador se me olvidó hacer una copia reciente de la base de datos con lo cual al instalarlo todo en el nuevo habría perdido un mes entero de trabajo, por fortuna disponía del disco duro anterior.
¿Qué necesitamos para restaurar la base de datos MySQL?
Necesitamos un backup de la estructura de la base de datos (actualizada) o un backup completo en el que la estructura sea la correcta (si el backup es actual no necesitaríamos restaurar los datos desde los archivos, el problema es que la que tenía era un mes antigua).
Lo siguiente son los archivos de datos, que en Windows se encuentran en la siguiente ruta: C:\ProgramData\MySQL\MySQL Server 5.7\Data\dbname. La carpeta ProgramData está oculta. En esta ubicación encontraremos varios tipos de archivos, to…

Eliminar muchas carpetas vacías en Windows

Imagen
Cuando digo muchas digo miles, imaginad un disco duro con más de un millón de carpetas y de ellas vacías más de la mitad, es mi caso. La herramienta que he utilizado se llama Remove Empty Directories y hace exactamente eso, a vosotros os tocará juzgar si es rápido o no.


La máquina dónde se han realizado las pruebas es un Windows Server 2008 R2 Standard SP1 x64, con 2 cores Intel Xeon E5620 2.4GHZ y 16 GB de RAM.
En la siguiente tabla os dejo los tiempo que ha tardado en mi caso al identificar y luego borrar todos los directorios vacíos. Recomiendo en la opciones de la aplicación borrar directamente los directorios en vez de enviarlos a la papelera.
carpetas vacías identificar borrado tiempo carpetas/s tiempo carpetas/s 10014654683180:07:402177,109778744447270:07:152247,9911:36:5410,6453461268070:02:303564,080:10:3910,655278220:02:114029,18415438

Microsoft ODBC driver 13 para CentOS 7

Imagen
Vamos a instalar el nuevo driver ODBC de Microsoft en un CentOS 7, pieza indispensable para futuro lanzamiento de su driver específico para Linux.


Lo primero que haremos será descargar el driver ODBC desde la página oficial de Microsoft y comprobar los requerimientos mínimos para nuestro sistema operativo. yum info glibc yum info e2fsprogs yum info krb5-libs yum info openssl Para evitar errores del tipo Error: configure: error: no acceptable C compiler found in $PATH, y sobre todo en sistemas nuevos, debemos instalar un compilador para c yum groupinstall "Development tools" Instalando unixODBC Driver Manager para Microsoft ODBC Driver 13 (Preview) para SQL Server Ahora necesitamos instalar el driver manager sobre el que basa la conexión el ODBC de Microsoft. La opción más sencilla es utilizar el script de instalación que viene por defecto. Importante: la versión soportada es la que distribuye Microsoft, debéis desinstalar versiones ya existentes, da igual que sea la misma. /bin…