Bienvenido a Java Mexico

Java México es una comunidad de desarrolladores mexicanos en el lenguaje Java.

Este sitio es colaborativo, automáticamente al registrarte obtienes un Blog para compartir tus conocimientos o información acerca del lenguaje. Antes de publicar en tu blog o los foros por favor lee los lineamientos de publicación.

Para dudas y problemas con respecto al lenguaje Java puedes visitar los Foros de Discusión.

¿Utilizas algún estandar de programación?

¿Cómo es el estándar que sigues? ¿De qué se trata mas o menos?

9a. Reunión de SpringHispano.org, Grails.org.mx y JavaMexico.org

A todos los miembros de comunidades y personas interesadas en Desarrollo de Software, les hacemos la cordial invitación a que asistan a la 9a. Reunión organizada por springhispano.org y grails.org.mx, el día Sábado 3 de Octubre del 2009 a las 10:00 a.m.

La agenda del día es la siguiente:

* "Patrones de Integración Empresariales con Apache Camel" por Domingo Suarez Torres (@domix) En esta charla se presentara una introducción a los Patrones de Integración Empresariales, y a Apache Camel
* "Introducción a Griffon" por Andres Almiray (@aalmiray) Charla en la cual hablara de como desarrolar aplicaciones con el lenguaje Groovy y el framework de desarrollo para Swing, Griffon.

El lugar de la reunión es en:

Ave. San Lorenzo 1009 Piso 4. Col. del Valle, México, D.F.

El registro es importante que se realice en Coetus, ya que es requerido saber la cantidad de asistentes a la reunión. La pagina de registro es: http://www.coetus.info/coetus/events/detail/12

Como nota adicional, queremos agradecer a quienes han asistido a reuniones anteriores por su asistencia y apoyo, en especial a Erick Camacho(@ecamacho), Isaac Ruiz(@rugi), Marco Antonio(@markitox), Andrés Valdez(@avaldini) y Rodolfo Velasco (@rvelascor), por el soporte que nos han brindado para la realización de las reuniones con el fin de que la comunidad crezca.

ATTE
Springhispano.org, grails.org.mx
Los esperamos...

(Código) Utilizando java.io.File

Que tal a todos, bueno pues esta es mi primera aportación respecto a código fuente. Realmente es algo bastante sencillo, y me sirvió para ordenar mis archivos de música, no hace grandes cosas, pero al menos a mi me ha servido para resolver mi problema en particular, y digamos, que para no desperdiciar este pequeño código (así como algunos no deseamos desperdiciar la comida, por decir algún ejemplo análogo) ya que pensaba en eliminarlo, pensé que tal vez a alguien le podría servir de referencia.

Primeramente, entraré en detalle de cuál la problemática que intentaba resolver con este pequeño código: Normalmente ordeno mis albums de música en una carpeta con el nombre del artista y dentro de esa misma carpeta, encarpetaba individualmente cada uno de los albums del mismo artista. Y así tengo cientos de artistas y con sus respectivos albums. Hasta que un día pensé que era difícil navegar por los archivos de mp3, ya que tenía que estar entrando y saliendo a través de múltiples carpetas y decidí mejor poner en raíz todos los albums de todos los artistas con el siguiente formato para que así los archivos no estén navegando como una "sopa de albums": artista - [] album (Y entre los corchetes opcionalmente poner el año en que se creo el album, claro, eso tendría que ser manualmente e independiente de este pequeño programa, por que esa información, no la tengo para todos mis archivos).

Ahora bien aquí les copio y pego el código:

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

package albums;
import java.io.File;

/**
 *
 * @author cfpmx
 */

public class Main {

    /**
     * @param args the command line arguments
     */

    public static void main(String[] args) throws java.io.IOException {
        // TODO code application logic here
        File raiz = new File( "artistas" );

        String[] raizdir = raiz.list();

        for( String nomArtista : raizdir ) {
            File avance = new File( "./artistas/" + nomArtista );

            for( File nomAlbum : avance.listFiles() ){
                String renom = nomArtista + " - [] " + nomAlbum.getName();
                System.out.println( renom );
                File renombrar = new File(  renom );
                nomAlbum.renameTo( renombrar );
                System.out.println( nomAlbum.getName() );
            }

           
        }
    }

}

