19 junio 2009

Patrones de Diseño

Como programadores diariamente estamos resolviendo problemas, a menudo, estos problemas los resolvemos de forma artesanal, no digo que este mal la forma de resolverlo, el problema esta en que invertimos tiempo en pensar en el “Como” lo resolveremos, además de que si queremos modificar o reutilizar este código, este se nos puede complicar porque nunca analizamos o diseñamos muy bien la solución del problema, y sumariza que si trabajamos en equipo, que es muy a menudo, tendremos que explicarle a nuestros compañeros como resolvimos nuestro problema.

Los patrones de diseño tratan la mayoria de estos problemas comunes que se nos presentan como programadores y que fuerón previamente resueltos, provados y documentados de forma exitosa por personas u organizaciones que anteriormente se enfrentarón a estos incovenientes.

En esta ocacion entraremos en el detalle de estos patrones de diseño, los cuales nos simplificaran la forma en el que crearemos y deseñaremos software. Los detalles de las implementaciones son llamadas estrategias.

El grupo de GoF clasificaron los patrones en 3 grandes categorías basadas en su PROPÓSITO: creacionales, estructurales y de comportamiento.

  • Creacionales: Patrones creacionales tratan con las formas de crear instancias de objetos. El objetivo de estos patrones es de abstraer el proceso de instanciación y ocultar los detalles de cómo los objetos son creados o inicializados.

  • Estructurales: Los patrones estructurales describen como las clases y objetos pueden ser combinados para formar grandes estructuras y proporcionar nuevas funcionalidades. Estos objetos adicionados pueden ser incluso objetos simples u objetos compuestos.

  • Comportamiento: Los patrones de comportamiento nos ayudan a definir la comunicación e iteración entre los objetos de un sistema. El propósito de este patrón es reducir el acoplamiento entre los objetos.
  • 25 diciembre 2006

    Por fin Luz v1.0 disponible


    Despues y de mucho especular por fin ve la luz el " Sistema Luz v1.0". Sistema de Gestión de Empleados, para la Agencia Comercializadora Prestadora de Servicios PRECOE.

    Este proyecto que originalmente se inicio hace como 1 añ o y medio, y que fue liberado a inicios del añ o 2006, pero con algunas, por no decir muchas fallas, pero fue remotado hace 3 meses para corregir estos errores y agregar mejoras.

    Este proyecto surguio como resultado de proyecto de tesis, con el fin de aprender y aplicar la tecnología java orientado a una aplicación stand-alone y que por fin y de muchos desvelos sale la versión estable, esta a disposición de cualquier persona en código fuente, desarrollado totalmente en java, utilizando como motor de base de datos MySQL 5.0.

    NOTA: Antes de continuar, quiero decir que este Sistema lo desarrolle completamente en java, cuando apenas no sabia nada, así que si observas el código notaras que la forma de programar es muy " inocente" , en cierto sentido y que en algunas otras es muy redundante, mi justificación es la de provar cual era la mejor forma de hacer las cosas y en realidad me he llevado varias sorpresas. (lo digo porque ya teniendo un poco de experienciay estudiar lo que hice al inicio veo y reconosco mis errores, pero no me arrepiento de haberlos hecho porque ya se como no se deben hacer las cosas, el problema radica en que me salto el diseñ o " vista-modelo-controlador" , solo en el último módulo en el de " configurar propiedades" lo hago y lo es ya que fue el último que hice dentro del sistema, pero no por eso el sistema deja de tener su chiste o su dificultad, y sus trucos)
    Primeramente descargaremos el fuente Luz
    v1.0



    También tendra que descargar el script de la creación de la base de datos Luz-db.sql
    Vea la documentación de Sistema Luz v1.0

    Dentro de las caracteristicas y mejoras que se hicierón son:

  • Manejo de roles

  • Altas, bajas y modificación de empleados

  • Busqueda de empleados

  • Impresión de información

  • Gestión de usuarios

  • Y mejoras en el fuente


  • Mas adelante continuae con detalles sobre la configuración e instalación
    del sistema, si tienes alguna duda o interes hasmelo saber.

    30 junio 2006

    Conectividad con la API JDBC

    La siguiente pequeña tutoría consiste en mostrar y enseñar
    lo que te piden en una entrevista de trabajo, como caso practico para evaluar
    el conocimiento que traes como programador.

    Básicamente te piden que realices una conexión con una base de datos
    ya sea en Oracle, MySQL o Server SQL, e inmediatamente te piden insertar, modificar,
    consultar y eliminar datos de algunas tablas.

    Bueno, empecemos de una vez, para terminar temprano, pero primero me imagino
    que querras ver el código fuente, asi que lo podras descargar de AQUI.


    PRIMER PASO: debemos de declarar algunas variables que nos serán útiles:

    private Connection conexion;// Representa la conexión con una BD.

    private Statement stmSql;//ejecutar una sentencia SQL

    private String sControlador; //Contiene el nombre del controlador.

    private String sUsuario;//Contiene el nombre de usuario.

    private String sContasenia;//contraseña para el acceso a la BD

    private String sURL;//Contiene el url para realizar la conexión

    private String sDB;//Nombre de la BD para trabajar

    De todas estas variables las mas importantes son la de Connexion , Statement, ya que en estas radican la funcionalidad de la conexión a la BD.


    SEGUNDO PASO: crear un constructor sin parámetros, que nos permitirá realizar una conectividad a una BD por default, el constructor de la clase le asignaremos, las rutas y/o parámetros que permitirán la conexión a la BD

    public Conexion(){

    sControlador = "com.mysql.jdbc.Driver";

    sDB = "dbluz";

    sUrl = "jdbc:mysql://localhost/"+sDB;

    sUsuario = "root";

    sContrasenia = "moster03";

    }

    Observe como la variable sControlador se le asigna el nombre del controlador, en este caso la conexión se realiza con MySQL, el nombre cambia dependiendo
    de la BD a conectarse, se puede configurar una conexión especificando
    la clase del driver y la URL de la conexión para la base de datos seleccionada.
    Abajo tiene un listado con las clases de driver, las URLs de conexión
    y los ficheros .jar del driver para las bases de datos más utilizadas:


    DB2

    Clase Driver : COM.ibm.db2.jdbc.app.DB2Driver

    URL de Conexión:: jdbc:db2:<database>

    Fichero .jar/.zip: db2java.zip

    Sybase

    Clase Driver : com.sybase.jdbc2.jdbc.SybDriver

    URL de Conexión:
    dbc:sybase:Tds:<host>:<port>/<database>

    Fichero .jar/.zip: jconn2.jar

    Oracle

    Clase Driver : oracle.jdbc.driver.OracleDriver

    URL de Conexión: jdbc:oracle:thin:@ <host>:<port>:<sid>

    Fichero .jar/.zip: classes12.zip

    SQLServer

    Clase Driver : com.microsoft.jdbc.sqlserver.SQLServerDriver

    URL de Conexión: jdbc:microsoft:sqlserver://localhost:1433

    Fichero .jar/.zip: mssqlserver.jar, msbase.jar, msutil.jar

    PostgreSQL

    Clase Driver: org.postgresql.Driver

    URL de Conexión: jdbc:postgresql://<server>:<port>/<database>

    Fichero .jar/.zip: postgresql.jar


    NOTA:

    • Los drivers o conectores para la JDBC generalmente son ofrecidos por
    las mismas empresas que ofrecen los servicios de las BD, por ejemplo MySQL la
    ofrece en el siguiente dominio: http://www.mysql.com/products/connector/j/

    TERCER PASO: Crear otro constructor que realice la conexión a la BD,
    nótese que dependiendo de la información que le enviemos, este
    constructor nos permitirá realizar la conexión con cualquier BD.

    public Conexion(String sControlador, String sDB, String sUsuario,

    String sContrasenia, String sUrl){

    this.sControlador = sControlador;

    this.sUsuario = sUsuario;

    this.sContrasenia = sContrasenia;

    this.sUrl = sUrl+sDB;

    }

    Dependiendo de la funcionalidad de tu código, tu eliges que tipo de
    constructor elegir, si tu sabes que tipo de BD utilizar y no cambia utiliza
    la primera, si por el contrario tu necesitas estarte conectando en varias BD
    como Oracle o Serverr SQL y no estés creando clases para realizar las
    conexiones para cada una te recomiendo la segunda.

    CUARTO PASO: el siguiente paso es crear un método que nos permita abrir
    la conexión a la BD.

    private void vodAbrirConexion(){

    try{

    Class.forName(sControlador).newInstance();

    conexion = DriverManager.getConnection(sUrl,sUsuario,sContrasenia);

    stmSql = conexion.createStatement();

    System.out.println("Conexion Creada con Exito '_'");





    Este método es muy importante ya que en este crearemos las instancias
    correspondientes para realizar la conexión.

    Nótese como en el método pasado se invoca al método forName
    de Class que devuelve una Clase, especificada con el controlador, garantizando
    un objeto de la clase del controlador. En seguida creamos una instancia de la
    clase Connection por medio de la clase DriverManager que obtiene la conexión
    por medio del método getConnection con los atributos de la url de la
    BD, el nombre del usuario de la BD y por ultimo la contraseña del usuario,
    que administra la BD, creamos otra instancia de la clase Statement en base a
    la instancia Connection antes creada por su método createStatement, esta
    instancia de Statement es con la que estaremos interactuando hasta que se cierre
    la conexión a la BD para realizar las distintas sentencias SQL. Finalmente
    creamos las excepciones que nos permitirán verificar que se halla realizado
    con eficacia la conexión.

    QUINTO PASO: creamos un método que nos permita cerrar la BD.

    public void vCerrarConexion(){

    try{

    if(stmSql!=null){

    stmSql.close();

    ….

    }

    if(conexion!=null){

    conexion.close();

    ……

    }

    }

    catch(SQLException eSQL){/*NO HACER NADA*/}

    }

    Nótese como cerramos tanto el objeto de Statement como el objeto de Connection.

    SEXTO PASO: finalmente creamos un método que nos permitirá ejecutar
    sentencias SQL, impactando en la BD ya sea para Seleccionar, Borrar, etc.

    Como se observa el siguiente método nos permitirá ejecutar sentencias.

    private ResultSet rstSetConsulta(String sConsultaSql){

    ResultSet rsConsulta = null;

    try{

    rsConsulta = stmSql.executeQuery(sConsultaSql);

    }

    ….

    Observe que esta función nos regresa un objeto de tipo ResultSet, así
    como recibir como parámetro una consulta sql, que será procesada
    por el método executeQuery, de la clase Statement.

    SEPTIMO PASO: Finalmente nos queda crear un método que nos permita ejecutar
    actualizaciones en la Base de Datos, ya sea un insert, update o delete.

    private void vodModificar(String sIntruccionSQL){

    try{

    stmSql.executeUpdate(sIntruccionSQL);



    FINAL. Finalmente nos queda más que jugar con estos métodos y
    hacer nuestras consultas o actualizaciones en la base de datos tan complejas
    como se nos sea posible en base a nuestros objetivos dentro del sistema.

    Si observa en la clase Conexión.java, se crea un método llamado
    executaConsulta, que utiliza al método rstSetConsulta, y este realizar
    la consulta en especifico, dándole un tratamiento especial a los valores
    obtenidos, no importando si es de tipo int, String float, etc, ya que son obtenidos
    como Objetos, finalmente son pasados a una variable de tipo StringBuffer, pudiéndose
    también pasar en un Vector, una lista, arreglo, etc. Notese que ademas
    nos traen los metadatos es decir los nombres de los campos en la Base de datos.

    En el main, se realizan las pruebas pertinentes, si observa solo invocamos
    a la clase y en esta invocamos metos y/o funciones pasándole solamente
    las sentencias SQL, correspondientes y estos se encargan de lo demás,
    haciendo la transacción a la BD mas fácil.

    26 junio 2006

    Que es AJAX?

    Buscando nuevas técnologias para el desarrollo web me he encontrado con un articulo bastante bueno que introduce un nuevo término, que para mi es nuevo, y fastante interesante AJAX.


    ¿Porque es tan interesante AJAX? Porque en realidad AJAX no es una tecnología, sino la unión de varias tecnologías que juntas pueden lograr cosas realmente impresionantes como GoogleMaps , Gmail el Outlook Web Access ( ref ) o algunas otras aplicaciones muy conocidas: AJAX , en resúmen, es el acrónimo para Asynchronous JavaScript + XML y el concepto es: Cargar y renderizar una página, luego mantenerse en esa página mientras scripts y rutinas van al servidor buscando, en background, los datos que son usados para actualizar la página solo re-renderizando la página y mostrando u ocultando porciones de la misma.


    La traducción completa a continuación:


    Ajax : Un Nuevo acercamiento a las Aplicaciones Web

    Por Jesse James Garret t

    February 18, 2005


    Si algo del actual diseño de interacción puede ser llamado glamoroso, es crear Aplicaciones Web. Después de todo, ¿cuando fue la ultima vez que escuchaste a alguien hablar de diseño de interacción de un producto que no esté en la Web? (Okay, dejando de lado el iPod). Todos los nuevos proyectos cool e innovadores están online.


    Dejando de lado esto, los diseñadores de interacción Web no pueden evitar sentirse envidiosos de nuestros colegas que crean software de escritorio. Las aplicaciones de escritorio tienen una riqueza y respuesta que parecía fuera del alcance en Internet. La misma simplicidad que ha permitido la rápida proliferación de la Web también crea una brecha entre las experiencias que podemos proveer y las experiencias que los usuarios pueden lograr de las aplicaciones de escritorio.


    Esa brecha se está cerrando. Hechenle una mirada a las Google Suggest. Mira la forma en que los términos sugeridos se van actualizando a medida que uno tipea casi instantáneamente. Ahora mire Google Maps. Hace zoom. Usen el cursor para agarrar el mapa y navegarlo un poco. Otra vez, todo sucede casi instantáneamente, sin esperar que las paginas se recarguen.


    Google Suggest y Google Maps son dos ejemplos de un nuevo acercamiento a las aplicaciones Web, que nosotros en Adaptative Path hemos denominado AJAX . El nombre es una abreviación o acrónimo para Asynchronous JavaScript + XML, y ello representa un cambio fundamental en que es posible en la Web.


    Definiendo Ajax

    Ajax no es una tecnología. Es realmente muchas tecnologías, cada una floreciendo por su propio mérito, uniéndose en poderosas nuevas formas. AJAX incorpora:


    • presentación basada en estándares usando XHTML y CSS;

    • exhibición e interacción dinámicas usando el Document Object Model ;

    • Intercambio y manipulación de datos usando XML and XSLT ;

    • Recuperación de datos asincrónica usando XMLHttpRequest ;

    • y JavaScript poniendo todo junto.


    El modelo clásico de aplicaciones Web funciona de esta forma: La mayoría de las acciones del usuario en la interfaz disparan un requerimiento HTTP al servidor web. El servidor efectúa un proceso (recopila información, procesa números, hablando con varios sistemas propietarios), y le devuelve una pagina HTLM al cliente. Este es un modelo adaptado del uso original de la Web como un medio hipertextual, pero como fans de “The Elements of User Experience” sabemos, lo que hace a la Web buena para el hipertexto, no la hace necesariamente buena para las aplicaciones de software.


    figura 1

    Figura 1: El modelo tradicional para las aplicaciones Web (izq.) comparado con el modelo de AJAX (der.).


    Este acercamiento tiene mucho sentido a nivel técnico, pero no lo tiene para una gran experiencia de usuario. Mientras el servidor esta haciendo lo suyo, que esta haciendo el usuario? Exacto, esperando. Y, en cada paso de la tarea, el usuario espera por mas.


    Obviamente, si estuviéramos diseñando la Web desde cero para aplicaciones, no querríamos hacer esperar a los usuarios. Una vez que la interfaz esta cargada, porque la interacción del usuario debería detenerse cada vez que la aplicación necesita algo del servidor? De hecho, porque debería el usuario ver la aplicación yendo al servidor?


    Como es diferente AJAX

    Una aplicación AJAX elimina la naturaleza “arrancar-frenar- arrancar-frenar” de la interacción en la Web introduciendo un intermediario -un motor AJAX - entre el usuario y el servidor. Parecería que sumar una capa a la aplicación la haría menos reactiva, pero la verdad es lo contrario.


    En vez de cargar un pagina Web, al inicio de la sesión, el navegador carga al motor AJAX (escrito en JavaScript y usualmente “sacado” en un frame oculto). Este motor es el responsable por renderizar la interfaz que el usuario ve y por comunicarse con el servidor en nombre del usuario. El motor AJAX permite que la interacción del usuario con la aplicación suceda asincrónicamente (independientemente de la comunicación con el servidor). Así el usuario nunca estará mirando una ventana en blanco del navegador y un icono de reloj de arena esperando a que el servidor haga algo.


    Figura 2

    Figura 2: El patrón de interacción sincrónica de una aplicación Web tradicional (arriba) comparada con el patrón asincrónico de una aplicación AJAX (abajo).


    Cada acción de un usuario que normalmente generaría un requerimiento HTTP toma la forma de un llamado JavaScript al motor AJAX en vez de ese requerimiento. Cualquier respuesta a una acción del usuario que no requiera una viaje de vuelta al servidor (como una simple validación de datos, edición de datos en memoria, incluso algo de navegación) es manejado por su cuenta. Si el motor necesita algo del servidor para responder (sea enviando datos para procesar, cargar código adicional, o recuperando nuevos datos) hace esos pedidos asincrónicamente, usualmente usando XML, sin frenar la interacción del usuario con la aplicación.


    Quien está usando Ajax

    Google está haciendo una significativa inversión en el acercamiento Ajax. Todos los grandes productos que Google ha introducido en el ultimo año (Orkut, Gmail, la última versión de Google Groups, Google Suggest, y Google Maps ) son aplicaciones Ajax. (Para datos más técnicos de estas implementaciones Ajax, lean estos excelentes análisis de Gmail, Google Suggest, y Google Maps.) Otros están siguiendo la tendencia: muchas de las funciones que la gente ama en Flickr dependen de Ajax , y el motor de búsqueda de Amazon A9.com aplica tecnologías similares.


    Estos proyectos demuestran que Ajax no es solo técnicamente importante, sino también prácticos para aplicaciones en el mundo real. Esta no es otra tecnología que solo trabaja en un laboratorio. Y las aplicaciones Ajax pueden ser de cualquier tamaño, de lo más simple, funciones simples como Google Suggest a las muy complejas y sofisticadas como Google Maps.


    En Adaptive Path, estuvimos haciendo nuestro propio trabajo con Ajax en los últimos meses, y estamos descubriendo que solo raspamos la superficie de la rica interacción y respuesta que que las aplicaciones Ajax puede proveer. Ajax es un desarrollo importante para las aplicaciones Web, y su importancia solo va a crecer. Y como hay tantos desarrolladores que ya conocen como usar estas tecnologías, esperamos ver mas empresas y organizaciones siguiendo el liderazgo de Google en explotar la ventaja competitiva que Ajax provee.


    Mirando adelante

    Los mayores desafíos al crear aplicaciones Ajax no son técnicas. Las tecnologías centrales son maduras, estables y bien conocidas. En cambio, los desafíos son para los diseñadores de estas aplicaciones: olvidar lo que creemos saber sobre las limitaciones de la Web, y comenzar a imaginar un rango más amplio y rico de posibilidades.

    Va a ser divertido.

    14 abril 2006

    !!De OpenSuSe 10 a SuSe 10!!!


    Cuando se descarga SuSe 10 desde los mirrows y se instala, este no viene completo por desgracia por las (venditas o malditas, como lo quieras ver) legislaciones o licencias. Aunque OpenSuSe esta conformado enteramente por software libre y de fuenta abierta, existen paquetes que son exclusivos de empresas u organizaciones, por lo cual (un ejemplo), al reproducir DVDs violan la ley de EUA "Digial Millennium Copyright Act", asi como tambien al reproducir archivos mp3 pueden violar las legislaciones de otros paises por derecho de autor, etc. Asi que por lo antes mencionado es de logico saber que es necesario instalar otros programas para reproducir archivos mp3, poder visualizar paginas con flash, windows media player, realplayer, acrobat reader, o reproducir DVDs, etc. Fuentes desde el YaST: ejecutamos el YaST, nos pide contraseña y accedemos como root, dentro de la categoria de Software seleccinamos el icono de "Cambiar Fuentes de Intalacion", nos abre una ventana en el cual nos muestra depositos para la instalacon de software, en esta desactivamos los depositos de CD o DVD que tengas seleccinados (despues podras activarlos si deseas volver a instalar desde los discos de intalacion) por medio del boton "Activar o desactivar". A continuacion agregaremos unas direciones de internet que fungiran como nuevos depositos de intalacion (por lo cual te recomiendo que tengas una buena conexion de internet). Preciona el boton Agregar despues en el menu realizaras lo siguiente: Selecciona HTTP y agrega las siguientes direcciones de internet en campo "Nombre del servidor" y "Directorio de Servidor" colocaras respectivamente:

    packman.iu-bremen.de
    suse/10.0

    Realizaras lo mismo para las siguientes direcciones solo cambiando el tipo de envio (FTP en lugar de la pasada que era HTTP)

    mirrors.kernel.org
    opensuse/distribution/SL-10.0-OSS/inst-source-java

    mirrors.kernel.org
    opensuse/distribution/SL-10.0-OSS/inst-source

    mirrors.kernel.org
    suse/i386/10.0/SUSE-Linux10.0-GM-Extra

    Es indispensable agregar las 4 fuentes pasadas, esto es para que en el momento que querramos instalar un paquete, este sea reconocido y ubicado para su instalacion, cerramos este procedimiento haciendo click en "Finalizar"

    Instalando Paquetes:
    Empezemos por java; para dar soporte al lenguaje Java, tanto para aplicaciones como para el plug-in del navegador para las applets web, ve a YaST, luego selecciona "Instalar/Desinstalar software". En el campo de busqueda teclea "sun" y da click en "Buscar". Surgiran paquetes en el panel derecho. Da click en el recuadro al lado derecho de los siguientes paquetes: (java-1_5_0-sun) (java-1_5_0-sun-alsa) (java-1_5_0-sun-jdbc) (java-1_5_0-sun-plugin)
    Si eres programador en Java, por supuesto que desearas instalar al final algunos de estos paquetes. Cuando termines de seleccionarlos, da click en Aceptar. Cuando se hayan instalado da click en Finalizar y regresaras a la ventana de YaST. Tu computadora sera capaz de correr programas Java y applets.

    De nuevo ve a YaST "Instalar/Desinstalar software". En el campo de busqueda teclea "w32codec-all" y da click en Buscar. Un simple paquete debe aparecer en el panel de la derecha. Da click en la casilla del lado derecha del paquete, con este bastara para dar soporte y poder reproducir archivos mp3.

    Borra la busqueda previa y teclea "acroread" y da click en Buscar. Da click en en la casilla a la derecha del paquete que aparece en el panel de la derecha. Deberas aceptar los terminos de la licencia de uso del softwaer para continuar.

    Ahora busca "flash". Selecciona la casilla y acepta la licencia de uso..

    En seguida busca por "realplayer". Da click en la casilla al lado del paquete. Solo necesitas el paquete "RealPlayer" los otros paquetes resultado de la busqueda no son necesarios.

    Busca mplayer (este es mi favorito ya que tiene soporte para una amplia gama de archivos multimedia para repoducir), da click en el paquete de la casilla del paquete para seleccionarlo a instalar. No necesitas los otros paquetes que resultan de la busqueda.

    Busca por kaffeine-mozilla (este nos sirve para poder visualizar desde el navegador mozilla archivos multimedia) y selecciona el paquete en el panel de la derecha.

    Cuando hayas hecho todo esto da click en Aceptar. Otros paquetes van a ser requeridos para ser instalados y debes dar click en "Continuar" para permitir que se cumplan estas dependencias. Despues de esto, todos los paquetes que seleccionaste seran instalados y tu nevegador FireFox tendra todos los plug-ins necesario para navegar cualquier pagina. Tambien tendra la habilidad de reproducir archivos de musica en formatos MP3. Una ventana aparecera al terminar de instalar los paquetes, solo da click en "Finalizar" para regresar a la ventana de YaST.

    Reproduccion de DVDs
    Tendras que descargar las fuentes para instalacion para SuSE del programa de decoficacion para los DVD tu mismo. Ve al menu de inicio y selecciona internet y abre un navegador de internet, luego, copia y pega la siguiente URL en espacio "Direccion" del navegador:

    http://download.videolan.org/pub/libdvdcss/1.2.9/rpm/libdvdcss2-1.2.9-1.i386.rpm

    El navegador te preguntara que deseas hacer con el archivo y debes indicarle que deseas guardarlo. La forma mas facil para instalar un archivo rpm es: grabandolo en un directorio y cuando este descargado abre tu carpeta personal con Konqueror y da clic en el archivo. Esto abrira un dialogo que describe el paquete y en la parte superior izquierda hay un boton que dice "Instalar paquete con YaST". Esto abrira una ventana que pedira la contraseña de root, tecleala y se abrira la instalacion de paquetes de YaST, cuando lo indique solo presiona el boton "Finalizar" y el paquete estara instalado.

    En seguida debes modificar el reproductor de video y asi puedas ver los DVDs. Mientras el original tiene esta funcionalidad integrada, Novell la ha removido para hacer mas dificil a las personas la reproducción de DVDs en sus computadoras.
    Ve a Yast y selecciona "Instalar/Desinstalar Software". y busca "xine". cerca de una docena de paquetes aparecerán en el panel derecho. Da click derecho en los paquetes de clor azul (deben ser por lo menos dos) y selecciona Actualizar del menu desplegable. Da click en Aceptar y luego en Continuar para aceptar los paquetes extras necesarios. El software actualizado se descargara y se instalara correctamente. Cuando termine te preguntara para instalar mas software o para finalizar, de click en esta ultima.

    Ahora puedes reproducir peliculas comerciales en DVD en tu computadora. Una ventana aparecerá cuando pones una pelicula DVD en ls unidad. Si te pregunta para reproducir la pelicula con Kaffeine, da click en Si y se ejecutara directamente el reproductor de video. En algunos casos SuSE detectara el DVD como de datos y te preguntara para abrirlo con K3B. En ese caso da click en Ignorar y luego ve al menú de inicio y ve a Multimedia, luego a Reproductor de Video y daclick en Reproductor Multimedia (Kaffeine). Cuando Kaffeine inicie da click en el icono "Abrir DVD".

    Y eso es todo lo que necesitas para hacer de SuSE un Ambiente Operativo de escritorio superpoderoso. Aparte de ejecutar binarios de Windows, OpenSuSe 10.0 puede hacer todo lo que puede hacer Windows XP y mas.

    08 marzo 2006

    Instalando J2SE(TM) and NetBeans(TM) IDE Bundle NB 5.0

    Actualmente acabo de comprar una nueva PC e instale Suse 10.0 en mi equipo, basicamente descargando las imagenes de la pagina de http://en.opensuse.org/Download y despues quemandolas, despues se instala los componentes que necesitemos y listo.

    Talvez en otro momento me tome el tiempo para describir los pasos uno por uno, lo prometo, pero el objetivo de este tema es de instalar J2SE 5.0(TM) conjuntamente con NetBeans(TM) IDE Bundle NB 5.0.

    Primero descargamos el archivo de la pagina de Download Center aqui tenemos varias opciones para descargar como:
    1. J2EE incluyendo JDK 5.0 (para desarrollo empresariales)
    2. JDK 5.0 incluyendo JVM (la maquina virtual de java)
    3. Y por lo ultimo J2SE(TM) and NetBeans(TM) IDE Bundle NB 5.0 (lo que buscamos)
    Existen otras opciones como documentacion, actualizaciones entre otros elementos.

    Despues de elegir lo que estamos buscando elegimos el tipo de SO en donde deseemos instalar, ya sea linux, solaris o windows. Lo elegimos y guardamos.

    Instalar


    Puedes instalar J2SE 5.0 JDK software y NetBeans IDE en el directorio de tu eleccion, no se necesita tener acceso como root.
    Despues de descargar el archivo y verificar su integridad el siguiente paso es el de checar que nuestro sistema tenga los requisitos necesarios:
  • PC Pentium III a 500 MHz (no he checado aun con la familia de AMD)
  • 512 MBytes en RAM
  • 415 MBytes para la instalacion.
    Abrimos alguna terminal de nuestra preferencia y navegamos al lugar donde descargamos el archivo, tecleamos:
    chmod 755 jdk-1_5_0_06-nb-5_0-linux.bin (esto es para otorgar los permisos necesarios para hacerlo ejecutable).
    Despues seguimos con el instalador tecleando:
    ./jdk-1_5_0_06-nb-5_0-linux.bin
    Los siguientes pasos son intuitivos y solamente llenamos lo que nos pida:
  • Aceptar la licencia del software para continuar.
  • Especificar el directorio en donde se instalaran los componentes
  • Cuando se finalize la instalacion puedes verificarla dentro del archivo ($NETBEANS/_uninst/install.log) para verificar que se instalo correctamente.

    NOTA: Si se instala en un directorio como /usr/local que es generalmente donde se instalan los programas, debes tener acceso como root.

    Desinstalar


    Desinstalar NetBeans IDE 5.0:
    Navegar al directorio _uninst donde se instalo NetBeans, teclea:

    ./uninstaller (para ejecutar el desinstalador)

    Desinstalar J2SE JDK 5.0:
    Navegar al directorio _uninst donde se instalo J2SE JDK , teclea:

    ./uninstall.sh (para ejecutar el desistalador de JDK)

    Espero que con lo descrito se halla especificado todo y no tenga ninguna duda, en caso que la exista no dudes en plasmarla.
  • 28 febrero 2006

    Instalando MySQL sobre Linux


    Lo que se busca en este articulo es como obtener e instalar MySQL, sobre plataforma linux, en este caso SUSE 10.0, para este proposito se lista a continuacion los pasos basicos:

    1) Determinar si la plataforma es la adecuada para la ejecucion de MySQL; para este proposito he verificado que la mejor plataforma para correr MySQL es sobre una arquitectura x86 es usando Linux SuSe con un kernel de 2.4 o 2.6. aunque tambien se puede correr sobre una amplia gama de SO's, entre los que se destacan los de la familia Microsoft(Win 9x, Me, NT, 2000, XP, Server 2003) yo la tengo sobre XP en otro equipo incluso.

    2) Elejir la distribucion para instalar; MySQL es liberado dentro de una amplia gama de versiones y formatos que debera elegir dependiendo entre otras cosas, su plataforma, (hardware y software), version de MySQL asi como el servicio (servidoy y/o cliente) que son ofrecidas para este proposito en distintos formatos. Puedes elejir de una distribucion en un formato pre-empaquetada llamada binario (preecompilado) o un formato de distribucion en codigo fuente. Cuando este en duda utilize la distribucion binaria es mucho mas facil de instalar.
    Recomiendo ampliamete utilizar un archivo RPM que es un archivo de tipo binario orientado para un tipo de SO en especifico, que es el que utilizaremos en este caso. En el apartado SuSe Linux Enterprise RPM downloads descargamos tanto el Servidor como el Cliente. Se recuerda que utilizo una arquitectura x86 por lo cual debe de checar que sea orientado para el suyo por ejemplo si fuera el caso para una Mac SO X.

    3) El siguiente paso ya descargados los dos archivos es verificar su integridad, eso lo podemos lograr utilizando el comando md5sum para cada archivo que se descarge; ejemplo:

    shell > md5sun MySQL-client-standard-5.0.18-0.sles9.i586.rpm
    a4f87b5aee4e3b090ed92c9edaa36f7a md5sun MySQL-client-standard-5.0.18-0.sles9.i586.rpm

    Esto es para verificar que despues del chequeo nos muestre una cadena de caracteres hexadecimales y compararla con los que se nos otorga en la pagina de descarga del archivo, tiene que ser igual de lo contrario descargala de nuevo. Existen otros metodos pero este es el mas funcional.

    4) Instalar y Harrancar MySQL; es aqui donde entra la parte mas emocionante y exitante de todo este proceso y donde espero hacerme explicar lo mas claro y preciso posible, los pasos que se deben o que he hecho para instalar MySQL en mi equipo fueron los siguientes.
    a) Instalaremos los paquetes RPM que descargamos previamente para ejecutar MySQL, al hacer esto se instala el servidor como el cliente con los requermientos minimos con el comando rpm, ejemplo;
    shell > rpm -i MySQL-server-standard-5.0.18-0.sles9.i586.rpm
    shell > rpm -i MySQL-client-standard-5.0.18-0.sles9.i586.rpm
    NOTA: al ejecutar esto MySQL se instala por default generalmente bajo la carpeta /usr/bin, por lo cual para ejecutar lo anterior se bebe tener acceso como root.
    b) Lo siguiente es inicializar las tablas de MySQL, ejecutar el servidor y estar seguro que funcione perfectamente, asi como configurar una contraseña.
    Para generar las tablas ejecutamos el script mysql_install_db
    Despues solo nos hace falta arrancar MySQL mediante el script mysqld_safe
    Por ultimo lo unico que nos hace falta es configurar una contraseña, que despues explicare dentro de los comandos basicos de MySQL, por lo pronto solo teclea mysql en el shell y listo. Si no existe ningun problema entraras sin ningun problema.
    NOTA; he tratado y abusado de ser muy breve por lo cual si se me pasaron algunos pasos o no quedo claro algun punto no dudes en comentarlo.
    Diviertanse.