10 formas de mejorar tu código

Enero 5, 2010 nachxs Deja un comentario

Revisando algo de informacion por la web, me tope con un blog muy interesante en donde su tematica basicamente es Java, SOA y Webservices, el blog es de Julio Cesar Perez Arques este señor publico un post que la verdad me parece muy interesante sobre todo para nosotros lo que estamos en el campo del desarrollo de software. Justamente el post se llama “10 formas de mejorar tu código”. el cual nos da una breve descripcion con 10 consejos de como podemos atacar a nuestro codigo para poder mejorarlo sobre todo con opiniones en base a experiencia. Siempre es bueno tener diferentes conceptos y opiniones en nuestro aprender diario, asi que los invito a revisarlo.

Abuelita Tecno

Diciembre 11, 2009 nachxs 1 Comentario

Ya quisiera que mi Abuelita bailara como esta señora :)

Categorías:Humor, Musica, Personal, Videos Etiquetas:, ,

Cloc – Count Lines of Code

Diciembre 8, 2009 nachxs Deja un comentario

Como su propio nombre lo dice, Cloc esta es una pequeña aplicación que te hace un conteo rápido de tus lineas de código escritas mostrándote de manera ordenada según los tipos de archivo y cantidad de código por tipo de archivo, esta pequeña aplicación esta desarrollado en Perl, y te sirve mucho en casos que tu estés desarrollando tus aplicaciones y tengas la necesidad de saber cuanto código has escrito. Particularmente a mi me ha servido mucho por temas laborales y bueno lo comparto con uds. por si alguno lo necesita. Dentro de lo destacable podemos mencionar a su soporte de una gran variedad de lenguajes de programación, puede contar lineas de código de archivos comprimidos con zip, tar, ear, jar, etc. corre sobre Linux, MacOS, FreeBSD, etc y hasta existe una versión para windows. Este es el resultado de scanear un sistema web que estoy desarrollando.

Categorías:Fedora, Linux, NetBeans, Personal Etiquetas:, ,

Ya es oficial, Chrome beta para Linux

Diciembre 8, 2009 nachxs Deja un comentario

Recien me entero que se acaba de liberar la version beta de Chrome para linux, y ya es oficial, para intalarlo solo basta con colocar en tu navegador la dirección http://www.google.com/chrome y te aparecera la opcion para instalarlo en tu sistema, actualmente veo que hay paquetes precompilados para las distribuciones Debian, Ubuntu, Fedora y openSuse para las arquitecturas de 32/64 bits, imagino que por el momento. En este caso lo estamos probando en Fedora

Probando Fedora 12 – Mi Escritorio Diciembre

Diciembre 8, 2009 nachxs Deja un comentario

Hace poco decidi probar Fedora en su versión 12, habia tenido muy buenos comentarios de unos amigos fedorianos sobre las grandes mejoras que han hecho los desarrolladores de esta distribución en estas ultimas versiones y la verdad he quedado totalmente satisfecho, he tenido mejores resultados con el driver de video para mi ATI que en Ubuntu u openSuse por ejemplo, las cuales son las distribuciones que comunmente uso. Recientemente le acabo de hacer unos cambios a mi gnome y este es el resultado

Me base en la apariencia que se muestra en este post en Ubuntulife y por si desean el wallpaper que utilizo me lo descargue de wallcoo.com, unos de los sitios con muy buenos fondo de pantalla.

Que tal tira de ociosos

Diciembre 4, 2009 nachxs 1 Comentario

Definitivamente hay gente que no tiene mucho o nada que hacer por lo que veo :)

Categorías:Humor, Personal, Videos Etiquetas:, ,

Alien USB

Diciembre 4, 2009 nachxs 2 comentarios

Revisando el blog Ubuntulife, me topo con este post en donde se muestra una simpática manera de tener un usb, resulta que ahora podemos adornar nuestro escritorio con este Alien USB, el cual tiene una particularidad algo graciosa, resulta que al conectarlo a tu PC, este abre la boca y saca la lengua la cual se enciende con una luz roja, algo geek  tal vez  pero definitivamente yo me regalare uno para navidad :) . Por si están interesados según en la página donde se promociona cuesta algo de 43.90 dolares.

Categorías:Humor, Noticias, Personal Etiquetas:, ,

Un break: Video Musical

Diciembre 1, 2009 nachxs 1 Comentario

Categorías:Musica, Personal, Videos Etiquetas:, , ,