Este programa lo he creado con netbeans, cree un directorio "artistas" en el proyecto y por default ahí pegué las carpetas de los artistas que contenían los albums. Creo que esto es todo, si tienen dudas o problemas al ejecutarlo, no duden en preguntarme y finalmente, no acepto críticas pero si comentarios, ya que este código como les mencioné anteriormente fue EXPRESS y definitivamente le podemos componer, quitar o añadir las cosas que se nos venga en mente y mi única intensión fue en que probablemente a alguien le pudiera servir tal vez para fines didácticos.

Hasta pronto, y muchos saludos.

Atentamente, cfpmx.

PD: Les dejo el proyecto: http://cid-23c5625615d3fbdb.skydrive.live.com/self.aspx/.Public/javamexi...

¿Tienes alguna certificación de Java?

¿Cuál es? y ¿Cómo lo lograste?, ¿Cuánto tiempo te llevó la preparación?

Super Happy Dev House Querétaro

Este fin de semana será la segunda edición del Super Happy Dev House en Querétaro.

JavaMexico.org participa como organizador y patrocinador de este evento cuyo objetivo es impulsar una cultura de creatividad y desarrollo, que sea a la par divertida y favorezca el networking.

¿Qué es?

El Super Happy Dev House es un evento no exclusivo dirigido a personas creativas y curiosas interesadas en la tecnología. Compartimos conocimiento, exploramos la tecnología y hacemos colaboraciones ad hoc. Ven y diviértete, construye, aprende y conoce personas nuevas. Esto se llama Cultura Hacker y estamos aquí para impulsarla.

¿Cómo funciona?

Llegas, tomas el lugar que más te guste y te instalas. Tienes 12 horas para acabar un proyecto, idea o lección. Comienzas a trabajar y convives con la gente que te rodea. Seguramente en los primeros 20 minutos ya estarás platicando con nuevas personas sobre temas que te interesan. Si quieres ponerte los audífonos y concentrarte está bien, si quieres salir a platicar con alguien está bien, si quieres relajarte o divertirte un rato está bien.

Si nunca has asistido y quieres más información acerca del evento, te recomendamos que visites esta, esta página y este wiki.

¿Qué necesito para participar?

Simplemente, muchas ganas de crear algo, aprender cosas nuevas, finalizar tu sueño guajiro de desarrollo.
Puedes llegar el mismo día y empezar a trabajar, aunque para que todos tengamos una idea sobre que trabajaran los demás lo mejor es que te registres en el wiki: http://shdhqro.pbworks.com/SHDHQro-2.

Cuándo?

Sábado 19 de septiembre, 2009.

A qué hora?

10am a 10pm.

Dónde?

Instituto Tecnológico de Querétaro. Sala de Usos Múltiples de la Biblioteca.

Los esperamos!!!!!

Habrá muchas sorpresas, la comida va por nuestra cuenta y hasta un descuento para el after-party en el restaurant-bar El Palco.

Tapestry 5, parte 3 - Componentes, inyección, internacionalización

Continuando con la cátedra de Tapestry 5, vamos a ver ahora tres cosas sencillas pero bastante ilustrativas del poder de este framework: cómo funcionan los componentes (unidades funcionales que pueden ir contenidas en páginas o dentro de otros componentes); inyección de objetos en páginas y componentes, y cómo internacionalizar una página o componente.

Los componentes son fragmentos de páginas que van dentro de otros componentes o dentro de páginas. Un ejemplo muy típico es este: queremos dar a nuestro sitio una apariencia uniforme, con hojas de estilos, una serie de ligas en la parte superior, algunos datos de copyright y demás en la parte inferior, etc. Todas las páginas deben salir igual. Esto en Tapestry se resuelve muy fácil con un solo componente que podemos llamar Marco, que además va a tener la peculiaridad de que va a envolver a su componente o página padre:

