domingo, 26 de enero de 2014

Actualizar las plantillas de Netbeans

Esto puede parecer bastante obvio pero quizás muchos desconocen esta funcionalidad, de hecho, solo hasta hace poco decidí echarle un vistazo a las plantillas que vienen por defecto en Netbeans y hacer unas correcciones a algunas en particular, en mi caso, las de Hibernate.

Hibernate es un ORM, a grandes rasgos una biblioteca para mapear bases de datos relacionales en objetos Java, esto quiere decir que toda la labor de persistencia se haría usando el paradigma orientado a objetos y el ORM se encargaría de convertir esta funcionalidad en clausulas SQL de un modo transparente tanto para el programador como para el usuario de la aplicación.

Bueno, resulta que con esto de las actualizaciones, la gente de Hibernate decidió actualizar la ruta de las DTD’s que manejan los archivos XML que usa Hibernate pero las plantillas de Netbeans aún tienen la ruta anterior, lo que en algunos casos cuando se usa la biblioteca Hibernate mas reciente, lanza una advertencia acerca de los cambios que se han realizado.

Para efectos reales, quizás el cambio de dirección no sea un problema en la actualidad, algunas direcciones solo sirven de puente a la dirección original, sin embargo no se descarta que en un futuro las direcciones originales queden inhabilitadas por lo que no está demás ir corrigiendo los archivos fuentes para que reflejen los nuevos cambios.

Bueno, el asunto se realiza así:

Seleccionamos Tools –> Templates y nos abre el Template Manager

Templates 01

En el template manager buscamos la categoría Hibernate y allí empezamos a abrir una a una las plantillas en el editor y realizamos los cambios necesarios

Archivo Hibernate.cfg.xml:

<!DOCTYPE hibernate-configuration PUBLIC
        "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
        "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">

Reemplazamos por:
<!DOCTYPE hibernate-configuration PUBLIC
        "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
        "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">

Archivo: Hibernate Mapping Wizard

<!DOCTYPE hibernate-mapping PUBLIC
  "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
  "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">

Reemplazamos por:
<!DOCTYPE hibernate-mapping PUBLIC
  "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
  "http://www.hibernate.org/dtd//hibernate-mapping-3.0.dtd">

Archivo: Hibernate Reverse Engineering Wizard

<!DOCTYPE hibernate-reverse-engineering PUBLIC
  "-//Hibernate/Hibernate Reverse Engineering DTD 3.0//EN"
  "http://hibernate.sourceforge.net/hibernate-reverse-engineering-3.0.dtd">

Reemplazamos por:
<!DOCTYPE hibernate-reverse-engineering PUBLIC
  "-//Hibernate/Hibernate Reverse Engineering DTD 3.0//EN"
  "http://www.hibernate.org/dtd/hibernate-reverse-engineering-3.0.dtd">

Hasta aquí los cambios necesarios, yo además revisé el código de HibernateUtil.java, realizándole algunas modificaciones para que se adaptaran a la nueva biblioteca, sin embargo, este archivo es bastante común y cada quien lo modifica de acuerdo a sus propias necesidades.

miércoles, 16 de enero de 2013

De Swing a JavaFX

Bueno, el ecosistema Java vuelve a hacer obsoletos algunos de mis libros sobre Java y coincidencialmente el apartado es el mismo, las interfaces gráficas y es que por allá en mis inicios con Java las “gui’s” se hacían con el ya veterano AWT (Abstract Window Toolkit, creo que era) que como herramienta para desarrollo de interfaces era muy básico, quizás mas que suficiente para algunos pero para otros era demasiado elemental, las aplicaciones Java eran muy planas, fácilmente reconocibles por las particularidades de su apariencia.

Esto cambió radicalmente con el nacimiento de Swing, una aplastante propuesta que se incorporó de a poco como una biblioteca opcional hasta convertirse en parte fundamental del sistema, entre sus ventajas traia un rico conjunto de widgets, una modularidad y la capacidad de adquirir la apariencia del host con total facilidad, para ello existían versiones distintas para cada host, entre sus detractores estaban los que aducían un incremento en el tamaño de las aplicaciones y una ralentización de las mismas, de hecho, no estaban muy lejos de la realidad y aunque hoy dia con los sistemas actuales, apenas se logra percibir un cambio sustancial entre una aplicacion nativa y una aplicación Java con Swing, en sus inicios este exceso de tiempo en la carga de las aplicaciones provocaron que iniciativas como SWT nacieran y se hicieran eco en los desarrolladores.

