El menú de sonido en Ubuntu 12.04 viene con Rhythmbox como reproductor predeterminado desde que se oficializo la inclusión de Rhythmbox en lugar de Banshee poco antes del lanzamiento de la primera Beta de Ubuntu 12.04 LTS Precise Pangolin.
Aún así, esto no quiere decir que estemos atados al uso del reproductor insignia de GNOME, pues muchos de nosotros buscamos más o menos características en los reproductores de música o video.

Afortunadamente, gracias a la ejecución de un simple comando en la terminal de Ubuntu, podemos cambiar el reproductor a usar a través del ‘Menú de sonido’ en Ubuntu 12.04 LTS Precise Pangolin para incluir el que nosotros deseemos.
El comando en cuestión es el siguiente:
gsettings set com.canonical.indicator.sound interested-media-players "['reproductor']"
En él vamos a reemplazar la palabra reproductor por el nombre del reproductor que deseamos usar, por ejemplo: vlc, amarok, banshee e incluso rhythmbox.
gsettings set com.canonical.indicator.sound interested-media-players "['vlc']"
gsettings set com.canonical.indicator.sound interested-media-players "['amarok']"
gsettings set com.canonical.indicator.sound interested-media-players "['banshee']"
Quién dijo que Unity o Ubuntu no se podían personalizar?
Yo lo dije, así que ahora me pueden cerrar la boca con los comentarios y compartiendo en esta entrada.
Con los problemas de distribución solucionados, la computadora mas barata del mundo, que no solo es barata sino también libre, cuenta ahora con una revista dedicada 100% a esta plataforma que ha dado tanto de que hablar y seguramente lo seguirá haciendo por mucho tiempo en el futuro.
MagPi es una nueva revista de distribución mensual escrita por un grupo de entusiastas de Raspberry Pi interesados en compartir sus conocimientos y experiencia con todo aquel que se atreva a darle una oportunidad a esta mini-computadora y aprovechar todas sus ventajas.
La revista no tiene ni tendrá costo alguno, por lo cual solo debemos dirigirnos al sitio web del proyecto y descargar de forma gratuita el primer número de esta magnifica publicación.
En el primer número de MagPi podremos encontrar información acerca de cómo conectar componentes electrónicos a nuestro Raspberry Pi tales como servomotores, diodos LED y sensores. También encontraremos manuales para montar maquinas virtuales con algunas distribuciones Linux livianas como RacyPy, artículos relacionados con la enseñanza de la programación y una sección dedicada a la programación en Python llena de ejemplos probados con anterioridad.
Que esperas para descargar MagPi desde su sitio web oficial?
Qué es una computadora de escritorio o portátil sin música, videos, fotografías… En pocas palabras entretenimiento?
Hoy en día las computadoras no son solo para trabajar en esas pantallas negras llenas de aterradoras letras blancas que nos hacen recordar lo poco letrados que somos en cuanto a informática se refiere.
De hecho, la mayoría de usuarios alrededor del mundo utilizan sus computadoras para entretenimiento, ya sea video, música, o juegos en Internet.
Medibuntu (Multimedia, Entertainment & Distractions In Ubuntu) es un repositorio creado para acceder a paquetes multimedia que no pueden ser incluidos en la instalación de Ubuntu por motivos legales concernientes a las licencias.
Con estos paquetes podemos reproducir contenido multimedia de cualquier tipo en nuestra instalación de Ubuntu, incluso contenido que ha sido editado o modificado con formatos propietarios como los que se pueden encontrar en Microsoft Windows.
Para poder acceder a todo este mundo multimedia gracias a Medibuntu, primero debemos instalar el repositorio en nuestro sistema por medio de la ejecución del siguiente comando:
sudo -E wget --output-document=/etc/apt/sources.list.d/medibuntu.list http://www.medibuntu.org/sources.list.d/$(lsb_release -cs).list && sudo apt-get --quiet update && sudo apt-get --yes --quiet --allow-unauthenticated install medibuntu-keyring && sudo apt-get --quiet update
Ahora vamos a instalar los paquetes de codecs multimedia en Ubuntu:
sudo apt-get install libdvdcss2
sudo apt-get install non-free-codecs
sudo apt-get install w32codecs
sudo apt-get install w64codecs
Si quieres que el contenido del repositorio Medibuntu aparezca en el Centro de Software de Ubuntu solo debes ejecutar el siguiente comando en la terminal:
sudo apt-get install app-install-data-medibuntu apport-hooks-medibuntu
Eso es todo, ahora vamos a disfrutar de todos esos placeres audiovisuales que el mundo de la tecnología nos puede ofrecer.

