0

Problema de actualización en Archlinux [Python]

Como todos los días, me levanto y hago un pacman -Syu y me encuentro con el siguiente error:

error: error al realizar la transacción (archivos en conflicto)
python-gobject: /usr/lib/python3.3/site-packages/gi/__pycache__/__init__.cpython-33.pyc existe en el sistema de archivos
python-gobject: /usr/lib/python3.3/site-packages/gi/__pycache__/importer.cpython-33.pyc existe en el sistema de archivos
python-gobject: /usr/lib/python3.3/site-packages/gi/__pycache__/module.cpython-33.pyc existe en el sistema de archivos
python-gobject: /usr/lib/python3.3/site-packages/gi/__pycache__/types.cpython-33.pyc existe en el sistema de archivos
python-gobject: /usr/lib/python3.3/site-packages/gi/_glib/__pycache__/__init__.cpython-33.pyc existe en el sistema de archivos
python-gobject: /usr/lib/python3.3/site-packages/gi/_glib/__pycache__/option.cpython-33.pyc existe en el sistema de archivos
python-gobject: /usr/lib/python3.3/site-packages/gi/_gobject/__pycache__/__init__.cpython-33.pyc existe en el sistema de archivos
python-gobject: /usr/lib/python3.3/site-packages/gi/_gobject/__pycache__/constants.cpython-33.pyc existe en el sistema de archivos
python-gobject: /usr/lib/python3.3/site-packages/gi/_gobject/__pycache__/propertyhelper.cpython-33.pyc existe en el sistema de archivos
python-gobject: /usr/lib/python3.3/site-packages/gi/_gobject/__pycache__/signalhelper.cpython-33.pyc existe en el sistema de archivos
python-gobject: /usr/lib/python3.3/site-packages/gi/overrides/__pycache__/GLib.cpython-33.pyc existe en el sistema de archivos
python-gobject: /usr/lib/python3.3/site-pT
python-gobject: /usr/lib/python3.3/site-packages/gi/overrides/__pycache__/__init__.cpython-33.pyc existe en el sistema de archivos
python-gobject: /usr/lib/python3.3/site-packages/gi/repository/__pycache__/__init__.cpython-33.pyc existe en el sistema de archivos
Ocurrieron errores, no se actualizaron paquetes

Lo que indica que tenemos archivos en conflictos (ya existentes), la manera como lo resolvi, fue renombrando la carpeta /usr/lib/python3.3/site-packages/gi/ y volver a ejecutar el pacman.

También lo he probado en Manjaro y no he tenido problemas.

0

Iniciandonos en Bottle

Bottle es un micro framework web muy útil interesante, practico a la hora de hacer pequeños proyectos web’s donde no se requiere mucha lógica en la capa de datos, controladores, etc.

Para empezar tenemos que instalarlo mediante pip (recomendable en Python2.7):

pip install bottle

Luego de ello haremos nuestra primera aplicación:

#!/usr/bin/env python
# importamos la libreria
import bottle

#definimos la ruta y la función que "cargara"
@bottle.route('/')
def index():
    return "<h1>Hola Mundo</h1>"

#levantamos el servidor web que tiene bottle
bottle.run(host='localhost', port=8080)

Luego accedemos a http://localhost:8080 en nuestro navegador y veremos el mensaje “Hola Mundo”.

Como se demostró, es muy sencillo levantar una aplicación web usando bottle. A opinión personal es útil cuando necesitamos aplicaciones muy simples o cuando necesitemos mostrar resultados de alguna otra aplicación.

0

Vulnerabilidad en tuentrada.com.pe

Visitando la conocida web de venta de entradas me percate de una vulnerabilidad en su buscador, al parecer las palabras que uno busca, lo usa directamente de una variable de la URL (GET). Una vulnerabilidad conocida como XSS.

Esto es muy peligroso, pues permite ingresar comportamiento por la URL, que afecte el comportamiento del sitio. Habamos un ejemplo.

En la url modificamos insertando este codigo:

<script>alert('xss')</script>

mostrando el siguiente resultado:

Tu entrada XSS

Si prueban este codigo, veran que hace una redireccion a otra pagina:

<script>location.href='http://google.com'</script>

Podemos hacer que haga una redireccion a paginas maliciosas, para robar identidad, tarjetas de credito, etc.

0

Ya esta entre nosotros Mozilla Firefox 17!

Ha unas fue lanzado la version 17 de Mozilla Firefox, con novedades interesantes, bug corregidos y algunas observaciones.

Lo primero a tomar en cuenta es la inclusion de Social API, que hara que se tenga una integracion con facebook de manera muy interesante, podras ver tus notificaciones, solicitud de amistad en una barra de Mozilla Firefox. Asi como una barra de chat al lado derecho.

Para activarlo solo hay que ingresar a este link: https://www.facebook.com/about/messenger-for-firefox estando logueado y activarlo.

