{"id":159,"date":"2005-05-25T10:43:44","date_gmt":"2005-05-25T17:43:44","guid":{"rendered":"http:\/\/www.gubatron.com\/blog\/?p=159"},"modified":"2005-05-25T10:43:44","modified_gmt":"2005-05-25T17:43:44","slug":"wedoit4youcom-is-back","status":"publish","type":"post","link":"https:\/\/www.gubatron.com\/blog\/wedoit4youcom-is-back\/","title":{"rendered":"wedoit4you.com is back."},"content":{"rendered":"\n<p>Finalmente voy a poder dormir tranquilo (cualquiera cae que no duermo) wedoit4you.com esta montado en el nuevo servidor. Ahora tenemos practicamente ancho de banda ilimitado y absoluto control sobre el servidor, somos root.<\/p>\n<p>Haciendo valer un poco la cuna, vamos a dar ahora hosting con todas las de la ley.<\/p>\n<p>En este proceso, aprendi mas de Linux:<br \/>\n&#8211; Como carajo funcionan los nombres en Internet. Fuimos demasiado pichirres como pagarle a un tercero y configuramos nuestro propio servidor de nombres (DNS Servers) con BIND.<br \/>\n&#8211; Algunos trucos sencillos de SSH, revisen \/etc\/ssh\/ssh_config, y cambien las variables<br \/>\n  ForwardX11, y ForwardAgent a &#8220;yes&#8221;&#8230; Si estan corriendo XWindows (en Windows XP con Cygwin)<br \/>\n  o en una maquina linux cualquiera con una conexion a internet&#8230; pueden hacer SSH a la maquina<br \/>\n  remota, y al invocar algun programa de Ventanas, las ventanas se abriran en su maquina local tal<br \/>\n  cual como si estuvieran sentados en la otra maquina&#8230; hoy hice la prueba desde la oficina, y arranque LimeWire en mi laptop de la casa, y la puse a hacer un download, tal cual como si estuviera sentado en mi cuarto, demasiado arrecho Linux y las X11.<\/p>\n<p>En otro orden de ideas, he aprovechado los cortos viajes en tren al trabajo para seguir leyendo MIT Review, voy a tratar de extraer algo de informacion de ahi para compartir con Uds. interesantes historias como la de los fundadores de MySimon, que ahora tienen un nuevo motor de busquedas para compras llamado Become.com&#8230; los carajos se fusilaron la interfaz de google durisimo, pero su motor de busqueda se enfoca a ayudar a los compradores, estan compitiendo directamente con Froogle y con las otras opciones actuales&#8230; si tengo tiempo escribo en mas detalle como se la estan fumando, y como fue la seleccion de los programadores para ese sitio.<\/p>\n<p>Voy a ver si puedo resumir 10 tecnologias que pueden cambiar mucho las cosas, como nanoconductores, y otras cosas bien interesantes.<\/p>\n<p><strong>Cuanto tiempo ha durado tu maquina sin reiniciar??<\/strong><\/p>\n<p>Desde que monte SuSE 9.2 (ya quiero 9.3) puse mi laptop como servidor de desarrollo de wedoit4you.com, y muchas fotos y videos son servidas desde aqui. Asi que casi nunca apago la maquina. La del trabajo nunca la reinicio, tambien correo SuSE 9.2, y funciona perfect sin tener que reiniciar, demasiado arrecho Linux. Total que me pregunte si en Internet habia un lugar donde alguien haya registrado el mayor tiempo sin reiniciar una maquina&#8230; pues hay un concurso, o juego, llamado <strong><a href=\"http:\/\/www.uptime-project.net\">El Uptime Project<\/a><\/strong><\/p>\n<p>Pueden ver mi uptime todos los dias aqui:<\/p>\n<p><a href=\"http:\/\/www.uptime-project.net\/profile.php?uid=56006\"><img data-recalc-dims=\"1\" decoding=\"async\" src=\"https:\/\/i0.wp.com\/img.uptime-project.net\/img\/5\/56006.png?w=640\" border=\"0\" \/><\/a>\n<\/p>\n<p>Para mi desagradable pero comica sorpresa, la maquina con mayor uptime es una Pentium Compaq que tiene 3 anos encendida en un datacenter sin hacer nada, la maquina corre Windows2000 y esta vagando no tiene nada corriendo en ella mas que el programita que  envia el uptime periodicamente a uptime-project.<\/p>\n<p><strong>LimeWire casi #1 en <a href=\"http:\/\/www.download.com\">www.download.com<\/a><\/strong><br \/>\nEsta semana LimeWire salio como #2 en los downloads mas populares de Download.com. Es demasiado emocionante trabajar en una empresa que por 9mil downloads no es la numero uno en Internet haciendo lo que hace. El equipo de LimeWire ademas de divertirse mientras trabaja, trata de hacer lo mejor todos los dias, queremos tener el cliente P2P mas avanzado del mundo, y los frutos de tan arduos esfuerzos se estan viendo recompensados. Pronto voy a poner mi fotillo y una corta historia profesional en la pagina del Team de LimeWire, les aviso por aca pronto. Mientras tanto, sigan utilizando LimeWire, lo puden bajar gratis en <a href=\"http:\/\/www.limewire.com\">www.limewire.com<\/a> y yo que se los garantizo, no tiene SpyWare, si no confian en mi pueden bajar el codigo fuente en <a href=\"http:\/\/www.limewire.org\">www.limewire.org<\/a><\/p>\n<p>Si programas bien en Java, y te interesa la programacion de Redes, o de interfaces graficas en Java (con Swing, ya es demasiado tarde para implementar todo de nuevo en SWT) entra en limewire.org y lee todo lo que puedas, actualemente no tenemos colaboradores desarrolladores latinos o de habla hispana, solo estoy yo ahi representando latinoamerica y espana.<\/p>\n<p>Entre algunas ideas que tengo para LimeWire algunas que puedo revelar aqui, es que quisiera hacer un crawler de la red gnutella el cual permita graficar la red utilizando diferentes dimensiones interesantes para entender el funcionamiento de la red. Esta idea  tiene muchos obstacuos, el mas importante es la volatilidad de la red, las personas se conectan y desconectan muy rapido, pero quizas se puede hacer un crawl distribuido de 10 minutos, y graficar lo que se vea en esos 10 minutos&#8230;<\/p>\n<p>Otras ideas de mayor utilidad no las puedo revelar aqui por temor a la competencia chuleando, de ser aceptadas por el equipo voy a empezar a implementar en el poco tiempo libre que me queda del tiempo libre que ocupo para trabajar en wedoit4you.com y mis propios proyectos.<\/p>\n<p><strong>Antes de Cerrar un poquito de codigo<\/strong><br \/>\nEn el proceso de Migracion, y despues del concurso del mes pasado, quedaron demasiados lyrics con nombres de artistas que echaban a perder la navegabilidad.<\/p>\n<p>Habian muchos lyrics en los que los artistas comparten microfono con otros artistas o grupos, y el nombre del artista queda asi<br \/>\nArtista ft. otro artista<br \/>\nArtista (otro artista)<\/p>\n<p>y asi, muchos otros casos.<\/p>\n<p>Generalmente solia resolver el problema haciendo selects que filtraran un poco la cosa, y luego utilizar PHP para amasar los datos y luego hacer los updates.<\/p>\n<p>Se me ocurrio examinar las funciones de strings de MySQL, y encontre un monton de utilidades, y decidi finalmente aprovechar el poder del manejador para manipular los strings.<\/p>\n<p>A continuacion algo de codigo en SQL (MySQL) para manipular la informacion de los Lyrics.<\/p>\n<p>\/**<br \/>\nEste script se vale de los poderes de MySQL para reparar los nombres<br \/>\nde los artistas. Antiguamente lo hacia utilizando las funciones<br \/>\nde Strings de PHP, pero eso era muy lento. Aprovecho que consegui<br \/>\nlas funciones de strings del manejador.<\/p>\n<p>locate()\/position()\/instr() &#8211; devuelven la posicion de un substring<br \/>\nleft &#8211; devuelve todo a la izquierda de un string dado el offset<br \/>\nright &#8211; lo mismo que left, pero pal otro lao<br \/>\nlength &#8211; tamano de un string (esta si es vieja)<\/p>\n<p>Hay otras mas:<br \/>\ntrim()\/rtrim()\/ltrim() &#8211; que bien que las trae<br \/>\nucase()\/upper()<br \/>\nlcase()\/lower()<br \/>\nhex()\/unhex()<\/p>\n<p>Con estas funciones puedes conquistar el mundo.<br \/>\n*\/<\/p>\n<p>\/\/conexion a la bd aqui&#8230;<\/p>\n<p>\/\/luego lo bueno<\/p>\n<p>#fix artists with &#8221; ft. other Artist&#8221;<br \/>\n$sql = &#8220;UPDATE LYRICS<br \/>\n        SET Lyric_artist = left(Lyric_artist,<br \/>\n                                locate(&#8216; ft&#8217;,Lyric_artist))<br \/>\n        WHERE locate(&#8216; ft&#8217;,Lyric_artist) &gt; 1;&#8221;;<\/p>\n<p>mysql_query($sql);<\/p>\n<p>#fix ( at the begining of artist names<br \/>\n$sql = &#8220;UPDATE LYRICS<br \/>\n        SET Lyric_artist = right(Lyric_artist,1)<br \/>\n        WHERE locate(&#8216;(&#8216;,Lyric_artist) = 1;&#8221;;<br \/>\nmysql_query($sql);<\/p>\n<p>#remove ) at the end of artist names<br \/>\n$sql = &#8220;UPDATE LYRICS<br \/>\n        SET Lyric_artist = left(Lyric_artist,length(Lyric_artist)-1)<br \/>\n        WHERE locate(&#8216;)&#8217;,Lyric_artist) = length(Lyric_artist);&#8221;;<br \/>\nmysql_query($sql);<\/p>\n<p>#fix ( in artist names<br \/>\n$sql = &#8220;UPDATE LYRICS<br \/>\n        SET Lyric_artist = left(Lyric_artist,<br \/>\n                                locate(&#8216; (&#8216;,Lyric_artist))<br \/>\n        WHERE locate(&#8216; (&#8216;,Lyric_artist) &gt; 1;&#8221;;<\/p>\n<p>mysql_query($sql);<\/p>\n<p>mysql_close();<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Finalmente voy a poder dormir tranquilo (cualquiera cae que no duermo) wedoit4you.com esta montado en el nuevo servidor. Ahora tenemos practicamente ancho de banda ilimitado y absoluto control sobre el servidor, somos root. Haciendo valer un poco la cuna, vamos a dar ahora hosting con todas las de la ley. En este proceso, aprendi mas [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[33],"tags":[],"class_list":["post-159","post","type-post","status-publish","format-standard","hentry","category-gubatron"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/p5Unzf-2z","jetpack-related-posts":[{"id":117,"url":"https:\/\/www.gubatron.com\/blog\/el-que-persevera-compila\/","url_meta":{"origin":159,"position":0},"title":"El que persevera\u2026 Compila!","author":"gubatron","date":"March 9, 2005","format":false,"excerpt":"Desde que me pase a Linux, he querido actualizar mi version de The Gimp. The Gimp,en su nueva version requiere Gtk 2.6.0, que a su vez requiere Glib > 2.6.0 (creo), y mi Linux SuSE trae Glib 1.2.23. Total que logico, uno empieza por lo de mas abajo. Me baje\u2026","rel":"","context":"In &quot;Gubatron&quot;","block_context":{"text":"Gubatron","link":"https:\/\/www.gubatron.com\/blog\/category\/gubatron\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":1998,"url":"https:\/\/www.gubatron.com\/blog\/startkeychain-bash-utility-to-start-ssh-agent\/","url_meta":{"origin":159,"position":1},"title":"startKeychain &#8211; bash utility to start ssh-agent","author":"gubatron","date":"June 3, 2010","format":false,"excerpt":"For my (and your) future reference, here's a function to put on your .bashrc or .bash_profile, you can invoke it later at any time to start\/re-start your ssh-agent. [bash] function startKeychain { killall ssh-agent rm ~\/.keychain\/* keychain id_rsa HOSTNAME=`hostname` source ~\/.keychain\/${HOSTNAME}-sh } [\/bash] Then at any time, the \"command\" startKeychain\u2026","rel":"","context":"In &quot;Code&quot;","block_context":{"text":"Code","link":"https:\/\/www.gubatron.com\/blog\/category\/code\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":593,"url":"https:\/\/www.gubatron.com\/blog\/ssh-add-l-cannot-connect-to-your-agent\/","url_meta":{"origin":159,"position":2},"title":"ssh-add -l -> Cannot connect to your agent.","author":"gubatron","date":"September 21, 2007","format":false,"excerpt":"keychain not working for ya... you run ssh-agent but ssh-add won't add the keys. This is probably because your SSH_AGENT_PID and SSH_AUTH_SOCK variables are incorrect... so I recommend you put something like this on your .bashrc to initialize your ssh-agent correctly: export SSH_AGENT_PID= export SSH_AUTH_SOCK= #make sure no old agents\u2026","rel":"","context":"In &quot;Code&quot;","block_context":{"text":"Code","link":"https:\/\/www.gubatron.com\/blog\/category\/code\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":4122,"url":"https:\/\/www.gubatron.com\/blog\/screw-configuring-gpg-to-sign-git-commits-do-it-with-your-same-ssh-key-like-this\/","url_meta":{"origin":159,"position":3},"title":"Screw configuring GPG to sign git commits, do it with your same SSH key like this","author":"gubatron","date":"January 30, 2025","format":false,"excerpt":"GPG gives a lot of shit on macos for some reason. It's best to just add the same SSH authentication key you have on github as a \"Signing Key\" in your github account signing configuration. Go to Settings > SSH and GPG Keys You can then configure your github client\u2026","rel":"","context":"In &quot;Code&quot;","block_context":{"text":"Code","link":"https:\/\/www.gubatron.com\/blog\/category\/code\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/www.gubatron.com\/blog\/wp-content\/uploads\/2025\/01\/ssh_sign.jpg?fit=736%2C441&ssl=1&resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.gubatron.com\/blog\/wp-content\/uploads\/2025\/01\/ssh_sign.jpg?fit=736%2C441&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/www.gubatron.com\/blog\/wp-content\/uploads\/2025\/01\/ssh_sign.jpg?fit=736%2C441&ssl=1&resize=525%2C300 1.5x, https:\/\/i0.wp.com\/www.gubatron.com\/blog\/wp-content\/uploads\/2025\/01\/ssh_sign.jpg?fit=736%2C441&ssl=1&resize=700%2C400 2x"},"classes":[]},{"id":118,"url":"https:\/\/www.gubatron.com\/blog\/mucho-codigo-subiendo-el-nivel\/","url_meta":{"origin":159,"position":4},"title":"Mucho Codigo, Subiendo el Nivel.","author":"gubatron","date":"March 14, 2005","format":false,"excerpt":"Mierda, no he echado tanto codigo como quisiera, pero si he tenido muchas ideas para nuevas secciones de wedoit4you.com, sobre todo despues que termino el concurso, he estado preparando el terreno para desarrollar. Mi maquina fue convertida en un servidor de desarrollo. Tiene todo montado, hasta PHP 5, que no\u2026","rel":"","context":"In &quot;Gubatron&quot;","block_context":{"text":"Gubatron","link":"https:\/\/www.gubatron.com\/blog\/category\/gubatron\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":63,"url":"https:\/\/www.gubatron.com\/blog\/vaciando-el-buffer\/","url_meta":{"origin":159,"position":5},"title":"Vaciando el Buffer","author":"gubatron","date":"December 10, 2004","format":false,"excerpt":"Este post es un poco para desahogar algunos consejos y tips que he querido tener anotados, y que mejor lugar que el blog, donde mis notas personales pueden ayudar a otros. En mi \u00faltimas asignaciones profesionales he tenido que trabajar en ambientes 100% Linux, esto me ha hecho refrescar viejas\u2026","rel":"","context":"In &quot;Gubatron&quot;","block_context":{"text":"Gubatron","link":"https:\/\/www.gubatron.com\/blog\/category\/gubatron\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]}],"_links":{"self":[{"href":"https:\/\/www.gubatron.com\/blog\/wp-json\/wp\/v2\/posts\/159","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.gubatron.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.gubatron.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.gubatron.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.gubatron.com\/blog\/wp-json\/wp\/v2\/comments?post=159"}],"version-history":[{"count":0,"href":"https:\/\/www.gubatron.com\/blog\/wp-json\/wp\/v2\/posts\/159\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.gubatron.com\/blog\/wp-json\/wp\/v2\/media?parent=159"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.gubatron.com\/blog\/wp-json\/wp\/v2\/categories?post=159"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.gubatron.com\/blog\/wp-json\/wp\/v2\/tags?post=159"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}