Thanks to my coworker Dan for making a whole bunch of these based on our day job adventures
Madrid
Buenos Aires
Sydney
Vienna
Bruselas
Otawa
Concepción
Nicosia
Praga
Dinamarca
El salvador
Tallin
Helsinki
Atenas
Budapest
Dublín
Tel Avid
Vilna
Luxemburgo
Oslo
Lima
Varsovia
Bayamón
Bratislava
Johanesbrurgo
Estocolmo
ZurichGeo::PostalCode is a great Perl module. It lets you find surrounding postal areas (zip codes) around a given an amount of miles (radius), calculate distance between them, among other nice features. Sadly, I couldn't get it to work with updated data and because the file its Berkely DB installer was producing was not being recognized by its parser, which bases off on DB_File. Since I was able to find working data for the source of zip codes, I ended up hacking the module and producing a version with no Berkeley DB support.
So basically, and taken from the POD:
RATIONALE BEHIND NO BERKELEY DB
On a busy day at work, I couldn't get Geo::PostalCode to work with newer data (the data source TJMATHER points to is no longer available), so the tests shipped with his module pass, but trying to use real data no longer seems to work. DB_File marked the Geo::PostalCode::InstallDB output file as invalid type or format. If you don't run into that issue by not wanting to use this module, please drop me a note! I would love to learn how other people made it work.So, in order to get my shit done, I decided to create this module. Loading the whole data into memory from the class constructor has been proven to be enough for massive usage (citation needed) on a Dancer application where this module is instantiated only once.
$ sudo cpanm Geo::PostalCode::NoDB now!
I was contacted by Pivotal Labs regarding licensing of Feedbag. I guess releasing open source software as GPL only makes sense if you continue to live under a rock. I've bumped the version to 0.9 and released it under MIT license.
Feedbag 1.0, which I plan to work on during the following days will bring in a brand new shiny backend powered by Nokogiri, instead of Hpricot (I mean, give me a break, I'm trying to catch up with the Ruby community, after all I'm primarily a Perl guy
) and hopefully I will be able to recreate most of the feed auto-discovery test suite that Mark Pilgrim retired (410 Gone) when he committed infosuicide.
Have a good weekend!
Unhandled Exception: System.IO.FileNotFoundException: Could not load file or assembly 'Mono.Addins, Version=0.6.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756' or one of its dependencies. File name: 'Mono.Addins, Version=0.6.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756' at MonoDevelop.Startup.MonoDevelopMain.Main (System.String[] args) [0x00000] in <filename unknown>:0 [ERROR] FATAL UNHANDLED EXCEPTION: System.IO.FileNotFoundException: Could not load file or assembly 'Mono.Addins, Version=0.6.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756' or one of its dependencies. File name: 'Mono.Addins, Version=0.6.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756' at MonoDevelop.Startup.MonoDevelopMain.Main (System.String[] args) [0x00000] in <filename unknown>:0 Missing method get_IsInitialized in assembly /usr/lib/monodevelop/bin/MonoDevelop.Ide.dll, type Mono.Addins.AddinManager

Para traducir este editor al español ejecutamos el siguiente comando en un emulador de terminal con la cuenta de administrador o anteponiendo sudo en cada instrucción.
cd /usr/share/scite/; wget http://scintilla.sourceforge.net/locale.es.properties; mv locale.es.properties locale.properties
Lo que hacemos es:
-Movernos al directorio /usr/share/scite/
-Bajar el archivo, el cual contiene la traducción.
-Cambiar el nombre.
-El punto y coma separa cada instrucción.
Me llena de orgullo poder decir que luego de 10 años de arduo trabajo y sacrificios, mis papás lograron transformar un lote de potrero de una hectárea, en una granja cafetera sostenible, certificada por The RainForest Alliance.
El café que producirá ahora la parcela será considerado como un café especial, tal como lo define la federación colombiana de cafeteros:
ModSecurity es una de las herramientas mas potentes que tenemos a la mano para asegurar un servidor apache, pero en ocasiones requerimos deshabilitar el engine para cierta direccion IP, esto lo hacemos editando dicho VirtualHost y agregando lo siguiente:
<IfModule security2_module>
SecRule REMOTE_ADDR “^192\.168\.0\.250″ phase:1,nolog,allow,ctl:ruleEngine=off
</IfModule>
Reiniciamos Apache y ya tendremos deshabilitado el engine para la direccion ip que queremos

