miércoles, junio 19, 2013

Integración Fancybox y Flowplayer (en Sharepoint)

Advertencia: Este artículo no necesariamente está pensado para el lector casual

Por un desarrollo Sharepoint en el que me ha tocado participar por la empresa donde trabajo, se tuvo qeu hacer una integración de Fancybox con Flowplayer, JavaScripts para una galería de fotos en ventanas modales y un reproductor de videos respectivamente, ambos para desarrollos web. Personalmente ni Fancybox ni Flowplayer son santos de mi devoción, hubiera preferido optar por PrettyPhoto y algún otro reproductor de video en HTML5 .

El consultor que se está encargando de los desarrollos Sharepoint (y el responsable indirecto de esta publicación) me señaló que había un script llamado FancyPlayer que hacía la mencionada integración. El problema es que esta integración se hace con versiones algo desactualizadas de ambos script.

Con las versiones más actuales la integración en realidad es bastante directa.
Paso a paso:
1.- Agregar los siguientes estilos solamente para el ajuste:
.flowplayer { margin: 1em auto; height: auto; text-align: center; }
.flowplayer video { width: 90%; }
.fancybox-nav { top: 35%; height: 30%; width: 40px; }
.fancybox-next { right: -1.3em; }
.fancybox-prev { left: -1.3em; }

Aquí hay varios estilos que son para el ajuste de los botones de navegación en las galerías. Loss estilos importantes son los referentes al tamaño del contenedor flowplayer.

2.- Hacer que cada bloque de código que lleve la clase flowplayer (normalmente un div con el atributo class="flowplayer") especifique en el atributo style el ancho y alto del video (esos parámetros se pueden obtener usando Sharepoint).

 

3.- Agregar el siguiente código en el bloque $(document).ready( function(){ /* aqui */}); :
$('.flowplayer').flowplayer({ swf: '/_layouts/15/js/flowplayer.swf' });
$('div.gallery div.photo a').fancybox({ scrolling: 'no', autoSize:true , helpers: { overlay: { locked:false}} });

Aquí lo importante es que los videos se desplegarán del tamaño que especifique el elemento contenedor.
Y sería. El resto es solamente referirse a la documentación de ambos plugins.

Esta integración no es exclusiva para Sharepoint, claramente la pueden extrapolar a desarrollos no-Sharepoint, y claramente pueden mejorarla.

lunes, junio 17, 2013

Escritorios múltiples en Windows al estilo de Compiz

La advertencia habitual: Es probable que este artículo no sea del interés común. Léalo y vea si le interesa (nunca se sabe).

En mi ambiente de trabajo Linux tengo un Compiz ligeramente personalizado.
4 escritorios dispuestos en una "pared" de 2x2.

  • La esquina superior derecha me muestra las ventanas abiertas
  • La esquina inferior izquierda me muestra la pared de escritorios
  • La combinación Control+Alt+Flecha Derecha me desplaza al escritorio siguiente
  • La combinación Control+Alt+Flecha Derecha me desplaza al escritorio anterior
  • Los botones laterales de mi mouse funcionan igual que las combinaciones de teclas antes mencionadas


En la oficina estoy condenado a utilizar Windows (de hecho Windows 8 :-S ), y mi idea era poder tener algo similar, que no consumiera demasiados recursos extra.

Ya había explorado un poco el tema de los escritorios múltiples sin encontrar una solución decente, hasta que repetí la búsqueda y encontré el programa Dexpot.
Provee las mismas funcionalidades de Compiz, salvo por los efectos visuales, y la configuración de teclas.

La configuración de teclas quise manejarla utilizando los controladores de mi mouse, un descontinuado A4Tech X-750F, y su software Smart-X7, sin embargo Windows 8 se mostró reacio a aceptar las configuraciones que indiqué.
Realizando una nueva búsqueda llegue al programa X-Mouse Button Control (no confundir con el XMBC, que es una media center).

Con ese programa es muy fácil configurar las acciones para los distintos botones del ratón, de hecho lo que hice fue simplemente mapear los botones adicionales a los atajos de teclado.



