Solución: error while loading shared libraries: libudev.so.0: cannot open shared object file:

Al instalar algunos programas en Linux, podemos encontramos con la sorpresa de que tras la instalación, la aplicación no arranca. Un primer paso para elaborar un diagnóstico es, a través de un terminal lanzar el ejecutable y ver si devuelve algún tipo de error.

Esto es lo que me pasó al instalar Isoplex (y algunos usuarios también lo han reportado con la instalación de Popcorn Time). Tras la instalación, no me arrancaba y probé por terminal, el error que me devolvía era:

Para resolver el problema, simplemente tienes que crear un enlace simbólico con el siguiente comando:

¡Y listo!, ya podéis arrancar la aplicación sin problemas.

¡Saludos!

Debug de código mediante emulación de dispositivos y Media Types en Google Chrome

Últimamente, en mi trabajo, el desarollo frontend se ha incrementado considerablemente, y me he encontrado en la situación de tener que realizar varios contenidos web con formato muy especifico para su visualización en versión web, como en versión impresa, como ya os imaginaréis es contenido con resultados estadísticos, e informes, por lo que la versión impresa de la web cobra un papel muy importante.

Hasta hace relativamente poco tiempo, este trabajo era bastante pesado, puesto que no había apenas herramientas de depuración de código CSS para los diferentes Media Types (y además, teniendo en cuenta de que la gran mayoría fueron implementandos en CSS2…).

Desde el primero momento, supuse que Google Chrome, con sus Developer Tools, tendría que tener algún “as” bajo la manga, para facilitarnos la tarea, pero me resulto curioso que no encontré dicha opción en las herramientas. Tras ponerme a indigar por Google descubrí no sólo tenía una herramienta que facilitaba la tarea, era un completo emulador de todos los Media Types y por supuesto incluyendo su completo set de herramientas como inspector de elementos HTML, modificación de estilos CSS en vivo, etc…

El problema de esto, es que los desarrolladores de Chromium (versión base de Google Chrome) han movido (escondido) en repetidas ocasiones esta funcionalidad, y han conseguido despistar a más de uno.

En este momento (Versión 37.0.2062.120 m) se encuentran en:Debug de código y emulación de dispositivos en Chrome

  1. Chrome Developer Tools
    • Linux/Windows: ctrl + shift + j o F12
    • Mac: cmd + alt + j o F12
  2. Si no se abre automáticamente el Drawer, apretamos ESC.
  3. En el Drawer de la consola, veremos una pestaña que pone “Emulation”, aquí es donde actualmente han centralizado la Emulación del navegador:
    1. Devices: Para emular dispositivos en función del modelo, resolución etc…
    2. Media: Para emular Media Types.

Esta funcionalidad nos puede ahorrar un tiempo increíble a la hora de depurar código en desarrollo web, añadiendo toda la potencia que tiene el inspector de las Google Chrome Developer Tools, y su previsualizador en tiempo real.

Android

[SOLUCIÓN] Se ha detenido el proceso com.android.phone – Android

En esta entrada os voy a contar un problema con el que tuve que lidiar hace bastante tiempo, cuando mi Nexus 4, sé actualizó a la versión 4.3 de Android sufriendo el fatídico error:

com.android.phone

Se ha detenido el proceso com.android.phone

Sí, es cierto que vamos por versión 4.4.2, y que la versión 4.4.3 no faltará mucho para que sea lanzada, pero este problema por lo que he podido ver en blogs y foros, puede ocurrir al actualizar cualquier versión, no es especifica de la actualización a 4.3

En algunas ocasiones, al actualizar de versión mediante OTA, como todos sabemos, todos nuestros datos, configuraciones y aplicaciones se mantienen “intactas” (cierto, lamentablemente no siempre es así…) por lo que la nueva actualización en definitiva lo que hace es modificar los ficheros antiguos por los nuevos. En este proceso, a veces se crea un problema al machacar los datos que tiene el teléfono para las teleoperadoras, es decir, para conectarnos a nuestra teleoperadora, y poder recibir señal para llamadas y datos.

Nos ponemos en situación:
Actualizo mi dispositivo Android a la nueva versión, finaliza la instalación de la nueva versión, sé reinicia el terminal y a partir del momento en el que vuelvo a introducir el PIN, constantemente y cada pocos segundos aparece un mensaje diciendo:

