martes, 27 de enero de 2009

Nuevo libro: SPI - El demonio que me despierta mientras duermo

Queridos amigos,

Hace unos meses tengo abandonado este espacio debido a la cantidad de trabajo y de proyectos que estoy acometiendo a la vez. A veces me sorprende poder hacer malabarismos con mi vida, y espero no equivocarme en ninguno de ellos.

Quisiera comentaros que desde este verano me enfrasqué y me embarqué en un proyecto literario que ha resultado apasionante, del cual he aprendido mucho y también he aportado mucho. Mi último libro no está orientado a asuntos de autoayuda, si no que aborda una enfermedad desconocida para la mayoría, pero que cada vez más es muy frecuente y que es muy posible padezcan muchos sin que lo sepan: el SPI o síndrome de piernas inquietas.

Esta enfermedad desgasta mucho al individuo, impidiéndole llevar una vida normal debido a que le impide dejar dormir con normalidad. Esto acarrea muchos problemas en lo social, lo familiar, lo laboral... Produce desazón, angustia, falta de concentración, merma de la productividad... Las consecuencias a largo plazo son graves: desgaste óseo y muscular, fibromialgia... Si crees que puedes sufrir esta enfermedad, o sospechas que algún conocido la pueda sufrir, te recomiendo la lectura de este libro y que visites la página de la AESPI (Asociación Española de enfermos del Síndrome de Piernas Inquietas), cuya dirección web es: http://www.aespi.net

El libro trata la enfermedad desde algunos puntos de vista: exposición de la enfermedad, test para saber si se sufre SPI, coloquio entre enfermos de SPI analizando cada aspecto de la enfermedad, recomendaciones, etc. Incluye artículos de los más prestigiosos doctores especialistas en esta enfermedad: Dr. García-Borreguero, Dr. Jesús Paniagua, Dr. Eduard Estivill y Dr. García Albares.

El libro es libre, y puede ser copiado y compartido. Su propósito es la difusión del conocimiento sobre esta enfermedad, para que puedan anticiparse y preverse diagnósticos, y ayudar a los enfermos de SPI a llevar una vida normal.

Los enlaces para descargarse el libro:

http://www.safecreative.org/work-view.shtml?cid=113567&id=43706
http://www.4shared.com/file/81304808/2d56ae07/SPI-ElDemonioQueMeDespierta--A4.html
http://www.4shared.com/file/81305916/6a8bbf13/SPI-ElDemonioQueMeDespierta--A4.html
http://www.esnips.com/doc/12c3a03e-4e2d-4f82-81e6-ddc37db210ec/SPI-ElDemonioQueMeDespierta--A4
http://www.esnips.com/doc/2c4a2f2f-8551-49d5-a6a9-72eac590b629/SPI-ElDemonioQueMeDespierta--A4
http://cid-1775475b9ce58415.skydrive.live.com/self.aspx/P%c3%bablico/SPI-ElDemonioQueMeDespierta--A4.doc
http://cid-1775475b9ce58415.skydrive.live.com/self.aspx/P%c3%bablico/SPI-ElDemonioQueMeDespierta--A4.pdf
http://www.megaupload.com/es/?d=CICA204U
http://www.megaupload.com/es/?d=ZQ5LANSC

sábado, 10 de enero de 2009

Instalar Apache y PHP en Windows Vista

Resulta un tanto frustrante intentar instalar PHP bajo Apache en Windows Vista. Yo lo he intentando multitud de veces. He accedido a foros donde parecen dar la solución tocando allí y acá en los archivos de configuración del Apache y de PHP. Si bien la orientación es buena, en la práctica no es así. Tras probar todo tipo de configuraciones casi tiro la toalla, pues Apache no enlazaba con Apache a pesar de tener configurado correctamente el fichero httpd.conf y el fichero php.ini

Otra propuesta es instalar XAMP, pero pierdes el control sobre lo que instalas, y las versiones de los productos pueden no ser las que necesites.

Probé a desactivar la protección en tiempo real (uso Spyware Terminator), por si afectaba en algo. Tampoco era así.

Al final, tras dos días de intensas batallas con mi ordenador, instalando, desinstalando, borrando el registro de Windows, eliminando ficheros temporales, etc.; una bombilla se encendió en la única neurona que me queda. ¡Y funcionó!

Al final, la solución era mucho más sencilla. Bajo la premisa de que todo lo que se instala en el directorio Program Files de Windows Vista está regido por las normas de usuario de cuenta, probé a instalarlo todo fuera de él con los instaladores de Apache y PHP. He aquí los pasos que utilicé para hacerlo:

1) Desinstalar Apache y PHP de vuestro equipo.
2) Borrar los directorios y archivos generados y que no se han quitado tras la desinstalación
3) Borrar todas las entradas en el registro de apache y php (utilizar regedit)
4) Desactivar la protección en tiempo real del antivirus
5) Abrir la consola en modo administrador (menú Inicio > Todos los programas > Accesorios > clic derecho en Símbolo del Sistema > Ejecutar como administrador)
6) Ejecutar el programa de instalación de Apache mediante el comando: msiexec /i archivoSetupApache.msi
7) Con la configuración personalizada indicar que no se instale en el directorio por defecto (C:\Program Files), si no en otro directorio (en mi caso C:\Apache)
8) Una vez instalado Apache, parar éste (con Apache Monitor y saliendo por completo de la aplicación). Esto evitará que el fichero httpd.conf esté bloqueado por Apache mientras se instala PHP, y así poder escribir en él durante su instalación.
9) Ejecutar el programa de instalación de PHP mediante el comando: msiexec /i archivoSetupPHP.msi
10) Con la configuración personalizada indicar que no se instale en el directorio por defecto, si no en otro directorio (en mi caso C:\php)
11) Una vez instalado php, arrancar nuevamente Apache
12) Crear con el bloc de notas el archivo testphp.php en el directorio htdocs de Apache, con el siguiente contenido:

<html>
<head>
<title>PHP Test</title>
</head>
<body>
<?php echo '<p>Hello World</p>'; ?>
<?php phpinfo(); ?>
</body>
</html>

13) Para verificar que funciona correctamente, abrir el navegador e indicar la siguiente URL: http://localhost/testphp.php. El resultado debería ser el siguiente:


Por último, indicar mi configuración de entorno:
- Windows Vista Ultimate + Service Pack 1
- Apache 2.2.10
- PHP 5.2.8

Espero que estas indicaciones os saquen del apuro.

Safe Creative #1001195348600

domingo, 4 de enero de 2009

Problemas al acceder a ficheros XML en Flex

Trasteando un poco con Flex con una sencilla aplicación que publicaré con gusto en este nuestro blog, he tenido tres problemas que voy a comentar, y que seguro serán de gran utilidad, pues seguramente más de uno se tope con ellos.

El primero de los problemas que me topé es a la hora de intentar realizar una aplicación que lea de un fichero XML. Para ello, lo primero que se nos viene a la cabeza es utilizar el objeto XML, de esta manera:

<mx:XML id="idObjetoXML" source="ruta/archivo.xml"/>

Si bien funciona en tiempo de desarrollo, el problema estará a la hora utilizarlo en otra ruta distinta a la del entorno de desarrollo, ya que el compilador de Flex incluirá este fichero a nuestro archivo compilado, y las rutas dejarán de funcionar.

Para evitar esto, hemos de usar el objeto HTTPService, usando la ruta del fichero XML como URL, y después asignar el resultado al objeto XML. He aquí el ejemplo.

<?xml version="1.0" encoding="utf-8"?>
<mx:Application
xmlns:mx="http://www.adobe.com/2006/mxml"
creationComplete="getImages.send()"
>

<mx:Script>
<![CDATA[
import mx.rpc.Fault;
import mx.rpc.events.FaultEvent;
import mx.rpc.events.ResultEvent;
import mx.controls.Alert;

[Bindable]
private var objetoXML:XML;

private function
resultHandler(event:ResultEvent):void
{
objetoXML=event.result as XML;
}

private function
faultHandler(event:FaultEvent):void
{
Alert.show(event.fault.message,
"Error al cargar fichero XML");
}

]]>
</mx:Script>

<mx:HTTPService
id="getImages"
contentType="application/xml"
resultFormat="e4x"
url="ruta/archivo.xml"
method="GET"
useProxy="false"
result="resultHandler(event)"
fault="faultHandler(event)"
/>

...


El objeto "HTTPService" será invocado al crearse la aplicación (evento "creationComplete" del objeto "Application"), y será el encargado de leer el fichero XML. Si el fichero se lee con éxito, se invocará al método "resultHandler", pasando en el parámetro "event" el resultado. En este método, se asignará al objeto de tipo "XML" este resultado en dicho formato. Si hay algún error, se invocará el método "faultHandler".

El segundo problema con el que podemos toparnos es cuando intentamos ejecutar la aplicación en otro entorno distinto al de desarrollo, sobre todo, si se pretende ejecutar en local. La ejecución daría un error del tipo:

faultCode:InvokeFailed faultString:’Error #2148:
SWF file 'ruta/fichero.swf' cannot access local
resource fichero.xml, Only local-with-filesystem
and trusted local SWF files may access local
resources.’


Debido a la seguridad que ofrece Flex, no se puede acceder a ficheros locales. Para saltar esta seguridad, habrá que jugar con los parámetros de compilación.

Para ello, seguir estas instrucciones:
1) En el panel de navegación de Flex Builder, hacer clic derecho sobre el nodo del proyecto.
2) Seleccionar "Properties", con lo que se abrirá el cuadro de diálogo de propiedades del proyecto.
3) En el árbol de la izquierda, seleccionar la opción "Flex compiler"
4) En el campo "Additional compiler", añadir el parámetro "-use-network=false"

El tercero de los problemas llegó a la hora de subirlo al servidor web. A la hora de acceder al fichero xml me daba el siguiente error:

faultCode:Server.Error.Request faultString:
'HTTP request error' faultDetail:'Error:
[IOErrorEvent type="ioError" bubbles=false
cancelable=false eventPhase=2 text="Error #2032:
Error de secuencia. URL: URLruta/archivo.xml"].
URL: URLruta/archivo.xml'


Este error se produce en el objeto HTTPService:

<mx:HTTPService
id="getImages"
contentType="application/xml"
resultFormat="e4x"
url="URLruta/archivo.xml"
showBusyCursor="true"
useProxy="false"
result="resultHandler(event)"
fault="faultHandler(event)"
/>


Aunque en teoría está bien definido, en realidad, el problema lo está dando el atributo "contentType". Ello se resuelve cambiando este atributo por:

contentType="application/x-www-form-urlencoded"


De esta manera, ya funcionará sin problemas.

Safe Creative #1001195348662