Y entre las caracteristicas mas resaltantes podemos mencionar:

  • Bloque por defecto en plugins que no estan actualizados.
  • Modificacion del inspector de paginas para facilitar la modificacion del DOM, y mejores en todo el panel de desarrollo en general.
  • Nuevas funciones en el SVG (FillPaint y StrokePaint)
  • Mapas de Javascript iterables.
  • Iconos mas grandes en la barra de notificacion.
  • Mayor seguridad en los iframes con la implementacion de sandbox.

Para ver a detalle pueden revisar este link: https://developer.mozilla.org/en-US/docs/Firefox_17_for_developers

0

Desarrollando en Ruby usando RVM

Al momento de desarrollar usando Ruby como lenguaje, surge a veces el incoveniente de trabajar con versiones diferentes a las que se maneja en produccion, para ello existe una solucion, usar RVM (Ruby Version Manager) que permite manejar diferentes versiones de Ruby, asi como mantener distintas “instancias” donde instalar las gemas de manera independiente. Algo muy similar al virtualenv usado en Python. (En otro articulo hablo un poco mas sobre virtualenv)

Instalacion

Lo primero que debemos ver, son los requisitos para poder instalar el paquete, necesitaremos tener git y curl instalado.

pacman -S git curl

Luego procedemos a descargar el paquete mediante curl (notar que estamos instalando la version mas estable de RVM).

curl -L get.rvm.io | bash -s stable

O si queremos descargar solo el script y luego procedemos a instalarlo:

$ curl -L get.rvm.io > rvm-install
$ chmod +x rvm-install
$ ./rvm-install

Luego tenemos que agregarlo al .bashrc:

[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm"

Luego de todo esto, y si hicimos los pasos correctos, ya tenemos hemos instalado correctamente rvm, para verificarlo solo basta con:

$ rvm notes

Y saldran todas las caracteristicas de la instalacion.

Instalacion de Ruby

Hasta ahora solo hemos instalado el rvm pero aun no tenemos Ruby instalado, para ver la lista de enviroments disponibles en rvm usamos el siguiente comando:

$ rvm list known

Ahora procedemos a instalar Ruby

$ rvm install <version_ruby>

Podemos reemplazarlo por cualquier version, por ejemplo:

$ rvm install 1.9.2

Luego usamos la version de Ruby

$ rvm use 1.9.2

Ahora ya tenemos la version deseada de Ruby y podemos usarla:

$ ruby --version

Y podemos instalar otra version, y cambiarlo sin problemas. Toda la configuracion se guarda en carpetas independientes dentro de ~/.rvm.

Gemsets

Ahora que podemos manejar varias versiones de Ruby, tambien necesitamos tener “instancias” separadas para las gemas. Dichas instancias se denominan: Gemsets.

Para crearlo debemos seleccionar la version de Ruby que usaremos y luego ejecutar el comando correspondiente:

$ rvm use <ruby_version>
$ rvm gemset create <gemset_name>

Luego seleccionamos el Gemset a usar:

$ rvm use <ruby_version>@<gemset_name> --default

O tambien podemos crearlo y usarlo directamente:

$ rvm use <ruby_version>@<gemset_name> --create

Una vez seleccionado el Gemset a utilizar, podemos instalar las gemas que necesitemos, y cambiar de Gemset las veces que necesitemos y con la version de Ruby que querramos, manteniendo una independencia de codigo, y permitiendo manejar diferentes versiones para proyectos diferentes.

Bonus Track

Hay algunos comandos utiles de rvm que necesitaremos:

Nombre del Gemset actual

$ rvm gemset name

Lista de todos los Gemset disponibles para la actual version de Ruby

$ rvm gemset list

Lista de todos los Gemset disponibles todas las versiones de Ruby

$ rvm gemset list_all

Actualizando

$ rvm get latest
0

Instalacion de mongodb [Archlinux]

Cada vez se escucha mas sobre base de datos NoSQL, en especial de MongoDB, son muchas las ventajas al momento de trabajar gran cantidad de datos. Al estar basado en el modelo clave-valor, hace que el procesamiento sea mas rapido (si se implementa de una manera adecuada).

La instalacion es sencilla, esta en los repositorios oficiales de Archlinux:

pacman -S mongodb

Una vez instalado, accedemos ejecutando:

mongo

Podemos ver las base de datos que existen con el comando show dbs:

> show dbs
local	(empty)
test	0.203125GB
>
1

Virtualenv y setuptools en CentOS

Una de las principales recomendaciones al momento de trabajar en Python es usar virtualenv mas que todo por que nos ayuda a mantener librerias instaladas, versiones aislados por aplicacion.

En el caso de CentOS, no viene en la lista de repositorios, por lo que hay que instalarlo manualmente, antes de nada se necesitaran una serie de paquetes:

yum install gcc gdbm-devel readline-devel ncurses-devel zlib-devel bzip2-devel sqlite-devel db4-devel openssl-devel tk-devel bluez-libs-devel libjpeg-devel zlib-devel freetype-devel

Luego tenemos que instalar el setuptools el cual incluye el easy_install que nos permitira instalar el virtualenv.

Descargamos el codigo, en este caso al ser Centos 6.x se tiene instalado Python 2.6

wget pypi.python.org/packages/2.6/s/setuptools/setuptools-0.6c10-py2.6.egg

Luego procedemos con la instalacion del setuptools

sh setuptools-0.6c10-py2.6.egg

Ahora actualizamos e instalamos el virtualenv:

easy_install-2.4 -U setuptools
easy_install-2.4 virtualenv

Y con esto ya lo tenemos instalado.

PD. Pueden darse una vuelta por el manual oficial de virtualenv, para sacarle maximo provecho.

0

Leer PDF en Mozilla Firefox usando Evince

Generalmente cuando estamos buscando informacion nos encontramos con documentos PDF, si tenemos instalado el Adobe Reader no tendremos problemas para leerlo en el navegador, pero a veces usarlo puede afectar el rendimiento. No hay nada como algo nativo, y en el caso de GNU/Linux es mejor usar evince.

Mozilla Firefox wordmark

Es muy sencilla la configuracion, para esto es necesario usar un paquete llamado mozplugger, dependiendo la distribucion que uses lo puedes encontrar en los repositorios o, como es mi caso, instalarlo mediante el AUR (en otro post indico como instalar paquetes desde el AUR).

Una vez terminada la instalacion, tenemos que realizar los siguientes pasos:

Asegurarnos de eliminar el archivo pluginreg.dat:

rm ~/.mozilla/firefox/<profile_dir>/pluginreg.dat

Editamos el archivo /etc/mozpluggerrc, buscando la linea que contenga:

define(ACROREAD, [repeat swallow(acroread) fill : acroread -openInNewWindow /a "$fragment" "$file"])

Y lo cambiamos por:

define(ACROREAD, [repeat swallow(evince) fill needs_xembed : evince "$file"])

Reiniciamos el Mozilla Firefox y probamos intentando abrir cualquier archivo PDF desde la web, se nota la diferencia en temas de consumo de recursos.

0

Problemas screencast en Gnome Shell

Con Gnome 3 han venido muchas mejoras importantes, una de las mas interesantes es la facilidad con la que se puede realizar un screencast, solo basta con presionar la combinacion de teclas:

Ctr + Alt + Shift + r

y empieza a grabar.

El problema que tuve, fue que no podia grabar los screencast, estoy usando Arch Linux, y salia un error de flujo de datos con el Gstreamer al momento de reproducir el video con Totem. Buscando en foros logre obtener una solucion.

La ultima version de la libreria libvpx era el problema de este error. La version que se encuentra en los repositorios de Arch Linux es la version 1.1.0, es necesario “desactualizar” la version a 1.0.0. Es muy simple, descargamos el paquete de este (de acuerdo a la arquitectura de nuestro equipo) link, nos dirigimos a la terminal y lo instalamos:

pacman -U package libvpx-1.0.0-1-<arquitectura>.pkg.tar.xz

Reiniciamos el sistema, y ya podemos volver a grabar screencast.

Nota: Hay que tener cuidado al momento de actualizar todo el sistema, tenemos que ignorar la libreria libvpx. con el siguiente comando:

pacman -Syu --ignore libvpx

O modificando el archivo /etc/pacman.conf descomentando la linea:

IgnorePkg   = libvpx

Por lo menos hasta ver resuelto el bug.

2

Convertir libros PDF a MOBI para Kindle Fire [Arch Linux]

Hace unos meses vengo usando una Kindle Fire de Amazon, a razgos generales me parece una muy buena tablet para lectura. No es muy grande y tiene una muy buena resolucion, muy recomendado :).