Se ha detenido el proceso com.android.phone

Si, si… Constamente, cada vez que aceptamos el error, sé vuelve a reproducir a los pocos segundos…

Solución:

  1. Debemos ser raudos y veloces, para que entre los segundos de margen que nos deja tras aceptar el mensaje de error, entrar en la configuración de APN, y seguidamente poner nuestro dispositivo en Modo Avión.
    Es complicado, pero con unos cuantos intentos sé puede conseguir, nos metemos en el menú de configuración de APN, desplegamos los Ajustes Rápidos (el menú derecho del desplegable de las notificaciones) y pulsamos en Modo Avión.
    Hay que hacerlo en este orden, puesto que si ponemos el Modo Avión primero, el sistema no nos deja acceder a la configuración de APN.
  2. Una vez aquí, ya no saltará el mensaje de error. Por lo que podemos descansar unos segundos. 🙂
  3. Tenemos que eliminar todas las APN de operadoras que tengamos guardadas.
  4. Buscar la información que nos ofrece nuestra operadora para crear un nuevo APN de forma manual e insertarlo. En la página web de la operadora os ofrecerá información sobre estos datos, incluso podéis llamar al número de atención al cliente y os lo dirán por teléfono). Nota: No os olvidéis de dar al botón inferior de guardar al insertar los datos.
  5. Una vez estemos en este paso, ya sólo hace falta quitar el Modo Avión y ¡listo!. A los pocos segundos os cogerá cobertura y conexión de datos y no volverá a reproducirse el error.
    Nota: Si esto no ocurriera, revisad los datos de APN que habéis introducido porque seguramente sean incorrectos.

Genera bastante rechazo que encima que te ilusiona recibir una nueva actualización de tu sistema, sabiendo lo cotizadas que están en Android (dichosa fragmentación…) y que en el primer arranque, nos encontremos con este tipo de problemas, que directamente no dejan hacer absolutamente nada en nuestro terminal al mostrar el error en una notificación modal.

Con estas indicaciones, seguro que lo solucionáis, pero si no fuera así, no dudéis en comentarme y trataré de echaros una mano.

Información adicional en: http://www.htcmania.com/showthread.php?t=651380

Actualización: Parece ser que una alternativa que les está funcionando a muchos usuarios es desactivar la actualización automática de la fecha y hora desde Ajustes -> Fecha y Hora

¡Saludos!

Texto vertical con CSS (cross-browser)

El otro día haciendo unos ajustes en un proyecto, sé me presentó la necesidad de tener que mostrar un texto orientado de forma vertical. Como soy un poco reacio a utilizar imágenes para estas cosas, prefiero buscar soluciones CSS que en la mayoría de casos de este tipo suelen existir.

Si queremos mostrar un texto vertical con css, basta con añadir al elemento html (p,  div..) una clase con los siguientes estilos:

Los grados por supuesto, podemos ajustarlo a nuestras necesidades.

Si quieres ampliar información visita stackoverflow.

[SOLUCIÓN] Maraca en Nexus 4

Desde que salió el LG Nexus 4, aquel fatídico 13 de Noviembre de 2013 en el que hubo un colapso completo de el sistema de compra mediante Google Play, son muchas las alabanzas y críticas que ha recibido este terminal.
Ya ha pasado más de un año desde ese día, es más, ya ha sido lanzado su siguiente buque insignia, el Nexus 5. Aun así, el Nexus 4 sigue siendo uno de los terminales estrella, pese a que ha sido descatalogado de Google Play Store.

Creo que si cito las palabras “maraca” o “sonajero”, todo el mundo que este puesto un poco en el mundo smartphone, sabrá a que me estoy refiriendo con esto, pero por si acaso… Uno de los “defectos” y lo cito ya que realmente no es un defecto, es que el terminal al agitarlo (no, no me refiero a agitarlo como una botella de champán en un MotoGP) suena como si alguna pieza dentro del mismo estuviera suelta.
Esto desde un principio se achacó al tema de la lente de la cámara, la cual, como en todos los smartphones se encuentra en estado de “suspensión” y por ello si la agitas, se golpea dicha lente sobre las paredes donde esta alojada.

