Entradas

Mostrando entradas de 2015

Instalar últimas versiones de nginx, php y mysql en CentOS 7

Imagen
Trabajar con las últimas versiones de software en sistemas como CentOS a veces suele ser difícil, sobre todo a la hora de encontrar repositorios que te permitan mantener el mismo nombre de paquetes y así poder actualizar los existentes.



A día de hoy estas son las versiones que tengo instaladas, todas con los nombres de paquetes oficiales, nginx, php y mysql, (existen otros repositorios que te permiten instalar php 7 pero con un nombre diferente php70 o php70w según el repositorio que consultes): CentOS Linux release 7.2.1511 (Core)Server version: 5.7.10 MySQL Community Server (GPL)nginx version: nginx/1.9.9PHP 7.0.1 (cli) (built: Dec 16 2015 15:23:56) ( NTS ) Repositorios necesarios Para instalar MySQL descargaremos el repositorio oficial de Oracle, desde que MySQL fue comprado por Oracle la comunidad de CentOS se ha decantado por MariaDB con lo cual no hay disponibles versiones para CentOS. rpm -Uvh https://dev.mysql.com/get/mysql57-community-release-el7-7.noarch.rpm Para PHP ya nece…

Activar acceso remoto MySQL en CentOS 7

Imagen
Luego de configurar MySQL 5.7 en CentOS 7 es posible que queramos acceder de manera remota para gestionar las bases de datos, no es recomendable permitir el acceso remoto a root pero si tal vez interese a un usuario específico dentro de IPs específicas. Lo primero que debemos habilitar es el puerto en el firewall, CentOS 7 ya no utiliza iptables sino firewall. Para habilitar el puerto debemos especificar para que zona lo queremos abrir. Consultamos las zonas con el siguiente comando: firewall-cmd --get-active-zones Esto nos debería devolver algo así: public
  interfaces: eno16777984Dónde interfaces lo podemos asociar a la ip con ifconfig. En este caso sólo tenemos una zona, public. firewall-cmd --zone=public --add-port=3306/tcp –permanent firewall-cmd –reload Una vez abierto el puerto ahora debemos configurar MySQL para que el usuario deseado acceda de manera remota: $ mysql -u root -p
Enter password:   
mysql> use mysql   
mysql> GRANT ALL ON *.* TO usuario@'1.1.%.%' IDEN…

Alta disponibilidad con un espejo en SQL Server

Imagen
SQL Server tiene varias formas para que dispongamos de alta disponibilidad en nuestras bases de datos, en este post veremos una de ellas: la creación de un espejo. Para mi la creación de un espejo vs un clúster es una preferencia personal, creo que un clúster es más complejo de mantener y gestionar, es más caro porque ambas máquinas comparten el almacenamiento y por lo menos mi experiencia con SQL Server 2008 R2 no fue muy buena y sin un soporte premiun por parte de Microsoft los fallos son difícilmente corregibles. En cambio un mirror o espejo es sencillo de configurar y pueden ser dos máquinas totalmente independientes. ¿Por qué crear un espejo en SQL Server? Porque este método permite hacer una réplica exacta de una base de datos de un servidor a otro. La gran ventaja de este método es que permite el failover automático sin intervención humana (siempre que se instale un tercer servidor witness). La desventaja del mirror es que sólo podemos tener una máquina secundaria o mirror y …

El driver de SQL Server para PHP 7

Para los que utilizan SQL Server con PHP y quieran actualizar a PHP 7 por ahora no será posible, no habrá soporte oficial de Microsoft SQL Server para PHP 7 hasta enero, en una versión previa. Más información en su página de github.Por ahora la única forma de conectar con SQL Server desde PHP 7 es utilizando ODBC porque el antiguo driver mssql también ha desaparecido desde PHP 5.3, lo cual es totalmente normal teniendo soporte oficial de Microsoft.Toca esperar.

CentOS 7 reset root password MySQL 5.7