Ahora, Oracle le apuesta a JavaFX, después de la adquisición de Sun por parte de Oracle, JavaFX sufrió un lavado de cara y una reingeniería que a mas de uno (incluyendome) logró desanimar pero que al final, fueron mas los aciertos que los fracasos en los cambios.

JavaFX, alternativa a tener en cuenta

Por qué deberíamos tener en cuenta en nuestros desarrollos a JavaFX?, personalmente pienso que terminará imponiéndose como sistema de interfaz de usuario por defecto, de hecho, las ventajas sobre Swing son múltiples, la innovación en widgets y efectos nativos hace que la creatividad del desarrollador sea fundamental para crear aplicaciones vistosas, atractivas y sobre todo funcionales, muy acordes a estos tiempos de cambio en donde las aplicaciones tienen identidad propia y se busca tiempos cortos de desarrollo, logrados solo con kits muy ricos y listos para usar.

Creando una aplicación

Este ejemplo es demasiado sencillo, pero vale la pena realizar porque se hace necesario tener una base para poder comparar y es que algo que si es cierto es que con cada innovación, el código tiende a ser mas complejo, pocas veces y pocos lenguajes logran innovación con simplicidad, aunque es posible y existen estas joyas por ahí, el caso de Java con Swing y JavaFX es de prestar atención. Son tres ventanas, realizadas con AWT, Swing, y JavaFX, en el caso de Swing, las líneas 40 a 53 se pueden obviar, ya que intentan establecer a Nimbus como un Look and Feel por defecto en la aplicación, para el caso de JavaFX las líneas que se pueden obviar son desde la 23 hasta la 33, lo que nos da una aproximación a las principales diferencias de este sistema de ventanas.

  1: package basicswing;
  2: 
  3: /**
  4:  *
  5:  * @author Wilmar
  6:  */
  7: public class AWT_Window extends java.awt.Frame {
  8: 
  9:     /**
 10:      * Creates new form AWT_Window
 11:      */
 12:     public AWT_Window() {
 13:         initComponents();
 14:     }
 15: 
 16:     private void initComponents() {
 17: 
 18:         setPreferredSize(new java.awt.Dimension(640, 480));
 19:         setTitle("Ventana AWT");
 20:         addWindowListener(new java.awt.event.WindowAdapter() {
 21:             public void windowClosing(java.awt.event.WindowEvent evt) {
 22:                 exitForm(evt);
 23:             }
 24:         });
 25: 
 26:         pack();
 27:     }
 28: 
 29:     /**
 30:      * Exit the Application
 31:      */
 32:     private void exitForm(java.awt.event.WindowEvent evt) {                          
 33:         System.exit(0);
 34:     }                         
 35: 
 36:     /**
 37:      * @param args the command line arguments
 38:      */
 39:     public static void main(String args[]) {
 40:         java.awt.EventQueue.invokeLater(new Runnable() {
 41:             @Override
 42:             public void run() {
 43:                 new AWT_Window().setVisible(true);
 44:             }
 45:         });
 46:     }
 47: }