Tutorial: Una forma rápida de usar Ibatis, Postgresql con Netbeans 6.7

Diciembre 1, 2009 nachxs 3 comentarios

Este es un pequeño tutorial en el cual trato de mostrar una forma rápida de como utilizar IBatis desde java para manejar persistencia de datos utilizando nuestro favorito postgresql como gestor de base de datos. Como siempre he dicho este blog no pretende mostrar la parte teórica, para eso ya existen varios sitios en donde podemos leerlo de forma debida, solo tratamos de mostrar el trabajo de manera rápida y practica. Bueno  manos a la obra; lo primero que debemos tener en cuenta que trabajaremos con la versión 2.3.4 de IBatis, hago esta aclaración debido a que actualmente existe una versión beta 5 de esta librería y aparentemente estas difieren por lo menos a la hora de la instancia y en la configuración de los xml, eso lo veremos en un post mas adelante. Una vez validado lo anterior, lo que debemos tener es la base de datos creada, para este caso por temas didácticos, utilizaremos la base de datos IBatisDemo la cual contiene una tabla llamada Productos con los campos mostrados en la imagen

Una vez creado la BD y la tabla, creamos el proyecto web al cual lo llamaremos WebAppIBatis y lo que haremos seria crear la siguiente estructura:

Como podran observar, ire indicando que significa cada archivo y mostrando el contenido para asi se pueda entender. Si se fijan en la parte de librerías ya tenemos anexadas las librerías de IBatis y el driver jdbc para postgresql respectivamente. Bueno según la estructura observamos un clase llamada ProductoBean, esta clase contiene los atributos necesarios para poder almacenar un registro de tipo Producto y asi ser mas manipulable, entonces la clase contendra la siguiente estructura:

package org.demo.bean;
/**
*
* @author nachxs
*/
public class ProductoBean {

    private int id_producto;
    private String desc_pro;
    private int stock;
    private String ind_vig;

    public int getId_producto() {
       return id_producto;
    }

    public void setId_producto(int id_producto) {
      this.id_producto = id_producto;
    }

    public String getDesc_pro() {
      return desc_pro;
    }

    public void setDesc_pro(String desc_pro) {
      this.desc_pro = desc_pro;
    }

    public int getStock() {
      return stock;
    }

    public void setStock(int stock) {
      this.stock = stock;
    }

    public String getInd_vig() {
      return ind_vig;
    }

    public void setInd_vig(String ind_vig) {
      this.ind_vig = ind_vig;
    }
}

Luego nos ubicamos en los archivos Conexion.xml que es el encargado de los parámetros de conexión a la base de datos  y tambbien el encargado de las referencias a todos los archivos xml que se puedan crear para mapear los consultas sql , como es el caso de Producto.xml el cual es el encargado de mapear las consultas sql que usaremos en este caso para la obtención de la información respectivamente:

Conexion.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE sqlMapConfig
   PUBLIC "-//ibatis.apache.org//DTD SQL Map Config 2.0//EN"
   "http://ibatis.apache.org/dtd/sql-map-config-2.dtd">
<sqlMapConfig>
 <transactionManager type="JDBC" >
   <dataSource type="SIMPLE">
    <property name="JDBC.Driver" value="org.postgresql.Driver"/>
    <property name="JDBC.ConnectionURL" value="jdbc:postgresql://localhost:5432/IBatisDemo"/>
    <property name="JDBC.Username" value="postgres"/>
    <property name="JDBC.Password" value="sistemasx"/>
   </dataSource>
 </transactionManager>
 <sqlMap resource="org/demo/xml/Producto.xml" />
</sqlMapConfig>

Productos.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE sqlMap
   PUBLIC "-//ibatis.apache.org//DTD SQL Map 2.0//EN"
   "http://ibatis.apache.org/dtd/sql-map-2.dtd" >
    <sqlMap namespace="Productos">
        <typeAlias alias="Productos" type="org.demo.bean.ProductoBean"/>

        <select id="getProducto" parameterClass="int" resultClass="Productos">
          SELECT id_producto, desc_pro FROM "Productos" WHERE id_producto = #value#
        </select>

        <select id="getProductos" resultClass="Productos">
          SELECT id_producto, desc_pro FROM "Productos"
        </select>
    </sqlMap>

