<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" gd:etag="W/&quot;CEECSXozcSp7ImA9WhRRFUU.&quot;"><id>tag:blogger.com,1999:blog-418342519666901547</id><updated>2011-11-29T08:04:28.489-08:00</updated><category term="manejo de archivos" /><category term="Python" /><category term="Libros" /><category term="refman" /><category term="Bloqueos" /><category term="Print screen" /><category term="SGBD" /><category term="DNS" /><category term="SQL" /><category term="Java; Recursos;Propiedades" /><category term="reference manager 10" /><category term="web" /><category term="Postgresql" /><category term="Reference manager" /><category term="red de area local" /><category term="Windows" /><category term="Firewall" /><category term="Grub" /><category term="Base de datos" /><category term="Postgres" /><category term="LAN" /><category term="Pg_dump" /><category term="Distro" /><category term="restore" /><category term="Shell" /><category term="console" /><category term="respaldo" /><category term="VM" /><category term="Compartir" /><category term="Scripts" /><category term="obtener nombre" /><category term="Ip" /><category term="Intrusos" /><category term="Iteradores" /><category term="Administración de sistemas operativos" /><category term="Arquitecturas distribuidas" /><category term="Hello world" /><category term="Iptables" /><category term="programacion" /><category term="Ordenados por tamaño" /><category term="Tamaño carpetas" /><category term="Fail2Ban" /><category term="django" /><category term="backup base de datos" /><category term="Versión" /><category term="Virtual Box" /><category term="Cliente-Servidor" /><category term="terminal" /><category term="Grub2" /><category term="Imagenes" /><category term="Linux" /><category term="Cheat sheets" /><category term="referencias" /><category term="memoria de grado" /><category term="Ubuntu" /><category term="Bash" /><category term="framework" /><category term="MBR" /><title>Sobre programación y otras yerbas</title><subtitle type="html">mi blog sobre programación e informática...</subtitle><link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" href="http://programmingbernie.blogspot.com/feeds/posts/default" /><link rel="alternate" type="text/html" href="http://programmingbernie.blogspot.com/" /><author><name>Bernardo</name><uri>http://www.blogger.com/profile/07711448632757778361</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><generator version="7.00" uri="http://www.blogger.com">Blogger</generator><openSearch:totalResults>23</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/atom+xml" href="http://feeds.feedburner.com/SobreProgramacinYOtrasYerbas" /><feedburner:info uri="sobreprogramacinyotrasyerbas" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><entry gd:etag="W/&quot;DEMHR3Y-fyp7ImA9Wx9WEUU.&quot;"><id>tag:blogger.com,1999:blog-418342519666901547.post-2108038507453909587</id><published>2011-01-16T05:57:00.000-08:00</published><updated>2011-01-16T06:00:36.857-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-01-16T06:00:36.857-08:00</app:edited><title>FacePad - Una buena extensión para bajar tus fotos de Facebook</title><content type="html">Si queremos bajar las fotos de facebook en las que estamos etiquetados (asi como algún album en particular) Firefox tiene una extensión (a partir de la Versión 3) para poder hacerlo. Se llama "FacePad". Y simplemente hay que hacer click derecho sobre el album que queremos descargar (o eventualmente en el título "Todas mis fotos") y dar "Download with FacePad".&lt;br /&gt;Simple y útil.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/418342519666901547-2108038507453909587?l=programmingbernie.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/JJP76NgZcTtTS87PDf9ND5kHEUk/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/JJP76NgZcTtTS87PDf9ND5kHEUk/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/JJP76NgZcTtTS87PDf9ND5kHEUk/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/JJP76NgZcTtTS87PDf9ND5kHEUk/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/SobreProgramacinYOtrasYerbas/~4/efbb4OcXxYA" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://programmingbernie.blogspot.com/feeds/2108038507453909587/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://programmingbernie.blogspot.com/2011/01/facepad-una-buena-extension-para-bajar.html#comment-form" title="2 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/418342519666901547/posts/default/2108038507453909587?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/418342519666901547/posts/default/2108038507453909587?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/SobreProgramacinYOtrasYerbas/~3/efbb4OcXxYA/facepad-una-buena-extension-para-bajar.html" title="FacePad - Una buena extensión para bajar tus fotos de Facebook" /><author><name>Bernardo</name><uri>http://www.blogger.com/profile/07711448632757778361</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>2</thr:total><feedburner:origLink>http://programmingbernie.blogspot.com/2011/01/facepad-una-buena-extension-para-bajar.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DEcNRXY-fip7ImA9WxFXFk8.&quot;"><id>tag:blogger.com,1999:blog-418342519666901547.post-5921200826349525562</id><published>2010-05-23T07:45:00.000-07:00</published><updated>2010-05-23T07:48:14.856-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-05-23T07:48:14.856-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Print screen" /><category scheme="http://www.blogger.com/atom/ns#" term="Windows" /><category scheme="http://www.blogger.com/atom/ns#" term="Imagenes" /><title>Print screen de la pantalla activa</title><content type="html">Una bobada monumental!! Pero no se por qué nunca recuerdo como era la combinación de teclas. Y así, cada vez que tengo que sacar un screenshot en Windows y no tengo ganas de andar recortando la pantalla que quiero, escribo en google: "printscreen active window"... y siempre arroja la misma respuesta... ALT + PRT.SCREEN.&lt;br /&gt;Saludos!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/418342519666901547-5921200826349525562?l=programmingbernie.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/BV55ypcHOEtpQAp_Za-G5Ak6_ZM/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/BV55ypcHOEtpQAp_Za-G5Ak6_ZM/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/BV55ypcHOEtpQAp_Za-G5Ak6_ZM/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/BV55ypcHOEtpQAp_Za-G5Ak6_ZM/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/SobreProgramacinYOtrasYerbas/~4/VPg6gfDlpQs" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://programmingbernie.blogspot.com/feeds/5921200826349525562/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://programmingbernie.blogspot.com/2010/05/print-screen-de-la-pantalla-activa.html#comment-form" title="2 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/418342519666901547/posts/default/5921200826349525562?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/418342519666901547/posts/default/5921200826349525562?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/SobreProgramacinYOtrasYerbas/~3/VPg6gfDlpQs/print-screen-de-la-pantalla-activa.html" title="Print screen de la pantalla activa" /><author><name>Bernardo</name><uri>http://www.blogger.com/profile/07711448632757778361</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>2</thr:total><feedburner:origLink>http://programmingbernie.blogspot.com/2010/05/print-screen-de-la-pantalla-activa.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkMMQ3c8eSp7ImA9WxFQF0k.&quot;"><id>tag:blogger.com,1999:blog-418342519666901547.post-1510154178557836055</id><published>2010-05-13T03:59:00.001-07:00</published><updated>2010-05-13T04:01:22.971-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-05-13T04:01:22.971-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="django" /><category scheme="http://www.blogger.com/atom/ns#" term="framework" /><category scheme="http://www.blogger.com/atom/ns#" term="programacion" /><category scheme="http://www.blogger.com/atom/ns#" term="web" /><category scheme="http://www.blogger.com/atom/ns#" term="Python" /><title>Django cheat sheet</title><content type="html">&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_4IldzylY7aA/S-vbvvkoQoI/AAAAAAAAABk/mdMYRjxGF7g/s1600/django095-cheat-sheet.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 256px;" src="http://4.bp.blogspot.com/_4IldzylY7aA/S-vbvvkoQoI/AAAAAAAAABk/mdMYRjxGF7g/s320/django095-cheat-sheet.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5470707785642033794" /&gt;&lt;/a&gt;&lt;br /&gt;Esta es una muy buena referencia para quienes trabajan con Django. &lt;br /&gt;&lt;br /&gt;Saludos!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/418342519666901547-1510154178557836055?l=programmingbernie.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/5XBC736ziPREq_WvgqouQDYVZsU/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/5XBC736ziPREq_WvgqouQDYVZsU/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/5XBC736ziPREq_WvgqouQDYVZsU/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/5XBC736ziPREq_WvgqouQDYVZsU/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/SobreProgramacinYOtrasYerbas/~4/d4ZWlIy9t0E" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://programmingbernie.blogspot.com/feeds/1510154178557836055/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://programmingbernie.blogspot.com/2010/05/django-data-sheet.html#comment-form" title="1 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/418342519666901547/posts/default/1510154178557836055?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/418342519666901547/posts/default/1510154178557836055?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/SobreProgramacinYOtrasYerbas/~3/d4ZWlIy9t0E/django-data-sheet.html" title="Django cheat sheet" /><author><name>Bernardo</name><uri>http://www.blogger.com/profile/07711448632757778361</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/_4IldzylY7aA/S-vbvvkoQoI/AAAAAAAAABk/mdMYRjxGF7g/s72-c/django095-cheat-sheet.png" height="72" width="72" /><thr:total>1</thr:total><feedburner:origLink>http://programmingbernie.blogspot.com/2010/05/django-data-sheet.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0EGQns-eCp7ImA9WxFbGEs.&quot;"><id>tag:blogger.com,1999:blog-418342519666901547.post-1371959237778404207</id><published>2010-04-26T11:21:00.000-07:00</published><updated>2010-07-11T10:33:43.550-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-07-11T10:33:43.550-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="VM" /><category scheme="http://www.blogger.com/atom/ns#" term="Linux" /><category scheme="http://www.blogger.com/atom/ns#" term="Windows" /><category scheme="http://www.blogger.com/atom/ns#" term="Compartir" /><category scheme="http://www.blogger.com/atom/ns#" term="Virtual Box" /><category scheme="http://www.blogger.com/atom/ns#" term="Ubuntu" /><title>Compartiendo carpetas en Virtual Box</title><content type="html">Para compartir carpetas entre el file system del sistema operativo que usamos (en mi caso Windows Seven) y el sistema que corre en nuestra maquina virtual (Ubuntu 9.10):&lt;br /&gt;mkdir /media/compartida&lt;br /&gt;sudo mount -t vboxsf compartida  /media/compartida&lt;br /&gt;&lt;br /&gt;Donde "compartida" es el nombre que le pusimos al recurso compartido.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/418342519666901547-1371959237778404207?l=programmingbernie.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/ZfvQ0_hcWfr9qseVCNWSkPuBp8A/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/ZfvQ0_hcWfr9qseVCNWSkPuBp8A/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/ZfvQ0_hcWfr9qseVCNWSkPuBp8A/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/ZfvQ0_hcWfr9qseVCNWSkPuBp8A/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/SobreProgramacinYOtrasYerbas/~4/6MoOz4R18j0" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://programmingbernie.blogspot.com/feeds/1371959237778404207/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://programmingbernie.blogspot.com/2010/04/compartiendo-carpetas-en-virtual-box.html#comment-form" title="0 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/418342519666901547/posts/default/1371959237778404207?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/418342519666901547/posts/default/1371959237778404207?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/SobreProgramacinYOtrasYerbas/~3/6MoOz4R18j0/compartiendo-carpetas-en-virtual-box.html" title="Compartiendo carpetas en Virtual Box" /><author><name>Bernardo</name><uri>http://www.blogger.com/profile/07711448632757778361</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://programmingbernie.blogspot.com/2010/04/compartiendo-carpetas-en-virtual-box.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DEAEQXw_eip7ImA9WxFRE0o.&quot;"><id>tag:blogger.com,1999:blog-418342519666901547.post-6380927404397336522</id><published>2010-04-11T07:27:00.000-07:00</published><updated>2010-04-27T06:58:20.242-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-04-27T06:58:20.242-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="manejo de archivos" /><category scheme="http://www.blogger.com/atom/ns#" term="Python" /><title>Leyendo y guardando archivos en Python</title><content type="html">Leer un archivo en python es algo muy complicado... casi tanto como este código:&lt;br /&gt;&lt;br /&gt;&lt;pre class="brush: python"&gt;&lt;br /&gt;'''&lt;br /&gt;Created on 11/04/2010&lt;br /&gt;&lt;br /&gt;@author: Bernardo&lt;br /&gt;@title: Leyendo un archivo csv con dos campos&lt;br /&gt;'''&lt;br /&gt;nombre_archivo = "prueba.csv"&lt;br /&gt;f = open(nombre_archivo,'r')&lt;br /&gt;for linea in f.readlines():&lt;br /&gt;    linea_parseada = linea.split(';')&lt;br /&gt;    print 'Campo 1: %s' %linea_parseada[0]&lt;br /&gt;    print 'Campo 2: %s' %linea_parseada[1]&lt;br /&gt;f.close()&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Guardando un archivo... esto es un poco mas complicado&lt;br /&gt;&lt;br /&gt;&lt;pre class="brush: python"&gt;&lt;br /&gt;'''&lt;br /&gt;Created on 11/04/2010&lt;br /&gt;&lt;br /&gt;@author: Bernardo&lt;br /&gt;@title: Grabando un archivo&lt;br /&gt;'''&lt;br /&gt;nombre_archivo = "salida.txt"&lt;br /&gt;output = open(nombre_archivo,'w')&lt;br /&gt;output.write("Lo que tenga que grabar.")&lt;br /&gt;output.close()&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Y finalmente... &lt;br /&gt;&lt;pre class="brush: python"&gt;&lt;br /&gt;'''&lt;br /&gt;Created on 11/04/2010&lt;br /&gt;&lt;br /&gt;@author: Bernardo&lt;br /&gt;@title: BernieLogV0.000001&lt;br /&gt;'''&lt;br /&gt;def log_error(message):&lt;br /&gt;    error_log = open("Errores.log",'a')&lt;br /&gt;    error_log.write(message)&lt;br /&gt;    error_log.close()&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Es casi infitamente mas sencillo que en Java o C#. No hay que hacer trucos con ningún BufferReader, ni con ningún StreamReader o StreamWriter.&lt;br /&gt;&lt;br /&gt;Saludos!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/418342519666901547-6380927404397336522?l=programmingbernie.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/IDUmR_vpnjpQkk_Z8590jF8x1Ms/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/IDUmR_vpnjpQkk_Z8590jF8x1Ms/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/IDUmR_vpnjpQkk_Z8590jF8x1Ms/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/IDUmR_vpnjpQkk_Z8590jF8x1Ms/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/SobreProgramacinYOtrasYerbas/~4/PMHrfl8CcRg" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://programmingbernie.blogspot.com/feeds/6380927404397336522/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://programmingbernie.blogspot.com/2010/04/leyedo-y-guardando-archivos-en-python.html#comment-form" title="0 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/418342519666901547/posts/default/6380927404397336522?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/418342519666901547/posts/default/6380927404397336522?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/SobreProgramacinYOtrasYerbas/~3/PMHrfl8CcRg/leyedo-y-guardando-archivos-en-python.html" title="Leyendo y guardando archivos en Python" /><author><name>Bernardo</name><uri>http://www.blogger.com/profile/07711448632757778361</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://programmingbernie.blogspot.com/2010/04/leyedo-y-guardando-archivos-en-python.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D04MR3o_eyp7ImA9WxFTGUQ.&quot;"><id>tag:blogger.com,1999:blog-418342519666901547.post-3532058106002329997</id><published>2010-04-11T07:16:00.000-07:00</published><updated>2010-04-11T07:26:26.443-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-04-11T07:26:26.443-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="restore" /><category scheme="http://www.blogger.com/atom/ns#" term="Base de datos" /><category scheme="http://www.blogger.com/atom/ns#" term="Pg_dump" /><category scheme="http://www.blogger.com/atom/ns#" term="respaldo" /><category scheme="http://www.blogger.com/atom/ns#" term="backup base de datos" /><category scheme="http://www.blogger.com/atom/ns#" term="Postgresql" /><category scheme="http://www.blogger.com/atom/ns#" term="Postgres" /><title>Backupeando una base postgres</title><content type="html">A veces Postgres puede ser bastante molesto. Sumado a que la configuración de acceso al mismo (el bendito archivo pg_hba.conf) el sistema de respaldos no siempre es tan intuitivo para el usuario. Quiero decir, utilizando GUIS, como ser el pgadminIII, etc el respaldo de las bases de datos no siempre es trivial. Muchas veces genera errores, conflictos, etc.&lt;br /&gt;De manera que la mejor manera de hacer respaldos de una base de datos postgres a mi criterio es dejar de lados los guis, y utilizar la consola de la siguiente manera:&lt;br /&gt;&lt;br /&gt;RESPALDO&lt;br /&gt;Logueo como el usuario que quiere hacer el respaldo&lt;br /&gt;su - postgres&lt;br /&gt;&lt;br /&gt;pg_dump nombre_base_de_datos &gt; archivo.dmp&lt;br /&gt;&lt;br /&gt;* Es necesario muchas veces tener en cuenta que si nos queremos llevar el  respaldo para otro lado el archivo se encuentra en /var/lib/psql&lt;br /&gt;&lt;br /&gt;LEVANTAR RESPALDO&lt;br /&gt;Logueo como el usuario&lt;br /&gt;su - postgres&lt;br /&gt;&lt;br /&gt;psql -d nombre_base_de_datos -f archivo_respaldo.dmp&lt;br /&gt;&lt;br /&gt;Espero sea de utilidad!&lt;br /&gt;&lt;br /&gt;Cabe destacar que tanto psql como pg_dump tienen argumentos que pueden investigarse para darle mas flexibilidad a la función, pueden verlos como "man pg_dump".&lt;br /&gt;&lt;br /&gt;Saludos,&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/418342519666901547-3532058106002329997?l=programmingbernie.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/w4VdX8I_4eqWeSice7_LJMpT_-A/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/w4VdX8I_4eqWeSice7_LJMpT_-A/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/w4VdX8I_4eqWeSice7_LJMpT_-A/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/w4VdX8I_4eqWeSice7_LJMpT_-A/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/SobreProgramacinYOtrasYerbas/~4/eKPsQXhhJk8" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://programmingbernie.blogspot.com/feeds/3532058106002329997/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://programmingbernie.blogspot.com/2010/04/backupeando-una-base-postgres.html#comment-form" title="0 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/418342519666901547/posts/default/3532058106002329997?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/418342519666901547/posts/default/3532058106002329997?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/SobreProgramacinYOtrasYerbas/~3/eKPsQXhhJk8/backupeando-una-base-postgres.html" title="Backupeando una base postgres" /><author><name>Bernardo</name><uri>http://www.blogger.com/profile/07711448632757778361</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://programmingbernie.blogspot.com/2010/04/backupeando-una-base-postgres.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0QDSHk_fyp7ImA9WxFTGUQ.&quot;"><id>tag:blogger.com,1999:blog-418342519666901547.post-3824885853177172736</id><published>2010-04-11T07:10:00.001-07:00</published><updated>2010-04-11T07:16:19.747-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-04-11T07:16:19.747-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="refman" /><category scheme="http://www.blogger.com/atom/ns#" term="referencias" /><category scheme="http://www.blogger.com/atom/ns#" term="Reference manager" /><category scheme="http://www.blogger.com/atom/ns#" term="reference manager 10" /><category scheme="http://www.blogger.com/atom/ns#" term="memoria de grado" /><title>Agregando reference manager a Microsoft Word</title><content type="html">A veces suele ser útil tener algun manejador de referencias de los libros, papers, artículos que se leen para luego hacer referencia a ellos. Reference manager es un programa que permite hacerlo. Una de sus funcionalidades mas importantes, es el "acople" que brinda con Microsoft Word, lo que brinda la posibilidad de cuando se quiere hacer algun tipo de referencia a algún artículo se pueda hacer de manera directa.&lt;br /&gt;&lt;br /&gt;Para ello:&lt;br /&gt;1. Utilizando Microsoft Word 2007 vamos a "opciones de word"&lt;br /&gt;2. Avanzadas&lt;br /&gt;3. Ubicaciones de archivos, y allí nos copiamos la ruta de Startup de Word. Luego cerramos Word.&lt;br /&gt;4. Vamos al directorio de instalación de Reference manager&lt;br /&gt;5. Copiamos los archivos &lt;span style="font-family:Verdana, Arial, Helvetica, sans-serif;font-size:85%;"&gt;RM10Cwyw.dot ; RM10Cwyw.wll (dentro de la carpeta CWYW); al directorio de startup de word.&lt;br /&gt;Y Listo! Se agrega una solapa "Complementos" al menu de Word, que permite la inserción de referencias utilizando bases de datos del refman.&lt;br /&gt;&lt;br /&gt;Saludos!&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/418342519666901547-3824885853177172736?l=programmingbernie.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/gXdHzPwnePi3fSQg6B6RQXqUfiE/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/gXdHzPwnePi3fSQg6B6RQXqUfiE/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/gXdHzPwnePi3fSQg6B6RQXqUfiE/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/gXdHzPwnePi3fSQg6B6RQXqUfiE/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/SobreProgramacinYOtrasYerbas/~4/dv4iBdcwkjk" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://programmingbernie.blogspot.com/feeds/3824885853177172736/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://programmingbernie.blogspot.com/2010/04/agregando-reference-manager-microsoft.html#comment-form" title="3 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/418342519666901547/posts/default/3824885853177172736?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/418342519666901547/posts/default/3824885853177172736?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/SobreProgramacinYOtrasYerbas/~3/dv4iBdcwkjk/agregando-reference-manager-microsoft.html" title="Agregando reference manager a Microsoft Word" /><author><name>Bernardo</name><uri>http://www.blogger.com/profile/07711448632757778361</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>3</thr:total><feedburner:origLink>http://programmingbernie.blogspot.com/2010/04/agregando-reference-manager-microsoft.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0QNQH06fSp7ImA9WxFTGUQ.&quot;"><id>tag:blogger.com,1999:blog-418342519666901547.post-8440809550420869844</id><published>2010-04-08T09:44:00.000-07:00</published><updated>2010-04-11T07:16:31.315-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-04-11T07:16:31.315-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Linux" /><category scheme="http://www.blogger.com/atom/ns#" term="Libros" /><category scheme="http://www.blogger.com/atom/ns#" term="terminal" /><category scheme="http://www.blogger.com/atom/ns#" term="Shell" /><category scheme="http://www.blogger.com/atom/ns#" term="console" /><category scheme="http://www.blogger.com/atom/ns#" term="Bash" /><title>Buen libro de linea de comandos de Linux</title><content type="html">En general soy mas amante del "man command" que de libros que hablen de shells y esas cosas. Pero este esta muy bueno, verdaderamente.&lt;br /&gt;Ahi va,&lt;br /&gt;&lt;br /&gt;saludos&lt;br /&gt;&lt;br /&gt;http://linuxcommand.org/tlcl.php&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/418342519666901547-8440809550420869844?l=programmingbernie.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/Ckn2veCQvA_FDFFitxaySY-PZLU/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Ckn2veCQvA_FDFFitxaySY-PZLU/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/Ckn2veCQvA_FDFFitxaySY-PZLU/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Ckn2veCQvA_FDFFitxaySY-PZLU/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/SobreProgramacinYOtrasYerbas/~4/vqqC7ldg3zc" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://programmingbernie.blogspot.com/feeds/8440809550420869844/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://programmingbernie.blogspot.com/2010/04/buen-libro-de-linea-de-comandos-de.html#comment-form" title="0 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/418342519666901547/posts/default/8440809550420869844?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/418342519666901547/posts/default/8440809550420869844?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/SobreProgramacinYOtrasYerbas/~3/vqqC7ldg3zc/buen-libro-de-linea-de-comandos-de.html" title="Buen libro de linea de comandos de Linux" /><author><name>Bernardo</name><uri>http://www.blogger.com/profile/07711448632757778361</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://programmingbernie.blogspot.com/2010/04/buen-libro-de-linea-de-comandos-de.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkUFRHg9cSp7ImA9WxBVEks.&quot;"><id>tag:blogger.com,1999:blog-418342519666901547.post-1719758070416358000</id><published>2010-02-15T13:04:00.000-08:00</published><updated>2010-02-15T13:10:15.669-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-02-15T13:10:15.669-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Python" /><category scheme="http://www.blogger.com/atom/ns#" term="Iteradores" /><title>Iteradores en python</title><content type="html">Una de las cosas interesantes que tiene python es la construcción que permite hacer de iteradores. Desconozco si java lo permite hacer.&lt;br /&gt;Aquí va la implementación:&lt;br /&gt;&lt;br /&gt;&lt;pre class="brush: shell"&gt;&lt;br /&gt;"Created on 15/05/2010&lt;br /&gt;@author: Bernardo&lt;br /&gt;"&lt;br /&gt;def millon():&lt;br /&gt;    i=0&lt;br /&gt;    while i &lt; 1000000:&lt;br /&gt;        yield i&lt;br /&gt;        i+=1&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Para llamarlo se hace de la siguiente manera:&lt;br /&gt;&lt;br /&gt;&lt;pre class="brush: shell"&gt;&lt;br /&gt;f = millon()&lt;br /&gt;print f.next(), f.next()&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;De esa manera se ahorra construir una lista de un millon de posiciones, reservar espacio, etc, etc.  Se van devolviendo los valores en la medida que se necesitan.&lt;br /&gt;Puede usarse:&lt;br /&gt;&lt;pre class="brush: shell"&gt;&lt;br /&gt;print dir(f)&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;De esa manera se ven todas las operaciones asociadas a f.&lt;br /&gt;&lt;br /&gt;Saludos!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/418342519666901547-1719758070416358000?l=programmingbernie.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/31TO06-y79xJlLhntBcmkDZ5lmY/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/31TO06-y79xJlLhntBcmkDZ5lmY/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/31TO06-y79xJlLhntBcmkDZ5lmY/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/31TO06-y79xJlLhntBcmkDZ5lmY/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/SobreProgramacinYOtrasYerbas/~4/Ag7_E7mYpyw" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://programmingbernie.blogspot.com/feeds/1719758070416358000/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://programmingbernie.blogspot.com/2010/02/iteradores-en-python.html#comment-form" title="0 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/418342519666901547/posts/default/1719758070416358000?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/418342519666901547/posts/default/1719758070416358000?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/SobreProgramacinYOtrasYerbas/~3/Ag7_E7mYpyw/iteradores-en-python.html" title="Iteradores en python" /><author><name>Bernardo</name><uri>http://www.blogger.com/profile/07711448632757778361</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://programmingbernie.blogspot.com/2010/02/iteradores-en-python.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUANRn8zeip7ImA9WxBVEks.&quot;"><id>tag:blogger.com,1999:blog-418342519666901547.post-8902466679825081014</id><published>2010-02-15T07:07:00.000-08:00</published><updated>2010-02-15T13:03:17.182-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-02-15T13:03:17.182-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Scripts" /><category scheme="http://www.blogger.com/atom/ns#" term="Linux" /><category scheme="http://www.blogger.com/atom/ns#" term="Bash" /><title>Comprobar existencia de un archivo en Bash</title><content type="html">A veces suele ser útil en los scripts comprobar si un archivo existe, para evitar acciones o tomar otras.&lt;br /&gt;El siguiente código comprueba la existencia de un archivo y muestra en pantalla el correspondiente estado.&lt;br /&gt;&lt;br /&gt;&lt;pre class="brush: shell"&gt;&lt;br /&gt;#!/bin/bash&lt;br /&gt;FILE=/home/bernie/Escritorio/pp&lt;br /&gt;&lt;br /&gt;if [ -e $FILE ]; then&lt;br /&gt;echo El fichero existe&lt;br /&gt;else&lt;br /&gt;echo El fichero no existe&lt;br /&gt;fi&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Saludos!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/418342519666901547-8902466679825081014?l=programmingbernie.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/zvjNBz3xxQohSIos_-bXbvsCfsI/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/zvjNBz3xxQohSIos_-bXbvsCfsI/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/zvjNBz3xxQohSIos_-bXbvsCfsI/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/zvjNBz3xxQohSIos_-bXbvsCfsI/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/SobreProgramacinYOtrasYerbas/~4/vOMAKL-EnWU" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://programmingbernie.blogspot.com/feeds/8902466679825081014/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://programmingbernie.blogspot.com/2010/02/comprobar-existencia-de-un-archivo-en.html#comment-form" title="0 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/418342519666901547/posts/default/8902466679825081014?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/418342519666901547/posts/default/8902466679825081014?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/SobreProgramacinYOtrasYerbas/~3/vOMAKL-EnWU/comprobar-existencia-de-un-archivo-en.html" title="Comprobar existencia de un archivo en Bash" /><author><name>Bernardo</name><uri>http://www.blogger.com/profile/07711448632757778361</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://programmingbernie.blogspot.com/2010/02/comprobar-existencia-de-un-archivo-en.html</feedburner:origLink></entry><entry gd:etag="W/&quot;Ak4GRXszcCp7ImA9WxBQGEk.&quot;"><id>tag:blogger.com,1999:blog-418342519666901547.post-4805805481443714763</id><published>2010-01-18T13:06:00.000-08:00</published><updated>2010-01-18T13:08:44.588-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-01-18T13:08:44.588-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Administración de sistemas operativos" /><category scheme="http://www.blogger.com/atom/ns#" term="Cheat sheets" /><category scheme="http://www.blogger.com/atom/ns#" term="Linux" /><title>Lo mejor de Cheat-Sheets para Linux</title><content type="html">Leo Linux* screw y encuentro esta recopilación de Cheat-Sheets para Linux. Muy buenas por cierto. &lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.linuxscrew.com/2009/12/21/best-of-linux-cheat-sheets/"&gt;LinuxScrew Cheat Sheets&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/418342519666901547-4805805481443714763?l=programmingbernie.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/23n8DMaNhFPUYeDhmD2ehlJgGVs/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/23n8DMaNhFPUYeDhmD2ehlJgGVs/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/23n8DMaNhFPUYeDhmD2ehlJgGVs/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/23n8DMaNhFPUYeDhmD2ehlJgGVs/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/SobreProgramacinYOtrasYerbas/~4/bux-Gn-4J5g" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://programmingbernie.blogspot.com/feeds/4805805481443714763/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://programmingbernie.blogspot.com/2010/01/lo-mejor-de-cheat-sheets-para-linux.html#comment-form" title="0 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/418342519666901547/posts/default/4805805481443714763?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/418342519666901547/posts/default/4805805481443714763?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/SobreProgramacinYOtrasYerbas/~3/bux-Gn-4J5g/lo-mejor-de-cheat-sheets-para-linux.html" title="Lo mejor de Cheat-Sheets para Linux" /><author><name>Bernardo</name><uri>http://www.blogger.com/profile/07711448632757778361</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://programmingbernie.blogspot.com/2010/01/lo-mejor-de-cheat-sheets-para-linux.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUEARX45fyp7ImA9WxBQGEk.&quot;"><id>tag:blogger.com,1999:blog-418342519666901547.post-3970769327910383432</id><published>2010-01-18T12:43:00.000-08:00</published><updated>2010-01-18T12:47:24.027-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-01-18T12:47:24.027-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="DNS" /><category scheme="http://www.blogger.com/atom/ns#" term="LAN" /><category scheme="http://www.blogger.com/atom/ns#" term="Ip" /><category scheme="http://www.blogger.com/atom/ns#" term="red de area local" /><category scheme="http://www.blogger.com/atom/ns#" term="obtener nombre" /><title>Obtener nombre de la pc a partir de su IP</title><content type="html">Comunmente en una red de área local, suele ser útil saber a quién corresponde cada pc. Muchas veces existen IP's reservadas para determinada tarea o lo que sea. &lt;br /&gt;Con el comando: nbtstat -a NUMEROIP, se nos devuelve el nombre de la pc con la IP correspondiente. De esta manera puede ser útil ahorrarnos unos cuantos broadcast de e-mails diciendo "Quién está usando tal o cual IP?".&lt;br /&gt;&lt;br /&gt;Saludos!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/418342519666901547-3970769327910383432?l=programmingbernie.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/CGA2-km5MSL8a2IavDxkOXczmqw/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/CGA2-km5MSL8a2IavDxkOXczmqw/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/CGA2-km5MSL8a2IavDxkOXczmqw/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/CGA2-km5MSL8a2IavDxkOXczmqw/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/SobreProgramacinYOtrasYerbas/~4/3s5DP0rFad8" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://programmingbernie.blogspot.com/feeds/3970769327910383432/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://programmingbernie.blogspot.com/2010/01/obtener-nombre-de-la-pc-partir-de-su-ip.html#comment-form" title="0 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/418342519666901547/posts/default/3970769327910383432?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/418342519666901547/posts/default/3970769327910383432?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/SobreProgramacinYOtrasYerbas/~3/3s5DP0rFad8/obtener-nombre-de-la-pc-partir-de-su-ip.html" title="Obtener nombre de la pc a partir de su IP" /><author><name>Bernardo</name><uri>http://www.blogger.com/profile/07711448632757778361</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://programmingbernie.blogspot.com/2010/01/obtener-nombre-de-la-pc-partir-de-su-ip.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DEUFRnY8eCp7ImA9WxBVEkg.&quot;"><id>tag:blogger.com,1999:blog-418342519666901547.post-6086610081981081394</id><published>2010-01-01T12:18:00.000-08:00</published><updated>2010-02-15T09:50:17.870-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-02-15T09:50:17.870-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Tamaño carpetas" /><category scheme="http://www.blogger.com/atom/ns#" term="Linux" /><category scheme="http://www.blogger.com/atom/ns#" term="Ordenados por tamaño" /><title>Listar las carpetas por tamaño en linux</title><content type="html">Suele ser útil obtener los tamaños de los archivos de una pc. Muchas veces es necesario borrar ciertos archivos por falta de espacio, o saber cuál es el que ocupa mas, etc. El simple ls (o todos sus sabores ls -al, etc) no devuelve mas que el listado de las carpetas o archivos que se encuentran en un directorio. Para obtener la lista de carpetas ordenadas por tamaño, puede ser útil correr la siguiente línea:&lt;br /&gt;&lt;pre class="brush: shell"&gt;&lt;br /&gt;for f in * ; do if [ -d "$f" ]; then du -sh "$f" ; fi done | sort -n&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Espero que sea de utilidad!&lt;br /&gt;Saludos!!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/418342519666901547-6086610081981081394?l=programmingbernie.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/E5N_zf1k6YUQaqLjTg5KtBJlPA4/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/E5N_zf1k6YUQaqLjTg5KtBJlPA4/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/E5N_zf1k6YUQaqLjTg5KtBJlPA4/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/E5N_zf1k6YUQaqLjTg5KtBJlPA4/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/SobreProgramacinYOtrasYerbas/~4/AQ5OblTPaUI" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://programmingbernie.blogspot.com/feeds/6086610081981081394/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://programmingbernie.blogspot.com/2010/01/listar-las-carpetas-por-tamano-en-linux.html#comment-form" title="2 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/418342519666901547/posts/default/6086610081981081394?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/418342519666901547/posts/default/6086610081981081394?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/SobreProgramacinYOtrasYerbas/~3/AQ5OblTPaUI/listar-las-carpetas-por-tamano-en-linux.html" title="Listar las carpetas por tamaño en linux" /><author><name>Bernardo</name><uri>http://www.blogger.com/profile/07711448632757778361</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>2</thr:total><feedburner:origLink>http://programmingbernie.blogspot.com/2010/01/listar-las-carpetas-por-tamano-en-linux.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUcMRH87eSp7ImA9WxBRE0o.&quot;"><id>tag:blogger.com,1999:blog-418342519666901547.post-5215294615555588091</id><published>2010-01-01T12:14:00.000-08:00</published><updated>2010-01-01T12:18:05.101-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-01-01T12:18:05.101-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Versión" /><category scheme="http://www.blogger.com/atom/ns#" term="Distro" /><category scheme="http://www.blogger.com/atom/ns#" term="Linux" /><title>Datos del Linux que corre en la PC</title><content type="html">Es un buen comando que sirve para obtener la versión del sistema operativo (linux) que está corriendo en una pc. &lt;br /&gt;&lt;br /&gt;lsb_release -a&lt;br /&gt;&lt;br /&gt;La info que se devuelve es algo así como: &lt;br /&gt;&lt;br /&gt;LSB Version:    :core-3.0-ia32:core-3.0-noarch:graphics-3.0-ia32:graphics-3.0-noarch&lt;br /&gt;Distributor ID: RedHatEnterpriseAS&lt;br /&gt;Description:    Red Hat Enterprise Linux AS release 4 (Nahant Update 4)&lt;br /&gt;Release:        4&lt;br /&gt;Codename:       NahantUpdate4&lt;br /&gt;&lt;br /&gt;A veces suele ser importante (y util) saber que sistema operativo estamos corriendo. &lt;br /&gt;Saludos!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/418342519666901547-5215294615555588091?l=programmingbernie.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/h0etYG_R3eRyFby-yVqsp-ZMixI/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/h0etYG_R3eRyFby-yVqsp-ZMixI/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/h0etYG_R3eRyFby-yVqsp-ZMixI/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/h0etYG_R3eRyFby-yVqsp-ZMixI/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/SobreProgramacinYOtrasYerbas/~4/J3fGKFVh3Us" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://programmingbernie.blogspot.com/feeds/5215294615555588091/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://programmingbernie.blogspot.com/2010/01/datos-del-linux-que-corre-en-la-pc.html#comment-form" title="0 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/418342519666901547/posts/default/5215294615555588091?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/418342519666901547/posts/default/5215294615555588091?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/SobreProgramacinYOtrasYerbas/~3/J3fGKFVh3Us/datos-del-linux-que-corre-en-la-pc.html" title="Datos del Linux que corre en la PC" /><author><name>Bernardo</name><uri>http://www.blogger.com/profile/07711448632757778361</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://programmingbernie.blogspot.com/2010/01/datos-del-linux-que-corre-en-la-pc.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0IGRn49fip7ImA9WxBVEkg.&quot;"><id>tag:blogger.com,1999:blog-418342519666901547.post-6316295166677275534</id><published>2009-12-05T20:19:00.000-08:00</published><updated>2010-02-15T09:38:47.066-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-02-15T09:38:47.066-08:00</app:edited><title>Python Cliente-Servidor</title><content type="html">Va la programación de un cliente y un servidor en python. Son básicos, pero salieron en cuestión de 40 minutos y sirve para ver como funciona!&lt;br /&gt;Aqui va entonces el cliente:&lt;br /&gt;&lt;br /&gt;&lt;pre class="brush: python"&gt;&lt;br /&gt;'''&lt;br /&gt;Created on Oct 1, 2009&lt;br /&gt;&lt;br /&gt;@author: Bernardo&lt;br /&gt;'''&lt;br /&gt;import socket&lt;br /&gt;&lt;br /&gt;s = socket.socket()&lt;br /&gt;s.connect(("localhost",9999))&lt;br /&gt;while True:&lt;br /&gt;  mensaje = raw_input("&gt; ")&lt;br /&gt;  print "Cliente mandando mensaje..."&lt;br /&gt;  s.send(mensaje)&lt;br /&gt;  if (mensaje == "Quit"):&lt;br /&gt;      break&lt;br /&gt;print "Adios! (Cliente)"&lt;br /&gt;s.close()&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;... y aquí va el servidor:&lt;br /&gt;&lt;pre class="brush: python"&gt;&lt;br /&gt;'''&lt;br /&gt;Created on Oct 1, 2009&lt;br /&gt;&lt;br /&gt;@author: Bernardo&lt;br /&gt;'''&lt;br /&gt;import socket&lt;br /&gt;&lt;br /&gt;s = socket.socket()&lt;br /&gt;s.bind(("localhost",9999))&lt;br /&gt;s.listen(10) # Acepta hasta 10 conexiones entrantes.&lt;br /&gt;sc, address = s.accept()&lt;br /&gt;print address&lt;br /&gt;while True:&lt;br /&gt;  recibido = sc.recv(1024)&lt;br /&gt;  if (recibido=="Quit"):&lt;br /&gt;      break&lt;br /&gt;  print "Mensaje recibido: ", recibido&lt;br /&gt;  print "Enviando respuesta..."&lt;br /&gt;  sc.send(recibido)&lt;br /&gt;&lt;br /&gt;print "Adios! (Servidor)"&lt;br /&gt;&lt;br /&gt;sc.close()&lt;br /&gt;s.close()&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Saludos!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/418342519666901547-6316295166677275534?l=programmingbernie.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/f3aQyB-ZRfimMuuhwgno6rGWxuM/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/f3aQyB-ZRfimMuuhwgno6rGWxuM/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/f3aQyB-ZRfimMuuhwgno6rGWxuM/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/f3aQyB-ZRfimMuuhwgno6rGWxuM/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/SobreProgramacinYOtrasYerbas/~4/5wfLhHBX5K4" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://programmingbernie.blogspot.com/feeds/6316295166677275534/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://programmingbernie.blogspot.com/2009/12/python-cliente-servidor.html#comment-form" title="4 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/418342519666901547/posts/default/6316295166677275534?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/418342519666901547/posts/default/6316295166677275534?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/SobreProgramacinYOtrasYerbas/~3/5wfLhHBX5K4/python-cliente-servidor.html" title="Python Cliente-Servidor" /><author><name>Bernardo</name><uri>http://www.blogger.com/profile/07711448632757778361</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>4</thr:total><feedburner:origLink>http://programmingbernie.blogspot.com/2009/12/python-cliente-servidor.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkUGQHY_fip7ImA9WxBUFEo.&quot;"><id>tag:blogger.com,1999:blog-418342519666901547.post-2946297433702939554</id><published>2009-12-05T19:38:00.000-08:00</published><updated>2010-03-01T13:17:01.846-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-03-01T13:17:01.846-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Java; Recursos;Propiedades" /><title>Cargar propiedades desde un archivo en Java</title><content type="html">Suele ser útil (e imprescindible) el hecho de cargar información desde archivos de configuración. Aquí va código Java que lo realiza.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre name="code" class="brush:java"&gt;&lt;br /&gt;public class ResourcesManager {&lt;br /&gt;&lt;br /&gt; private Properties properties;&lt;br /&gt;&lt;br /&gt; public ResourcesManager(){&lt;br /&gt;     this.properties = new Properties();&lt;br /&gt;     this.loadResources();&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; private void loadResources(){&lt;br /&gt;     try {&lt;br /&gt;         this.properties.load(ResourcesManager.class.getResourceAsStream("/Archivo.properties"));&lt;br /&gt;     } catch (IOException e) {&lt;br /&gt;         e.printStackTrace();&lt;br /&gt;     }&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; public String getResource(String resourceName){&lt;br /&gt;     return this.properties.getProperty(resourceName);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Espero que sea util. Saludos,&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/418342519666901547-2946297433702939554?l=programmingbernie.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/paww27ZivTiBnluJcmMcHAog6w4/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/paww27ZivTiBnluJcmMcHAog6w4/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/paww27ZivTiBnluJcmMcHAog6w4/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/paww27ZivTiBnluJcmMcHAog6w4/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/SobreProgramacinYOtrasYerbas/~4/0d6JabcPNCk" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://programmingbernie.blogspot.com/feeds/2946297433702939554/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://programmingbernie.blogspot.com/2009/12/cargar-propiedades-desde-un-archivo-en.html#comment-form" title="0 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/418342519666901547/posts/default/2946297433702939554?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/418342519666901547/posts/default/2946297433702939554?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/SobreProgramacinYOtrasYerbas/~3/0d6JabcPNCk/cargar-propiedades-desde-un-archivo-en.html" title="Cargar propiedades desde un archivo en Java" /><author><name>Bernardo</name><uri>http://www.blogger.com/profile/07711448632757778361</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://programmingbernie.blogspot.com/2009/12/cargar-propiedades-desde-un-archivo-en.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUUAQX89fCp7ImA9WxNaFE8.&quot;"><id>tag:blogger.com,1999:blog-418342519666901547.post-2615200618208103026</id><published>2009-11-28T07:46:00.001-08:00</published><updated>2009-11-28T07:47:20.164-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-11-28T07:47:20.164-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Cliente-Servidor" /><category scheme="http://www.blogger.com/atom/ns#" term="Base de datos" /><category scheme="http://www.blogger.com/atom/ns#" term="SGBD" /><category scheme="http://www.blogger.com/atom/ns#" term="SQL" /><category scheme="http://www.blogger.com/atom/ns#" term="Arquitecturas distribuidas" /><title>Arquitectura de base de datos</title><content type="html">Existen dos grandes tipos de arquitecturas en lo que refiere a un sistema de gestión de base de datos. Por un lado tenemos las arquitecturas centralizadas y por el otro las arquitecturas cliente-servidor. Este es un compendio con las características de cada una de ellas.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Arquitecturas centralizadas&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;El avance de las arquitecturas de sistemas de computadoras supuso también una revisión de otro tipo de arquitecturas, entre ellos la de los sistemas de gestión de base de datos (de ahora en más y por razones obvias SGBD o DBMS).&lt;br /&gt;&lt;br /&gt;Las primeras arquitecturas eran llamadas Arquitecturas centralizadas y contaban con un macrocomputador o mainframe que proporcionaban el procesamiento principal a todas las funciones del sistema. Esto incluía programas de aplicación, interfaces de usuario, sumado a toda la funcionalidad de un SGBD.&lt;br /&gt;&lt;br /&gt;Los usuarios accedían al sistema mediante terminales, que solamente mostraban en pantalla información. Se llamaban terminales tontas, dado que su única función era la de visualización. Todo el procesamiento se hacía de manera remota en el mainframe, que cuando concluía de procesar y se proponía desplegarle algo al usuario, debía comunicarse con ese terminal enviándole la información y los controles de pantalla. Dicha comunicación entre el computador central y los terminales “tontos” se hacía mediante algún tipo de red de computadores.&lt;br /&gt;&lt;br /&gt;Los precios de Hardware habían descendido notoriamente, surgen las PC’s y la mayoría de los usuarios cambia los terminales que tenían por los nuevos PC’s dado que eran relativamente baratos, y generalmente se rompían poco. En un primer momento, la arquitectura de los sistemas no varió, se seguía usando un SGBD centralizado con PC’s remotas que se conectaban a una determinada máquina que era la encargada de realizar todas las funciones del SGBD.&lt;br /&gt;&lt;br /&gt;Poco a poco los SGBD fueron evolucionando y la arquitectura centralizada comenzaba a ser una limitante en cuanto al procesamiento que el usuario exigía, lo cual llevó a las arquitecturas SGBD Cliente-Servidor.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Arquitecturas cliente-servidor&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Las arquitecturas cliente-servidor se diseñan para manejar los nuevos entornos de cómputo, en los que hay muchos PC’s y estaciones de trabajo, servidores de ficheros, etc interconectados por medio de una red. Existen factores ajenos al desarrollo propio de la arquitectura, que son inherentes a la evolución de la tecnología en sí misma y que potencian el crecimiento de las arquitecturas cliente-servidor, como por ejemplo el bajo costo del hardware y las nuevas PC’s, o el desarrollo importante que tuvieron las redes de computadoras en ese último tiempo. Dado que las tareas se dividen en una arquitectura cliente-servidor, los requerimientos de los servidores bajan notoriamente respecto a lo que eran los mainframes.&lt;br /&gt;&lt;br /&gt;La idea principal es definir servidores especializados con funciones específicas. Es decir, conectar un cierto número de estaciones de trabajo o PC’s como clientes de un servidor de ficheros que se encarga de mantener los ficheros de la máquina cliente. Por ejemplo supongamos un servidor de impresoras, que posee un conjunto n de impresoras que debe gestionar. Pone a disposición de los clientes la impresora y cuando llega una petición de impresión el servidor es quién la recibe y la despacha a la impresora que considere más adecuada. Esto es extensible a todo tipo de servidores especializados dado que los recursos del servidor están a disposición de los clientes.&lt;br /&gt;&lt;br /&gt;Por otra parte el cliente, le proporciona al usuario las interfaces adecuadas para poder usar los servidores, así como también la potencia para el procesamiento para las aplicaciones locales.&lt;br /&gt;&lt;br /&gt;La misma idea puede también aplicarse al software, donde puede almacenarse un determinado software en una máquina y ponerlo a disposición de los clientes.&lt;br /&gt;&lt;br /&gt;La arquitectura cliente-servidor tiene una estructura con varios PC’s y menos mainframes, todos interconectados entre sí mediante algún tipo de red de computadoras. El cliente, provee capacidades de interfaz de usuario y procesamiento local. Si alguno de los clientes solicita cierta funcionalidad adicional, entonces la máquina cliente le conecta con un servidor que proporcione dicha funcionalidad. Un servidor es una máquina que puede proporcionar servicios ya sea de impresión, de ficheros, de acceso a una base de datos, etc.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Arquitectura cliente-servidor en un SGBD&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;En un comienzo las bases de datos relacionales eran arquitecturas centralizadas. Con el paso del tiempo poco a poco esa arquitectura fue transformándose en una cliente-servidor. Los primeros aspectos que pasaron del lado del cliente fueron los programas de aplicación y la interfaz de usuario. De esta manera, y debido a que SQL estableció un lenguaje estándar que dividía lógicamente el cliente del servidor, las funcionalidades de transacción y consulta permanecen del lado del servidor, a menudo llamado servidor SQL o de consulta.&lt;br /&gt;&lt;br /&gt;En una arquitectura de este tipo, los programas de aplicación y la interfaz de usuario pueden ejecutarse en el cliente. Cuando un usuario solicita acceso al SGBD, se establece una conexión con el servidor mediante el protocolo ODBC (Open Data Base Connectivity) el cuál proporciona interfaces API para que las aplicaciones del lado del cliente puedan llamar al SGBD y comunicarse correctamente. La mayoría de los proveedores de SGBD proporcionan drivers ODBC. Java tiene otro estándar llamado JDBC, que cumple una función similar.&lt;br /&gt;&lt;br /&gt;En los sistemas de base de datos orientados a objetos se dividen los módulos del SGBD entre cliente y servidor. De esta manera el servidor se encarga de los módulos de manejo de almacenamiento de los datos en páginas de disco, recuperación, control de concurrencia, movimiento de páginas a disco y funcionalidades similares. Por otra parte, el cliente cuenta con funciones que corresponden a los módulos de gestión de interfaz de usuario, funciones de diccionario de datos, interacción entre el compilador de un determinado lenguaje y el SGBD.&lt;br /&gt;&lt;br /&gt;Nota final:&lt;br /&gt;&lt;br /&gt;Si se quiere puede investigarse más sobre lo referente a las arquitecturas cliente – servidor existen más tipos que requieren conceptos adicionales como por ejemplo las arquitecturas C-S de tres niveles, o incluso las base de datos distribuídas.&lt;br /&gt;&lt;br /&gt;*Fundamentos de sistemas de base de datos, 3a edición, R. Elmasri – S. Navathe&lt;br /&gt;&lt;br /&gt;*Sistemas de base de datos, 5a edición, Volúmen 1, C.J.Date&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/418342519666901547-2615200618208103026?l=programmingbernie.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/_EVPmdwhBKqDfo4519Dnh7osVnI/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/_EVPmdwhBKqDfo4519Dnh7osVnI/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/_EVPmdwhBKqDfo4519Dnh7osVnI/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/_EVPmdwhBKqDfo4519Dnh7osVnI/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/SobreProgramacinYOtrasYerbas/~4/xyKTEqh9-wI" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://programmingbernie.blogspot.com/feeds/2615200618208103026/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://programmingbernie.blogspot.com/2009/11/arquitectura-de-base-de-datos.html#comment-form" title="0 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/418342519666901547/posts/default/2615200618208103026?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/418342519666901547/posts/default/2615200618208103026?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/SobreProgramacinYOtrasYerbas/~3/xyKTEqh9-wI/arquitectura-de-base-de-datos.html" title="Arquitectura de base de datos" /><author><name>Bernardo</name><uri>http://www.blogger.com/profile/07711448632757778361</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://programmingbernie.blogspot.com/2009/11/arquitectura-de-base-de-datos.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUYDRXg6eip7ImA9WxNaFE8.&quot;"><id>tag:blogger.com,1999:blog-418342519666901547.post-4460266818621442299</id><published>2009-11-28T07:43:00.000-08:00</published><updated>2009-11-28T07:46:14.612-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-11-28T07:46:14.612-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Base de datos" /><category scheme="http://www.blogger.com/atom/ns#" term="SGBD" /><category scheme="http://www.blogger.com/atom/ns#" term="SQL" /><title>Catálogo de un sistema de base de datos</title><content type="html">Acá va un material teórico que escribí hace un tiempo en el viejo blog. &lt;br /&gt;Es un breve resumen que puede servir para la facultad en materias como Base de datos. &lt;br /&gt;Espero les sirva!&lt;br /&gt;&lt;br /&gt;El catálogo de un sistema de base de datos no es más que una base de datos en sí misma a veces llamada metabase. Los contenidos de dicha base de datos son llamados metadatos. La función principal del catálogo es almacenar los esquemas de las bases de datos que el sistema mantiene. Mantiene una descripción de todos los niveles (véase arquitectura de tres esquemas o niveles) tanto del esquema interno como del externo y el conceptual.&lt;br /&gt;&lt;br /&gt;Esencialmente se guardan objetos que puedan resultar de interés para el sistema, como por ejemplo tablas, vistas, índices, usuarios, planes de aplicación, privilegios de acceso, etc. La información contenida en el catálogo es indispensable para que el sistema se comporte de manera adecuada. El conocer los índices que existen por ejemplo, facilitaría o influiría sin dudas en la planificación de la estrategia en una determinada consulta. El subsistema de autorización, chequeará por ejemplo que cada operación que intente realizar el usuario esté permitida. De manera que también vemos que el catálogo sirve para chequear la validez de una sentencia y mantener la integridad y la coherencia de los datos.&lt;br /&gt;&lt;br /&gt;Las consultas al catálogo pueden realizarse con las mismas sentencias que se consulta cualquier base de datos o tabla. Sin embargo las actualizaciones al catálogo (INSERT, DELETE, UPDATE) no son posibles. Pensemos un segundo que pasaría si permitiéramos aplicar estas sentencias en el catálogo. Podríamos por ejemplo, borrar una línea de la tabla syscolumns (tabla que contiene una fila por cada columna en alguna tabla del sistema). Si esto sucediera estaríamos eliminando una columna del catálogo y para el sistema esa columna no existiría más. De manera que cualquier intento por recuperar datos de esa columna fracasaría.&lt;br /&gt;&lt;br /&gt;En contraposición a estas sentencias existen otras proposiciones de definición de datos, como son CREATE TABLE, CREATE INDEX, DROP y ALTER. Cuando hacemos un CREATE TABLE, solamente se hace un ingreso en la tabla systables(tabla que contiene todas las tablas del sistema) del catálogo, sino que también se dan ingresos en la tabla syscolumns a todas las columnas que contiene la nueva tabla a crear.&lt;br /&gt;&lt;br /&gt;De manera similar el DROP equivale al DELETE y el ALTER al UPDATE.&lt;br /&gt;&lt;br /&gt;*Fundamentos de sistemas de base de datos, 3a edición, R. Elmasri – S. Navathe&lt;br /&gt;&lt;br /&gt;*Sistemas de base de datos, 5a edición, Volúmen 1, C.J.Date&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/418342519666901547-4460266818621442299?l=programmingbernie.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/WtLCl-aYIOnzOjSILYjlCddDV7w/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/WtLCl-aYIOnzOjSILYjlCddDV7w/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/WtLCl-aYIOnzOjSILYjlCddDV7w/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/WtLCl-aYIOnzOjSILYjlCddDV7w/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/SobreProgramacinYOtrasYerbas/~4/aPdBitFr8ww" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://programmingbernie.blogspot.com/feeds/4460266818621442299/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://programmingbernie.blogspot.com/2009/11/catalogo-de-un-sistema-de-base-de-datos.html#comment-form" title="2 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/418342519666901547/posts/default/4460266818621442299?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/418342519666901547/posts/default/4460266818621442299?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/SobreProgramacinYOtrasYerbas/~3/aPdBitFr8ww/catalogo-de-un-sistema-de-base-de-datos.html" title="Catálogo de un sistema de base de datos" /><author><name>Bernardo</name><uri>http://www.blogger.com/profile/07711448632757778361</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>2</thr:total><feedburner:origLink>http://programmingbernie.blogspot.com/2009/11/catalogo-de-un-sistema-de-base-de-datos.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0YGR3s8eSp7ImA9WxNaFE8.&quot;"><id>tag:blogger.com,1999:blog-418342519666901547.post-5865353491108633577</id><published>2009-11-28T06:13:00.000-08:00</published><updated>2009-11-28T07:12:06.571-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-11-28T07:12:06.571-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Firewall" /><category scheme="http://www.blogger.com/atom/ns#" term="Linux" /><category scheme="http://www.blogger.com/atom/ns#" term="Fail2Ban" /><category scheme="http://www.blogger.com/atom/ns#" term="Bloqueos" /><category scheme="http://www.blogger.com/atom/ns#" term="Iptables" /><category scheme="http://www.blogger.com/atom/ns#" term="Intrusos" /><title>Fail2Ban</title><content type="html">Como trabajo de la materia Linux, elegimos el estudio y configuración de algún software de la vuelta. Además si éste no tenía artículo en &lt;a href="http://es.wikipedia.org/wiki/Wikipedia:Portada"&gt;Wikipedia español&lt;/a&gt; debíamos hacerlo. Así fue como dimos con &lt;a href="http://es.wikipedia.org/wiki/Fail2ban"&gt;fail2ban&lt;/a&gt;, un framework escrito en &lt;a href="http://python.org/"&gt;Python&lt;/a&gt;, que básicamente se encarga de escanear logs. El usuario puede especificarle expresiones regulares, y cuando el programa encuentra dichas expresiones regulares en los logs, toma una determinada acción. La acción puede tratarse de "bloquear" una IP, un puerto, un protocolo, etc. Puede ser extremadamente útil para evitar ataques de fuerza bruta por ejemplo. En el proyecto puntualmente levantamos un servidor web (lighttpd) y cuando un usuario se logueaba mal mas de 2 veces, bloqueaba la IP desde la cuál se estaba tratando de loguear por 60 segundos. &lt;br /&gt;Es todo ajustable, de manera que si queremos bloquear una IP por más tiempo, basta con cambiar 60 por la cantidad de segundos que querramos y listo!&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;INSTALACIÓN&lt;/span&gt;&lt;br /&gt;Simplemente sudo apt-get install fail2ban&lt;br /&gt;(Conviene tener instalado Python 2.5 previamente, sino sudo apt-get install python2.5)&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;CONFIGURACIÓN&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Para la configuración se tienen básicamente 2 archivos importantes. &lt;br /&gt;/etc/fail2ban/jail.conf &lt;br /&gt;/etc/fail2ban/filter.d/archivoConReglas.conf&lt;br /&gt;&lt;br /&gt;El primer archivo es el que contiene todas las configuraciones referentes al bloqueo que se desea realizar. Se indica que puertos se han de bloquear, el archivo conteniendo las expresiones regulares que se desean buscar, el nombre del log que se desean encajar las expresiones regulares, el tiempo de bloqueo, etc. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_4IldzylY7aA/SxE7VQxsNjI/AAAAAAAAABM/N5ypyxaOGRw/s1600/Foto+Fail2ban.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 200px;" src="http://1.bp.blogspot.com/_4IldzylY7aA/SxE7VQxsNjI/AAAAAAAAABM/N5ypyxaOGRw/s320/Foto+Fail2ban.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5409169863915353650" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;port = puertos que bloqueara o aplicará la penalización&lt;br /&gt;protocol = protocolos que bloqueara o aplicará la penalización&lt;br /&gt;filter = indica el nombre del archivo que contendrá las expresiones regulares&lt;br /&gt;logpath = path al archivo de log que se quiere escanear&lt;br /&gt;maxretries = máxima cantidad de reintentos de fallo&lt;br /&gt;También existen otros parámetros como bantime que especifica la cantidad de tiempo en segundos que se deseará bloquear la pc atacante. &lt;br /&gt;&lt;br /&gt;El segundo es un archivo que se crea con las expresiones regulares a buscar. En nuestro caso buscaríamos expresiones que fueran del tipo:&lt;br /&gt;(http_auth.c.872).*:&lt;HOST&gt; (Donde &lt;HOST&gt; es un alias que contiene IP, protocolo, puerto, etc). El http_auth.c.872 es el código de error para simbolizar que hubo un intento fallido de logueo.&lt;br /&gt;&lt;br /&gt;Es un software sumamente interesante, que acepta trabajar con la mayoría de los servidores o programas importantes (Apache,QMail, Lighttpd, SSH, entre otros). &lt;br /&gt;Invito a probarlo, puede llegar a ser de gran utilidad. &lt;br /&gt;Saludos!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/418342519666901547-5865353491108633577?l=programmingbernie.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/2RO4BNW9i2mlVkQsFiXIqPtSoto/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/2RO4BNW9i2mlVkQsFiXIqPtSoto/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/2RO4BNW9i2mlVkQsFiXIqPtSoto/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/2RO4BNW9i2mlVkQsFiXIqPtSoto/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/SobreProgramacinYOtrasYerbas/~4/D7G3meCmZKs" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://programmingbernie.blogspot.com/feeds/5865353491108633577/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://programmingbernie.blogspot.com/2009/11/fail2ban.html#comment-form" title="0 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/418342519666901547/posts/default/5865353491108633577?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/418342519666901547/posts/default/5865353491108633577?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/SobreProgramacinYOtrasYerbas/~3/D7G3meCmZKs/fail2ban.html" title="Fail2Ban" /><author><name>Bernardo</name><uri>http://www.blogger.com/profile/07711448632757778361</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/_4IldzylY7aA/SxE7VQxsNjI/AAAAAAAAABM/N5ypyxaOGRw/s72-c/Foto+Fail2ban.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://programmingbernie.blogspot.com/2009/11/fail2ban.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DE8HRXg8eyp7ImA9WxNaFEw.&quot;"><id>tag:blogger.com,1999:blog-418342519666901547.post-2736815744562908251</id><published>2009-11-28T05:47:00.000-08:00</published><updated>2009-11-28T06:00:34.673-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-11-28T06:00:34.673-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="MBR" /><category scheme="http://www.blogger.com/atom/ns#" term="Linux" /><category scheme="http://www.blogger.com/atom/ns#" term="Windows" /><category scheme="http://www.blogger.com/atom/ns#" term="Grub" /><category scheme="http://www.blogger.com/atom/ns#" term="Grub2" /><category scheme="http://www.blogger.com/atom/ns#" term="Ubuntu" /><title>Restaurando Grub segunda vuelta</title><content type="html">Cambia, todo cambia... Hace unos meses tuve este problema y lo solucioné como está escrito en el post Restaurando Grub. Sin embargo ahora me sucedió de nuevo, y ya no está el Ubuntu 9.04 ni el Windows 7 Release Candidate. Ahora los actores son Ubuntu 9.10 (que trae el nuevo gestor Grub 2) y el Windows 7 definitivo.&lt;br /&gt;Grub 2 es bastante diferente que Grub en varios aspectos, archivos de configuración diferentes, nombre de variables también diferentes, etc.&lt;br /&gt;Para restarurar grub 2 y que vuelvan a aparecer Windows 7 con Ubuntu 9.10 Karmic Koala, hay que seguir los siguientes pasos:&lt;br /&gt;&lt;br /&gt;1. Bootear con un live cd de Ubuntu que se tenga a mano&lt;br /&gt;&lt;br /&gt;2. Escribir en consola "sudo fdisk -l" (para listar la tabla de particiones y saber en qué partición tenemos instalado Ubuntu 9.10)&lt;br /&gt;&lt;br /&gt;3. sudo mount /dev/sda1 /mnt (dnd sda1 es la partición en la cuál tenemos Ubuntu 9.10, en mi caso sda1)&lt;br /&gt;&lt;br /&gt;4. sudo mount --bind /dev /mnt/dev (con este comando montamos el resto de los dispositivos)&lt;br /&gt;&lt;br /&gt;5. sudo chroot /mnt (ejecutamos chroot para poder acceder como root a nuestro sistema de archivos)&lt;br /&gt;&lt;br /&gt;6. grub-install --recheck /dev/sda (con este comando cargamos Grub en el MBR del sda, disco indicado. OJO! DEBE SER EL DISCO Y NO EL NÚMERO DE PARTICIÓN, SI PONES EL NÚMERO DE PARTICIÓN PROBABLEMENTE PIERDAS WINDOWS).&lt;br /&gt;&lt;br /&gt;7. Reiniciar y cuando arranca el Ubuntu 9.10 de nuestra pc hacemos:&lt;br /&gt;sudo update-grub2&lt;br /&gt;&lt;br /&gt;Espero les sea de utilidad. Son pocos pasos y rápidos y pronto tenemos nuestro Ubuntu/Windows andando de nuevo.&lt;br /&gt;Saludos!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/418342519666901547-2736815744562908251?l=programmingbernie.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/vDFRrhMjV0Zt6XnedV4F5Cv2FBg/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/vDFRrhMjV0Zt6XnedV4F5Cv2FBg/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/vDFRrhMjV0Zt6XnedV4F5Cv2FBg/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/vDFRrhMjV0Zt6XnedV4F5Cv2FBg/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/SobreProgramacinYOtrasYerbas/~4/JmbTkccVbog" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://programmingbernie.blogspot.com/feeds/2736815744562908251/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://programmingbernie.blogspot.com/2009/11/restaurando-grub-segunda-vuelta.html#comment-form" title="0 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/418342519666901547/posts/default/2736815744562908251?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/418342519666901547/posts/default/2736815744562908251?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/SobreProgramacinYOtrasYerbas/~3/JmbTkccVbog/restaurando-grub-segunda-vuelta.html" title="Restaurando Grub segunda vuelta" /><author><name>Bernardo</name><uri>http://www.blogger.com/profile/07711448632757778361</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://programmingbernie.blogspot.com/2009/11/restaurando-grub-segunda-vuelta.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUINQ344fSp7ImA9WxBRE0o.&quot;"><id>tag:blogger.com,1999:blog-418342519666901547.post-2579329686098442632</id><published>2009-11-12T09:26:00.000-08:00</published><updated>2010-01-01T12:26:32.035-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-01-01T12:26:32.035-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Scripts" /><category scheme="http://www.blogger.com/atom/ns#" term="Linux" /><category scheme="http://www.blogger.com/atom/ns#" term="Ubuntu" /><category scheme="http://www.blogger.com/atom/ns#" term="Bash" /><title>Cambiando usuario en un script</title><content type="html">Los otros días se nos presentó un problema que parecía trivial pero que demandó un poco mas de tiempo que el esperado. El mismo consistía en levantar una serie de aplicaciones al inicio sin inconvenientes de que las mismas fueran levantadas como root, a excepción de una. De manera que lo que se nos ocurrió fue desde el arranque hacer un script que levantara todas las aplicaciones con root y al final cambiarse de usuario con el famoso su y ejecutar los comandos con el nuevo usuario. Sin embargo, esto no funcionó. :-( Por el contrario, y luego de un ratito explorando el man y algunos foros, encontramos lo siguiente: &lt;br /&gt;&lt;br /&gt;#!/bin/bash&lt;br /&gt;&lt;br /&gt;su - usuario1 -c "touch /home/usuario1/ejemplo.ok"&lt;br /&gt;&lt;br /&gt;exit 0&lt;br /&gt;&lt;br /&gt;Ejecuta un comando con el usuario especificado. Sin misterios :-D. &lt;br /&gt;Gracias a Agustin con el que remamos esto!!!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/418342519666901547-2579329686098442632?l=programmingbernie.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/knKb-a_9WC1KRLhE22Q7SgOwRSs/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/knKb-a_9WC1KRLhE22Q7SgOwRSs/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/knKb-a_9WC1KRLhE22Q7SgOwRSs/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/knKb-a_9WC1KRLhE22Q7SgOwRSs/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/SobreProgramacinYOtrasYerbas/~4/42XWRhk3r10" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://programmingbernie.blogspot.com/feeds/2579329686098442632/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://programmingbernie.blogspot.com/2009/11/los-otros-dias-se-nos-presento-un.html#comment-form" title="0 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/418342519666901547/posts/default/2579329686098442632?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/418342519666901547/posts/default/2579329686098442632?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/SobreProgramacinYOtrasYerbas/~3/42XWRhk3r10/los-otros-dias-se-nos-presento-un.html" title="Cambiando usuario en un script" /><author><name>Bernardo</name><uri>http://www.blogger.com/profile/07711448632757778361</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://programmingbernie.blogspot.com/2009/11/los-otros-dias-se-nos-presento-un.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CU8BSHk8eCp7ImA9WxNUEEU.&quot;"><id>tag:blogger.com,1999:blog-418342519666901547.post-2795720379959413393</id><published>2009-10-31T18:43:00.001-07:00</published><updated>2009-11-01T05:57:39.770-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-11-01T05:57:39.770-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="MBR" /><category scheme="http://www.blogger.com/atom/ns#" term="Linux" /><category scheme="http://www.blogger.com/atom/ns#" term="Windows" /><category scheme="http://www.blogger.com/atom/ns#" term="Grub" /><category scheme="http://www.blogger.com/atom/ns#" term="Ubuntu" /><title>Restaurando grub</title><content type="html">Tenía en mi pc dos particiones en las cuales en cada una tenía instalado Windows Vista y Ubuntu 9.04. Dado que el vista no caminaba del todo bien, y ante la salida del Windows 7, decidí instalarlo y probarlo (y la verdad que está sustancialmente mejor que su antecesor). Sin embargo al instalarlo pasó por arriba al MBR y se hacía imposible el booteo de Ubuntu. Navegando un pocó encontré la solución al problema.&lt;br /&gt;1. Bootear con un live cd y montar la partición en la cual se encuentra Ubuntu.&lt;br /&gt;Escribir en consola:&lt;br /&gt;2. sudo grub&lt;br /&gt;3. root (HDX,Y) #Donde X es el número de disco e Y la partición.&lt;br /&gt;4. setup HDX&lt;br /&gt;5. quit&lt;br /&gt;&lt;br /&gt;(HDX,Y) hacen referencia al disco y partición, por ejemplo (HD0,1) es la segunda partición del primer disco (recuerden que las numeraciones comienzan en 0).&lt;br /&gt;Como nota si no saben en qué disco/partición se encuentra instalado Ubuntu pueden escribir en la consola del grub (luego de “sudo grub”) “find /boot/grub/stage1″.&lt;br /&gt;&lt;br /&gt;Espero que le sea te utilidad! Saludos!!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/418342519666901547-2795720379959413393?l=programmingbernie.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/xPuXyLN2X4hxw4Vy_-Ylyy29Flg/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/xPuXyLN2X4hxw4Vy_-Ylyy29Flg/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/xPuXyLN2X4hxw4Vy_-Ylyy29Flg/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/xPuXyLN2X4hxw4Vy_-Ylyy29Flg/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/SobreProgramacinYOtrasYerbas/~4/viTbVuhS9yo" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://programmingbernie.blogspot.com/feeds/2795720379959413393/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://programmingbernie.blogspot.com/2009/10/restaurando-grub.html#comment-form" title="0 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/418342519666901547/posts/default/2795720379959413393?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/418342519666901547/posts/default/2795720379959413393?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/SobreProgramacinYOtrasYerbas/~3/viTbVuhS9yo/restaurando-grub.html" title="Restaurando grub" /><author><name>Bernardo</name><uri>http://www.blogger.com/profile/07711448632757778361</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://programmingbernie.blogspot.com/2009/10/restaurando-grub.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkcAQHs8fSp7ImA9WxNUEEk.&quot;"><id>tag:blogger.com,1999:blog-418342519666901547.post-8232272773553985059</id><published>2009-10-31T18:21:00.000-07:00</published><updated>2009-10-31T19:54:01.575-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-10-31T19:54:01.575-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Hello world" /><title>Hola mundo!!!</title><content type="html">El primer post inaugurando el blog!&lt;br /&gt;Bienvienidos!&lt;br /&gt;Trataré de escribir sobre mis experiencias, vivencias, tecnologías, etc.&lt;br /&gt;Al principio copiaré un par de post de un viejo blog que tenía y que siguen vigentes hoy en día!&lt;br /&gt;Espero que les parezca tan divertido como a mi!&lt;br /&gt;Como buen informático el primero mensaje no puede ser diferente a un Hola mundo! Así comienza todo en nuestra vida cuando queremos aprender algo nuevo. Así empiezo este blog.&lt;br /&gt;Dejo un link de un concurso que se hizo hace unos años.&lt;br /&gt;&lt;br /&gt;http://wiki.cld.org.uy/index.php?title=Concurso_Hola_Mundo&lt;br /&gt;&lt;br /&gt;Nos leemos.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/418342519666901547-8232272773553985059?l=programmingbernie.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/HPb-nSIEglnqEEz8L9rp9qIGYZ8/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/HPb-nSIEglnqEEz8L9rp9qIGYZ8/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/HPb-nSIEglnqEEz8L9rp9qIGYZ8/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/HPb-nSIEglnqEEz8L9rp9qIGYZ8/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/SobreProgramacinYOtrasYerbas/~4/fNjVY9zi9f8" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://programmingbernie.blogspot.com/feeds/8232272773553985059/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://programmingbernie.blogspot.com/2009/10/hola-mundo.html#comment-form" title="0 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/418342519666901547/posts/default/8232272773553985059?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/418342519666901547/posts/default/8232272773553985059?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/SobreProgramacinYOtrasYerbas/~3/fNjVY9zi9f8/hola-mundo.html" title="Hola mundo!!!" /><author><name>Bernardo</name><uri>http://www.blogger.com/profile/07711448632757778361</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://programmingbernie.blogspot.com/2009/10/hola-mundo.html</feedburner:origLink></entry></feed>

