<?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;A0MMRHczcCp7ImA9WhdUFEU.&quot;"><id>tag:blogger.com,1999:blog-632987313637017278</id><updated>2011-10-01T10:18:05.988-07:00</updated><category term="Redes" /><category term="Software Libre" /><category term="Actividad Social" /><category term="Colaboracion" /><category term="OpenLaszlo" /><category term="GNU Linux" /><category term="Gulmore" /><category term="Nagios" /><category term="Java" /><category term="Noticias" /><category term="seguridad" /><category term="Desarrollo" /><title>.:: Martin Edmundo ::.</title><subtitle type="html">Mi Blog, para proyectos, noticias, software libre, rato de ocio y muchas cosas mas.</subtitle><link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" href="http://martin-edmundo.blogspot.com/feeds/posts/default" /><link rel="alternate" type="text/html" href="http://martin-edmundo.blogspot.com/" /><link rel="next" type="application/atom+xml" href="http://www.blogger.com/feeds/632987313637017278/posts/default?start-index=26&amp;max-results=25&amp;redirect=false&amp;v=2" /><author><name>Martin Edmundo</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="25" height="32" src="http://bp3.blogger.com/_a2J6n0XpUcc/SB6fHbvGM_I/AAAAAAAAAAc/HHzm3RxeEC0/S220/TNew.jpg" /></author><generator version="7.00" uri="http://www.blogger.com">Blogger</generator><openSearch:totalResults>57</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/MartinEdmundo" /><feedburner:info uri="martinedmundo" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><entry gd:etag="W/&quot;DkMGRH05eyp7ImA9WhZUEEs.&quot;"><id>tag:blogger.com,1999:blog-632987313637017278.post-3073893229759393912</id><published>2011-06-02T17:38:00.000-07:00</published><updated>2011-06-02T18:27:05.323-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-06-02T18:27:05.323-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Redes" /><category scheme="http://www.blogger.com/atom/ns#" term="Software Libre" /><category scheme="http://www.blogger.com/atom/ns#" term="Nagios" /><title>Construcción de Plugin Nagios/Centreon para inodos</title><content type="html">&lt;div style="text-align: justify;"&gt;En esta ocación quiero compartir con ustedes un plugin muy básico para revisar el estado de los inodos en un FileSystem remoto a nuestro servidor de monitorio Nagios vía SNMP.&lt;/div&gt;&lt;div&gt;&lt;img src="http://2.bp.blogspot.com/-YUD4MO3CLjE/Teg0IlZp-HI/AAAAAAAAAOI/LdVb-6gHx3Q/s320/Funcionamiento.png" style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 126px;" border="0" alt="" id="BLOGGER_PHOTO_ID_5613794257600641138" /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Para conseguir que el agente SNMP, nos pueda regresar información de los i-nodos de su sistema se requiere autorización, eso lo hacemos con el atributo "disk" y como parámetro se me envía cada uno de los FileSystem que deseamos monitorear. Esto seria agregando por ejemplo unas lineas al archivo snmpd.conf como las que siguen:&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;div style="text-align: justify;"&gt;&lt;i&gt;&lt;span class="Apple-style-span"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;i&gt;&lt;span class="Apple-style-span"&gt;disk /&lt;/span&gt;&lt;/i&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;i&gt;&lt;span class="Apple-style-span"&gt;disk /home&lt;/span&gt;&lt;/i&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;i&gt;&lt;span class="Apple-style-span"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Ya con este cambio solo queda reiniciar el servicio. Se puede verificar con el comando snmpwalk o el plugin que tenemos, desde el servidor de monitoreo o NMS.&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;code&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;&lt;div style="text-align: justify;"&gt;#!/bin/bash&lt;/div&gt;&lt;div style="text-align: justify;"&gt;#check_snmp_inodes.sh&lt;/div&gt;&lt;div style="text-align: justify;"&gt;# Argumentos:&lt;/div&gt;&lt;div style="text-align: justify;"&gt;# 1. Community&lt;/div&gt;&lt;div style="text-align: justify;"&gt;# 2. Version&lt;/div&gt;&lt;div style="text-align: justify;"&gt;# 3. IP Address&lt;/div&gt;&lt;div style="text-align: justify;"&gt;# 4. FS&lt;/div&gt;&lt;div style="text-align: justify;"&gt;# 5. warning&lt;/div&gt;&lt;div style="text-align: justify;"&gt;# 6. critical&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;if [ $# -eq  6 ]; then&lt;/div&gt;&lt;div style="text-align: justify;"&gt;        #Se localiza el indice del FS&lt;/div&gt;&lt;div style="text-align: justify;"&gt;        isExist=`snmpwalk  -c $1 -v $2 $3 dsktable | grep  -e  "$4$" | wc -l`&lt;/div&gt;&lt;div style="text-align: justify;"&gt;        &lt;/div&gt;&lt;div style="text-align: justify;"&gt;        if [ $isExist -eq 1 ]; then&lt;/div&gt;&lt;div style="text-align: justify;"&gt;                index=`snmpwalk  -c $1 -v $2 $3 dsktable | grep  -e  "$4$" | awk 'BEGIN{FS="."}{print $2}'  |  awk '{print $1}'`&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;                uso=`snmpwalk  -c $1 -v $2 $3 .1.3.6.1.4.1.2021.9.1.10.$index | awk '{print $4}'`&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;                valor=""&lt;/div&gt;&lt;div style="text-align: justify;"&gt;                #Menor que&lt;/div&gt;&lt;div style="text-align: justify;"&gt;                if [ $uso -lt $5 ]; then&lt;/div&gt;&lt;div style="text-align: justify;"&gt;                        echo "I-nodos OK $4 Esta usando $uso% de sus inodos | size=100 used=$uso"&lt;/div&gt;&lt;div style="text-align: justify;"&gt;                        exit 0&lt;/div&gt;&lt;div style="text-align: justify;"&gt;                else &lt;/div&gt;&lt;div style="text-align: justify;"&gt;                        if [ $uso -lt $6 ]; then&lt;/div&gt;&lt;div style="text-align: justify;"&gt;                                echo "I-nodos WARNING $4 Esta usando $uso% de sus inodos | size=100 used=$uso"&lt;/div&gt;&lt;div style="text-align: justify;"&gt;                                exit 1&lt;/div&gt;&lt;div style="text-align: justify;"&gt;                        else&lt;/div&gt;&lt;div style="text-align: justify;"&gt;                                echo "I-nodos CRITICAL $4 Esta usando $uso% de sus inodos | size=100 used=$uso"&lt;/div&gt;&lt;div style="text-align: justify;"&gt;                                exit 2&lt;/div&gt;&lt;div style="text-align: justify;"&gt;                        fi&lt;/div&gt;&lt;div style="text-align: justify;"&gt;                fi&lt;/div&gt;&lt;div style="text-align: justify;"&gt;                echo "I-nodos $valor: $4 Esta usando $uso% de sus inodos | size=100 used=$uso"&lt;/div&gt;&lt;div style="text-align: justify;"&gt;                exit 0&lt;/div&gt;&lt;div style="text-align: justify;"&gt;        else&lt;/div&gt;&lt;div style="text-align: justify;"&gt;                echo "No existe el FileSystem $4"&lt;/div&gt;&lt;div style="text-align: justify;"&gt;                exit 3&lt;/div&gt;&lt;div style="text-align: justify;"&gt;        fi&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;else&lt;/div&gt;&lt;div style="text-align: justify;"&gt;        echo "Error en el paso de parametros"&lt;/div&gt;&lt;div style="text-align: justify;"&gt;        exit 3&lt;/div&gt;&lt;div style="text-align: justify;"&gt;fi&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/632987313637017278-3073893229759393912?l=martin-edmundo.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/8A3vrq1iLxYLQvgpvseGjpAUEGU/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/8A3vrq1iLxYLQvgpvseGjpAUEGU/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/8A3vrq1iLxYLQvgpvseGjpAUEGU/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/8A3vrq1iLxYLQvgpvseGjpAUEGU/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/MartinEdmundo/~4/fo2tnTLNbfo" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://martin-edmundo.blogspot.com/feeds/3073893229759393912/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=632987313637017278&amp;postID=3073893229759393912" title="0 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/632987313637017278/posts/default/3073893229759393912?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/632987313637017278/posts/default/3073893229759393912?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/MartinEdmundo/~3/fo2tnTLNbfo/construccion-de-plugin-nagioscentreon.html" title="Construcción de Plugin Nagios/Centreon para inodos" /><author><name>Martin Edmundo</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="25" height="32" src="http://bp3.blogger.com/_a2J6n0XpUcc/SB6fHbvGM_I/AAAAAAAAAAc/HHzm3RxeEC0/S220/TNew.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/-YUD4MO3CLjE/Teg0IlZp-HI/AAAAAAAAAOI/LdVb-6gHx3Q/s72-c/Funcionamiento.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://martin-edmundo.blogspot.com/2011/06/construccion-de-plugin-nagioscentreon.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0MAR38yfyp7ImA9WhZUEEs.&quot;"><id>tag:blogger.com,1999:blog-632987313637017278.post-811789525976302264</id><published>2011-05-13T09:47:00.000-07:00</published><updated>2011-06-02T17:37:26.197-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-06-02T17:37:26.197-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Java" /><category scheme="http://www.blogger.com/atom/ns#" term="Desarrollo" /><title>Arbol de directorios con objeto Tree de java IceFaces.</title><content type="html">&lt;div style="text-align: justify;"&gt;Saludos, en esta ocación y de manera muy rapida tengo para ustedes un breve ejemplo de como llenar un objeto Tree en JavaIceFaces.&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;code&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;public class Page3 extends AbstractPageBean {&lt;/div&gt;&lt;div&gt;private static final String DIR_OPEN_ICON = "./xmlhttp/css/xp/css-images/tree_folder_open.gif";&lt;/div&gt;&lt;div&gt;private static final String DIR_CLOSE_ICON = "./xmlhttp/css/xp/css-images/tree_folder_close.gif";&lt;/div&gt;&lt;div&gt;private static final String DIR_LEAF_ICON = "./xmlhttp/css/xp/css-images/tree_document.gif";&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;private void get_tree(String dir, DefaultMutableTreeNode parent){&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" &gt;//Apertura del directorio&lt;/span&gt;&lt;/div&gt;&lt;div&gt;File a = new File(dir);&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" &gt;//Conseguimos un listado de los archivos y subdirectorios&lt;/span&gt;&lt;/div&gt;&lt;div&gt;String[] ficheros = a.list();&lt;/div&gt;&lt;div&gt;int i = 0;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" &gt;//Agregamos los nodos al arbol, por cada archivo encontrado&lt;/span&gt;&lt;/div&gt;&lt;div&gt;try{&lt;/div&gt;&lt;div&gt;while ( i &amp;lt; ficheros.length ){&lt;/div&gt;&lt;div&gt;File tmp = new File( a.getCanonicalPath() +"/"+ ficheros[i]);&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;DefaultMutableTreeNode branchNode = new DefaultMutableTreeNode();&lt;/div&gt;&lt;div&gt;IceUserObject branchObject = new IceUserObject(branchNode);&lt;/div&gt;&lt;div&gt;branchObject.setText( ficheros[i] );&lt;/div&gt;&lt;div&gt;branchObject.setBranchContractedIcon(DIR_CLOSE_ICON);&lt;/div&gt;&lt;div&gt;branchObject.setBranchExpandedIcon(DIR_OPEN_ICON);&lt;/div&gt;&lt;div&gt;branchObject.setLeafIcon(DIR_LEAF_ICON);&lt;/div&gt;&lt;div&gt;branchObject.setExpanded(false);&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" &gt;//Si el archivo es un directorio volvemos a invocar el metodo.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;if ( tmp.isDirectory() ){&lt;/div&gt;&lt;div&gt;branchObject.setLeaf( false );&lt;/div&gt;&lt;div&gt;this.get_tree( a.getCanonicalPath() +"/"+ ficheros[i] , branchNode);&lt;/div&gt;&lt;div&gt;}&lt;/div&gt;&lt;div&gt;else&lt;/div&gt;&lt;div&gt;branchObject.setLeaf( true );&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;branchNode.setUserObject(branchObject);&lt;/div&gt;&lt;div&gt;parent.add(branchNode);&lt;/div&gt;&lt;div&gt;i++;&lt;/div&gt;&lt;div&gt;}&lt;/div&gt;&lt;div&gt;}&lt;/div&gt;&lt;div&gt;catch (IOException e){&lt;/div&gt;&lt;div&gt;this.setLblCurrentDir("Error: " + e.getMessage());&lt;/div&gt;&lt;div&gt;}&lt;/div&gt;&lt;div&gt;}&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;private void lectura2(){&lt;/div&gt;&lt;div&gt;DefaultMutableTreeNode root = new DefaultMutableTreeNode();&lt;/div&gt;&lt;div&gt;IceUserObject itemx = new IceUserObject(root);&lt;/div&gt;&lt;div&gt;itemx.setText("Directorios");&lt;/div&gt;&lt;div&gt;itemx.setExpanded(true);&lt;/div&gt;&lt;div&gt;itemx.setLeaf(false);&lt;/div&gt;&lt;div&gt;itemx.setBranchContractedIcon(DIR_CLOSE_ICON);&lt;/div&gt;&lt;div&gt;itemx.setBranchExpandedIcon(DIR_OPEN_ICON);&lt;/div&gt;&lt;div&gt;itemx.setLeafIcon(DIR_LEAF_ICON);&lt;/div&gt;&lt;div&gt;root.setUserObject(itemx);&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" &gt;//Directorio a visualizar&lt;/span&gt;&lt;/div&gt;&lt;div&gt;this.get_tree("..", root);&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;DefaultTreeModel model = new DefaultTreeModel(root);&lt;/div&gt;&lt;div&gt;this.tree1Model.setModel(model);&lt;/div&gt;&lt;div&gt;}&lt;/div&gt;&lt;div&gt;}&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;div&gt;&lt;img src="http://1.bp.blogspot.com/-5S5ZHkkODEE/Tc1hJumbXuI/AAAAAAAAAOA/888LL4dh5Uk/s320/tree.png" style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 210px;" border="0" alt="" id="BLOGGER_PHOTO_ID_5606243930902060770" /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/632987313637017278-811789525976302264?l=martin-edmundo.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/QAbdYT291KrM5Uivl3CVdrdMLhQ/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/QAbdYT291KrM5Uivl3CVdrdMLhQ/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/QAbdYT291KrM5Uivl3CVdrdMLhQ/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/QAbdYT291KrM5Uivl3CVdrdMLhQ/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/MartinEdmundo/~4/lLx8HN71pmc" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://martin-edmundo.blogspot.com/feeds/811789525976302264/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=632987313637017278&amp;postID=811789525976302264" title="0 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/632987313637017278/posts/default/811789525976302264?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/632987313637017278/posts/default/811789525976302264?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/MartinEdmundo/~3/lLx8HN71pmc/arbol-de-directorios-con-objeto-tree-de.html" title="Arbol de directorios con objeto Tree de java IceFaces." /><author><name>Martin Edmundo</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="25" height="32" src="http://bp3.blogger.com/_a2J6n0XpUcc/SB6fHbvGM_I/AAAAAAAAAAc/HHzm3RxeEC0/S220/TNew.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/-5S5ZHkkODEE/Tc1hJumbXuI/AAAAAAAAAOA/888LL4dh5Uk/s72-c/tree.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://martin-edmundo.blogspot.com/2011/05/arbol-de-directorios-con-objeto-tree-de.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0YMRXo4eSp7ImA9WhZSFk4.&quot;"><id>tag:blogger.com,1999:blog-632987313637017278.post-8183786203651106940</id><published>2011-03-31T19:58:00.000-07:00</published><updated>2011-03-31T21:13:04.431-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-03-31T21:13:04.431-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="GNU Linux" /><category scheme="http://www.blogger.com/atom/ns#" term="Colaboracion" /><category scheme="http://www.blogger.com/atom/ns#" term="Software Libre" /><title>Sintesis: Exploring Linux Command-Line Tools</title><content type="html">&lt;a href="http://4.bp.blogspot.com/-iFkk-YvfwtY/TZVQwfSDBaI/AAAAAAAAAN4/12EE55WOiIw/s1600/g4996.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 295px;" src="http://4.bp.blogspot.com/-iFkk-YvfwtY/TZVQwfSDBaI/AAAAAAAAAN4/12EE55WOiIw/s320/g4996.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5590463306411476386" /&gt;&lt;/a&gt;&lt;div style="text-align: left;"&gt;Brevemente solo quiero presentar una sintesis del primer capitulo de la Guía &lt;i&gt;LPI Exploring Linux Command-Line Tools&lt;/i&gt;. Son algunos comandos para manupulación de archivos de texto.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;b&gt;cat:&lt;/b&gt;&lt;br /&gt;-E final de linea con $&lt;br /&gt;-n numero de linea (incluso lineas vacias)&lt;br /&gt;-b numero de linea&lt;br /&gt;&lt;br /&gt;&lt;b&gt;join: combina dos archivos por algun campo en común.&lt;/b&gt;&lt;br /&gt;join listing1.1.txt listing1.2.txt (defecto campo 1)&lt;br /&gt;join -1 3 -2 2 people.txt numbers.txt (archivo 1 campo 3)&lt;br /&gt;&lt;br /&gt;&lt;b&gt;paste: combina dos archivos (linea a linea).&lt;/b&gt;&lt;br /&gt;paste listing1.1.txt listing1.2.txt&lt;br /&gt;&lt;br /&gt;&lt;b&gt;expand: cambia los tabs a espacios en blanco&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;od: nuestra un archivo en formato octal&lt;/b&gt;&lt;br /&gt;od listing1.2.txt&lt;br /&gt;&lt;br /&gt;&lt;b&gt;sort: Ordena listados.&lt;/b&gt;&lt;br /&gt;-i Ignora si son mayusculas o munisculas.&lt;br /&gt;-r Orden invertido&lt;br /&gt;-k ¿por cual campo hacemos el ordenamiento?&lt;br /&gt;sort -k 3 listing1.1.txt&lt;br /&gt;&lt;br /&gt;&lt;b&gt;split: Divide un archivo en dos o mas archivos. Se le pasa el prefix.&lt;/b&gt;&lt;br /&gt;-b Los divide por tamaño en bytes&lt;br /&gt;-l Por lineas&lt;br /&gt;split -l 2 listing1.1.txt numbers&lt;br /&gt;&lt;br /&gt;&lt;b&gt;tac: concantena archivos pero con lineas en orden invertidos. Aplicando tac a cada archivo y despues concantena.&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;tr: Remplaza caracteres los del SET1 con el equivalente del SET2&lt;/b&gt;&lt;br /&gt;-t Trunca el SET1 al SET2&lt;br /&gt;-d Elimina los caracteres del SET1&lt;br /&gt;[:alnum:] (all numbers and letters)&lt;br /&gt;[:upper:] (all uppercase letters)&lt;br /&gt;[:lower:] (all lowercase letters)&lt;br /&gt;[:digit:] (all digits).&lt;br /&gt;tr BCJ bc &amp;lt; listing1.1.txt&lt;br /&gt;&lt;br /&gt;&lt;b&gt;unexpand: Convierte los multiples espacios a tabs.&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;uniq: Elimina elementos duplicados de una lista.&lt;br /&gt;&lt;br /&gt;fmt: Formato para archivos con lineas muy largas o irregulares.&lt;br /&gt;&lt;br /&gt;nl: Enumerar las lineas.&lt;br /&gt;&lt;br /&gt;pr: Formato para imprimir&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;head: Muestra el encabezado de archivos&lt;/b&gt;&lt;br /&gt;head -n 10 file.txt&lt;br /&gt;&lt;br /&gt;&lt;b&gt;tail: Muestra la cola de un archivo.&lt;/b&gt;&lt;br /&gt;tail -n 10 file.txt&lt;br /&gt;tail -f file.txt&lt;br /&gt;&lt;br /&gt;&lt;b&gt;cut: Extrae porciones de texto de la su STDIN y lo manda a su STDOUT, por columnas&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;cat file1.txt | cut -c 2-&lt;/b&gt;&lt;br /&gt;ifconfig eth0 | grep HW | cut -d " " -f 11&lt;br /&gt;&lt;br /&gt;&lt;b&gt;wc: Contador de palabras.&lt;/b&gt;&lt;br /&gt;-l  Lineas.&lt;br /&gt;-w  Palabras.&lt;br /&gt;-c  Bytes.&lt;br /&gt;-m  Caracteres.&lt;br /&gt;-L  Longitud de la linea mas larga.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/632987313637017278-8183786203651106940?l=martin-edmundo.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/V7sikX7Y8l7VSpdKW5ekpJndzxA/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/V7sikX7Y8l7VSpdKW5ekpJndzxA/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/V7sikX7Y8l7VSpdKW5ekpJndzxA/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/V7sikX7Y8l7VSpdKW5ekpJndzxA/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/MartinEdmundo/~4/2LxwVx0EgJs" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://martin-edmundo.blogspot.com/feeds/8183786203651106940/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=632987313637017278&amp;postID=8183786203651106940" title="0 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/632987313637017278/posts/default/8183786203651106940?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/632987313637017278/posts/default/8183786203651106940?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/MartinEdmundo/~3/2LxwVx0EgJs/sintesis-exploring-linux-command-line.html" title="Sintesis: Exploring Linux Command-Line Tools" /><author><name>Martin Edmundo</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="25" height="32" src="http://bp3.blogger.com/_a2J6n0XpUcc/SB6fHbvGM_I/AAAAAAAAAAc/HHzm3RxeEC0/S220/TNew.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/-iFkk-YvfwtY/TZVQwfSDBaI/AAAAAAAAAN4/12EE55WOiIw/s72-c/g4996.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://martin-edmundo.blogspot.com/2011/03/sintesis-exploring-linux-command-line.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CE4HQXo_eCp7ImA9WhZTFkU.&quot;"><id>tag:blogger.com,1999:blog-632987313637017278.post-7843334665360754910</id><published>2011-03-20T21:06:00.000-07:00</published><updated>2011-03-20T21:48:50.440-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-03-20T21:48:50.440-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="OpenLaszlo" /><category scheme="http://www.blogger.com/atom/ns#" term="GNU Linux" /><category scheme="http://www.blogger.com/atom/ns#" term="Software Libre" /><title>Limitando los recursos de Tomcat.</title><content type="html">&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/-rzfCY5xHnIs/TYbYU7usl5I/AAAAAAAAANw/mCs5onA8LMk/s1600/tomcat.gif"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 146px; height: 92px;" src="http://4.bp.blogspot.com/-rzfCY5xHnIs/TYbYU7usl5I/AAAAAAAAANw/mCs5onA8LMk/s320/tomcat.gif" border="0" alt="" id="BLOGGER_PHOTO_ID_5586390241942214546" /&gt;&lt;/a&gt;&lt;div style="text-align: justify;"&gt;Hace unos meses trabajando con OpenLaszlo 4.9 y Tomcat 5.0 en mi vieja notebook Compaq v2617la de 512Mb Ram,  dramáticamente me estaba quedando sin memoria muy seguido, esto debido a los procesos que podemos ver en la siguiente expresión:&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;i&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;Mysqld + browser (iceweasel) + Apache + Laszlo = Frustración, tristeza y desesperación&lt;/span&gt;.&lt;/span&gt;&lt;/i&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;El proceso Tomcat que inicialmente era propiedad del &lt;i&gt;root&lt;/i&gt;, causaba que al terminarse la Ram, comenzara a tener una gran demanda en el uso del SWAP al extremo de provocarme síntomas parecidos a los provocados en &lt;a href="http://es.wikipedia.org/wiki/Ataque_de_denegaci%C3%B3n_de_servicio"&gt;DoS&lt;/a&gt;, por el uso intensivo del disco. Las medidas que aplicamos fueron:&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;Aumentar la memoria Swap ( &lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; "&gt;&lt;a href="http://tinyurl.com/4m2tene"&gt;ver&lt;/a&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; "&gt;&lt;b&gt; &lt;/b&gt;&lt;/span&gt;&lt;/span&gt;).&lt;/li&gt;&lt;li&gt;Cambiar a un browser mas ligero (&lt;a href="http://es.wikipedia.org/wiki/Google_Chrome"&gt;google-chrome&lt;/a&gt;).&lt;/li&gt;&lt;li&gt;Cambiar a un windowmanager mas ligero (&lt;a href="http://es.wikipedia.org/wiki/Fluxbox"&gt;Fluxbox&lt;/a&gt;).&lt;/li&gt;&lt;li&gt;Cambiar a un reproductor mp3 mas ligero (&lt;a href="http://www.mpg123.de/"&gt;mpg123&lt;/a&gt;).&lt;/li&gt;&lt;li&gt;Limitar los umbrales de recursos disponibles de Tomcat ( &lt;a href="http://martin-edmundo.blogspot.com/2011/01/ulimit-limitsconf-recursos-del-sistema.html"&gt;ver&lt;/a&gt; ).&lt;/li&gt;&lt;li&gt;Crear el usuario "tomcat", limitarlo en el uso de consumo de memoria, y entregarle permisos sobre el servicio Tomcat.&lt;/li&gt;&lt;/ul&gt;&lt;div style="text-align: justify;"&gt;Los umbrales para la configuración de recursos de tomcat los ajuste en uno de los scripts de inicio del mismo tomcat $CATALINA_HOME/bin/catalina.sh.&lt;/div&gt;&lt;div style="text-align: justify;"&gt; Cambiando el parámetro &lt;i&gt;export JAVA_OPTS="-Xms128m -Xmx512m $JAVA_OPTS"&lt;/i&gt; por &lt;i&gt;export JAVA_OPTS="-Xms128m -Xmx256m $JAVA_OPTS"&lt;/i&gt;.&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Para limitar los recursos del sistema usados por el usuario tomcat, en su archivo ~.bashrc colocarle &lt;i&gt;ulimit -m 200000, &lt;/i&gt;para que solo tome 200mb como memoria maxima.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Estos ajustes los realize como ambiente de pruebas, mismos que hasta ahora me han ayudado a trabajar mas feliz.&lt;/div&gt;&lt;div&gt;&lt;img src="http://4.bp.blogspot.com/-HGCIwjz9_nk/TYbXLPRD0aI/AAAAAAAAANo/dM49dTuSdL0/s320/tomcat.png" style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 231px;" border="0" alt="" id="BLOGGER_PHOTO_ID_5586388975876297122" /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/632987313637017278-7843334665360754910?l=martin-edmundo.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/KwcXbhNLeMcUvRYdVJtt5jMTBqI/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/KwcXbhNLeMcUvRYdVJtt5jMTBqI/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/KwcXbhNLeMcUvRYdVJtt5jMTBqI/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/KwcXbhNLeMcUvRYdVJtt5jMTBqI/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/MartinEdmundo/~4/VUlkXbnX2ik" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://martin-edmundo.blogspot.com/feeds/7843334665360754910/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=632987313637017278&amp;postID=7843334665360754910" title="0 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/632987313637017278/posts/default/7843334665360754910?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/632987313637017278/posts/default/7843334665360754910?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/MartinEdmundo/~3/VUlkXbnX2ik/limitando-los-recursos-de-tomcat.html" title="Limitando los recursos de Tomcat." /><author><name>Martin Edmundo</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="25" height="32" src="http://bp3.blogger.com/_a2J6n0XpUcc/SB6fHbvGM_I/AAAAAAAAAAc/HHzm3RxeEC0/S220/TNew.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/-rzfCY5xHnIs/TYbYU7usl5I/AAAAAAAAANw/mCs5onA8LMk/s72-c/tomcat.gif" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://martin-edmundo.blogspot.com/2011/03/limitando-los-recursos-de-tomcat.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0YNRnk-cSp7ImA9Wx9bGEo.&quot;"><id>tag:blogger.com,1999:blog-632987313637017278.post-2403674797684298284</id><published>2011-02-27T21:01:00.000-08:00</published><updated>2011-02-27T21:33:17.759-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-02-27T21:33:17.759-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="GNU Linux" /><category scheme="http://www.blogger.com/atom/ns#" term="Software Libre" /><title>Agregando mas SWAP en Volumen Logico</title><content type="html">&lt;div style="text-align: justify;"&gt;En últimos días el trabajo en mi viejo equipo portátil se ha vuelto un poco pesado por lo escaso de mi memoria Ram, para mi desgracia DDR (costosa y un poco mas difícil de conseguir).&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Como alternativa de prueba, se me ocurrió aumentar tamaño de mi memoria swap. Vamos a ver como esta la situacion actual:&lt;/div&gt;&lt;img src="http://3.bp.blogspot.com/-0UFuCmlpNYA/TWstvfrU8nI/AAAAAAAAANY/Dkqt0_LqPOk/s320/memoria01.png" style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 162px;" border="0" alt="" id="BLOGGER_PHOTO_ID_5578602857408819826" /&gt;&lt;div style="text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Tenemos &lt;i&gt;&lt;span class="Apple-style-span"&gt;512Mb&lt;/span&gt;&lt;/i&gt; en Ram y &lt;i&gt;&lt;span class="Apple-style-span"&gt;256Mb&lt;/span&gt;&lt;/i&gt; en Swap (Aun sigo reprochándome por que deje tan poco).  Afortunadamente como medida preventiva cuando me instale este sistema deje un Volumen Lógico con algunos sistemas de archivos y espacio libre en el volumen.&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;b&gt;&lt;i&gt;Algoritmo:&lt;/i&gt;&lt;/b&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;1. Por cuestiones de seguridad en la integridad de datos, se recomienda desmontar todos los sistemas de archivos usados para realizar cambios en el volumen. Así que la recomendación es reiniciar, login como root, detener todos los servicios, desmontar sistemas de archivos en el volumen. Para esto nos podemos apoyar del comando &lt;i&gt;lsof &lt;/i&gt;buscando procesos haciendo uso de directorios.&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;2. Crear el espacio que necesitamos adentro del volumen. En mi caso definimos un espacio de 512Mb en el volumen volgrp01:&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;i&gt;&lt;span class="Apple-style-span"&gt;Poseidon:~# lvcreate -L 512M volgrp01&lt;/span&gt;&lt;/i&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;3. Verificar el tamaño creado y el dispositivo asignado, solo mostraremos un resumen de la salida:&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;span class="Apple-style-span"&gt;&lt;i&gt;Poseidon:~# lvdisplay&lt;/i&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;span class="Apple-style-span"&gt;&lt;i&gt;...&lt;/i&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;div style="text-align: left;"&gt;&lt;span class="Apple-style-span"&gt;&lt;i&gt;--- Logical volume ---&lt;/i&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;span class="Apple-style-span"&gt;&lt;i&gt;LV Name                /dev/volgrp01/lvol0&lt;/i&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;span class="Apple-style-span"&gt;&lt;i&gt;VG Name                volgrp01&lt;/i&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;span class="Apple-style-span"&gt;&lt;i&gt;LV Write Access        read/write&lt;/i&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;i&gt;&lt;span class="Apple-style-span"&gt;LV Size                &lt;/span&gt;&lt;span class="Apple-style-span"&gt;&lt;b&gt;512.00&lt;/b&gt;&lt;/span&gt;&lt;span class="Apple-style-span"&gt; MB&lt;/span&gt;&lt;/i&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;4. Crear y activar la nueva swap:&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;span class="Apple-style-span"&gt;&lt;i&gt;Poseidon:~# mkswap /dev/volgrp01/lvol0&lt;/i&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;span class="Apple-style-span"&gt;&lt;i&gt;Poseidon:~# swapon /dev/volgrp01/lvol0&lt;/i&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;5. Verificar que las estadísticas de la memoria en el sistema y confirmamos que tenemos (512+512+256)Mb.&lt;/div&gt;&lt;img src="http://2.bp.blogspot.com/-vNN4FNUPzcE/TWsy8GJUkUI/AAAAAAAAANg/XIr4TUYkhS8/s320/memoria02.png" style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 152px;" border="0" alt="" id="BLOGGER_PHOTO_ID_5578608571451740482" /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/632987313637017278-2403674797684298284?l=martin-edmundo.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/ZTNN5WlfE9bqMPz1Oiue_ygizfw/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/ZTNN5WlfE9bqMPz1Oiue_ygizfw/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/ZTNN5WlfE9bqMPz1Oiue_ygizfw/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/ZTNN5WlfE9bqMPz1Oiue_ygizfw/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/MartinEdmundo/~4/dlTqPPp0Meg" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://martin-edmundo.blogspot.com/feeds/2403674797684298284/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=632987313637017278&amp;postID=2403674797684298284" title="0 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/632987313637017278/posts/default/2403674797684298284?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/632987313637017278/posts/default/2403674797684298284?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/MartinEdmundo/~3/dlTqPPp0Meg/agregando-mas-swap-en-volumen-logico.html" title="Agregando mas SWAP en Volumen Logico" /><author><name>Martin Edmundo</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="25" height="32" src="http://bp3.blogger.com/_a2J6n0XpUcc/SB6fHbvGM_I/AAAAAAAAAAc/HHzm3RxeEC0/S220/TNew.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/-0UFuCmlpNYA/TWstvfrU8nI/AAAAAAAAANY/Dkqt0_LqPOk/s72-c/memoria01.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://martin-edmundo.blogspot.com/2011/02/agregando-mas-swap-en-volumen-logico.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0YHQnszeyp7ImA9Wx9bEkk.&quot;"><id>tag:blogger.com,1999:blog-632987313637017278.post-4961278688238450021</id><published>2011-02-20T14:04:00.000-08:00</published><updated>2011-02-20T15:38:53.583-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-02-20T15:38:53.583-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Actividad Social" /><title>Cronicas de un viaje anunciado: Dia1</title><content type="html">&lt;div style="text-align: justify;"&gt;La semana pasada realice un viaje que ya les había anunciado previamente en algunas redes sociales, viajar mas de siete horas para llegar a &lt;a href="http://es.wikipedia.org/wiki/Real_del_Catorce"&gt;Real de Catorce&lt;/a&gt; un viejo pueblo minero en el norte de México, con características muy propias a mi parecer de la época de la &lt;a href="http://es.wikipedia.org/wiki/Revoluci%C3%B3n_mexicana"&gt;revolución mexicana&lt;/a&gt; a inicios del siglo XX.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;La aventura comenzó la madrugada del sábado 12/02/2011 en la central de autobuses de &lt;a href="http://es.wikipedia.org/wiki/Morelia"&gt;Morelia&lt;/a&gt;, con un retraso considerable del autobus. A pesar de este pequeño inconveniente puede llegar a las 11:30am a &lt;a href="http://es.wikipedia.org/wiki/Matehuala"&gt;Matehuala&lt;/a&gt;, lugar donde mi primo Abraham pasaría por mi para llegar juntos al pueblo.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;El recorrido Matehuala-Real de Catorce, es poco mas de 40min. sobre todo por que la mitad del recorrido es un camino de piedras. Cuando comenzó el camino de piedra le pedí a mi primo tomarnos unas fotos, aprovechando para estirar un poco las piernas y respirar los aromas del desierto de &lt;a href="http://es.wikipedia.org/wiki/Matehuala"&gt;San Luis Potosí&lt;/a&gt;.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Dejaremos al lector una idea mas clara de lo que es el lugar usando las herramientas que google nos ofrece, vamos al google streetmaps para ver el lugar donde nos tomamos algunas fotos.&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;iframe width="425" height="350" frameborder="0" scrolling="no" marginheight="0" marginwidth="0" src="http://maps.google.com.mx/maps?f=q&amp;amp;source=embed&amp;amp;hl=es&amp;amp;geocode=&amp;amp;q=matehuala&amp;amp;sll=23.625269,-102.540613&amp;amp;sspn=19.089949,27.817383&amp;amp;ie=UTF8&amp;amp;hq=&amp;amp;hnear=Matehuala,+San+Luis+Potos%C3%AD&amp;amp;ll=23.652749,-100.643891&amp;amp;spn=0.1611,0.348129&amp;amp;z=12&amp;amp;layer=c&amp;amp;cbll=23.841115,-100.817235&amp;amp;panoid=Z4Ngbyxl0CSDnCW2DCjyWA&amp;amp;cbp=12,204.81,,0,20.45&amp;amp;output=svembed"&gt;&lt;/iframe&gt;&lt;/div&gt;&lt;small&gt;&lt;a href="http://maps.google.com.mx/maps?f=q&amp;amp;source=embed&amp;amp;hl=es&amp;amp;geocode=&amp;amp;q=matehuala&amp;amp;sll=23.625269,-102.540613&amp;amp;sspn=19.089949,27.817383&amp;amp;ie=UTF8&amp;amp;hq=&amp;amp;hnear=Matehuala,+San+Luis+Potos%C3%AD&amp;amp;ll=23.652749,-100.643891&amp;amp;spn=0.1611,0.348129&amp;amp;z=12&amp;amp;layer=c&amp;amp;cbll=23.841115,-100.817235&amp;amp;panoid=Z4Ngbyxl0CSDnCW2DCjyWA&amp;amp;cbp=12,204.81,,0,20.45" style="color:#0000FF;text-align:left"&gt;Ver mapa más grande&lt;/a&gt;&lt;/small&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;img src="http://3.bp.blogspot.com/-_gVlj2WjtF0/TWGYXgQdAmI/AAAAAAAAAMo/Tz6whMdpuow/s320/img_0004.jpg" style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 240px;" border="0" alt="" id="BLOGGER_PHOTO_ID_5575905343224742498" /&gt;&lt;/div&gt;&lt;div&gt;&lt;div style="text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;Al final del camino de piedra llegamos a la entrada del tunel Ogarrio, el cual nos lleva directamente al pueblo.&lt;/div&gt;&lt;div&gt;&lt;img src="http://4.bp.blogspot.com/-CJmGiITzwjo/TWGaMWZzDlI/AAAAAAAAAMw/TLgFqrS6RXY/s320/img_0008.jpg" style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 240px;" border="0" alt="" id="BLOGGER_PHOTO_ID_5575907350624276050" /&gt;&lt;div style="text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;center&gt;&lt;iframe width="425" height="344" src="http://www.youtube.com/embed/Xg0zkVhRZBw?fs=1" frameborder="0" allowfullscreen=""&gt;&lt;/iframe&gt;&lt;/center&gt;&lt;center&gt;&lt;br /&gt;&lt;/center&gt;&lt;center&gt;&lt;img src="http://2.bp.blogspot.com/-5nL4DpIspqM/TWGdia4NEvI/AAAAAAAAANA/yB2sRMzE6fg/s320/img_0010.jpg" style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 240px;" border="0" alt="" id="BLOGGER_PHOTO_ID_5575911028317557490" /&gt;&lt;br /&gt;&lt;/center&gt;&lt;center style="text-align: justify;"&gt;Una vez en el pueblo, nos dispusimos a satisfacer primeramente algunas de las necesidades básicas del hombre, comer y un lugar para dormir. En cuanto al hospedaje nos quedamos en Hotel Real de Álamos un lugar para dormir sin muchas comodidades pero bien, un hotel pueblerino de esos que eventualmente se antojan para ir a descasar y olvidarte de la ciudad.&lt;/center&gt;&lt;center style="text-align: center;"&gt;&lt;br /&gt;&lt;/center&gt;&lt;center style="text-align: justify;"&gt;Para la comida, me deleite con el famoso platillo de enchiladas potosinas, siendo aquí el lugar donde las comí por primera vez.&lt;/center&gt;&lt;center style="text-align: justify;"&gt;&lt;br /&gt;&lt;/center&gt;&lt;img src="http://3.bp.blogspot.com/-Z8s0SocVNDU/TWGdWif9glI/AAAAAAAAAM4/858Z2YDfQ54/s320/img_0011.jpg" style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 240px;" border="0" alt="" id="BLOGGER_PHOTO_ID_5575910824204927570" /&gt;&lt;center style="text-align: justify;"&gt;Después de la comida el momento de nuestro primer recorrido había llegado, se decidió democraticamente ir primero al pueblo fantasma de Real de Catorce, este pueblo fue originalmente el que estaba habitado, sin embargo en algún momento de la historia deciden ir mas abajo, la razón no la conozco. Los argumentos ofrecidos por los habitantes y guías son diversos incluso de la información que hay en Internet.&lt;/center&gt;&lt;center style="text-align: center;"&gt;&lt;br /&gt;&lt;/center&gt;&lt;center style="text-align: justify;"&gt;El recorrido es en caballo y hay que subir un cerro con un camino muy empedrado y recientemente mas dañado por las lluvias causadas por el &lt;a href="http://es.wikipedia.org/wiki/Hurac%C3%A1n_Alex_(2010)"&gt;Huracán Alex&lt;/a&gt;. A lo largo el camino podemos apreciar construcciones aisladas del pueblo fantasma, la mayoría de ellas destruidas, casas, cuartos de almacenaje de dinamita, edificios, haciendas, etc.&lt;/center&gt;&lt;center style="text-align: justify;"&gt;&lt;img src="http://3.bp.blogspot.com/-Gxu5SCu3bao/TWGiNoUxRCI/AAAAAAAAANI/D6dYMG3wSt4/s320/img_0037.jpg" style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 240px;" border="0" alt="" id="BLOGGER_PHOTO_ID_5575916168707916834" /&gt;&lt;img src="http://3.bp.blogspot.com/-ySPpaSFDB_c/TWGigP170DI/AAAAAAAAANQ/gtgNehKm_jg/s320/img_0040.jpg" style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 240px;" border="0" alt="" id="BLOGGER_PHOTO_ID_5575916488553648178" /&gt;&lt;div style="text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;/center&gt;&lt;center style="text-align: justify;"&gt;Pudimos conocer por afuera una de las minas con una profundidad de 500mts, se trata de un pozo principal de extracción de minerales de unos nueve metros de diámetro, hay túneles estrechos que los mineros usaban para descender a esa profundad. Supongo que una de tus preguntas es ¿Que minerales se extraían?, de estas minas se extraían varios metales como el mercurio, pero principalmente era plata.&lt;/center&gt;&lt;center style="text-align: justify;"&gt;&lt;br /&gt;&lt;/center&gt;&lt;center style="text-align: justify;"&gt;El recorrido duro aproximadamente dos horas. De regreso en el pueblo pasamos a cenar y tomar unas cervezas en un pequeño bar. Ahí nos enteramos que esta vieja mina volverá a operar en los próximos meses, una compañía de Canadá es la que estará a cargo con mano de obra de la región.&lt;/center&gt;&lt;center style="text-align: justify;"&gt;&lt;br /&gt;&lt;/center&gt;&lt;center style="text-align: justify;"&gt;Finalmente quiero dejar disponible el álbum de fotos donde subí algunas de ellas. En el próximo post vamos a ver el siguiente día de aventuras.&lt;/center&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/632987313637017278-4961278688238450021?l=martin-edmundo.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/sBmWLpRj5ZtgepkR_peqNmBY5mg/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/sBmWLpRj5ZtgepkR_peqNmBY5mg/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/sBmWLpRj5ZtgepkR_peqNmBY5mg/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/sBmWLpRj5ZtgepkR_peqNmBY5mg/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/MartinEdmundo/~4/75g3k1VOtow" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://martin-edmundo.blogspot.com/feeds/4961278688238450021/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=632987313637017278&amp;postID=4961278688238450021" title="0 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/632987313637017278/posts/default/4961278688238450021?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/632987313637017278/posts/default/4961278688238450021?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/MartinEdmundo/~3/75g3k1VOtow/cronicas-de-un-viaje-anunciado-dia1.html" title="Cronicas de un viaje anunciado: Dia1" /><author><name>Martin Edmundo</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="25" height="32" src="http://bp3.blogger.com/_a2J6n0XpUcc/SB6fHbvGM_I/AAAAAAAAAAc/HHzm3RxeEC0/S220/TNew.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/-_gVlj2WjtF0/TWGYXgQdAmI/AAAAAAAAAMo/Tz6whMdpuow/s72-c/img_0004.jpg" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://martin-edmundo.blogspot.com/2011/02/cronicas-de-un-viaje-anunciado-dia1.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DE4DRXgyeCp7ImA9Wx9XEk0.&quot;"><id>tag:blogger.com,1999:blog-632987313637017278.post-7024467314391762806</id><published>2011-01-03T14:24:00.001-08:00</published><updated>2011-01-04T21:56:14.690-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-01-04T21:56:14.690-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="GNU Linux" /><title>ulimit &amp; limits.conf: Recursos del sistema</title><content type="html">&lt;div style="text-align: justify;"&gt;Primeramente quiero aprovechar este espacio para desear feliz año nuevo a mis escasos y desatendidos lectores ya que últimamente (varios meses atrás) que no he colocado nada por aquí. Para ponerme al día, tocaremos este sencillo pero importante tópico.&lt;br /&gt;&lt;br /&gt;GNU/Linux nos provee varios mecanismos para administrar los recursos del sistema, como el paso de parámetros al kernel, memoria (scheduling priority), recursos físicos, etc. Los limites PAM ( pam_limits ), son limites de los recursos del sistema que son aplicados a los usuarios al iniciar sesión. Entre algunos de los recursos a los que les podemos aplicar este limite tenemos los siguientes:&lt;br /&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;Máximo numero de archivos abiertos.&lt;/li&gt;&lt;li&gt;Máximo tiempo en CPU.&lt;/li&gt;&lt;li&gt;Máximo numero de procesos.&lt;/li&gt;&lt;li&gt;Máximo numero de logins en el sistema.&lt;/li&gt;&lt;li&gt;Máxima prioridad permitida a un proceso.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;El administrador deberá modificar el archivo &lt;span style="font-style: italic;"&gt;/etc/security/limits.conf&lt;/span&gt; para administrar estos limites, mientras que los usuarios podrán jugar con el comando ulimit para mover sus valores dentro del rango permitido. El archivo de configuración se arma con registros de cuatro campos, de izquierda a derecha son los siguientes:&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Campo 1 - Dominio:&lt;/span&gt; Se debe especificar el usuario o el grupo al que se aplicara el limite.&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Campo 2 - Tipo:&lt;/span&gt; Hard o soft, el primero es el limite del cual el usuario no podrá pasar mientras que el segundo es el valor por defecto que tomara el usuario tras hacer login. El carácter "-", indica que se aplican los dos tipos simultáneamente con el mismo valor.&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Campo 3 - Item:&lt;/span&gt; El recurso que se desea limitar (core, data, fsize, memlock, nofile, rss, stack, etc).&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Campo 4 - Value:&lt;/span&gt; Valor que se va a asignar al recurso.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Dado el siguiente archivo de configuración, comentaremos algunas cosas&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;pre&gt;&lt;code&gt;&lt;br /&gt;martin           hard   nofile           4096&lt;br /&gt;martin           -      nproc            512&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Tenemos dos ítem: &lt;span style="font-style: italic;"&gt;nofile&lt;/span&gt; y &lt;span style="font-style: italic;"&gt;nproc&lt;/span&gt; (numero máximo de archivos abiertos y máximo numero de procesos). Después de que el usuario martin inicia sesión podría consultar los valores que tiene asociados con los comandos &lt;span style="font-style: italic;"&gt;ulimit -n&lt;/span&gt; y &lt;span style="font-style: italic;"&gt;ulimit -u&lt;/span&gt;, además de ver la lista de ítems completos y sus valores con ulimit -a. En este caso los valores mostrados serian de la siguiente manera:&lt;br /&gt;&lt;/div&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;open files                      (-n) 1024&lt;br /&gt;max user processes              (-u) 512&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;El usuario puede crecer nofile hasta 4096, pero no mas de ese valor, sin embargo, nproc ya no puede crecer mas, si se intenta se conseguirá un mensaje "no se puede modificar el límite: Operación no permitida".&lt;br /&gt;&lt;br /&gt;Finalmente en la figura, verificamos esta información para el máximo numero de procesos, tratando de colgar el sistema con una bomba fork, la cual funciona con recursividad tratando de llevar los procesos hasta que el sistema deje de responder, con aplicado este limite podemos evitar esto.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_a2J6n0XpUcc/TSJMy5_ymOI/AAAAAAAAAMc/kdIv8STC7zM/s1600/fork.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 213px;" src="http://2.bp.blogspot.com/_a2J6n0XpUcc/TSJMy5_ymOI/AAAAAAAAAMc/kdIv8STC7zM/s320/fork.png" alt="" id="BLOGGER_PHOTO_ID_5558089327574161634" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/632987313637017278-7024467314391762806?l=martin-edmundo.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/sI5f_Dhaaj-259sKssSrtm05mmo/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/sI5f_Dhaaj-259sKssSrtm05mmo/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/sI5f_Dhaaj-259sKssSrtm05mmo/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/sI5f_Dhaaj-259sKssSrtm05mmo/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/MartinEdmundo/~4/ggunO8ho-g4" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://martin-edmundo.blogspot.com/feeds/7024467314391762806/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=632987313637017278&amp;postID=7024467314391762806" title="1 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/632987313637017278/posts/default/7024467314391762806?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/632987313637017278/posts/default/7024467314391762806?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/MartinEdmundo/~3/ggunO8ho-g4/ulimit-limitsconf-recursos-del-sistema.html" title="ulimit &amp; limits.conf: Recursos del sistema" /><author><name>Martin Edmundo</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="25" height="32" src="http://bp3.blogger.com/_a2J6n0XpUcc/SB6fHbvGM_I/AAAAAAAAAAc/HHzm3RxeEC0/S220/TNew.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/_a2J6n0XpUcc/TSJMy5_ymOI/AAAAAAAAAMc/kdIv8STC7zM/s72-c/fork.png" height="72" width="72" /><thr:total>1</thr:total><feedburner:origLink>http://martin-edmundo.blogspot.com/2011/01/ulimit-limitsconf-recursos-del-sistema.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUcDQXw-eCp7ImA9Wx9XEk0.&quot;"><id>tag:blogger.com,1999:blog-632987313637017278.post-4994791722297924483</id><published>2010-11-02T21:50:00.000-07:00</published><updated>2011-01-04T21:57:50.250-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-01-04T21:57:50.250-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="GNU Linux" /><category scheme="http://www.blogger.com/atom/ns#" term="Software Libre" /><title>Liberación de recursos &amp; | dispositivos ocupados en GNU/Linux</title><content type="html">Tengo que reconocer que cuando comenze a dar mis primeros pasos en GNU/Linux y que tenia necesidad de liberar algun recurso me encontre con la siguiente leyenda:&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_a2J6n0XpUcc/TNDrq6Sz1kI/AAAAAAAAAMQ/V3AZDD0564I/s1600/consola.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 81px;" src="http://1.bp.blogspot.com/_a2J6n0XpUcc/TNDrq6Sz1kI/AAAAAAAAAMQ/V3AZDD0564I/s320/consola.png" alt="" id="BLOGGER_PHOTO_ID_5535183064473523778" border="0" /&gt;&lt;/a&gt;En aquellos años penosamente tenia que reiniciar para liberar. Lo que en aquellos años no sabia es que con la ayuda del comando lsof, podemos apoyarnos para revisar archivos abiertos. Este comando nos muestra en columnas los siguientes campos relacionados a un proceso:&lt;br /&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;Comando.&lt;/li&gt;&lt;li&gt;Id del Proceso ( PID )&lt;/li&gt;&lt;li&gt;Usuario.&lt;/li&gt;&lt;li&gt;Nombre del nodo.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div style="text-align: justify;"&gt;Aqui lo que nos puede resultar util es el nombre del nodo y el PID. Por ejemplo, supongamos que queremos liberar el lector optico para leer otro disco y a pesar de que cerramos nuestras aplicaciones no podemos desmontar. El cdrom estara asociado al nodo /dev/cdrom y montado en /media, nosotros podriamos hacer lo siguiente:&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;lsof | grep /media&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;El cual nos mostrara los procesos que estan haciendo uso de este recurso y asi podriamos matarlos con kill, para cada proceso y subproceso que se muestren. ¿y si son muchos? Podemos usar el nuevo juguete que me paso mi amigo Daniel Mtz.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;for cadauno in ` lsof | grep /media | awk '{ print $1 }' `;  kill $cadauno 2&gt; /dev/null  ;  done&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Con esto automatizamos para que cada proceso encontrado sea eliminado. Este comando y sus parámetros pueden hacer muchas cosas por nosotros, para concluir veamos algunos ejemplos:&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 102);"&gt;#Archivos abiertos del PID 1&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;lsof -p 1&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 102);"&gt;#Procesos que estan usado el puerto TCP 22 y UDP 53&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;lsof -i :22&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;lsof -i UDP:53&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/632987313637017278-4994791722297924483?l=martin-edmundo.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/gGpFB2DfZYurQ_3wnRBvLgqxYHI/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/gGpFB2DfZYurQ_3wnRBvLgqxYHI/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/gGpFB2DfZYurQ_3wnRBvLgqxYHI/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/gGpFB2DfZYurQ_3wnRBvLgqxYHI/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/MartinEdmundo/~4/AepW2iGe4a4" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://martin-edmundo.blogspot.com/feeds/4994791722297924483/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=632987313637017278&amp;postID=4994791722297924483" title="0 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/632987313637017278/posts/default/4994791722297924483?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/632987313637017278/posts/default/4994791722297924483?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/MartinEdmundo/~3/AepW2iGe4a4/liberacion-de-recursos-dispositivos.html" title="Liberación de recursos &amp; | dispositivos ocupados en GNU/Linux" /><author><name>Martin Edmundo</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="25" height="32" src="http://bp3.blogger.com/_a2J6n0XpUcc/SB6fHbvGM_I/AAAAAAAAAAc/HHzm3RxeEC0/S220/TNew.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/_a2J6n0XpUcc/TNDrq6Sz1kI/AAAAAAAAAMQ/V3AZDD0564I/s72-c/consola.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://martin-edmundo.blogspot.com/2010/11/liberacion-de-recursos-dispositivos.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUcDQXw-eCp7ImA9Wx9XEk0.&quot;"><id>tag:blogger.com,1999:blog-632987313637017278.post-520611439889383228</id><published>2010-08-11T23:00:00.000-07:00</published><updated>2011-01-04T21:57:50.250-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-01-04T21:57:50.250-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Desarrollo" /><category scheme="http://www.blogger.com/atom/ns#" term="GNU Linux" /><title>Catching process from devil with Bash</title><content type="html">&lt;div style="text-align: justify;"&gt;Cuando se tiene la necesidad de buscar procesos que consuman mucho recurso de computo como memoria o cpu, pero una limitante es lo poco practico de estar detras del comando &lt;a href="http://linux.about.com/od/commands/l/blcmdl1_top.htm"&gt;top&lt;/a&gt; todo el tiempo, se nos obliga a pensar el automatizar esta busqueda y que asi nos de tiempo de salir a &lt;a href="http://es.wikipedia.org/wiki/Enchilada"&gt;comer algo&lt;/a&gt; o &lt;a href="http://www.youtube.com/watch?v=PsQLveiqqWs&amp;amp;feature=related"&gt;dormir un poco&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;En esta ocacion les presento un script que nos ayuda a buscar procesos que consumen mas de 50% de cpu y nos guarda en una bitacora la informacion de este procesos. Desde luego que se le pueden hacer mejoras pero las dejaremos al criterio del usuario. Espero les sea de utilidad.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;code&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;#!/bin/bash&lt;br /&gt;#Variable para solo encontrar un proceso&lt;br /&gt;&lt;/span&gt;status=0&lt;br /&gt;&lt;br /&gt;while [ $status -eq 0 ] ;&lt;br /&gt;do&lt;br /&gt;cont=`ps aux | awk '$3&gt;50  { print }' | wc -l`&lt;br /&gt;if [ $cont -gt 0 ]; then&lt;br /&gt;   ps aux | awk '$3&gt;50  { print }' &gt;&gt; procesos.txt&lt;br /&gt;   date &gt;&gt; procesos.txt&lt;br /&gt;  &lt;span style="color: rgb(0, 0, 153);"&gt; #Podriamos ponerlo a 1 para solo encontrar 1 proceso&lt;/span&gt;&lt;br /&gt;   status=0&lt;br /&gt;fi&lt;br /&gt;&lt;br /&gt;echo scanning...&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;#esperamos 5 minutos para volver a buscar&lt;/span&gt;&lt;br /&gt;sleep 300&lt;br /&gt;done&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/632987313637017278-520611439889383228?l=martin-edmundo.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/CREcAcoqMR4raQXGYFdz83OqcBM/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/CREcAcoqMR4raQXGYFdz83OqcBM/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/CREcAcoqMR4raQXGYFdz83OqcBM/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/CREcAcoqMR4raQXGYFdz83OqcBM/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/MartinEdmundo/~4/x--Pc7M1AwU" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://martin-edmundo.blogspot.com/feeds/520611439889383228/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=632987313637017278&amp;postID=520611439889383228" title="0 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/632987313637017278/posts/default/520611439889383228?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/632987313637017278/posts/default/520611439889383228?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/MartinEdmundo/~3/x--Pc7M1AwU/catching-process-from-devil-with-bash.html" title="Catching process from devil with Bash" /><author><name>Martin Edmundo</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="25" height="32" src="http://bp3.blogger.com/_a2J6n0XpUcc/SB6fHbvGM_I/AAAAAAAAAAc/HHzm3RxeEC0/S220/TNew.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://martin-edmundo.blogspot.com/2010/08/catching-process-from-devil-with-bash.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUcDQXw-eSp7ImA9Wx9XEk0.&quot;"><id>tag:blogger.com,1999:blog-632987313637017278.post-1471349748936286971</id><published>2010-06-22T19:31:00.000-07:00</published><updated>2011-01-04T21:57:50.251-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-01-04T21:57:50.251-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Desarrollo" /><category scheme="http://www.blogger.com/atom/ns#" term="GNU Linux" /><title>Bash Scripting: Recursive Search inside text files</title><content type="html">&lt;div style="text-align: justify;"&gt;Anteriormente había tenido la necesidad de hacer búsquedas recursivas de alguna cadena, en todos los archivos de texto de un árbol de directorios. Un ejemplo típico es un parámetro o valor usado por algún aplicativo y que no recordamos claramente en que archivo de conflagración esta, en este contexto es donde personalmente he tenido la necesidad de una herramienta así.&lt;br /&gt;&lt;br /&gt;Les quiero compartir un script que realiza precisamente este tipo de búsquedas, este script bien se puede adaptar para realizar operaciones sobre estos archivos, permisos, modificaciones, borrados, etc. Sin embargo eso ya queda de tarea de acuerdo a sus necesidades.&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;code&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;#!/bin/bash&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;if [ "$#" != "1" ]; then&lt;br /&gt; echo "usage: finder &lt;patter_to_find&gt;";&lt;br /&gt; exit 1;&lt;br /&gt;fi&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;#Se consigue un listado recursivo de los archivos en el directorio actual y subdirectorios&lt;/span&gt;&lt;br /&gt;du -a * | awk 'BEGIN{"pwd" | getline LOCAL_PATH}{print LOCAL_PATH "/" $2}' | (&lt;br /&gt; &lt;span style="color: rgb(0, 0, 153);"&gt;#Hacemos la lectura "filebyfile" o "linebyline"&lt;/span&gt;&lt;br /&gt; while read line; do&lt;br /&gt;  &lt;span style="color: rgb(0, 0, 102);"&gt;#Solo buscamos en archivos de texto&lt;/span&gt;&lt;br /&gt;  file $line | grep text &gt; /dev/null;&lt;br /&gt;  if [ "$?" -eq "0" ]; then&lt;br /&gt;   echo "*** Archivo de texto: $line";&lt;br /&gt;   cat $line | grep $1;&lt;br /&gt;   echo "";&lt;br /&gt;  fi&lt;br /&gt; done&lt;br /&gt;);&lt;br /&gt;exit 0;&lt;br /&gt;&lt;/patter_to_find&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/632987313637017278-1471349748936286971?l=martin-edmundo.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/9PU7YLFqm0PNF8C834HqoQPX0So/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/9PU7YLFqm0PNF8C834HqoQPX0So/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/9PU7YLFqm0PNF8C834HqoQPX0So/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/9PU7YLFqm0PNF8C834HqoQPX0So/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/MartinEdmundo/~4/8Q2HE5KLjcI" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://martin-edmundo.blogspot.com/feeds/1471349748936286971/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=632987313637017278&amp;postID=1471349748936286971" title="0 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/632987313637017278/posts/default/1471349748936286971?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/632987313637017278/posts/default/1471349748936286971?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/MartinEdmundo/~3/8Q2HE5KLjcI/bash-scripting-recursive-search-inside.html" title="Bash Scripting: Recursive Search inside text files" /><author><name>Martin Edmundo</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="25" height="32" src="http://bp3.blogger.com/_a2J6n0XpUcc/SB6fHbvGM_I/AAAAAAAAAAc/HHzm3RxeEC0/S220/TNew.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://martin-edmundo.blogspot.com/2010/06/bash-scripting-recursive-search-inside.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUcDQXw-eSp7ImA9Wx9XEk0.&quot;"><id>tag:blogger.com,1999:blog-632987313637017278.post-1425862226220329108</id><published>2010-06-02T07:29:00.001-07:00</published><updated>2011-01-04T21:57:50.251-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-01-04T21:57:50.251-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Redes" /><category scheme="http://www.blogger.com/atom/ns#" term="GNU Linux" /><title>PackETH, Builder of RAW TCP/IP Packet</title><content type="html">&lt;div style="text-align: justify;"&gt;Hace algunos meses encontre en los repositorios de Ubuntu, una herramienta para la construcción de paquetes TCP/IP, el PackETH. Durante mis épocas de estudiante hacíamos pruebas personalizando paquetes con raw sockets en lenguaje C (¿que..., hay otro?). El desarrollo con raw sockets a pesar de fácil, puede ser en algún momento un poco confuso, sobre todo por los nombres de los elementos de las estructuras de datos usadas y su respectiva referencia y/o relación con el TCP/IP.&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_a2J6n0XpUcc/TAZrH8A8c9I/AAAAAAAAALo/lKNbwk54Eu8/s1600/icmp+paquetes.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 283px; height: 320px;" src="http://4.bp.blogspot.com/_a2J6n0XpUcc/TAZrH8A8c9I/AAAAAAAAALo/lKNbwk54Eu8/s320/icmp+paquetes.png" alt="" id="BLOGGER_PHOTO_ID_5478183780856132562" border="0" /&gt;&lt;/a&gt;A modo de presentación de esta herramienta, se realizaron unas pruebas en una topología tan simple como la que muestra la figura anterior, una red local y un servidor de internet. En la computadora de la red local tenemos la dirección MAC 90:4C:E5:63:71:C9 y la dirección de red 192.168.1.100, los detalles pueden observar en la siguiente imagen.&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_a2J6n0XpUcc/TAZrZHZafEI/AAAAAAAAALw/TuH5pNmGq1k/s1600/consola.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 141px;" src="http://3.bp.blogspot.com/_a2J6n0XpUcc/TAZrZHZafEI/AAAAAAAAALw/TuH5pNmGq1k/s320/consola.png" alt="" id="BLOGGER_PHOTO_ID_5478184075969330242" border="0" /&gt;&lt;/a&gt;Usando el PackETH, construimos un paquete ICMP, dirigido a un servidor de google. Haciendo un paréntesis, debemos saber que cuando un paquete cruza parcialmente la nube de internet y pasa por varios routers, en cada salto algunos campos se comportan de la siguiente manera:&lt;br /&gt;&lt;/div&gt;&lt;ul style="text-align: justify;"&gt;&lt;li&gt;MAC Origen: En cada salto cambia y es sustituida por el dispositivo que esta enviando o reenviando la trama, colocando su propia MAC Address.&lt;/li&gt;&lt;/ul&gt;&lt;ul style="text-align: justify;"&gt;&lt;li&gt;MAC Destino: En cada salto cambia y es sustituida por el dispositivo que esta enviando o reenviando la trama, colocando la MAC Address del equipo que recibe la trama y que esta dentro de su segmento.&lt;/li&gt;&lt;/ul&gt;&lt;ul style="text-align: justify;"&gt;&lt;li&gt;IP Origen: Solo llega a cambiar cuando salimos de alguna red local y el gateway hace un enmascaramiento, sustituyendo la IP origen que le llega por la que tiene el propio Gateway.&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;IP Destino: Nunca cambia!.&lt;/li&gt;&lt;/ul&gt;&lt;div style="text-align: justify;"&gt;Conociendo la información anterior, seguimos con la instrucción del paquete, llenado los campos de la siguiente manera. Una vez terminado definimos la interfaz de salida, y damos clic a "Send". El paquete en ese momento es liberado en la ostil y lenta, red publica. Para verificar la entrega del paquete, podemos consultar algún sniffer, en este caso nos apoyamos de wireshark, donde podemos ver que el paquete se envía y recibe correctamente. Espero esta información puede ser de mucha ayuda para algunas personas.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_a2J6n0XpUcc/TAZreeqSWTI/AAAAAAAAAL4/XDFULWT3L4c/s1600/PackETH.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 276px;" src="http://4.bp.blogspot.com/_a2J6n0XpUcc/TAZreeqSWTI/AAAAAAAAAL4/XDFULWT3L4c/s320/PackETH.png" alt="" id="BLOGGER_PHOTO_ID_5478184168113461554" border="0" /&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_a2J6n0XpUcc/TAZrj26w86I/AAAAAAAAAMA/EgZ0Q2yveCc/s1600/wireshark.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 231px;" src="http://4.bp.blogspot.com/_a2J6n0XpUcc/TAZrj26w86I/AAAAAAAAAMA/EgZ0Q2yveCc/s320/wireshark.png" alt="" id="BLOGGER_PHOTO_ID_5478184260524372898" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/632987313637017278-1425862226220329108?l=martin-edmundo.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/HP5liOL5Y2HHK51fod0W5YWnof8/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/HP5liOL5Y2HHK51fod0W5YWnof8/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/HP5liOL5Y2HHK51fod0W5YWnof8/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/HP5liOL5Y2HHK51fod0W5YWnof8/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/MartinEdmundo/~4/rKevyLiQLAg" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://martin-edmundo.blogspot.com/feeds/1425862226220329108/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=632987313637017278&amp;postID=1425862226220329108" title="0 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/632987313637017278/posts/default/1425862226220329108?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/632987313637017278/posts/default/1425862226220329108?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/MartinEdmundo/~3/rKevyLiQLAg/packeth-builder-of-raw-tcpip-packet.html" title="PackETH, Builder of RAW TCP/IP Packet" /><author><name>Martin Edmundo</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="25" height="32" src="http://bp3.blogger.com/_a2J6n0XpUcc/SB6fHbvGM_I/AAAAAAAAAAc/HHzm3RxeEC0/S220/TNew.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/_a2J6n0XpUcc/TAZrH8A8c9I/AAAAAAAAALo/lKNbwk54Eu8/s72-c/icmp+paquetes.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://martin-edmundo.blogspot.com/2010/06/packeth-builder-of-raw-tcpip-packet.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUcDQXw-eip7ImA9Wx9XEk0.&quot;"><id>tag:blogger.com,1999:blog-632987313637017278.post-2198722045707909208</id><published>2010-05-18T10:54:00.000-07:00</published><updated>2011-01-04T21:57:50.252-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-01-04T21:57:50.252-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Redes" /><category scheme="http://www.blogger.com/atom/ns#" term="Desarrollo" /><category scheme="http://www.blogger.com/atom/ns#" term="GNU Linux" /><category scheme="http://www.blogger.com/atom/ns#" term="seguridad" /><title>Un vistazo a Iptables con DMZ</title><content type="html">&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_a2J6n0XpUcc/S_LU2QkOskI/AAAAAAAAALg/kCEgo920QDg/s1600/g5981.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 294px; height: 320px;" src="http://4.bp.blogspot.com/_a2J6n0XpUcc/S_LU2QkOskI/AAAAAAAAALg/kCEgo920QDg/s320/g5981.png" alt="" id="BLOGGER_PHOTO_ID_5472670525833523778" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Revisando el baúl de los recuerdos me encontré con algunos trabajos escolares, y me se me ocurrió que era buena idea comentar alguno de ellos. Definitivamente uno de mis favoritos es iptables, y en este ejemplo hacemos una implementación de esas reglas para una arquitectura con DMZ.&lt;br /&gt;&lt;br /&gt;Les voy a compartir un script, que lo que hace es activar un firewall usando iptables y que a la vez tiene finalidad de ayudarnos a protegernos a nivel de capa de red y transporte. El único requerimiento es tener instalado awk, e iptables en linux.&lt;/div&gt;&lt;br /&gt;&lt;pre&gt;&lt;code&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;#!/bin/bash&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;#Re-adaptado por:&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;#Martin Edmundo Barriga Orozco&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;#Revisamos la dependencia de AWK&lt;/span&gt;&lt;br /&gt;awk --version &gt; /dev/null&lt;br /&gt;if [ "$?" != "0" ]; then&lt;br /&gt;echo "Se requiere AWK para continuar"&lt;br /&gt;exit 1&lt;br /&gt;fi&lt;br /&gt;&lt;br /&gt;echo "Preparando interfaces..."&lt;br /&gt;echo 1 &gt; /proc/sys/net/ipv4/ip_forward&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;#Interfaces de red que usamos para la red LAN, DMZ e Internet&lt;/span&gt;&lt;br /&gt;if_lan="eth1"&lt;br /&gt;if_dmz="eth2"&lt;br /&gt;if_pub="eth0"&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;#Direcciones que tenemos en cada interface&lt;/span&gt;&lt;br /&gt;ip_pub="10.27.46.145"&lt;br /&gt;ip_lan="172.16.1.254"&lt;br /&gt;ip_dmz="192.168.1.254"&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;#Direcciones IPs conocidas.&lt;/span&gt;&lt;br /&gt;web_server="192.168.1.1"&lt;br /&gt;mail_server="192.168.1.3"&lt;br /&gt;dhcp_server="192.168.1.129"&lt;br /&gt;dns_server="192.168.1.2"&lt;br /&gt;&lt;br /&gt;id_lan="172.16.0.0/16"&lt;br /&gt;id_dmz="192.168.1.0/24"&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;#Configuracion final con el usuario&lt;/span&gt;&lt;br /&gt;read -p "Habilitar uso para DMZ [y/N]: " enable_dmz&lt;br /&gt;if [ "$enable_dmz" = "y" ]; then&lt;br /&gt;if [ -n "$if_dmz" ]; then&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;#call metodo_valida_interfaz&lt;/span&gt;&lt;br /&gt;echo "invocamos al metodo de validacion de interfaz"&lt;br /&gt;else&lt;br /&gt;echo "   Interfaces Disponibles:"&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;#Imprimimos el listado de interfaces&lt;/span&gt;&lt;br /&gt;ifconfig -a | awk 'BEGIN{FS="[ ]+" ; RS=""} $1!~/lo/{print "   " NR ") " $1}'&lt;br /&gt;read -p "   Nombre de la interfaz a usar: " if_dmz&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;#call metodo_valida_interfaz&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;#echo "invocamos al metodo de validacion de interfaz"&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;echo -n "   &gt;&gt;IP: " ;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;#Se imprime la direccion IP de la interfaz $if_dmz&lt;/span&gt;&lt;br /&gt;ifconfig $if_dmz | grep 'inet:' | awk 'BEGIN{FS="[ ]+"} {print $3}' | awk 'BEGIN{FS=":"}{print $2}'&lt;br /&gt;read -p "   Desea conservar esta IP para esta interfaz [y/N]: " tmp_ans&lt;br /&gt;if [ "$tmp_ans" != "y" ]; then&lt;br /&gt;read -p "      Nueva IP: " ip_dmz&lt;br /&gt;ifconfig $if_dmz $ip_dmz&lt;br /&gt;fi&lt;br /&gt;fi&lt;br /&gt;fi&lt;br /&gt;&lt;br /&gt;read -p "Habilitar el modo paranoico [y/N]: " enable_paranoico_mode&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;echo "Aplicando reglas del firewall..."&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;#Borrado de las reglas aplicadas actualmente (flush)&lt;/span&gt;&lt;br /&gt;iptables -F        #flush todas las cadenas&lt;br /&gt;iptables -t nat -F&lt;br /&gt;iptables -X        #Borra cadenas definidas por el usuario&lt;br /&gt;iptables -Z&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;#Activamos bitacora de reenvio&lt;/span&gt;&lt;br /&gt;iptables -t nat -A PREROUTING -j LOG&lt;br /&gt;iptables -t nat -A POSTROUTING -j LOG&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;#Politicas por defecto (INPUT OUTPUT FORWARD)&lt;/span&gt;&lt;br /&gt;iptables -P INPUT DROP&lt;br /&gt;iptables -P OUTPUT DROP&lt;br /&gt;iptables -P FORWARD DROP&lt;br /&gt;iptables -t nat -P PREROUTING ACCEPT&lt;br /&gt;iptables -t nat -P POSTROUTING ACCEPT&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;#REDIRECCIONAMIENTO A SERVIDOR WEB EN DMZ DESDE LA LAN Y RED PUBLICA&lt;/span&gt;&lt;br /&gt;iptables -t nat -A PREROUTING -i $if_lan -s $id_lan -d $ip_lan -p tcp --dport 80 -j DNAT --to 192.168.1.1:80&lt;br /&gt;iptables -t nat -A PREROUTING -i $if_pub -d $ip_pub -p tcp --dport 80 -j DNAT --to 192.168.1.1:80&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;#iptables -t nat -A PREROUTING -i $if_lan -s 0.0.0.0 -d 255.255.255.255 -p udp --dport 67 -j DNAT --to 192.168.1.129:67&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;#ABRIENDO PUERTOS PARA INPUT, OUTPUT, FORWARD: TRABAJO SUCIO PERO HAY QUE HACERLO!&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;#Aceptamos peticiones de ICMP para la LAN.&lt;/span&gt;&lt;br /&gt;iptables -A INPUT  -i $if_lan -s $id_lan -d $ip_lan -p icmp -j ACCEPT&lt;br /&gt;iptables -A OUTPUT -o $if_lan -s $ip_lan -d $id_lan -p icmp -j ACCEPT&lt;br /&gt;&lt;br /&gt;if [ "$enable_dmz" = "y" ]; then&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;#Aceptamos peticiones e ICMP para la DMZ.&lt;/span&gt;&lt;br /&gt;iptables -A INPUT  -i $if_dmz -s $id_dmz -d $ip_dmz -p icmp -j ACCEPT&lt;br /&gt;iptables -A OUTPUT -o $if_dmz -s $ip_dmz -d $id_dmz -p icmp -j ACCEPT&lt;br /&gt;fi&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;#Aceptamos peticiones ICMP desde la red publica.&lt;/span&gt;&lt;br /&gt;iptables -A INPUT  -i $if_pub -s 0/0 -p icmp --icmp-type 8 -j ACCEPT&lt;br /&gt;iptables -A OUTPUT -o $if_pub -d 0/0 -p icmp --icmp-type 0 -j ACCEPT&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;#Aceptamos el flujo para el DNS para la LAN. REVISAR&lt;/span&gt;&lt;br /&gt;iptables -A INPUT -i $if_lan -p udp --dport 67 -j ACCEPT&lt;br /&gt;iptables -A OUTPUT -o $if_lan -p udp --sport 67 -j ACCEPT&lt;br /&gt;&lt;br /&gt;if [ "$enable_paranoico_mode" != "y" ]; then&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;#Aceptamos navegar en la web. (Opcional)&lt;/span&gt;&lt;br /&gt;iptables -A INPUT -i $if_pub -p tcp --sport 80 -j ACCEPT&lt;br /&gt;iptables -A OUTPUT -o $if_pub -p tcp --dport 80 -j ACCEPT&lt;br /&gt;iptables -A INPUT -i $if_pub -p tcp --sport 443 -j ACCEPT&lt;br /&gt;iptables -A OUTPUT -o $if_pub -p tcp --dport 443 -j ACCEPT&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;#Aceptamos las peticiones de MSNP, tenemos tolerancia. xD (Opcional)&lt;/span&gt;&lt;br /&gt;iptables -A INPUT -i $if_pub -p tcp --sport 1863 -j ACCEPT&lt;br /&gt;iptables -A OUTPUT -o $if_pub -p tcp --dport 1863 -j ACCEPT&lt;br /&gt;fi&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;#Aceptamos el flujo de DNS para la red publica. REVISAR&lt;/span&gt;&lt;br /&gt;iptables -A INPUT -i $if_pub -p udp --sport 53 -j ACCEPT&lt;br /&gt;iptables -A OUTPUT -o $if_pub -p udp --dport 53 -j ACCEPT&lt;br /&gt;&lt;br /&gt;if [ "$enable_dmz" = "y" ]; then&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;#Permitimos el flujo de de comununicacion entre el WEB server de la DMZ y los clientes de la LAN&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;#Evitamos rafagas de paquetes syn.&lt;/span&gt;&lt;br /&gt;iptables -A FORWARD -i $if_lan -o $if_dmz -s $id_lan -d $web_server -p tcp --dport 80 -m limit --limit 3/minute --limit-burst 3 state --state NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;iptables -A FORWARD -i $if_dmz -o $if_lan -s $web_server -d $id_lan -p tcp --sport 80 -m state --state ESTABLISHED -j ACCEPT&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;#Permitimos el flujo de de comununicacion entre el DNS server de la DMZ y los clientes de la LAN&lt;/span&gt;&lt;br /&gt;iptables -A FORWARD -i $if_lan -o $if_dmz -s $id_lan -d $dns_server -p udp --dport 53 -j ACCEPT&lt;br /&gt;iptables -A FORWARD -i $if_dmz -o $if_lan -s $dns_server -d $id_lan -p udp --sport 53 -j ACCEPT&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;#Permitimos el flujo de de comununicacion entre el MAIL server de la DMZ y los clientes de la LAN&lt;/span&gt;&lt;br /&gt;iptables -A FORWARD -i $if_lan -o $if_dmz -s $id_lan -d $mail_server -p tcp --dport 25 -m state --state NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;iptables -A FORWARD -i $if_dmz -o $if_lan -s $mail_server -d $id_lan -p tcp --sport 25 -m state --state ESTABLISHED -j ACCEPT&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;#Permitimos el flujo de de comununicacion entre el MAIL server de la DMZ y los clientes de la LAN&lt;/span&gt;&lt;br /&gt;iptables -A FORWARD -i $if_lan -o $if_dmz -s $id_lan -d $mail_server -p tcp --dport 110 -m state --state NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;iptables -A FORWARD -i $if_dmz -o $if_lan -s $mail_server -d $id_lan -p tcp --sport 110 -m state --state ESTABLISHED -j ACCEPT&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;#Permitimos el flujo de de comununicacion entre el MAIL server de la DMZ y los clientes de la LAN&lt;/span&gt;&lt;br /&gt;iptables -A FORWARD -i $if_lan -o $if_dmz -s $id_lan -d $mail_server -p tcp --dport 143 -m state --state NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;iptables -A FORWARD -i $if_dmz -o $if_lan -s $mail_server -d $id_lan -p tcp --sport 143 -m state --state ESTABLISHED -j ACCEPT&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;#Permitimos el flujo de ICMP hacia el servidor web&lt;/span&gt;&lt;br /&gt;iptables -A FORWARD -i $if_lan -o $if_dmz -s $id_lan -d $web_server -p icmp -j ACCEPT&lt;br /&gt;iptables -A FORWARD -i $if_dmz -o $if_lan -s $web_server -d $id_lan -p icmp -j ACCEPT&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;#Permitimos a nuestro servidor DNS, solicitar direcciones al DNS del ITMorelia&lt;/span&gt;&lt;br /&gt;iptables -A FORWARD -i $if_dmz -o $if_pub -s $dns_server -d 200.33.171.1 -p udp --dport 53 -j ACCEPT&lt;br /&gt;iptables -A FORWARD -i $if_pub -o $if_dmz -s 200.33.171.1 -d $dns_server -p udp --sport 53 -j ACCEPT&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;#iptables -A FORWARD -i $if_dmz -o $if_pub -p udp --dport 53 -j ACCEPT&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;#iptables -A FORWARD -i $if_pub -o $if_dmz -p udp --sport 53 -j ACCEPT&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;#Permitimos a nuestro servidor DNS, solicitar direcciones al DNS del ITMorelia&lt;/span&gt;&lt;br /&gt;iptables -A FORWARD -i $if_dmz -o $if_pub -s $dns_server -d 200.33.171.8 -p udp --dport 53 -j ACCEPT&lt;br /&gt;iptables -A FORWARD -i $if_pub -o $if_dmz -s 200.33.171.8 -d $dns_server -p udp --sport 53 -j ACCEPT&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;#Permitimos exponer nuestro webserver a la red publica.&lt;/span&gt;&lt;br /&gt;iptables -A FORWARD -i $if_pub -o $if_dmz -d $web_server -p tcp --dport 80 -m limit --limit 5/minute --limit-burst 5  -j ACCEPT&lt;br /&gt;iptables -A FORWARD -i $if_dmz -o $if_pub -s $web_server -p tcp --sport 80 -j ACCEPT&lt;br /&gt;else&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;#Sino hay DMZ permitimos a los clientes LAN consultar DNS externos&lt;/span&gt;&lt;br /&gt;iptables -A FORWARD -i $if_lan -o $if_pub -s $id_lan -p udp --dport 53 -j ACCEPT&lt;br /&gt;iptables -A FORWARD -i $if_pub -o $if_lan -d $id_lan -p udp --sport 53 -j ACCEPT&lt;br /&gt;fi&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;#Permitimos a las personas de la LAN, navegar en la web.&lt;/span&gt;&lt;br /&gt;iptables -A FORWARD -i $if_lan -o $if_pub -s $id_lan -p tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;iptables -A FORWARD -i $if_pub -o $if_lan -d $id_lan -p tcp --sport 80 -m state --state ESTABLISHED -j ACCEPT&lt;br /&gt;iptables -A FORWARD -i $if_lan -o $if_pub -s 172.16.1.21 -p tcp  --dport 443 -j ACCEPT ##1863 :1503 3389&lt;br /&gt;iptables -A FORWARD -i $if_pub -o $if_lan -d 172.16.1.21 -p tcp  --sport 443 -j ACCEPT&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;#Permitimos el uso del MSNP en la computadora del SysAdmin dentro de la LAN&lt;/span&gt;&lt;br /&gt;iptables -A FORWARD -i $if_lan -o $if_pub -s 172.16.1.21 -p tcp  --dport 1863 -j ACCEPT ##1863 :1503 3389&lt;br /&gt;iptables -A FORWARD -i $if_pub -o $if_lan -d 172.16.1.21 -p tcp  --sport 1863 -j ACCEPT&lt;br /&gt;iptables -A FORWARD -i $if_lan -o $if_pub -s 172.16.1.21 -p udp --dport 1863 -j ACCEPT&lt;br /&gt;iptables -A FORWARD -i $if_pub -o $if_lan -d 172.16.1.21 -p udp --sport 1863 -j ACCEPT&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;#ENMASCARAMIENTO DE LA RED Y LA DMZ&lt;/span&gt;&lt;br /&gt;iptables -t nat -A POSTROUTING -o $if_pub -s $id_lan -j MASQUERADE&lt;br /&gt;if [ "$enable_dmz" = "y" ]; then&lt;br /&gt;iptables -t nat -A POSTROUTING -o $if_pub -s $dns_server -p udp --dport 53 -j MASQUERADE&lt;br /&gt;iptables -t nat -A POSTROUTING -o $if_pub -s $id_dmz  -j MASQUERADE&lt;br /&gt;iptables -t nat -A POSTROUTING -o $if_dmz -s $id_lan -d $web_server -p tcp --dport 80 -j SNAT --to-source $ip_dmz&lt;br /&gt;iptables -t nat -A POSTROUTING -o $if_dmz -s ! $id_lan -d $web_server -p tcp --dport 80 -j SNAT --to-source $ip_dmz&lt;br /&gt;#iptables -t nat -A POSTROUTING -o $if_dmz -s 0.0.0.0 -d $dhcp_server -p udp --dport 67 -j SNAT --to-source $ip_dmz&lt;br /&gt;fi&lt;br /&gt;&lt;br /&gt;echo "Reglas aplicadas correctamente :)"&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/632987313637017278-2198722045707909208?l=martin-edmundo.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/zchV-WloRl8P4BtKqusoM_xCCM8/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/zchV-WloRl8P4BtKqusoM_xCCM8/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/zchV-WloRl8P4BtKqusoM_xCCM8/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/zchV-WloRl8P4BtKqusoM_xCCM8/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/MartinEdmundo/~4/Yu-rP7PYFIA" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://martin-edmundo.blogspot.com/feeds/2198722045707909208/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=632987313637017278&amp;postID=2198722045707909208" title="0 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/632987313637017278/posts/default/2198722045707909208?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/632987313637017278/posts/default/2198722045707909208?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/MartinEdmundo/~3/Yu-rP7PYFIA/un-vistazo-iptables-con-dmz.html" title="Un vistazo a Iptables con DMZ" /><author><name>Martin Edmundo</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="25" height="32" src="http://bp3.blogger.com/_a2J6n0XpUcc/SB6fHbvGM_I/AAAAAAAAAAc/HHzm3RxeEC0/S220/TNew.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/_a2J6n0XpUcc/S_LU2QkOskI/AAAAAAAAALg/kCEgo920QDg/s72-c/g5981.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://martin-edmundo.blogspot.com/2010/05/un-vistazo-iptables-con-dmz.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEUBSXY7eyp7ImA9WxBVF0k.&quot;"><id>tag:blogger.com,1999:blog-632987313637017278.post-5598151433624079015</id><published>2010-02-21T00:23:00.000-08:00</published><updated>2010-02-21T00:50:58.803-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-02-21T00:50:58.803-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Actividad Social" /><category scheme="http://www.blogger.com/atom/ns#" term="Noticias" /><title>OLPC XO, Netbook fundacion Telmex.</title><content type="html">&lt;div style="text-align: justify;"&gt;Hace unos días y de manera involuntaria me entere de que la fundación Telmex, hace donativos, de unas netbooks  para escuelas primarias de escasos recursos, siempre y cuando la escuela lo solicite y después  de hacer una evaluación la fundación telmex determina si procede el donativo o no. Estas netbooks  no están  en venta en México. Para mas información puedo compartir el teléfono del HelpDesk 01 800 822 02 50.&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_a2J6n0XpUcc/S4DvZ6n9-SI/AAAAAAAAAK4/eswUp653hZA/s1600-h/IMG_0003.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 240px;" src="http://3.bp.blogspot.com/_a2J6n0XpUcc/S4DvZ6n9-SI/AAAAAAAAAK4/eswUp653hZA/s320/IMG_0003.JPG" alt="" id="BLOGGER_PHOTO_ID_5440611578376223010" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Tengo que agradecer a mi amigo Roman Aguilar quien amablemente me dejo revisar un equipo de estos y así poder compartirlo con ustedes. El diseño es muy atractivo y como juguete de pruebas seria un muy buen ambiente.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_a2J6n0XpUcc/S4Dxa7X7eQI/AAAAAAAAALQ/nk1xFS0J62A/s1600-h/IMG_0006.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 240px;" src="http://1.bp.blogspot.com/_a2J6n0XpUcc/S4Dxa7X7eQI/AAAAAAAAALQ/nk1xFS0J62A/s320/IMG_0006.JPG" alt="" id="BLOGGER_PHOTO_ID_5440613794780510466" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Se trata de una computadora portátil desarrollado por la organización One Laptop Per Child, cuyo objetivo es apoyar a los niños de escasos recursos de todo el mundo, poniendo a su alcaze computadoras portátiles. Para mas información podemos ver [ &lt;a href="http://es.wikipedia.org/wiki/OLPC"&gt;aquí&lt;/a&gt; ].&lt;br /&gt;&lt;br /&gt;Esta diminuta computadora tiene un sistema basado en GNU/linux, y un sistema de escritorios, &lt;a href="http://en.wikipedia.org/wiki/Sugar_%28GUI%29,"&gt;sugar&lt;/a&gt; con iconos muy grandes ideal para los niños, aquí podemos encontrar aplicaciones para colorear, navegar en Internet, juegos, una consola!. Como otras aplicaciones también tiene gcc, sshd, es un fedora así que una vez en Internet podemos instalar mas cosas.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_a2J6n0XpUcc/S4Dw0jNrfcI/AAAAAAAAALI/6T0nXLo4Iz4/s1600-h/IMG_0005.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 240px;" src="http://4.bp.blogspot.com/_a2J6n0XpUcc/S4Dw0jNrfcI/AAAAAAAAALI/6T0nXLo4Iz4/s320/IMG_0005.JPG" alt="" id="BLOGGER_PHOTO_ID_5440613135460040130" border="0" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;/*** Nucleo ***/&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;[olpc@xo-1D-F7-DA ~]$ uname -a&lt;/span&gt;&lt;br /&gt;Linux xo-1D-F7DA.localdomain 2.6.22-20080312.2.olpc.f3687aa7e09fd65 #1 PREEMPT Wed Mar 12 21:25:06 EDT 2008 i586 i586 i386 GNU/Linux&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;/*** Distribución usada ***/&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;[olpc@xo-1D-F7-DA ~]$ cat /etc/fedora-release&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;Fedora release 7 (Moonshine)&lt;/span&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_a2J6n0XpUcc/S4DytFMyZ8I/AAAAAAAAALY/18nA_rH8lk4/s1600-h/telmex1.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 212px;" src="http://1.bp.blogspot.com/_a2J6n0XpUcc/S4DytFMyZ8I/AAAAAAAAALY/18nA_rH8lk4/s320/telmex1.jpg" alt="" id="BLOGGER_PHOTO_ID_5440615206167406530" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;/*** Cantidad de memoria ***/&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;[olpc@xo-1D-F7-DA ~]$ free -m&lt;/span&gt;&lt;br /&gt;     total       used       free     shared    buffers     cached&lt;br /&gt;Mem:           232        218         13          0          0        120&lt;br /&gt;-/+ buffers/cache:         98        134&lt;br /&gt;Swap:            0          0          0&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;/*** HD ***/&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;[olpc@xo-1D-F7-DA ~]$ df -h&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;S.ficheros          Tamaño Usado  Disp Uso% Montado en&lt;br /&gt;mtd0                  1.0G  375M  650M  37% /&lt;br /&gt;tmpfs                  35M     0   35M   0%    /dev/shm&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;/*** Perifericos PCI ***/&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;[olpc@xo-1D-F7-DA ~]$ lspci&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;00:01.0 Host bridge: Advanced Micro Devices [AMD] Unknown device 0028 (rev 21)&lt;br /&gt;00:01.1 VGA compatible controller: Advanced Micro Devices [AMD] Geode LX Video&lt;br /&gt;00:01.2 Entertainment encryption device: Advanced Micro Devices [AMD] Geode LX AES Security Block&lt;br /&gt;00:0c.0 FLASH memory: Marvell Technology Group Ltd. Unknown device 4100 (rev 10)&lt;br /&gt;00:0c.1 Generic system peripheral [0805]: Marvell Technology Group Ltd. Unknown device 4101 (rev 10)&lt;br /&gt;00:0c.2 Multimedia video controller: Marvell Technology Group Ltd. Unknown device 4102 (rev 10)&lt;br /&gt;00:0f.0 ISA bridge: Advanced Micro Devices [AMD] CS5536 [Geode companion] ISA (rev 03)&lt;br /&gt;00:0f.3 Multimedia audio controller: Advanced Micro Devices [AMD] CS5536 [Geode companion] Audio (rev 01)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;00:0f.4 USB Controller: Advanced Micro Devices [AMD] CS5536 [Geode companion] OHC (rev 02)&lt;br /&gt;00:0f.5 USB Controller: Advanced Micro Devices [AMD] CS5536 [Geode companion] EHC (rev 02)&lt;br /&gt;&lt;/span&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_a2J6n0XpUcc/S4DvwUi_bxI/AAAAAAAAALA/VKOzgn21DBk/s1600-h/IMG_0004.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 240px;" src="http://3.bp.blogspot.com/_a2J6n0XpUcc/S4DvwUi_bxI/AAAAAAAAALA/VKOzgn21DBk/s320/IMG_0004.JPG" alt="" id="BLOGGER_PHOTO_ID_5440611963291791122" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;/*** CPU ***/&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;[olpc@xo-1D-F7-DA proc]$ cat cpuinfo&lt;/span&gt;&lt;br /&gt;processor       : 0&lt;br /&gt;vendor_id       : AuthenticAMD ( ¿que?..., ¿hay otro?  xD )&lt;br /&gt;cpu family      : 5&lt;br /&gt;model           : 10&lt;br /&gt;model name      : Geode(TM) Integrated Processor by AMD PCS&lt;br /&gt;stepping        : 2&lt;br /&gt;cpu MHz         : 433.386&lt;br /&gt;cache size      : 128 KB&lt;br /&gt;fpu             : yes&lt;br /&gt;fpu_exception   : yes&lt;br /&gt;cpuid level     : 1&lt;br /&gt;wp              : yes&lt;br /&gt;flags           : fpu de pse tsc msr cx8 sep pge cmov clflush mmx mmxext 3dnowext 3dnow&lt;br /&gt;bogomips        : 867.83&lt;br /&gt;clflush size    : 32&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:100%;"&gt;Finalmente un pequeño video:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;object height="344" width="425"&gt;&lt;param name="movie" value="http://www.youtube.com/v/VUe18X8dur4&amp;amp;hl=es_ES&amp;amp;fs=1&amp;amp;"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;embed src="http://www.youtube.com/v/VUe18X8dur4&amp;amp;hl=es_ES&amp;amp;fs=1&amp;amp;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" height="344" width="425"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&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/632987313637017278-5598151433624079015?l=martin-edmundo.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/bDtOOfazknWksqNWyceFI7oSXWs/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/bDtOOfazknWksqNWyceFI7oSXWs/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/bDtOOfazknWksqNWyceFI7oSXWs/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/bDtOOfazknWksqNWyceFI7oSXWs/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/MartinEdmundo/~4/ziqktwpxItE" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://martin-edmundo.blogspot.com/feeds/5598151433624079015/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=632987313637017278&amp;postID=5598151433624079015" title="12 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/632987313637017278/posts/default/5598151433624079015?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/632987313637017278/posts/default/5598151433624079015?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/MartinEdmundo/~3/ziqktwpxItE/olpc-xo-netbook-fundacion-telmex.html" title="OLPC XO, Netbook fundacion Telmex." /><author><name>Martin Edmundo</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="25" height="32" src="http://bp3.blogger.com/_a2J6n0XpUcc/SB6fHbvGM_I/AAAAAAAAAAc/HHzm3RxeEC0/S220/TNew.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/_a2J6n0XpUcc/S4DvZ6n9-SI/AAAAAAAAAK4/eswUp653hZA/s72-c/IMG_0003.JPG" height="72" width="72" /><thr:total>12</thr:total><feedburner:origLink>http://martin-edmundo.blogspot.com/2010/02/olpc-xo-netbook-fundacion-telmex.html</feedburner:origLink></entry><entry gd:etag="W/&quot;Dk8EQXo5eip7ImA9WxBXEk4.&quot;"><id>tag:blogger.com,1999:blog-632987313637017278.post-6488285100109114005</id><published>2010-01-23T00:01:00.001-08:00</published><updated>2010-01-23T00:20:00.422-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-01-23T00:20:00.422-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Actividad Social" /><title>Martin, ¿donde estas? Te extrañamos!.</title><content type="html">&lt;div style="text-align: justify;"&gt;Tal vez el titulo de este post pueda parecer un poco extremo, pero seguro te robe una sonrisa. Bien, este tiempo pase un poco ausente por que he tenido un poco de trabajo, muchas cosas buenas y malas en mi vida. Tratare de categorizar esto.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div style="text-align: justify;"&gt;Trabajo: Afortunadamente este año se visualiza muy bueno, inicie con el pie derecho y así quiero que se mantenga, estoy trabajando en algo que me gusta, la administración de servidores tanto GNU/Linux (RedHat Enterprise, Ubuntu, etc) y M$ Windows.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Escuela: Me da pena admitirlo, pero los resultados nos son los esperados, voy atrasado en la tesis "Diseño e implementación de una técnica en tiempo real para los sistemas de prevension de intrusos". Tengo una pequeña implementación con Snort que debo aun modificar, unos artículos que he leido, pero no es suficiente.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Proyectos: &lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li style="text-align: justify;"&gt;Marioneta: Codigo del prototipo publicado en google, a la brevedad comparto el url. Control de escritorio remoto.&lt;/li&gt;&lt;li style="text-align: justify;"&gt;Futura Medica: Desarrollo en openlaszlo para el control de pacientes y diccionario medico.&lt;/li&gt;&lt;li style="text-align: justify;"&gt;Productos Naturistas: Desarrollo en openlaszlo para venta de producto multinivel.&lt;/li&gt;&lt;li style="text-align: justify;"&gt;Implementación de MediaWiki y los problemas que se presentaron, espero comentar algo en post futuros.&lt;/li&gt;&lt;/ul&gt;&lt;div style="text-align: justify;"&gt;Una cosa mas que quiero compartir, es que he estado haciendo ejercicio, ya tengo como dos meses trabajando con brazos y abdomen, sin embargo, esto no es lo que quiero; estoy buscando salud, por lo tanto me gustaria ir a correr espero un dia comenzar y de ahi no dejarlo.&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/632987313637017278-6488285100109114005?l=martin-edmundo.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/tjpkxkFDmQlyI5Nx6knq7_3PapY/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/tjpkxkFDmQlyI5Nx6knq7_3PapY/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/tjpkxkFDmQlyI5Nx6knq7_3PapY/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/tjpkxkFDmQlyI5Nx6knq7_3PapY/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/MartinEdmundo/~4/0zNzDSfSYCU" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://martin-edmundo.blogspot.com/feeds/6488285100109114005/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=632987313637017278&amp;postID=6488285100109114005" title="2 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/632987313637017278/posts/default/6488285100109114005?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/632987313637017278/posts/default/6488285100109114005?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/MartinEdmundo/~3/0zNzDSfSYCU/martin-donde-estas-te-extranamos.html" title="Martin, ¿donde estas? Te extrañamos!." /><author><name>Martin Edmundo</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="25" height="32" src="http://bp3.blogger.com/_a2J6n0XpUcc/SB6fHbvGM_I/AAAAAAAAAAc/HHzm3RxeEC0/S220/TNew.jpg" /></author><thr:total>2</thr:total><feedburner:origLink>http://martin-edmundo.blogspot.com/2010/01/martin-donde-estas-te-extranamos.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUcDQXw-eip7ImA9Wx9XEk0.&quot;"><id>tag:blogger.com,1999:blog-632987313637017278.post-6740497443644920106</id><published>2009-12-19T16:00:00.000-08:00</published><updated>2011-01-04T21:57:50.252-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-01-04T21:57:50.252-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="GNU Linux" /><category scheme="http://www.blogger.com/atom/ns#" term="Software Libre" /><title>Installing glibc2.4, but faill :(</title><content type="html">&lt;div style="text-align: justify;"&gt;Hace unas semanas me vi en la necesidad de actualizar mi viejo flashplayer plugin de la version 8 a la 10, ya que no podia ver las video conferencias de mis amigos en servicios como ustream, videos en &lt;a href="http://www.facebook.com"&gt;facebook&lt;/a&gt;, etc.&lt;br /&gt;&lt;br /&gt;En principio ese era el problema, siguiendo el procedimiento coloque el &lt;span style="font-style: italic;"&gt;libflashplayer.so&lt;/span&gt; en el directorio de plugins del browser, al tratar de cargar los videos podemos ver un mensaje de error, donde los requerimientos de &lt;span style="font-style: italic;"&gt;libflashplayer&lt;/span&gt; son &lt;span style="font-style: italic;"&gt;glibc2.4&lt;/span&gt;. En mi lap con Debian etch la es &lt;span style="font-style: italic;"&gt;glibc2.3.6&lt;/span&gt;. Tambien estamos corriendo Linux  2.6.23.1.&lt;br /&gt;&lt;br /&gt;De el problema de actualizar flashplayer, tendríamos que pasar entonces a actualizar glibc, que es una libreria base del sistema. A pesar de contar con glibc mas nuevos en la web del proyecto, se descargo la 2.4. No me pregunten por que..., solo lo hice así.  A continuación escribo el procedimiento que seguí para conseguir mas problemas.&lt;br /&gt;&lt;br /&gt;Descargar el archivo de &lt;span style="font-style: italic;"&gt;glibc2.4&lt;/span&gt; y desempaquetarlo dentro de&lt;br /&gt;&lt;span style="font-style: italic; font-weight: bold; color: rgb(0, 0, 153);"&gt;/usr/gnu/glibc-2.4&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;La recomendación de los desarrolladores es crear un directorio donde construiremos el paquete, de esta manera solo borramos el directorio de construcción y listo, podemos repetir los pasos.&lt;br /&gt;&lt;span style="font-weight: bold; font-style: italic; color: rgb(0, 0, 153);"&gt;/usr/gnu/glibc-build&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Entrar en este segundo directorio y configurarlo, para eso corriendo el script, en esta parte cambiamos el prefix, ya que con el que tiene por defecto se presentaron problemas. Así que ejecutamos la siguiente linea:&lt;br /&gt;&lt;span style="font-style: italic; font-weight: bold; color: rgb(0, 0, 153);"&gt;../glibc-2.4/configure --prefix=/usr&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Para la compilacion se requiere el &lt;a href="http://es.wikipedia.org/wiki/AWK"&gt;awk&lt;/a&gt; de gnu, &lt;a href="http://www.gnu.org/software/gawk/"&gt;gawk&lt;/a&gt;, y sobre todo las herramientas de compilación como make y gcc. Para eso ejecutar:&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153); font-style: italic; font-weight: bold;"&gt;../glibc-2.4/make &amp;amp;&amp;amp; ../glibc-2.4/make check&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Hasta aquí todo en orden la compilación, solo falta la instalación de esta nueva biblioteca, esa instalación es el "paso de la muerte", y debería hacerse en supervision de un adulto :)&lt;br /&gt;&lt;br /&gt;Siguiendo las recomendaciones debemos iniciar en modo monouser, para evitar el rompimiento de algunas bibliotecas (LOL), y una vez ahí  instalar con la siguiente linea:&lt;br /&gt;&lt;span style="font-weight: bold; font-style: italic; color: rgb(0, 0, 153);"&gt;env LANGUAGE=C LC_ALL=C make install&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;En ese momento el sistema se pone a instalar, pero en mi caso, después de un rato de felicidad viendo que todo iva en orden, se detiene en el siguiente mensaje&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 102, 102); font-style: italic;"&gt;GLIBC_PRIVATE not defined&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 102, 102); font-style: italic;"&gt;Kernel Panic - not syncing: Attempted to kill init!&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;WTF! seguramente no son buenas noticias por que después de eso, ningún comando funciona, reiniciar tampoco sirve de mucho, por que el Kernel panic persiste. Al momento de escribir este post lo hago desde mi debian, logre arreglarlo siguiendo el siguiente [ &lt;a href="http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=419036"&gt;tip&lt;/a&gt; ], al parecer es un bug de glib. Por los problemas que tengo en mi sistema, flashplayer, espacio insuficiente, problemas de montaje con ntfs. Por estas razones y por que viene un ano nuevo, comenzaremos con un distro nuevo... Lenny :)&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/632987313637017278-6740497443644920106?l=martin-edmundo.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/iMusf_b_1A6wpuHN9PM4sDd-TBc/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/iMusf_b_1A6wpuHN9PM4sDd-TBc/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/iMusf_b_1A6wpuHN9PM4sDd-TBc/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/iMusf_b_1A6wpuHN9PM4sDd-TBc/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/MartinEdmundo/~4/1zhVD0JNgQs" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://martin-edmundo.blogspot.com/feeds/6740497443644920106/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=632987313637017278&amp;postID=6740497443644920106" title="0 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/632987313637017278/posts/default/6740497443644920106?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/632987313637017278/posts/default/6740497443644920106?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/MartinEdmundo/~3/1zhVD0JNgQs/installing-glibc24-but-faill.html" title="Installing glibc2.4, but faill :(" /><author><name>Martin Edmundo</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="25" height="32" src="http://bp3.blogger.com/_a2J6n0XpUcc/SB6fHbvGM_I/AAAAAAAAAAc/HHzm3RxeEC0/S220/TNew.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://martin-edmundo.blogspot.com/2009/12/installing-glibc24-but-faill.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUcDQXw-eip7ImA9Wx9XEk0.&quot;"><id>tag:blogger.com,1999:blog-632987313637017278.post-6685951799262890018</id><published>2009-11-17T11:51:00.000-08:00</published><updated>2011-01-04T21:57:50.252-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-01-04T21:57:50.252-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="GNU Linux" /><category scheme="http://www.blogger.com/atom/ns#" term="Software Libre" /><title>Enviando mensajes SMS desde la consola</title><content type="html">&lt;div style="text-align: justify;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.gnokii.org/graphics/logo.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 209px; height: 107px;" src="http://www.gnokii.org/graphics/logo.jpg" alt="" border="0" /&gt;&lt;/a&gt;Hace algunos días he tenido la necesidad de enviar mensajes SMS desde mi compu, esto para que sea ella misma la que de manera automatizada la que me mande el mensaje cuando yo ande en la calle paseando, trabajando o en algún antro pasando la noche, todo esto cuando mi computadora se entere de algún suceso emergente y anómalo que ha ocurrido, en mi caso eran notificaciones de &lt;a href="http://www.nagios.org/"&gt;Nagios&lt;/a&gt;.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Para esto ocupamos 3 cosas, eeemmmm mejor 4,&lt;br /&gt;1. Un celular preferentemente listado [ aquí ]&lt;br /&gt;2. Una compu, con soporte para USB, IRA, o algún medio de comunicación con el cel&lt;br /&gt;3. Software &lt;a href="http://www.gnokii.org/"&gt;Gnokii&lt;/a&gt;&lt;br /&gt;4. Actitud positiva y ganas de aprender. :)&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;&lt;a href="http://www.gnokii.org/"&gt;Gnokii &lt;/a&gt;es un sofware que nos sirve para tener una muy amplia comunicación con el celular: llamadas, agenda de contactos, mensajes, etc. Lo descargamos e instalamos, cuanta con interfaces de linea de comando y gráfico.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;En mi caso, tengo un celular modelo Sony Ericsson K790 (el cual me patrocino mi papá), y lo conecte por medio del USB, y me dio como resultado los siguientes archivos:&lt;br /&gt;&lt;/div&gt;/dev/ACM0&lt;br /&gt;/dev/ACM1&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Como podemos ver en este caso era necesario tener soporte para ACM en el kernel (mm ¿ya dije que instale en Debian etch con 2.6.23.1?? ). Leyendo un poco la documentación, me he creado un archivo en archivo de configuración local en mi home:&lt;br /&gt;&lt;/div&gt;$HOME/.gnokiirc&lt;br /&gt;&lt;br /&gt;El cual básicamente en sus lineas mas importantes me quedo así:&lt;br /&gt;[ global ]&lt;br /&gt;port=/dev/ACM0&lt;br /&gt;mode=AT&lt;br /&gt;connection=serial&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Finalmente el envio de mensajes podemos hacerlo con una linea como la que sigue:&lt;br /&gt;&lt;/div&gt;$echo Hola como estan, envio desde gnokii | gnokii --sendsms xxxxxxxxxx&lt;br /&gt;&lt;br /&gt;donde:&lt;br /&gt;xxxxxxxxxx, es el numero de teléfono&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Una observación importante es notar que echo no tiene la doble comilla, me dio problemas.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_a2J6n0XpUcc/SwL_-ioOhaI/AAAAAAAAAKg/Fo0CR3Q0VtQ/s1600/img_0001.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 240px;" src="http://1.bp.blogspot.com/_a2J6n0XpUcc/SwL_-ioOhaI/AAAAAAAAAKg/Fo0CR3Q0VtQ/s320/img_0001.jpg" alt="" id="BLOGGER_PHOTO_ID_5405163952710518178" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/632987313637017278-6685951799262890018?l=martin-edmundo.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/1hyQeYRPCZySINIybtsxJY6qvLk/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/1hyQeYRPCZySINIybtsxJY6qvLk/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/1hyQeYRPCZySINIybtsxJY6qvLk/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/1hyQeYRPCZySINIybtsxJY6qvLk/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/MartinEdmundo/~4/enyqpwd-v9I" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://martin-edmundo.blogspot.com/feeds/6685951799262890018/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=632987313637017278&amp;postID=6685951799262890018" title="0 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/632987313637017278/posts/default/6685951799262890018?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/632987313637017278/posts/default/6685951799262890018?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/MartinEdmundo/~3/enyqpwd-v9I/enviando-mensajes-sms-desde-la-consola.html" title="Enviando mensajes SMS desde la consola" /><author><name>Martin Edmundo</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="25" height="32" src="http://bp3.blogger.com/_a2J6n0XpUcc/SB6fHbvGM_I/AAAAAAAAAAc/HHzm3RxeEC0/S220/TNew.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/_a2J6n0XpUcc/SwL_-ioOhaI/AAAAAAAAAKg/Fo0CR3Q0VtQ/s72-c/img_0001.jpg" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://martin-edmundo.blogspot.com/2009/11/enviando-mensajes-sms-desde-la-consola.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUYFR3g5cCp7ImA9Wx9XEk0.&quot;"><id>tag:blogger.com,1999:blog-632987313637017278.post-861423595254307592</id><published>2009-11-11T23:26:00.000-08:00</published><updated>2011-01-04T21:58:36.628-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-01-04T21:58:36.628-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Software Libre" /><category scheme="http://www.blogger.com/atom/ns#" term="Nagios" /><title>Installing statusmap supply to Nagios</title><content type="html">&lt;div style="text-align: justify;"&gt;Commonly i don't write ideas than know as important less, but in this moment i wanna do because tomorrow may be i forget it (i don't know what append with my mind) and the way from resolve it. When i installed Nagios sources, guess that there was a mistake in this process, Nagios is run correctly but i don have cgi statusmap supply that built informative maps.&lt;br /&gt;&lt;br /&gt;The statusmap cgi need gd library to built maps and graphics flows, this library is a little bit leave. Gd can to built jpeg, gif, png, xpm format. But i was not lucky because my system don't had jpeg supply, OMG!. The next step? install it please xD&lt;br /&gt;&lt;br /&gt;i used the default configuration from jpeg lib, and after do 'make install', it installed over /usr/local/include, copying files as jpeglib.h, jconfig.h, jmorecfg.h and jerror.h. Once ready the library and provided her supply, we're ready to install. After from excute the configure script, a good report is the next:&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Support for PNG library:          yes&lt;br /&gt;Support for JPEG library:         yes&lt;br /&gt;Support for Freetype 2.x library: yes&lt;br /&gt;Support for Fontconfig library:   yes&lt;br /&gt;Support for Xpm library:          no&lt;br /&gt;Support for pthreads:             yes&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Now, i must continue with a tip that a lot of developers put in his documentacion "enjoy!!", only the xpm supply that i not use, was not installed :) then gd was installed and also jpeg supply. In fact the files was copying to /usr/local/include directory gd.h, gd_io.h and somebody else.&lt;br /&gt;&lt;br /&gt;Then with Nagios, we must configure it, compile it and after the statusmap.cgi is ready :)&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_a2J6n0XpUcc/Svu6M4EZY0I/AAAAAAAAAKY/L8LlZTzej2Y/s1600-h/nagios2.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 199px;" src="http://2.bp.blogspot.com/_a2J6n0XpUcc/Svu6M4EZY0I/AAAAAAAAAKY/L8LlZTzej2Y/s320/nagios2.png" alt="" id="BLOGGER_PHOTO_ID_5403116908333065026" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/632987313637017278-861423595254307592?l=martin-edmundo.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/yFoX8zKJn8mYwsDP1qInzxM5lwM/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/yFoX8zKJn8mYwsDP1qInzxM5lwM/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/yFoX8zKJn8mYwsDP1qInzxM5lwM/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/yFoX8zKJn8mYwsDP1qInzxM5lwM/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/MartinEdmundo/~4/VtjPZNWYQZU" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://martin-edmundo.blogspot.com/feeds/861423595254307592/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=632987313637017278&amp;postID=861423595254307592" title="0 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/632987313637017278/posts/default/861423595254307592?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/632987313637017278/posts/default/861423595254307592?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/MartinEdmundo/~3/VtjPZNWYQZU/installing-statusmap-supply-to-nagios.html" title="Installing statusmap supply to Nagios" /><author><name>Martin Edmundo</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="25" height="32" src="http://bp3.blogger.com/_a2J6n0XpUcc/SB6fHbvGM_I/AAAAAAAAAAc/HHzm3RxeEC0/S220/TNew.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/_a2J6n0XpUcc/Svu6M4EZY0I/AAAAAAAAAKY/L8LlZTzej2Y/s72-c/nagios2.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://martin-edmundo.blogspot.com/2009/11/installing-statusmap-supply-to-nagios.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkMFQ388fyp7ImA9WxNUFEs.&quot;"><id>tag:blogger.com,1999:blog-632987313637017278.post-2324679963691996809</id><published>2009-11-05T14:43:00.000-08:00</published><updated>2009-11-05T15:40:12.177-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-11-05T15:40:12.177-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Actividad Social" /><title>La "nueva era de crecimiento y de desarrollo" en México</title><content type="html">&lt;div style="text-align: justify;"&gt;Me acaba de llegar al correo, en resumen de como quedan nuestras finanzas (trabajadores de México) antes y después del paquete económico.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;********&lt;br /&gt;&lt;span style=";font-family:'Verdana','sans-serif';font-size:10;"  &gt;&lt;span style="font-size:85%;"&gt;Si crees que el IVA solo subió un punto y eso no es nada, déjame decirte lo siguiente:&lt;br /&gt;Si ganas &lt;span style="font-style: italic; font-weight: bold;"&gt;12,000&lt;/span&gt; al mes esto es lo que te va a afectar.&lt;br /&gt;&lt;table style="width: 483px; height: 281px;" border="0"&gt;&lt;br /&gt;&lt;tbody&gt;&lt;tr&gt;&lt;br /&gt;&lt;td style="font-weight: bold; font-style: italic;"&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/td&gt;&lt;td style="font-weight: bold; font-style: italic;"&gt;&lt;span style="font-size:100%;"&gt;HOY&lt;/span&gt;&lt;/td&gt;&lt;td style="font-weight: bold; font-style: italic;"&gt;&lt;span style="font-size:100%;"&gt;En 2010&lt;/span&gt;&lt;/td&gt;&lt;br /&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;br /&gt;&lt;td style="font-weight: bold; color: rgb(0, 153, 0);"&gt;&lt;span style="font-size:100%;"&gt;Tu Sueldo&lt;br /&gt;&lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span style="font-size:100%;"&gt;$12,000 pesos&lt;br /&gt;&lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span style="font-size:100%;"&gt;$12,000 pesos&lt;br /&gt;&lt;/span&gt;&lt;/td&gt;&lt;br /&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;br /&gt;&lt;td style="font-weight: bold; color: rgb(0, 153, 0);"&gt;&lt;span style="font-size:100%;"&gt;ISR&lt;br /&gt;&lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span style="font-size:100%;"&gt;-28%&lt;br /&gt;&lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span style="font-size:100%;"&gt;-30%&lt;br /&gt;&lt;/span&gt;&lt;/td&gt;&lt;br /&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;br /&gt;&lt;td style="font-weight: bold; color: rgb(0, 153, 0);"&gt;&lt;span style="font-size:100%;"&gt;Eso Seria&lt;br /&gt;&lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span style=";font-family:'Verdana','sans-serif';font-size:100%;"  &gt;&lt;span style="font-weight: bold;"&gt;$3,360&lt;/span&gt; pesos de impuestos&lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span style=";font-family:'Verdana','sans-serif';font-size:100%;"  &gt;$&lt;b&gt;3,600 &lt;/b&gt;pesos de impuestos&lt;/span&gt;&lt;/td&gt;&lt;br /&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;br /&gt;&lt;td style="font-weight: bold; color: rgb(0, 153, 0);"&gt;&lt;span style="font-size:100%;"&gt;Te quedarán&lt;br /&gt;&lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-weight: bold;"&gt;$8,640&lt;/span&gt; pesos&lt;br /&gt;&lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-weight: bold;"&gt;$8,400&lt;/span&gt; pesos&lt;br /&gt;&lt;/span&gt;&lt;/td&gt;&lt;br /&gt;&lt;/tr&gt;&lt;br /&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;Eso es $240 pesos menos al mes que es exactamente el &lt;b&gt;&lt;span style="color:red;"&gt;2.77%&lt;/span&gt;&lt;/b&gt; de tu sueldo&lt;br /&gt;                  (Si, 2 puntos en el ISR significa 2.77% real en tu sueldo)&lt;br /&gt;&lt;br /&gt;Imaginemos por un momento que el resto de tu sueldo lo gastas en cosas pagando IVA (esto para efectos prácticos).&lt;br /&gt;&lt;table style="width: 440px; height: 300px;" boder="0"&gt;&lt;br /&gt;&lt;tbody&gt;&lt;tr&gt;&lt;br /&gt;&lt;td&gt;&lt;br /&gt;&lt;/td&gt;&lt;td style="font-weight: bold; font-style: italic;"&gt;HOY&lt;/td&gt;&lt;td style="font-weight: bold; font-style: italic;"&gt;En 2010&lt;/td&gt;&lt;br /&gt;&lt;/tr&gt;&lt;tr&gt;&lt;br /&gt;&lt;/tr&gt;&lt;tr&gt;&lt;br /&gt;&lt;td style="font-weight: bold; color: rgb(0, 153, 0);"&gt;Te Quedaron&lt;/td&gt;&lt;td&gt;$8,640 pesos&lt;/td&gt;&lt;td&gt;$8,400 pesos&lt;/td&gt;&lt;br /&gt;&lt;/tr&gt;&lt;tr&gt;&lt;br /&gt;&lt;/tr&gt;&lt;tr&gt;&lt;br /&gt;&lt;td style="font-weight: bold; color: rgb(0, 153, 0);"&gt;IVA&lt;/td&gt;&lt;td&gt;$1,296 pesos IVA 15%&lt;/td&gt;&lt;td&gt;$1,344 pesos IVA 16%&lt;/td&gt;&lt;br /&gt;&lt;/tr&gt;&lt;tr&gt;&lt;br /&gt;&lt;/tr&gt;&lt;tr&gt;&lt;br /&gt;&lt;td style="font-weight: bold; color: rgb(0, 153, 0);"&gt;Para gastar queda&lt;/td&gt;&lt;td&gt;$7,344.00&lt;/td&gt;&lt;td&gt;$7,056&lt;/td&gt;&lt;br /&gt;&lt;/tr&gt;&lt;tr&gt;&lt;br /&gt;&lt;/tr&gt;&lt;tr&gt;&lt;br /&gt;&lt;td style="font-weight: bold; color: rgb(0, 153, 0);"&gt;¿cuanto de impuestos?&lt;/td&gt;&lt;td&gt;$4,656 pesos (38.8 %)&lt;/td&gt;&lt;td&gt;$4,944 pesos (41.20 %)&lt;/td&gt;&lt;br /&gt;&lt;/tr&gt;&lt;tr&gt;&lt;br /&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/span&gt;&lt;/span&gt;&lt;div style="text-align: justify;"&gt;&lt;span style=";font-family:'Verdana','sans-serif';font-size:10;"  &gt;&lt;span style="font-size:85%;"&gt;&lt;b&gt;&lt;span style="color:red;"&gt;41.20 %....&lt;/span&gt;&lt;/b&gt; eso es realmente el lo que te van a quitar, eso si no tomas alcohol o cerveza, si no tienes internet, si no tienes tv por cable, si no tienes celular o teléfono fijo, si no fumas. Porque a todo eso agregale otro 3% a todo lo que pagas por esos conceptos. Al cigarro y alcohol otro poco más (EN ESOS NO ME QUEJO).&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;span style=";font-family:'Verdana','sans-serif';font-size:10;"  &gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;Eso significa que de cada peso que ganas con el sudor de tu frente, intelecto o tus manos, el gobierno te quitará 41.20 centavos, entonces realmente no ganaste un peso, sino 58.80 centavos.&lt;br /&gt;&lt;br /&gt;¿Te gusta lo que los "representantes del pueblo nos hicieron?&lt;br /&gt;¿Tu representante te preguntó siquiera si estabas de acuerdo?&lt;br /&gt;&lt;br /&gt;Estos son los impuestos que nos acaba de aumentar el &lt;b&gt;"Presidente del Empleo"&lt;/b&gt; quien por cierto en campaña dijo que no subiría los impuestos y que por el contrario los bajaría y eliminaría otros como la tenencia (cosa que no ha hecho el mentiroso).&lt;br /&gt;&lt;br /&gt;La pregunta es:&lt;br /&gt;¿Que vamos a hacer?&lt;br /&gt;a) ¿los pagamos calladitos calladitos y nos seguimos empinando cada vez mas?&lt;br /&gt;b) ¿O les ponemos un alto?&lt;br /&gt;c) ¿O no te importa?&lt;br /&gt;&lt;br /&gt;Tu decides.... por lo pronto informa a otros. OJO esta no es cadenita de tontos, es tu patrimonio y el futuro de tus hijos el que está en juego.&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;********&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Me quedan dudas en cuanto a algunos porcentajes, sin embargo, los números son claros, quedando a la opinión publica. Y para concluir, mi favorita :)&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://static.ow.ly/photos/normal/6qh.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 354px; height: 265px;" src="http://static.ow.ly/photos/normal/6qh.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/632987313637017278-2324679963691996809?l=martin-edmundo.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/vZyyMNHJVckOJY489KEO8YG3OFg/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/vZyyMNHJVckOJY489KEO8YG3OFg/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/vZyyMNHJVckOJY489KEO8YG3OFg/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/vZyyMNHJVckOJY489KEO8YG3OFg/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/MartinEdmundo/~4/mR52x4tCb5c" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://martin-edmundo.blogspot.com/feeds/2324679963691996809/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=632987313637017278&amp;postID=2324679963691996809" title="2 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/632987313637017278/posts/default/2324679963691996809?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/632987313637017278/posts/default/2324679963691996809?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/MartinEdmundo/~3/mR52x4tCb5c/la-nueva-era-de-crecimiento-y-de.html" title="La &quot;nueva era de crecimiento y de desarrollo&quot; en México" /><author><name>Martin Edmundo</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="25" height="32" src="http://bp3.blogger.com/_a2J6n0XpUcc/SB6fHbvGM_I/AAAAAAAAAAc/HHzm3RxeEC0/S220/TNew.jpg" /></author><thr:total>2</thr:total><feedburner:origLink>http://martin-edmundo.blogspot.com/2009/11/la-nueva-era-de-crecimiento-y-de.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C08DRX47cCp7ImA9WxNQF0s.&quot;"><id>tag:blogger.com,1999:blog-632987313637017278.post-1327952766764231689</id><published>2009-09-23T19:52:00.000-07:00</published><updated>2009-09-23T20:11:14.008-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-09-23T20:11:14.008-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Redes" /><category scheme="http://www.blogger.com/atom/ns#" term="Colaboracion" /><title>ISP and his DNS Mexico List</title><content type="html">&lt;div align="justify"&gt;Hace unos dias he tenido un ligero problema con los &lt;a href="http://es.wikipedia.org/wiki/Domain_Name_System"&gt;DNS&lt;/a&gt; que me da mi &lt;a href="http://es.wikipedia.org/wiki/Proveedor_de_servicios_de_Internet"&gt;ISP&lt;/a&gt; (en mi caso Axtel).   Algunas &lt;a href="http://es.wikipedia.org/wiki/Localizador_Uniforme_de_Recursos"&gt;URL&lt;/a&gt; no estaban siendo resueltas por dichos &lt;a href="http://es.wikipedia.org/wiki/Domain_Name_System"&gt;DNS&lt;/a&gt;. El caso es que resulta estresante trabajar en este contexto. Justamente trate de conseguir con &lt;a href="http://www.opendns.com/"&gt;opendns&lt;/a&gt; pero tampoco me resolvia esta y no podia accesar.&lt;/div&gt;&lt;div align="justify"&gt; &lt;/div&gt;&lt;div align="justify"&gt;Despues de un rato recorde que tenia una lista de servidores de dominio, que algunos &lt;a href="http://es.wikipedia.org/wiki/Proveedor_de_servicios_de_Internet"&gt;ISP&lt;/a&gt; me han asignado, en diversos momentos. Hoy solo quiero compartirlos:&lt;/div&gt;&lt;div align="justify"&gt; &lt;/div&gt;&lt;strong&gt;AT&amp;amp;T&lt;/strong&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;85.255.115.52&lt;/li&gt;&lt;li&gt;85.255.112.85 (*)&lt;/li&gt;&lt;/ul&gt;&lt;strong&gt;INFIERNITUM&lt;/strong&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;200.33.148.196 (*)&lt;/li&gt;&lt;li&gt;200.33.171.8&lt;/li&gt;&lt;li&gt;200.23.242.202 (*)&lt;/li&gt;&lt;li&gt;200.23.242.196 (*)&lt;/li&gt;&lt;li&gt;200.23.242.193 (*)&lt;/li&gt;&lt;li&gt;200.23.242.201 (*)&lt;/li&gt;&lt;li&gt;200.23.242.195 (*)&lt;/li&gt;&lt;li&gt;200.23.242.203 (*)&lt;/li&gt;&lt;/ul&gt;&lt;strong&gt;AVANTEL&lt;/strong&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;148.240.241.9&lt;/li&gt;&lt;li&gt;148.240.241.41&lt;/li&gt;&lt;/ul&gt;&lt;strong&gt;AXTEL&lt;/strong&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;200.52.12.131&lt;/li&gt;&lt;li&gt;200.52.12.132&lt;/li&gt;&lt;/ul&gt;&lt;strong&gt;OPENDNS&lt;/strong&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;208.67.222.222&lt;/li&gt;&lt;li&gt;208.67.220.220&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;span style="color:#000099;"&gt;* solo disponible para direcciones del ISP.&lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/632987313637017278-1327952766764231689?l=martin-edmundo.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/jxhjvZbkL72A6QGSQVdUhNoinUw/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/jxhjvZbkL72A6QGSQVdUhNoinUw/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/jxhjvZbkL72A6QGSQVdUhNoinUw/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/jxhjvZbkL72A6QGSQVdUhNoinUw/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/MartinEdmundo/~4/vwkpGzMbRVU" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://martin-edmundo.blogspot.com/feeds/1327952766764231689/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=632987313637017278&amp;postID=1327952766764231689" title="4 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/632987313637017278/posts/default/1327952766764231689?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/632987313637017278/posts/default/1327952766764231689?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/MartinEdmundo/~3/vwkpGzMbRVU/isp-and-his-dns-mexico-list.html" title="ISP and his DNS Mexico List" /><author><name>Martin Edmundo</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="25" height="32" src="http://bp3.blogger.com/_a2J6n0XpUcc/SB6fHbvGM_I/AAAAAAAAAAc/HHzm3RxeEC0/S220/TNew.jpg" /></author><thr:total>4</thr:total><feedburner:origLink>http://martin-edmundo.blogspot.com/2009/09/isp-and-his-dns-mexico-list.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0AMRHw8fip7ImA9WxNQF0s.&quot;"><id>tag:blogger.com,1999:blog-632987313637017278.post-5638398017661492501</id><published>2009-08-07T23:28:00.000-07:00</published><updated>2009-09-23T22:23:05.276-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-09-23T22:23:05.276-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Desarrollo" /><category scheme="http://www.blogger.com/atom/ns#" term="OpenLaszlo" /><title>OpenLaszlo: dataset timeout &amp;&amp; events problems</title><content type="html">&lt;div style="text-align: justify;"&gt;Have a problem with some dataset, i wanna execute query and then fast as &lt;a href="http://es.wikipedia.org/wiki/Ana_Gabriela_Guevara"&gt;Ana Guevara&lt;/a&gt;, to get the data from dataset that has been executed. But, i have a warning: &lt;span style="font-style: italic;"&gt;timeout&lt;/span&gt;.  This is result from next code:&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;/&lt;span style="font-weight: bold;font-size:85%;" &gt;/we launched the first query, and the data is store in opEnfermedades&lt;/span&gt;&lt;/span&gt;&lt;span style="font-weight: bold;font-size:85%;" &gt;&lt;br /&gt;var p=new LzParam();&lt;br /&gt;p.addValue("id", "myarg1", true);&lt;br /&gt;canvas.datasets.opEnfermedades.setQueryString(p);&lt;br /&gt;canvas.datasets.opEnfermedades.doRequest();&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;//get the data from dataset&lt;/span&gt;&lt;br /&gt;this.txtBox1.setAttribute('dataset', 'opEnfermedades:/xml/resultado[1]/@id');&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;The debbuger show me a timeout in &lt;span style="font-weight: bold;font-size:85%;" &gt;txtBox1 &lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-size:100%;"&gt;properties, in fact the parent view &lt;/span&gt;&lt;/span&gt;apparently is correct, can see the dataset property with my xml struct and consequently  the data.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;I try to resolve this problem, thinking for 3 thing:&lt;br /&gt;&lt;ul style="text-align: justify;"&gt;&lt;li&gt;&lt;em&gt;&lt;span style="font-weight: bold;"&gt;loop persistence:&lt;/span&gt; using a global var that is edited when the data is arrival (inside from a event), then a loop persistence check this var for know 'when'  the data is ready. This idea i dont like, because must be using a globar var and i lost independence from clases, and my application is bloking a little bit.&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/em&gt;&lt;em&gt;&lt;/em&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Using a timer:&lt;/span&gt; When i use a timer, the data is update correctly. The bad idea is because the time to reply is changeable, in my notebook could to reply fine but in internet is very very dificult to calculate this.&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Using Envents:&lt;/span&gt; i develop this. I must explain:&lt;/li&gt;&lt;/ul&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;/&lt;span style="font-weight: bold;font-size:85%;" &gt;/we launched the first query, and the data is store in opEnfermedades&lt;/span&gt;&lt;/span&gt;&lt;span style="font-weight: bold;font-size:85%;" &gt;&lt;br /&gt;var p=new LzParam();&lt;br /&gt;p.addValue("id", "myarg1", true);&lt;br /&gt;canvas.datasets.opEnfermedades.setQueryString(p);&lt;br /&gt;canvas.datasets.opEnfermedades.doRequest();&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;When the data arrival, opEnfermedades dataset make a event called "ondata", i used this event for update my text box widget, but openlaszlo acting weird, i dont know. I need this for do a second query using the data catched as param. I think that to resolv this send all data in only one query and that my view model work (&lt;a href="http://es.wikipedia.org/wiki/PHP"&gt;PHP&lt;/a&gt;, &lt;a href="http://es.wikipedia.org/wiki/JavaServer_Pages"&gt;JSP&lt;/a&gt;) for me.&lt;br /&gt;&lt;br /&gt;I must apologize me, but my english is bad, i wish do it. I hope a comments. Tnx.&lt;br /&gt;&lt;/div&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;&lt;/span&gt;&lt;span style="font-weight: bold;font-size:85%;" &gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/632987313637017278-5638398017661492501?l=martin-edmundo.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/68Lt89wono_k0nFA6fqONIkotNI/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/68Lt89wono_k0nFA6fqONIkotNI/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/68Lt89wono_k0nFA6fqONIkotNI/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/68Lt89wono_k0nFA6fqONIkotNI/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/MartinEdmundo/~4/NY0B2Nq0vak" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://martin-edmundo.blogspot.com/feeds/5638398017661492501/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=632987313637017278&amp;postID=5638398017661492501" title="0 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/632987313637017278/posts/default/5638398017661492501?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/632987313637017278/posts/default/5638398017661492501?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/MartinEdmundo/~3/NY0B2Nq0vak/openlaszlo-dataset-timeout-events.html" title="OpenLaszlo: dataset timeout &amp;&amp; events problems" /><author><name>Martin Edmundo</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="25" height="32" src="http://bp3.blogger.com/_a2J6n0XpUcc/SB6fHbvGM_I/AAAAAAAAAAc/HHzm3RxeEC0/S220/TNew.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://martin-edmundo.blogspot.com/2009/08/openlaszlo-dataset-timeout-events.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A08HQXczfyp7ImA9WxNQF0s.&quot;"><id>tag:blogger.com,1999:blog-632987313637017278.post-8753571018717905251</id><published>2009-07-29T23:46:00.000-07:00</published><updated>2009-09-23T22:23:50.987-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-09-23T22:23:50.987-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Desarrollo" /><category scheme="http://www.blogger.com/atom/ns#" term="OpenLaszlo" /><title>Paso de parametros en OpenLaszlo</title><content type="html">&lt;div style="text-align: justify;"&gt;Continuando con mi trabajo en &lt;a href="http://es.wikipedia.org/wiki/OpenLaszlo"&gt;OpenLaszlo&lt;/a&gt;, he tenido necesidad de hacer otro tipo de cosas en LZX (el lenguaje), necesito comunicar dos instancias de clases, tomar y modificar atributos de las mismas. Una solucion que siempre se metia (y sin invitacion) a mi mente era la de variables globales, pero no me latia por que pense que perderia algo de independencia de clases y terminaria dependiendo de ese tipo de datos.&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;Espero que esto le pueda servir a alguien, la &lt;a href="http://www.openlaszlo.org/lps4.4/docs/developers/methods-events-attributes.html"&gt;documentacion de laszlo&lt;/a&gt; es muy superficial, y no profundizan en algunos detalles que hacen que al final nos demos unos 6 o 7 golpes en la cabeza. A continuacion dejo un ejemplo de un codigo con paso de parametros, instancias de clases, herencia, metodos y atributos.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;[ &lt;a href="http://web.gulmore.org-a.googlepages.com/how_param.lzx"&gt;codigo fuente&lt;/a&gt; ]&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;El paso de parametros es parecido a lo que vi en &lt;a href="http://es.wikipedia.org/wiki/Lenguaje_de_programaci%C3%B3n_Java"&gt;Java&lt;/a&gt; (tengo poca experiencia en &lt;a href="http://es.wikipedia.org/wiki/Programaci%C3%B3n_orientada_a_objetos"&gt;OOP&lt;/a&gt;), cuando enviamos un tipo de dato primitivo es paso por valor y cuando enviamos una instancia es paso por referencia, asi de simple y en el ejemplo estoy mandando una instancia con el operador &lt;span style="font-weight: bold; font-style: italic;"&gt;this&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;La idea del ejemplo es que..., tenemos dos ventanas en una metemos datos al texbox computamos y mandamos los valores a la otra ventana haciendo un paso por referencia.&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_a2J6n0XpUcc/SnFDcGRQBkI/AAAAAAAAAJ4/itARJ8eTA7M/s1600-h/parametros.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 200px;" src="http://4.bp.blogspot.com/_a2J6n0XpUcc/SnFDcGRQBkI/AAAAAAAAAJ4/itARJ8eTA7M/s400/parametros.jpg" alt="" id="BLOGGER_PHOTO_ID_5364142781173335618" border="0" /&gt;&lt;/a&gt;Les dejo un enlace donde pueden ver el ejemplo funcinando.&lt;br /&gt;&lt;div style="text-align: center;"&gt;[ &lt;a href="http://web.gulmore.org-a.googlepages.com/how_param.html"&gt;ver ejemplo online&lt;/a&gt; ]&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/632987313637017278-8753571018717905251?l=martin-edmundo.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/8kedmYLaFeh4Gp5UVoYHf-ttGzE/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/8kedmYLaFeh4Gp5UVoYHf-ttGzE/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/8kedmYLaFeh4Gp5UVoYHf-ttGzE/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/8kedmYLaFeh4Gp5UVoYHf-ttGzE/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/MartinEdmundo/~4/pXop5TRD4rQ" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://martin-edmundo.blogspot.com/feeds/8753571018717905251/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=632987313637017278&amp;postID=8753571018717905251" title="2 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/632987313637017278/posts/default/8753571018717905251?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/632987313637017278/posts/default/8753571018717905251?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/MartinEdmundo/~3/pXop5TRD4rQ/paso-de-parametros-en-openlaszlo.html" title="Paso de parametros en OpenLaszlo" /><author><name>Martin Edmundo</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="25" height="32" src="http://bp3.blogger.com/_a2J6n0XpUcc/SB6fHbvGM_I/AAAAAAAAAAc/HHzm3RxeEC0/S220/TNew.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/_a2J6n0XpUcc/SnFDcGRQBkI/AAAAAAAAAJ4/itARJ8eTA7M/s72-c/parametros.jpg" height="72" width="72" /><thr:total>2</thr:total><feedburner:origLink>http://martin-edmundo.blogspot.com/2009/07/paso-de-parametros-en-openlaszlo.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CE4DSXs5eCp7ImA9WxJbE0U.&quot;"><id>tag:blogger.com,1999:blog-632987313637017278.post-549735612650652058</id><published>2009-07-23T13:51:00.000-07:00</published><updated>2009-07-23T14:02:58.520-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-07-23T14:02:58.520-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Noticias" /><title>Geocities is Closing</title><content type="html">&lt;div style="text-align: justify;"&gt;Revisando mi antiguo mail de yahoo, me llega la noticia de que &lt;a href="http://www.blogger.com/www.yahoo.com"&gt;Yahoo&lt;/a&gt; esta dando por terminado su servicio de &lt;a href="http://geocities.yahoo.com/"&gt;Geocities&lt;/a&gt;. Pienso que esto es resultado de la web2.0, los modelos de informacion y comunicacion que se usan hoy en dia.&lt;br /&gt;&lt;br /&gt;Ya no hay nuevas cuentas y la fecha de cierre total es el 26 de Octubre del 2009, se recomienda entrar y respaldar su informacion. Aun asi no hay por que estar tristes, continua el hosting service Yahoo.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/632987313637017278-549735612650652058?l=martin-edmundo.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/C6rnGR_hk0CKstrWOdjFXL5rdPs/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/C6rnGR_hk0CKstrWOdjFXL5rdPs/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/C6rnGR_hk0CKstrWOdjFXL5rdPs/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/C6rnGR_hk0CKstrWOdjFXL5rdPs/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/MartinEdmundo/~4/BoXzZSv-b-w" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://martin-edmundo.blogspot.com/feeds/549735612650652058/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=632987313637017278&amp;postID=549735612650652058" title="0 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/632987313637017278/posts/default/549735612650652058?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/632987313637017278/posts/default/549735612650652058?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/MartinEdmundo/~3/BoXzZSv-b-w/geocities-is-closing.html" title="Geocities is Closing" /><author><name>Martin Edmundo</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="25" height="32" src="http://bp3.blogger.com/_a2J6n0XpUcc/SB6fHbvGM_I/AAAAAAAAAAc/HHzm3RxeEC0/S220/TNew.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://martin-edmundo.blogspot.com/2009/07/geocities-is-closing.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUcDQXw-eyp7ImA9Wx9XEk0.&quot;"><id>tag:blogger.com,1999:blog-632987313637017278.post-1770713630155171540</id><published>2009-07-20T10:29:00.000-07:00</published><updated>2011-01-04T21:57:50.253-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-01-04T21:57:50.253-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Desarrollo" /><category scheme="http://www.blogger.com/atom/ns#" term="GNU Linux" /><title>Vim's scripting language</title><content type="html">&lt;div style="text-align: justify;"&gt;Hace unos dias leyendo las noticias de &lt;a href="http://cofradia.org/"&gt;cofradia&lt;/a&gt; me encontre con información sobre &lt;a href="http://cofradia.org/2009/07/08/introduccion-a-vimscript/"&gt;vim scripting&lt;/a&gt;, como algunos de uds tal vez imaginen, puedo decir que &lt;a href="http://es.wikipedia.org/wiki/Vim"&gt;Vim&lt;/a&gt; es mi edito de textos favoritos por que es muy rapido, y sobre todo por el espacio en disco.&lt;br /&gt;&lt;br /&gt;La idea de hacer a mi vim un poco mas robusto o simplemente conocerlo mas, me entusiasmo y me puse a leer el articulo. El lenguaje de scripts de vim, segun el articulo es un lenguaje con muchas caracteristicas como variables, espresiones, control de flujo, estructuras de datos, funciones, IO file, excepciones, debugger, entre muchas cosas.&lt;br /&gt;&lt;br /&gt;Como comenzar, pues bien rapidamente ocupamos los paquetes vim y vim-scripts, desde luego que la documentacion que en caso de tenerla podemos consultarla de la siguiente manera.&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(102, 102, 102);"&gt;:help vim-script-intro&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Como mandar a ejecucion nuestras pruebas&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(102, 102, 102);"&gt;:source /full/path/to/the/scriptfile.vim&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;El resto es comenzar a adentrarnos en este lenguaje.&lt;br /&gt;&lt;div style="text-align: center;"&gt;[ &lt;a href="http://www.ibm.com/developerworks/linux/library/l-vim-script-1/index.html?ca=dgr-lnxw13VIMscriptP2&amp;amp;S_TACT=105AGX59&amp;amp;S_CMP=grlnxw13"&gt;Ver doc1&lt;/a&gt; ]    [ &lt;a href="http://www.ibm.com/developerworks/linux/library/l-vim-script-2/index.html?ca=dgr-lnxw13VIMscriptP1&amp;amp;S_TACT=105AGX59&amp;amp;S_CMP=grlnxw13"&gt;ver doc2&lt;/a&gt; ]&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/632987313637017278-1770713630155171540?l=martin-edmundo.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/Ty5cDGhLBXd7wAc6XM-14qXdIzc/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Ty5cDGhLBXd7wAc6XM-14qXdIzc/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/Ty5cDGhLBXd7wAc6XM-14qXdIzc/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Ty5cDGhLBXd7wAc6XM-14qXdIzc/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/MartinEdmundo/~4/9FzR-1htGXM" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://martin-edmundo.blogspot.com/feeds/1770713630155171540/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=632987313637017278&amp;postID=1770713630155171540" title="0 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/632987313637017278/posts/default/1770713630155171540?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/632987313637017278/posts/default/1770713630155171540?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/MartinEdmundo/~3/9FzR-1htGXM/vims-scripting-language.html" title="Vim's scripting language" /><author><name>Martin Edmundo</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="25" height="32" src="http://bp3.blogger.com/_a2J6n0XpUcc/SB6fHbvGM_I/AAAAAAAAAAc/HHzm3RxeEC0/S220/TNew.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://martin-edmundo.blogspot.com/2009/07/vims-scripting-language.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0MNSXcyfyp7ImA9WxJVFUs.&quot;"><id>tag:blogger.com,1999:blog-632987313637017278.post-6326976688789042278</id><published>2009-07-02T11:27:00.000-07:00</published><updated>2009-07-02T12:04:58.997-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-07-02T12:04:58.997-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Colaboracion" /><category scheme="http://www.blogger.com/atom/ns#" term="Noticias" /><title>Libros digitales libres y gratuitos para informáticos</title><content type="html">&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://speedbooksargentina.blogspot.com/"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 67px;" src="http://3.bp.blogspot.com/_a2J6n0XpUcc/Skz-fkSCY-I/AAAAAAAAAJw/Nl6c8ffUYuA/s400/logoSBA.jpg" alt="" id="BLOGGER_PHOTO_ID_5353933875305407458" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;El dia de hoy recibimos en el buzon de correo a travez de la lista de distribucion de Gulmore, una invitacion a una nueva iniciativa de distribuir libros digitales con licencias libres: &lt;span style="font-style: italic;"&gt;Speed Books Argentina&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;La idea es excelente por que como lo dicen ellos mismos en el correo: &lt;span style="font-style: italic;"&gt;" Creemos que el conocimiento debe ser libre. Coincidimos con los&lt;/span&gt;&lt;span style="font-style: italic;"&gt; postulados del software y la cultura libre. Creemos que podemos hacer&lt;/span&gt;&lt;span style="font-style: italic;"&gt; algo para realmente intentar reducir la tan mentada brecha digital,&lt;/span&gt;&lt;span style="font-style: italic;"&gt; por ello tomamos esta iniciativa. Esperamos que nuestro trabajo sea&lt;/span&gt;&lt;span style="font-style: italic;"&gt; util al publico en general, a estudiantes y profesionales&lt;/span&gt;&lt;span style="font-style: italic;"&gt; informaticos, a autodidactas e idoneos informaticos, y a docentes de&lt;/span&gt; &lt;span style="font-style: italic;"&gt; asignaturas relacionadas con la informatica."&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;¿Como apoyar?, los chicos de este proyecto nos comentan que es muy simple:&lt;br /&gt;&lt;ul&gt;&lt;li&gt; Informar a sus contactos sobre la existencia de &lt;a href="http://speedbooksargentina.blogspot.com/"&gt;nuestro sitio&lt;/a&gt;.&lt;/li&gt;&lt;li&gt; Si tienes un blog o sitio web personal puedes escribir un articulo.&lt;/li&gt;&lt;li&gt;Informando a tus lectores de la existencia de nuestro sitio, tambien&lt;br /&gt;pueden incluir un enlace hacia nuestro sitio.&lt;/li&gt;&lt;li&gt;Pueden avisarnos de la existencia de libros con licencias libres&lt;br /&gt;sobre informatica.&lt;/li&gt;&lt;li&gt;Pueden informarnos si encuentran un enlace roto o incorrecto.&lt;/li&gt;&lt;li&gt;Contactar con nosotros a traves de este medio para realizar cualquier tipo de sugerencia. [ &lt;span class="gI"&gt;&lt;span class="go"&gt;&lt;span style="font-style: italic;"&gt;speedbooksargentina@gmail.com&lt;/span&gt; ]&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;Quienes nos dejan sus firmas son Vanesa Aguinaldo, Javier Constanzo, Sebastian Dominguez y Fabian Flores Vadell.&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/632987313637017278-6326976688789042278?l=martin-edmundo.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/MNk0b3Gm91FcPV4lHjqZTz6XwBk/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/MNk0b3Gm91FcPV4lHjqZTz6XwBk/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/MNk0b3Gm91FcPV4lHjqZTz6XwBk/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/MNk0b3Gm91FcPV4lHjqZTz6XwBk/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/MartinEdmundo/~4/MPVu1WoXAL4" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://martin-edmundo.blogspot.com/feeds/6326976688789042278/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=632987313637017278&amp;postID=6326976688789042278" title="1 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/632987313637017278/posts/default/6326976688789042278?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/632987313637017278/posts/default/6326976688789042278?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/MartinEdmundo/~3/MPVu1WoXAL4/libros-digitales-libres-y-gratuitos.html" title="Libros digitales libres y gratuitos para informáticos" /><author><name>Martin Edmundo</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="25" height="32" src="http://bp3.blogger.com/_a2J6n0XpUcc/SB6fHbvGM_I/AAAAAAAAAAc/HHzm3RxeEC0/S220/TNew.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/_a2J6n0XpUcc/Skz-fkSCY-I/AAAAAAAAAJw/Nl6c8ffUYuA/s72-c/logoSBA.jpg" height="72" width="72" /><thr:total>1</thr:total><feedburner:origLink>http://martin-edmundo.blogspot.com/2009/07/libros-digitales-libres-y-gratuitos.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkECQHw-fCp7ImA9WxJWFUo.&quot;"><id>tag:blogger.com,1999:blog-632987313637017278.post-881309022809197836</id><published>2009-06-21T00:12:00.000-07:00</published><updated>2009-06-21T00:51:01.254-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-06-21T00:51:01.254-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Desarrollo" /><title>Java: comparacion de String Class en una sentencia Case</title><content type="html">Hace unos dias platicando con mi amigo &lt;a href="http://ernestohs.blogspot.com/"&gt;Ernesto&lt;/a&gt;, le comente que trabajando con el String Class y sus comparaciones con if-then-else me estaba creando un codigo no muy estetico en cuanto a las identaciones y anidamientos que debia tener dentro de mi codigo.&lt;br /&gt;&lt;br /&gt;Buscando soluciones esteticas y sobre todo eficientes, Ernesto me comento que habia la posibilidad de resolver este problema con una &lt;a href="http://es.wikipedia.org/wiki/Tabla_hash"&gt;tabla hash&lt;/a&gt;, asi que me di a la tarea de ver las &lt;a href="http://es.wikipedia.org/wiki/Application_Programming_Interface"&gt;APIs&lt;/a&gt; de las clases que me podrian servir. La implementacion es como sigue:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;code&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 204, 0);"&gt;//Instancia del hashtable, se agregan los valores que esperamos recibir&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 102, 204);"&gt;Hashtable&lt;/span&gt; &lt;span style="font-weight: bold; color: rgb(0, 0, 102);"&gt;action&lt;/span&gt; = new &lt;span style="color: rgb(102, 102, 204);"&gt;Hashtable();&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 204, 0);"&gt;//Se registran las cadenas y los valores que van a tener en hashtable&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102); font-weight: bold;"&gt;action&lt;/span&gt;.put("list", new Integer(1));&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102); font-weight: bold;"&gt;action&lt;/span&gt;.put("new", new Integer(2));&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102); font-weight: bold;"&gt;action&lt;/span&gt;.put("edit", new Integer(3));&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102); font-weight: bold;"&gt;action&lt;/span&gt;.put("rm", new Integer(4));&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 204, 0);"&gt;//Se intenta capturar la excepcion en el caso de que llegue&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 204, 0);"&gt; //otro valor distinto a los esperados en hashtable&lt;/span&gt;&lt;br /&gt;try{&lt;br /&gt;  switch( (Integer) &lt;span style="color: rgb(0, 0, 102); font-weight: bold;"&gt;action&lt;/span&gt;.get( myString ) ){&lt;br /&gt;    case 1:&lt;br /&gt;      &lt;span style="color: rgb(51, 204, 0);"&gt;//codigo para cuando llega una cadena "list"&lt;/span&gt;&lt;br /&gt;    case 2:&lt;br /&gt;      &lt;span style="color: rgb(51, 204, 0);"&gt;//codigo para cuando llega una cadena "new"&lt;/span&gt;&lt;br /&gt;    case 3:&lt;br /&gt;      &lt;span style="color: rgb(51, 204, 0);"&gt;//codigo para cuando llega una cadena "edit"&lt;/span&gt;&lt;br /&gt;    case 4:&lt;br /&gt;      &lt;span style="color: rgb(51, 204, 0);"&gt;//codigo para cuando llega una cadena "rm"&lt;/span&gt;&lt;br /&gt;  }&lt;br /&gt;}&lt;br /&gt;//En caso de llegar cadena no registrada se captura la excepcion&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;catch(NullPointerException e){&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;    &lt;span style="color: rgb(51, 204, 0);"&gt;//codigo de exepcion, algo asi como un "default" dentro del case&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; }&lt;/span&gt;&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;quote&gt;&lt;/quote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/632987313637017278-881309022809197836?l=martin-edmundo.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/5ngy9TyS7sbvbN1ZDdabhedYO9Y/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/5ngy9TyS7sbvbN1ZDdabhedYO9Y/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/5ngy9TyS7sbvbN1ZDdabhedYO9Y/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/5ngy9TyS7sbvbN1ZDdabhedYO9Y/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/MartinEdmundo/~4/KQ9AIp48beA" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://martin-edmundo.blogspot.com/feeds/881309022809197836/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=632987313637017278&amp;postID=881309022809197836" title="1 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/632987313637017278/posts/default/881309022809197836?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/632987313637017278/posts/default/881309022809197836?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/MartinEdmundo/~3/KQ9AIp48beA/java-comparacion-de-string-class-en-una.html" title="Java: comparacion de String Class en una sentencia Case" /><author><name>Martin Edmundo</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="25" height="32" src="http://bp3.blogger.com/_a2J6n0XpUcc/SB6fHbvGM_I/AAAAAAAAAAc/HHzm3RxeEC0/S220/TNew.jpg" /></author><thr:total>1</thr:total><feedburner:origLink>http://martin-edmundo.blogspot.com/2009/06/java-comparacion-de-string-class-en-una.html</feedburner:origLink></entry></feed>

