Un sitio de Noticias, Discusiones, Software y miscelánea. ;-) enjoy.-

sábado, julio 22, 2006

Ingeniería del Mal

En una escalofriante noticia para todos los usuarios de Software Antivirus, diversos estudios indican que el 80% del Malware, es decir Software malicioso como virus, troyanos, Spyware, etc, vencen a los productos más populares.



La noticia la leí en zdnet, mientras que la nota original puede encontrarse aquí.

Para poner las cosas en perspectiva, que un sistema antivirus sea vencido por el 80% del Malware implicaría, por ejemplo, que de cada 10 virus únicamente se puede evitar que 2 hagan daño, los otros 8 violan la "seguridad".

Esta devastadora cifra se debe principalmente a que cada vez los diseñadores de Malware son más capaces, al punto de que la calidad del código promedio es comparable con la esperada de un Ingeniero de Software, más que con un sencillo programador casero. A esto se suma el hecho de que muchos de estos Ingenieros del Mal (ware), previo a liberar sus insectos, acostumbran descargan versiones trial de los Antivirus más populares y para probar sus bichos, haciendo las mejoras necesarias para lograr un mejor engaño.

Como era de esperarse, liderando en el ranking, encontramos al Norton Antivirus de Symantec. Luego le siguen los productos de McAffe y Trend.

No tan sorprendentemente, el Antivirus Ruso Kaspersky, tras ser sometido a las mismas pruebas que los anteriores, logró bloquear el 90% del Software malicioso, lo que implicaría que de cada 10 virus es inmune a 9.


viernes, julio 21, 2006

Abstrayendo Yaks :: Yaks Server

Este Post se relaciona mucho con el anterior, si bien no es necesario leerlo para comprender los conceptos relacionados con el presente.

Resulta que para una materia del semestre anterior (7mo) se nos pidió trabajar sobre un simulador de robots llamado Yaks. A modo rápido, lo bueno de Yaks es que permite desarrollar y ejecutar agentes para el robot Khepera, en forma completamente gratuita, pero presenta dos limitaciones bastante importantes: 1) únicamente puede ser programado en C/C++ y 2) el código del simulador es mucho menos que prolijo.

Los principales problemas de estas limitaciones son:

El imponer el lenguaje fuerza a que los alumnos deban tener algún primer contacto con él, lo cual es bueno, pero en general esto no es bueno, especialmente tratándose de C/C++. Por desgracia me llevo el concepto de que mucha gente sintió que el lenguaje causaba más problemas de los que solucionaba.

Los problemas relacionados con tener que lidiar con código escrito por otra persona del otro lado del mundo, el cual es especialmente embrollado y prácticamente no tiene documentación alguna.

Fue a raíz de estos motivos que varias veces comentamos lo bueno que estaría desarrollar un tipo de interfaz que permitiera ocultar los detalles del simulador a los desarrolladores.

El resultado de esto es en lo que he estado trabajando en los últimos días: Yaks Server, básicamente una API desarrollada en C++ que permite abstraer los detalles del simulador a través de una interfaz de BSD Sockets. Yaks Server crea una capa de que “cubre” el simulador, simplificando la tarea de desarrollo.

La interfaz presenta 3 primitivas:

  • Conectar: permite conectar un número cualquiera de clientes, cada uno controlará un robot distinto.
  • Enviar Sensores: envía a cada cliente las percepciones actuales correspondientes a su robot.
  • Recibir Velocidades: recibe de cada cliente la velocidad a asignar a la rueda izquierda y derecha.

Desde el punto de vista de los clientes, la situación es muy similar, únicamente que el flujo de información es al revés, enviando velocidades y recibiendo percepciones.

Las grandes ventajas que el agregar esta capa de abstracción nos proveen se basan en que los desarrolladores no deberán previamente estudiar el código del simulador para poder trabajar con él y, además, la API del lado del cliente puede ser desarrollada en cualquier lenguaje (que sea capaz de hacer uso de las funciones de red), por lo cual los clientes pueden ser desarrollados en una gran variedad de lenguajes.

Si bien se podría alegar que esto es perjudicial, yo creo que a la larga termina siendo beneficioso. Pienso que los malos hábitos que uno genera cuando aprende a las apuradas son, en general, los más difíciles de corregir. En la línea del Post anterior: C/C++ no es un lenguaje que pueda aprenderse bien a las apuradas.

jueves, julio 20, 2006

Aprendiendo C++ Por Cuenta Propia