<!-- Marco.tml -->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
  xmlns:t="http://tapestry.apache.org/schema/tapestry_5_1_0.xsd"
  xmlns:p="tapestry:parameter">

Tapestry 5, parte 2 - Introducción Funcional

Pues bien, después de un largo recorrido histórico por el nacimiento de las herramientas para desarrollo de aplicaciones web, finalmente aquí pongo una introducción a mi framework favorito para web, Tapestry.

Cabe mencionar que voy a enfocarme solamente en la versión 5, que cambió radicalmente de la 3 y la 4. Reescribieron el framework por completo y se perdió toda compatibilidad con versiones anteriores, lo cual puede ser muy problemático para quienes tengan desarrollos en producción en esas versiones, pero para comenzar aplicaciones nuevas, hay muchísimas ventajas. No voy a mencionar las diferencias con versiones anteriores, solamente detallaré las características de esta nueva versión.

Tapestry 5, parte 1 - Introducción Histórica

Este es un primer intento de explicar las diferencias entre Tapestry y JSP. De hecho no solamente con JSP sino con los otros frameworks que son basados en el esquema de JSP. Esta vez voy a empezar con algo de historia, para ponernos en contexto de por qué Tapestry funciona como funciona (aunque tal vez no llegue a esa parte en este post).

En tiempos inmemoriales, a mediados de los 90's, cuando empiezan a popularizarse los web servers, solamente sirven contenido estático. Los primeros contenidos dinámicos fueron por medio de programas llamados CGI's, Common Gateway Interface, que consistía en que el web server le pasaba la URL y datos de la petición HTTP a un programa en UNIX, que lo leía del STDIN, y podía imprimir a STDOUT cualquier salida; ésta era devuelva por el web server al navegador. Esto es muy ineficiente porque cada petición ejecuta un programa y un programa medio complejo puede tardar bastante en ejecutarse, utilizar recursos, etc (por ejemplo cuando el CGI ya hacía conexiones a base de datos, etc).

ITSSMT

METODOS NUMERICOS

 import javax.swing.*;

    public class redondear {
       public static void main (String[] args) {
     
     
         double a=0,r=0,t=0;
         String ea;
     
         ea=JOptionPane.showInputDialog("Ingresa  el valor que deseas redondeary truncar  ");
         a=Double.parseDouble(ea);
         r=redon(a,3);
         t=trunc(a,3);
         JOptionPane.showMessageDialog(null,"el valor es: \n redondeo \t :"+r+" \n trucamiento:"+t," redondeo y truncamiento ",JOptionPane.INFORMATION_MESSAGE);
       
      }
   
       public static double redon(double val, int d){
         long factor = (long)Math.pow(10,d);
         val = val * factor;
     
         long tmp = Math.round(val);
     
         return (double)tmp / factor;
      }
   
       public static double trunc(double val, int d) {
       
         if(val > 0){
         
            val = Math.floor(val * Math.pow(10,d))/Math.pow(10,d);
         }
         else
            val = Math.ceil(val * Math.pow(10,d))/Math.pow(10,d);
         
         
       
      }
   
   
   }

Distribución de aplicaciones usando ONEJar

Existe una situación bastante común cuando se desarrolla un proyecto mediano/grande en Java, se empiezan a usar frameworks, bibliotecas, herramientas,..etc, lo cual implica tomar un JAR de aquí, otro JAR de allá y otro y otro y otro...

Por ejemplo, tengo un par de aplicaciones que dependen de por lo menos 10 JARs.

Lo que sigue es, como le hago para distribuir mi aplicación de una forma simple y efectiva de tal forma que mis usuarios no sufran ni se compliquen la existencia con situaciones de JAVA, JARs, CLASSPATHs... simplemente que usen la aplicación!.

Afortunadamente hay varias alternativas, una de ellas es la que comento a continuación.

Existe la posibilidad de empaquetar el JAR de una aplicación más todos los JARs de los cuales depende en un solo JAR, si, si, un único JAR.

De eso trata el proyecto ONE-JAR (que obvio el nombre, no? jajaja)

http://one-jar.sourceforge.net/

Distribuir contenido