<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>Behind open doors</title>
	
	<link>http://behindopendoors.netne.net/blog</link>
	<description>Un blog con apuntes sobre Linux, Archlinux, y alguna cosa más.</description>
	<lastBuildDate>Mon, 01 Mar 2010 21:31:44 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/BehindOpenDoors" /><feedburner:info uri="behindopendoors" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item>
		<title>Ver clima de nuestra ciudad II: usando conky</title>
		<link>http://feedproxy.google.com/~r/BehindOpenDoors/~3/2uUkJ6XuP_o/ver-clima-de-nuestra-ciudad-en-openbox-ii-usando-conky</link>
		<comments>http://behindopendoors.netne.net/blog/general/ver-clima-de-nuestra-ciudad-en-openbox-ii-usando-conky#comments</comments>
		<pubDate>Sat, 13 Feb 2010 16:03:14 +0000</pubDate>
		<dc:creator>Tepes</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Arch]]></category>
		<category><![CDATA[clima]]></category>
		<category><![CDATA[conky]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[liviano]]></category>
		<category><![CDATA[Opebox]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[script]]></category>

		<guid isPermaLink="false">http://behindopendoors.netne.net/blog/?p=877</guid>
		<description><![CDATA[En la anterior entrada, vimos como añadir el tiempo de nuestra ciudad, al menú de openbox: http://behindopendoors.netne.net/blog/linux/ver-el-clima-de-nuestra-ciudad-en-openbox.
Ahora, vamos a visualizarlo, usando el mismo script pero mediante conky, por lo que lo podremos usar en cualquier distro y entorno de escritorio, solo tendremos que instalar previamente conky (lo encontraréis en repositorios).
Lo primero, tendremos que usar, el [...]]]></description>
			<content:encoded><![CDATA[<p>En la anterior entrada, vimos como añadir el tiempo de nuestra ciudad, al menú de openbox: <a href="http://behindopendoors.netne.net/blog/linux/ver-el-clima-de-nuestra-ciudad-en-openbox">http://behindopendoors.netne.net/blog/linux/ver-el-clima-de-nuestra-ciudad-en-openbox</a>.</p>
<p>Ahora, vamos a visualizarlo, usando el mismo script pero mediante conky, por lo que lo podremos usar en cualquier distro y entorno de escritorio, solo tendremos que instalar previamente conky (lo encontraréis en repositorios).</p>
<p>Lo primero, tendremos que usar, el script escrito en python, que modificado un poco (copiad el texto, y pegarlo en un archivo). Yo lo guardo en la ruta <strong>~/.config/openbox/scripts/gweather-conky2.py,</strong> pero podéis ponerlo donde queráis.</p>
<pre>#!/usr/bin/python -o
# -*- coding: utf-8 -*-

from  urllib import urlopen, quote
from xml.etree.cElementTree import parse
from  datetime import datetime, timedelta
import os
from os.path import  join
from sys import argv
try:
import cPickle as pickle
except  ImportError:
import pickle

TRANSLATED_TEXT = {
'en': {
'current': 'Current conditions',
'weather': 'Weather',
'temp': 'Temperature',
'humidity': 'Humidity',
'wind': 'Wind',
'forecast': 'Forecast',
'mintemp': 'Minimun Temperature',
'maxtemp': 'Maximun Temperature'
},
'es': {
'current': u'Actualmente',
'weather': u'Tiempo',
'temp': u'Temperatura',
'humidity': u'Humedad',
'wind': u'Viento',
'forecast': u'Previsión',
'mintemp': u'Temperatura Mínima',
'maxtemp': u'Temperatura  Máxima'
},
'fr': {
'current': u'Actuel',
'weather': u'Météo',
'temp': u'Température',
'humidity': u'Humidité',
'wind': u'Vent',
'forecast': u'Prévision',
'mintemp': u'Température minimale',
'maxtemp': u'Température maximale'
},
'de': {
'current': u'Aktuell',
'weather': u'Wetter',
'temp': u'Temperatur',
'humidity': u'Luftfeuchtigkeit',
'wind': u'Wind',
'forecast': u'Prognostizieren',
'mintemp': u'Minimale Temperatur',
'maxtemp': u'Höchste  Temperatur'
}
}

if len(argv) != 3:
raise  Exception('Usage: gweather.py city language.')
else:
city =  argv[1]
lang = argv[2]

CACHE_HOURS = 1

WEATHER_URL  = 'http://www.google.com/ig/api?weather=%s&amp;hl=%s&amp;oe=UTF-8'

def  get_weather(city, lang):
url = WEATHER_URL % (quote(city),  quote(lang))
data = parse(urlopen(url))

forecasts =  []
for forecast in data.findall('weather/forecast_conditions'):
forecasts.append(
dict([(element.tag, element.get("data"))  for element in forecast.getchildren()]))

return {
'forecast_information': dict([(element.tag, element.get("data"))  for element in  data.find('weather/forecast_information').getchildren()]),
'current_conditions': dict([(element.tag, element.get("data")) for  element in data.find('weather/current_conditions').getchildren()]),
'forecasts': forecasts
}

def  get_openbox_pipe_menu(lang, forecast_information, current_conditions,  forecasts):
if lang == 'en-US':
lang = 'en'

tt = TRANSLATED_TEXT[lang]

temp_var, temp_unit =  ("temp_c", u"\u00b0C") if forecast_information['unit_system'] == "SI"  else ("temp_f", "F")

output = ''

output += '%s\n' % (current_conditions['condition'])
output += '%s: %s %s\n' % (tt['temp'], current_conditions[temp_var], temp_unit)
output += '%s\n' % (current_conditions['humidity'])
output += '%s' % (current_conditions['wind_condition'])return output.encode('utf-8')

cache_file =  join(os.getenv("HOME"), '.gweather-conky2.cache')

try:
f =  open(cache_file,'rb')
cache = pickle.load(f)
f.close()
except  IOError:
cache = None

if cache == None or (city, lang)  not in cache or (
cache[(city, lang)]['date'] +  timedelta(hours=CACHE_HOURS) &lt; datetime.utcnow()):
# The cache  is outdated
weather = get_weather(city, lang)
ob_pipe_menu = get_openbox_pipe_menu(lang, **weather)
print  ob_pipe_menu
if cache == None:
cache = dict()
cache[(city, lang)] = {'date': datetime.utcnow(), 'ob_pipe_menu':  ob_pipe_menu}

#Save the data in the cache
try:
f = open(cache_file, 'wb')
cache = pickle.dump(cache,  f, -1)
f.close()
except IOError:
raise
else:
print cache[(city, lang)]['ob_pipe_menu']</pre>
<p>Bien, ahora tenemos que crear el archivo de configuración de conky:</p>
<pre># set to yes if you want Conky to be forked in the background
background yes

# Use Xft?
use_xft yes
xftfont Dejavu Sans:pixelsize=11

# Update interval in seconds
update_interval 1

# This is the number of times Conky will update before quitting.
# Set to zero to run forever.
total_run_times 0

# Create own window instead of using desktop (required in nautilus)
own_window  yes
own_window_transparent yes
own_window_type normal
own_window_hints undecorate,below,sticky,skip_taskbar,skip_pager

# Use double buffering (reduces flicker, may not work for everyone)
double_buffer yes

# Minimum size of text area
minimum_size 160
maximum_width 200

# Draw shades?
draw_shades no

# Draw outlines?
draw_outline no

# Draw borders around text
draw_borders yes

# Stippled borders?
stippled_borders 0

# border margins
border_margin 3

# border width
border_width 0

# Default colors and also border colors
default_color 404040
#default_shade_color white
#default_outline_color black
own_window_colour 3c3c3c

# Text alignment, other possible values are commented
#alignment top_left
alignment top_right
#alignment bottom_left
#alignment bottom_right

# Gap between borders of screen and text
# same thing as passing -x at command line
gap_x 15
gap_y 70

# Subtract file system buffers from used memory?
no_buffers yes

# set to yes if you want all text to be in uppercase
uppercase yes

# number of cpu samples to average
# set to 1 to disable averaging
cpu_avg_samples 2

# number of net samples to average
# set to 1 to disable averaging
net_avg_samples 2

# Force UTF8? note that UTF8 support required XFT
override_utf8_locale yes

# Add spaces to keep things from moving about?  This only affects certain objects.
use_spacer right
TEXT
${color #000000}${execi 12 python ~/.config/openbox/scripts/gweather-conky2.py bilbao es;}</pre>
<p>Este archivo, lo guardais con el nombre de .conkyrc, y lo ponéis en vuestra home. Si queréis, podéis usar más de un conky al mismo tiempo (este solo os dará el tiempo, a no ser que le añadáis código).</p>
<p>Tenéis que prestar especial atención a la última linea del conky: <strong>${color #000000}${execi 12 python ~/.config/openbox/scripts/gweather-conky2.py bilbao es;} </strong>. Podéis cambiar el color, variando los números, la frecuencia con la que se ejecuta el script (12 segundos por defecto, aunque el script de python no se refresca con tanta frecuencia), la ruta donde dejasteis el script (editarla correctamente) y por último, el nombre de vuestra ciudad (si tiene espacios, poner un guión, por ejemplo: buenos-aires), y por el último, poned <strong>es</strong>, que es el idioma, no el país de vuestra ciudad.</p>
<p>Si todo ha ido bien, lograréis el siguiente efecto:</p>
<p style="text-align: center;"><a href="http://img192.imageshack.us/img192/3610/clima2.png"><img class="aligncenter" title="clima-conky" src="http://img192.imageshack.us/img192/3610/clima2.png" alt="" width="614" height="491" /></a></p>
<p>Se puede modificar el script de python, para que nos muestre otros datos, o los ordene de otra manera, si sabéis un poco de programación básica, no os será difícil. También podéis añadir datos de temperatura, voltaje y velocidad de los ventiladores: <a href="http://behindopendoors.netne.net/blog/linux/lm-sensors-monitoriza-la-temperatura-velocidad-de-los-ventiladores-y-sus-voltajes">http://behindopendoors.netne.net/blog/linux/lm-sensors-monitoriza-la-temperatura-velocidad-de-los-ventiladores-y-sus-voltajes</a></p>
<img src="http://feeds.feedburner.com/~r/BehindOpenDoors/~4/2uUkJ6XuP_o" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://behindopendoors.netne.net/blog/general/ver-clima-de-nuestra-ciudad-en-openbox-ii-usando-conky/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://behindopendoors.netne.net/blog/general/ver-clima-de-nuestra-ciudad-en-openbox-ii-usando-conky</feedburner:origLink></item>
		<item>
		<title>Ver el clima de nuestra ciudad I: Menú de Openbox</title>
		<link>http://feedproxy.google.com/~r/BehindOpenDoors/~3/cPj8qZLHyqU/ver-el-clima-de-nuestra-ciudad-en-openbox</link>
		<comments>http://behindopendoors.netne.net/blog/linux/ver-el-clima-de-nuestra-ciudad-en-openbox#comments</comments>
		<pubDate>Thu, 11 Feb 2010 23:44:19 +0000</pubDate>
		<dc:creator>Tepes</dc:creator>
				<category><![CDATA[Archlinux]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Arch]]></category>
		<category><![CDATA[clima]]></category>
		<category><![CDATA[liviano]]></category>
		<category><![CDATA[Openbox]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[script]]></category>

		<guid isPermaLink="false">http://behindopendoors.netne.net/blog/?p=858</guid>
		<description><![CDATA[Puede que algo tan sencillo como ver el clima de nuestra ciudad, en nuestro entorno de escritorio, se complique. Seguramente habrá un montón de opciones, yo os voy a ofrecer una liviana, fácil de configurar, y que a mí me parece elegante. Una imagen vale más que mil palabras, así que&#8230;


Para incluir el clima en [...]]]></description>
			<content:encoded><![CDATA[<p>Puede que algo tan sencillo como ver el clima de nuestra ciudad, en nuestro entorno de escritorio, se complique. Seguramente habrá un montón de opciones, yo os voy a ofrecer una liviana, fácil de configurar, y que a mí me parece elegante. Una imagen vale más que mil palabras, así que&#8230;</p>
<p style="text-align: center;"><a href="http://img62.imageshack.us/img62/3158/weather2.png"><img class="aligncenter" title="openbox-clima" src="http://img62.imageshack.us/img62/3158/weather2.png" alt="" width="614" height="491" /></a></p>
<p style="text-align: center;">
<p>Para incluir el clima en el menú de openbox, usé un script escrito en python, que posteó un usuario en el foro de Arch: <a href="http://bbs.archlinux.org/viewtopic.php?id=43432">http://bbs.archlinux.org/viewtopic.php?id=43432</a>.</p>
<p>El script:</p>
<pre>#!/usr/bin/python -o
# -*- coding: utf-8 -*-

from urllib import urlopen, quote
from xml.etree.cElementTree import parse
from datetime import datetime, timedelta
import os
from os.path import join
from sys import argv
try:
import cPickle as pickle
except ImportError:
import pickle

TRANSLATED_TEXT = {
'en': {
'current': 'Current conditions',
'weather': 'Weather',
'temp': 'Temperature',
'humidity': 'Humidity',
'wind': 'Wind',
'forecast': 'Forecast',
'mintemp': 'Minimun Temperature',
'maxtemp': 'Maximun Temperature'
},
'es': {
'current': u'Actualmente',
'weather': u'Tiempo',
'temp': u'Temperatura',
'humidity': u'Humedad',
'wind': u'Viento',
'forecast': u'Previsión',
'mintemp': u'Temperatura Mínima',
'maxtemp': u'Temperatura Máxima'
},
'fr': {
'current': u'Actuel',
'weather': u'Météo',
'temp': u'Température',
'humidity': u'Humidité',
'wind': u'Vent',
'forecast': u'Prévision',
'mintemp': u'Température minimale',
'maxtemp': u'Température maximale'
},
'de': {
'current': u'Aktuell',
'weather': u'Wetter',
'temp': u'Temperatur',
'humidity': u'Luftfeuchtigkeit',
'wind': u'Wind',
'forecast': u'Prognostizieren',
'mintemp': u'Minimale Temperatur',
'maxtemp': u'Höchste Temperatur'
}
}

if len(argv) != 3:
raise Exception('Usage: gweather.py city language.')
else:
city = argv[1]
lang = argv[2]

CACHE_HOURS = 1

WEATHER_URL = 'http://www.google.com/ig/api?weather=%s&amp;hl=%s&amp;oe=UTF-8'

def get_weather(city, lang):
url = WEATHER_URL % (quote(city), quote(lang))
data = parse(urlopen(url))

forecasts = []
for forecast in data.findall('weather/forecast_conditions'):
forecasts.append(
dict([(element.tag, element.get("data")) for element in forecast.getchildren()]))

return {
'forecast_information': dict([(element.tag, element.get("data")) for element in data.find('weather/forecast_information').getchildren()]),
'current_conditions': dict([(element.tag, element.get("data")) for element in data.find('weather/current_conditions').getchildren()]),
'forecasts': forecasts
}

def get_openbox_pipe_menu(lang, forecast_information, current_conditions, forecasts):
if lang == 'en-US':
lang = 'en'

tt = TRANSLATED_TEXT[lang]

temp_var, temp_unit = ("temp_c", u"\u00b0C") if forecast_information['unit_system'] == "SI" else ("temp_f", "F")

output = ''
output += '\n' % (weather['forecast_information']['city'],forecast_information['forecast_date'])
output += '\n' % tt['current']
output += '' % (tt['weather'], current_conditions['condition'])
output += '' % (tt['temp'], current_conditions[temp_var], temp_unit)
output += '' % (tt['humidity'], current_conditions['humidity'])
output += '' % (tt['wind'], current_conditions['wind_condition'])
for forecast in forecasts:
output += '\n' % (tt['forecast'], forecast['day_of_week'])
output += '' % (tt['weather'], forecast['condition'])
output += '' % ( tt['mintemp'], forecast['low'], temp_unit )
output += '' % ( tt['maxtemp'], forecast['high'], temp_unit )
output += '\n'

return output.encode('utf-8')

cache_file = join(os.getenv("HOME"), '.gweather.cache')

try:
f = open(cache_file,'rb')
cache = pickle.load(f)
f.close()
except IOError:
cache = None

if cache == None or (city, lang) not in cache or (
cache[(city, lang)]['date'] + timedelta(hours=CACHE_HOURS) &lt; datetime.utcnow()):
# The cache is outdated
weather = get_weather(city, lang)
ob_pipe_menu = get_openbox_pipe_menu(lang, **weather)
print ob_pipe_menu
if cache == None:
cache = dict()
cache[(city, lang)] = {'date': datetime.utcnow(), 'ob_pipe_menu': ob_pipe_menu}

#Save the data in the cache
try:
f = open(cache_file, 'wb')
cache = pickle.dump(cache, f, -1)
f.close()
except IOError:
raise
else:
print cache[(city, lang)]['ob_pipe_menu']</pre>
<p>Lo guardamos en el directorio que queramos, yo lo dejé en <strong>~/.config/openbox/scripts/gweather.py</strong>, pero da lo mismo. Para ejecutarlo:</p>
<blockquote><p>python ~/.config/openbox/scripts/gweather.py YOURCITY IDIOMA</p></blockquote>
<p>El idioma, podemos escoger entre <strong>es</strong>, <strong>de</strong>, <strong>fr</strong>, o <strong>de</strong>. Y el nombre de nuestra ciudad en minúsculas, si tiene espacios lo pondremos con un guión de la siguiente forma: <strong>buenos-aires</strong>.</p>
<p>Ahora vamos a insertar el script en el menú de openbox, de la siguiente manera, editando el archivo <strong>~/.config/openbox/menu.xml</strong>:<br />
añadimos la siguiente linea, donde queramos que aparezca en el menú (a nuestro gusto).</p>
<pre>&lt;menu id="pipe-weather" label="Weather" execute="python ~/.config/openbox/scripts/gweather.py bilbao es" /&gt;</pre>
<p>Y ya está todo listo. Este script lo podemos usar con otras aplicaciones, modificando el output editando el codigo python, o con pipes, el único limite es nuestra imaginación (y los conocimientos de programación). En el proximo artículo, explicaré como usarlo conjuntamente con el monitor del sistema conky.</p>
<p>P.D: Agradecer al autor, o autores que se han currado el script, y espero que funcione por mucho tiempo y no cambien la web <img src='http://behindopendoors.netne.net/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> .</p>
<img src="http://feeds.feedburner.com/~r/BehindOpenDoors/~4/cPj8qZLHyqU" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://behindopendoors.netne.net/blog/linux/ver-el-clima-de-nuestra-ciudad-en-openbox/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://behindopendoors.netne.net/blog/linux/ver-el-clima-de-nuestra-ciudad-en-openbox</feedburner:origLink></item>
		<item>
		<title>Permisos de archivos en Linux</title>
		<link>http://feedproxy.google.com/~r/BehindOpenDoors/~3/wZmC2q0T8WI/permisos-de-archivos-en-linux</link>
		<comments>http://behindopendoors.netne.net/blog/linux/permisos-de-archivos-en-linux#comments</comments>
		<pubDate>Thu, 04 Feb 2010 15:40:21 +0000</pubDate>
		<dc:creator>Tepes</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[nautilus]]></category>
		<category><![CDATA[pcmanfm]]></category>
		<category><![CDATA[permisos]]></category>
		<category><![CDATA[seguridad]]></category>

		<guid isPermaLink="false">http://behindopendoors.netne.net/blog/?p=844</guid>
		<description><![CDATA[Sin profundizar demasiado en el tema, voy a explicar como maneja Linux los permisos de archivos, para entender como funciona, y poder configurarlo fácilmente.
Si lo que queréis es la versión extendida, aquí os dejo un par de enlaces, en los que se explica de una manera más completa:
http://www.ant.org.ar/cursos/curso_intro/x1439.html
Voy a empezar, explicándolo de una manera gráfica, [...]]]></description>
			<content:encoded><![CDATA[<p>Sin profundizar demasiado en el tema, voy a explicar como maneja Linux los permisos de archivos, para entender como funciona, y poder configurarlo fácilmente.</p>
<p>Si lo que queréis es la versión extendida, aquí os dejo un par de enlaces, en los que se explica de una manera más completa:<br />
<a href="http://www.ant.org.ar/cursos/curso_intro/x1439.html">http://www.ant.org.ar/cursos/curso_intro/x1439.html</a></p>
<p>Voy a empezar, explicándolo de una manera gráfica, que seguro que es algo más intuitiva. Cuando abrimos las propiedades con el botón derecho del ratón, en cualquier archivo o directorio, veremos una pantalla como esta:</p>
<p>En nautilus: (a mi parecer, un poco complicada su forma de visualización)</p>
<p style="text-align: center;"><a href="http://behindopendoors.netne.net/blog/img/nautilus.png"><img class="aligncenter" title="nautilus" src="http://behindopendoors.netne.net/blog/img/nautilus.png" alt="" width="517" height="584" /></a></p>
<p>En pcmanfm: (más sencillo imposible)</p>
<p><a href="http://behindopendoors.netne.net/blog/img/pcmanfm.png"><img class="aligncenter" title="pcmanfm" src="http://behindopendoors.netne.net/blog/img/pcmanfm.png" alt="" width="594" height="334" /></a></p>
<p>Bien, ahora vamos a ver que significa cada parte:</p>
<p>Hay tres secciones, el <strong>propietario</strong>, el<strong> grupo</strong>, y los <strong>otros</strong> usuarios que no pertenecen al grupo marcado. Cada uno de estos colectivos, tiene tres clases de permisos. Lectura (poder leer el archivo), escritura (editar, y borrar el archivo), y ejecución (el archivo podrá ser ejecutado). Estas opciones pueden aplicarse a un archivo, o a un directorio.</p>
<p>En las imágenes mostradas arriba, podemos ver un directorio que se encuentra en mi partición de datos, que alberga música. El propietario soy yo, con permisos de lectura, escritura, y ejecución, mientras que los demás usuarios, pueden escuchar esa música, pero no borrarla o editarla, de manera que podemos estar tranquilos.</p>
<p>Solo podremos cambiar los permisos, de los archivos y directorios que seamos dueños (a no ser que los editemos como root), lógico no? Bien, ahora que ya hemos entendido como funcionan los permisos, vamos a profundizar un poco, y ver como gestionarlos desde la terminal (puede sernos muy útil).</p>
<p>Con el comando, <strong>ls -la</strong> (ls para listar, -l para mostrar los permisos, y -a para mostrar archivos ocultos), veremos una lista como esta en cualquier directorio (cojo los ejemplos de ant.org):</p>
<pre>[shrek@pantano:~]$ <tt><strong>ls -la</strong></tt>
total 13
drwxr-sr-x   2 shrek    user        1024 May  2 09:04 .
drwxrwsr-x   4 root     staff       1024 Apr 17 21:08 ..
-rw-------   1 shrek    user        2541 May  2 22:04 .bash_history
-rw-r--r--   1 shrek    user         164 Apr 23 14:57 .bash_profile
-rw-r--r--   1 shrek    user          55 Apr 23 14:44 .bashrc
-rwxrwxr-x   1 shrek    user           0 Apr 14 19:29 a.out
-rwxrwxr-x   1 shrek    user          40 Apr 30 12:14 hello.pl
-r--------   1 shrek    user          64 Apr 29 14:04 hola
-rwxrw-r--   1 shrek    user         337 Apr 29 13:57 lista
-rw-rw-r--   1 shrek    user         40  Apr 30 12:31 listador
-rw-rw-r--   1 shrek    user           0 May  2 09:04 null
-rwxrwxr-x   1 shrek    user         175 Apr 30 12:30 prue.pl
-rwxrwxr-x   1 shrek    user          56 Apr 23 15:08 que.sh</pre>
<p>Vemos, que se listan 10 caracteres, que nos dan la información que necesitamos, vamos a verlo uno por uno, una vez entendido, es muy fácil de interpretar. El primero, nos dice que tipo de archivo o directorio es:</p>
<table border="1" cellspacing="0" cellpadding="4" bgcolor="#e0e0e0">
<thead>
<tr>
<th width="20%" align="LEFT" valign="TOP">Contenido</th>
<th width="80%" align="LEFT" valign="TOP">Significado</th>
</tr>
</thead>
<tbody>
<tr>
<td width="20%" align="LEFT" valign="TOP">-</td>
<td width="80%" align="LEFT" valign="TOP">Archivo común</td>
</tr>
<tr>
<td width="20%" align="LEFT" valign="TOP">d</td>
<td width="80%" align="LEFT" valign="TOP">Directorio</td>
</tr>
<tr>
<td width="20%" align="LEFT" valign="TOP">c</td>
<td width="80%" align="LEFT" valign="TOP">Dispositivo de caracteres (tty o               impresora)</td>
</tr>
<tr>
<td width="20%" align="LEFT" valign="TOP">b</td>
<td width="80%" align="LEFT" valign="TOP">Dispositivo  de Bloque (usualmente disco rígido o               CD-ROM)</td>
</tr>
<tr>
<td width="20%" align="LEFT" valign="TOP">l</td>
<td width="80%" align="LEFT" valign="TOP">Enlace  simbólico</td>
</tr>
<tr>
<td width="20%" align="LEFT" valign="TOP">s</td>
<td width="80%" align="LEFT" valign="TOP">Socket</td>
</tr>
<tr>
<td width="20%" align="LEFT" valign="TOP">p</td>
<td width="80%" align="LEFT" valign="TOP">Pipe</td>
</tr>
</tbody>
</table>
<p>Ahora vamos, a ver que significan los siguientes caracteres, que son los que nos importan:</p>
<p><img class="aligncenter" src="http://www.ant.org.ar/cursos/curso_intro/imagenes/tema06_01.png" alt="" width="524" height="141" /></p>
<p>Como veis, es lo mismo que nos mostraba la interface gráfica, 3 subgrupos, de 3 caracteres, el primero es permiso de lectura (<strong>r</strong> de read), el segundo escritura (<strong>w</strong> de write), y el tercero de ejecución (<strong>x</strong> e<strong>x</strong>ecute).</p>
<p>Para cambiar los permisos, usaremos el comando <strong>chmod</strong> en una terminal. Agregaremos permisos con el símbolo mas &#8220;+&#8221; y los quitaremos con el símbolo &#8220;-&#8221;. También tenemos que especificar a que grupo se los estamos aplicando, al propietario:</p>
<p><strong>a: </strong>aplicar a todos</p>
<p><strong>u: </strong>aplicar al propietario</p>
<p><strong>g: </strong>aplicar al grupo</p>
<p><strong>o: </strong>aplicar a terceros</p>
<p>Pongo un par de ejemplos, para que se entienda mejor:</p>
<blockquote><p>chmod a+x archivo</p></blockquote>
<p>Le estaremos agregando permisos de ejecución (<strong>x</strong>), para todos.</p>
<blockquote><p>chmod go-w archivo</p></blockquote>
<p>Ahora en cambio, le estamos quitando los permisos de escritura (<strong>w</strong>), a los miembros del <strong>grupo</strong>, y a <strong>terceros</strong></p>
<p>De todas, maneras, hay una manera más sencilla, de hacer estos cambios, y es usando el sistema octal. Para los que sepáis un poco de matemáticas, o tengáis curiosidad, os explico de donde salen los números que vamos a ver a continuación. Con este sistema, a cada privilegio, se le aplica un número, siguiendo el sistema octal: el bit x es 2<sup>0</sup> = 1, el bit w es 2<sup>1</sup> = 2, el bit r  es 2<sup>2</sup> = 4.</p>
<p>Resumiendo:<br />
<strong>r</strong> = 4<br />
<strong>w</strong> = 2<br />
<strong>x</strong> = 1</p>
<p>Ahora haciendo simples sumas, podemos nombrar cualquier permisos mediante números de 3 dígitos (el primero para el propietario, el segundo para el grupo, y el tercero para terceros).</p>
<table border="0" width="100%">
<tbody>
<tr style="text-align: center;">
<td>Valor</td>
<td>Descripción</td>
</tr>
<tr>
<td>700</td>
<td>El propietario tiene permisos  de lectura, escritura y ejecución; los demás no pueden ni acceder (ejemplo, la home)</td>
</tr>
<tr>
<td>744</td>
<td>El propietario lectura, escritura y  ejecución, el grupo y otros  solo ejecución lectura</td>
</tr>
<tr>
<td>755</td>
<td>El propietario lectura, escritura y  ejecución, el grupo y otros 		 pueden leer y ejecutar el archivo.</td>
</tr>
<tr>
<td>777</td>
<td>El archivo puede ser leído,  escrito y ejecutado por quien sea.</td>
</tr>
<tr>
<td>640</td>
<td>El usuario propietario puede leer y  escribir, el grupo puede leer el archivo y otros no pueden hacer nada.</td>
</tr>
</tbody>
</table>
<p>Solo tenemos que sumar los ingredientes que queramos, para saber el número que debemos aplicar, es bastante sencillo y fácil de recordar. Luego aplicamos el valor, con el comando chmod:</p>
<blockquote><p>chmod 755 archivo</p></blockquote>
<p>Ahora, por últimos, vamos a ver como cambiar el propietario o el grupo al que pertenece un archivo. Lo haremos con el comando <strong>chown. </strong>Indicaremos el nombre del propietario nuevo, y también podemos agregar seguido de un punto, el nombre del grupo, si queremos cambiarlo.</p>
<blockquote><p>chown pepito archivo.txt</p></blockquote>
<p>Nombra a pepito propietario del archivo</p>
<blockquote><p>chown pepito.amigos archivo.txt</p></blockquote>
<p>Nombra a pepito propietario del archivo y además cambia el grupo a &#8220;amigos&#8221;.</p>
<blockquote><p>chown .amigos archivo.txt</p></blockquote>
<p>Cambia el grupo a &#8220;amigos&#8221;, pero mantiene el mismo propietario de archivo.</p>
<p>Eso es todo. Esto nos servirá para entender mejor como maneja linux los permisos, y poder solucionar pequeños errores que nos encontremos, o administrar mejor nuestro sistema, sobretodo si hay más de un usuario en el mismo, y no queremos llevarnos sorpresas.</p>
<img src="http://feeds.feedburner.com/~r/BehindOpenDoors/~4/wZmC2q0T8WI" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://behindopendoors.netne.net/blog/linux/permisos-de-archivos-en-linux/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://behindopendoors.netne.net/blog/linux/permisos-de-archivos-en-linux</feedburner:origLink></item>
		<item>
		<title>Me paso a Openbox</title>
		<link>http://feedproxy.google.com/~r/BehindOpenDoors/~3/wwqUc13fEy4/me-paso-a-openbox</link>
		<comments>http://behindopendoors.netne.net/blog/linux/me-paso-a-openbox#comments</comments>
		<pubDate>Tue, 26 Jan 2010 22:46:49 +0000</pubDate>
		<dc:creator>Tepes</dc:creator>
				<category><![CDATA[Archlinux]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[liviano]]></category>
		<category><![CDATA[Openbox]]></category>
		<category><![CDATA[programas]]></category>

		<guid isPermaLink="false">http://behindopendoors.netne.net/blog/?p=818</guid>
		<description><![CDATA[Esto, no pretende ser un tutorial sobre openbox, solamente escribo una especie de notas para recordarme los programas que uso en openbox para futuras instalaciones (es lo que tiene tener un poco memoria pez).
Como veis, hace unos días, dí el salto a openbox, y deje atrás gnome. La idea era ganar algo de rendimiento (sobretodo [...]]]></description>
			<content:encoded><![CDATA[<p>Esto, no pretende ser un tutorial sobre openbox, solamente escribo una especie de notas para recordarme los programas que uso en openbox para futuras instalaciones (es lo que tiene tener un poco memoria pez).</p>
<p>Como veis, hace unos días, dí el salto a openbox, y deje atrás gnome. La idea era ganar algo de rendimiento (sobretodo en el netbook), aunque también, cambiar un poco la imágen de Arch, ya que llevo desde que empecé en linux usando Gnome.</p>
<p>Openbox me ha parecido la mejor opción después de probar varios entornos, gestores de ventanas etc. Es lígero, muy configurable y flexible, y no pierde funcionalidades frente a Gnome, siempre que se configure correctamente. Además, me parece muy estético. Bueno sin más dilación, os dejo un link, con una guía muy completa, de la mano de Xabz: <a href="http://archxz.wordpress.com/2009/09/12/guia-openbox/">http://archxz.wordpress.com/2009/09/12/guia-openbox/</a> . Con alguna manita extra de google, obtendremos información de todo lo que queramos. También tuve un problema con los pendrives, que lo relaté en este otro post: <a href="http://behindopendoors.netne.net/blog/linux/montar-pendrives-en-openbox">http://behindopendoors.netne.net/blog/linux/montar-pendrives-en-openbox</a>.</p>
<p style="text-align: center;"><a href="http://img145.imageshack.us/img145/4505/gsnapshot.png"><img class="aligncenter" src="http://img145.imageshack.us/img145/4505/gsnapshot.png" alt="" width="655" height="384" /></a></p>
<p style="text-align: center;"><a href="http://img638.imageshack.us/img638/7571/gsnapshot2.png"><img class="aligncenter" src="http://img638.imageshack.us/img638/7571/gsnapshot2.png" alt="" width="655" height="384" /></a></p>
<pre><strong>Aplicaciones de configuración:</strong>
obconf (para configurar diversas opciones de openbox)
obkey-git(configura las convinaciones de teclas, "shortcuts")
openbox-themes (paquetes con temas de openbox)
lxappearance (configura los temas GTK)
obmenu (una forma sencilla de editar nuestro menú de openbox)
lx-randr (configura la resolución de pantalla)

<strong>Accesorios:</strong>
oblogout (pantalla para gestionar el apagado, reinicio...)
fb-panel (un panel ligero y configurable)

<strong>Otros:</strong>
sakura (terminal)
evince (visor de documentos, pdf)
scrot (capturador de pantalla, screenshots)
galcultator (calculadora)
gpicview (visor de imágenes
xscreensaver (salvapantallas)
slim (gestor de entrada)
pcmanfm (navegador de archivos)
xfburn (grabador de CD, DVD)
moc (reproductor de música muy ligero, para la terminal)
xmms2 (reproductor de música ligero)
midori (navegador web ligero)
notify-osd (muestra notificaciones con un aspecto elegante)</pre>
<p>Estos son todos los programas de nueva adquisición. Todos los he elegido buscando que sean ligeros, pero sin perder usabilidad. De todas maneras, sigo usando otros programas, como emesene, deluge, vlc, firefox, amarok&#8230; que no son precisamente los más ligeros.</p>
<p>Actualización:</p>
<p>Añado unos links muy interesantes de la mano de Ramón:</p>
<p><a href="http://www.glatelier.org/2010/01/escritorio-kiss/">http://www.glatelier.org/2010/01/escritorio-kiss/</a></p>
<p><a href="http://urukrama.wordpress.com/openbox-guide/">http://urukrama.wordpress.com/openbox-guide/</a> (en inglés)</p>
<p><a href="http://skinwalker.wordpress.com/">http://skinwalker.wordpress.com/</a> (en inglés, más que nada parte estética)</p>
<img src="http://feeds.feedburner.com/~r/BehindOpenDoors/~4/wwqUc13fEy4" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://behindopendoors.netne.net/blog/linux/me-paso-a-openbox/feed</wfw:commentRss>
		<slash:comments>8</slash:comments>
		<feedburner:origLink>http://behindopendoors.netne.net/blog/linux/me-paso-a-openbox</feedburner:origLink></item>
		<item>
		<title>Problema/solución dhcpcd  5.1.4 no encuentra IP</title>
		<link>http://feedproxy.google.com/~r/BehindOpenDoors/~3/oDr8Zoyo9GY/problemasolucion-5-1-4-dhcpcd-no-encuentra-ip</link>
		<comments>http://behindopendoors.netne.net/blog/linux/problemasolucion-5-1-4-dhcpcd-no-encuentra-ip#comments</comments>
		<pubDate>Wed, 20 Jan 2010 17:48:31 +0000</pubDate>
		<dc:creator>Tepes</dc:creator>
				<category><![CDATA[Archlinux]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Arch]]></category>
		<category><![CDATA[bug]]></category>
		<category><![CDATA[dhcpcd]]></category>
		<category><![CDATA[ip]]></category>

		<guid isPermaLink="false">http://behindopendoors.netne.net/blog/?p=826</guid>
		<description><![CDATA[Después de actualizar mi sistema en Arch, al arrancar el equipo, no me encontraba ninguna IP. Inicie dhcpcd desde una terminal, y me dice lo siguiente:
sudo dhcpcd
dhcpcd: version 5.1.4 starting
dhcpcd: eth0: broadcasting for a lease
dhcpcd: timed out
Entoncés fuí al foro de Arch, y N0dix, dió con la solución. En este post (en inglés) hablan sobre [...]]]></description>
			<content:encoded><![CDATA[<p>Después de actualizar mi sistema en Arch, al arrancar el equipo, no me encontraba ninguna IP. Inicie dhcpcd desde una terminal, y me dice lo siguiente:</p>
<pre>sudo dhcpcd
dhcpcd: version 5.1.4 starting
dhcpcd: eth0: broadcasting for a lease
dhcpcd: timed out</pre>
<p>Entoncés fuí al foro de Arch, y <a href="http://n0dix.blogspot.com/">N0dix</a>, dió con la solución. En este post (en inglés) hablan sobre ello: <a href="http://bbs.archlinux.org/viewtopic.php?pid=688104">http://bbs.archlinux.org/viewtopic.php?pid=688104</a><br />
Para solucionarlo, solo hay que borrar el archivo <strong>/var/lib/dhcpcd/dhcpcd-eth0.lease. </strong>Nosotros vamos a renombrarlo por si acaso:</p>
<blockquote><p><code>sudo mv /var/lib/dhcpcd/dhcpcd-<strong>eth0</strong>.lease /var/lib/dhcpcd/dhcpcd-<strong>eth0</strong>.lease.backup</code></p></blockquote>
<p><strong>Fijaros en el nombre de la interface que vais a editar, si usáis otra para internet, editad la correspondiente </strong>(cambiad et0, por wlan0, eth1&#8230; o lo que corresponda)<strong>. </strong>Y ya está, solo nos queda volver a iniciar dhcpcd:</p>
<blockquote><p>sudo dhcpcd<br />
dhcpcd: version 5.1.4 starting<br />
dhcpcd: eth0: rebinding lease of XX:XXX:XXX:X<br />
dhcpcd: eth0: acknowledged XX:XXX:XXX:X from XX:XXX:XXX:X<br />
dhcpcd: eth0: checking for XX:XXX:XXX:X<br />
dhcpcd: eth0: leased XX:XXX:XXX:X for 86400 seconds<br />
dhcpcd: forking to background</p></blockquote>
<p>Eso es todo. Una rápida solución, a un problema que pintaba muy feo.</p>
<img src="http://feeds.feedburner.com/~r/BehindOpenDoors/~4/oDr8Zoyo9GY" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://behindopendoors.netne.net/blog/linux/problemasolucion-5-1-4-dhcpcd-no-encuentra-ip/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://behindopendoors.netne.net/blog/linux/problemasolucion-5-1-4-dhcpcd-no-encuentra-ip</feedburner:origLink></item>
		<item>
		<title>Montar pendrives en openbox</title>
		<link>http://feedproxy.google.com/~r/BehindOpenDoors/~3/7ZIDfqsjbyQ/montar-pendrives-en-openbox</link>
		<comments>http://behindopendoors.netne.net/blog/linux/montar-pendrives-en-openbox#comments</comments>
		<pubDate>Wed, 20 Jan 2010 17:37:22 +0000</pubDate>
		<dc:creator>Tepes</dc:creator>
				<category><![CDATA[Archlinux]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Arch]]></category>
		<category><![CDATA[Hal]]></category>
		<category><![CDATA[mount]]></category>
		<category><![CDATA[Openbox]]></category>
		<category><![CDATA[pcmanfm]]></category>
		<category><![CDATA[pendrive]]></category>

		<guid isPermaLink="false">http://behindopendoors.netne.net/blog/?p=821</guid>
		<description><![CDATA[Voy a comentar brevemente, un problemilla que he tenido en mi salto a openbox, y como he logrado solucionarlo (gracias a Teh, del foro de Arch). El problema, era que cuando quería montar un pendrive desde el explorador de archivos (sea cual fuera), no funcionaba con un doble click de toda la vida. Me tiraba [...]]]></description>
			<content:encoded><![CDATA[<p>Voy a comentar brevemente, un problemilla que he tenido en mi salto a openbox, y como he logrado solucionarlo (gracias a <a title="Teh" href="http://cyb3rpunk.wordpress.com/">Teh,</a> del foro de Arch). El problema, era que cuando quería montar un pendrive desde el explorador de archivos (sea cual fuera), no funcionaba con un doble click de toda la vida. Me tiraba el siguiente error:</p>
<pre>Rejected send message, 1 matched rules; type="method_call", sender=":1.7"
 (uid=1000 pid=3278 comm="pcmanfm) interface="org.freedesktop.Hal.Device.
Volume" member="Mount" error name="(unset)" requested_reply=0
destination="org.freedesktop.Hal" (uid=0 pid=825 comm="/usr/sbin/hald))</pre>
<p>Parece ser que es problema de Hal, y la solución más sencilla, me ha parecido añadir un par de lineas al fstab:</p>
<blockquote><p>sudo nano /etc/fstab</p></blockquote>
<pre> /dev/sdb1 /media/pen auto   rw,users,noauto 0 0
 /dev/sdc1 /media/pen2 auto  rw,users,noauto 0 0</pre>
<p>Añado dos lineas, por si conectamos dos pendrives a la vez, el primero lo reconocerá como <strong>sdb1</strong>, y el segundo como <strong>sdc1</strong>.</p>
<p>También tenemos que crear los dos puntos de montaje:</p>
<blockquote><p>sudo mkdir /media/<strong>pen1</strong> /media/<strong>pen2</strong></p></blockquote>
<p>Los puntos de montajes, los podéis cambiar, así como las opciones del fstab. Es solo para que os hagáis una idea. De esta manera, ya podremos montar los pendrives con un doble click.</p>
<img src="http://feeds.feedburner.com/~r/BehindOpenDoors/~4/7ZIDfqsjbyQ" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://behindopendoors.netne.net/blog/linux/montar-pendrives-en-openbox/feed</wfw:commentRss>
		<slash:comments>6</slash:comments>
		<feedburner:origLink>http://behindopendoors.netne.net/blog/linux/montar-pendrives-en-openbox</feedburner:origLink></item>
		<item>
		<title>Crear un “pendrive-live” de Archlinux</title>
		<link>http://feedproxy.google.com/~r/BehindOpenDoors/~3/DLuww0adnHw/crear-un-%e2%80%9cpendrive-live%e2%80%9d-de-archlinux</link>
		<comments>http://behindopendoors.netne.net/blog/linux/crear-un-%e2%80%9cpendrive-live%e2%80%9d-de-archlinux#comments</comments>
		<pubDate>Mon, 18 Jan 2010 20:15:37 +0000</pubDate>
		<dc:creator>Tepes</dc:creator>
				<category><![CDATA[Archlinux]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[instalar]]></category>
		<category><![CDATA[pendrive]]></category>
		<category><![CDATA[usb]]></category>

		<guid isPermaLink="false">http://behindopendoors.netne.net/blog/?p=815</guid>
		<description><![CDATA[Hace poco expliqué una manera sencilla para crear un pendrive-live de ubuntu: http://behindopendoors.netne.net/blog/linux/crear-un-pendrive-live-de-ubuntu. En archlinux en cambio, vamos a hacerlo a mano, desde la consola, con un par de comandos, de una manera bastante sencilla. De esta forma, lograremos meter nuestra distro favorita en un pendrive, que nos será necesario para instalar Arch en un [...]]]></description>
			<content:encoded><![CDATA[<p>Hace poco expliqué una manera sencilla para crear un pendrive-live de ubuntu: <a href="http://behindopendoors.netne.net/blog/linux/crear-un-pendrive-live-de-ubuntu">http://behindopendoors.netne.net/blog/linux/crear-un-pendrive-live-de-ubuntu</a>. En archlinux en cambio, vamos a hacerlo a mano, desde la consola, con un par de comandos, de una manera bastante sencilla. De esta forma, lograremos meter nuestra distro favorita en un pendrive, que nos será necesario para instalar Arch en un pendrive.</p>
<p>Lo primero que tenemos que hacer, es conseguir una imágen del cd de arch. Yo suelo usar las netinstall, que trae solo lo básico, y el resto lo descarga de internet, más actualizado, pero bueno, eso a vuestro gusto.</p>
<p>Ahora desde la consola, y en la ruta donde tengamos la imágen de arch, le vamos a indicar donde copiar la imágen, con el siguiente comando (<span style="color: #ff0000;">lean atentamente antes de hacer nada</span>):</p>
<blockquote><p>dd if=<strong>archlinux-2009.08-netinstall-i686.img</strong> of=<strong>/dev/sdX</strong></p></blockquote>
<p>Si queréis saber más sobre el comando if, en este post lo explican (aunque el post sea sobre como duplicar un disco duro: <a href="http://www.entiendeatux.com/2010/02/16/breve-copia-exacta-de-un-hd-a-otro-hd/">http://www.entiendeatux.com/2010/02/16/breve-copia-exacta-de-un-hd-a-otro-hd/</a>)Le tenemos que indicar el nombre del archivo de la imágen que tengamos, y la ruta donde está el pendrive. Normalmente es /dev/sdb1, pero podéis comprobarlo ejecutando el comando <strong>blkid</strong>. Tened cuidado de no indicar el dispositivo que no es, porque <span style="color: #ff0000;">podéis perder datos</span>. Si tenéis conectado algún disco duro externo, yo lo desconectaría por precaución (más vale prevenir que curar, sobretodo si somos un poco manazas <img src='http://behindopendoors.netne.net/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> .</p>
<p>Los datos de la imágen de arch, ocupan muy poco. Así que en el espacio restante, podemos crear otra partición, para guardar otros archivos que queramos llevar en el llavero. Esto lo podemos hacer con cualquier editor de particiones (yo uso gparted).</p>
<p>Y ya tenemos listo nuestro usb-live con arch.</p>
<p id="blog-title">Este tip lo leí en un artículo del blog de Leonardo Andrés Gallego, en el que explica como instalar archlinux en una netbook (<a href="http://www.hombrepac.com.ar/articulos/instalando-arch-linux-2009-08-con-kde-4-3-en-la-netbook-asus-eeepc-1000ha/">http://www.hombrepac.com.ar/articulos/instalando-arch-linux-2009-08-con-kde-4-3-en-la-netbook-asus-eeepc-1000ha/</a> ), y me pareció bueno comentar esta parte, para poder tenerla a mano.</p>
<img src="http://feeds.feedburner.com/~r/BehindOpenDoors/~4/DLuww0adnHw" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://behindopendoors.netne.net/blog/linux/crear-un-%e2%80%9cpendrive-live%e2%80%9d-de-archlinux/feed</wfw:commentRss>
		<slash:comments>21</slash:comments>
		<feedburner:origLink>http://behindopendoors.netne.net/blog/linux/crear-un-%e2%80%9cpendrive-live%e2%80%9d-de-archlinux</feedburner:origLink></item>
	</channel>
</rss>
