martes, 18 de enero de 2011

Web 2.0: un poquito de XML

Aquí tenemos un poco de introducción al XML con DTD.
El ejemplo es con una cartelera de cine, con un listado de las películas e información relativa a ella.

XML facilita la estructuración de los documentos HTML, y las DTD "obligan" a seguir unas normas en dicha estructuración.
El diseño y la forma en que se muestre esa información al usuario sigue quedando en manos de las hojas de estilo CSS, o en este caso, de las XSL (que incorporaré más adelante).

Empezamos primero con las películas:

- Archivo mispeliculas.xml

?xml version="1.0"?>
<!DOCTYPE mispeliculas SYSTEM "peliculas.dtd">
<mispeliculas>
<pelicula>
<titulo>Cadena perpetua</titulo>
<director>
<nombre>Frank</nombre>
<apellido>Darabont</apellido>
</director>
<anio_pro>1994</anio_pro>
<genero><drama/></genero>
<actor>
<nombre>Tim</nombre>
<apellido>Robbins</apellido>
</actor>
<actor>
<nombre>Morgan</nombre>
<apellido>Freeman</apellido>
</actor>
<sinopsis>Andy Dufresne is a young and successful banker whose life changes drastically when he is convicted and sentenced to life imprisonment for the murder of his wife and her lover. Set in the 1940's, the film shows how Andy, with the help of his friend Red, the prison entrepreneur, turns out to be a most unconventional prisoner.</sinopsis>
</pelicula>

<pelicula>
<titulo>En tierra hostil</titulo>
<director>
<nombre>Kathryn</nombre>
<apellido>Bigelow</apellido>
</director>
<anio_pro>2008</anio_pro>
<genero><accion/></genero>
<actor>
<nombre>Jeremy</nombre>
<apellido>Renner</apellido>
</actor>
<actor>
<nombre>Anthony</nombre>
<apellido>Mackie</apellido>
</actor>
<premio nombre_premio="Oscar" categoria="Mejor pelicula"/>
<premio nombre_premio="Oscar" categoria="Mejor director"/>
<premio nombre_premio="Oscar" categoria="Mejor guion"/>
<premio nombre_premio="Globo de oro" categoria="Mejor pelicula"/>
<premio nombre_premio="Globo de oro" categoria="Mejor director"/>
</pelicula>


¿Semejanzas entre las dos películas?
- Ambas tienen atributos en común (titulo, director, año, genero y actores). Por lo tanto esos atributos deberían de ser obligatorios.

¿Diferencias entre las dos películas?
- La primera tiene un atributo que la otra no tiene (sinopsis) y viceversa (premios). Por lo tanto, deberían de ser opcionales.


Tenemos atributos obligatorios, donde pueden ser únicos (titulo) o múltiples (actor). También tenemos atributos opcionales, donde pueden ser únicos (sinopsis) o múltiples (premio).
Con esta informacíon podemos trabajar ya en la DTD.
- Archivo
peliculas.dtd


