Conexion a BD en Access desde Java

| 2 comentarios

Desde hace días traía en la mente una vaga curiosidad que no es nada nueva para muchos pero sí para el autor de este blog, nada mas que acceder a datos dentro de una base de datos en Microsoft Access desde un entorno Java, pues siempre hay necesidad de hacer que los datos sean persistentes y que mejor si están dentro de una BD relacional, que para fines didácticos sería bueno empezar con unas cuantas tablas y pensando que no habra un ambiente transaccional muy concurrente y que la base de datos está centralizada.(Si ya sé que tu usas algún potente DBMS).

Lo cual resulto muy fácil pues en java para comunicarnos con la Base de datos haremos uso de la API JDBC™. El cual es un driver muy especifico para cada DBMS que se desea manipular, por ende el catalogo de driver es muy amplio.[1]

Para el ejemplo que hice eche mano del puente JDBC-to-ODBC el cual me permite conectar a Microsoft ODBC (Open Database Connectivity) en java lo encontramos como (sun.jdbc.odbc.JdbcOdbcDriver), extra a esto el controlador ODBC debe existir en el equipo cliente (En el inicuo mundo Windows XP se accede a través de la opción de herramientas administrativas) y normalmente requiere la configuración de la fuente de datos ODBC puesto que la mayoría de los sistemas de gestión de bases de datos requieren que el usuario inicie sesión antes de acceder a la misma. Es por esta razón que el metodo getConnection() de la claseDriveManager está sobrecargado para soportar las diferentes métodos de acceso.

Aquí un formulario realizado

Formulario para alta y bajas

Para el ejemplo utilice una clase la cual se puede ver aquí [2]

Formas de desarrollar una aplicación en C#

| 2 comentarios

Tenia tiempo que no posteba un tema de tipo técnico y cuando tenia el tiempo no sabía que postear, es por esa razón que se me ocurre explorar otras plataformas de desarrollo, como .NET y por supuesto usando el caballito de batalla de C#, las razones por la que he decidido explorar esta plataforma me las reservo, así que para fines educativos en este blog me limitare a hablar de las diversas formas en las que se pueden crear aplicaciones en C#, obviamente la mejor herramienta a utilizar dependerá del contexto del problema (No querrás hacer una clase muy pequeñita en un Visual studio 2008, cuando lo puedes hacer en un editor de texto sencillo).

Objetivos

  • Eliminar la falsa creencia que tienen algunos que para desarrollar sus aplicaciones sobre .NET deben comprar una licencia de Visual Studio.
  • Mostrar algunas herramientas para desarrollar en .NET usando programas libres u OpenSource descargables.
  • Ampliar el panorama para poder desarrollar aplicaciones en C#

Introducción

El kit de desarrollo para NET Framework 3.5 (SDK) proporciona numerosos compiladores, utilidades de línea de comandos, white papers, ejemplos de código, bibliotecas de clases, y una completa documentación del sistema. Este puede ser descargado de [1]. NOTA:Si optas por instalar alguna versión del Visual Studio evitaras instalar el SDK de forma manual.

Desarrollo

Desarrollando la aplicación haciendo uso del CSC (Desde ambiente Win)

Como se habrán dado cuenta, si tiene un IDE no es necesario andar ejecutando código desde la linea de comandos de windows, pero piense las razones por las que ha compilado un .java desde esa misma consola, entonces ¿Hay razón de usarlo con un .cs? ¿Si o no?.

Si ha decido hacerlo de esta manera, no hay que olvidar que el compilador puede recibir parámetros además del nombre de la clase, como por ejemplo:


/out Esta opción es usada para especificar el nombre del assembly a crear. Aunque por default el nombre es el mismo que el archivo .cs
/target:exe Puede omitirse pues esta por default.
/target:library Crea un archivo DLL(Biblioteca de enlaces dinámicos).
/target:module Crea un Modulo.
/target:winexe Para aplicaciones basadas en interfaz de usuario, impide que se muestre una consola durante la ejecución
/r:namespace1 Sustituir namespace1 por el/los namespace que se desea referenciar

Por ejemplo C:\>csc /target:exe fuente.cs
C:\>csc /r:System.Windows.Forms.dll *.cs