Pues bien, hace unos meses, recorriendo varios temas en HTCMania.com, la cual enlazo para hacerle un poco de publicidad, se volvía a crear polémica, un tanto repetitiva en el subforo del LG Nexus 4 sobre el tema. Mi sorpresa fue que un usuario llamado Daniel Cañada, ha mostrado mediante un vídeo, que el problema del “sonajero” no se corresponde con la lente de la cámara fotográfica del terminal, si no que es un problema con el pistón que acciona la salida de la bandeja donde se aloja la tarjeta Micro-SIM. Mediante un “apaño” casero, incrustando un minúsculo fragmento de goma (cobertura de cable) soluciona el problema.

Para finalizar, añadiré que puedo corroborar que lo que habéis visto, soluciona el problema, y mi Nexus 4 ya no suena al agitarlo. Así que no me queda más que agradecer a Daniel Cañada por el “bricoconsejo”. ¡Saludos!

Hacer funcionar los puertos USB en las máquinas virtuales creadas con Virtual Box en Ubuntu 11.04,11.10,12.04 LTS, 12.10, 13.04, 13.10

Debido al comienzo de mi F.P.G.S en Desarrollo de Aplicaciones Multiplataforma, me he visto en la obligación para ciertas asignaturas de volver al incomparable Microsoft Windows.
Por supuesto, como no quería tener que instalarlo de forma nativa, lo he instalado en una máquina virtual con el programa Virtual Box de Oracle.

Tras instalar Microsoft Windows 7 en la misma, mi sorpresa fue que al intentar conectar un dispositivo USB (de almacenamiento en este caso, pero de cualquier tipo), la instalación del driver en la maquina virtual fallaba.

Tras buscar un poco, he visto que el problema no lo tenía la máquina virtual en sí, si no que no disponía de permisos en el grupo ‘vboxusers’ de Ubuntu.

Los pasos a seguir son los siguientes (desde un terminal):

sudo adduser miusuario vboxusers

sudo usermod -aG vboxusers miusuario

Nota: Véase que en donde pone miusuario hay que modificarlo por el propio de cada uno.

Otras de las cosas que me he preocupado, es en verificar que en la configuración de la propia máquina virtual tenga en la pestaña USB, la opción de Habilitar controlador 2.0 (EHCI) marcada, para habilitar el soporte para usb 2.0

Por otro lado, también tener instaladas las VirtualBox Guest Additions, para soporte gráfico, integración del puntero del ratón, carpetas compartidas, etc.

London to Brighton Train Journey: 1953 – 2013

Curioso vídeo del canal de televisión BBC en que muestra el recorrido de un tren de Reino Unido, concretamente desde Londres hasta Brighton. El trayecto se cubre en 52 minutos, haciendo dos paradas.
Lo excepcional del vídeo es que han solapado tres grabaciones que hicieron en intervalos de 30 años.
La primera grabación corresponde a 1953, la siguiente 1983 y en la actualidad, en 2013.
Se puede apreciar y visualizar como se mantienen y/o modifican diferentes construcciones y edificaciones a lo largo de 60 años.

[SOLUCIÓN] “Se ha producido un error al recuperar la información del servidor. [RPC:S-5:AEC-0]” – Google Play Store

¡Saludos!
Hace mucho tiempo que no escribía en el blog, y llevaba tiempo planteando el volver a hacerlo.
Un problema con mi Nexus 10, me ha hecho retomar el contacto con el blog (a ver si esta vez, lo mantengo jeje).
El problema apareció de repente, al tratar de actualizar (y también instalar) aplicaciones de Google Play Store. En todo momento me aparecía en la barra de notificaciones el siguiente mensaje:

 

“Se ha producido un error al recuperar la información del servidor. [RPC:S-5:AEC-0]”

 