Imagen
Si habéis llegado aquí estáis en el lugar correcto dónde podréis restaurar la contraseña de root en MySQL 5.7. Internet está plagado de tutoriales dónde te indican cómo hacer esto pero ninguno está actualizado a las últimas versiones de CentOS y MySQL, además por todos es conocido que el soporte a MySQL por parte de la comunidad Open Source ha menguado desde su compra por Oracle.¿Que cambia en CentOS 7 y MySQL 5.7?CentOS 7 incorpora systemd (Sistema y administrador de servicios para Linux, compatible con scripts de inicio SysV) y su herramienta de administración systemctl. ¿en que afecta esto? Pues que el script mysql_safe no está disponible (no se instala) en estos sistemas y hay que utilizar otras alternativas y gestionar mysql server community desde systemd. La tabla de usuarios en MySQL 5.7 ya no tiene campo password ahora es authentication_string. Restaurar contraseña root en MySQL 5.7 y CentOS 7systemctl set-environment MYSQLD_OPTS="--skip-grant-tables" systemctl restart …

Error 503 Collabnet Subversion Edge

Imagen
Si tienes instalado Collabnet Subversion Edge y por algún motivo al acceder a http://localhost:3343/csvn recibes el siguiente error:HTTP ERROR: 503
Problem accessing /csvn/. Reason:
Service Unavailable
Powered by Jetty://
Entonces este artículo es para ti, este post es una versión actualizada de esta url y es compatible con Collabnet Subversion Edge 5 (en este momento la actual es la 5.0.1).

Los pasos son los siguientes (seguirlos uno a uno porque no vale de nada reinstalar)


Lo primero que debemos hacer es crear un backup de los repositorios c:\csvn\data\repositories y los archivos de configuración que se encuentran en c:\csvn\data\conf: svn_auth_file (usuarios y passwords) y svn_access_file (accesos). Si reinstalas el Collabnet este ultimo archivo es el único que se sobrescribe por eso es necesario crear el backup, aunque como bien dije antes reinstalar no vale de nada.

Desinstalar Collabnet Subversion Edge (CSE) y reiniciar.

Seguirán quedando archivos en la carpeta c:\csvn, renombrarla a c:…

Mailman y las copias ocultas

Imagen
Si por un casual recibís los siguientes errores en el mailman y no encontráis explicación posible a por qué siendo enviados los mensajes a las direcciones de manera correcta aparece, la causa es que no soporta el envío con copias ocultas sin pasar primeramente por la aprobación del moderador.Ha sido retenido en espera de que el moderador de la lista lo revise y apruebe. Ha sido retenido por: El mensaje no va dirigido explícitamente a la listaO se mandará el mensaje a la lista o se le enviará una notificación con la decisión del moderador. O la versión en inglés Message has implicit destination

Instalando Parsoid en openSuse 11.4

Imagen
Tener una versión poco actualizada de un sistema operativo, sobre todo Linux acarrea muchos problemas a la hora de instalar cualquier software, es lo que me pasó al intentar instalar Parsoid en un openSuse 11.4 y aquí os lo cuento para ayudar a todos lo que lo necesiten y evitar que tengan que consultar tantos manuales como yo. Parsoid es una aplicación que puede traducir en tiempo de ejecución la sintaxis de MediaWiki y un modelo de documento RDFa, con soporte mejorado para el procesamiento automatizado y la edición. Ha estado en desarrollo por un equipo de la Fundación Wikimedia desde el año 2012. Parsoid está estructurado como un servicio web, y está escrito en JavaScript, haciendo uso de Node.js. Instalando Node en openSuse 11.4 Esta parte seguramente está incompleta porque yo ya lo tenía instalado y estos son los únicos pasos que recuerdo. sudo zypper ar \ http://download.opensuse.org/repositories/devel:/languages:/nodejs/openSUSE_11.4/ \ Node.js sudo zypper in nodejs nodejs-d…

MediaWiki y Font Awesome

