domingo, 8 de noviembre de 2015

Habilitar MSE & H.264 Firefox/Iceweasel Debian

Al día de hoy cada ves más son los sitios que dejan de utilizar flash (parece que sufre una lenta agonía) para sustituirlo por HTML5 o algo que permita la reproducción de vídeo sin necesidad de flash-player.

Para habilitar MSE "Media Source Extensions" y H.264 en Firefox e Iceweasel hay que instalar algunas cosas y configurar otras, nada complicado que no podamos hacer en apenas unos minutos.

Para comenzar si ejecutan Firefox o Iceweasel y se dirigen a la página de youtube para comprobar para que tenemos soporte y para que no, con suerte verán algo como esto:


Como se ve en la imagen solo está habilitada la primera columna, la segunda está sin soporte que es donde aparece MSE, para habilitar esa columna hace falta configurar el navegador e instalar algunas cosas como ya había comentado.

Lo que se necesita instalar son los "codecs gstreamer", actualmente estoy utilizando Debian Testing y tengo instalada la versión 1.0, esta es la lista:

gstreamer1.0-alsa gstreamer1.0-libav gstreamer1.0-nice gstreamer1.0-plugins-bad gstreamer1.0-plugins-base gstreamer1.0-plugins-base-apps gstreamer1.0-plugins-good gstreamer1.0-plugins-ugly gstreamer1.0-tools gstreamer1.0-x

La configuración del navegador se realiza colocando "about:config" en la barra de direcciones y buscando lo que queremos cambiar, por ejemplo, buscamos "media.mediasource.enabled" y haciendo click sobre ella cambiamos la opción de "false" a "true", es decir la habilitamos, así con todas las demás, la lista:

1ro.- about:config 2do.- media.mediasource.enabled to true media.mediasource.mp4.enabled to true media.mediasource.format-reader.webm to true media.mediasource.webm.enabled to true media.fragmented-mp4.exposed to true media.fragmented-mp4.ffmpeg to true media.fragmented-mp4.gmp to true media.fragmented-mp4.use-blank-decoder to false

Dependiendo de la versión de Firefox o si es Iceweasel algunas opciones estarán y otras no, habilitar las que estén presentes debería funcionar, y si todo salió bien, deben ver algo así:


Espero les sea de utilidad.

miércoles, 21 de octubre de 2015

Un MVC básico para los primeros proyectos con PHP

Alguna ves quisiste hacer un sistema sencillo, que funcionara bien y sin complicarte tanto la vida?

Eso me pasó cuando recién comenzaba con php, en los primeros proyectos con él en la universidad me dió bastante trabajo, aunque eran proyectos sencillos, el no saber como manejar/abordar la resolución de esos problemas me hizo trabajar de más, pero al grano...

Este ejemplo está hecho para quien recién comienza con php y no tenga que programar con el clásico "página uno → página dos", con todo el código remezclado en un solo archivo de 800 líneas como me pasó en mis primeros días, si no que hagan algo un poco más decente y entendible, también por esto último utilicé programación procedimental al estilo de lo que usaba por aquellos días.

La idea es que se entienda el principio de como funciona el sistema, para que luego
puedan modificarlo a gusto y utilizar el estilo de programación que más les agrade, o por lo menos ese es el plan.

Creo en el principio de que hay que quemar etapas y la de "página uno → página dos" con todo el código en la misma página "html, php, js, mysql etc", hay que quemarla y rápido si es posible hasta evitarla desde el inicio... ya ahora si, vamos a ver como es que funciona este ejemplo.

La estructura de las carpetas es la siguiente:

Para explicar brevemente las carpetas y su función;
Carpeta DB: solo está allí porque contiene la base de datos para este ejemplo, deben entrar y seleccionar el archivo "dbprueba_php.php" que les creará la base de datos con lo necesario para que todo funcione correctamente.

Carpeta css: contiene los archivos css necesarios para el template.

Carpeta img: contiene las imágenes del sistema.

Carpeta js: donde guardo todos los archivos javascript o jquery.