Desarrollando la aplicación con el TextPad

Obviamente no solo se puede utilizar para C#, pero bueno se puede descargar desde [2]. Para poder sentirse realmente cómodo con este programa hay que configurar la impresión estética para el lenguaje a utilizar y para eso hay que indicarle que escoja csharp.syn(Si se desea trabajar con C#) de la lista que tiene, luego hay que especificar de acuerdo a nuestras necesidades que parámetros queremos que le pase al compilador cada vez que compilemos el código e indicarle la ruta para llegar al compilador. Si con esto aún no esta conforme diríjase a [3] para bajar algún plug-ins que mejor le acomode (Wow, no sabia que tenia un autocompletador de código para Java!!).

Desarrollando la aplicación con SharpDevelop

Descargable desde [5], el cual es un IDE OpenSource para los lenguajes como C#, VB y Boo (Microsoft y Mono).

  • Compatible con .Net framework SDK 3.5
  • Diseño muy parecido a los IDE's Microsoft
  • Completamente integrable con NUnit y NAnt (herramientas para el testeo de software)
  • Utilidades para diseñar la BD
  • Diseñador Visual de formularios
  • Utilidades para convertir código de C# a VB
  • Útil para plataformas cruzadas


Notepad++_screen

Desarrollando la aplicación usando MonoDevelop

Se ha echo un fork para SharpDevelop llamado MonoDevelop el cual es un entorno de desarrollo integrado libre y gratuito, diseñado primordialmente para C# y otros lenguajes .NET como Nemerle, Boo, y Java (via IKVM.NET), basicamente es mas enfocado para el desarrollador en Mono, el cual es descargable desde [7].

MonoDev

Desarrollando la aplicación con el Notepad++

Para descargarlo checa este link [4], al parecer no hay mucho que decir de este, todo esta en la página web y se define como: "un editor gratuito de código fuente, que soporta varios lenguajes de programación y se ejecuta en MS Windows... basado en el componente de edición Scintilla, escrito en C++ utilizando directamente la API de win32 y STL... se distribuye bajo los términos de GPL de GNU."

Notepad++_screen

Desarrollando la aplicación con C# 2005/2008 Express edition

Desde el verano de 2004, Microsoft introdujo una nueva línea de IDE's "Express", los cuales están descargables desde aquí[6]. Estos son completamente gratis debido a que es apoyado y mantenido por Microsof (¿Alguna vez dije que los estudiantes no tenemos dinero?)

Características destacadas:

  • Soporte para Windows Presentation Foundation (WPF) y XAML
  • IntelliSense
  • Capacidad para programar Xbox 360 y juegos de PC, utilizando Microsoft XNA Game Studio

Desarrollando la aplicación con Visual Studio 2005/2008

La razón por la cual deje esta opción a lo ultimo es muy clara, pues es el IDE que tiene un costo (Un buen costo diría yo) y al cual varios aspiran a usar. Si el lector ha llegado hasta esta parte sabrá entonces cuando sacar la artillería pesada para realizar ese ambicioso proyecto de SW posiblemente a nivel empresarial.

Conclusión
Espero haber cumplido los objetivos que me plantee al principio.

Bibliografía

[1] http://msdn.microsoft.com/es-es/netframework/default.aspx
[2] http://www.textpad.com
[3] http://www.textpad.com/add-ons/
[4] http://notepad-plus.sourceforge.net/es/site.htm
[5] http://www.icsharpcode.net/OpenSource/SD/
[6] http://www.microsoft.com/express/
[7] http://www.monodevelop.com/Main_Page

¿Por que Satanas le ha echado el ojo a las redes sociales?

Hoy en día existen cientos de sitios de redes sociales, aunque la mayoría comparten algunas funcionalidades básicas, con diferentes grados de dificultad, como Twitter, Pownce, y los componentes sociales de los sitios de blogs y foros o como las de características escabrosamente complejas, tal es el caso de Facebook y MySpace.