Imagen
Este tutorial se aplica a Media Wiki 1.25 y cualquier versión de Font Awesome.Font Awesome para los que aún no sepan es un set de iconos vectoriales escalables que instantáneamente pueden personalizar el tamaño, color,  sombra, y todo lo que se puede hacer con el poder de CSS, por ello incluirlo en una instalación de MediaWiki nos puede ahorrar muchas imágenes y da un toque de diseño especial.Font Awesome para Media Wiki está incluido como parte de la extensión MegaMenú, pero puede ser instalada de forma separada que es lo que he hecho yo. El primer paso es descargar el código fuente de la extensión desde la página oficial o desde el enlace directo. Luego descomprimimos el archivo ZIP. Si queremos la ultima versión de los íconos vamos a la página oficial los descargamos y descomprimimos. Sustituimos en el directorio font-awesome de la extensión las carpetas css, fonts, less y scss con la que hemos descargado con la última versión de los íconos. Copiamos toda la carpeta de la extensión …

Actualizando MediaWiki 1.15 a 1.25

Imagen
Los primero para actualizar nuestra versión de MediaWiki es hacer una copia de seguridad del código y de la base de datos (nunca se sabe).Este tutorial se aplica a la actualización de Media Wiki 1.15 a 1.25 en un openSuse 11.4.Actualizando MediaWikiEntramos al directorio raiz de la aplicación, en mi caso /srv/www/wiki y ejecutamos estos comandoswget releases.wikimedia.org/mediawiki/1.25/mediawiki-1.25.2.tar.gz
# descomprimimos el archivo y sustituimos todos los ficheros con la nueva versión
tar xvzf mediawiki-1.25.2.tar.gz -C /srv/www/htdocs/devwiki/ --strip-components=1
# eliminamos el archivo descargado
rm mediawiki-1.25.2.tar.gz
# entramos al directorio de mantenimiento
cd maintenanceAntes de actualizar debemos ir al código y eliminar (o renombrar el archivo StartProfiler.php)mv StartProfiler.php StartProfiler.oldCon esto evitaremos errores del tipo:Fatal error: Cannot redeclare wfProfileIn()# ejecutamos la actualización
php5 update.phpCon estos sencillos pasos deberíamos tener actualizad…

Instalando SSMS 2016 CTP2 en Windows 10

Imagen
Al descargar el instalador web del nuevo SQL Server Managment Studio 2016 y ejecutarlo en mi máquina con Windows 10 build 10158, me daba el siguiente error:Error 0x800713ec: Process returned error: 0x13ec
Error 0x800713ec: Failed to execute EXE package.
Error 0x800713ec: Failed to configure per-machine EXE package.
Applied execute package: VS2010SP1Update, result: 0x800713ec, restart: None
Error 0x800713ec: Failed to execute EXE package.Este error se produce porque SQL Server 2016 requiere Visual Studio 2010.Al instalarlo hay un error (0x800713ec – Asia) cuando intenta instalar el SP1. El error se produce tanto con el instalador web como con la ISO completa.Es cierto que con el instalador web las pistas no son tan claras pero gracias a la ISO pude descargarme el SP1 de Visual Studio 2010  he instalarlo sin problemas.Si solo tienes SSMS puedes descargar la ISO completa (previo registro) y actualizar los componentes, mucho mejor que con el instalador web que sospecho hace una instalación ap…

SSMS ya tiene su propia ruta de actualizaciones