Hola, ¿cómo han estado? En esta oportunidad aprovecho para escribir acerca de los lenguajes C y C++.

C y C++... todos en el ámbito informático han de haber oído hablar de ellos alguna que otra vez. Estos dos lenguajes fueron y son muy importantes dentro del marco de la programación de sistemas.

Muchísimo Software está escrito en y para estos lenguajes, sin embargo creo que en el ámbito académico cada vez se le esta atribuyendo menos importancia. Esto es realmente un problema, ya que implica que cada año se recibe más y más gente poco o nada capacitada en uno de los lenguajes más importantes para la ingeniería de sistemas.

La gente alega que hoy en día cada vez se tiende a ir a más alto nivel y que conocer un lenguaje que brinda el poder de hacer las cosas uno mismo a bajo nivel es realmente una pérdida de tiempo. Sin embargo creo que esta gente es consolidada principalmente por quienes piensan que la ingeniería en informática es acerca de escribir aplicaciones tipo para empresas, como sistemas de gestión de clientes, atención al público, etc.

La última vez que me fijé, la idea de la carrera era entrenar científicos, no programadores. Un ingeniero debe poder dominar la herramienta que sea necesaria para resolver un problema. Muchos lenguajes de hoy en día están orientados a hacer las cosas más fáciles, y esta bien usarlos cuando es apropiado. No obstante, hay casos en que esto no es así. No existe un lenguaje que sea bueno para cualquier tipo de problema, ni siquiera C++.

Yo pienso que la forma apropiada de aprender C++ no es a partir de tutoriales en Internet. Así mismo, pienso que no es un lenguaje que pueda ser aprendido de apuro. He visto mucho código desarrollado en el marco de estos dos puntos, tomando como punto de partida lo que a alguien se le ocurrió escribir por ahí, y lleva a resultados un tanto espantosos. C++ es educación. Se trata de un lenguaje muy maduro (recordemos que esta entre nosotros desde 1983) y debe empezarse por un libro. No importa que libro sea, mientras te sientas cómodo leyéndolo. Muchos libros empiezan por partes complicadas, otros por partes más sencillas. Algunos son más teóricos, explicando el "funcionamiento interno" del lenguaje, mientras que otros son más prácticos.

Lo importante es abrir la mente, tomar un libro y sentarse a aprender. Sí, quizás sea más difícil que otras cosas que existen hoy y quizás no veas utilidad inmediata de aprenderlo, pero puedes considerarlo como una instancia más en el aprendizaje de como las computadoras funcionan. No tiene sentido esconderse tras un único lenguaje pensando que es lo único que vamos a precisar, porque no es cierto.

"Si tu única herramienta es un martillo, todos tus problemas los vas a ver como clavos."

sábado, julio 15, 2006

Zindane el Cabezón

Navegando por el Teatro Mágico me encontré con un nuevo jueguito!!
Les paso la dirección, requiere el plugin del Macromedia Player.

Enjoy.-

http://widelec.org/zidane.html

lunes, julio 10, 2006

Llegué, Miré, Migré

Tras aproximadamente 5 o 6 meses de usar Debian en el Laptop, hoy estoy cerrando este capítulo. Hace no más de 2 días llegaron los CD's de Ubuntu 6.06 que solicité y por varios motivos hoy decido instalarlo como sistema de uso diario.

No les voy a decir que fue algo así como bootearlo, verlo y decir “ésto es para mí”, fue más bien una acumulación de cosas que han ido ocurriendo. Creo que habiendo usado Debian por el tiempo que lo usé pude formarme un concepto de lo que dicho sistema me aporta como usuario y como desarrollador. A modo de “saludo” es que escribo este Post destacando lo que a mi parecer fue lo bueno y lo malo de mi experiencia.

Lo Bueno:

Rapidísimo: sobre todo comparandolo con el SuSE 9.3 que tenía anteriormente. Esto no ha cambiado desde el Post anterior en el cual hablaba de una de las grandes virtudes era su velocidad.

Miles y miles de paquetes de Software: al momento de tener que elegir un programa para hacer algo uno siempre se encuentra con por lo menos 2 o 3 programas completamente distintos que permiten realizar dicha tarea.

Facilísimo de mantener: nunca había visto una distribución en la cual fuese tan fácil conseguir e instalar bibliotecas, IDEs, herramientas de productividad, etc, donde el sistema mismo se encargara de resolver todos los problemas de dependencias automáticamente.