La versión con Swing solo tiene unos ligeros cambios:

  1: package basicswing;
  2: 
  3: /**
  4:  *
  5:  * @author Wilmar
  6:  */
  7: public class Swing_Window extends javax.swing.JFrame {
  8: 
  9:     /**
 10:      * Creates new form Swing_Window
 11:      */
 12:     public Swing_Window() {
 13:         initComponents();
 14:     }
 15: 
 16:     @SuppressWarnings("unchecked")
 17:     private void initComponents() {
 18: 
 19:         setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
 20:         setTitle("Ventana Swing");
 21: 
 22:         javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
 23:         getContentPane().setLayout(layout);
 24:         layout.setHorizontalGroup(
 25:             layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
 26:             .addGap(0, 400, Short.MAX_VALUE)
 27:         );
 28:         layout.setVerticalGroup(
 29:             layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
 30:             .addGap(0, 300, Short.MAX_VALUE)
 31:         );
 32: 
 33:         pack();
 34:     }
 35: 
 36:     /**
 37:      * @param args the command line arguments
 38:      */
 39:     public static void main(String args[]) {
 40:         /* Set the Nimbus look and feel */
 41:         /* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.
 42:          * For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html 
 43:          */
 44:         try {
 45:             for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
 46:                 if ("Nimbus".equals(info.getName())) {
 47:                     javax.swing.UIManager.setLookAndFeel(info.getClassName());
 48:                     break;
 49:                 }
 50:             }
 51:         } catch (ClassNotFoundException | InstantiationException | IllegalAccessException | javax.swing.UnsupportedLookAndFeelException ex) {
 52:             java.util.logging.Logger.getLogger(Swing_Window.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
 53:         }
 54:         
 55: 
 56:         /* Create and display the form */
 57:         java.awt.EventQueue.invokeLater(new Runnable() {
 58:             @Override
 59:             public void run() {
 60:                 new Swing_Window().setVisible(true);
 61:             }
 62:         });
 63:     }
 64: }

La versión en JavaFX…

  1: package basicjavafx;
  2: 
  3: import javafx.application.Application;
  4: import javafx.scene.Scene;
  5: import javafx.scene.layout.StackPane;
  6: import javafx.stage.Stage;
  7: 
  8: /**
  9:  *
 10:  * @author Wilmar
 11:  */
 12: public class BasicJavaFX extends Application {
 13:     
 14:     @Override
 15:     public void start(Stage primaryStage) {
 16:         StackPane root = new StackPane();
 17:         Scene scene = new Scene(root, 300, 250);
 18:         primaryStage.setTitle("Ventana con JavaFX");
 19:         primaryStage.setScene(scene);
 20:         primaryStage.show();
 21:     }
 22: 
 23:     /**
 24:      * The main() method is ignored in correctly deployed JavaFX application.
 25:      * main() serves only as fallback in case the application can not be
 26:      * launched through deployment artifacts, e.g., in IDEs with limited FX
 27:      * support. NetBeans ignores main().
 28:      *
 29:      * @param args the command line arguments
 30:      */
 31:     public static void main(String[] args) {
 32:         launch(args);
 33:     }
 34: }

 


Con una sintaxis limpia y clara, podemos empezar a trabajar en nuestras aplicaciones. A probar JavaFX…

Ser o no ser usuario Java ¡Esa es la cuestión!

Últimamente Java, como herramienta de despliegue de aplicaciones se ha hecho tristemente célebre por una serie de vulnerabilidades que afectan su plataforma, hay mucho rumor mediático y se especula mucho sobre sus alcances, pero, ¿que tan importantes son estas vulnerabilidades?, ¿que tanto afectan al usuario de “a pie”?, ¿es tan crítica la vulnerabilidad como para prescindir del entorno de ejecución?, ¿que medidas puedo tomar al respecto?. Trataré de esbozar un poco estos y otros interrogantes.

 

Java, JDK, JRE y otros demonios

Si hay una tecnología que acumule acrónimos en cantidades sorprendentes es precisamente el ecosistema JAVA, y es que cada tecnología, cada nicho que se cubre tiene su clientela de acrónimos que pueden asustar y confundir a mas de uno así que partamos de lo principal, Java para el usuario final y Java para el desarrollador.

Una aplicación Java puede ejecutarse casi que en cualquier dispositivo, hemos visto aplicaciones Java consiente o inconscientemente, celulares, gps’s, televisores, hornos microondas y como no, computadoras, ejecutan aplicaciones Java de forma transparente para el usuario, y es que Java nace con esa premisa, fue fundado sobre los cimientos de “Escribir una vez, ejecutar en cualquier lado”, es por esta razón que el instalador del entorno de ejecución se jacta de coexistir con otros 3 billones de dispositivos, cifra que puede no ser descabellada si tenemos en cuenta en todos los aparatos en donde se puede encontrar. Ahora bien, para ejecutar una aplicación Java se necesita un entorno de ejecución, es el denominado JRE o Java Runtime Environment, este entorno proporciona todos los requisitos base para que una aplicación se ejecute en un sistema determinado (pc’s, neveras o donde sea). Algunos de estos entornos vienen embebidos en el dispositivo y no se pueden modificar o actualizar, otros, como el que instalamos en la computadora recibe constantes actualizaciones y parches que entre otras cosas, mejoran el rendimiento, añaden funcionalidades o simplemente corrigen errores.