Tengo que decir, que este problema es posible que sea raíz de que intente forzar la actualización OTA (Over The Air) de mi Nexus 10 a Android 4.3 eliminando los datos de aplicación del Marco de Aplicaciones de Google.
Existen varias posibilidades de solución, por lo que he leído a unos les ha funcionado una, y otros otra, entiendo que será a raíz de que el problema se reproduce de diferentes formas y/o acciones.
Por este motivo, voy a listar las opciones y la cosa es ir probando a ver cual os soluciona el problema.
Voy a ponerlas de mayor a menor prioridad.
  • Opción 1: Borrar los datos del Marco de Aplicaciones de Google
    Entrando en Ajustes -> Aplicaciones -> Todas -> Marco de Aplicaciones de Google.
    Forzamos cierre de la aplicación y borramos datos (hasta que eliminé completamente los datos y desactive el botón, recalco esto porque a veces no se eliminan todos los datos a la primera).
  • Opción 2: Eliminar la cuenta de Google del teléfono
    Entrando en Ajustes -> Cuentas -> [Cuenta de Google] -> Eliminar cuenta.
    OJO: Te aparece un aviso de que se pueden perder algunos datos ¡Tenlo en cuenta!.
    (Las apps no se pierden).
  • Opción 3: Restablecer datos de fábrica
    Entrando en Ajustes -> Copia de seguridad -> Restablecer datos de fábrica.
    De este modo borramos TODO el contenido del télefono, dejandolo en un estado como cuando lo desempaquetamos por primera vez de la caja al adquirirlo (claramente no se haya desbloqueado el terminal e instalado una Custom ROM)
  • Opción 4: Instalar Imagen de Fabrica de nuestro terminal, o en su defecto una Custom ROM.
    Como ultima alternativa, aunque os aseguro que no vais a llegar a esta ultima opción, se puede reinstalar por completo el sistema operativo Android en vuestro terminal.
    Añado esta opción puesto que si elegís instalar una Custom ROM, en la mayoría de los casos experimentaries como la potencia, usabilidad y calidad de vuestro terminal aumenta exponencialmente. Pero esto, ya lo dejo para otro post o para que busquéis por red de redes.
    Espero que os sirva de ayuda.
    ¡Un saludo!

La web: Sus comienzos hasta la actualidad

La siguiente entrada esta basada en un trabajo de consulta realizado para la asignatura de Despliegue de Aplicaciones Web de 2º DAW.

Nacimiento de internet

La historia de Internet se remonta al temprano desarrollo de las redes de comunicación. La idea de una red de computadoras se diseña para permitir la comunicación general entre usuarios de varias computadoras.
Internet es una gran red de redes, también llamada “supercarretera de la información”. Es el resultado de la interconexión de miles de computadoras de todo el mundo.
Las versiones más antiguas de estas ideas aparecieron a finales de los años 50. Las implementaciones prácticas de estos conceptos empezaron a finales de los 60 y a lo largo de los 70. En la década de los 80, las tecnologías que reconocemos como las bases de Internet, empezaron a expandirse por todo el mundo. Finalmente, en los 90 se introdujo la World Wide Web.
Es importante, decir que Internet y el World Wide Web no son la misma cosa. La Web es parte de Internet, y simplemente lo usa para transmitir información entre los equipos.

La web 1.0: Los comienzos.

A partir de este momento es cuando comienza el desarrollo y la evolución de la Web, apareciendo la fase denominada Web 1.0, cuyas páginas se traducen en documentos simples constituidos únicamente por texto, los cuales eran interpretados gracias a navegadores muy rápidos (como por ejemplo ELISA).
Posteriormente, y gracias a la aparición del lenguaje HTML (HyperText Markup Language), se evolucionó en el concepto de Web 1.0, pasando a convertirse en un conjunto de documentos en lenguaje HTML (lo que permitió disponer de páginas Web más agradables a la vista) interconectados mediante enlaces. Dichos documentos eran generados por una única persona (Webmaster) encargada de su diseño y de la recopilación de los datos contenidos en ellos. Fue además el comienzo de los primeros navegadores visuales (Internet Explorer, Netscape, etc.).
El principal obstáculo (limitación) que lleva consigo la Web 1.0 es que es de sólo lectura. El usuario no puede interactuar con el contenido de la página (comentarios, respuestas o citas), y se encuentra totalmente limitado a lo que el Webmaster decide publicar.

La web 2.0: Un paso hacia lo social.

