<?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;D0UARHs9eyp7ImA9WhRQEE4.&quot;"><id>tag:blogger.com,1999:blog-7987559479812349433</id><updated>2011-12-04T13:47:25.563-08:00</updated><title>Tecnologia Actual</title><subtitle type="html">linux, C, unix, perl, Money, Dinero, Internet, Adsense, Blogs, Hacker, python</subtitle><link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" href="http://chixmes.blogspot.com/feeds/posts/default" /><link rel="alternate" type="text/html" href="http://chixmes.blogspot.com/" /><author><name>Akaishax</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><generator version="7.00" uri="http://www.blogger.com">Blogger</generator><openSearch:totalResults>13</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/blogspot/SIxL" /><feedburner:info uri="blogspot/sixl" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><entry gd:etag="W/&quot;Ck4FQ38ycSp7ImA9WxBQEUU.&quot;"><id>tag:blogger.com,1999:blog-7987559479812349433.post-5484478058421762880</id><published>2010-01-10T19:31:00.000-08:00</published><updated>2010-01-10T19:35:12.199-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-01-10T19:35:12.199-08:00</app:edited><title>Ocultar codigo PL/SQL (Oracle)</title><content type="html">Imaginemos un escenario en el cual hemos desarrollado un procedimiento almacenado en PL/SQL y deseamos evitar que alguien, incluido el DBA, pueda ver y/o modificar el código fuente. ¿Es eso posible?, definitivamente sí: Oracle provee el utilitario Wrap para lograrlo, pero implicaba invocarlo desde el Sistema Operativo; a partir de 10g es posible invocarlo desde dentro de la base de datos. Veamos cómo hacer uso de ambas modalidades.&lt;br /&gt;&lt;br /&gt; &lt;br /&gt;Primero un vistazo al código que me interesa ocultar:&lt;br /&gt;&lt;br /&gt;[oracle@sys ~]$ cat salary.sql&lt;br /&gt;CREATE OR REPLACE&lt;br /&gt;FUNCTION salary (&lt;br /&gt;empno emp.empno%TYPE )&lt;br /&gt;RETURN NUMBER&lt;br /&gt;IS&lt;br /&gt;sal emp.sal%TYPE;&lt;br /&gt;BEGIN&lt;br /&gt;SELECT sal INTO salary.sal&lt;br /&gt;FROM emp&lt;br /&gt;WHERE empno = salary.empno;&lt;br /&gt;RETURN ( salary.sal );&lt;br /&gt;END;&lt;br /&gt;&lt;br /&gt;La primera alternativa es usar el utilitario Wrap desde el Sistema Operativo.&lt;br /&gt; &lt;br /&gt;Hay que invocarlo referenciando al archivo que contiene el código fuente.&lt;br /&gt;[oracle@sys ~]$ wrap iname=salary.sql&lt;br /&gt;&lt;br /&gt;PL/SQL Wrapper: Release 10.2.0.4.0- Production on Sat Nov 01 14:21:47 2009&lt;br /&gt;&lt;br /&gt;Copyright (c) 1993, 2004, Oracle.  All rights reserved.&lt;br /&gt;&lt;br /&gt;Processing salary.sql to salary.plb&lt;br /&gt;Verificamos el resultado.&lt;br /&gt;[oracle@sys ~]$ cat salary.plb&lt;br /&gt;CREATE OR REPLACE&lt;br /&gt;FUNCTION salary wrapped&lt;br /&gt;a000000&lt;br /&gt;367&lt;br /&gt;abcd&lt;br /&gt;abcd&lt;br /&gt;abcd&lt;br /&gt;abcd&lt;br /&gt;abcd&lt;br /&gt;abcd&lt;br /&gt;abcd&lt;br /&gt;abcd&lt;br /&gt;abcd&lt;br /&gt;abcd&lt;br /&gt;abcd&lt;br /&gt;abcd&lt;br /&gt;abcd&lt;br /&gt;abcd&lt;br /&gt;abcd&lt;br /&gt;8&lt;br /&gt;cc d6&lt;br /&gt;+/IgG5qcUWhn5W4aX1Z1gJbmalUwgy5KLcvWfHSi2sHVSCY2DKrK4KYn8hQGyrdN4JG7orD5&lt;br /&gt;ELaEY9EXT7sxm8hT0NF8GQX2BSRNdGc/i2nS6FUq4oJr3+Z/vda3u1pli6dW3SXcl4vlGtfr&lt;br /&gt;ShxK0Ikb/IzmSgsWLtX2Nyo5Ob28iiwzrfFQOmdO1j2jRP8s5Z3aTTuovLrHOuGA3Hyl&lt;br /&gt;&lt;br /&gt;/&lt;br /&gt;Introducimos el código en la base de datos.&lt;br /&gt; &lt;br /&gt;[oracle@sys ~]$ sqlplus scott/tiger @salary.plb&lt;br /&gt;&lt;br /&gt;SQL*Plus: Release 10.2.0.4.0 - Production on Sat Nov 1 14:23:59 2009&lt;br /&gt;&lt;br /&gt;Copyright (c) 1982, 2007, Oracle.  All Rights Reserved.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Connected to:&lt;br /&gt;Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - Production&lt;br /&gt;With the Partitioning, OLAP, Data Mining and Real Application Testing options&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Function created.&lt;br /&gt;Comprobamos que la funcion está operativa.&lt;br /&gt;SCOTT@orcl &gt; select salary( 7654 ) from dual;&lt;br /&gt;&lt;br /&gt;SALARY(7654)&lt;br /&gt;------------&lt;br /&gt;1312.5&lt;br /&gt;&lt;br /&gt;SCOTT@orcl &gt;&lt;br /&gt;&lt;br /&gt; &lt;br /&gt;Como resultado tenemos ahora un procedimiento almacenado cuyo código fuente es ininteligible a simple vista.&lt;br /&gt;&lt;br /&gt;¿Qué hacer si el código ya está en la base de datos? Pues podemos extraerlo a un archivo y seguir el procedimiento previo, pero tambien es posible hacer uso del mejorado package DBMS_DDL, entonces manos a la obra.&lt;br /&gt;Usaremos la siguiente rutina para transformar el código fuente.&lt;br /&gt;&lt;br /&gt;[oracle@csys ~]$ cat wrapped.sql&lt;br /&gt;DECLARE&lt;br /&gt;v_source DBMS_SQL.VARCHAR2A;&lt;br /&gt;BEGIN&lt;br /&gt;v_source(1) := 'CREATE OR REPLACE ';&lt;br /&gt;FOR s IN ( SELECT line, text&lt;br /&gt;FROM user_source&lt;br /&gt;WHERE name = 'SALARY'&lt;br /&gt;ORDER BY line )&lt;br /&gt;LOOP&lt;br /&gt;v_source(s.line+1) := s.text;&lt;br /&gt;END LOOP;&lt;br /&gt;dbms_ddl.create_wrapped(&lt;br /&gt;ddl =&gt; v_source,&lt;br /&gt;lb =&gt; 1,&lt;br /&gt;ub =&gt; v_source.count );&lt;br /&gt;END;&lt;br /&gt;Ahora lo ejecutamos.&lt;br /&gt; &lt;br /&gt;SCOTT@orcl &gt; @wrapped&lt;br /&gt;&lt;br /&gt;PL/SQL procedure successfully completed.&lt;br /&gt;Verificamos que el código fuente fue modificado.&lt;br /&gt;SCOTT@orcl &gt; select text from user_source&lt;br /&gt;2  where name = 'SALARY' order by line;&lt;br /&gt;&lt;br /&gt;TEXT&lt;br /&gt;--------------------------------------------------------------------------------&lt;br /&gt;FUNCTION salary wrapped&lt;br /&gt;a000000&lt;br /&gt;369&lt;br /&gt;abcd&lt;br /&gt;abcd&lt;br /&gt;abcd&lt;br /&gt;abcd&lt;br /&gt;abcd&lt;br /&gt;abcd&lt;br /&gt;abcd&lt;br /&gt;abcd&lt;br /&gt;abcd&lt;br /&gt;abcd&lt;br /&gt;abcd&lt;br /&gt;abcd&lt;br /&gt;abcd&lt;br /&gt;abcd&lt;br /&gt;abcd&lt;br /&gt;8&lt;br /&gt;c3 d2&lt;br /&gt;NL5qz7Eyn6/UUHrpUacIYXrnSkQwgy7wLcsVfHSiWHOUxMoNmSQvf6CVAlrwXr70aca5WXwI&lt;br /&gt;/nAKWlYzkLkxeCuI8kessTO0QSAhNtwDkRNJ6sbC/1+niQxcN3d3A9MG5qanSMCbmJCZRkFk&lt;br /&gt;zHqG9AcGWonxLvVFqyc+fCfcn4q5PwtD7ZLkhFU52f6bi7u9g2dWnLjOpqUrlos=&lt;br /&gt;Finalmente veamos si está operativo.&lt;br /&gt; &lt;br /&gt;SCOTT@orcl &gt; select salary( 7654 ) from dual;&lt;br /&gt;&lt;br /&gt;SALARY(7654)&lt;br /&gt;------------&lt;br /&gt;1312.5&lt;br /&gt;&lt;br /&gt; &lt;br /&gt;Nuevamente el objetivo se ha cumplido!&lt;br /&gt;&lt;br /&gt;En conclusión, hemos visto dos formas de transformar nuestro código fuente en un texto indescifrable apoyados de Wrap. El código mostrado no está libre de errores ni está optimizado, pero les puede servir como una base.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7987559479812349433-5484478058421762880?l=chixmes.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/NhGN1CJ_3gQ4Wo5w_gEDOQNwdVY/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/NhGN1CJ_3gQ4Wo5w_gEDOQNwdVY/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/NhGN1CJ_3gQ4Wo5w_gEDOQNwdVY/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/NhGN1CJ_3gQ4Wo5w_gEDOQNwdVY/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/SIxL/~4/0dJzAIS4_GA" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://chixmes.blogspot.com/feeds/5484478058421762880/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7987559479812349433&amp;postID=5484478058421762880" title="0 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7987559479812349433/posts/default/5484478058421762880?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7987559479812349433/posts/default/5484478058421762880?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/SIxL/~3/0dJzAIS4_GA/ocultar-codigo-plsql-oracle.html" title="Ocultar codigo PL/SQL (Oracle)" /><author><name>Akaishax</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://chixmes.blogspot.com/2010/01/ocultar-codigo-plsql-oracle.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUUERXg_fip7ImA9WxNWFUg.&quot;"><id>tag:blogger.com,1999:blog-7987559479812349433.post-6434843843016634159</id><published>2009-10-14T13:25:00.000-07:00</published><updated>2009-10-14T13:46:44.646-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-10-14T13:46:44.646-07:00</app:edited><title>Oracle/Linux &amp; Memoria</title><content type="html">Nada es perfecto. Y muchas de las novedades en los mainframes es poseer muchos GB de ram fisica a disposicion, de esta manera se confia ciegamente un administrador de sistemas que si posee 64GB de ram fisica la swap seria innecesaria o como maxima instancia, no mas de 2GB de swap.&lt;br /&gt;&lt;br /&gt;Cuanta swap realmente requiere el sistema para Oracle? la documentacion oficial de Oracle se basa en un estandar, si posees de 8GB o mas fisica debes otorgar el mismo espacio de swap en disco. Lo que la documentacion oficial no detalla es la manera como los sistemas POSIX compatibles manejan la distribucion de ram. En sistemas Unixes comerciales se puede manipular el manejo de la swap ya que estos sistemas otorgan 2 opciones eager y lazy. Solia pensar que esta caracteristica era unica de los sistemas comerciales Unixes como Solaris o HP-UX, hasta que indague los parametros del kernel en Linux.&lt;br /&gt;&lt;br /&gt;uno de los parametros 'swappiness' especifica la forma como el kernel de Linux maneja y distribuye el uso de memoria y cuando debe paginar a la swap del disco. Por defecto en los sistemas tipo-unix Linux la swappiness viene en 60% lo cual especifica mientras mas alto el porcentaje mas paginacion hacia la swap de parte de las aplicaciones. Mientras mas reducido el porcentaje, menos swap se recurrira y mas cache y memoria ram se aprovechara.&lt;br /&gt;&lt;br /&gt;Si nuestra base de datos dispone de muchas instancias, dispondra de la misma cantidad de subprocesos por instancia (20 o mas subprocesos por instancia de Oracle iniciada) podemos verificar que seccion de segmento en memoria compartida ocupan los subprocesos de Oracle con el comando:&lt;br /&gt;&lt;br /&gt;bash$  ipcs -m&lt;br /&gt;&lt;br /&gt;Si vamos a dar uso masivo de la pool cache de Oracle, y queremos respuesta rapida del sistema lo mas ventajoso es reducir la lectura en disco (lo que implica reducir la utilizacion de la swap) como podemos manipular esto en Linux? reduciendo el parametro 'swappiness' a 5% o 0% para sacar la mayor ventaja de la cache de ram y la ram fisica (Siempre y cuando dispongamos de mucha memoria ram fisica) sino disponemos de mucha memoria ram fisica, no es factible reducir la paginacion hacia la swap puesto que esto puede causar estragos y lentitud de respuesta del CPU al utilizar toda la cache y ram fisica disponible, (recordando que la ram fisica de la mayoria de PC requieren refresco constante para no perder los datos) de igual manera si usamos la pool cache de Oracle se crearan masivos logs de parte de la cache usada por Oracle y la cache usada por el sistema operativo, pero por otro lado si se aumenta extremadamente la 'swappiness' a 90% o 80% para utilizar menos ram fisica y mas swap esto causa lentitud de lectura de disco para respuesta de solicitud, y de paso mucha espera de I/O al tener procesos bloqueados.&lt;br /&gt;&lt;br /&gt;Entonces que es lo conveniente? dependendiendo sus necesidades, se ha elegir el que mas convenga. Yo particularmente utilizo 'swappiness' en 0% o 5% y desabilito la cache pool de Oracle, para evitar doble buffering en la cache de memoria y en la cache de disco...&lt;br /&gt;&lt;br /&gt;Ate Logo :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7987559479812349433-6434843843016634159?l=chixmes.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/LcvPqwYqt9pC7GqZsDgoVzcERDM/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/LcvPqwYqt9pC7GqZsDgoVzcERDM/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/LcvPqwYqt9pC7GqZsDgoVzcERDM/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/LcvPqwYqt9pC7GqZsDgoVzcERDM/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/SIxL/~4/6Jgs1YMlfKU" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://chixmes.blogspot.com/feeds/6434843843016634159/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7987559479812349433&amp;postID=6434843843016634159" title="2 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7987559479812349433/posts/default/6434843843016634159?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7987559479812349433/posts/default/6434843843016634159?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/SIxL/~3/6Jgs1YMlfKU/oraclelinux-memoria.html" title="Oracle/Linux &amp; Memoria" /><author><name>Akaishax</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>2</thr:total><feedburner:origLink>http://chixmes.blogspot.com/2009/10/oraclelinux-memoria.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkIAR3kzcSp7ImA9WxNWFUg.&quot;"><id>tag:blogger.com,1999:blog-7987559479812349433.post-4749043615144117345</id><published>2009-10-14T12:55:00.000-07:00</published><updated>2009-10-14T13:02:26.789-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-10-14T13:02:26.789-07:00</app:edited><title>Mucho Tiempo...</title><content type="html">Un tiempecito sin retornar a mi Blog. Aveces tanto trabajo y estudios conduce al retiro =)&lt;br /&gt;&lt;br /&gt;La novedad de la compra de SUN por parte de Oracle afecta a gran parte del actual mercado y el futuro de las cosas, una de las mas afectadas fue el motor MySQL, terminada la compra poco tiempo despues como arte de magia 'desaparecio' de la web de MySQL la version alpha 6.0 que incluia el motor de almacenamiento 'Falcon' el cual pretendia sustituir en un futuro cercano el motor 'InnoDB' (perteneciente a Oracle) y con mejoras que dicho motor aun no posee. En cambio surgio MySQL 5.4 con una extrema mejora de optimizacion a subconsultas en motores de almacenamiento 'InnoDB' algo bastante curioso y que da mucho que pensar.... ha trabajado Oracle en personalizacion de MySQL que por tal razon desaparecio el motor 'Falcon' junto a la rama 6.x?&lt;br /&gt;&lt;br /&gt;:) A lugar...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7987559479812349433-4749043615144117345?l=chixmes.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/2gx-rKnrERzVdghGSZYJTBIp9NE/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/2gx-rKnrERzVdghGSZYJTBIp9NE/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/2gx-rKnrERzVdghGSZYJTBIp9NE/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/2gx-rKnrERzVdghGSZYJTBIp9NE/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/SIxL/~4/tuhnEzGNhw4" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://chixmes.blogspot.com/feeds/4749043615144117345/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7987559479812349433&amp;postID=4749043615144117345" title="2 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7987559479812349433/posts/default/4749043615144117345?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7987559479812349433/posts/default/4749043615144117345?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/SIxL/~3/tuhnEzGNhw4/mucho-tiempo.html" title="Mucho Tiempo..." /><author><name>Akaishax</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>2</thr:total><feedburner:origLink>http://chixmes.blogspot.com/2009/10/mucho-tiempo.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUIHSXk9eCp7ImA9WxdWGEo.&quot;"><id>tag:blogger.com,1999:blog-7987559479812349433.post-8802595650911067048</id><published>2008-07-12T07:27:00.000-07:00</published><updated>2008-07-12T07:38:58.760-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-07-12T07:38:58.760-07:00</app:edited><title>Ulimit un RSBAC oculto :)</title><content type="html">La primera vez que instale FreeBSD me sorprendio la manera en la cual yo podia decidir cuantos servicios x usuario podia ejecutar, cuanta capacidad de ram podia este usuario consumir del sistema, cuantos procesos podia ejecutar, cuantos archivos podia abrir, etc. Todo era sencillamente en un simple archivo de texto indicarle un 1 ('activado') o 0 ('desactivado') pasado como parametro al kernel. Y me pregunte porque en Linux esta funcionalidad no existe? Luego me he topado con smrole en Solaris, que es un comando que nos permite controlar lo mismo, muchos pensamos que Linux no posee esta funcionalidad integrada. Y en caso de poseerla, o poseer algo similar es una funcionalidad extra tipo Selinux, o Rsbac que son parches para el kernel.&lt;br /&gt;&lt;br /&gt;Pero existe algo comun en todos los Linuxes, y que muchos usuarios desconocen su existencia. Esta funcionalidad es 'ulimit'&lt;br /&gt;&lt;br /&gt;Ulimit es un comando especial de la terminal, mayormente utilizado para controlar los servicios, cantidad de archivos a abrir, cantidad de consumo de ram, etc, que un usuario especifico pueda ejecutar en una terminal (Y como todos sabemos todos los servicios se ejecutan en una terminal). Podemos jugar con ulimit, en modo global o en modo solo aplicable a 1 usuario.&lt;br /&gt;&lt;br /&gt;En modo global incluye editar 'ulimit' en /etc/profile pero si editamos a modo global aplicaria al usuario root por igual, pero si editamos .bashrc en cada $HOME de 1 usuario especifico y ponemos permisos chmod 600 donde solo root sea duenio, tendremos a dicho usuario controlado al nivel que queramos.&lt;br /&gt;&lt;br /&gt;Para conocer nuestra limitante en una terminal basta con escribir :&lt;br /&gt;&lt;br /&gt;bash$ ulimit -u&lt;br /&gt;&lt;br /&gt;Si dice unlimited es porque tenemos acceso sin ninguna restriccion, si queremos algo mas detallado al respecto usamos:&lt;br /&gt;&lt;br /&gt;bash$ ulimit -a&lt;br /&gt;bash-3.1$ ulimit -a&lt;br /&gt;core file size          (blocks, -c) 0&lt;br /&gt;data seg size           (kbytes, -d) unlimited&lt;br /&gt;file size               (blocks, -f) unlimited&lt;br /&gt;pending signals                 (-i) 8182&lt;br /&gt;max locked memory       (kbytes, -l) 32&lt;br /&gt;max memory size         (kbytes, -m) unlimited&lt;br /&gt;open files                      (-n) 1024&lt;br /&gt;pipe size            (512 bytes, -p) 8&lt;br /&gt;POSIX message queues     (bytes, -q) 819200&lt;br /&gt;stack size              (kbytes, -s) 8192&lt;br /&gt;cpu time               (seconds, -t) unlimited&lt;br /&gt;max user processes              (-u) 8182&lt;br /&gt;virtual memory          (kbytes, -v) unlimited&lt;br /&gt;file locks                      (-x) unlimited&lt;br /&gt;&lt;br /&gt;si queremos controlar las opciones que proporciona ulimit basta con agregar a .bashrc&lt;br /&gt;&lt;br /&gt;ulimit -n 30&lt;br /&gt;&lt;br /&gt;Donde el parametro -n indica cantidad de archivos que puede un usuario abrir. Podemos tambien hacerlo temporal en nuestra propia shell para probar, luego verificamos con ulimit -a los cambios.&lt;br /&gt;&lt;br /&gt;:)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7987559479812349433-8802595650911067048?l=chixmes.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/cjgoam8mdhkvZViT8o7j6HzYAdY/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/cjgoam8mdhkvZViT8o7j6HzYAdY/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/cjgoam8mdhkvZViT8o7j6HzYAdY/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/cjgoam8mdhkvZViT8o7j6HzYAdY/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/SIxL/~4/-16Xt5GmYCY" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://chixmes.blogspot.com/feeds/8802595650911067048/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7987559479812349433&amp;postID=8802595650911067048" title="0 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7987559479812349433/posts/default/8802595650911067048?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7987559479812349433/posts/default/8802595650911067048?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/SIxL/~3/-16Xt5GmYCY/ulimit-un-rsbac-oculto.html" title="Ulimit un RSBAC oculto :)" /><author><name>Akaishax</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://chixmes.blogspot.com/2008/07/ulimit-un-rsbac-oculto.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEMNRX45eCp7ImA9WxdWGEo.&quot;"><id>tag:blogger.com,1999:blog-7987559479812349433.post-6093359130444073288</id><published>2008-07-12T07:17:00.000-07:00</published><updated>2008-07-12T07:21:34.020-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-07-12T07:21:34.020-07:00</app:edited><title>KDE 4 en Slackware 12.1 o (current).</title><content type="html">Muchos usuarios tienen la duda, de como obtener paquetes precompilados de KDE 4 para Slackware 12.1 o rama current.&lt;br /&gt;&lt;br /&gt;me alegra informarles, que existen paquetes ya precompilados disponibles para nuestro apreciado Slackware :) He aqui el Link. En ingles pero este senor es el responsable por el momento de crear paquetes precompilados de KDE 4 para Slackware, tambien ha sido halagado por el mismo Patrick Volkerding (Desarrollador principal de Slackware) en relacion a lo estables que son estos paquetitos en Slackware.&lt;br /&gt;&lt;br /&gt;http://geektime.wordpress.com/2008/04/23/kde-4-on-slackware-120/&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7987559479812349433-6093359130444073288?l=chixmes.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/TwNEwr-BOdBWRMh-X2wRVcAYCbY/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/TwNEwr-BOdBWRMh-X2wRVcAYCbY/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/TwNEwr-BOdBWRMh-X2wRVcAYCbY/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/TwNEwr-BOdBWRMh-X2wRVcAYCbY/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/SIxL/~4/5Neox9GSaIY" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://chixmes.blogspot.com/feeds/6093359130444073288/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7987559479812349433&amp;postID=6093359130444073288" title="2 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7987559479812349433/posts/default/6093359130444073288?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7987559479812349433/posts/default/6093359130444073288?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/SIxL/~3/5Neox9GSaIY/kde-4-en-slackware-121-o-current.html" title="KDE 4 en Slackware 12.1 o (current)." /><author><name>Akaishax</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>2</thr:total><feedburner:origLink>http://chixmes.blogspot.com/2008/07/kde-4-en-slackware-121-o-current.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEYDR3w-eyp7ImA9WxdRGEk.&quot;"><id>tag:blogger.com,1999:blog-7987559479812349433.post-8212423379427509939</id><published>2008-06-07T05:35:00.000-07:00</published><updated>2008-06-07T05:36:16.253-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-06-07T05:36:16.253-07:00</app:edited><title>Maria nuevo Motor Almacenamiento Mysql</title><content type="html">No es tan nuevo, pero me entere un poco tarde  Sonreir&lt;br /&gt;&lt;br /&gt;Mysql lanzo una version testing en Enero 2008 de Maria. Un nuevo motor de almacenamiento no transaccional, desarrollado como una extension del famoso Myisam.&lt;br /&gt;&lt;br /&gt;Maria aporta las mismas funcionalidades que Myisam, con la unica diferencia que es 'efectivo contra fallas' cosa que Myisam no, la definicion de 'efectivo contra fallas' implica que luego de hacer un proceso tipo backup, transacciones remota de una tabla a otro servidor y que haya por desgracia una falla electrica y se corte repentinamente nuestro intercambio, en tablas Myisam ocurria la dificultad que nos resultaba dificil recuperar los datos de dicha tabla y aveces usando 'repair table' no funcionaba.&lt;br /&gt;&lt;br /&gt;Y es aqui cuando Maria funciona ya que Maria si tiene capacidad de recobrar data rota con una gran facilidad.&lt;br /&gt;&lt;br /&gt;El motor de almacenamiento Maria No esta disponible oficialmente dentro de ninguna version Mysql, mas bien esta dentro de una version Mysql 5.x considerada como testing por el simple hecho de tener a Maria embebido sin embargo los fuentes de este Mysql con Maria se pueden conseguir desde la web oficial de Mysql o Sun. Se pretende, en un futuro integrar Maria de manera oficial dentro de Mysql, con el objetivo de sustituir a Myisam.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7987559479812349433-8212423379427509939?l=chixmes.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/aoCjZBQ4i_r_qGe90IsiEvU_WYI/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/aoCjZBQ4i_r_qGe90IsiEvU_WYI/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/aoCjZBQ4i_r_qGe90IsiEvU_WYI/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/aoCjZBQ4i_r_qGe90IsiEvU_WYI/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/SIxL/~4/c7WoRsL9bYk" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://chixmes.blogspot.com/feeds/8212423379427509939/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7987559479812349433&amp;postID=8212423379427509939" title="2 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7987559479812349433/posts/default/8212423379427509939?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7987559479812349433/posts/default/8212423379427509939?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/SIxL/~3/c7WoRsL9bYk/maria-nuevo-motor-almacenamiento-mysql.html" title="Maria nuevo Motor Almacenamiento Mysql" /><author><name>Akaishax</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>2</thr:total><feedburner:origLink>http://chixmes.blogspot.com/2008/06/maria-nuevo-motor-almacenamiento-mysql.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEADR3k7fyp7ImA9WxdRFkQ.&quot;"><id>tag:blogger.com,1999:blog-7987559479812349433.post-2982005523054056713</id><published>2008-06-05T12:06:00.001-07:00</published><updated>2008-06-05T12:06:16.707-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-06-05T12:06:16.707-07:00</app:edited><title>Bourne o C Shell</title><content type="html">Como usuarios de Linux &amp; Unix. Debemos conocer bien la terminal, sabemos (y para quienes no lo saben  Cheesy) que la terminal en Linux/Unix es simplemente un interprete de comandos. La via por donde el usuario puede comunicarse con el SO. En estos sistemas existen sin embargo, varios clientes terminales en los cuales podemos destacar :&lt;br /&gt;&lt;br /&gt;Bourne Shells :&lt;br /&gt;&lt;br /&gt;/bin/sh&lt;br /&gt;/bin/bash&lt;br /&gt;/bin/ksh&lt;br /&gt;&lt;br /&gt;C Shells ::&lt;br /&gt;&lt;br /&gt;/bin/csh&lt;br /&gt;/bin/tcsh&lt;br /&gt;&lt;br /&gt;Las mas usadas por nosotros (Linuxeros  Sonrisa) es la tipica 'bash'. En sistemas Unixes (BSD, HP-UX, Solaris). Por defecto se utiliza o /bin/sh o /bin/ksh.&lt;br /&gt;&lt;br /&gt;Un poquito de historia :&lt;br /&gt;&lt;br /&gt;La primera 'shell' en nacer fue /bin/sh que es una shell creada por Sthepen Bourne, sustituyendo a la shell de Thompsom en los sistemas Unixes alla por los 70 y algo.&lt;br /&gt;La bourne shell 'sh' se hizo tan popular que aun hoy dia uno de sus hijos son los mas usados. Y obviamente mas adelante GNU no podia quedarse fuera de este proyecto Sonrisa y nacio la primera Gnu-Bourne-Shell (Basada en sh) - nuestra querida 'bash'&lt;br /&gt;Por igual forma otras companias no podian quedarse sin su propia version de shell bourne, y tambien surgio korn shell. Estas 3 shells, son totalmente compatibles entre si, y cualquier bourne-script funciona en (bash, sh, korn).&lt;br /&gt;&lt;br /&gt;Pero como todo tiene una contraparte, no olvidemos las C - shells.&lt;br /&gt;Las C-shells son (csh &amp; tcsh) aunque tiene la misma funcionalidad que las Bourne Shells (funcionar como interprete de comandos) se desarrollo para los amantes del lenguaje 'C' por ser sus C-shell-script tan parecido a este lenguaje.&lt;br /&gt;La C-Shell fue desarrollada por la gente de 'Berkeley' (Nuevamente tenemos la mano maestra de estos genios Cheesy ). Aunque como todo lo que sale de Berkeley, esta terminal no es tan popular como su competencia las Bourne Shells.&lt;br /&gt;Su objetivo esta mas dirigido a programadores que a administradores, y un C-Shell-Script no precisamente va a funcionar en una terminal bourne y viceversa, ya que la sintaxis de interpretar comandos es distinta. Las C-Shells incluyen funciones, parametros, matrices, muy distintas a las que las Bourne Shells pueden soportar y viceversa.&lt;br /&gt;&lt;br /&gt;Aunque tanto con cualquier shell Bourne o cualquier shell C Shell, se pueden desarrollar scripting, es de gusto y decision final del usuario cual de los dos distintos tipos de interpretes utilizar.&lt;br /&gt;&lt;br /&gt;Yo utilizo bastante, la Bourne shell /bin/sh aveces /bin/bash, pero me he adaptado un poco a /bin/sh.&lt;br /&gt;&lt;br /&gt;Cual es la preferida por ti&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7987559479812349433-2982005523054056713?l=chixmes.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/K_kpq0JEnDw8ZmrJEbRlc3IK7e4/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/K_kpq0JEnDw8ZmrJEbRlc3IK7e4/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/K_kpq0JEnDw8ZmrJEbRlc3IK7e4/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/K_kpq0JEnDw8ZmrJEbRlc3IK7e4/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/SIxL/~4/7IbbLzpL_aA" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://chixmes.blogspot.com/feeds/2982005523054056713/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7987559479812349433&amp;postID=2982005523054056713" title="2 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7987559479812349433/posts/default/2982005523054056713?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7987559479812349433/posts/default/2982005523054056713?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/SIxL/~3/7IbbLzpL_aA/bourne-o-c-shell.html" title="Bourne o C Shell" /><author><name>Akaishax</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>2</thr:total><feedburner:origLink>http://chixmes.blogspot.com/2008/06/bourne-o-c-shell.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEcMQHkyfCp7ImA9WxdRFkQ.&quot;"><id>tag:blogger.com,1999:blog-7987559479812349433.post-942817993762652899</id><published>2008-06-05T11:54:00.001-07:00</published><updated>2008-06-05T11:54:41.794-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-06-05T11:54:41.794-07:00</app:edited><title>System V vs BSD Scripts</title><content type="html">La primera vez que me instale Slackware.. hace ya unos anitos, recuerdo que me sentia rara porque queria reiniciar servicios o desabilitarlos buscando en '/etc/init.d' o sus respectivos runlevels '/etc/rcx.d' Pero me di una sorpresa al ver que no existia ni la carpeta init.d, ni rcx.d de cada runlevel, nisiquiera /etc/pam.d&lt;br /&gt;&lt;br /&gt;Yo que venia de Linuxes que si incluian estos menesteres(Mandrake, Suse, RedHat, Debian). Me sorprendi un poco y tuve que indagar porque esto era asi o donde slackware guardaba los demonios. Ahi fue que me tope con que hay sistemas Linux &amp; Unixes que poseen sus scripts de arranque basado en BSD scripts o System V. Slackware estaba y aun esta basado en scripts de inicio BSD Scripts. Ahora ustedes se preguntaran que son scripts de inicios System V y que son BSD scripts.&lt;br /&gt;&lt;br /&gt;La mayoria de Linuxes y Unixes (Solaris &amp; HP-UX) poseen sus scripts de inicio basados en System V, cuando un sistema esta basado en System V, divide los servicios a cargar por defecto en varias carpetas por cada runlevel. Por ejemplo, el runlevel 5 en Linux es al cual ingresamos por defecto despues que termina de cargar el sistema. Este runlevel en los sistemas basados en System V tiene los servicios a cargar en '/etc/rc5.d' ahi dentro vemos muchos enlazes directos a los servicios de '/etc/init.d' todo lo que aparezca dentro de '/etc/rc5.d' es lo que va a cargar o es lo que vemos cargando cuando iniciamos el sistema. Si por ejemplo dentro de la carpeta '/etc/rc5.d' se encuentra el enlace 'mysql', bastaria con borrar mysql de /etc/rc5.d y ya este no cargaria por defecto cada vez que ingresemos al sistema, que es el runlevel 5.&lt;br /&gt;&lt;br /&gt;Ahora.. como si se hace asi en System V, como se hace en sistemas BSD scripts?&lt;br /&gt;&lt;br /&gt;Existen otros Unixes y Linux (minoria) que aun trabaja con BSD scripts, entre estos tenemos (Slackware, Crux, Arch Linux) y los BSD (FreeBSD, OpenBSD, NetBSD). Aqui no existe 1 carpeta para cada runlevel como si existe en un System V. Aqui existe 1 solo archivo de configuracion, que es el que indica que servicios cargar y cuales no a la hora de iniciar el sistema... y cualquier cambio a este archivito aplica a todos los runlevels (Van captando la diferencia?).&lt;br /&gt;&lt;br /&gt;En slackware dicho archivo se llama rc.M se encuentra en /etc/rc.d (que seria el equivalente a '/etc/init.d' en un System V). en rc.M vemos que servicios el sistema por defecto carga al iniciar y cuales no, si queremos apagar uno podemos o comentarlo en rc.M o quitarle los permisos de ejecucion al demonio que tambien esta dentro de '/etc/rc.d'.&lt;br /&gt;&lt;br /&gt;En los sistemas BSD (FreeBSD por ejemplo y Crux o Arch linux), igual que slackware tenemos 1 solo archivo de configuracion para todos los runlevels. dicho archivito se llama rc.conf y esta en '/etc' Como slackware en rc.conf estan todos los demonios a cargar para todos los runlevels, aqui activamos o desactivamos servicios solo editando ese archivo.&lt;br /&gt;&lt;br /&gt;En resumen ::&lt;br /&gt;System V : 1 carpeta por cada runlevel dicha carpeta contiene dentro enlacez simbolicos a los demonios que debe cargar. Cada carpeta de runlevel, cualquier cambio solo aplica para ese runlevel.&lt;br /&gt;&lt;br /&gt;BSD Scripts: 1 solo archivo de configuracion, donde se editan los servicios que deben o no subir, cualquier cambio aplica para todos los runlevels.&lt;br /&gt;&lt;br /&gt;Cual es mejor? ninguno, son solo distintas maneras de manejar el asunto Sonrisa&lt;br /&gt;&lt;br /&gt;Como me doy cuenta cuando un sistema es System V o BSD scripts?&lt;br /&gt;Sencillo, cuando iniciamos un Unix o Linux donde se nos permita ver en el proceso de inicio antes de llegar al prompt login o al servidor X (Gnome, KDE, etc). si nuestro sistema va cargando asi :&lt;br /&gt;&lt;br /&gt;Samba .............. (OK)&lt;br /&gt;networking ..............(OK)&lt;br /&gt;sound ...................(OK)&lt;br /&gt;&lt;br /&gt;Es un sistema tipo System V. Ya sabemos que como tal, debe tener una carpeta de demonios llamada 'init.d' generalmente ubicada en '/etc' pero hay unixes que la ubican en otro lado (HP-UX por ejemplo). Y que como es System V no solo tiene init.d tambien tiene subcarpetas por cada runlevel.&lt;br /&gt;&lt;br /&gt;Ahora si el sistema va iniciando asi ::&lt;br /&gt;&lt;br /&gt;raid6: using algorithm sse2x2 (1901 MB/s)&lt;br /&gt;md: raid6 personality registered for level 6&lt;br /&gt;md: raid5 personality registered for level 5&lt;br /&gt;md: raid4 personality registered for level 4&lt;br /&gt;raid5: automatically using best checksumming function: pIII_sse&lt;br /&gt;   pIII_sse  :  4182.000 MB/sec&lt;br /&gt;raid5: using function: pIII_sse (4182.000 MB/sec)&lt;br /&gt;md: multipath personality registered for level -4&lt;br /&gt;device-mapper: ioctl: 4.11.0-ioctl (2006-10-12) initialised: dm-devel@redhat.com&lt;br /&gt;TCP cubic registered&lt;br /&gt;Initializing XFRM netlink socket&lt;br /&gt;NET: Registered protocol family 1&lt;br /&gt;NET: Registered protocol family 17&lt;br /&gt;Using IPI Shortcut mode&lt;br /&gt;&lt;br /&gt;Y va cargando un poco rapido, estamos frente a un sistemas BSD-Scripts. Ya saben que dentro debe tener algun rc.conf o rc.M donde manipule los servicios a cargar al inicio y que cualquier cambio aplica para todos los runlevels.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7987559479812349433-942817993762652899?l=chixmes.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/bi0o8z1jc8C1QmXikAyG_jV83Hs/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/bi0o8z1jc8C1QmXikAyG_jV83Hs/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/bi0o8z1jc8C1QmXikAyG_jV83Hs/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/bi0o8z1jc8C1QmXikAyG_jV83Hs/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/SIxL/~4/ASzs4gRJma8" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://chixmes.blogspot.com/feeds/942817993762652899/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7987559479812349433&amp;postID=942817993762652899" title="7 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7987559479812349433/posts/default/942817993762652899?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7987559479812349433/posts/default/942817993762652899?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/SIxL/~3/ASzs4gRJma8/system-v-vs-bsd-scripts.html" title="System V vs BSD Scripts" /><author><name>Akaishax</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>7</thr:total><feedburner:origLink>http://chixmes.blogspot.com/2008/06/system-v-vs-bsd-scripts.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUANRn4ycCp7ImA9WxdRFU8.&quot;"><id>tag:blogger.com,1999:blog-7987559479812349433.post-7458840833674821764</id><published>2008-06-03T12:55:00.000-07:00</published><updated>2008-06-03T13:09:57.098-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-06-03T13:09:57.098-07:00</app:edited><title>Umask en Unix/Linux</title><content type="html">Alguna vez se han preguntado como sabe Unix/Linux cuando creo un directorio nuevo o un archivo que permisos otorgar por defecto??? Sabes como tu como administrador puedes manipular dichos permisos?.&lt;br /&gt;&lt;br /&gt;En los distintos sistemas Unixes/Linux tenemos una variable de entorno que controla esto llamada umask. Umask no es mas que otra forma de administrar los permisos bajo sistemas unixes/linux, y podemos encontrar una entrada de el en /etc/profile, por lo general siempre lo veremos asi :&lt;br /&gt;&lt;br /&gt;umask 022&lt;br /&gt;&lt;br /&gt;Los permisos en Linux/Unix se otorgan como octal, decimal o simbolo:&lt;br /&gt;&lt;br /&gt;Octal : 0000&lt;br /&gt;decimal : 000&lt;br /&gt;simbolos : u, a, +, -&lt;br /&gt;&lt;br /&gt;como manipulamos umask con los permisos estandares de nuestro sistema? sencillo, toda carpeta recien creada en Linux tiene los permisos 755, y si es un archivo de texto 655.. Ahora te preguntaras porque 755 y 655 y no 777 o 666? o 700 o 600? sencillo, porque si tenemos definido una umask 022 que es la estandar en /etc/profile, todos los permisos de los nuevos archivos se restaran con el octal que tengamos como umask. Por lo cual realmente todas las carpetas se crean con permisos 777 y los archivos de textos 666 pero si restamos ambos a la umask ya definida en /etc/profile como 022, obtenemos lo siguiente :&lt;br /&gt;&lt;br /&gt;umask = 022&lt;br /&gt;carpeta = 777&lt;br /&gt;archivo = 666 &lt;br /&gt;&lt;br /&gt;022 - 777 = 755&lt;br /&gt;022 - 666 = 644&lt;br /&gt;&lt;br /&gt;Captan la idea? no podemos restar el primer 7 ni el primer 6 ya que 0 no tiene valor, pero si podemos restar 2 - 7 y 6 - 2, y es aqui que se definen los permisos reales que tendran todos los archivos y carpetas que recien vayamos creando. Ahora, que ocurre si modificamos el umask 022 de /etc/profile y decimos que quiero un umask 077 y guardamos los cambios en /etc/profile actualizamos con el comando source /etc/profile y creamos una carpeta nueva, que ocurrira aqui?? ya nuestra carpeta no tendra permisos 755 sino :&lt;br /&gt;&lt;br /&gt;umask 077&lt;br /&gt;carpeta 777&lt;br /&gt;077 - 777 = 700&lt;br /&gt;&lt;br /&gt;Todas las nuevas carpetas se crearan con permisos 700, donde solo el duenio tendra acceso a entrar, modificar, borrar, actualizar, etc. Lo mismo ocurre si volvemos a modificar la entrada umask en /etc/profile y decimos que ya no queremos una umask 077 sino umask 066, y actualizamos /etc/profile y creamos un archivo de texto nuevo. Ya nuestro archivo no tendra permisos 644 como ocurre cuando tenemos umask 022. Aqui seria :&lt;br /&gt;&lt;br /&gt;umask 066.&lt;br /&gt;archivo 666&lt;br /&gt;066 - 666 = 600&lt;br /&gt;&lt;br /&gt;Donde solo el duenio o creador del archivo tendra acceso a modificarlo, insertar, verlo, leerlo, etc. Tambien podemos jugar con umask fuera de editar /etc/profile (ya que editar /etc/profile indica que se apliquen a todos los usuarios del sistema). sencillamente abrimos una terminal, y ejecutamos umask valor, donde valor es el valor temporal que queremos asignar a esa seccion que tengo abierta en la terminal, y la cual se aplicara solo mientras mantenga esa seccion abierta, y cree nuevas carpetas o archivos dentro de dicha seccion.&lt;br /&gt;&lt;br /&gt;Espero que la explicacion de umask les haya sido de utilidad.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7987559479812349433-7458840833674821764?l=chixmes.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/dCRs-c0XTaxrvPPXzoBZUz0EyUI/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/dCRs-c0XTaxrvPPXzoBZUz0EyUI/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/dCRs-c0XTaxrvPPXzoBZUz0EyUI/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/dCRs-c0XTaxrvPPXzoBZUz0EyUI/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/SIxL/~4/ScxHGHeG9bo" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://chixmes.blogspot.com/feeds/7458840833674821764/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7987559479812349433&amp;postID=7458840833674821764" title="0 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7987559479812349433/posts/default/7458840833674821764?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7987559479812349433/posts/default/7458840833674821764?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/SIxL/~3/ScxHGHeG9bo/umask-en-unixlinux.html" title="Umask en Unix/Linux" /><author><name>Akaishax</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://chixmes.blogspot.com/2008/06/umask-en-unixlinux.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DEUDQn09fip7ImA9WxdSF0k.&quot;"><id>tag:blogger.com,1999:blog-7987559479812349433.post-1119244094799618926</id><published>2008-05-25T12:45:00.000-07:00</published><updated>2008-05-25T13:11:13.366-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-05-25T13:11:13.366-07:00</app:edited><title>Mysql Falcon</title><content type="html">Much@s conocemos las grandes ventajas de las bases de datos relacionales, sobretodo si es de codigo libre, como el caso de Postgresql y Mysql. Hablemos sobre Mysql en si, Mysql se ha caracterizado por ser el RDBMS mas rapido que existe dentro de las DB relacionales existentes (Oracle, SQL Server, DB2, etc).&lt;br /&gt;&lt;br /&gt;Mysql tambien se diferencia de sus amigas en muchas cosas, ademas de ser una DB relacional posee distintos motores de almacenamientos de datos, que las demas DB no poseen. En Mysql version 5.1.x he inferiores teniamos los siguientes motores de almacenamientos disponibles :&lt;br /&gt;&lt;br /&gt;Myisam :: El motor por defecto de Mysql, indice alto de lectura, no posee capacidad ni soporte para claves foraneas ni referencias. Un gran ambito de escritura sobre este motor alenta sobre manera la DB, pero para lectura es bastante rapida. Es un motor No transaccional, lo que indica que cualquier peticion realizada por un usuario o administrador se aplica inmediato en la tabla y no somos capacez de usar rollback, ya que el cambio es real no virtual como ocurre en una tabla transaccional.&lt;br /&gt;&lt;br /&gt;InnoDB :: Motor de almacenamiento transaccional perteneciente a la compania de Oracle. Posee la caracteristica de soportar claves foraneas y referencias. Tambien posee la capacidad de crear un archivo distinto por cada tabla. No es tan rapida como su contraparte Myisam, pero maneja la data en un modo mas seguro.&lt;br /&gt;&lt;br /&gt;Federated :: Motor de almacenamiento No transaccional, su funcion principal es permitir al administrador que los objectos de una tabla sean guardados en un servidor Mysql remoto y no local.&lt;br /&gt;&lt;br /&gt;NDBCluster :: Utilizado para realizar clusteres de discos en varias DB Mysql locales.&lt;br /&gt;&lt;br /&gt;Memory &amp; Example :: Motores no transacionales, su uso es mas para testing.&lt;br /&gt;&lt;br /&gt;Mirando una breve descripcion de los motores de almacenamientos disponibles en Mysql, nos encontramos con un nuevo motor de almacenamiento en Mysql 6.x el cual aun es alpha y esta en version beta. Hablamos de Falcon.&lt;br /&gt;&lt;br /&gt;Falcon es un nuevo motor de almacenamiento totalmente GPL y totalmente transaccional , tiene soporte para claves foraneas y referencias. Tambien posee una nueva implementacion que es la creacion de tablespaces (como en Oracle) donde podemos asignar un datafile para guardar los objetos de nuestras tablas.&lt;br /&gt;&lt;br /&gt;Las caracteristicas de estos tablespaces a diferencia de un tablespace Oracle, es que Falcon crea un datafile de 16KB por defecto, el cual automaticamente ira automentando de tamano mientras tengamos capacidad en el disco duro. No ocurre asi en un datafile de Oracle donde debemos indicar su tamano y si queremos agrandar o reducir debemos alterar la DB Oracle.  Otra utilidad de un datafile en Falcon es, que al eliminar nuestro tablespace, este automaticamente eliminar el datafile que le pertenece, otra ventaja sobre un tablespace de Oracle que no elimina datafiles. &lt;br /&gt;&lt;br /&gt;Otra ventajilla de un tablespace Falcon, es que su datafile incluye al igual que los demas motores de almacenamiento de Mysql (exceptuando Myisam), los indices y la data de una tabla dentro del mismo archivo. Esto, muchos DBA Oracle piensan que es una desventaja, ya que se tiene la creencia por ley que los indices deben estar en otro HD distinto a la data, y esto debe ser asi en Oracle u otra DB relacional, pero no en Mysql. La razon? la siguiente :&lt;br /&gt;&lt;br /&gt;Oracle lee alternadamente 1 indice, 1 data, 1 indice, 1 data dentro de sus archivos. Si los indices y la data se encuentran en el mismo HD, imaginen la presion que esto causaria al HD y la banda ancha en si.&lt;br /&gt;&lt;br /&gt;Mysql con Falcon, al tener indices y data en 1 solo archivo, lee de antemano primero todos los indices y luego la data no lee alternadamente como lo hace Oracle en 2 archivos distintos, sino que lee 1 solo primero todos los indices, y luego toda la data, lo cual arregla este problemita de saturamiento de lectura por el cual hay que separar indices y data en 2 HD distintos.&lt;br /&gt;&lt;br /&gt;El motor de almacenamiento Falcon solo viene disponible en Mysql 6.x. Para crear un tablespace usamos :&lt;br /&gt;&lt;br /&gt;mysql&gt; create tablespace fulano&lt;br /&gt;       add datafile 'fulano.fts'&lt;br /&gt;       engine = falcon;&lt;br /&gt;&lt;br /&gt;Con esto creamos 1 nuevo tablespace con 1 datafile llamado fulano.fts, podemos verificar en el diccionario de metadata de Mysql sobre la existencias de todos nuestros tablespaces en la DB, pero si nuestro tablespace en cuestion no tiene aun objetos guardados (una tabla), no aparecera a la hora que hagamos :&lt;br /&gt;&lt;br /&gt;mysql&gt; select * from information_schema.falcon_tables;&lt;br /&gt;&lt;br /&gt;Hasta el momento no se soporta agregar mas datafiles a un tablespace, aunque en un futuro la pretension existe. Ya creado nuestro tablespace fulano, creamos una tabla con el mismo motor de almacenamiento y le asignamos su respectivo tablespace.&lt;br /&gt;&lt;br /&gt;mysql&gt; create table prueba ( nombres char(20), apellidos char(20)) engine = falcon tablespace fulano;&lt;br /&gt;&lt;br /&gt;Ahora que existe un objeto real en el datafile fulano.fts podemos verificar la existencia de dicho tablespace :&lt;br /&gt;&lt;br /&gt;mysql&gt; select * from information_schema.falcon_tables;&lt;br /&gt;&lt;br /&gt;Para eliminar un tablespace existente, debemos tener claro que no debe contener ningun objeto, de lo contrario no podremos eliminarlo y nos dara error. Para borrar un tablespace hacemos :&lt;br /&gt;&lt;br /&gt;mysql&gt; drop tablespace fulano engine = falcon;&lt;br /&gt;&lt;br /&gt;Un Saludo :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7987559479812349433-1119244094799618926?l=chixmes.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/9fws7pBE6gOG4AcIio3YjGZ44MY/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/9fws7pBE6gOG4AcIio3YjGZ44MY/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/9fws7pBE6gOG4AcIio3YjGZ44MY/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/9fws7pBE6gOG4AcIio3YjGZ44MY/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/SIxL/~4/f3LhUZ1i_q8" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://chixmes.blogspot.com/feeds/1119244094799618926/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7987559479812349433&amp;postID=1119244094799618926" title="1 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7987559479812349433/posts/default/1119244094799618926?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7987559479812349433/posts/default/1119244094799618926?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/SIxL/~3/f3LhUZ1i_q8/mysql-falcon.html" title="Mysql Falcon" /><author><name>Akaishax</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>1</thr:total><feedburner:origLink>http://chixmes.blogspot.com/2008/05/mysql-falcon.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkMBRHc8cSp7ImA9WxdSF0k.&quot;"><id>tag:blogger.com,1999:blog-7987559479812349433.post-1188647898868468516</id><published>2008-05-25T12:40:00.001-07:00</published><updated>2008-05-25T12:40:55.979-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-05-25T12:40:55.979-07:00</app:edited><title>Perl y DBI</title><content type="html">#Se coloca el interprete al inicio del archivo, obviarlo si se va a ejecutar en SO Windows&lt;br /&gt;#!/usr/bin/perl&lt;br /&gt;# Usamos el paradigma strict, para que explicitamente nos revise el codigo y debamos programar lo mas estructurado posible.&lt;br /&gt;use strict;&lt;br /&gt;# Damos uso del modulo DBI para trabajar con los binarios de Mysql&lt;br /&gt;use DBI;&lt;br /&gt;&lt;br /&gt;# Pedimos informacion al usuario&lt;br /&gt;print  STDOUT "Inserte servidor, database, usuario, contrasena\n";&lt;br /&gt;# Capturamos la entrada del flujo de entrada stdin y guardamos en una variable escalar.&lt;br /&gt;chomp (my $respuesta = &lt;STDIN&gt;);&lt;br /&gt;&lt;br /&gt;# Dividimos los datos de dicha variable escalar con el comando split, y se lo asignamos a una variable de arreglos.&lt;br /&gt;my @respuesta1 = split(/\s+/, $respuesta);&lt;br /&gt;&lt;br /&gt;# Damos uso de las funciones de DBI y los datos insertados por el usuario para conectarnos a Mysql.&lt;br /&gt;my $coneccion = DBI-&gt;connect("dbi:mysql:$respuesta1[1]:$respuesta1[0]", $respuesta1[2], $respuesta1[3], { RaiseError =&gt; 1, PrintError =&gt; 1, AutoCommit =&gt; 0 });&lt;br /&gt;&lt;br /&gt;# Verificamos que la variable coneccion no esta vacia y que se definio&lt;br /&gt; if ( defined $coneccion ) {&lt;br /&gt; if (!$coneccion) {&lt;br /&gt;print STDOUT $coneccion-&gt;errstr;&lt;br /&gt;exit(1);&lt;br /&gt; }&lt;br /&gt; else {&lt;br /&gt;eval {&lt;br /&gt;# Esto es una funcion, que trabajara con distintas opciones de un Menu a elegir&lt;br /&gt; sub Menu() {&lt;br /&gt; print STDOUT "QUe desea hacer?\n1 - Ver primary key\n2 - Ver data\n3 - Crear Tabla\n4 - Borrar Tabla\n5 - Salir\n";&lt;br /&gt; my $respuesta2 = &lt;STDIN&gt;;&lt;br /&gt; chomp $respuesta2;&lt;br /&gt;# Validamos si la respuesta fue 5 antes de la variable variable, para que se cierre la aplicacion.&lt;br /&gt;if ($respuesta2 eq 5 ) { exit(1); }&lt;br /&gt;print STDOUT "Inserte nombre de la tabla\n";&lt;br /&gt;chomp (my $variable = &lt;STDIN&gt;);&lt;br /&gt;&lt;br /&gt;# Empezamos a validar los resultados y a realizar las opciones segun han sido elegidas por el usuario.&lt;br /&gt;if ($respuesta2 eq 1) {&lt;br /&gt;my $peticion = $coneccion-&gt;prepare( qq{ SHOW INDEXES FROM $variable } );&lt;br /&gt;$peticion-&gt;execute();&lt;br /&gt;&lt;br /&gt; while (my @todo = $peticion-&gt;fetchrow_array) {&lt;br /&gt; print STDOUT "\n@todo\n";&lt;br /&gt; }&lt;br /&gt;system("sleep 01");&lt;br /&gt;$peticion-&gt;finish();&lt;br /&gt;# Terminamos y regresamos nuevamente al Menu.&lt;br /&gt;return Menu();&lt;br /&gt;}&lt;br /&gt;elsif ($respuesta2 eq 2) {&lt;br /&gt;my $peticion1 = $coneccion-&gt;prepare( qq{ SELECT * FROM $variable });&lt;br /&gt;$peticion1-&gt;execute();&lt;br /&gt;&lt;br /&gt; while (my @todo1 = $peticion1-&gt;fetchrow_array) {&lt;br /&gt; print STDOUT "\n@todo1\n";&lt;br /&gt; }&lt;br /&gt;system("sleep 01");&lt;br /&gt;$peticion1-&gt;finish();&lt;br /&gt;return Menu();&lt;br /&gt;}&lt;br /&gt;elsif ($respuesta2 eq 3) {&lt;br /&gt;my $peticion1 = $coneccion-&gt;prepare( qq{ $variable });&lt;br /&gt;$peticion1-&gt;execute();&lt;br /&gt;if ($peticion1) { print STDOUT "Realizado!\n"; } else { print STDOUT "Error en la creacion\n"; }&lt;br /&gt;system("sleep 01");&lt;br /&gt;$peticion1-&gt;finish();&lt;br /&gt;return Menu();&lt;br /&gt;}&lt;br /&gt;elsif ($respuesta2 eq 4) {&lt;br /&gt;my $peticion1 = $coneccion-&gt;prepare( qq{ DROP TABLE $variable });&lt;br /&gt;$peticion1-&gt;execute();&lt;br /&gt;&lt;br /&gt;if ($peticion1) { print STDOUT "Realizado\n"; } else { print STDOUT "Error\n"; }&lt;br /&gt; &lt;br /&gt;system("sleep 01");&lt;br /&gt;$peticion1-&gt;finish();&lt;br /&gt;return Menu();&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;} &amp; Menu();&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;# Nos desconectamos completamente de Mysql, asi liberamos memoria.&lt;br /&gt;$coneccion-&gt;disconnect();&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7987559479812349433-1188647898868468516?l=chixmes.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/myoKXh9EUT5sy2DyjDEXadl2_t4/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/myoKXh9EUT5sy2DyjDEXadl2_t4/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/myoKXh9EUT5sy2DyjDEXadl2_t4/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/myoKXh9EUT5sy2DyjDEXadl2_t4/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/SIxL/~4/PUyvXrkuhSI" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://chixmes.blogspot.com/feeds/1188647898868468516/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7987559479812349433&amp;postID=1188647898868468516" title="0 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7987559479812349433/posts/default/1188647898868468516?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7987559479812349433/posts/default/1188647898868468516?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/SIxL/~3/PUyvXrkuhSI/perl-y-dbi_25.html" title="Perl y DBI" /><author><name>Akaishax</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://chixmes.blogspot.com/2008/05/perl-y-dbi_25.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0UBSHc-cCp7ImA9WxdSFkk.&quot;"><id>tag:blogger.com,1999:blog-7987559479812349433.post-2807326096131812955</id><published>2008-05-24T09:05:00.000-07:00</published><updated>2008-05-24T09:07:39.958-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-05-24T09:07:39.958-07:00</app:edited><title>Api C de Mysql</title><content type="html">/* Para compilar este ejemplo, hay que tener Mysql instalado o los Headers de Mysql instalados en un PATH reconocible de nuestro SO. Para compilar bajo Linux/Unix con gcc hacemos :&lt;br /&gt;&lt;br /&gt;gcc -o archivo prueba.c -I/usr/local/include/mysql -lmysqlclient -lnsl -lm -lz&lt;br /&gt;*/&lt;br /&gt;&lt;br /&gt;// Se declaran los headers que vamos a usar.&lt;br /&gt;#include &lt;mysql/mysql.h&gt;&lt;br /&gt;#include &lt;stdio.h&gt;&lt;br /&gt;#include &lt;string.h&gt;&lt;br /&gt;&lt;br /&gt;// Declaramos una estructura, que guarda funciones de la Api C de Mysql&lt;br /&gt;struct data {&lt;br /&gt;MYSQL coneccion;&lt;br /&gt;MYSQL_ROW columna;&lt;br /&gt;MYSQL_RES *respuesta;&lt;br /&gt;} info;&lt;br /&gt;&lt;br /&gt;// Se declara parte del query a hacerse&lt;br /&gt;char peticion[40] = "SELECT * FROM   "; &lt;br /&gt;&lt;br /&gt;main(void)&lt;br /&gt;{&lt;br /&gt;// Hacemos un puntero que apunte a la direccion en memoria de la estructura anterior.&lt;br /&gt;struct data *p = &amp;info;&lt;br /&gt;// Creamos el Objeto Mysql&lt;br /&gt;mysql_init(&amp;p-&gt;coneccion);&lt;br /&gt;char respuesta[15];&lt;br /&gt;&lt;br /&gt;  fprintf(stdout, "Nombre de la Base de Datos\n");&lt;br /&gt;  fscanf(stdin, "%s", &amp;respuesta);&lt;br /&gt;&lt;br /&gt;const char *servidor = "localhost";&lt;br /&gt;const char *usuario = "marian";&lt;br /&gt;const char *contrasena = "123";&lt;br /&gt;const char *data = "primaria";&lt;br /&gt;&lt;br /&gt;  if (!mysql_real_connect(&amp;p-&gt;coneccion, servidor, usuario, contrasena, data, 0, NULL, 0))&lt;br /&gt;  {&lt;br /&gt;  fprintf(stderr, "%s", mysql_error(&amp;p-&gt;coneccion));&lt;br /&gt;  return 1;&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;// Seleccionamos la Db a usar&lt;br /&gt;mysql_select_db(&amp;p-&gt;coneccion,data);&lt;br /&gt;&lt;br /&gt;  // Se concatena el nombre de la DB con el query&lt;br /&gt;  strcat(peticion, respuesta);&lt;br /&gt;&lt;br /&gt;  if (mysql_query(&amp;p-&gt;coneccion, peticion)) {&lt;br /&gt;  fprintf(stderr, "%s\n", mysql_error(&amp;p-&gt;coneccion));&lt;br /&gt;  return 1;&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;// Preparamos a ejecutar la peticion anterior&lt;br /&gt;p-&gt;respuesta = mysql_use_result(&amp;p-&gt;coneccion);&lt;br /&gt;&lt;br /&gt;  while((p-&gt;columna = mysql_fetch_row(p-&gt;respuesta)) != NULL) {&lt;br /&gt;  fprintf(stdout, "%s %s\n", p-&gt;columna[0], p-&gt;columna[1]);&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;// Liberamos memoria usada por el Query&lt;br /&gt;mysql_free_result(p-&gt;respuesta);&lt;br /&gt;&lt;br /&gt;// Desconectamos el programa de Mysql&lt;br /&gt;mysql_close(&amp;p-&gt;coneccion);&lt;br /&gt;&lt;br /&gt;return 0;&lt;br /&gt;}&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7987559479812349433-2807326096131812955?l=chixmes.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/NGE86A87O4hSYcHqfg2vVLWaePM/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/NGE86A87O4hSYcHqfg2vVLWaePM/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/NGE86A87O4hSYcHqfg2vVLWaePM/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/NGE86A87O4hSYcHqfg2vVLWaePM/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/SIxL/~4/knJL1NvvHL0" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://chixmes.blogspot.com/feeds/2807326096131812955/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7987559479812349433&amp;postID=2807326096131812955" title="0 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7987559479812349433/posts/default/2807326096131812955?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7987559479812349433/posts/default/2807326096131812955?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/SIxL/~3/knJL1NvvHL0/api-c-de-mysql.html" title="Api C de Mysql" /><author><name>Akaishax</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://chixmes.blogspot.com/2008/05/api-c-de-mysql.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUAFSHY9fyp7ImA9WxdSFkk.&quot;"><id>tag:blogger.com,1999:blog-7987559479812349433.post-430838080563150107</id><published>2008-05-24T08:41:00.001-07:00</published><updated>2008-05-24T08:41:59.867-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-05-24T08:41:59.867-07:00</app:edited><title>Ataques PDOS, ¿la nueva pesadilla?</title><content type="html">Podríamos agachar la cabeza, y decir que los ataques &lt;strong&gt;PDOS&lt;/strong&gt; (Permanent Denial-Of-Service), serán una pesadilla de ahora en más… pero sería como aceptar que recién ahora nacen, y muchos dudan que esto sea así. &lt;p&gt;Un &lt;strong&gt;ataque de denegación de servicio permanente&lt;/strong&gt; implica que un sistema es dañado, a tal punto de que se dañan partes físicas de la máquina afectada, las cuales deben ser reemplazadas para -solventar- el problema.Este tipo de ataques, según los expertos en seguridad, se lleva acabo por medio del aprovechamiento de vulnerabilidades en las actualizaciones de Firmware, y podrían tener consecuencias muy graves en entornos corporativos, donde el Hardware utilizado normalmente tiene precios un tanto desorbitados.&lt;/p&gt; &lt;p&gt;Uno de los expertos, Smith, apoda esta modalidad como &lt;strong&gt;Phlashing&lt;/strong&gt;, y asegura que puede hacer una demostración de forma remota hacia sistemas vulnerables que tengan actualización por medio de funciones de red (vía web, por ejemplo), detectándolos con su herramienta &lt;strong&gt;PhlashDance&lt;/strong&gt;, que busca en los archivos binarios (del Firmware), e incluso lanzando un ataque desde allí hacia las potenciales víctimas encontradas.&lt;/p&gt; &lt;p&gt;Si bien muchos dicen que los ataques &lt;strong&gt;PDOS&lt;/strong&gt; son nuevos (en base a este hallazgo), otros dudan de que sea una técnica que se viene usándose desde hace tiempo, y que hasta el momento se calificaba como “una simple falla en el Hardware” en muchas organizaciones.&lt;/p&gt; &lt;p&gt;Sin duda, un detalle a tener en cuenta a futuro… a la hora de comprar Hardware con funciones como estas.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7987559479812349433-430838080563150107?l=chixmes.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/83ZuF0CZ9Atvf91eO2EaAGOaVYU/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/83ZuF0CZ9Atvf91eO2EaAGOaVYU/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/83ZuF0CZ9Atvf91eO2EaAGOaVYU/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/83ZuF0CZ9Atvf91eO2EaAGOaVYU/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/SIxL/~4/ZPWvB1oLtio" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://chixmes.blogspot.com/feeds/430838080563150107/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7987559479812349433&amp;postID=430838080563150107" title="0 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7987559479812349433/posts/default/430838080563150107?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7987559479812349433/posts/default/430838080563150107?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/SIxL/~3/ZPWvB1oLtio/ataques-pdos-la-nueva-pesadilla.html" title="Ataques PDOS, ¿la nueva pesadilla?" /><author><name>Akaishax</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://chixmes.blogspot.com/2008/05/ataques-pdos-la-nueva-pesadilla.html</feedburner:origLink></entry></feed>

