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.

También puedes responder nuestra encuesta para saber en que estado vives!

Videotutoriales con AndroidStudio en Español

Este curso es para el desarrollo de apps con AndroidStudio, donde aprenderás cómo crear y diseñar tu proyecto, así como la interfaz de usuario. El único pre-requisito es que sepas programar en Java, dado que es el lenguaje principal de programación con Android. Todos los videos están explicados en español y son bastante fáciles de seguir, al ser altamente visuales.

http://www.youtube.com/playlist?list=PL8uMVSRxHi9C3T3EXvQ43hgtiGMHxD8AR

Se encuentran hasta el momento 40 capítulos en producción para este tutorial, cubriendo desde los temas más básicos hasta los más avanzados, como SQLite, trabajando con ORMLite como motor de perisstencia, Intents, fragmens, Fragments Dinámicos, Servicios, AsyncTasks, y habrá una sección especial implementando un proceso de sincronización con Apache Tomcat 8 y servicios web REST utilizando Jersey, Netbeans 8 y MySQL 5.6

ArnoldC ... un lenguaje de programación inspirado en Arnold Schwarzenegger

Se trata de un lenguaje de programación bastante curioso.

Este código esta en la página del proyecto.

hola.arnoldc

IT'S SHOWTIME
TALK TO THE HAND "¡Hola, mundo!"
YOU HAVE BEEN TERMINATED

Creamos el class y ejecutamos:

java -jar ArnoldC.jar hola.arnoldc
java hola


Links:

http://lhartikk.github.io/ArnoldC/
https://github.com/lhartikk/ArnoldC

SG Conference & Expo 2014 ya esta aquí

Pues ya está en puerta la SG Conference & Expo 2014, el 25 y 26 de junio en el DF, y javaMéxico tiene un pase para uno de los miembros de la comunidad.

Debido al poco tiempo que nos queda, este año la dinámica será muy sencilla: revisen la agenda de la conferencia, platíquennos aquí mismo a qué eventos asistirían si se ganan el pase, y por qué. Le daremos el pase a quien creamos que mejor va a aprovecharlo (sí, sabemos que esto es un tanto subjetivo, pero si hacemos lo de otros años no vamos a poder dar el pase con suficiente anticipación).

Descuento a miembros de javaMéxico

Este año además podemos otorgar un 15% de descuento en la inscripción a los miembros de javaMéxico que deseen asistir; interesados contacten a Benek o a mi en twitter para mandarles el código promocional por DM.

OpenXava 5.0 liberado: Desarrollo rápido con Java

OpenXava es un marco de trabajo AJAX para desarrollo rápido de aplicaciones web empresariales.

Con OpenXava sólo has de escribir las clases del dominio con Java para obtener una aplicación web lista para producción.

Esta versión 5.0 tiene un nuevo estilo visual, incluye navegación entre módulos, identificación de usuario (por tanto ya no necesitas Liferay), colecciones editables en línea (como en una hoja de cálculo), un nuevo editor para adjuntar archivos a tu entidad y muchísimas cosas más.

Te invitamos a que lo descargues y actualices tus aplicaciones OpenXava. Mira las instrucciones de migración.
 

Iniciando con JavaFX: Layouts - Ejemplos de uso.

Exordio

Mas allá de querer impresionar al lector con palabras rebuscadas lo que pretendo es advertirle de lo que esta por ver. Contenido sobre los layouts y su uso básico en JavaFX. Esto no es un discurso, ni una novela pero debo advertir que por cuestiones de preferencias personales he decidido crear una publicación lo suficientemente grande como para resultar incomoda de leer. Sin mas que agregar ¡Que comience el codeo!

Layout VBox

Como habíamos mencionado este layout nos permite colocar nodos hijos en una columna , lista vertical o caja vertical, escojan la definición que prefieran.
Aclaración: usare un nodo de tipo Button para ejemplificar el uso de los diferentes layouts, ya que al tener un tamaño definido sera mas fácil de apreciar las características del layout.
Iniciemos con el primer ejemplo:

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;

/**
 *
 * @author kalt
 */

public class VBoxTest extends Application {

Ejemplo MapReduce Hadoop 5

Ya unicamente nos falta la clase main, para poder ejeutar nuestro ejemplo

Tambien es pequena asi que la pongo toda de una vez:

package mx.com.sinapsis.ds.test.ComparaPais;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.conf.Configured;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Job;
import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;
import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;
import org.apache.hadoop.util.Tool;
import org.apache.hadoop.util.ToolRunner;

public class MaximaPoblacion extends Configured implements Tool {
       
        public static void main(String[] args)
                    throws Exception
                  {
                    ToolRunner.run(new Configuration(), new MaximaPoblacion(), args);
                  }