El término Web 2.0 se utilizó por primera vez en el año 2004 cuando Dale Dougherty (vicepresidente de O’Reilly Media) utilizó este término en una conferencia en la que hablaba del renacimiento y evolución de la Web (Web Conference).
En la charla inicial del Web Conference se habló de los principios que tenían las aplicaciones Web 2.0:
  • La web es la plataforma.
  • La información es lo que mueve al Internet.
  • Efectos de la red movidos por una arquitectura de participación.
  • La innovación surge de características distribuidas por desarrolladores independientes.
  • El fin del círculo de adopción de software pues tenemos servicios en beta perpetuo.
Aunque no existe una definición consensuada, en el año 2005 Tim O’Reilly (fundador de O’Reilly Media) definió el concepto de Web 2.0 como “una serie de aplicaciones y páginas de Internet que utilizan la inteligencia colectiva para proporcionar servicios interactivos en red dando al usuario el control de sus datos”.
A diferencia de la Web 1.0, en el modelo Web 2.0 la información y contenidos se producen (directa o indirectamente) por los usuarios del sitio Web y adicionalmente puede ser compartida por varios portales Web de estas características. En la Web 2.0 los consumidores de información son los productores de la información que ellos mismos consumen (nace el concepto de Prosumidor).
La Web 2.0 es también llamada web social por el enfoque colaborativo y de construcción social de esta herramienta.

La web 3.0: La web semántica

Web 3.0 es un neologismo que se utiliza para describir la evolución del uso y la interacción en la red a través de diferentes caminos. Ello incluye, la transformación de la red en una base de datos, un movimiento hacia hacer los contenidos accesibles por múltiples aplicaciones non-browser, el empuje de las tecnologías de inteligencia artificial, la web semántica, la Web Geoespacial, o la Web 3D. Frecuentemente es utilizado por el mercado para promocionar las mejoras respecto a la Web 2.0. El término Web 3.0 apareció por primera vez en 2006 en un artículo de Jeffrey Zeldman, crítico de la Web 2.0 y asociado a tecnologías como AJAX. Actualmente existe un debate considerable en torno a lo que significa Web 3.0, y cual es la definición acertada.
Según los expertos, los motores de búsqueda se harán más y más concretos. Ahora, cuando hacemos una búsqueda en Internet, la información que se nos muestra es la misma a la de otro usuario. Los motores de búsqueda Web 3.0 serán más y más específicos con cada usuario y producirán diferentes resultados de búsqueda. Los buscadores 3.0 aceptarán consultas más complejas, es decir, podrás hacer la siguiente consulta: “Estoy cambiando de casa de Madrid a Barcelona y estoy buscando alojamiento ¿Cómo están los alquileres en Barcelona?”
Por lo tanto, esto supondrá que los sitios Web se harán más y más comunicativos. Estas son las principales características de la Web 3.0 en cuanto a búsquedas pero ¿qué sucede con el resto? Otra gran novedad que ya se conoce es la posibilidad de compartir la información con otros para producir resultados mucho más precisos.
Una nueva característica será la tendencia a la integración de diferentes servicios, como redes sociales. Por ejemplo, con un solo nombre podrás gestionar sus perfiles en Facebook, Twitter y MySpace.
La publicidad sufrirá un cambio importante. Así como ahora la publicidad mostrada al usuario es genérica, en la web 3.0 la tendencia será a mostrar contenidos relacionados con las búsquedas del usuario, sitios web visitados… Es decir, productos o servicios potencialmente atractivos para los usuarios. Las aplicaciones 3.0 serán diseñados de tal manera que, aunque no sean igual de inteligentes que el cerebro humano, estarán muy por delante del típico editor de textos y por lo tanto la predicción de palabras será mucho más rápida y eficaz. Dicen que será tan efectivo que algunos pueden llegar a considerarlo como una violación a su privacidad.
A modo resumen, podríamos hacer una comparativa entre web 2.0 y 3.0 como la siguiente.

Web semántica frente a Web de datos

En definitiva, el concepto tiene que ver con los avances que permiten la incorporación de Internet a nuestras vidas de forma cada vez más eficiente, adicionalmente y según las corrientes que definen esta etapa como el paso previo a la integración total de las personas y las máquinas, el término más exacto para definirla sería Web de datos, por su naturaleza en capas de interrelacionar e interpretar el mayor número posible de datos en pos de la ampliación del conocimiento.
¿En qué consiste la Web de los datos y para qué puede ser utilizada?
Básicamente, la idea se refiere a una web capaz de interpretar e interconectar un número mayor de datos, lo que permitiría un avance importante en el campo del conocimiento.
En tal sentido, se destaca lo que esta transformación traería aparejada en el campo de la investigación genética y el tratamiento farmacológico de enfermedades hasta ahora incurables. Diseñada correctamente, la Web Semántica puede asistir a la evolución del conocimiento humano en su totalidad.