Imagen
SQL Server 2016 ya está en la fase 2 de beta técnica y ha sido lanzado al público con una licencia de prueba de 180 días y cargado de novedades. Una de las más importantes, y sobre la que hablaré en este post, es la nueva ruta de actualizaciones que recibe SQL Server Management Studio (SSMS).Era ya muy necesario el proceso de modernización de SQL Server Management Studio como la principal aplicación / herramienta de gestión para interactuar con la plataforma insignia de base de datos de Microsoft, se había quedado a la zaga del resto de avances en el producto. Desde el año 2005 cuando se libera SSMS como la evolución de SQL Server Enterprise Manager solamente parecía actualizarse con el fin de proporcionar todas las funcionalidades añadidas como características a SQL Server.Finalmente comienza a parecer que el equipo de ingeniería de SQL Server ha hecho caso y ha comenzado a aumentar, no sólo los recursos y el personal de desarrollo necesarios, sino también proporcionar una mayor (o a…

Consultas útiles SQL Server

Imagen
Muchas veces necesitamos conocer las tablas, campos, claves, etc. de una base de datos en concreto, todos estos datos están disponibles en tablas de sistema de SQL Server, veamos algunos ejemplos.Devolver las tablas de la base de datos actual con sus claves primariasSELECT i1.TABLE_NAME,
i2.COLUMN_NAME
FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS i1
INNER JOIN INFORMATION_SCHEMA.KEY_COLUMN_USAGE i2 ON i1.CONSTRAINT_NAME = i2.CONSTRAINT_NAME
WHERE i1.CONSTRAINT_TYPE = 'PRIMARY KEY'

Devolver los campos de una tabla concreta que son claves foráneas y la tabla a la que hace referenciaSELECT CU.COLUMN_NAME,
PK.TABLE_NAME
FROM INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS C
INNER JOIN INFORMATION_SCHEMA.TABLE_CONSTRAINTS FK ON C.CONSTRAINT_NAME = FK.CONSTRAINT_NAME
INNER JOIN INFORMATION_SCHEMA.TABLE_CONSTRAINTS PK ON C.UNIQUE_CONSTRAINT_NAME = PK.CONSTRAINT_NAME
INNER JOIN INFORMATION_SCHEMA.KEY_COLUMN_USAGE CU ON C.CONSTRAINT_NAME = CU.CONSTRAINT_NAME
WHERE FK.TABLE_NAME = ?

Devolver el tipo de ca…

El undécimo arte

Imagen
Programar es un arte, programar bien me refiero. Desarrollar código nuevo es como comenzar a escribir un libro, el mismo miedo, el mismo pavor a una hoja en blanco. Requiere inspiración, paciencia, metodología. Para programar, programar bien, se necesita algo más; algo más que no te da una carrera universitaria, que no te dan los cursos online. Se necesita inteligencia.Como programador te puedes encontrar código mediocre, escrito por mediocres que creen que con un tutorial pueden desarrollar algo. Programar es más que escribir líneas de código en un lenguaje cualquiera, programar no es conocer un lenguaje, programar es poder hacerlo en cualquiera. Programar es reutilizar, planificar, extrapolar y sobre todo prever. Un buen programador no reinventa la rueda, la usa, la mejora, la adapta, pero no la vuelve a hacer porque no comprende cómo funciona.Programar va más allá de darle instrucciones a una máquina; es hacer tu vida más fácil en cualquier ámbito, y hacerlo bien. Es anteponerte a …

FabricJS vs jCanvas

Imagen
Trabajar con dibujos en HTML5 puede llegar a ser algo tedioso y complicado si utilizamos las funciones nativas de JavaScript para su creación y posterior gestión, pero como todo en programación existen unas librerías estupendas que nos ayudan con esta tarea. En concreto yo he utilizado 2 de ellas, una para jQuery llamada jCanvas, autodefinida como un plugin que hace el trabajo con canvas HTML5 fácil; y FabricJS una librería independiente para el manejo de lienzos (canvas) en HTML5.Ambas, como su documentación indica, nos ayudan a que el trabajo con dibujos sea mucho más simple, ambas están orientadas a objetos y están disponibles desde CDN o para descargas locales, además de mantener el soporte activo.Estas librerías coinciden en lo siguiente:buena documentación acceso desde CDN o local, con archivos minimizados o brutos programación orientada a objetos un solo archivo es necesario para trabajar con ellas (sin contar jQuery que sería necesario en jCanvas) disponible la documentación en in…

Instalando ImageMagick con PHP y Windows

Imagen
En este tutorial veremos como instalar paso a paso el software ImageMagick en Windows y la librería de PHP asociada.Software de mi servidorWindows Server 2008 R2 Standard Español x64 SP1 XAMPP Version: 1.8.3 Apache x86 2.4.7 VC11 PHP 5.5.6 x86 TS VC11 Software a instalarImageMagick-6.9.1-2-Q16-x86-dll php_imagick-3.3.0rc1-5.5-ts-vc11-x86 Enlaces de descarga para ImageMagickEl software se puede descargar desde este enlace o desde la página oficial.Los drivers para PHP se pueden descargar también desde diferentes ubicaciones y en diferentes versiones, up opté por la última en el momento de crear el post la 3.3.0 RC1, pero también es posible descargar la 3.2.0 RC1 o la versión estable 3.1.2. Todas se pueden descargar desde la siguiente ruta alternativa.Instalación de ImageMagick con XAMPPRealmente lo de que sea sobre XAMPP da igual, lo único que tendríamos que buscar las rutas y directorios específicos de nuestra instalación de PHP.Instalación del softwareDescargar e instalar ImageMagick, a…

Actualizando a Zend Studio 12.x

Imagen
Generalmente el paso de una actualización a otra en Zend Studio (ZS) es bastante trivial pero al actualizar de Zend Studio 11 a ZS 12 o ZS 12.5 me he encontrado con algunas dificultades, cambios de configuración que afectan las codificaciones de los archivos JavaScript y el uso del editor, sobre todo las teclas tab.Error de codificación de archivos JavaScript a UTF-8 en Zend Studio 12En Zend Studio 11 para cambiar la codificación de un proyecto bastaba con hacer click derecho en el proyecto Properties > Resource y especificar allí nuestra configuración, pero el paso a la versión 12 que implica la actualización a Eclipse 4 ha cambiado el orden de prioridades de las codificaciones.Permítanme dar más detalles de cómo funciona. La codificación de un archivo de texto está determinada por las reglas siguientes:Si la codificación se encuentra justo en el archivo, entonces este es la codificación que se aplica, de lo contrario La codificación de archivos de texto se hereda del tipo de conte…

Freetds, PHP mssql y CentOS 6.6

Imagen
Esto es una actualización de estos dos artículos de este mismo blog Acceder desde linux a SQL server con PHP y Errores de conexión con mssql connect, la diferencia es que ambos están aplicados a CentOS 6.6 y los resultados son más actuales.RequisitosRepositorio EPEL instalado, aquí os dejo un manual para hacerlo. PHP y Apache instalados y corriendo, en mi caso es PHP 5.3.3, las versiones que vienen por defecto con esta distribución de CentOS. Existen muchos artículos por internet sobre como dejar funcionando una conexión con SQL Server desde un CentOS pero casi todos pasan por compilar las librerías FreeTDS y PHP mssql, en nuestro caso lo haremos sin necesidad de compilar nada, solo utilizando esa maravillosa herramienta llamada yum, necesitamos instalar estos paquetes:yum install freetds
yum install freetds-devel
yum install php-mssqlSi todo viene por defecto no debería daros ningún problema.El proceso de configuración es bastante similar al primer artículo que enlazo en este post, salvo…

Utilizando open_basedir

Imagen
Como he comentado en algunos post anteriores sobre seguridad en PHP, es muy recomendable tener configurado open_basedir. Recomiendo leer el manual oficial de PHP para tener una idea de la funcionalidad básica de esta directiva de configuración, Aquí plantearé otras preguntas diferentes.¿Se pueden agregar unidades de red a los directorios en open_basedir? ¿Requieren alguna notación específica? ¿Los directorios son recursivos? ¿Pueden agregarse varias carpetas?Unidades de red con open_basedirSi es posible configurar unidades de red y es muy recomendable en vez de utilizar el nombre de la máquina utilizar su IP. No es necesario poner el caracter especial $ detrás del recurso compartido y para evitar errores del tipo open_basedir restriction in effect is not within the allowed path(s) en vez de especificar en la directiva el directorio concreto debemos poner la raíz. Ahora vamos con un ejemplo.Imaginemos que tenemos en la máquina 127.0.0.1 que se llama PERSONAL una capeta compartida lla…

Reduciendo el tamaño de mPDF

Imagen
mPDF es una clase PHP que genera archivos PDF desde HTML con codificación UTF-8. Se basa en FPDF y HTML2FPDF, con una serie de mejoras. Según el propio autor la librería, que ya va por su versión 6.0 y es sobre la que hablaré en este post, se creó para producir archivos PDF de diferentes idiomas al vuelo. Es más lento que los scripts originales, por ejemplo HTML2FPDF, y produce archivos más grandes cuando se usa Unicode, pero tiene soporte de estilos CSS y muchas mejoras.Pero bueno, si has llegado hasta aquí buscando como reducir el tamaño de esta librería supongo que sepas lo anterior así que vamos al grano.Este post va dedicado a todos aquellos que generan PDF pero que no requieren funcionalidades extras, en mi caso solo necesito que un HTML en español e inglés, con imágenes y estilos básicos sea convertido en un PDF de una sola página, por ejemplo el siguiente código:$mpdf = new mPDF('en-GB-x','A4','','',5,5,5,5,0,0);
$mpdf->mirrorMargins = 1;
$mpdf…

Windows 10 primeras impresiones

Imagen
Hace pocos días actualicé dos ordenadores con Windows 8.1 a la Technical Preview de Windows 10, en concreto la build 9926 y las primeras impresiones son muy buenas, por no decir excelentes.Windows 10 como actualizaciónLo que más me gusta es que ha llegado el punto en que Microsoft se ha dado cuenta de la importancia de los datos del usuario y ha decidido permitir actualizar de un sistema a otro directamente desde Windows Update, genial, me parece una idea excelente. La actualización es bastante fluida pese a tener que descargarse más de 2GB desde sus servidores, con una buena conexión de fibra óptica no se nota, en menos de 15 minutos la puedes tener descargada.Finalmente con esta build estaba disponible en español con lo cual la actualización fue muy fluida manteniendo todos mis programas, documentos y configuraciones. No como en versiones previas.La actualización da la sensación a veces de quedarse colgada, pero tranquilos, en ambos ordenadores, aunque lo parece, en segundo plano si…

Código fuente en Blogger

Imagen
Un blog como este, de programación, requiere que en muchos post sea necesario introducir código para mostrar ejemplos y en Blogger, creedme, no ha sido tarea fácil. Hay que sumar a mi dejadez los pocos plugins que hay para resaltar el código fuente. He trabajo con 3, el último es el que estoy utilizando actualmente y es el que más me convence.SyntaxHighlighter para Windows Live WriterFue el primero que utilicé, al principio me iba bien pero tiene la desventaja que se ejecuta del lado del redactor y no en el servidor, o sea, el código formateado sale una vez redactas el post con Windows Live (herramienta que utilizo porque la edición online de Blogger me parece desastrosa).Tiene el inconveniente de no ser para usuarios básicos, hay que instalar librerías dll, configurarlas en cada ordenador que tengamos y que utilicemos para escribir en el blog. Otro de los errores que me suelo encontrar al utilizar SyntaxHighlighter para Windows Live Writer es la diferencia de estilos entre lo que veo…

Programar un trabajo en SQL Server anualmente

Imagen
El agente de SQL Server no trae por defecto (ni en la versión de 2014) la opción de crear trabajos programados que se ejecuten anualmente, para ello tenemos que recurrir a un truco que si bien es lógico no es trivial verlo.La solución para ejecutar un trabajo programado de manera anual en SQL Server es ejecutarlo un día concreto cada 12 meses.Os dejo la pantalla resaltada con las opciones que habría que señalar, en el ejemplo se ejecuta a las 00:00:01 todos los primero de enero (el primer día del año).