Carpeta lib: la utilizo para guardar la conexión a la base de datos.

Carpeta system: contiene las carpetas necesarias para el mvc.

Carpeta controller: es donde están los controladores del sistema y donde se define como debe funcionar el mismo (donde se deberían tomar las decisiones).

Carpeta model: tiene la mayoría del código php y mysql, es donde se deberían resolver los problemas, no tomar las decisiones, es el back-end.

Carpeta view: aquí se guarda el código html que será el front-end del sistema, debería tener la menor cantidad de código php, js, etc., posible.

Carpeta admin: lo mismo que la anterior con la diferencia que esta es para administración del sistema, es decir cuando se logra superar el login.

Para no aburrirlos con el cuento explico el sistema resumido, la carpeta model se supone sea el back-end del sistema, donde va la mayoría del código que resuelve los problemas, la carpeta view que contiene las vistas es el front-end del sistema y esa es básicamente su función, y con la carpeta controller se toman las decisiones de como debe funcionar el sistema, es donde organizamos todo lo mencionado anteriormente para hacer que todo funcione como debería.

El archivo index.php:

No hay mucho que explicar, con "session_start" se inicia la sesión, con los "if" determinamos si ya se inició una sesión, en el primer caso si no la hemos iniciado utilizaremos "controller.php", una ves iniciemos la sesión estaremos utilizando "controller2.php".

El archivo controller.php:

El archivo contiene un "switch case" y dos funciones, una para el "header" y otra para el "footer".

Con el "if" determinamos si hemos enviado algo a través de "get_action", en este caso lo único que podemos enviar es "login", pero de entrada o presionando inicio estaremos dentro del "if" y veremos la página de entrada al sistema, pueden ver que contiene la función header, un include a la carpeta view y termina con la función footer, prácticamente es como armar un rompecabezas, o algo así, pero quiero que vean que tenemos tres cosas distintas que se están organizando dentro de ese "if" para mostrar algo en especifico.

Luego está el "switch case" dentro del "else", en ese punto debimos presionar "login" para estar dentro del "switch case".

En ese caso hago un "require" a la conexión y luego está el "switch case", que contiene la opción "login" y la opción "default".

En "login" hago un "include" a la carpeta model, está vista header, otro "include" a la carpeta view, vista footer, y otro "include" más a la carpeta model, en este caso para los mensajes, es donde guardo todos los mensajes en ves de colocarlos directamente en cada archivo,

Por último "default", estaremos dentro de esta opción en caso de enviar algo diferente a "login", por ejemplo si presionamos login y luego en la barra del navegador cambiamos login por "logines" por ejemplo, no saldrá una página mostrando un error y nos redireccionará de nuevo al inicio.

Y básicamente resumiendo bastante así es más o menos como funciona, el archivo "controller2.php" tiene el mismo funcionamiento con la salvedad que es donde manejaremos las opciones de administración, se maneja de la misma manera con los "case".

Todo lo anterior, en mi caso me resulta muy sencillo y fácil de entender, es por eso que lo elegí como ejemplo, si descargan el archivo y se fijan en los nombres de los archivos notarán que tienen sus nombres en común, por ejemplo, si creo un archivo para agregar un usuario en view y le coloco por nombre "adduser" en la carpeta model creo un archivo con el mismo nombre, lo mismo en el controller, creo una opción "adduser" para trabajar con esa opción, del mismo modo, si necesito hacer validaciones creo otro archivo con el mismo nombre y con extensión .js en la carpeta js, y así notarán que es todo un poco más ordenado.

La carpeta con el ejemplo la pueden descargar desde la siguiente dirección:
mvc-basico-php.

Para entrar como administrador al sistema el nombre y passw del login es "admin01".

Espero les funcione y ayude en sus proyectos.

viernes, 16 de octubre de 2015

Solucionar problema con sonido de Skype en Debian

Si utilizan la nueva versión de Skype seguro ya habrán notado que a los grandes genios y flamantes nuevos dueños de skype les dio por sustituir alsa por pulseaudio.