Error en VirtualBox
Hace unos días se me presentó un “singular” error con una maquina virtual que tengo corriendo en un servidor Virtualbox Headless, cuando arrancaba la maquina virtual presentaba el siguiente error y no levantaba.
Fatal: no bootable medium found! System Halted
Buscando en internet, este error se presenta porque de alguna manera la configuración de la maquina virtual “bota” los discos.
Para solucionar este inconveniente tendremos que hacer lo siguiente:
Apagamos la maquina virtual
VBoxManage controlvm WinXP poweroff
Agregamos de nuevo el controlador IDE
VBoxManage storagectl “WinXP” –name “IDE Controller” –add ide
Adjuntamos al controlador IDE la imagen de disco duro
VBoxManage storageattach “WinXP” –storagectl “IDE Controller” –port 0 –device 0 –type hdd –medium /home/bismarck/WinXP.vdi
Re-Arrancamos la Maquina Virtual
VBoxHeadless –startvm “WinXP” &
Con este procedimiento y teniendo en cuenta ajustar los parámetros a tu máquina virtual solucionarás tu problema con VirtualBox Headless
En varias ocasiones, se nos puede presentar que necesitemos sincronizar algún archivo, o carpeta con un servidor remoto o local con rsync, pero nos encontramos con que el puerto del servidor SSH ha sido cambiado (sea por seguridad, o por conveniencia).
Para “solventar” esta dificultad y hacer que rsync use el nuevo puerto, en vez del tradicional 22, lo haremos con el siguiente comando:
rsync -varuz -e “ssh -p $nuevopuerto” usuario@servidorremoto:/ruta/a/los/archivos/ /ruta/local/
Es una solución muy sencilla, pero sin duda alguna, nos sacará de mas de un dolor de cabeza.
Este semestre tuve la fortuna de asistir a unas clases de Robótica, presididas por el profesor John Nicolls, en donde a parte de otras cosas he podido, al fin, jugar un poco con Arduino, algo que había querido hacer siempre pero para lo cual no se había presentado oportunidad.
Aún mejor, tuve la oportunidad de trabajar con una plataforma relativamente nueva llamada ADK (Accessory Development Kit), presentada en el Google I/O 2011 (en Mayo), la cual permite controlar dispositivos externos de hardware mediante un terminal Android. Así pues con esta quimera: Android y Arduino, me divertí bastante durante un par de semanas y en este artículo pretendo documentar un poco lo aprendido. No se trata de un tutorial paso a paso; más bien un punto de partida para los que quieran profundizar en el tema.
Antes que nada, aclaremos algunos conceptos:
Por supuesto, debemos contar con un terminal Android. Lo ideal es que sea un tablet corriendo Android Honeycomb. Según este artículo escrito por Dan Noguerol, las siguientes tablets soportan ADK: Motorola XOOM, Acer Iconia A100, ASUS Eee Pad Transfomer TF101 y Samsung Galaxy Tab 10.1. En mi caso, tengo una Acer Iconia A100, que es lo más barato que pude conseguir en Amazon
El soporte oficial para el ADK se encuentra desde la versión Honeycomb de Android, en donde se pueden utilizar las clases del paquete android.hardware.usb. Sin embargo, el equipo de Android proporciona un paquete de compatibilidad, que permite utilizar dichas clases en dispositivos corriendo Android 2.3.4 (Gingerbread) o superior, lo cual quiere decir que no solo funciona en tablets sino también en dispositivos móviles.
No voy a entrar en detalles acerca de cómo configurar el IDE de Arduino y de Android, puesto que eso ya está muy bien detallado en la documentación oficial: Installing the Arduino software and necessary libraries. De hecho, me parece que Alex de BricoGeek lo explica de una manera muy directa y fácil de seguir en su artículo: El ADK de Google en Arduino UNO, que además incluye el esquema de hardware que hay que montar:
Puesto que los de Google y BricoGeek ya documentaron la parte de la configuración, solo voy a aportar un poco de información acerca de un problema que, al parecer, es bastante común al momento de preparar nuestro Android para usar el ADK (asumo de antemano que ya tienen un dispositivo corriendo Gingerbread). Esto puede aparecer al momento de instalar la aplicación:
Este es un mensaje que aparece cuando el dispositivo no tiene instaladas las librerías necesarias para usar el ADK (o no están configuradas correctamente).
Lo primero que debemos constatar en este caso es que el archivo com.android.future.usb.accessory.jar se encuentre en el directorio /system/framework/ del dispositivo. Este es la librería que contiene las clases del ADK. Además, debe existir el archivo android.hardware.usb.accessory.xml en el directorio /etc/permissions/ con el siguiente contenido:
<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright (C) 2011 The Android Open Source Project
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<!-- This is the standard feature indicating that the device supports USB accessories. -->
<permissions>
<feature name="android.hardware.usb.accessory" />
<library name="com.android.future.usb.accessory"
file="/system/framework/com.android.future.usb.accessory.jar" />
</permissions>
La solución la leí de hpsaturn, un entusiasta Colombiano de Android y el software libre, que al parecer tuvo este problema hace tiempo.
El ejemplo incluído en el ADK utiliza prácticamente todos los aspectos de la API (sensores de luz, servo motores, análogos, etc), y luce así:
Sin embargo, creo que es un poco complejo, lo cual hace que difícil de entender para las personas que hasta ahora están comenzando. Como alternativa, me gustaría compartir con ustedes un ejemplo mucho más sencillo en donde básicamente se utiliza el ADK para controlar un brazo Scara desde una tablet. El resultado es el siguiente (ignorar el introito del video; no estaba en mis cabales ese día):
Este ejemplo me parece un poco más práctico y fácil de montar. Lo único que se necesita, obviando el brazo, son 3 servo motores. El código se puede descargar desde este repositorio Git (en el README está el sketch de Arduino).
La idea es bastante simple; desde el tablet se hacen los cálculos de la cinemática inversa (es decir, calcular el ángulo que deben tener los servos a partir del punto en el cual queremos que el brazo ponga la mano). Posteriormente, se envía al Arduino los ángulos calculados y este a su vez actualiza la posición de los servos.
Lo importante aquí, y para concluir esta entrada, es reflexionar un poco sobre la manera tan fácil y rápida con la que se pueden desarrollar aplicaciones de robótica usando las librerías mencionadas. No hace falta ser un gurú de la electrónica ni mucho menos de la programación… la parte difícil ya está hecha, solo queda la parte más divertida: dejar que nuestra imaginación guíe los proyectos.