Lo mejor de todo es que funciona, y no hay una pérdida sustancial de rendimiento en mi máquina (esto puede variar de una máquina a otra, dependerá de las especificaciones de hardware).

domingo, junio 09, 2013

eSata en Ubuntu

Advertencia: Lo habitual, esto es un artículo técnico sin relevancia para el lector casual. De hecho es caso un recordatorio en caso que llegara a olvidar la secuencia de comandos.

Problema: Tienes a tu disposición una unidad de disco duro externa con capacidad de conexión eSata, lo que es muy positivo considerando que la velocidad de transferencia de datos (lectura y escritura) es mucho muy (intencionalmente mal redactado para denotar la ganancia) más rápida que por USB. Lo conectas a la entrada eSata y Ubuntu no la reconoce a menos que reinicies con la unidad conectada (lo que es absurdo si piensasa que un eSata es hotplug).

Solución (paso a paso):
  1. Instalar las scsitools con el comando:
    $ sudo apt-get install scsitools
    Va a pedir la clave ya que la estamos ejecutando en modo root a través de sudo.
  2. Conectar la unidad eSata.
  3. Ejecutar el comando:
    $ sudo rescan-scsi-bus
    lo que va a refrescar las unidades conectadas.
  4. Montar la unidad eSata (suele funcionar el click derecho y montar, sino derechamente explorar la unidad) y a trabajar.

Suerte.

viernes, agosto 10, 2012

Tapando el sol con un dedo: Otro ciclista muerto

Hoy una lamentable noticia me descompuso buena parte del día, la madrugada de hoy un conductor ebrio atropelló a un ciclista y después de varias horas el ciclista falleció.
Más detalles de la noticia en http://www.furiosos.cl/2012/08/10/otro-cicilsta-fallece/ , y una nota bastante más completa en https://www.facebook.com/notes/happyciclistas/lamentable-noticia/10151988376725442

Una pena, no puedo más que lamentar lo sucedido y manifestar mis condolencias a la familia y cercanos de Arturo.

Sin embargo hay un factor que me hace pensar, Arturo iba sin casco, según declaró César Vallejo en su declaración en el Facebook de Happyciclistas:
"Cabe señalar que Arturo iba sin su casco, lo que claramente pudo haber amortizado el golpe, tanto en el parabrisas del auto como en el pavimento...."
Si bien las lesiones eran de tal gravedad que condujeron a su muerte, el tec abierto pudo haberse prevenido, y probablemente Arturo hubiera sobrevivido.

Es una discusión eterna, que los "furiosos" van a aludir no referirse a este punto "sensible" solamente "para no desvirtuar el debate respecto a la muerte de una persona por un individuo borracho conduciendo un auto." tal como me respondieron en su Facebook. Se parte con un debate respecto a una muerte por una irresponsabilidad más grande que otra, pero se intenta tapar el sol con un dedo.
Por un lado la irresponsabilidad criminal del conductor ebrio, condenable como homicidio involuntario (algún abogado que me corrija la figura legal), pero por otro la no menor irresponsabilidad de un ciclista respecto a su propia integridad física.

¿Cuántas muertes más son necesarias para que se legisle de manera seria respecto a los espacios de los ciclistas?
¿Cuántas muertes más son necesarias para que los detractores del uso del casco entren en sana razón?

"Desviar el tema, es terminar discutiendo que es mas "seguro" quedarnos encerrados en casa para no morir chocados por un auto." dijo el vocero en Facebook de los "furiosos", respondiéndome.
No se trata de eso, se trata de tomar conciencia que como ciclistas responsables tenemos las herramientas para que nuestro circular sea más seguro en la capital, más considerando que en Chile (y puntualmente en Santiago) NO EXISTE cultura vial.

El uso del casco DEBE ser obligatorio. Si TU como ciclista crees que NO DEBIERA SER ASÍ, piensa en tus familia y en tus seres queridos. Ellos no querrían que por una omisión perdieras la vida, cuando pudiste eventualmente salvarte por usar un casco.

Estoy claro que usar un casco no necesariamente va a salvar mi vida frente a un accidente de tránsito (*), pero es esa pequeña incertidumbre de que eventualmente podría salvar mi vida la que sostiene mi decisión de pedalear con casco.