Proyectos que anticipan el modelo de la web 3.0

Dentro de la corriente oficial, centrada en la creación de estándares y formateo de páginas, algunas Compañías como HP y Yahoo ya vienen implementando los nuevos lenguajes.
Los ejemplos más citados son el de la empresa RadarNetworks , que busca explotar el contenido suministrado por los usuarios en las redes sociales y el proyecto KnowItAll, desarrollado en la Universidad de Washington y financiado por Google, que busca obtener y agregar información de usuarios de productos.
Se pueden encontrar estructuras web semánticas en la herramienta espacial de la base de datos Oracle. Empresas como Powerset y TextDigger han trabajado en buscadores web semánticos basados en el proyecto académico open source WordNet.
Por otra parte, dentro de la corriente alternativa, ocupada en la construcción de agentes más inteligentes, el proyecto más temprano ha sido el de BlueOrganizer de AdaptativeBlue.
Actualmente en desarrollo, Parakey es un proyecto de código abierto, comandado por Blake Ross, uno de los desarrolladores de Firefox. La idea es unificar el escritorio y la web, a partir de la creación de una especie de sistema operativo web.

EasyGui: Realiza una sencilla interfaz gráfica en Python.

Como su propio nombre indica EasyGui es un módulo muy simple, para la programación de una interfaz gráfica  en Python.
No requiere ningún tipo de conocimiento añadido, todas las interacciones de la interfaz son realizadas mediante llamadas a funciones simples.

A continuación dejo una breve chuleta con algunas de las cosas que podemos hacer:

ynbox(msg=’Shall I continue?’, title=’ ‘, choices=(‘Yes’, ‘No’), image=None)

# Display a msgbox with choices of Yes and No.
ccbox(msg=’Shall I continue?’, title=’ ‘, choices=(‘Continue’, ‘Cancel’), image=None)
# Display a msgbox with choices of Continue and Cancel.
boolbox(msg=’Shall I continue?’, title=’ ‘, choices=(‘Yes’, ‘No’), image=None)
# Display a boolean msgbox. 
indexbox(msg=’Shall I continue?’, title=’ ‘, choices=(‘Yes’, ‘No’), image=None)
# Display a buttonbox with the specified choices.
msgbox(msg='(Your message goes here)’, title=’ ‘, ok_button=’OK’, image=None, root=None) 
# Display a messagebox.
buttonbox(msg=”, title=’ ‘, choices=(‘Button1’, ‘Button2’, ‘Button3’), image=None, root=None) 
# Display a msg, a title, and a set of buttons.
integerbox(msg=”, title=’ ‘, default=”, lowerbound=0, upperbound=99, image=None, root=None,**invalidKeywordArguments) 
# Show a box in which a user can enter an integer. 
multenterbox(msg=’Fill in values for the fields.’, title=’ ‘, fields=(), values=()) 
# Show screen with multiple data entry fields. 
multpasswordbox(msg=’Fill in values for the fields.’, title=’ ‘, fields=(), values=())
# Same interface as multenterbox.
enterbox(msg=’Enter something.’, title=’ ‘, default=”, strip=True, image=None, root=None)
# Show a box in which a user can enter some text.
passwordbox(msg=’Enter your password.’, title=’ ‘, default=”, image=None, root=None) 
# Show a box in which a user can enter a password.
multchoicebox(msg=’Pick as many items as you like.’, title=’ ‘, choices=(), **kwargs)
# Present the user with a list of choices.
choicebox(msg=’Pick something.’, title=’ ‘, choices=())
# Present the user with a list of choices.
abouteasygui()

# Shows the easygui revision history

Para usar EasyGui, simplemente basta con copiar el archivo easygui.py en la carpeta donde tenemos nuestro programa de Python.

Descargar easygui.py (v. 0.96):
http://easygui.sourceforge.net/download/version_0.96/index.html#downloadFiles