In computer networking, port knocking is a method of externally opening ports on a firewall by generating a connection attempt on a set of prespecified closed ports. Once a correct sequence of connection attempts is received, the firewall rules are dynamically modified to allow the host which sent the connection attempts to connect over specific port(s). A variant called Single Packet Authorization exists, where only a single 'knock' is needed, consisting of an encrypted packet.[1][2]
The primary purpose of port knocking is to prevent an attacker from scanning a system for potentially exploitable services by doing a port scan, because unless the attacker sends the correct knock sequence, the protected ports will appear closed.
knockd is a port-knock server. It listens to all traffic on an ethernet (or PPP) interface, looking for special "knock" sequences of port-hits. A client makes these port-hits by sending a TCP (or UDP) packet to a port on the server. This port need not be open -- since knockd listens at the link-layer level, it sees all traffic even if it's destined for a closed port. When the server detects a specific sequence of port-hits, it runs a command defined in its configuration file. This can be used to open up holes in a firewall for quick access.
Install knockd
Download:
Download from official site. Click Here
Unzip tar.gz file:
# tar xvfz knock-0.5.tar.gz
Configure command:
# ./configure
Compile command:
# make
Install command:
# make install
Configure Knockd
The configuration main file = /etc/knockd.conf
#vi /etc/knockd.conf
[options]
logfile = /var/log/knockd.log
[openSSH]
sequence = 1025,1026,1027
seq_timeout = 5
command = /usr/sbin/iptables -A INPUT -s %IP% -p tcp -m tcp --dport 22 -j ACCEPT
tcpflags = syn
[closeSSH]
sequence = 1027,1026,1025
seq_timeout = 5
command = /usr/sbin/iptables -D INPUT -s %IP% -p tcp -m tcp --dport 22 -j ACCEPT
tcpflags = syn
Choose ports combinations in flag "sequence"; and remember that a sequence is to close ssh service and another to open ssh service.
By default
Open the SSH service: 1025, 1026, 1027
Close the SSH service: 1027, 1026, 1025
This would be the knock!!
Close ssh port in server knockd
You must be sure that ssh port "22" is closed in server machine. "Where to install the knockd"
In my case, i execute the following command to close ssh port:
# iptables -A INPUT -p tcp --dport 22 -j DROP
How to run knokd server ?
In my case i work with default Path of configuration file: /etc/knokd.conf. then execute:
#knockd -c /etc/knockd.conf
To Help .. Run:
# knockd -h
usage: knockd [options]
options:
-i, --interface network interface to listen on (default "eth0")
-d, --daemon run as a daemon
-c, --config use an alternate config file
-D, --debug output debug messages
-l, --lookup lookup DNS names (may be a security risk)
-v, --verbose be verbose
-V, --version display version
-h, --help this help
Install knock Client in other machine.
Then ... go to other machine and install knock Client.
In my case i used ubuntu:
#apt-get install knockd
Open the SSH ports in server Knockd
Then ... try knock ports in remote server:
ubuntu@user$knock 192.168.0.1 1025:tcp 1026:tcp 1027:tcp
Then .. try ssh login:
ubuntu@user$ssh -l root 192.168.0.1
Note 0: If port is opened, asked for the ssh password.
Close the SSH port using remote knock:
ubuntu@user$knock 192.168.0.1 1027:tcp 1026:tcp 1025:tcp
Note 1: If port is closed, when you try start a session ssh, the terminal does not respond. "is in a loop".
TIP !!
In my case i had to create the following configuration trying to open ssh port :
In seccion [openSSH] in "command" tag from configuration file in knokd server; add following line:
command = /usr/sbin/iptables -A INPUT -s %IP% -p tcp -m tcp --dport 22 -j ACCEPT && iptables -D INPUT -p tcp --dport 22 -j DROP && iptables -A INPUT -p tcp --dport 22 -j DROP
This line have three commands,
1. Open port to incoming IP.
2. Delete rule that block ssh port.
3. Add rule to block ssh port, again.
Note 2: In my case i dont use firewall, so i add these lines in the command tag
Thks !!