Seguro: en particular comparado con Ubuntu, en la cual encuentro que el usuario creado al momento de instalación dispone de demasiados poderes. Ni en Debian ni en otras distribuciones esto es así. Los usuarios son usuarios y el adimistrador es otra persona.

Lo Malo:

Software antiguo: un montón del Software disponible cuenta hoy con versiones más nuevas que aún no son soportadas, por lo cual uno termina usando las versiones antiguas. Si bien se puede compilar las últimas versiones desde los archivos fuente, resulta impráctico tener que hacerlo para cada paquete de Software. En particular me complicaba tener que usar OpenOffice 1.1 cuando todo el mundo usa 2.0 y los formatos de archivos son distintos.

Reconocimiento y soporte de Hardware: de por sí cuando instalé el sistema me dí cuenta de que no había detectado en forma correcta el monitor. Con el tiempo me terminé dando cuenta de que en realidad no logró detectar nada, instalando drivers genéricos para todo. Esto resultó especialmente molesto para Hardware (como la tarjeta de video o de sonido) el cual uno nota instantáneamente cuando no funciona apropiadamente y es complicado de configurar.

A esta altura quienes recuerden mi Post anterior, en el cual comentaba que es divertido meterse a arreglar las cosas, sepan que aún pienso que así lo es, la diferencia que hoy me planteo es cuando uno arregla las cosas por hobby o cuando lo hace porque necesita desesperadamente que anden para poder hacer algo más. Como fanático que soy de comprender como las cosas funcionan y hacerlas andar yo mismo, pienso que Debian plantea un reto más que interesante, en especial para todos los adeptos a la computación y sistemas operativos. Como desarrollador y como usuario final pienso que necesito algo un poco más armadito.


viernes, julio 07, 2006

El Regreso de Dell el Terrible

Finalmente ha terminado el mortal fin de semestre y se vuelve a tener algo de tiempo para escribir unas líneas en el Blog.

Si bien esto no es más que algo de marea calma antes de la tormenta de exámenes, las condiciones parecen propicias, al menos estos días, para volver a mis pruebitas computacionales :P

No he tenido mucho rato y aproveché para arreglar un viejo PC Dell que tengo desde el '96 y que estaba bastante dañado desde el punto de vista de su Software. No más que unos conflictos de drivers sobre este viejo y querido Windows 95 que causaban su inevitable fallecimiento cada 5 minutos de uso. Una vez reparado, ¿qué mejor manera de probar la estabilidad del sistema si no es jugando una o dos horitas de doom?

Una vez terminado el primer episodio, decidí probar algo más complicadito y me bajé (la que creo que es) la última versión de ZipSlack, básicamente un Slackware Linux pequeño que puede ejecutar en equipos de muy poco Hardware, de hecho considerando que los requerimientos mínimos son un procesador intel 486 con 6 MB de RAM, considero que mi Pentium I con 32MB era apto para la tarea. Lo bueno de ZipSlack es que permite cargar el Kernel directamente desde DOS, por lo cual no es necesario reparticionar el disco para poder contar con esta distro. La desventaja es que este cargador no sirve para el Kernel de Win/NT, pero eso no nos preocupa a los efectos de tener W/95 instalado.

Como era de esperarse, no obstante, en la vida no todo es color rosa y las cosas difícilmente andan de primera en computación. Cuando cargué el Kernel obtuve unos lindos errores que destrozaron toda expectativa de poder hacer andar el asunto de primera. No es de sorprenderse, Linux debe brindar soporte a tantos tipos distintos de configuraciones de Hardware que es muy probable que quien hizo ZipSlack nunca se hubiese topado con una configuración idéntica a la mia.

No dispuse de mucho más tiempo para realizar pruebas, en principio pensé que los archivos estarían dañados, ya que al verlos parecía que sus nombres estaban alterados, sin embargo revisando el tema por la Web encontré que al parecer los nombres se ven distorsionados al navegarlos desde el explorer.exe de Windows, pero es normal.

Continuaré haciendo pruebas a medida que tenga tiempo, lo importante es que el Hardware se encuentra impecable tras aproximadamente 10 años de uso y puede seguir ofreciendo su poder de cómputo, sin importar que la mayoría del Software de hoy en día presente requerimientos estrafalarios.

 
I am nerdier than 88% of all people. Are you nerdier? Click here to find out! The Stupid Quiz said I am "Pretty Smart!" How stupid are you? Click here to find out! My computer geek score is greater than 83% of all people in the world! How do you compare? Click here to find out!