(*): Tal y cómo usar el cinturón de seguridad (en un automóvil) puede NO salvar mi vida, o los airbags pueden salvarme o asfixiarme. No hay NADA que pueda garantizar tu seguridad al 100%, pero si hay elementos que pueden ayudar a aminorara el daño recibido frente a un accidente.

lunes, mayo 21, 2012

Instalación de Phreeze: Framework MVC para PHP

Desde hace poco estoy desempolvando mis destrezas programando PHP. Estaba entre arreglar mi generador de código (algún día hablaré del mítico DbCommand y su generador de código) y crear unas plantillas Velocity para generar código  PHP o encontrar un Framework FRB (Fácil, Rápido y Bonito)  que me cree los CRUDs que necesito y me permita seguir usándolo sin demasiada dificultad (por eso lo fácil).

No puedo decir que evalué, sino más bien miré, varios Frameworks. CodeIgniter, Zend, CakePHP, y varios otros algo más desconocidos, todos son muy muy completos, pero son tan completos como complejos. Yo buscaba algo fácil. Y llegué a Phreeze.

Phreeze me convención en un video de 3 minutos. La aplicación genera un CRUD completo para bases de datos MySQL con sólo algunos clicks. Me dejé seducir por el video ya que Phreeze es bastante complejo y hay mucho de magia detrás.
A punta de prueba y error logré decifrar como instalarlo en un entorno "no preparado". Hay que decirlo la documentación es completa, pero hasta hace poco carecía de tutoriales, y no es precisamente un Framework para enfrentarse sin un buen ejemplo, o un buen tutorial (personalmente prefiero los 2dos).

Requerimientos previos:

  •  Apache
  •  MySQL, sino no tiene sentido haberlo bajado...
  •  PHP, sino no va a funcionar
  •  PEAR  para PHP
  •  Habilitar mod_rewrite en la configuración del Apache

En mi caso yo uso Ubuntu, así que la instalación la hice usando apt-get y Synaptic (ya se que el nuevo Software Center supuestamente es más simple, pero yo soy de la vieja escuela).

La habilitación de mod_rewrite tiene sus "ques":

  • Se debe editar el archivo de configuración de sitios de Apache reemplazando donde dice
    AllowOverride None
    por
    AllowOverride All
    para que  los directorios que deban ser afectados por este módulo.
    En Ubuntu el archivo se encuentra en:
    /etc/apache2/sites-enabled/000-default
  • Habilitar el módulo mod_rewrite copiando el archivo a la carpeta de módulos habilitados (comando en una sola línea):
    cp /etc/apache2/mods-available/rewrite.load/etc/apache2/mods-enabled/rewrite.load
  • Reiniciar Apache:
    service apache2 restart


Supongo que está de sobra decir que los comandos se ejecutan en modo root ( sudo su - , o derechamente con sudo) .


Instalación:

  • Bajar el archivo comprimido desde la página oficial y descomprimir en alguna carpeta que sea visible desde su servidor web, por ejemplo /var/www/phreeze (de hecho llamarla phreeze es lo recomendado).
  • Ajustar los permisos para la carpeta temporal de Phreeze, en 
    /var/www/phreeze/builder/temp
    ejecutando
    chmod -R 777 /var/www/phreeze/builder/temp
    Los permisos 777 suelen ser  "complicados", pero claramente no van a asignar todos los permisos en un servidor de producción.
    ¡HÁGANLO SOLAMENTE EN MÁQUINAS DE DESARROLLO NO EXPUESTAS!
    (Sí, les grité, pero fue sólo para asegurarme que entienden esto.)
  • Verificar que funcione visitando http://localhost/phreeze/builder
  • Generar sus CRUDs.

Instalación de los CRUDs:

  • Descompriman el archivo que les generó Phreeze en alguna carpeta. Procuren  respetar los parámetros de configuración que dieron en el builder.
  • Ajusten los permisos de la aplicación a 755
    chmod -R 755 *
  • Cambien los permisos de la carpeta template_c a 777
    chmod -R 777 templatec
    Esto es para permitir que las plantillas puedan ser compiladas a la carpeta local.
    OJO
    : Yo uso Smarty, Phreeze permite usar Smarty o Savant como motores de plantillas (templates), la carpeta template_c es de Smarty, si usan Savant es otra carpeta.