El lector se preguntará el por qué de semejante titulo, y aunque la frase anterior suena muy rara, la pregunta tal vez seria ¿Por qué?, ¿por que la delincuencia anda detrás de las redes sociales, (micro,mini)blog y medios de comunicación social en la red?, a caso es por culpa del descuidado uso que se le ha dado a la WEB 2.0, ¿O sera por el promiscuo trafico de información personal del usuario hacia esta?, o por la emoción que sienten al aceptar una solicitud de una persona que no conocen o responder a una serie de mensajes. Aunque bueno la gente esta muy acostumbrada a mostrar sus vulnerabilidades en la web.

De lo anterior surgen mucha soluciones, algunas muy burlonas como los que dicen que hay que validar todas las idioteces que sube el usuario antes de que se publiquen.

¿Y en que afecta?
  • Existen literalmente cientos de redes sociales y por ende miles de usuarios(objetivos pues)
  • Cada vez abundan más niños emos en estas (Broma)
  • La rápida utilización y aprobación de esta para el trabajo
  • Todo esto nos acelera cada vez más a un apocalipsis en la web 2.0(Bueno no del todo)

¿Y Como funcionan?

La respuesta mas breve seria a través de conexiones y entidades.

Una entidad es simplemente algo que puede compartir conexiones con otras entidades. Pero ojo aquí, pues podría ser un robot, o tal vez podría ser una aplicación, en el mejor de los casos podría ser un ser humano. En fin si tiene una lista de amigos, es una entidad.

La clave aquí es que hay una relación entre dos entidades que implica un cierto grado de confianza, y cada entidad crea un grado de "N" conexiones.

Las conexiones y enlaces entre las entidades son la infraestructura de las redes sociales, como es natural gran parte de los vectores de ataque en las SocNet's procede de aquí.

Cultura de la Confianza "Trust"

La construcción de una plataforma basada en contenidos creados por el usuario y las aplicaciones, significa que desde el comienzo hay una relación de confianza básica de los usuarios (suena lógico).

Ya para terminar

Las redes sociales son grandes objetivos debido a que son grandes grupos de personas. Y las grandes colecciones de personas por lo general se traduce en un gran potencial de víctimas. Además las redes sociales también proporcionan un entorno en donde las víctimas tienen más probabilidades de llegar a un atacante, y todo por la una cultura de confianza.

Mucho cuidado pues.

Estado del malware en el telefono celular durante el año 2007

Las primeras infecciones en los teléfonos móviles fueron encontradas al final del 2004. Desde entonces, cientos de diferentes virus han surgido, la mayoría de ellos dirigidos a smartphones que ejecutan el sistema operativo Symbian.

Estos virus utilizan nuevos vectores de propagación, como mensajes multimedia y Bluetooth. Pero, ¿Por qué esto es principalmente un problema con Symbian?¿Por qué Windows Mobile o los dispositivos Blackberry no han sido el blanco?¿Que hace a los recientes teléfonos Symbian más seguro?¿Por qué la mayoría de las infecciones están sucediendo en Europa y en el sudeste de Asia? ¿Y qué sucederá después?.

Palabras de Mikko Hypponen
Jefe Oficial de Investigación de F-Secure.
Una de las 50 personas más importantes en la web en marzo de 2007 por la revista PC World
.


Alarmantes revelaciones ¿no?, pues con este panorama empiezo la traducción de la conferencia realizada durante el blackHat 2007, destacando puntos muy interesantes y agregando notas de consideración personal.

blackhat

Los virus en los teléfonos móviles no es de ciencia ficción, y en los Smartphones tampoco. Mientras los celulares se están convirtiendo en smartphone capaces de descargar programas de Internet, compartir software de intercambio el uno con el otro a través de las conexiones de corto alcance vía Bluetooth, el uso de las comunicaciones mundiales con el servicio de mensajes multimedia(MMS) y el uso de las tarjetas de memorias,entre otras nuevas capacidades esta creando una nueva plataforma para el reinado y proliferación de virus.

En junio de 2004 se encontró el primer gusano escrito específicamente para los smartphone. Conocido como Cabir, este fue una prueba de concepto, que fue escrito por un grupo de programadores de virus aficionados, conocido como 29A. Este no causaba daños directos al aparato infectado, simplemente intentaba copiarse a otro teléfono mediante la apertura de una conexión Bluetooth. En los siguientes años surgieron nuevas versiones mucho mas dañinas de virus, en algunos casos des habilitaban por completo el celular, asignaban contraseñas aleatorias a las tarjetas de memoria o enviaban una gran cantidad de mensajes a otros teléfonos causando grandes perdidas monetarias,robo de información privada e inclusive la inutilización del teléfono.

