jueves, 20 de febrero de 2014

Extensiones de Oracle para PHP

Dando soporte, donde un desarrollo en PHP debe utilizar una base de datos  Oracle, decidí documentar el proceso. MySQL y PostgreSQL  vienen como parte de la mayoría de las instalaciones de PHP. En otras bases de datos, ya me pasó con Informix, es necesario agregarlas en forma manual. No suele haber paquetes precompilados

Encontré esta guia en el sitio de SuSE, que con algunos cambios y adaptaciones aplique con éxito. Brevemente, esto es lo que hay que hacer:

  • Instalar PHP-devel: la forma mas simple de hacer esto es desde YaST, que resuelve automaticamente las dependencias. Si estamos trabajando con SLES, necesitaremos el SDK. 
  • Instalar la extensión PECL de Oracle: Se baja desde esta pagina, en el sitio de PECL. Descomprimir el archivo, cambiarse al directorio creado y correr phpize.Se creara un script configure. Fijamos la variable de ambiente ORACLE_HOME, para que apunte al directorio de instalacion de Oracle. Para concluir, ejecutamos: ./configure ‑with‑oci8=shared,$ORACLE_HOME y luego make install.
  • Agregar la extensión en php.ini: En SuSE hay dos php.ini, uno para apache y otro que aplica cuando se ejecuta desde linea de comando. Hay que agregar: extension=oci8.so.
Terminada la instalación solo resta probarlo.

lunes, 17 de febrero de 2014

Booteo Interactivo ...

Pocas veces he tenido problemas con los scripts de booteo. Los scripts que corren en el booteo están muy probados. Pero siempre hay algo que puede fallar. Y días atrás fallo, un servidor tenia problemas, algunos comandos tenían comportamiento extraño. Decidimos sacarlos fuera de linea e investigarlo. Al bootear varios scripts fallaban. Para resolver esto, decidimos utilizar el booteo interactivo. No hay un consenso de como implementar esto, cada distribución lo maneja a su antojo.
  •  RedHat/Fedora/Centos: Los arranque siempre dan la posibilidad de bootear interactivo. Al bootear el sistema, cuando aparece el mensaje "Welcome to ..." presionamos I. Previo a ejecutar cada script de arranque pide confirmacion.
  • SuSE/OpenSuSE: Es necesario modificar un archivo de configuración, para habilitar el booteo interactivo. El archivo a editar es /etc/sysconfig/boot. Alli las opciones mas relevantes son: PROMPT_FOR_CONFIRM y CONFIRM_PROMPT_TIMEOUT. Una vez cambiado este archivo, arrancar el equipo. En cada script, pedirá confirmacion, si en el plazo definido en CONFIRM_PROMPT_TIMEOUT no se confirma, asume que se quiere ejecutar el script.
  • Debian: En esta disitrbucion se recomienda arrancar el equipo en runlevel 1, y ejecutar luego uno por uno los scripts del runlevel habitual del equipo, en el orden estipulado. 
  • Ubuntu: Se puede grabar un log del arranque. Si alguien conoce como hacer un boot interactivo en Ubuntu que pase el dato.


sábado, 8 de febrero de 2014

Que no falte la inspiracion ....

Para quienes tenemos un interés en la fotografía, es importante ver el trabajo de otros fotógrafos. Los que conocimos a través de algún curso, o por asistir a exposiciones.

Ansel Adams
Encontré este blog, donde hay una entrada con un completo listado de 81 fotógrafos. Clasificados según el campo de la fotografía en que desarrollaron mayoritariamente su trabajo. Este es el listado.

Sebastiao Salgado

Matando Zombies .....

No me refiero a los protagonistas de The Walking Dead, ni al personaje del Vudu Haitiano.En el folclore UNIX se conoce por Zombies a procesos que completaron su ejecución,  pero conservan una entrada en la tabla de procesos.

En un servidor donde corro una aplicación legada, encontré varios zombies. Para poder matar el proceso zombie, es necesario conocer su proceso padre. Para esto ejecutamos:

ps -o ppid  PID_ZOMBIE 

Con el PID del padre, podemos matar al padre; para luego matar el proceso zombie. Al menos para mi no es habitual lidiar con zombies, es bueno tener a mano la receta para hacerlo.