Para el desarrollador la cosa está mas clara, empezando con la base de que el desarrollador sabe lo que hace, vemos que el el Kit de desarrollo Java o JDK por sus siglas en inglés viene con todo lo necesario para empezar a escribir aplicaciones de escritorio, applets, o lo que se nos ocurra, además contiene el propio JRE así que no es necesario descargar e instalar independientemente estas dos herramientas.

Resumiendo hasta ahora, el JRE nos sirve para ejecutar aplicaciones Java, el JDK nos sirve además de poder ejecutar las aplicaciones Java (contiene el JRE), compilar aplicaciones Java (incluye un completo set de herramientas para desarrollo).

 

Las vulnerabilidades…

Ningún sistema está completamente exento de sufrir vulnerabilidades y Java no puede ser la excepción, de hecho, la dinámica de corrección de errores para algunos casos ha sido bastante buena con correcciones muy rápidas, para otros casos no tanto y este ha sido el talón de Aquiles del equipo de respuesta de los responsables del mantenimiento de Java como plataforma, si existe un punto débil es la demora en la corrección de algunos errores que incluso llevan años, pero sin ánimo de extendernos en el tema, hablemos de la “última” vulnerabilidad detectada, se ha hecho tanto eco de ella que vamos a ver de que se trata.

La vulnerabilidad en cuestión es la CVE-2013-0422 , de la que hay que destacar varios hitos muy importantes y que a veces no son tenidos en cuenta por las personas que difunden la noticia, a veces en tono muy amarillista y alarmista, con esto no estoy diciendo de que se debe menospreciar el problema, sino que hay que tratar de dar la información de la forma correcta.

  • La vulnerabilidad afecta solo a Java ejecutándose en los navegadores (Firefox, IExplorer, Opera, etc.…) y no afecta aplicaciones de escritorio (JDownloader, jEdit, entre otras… ), tampoco afecta a servidores ni a las aplicaciones embebidas (dispositivos que corren Java de forma nativa).
  • La vulnerabilidad permite ejecutar código en los sistemas expuestos, con su consecuente riesgo
  • Para afectar, la victima potencial debe visitar páginas ( de dudosa procedencia ) especialmente diseñadas para explotar esta vulnerabilidad, el usuario promedio rara vez se encuentra con estos sitios dañinos
  • Otro probable vector de ataque, pueden ser los applets con publicidad, la verdad me molestan mucho pero para algunos usuarios pasan inadvertidos.

Teniendo en cuenta esto, la problemática que se genera con estas vulnerabilidades, debemos preguntarnos lo mas importante ¿Necesitamos Java? y la verdad es que solo lo necesitaremos cuando realmente lo necesitemos (ambiguo y confuso…). Aclaremos esto, aplicaciones comerciales como Maple incluyen su propia versión de Java, en otras palabras, vienen con su propio JRE adecuado para sus necesidades, la instalación de este JRE es transparente al usuario y solo es utilizado cuando usamos, en este caso, Maple. Netbeans por su parte nos pide tener instalado un JDK, el oficial proporcionado por Oracle, así que para instalar Netbeans debimos haber instalado a Java con anterioridad, necesitamos Java para algo y lo instalamos.