        @Override
        public int run(String[] args) throws Exception {
               
                args = new String[]{"input","output"};
               
                if (args.length != 2)
            {
              System.err.println("Usage: Max Poblacion <in> <out>");
              return 0;
            }
            setConf(new Configuration());
            Configuration conf = getConf();        

            Job job = new Job(conf, "compara pais");

Ejemplo MapReduce Hadoop 4

Ahora veremos la parte del reduce, el cual nos tiene que entregar el pais que tiene el numero maximo de pobladores.

En este caso sabemos ya que el map del anterior post manda a llamar al reduce por cada region existente, por lo que unicamente tenemos ahora que ubicar el pais que tiene la mayor poblacion.

El codigo es muy pequeño asi que no es necesario partirlo para explicarlo.

package mx.com.sinapsis.ds.test.ComparaPais;

import java.io.IOException;

import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Reducer;

public class MaximaPoblacionReducer extends
                Reducer<Text, Text, Text, Text> {
       
        protected void reduce(Text key, Iterable<Text> values, Context context) throws IOException, InterruptedException{
                Long maxValue = Long.MIN_VALUE;
                String pais = "";
                //se obtiene el pais que tenga la mayor poblacion
                for(@SuppressWarnings("unused") Text value : values){
                        String[] valores = value.toString().split(":");                
                        if(!valores[0].equals("World")){                               
                                Long bMaxValue = Math.max(maxValue, Long.valueOf(valores[1]));
                                //Si es maximo que el anterior se guarda el pais que corresponde
                                if(bMaxValue > maxValue){

Ejemplo MapReduce Hadoop 3

Clase Map

Analizado el texto del cual obtendremos la informacion, vamos a crear la clase map la cual nos agrupara los paises por region, descartando todas las partes del texto que no sean necesarias.

En esta clase map lo que se va a hacer es identificar los paises y los datos necesarios por region:

 

  context.write(new Text(Pais.getRegion()), new Text(Pais.getNombre() + ":" +poblacion));

Se utiliza tambien patterns para identificar los datos necesarios:

 

  final static Pattern PAIS_PATTERN = Pattern.compile("[@][A-Z][a-z]*(,)?(\\s)?([A-Z][a-z]*)?(\\s)?([A-Z][a-z]*)?(\\s)?([A-Z][a-z]*)?(\\s)?([A-Z][a-z]*)?(\\s)?([A-Z][a-z]*)?[:][Geography]{9}");
 final static Pattern POBLACION_PATTERN = Pattern.compile("^\\s[Population]{10}[:]{1}\\s*");//Population: 65,780 (July 1995 est.)
 final static Pattern REGION_PATTERN = Pattern.compile("^\\s[Map]{3}\\s[references]{10}[:]*");// Map references: Africa
       

Se utiliza una clase plana para guardar los datos de pais

 

  Pais.nombre = pais;
 Pais.region = region;
       

debemos quitar los datos del mundo para que no se contabilice

 

Ejemplo MapReduce Hadoop 2

Comandos para cargar los datos en hdfs:

# Cargar en el HDFS
# Primero renombre los archivos con nombre corto
# CW para Datos estadisticos de la CIA 1995
$ mv pg571.txt CW.txt

# El siguiente comando falla si el directorio existe
$ hadoop fs -mkdir /user/cloudera

# Ahora ponga el texto en el directorio
$ hadoop fs -put CW.txt /user/cloudera

# Creamos alias de los comandos de hadoop
$ alias hput="hadoop fs -put"
$ alias hcat="hadoop fs -cat"
$ alias hls="hadoop fs -ls"
$ alias hrmr="hadoop fs -rm -r"

$ gzip CW.txt

# El punto hace referencia al directorio home de Cloudera
# en hdfs, /user/cloudera

$ hput DS.txt.gz .

# Verificar los archivos que existen ahora
$ hls
Found 4 items
drwx------ - cloudera cloudera 0 2014-04-10 16:03 .staging
-rw-r--r-- 3 cloudera cloudera 3013212 2014-04-21 14:28 CW.txt
drwxr-xr-x - cloudera cloudera 0 2014-04-10 16:03 HF.out
-rw-r--r-- 3 cloudera cloudera 605499 2014-04-10 15:25 HF.txt

Las parte clave en el documento que vamos a utilizar son:

Ejemplo MapReduce Hadoop 1

En el mundo actual los datos se han vuelto las estrellas, cuando uno prende la TV y enciende Netflix se da buena cuenta de esas posibilidades, rapidamente nos damos cuenta de que este sistema a averiguado cosas acerca de nuestras preferencias y en base a ellas nos brinda recomendaciones que en la mayoria de los casos son acertadas, esa es su mision conocer perfectamente nuestros gustos para tenernos mas tiempo sentados comodamente disfrutando de la programacion.

Si uno aparte lo utiliza para ver una de las series de casa como House Of Cards, la mayoria cae atrapado en la historia,fue echa tambien en base a el gusto de la mayoria de la poblacion, vamos la jugada es redonda.

Los programas que generalmente observamos, los que vemos pero luego de un rato abandonamos, a las escenas que nos aburren y le damos avanzar o las que rebobinamos, todo eso lo utiliza Netflix para generar la serie y cada capitulo.

Vamos pues a entrar un poco al mundo de BigData de la mano de la programacion MapReduce con el framework Hadoop(java), yo estoy tambien apenas aprendiendo asi que espero junto con varios lograr entender como hacer cosas como las señaladas en las lineas de introduccion.

Distribuir contenido