Como podemos observar en este último archivo, estamos mapeando las consultas sql que utilizaremos, vemos que cada tag select tiene un id que es el identificador de cada consulta, tiene un parameterClass, el cual este nos ayuda a enviar parámetros de entrada ya sea datos primitivos como int, long, etc. así como también clases ya sea un bean por ejemplo y el resultClass el cual permitirá almacenar las respuestas a la consultas, en este caso estamos usando ProductoBean, el cual lo asociamos a un alias llamado Productos, según como se indica en el archivo Productos.xml.

Una vez terminado de revisar los archivos mostrados anteriormente, lo que hacemos ahora es crear un Servlet, el cual lo utilizaremos para poder invocar a nuestra consultas, según sea el caso; para esto haremos lo siguiente:

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package org.demo.action;
import com.ibatis.common.resources.Resources;
import com.ibatis.sqlmap.client.SqlMapClient;
import com.ibatis.sqlmap.client.SqlMapClientBuilder;
import java.io.IOException;
import java.io.PrintWriter;
import java.io.Reader;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.demo.bean.ProductoBean;

/**
 *
 * @author nachxs
 */

public class Consultar extends HttpServlet {

    /**
     * Processes requests for both HTTP <code>GET</code> and <code>POST</code> methods.
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */

    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();
        try {
            String resource = "org/demo/xml/Conexion.xml";
            Reader reader = Resources.getResourceAsReader(resource);
            SqlMapClient sqlMap = SqlMapClientBuilder.buildSqlMapClient(reader);
            String idPro = request.getParameter("id_pro");
            ProductoBean producto = (ProductoBean) sqlMap.queryForObject("getProducto", Integer.parseInt(idPro));
            out.println("<table border='1'>");
            out.println("<tr>");
            out.println("<td>ID</td>");
            out.println("<td>Producto</td>");
            out.println("</tr>");
            out.println("<tr>");
            out.println("<td>" + producto.getId_producto() + "</td>");
            out.println("<td>" + producto.getDesc_pro() + "</td>");
            out.println("</tr>");
            out.println("<table>");
        } catch(Exception ex)  {
            out.println(ex.getMessage());
        } finally {
            out.close();
        }
    }

    /**
     * Handles the HTTP <code>GET</code> method.
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */

    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        processRequest(request, response);
    }

    /**
     * Handles the HTTP <code>POST</code> method.
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        processRequest(request, response);
    }

    /**
     * Returns a short description of the servlet.
     * @return a String containing servlet description
     */
    @Override
    public String getServletInfo() {
        return "Short description";
    }// </editor-fold>
}

Como podrán darse cuenta dentro de la variable resource tenemos la ruta en donde se encuentra ubicado el archivo xml con los parametros de conexion, en este caso Conexion.xml, y luego en esta linea sqlMap.queryForObject(“getProducto”, Integer.parseInt(idPro)) podemos observar como invocamos a la consulta que se encuentra dentro del archivo xml Productos.xml, identificado con getProducto enviando como parametro de entrada el código de producto y eso se recepciona en ProductoBean para luego ser leido mas facilmente.

Ahora solo nos queda ir al archivo index.jsp y solo invocar al servlet de esta manera tan simple:

<%--
    Document   : index
    Created on : 28/11/2009, 10:10:19 AM
    Author     : nachxs
--%>

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
   "http://www.w3.org/TR/html4/loose.dtd">
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>JSP Page</title>
    </head>
    <body>
        <form action="Consultar" method="POST">
            ID Producto: <input type="text" name="id_pro" />
            <input type="submit" value="Consultar" />
        </form>
    </body>
</html>

y prácticamente eso seria todo, como verán no es nada difícil, y mas o menos esto seria el resultado:

Orgullo Peruano!!

Diciembre 1, 2009 nachxs 1 Comentario

Pocas veces tenemos lauros tan grandes para nuestro Perú, entonces de todas maneras tenia que escribir un post, sobre todo para felicitarlos por el gran esfuerzo mostrado por parte de estos dos hermanos en el campeonato mundial de ajedrez, dado que un titulo de esta magnitud no lo obtiene cualquiera, desde ya mis mas sinceras felicitaciones a los hermanos Cori, a los padres definitivamente y las empresas privadas por el gran esfuerzo que tuvieron que realizar para que estos genios vayan a este mundial, sobre todo por el esfuerzo económico dado que según tengo entendido se necesita mucho dinero para ir a este tipo de eventos y ya que nuestras famosas autoridades deportivas y mas aun el gobierno NO aportan en nada con estos logros, con mucho mas razón las felicitaciones del caso.