Como se puede observar en tan solo tres años, el número de virus destinados a teléfonos inteligentes pasó de 1 a más de 350, una tasa de crecimiento que es aproximadamente paralela al surgimiento del primer virus para PC desde el año de 1986.(Ver tabla.)


Plataforma 2004 2005 2006 2007
--------------------------------------------
Palm 3 3 3 3
PocketPC 2 2 3 4
Symbian 22 141 337 364
J2ME 0 0 2 2
--------------------------------------------
Total 27 146 345 373


Ahora bien, en el mundo pudieran existir cerca de 2 billones de teléfonos móviles(cifra muy reservada), de los cuales la mayoría de estos son de desarrollo cerrado, con Sistemas operativos propietarios que los hace inmune a la infección viral, sin embargo los consumidores están abandonando estos "aparatejos" por nuevas generaciones de smartphone que corren un sistema operativo más amigable, con navegadores web, envio/recepcion de emails, que contienen ranuras para tarjetas de memoria flash y con Bluetooth. Cada una de estas características ofrece un conducto para la propagación del malware.

Por ejemplo en el caso de la propagación viral mediante el uso de las conexiones Bluetooth, podría ser alrededor de 10 metros a la redonda o más, ¿Y si estoy viajando en el metro de la ciudad? pues ni se diga.

El reemplazo de la población de teléfonos celulares por smartphones esta creciendo rápidamente (En algunos países claro está), pues cada generación de estos dispositivos agrega más funcionalidades a un PC, desde videocámaras, navegación GPS, reproductores de MP3, estos son subsidiados en parte por las operadoras de red(por eso el abaratamiento de estos), pues al tener nuevas capacidades aumenta el consumo de servicios por parte del usuario, se estima que si esto sigue así para el año 2009 habrá cerca de 350 millones de unidades en servicio en el mundo.

Hablando en términos medios estos aparatos están siendo adaptados mas rápidamente en economías emergentes, donde las personas propietarias de una computadora son relativamente bajas, por ejemplo la investigación de Canalys, una consultora, encontró que los smartphones en venta durante el primer trimestre de 2007 creció dos veces más rápido en el este y este medio de Europa que en el oeste.

En el contexto Windows

Una lección de los virus de PC es que cuanto mayor sea el objetivo por atacar, mayor será la atracción para los programadores infames. La gran mayoría del malware sólo funciona con el ubicuo sistema operativo Microsoft Windows, por la misma razón, casi todos los troyanos y gusanos liberados para los móviles son para Symbian, pues corre en la mayoría de los smartphone en el mundo - incluyendo los hechos por Nokia, Samsung,Sony Ericsson y Motorola.

¿Cómo es posible que Windows Mobile O PocketPC no sean el blanco del malware?

Buena pregunta. La baja venta en el mercado lo explica, aunque después del todo ¿Será?...

Symbian explica que el malware móvil se encuentra más prevalecientemente en Europa y sureste de Asia, donde Symbian es comun, pero es menos frecuente en América del Norte, Japón o Corea del Sur.Las operadoras celulares en América del Norte han extendido sus mercados de forma más equitativa entre las distintas plataformas mientras que el mercado japones y koreano esta dominado por teléfonos basados en Linux.

¿Y ahora que sigue?

Mientras tanto el servicio que provee el mercado norteamericano esta introduciendo "billeteras/carteras móviles", con los cuales los clientes podrán utilizar sus teléfonos para transferir fondos desde sus cuentas a otras personas mediante el envío de un formato especial de mensajes de texto. Paypal tiene un servicio parecido también.

Con los sofisticados virus para celulares las capacidades tecnológicas y financieras de estos están en riesgo.Ninguna de las 360 formas del malware explota las vulnerabilidades seguridad en los teléfonos.

Algunos de los fabricantes mas grandes de teléfonos han modificando las normas de la industria de los microcircuitos en el interior de los teléfonos , para hacerlos mas seguros contra la obtención de datos sensibles en la memoria del aparato.

