Lo mismo arreglo un cachivache, que fabrico un chirimbolo.
 RSS 2.0 
 Namespaces XML en AS3    (2)    2008-12-11@581

Estaba intentando parsear un archivo xml desde ActionScript 3 y me he encontrado con que no funcionaba.
El contenido estaba en el objeto XML pero al intentar acceder a cualquiera de los nodos mediante nombre, AS3 me devolvía un elemento nulo.
Solo lograba hacerlo funcionar si en la cabecera del fichero XML le quitaba la declaración de namespace que se hace mediante el atributo xmlns.
El problema es que el XML lo produce un software de terceros y no tengo control sobre su formato, así que eliminar la declaración del namespace no es posible.

El problema ha sido precisamente el namespace. El atributo xmlns estaba definiendo el nombre del namespace del tipo de archivo XML que estaba leyendo, pero yo no estaba usando dicho namespace para acceder a los elementos del arbol XML, por eso no los encontraba.
El namespace es una clase que se usa prefijando con ella cada nombre de nodo separándolo de este con el operador :: (name qualifier) , por ejemplo

trace( xmldoc.new Namespace(“http://www.w3.org/2005/Atom”)::news );

Esto es un auténtico coñazo, sobre todo cuando te enteras de que esa URI que se declara en el XML no tiene por qué apuntar a nada en concreto, simplemente debe ser única con respecto a todos los namespaces declarados por otros tipos de archivos XML. Como es un identificador tan largo se suele asignar el objeto Namespace a una constante y acortamos.

private const ATOM = new Namespace( “http://www.w3.org/2005/Atom” );
.
.
.
trace(xmldoc.ATOM::news.ATOM::title);

Pero como sigue siendo un rollo prefijar todos los accesos a los nodos, lo mejor es definir que el namespace por defecto apunte a la declaración correspondiente y ya está. Esto se hace con la orden

default xml namespace =new Namespace( “http://www.w3.org/2005/Atom” );

Y a partir de ese momento todos los accesos a nodos del xml se realizarán como si fuesen prefijados con ese namespace.

Así todo vuelve a funcionar.

Escribe un comentario sobre "Namespaces XML en AS3"
 Precisión de playheadTime    (0)    2008-12-05@111

El manejo de vídeo desde Flash es relativamente sencillo. Desde AS3 se utiliza la clase FLVPlayer a la que solo hay que definirle unos pocos parámetros para que enseguida comience a reproducir el vídeo en formato FLV que le especifiquemos.

Esta clase permite entre otras cosas posicionar la cabeza lectora del video en cualquier posición
de tiempo dentro del mismo con una precisión de milisegundos mediante la propiedad playheadTime, que es equivalente al método seek.
He necesitado usar esta propiedad pero me he encontrado una desagradable sorpresa cuando he intentado posicionar la cabeza lectora, por ejemplo, en el segundo 5, el vídeo se iba a la posición 5.75. Siempre.

Después de investigar un rato he llegado a la conclusión de que solo se puede posicionar la cabeza
en frames marcados como keyframes (o I-Frames), por lo que si has encodeado el vídeo con un keyframe cada 12 frames (valor habitual) y el video es a 25fps te encuentras con que solo te puedes posicionar en determinados momentos de tiempo del vídeo, en este caso puedes posicionarte en el segundo 0.48, 0.96, 1.44, 1.92, etc…
El caso es que necesito posicionarme en segundos exactos por lo que no me queda otra solución que encodear el vídeo con una frecuencia diferente, de un keyframe cada 5 o uno cada 25 si no necesito tanta resolución. La primera solución, por supuesto provoca un aumento significativo del tamaño del vídeo, pero en mi caso eso no es ningún problema, solo es algo que hay que tener en cuenta a la hora de preparar los vídeos para la aplicación. La segunda solución empeora la calidad, pero disminuye el tamaño. Como mi caso es para hacer una previsualización, pues tampoco es importante la calidad.

De los encoders de FLV que tengo a mano, el único que me ha dejado elegir el numero de keyframes ha sido el propio Adobe Flash CS3 Video Encoder y despues de esperar un buen rato porque es muy, muy lento, resulta que al principio lo hace bien, pero no es capaz de poner los keyframes EXACTAMENTE cada 25 frames de una manera constante, por lo que a los pocos segundos comienza a desincronizarse con lo que al final me encuentro con el mismo problema. Parece que los keyframes no son una ciencia exacta.

Escribe un comentario sobre "Precisión de playheadTime"
 Archivos de video MOD y MOI    (5)    2008-11-14@086

En los viejos tiempos de la demoscene nadie tenia dudas cuando le decías que tenias un MOD que flipabas, se sobreentendía que se trataba de un módulo de música secuenciada a partir de muestras de audio, que tenia 4 canales y que era una canción compuesta en un tracker, probablemente el Protracker en un Commodore Amiga.
Pero ahora ya no se respeta nada y alguien en alguna multinacional se ha apropiado de la extensión para marcar con ella los archivos de vídeo que generan principalmente las cámaras de JVC, Panasonic y de Canon que graban directamente a tarjeta SDHC o disco duro.

Lo primero que me llamó la atención al sacar los archivos que acababa de grabar con mi nueva cámara es que por cada escena había 2, y que ninguno de ellos tenía una extensión conocida o estándar. Los archivos eran MOD, que viendo su tamaño se hacía obvio que contenia el video, y MOI.
Como el VLC tiene fama de reproducir cualquier tipo de video sin importarle siquiera si el archivo está corrompido o la cabecera es errónea, intenté hacerle tragar el MOD directamente. No se lo traga. Sin embargo si lo renombras a MPG si funciona, aunque el aspect ratio es incorrecto.
Un MOD de vídeo no es mas que un archivo de video MPEG-2 con audio codificado en AC3. El archivo MOI contiene información acerca de la fecha de la grabación, el aspect-ratio (que habitualmente está en la cabecera de los MPG) y otros datos interesantes. El dividir la información en estos dos archivos es una recomendación de la definición del estándar de las tarjetas SD.
El problema es que este estándar que han adoptado las cámaras de vídeo aun no lo soporta ninguno de los programas mas extendidos de edición de vídeo, por lo que te encuentras con que tienes unos archivos que no puedes editar.

Para trabajar con ellos hay que convertirlos… lo cual es una bobada. Canon te proporciona un software, ImageMixer 3 for SD que hace básicamente eso, convierte el MOD/MOI en MPG. Pero si hay que convertirlos según los sacas de la cámara… ¿porque guardarlos como MOD y no directamente como MPG?

Un artículo de Robin Good me ha permitido conocer los vericuetos de este formato y lo que hay que hacer con el para poder usarlo con los programas habituales de edición de vídeo.

Las soluciones son:

  • Renombrar el archivo de MOD a MPG y luego verificar en el programa que usemos para editarlo que las propiedades del vídeo corresponden a las reales, es decir, que es PAL/NTSC, que el aspect ratio que el programa ha asignado al vídeo es el correcto (4:3, 16:9) y que el interlacing también es el adecuado.
  • Si has grabado en 16:9 es mejor que uses el programa SDCopy, que te convierte los MOD en MPG copiando la información de aspect ratio que tu le digas en la cabecera del MPG.
  • Para editar correctamente los MPG resultantes es mejor que uses programas que permitan el “smart rendering” o renderizado inteligente.

Si después de convertir el vídeo necesitas saber cuales son los datos originales que vienen en el archivo MOI, que son básicamente la fecha y hora del inicio de la grabación, el aspect ratio, la calidad a la que se grabó, la longitud del mismo u otros datos, puedes abrirlo con un editor hexadecimal, y siguiendo esta tabla que ha elaborado mediante ingeniería inversa Karl Zeilhofer, averiguar que es cada valor.

Si solo quieres visualizar el vídeo, pues basta con renombrarlo, meterlo en el VLC y seleccionar el aspect ratio correcto en el menú de vídeo y la opción de desentrelazar “blend” o en la versión en español “mezclar”.

En la página que he referenciado anteriormente de Robin Good se explican cuales serían las soluciones de edición de MOD mas sencillas tanto en PC (muy sencilla) como en Mac (algo complicada). Increíblemente el Movie Maker que viene gratis con Windows, si se configura bien, importa correctamente los MOD renombrados a MPG.

Escribe un comentario sobre "Archivos de video MOD y MOI"
 Video Car-mera    (11)    2008-11-11@238

No es un error, estoy convirtiendo mi coche en una cámara de vídeo ambulante. ¿Para que? Pues para grabar recorridos en carreteras recónditas, subidas imposibles o lugares míticos del ciclismo y luego reproducirlos en mi rodillo de entrenamiento Tacx Fortius.
Los RLV (Real Life Video) no los he inventado yo, ya me gustaría, solo los he retroingenierizado (toma palabra) para averiguar como están hechos y poder crear los míos propios. Pero de eso ya hablaré mas adelante.

De momento he tenido que construir un soporte para anclar firmemente la cámara de vídeo al salpicadero del coche. Como en todo lo que hago, pretendo que sea reversible, es decir, que se pueda deshacer sin romper nada, por ello no puedo simplemente atornillar la cámara al salpicadero, que sería una opción rápida y fácil.
El lugar elegido para ubicar la cámara es un porta documentos que tiene mi coche en la parte central del salpicadero. Dentro de ese porta documentos ya alojé en su día la PDA reciclada que me hace de GPS. Ese porta documentos se puede extraer, con cuidado, dejando un hueco ideal para mis propósitos.


Con dos pequeñas planchas de madera, una ancha, la que sostendrá la cámara, y otra estrecha, la que amarra el conjunto al plástico del salpicadero, he construido una especie de mordaza o tornillo, que una vez apretado conforma una base plana perfecta para colocar la cámara.

Pero la cámara necesita poder ser girada y cambiada de ángulo para ajustar la posición antes de comenzar la grabación. ¡Que mejor que la cabeza de un trípode de fotografía, de esos minúsculos de a 7 euros la pieza!. El tornillo encaja a la perfección en el agujero para trípode de la cámara, y al ser totalmente desmontable, se le pueden quitar las patas sin siquiera romperlo, con lo que podemos seguir usándolo para lo que en un principio fue ideado, cuando no lo estemos usando.
La cabeza del trípode tiene un agujero para atornillar tornillos de métrica 4. Con uno de estos tornillos atravesando la plancha de madera desde abajo consigo asegurar la cabeza del trípode a la base y de este modo obtengo el sitio perfecto para poner la cámara.


Para mis propósitos también necesito grabar el recorrido con un GPS que guarde tracks (los de coche normalmente no lo hacen). Mi Garmin tiene un hueco reservado en la base de madera, con un soporte hecho de aluminio que imita el que tengo en el manillar de la bici y en el que encaja perfectamente.

Una vez montado el conjunto, usando el mando a distancia de la cámara, puedo poner a grabar los dos aparatos al tiempo y así obtengo un metraje de vídeo que se corresponde con un track GPS que me proporciona alturas y velocidades. De este modo puedo luego escribir los archivos de Tacx con las pendientes de las cuestas y sincronizarlas con los puntos del vídeo donde comienzan, para que el rodillo aumente o disminuya de dureza dependiendo de si vas cuesta arriba o cuesta abajo y ademas, puedo escribir también la velocidad en Km/h a la que fue grabado el vídeo para que el software del RLV pueda acelerar o frenar la reproducción del mismo dependiendo de la diferencia entre esa velocidad a la que fue grabado y la velocidad que le imprimo a la bici al dar pedales en el rodillo.

La primera prueba está hecha, y me ha servido para detectar unos cuantos problemas.

  1. Las vibraciones. Cuando el firme está un poco irregular se transmiten demasiadas vibraciones y la cámara tiembla. El estabilizador de imagen no es capaz de “comérselas”. Supongo que esto tiene algo que ver también con el tipo de coche y la cutre suspensión. He probado con un poco de goma espuma y juntas tóricas de goma en las arandelas para desacoplar un poco la cámara del coche, pero no ha sido una gran diferencia.
  2. El parabrisas. Hay que limpiar el cristal a conciencia para que no se vean las manchas. Voy a tener que echarle cristasol o algo. (Corrección: el cristal no está manchado, está “chinado”, tiene multitud de impactos de pequeñas chinas de tierra que no se quitan limpiando, quizás se puedan quitar puliendo, tendré que visitar a mi colega de Shinycars). Una solución sería poner la cámara fuera del coche (tiene mando a distancia), pero no se puede por la apertura focal que explico mas abajo.
  3. Los reflejos. Hay que tapar con una tela negra u otro material que no refleje la luz para evitar que la propia base de la cámara se refleje en el parabrisas del coche y se vea en la grabación.
  4. El sol. Hay que evitar grabar de cara al sol, está es de perogrullo jeje. Es mejor en las horas centrales del dia ya que el sol está alto y normalmente no pega directamente en la cámara. No es solo por los cambios de luz, sino porque los defectos del parabrisas se hacen demasiado evidentes a contraluz.
  5. La apertura focal. Las cámaras domésticas no tienen una gran apertura focal lo que hace que al tomar curvas demasiado cerradas en ocasiones el foco pierde de vista la propia carretera y eso queda muy feo en los vídeos que intento grabar. La solución estaría en atrasar un poco mas la cámara, pero esto haría que se grabase mas zona del parabrisas, captando mas imperfecciones. Por eso tampoco se puede poner la cámara en el capó, porque cuanto mas cerca de las ruedas directrices, menos carretera se ve en los giros cerrados.


Por lo demás no estoy demasiado contento con la calidad. He grabado en XP y se ve bien si la imagen no se mueve mucho, pero si hay mucho movimiento (como cuando se va en coche) se ven líneas, como si tuviera un entrelazado (interleaved). La calidad no es mala, el problema del entrelazado de lineas se soluciona poniendo en el reproductor que haga blending con el entrelazado. Entonces dejan de verse las lineas. Aún me queda mucho por aprender de esto del video :) .

En la primera prueba no me he dado cuenta y grabé un trocito del capó, pero con la base del trípode como soporte eso se ha corregido muy fácilmente :) .
Aquí va una primera prueba. La compresión que hace youtube no permite apreciar la calidad real de la grabación, y además me ha cambiado el aspect ratio, pero es para hacerse una idea.



Escribe un comentario sobre "Video Car-mera"
 De videocámaras y tarjetas SDHC    (5)    2008-11-01@844

Como se puede ver en mi whislist, recientemente he sido obsequiado por mi cumpleaños con una magnífica videocámara Canon FS100. No, no me malinterpreteis, no es que yo sea el típico personaje coñazo que armado con su cámara intenta inmortalizar aburridos eventos familiares dejando para la posteridad en algún formato de almacenamiento digital las tonterías que se dicen o se hacen cuando las personas ven, o presienten, que se les está grabando; no, mis intereses van mas por el tema de experimentar y hacer algún webcast en condiciones de mis experimentos como un dia me sugería Futur3.
El caso es que al elegir pedí consejo a alguno de mis compañeros de Soygeek (DJ Shivan) que se dedica al 3D y la producción de vídeo y para una cámara amateur, me recomendaron Canon. Como no quería que fuese demasiado cara, pero me interesaba huir de las cintas MiniDV, al final opté por la Canon FS100, que es igual que la FS10, solo que 100 euros mas barata y sin memoria interna.

La FS100 es una de esas cámaras que apuesta por la memoria de estado sólido evitando los problemas de los discos duros y las averias mecánicas de los motores de las cintas MiniDV, y funciona con tarjeta de memoria, para ser exactos con las nuevas tarjetas SD HC (Secure Digital High Capacity) que son incompatibles con los lectores antiguos pero que permiten superar el límite de 2Gb que tienen sus hermanas pequeñas, las que no son HC. Las HC empiezan en los 4Gb y llegan hasta los 32Gb (por el momento).
Como la cámara viene pelada, sin tarjeta, me tuve que poner a buscar que tarjetas necesitaba y donde conseguirla económica, que la cosa no está para ir tirando la pasta.
Al final acabe de nuevo donde PROMETO que no voy a volver a acabar, comprando a un chino por Ebay.

Lo malo de meterse en nuevos vicios o inquietudes, es que se aprende poco a poco, y a mi no me gusta aprender poco a poco, soy un tanto impaciente para el conocimiento, así que he intentado absorber toda la información posible en poco tiempo para tener lista la cámara y realizar las primeras pruebas.
Como digo, después de saber que necesitaba una SD HC le compré una tarjeta de 8Gb a un chino que la vendía por escasos 10Euros, gastos de envío incluidos. Lo que no había estudiado suficientemente es que hay 3 tipos de tarjetas HC, las de clase 2, clase 4 y clase 6 y que la diferencia entre unas y otras es la velocidad de lectura y escritura.
Parece una tontería, pero como es lógico, mi tarjeta, que llegó perfectamente en aproximadamente una semana, era de clase 2.

  • Class 2: Mínimo 2Mbps de transferencia (habitualmente entre 3 y 5Mbps), válidas para MPEG2(DVD) y MPEG4
  • Class 4: Mínimo 4Mbps de transferencia, válidas para MPEG2(DVD), H.264(HDV), Hi-speed D-SLR
  • Class 6: Mínimo 6Mbps de transferencia (habitualmente entre 12 y 22,5Mbps) , válidas para HDV Profesional y D-SLR de alta velocidad.

El caso es que mi SDHC funciona de manera correcta, PERO, aquí llega el gran pero, la cámara tiene 3 modos de grabación en dos formatos diferentes (modos XP, SP, LP y formato 4:3 o panorámico) y resulta que para formato panorámico, el modo LP necesita una velocidad de escritura de 3Mpbs, el SP de 6Mbps y el XP de 9Mbps… y como eso no lo pone en el manual (si, si, me lo he leído de cabo a rabo y en inglés además) esto no lo sabes hasta que:

  1. Estás atento y te fijas al seleccionar el modo de grabación que te indica la velocidad de escritura (3,6 o 9 Mbps)
  2. Montas una tarjeta de Clase 2 y te das cuenta de que al cabo de 1 minuto la cámara da un error de buffer overflow y para de grabar, con el consiguiente cabreo y recordatorio para la madre de todos los chinos. Cuando se te pasa el cabreo vuelves al punto 1.

Total, que solo puedo grabar en LP (3mbps, la mínima calidad de la cámara) hasta que consiga, esta vez en una tienda, y con prueba de por medio, una tarjeta de 8Gb clase 6 que cuesta el doble que en china, pero va cuatro veces mas rápido. Por ejemplo una transcend que da hasta 13Gbps en escritura.

Repite conmigo: no mas chinos, no mas chinos, no mas chinos… es inútil, se que volveré a caer XD

Escribe un comentario sobre "De videocámaras y tarjetas SDHC"
 No te fies de phpMyAdmin    (4)    2008-10-23@106

Recordatorio: Si una consulta compleja a una base de datos, que contiene subselects dependientes, o LEFT JOINs no te funciona como esperas o no lo hace correctamente en phpMyAdmin y te produce un error sin mucho significado, no desesperes, intenta ejecutar directamente la sentencia desde php porque es posible que está bien, pero que phpMyAdmin la está cagando en algún momento.
Me lo digo a mi mismo para no tener que volver a perder 3 horas intentando rehacer una query que el dia anterior funcionaba correctamente.

Otra cosa a tener en cuenta. En subselects dependientes las dependencias solo son validas con la select padre, no con la abuelo (la padre de la padre). P.ej.

SELECT id, ( SELECT count(*)
                FROM (SELECT *
                        FROM tabla1
                        WHERE tabla1.id = tabla2.id) )
FROM tabla2

Esta select da error ya que el select mas interno, está a dos niveles del select que define tabla2, por lo que no la ve.

Ya me lo decía mi madre… ¡no trabajes con bases de datos de juguete!

Escribe un comentario sobre "No te fies de phpMyAdmin"
 Dudas Joomla    (0)    2008-10-19@004

Como ya dije, según fuese aclarando las dudas acerca de detalles de la creación de componentes en Joomla 1.5.6, las iría publicando, así que allá voy con las primeras:

¿Como insertar una definición de hoja de estilo propia desde una vista generada por mi componente?

Pues no es muy elegante, pero asi es como se hace:

// Recuperamos una referencia a la instancia del documento que genera Joomla
$document   = & JFactory::getDocument();
// Asociamos una hoja de estilo al documento
$document->addStyleSheet(“components/com_mycomp/views/assets/mystylesheet.css”);

¿Como hago para que mi módulo aparezca en el Pathway de la página, también llamado modulo BreadCrumb?

Para variar, menos elegante aún que la anterior, usando la palabra clave global que es la antitesis de la ocultación de datos y por tanto de la orientación a objetos, hacemos referencia a una instancia del JAplication que se llama mainframe (¿y como sabemos eso?). Ignoro si hay una forma mas ortodoxa de hacerlo. En una de tus vistas mete este código en el método display:

global $mainframe;
   
        $pw = $mainframe->getPathWay();     
        $pw->addItem(“Mitextoparaelpathway”);

¿Por qué no consigo recuperar el modelo desde una de mis vistas?

Lo mas habitual es que se te haya olvidado poner el nombre del modelo en cuestion que necesitas. Si dejas el parámetro del nombre del modelo vacío, la vista tratará de encontrar un modelo con el mismo nombre que ella. La solución es poner el nombre del modelo o crear un modelo con el mismo nombre que la vista.

views/myview/view.html.php

$model = $this->getModel(“Mymodel”);

models/mymodel.php
defined(‘_JEXEC’) or die();
jimport( ‘joomla.application.component.model’ );

class MyApplicationModelMymodel extends JModel
{

o

views/myview/view.html.php

$model = $this->getModel();

models/myview.php
defined(‘_JEXEC’) or die();
jimport( ‘joomla.application.component.model’ );

class MyApplicationModelMyview extends JModel
{

Escribe un comentario sobre "Dudas Joomla"
 Componentes en Joomla    (2)    2008-10-10@569

Llevo varias semanas investigando como hacer componentes para Joomla 1.5.6. Ya he conseguido alguna cosilla, pero no es tan sencillo como en un principio se suponia que iba a ser.
Joomla 1.5.6 usa una arquitectura basada en el patrón MVC (Modelo Vista Controlador), algo que no es nada nuevo en otros lenguajes como Java o Ruby pero que en php no es tan habitual, al ser php históricamente un lenguaje menos formal.
En MVC las aplicaciones tienen 3 partes diferenciadas:

  • El modelo: se encarga del manejo de datos, de extraerlos, validarlos y almacenarlos, ya sea en base de datos (lo mas habitual) o en otros medios. Si alguna parte de la aplicación necesita manejar datos, se los pide al modelo.
  • El controlador: recibe las peticiones del usuario y las transforma en acciones reales del programa. Habitualmente pidiendo datos al modelo y haciendo operaciones con ellos para después elegir una vista adecuada con la que mostrarlos.
  • La vista: se encarga de la visualización de los resultados del proceso que ha tenido lugar en el controlador.

Esta división supone una gran ventaja, y es que cuando necesites ampliar la aplicación es muy sencillo saber que parte debes tocar, que es cada cosa y donde está ubicada. Como contrapartida la complejidad de hacer una aplicación se dispara, la programación orientada a objetos se hace obligatoria y muchos desarrolladores de php amateur quedan fuera de juego.
Con esta aproximación, programar en php no difiere mucho de hacerlo en Java, ya que php orientado a objetos (php 5) tiene una sintaxis muy similar a C++ y por tanto a Java, pero sin las ventajas que este ultimo ofrece en cuanto a tipado fuerte (los tipos de datos hay que declararlos siempre y el compilador da error si se asignan valores u objetos de un tipo incorrecto), por poner un solo ejemplo.
La laxitud en determinados aspectos del lenguaje que presenta PHP era muy buena cuando se trataba de hacer pequeños (o grandes) scripts que funcionaban de manera secuencial, o funcional, pero cuando entran en juego conceptos como la herencia de clases, los interfaces o las clases abstractas PHP te obliga a hacer casting especifico en cada asignación si quieres tener la certeza (mediante un error en tiempo de ejecución, ya que php no se compila) de que estas asignando una objeto válido, y eso es muchísimo mas trabajo.
Lo que ofrece el framework de Joomla en su implementación del MVC que mejora o al menos aligera el trabajo que tiene programar en entornos similares en Java como Spring o Struts es que Joomla tira mucho de “convención” en lugar de hacerlo de “configuración” como hacen los frameworks Java. En eso se parece mucho mas al RubyOnRails aunque sin llegar al extremo de este ultimo, que es el lenguaje de las convenciones por antonomasia.

Lo bueno de la programación por convención es que te ahorras escribir innumerables ficheros de configuración en los que le indicas al framework que es cada clase, si es parte del modelo, de la vista o del controlador, donde se ubica, etc. ya que automaticamente Joomla espera que las clases que representan cada cosa tengan un nombre concreto que se compone de varias partes. Lo malo es que tienes que saberte esas convenciones, que no son estándares, o si no puedes recordarlas, al menos tener una buena documentación de referencia que las explique, cosa de la que, a mi modo de ver, carece Joomla.
La documentación de Joomla está muy orientada al usuario o administrador del sitio que se crea con el, pero es mas difícil de encontrar buena documentación para el desarrollador que a menudo se ve tirando de tutoriales hechos por terceros, consultando foros recónditos y buceando en el código de los componentes que vienen de serie para poder entender como se hacen determinadas cosas.

Y bueno, despues de este “Rant & Rave” no me queda mas que recomendar un par de tutoriales para aprender lo básico (y solo lo basico) sobre como hacer componentes en Joomla 1.5.6. Soy un poco pesadito con la versión de Joomla porque la anterior, la 1.0, no usa el paradigma MVC y por lo tanto la creación de componentes es completamente diferente.

El primer tutorial está en español y es el de Nosolocodigo de David Noguera. Lo cierto es que es un tutorial muy clarito y desmenuzado, aunque no entra en muchos detalles (lo cual es de agradecer si es el primer tutorial que lees), es sin embargo muy bueno para empezar. Si hay algo que echarle en cara es el ejemplo escogido. El “hola mundo” habría sido una birria, pero llamar “prueba” a tu componente es bastante poco esclarecedor y antieducativo :)
Otro tutorial lo he encontrado en el propio wiki de Joomla y consta de 4 partes. Puede parecer que me contradigo pero no, el tutorial está bien (salvo por el hecho de que, si, en efecto, al componente lo han llamado “Hello”), es un poco mas completo que el de nosolocodigo (de hecho estoy casi seguro de que David se ha basado en este) pero hay cosas que se quedan sin explicar y que no son fáciles de encontrar. Algunas que echo en falta yo: ¿como metes tu aplicación en el menú del administrador? ¿como creas date pickers en tus formularios? ¿como insertas una hoja de estilo propia de tu componente en la vista? Cuando encuentre las respuestas las iré poniendo.

Es poco probable que haga un tutorial, ya que ya existen estos dos, pero lo mismo problemas concretos si que publico.

Escribe un comentario sobre "Componentes en Joomla"
 Bienvenidos a la Joomla    (0)    2008-09-12@070

Joomla es un CMS que me he pasado unas semanas evaluando para montar un par de sitios web en tiempo record.
A pesar de que estoy mas a favor de hacer webs robustas con tecnologías Java, he de reconocer que para ciertos sitios con poco tráfico usar frameworks java es matar moscas a cañonazos y el esfuerzo no merece la pena. Eso unido a que la mayoría de los hostings de precio razonable solo ofrecen soporte para tecnología LAMP me hicieron investigar las opciones en PHP con Mysql, especialmente las mas utilizadas como son Drupal y Joomla, heredero de Mambo. Antiguamente había llegado a usar PHPNuke también, pero no guardaba un buen recuerdo.
Por comentarios de mis amigos de Soygeek al final me decanté por Joomla y aunque al principio resultó un poco confuso el acostumbrarse a la terminología específica que usa, una vez interiorizada es mas sencillo orientarse por todo el sistema de administración.

Para usar Joomla sin contratiempos debes saber lo que es:

  • Article
  • Category
  • Section
  • Component
  • Module
  • Plugin (antes mambot)
  • Template

Artículo (Article)
La unidad básica de contenido en cualquier CMS, pero mas precisamente en Joomla, es el artículo. El artículo es el “content” que se trata de “managear”. Habitualmente un artículo consta de un texto adornado con diferentes estilos que engloban tablas, negritas, listas y todos los elementos habituales en HTML e incluyendo en ocasiones elementos multimedia como pueden ser fotos, o vídeos.

Categoría (Category)
Los artículos estar organizados en una estructura jerárquica de dos niveles. El primer nivel son las categorías, que sirven para clasificar de forma genérica los artículos, habitualmente dependiendo de su temática prevalente. Por ejemplo si tenemos una web de salud, podríamos montar categorías de “Médicos”, “Enfermedades”, “Medicamentos”, etc.
Dentro de cada categoría podemos tener…

Secciones (section)
Las secciones permiten agrupar los artículos para distribuir la visualización de los mismos por las diferentes áreas que presenta la plantilla. De este modo una opción de un menú nos puede llevar a una sección que nos presenta los artículos asignados a ella, o podemos tener un módulo que nos presenta dichos artículos de uno en uno, cada cierto tiempo, indicándole en la configuración (que se encontrará en el administrador) tan solo la categoría y sección que queremos usar.
Esta división entre categorías y secciones es una constante bastante extendida entre los desarrolladores de añadidos para el Joomla que suelen adoptar la misma organización jerárquica para sus unidades de información, sean estas fotografías, archivos, mapas, vídeos, mensajes o cualquier otra cosa.

Componente (Component)
Los componentes son las piezas funcionales básicas del Joomla. Cualquier funcionalidad de la que se quiera disponer tiene que venir en forma de componente. Por ejemplo si queremos poner un foro, una encuesta, un sistema de búsqueda, un repositorio de archivos, cualquier cosa menos la administración y mantenimiento de los artículos y los menus (o incluso eso mismo si queremos mejorarlo) hay que introducirla en forma de componente. Los componentes habitualmente constan de varios archivos php que conforman la funcionalidad básica del mismo, las opciones dentro del menú de administración del componente y los scripts de bases de datos que generan las tablas que necesita. Por fortuna el sistema de instalación de componentes de Joomla es muy bueno y el usuario no tiene que saber nada acerca de las interioridades del componente para poder instalarlo. Simplemente lo sube y lo usa.

Módulo (Module)
Los módulos son pequeños programas que crean una vista de determinados datos para ser insertada en la plantilla del CMS. Por ejemplo, si tengo un componente que es un calendario de eventos, puedo tener un módulo que me visualiza los eventos que están mas cercanos en el tiempo. Otro ejemplo son las encuestas, que tienen un componente para crearlas y administrarlas y luego un módulo para visualizarlas. Cualquier cosa que no sea un articulo o que no pueda ser mostrada como uno, necesitará un módulo.
Como norma general, un componente puede no tener módulos, pero un módulo siempre tendrá un componente que le provea de la información que necesita.

Plug-in
Los plug-ins, que antes se llamaban mambots como reminiscencia del precursor de Joomla, el Mambo, son unos añadidos que permiten tener funcionalidades añadidas dentro de los artículos. A veces mediante la inclusión de nuevos botones en el editor y otras, las mas, mediante el uso de marcas especiales (que van entre llaves) que son sustituidas en el transcurso de la renderizacion de la página por el contenido deseado.
Por ejemplo, si he instalado un componente que es una galería de fotos y quiero mostrar una foto aleatoria de la galería dentro de mi artículo, necesito un plug-in que me permita hacerlo, incluyendo un código como {imagenaleatoria idgaleria=20} que mostrará en ese lugar la imagen aleatoria.
Al igual que indicaba antes, un componente puede no tener ningún plug-in (por no necesitarlo o porque nadie se ha molestado en escribir el código aún), pero es bastante poco habitual encontrar un plug-in que no esté asociado a algún componente.

Plantilla (Template)
Todo el contenido que reside en Joomla se visualiza al cliente final mediante un sistema de plantillas relativamente sencillo. La plantilla define el aspecto de la página, ayudado por hojas de estilo CSS, y en su descripción reserva zonas o “areas” a las que se pone nombre, por ejemplo, si queremos reservar un lugar para la inclusion de un módulo en la parte superior de la página podemos usar el siguiente código:

<jdoc:include type=”modules” name=”top” />

Esta directiva hace que Joomla, a la hora de hacer render de la página, inserte en ese lugar el código HTML producido por el modulo que esté asignado al area “top”. Esa asignación se realiza desde el administrador de contenidos de Joomla.
Las plantillas por defecto de Joomla tienen unas 10 áreas para los diferentes módulos. En algunas áreas caben varios módulos y en otros solo uno.
Habitualmente lo mejor es elegir una plantilla ya hecha tal cual o modificarla a tu gusto. Hacerla de cero es un tema avanzado.

El ejemplo de como ha quedado lo que he hecho con Joomla se puede ver en la página de la Peña Ciclista Alpedrete y también en la web de LEVE, la liga de entrenamiento de ciclismo virtual.

Otro día presentaré las pautas para hacer un componente para Joomla.

Escribe un comentario sobre "Bienvenidos a la Joomla"
 Garmin al desnudo    (11)    2008-07-21@768

Desde hace algún tiempo vengo experimentando un problema con mi GPS Garmin etrex Venture Cx. Cada cierto tiempo, de manera aleatoria, sin una relación causa efecto distinguible, se apaga solo. Eso si, solo si esta siendo alimentado a pilas.
Al parecer es un problema bastante común en los GPS de mano de Garmin e históricamente se ha venido echando la culpa al posible movimiento de las pilas dentro de su compartimento, lo que hacía perder contacto e interrumpir la alimentación durante un instante lo que hacia apagarse al aparato.
Este diagnóstico tan ámpliamente aceptado por los sufridos usuarios de Garmin tendría que haberse solucionado con la introducción de unas pequeñas almohadillas de neopreno en la parte trasera de las pestañas que hacen contacto con las pilas, solución que adoptó Garmin hace tiempo y que viene en GPS como el mio. Pero esto no ha evitado los problemas en mi GPS, que se apaga mientras voy en bici tanto si estoy en medio de una vertiginosa bajada, como si estoy subiendo a 8 Kph a paso de caracol escalador o incluso a veces estando parado.

De todas las explicaciones que he visto por internet, la que mas me ha convencido ha sido la de DarrelC en su post Garmin mysterious power-off symptoms explained. En su exposición explica que el problema proviene de la solución que ha dado la gente de Garmin para la conexión entre el circuito impreso del GPS y el compartimento de pilas. Se trata de dos láminas metálicas dobladas que hacen contacto con dos “pads” en el circuito impreso. Debido al traqueteo propio de viajar en el manillar de una bici, estas láminas rozan continuamente los pads en el circuito impreso creando un rayajo que elimina parte del material conductor. Cuando las láminas se vuelven a mover o se produce cualquier cambio físico (temperatura) o químico (humedad) en el ambiente existen muchas probabilidades de que el contacto eléctrico entre lámina y pad desaparezca durante unos microsegundos, suficientes para hacer que se apague la unidad.

Solo había una manera de saber si este problema es el que estaba aquejando a mi GPS: desmontarlo, destriparlo, abrirlo en canal. ¡Bieeeennnnnn!
(más…)

Escribe un comentario sobre "Garmin al desnudo"
<< Posts anteriores  Posts siguientes >> 

 Guias

 Comentarios