La mayoria de nuestros archivos estan en formato PDF, pero para aprovechar mejor la lectura en una kindle fire, es necesario cambiarlo de formato, para esto vamos a usar Calibre.

En Arch Linux (y en cualquier distribucion GNU/Linux) la instalacion es muy simple, tenemos que ejecutar este comando en la terminal:

sudo python -c "import sys; py3 = sys.version_info[0] > 2; u = __import__('urllib.request' if py3 else 'urllib', fromlist=1); exec(u.urlopen('http://status.calibre-ebook.com/linux_installer').read()); main(install_dir='/opt')"

Para mas informacion sobre la instalacion puede revisar la documentacion.

Lo que haremos a continuacion es convertir un libro y sincronizarlo con la Kindle Fire:

  1. Agregamos libros a nuestra coleccion (icono superior izquierda).
  2. Seleccionamos el libro (que ya esta agregado en nuestra libreria) y seleccionamos el icono “Convertir Libro”.
  3. Escogemos el formato MOBI, que es para la Kindle Fire, tambien hay otros formatos.
  4. Listo!

Calibre tiene un visor de libros en formato MOBI, EPUB, ademas al conectar la Kindle Fire reconoce el dispositivo y te permite sincronizar los libros en ambos lados, un repositorio para conseguir ebook’s en linea, en general genial.

A continuacion dejo un Screencast, donde muestro todo lo que pude hacer con el Calibre:

Usando Calibre en Arch Linux from Jesus Fabian Cubas on Vimeo.