Todo número entero positivo se puede expresar de muchas maneras como suma de potencias de dos. Por ejemplo, puede escribirse así:
Dado un número entero positivo n, Usted debe determinar la mínima cantidad de potencias de dos que sumadas dan exactamente n.
Descripción de la entrada
La primera línea de la entrada tiene un número natural T (1<=T<=200) indicando la cantidad de casos de prueba. Cada
caso de prueba se describe a través de una sola línea que contiene un número entero positivo n (1<=n<=10⁹).
Antes y después de la entrada de cada caso de prueba hay exactamente una línea con tres asteriscos ('***').
Descripción de la salida
Para cada caso de prueba se debe imprimir una línea con la mínima cantidad de potencias de dos que sumadas dan n.
Entrada de ejemplo:
5Y se preguntarán ustedes al igual que yo Y COMO #$%# acomodo eso, pues me saco la madre y al final lo pude hacer de esta forma:
***
1
***
4
***
15
***
16
***
19
***Salida correspondiente a la entrada de ejemplo
1
1
4
1
3
Este es un pequeño video en donde aclaro algunas dudas que surgieron a partir del último post, así como algunos tips para los que quieran departir como freelances en oDesk.com:
Espero les sea de ayuda y si tienen dudas o sugerencias no duden en comentar.
Hace ya más de 8 meses que trabajo como freelance y quisiera compartir con ustedes mi punto de vista respecto a este tipo de trabajos. Primero veremos las herramientas existentes para convertirse en freelance sin salir de casa (e incluso, sin tener contactos previos), y posteriormente mencionaré los pros y los contras. Así que si quieres ser freelance y eres estudiante o simplemente no eres tan bueno con las relaciones sociales, este artículo te podría servir.
Existen sitios en Internet que se dedican exclusivamente a eso: servir como puente entre contratistas freelance (programadores, diseñadores, traductores, etc.) y empresas o personas que requieren de dichos servicios. Las más importantes actualmente que recuerdo son: oDesk, elance.com, Freelancer, GetACoder, entre otras. Actualmente trabajo usando oDesk, así que es la herramienta bajo la cual voy a dar mi punto de vista.
Este tipo de empresas son ideales para iniciar en el mundo del freelancing, puesto que no es necesario tener ningún tipo de experiencia previa y hace mucho más fácil la búsqueda de clientes. Antes que nada, ¿cómo funcionan este tipo de empresas? bueno, es básicamente una bolsa de empleo online:
Hay aún muchos temas por tratar al respecto, sin embargo no quiero sobrecargar este artículo. Dependiendo de la respuesta que tenga podría publicar en detalle cómo funciona oDesk, además de dar algunos consejos para sacarle el mejor provecho y aclarar más dudas.