La comunidad (refiriéndose a Black/white Hat) comúnmente en búsqueda de seguridad ha sido pro activa en plataformas moviles, mirando vulnerabilidades en el código y diseño del sistema. Nosotros esperamos encontrar estos agujeros para que puedan ser parchados, antes de que los malos lo descubran en esta inevitable y constante batalla.

blackhat

HTML en componentes Java

| 1 comentarios

Algunos componentes que heredan de javax.swing.JComponent de java que despliegan un String como parte de su GUI, permiten para su formato el uso de los tags HTML. La utilidad de esto es el mezclar un formato para el texto a mostrar (color, tamaño, estilo, uso de viñetas) o por que no también el mostrar una imagen.[How to Use HTML in Swing]

Lo que no se puede hacer

  • Manejo de eventos del mouse a través del HTML
  • Imagenes embebidas
  • Para que los hyperlink funcionen como tal se debe de hacer uso de otras API como JHyperlink las cuales están en proceso de prueba/desarrollo.Algunos desarrolladores prefieren agregar MouseListener al componente en especifico, obtener la URL y hacer la llamada al navegador por default (Obviamente todo esto a pata :S)

Desde luego que hay componentes java para el soporte de HTML, pero su uso depende del fron-end a desarrollar.[JHyperlink][foro1][foro2]


Precauciones de uso

Vaya tampoco crean que van a implementar todos los tags habidos y por haber, al parecer solo soporta algunos tags definidos hasta la versión 3.1 del HTML No es muy bueno al momento de manejar complejos HTML

Recomendaciones

  • Es importante que los tags que inserten se encuentren debidamente cerrados y correctamente usados, pues podrían generar una excepción ya sea en compilación o en ejecución. Lo cual les traería mayor dolor de cabeza.
  • Uso de JXHyperlink. Hay extensiones del Swing como [SwingX] las cuales tiene componentes como JXHyperlink.


Ejemplo

import javax.swing.JLabel;

/**
* Fecha de creación: 19/07/2008
* @author Gabriel Martínez Nájera
*/
public class Test {
JLabel method() {
String link = "http://www.explotandocodigo.blogspot.com";
String anun = "" +
"Visita: " +
"" + link + "" +
"
Contacto:gmartinez...gmail.com" +
"";
JLabel jlblAnuncio = new JLabel(anun); return jlblAnuncio;
}
}

El cual ya implementado sobre un componente podría quedar así:

HtmlExampleJava

La utilidad de JavaFX script para las RIA(Resumen)

| 1 comentarios

Hoy en día las aplicaciones basadas en la web están llegando a un tope en lo referente a complejidad y rendimiento, a la vez los propietarios de contenidos demandan un mayor nivel de participación (a través de vídeo de alta definición o funciones avanzadas de interactividad con el usuario). Los desarrolladores piden algo nuevo (Sin necesidad de aprender otras plataformas, más bien utilizando el bagaje de conocimientos ya adquiridos para no sobrecargarlos con nuevos requisitos). El navegador web quizás sea un modelo de programación fabuloso en lo que a accesibilidad se refiere, pero resulta bastante endeble a la hora de utilizar aplicaciones enriquecidas o sin conexión.

Estos y otros factores florecen el despliegue de aplicaciones de contenido rico, pues estas deben llegar a una mayor cantidad de usuarios y a la totalidad de dispositivos, ¿Por qué? pues el mercado debe cubrir las exigencias no solo de los usuarios de PC's sino también el de dispositivos mobiles.

Por último, no nos engañemos: en la Web 2.0, el valor está en los datos, no en la aplicación. Y los datos son de ustedes.
Jonathan Schwart'z


Java Puzzle #1

| 3 comentarios

Revisando los apuntes que tomé durante el SUN Tech Days, vi un ejemplo de java puzzle que Raghavan "Rags" Srinivas mostró a los asistentes, ejemplo del cual he aprendido tambien.

Pero ¿Que opinan ustedes?¿Cual es el resultado?


int distance = 0;
while( (-1 << distance)!=0 )
distance++;
System.out.println(distance);

Tips:
  • Estudie
  • Relajese
  • Opine y fundamente la respuesta.


Resultado del acertijo [Answer]