<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:blogger='http://schemas.google.com/blogger/2008' xmlns:georss='http://www.georss.org/georss' xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-385784617909842588</id><updated>2024-09-15T21:54:51.257-07:00</updated><category term="linux"/><category term="c"/><category term="adobe"/><category term="x11"/><category term="binario"/><category term="gnu"/><category term="opensource"/><category term="unix"/><category term="actionscript 3"/><category term="apache"/><category term="binutils"/><category term="c++"/><category term="cloud"/><category term="colores"/><category term="consola"/><category term="debug"/><category term="depurar"/><category term="desamblador"/><category term="dissasembler"/><category term="drupal"/><category term="elf"/><category term="fastcgi"/><category term="flash"/><category term="mongodb"/><category term="programacion"/><category term="redhat"/><category term="ruby"/><category term="señales"/><category term="shapado"/><category term="wt"/><title type='text'>Programacion en Linux</title><subtitle type='html'>Programacion en Linux usando herramientes libres y propietarias</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://linuxprogramacion.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/385784617909842588/posts/default?redirect=false'/><link rel='alternate' type='text/html' href='http://linuxprogramacion.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>23</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-385784617909842588.post-4857402114939374134</id><published>2011-08-26T09:13:00.000-07:00</published><updated>2011-08-26T09:36:06.227-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="actionscript 3"/><category scheme="http://www.blogger.com/atom/ns#" term="adobe"/><category scheme="http://www.blogger.com/atom/ns#" term="flash"/><category scheme="http://www.blogger.com/atom/ns#" term="opensource"/><title type='text'>API del reproductor ActionScript 3.0 de YouTube : No se detiene o elimina el video  con destroy() o stop()</title><content type='html'>Personalizar un reproductor en flash para youtube usando las &lt;a href=&quot;http://code.google.com/intl/es/apis/youtube/flash_api_reference.html&quot;&gt;apis&lt;/a&gt; que proporciona puede ser por momentos un dolor de cabeza, debido a que los videos que se estan visualizando son casi imposibles de eliminar o destruir del reproductor,  lo que iindica sus apis al usar &lt;meta equiv=&quot;content-type&quot; content=&quot;text/html; charset=utf-8&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: monospace; font-size: 13px; color: rgb(0, 112, 0); font-weight: bold; line-height: 16px; &quot;&gt;player.stopVideo():Void  o &lt;/span&gt;&lt;meta equiv=&quot;content-type&quot; content=&quot;text/html; charset=utf-8&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: monospace; font-size: 13px; color: rgb(0, 112, 0); font-weight: bold; line-height: 16px; &quot;&gt;player.destroy():Void &lt;/span&gt; el video en curso es detenida su carga y elimina todas sus referencias pero ninguna de estas funciones se ejecuta correctamente, el video sigue ejecutandose en segundo plano.&lt;div&gt;El swf descargado desde &lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: monospace; font-size: 12px; color: rgb(0, 112, 0); line-height: 15px; white-space: pre; &quot;&gt;loader.load(new URLRequest(&quot;http://www.youtube.com/apiplayer?version=3&quot;)); &lt;/span&gt;que es el reproductor sin bordes, botones y otras caracteristicas aparte de cargar el video que se le indica tambien carga publicidad, videos recomendados lo cual genera referencias entre los objetos creados que luego no se pueden eliminar, creo que este es el principal motivo y es muy complicado la eliminacion del video.&lt;/div&gt;&lt;div&gt;&lt;a href=&quot;http://linuxprogramacion.blogspot.com&quot;&gt;http://linuxprogramacion.blogspot.com&lt;/a&gt;&lt;/div&gt;&lt;meta equiv=&quot;content-type&quot; content=&quot;text/html; charset=utf-8&quot;&gt;&lt;meta equiv=&quot;content-type&quot; content=&quot;text/html; charset=utf-8&quot;&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;br/&gt;Origen de la fuente: http://linuxprogramacion.blogspot.com/&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://linuxprogramacion.blogspot.com/feeds/4857402114939374134/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://linuxprogramacion.blogspot.com/2011/08/api-del-reproductor-actionscript-30-de.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/385784617909842588/posts/default/4857402114939374134'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/385784617909842588/posts/default/4857402114939374134'/><link rel='alternate' type='text/html' href='http://linuxprogramacion.blogspot.com/2011/08/api-del-reproductor-actionscript-30-de.html' title='API del reproductor ActionScript 3.0 de YouTube : No se detiene o elimina el video  con destroy() o stop()'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-385784617909842588.post-5453942598944265389</id><published>2011-05-15T09:59:00.000-07:00</published><updated>2011-05-15T10:38:26.431-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="cloud"/><category scheme="http://www.blogger.com/atom/ns#" term="redhat"/><title type='text'>La nube de Redhat se llama OpenShift</title><content type='html'>&lt;a href=&quot;https://openshift.redhat.com/app/&quot;&gt;OpenShift&lt;/a&gt; es la nube de la empresa &lt;a href=&quot;http://www.redhat.com/&quot;&gt;RedHat&lt;/a&gt; , tiene tres tipos de servicios destinados a diferentes necesidades de los usuarios o empresas:&lt;div&gt;&lt;b&gt;OpenShift Express&lt;/b&gt;: Destinada a desarrolladores ademas que es gratuita y no es escalable , tiene las siguientes caracteristicas.&lt;/div&gt;&lt;div&gt; Supported software&lt;/div&gt;&lt;div&gt;       PHP 5.3.2&lt;/div&gt;&lt;div&gt;       Ruby 1.8.7&lt;/div&gt;&lt;div&gt;       Python 2.6.5&lt;/div&gt;&lt;div&gt;Express platform&lt;/div&gt;&lt;div&gt;       Red Hat Enterprise Linux 6&lt;/div&gt;&lt;div&gt;       SQLite 3.6.20&lt;/div&gt;&lt;div&gt;       Apache HTTP 2.2.15&lt;/div&gt;&lt;div&gt;       128 MB of storage space for application files&lt;/div&gt;&lt;div&gt;       256 MB of RAM&lt;/div&gt;&lt;div&gt;Express client tools requirements&lt;/div&gt;&lt;div&gt;       Git&lt;/div&gt;&lt;div&gt;       Ruby&lt;/div&gt;&lt;div&gt;       OpenSSH&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;La suscripcion a este servicio no tiene muchas complicaciones, solo que hay que tener en cuenta que las caracteristicas de este servicio son muy limitadas como muchos servicios gratuitos, no hay control de panel para administracion, no se puede agregar dominios solo redhat provee un subdominio (nombredelaaplicacion-nombredelsubdominio.rhcloud.com ) y no se permite que la aplicacion desarrollada se use para produccion.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;OpenShift Flex&lt;/b&gt;: Destinada a desarrolladores, es gratuita y escalable tiene las siguientes caracteristicas.&lt;/div&gt;&lt;div&gt;&lt;div&gt;Supported Software&lt;/div&gt;&lt;div&gt;       Apache Web Server 2.2.3&lt;/div&gt;&lt;div&gt;       Apache Tomcat 6.0.18&lt;/div&gt;&lt;div&gt;       JBoss Application Server 6.1.0&lt;/div&gt;&lt;div&gt;       Java – JDK 6.0&lt;/div&gt;&lt;div&gt;       PHP 5.2.10&lt;/div&gt;&lt;div&gt;       MySQL 5.1.52&lt;/div&gt;&lt;div&gt;       Memcached 1.4.5&lt;/div&gt;&lt;div&gt;       MongoDB 1.6.5&lt;/div&gt;&lt;div&gt;       Zend Framework 1.10.8&lt;/div&gt;&lt;div&gt;Supported Clouds&lt;/div&gt;&lt;div&gt;       Amazon EC2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Para acceder a este servicio  se debe de tener una cuenta en amazon:&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Liberation Sans&#39;, &#39;Helvetica Neue&#39;, Arial, FreeSans, sans-serif; font-size: 13px; line-height: 19px; &quot;&gt;&lt;h3 style=&quot;border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 20pt; margin-top: 0px; margin-right: 0px; margin-bottom: 20px; margin-left: 60px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; color: rgb(85, 85, 85); font-family: OverpassBold; font-weight: normal; &quot;&gt;Request Access to Flex&lt;/h3&gt;&lt;p style=&quot;border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 13px; margin-top: 0px; margin-right: 0px; margin-bottom: 20px; margin-left: 60px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; color: rgb(85, 85, 85); &quot;&gt;We&#39;ll need a little information get to you access to the Developer Preview.&lt;/p&gt;&lt;form charset=&quot;UTF-8&quot; action=&quot;/app/access/flex&quot; class=&quot;formtastic access_flex_request&quot; id=&quot;new_access_flex_request&quot; method=&quot;post&quot; style=&quot;border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 13px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; &quot;&gt;&lt;div style=&quot;border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 13px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; display: inline; &quot;&gt;&lt;/div&gt;&lt;fieldset class=&quot;inputs&quot; style=&quot;border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 13px; margin-top: 0px; margin-right: 0px; margin-bottom: 20px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; &quot;&gt;&lt;ol style=&quot;border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 13px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; list-style-type: none; list-style-position: initial; list-style-image: initial; color: rgb(85, 85, 85); &quot;&gt;&lt;p style=&quot;border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 13px; margin-top: 0px; margin-right: 0px; margin-bottom: 20px; margin-left: 60px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; color: rgb(85, 85, 85); clear: left; &quot;&gt;First, we&#39;ll need your Amazon account number (e.g. 1234-1234-1234). Your account number will allow us to share the Flex Amazon Machine Images with your account.&lt;/p&gt;&lt;/ol&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;color:#555555;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: rgb(0, 0, 0); &quot;&gt;&lt;b&gt;OpenShift Power&lt;/b&gt;: D&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Georgia, serif; line-height: normal; font-size: 16px; &quot;&gt;estinado para produccion con todas las caracteristicas para desarrollar y poner en funcionamiento aplicaciones en la nube, por el momento no hay forma de adquirir este servicio sin tener contacto directo con el soporte de Redhat.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Georgia, serif; line-height: normal; font-size: 16px; &quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Georgia, serif; line-height: normal; font-size: 16px; &quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Georgia, serif; line-height: normal; font-size: 16px; &quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-family:Georgia, serif;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;line-height: normal; &quot;&gt;&lt;a href=&quot;http://linuxprogramacion.blogspot.com/&quot;&gt;&lt;i&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: small;&quot;&gt;Linuxprogramacion&lt;/span&gt;&lt;/i&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/fieldset&gt;&lt;/form&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;br/&gt;Origen de la fuente: http://linuxprogramacion.blogspot.com/&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://linuxprogramacion.blogspot.com/feeds/5453942598944265389/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://linuxprogramacion.blogspot.com/2011/05/la-nube-de-redhat-se-llama-openshift.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/385784617909842588/posts/default/5453942598944265389'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/385784617909842588/posts/default/5453942598944265389'/><link rel='alternate' type='text/html' href='http://linuxprogramacion.blogspot.com/2011/05/la-nube-de-redhat-se-llama-openshift.html' title='La nube de Redhat se llama OpenShift'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-385784617909842588.post-29403184773875563</id><published>2011-04-22T16:17:00.000-07:00</published><updated>2011-04-22T16:31:38.079-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="adobe"/><category scheme="http://www.blogger.com/atom/ns#" term="gnu"/><title type='text'>Problemas para crear el codigo html para los objetos flash ?</title><content type='html'>Si tiene algun problema al crear el codigo html para asi poder colocar su aplicacion flash en su web, &lt;a href=&quot;http://code.google.com/p/swfobject/&quot;&gt;SwfObject&lt;/a&gt; es la solucion, permite de una forma sencilla la generacion del codigo necesario para solucionar  problemas tan comunes como el modo FullScreen que no funciona correctamente en internet explorer (ie6,ie7).&lt;br /&gt;&lt;a href=&quot;http://code.google.com/p/swfobject/&quot;&gt;SwfObject&lt;/a&gt; es software libre y maneja estandares, ademas es compatible con la mayoria de navegadores web.&lt;br /&gt;&lt;a href=&quot;http://www.mediavilla.name/index.php/jr/post/swfobject_2/es&quot;&gt;Documentacion en castellano&lt;/a&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;br/&gt;Origen de la fuente: http://linuxprogramacion.blogspot.com/&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://linuxprogramacion.blogspot.com/feeds/29403184773875563/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://linuxprogramacion.blogspot.com/2011/04/problemas-para-crear-el-codigo-html.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/385784617909842588/posts/default/29403184773875563'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/385784617909842588/posts/default/29403184773875563'/><link rel='alternate' type='text/html' href='http://linuxprogramacion.blogspot.com/2011/04/problemas-para-crear-el-codigo-html.html' title='Problemas para crear el codigo html para los objetos flash ?'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-385784617909842588.post-5477207966963110786</id><published>2011-03-22T18:52:00.000-07:00</published><updated>2011-03-22T19:07:12.383-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="adobe"/><category scheme="http://www.blogger.com/atom/ns#" term="opensource"/><title type='text'>Proyectos Opensource de Adobe</title><content type='html'>Talvez pocos son los que conocen de la existencia de una rama opensource en la empresa &lt;a href=&quot;http://adobe.com&quot;&gt;Adobe&lt;/a&gt;. Para sorpresa de algunos Adobe tambien apuesta por el software libre pero asu manera.&lt;br /&gt;Algunos de estos proyectos libres personalmente los uso para el desarrollo de aplicaciones Flash, Air. &lt;br /&gt;Uno de esos proyectos que mas uso es &lt;a href=&quot;http://labs.adobe.com/downloads/alchemy.html&quot;&gt;Alchemy&lt;/a&gt; que me permite convertir librerias escritas en ANSI C en codigo actionscript 3, ademas &lt;a href=&quot;http://opensource.adobe.com/wiki/display/flexsdk/Flex+SDK&quot;&gt;flex sdk&lt;/a&gt; que me permite desarrollar aplicaciones flash.&lt;br /&gt;La web &lt;a href=&quot;http://opensource.adobe.com/wiki/display/site/Home&quot;&gt;opensource de adobe&lt;/a&gt;&lt;br /&gt;La lista completa de sus &lt;a href=&quot;http://opensource.adobe.com/wiki/display/site/Projects&quot;&gt;proyectos opensource&lt;/a&gt;  &lt;br /&gt;Publicare algunos ejemplos sobre alchemy en algun nuevo post ya que me parece el mas interesante de sus proyectos.&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;br/&gt;Origen de la fuente: http://linuxprogramacion.blogspot.com/&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://linuxprogramacion.blogspot.com/feeds/5477207966963110786/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://linuxprogramacion.blogspot.com/2011/03/proyectos-opensource-de-adobe.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/385784617909842588/posts/default/5477207966963110786'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/385784617909842588/posts/default/5477207966963110786'/><link rel='alternate' type='text/html' href='http://linuxprogramacion.blogspot.com/2011/03/proyectos-opensource-de-adobe.html' title='Proyectos Opensource de Adobe'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-385784617909842588.post-1024407625438608851</id><published>2011-03-20T20:19:00.000-07:00</published><updated>2011-03-20T20:25:46.062-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="consola"/><category scheme="http://www.blogger.com/atom/ns#" term="x11"/><title type='text'>Silenciar el pitido que emite la computadora</title><content type='html'>Aveces es molestoso escuchar el pitido que emite el parlante de la computadora cuando se esta en un terminal y se esta usando el tabulador o se cometio algun error al digitar.&lt;br /&gt;Con este par de comandos(para modo consola y entorno grafico) se silencia el pitido:&lt;br /&gt;&lt;br /&gt;setterm -blength 0    &lt;br /&gt;xset -b&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;br/&gt;Origen de la fuente: http://linuxprogramacion.blogspot.com/&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://linuxprogramacion.blogspot.com/feeds/1024407625438608851/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://linuxprogramacion.blogspot.com/2011/03/silenciar-el-pitido-que-emite-la.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/385784617909842588/posts/default/1024407625438608851'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/385784617909842588/posts/default/1024407625438608851'/><link rel='alternate' type='text/html' href='http://linuxprogramacion.blogspot.com/2011/03/silenciar-el-pitido-que-emite-la.html' title='Silenciar el pitido que emite la computadora'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-385784617909842588.post-2410722261820259891</id><published>2011-03-19T10:41:00.001-07:00</published><updated>2011-03-19T10:58:03.459-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="c"/><category scheme="http://www.blogger.com/atom/ns#" term="unix"/><title type='text'>Variables de entorno para instalaciones personalizadas</title><content type='html'>Si esta copilando e instalando nuevas librerias y programas pero no quiere que estas sobreescriban versiones existentes en su sistema operativo Unix. Puede crear una nueva estructura de directorios para instalarlas ahi por ejemplo:&lt;div&gt;mkdir $HOME/cualquierpath&lt;/div&gt;&lt;div&gt;mkdir $HOME/cualquierpath/bin&lt;/div&gt;&lt;div&gt;mkdir $HOME/cualquierpath/sbin&lt;/div&gt;&lt;div&gt;mkdir $HOME/cualquierpath/lib&lt;/div&gt;&lt;div&gt;mkdir $HOME/cualquierpath/etc&lt;/div&gt;&lt;div&gt;mkdir $HOME/cualquierpath/share&lt;/div&gt;&lt;div&gt;mkdir $HOME/cualquierpath/include&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Ahora puede copilar su libreria indicandole donde tiene que instalarlo, para ello es necesario que tenga generado el archivo configure y pasarle la variable siguiente:&lt;/div&gt;&lt;div&gt;./configure --prefix=$HOME/cualquierpath&lt;/div&gt;&lt;div&gt;make ; make install&lt;/div&gt;&lt;div&gt;Para la ejecucion del nuevo programa instalado es necesario modificar la variable de entorno PATH y LD_LIBRARY_PATH &lt;/div&gt;&lt;div&gt;PATH=$HOME/cualquierpath/bin:$PATH&lt;/div&gt;&lt;div&gt;LD_LIBRARY_PATH=$HOME/cualquierpath/lib miprograma&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;br/&gt;Origen de la fuente: http://linuxprogramacion.blogspot.com/&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://linuxprogramacion.blogspot.com/feeds/2410722261820259891/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://linuxprogramacion.blogspot.com/2011/03/variables-de-entorno-para-instalaciones.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/385784617909842588/posts/default/2410722261820259891'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/385784617909842588/posts/default/2410722261820259891'/><link rel='alternate' type='text/html' href='http://linuxprogramacion.blogspot.com/2011/03/variables-de-entorno-para-instalaciones.html' title='Variables de entorno para instalaciones personalizadas'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-385784617909842588.post-9073959753429609011</id><published>2011-03-18T22:18:00.000-07:00</published><updated>2011-03-18T22:33:50.690-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="drupal"/><category scheme="http://www.blogger.com/atom/ns#" term="mongodb"/><title type='text'>Drupal 7 y mongodb</title><content type='html'>&lt;a href=&quot;http://drupal.org&quot;&gt;Drupal 7&lt;/a&gt; no trae por defecto integracion con la base de datos no relacional &lt;a href=&quot;http://mongodb.org&quot;&gt;mongodb&lt;/a&gt;, en el proceso de instalacion solo son mostrados mysql, postgres  entre otras, pero en ningun momento de la instalacion aparece mongodb.&lt;div&gt;La unica forma de poder usar mongodb en drupal 7 es atravez del &lt;a href=&quot;http://drupal.org/project/mongodb&quot;&gt;modulo mongodb&lt;/a&gt;  pero solo permite la sustitucion de algunas tablas/registros de las bases de datos relacionales como &quot;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Lucida Grande&#39;, &#39;DejaVu Sans&#39;, &#39;Bitstream Vera Sans&#39;, Verdana, Arial, sans-serif; color: rgb(34, 34, 34); font-size: 13px; line-height: 18px; &quot;&gt;_watchdog&quot;  como lo indica su documentacion:&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Lucida Grande&#39;, &#39;DejaVu Sans&#39;, &#39;Bitstream Vera Sans&#39;, Verdana, Arial, sans-serif; color: rgb(34, 34, 34); font-size: 13px; line-height: 18px; &quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;    style=&quot;font-family:&#39;Lucida Grande&#39;, &#39;DejaVu Sans&#39;, &#39;Bitstream Vera Sans&#39;, Verdana, Arial, sans-serif;font-size:100%;color:#222222;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: 13px; line-height: 18px;&quot;&gt;&lt;ul style=&quot;border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; font-size: 13px; margin-top: 0px; margin-right: 0px; margin-bottom: 0.692em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 2em; vertical-align: baseline; list-style-type: disc; list-style-position: initial; list-style-image: initial; overflow-x: auto; overflow-y: auto; background-position: initial initial; background-repeat: initial initial; &quot;&gt;&lt;li style=&quot;border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; font-size: 13px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; vertical-align: baseline; background-position: initial initial; background-repeat: initial initial; &quot;&gt;D7: mongodb_cache: Store cache items in mongodb.&lt;/li&gt;&lt;li style=&quot;border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; font-size: 13px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; vertical-align: baseline; background-position: initial initial; background-repeat: initial initial; &quot;&gt;D7: mongodb_field_storage: Store the fields in mongodb.&lt;/li&gt;&lt;li style=&quot;border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; font-size: 13px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; vertical-align: baseline; background-position: initial initial; background-repeat: initial initial; &quot;&gt;D7: mongodb_session: Store sessions in mongodb.&lt;/li&gt;&lt;li style=&quot;border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; font-size: 13px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; vertical-align: baseline; background-position: initial initial; background-repeat: initial initial; &quot;&gt;D6/D7: mongodb_watchdog: Store the watchdog messages in mongodb. Note this needs a core &lt;a href=&quot;http://drupal.org/files/issues/watchdog-constant-strings.patch&quot; rel=&quot;nofollow&quot; style=&quot;border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; font-size: 13px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; vertical-align: baseline; color: rgb(6, 120, 190); text-decoration: none; background-position: initial initial; background-repeat: initial initial; &quot;&gt;patch&lt;/a&gt;applied or it will create a separate collection for every 404 message. It breaks some unimportant functionality, read the &lt;a href=&quot;http://drupal.org/node/904994&quot; rel=&quot;nofollow&quot; style=&quot;border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; font-size: 13px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; vertical-align: baseline; color: rgb(6, 120, 190); text-decoration: none; background-position: initial initial; background-repeat: initial initial; &quot;&gt;issue&lt;/a&gt; on why it was rolled back.&lt;/li&gt;&lt;li style=&quot;border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; font-size: 13px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; vertical-align: baseline; background-position: initial initial; background-repeat: initial initial; &quot;&gt;D6/D7: mongodb: support library for the other modules&lt;/li&gt;&lt;li style=&quot;border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; font-size: 13px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; vertical-align: baseline; background-position: initial initial; background-repeat: initial initial; &quot;&gt;D7: mongodb_block: Store block information in mongodb. Very close to the core block API.&lt;/li&gt;&lt;li style=&quot;border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; font-size: 13px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; vertical-align: baseline; background-position: initial initial; background-repeat: initial initial; &quot;&gt;D7: mongodb_queue: DrupalQueueInterface implementation using mongodb.&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;No se puede sustituir completamente mysql por ejemplo con mongodb y ademas es un problema tener en funcionamiento al mismo tiempo 2 bases de datos ya que perjudica el rendimiento en el servidor.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/span&gt;&lt;/span&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;br/&gt;Origen de la fuente: http://linuxprogramacion.blogspot.com/&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://linuxprogramacion.blogspot.com/feeds/9073959753429609011/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://linuxprogramacion.blogspot.com/2011/03/drupal-7-y-mongodb.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/385784617909842588/posts/default/9073959753429609011'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/385784617909842588/posts/default/9073959753429609011'/><link rel='alternate' type='text/html' href='http://linuxprogramacion.blogspot.com/2011/03/drupal-7-y-mongodb.html' title='Drupal 7 y mongodb'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-385784617909842588.post-3549381929588440551</id><published>2011-03-18T20:53:00.000-07:00</published><updated>2011-03-18T22:17:20.675-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="apache"/><category scheme="http://www.blogger.com/atom/ns#" term="fastcgi"/><title type='text'>Fastcgi en apache</title><content type='html'>Para poder ejecutar programas o scripts en el servidor apache mediante el modulo &lt;a href=&quot;http://www.fastcgi.com/&quot;&gt;fastcgi&lt;/a&gt;  debe tener en cuenta algunas recomendacion.&lt;div&gt;Dependiendo de la version del servidor apache que este usando , es necesario activar el modulo mod_fcgid.so y configurar los virtual host en la configuracion de apache para poder ejecutar fastcgi.&lt;/div&gt;&lt;div&gt;En este caso solo se programara en C el ejemplo, tambien se puede usar otros lenguajes de programacion por ejemplo java, perl, tcl, etc.&lt;/div&gt;&lt;div&gt;Existen varios ejemplos que se pueden encontrar por internet  pero la gran mayoria no funcionan, es necesario tener instalado la libreria fcgi lo puede obtener atravez de la herramienta que le proporciona su distribucion de linux o puede obtener el codigo fuente en este link &lt;a href=&quot;http://mirror.star4u.org/ubuntu/pool/universe/libf/libfcgi/libfcgi_2.4.0.orig.tar.gz&quot;&gt;http://mirror.star4u.org/ubuntu/pool/universe/libf/libfcgi/libfcgi_2.4.0.orig.tar.gz&lt;/a&gt;  , en el codigo fuente existe ejemplos que solo hay que copilarlo y hacerlo funcionar.&lt;/div&gt;&lt;div&gt;Por ejemplo echo.c&lt;/div&gt;&lt;div&gt;/*****************************/&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;/*&lt;/div&gt;&lt;div&gt; * echo.c --&lt;/div&gt;&lt;div&gt; *&lt;/div&gt;&lt;div&gt; *&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt; &lt;/span&gt;Produce a page containing all FastCGI inputs&lt;/div&gt;&lt;div&gt; *&lt;/div&gt;&lt;div&gt; *&lt;/div&gt;&lt;div&gt; * Copyright (c) 1996 Open Market, Inc.&lt;/div&gt;&lt;div&gt; *&lt;/div&gt;&lt;div&gt; * See the file &quot;LICENSE.TERMS&quot; for information on usage and redistribution&lt;/div&gt;&lt;div&gt; * of this file, and for a DISCLAIMER OF ALL WARRANTIES.&lt;/div&gt;&lt;div&gt; *&lt;/div&gt;&lt;div&gt; */&lt;/div&gt;&lt;div&gt;#ifndef lint&lt;/div&gt;&lt;div&gt;static const char rcsid[] = &quot;$Id: echo.c,v 1.5 1999/07/28 00:29:37 roberts Exp $&quot;;&lt;/div&gt;&lt;div&gt;#endif /* not lint */&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;#include &quot;fcgi_config.h&quot;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;#include &lt;stdlib.h&gt;&lt;/stdlib.h&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;#ifdef HAVE_UNISTD_H&lt;/div&gt;&lt;div&gt;#include &lt;unistd.h&gt;&lt;/unistd.h&gt;&lt;/div&gt;&lt;div&gt;#endif&lt;/div&gt;&lt;div&gt;extern char **environ;&lt;/div&gt;&lt;div&gt;#include &quot;fcgi_stdio.h&quot;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;static void PrintEnv(char *label, char **envp)&lt;/div&gt;&lt;div&gt;{&lt;/div&gt;&lt;div&gt;    printf(&quot;%s:&lt;br /&gt;\n&lt;pre&gt;\n&quot;, label);&lt;/pre&gt;&lt;/div&gt;&lt;div&gt;    for ( ; *envp != NULL; envp++) {&lt;/div&gt;&lt;div&gt;        printf(&quot;%s\n&quot;, *envp);&lt;/div&gt;&lt;div&gt;    }&lt;/div&gt;&lt;div&gt;    printf(&quot;&lt;p&gt;\n&quot;);&lt;/p&gt;&lt;/div&gt;&lt;div&gt;}&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;int main ()&lt;/div&gt;&lt;div&gt;{&lt;/div&gt;&lt;div&gt;    char **initialEnv = environ;&lt;/div&gt;&lt;div&gt;    int count = 0;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;    while (FCGI_Accept() &gt;= 0) {&lt;/div&gt;&lt;div&gt;        char *contentLength = getenv(&quot;CONTENT_LENGTH&quot;);&lt;/div&gt;&lt;div&gt;        int len;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt; &lt;/span&gt;printf(&quot;Content-type: text/html\r\n&quot;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt; &lt;/span&gt;    &quot;\r\n&quot;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt; &lt;/span&gt;    &quot;&lt;b&gt;FastCGI echo&lt;/b&gt;&quot;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt; &lt;/span&gt;    &quot;&lt;h1&gt;FastCGI echo&lt;/h1&gt;\n&quot;&lt;/div&gt;&lt;div&gt;            &quot;Request number %d,  Process ID: %d&lt;p&gt;\n&quot;, ++count, getpid());&lt;/p&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;        if (contentLength != NULL) {&lt;/div&gt;&lt;div&gt;            len = strtol(contentLength, NULL, 10);&lt;/div&gt;&lt;div&gt;        }&lt;/div&gt;&lt;div&gt;        else {&lt;/div&gt;&lt;div&gt;            len = 0;&lt;/div&gt;&lt;div&gt;        }&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;        if (len &lt;= 0) {&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt; &lt;/span&gt;    printf(&quot;No data from standard input.&lt;p&gt;\n&quot;);&lt;/p&gt;&lt;/div&gt;&lt;div&gt;        }&lt;/div&gt;&lt;div&gt;        else {&lt;/div&gt;&lt;div&gt;            int i, ch;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt; &lt;/span&gt;    printf(&quot;Standard input:&lt;br /&gt;\n&lt;pre&gt;\n&quot;);&lt;/pre&gt;&lt;/div&gt;&lt;div&gt;            for (i = 0; i &lt;&gt;&lt;div&gt;                if ((ch = getchar()) &lt;&gt;&lt;div&gt;                    printf(&quot;Error: Not enough bytes received on standard input&lt;p&gt;\n&quot;);&lt;/p&gt;&lt;/div&gt;&lt;div&gt;                    break;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;  &lt;/span&gt;}&lt;/div&gt;&lt;div&gt;                putchar(ch);&lt;/div&gt;&lt;div&gt;            }&lt;/div&gt;&lt;div&gt;            printf(&quot;\n&lt;p&gt;\n&quot;);&lt;/p&gt;&lt;/div&gt;&lt;div&gt;        }&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;        PrintEnv(&quot;Request environment&quot;, environ);&lt;/div&gt;&lt;div&gt;        PrintEnv(&quot;Initial environment&quot;, initialEnv);&lt;/div&gt;&lt;div&gt;    } /* while */&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;    return 0;&lt;/div&gt;&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;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;Para copilarlo: &lt;div&gt;gcc -o echo.fcgi echo.c -lfcgi&lt;/div&gt;&lt;div&gt;Tenga en cuenta la extension del archivo (.fcgi) generado debe ser la que se configuro en el apache para poder ejecutar fastcgi.&lt;/div&gt;&lt;div&gt;Lo puede ejecutar en una consola el binario obtenido le mostrara una salida formateada en html, pero la forma correcta es atravez de un navegador web, ejecute  http://midominio.com/echo.fcgi&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Si tiene alguna duda, consulte la documentacion de fastcgi &lt;a href=&quot;http://www.fastcgi.com/drupal/node/6&quot;&gt;http://www.fastcgi.com/drupal/node/6&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;br/&gt;Origen de la fuente: http://linuxprogramacion.blogspot.com/&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://linuxprogramacion.blogspot.com/feeds/3549381929588440551/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://linuxprogramacion.blogspot.com/2011/03/fastcgi-en-apache.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/385784617909842588/posts/default/3549381929588440551'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/385784617909842588/posts/default/3549381929588440551'/><link rel='alternate' type='text/html' href='http://linuxprogramacion.blogspot.com/2011/03/fastcgi-en-apache.html' title='Fastcgi en apache'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-385784617909842588.post-4254127957621595961</id><published>2011-03-17T21:00:00.000-07:00</published><updated>2011-03-17T21:42:16.633-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="ruby"/><category scheme="http://www.blogger.com/atom/ns#" term="shapado"/><title type='text'>Shapado: Preguntas y respuestas un mar de bugs</title><content type='html'>Tenia que instalar en un VPS un sistema web de preguntas  y respuestas, busque varios soluciones libres disponibles despues de testear varias opte por &lt;a href=&quot;http://shapado.com&quot;&gt;shapado&lt;/a&gt; hecho en ruby.&lt;br /&gt;No se programar en ruby creo que este a sido un problema al tratar de hacer funcionar shapado, pero al final funciono pero no en la forma como queria.&lt;br /&gt;Cuando se quiere programar en php al instalarlo en el servidor sus dependencias considero que son pocas, pero con ruby la cosa cambia radicalmente , desarrollar una aplicacion web si es que no se tiene experiencia puede ser un dolor de cabeza.&lt;br /&gt;Recuerdo que tenia que instalar una gran cantidad de dependencias de ruby on rails lo cual a generado que ocupe mas espacio en disco y en un VPS puede traer problemas ya que hay limitacion de disco.&lt;br /&gt;La integracion con el servidor apache es algo confuso no hay mucha documentacion, hay que instalar varios programas para que una aplicacion hecha en ruby funcione correctamente integrada con el servidor.&lt;br /&gt;Lo interesante de Shapado  es que usa una base de datos no relacional que es &lt;a href=&quot;http://mongodb.org&quot;&gt;mongodb&lt;/a&gt;, bueno lo interesante acaba en la base de datos, ya que si se quiere que funcione shapado en el menor tiempo posible hay que ser un experto en este tema, su documentacion tambien es algo limitada, para hacerlo funcionar este tiene su propio servidor integrado y ademas tiene modos de funcionamiento segun recuerdo &quot;desarrollo&quot;, &quot;produccion&quot; y otro mas .&lt;br /&gt;Creia que en el modo de &quot;produccion&quot; era el que obviamente se tenia que usar  para ponerlo en linea  pero resulta que no es asi  es parecido al mode de &quot;desarrollo&quot;. En modo &quot;produccion&quot; genera logs innecesarios y ademas las respuestas del servidor son demasiados lentas.&lt;br /&gt;Para ser usado realmente en &quot;produccion&quot; se debe de integrar con el apache y en este condiciones su funcionamiento trae menos problemas.&lt;br /&gt;Shapado tiene varios bugs que ya estan documentados hace un buen tiempo pero no lo han corregido en sus ultimas versiones, como por ejemplo:&lt;br /&gt;El manejo de tags , se debe de revisar los logs para darse cuenta que la sugerencia de tags no funciona y hay que parchar el codigo.&lt;br /&gt;Cuando agregue los tags a su pregunta poner al final la coma correspondiente, si solo es un tag y no hay coma esta no sera procesada correctamente.&lt;br /&gt;Su buscador no pagina bien , muestra los mismos resultados en cualquier pagina (1,2,3,4..).&lt;br /&gt;Bajo ciertas condiciones shapado no concluye la peticion que esta solicitando el usuario y provoca un error 500 en el apache.&lt;br /&gt;Si tiene la fortuna que su primera pregunta se ha colocada correctamente en la base de datos eso indica que se ahorro otro problema , shapado una vez instalado y funcionando no procesa correctamente la primera pregunta que se le agregue,  aveces es necesario colocar preguntas y respuestas en modo &quot;desarrollo&quot; para que en modo &quot;produccion&quot; funcione correctamente.&lt;br /&gt;De todos los bugs que he enumerado considero que el mas grave es cuando el servidor web envia un error al usuario indicando que hay problemas en la web.&lt;br /&gt;En un VPS la memoria y espacio en disco son limitados(de acuerdo al plan que tenga) shapado consume en memoria entre 150 y 200 megas sin incluir el consumo de los demas procesos generados.&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;br/&gt;Origen de la fuente: http://linuxprogramacion.blogspot.com/&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://linuxprogramacion.blogspot.com/feeds/4254127957621595961/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://linuxprogramacion.blogspot.com/2011/03/shapado-preguntas-y-respuestas-un-mar.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/385784617909842588/posts/default/4254127957621595961'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/385784617909842588/posts/default/4254127957621595961'/><link rel='alternate' type='text/html' href='http://linuxprogramacion.blogspot.com/2011/03/shapado-preguntas-y-respuestas-un-mar.html' title='Shapado: Preguntas y respuestas un mar de bugs'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-385784617909842588.post-4371621184776776055</id><published>2011-03-17T20:42:00.000-07:00</published><updated>2011-03-17T20:59:07.691-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="c++"/><category scheme="http://www.blogger.com/atom/ns#" term="wt"/><title type='text'>Wt C++ Web toolkit: Creando aplicaciones web con C++</title><content type='html'>Cuando se desarrolla aplicaciones web aveces no se toma en cuenta el rendimiento de la aplicacion , recien se considera este punto  cuando nuestra web comienza a tener muchas visitas y se genera varios problemas en el servidor, peor aun si es un hosting compartido.&lt;br /&gt;Decidi investigar como mejorar las aplicaciones web, para optimizar su uso de memoria y uso de la cpu y encontre este framework &lt;a href=&quot;http://www.webtoolkit.eu/wt&quot;&gt;WT&lt;/a&gt; hecho completamente en C++.&lt;br /&gt;Despues de leer su manual, compile y por fin logre tener un &quot;Hola Mundo&quot; que hice funcionar en el servidor web apache en Linux , el resultado fue algo fustrante , el famoso &quot;Hola Mundo&quot; hecho en WT ocupaba en promedio 64Kbytes , la respuesta del servidor web era algo lenta y lo mas problematico es que la aplicacion provocaba fallos en memoria &quot;segment fault&quot; y el proceso generado quedaba en estado &quot;Zombi&quot; lo cual le era imposible al apache eliminarlo y quedaba el proceso ocupando recursos del servidor.&lt;br /&gt;Una pequeña aplicacion hecha en WT podia ocupar mas de 1mega y ademas sus dependencias como el boost consumian mas recursos y la poca estabilidad de estas aplicaciones podian provocar inestabilidad al servidor.&lt;br /&gt;Solo realize pocas pruebas pero el resultado final no era lo que esperaba, no recomendaria WT para el desarrollo de aplicaciones web.&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;br/&gt;Origen de la fuente: http://linuxprogramacion.blogspot.com/&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://linuxprogramacion.blogspot.com/feeds/4371621184776776055/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://linuxprogramacion.blogspot.com/2011/03/wt-c-web-toolkit-creando-aplicaciones.html#comment-form' title='2 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/385784617909842588/posts/default/4371621184776776055'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/385784617909842588/posts/default/4371621184776776055'/><link rel='alternate' type='text/html' href='http://linuxprogramacion.blogspot.com/2011/03/wt-c-web-toolkit-creando-aplicaciones.html' title='Wt C++ Web toolkit: Creando aplicaciones web con C++'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-385784617909842588.post-7603686767228083161</id><published>2010-07-29T17:44:00.000-07:00</published><updated>2010-07-29T17:53:54.718-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="c"/><category scheme="http://www.blogger.com/atom/ns#" term="colores"/><category scheme="http://www.blogger.com/atom/ns#" term="linux"/><title type='text'>Colores en printf</title><content type='html'>Se puede imprimir en la pantalla en colores al usar la funcion printf (....) como se muestra en este ejemplo:&lt;br /&gt;&lt;br /&gt;/*********color_printf.c*************/&lt;br /&gt;#include &lt; stdio.h    &gt;&lt;br /&gt;int main ()&lt;br /&gt;{&lt;br /&gt;printf (&quot;\033[30m Salida en color: Negro\n&quot;);&lt;br /&gt;printf (&quot;\033[31m Salida en color: Rojo\n&quot;);&lt;br /&gt;printf (&quot;\033[32m Salida en color: Verde\n&quot;);&lt;br /&gt;printf (&quot;\033[33m Salida en color: Amarillo\n&quot;);&lt;br /&gt;printf (&quot;\033[34m Salida en color: Azul\n&quot;);&lt;br /&gt;return 0;&lt;br /&gt;}&lt;br /&gt;/************************************/&lt;br /&gt;Compilacion:&lt;br /&gt;gcc -Wall -o color_printf color_printf.c&lt;br /&gt;Salida en pantalla:&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Salida en color: Negro&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;color:#FF6666;&quot;&gt;Salida en color: Rojo&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;color:#33FF33;&quot;&gt;Salida en color: Verde&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;color:#FFFF00;&quot;&gt;Salida en color: Amarillo&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;color:#3366FF;&quot;&gt;Salida en color: Azul&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;br/&gt;Origen de la fuente: http://linuxprogramacion.blogspot.com/&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://linuxprogramacion.blogspot.com/feeds/7603686767228083161/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://linuxprogramacion.blogspot.com/2010/07/colores-en-printf.html#comment-form' title='4 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/385784617909842588/posts/default/7603686767228083161'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/385784617909842588/posts/default/7603686767228083161'/><link rel='alternate' type='text/html' href='http://linuxprogramacion.blogspot.com/2010/07/colores-en-printf.html' title='Colores en printf'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-385784617909842588.post-698963179705345020</id><published>2010-07-25T14:53:00.000-07:00</published><updated>2010-07-25T15:00:22.151-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="unix"/><title type='text'>The UNIX® System</title><content type='html'>Si quiere conocer mas acerca de los sistemas operativos UNIX , puede visitar el sitio h&lt;a href=&quot;http://www.unix.org&quot;&gt;ttp://www.unix.org&lt;/a&gt; donde encontrara mucha informacion de sus especificaciones e historia&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;br/&gt;Origen de la fuente: http://linuxprogramacion.blogspot.com/&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://linuxprogramacion.blogspot.com/feeds/698963179705345020/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://linuxprogramacion.blogspot.com/2010/07/unix-system.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/385784617909842588/posts/default/698963179705345020'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/385784617909842588/posts/default/698963179705345020'/><link rel='alternate' type='text/html' href='http://linuxprogramacion.blogspot.com/2010/07/unix-system.html' title='The UNIX® System'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-385784617909842588.post-9196933148608400379</id><published>2010-07-25T09:22:00.000-07:00</published><updated>2010-07-25T09:56:09.504-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="c"/><category scheme="http://www.blogger.com/atom/ns#" term="linux"/><title type='text'>Matar Procesos</title><content type='html'>Un ejemplo en C de como matar procesos usando para ello la llamada al sistema int system(const char *string); que permite la ejecucion de una orden del interprete de comandos (shell).&lt;br /&gt;Para mas informacion sobre esta funcion en su manual &quot; man system &quot; o si quiere este manual en castellano &quot; man -L es system &quot;.&lt;br /&gt;&lt;br /&gt;/********matar_proceso.c********/&lt;br /&gt;#include &lt; stdio.h &gt;&lt;br /&gt;#include &lt; string.h &gt;&lt;br /&gt;#include &lt; stdlib.h &gt;&lt;br /&gt;&lt;br /&gt;int main(int  argc, char **argv)&lt;br /&gt;{&lt;br /&gt;   char *tmpStr;&lt;br /&gt;   int i,len,lenB;  &lt;br /&gt;   char *Kill=&quot;kill -9 &quot;;&lt;br /&gt;   char *killtotal=NULL;&lt;br /&gt;&lt;br /&gt;  for (i = 0; i &lt; argc; i++)&lt;br /&gt;   {&lt;br /&gt;        tmpStr = argv[i];&lt;br /&gt;        if ( (strcmp(tmpStr,&quot;-h&quot;)==0)||(strcmp(tmpStr,&quot;--help&quot;)==0) ||\&lt;br /&gt;         (strcmp(tmpStr,&quot;--usage&quot;)==0)||(strcmp(tmpStr,&quot;-help&quot;)==0) || argc==1)&lt;br /&gt;        {&lt;br /&gt;            printf(&quot;\n&quot;);                &lt;br /&gt;            printf(&quot;Usar: matar_proceso --pid IDPROCESO \n&quot;);&lt;br /&gt;            printf(&quot; --help\n&quot;);            &lt;br /&gt;            printf(&quot; --version  Version\n&quot;);&lt;br /&gt;            printf(&quot; --pid\n&quot;);     &lt;br /&gt;            printf(&quot;\n&quot;);&lt;br /&gt;            exit(0);&lt;br /&gt;        }        &lt;br /&gt;&lt;br /&gt;        if((strcmp(tmpStr,&quot;--pid&quot;)==0))&lt;br /&gt;        {&lt;br /&gt;     len=strlen(argv[i+1]);&lt;br /&gt;    lenB=strlen(Kill);&lt;br /&gt;     killtotal=(char*)malloc(len+lenB);&lt;br /&gt;    memset(killtotal,&#39;\0&#39;,(len+lenB));&lt;br /&gt;    strcpy(killtotal,Kill);&lt;br /&gt;    strcat(killtotal,argv[i+1]); &lt;br /&gt;        }&lt;br /&gt;        if((strcmp(tmpStr,&quot;--version&quot;)==0))&lt;br /&gt;        {&lt;br /&gt;     printf(&quot;0.1\n&quot;);&lt;br /&gt;            exit(0);&lt;br /&gt;        }                &lt;br /&gt;    }         &lt;br /&gt;    if(killtotal!=NULL)&lt;br /&gt;    {&lt;br /&gt;     printf(&quot;Matando el proceso --&gt; %s\n&quot;,killtotal);&lt;br /&gt;     system(killtotal);&lt;br /&gt;     free(killtotal); &lt;br /&gt;    } &lt;br /&gt;    return 1;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;/********************/&lt;br /&gt;Compilacion:&lt;br /&gt;gcc -Wall -O2 -o matar_proceso matar_proceso.c&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;br/&gt;Origen de la fuente: http://linuxprogramacion.blogspot.com/&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://linuxprogramacion.blogspot.com/feeds/9196933148608400379/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://linuxprogramacion.blogspot.com/2010/07/matar-procesos.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/385784617909842588/posts/default/9196933148608400379'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/385784617909842588/posts/default/9196933148608400379'/><link rel='alternate' type='text/html' href='http://linuxprogramacion.blogspot.com/2010/07/matar-procesos.html' title='Matar Procesos'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-385784617909842588.post-2792162596467498263</id><published>2010-07-22T19:48:00.000-07:00</published><updated>2010-07-22T19:56:30.906-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="linux"/><category scheme="http://www.blogger.com/atom/ns#" term="x11"/><title type='text'>Manejo de colores y fuentes en Xlib</title><content type='html'>El manejo de colores y de fuentes en Xlib puede ser algo confuso o complejo para algunos que recien comienzan a programar unsando las librerias base del Xserver las Xlib.&lt;br /&gt;En este ejemplo se muestra como crear una ventana y luego en ella colocar texto con un tamaño y color determinado.&lt;br /&gt;&lt;br /&gt;/**********x11_1.c*************/&lt;br /&gt;&lt;br /&gt;#include &lt; X11/Xlib.h &gt;&lt;br /&gt;#include &lt; X11/Xutil.h &gt;&lt;br /&gt;#include &lt; stdio.h &gt;&lt;br /&gt;#include &lt; string.h &gt;&lt;br /&gt;&lt;br /&gt;/*&lt;br /&gt;Retorna el color mas proximo del mapa de colores&lt;br /&gt;*/&lt;br /&gt;unsigned long Buscar_color_nombre( Display *display, char *Nombre )&lt;br /&gt;{&lt;br /&gt;  XColor color, temp;&lt;br /&gt;  XAllocNamedColor( display,DefaultColormap(display,DefaultScreen(display)),Nombre, &amp;color, &amp;temp );&lt;br /&gt;  return color.pixel;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;int main()&lt;br /&gt;{&lt;br /&gt;  Display *display;&lt;br /&gt;  Window window;&lt;br /&gt;  GC gc;&lt;br /&gt;  Font fuente;&lt;br /&gt;  char *Texto1 = &quot;Test: Fuentes en Xlib&quot;;&lt;br /&gt;  char *Texto2 = &quot;Color Rojo&quot;;&lt;br /&gt;  char *Texto3 = &quot;Color Verde&quot;;  &lt;br /&gt;  &lt;br /&gt;  display = XOpenDisplay( NULL );&lt;br /&gt;  window = XCreateSimpleWindow( display,DefaultRootWindow( display ),100, 100, 300, 200, 1, 0, 1 );&lt;br /&gt;  XMapWindow( display, window );&lt;br /&gt;&lt;br /&gt;  gc = XCreateGC( display, window, 0, NULL );&lt;br /&gt;  fuente = XLoadFont( display, &quot;9x15&quot; );&lt;br /&gt;  XSetForeground(display, gc, Buscar_color_nombre(display, &quot;white&quot;));&lt;br /&gt;  XSetFont( display, gc, fuente );&lt;br /&gt;  XDrawString( display, window, gc, 10, 50, Texto1, strlen(Texto1) );&lt;br /&gt;  XSetForeground(display, gc, Buscar_color_nombre(display, &quot;red&quot;));&lt;br /&gt;  XDrawString( display, window, gc, 10, 80, Texto2, strlen(Texto2) );&lt;br /&gt;  XSetForeground(display, gc, Buscar_color_nombre(display, &quot;green&quot;));&lt;br /&gt;  XDrawString( display, window, gc, 10, 110, Texto3, strlen(Texto3) );&lt;br /&gt;&lt;br /&gt;  XFlush( display );&lt;br /&gt;  getchar();&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;/******************************/&lt;br /&gt;Compilacion:&lt;br /&gt;gcc -o x11_1 x11_1.c -lX11&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;br/&gt;Origen de la fuente: http://linuxprogramacion.blogspot.com/&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://linuxprogramacion.blogspot.com/feeds/2792162596467498263/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://linuxprogramacion.blogspot.com/2010/07/manejo-de-colores-y-fuentes-en-xlib.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/385784617909842588/posts/default/2792162596467498263'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/385784617909842588/posts/default/2792162596467498263'/><link rel='alternate' type='text/html' href='http://linuxprogramacion.blogspot.com/2010/07/manejo-de-colores-y-fuentes-en-xlib.html' title='Manejo de colores y fuentes en Xlib'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-385784617909842588.post-57956497298262045</id><published>2010-07-21T18:52:00.000-07:00</published><updated>2010-07-21T19:11:12.658-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="linux"/><category scheme="http://www.blogger.com/atom/ns#" term="señales"/><title type='text'>Señales en C</title><content type='html'>Un pequeño programa que implementa el manejo de señales en c en base a estructuras y punteros.&lt;br /&gt;&lt;br /&gt;/**********signal_c.c**************/&lt;br /&gt;#include &lt;stdio.h&gt;&lt;br /&gt;&lt;br /&gt;struct Punteros_a_Funciones{&lt;br /&gt;   void (*leer)();&lt;br /&gt;   };   &lt;br /&gt;typedef struct Punteros_a_Funciones puntero_a_func;&lt;br /&gt;typedef void* data;&lt;br /&gt;#define VOID_POINTER (void*)&lt;br /&gt;#define SIGNAL_FUC(f) ((SignalFunc)f)&lt;br /&gt;typedef void (*SignalFunc) (void);&lt;br /&gt;&lt;br /&gt;void signal_1()&lt;br /&gt;{&lt;br /&gt; printf(&quot;signal_1\n&quot;);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;void signal_2()&lt;br /&gt;{&lt;br /&gt; printf(&quot;signal_2\n&quot;);&lt;br /&gt;}&lt;br /&gt;puntero_a_func  Pasando_punteros(SignalFunc funci)&lt;br /&gt;{&lt;br /&gt;    puntero_a_func puntero  = { SIGNAL_FUC(funci)};&lt;br /&gt;        return puntero;&lt;br /&gt;}&lt;br /&gt;int main()&lt;br /&gt;{&lt;br /&gt;    puntero_a_func Voides;&lt;br /&gt;        SignalFunc funci;&lt;br /&gt;&lt;br /&gt;      funci=signal_1;&lt;br /&gt;      Voides = Pasando_punteros(funci);&lt;br /&gt;        Voides.leer();&lt;br /&gt;        &lt;br /&gt;      funci=signal_2;&lt;br /&gt;      Voides = Pasando_punteros(funci);&lt;br /&gt;        Voides.leer();&lt;br /&gt; return 0;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;/**********************************/&lt;br /&gt;Compilacion:&lt;br /&gt;gcc -o signal_c signal_c.c&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;br/&gt;Origen de la fuente: http://linuxprogramacion.blogspot.com/&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://linuxprogramacion.blogspot.com/feeds/57956497298262045/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://linuxprogramacion.blogspot.com/2010/07/senales-en-c.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/385784617909842588/posts/default/57956497298262045'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/385784617909842588/posts/default/57956497298262045'/><link rel='alternate' type='text/html' href='http://linuxprogramacion.blogspot.com/2010/07/senales-en-c.html' title='Señales en C'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-385784617909842588.post-1520758118816394138</id><published>2010-07-18T20:12:00.000-07:00</published><updated>2010-07-18T21:02:00.925-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="c"/><category scheme="http://www.blogger.com/atom/ns#" term="x11"/><title type='text'>Modificar la posicion en pantalla de una aplicacion X en ejecucion</title><content type='html'>Se puede modificar algunos parametros de una aplicacion X en ejecucion para ello solo es necesario conocer la ID de esa aplicacion. El programa xwininfo nos puede ayudar para este proposito (lease su manual --&gt; man xwininfo) su modo de uso es el siguiente.&lt;br /&gt;Al ejecutar en consola el xwininfo este cambiara el cursor a una forma de cruz lo que nos indica que debemos seleccionar la aplicacion X que queremos saber sus propiedades, solo haga crick en la ventana de la aplicacion y xwininfo mostrara una salida como la siguiente:&lt;br /&gt;------------------------&lt;br /&gt;xwininfo: Please select the window about which you&lt;br /&gt;          would like information by clicking the&lt;br /&gt;          mouse in that window.&lt;br /&gt;&lt;br /&gt;xwininfo: Window id: 0x1a0000d &quot;xterm&quot;&lt;br /&gt;&lt;br /&gt;  Absolute upper-left X:  5&lt;br /&gt;  Absolute upper-left Y:  25&lt;br /&gt;  Relative upper-left X:  0&lt;br /&gt;  Relative upper-left Y:  0&lt;br /&gt;  Width: 501&lt;br /&gt;  Height: 316&lt;br /&gt;  Depth: 16&lt;br /&gt;  Visual Class: TrueColor&lt;br /&gt;  Border width: 0&lt;br /&gt;  Class: InputOutput&lt;br /&gt;  Colormap: 0x20 (installed)&lt;br /&gt;  Bit Gravity State: NorthWestGravity&lt;br /&gt;  Window Gravity State: NorthWestGravity&lt;br /&gt;  Backing Store State: NotUseful&lt;br /&gt;  Save Under State: no&lt;br /&gt;  Map State: IsViewable&lt;br /&gt;  Override Redirect State: no&lt;br /&gt;  Corners:  +5+25  -774+25  -774-683  +5-683&lt;br /&gt;  -geometry 80x24+1+1&lt;br /&gt;&lt;br /&gt;-----------------------&lt;br /&gt;Lo que interesa es la ID de la aplicacion que se encuentra en la siguiente linea&lt;br /&gt;xwininfo: Window id: 0x1a0000d &quot;xterm&quot;&lt;br /&gt;La iD sera ==&gt; 0x1a0000d&lt;br /&gt;Pero para el uso dela aplicacion C que permitira cambiarle sus propiedades es necesario usar un valor decimal ya que lo que muestra por defecto la aplicacion xwininfo es en hexadecimal. Para ello solo hay que agregarle el siguiente parametro:   &lt;br /&gt;xwininfo -int&lt;br /&gt;Y mostrara el siguiente resultado&lt;br /&gt;xwininfo: Window id: 27262989 &quot;xterm&quot;&lt;br /&gt;Ya tenemos la informacion necesaria que es la ID de la aplicacion X , lo siguiente es desarrollar el programa en C que por el momento solo permitira cambiar la posicion en pantalla de la ventana ya luego en los siguientes post se le agregara nuevas funcionalidades.&lt;br /&gt;&lt;br /&gt;/*---------xcambiargeo.c-----------*/&lt;br /&gt;#include &lt; stdio.h &gt;&lt;br /&gt;#include &lt; stdlib.h &gt;&lt;br /&gt;#include &lt; X11/Xlib.h &gt;&lt;br /&gt;#include &lt; X11/Xutil.h &gt;&lt;br /&gt;&lt;br /&gt;int main(int argc,char *argv[])&lt;br /&gt;{&lt;br /&gt;     Display *display;&lt;br /&gt; int XwinID,Xwin_nuevaX,Xwin_nuevaY;&lt;br /&gt;&lt;br /&gt; if(argc != 4){&lt;br /&gt; fprintf(stderr,&quot;Usar:%s nueva_posicion_x nueva_posicion_y XwinID\n&quot;,argv[0]);&lt;br /&gt; return 0;&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; Xwin_nuevaX=atoi(argv[1]);&lt;br /&gt; Xwin_nuevaY=atoi(argv[2]);&lt;br /&gt; XwinID=atoi(argv[3]);&lt;br /&gt; &lt;br /&gt; printf(&quot;nueva_posicion_x=%d nueva_posicion_y=%d Xaplicacion=%d \n&quot;,Xwin_nuevaX,Xwin_nuevaY,XwinID);&lt;br /&gt;&lt;br /&gt;        display = XOpenDisplay( NULL );&lt;br /&gt; if(display==NULL)&lt;br /&gt; {&lt;br /&gt;  printf(&quot;Error al abrir display\n&quot;);&lt;br /&gt;  return 0;&lt;br /&gt; } &lt;br /&gt; XMoveWindow( display,XwinID,Xwin_nuevaX,Xwin_nuevaY);&lt;br /&gt; XCloseDisplay(display);&lt;br /&gt; return 1;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;/*---------------------------------*/&lt;br /&gt;Compilando:&lt;br /&gt;gcc -o xcambiargeo xcambiargeo.c -lX11&lt;br /&gt;Uso:&lt;br /&gt;./xcambiargeo nueva_posicion_x nueva_posicion_y XwinID&lt;br /&gt;./xcambiargeo 200 300 27262989&lt;br /&gt;Donde:&lt;br /&gt;nueva_posicion_x =&gt; Es la posicion x en la pantalla&lt;br /&gt;nueva_posicion_y =&gt; Es la posicion y en la pantalla&lt;br /&gt;XwinID =&gt; La ID de la aplicacion X o la ventana&lt;br /&gt;Al ejecutar el programa xcambiargeo , se observara que la aplicacion X cambiara de un lugar a otro en la pantalla.&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;br/&gt;Origen de la fuente: http://linuxprogramacion.blogspot.com/&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://linuxprogramacion.blogspot.com/feeds/1520758118816394138/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://linuxprogramacion.blogspot.com/2010/07/modificar-la-posicion-en-pantalla-de.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/385784617909842588/posts/default/1520758118816394138'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/385784617909842588/posts/default/1520758118816394138'/><link rel='alternate' type='text/html' href='http://linuxprogramacion.blogspot.com/2010/07/modificar-la-posicion-en-pantalla-de.html' title='Modificar la posicion en pantalla de una aplicacion X en ejecucion'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-385784617909842588.post-3778645287192719769</id><published>2010-07-18T15:59:00.000-07:00</published><updated>2010-07-18T21:03:28.772-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="c"/><category scheme="http://www.blogger.com/atom/ns#" term="linux"/><title type='text'>Comparacion de dos archivos</title><content type='html'>Cuando se quiere comparar dos archivos del mismo tamaño y el resultado de la comparacion grabarlo en algun archivo se puede implementar algun programa en C para realizar esta funcion.&lt;br /&gt;El programa que se muestra acontinuacion permite comparar 2 archivos y la diferencia es decir toda aquella informacion que no esta presente en alguno de estos 2 archivos se graba en otro.&lt;br /&gt;Su modo de uso es el siguiente:&lt;br /&gt;./comparar_archivos archivo_uno_a_comparar archivo_dos_a_comparar archivo_diferencia&lt;br /&gt;&lt;br /&gt;&quot;archivo_diferencia&quot; es donde se grabara todos los bits diferentes entre ambos archivos.&lt;br /&gt;&lt;br /&gt;/*-----------comparar_archivos.c----------------*/&lt;br /&gt;&lt;br /&gt;    #include &lt; stdio.h &gt;&lt;br /&gt;    #include &lt; stdlib.h &gt;&lt;br /&gt;    #include &lt; fcntl.h &gt;&lt;br /&gt;    #include &lt; unistd.h &gt;&lt;br /&gt;    #include &lt; sys/types.h &gt;&lt;br /&gt;    #include &lt; sys/stat.h &gt;&lt;br /&gt;    #include &lt; errno.h &gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;    int main(int argc, char *argv[])&lt;br /&gt;    {&lt;br /&gt;        int fd,fdB,fdC,x,y;&lt;br /&gt;        char *fila_uno, *fila_dos,*fila_nueva;&lt;br /&gt;        struct stat sbuf;&lt;br /&gt;        int z;&lt;br /&gt;        char c[1];&lt;br /&gt;        char cc[1];&lt;br /&gt;        &lt;br /&gt;        if (argc != 4) {&lt;br /&gt;            fprintf(stderr, &quot;usar: programa fila_uno fila_dos fichero_a_crear\n&quot;);&lt;br /&gt;            exit(1);&lt;br /&gt;        }&lt;br /&gt;        fila_uno=argv[1];&lt;br /&gt;        fila_dos=argv[2];&lt;br /&gt;        fila_nueva=argv[3];&lt;br /&gt;&lt;br /&gt;        if ((fd = open(fila_uno,O_RDONLY  )) == -1) {&lt;br /&gt;            perror(&quot;open fila_uno&quot;);&lt;br /&gt;            exit(1);&lt;br /&gt;        }&lt;br /&gt;        &lt;br /&gt;        if ((fdB = open(fila_dos,O_RDONLY)) == -1) {&lt;br /&gt;            perror(&quot;open fila_dos&quot;);&lt;br /&gt;            exit(1);&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        if ((fdC = open(fila_nueva, O_RDWR | O_CREAT)) == -1) {&lt;br /&gt;            perror(&quot;open fila_nueva&quot;);&lt;br /&gt;            exit(1);&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        if (stat(fila_uno, &amp;sbuf) == -1) {&lt;br /&gt;            perror(&quot;stat&quot;);&lt;br /&gt;            exit(1);&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        for(x=0;x&lt;(sbuf.st_size);x++)&lt;br /&gt;        {&lt;br /&gt;         z=lseek(fd,x,SEEK_SET);&lt;br /&gt;         y=lseek(fdB,x,SEEK_SET);&lt;br /&gt;         read(fd,c,1);&lt;br /&gt;         read(fdB,cc,1);&lt;br /&gt;         if( *c!=*cc)&lt;br /&gt;         {&lt;br /&gt;          write(fdC,c,1);        &lt;br /&gt;         }&lt;br /&gt;        }      &lt;br /&gt;        return 0;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;/*----------------------------------------------*/&lt;br /&gt;&lt;br /&gt;Compilar:&lt;br /&gt;gcc -o comparar_archivos comparar_archivos.c&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;br/&gt;Origen de la fuente: http://linuxprogramacion.blogspot.com/&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://linuxprogramacion.blogspot.com/feeds/3778645287192719769/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://linuxprogramacion.blogspot.com/2010/07/comparacion-de-dos-archivos.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/385784617909842588/posts/default/3778645287192719769'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/385784617909842588/posts/default/3778645287192719769'/><link rel='alternate' type='text/html' href='http://linuxprogramacion.blogspot.com/2010/07/comparacion-de-dos-archivos.html' title='Comparacion de dos archivos'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-385784617909842588.post-6065977335549938742</id><published>2010-07-17T08:50:00.000-07:00</published><updated>2010-07-17T09:02:38.242-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="depurar"/><category scheme="http://www.blogger.com/atom/ns#" term="linux"/><title type='text'>Depurar binarios con strace y ltrace</title><content type='html'>Como siempre cuando se programa es necesario tener diferente herramientas para depuracion como strace y ltrace.&lt;br /&gt;strace permite interceptar y grabar las llamadas al sistema. Mas informacion consulte al manual &quot;man strace&quot;&lt;br /&gt; &lt;br /&gt;ltrace permite interceptar y grabar las llamadas a las librerias dinamicas. Mas informacion consulte al manual &quot;man ltrace&quot;&lt;br /&gt;&lt;br /&gt;Uso de strace:&lt;br /&gt;strace -i -o binariofile.strace binariofile&lt;br /&gt;Donde:&lt;br /&gt;binariofile.strace: puede ser cualquier archivo donde se grabara la informacion que proporciona strace.&lt;br /&gt;binariofile: Es cualquier binario que se quiere depurar&lt;br /&gt;Salida que se muestra contiene:&lt;br /&gt;[ffffe410] execve(&quot;./mc&quot;, [&quot;./mc&quot;], [/* 65 vars */]) = 0&lt;br /&gt;[b7f8544b] brk(0)                       = 0x812a000&lt;br /&gt;[b7f85db1] access(&quot;/etc/ld.so.preload&quot;, R_OK) = -1 ENOENT (No such file or directory)&lt;br /&gt;[b7f85c74] open(&quot;/etc/ld.so.cache&quot;, O_RDONLY) = 3&lt;br /&gt;[b7f85c3e] fstat64(3, {st_mode=S_IFREG|0644, st_size=102714, ...}) = 0&lt;br /&gt;[b7f86273] mmap2(NULL, 102714, PROT_READ, MAP_PRIVATE, 3, 0) = 0xb7f57000&lt;br /&gt;[b7f85cad] close(3)                     = 0&lt;br /&gt;[b7f85c74] open(&quot;/opt/gnome/lib/libgmodule-2.0.so.0&quot;, O_RDONLY) = 3&lt;br /&gt;[b7f85cf4] read(3, &quot;\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0`\r\0\0004\0\0\0&quot;..., 512) = 512&lt;br /&gt;[b7f85c3e] fstat64(3, {st_mode=S_IFREG|0755, st_size=13928, ...}) = 0&lt;br /&gt;[b7f86273] mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7f56000&lt;br /&gt;[b7f86273] mmap2(NULL, 16664, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb7f51000&lt;br /&gt;[b7f85ef9] fadvise64(3, 0, 16664, POSIX_FADV_WILLNEED) = 0&lt;br /&gt;[b7f86273] mmap2(0xb7f54000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x2) = 0xb7f54000&lt;br /&gt;[b7f85cad] close(3)                     = 0&lt;br /&gt;[b7f85c74] open(&quot;/lib/libdl.so.2&quot;, O_RDONLY) = 3&lt;br /&gt;[b7f85cf4] read(3, &quot;\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\240\n\0\0004\0\0\0&quot;..., 512) = 512&lt;br /&gt;[b7f85c3e] fstat64(3, {st_mode=S_IFREG|0755, st_size=10288, ...}) = 0&lt;br /&gt;[b7f86273] mmap2(NULL, 12412, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb7f4d000&lt;br /&gt;[b7f85ef9] fadvise64(3, 0, 12412, POSIX_FADV_WILLNEED) = 0&lt;br /&gt;[b7f86273] mmap2(0xb7f4f000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1) = 0xb7f4f000&lt;br /&gt;[b7f85cad] close(3)                     = 0&lt;br /&gt;...........................&lt;br /&gt;.....................&lt;br /&gt;&lt;br /&gt;Uso de ltrace:&lt;br /&gt;ltrace -i -o binariofile.ltrace binariofile&lt;br /&gt;Donde:&lt;br /&gt;binariofile.ltrace: puede ser cualquier archivo donde se grabara la informacion que proporciona strace.&lt;br /&gt;binariofile: Es cualquier binario que se quiere depurar&lt;br /&gt;Salida que se muestra contiene:&lt;br /&gt;[0x805cc21] __libc_start_main(0x8082670, 1, 0xbfe522f4, 0x80ee4f0, 0x80ee4e0 &lt;unfinished ...&gt;&lt;br /&gt;[0x808269e] getenv(&quot;LANG&quot;)                                                   = &quot;POSIX&quot;&lt;br /&gt;[0x80826ac] strlen(&quot;POSIX&quot;)                                                  = 5&lt;br /&gt;[0x8082969] strcasecmp(&quot;POSIX&quot;, &quot;UTF-8&quot;)                                     = -5&lt;br /&gt;[0x80826c9] setlocale(6, &quot;&quot;)                                                 = &quot;LC_CTYPE=en_US.UTF-8;LC_NUMERIC=&quot;...&lt;br /&gt;[0x80826dd] bindtextdomain(&quot;mc&quot;, &quot;/usr/share/locale&quot;)                        = &quot;/usr/share/locale&quot;&lt;br /&gt;[0x80826e9] textdomain(&quot;mc&quot;)                                                 = &quot;mc&quot;&lt;br /&gt;[0x809b354] getenv(&quot;TMPDIR&quot;)                                                 = NULL&lt;br /&gt;[0x809b369] getuid()                                                         = 0&lt;br /&gt;[0x809b371] getpwuid(0, 0xbfe520dc, 0xbfe520ac, 130953, 55)                  = 0xb7d269b8&lt;br /&gt;[0x809b39f] g_snprintf(0x81185a0, 64, 0x80f6906, 0x80f6901, 0x812b080)       = 12&lt;br /&gt;[0x809afe1] strlen(&quot;/tmp/mc-root&quot;)                                           = 12&lt;br /&gt;[0x809b032] strlen(&quot;/tmp/mc-root&quot;)                                           = 12&lt;br /&gt;[0x809b3c3] __lxstat64(3, &quot;/tmp/mc-root&quot;, 0xbfe520b8)                        = 0&lt;br /&gt;[0x809b5a0] getuid()                                                         = 0&lt;br /&gt;[0x809b550] setenv(&quot;MC_TMPDIR&quot;, &quot;/tmp/mc-root&quot;, 1)                           = 0&lt;br /&gt;[0x80826fa] getenv(&quot;SHELL&quot;)                                                  = &quot;/bin/bash&quot;&lt;br /&gt;..............&lt;br /&gt;.............&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;br/&gt;Origen de la fuente: http://linuxprogramacion.blogspot.com/&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://linuxprogramacion.blogspot.com/feeds/6065977335549938742/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://linuxprogramacion.blogspot.com/2010/07/depurar-binarios-con-strace-y-ltrace.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/385784617909842588/posts/default/6065977335549938742'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/385784617909842588/posts/default/6065977335549938742'/><link rel='alternate' type='text/html' href='http://linuxprogramacion.blogspot.com/2010/07/depurar-binarios-con-strace-y-ltrace.html' title='Depurar binarios con strace y ltrace'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-385784617909842588.post-858268243836992570</id><published>2010-07-17T08:42:00.000-07:00</published><updated>2010-07-17T08:50:19.586-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="binario"/><category scheme="http://www.blogger.com/atom/ns#" term="binutils"/><category scheme="http://www.blogger.com/atom/ns#" term="linux"/><title type='text'>Mostrar simbolos de un binario</title><content type='html'>Para conocer que simbolos esta usando un binario puede hacer uso de la aplicacion nm que es parte del paquete binutils.&lt;br /&gt;Para mas informacion consulte su manual --&gt; man nm&lt;br /&gt;Uso:&lt;br /&gt;nm binariofile&lt;br /&gt;Muestra una salida como se indica a continuacion:&lt;br /&gt;&lt;br /&gt;0807a370 t add2hotlist&lt;br /&gt;0807b0f0 T add2hotlist_cmd&lt;br /&gt;08085f60 t add2panelize&lt;br /&gt;080d98b0 t add_a_service&lt;br /&gt;080e19f0 T add_char_string&lt;br /&gt;080e1910 t add_dos_char&lt;br /&gt;08097ca0 T add_hook&lt;br /&gt;080798c0 t add_name_to_list&lt;br /&gt;0807dc30 T add_select_channel&lt;br /&gt;0806a4c0 T add_widget&lt;br /&gt;0807a920 t add_widgets_i18n&lt;br /&gt;081262e0 b addr_buf.9806&lt;br /&gt;0805d530 t advanced_chown_callback&lt;br /&gt;08126e90 B alarm_colors&lt;br /&gt;080f8e60 r all_filters&lt;br /&gt;08129a48 B allones_ip&lt;br /&gt;08118d44 B altered_hex_mode&lt;br /&gt;08118d48 B altered_magic_flag&lt;br /&gt;08118d4c B altered_nroff_flag&lt;br /&gt;08113750 B alternate_plus_minus&lt;br /&gt;081117b8 b and_mask&lt;br /&gt;080f679f r app_text&lt;br /&gt;08125424 B append_log&lt;br /&gt;0807d130 T application_keypad_mode&lt;br /&gt;.........&lt;br /&gt;.........&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;br/&gt;Origen de la fuente: http://linuxprogramacion.blogspot.com/&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://linuxprogramacion.blogspot.com/feeds/858268243836992570/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://linuxprogramacion.blogspot.com/2010/07/mostrar-simbolos-de-un-binario.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/385784617909842588/posts/default/858268243836992570'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/385784617909842588/posts/default/858268243836992570'/><link rel='alternate' type='text/html' href='http://linuxprogramacion.blogspot.com/2010/07/mostrar-simbolos-de-un-binario.html' title='Mostrar simbolos de un binario'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-385784617909842588.post-2294931874136228460</id><published>2010-07-17T08:35:00.000-07:00</published><updated>2010-07-17T08:42:25.508-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="binario"/><category scheme="http://www.blogger.com/atom/ns#" term="elf"/><category scheme="http://www.blogger.com/atom/ns#" term="linux"/><title type='text'>Mostrar informacion de binarios ELF</title><content type='html'>Si necesita conocer informacion de algun binario &lt;a href=&quot;http://es.wikipedia.org/wiki/Executable_and_Linkable_Format&quot;&gt;ELF&lt;/a&gt; , puede usar la aplicacion readelf.&lt;br /&gt;Para mas informacion lea su manual --&gt; man readelf&lt;br /&gt;Uso:&lt;br /&gt;readelf -a binariofile&lt;br /&gt;Muestra una salida como esta:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;ELF Header:&lt;br /&gt;  Magic:   7f 45 4c 46 01 01 01 00 00 00 00 00 00 00 00 00 &lt;br /&gt;  Class:                             ELF32&lt;br /&gt;  Data:                              2&#39;s complement, little endian&lt;br /&gt;  Version:                           1 (current)&lt;br /&gt;  OS/ABI:                            UNIX - System V&lt;br /&gt;  ABI Version:                       0&lt;br /&gt;  Type:                              EXEC (Executable file)&lt;br /&gt;  Machine:                           Intel 80386&lt;br /&gt;  Version:                           0x1&lt;br /&gt;  Entry point address:               0x805cc00&lt;br /&gt;  Start of program headers:          52 (bytes into file)&lt;br /&gt;  Start of section headers:          824720 (bytes into file)&lt;br /&gt;  Flags:                             0x0&lt;br /&gt;  Size of this header:               52 (bytes)&lt;br /&gt;  Size of program headers:           32 (bytes)&lt;br /&gt;  Number of program headers:         10&lt;br /&gt;  Size of section headers:           40 (bytes)&lt;br /&gt;  Number of section headers:         31&lt;br /&gt;  Section header string table index: 28&lt;br /&gt;&lt;br /&gt;Section Headers:&lt;br /&gt;  [Nr] Name              Type            Addr     Off    Size   ES Flg Lk Inf Al&lt;br /&gt;  [ 0]                   NULL            00000000 000000 000000 00      0   0  0&lt;br /&gt;  [ 1] .interp           PROGBITS        08048174 000174 000013 00   A  0   0  1&lt;br /&gt;  [ 2] .note.ABI-tag     NOTE            08048188 000188 000020 00   A  0   0  4&lt;br /&gt;  [ 3] .note.SuSE        NOTE            080481a8 0001a8 000018 00   A  0   0  4&lt;br /&gt;...................&lt;br /&gt;....................&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;br/&gt;Origen de la fuente: http://linuxprogramacion.blogspot.com/&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://linuxprogramacion.blogspot.com/feeds/2294931874136228460/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://linuxprogramacion.blogspot.com/2010/07/mostrar-informacion-de-binarios-elf.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/385784617909842588/posts/default/2294931874136228460'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/385784617909842588/posts/default/2294931874136228460'/><link rel='alternate' type='text/html' href='http://linuxprogramacion.blogspot.com/2010/07/mostrar-informacion-de-binarios-elf.html' title='Mostrar informacion de binarios ELF'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-385784617909842588.post-2396650186906563056</id><published>2010-07-17T07:43:00.000-07:00</published><updated>2010-07-17T08:35:01.796-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="debug"/><category scheme="http://www.blogger.com/atom/ns#" term="desamblador"/><category scheme="http://www.blogger.com/atom/ns#" term="dissasembler"/><category scheme="http://www.blogger.com/atom/ns#" term="linux"/><title type='text'>Linux Programacion: Tips 1</title><content type='html'>Algunas herramientas que les puede ser utiles:&lt;br /&gt;a) Eliminacion de simbolos o secciones usadas en depuracion que puede contener algun binario.&lt;br /&gt;Mas informacion en su manual --&gt; man objcopy&lt;br /&gt;objcopy -g binariofile&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;b) Desamblador(dissasembler) de binarios&lt;br /&gt;Mas informacion en su manual --&gt; man objdump&lt;br /&gt;objdump -d binariofile&lt;br /&gt;&lt;br /&gt;Muestra una salida como esta:&lt;br /&gt;&lt;br /&gt;0805b620 &lt;_init&gt;:&lt;br /&gt; 805b620:       55                      push   %ebp&lt;br /&gt; 805b621:       89 e5                   mov    %esp,%ebp&lt;br /&gt; 805b623:       53                      push   %ebx&lt;br /&gt; 805b624:       83 ec 04                sub    $0x4,%esp&lt;br /&gt; 805b627:       e8 00 00 00 00          call   805b62c &lt;_init+0xc&gt;&lt;br /&gt; 805b62c:       5b                      pop    %ebx&lt;br /&gt; 805b62d:       81 c3 c8 19 0b 00       add    $0xb19c8,%ebx&lt;br /&gt; 805b633:       8b 93 fc ff ff ff       mov    -0x4(%ebx),%edx&lt;br /&gt; 805b639:       85 d2                   test   %edx,%edx&lt;br /&gt; 805b63b:       74 05                   je     805b642 &lt;_init+0x22&gt;&lt;br /&gt; 805b63d:       e8 9e 02 00 00          call   805b8e0 &lt;__gmon_start__@plt&gt;&lt;br /&gt; 805b642:       e8 19 16 00 00          call   805cc60 &lt;frame_dummy&gt;&lt;br /&gt; 805b647:       e8 04 2f 09 00          call   80ee550 &lt;__do_global_ctors_aux&gt;&lt;br /&gt; 805b64c:       58                      pop    %eax&lt;br /&gt; 805b64d:       5b                      pop    %ebx&lt;br /&gt; 805b64e:       c9                      leave  &lt;br /&gt; 805b64f:       c3                      ret    &lt;br /&gt;Disassembly of section .plt:&lt;br /&gt;...................&lt;br /&gt;................&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;br/&gt;Origen de la fuente: http://linuxprogramacion.blogspot.com/&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://linuxprogramacion.blogspot.com/feeds/2396650186906563056/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://linuxprogramacion.blogspot.com/2010/07/linux-programacion-tips-1.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/385784617909842588/posts/default/2396650186906563056'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/385784617909842588/posts/default/2396650186906563056'/><link rel='alternate' type='text/html' href='http://linuxprogramacion.blogspot.com/2010/07/linux-programacion-tips-1.html' title='Linux Programacion: Tips 1'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-385784617909842588.post-5240853550866176419</id><published>2010-07-14T09:17:00.000-07:00</published><updated>2010-07-14T09:30:41.745-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="adobe"/><category scheme="http://www.blogger.com/atom/ns#" term="linux"/><title type='text'>Convertir programas C / C++ a actionscript</title><content type='html'>&lt;a href=&quot;http://labs.adobe.com/technologies/alchemy&quot;&gt;Adobe alchemy&lt;/a&gt; es una herramienta que proporciona Adobe que facilita el uso de librerias o codigo hecho en C o C++ para ser utilizado en Flash 10.&lt;br /&gt;Desde hace algun tiempo lo estoy usando y me a sido de gran utilidad, cuando me entere de este proyecto de adobe al leer su documentacion me parecio una gran solucion en el tema del rendimiento segun Adobe el proyecto Alchemy permitia el acceso a bajo nivel que facilitaba o mejoraba en gran medida algunas falencias de Flash que era el consumo de memoria y rendimiento ,pero luego de usarlo y buscar mas informacion sobre este tema me di con la ingrata sorpresa que todo lo que argumentaban la gente de Adobe era falso.&lt;br /&gt;No mejoraba el rendimiento y hacia un uso mejor de la memoria, aveces hacia todo lo contrario pero al menos me facilitaba el uso de algunas librerias hechas en ANSI C que eran facilmente portadas para ser usados en Flash 10.&lt;br /&gt;&lt;a href=&quot;http://labs.adobe.com/technologies/alchemy&quot;&gt;Adobe alchemy&lt;/a&gt; esta disponible para linux y es uno de los pocos proyectos libres que tiene Adobe.&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;br/&gt;Origen de la fuente: http://linuxprogramacion.blogspot.com/&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://linuxprogramacion.blogspot.com/feeds/5240853550866176419/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://linuxprogramacion.blogspot.com/2010/07/convertir-programas-c-c-actionscript.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/385784617909842588/posts/default/5240853550866176419'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/385784617909842588/posts/default/5240853550866176419'/><link rel='alternate' type='text/html' href='http://linuxprogramacion.blogspot.com/2010/07/convertir-programas-c-c-actionscript.html' title='Convertir programas C / C++ a actionscript'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-385784617909842588.post-5947065654983656235</id><published>2010-07-04T13:35:00.000-07:00</published><updated>2010-07-04T13:37:15.793-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="gnu"/><category scheme="http://www.blogger.com/atom/ns#" term="linux"/><category scheme="http://www.blogger.com/atom/ns#" term="programacion"/><title type='text'>Programacion en Linux</title><content type='html'>Este blog tratara todo lo referente a la programcion en el sistema operativo Linux/GNU, durante mucho tiempo programo en linux en varios lenguajes ademas de usar herramientas en su mayoria libres y algunas propietarias.&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;br/&gt;Origen de la fuente: http://linuxprogramacion.blogspot.com/&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://linuxprogramacion.blogspot.com/feeds/5947065654983656235/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://linuxprogramacion.blogspot.com/2010/07/programacion-en-linux.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/385784617909842588/posts/default/5947065654983656235'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/385784617909842588/posts/default/5947065654983656235'/><link rel='alternate' type='text/html' href='http://linuxprogramacion.blogspot.com/2010/07/programacion-en-linux.html' title='Programacion en Linux'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>