Entonces, ¿que hacer?, bueno, llegamos al punto crucial de todo el tema, y es que partiendo del hecho de que todo sistema es potencialmente vulnerable, debemos cambiar nuestro modo de pensar y adquirir hábitos que minimicen estos problemas, entre las buenas prácticas que podemos hacer encontramos:

  • Desinstalar Java… Jajajaj, es broma, para nada estos es estrictamente necesario, aunque siempre he pensado que si algo no necesitamos, no debería habitar en nuestros sistemas, sin embargo, alrededor de Java podíamos pensar en una cultura de mantenimiento, actualizar Java es buena idea, y más cuando estas actualizaciones corrigen errores, siempre es buen hábito actualizar nuestro sistema y aplicaciones a sus versiones mas recientes o corregidas.
  • Las últimas versiones de Java permiten deshabilitar el plugin de los navegadores de una forma rápida y efectiva, a través de su propio panel de control, ante la alarma, deshabilitar  el plugin debería minimizar el riesgo a punto de desaparecer.
  • Antivirus, en Windows es un mal necesario, personalmente hace mucho que no uso antivirus, pero es mi caso particular, tener un buen antivirus y mantenerlo actualizado puede protegernos de muchas amenazas.

Al final la responsabilidad termina recayendo en el usuario, y es que la vulnerabilidad mas importante de todo sistema siempre el usuario, en el recaen las funciones de salvaguardar las credenciales de acceso, el mantenimiento de los sistemas, la instalación de aplicaciones y un largo etcétera que puede verse afectado en cualquier momento y por cualquier problema, convertirnos en usuarios responsables hará que nuestros sistemas se ejecuten apropiadamente y libres de riesgo.

Enlaces de interés:

Alerta de seguridad: https://blogs.oracle.com/security/entry/security_alert_for_cve_2013

Información sobre la vulnerabilidad http://www.infosecurity-magazine.com/view/30165/another-day-another-java-0day-exploit-in-the-wild/

jueves, 23 de febrero de 2012

Don’t feed the troll…!!! Algo acerca del DNS Changer

Paseaba por la red y de pronto me encontré con una noticia que me llamó la atención, un nuevo virus aterrorizaba el ciberespacio y afectaba a sistemas Windows, Linux y Mac indiscriminadamente, por lo que mi curiosidad me llevo a observar la nota, dándome cuenta de que se trataba del DNS Changer, no puedo negar la desilusión, quería encontrarme con un virus de plataforma cruzada y aprender algo nuevo, bueno, en fin, leí la nota que aunque informativa, carecía de investigación y era muy alarmista e imprecisa.
Bueno, siempre me gusta leer los aportes de las personas que como yo, llegaron a leer esta nota y desgraciadamente no falta el troll con sus apuntes: “Jajaja Linux no se ve afectado, apparmor protege todo, y no creo mac, la única porquería que se infecta de todo es Windows” y a pesar de las continuas invitaciones a leer un poco mas acerca del asunto que se le ofrecían a este troll, el persistía: “Se nota que no tienes idea, todas las configuraciones de los navegadores de internet en Linux, están protegidas por apparmor, si un usuario no hace nada estúpido como permitir acceso root para evitar de poner la contraseña de ves en cuando, es casi invulnerable. deberías informarte tu a propósito del funcionamiento de Linux y su escudo a las aplicaciones y configuraciones de las DNS”, debo reconocer que aquí quizás tenga razón, solo si supiera que esto nada tiene que ver con el problema, en fin, hubo muchos argumentos, tratando de hacer entender a este troll (craso error) de lo importante que es documentarse para afirmar una opinión y en este escenario aparezco yo tratando de organizar un poco las ideas de todo este meollo tratando de dar un poco de luz acerca de este confuso tema.

 

Algo de historia...

En el año 2003 sería descubierto el que actualmente se podría considerar el precursor de este vector de ataque, o este troyano en particular ( aquí ya hablo del DNS Changer y no del troll ;) ), a este troyano la mayoría de empresas dedicadas a la seguridad y los antivirus le dieron el nombre de Qhosts, para algunos ya les será familiar esta apropiada denominación ya que efectivamente atacaba este poderoso pero vulnerable archivo de los sistemas Windows, el archivo hosts generalmente se encuentra almacenado en esta dirección%WINDIR%\SYSTEM32\DRIVERS\ETC y es un archivo de texto plano, editable con el bloc de notas o cualquier otro editor de textos y contiene la primera configuración inicial de resolución de nombres, esto quiere decir que si en un navegador web intentamos acceder a una dirección, digamos pagina.com y esta dirección aparece mencionada en el archivo hosts, automáticamente se redirigiría a su respectivo alias, también descrito en este archivo, esta técnica es muy usada por los administradores de red para bloquear el acceso a sitios ya que es tan sencillo como agregar la linea
pagina.com 127.0.0.1
lo que haría inaccesible esta dirección, en fin, el primer cambiador DNS puede ser este, aunque no interfiere directamente con los DNS, si hace una eficiente redirección.

Ya definido el vector de ataque ( la idea era que silenciosamente se redirigiera el tráfico cada vez que se intentara navegar en la Internet ) este troyano o mejor, la familia de troyanos que nacieron para hacer un eficiente DNS Change se especializo, pasando por modificar los mecanismos de configuración en los sistemas afectados hasta concentrarse en lo mas importante, la base que realmente traduce y redirecciona el tráfico de la red, los Gateway y Routers. En este punto el malware ya se encuentra bastante posicionado, perfeccionado y especializado, se concentra en atacar los vulnerables routers que tenemos en nuestras casa (ajam, el aparatico con todos esos bombillitos parpadeantes) o en las empresas ( muchísimas entidades se vieron afectadas por este malware, afecto alrededor de 100 países en todo el mundo y se diseminó de una forma alarmante), en este punto ya nadie se salva, todo el equipo que tenga acceso a través de un Gateway – Router – Red comprometido, se vera afectado por el DNS Changer que guardaba su secreto y que les revelo a continuación.

 

DNS Changer. Y por qué tanto alboroto?

Teniendo en cuenta la enorme calidad de estos últimos troyanos, se presentía que una mano negra estaba detrás de todos estos ataques, y si, resulta que el FBI después de alrededor de 5 años de intensa investigación en conjunto con importantes empresas de seguridad, dieron con el origen de los ataques siendo la compañía Rove Digital radicada en Estonia la empresa a la que se le atribuyó la inserción en mas de 4 millones de computadoras una variante del troyano en el 2007. Operando una enorme red de empresas fachadas que cobraban los dividendos obtenidos a raíz de la publicidad esta empresa logro amasar una enorme fortuna pero, como la obtuvieron? Sencillamente al redireccionar todo el tráfico de los equipos afectados a sus servidores ( alrededor de 100 sólo en Estados Unidos ) estos parecían como el origen de todas las interacciones comerciales y click's que los usuarios hacían a banners. Simple pero efectivo.

Ya para finales del 2011, y bajo el nombre clave “Operation Ghost Click” (demasiado creativos los del FBI) lograron desmantelar esta red, en estos momentos estos canallas no cobran dividendos por este tráfico y las personas involucradas fueron arrestadas, así que entonces? Por que todavía se habla del troyano?.

Resulta que el proceso de limpieza del rastro de este malware ha sido poco eficaz, se han dispuesto herramientas, la mayoría de empresas dedicadas a la seguridad ofrecen aplicaciones que ayudan a solucionar este chicharrón que se armó por todos lados pero aún hoy en día, se presume que al apagar y desconectar estos servidores DNS fraudulentos, los equipos afectados no podrán dirigir correctamente su tráfico hacia la Internet perdiendo su capacidad para conectarse a esta red, es por eso que se oye tanto alboroto por estos días, ya que el FBI ha anunciado que el 8 de Marzo de este año será la desconexión definitiva de esta malla de servidores.

En este punto y para terminar tan larga historia es hora de las moralejas...

Si bien es cierto que la mayoría de equipos afectados fueron windows ( por su enorme penetración, o por todas lar razones ampliamente conocidas ) en la actualidad, desde un reproductor MP3, una tablet, o lo que pueda conectarse a la Internet puede ser vulnerable a este Malware, solo necesita pasar su tráfico a un tramo de red afectado.

Los equipos de Apple tienen un sistema operativo derivado de Unix, así como lo es Linux, por tal motivo y a pesar de los enormes esfuerzos para hacer mas seguros y confiables estos sistemas, no se salvaron de ser posibles víctimas de estos troyanos.

Estar atentos a las noticias relacionadas con temas de seguridad nos pueden ayudar a tomar decisiones que puedan ayudar con nuestra seguridad informática.

Y por último, Don't feed the troll, no alimentemos el troll, abundan por doquier y se alimentan de nuestra necesidad de ayudar y explicar mejor sobre lo que entendemos, argumentar es bueno, pero luchar contra aquellos que basan su criterio mas en el fervor que en sus conocimientos es absurdo y desgastante.

Espero haber aclarado algo acerca del DNS Changer, incluyo algunos Links de donde encontré información relacionada y noticias al respecto

Herramientas para eliminar el troyano e información técnica del mismo

Un par de artículos excelentes acerca de todo el fenómeno DNS Changer

sábado, 3 de septiembre de 2011

Mi proyecto en LUA para mi NSpire

Bueno, estuve repasando las opciones que se me iban ocurriendo, y debo confesar que no fueron muchas las ideas que me llegaron, así que simplemente me decidí por algo que me ayudará en mi carrera y mi proyecto para desarrollar en LUA es una Calculadora IP, si… si.. ya se, quizás es algo muy sencillo, sin embargo nunca he escrito ningún programa en LUA, no conozco de algún IDE que soporte su sintaxis así que ando como limitado de herramientas, vamos a ver que tal me sale, es una bonita oportunidad para conocer este lenguaje y personalizar mi calculadora con alguna aplicación útil para mi.

martes, 23 de agosto de 2011

Proyecto–Concurso Nspire CX

Retomando este blog, me presto a participar en un concurso organizado por Aula Interactiva de Texas Instruments, y aprovechando el auge y la fuerza que empieza a tomar la plataforma NSpire de Texas Instruments, voy a intentar hacer algún programa que me permita aprender y por supuesto, ganarme una de las tres calculadoras Nspire CX Cas. Vamos a ver que tal me va programando en LUA, lenguaje que desconozco pero del que he oído buenas críticas y comentarios.

martes, 20 de enero de 2009

Nueva temporada de Java con Pasion! (with Passion!)

A la fecha están por empezar varios de los excelentes cursos que podemos encontrar en la Web de Java with Passion!, administrada por el señor Sang Shin, en este sitio podemos encontrar diversos cursos que abarcan la mayoría de las principales tecnologías relacionadas con este lenguaje de programación.

La mecánica del curso es muy sencilla y los requisitos son muy básicos también:

  • Debemos contar con una cuenta de correo electrónico
  • Debemos ser muy autodidactas
  • Debemos ser capaces de manejar contenidos en ingles

Los recursos técnicos se dan en la página principal de cada curso, por lo general, debemos contar con:

  • Un equipo que cuente con un JDK, actualizado de ser posible
  • Netbeans o cualquier otro IDE para desarrollo en Java

Además, para los cursos con tecnologías relacionadas con la implementación de sistemas en la Web, deberíamos contar con un servidor de prueba ya sea instalado localmente en nuestra computadora o que contemos con el acceso a uno remoto.

Para acceder a estos cursos basta con unirse a cualquiera de los grupos de Google que hay para cada curso enviando un correo electrónico en blanco a la dirección dada para ello.

Los cursos cuentan con un calendario, aunque en el sentido estricto de la palabra he podido ver que muchos han empezado antes de las fechas estipuladas con las tareas y trabajos necesarios, otros se unen cuando estos cursos ya han empezado, parece que no hay inconveniente con esto pero si es importante que los trabajos se envíen correctamente y antes de la fecha de finalización.

El flujo de correo puede ser alto, por eso recomiendo una cuenta de correo especial para este tipo de actividades, generalmente la cuenta personal no es apropiada para manejar estos contenidos, de igual forma el servicio de correo electrónico de Google (Gmail) es muy bueno para el manejo y visualización de listas de correo pero carece de funciones de organización y administración de correos en carpetas, lo que me parece una función muy importante y que está presente en los servicios de otros proveedores como Yahoo o Hotmail.

Bueno, solo queda visitar la página de Java with Passion! para enrolarnos en estas actividades, al final y de superar los ejercicios propuestos, obtenemos un certificado que nos acredita la participación y aprobación de estos cursos, vale la pena aclarar que estos certificados no tienen ninguna afiliación ni convenio con institución educativa alguna, así que son solo un reconocimiento por parte del Sr. Sing a nuestro esfuerzo y dedicación en la superación de los objetivos planteados.

Con la venia del Sr. Sing y de ser posible, pronto publicaré material relacionado con estos cursos en español.