Los comandos los ejecutan en la carpeta donde descomprimieron su aplicación.

Creo que con eso tienen para entretenerse. Les recomiendo que vean los tutoriales en video de Phreeze, son muy ilustrativos de como se usa la aplicación.

martes, marzo 13, 2012

jQuery Mobile borrar item en listview usando swipe

En este momento estoy usando jQuery Mobile para desarrollar algunas interfaces para unas aplicaciones móviles. Gracias a PhoneGap puedo compilarlas para Android y pasan de ser un desarrollo 100% a una desarrollo que sigue siendo web, pero tiene olor a aplicación.

Dentro de la interfaz me enfrenté al problema que lo limitado del espacio en pantalla no me permite incluir demasiados botones, y requería de una manera para eliminar ítemes de una lista en modo inset. Quise copiar un poco la interfaz de webOS (de la difunta Palm)  para esto, una interfaz muy similar a la que provee iOS en el iPhone.


La idea:

  • Deslizar el dedo desde izquierda a derecha para eliminar un ítem.
  • Deben aparecer botones que permitan borrar el ítem o cancelar la operación de borrado.
  • Al seleccionar borrar se debe confirmar la eliminación antes de hacerla efectiva.


El código y el ejemplo:

Observaciones:
La variable onswipe marca como activa la acción de eliminación. Si se está eliminando un item, no se podrán eliminar otro.
Una vez que se hacen aparecer los botones para la eliminación es necesario desactivar los eventos tap y click sobre el ítem de la lista, sino va a tomar la acción por defecto y los botones no van a poder capturar el evento de click sobre ellos.
Se ha utilizado la etiqueta "button" en vez de "a" (para enlaces) para evitar que el framework aplique los estilos de lista (en este caso lista tipo inset).

Está probado en Android y en iOS y funciona. Seguramente alguien lo va a poder mejorar.
El código toma bastantes referencias de lo discutido en https://forum.jquery.com/topic/adding-an-iphone-style-swipe-to-delete-button-to-a-listview . Lamentablemente el código original no me funcionó.

martes, febrero 07, 2012

Uso de bicicletas, ni licencias ni patentes son la solución


Señor director: 
Respecto a la carta de don Luis Villagra, sobre el uso de bicicletas, las infracciones en que incurren los ciclistas, y a su pregunta ¿Cómo es posible que una persona se monte en una bicicleta y salga a la calle sin tener la menor idea de las normas y la ley del tránsito?
Respondo: De la misma manera que hay automovilistas que por su manera de conducir se cuestiona su conocimiento sobre la Ley de Tránsito. Está demostrado que la licencia no es indicador de competencia que los valide para circular en las calles, quizás si lo sería complementar con un test psicológico.
 
El problema radica en que carecemos totalmente de cultura vial. No existe concepción de sana convivencia entre peatones, ciclistas y automovilistas, siendo que por fuerza debemos compartir las mal diseñadas vías de la ciudad. Los casi nulos intentos para que deje de primar la ley del más fuerte, o aquellos para la integración entre las partes con la incorporación de ciclovías de juguete, u originalidades como el bicicletero móvil, no son suficientes para promover el desarrollo de cultura vial. 
Las calles SI PUEDEN COMPARTIRSE entre vehículos motorizados y bicicletas, y las veredas SI PUEDEN COMPARTIRSE entre peatones y ciclistas, el secreto está en que ninguno se crea el dueño y señor de estos espacios, los países desarrollados así lo han demostrado. 
José Ignacio Santa Cruz
Peatón y ciclista

Enviada al diario La Tercera en respuesta a la  carta de don Luis Villagra. Veamos si la publican.

Actualización: 
Y salió publicada mi carta, aunque me vuelve a quedar claro que el comité editorial puede editar las cartas según su propio criterio:
http://diario.latercera.com/2012/02/15/01/contenido/opinion/11-100662-9-uso-de-bicicletas.shtml Vean las sutiles diferencias.
Y si quieren seguir el tema desde la carta original: