Delirios de un Informático

Cómo conectar PHP a SQL Server en Mac OS X

Siguiendo con mi serie de anotaciones sobre el desarrollo con PHP en Mac OS X, hoy toca hablar de algo que es más sencillo de lo que parece a primera vista: conectar PHP con SQL Server (virtualizado en una máquina Windows Server 2003 en mi caso) utilizando iODBC en Mac OS X Lion.

Con la versión de PHP que trae Lion de serie viene incluído el soporte para iODBC (una implementación de código abierto de ODBC y alternativa a unixODBC), al que le basta un controlador compatible para acceder a cualquier servidor de bases de datos. En este caso se recurre a FreeTDS, la implementeación de código abierto del controlador para SQL Server.

Como para muchas otras aplicaciones que se necesitan compilar en Mac OS X, he recurrido a Homebrew, que tras instalarlo sólo hay que ejecutar lo siguiente:

brew install freetds

La configuración también resulta sencilla: el archivo /usr/local/etc/freetds.conf debe contener lo siguiente al final:

[sqlserver]
	host = ip_o_host_del_servidor
	port = 1433
	tds version = 7.1

Luego, hay que crear el archivo /etc/odbcinst.ini con el siguiente contenido:

[FreeTDS]
Description = FreeTDS
Driver = /usr/local/lib/libtdsodbc.so
Setup = /usr/local/lib/libtdsodbc.so
UsageCount = 1

Por último, debe definirse el DSN creando el archivo /etc/odbc.ini:

[ejemplo]
Driver = FreeTDS
Database = ejemplo
Description = Base de datos de ejemplo
ServerName = sqlserver

Tras estos pasos, PHP debería poder conectarse al servidor SQL Server sin ningún problema. Pueden usarse las funciones ODBC de PHP para realizar la conexión:

$db = odbc_connect('ejemplo', 'usuario', 'contraseña');
$result = odbc_exec($db, "SELECT campo1, campo2 FROM tabla");
while($row = odbc_fetch_object($result)) var_dump($row);
odbc_close($db);

Si existe cualquier problema con la conexión, puede instalarse unixODBC con Homebrew (brew install unixodbc) y testear la conexión y obtener mensajes de error con el siguiente comando:

tsql -S ip_o_host_del_servidor -U sa

Por último es importante no añadir espacios o tabulaciones en los archivos .ini o iODBC no podrá obtener correctamente los valores causando un error en la conexión.

Montar particiones HFS en Windows (y gratis)

Si como yo dispones de un equipo con dual boot (o más) con Windows y Mac OS X puedes necesitar acceder puntualmente a los datos de la partición de Mac estando en Windows. Para eso existen soluciones comerciales como MacDrive o HFS para Windows y un explorador gratuíto llamado HFS Explorer. Pero no había encontrado ninguna solución gratuíta que permita montar las particiones HFS como una partición más (aunque sea en modo sólo lectura) hasta que por casualidad dí con este truco: instalar BootCamp, que integra un controlador para el sistema de archivos HFS y monta automáticamente las particiones en el arranque de Windows.

La única pega es que instala todos los controladores de los dispositivos utilizados en el harware Apple, que en mi caso no han provocado ningún problema pero que pueden ser desinstalados desde el panel de control. Además, añade al área de notificacion un icono que puede deshabilitarse con la utilidad msconfig.

Sincronizar Google Contacts/Calendar en un iPad sin iTunes

Resulta extraño que un iPad permita configurar una cuenta de GMail o Google Apps de forma nativa y que sólo haga uso del correo electrónico, siendo necesario configurar Google Contacts en la agenda de Mac OS X y Google Calendar en iCal para luego, con iTunes, realizar la sincronización con el iPad. Pero lo que resulta más extraño es que sea posible sincronizar el correo electrónico, los contactos y el calendario con Microsoft Exchange, es decir, que sea una tecnología de Microsoft la que permita entenderse a un cacharro de Apple con Google.

La ventaja de usar Microsoft Exchange es principalmente no depender de iTunes para la sincronización. El cliente de correo es un poco diferente pero funciona a la perfección, con acceso a todas las carpetas de GMail y avisos de correo. Las instrucciones están documentadas en la ayuda de Google Mobile, y sirven para iPhone e iPad. El único detalle a tener en cuenta es que ha de dejarse vacío el campo Dominio y especificar m.google.com en el campo Servidor.

Unit PNG Fix: más transparencias en IE6

Como otras alternativas, el hack está programado en JavaScript, pero esta vez, tiene interesantes características:

  • No depende de frameworks como jQuery o Mootools
  • Funciona con etiquetas <img> y con el atributo background-image de CSS
  • Permite elementos con ancho y alto automáticos
  • Es ligero: sólo 999 bytes
  • Muy fácil de usar: basta un <script src=”unitpngfix.js”&gt</script>
  • Funciona automáticamente, no es necesario llamar a funciones o crear objetos

Puede descargarse desde Unit Interactive.

Microsoft Office Viewers en Linux con Wine

Más de una vez me he encontrado con que me envían un archivo de Microsoft Office que al abrirlo con OpenOffice da errores o se muestra bastante descolocado. La solución, si queremos únicamente visualizar o imprimir el documento, pasa por utilizar los visores gratuítos para Word, Excel y PowerPoint que provee Microsoft y que funcionan perfectamente sobre Wine, pero que fallan al instalarse.

Para automatizar el proceso de descarga e instalación he hecho un pequeño script bash que se encarga de todo: Office Viewers 0.1. Los requisitos son únicamente wget y cabextract.

Queda pendiente trastear para lograr instalar el Microsoft Office 2007 Compatibility Pack, que por lo que he leído, añade compatibilidad a estos visores con los documentos de la versión 2007, ya que no hay disponibles visores específicos….