<!ELEMENT mispeliculas (pelicula*)>
<!ELEMENT pelicula (titulo, director, anio_pro, genero, actor+, sinopsis?, premio*)>
<!ELEMENT titulo (#PCDATA)>
<!ELEMENT director (nombre, apellido)>
<!ELEMENT anio_pro (#PCDATA)>
<!ELEMENT genero (accion|drama|comedia|animacion)>
<!ELEMENT actor (nombre, apellido)>
<!ELEMENT sinopsis (#PCDATA)>
<!ELEMENT premio EMPTY>
<!ATTLIST premio
nombre_premio CDATA #REQUIRED
categoria CDATA #REQUIRED>
<!ELEMENT nombre (#PCDATA)>
<!ELEMENT apellido (#PCDATA)>
<!ELEMENT accion EMPTY>
<!ELEMENT drama EMPTY>
<!ELEMENT comedia EMPTY>
<!ELEMENT animacion EMPTY>



Lo importante de este código es ver como marcamos las propiedades antes descritas en el código de la DTD. Fijarse como el simbolo ? indica opcional y único; el simbolo + indica obligatorio y múltiple; el simbolo * opcional y múltiple; y como los atributos obligatorios y únicos no llevan níngun signo.

Con mini ejemplos de este tipo resulta muy fácil desarrollar documentos mucho más amplios y apenas sin necesidad de consultar documentación específica de XML.


- ¿Cómo saber si nuestro código es correcto?
Pues existen herramientas para ello:
http://www.xmlvalidation.com/

En esa sencilla web podremos cargar nuestros archivos y validarlos, incluso con estructura asociada como DTD.

lunes, 17 de enero de 2011

Función readfile() en PHP: no muestra nada

Siguiendo con los pequeños ejercicios del curso sobre Web 2.0 nos sugieren que realicemos una pequeña página web que simplemente muestre un feedback de alguna página, todo a través de RSS. Como son tan sencillos los ejercicios tan solo nos proponen acceder a la web http://www.rssinclude.com/ para conseguir el código fuente y ejecutarlo en nuestra mini-página sin necesidad de ningun esfuerzo.

Claro está que lo de ningun esfuerzo no se ha cumplido, ya que sino no estaría escribiendo esta entrada.

Pues bien:
1.- Creamos nuestra mini-página web con un muy sencillo código:

<html>
<head><title>Curso WEB 2.0: Segundo ejercicio entrega</title></head>
<body>
<h1>Curso WEB 2.0: Segundo ejercicio entrega</h1>
<h2>Un primer contacto con la Web 2.0</h2>
<h3>Codigo generado con PHP</h3>
</body>
</html>

Y guardamos el archivo como index.php .

2.- Acudimos a la web que nos facilitan http://www.rssinclude.com/, en concreto a la sección para editar nuestra RSSBoox:
http://www.rssinclude.com/my_rssboxes/edit_box?id=201579&tab=feeds

3.- Introducimos una dirección feedback, por ejemplo de Yahoo http://rss.news.yahoo.com/rss/internet y presionamos sobre AddFeed

4.- Gracias a la web podremos ver un ejemplo de como quedará nuestra RSSBox.

5.- Presionamos sobre la pestaña Include! y aparecerán los diferentes códigos fuente para integrar la RSSBox (JavaScript, PHP, iFrame, ...)
<?php
readfile('http://output52.rssinclude.com/output?type=php&id=201464&hash=74fd6675161c35313f7aec9c5d53abd2');
?>

NOTA: Es necesario registrarse en la web para obtener el código fuente. El registro apenas dura un minuto.
NOTA2: Por cada dirección feedback que incluyamos obtendremos diferente código fuente

6.- A nosotros nos interesa el código PHP, de modo que lo copiamos y pegamos en nuestra mini-página web:

<html>
<head><title>Curso WEB 2.0: Segundo ejercicio entrega</title></head>
<body>
<h1>Curso WEB 2.0: Segundo ejercicio entrega</h1>
<h2>Un primer contacto con la Web 2.0</h2>
<h3>Codigo generado con PHP</h3>
<?php readfile('http://output52.rssinclude.com/output?type=php&id=201464&hash=74fd6675161c35313f7aec9c5d53abd2');
?>

</body>
</html>

Guardamos, subimos/copiamos a nuestro servidor y abrimos la página.

¿Y qué ocurre? - Pues ocurre que la página se muestra así:



Y, claramente, no es lo buscamos.

¿Qué ha pasado? ó ¿Qué esta fallando?

Resulta que la función readfile() de PHP obtiene los bytes del archivo recibido y los devuelve, en este caso el archivo está alojado en la web http://rssinclude.com. Si la lectura del archivo es errónea devuelve un error que se debería de mostrar por pantalla.

En nuestro caso no se muestra ningún error, de modo que insistimos en preguntarnos qué es lo que falla. Y llegamos a la conclusión que el problema está en que el servidor no ejecuta la función en ningún momento, simplemente la ignora.
Llegando a esta sencilla conclusión es fácil pensar que el problema resida en que la función esté desactivada en nuestro servidor, y sobretodo estando el archivo alojado en un hosting contratado.

¿Qué podemos hacer entonces? - Pues ejecutar el archivo index.php de forma "casera".
- Como tenemos Apache instalado en nuestro sistema, acudimos a la carpeta
C:\Archivos de programa\Apache Software Foundation\Apache2.2\htdocs

y copiamos nuestro archivo index.php en ella.
- Arrancamos Apache
- Comprobamos en un navegador http://localhost/index.php
- Y voilà!




CONCLUSIÓN
Si el servidor donde hacemos las pruebas está alojado en un hosting contratado, habrá que asegurarse de que tenga las opciones que necesitamos activadas, en este caso activada la ejecución de la función readfile() para PHP.
Si no hay forma de averiguarlo, siempre podemos ejecutar el archivo sobre un servidor local.

miércoles, 12 de enero de 2011

Cambiar pantalla rota Asus Eee PC 1000 HD: Primera parte

El primer paso de la planificación que me puse por meta ya está terminado.

Como el número de fotos que fui sacando era bastante elevado, he creído mejor agruparlas en un video con explicaciónes de "Cómo desmontar el portatil".



Tras realizar todos los pasos indicados en el video, hemos extraído la pantalla del mini portátil con éxito.



Ahora que la tenemos en nuestras manos, es el momento de buscar en su parte trasera el modelo concreto de pantalla TFT, el cual es muy importante para buscar el recambio en internet.

El modelo de pantalla para nuestro Asus Eee PC 1000 HD es

HSD100IFW1 - A00

cuyo fabricante es HannStar.

De momento con estos datos tenemos suficiente para buscar el recambio en internet.
Luego y a medida que indaguemos por tiendas online y buscadores, descubriremos que existen dos versiones para nuestro modelo, en concreto con pantalla "Mate" o "Brillante". En mi caso será la primera.


Tras este éxito, nos resta avanzar hacia la segunda parte de la planificación, donde seguramente hallaremos inconvenientes y conocimientos más interesantes.

Cambio y corto!

martes, 11 de enero de 2011

Cambiar pantalla rota de un portátil Asus Eee PC: Introducción

Hace un par de meses se nos rompió en casa la pantalla de un mini portátil, y no es de extrañar cuando el aparato habitaba en todos los sitios menos encima de una mesa firme y segura.

El netbook en cuestión es un Asus Eee PC 1000HD Black.
Verdaderamente no es un "fuera de serie" pero para uso exporádico estaba muy bien (aquí dejo un enlace para ver las características técnicas).


Su precio ronda los 250 euros y una pantalla tft de recambio los 75-100 euros en la mayoría de tiendas de internet. Realmente hay que pensárse bastante si reparar ese portátil o comprarse uno nuevo.


Resulta que tengo una nefasta tendencia a encariñarme con las cosas y me suele dar pereza deshacerme de ellas si tienen arreglo, es por esto que a pesar de no ser un netbook con increibles prestaciones, creo que merece la pena invertir ese dinero en una nueva pantalla y darle un poco mas de vida al ordenador.
De modo que VAMOS ALLÁ!



Planificación

El objetivo será crear el pequeño manual en dos o tres partes más:
- el desamblado del portátil Asus Eee PC para la extracción de la pantalla rota
- la búsqueda en internet de un recambio a buen precio
- y por último, el acople de la nueva pantalla junto con el montaje del portátil

Veamos que tal se nos da ...

domingo, 12 de diciembre de 2010

Web 2.0 casera: instalación de un servidor web Apache

Volvemos al tajo!

Con motivo de un curso sobre Web 2.0 que estoy iniciando estos días, nos han pedido preparar el entorno para trabajar durante el mismo, que ahora en los comienzos consiste en instalar un servidor web en nuestro ordenador.

Es demasiado sencillo.


1. Descargar los archivos de instalación del servidor

En el curso nos han recomendado el servidor HTTP Apache por ser de libre distribución, de modo que no nos rompemos la cabeza escogiendo un servidor web y descargaremos la versión más estable desde http://httpd.apache.org/.

Nota: En la web de Apache se explicarán diferentes requisitos y conocimientos previos dependiendo de nuestras circunstancias. Es muy importante el sistema operativo sobre el que se instalará. En nuestro caso será Windows Vista por lo que no necesita apenas preparativos.

- Descargar versión httpd-2.2.17-win32-x86-openssl-0.9.8o.msi.

2. Ejecutar el archivo descargado


El archivo .MSI es un ejecutable, de modo que lo ejecutamos haciendo doble click sobre él.
Se nos abrirá el asistente de instalación:

- Presionamos en Next

- Aceptamos los términos de uso y presionamos sobre Next


- Presionamos de nuevo sobre Next


- Rellenamos los campos tal y como se muestra en la imagen, con la dirección local localhost. En el futuro intentaremos instalar el servidor de forma que responda sobre un dominio, pero de momento y para hacer nuestras pequeñas pruebas lo configuraremos así.
También indicar la dirección email del Administrador del servidor, que pondremos una nuestra cualquiera.
En la sección inferior nos pide configurar el puerto en el que dará las respuestas el servidor, que lo dejaremos en lo recomendado del puerto 80.

EDICIÓN: Con el post Ejecutar Apache como un servicio vemos el funcionamiento si cambiamos la opción del puerto

Y presionamos sobre Next

- Dejamos marcada la opción Typical, que instalará la configuración típica y presionamos sobre Next

- En la siguiente pantalla nos muestran la ruta donde se instalarán los archivos. Dejamos la que viene por defecto y presionamos sobre Next


- Presionamos sobre el botón de Install

- Empezará el proceso de instalación y deberemos esperar unos pocos minutos. Al principio puede que tarde en aparecer algun avance en la barra de progreso.


- Tras unos minutos se nos mostrará ésta pantalla indicando que Apache HTTP Server 2.2.17 se ha instalado correctamente. Presionamos sobre el botón de Finish.


3. Arrancar el servidor

Despues de la instalación, el servidor Apache no solo estará instalado sino que ya estará ejecutándose.
Podremos comprobarlo observando los procesos iniciados:


- Presionamos botón derecho sobre él y seleccionamos Open Apache Monitor.



- Se nos abrirá el monitor del servidor, donde podremos detenerlo, reiniciarlo, observar los servicios que se están ejecutando o bien cerrar el servidor.


4. Comprobar que funciona

Habíamos indicado al servidor durante su instalación que resolviera a la máquina local y sobre el puerto 80, por lo tanto abriremos un navegador e introduciremos la siguiente url:

http://localhost:80/

Nota: funcionará tambien sin introducirle el puerto, pero es recomendable acostumbrarse a indicarlo, ya que en el futuro modificaremos estos parámetros.


- El navegador mostrará un mensaje de alivio, donde se demuestra que el servidor funciona correctamente.


Y listo!

jueves, 14 de octubre de 2010

Te lo debo ...


Te echo tanto de menos ...
Mi bebito. Mi Kalel

lunes, 11 de octubre de 2010

Optimizando la PSP - Parte I

Supongo que sería un mejor título "Pirateando mi PSP" pero quizas sonaba un tanto problematico, sobre todo en vistas de la actitud general por internet y los foros sobre videoconsolas, donde la palabra "pirata" esta poco mas que prohibida. Ahora es tabú.
Lo normal es decir que hacemos copias de seguridad de nuestros juegos, actualizamos nuestras consolas, instalamos software casero y mas jerga informatica que pocos llegan a comprender la primera vez que lo leen.
Pero estoy a favor de esta forma de hablar por la red, y es que "la ley" esta ultimamente bastante mosqueada con todo este tema del pirateo y en mi opinión buscan lo invisible, persiguen lo que va mas rapido que ellos e intentan parar lo imparable y cortar lo indestructible, y es que internet es mucho mas poderoso de lo que aun hoy ninguno nos damos cuenta.

Estamos en transición entre dos epocas muy diferentes.

Pero esto no viene al caso.
Lo que si viene al caso es lo terriblemente complicado que resulta preparar tu PSP para cargar copias de juegos que circulan por internet. Y es que hay tanta información y es tan variada por los foros de la red que una se confunde a la minima y no sabe por donde empezar.

No voy a ponerme a resumir toda esa información porque sería inutil y absurdo habiendo tantos foros especializados, pero voy a contar lo que he hecho en esta misma tarde siguiendo varios manuales y aplicado a mi caso especial.
Lo cuento para acudir a ello en un futuro, ya que seguro que se me olvidará y seguro lo necesitaré otro día.


He seguido (y con exito) este manual, y por si algun dia lo pierdo, aqui van los pasos:

INICIO

- Necesitamos configurar la memory stick con el programa de instalacion del firmware no oficial. (utilizando PSP pirateada)
- Necesitamos preparar una bateria PANDORA para arrancar la PSP en "Modo servicio" y poder ejecutar le programa de instalacion del firmware no oficial. (utilizando PSP pirateada)
- Cuando tengamos ambas cosas, las colocaremos en la PSP no pirateada y ejecutaremos la instalacion para instalar el firmware no oficial, el cual nos sera capaz de leer las copias de los juegos que circulan por la red.


CONFIGURAR MEMORY STICK

- Formatea la memory stick desde el PSP (se perderan todos los datos).
- Conecta tu PSP al PC por USB
- Descarga el Ultra Pandora Installer v4.B
- Copia la carpeta UPI4B en la carpeta RAIZ/PSP/GAME
- Desactiva la conexión USB
- Ejecuta el Ultra Pandora Installer v4.B desde el menu de juego del PSP
- Selecciona Particionar Memory Stick
- El programa te dara una alerta de que formatearas la Memory Stick, dale “SI“
- Espera que el proceso termine y que la aplicacion salga al menu del PSP nuevamente
- Una vez en el menu del PSP, activa la conexion USB
- Copia la carpeta UPI4B a RAIZ/PSP/GAME (otra vez)
- Descarga el Update 5.00 oficial de sony
- Copia el Update con nombre 500.PBP en la raiz de la memory stick
- Saca la memory stick y desactiva la conexion USB
- Vuelve a introducir la memoria en el PSP
- Activa la conexion USB
- Descarga el Despertar del Cementerio V8
- Copia el contenido del archivo descargado DC8 a PSP/GAME
- Despues, desactiva la conexion USB
(A partir de aquí ya no necesitamos el PC)
- Ahora, ve al menu de juego del PSP y ejecuta el: Despertar del Cementerio v8.
- Cuando termine Tendreis que pulsar X para salir

Al hacer todos los pasos anteriores tenemos la memoria lista


PREPARAR BATERIA PANDORA

- Ejecuta el Ultra Pandora Installer 4.B desde el menu de juego del PSP
- Ve a la opción: Opciones Bateria->Pandorizar Batería
- Una vez dado a X en Pandorizar batería aparecerá un mensaje. Dale que si
- Espera que el proceso termine
- Dale al boton HOME para salir del juego.

Todo listo, ya tenemos la bateria y memoria magica.

INSERTAR AMBAS EN PSP NO PIRATEADA

- Introduce la memory stick preparada y la bateria PANDORA en la PSP que quieras piratear
(Aconsejan encender la PSP sin toma de corriente, pero en mi caso la batería estaba en las ultimas y no tenia apenas autonomia, de modo que encendi con la PSP enchufada a la corriente. Despues de varios intentos encencio)
- Encender la PSP
- Aparecera un menu (uno distinto al normal de PSP
- SeleccionaInstall 5.00 M33
- Espera que todo el proceso termine.
- Cuando el proceso termine saldra un mensaje en pantalla que te indicara que todo se ha realizado.

Al hacer todos los paso anteriores, tendras un PSP 5.00 M33-4


ULTIMOS PASOS
- Cargar en PSP una bateria no PANDORA (se puede realizar con el programa de antes, dandole a normalizar bateria
- Cargar en PSP una memoria formatizada por PSP (desde el menu de PSP -> formatear tarjeta)




Parece complicado pero siguiendo los pasos funciono.
En el caso de mi consola, para jugar a algunos juegos es necesario tener un disco UML metido dentro.

Y si navegais un poco y le echais paciencia, hay infinidad de comunidades y otros tantos tutoriales para entender mejor estas cosas



NOTAS:
PSP Slim 2004 pirateada
PSP Fat 1004 inicialmente firmware 6.6 oficial. Posteriormente pirateada con firmware 5.00 M33-4
Bateria usada para PANDORA: la de PSP Fat (que funciona en Slim) 3.6v 1800mAh