Por ese motivo, cuando lo necesité estuvo, pero no funcionó, no podía hablar a través de el, es decir, no podía hablar solo podía chatear.

Tampoco es posible abrir sesión en una versión anterior como muchos recomiendan (eso mismo pensé e hice, pero los grandes genios detrás de skype también pensaron en eso).

Consideré varias opciones y ninguna me convenció, instalar pulseaudio esa no es una opción, menos obligado por los genios de skype, así que buscando me encontré con una solución bastante sencilla, si hay que instalar algo, pero no es pulseaudio.

Se trata de "apulse" un pequeño programa con el que podemos usar skype sin necesidad de instalar pulseaudio, una maravilla (:

Las paginas para descargarlo:
En github.
Para descargar los .deb desde aquí.

Para usarlo es tan simple como abrir un terminal y "$ apulse skype" o añadirlo al menú de inicio "apulse skype".

En mi caso lo probé y funciona bien, puedo hablar sin problemas y no he notado comportamientos extraños ni nada, hace lo que dice.

Espero les sirva.

domingo, 26 de julio de 2015

Como digitalizar una diapositiva

Esta entrada está fuera de mis dominios, pero gasté bastante tiempo buscando y no fue después de leer y releer que pude hacerme una idea más clara de lo que me podía funcionar.

Estuve digitalizando los álbumes de la familia de a poco (escaneando) y le había comentado a mi padre que quizás (si, quizás) se pudieran digitalizar las diapositivas que tiene por ahí guardadas, algunas de la familia y otras de sus aventuras de hace muchos años cuando iban al "monte".

En fin, se lo tomó muy en serio (lo de digitalizar las diapositivas) y me iba a salir el muerto si no hacía lo que prometí. Hay un proyector, y en general está bueno, lo que tiene dañado es el bombillo, pero no se consigue, se conseguía un remplazo que duraba sin mentir tres días, y ahora ni eso.

Así que, básicamente las dos maneras posibles que consideré fueron escaneando o fotografiar con una cámara digital, la primera me gustó más y me pareció la mejor opción, pero después de probar de diferentes formas y maneras en ningún caso me gustaron los resultados.

Obtenía una imagen aunque nítida (no necesariamente clara) muy granulada y se notaba demasiado el polvo y las marcas en la diapositiva, además que los colores eran muy oscuros, todo esto se podía mejorar un poco con GIMP pero igual no me convencía, esta opción quedó definitivamente descartada.

Pasé a la opción de fotografía con cámara digital, pero como en la mayoría de los casos había leído que se necesitaba cierto tipo de cámara con una sensor X o Y no estaba muy seguro de que fuese a funcionar.

Lo que utilicé para digitalizar las diapositivas:

1.- Una Cámara digital KODAK EASYSHARE M530.

2.- Una lata de leche mediana con tapa plástica.

3.- Una lampara LED con rosca de bombillo que sirve también como lampara de emergencia.

4.- Una bolsa plástica blanca.

5.- Un vidrio cortado para colocar encima de la lata de leche.

6.- Un trípode/base para fijar la cámara y que no se mueva.

Parece complicado pero no lo es, a la lata de leche le hice un hueco abajo por un costado para poder pasar el cable para la lampara LED, esta la coloqué en el centro de la lata, a la tapa de plástico le hice una forma cuadrada justo en el centro para dejar pasar la luz para iluminar la diapositiva desde abajo.

La bolsa plástica blanca la coloqué por debajo de la tapa de la lata estirándola hasta hacerla quedar liza y después la tapé, luego la pasé también por encima, la deje liza y la sujeté con cinta de embalar por los lados de la lata, encima coloqué el vidrio cortado a medida.

Fijé la cámara a una base para que no se moviera y seleccioné el modo "Escena (SCN)" allí elegí "Flor" que se utiliza para fotografiar a corta distancia y objetos pequeños. También seleccioné fotografía de tiempo de 10 segundos, tomé dos o tres fotografías de cada diapositiva (no usé el modo de ráfaga o dos fotografías), esto fue útil porque en algunos casos, había fotografías que salían mejor que otras (aunque era la misma diapositiva) y esto me permitía elegir la mejor.

"Lo que hay que tomar en cuenta y es muy importante es la distancia entre la diapositiva y la cámara, si la cámara está muy cerca NO enfoca y si está muy lejos la fotografía no queda muy bien, ni tiene un buen tamaño."

Se pueden mejorar muchas cosas, pero esto por muy MacGyver que parezca funcionó y funcionó bien, no es para ganar un premio pero funcionó.

Los resultados?




Esto fue con una cámara digital si se quiere sencilla y utilizando cosas que encontré sin salir de casa y sin gastar un solo Bolívar, la calidad de la fotografía también depende de la calidad de la diapositiva, si la diapositiva se ve mal no esperen milagros, los colores si en la mayoría de los casos se pueden mejorar.

Esto quiere decir, que es mentira que se necesita una cámara de gama alta con X o Y sensor, con una cámara decente y las herramientas adecuadas es posible obtener buenos resultados.

Bueno, espero les sirva.

domingo, 17 de mayo de 2015

Alternativas en la nube Yandex.Disk y Cloud.Mail.ru

Desde hace tiempo buscaba algún sitio que me permitiera subir mis archivos y respaldos en la nube, por ejemplo, el servicio de Google es bueno pero no me convencía del todo (cuestión de gustos imagino), así busqué y probé hasta que un día recordé que dos de las cuentas de correos que utilizo también tienen servicio de almacenamiento en la nube, me refiero a los servicios de Yandex y Mail.ru.

Para comenzar, Yandex ofrece un buen servicio de almacenamiento, con el registro ofrecen 10GB de almacenamiento el cual se puede aumentar hasta los 20GB con referidos, por cada referido se reciben 512MB, para que esto suceda los referidos deben registrarse y luego instalar cualquiera de sus app para recibir 1GB adicional.

Como limitante o contra se pudiera decir que el idioma, por ahora solo está en ruso y en inglés, lo mismo con sus app, en Debian descargué e instalé su app para linux, funciona desde la línea de comandos y es muy fácil de usar, los comandos son pocos y nada del otro mundo, además tiene un archivo de configuración que puede ser editado para más comodidad, como funciona?

# Para mostrar los comandos $ yandex-disk help # Cuando se utiliza por primera ves usar este comando, esto crea la config en; "~./usuario/.config/yandex-disk/" $ yandex-disk setup # Iniciar el daemon $ yandex-disk start # Sincronizar los archivos, por defecto la carpeta está en; "~./usuario/Yandex.Disk" $ yandex-disk sync # Ver el estatus $ yandex-disk status # Detener el daemon $ yandex-disk stop

Al correr el "setup" se nos pregunta nuestros datos, usuario y contraseña, donde estará la carpeta que contendrá los archivos, y si queremos iniciar el daemon al iniciar el computador, lo importante es que por ejemplo, yo elegí iniciar el daemon manualmente, y al iniciarlo, automáticamente sincroniza la carpeta, es decir, no tengo que hacer nada más, si copio un archivo o carpeta dentro de la carpeta de yandex.disk enseguida se sincroniza, no es necesario que haga algo más.

Como punto a favor están los hasta 20GB de espacio, y que además subir y compartir archivos es muy fácil.


Si se animan a probar les dejo el link de invitación para recibir 1GB adicional (recordar que luego deben instalar la app para recibir el GB).

Siguiendo con Mail.ru, como punto en contra está el hecho de que su página "cloud.mail.ru"no está traducida ni en español ni en inglés, solo en ruso, su app si está en inglés aparentemente (no la he probado todavía).

Como punto a favor están los 25GB de almacenamiento sin costo, y que si se utiliza a través de sus app no debería haber ningún problema dado que estas están en inglés, también decir que su página de correo si está en español, además que para mi gusto tiene una interfaz sencilla y agradable.

NO he tenido problema al utilizarla, con la ayuda del traductor todo es posible (:


Si quieren probar el servicio les dejo el link de registro que por cierto está en español (lo que no está en español es cloud.mail.ru).