Y3K-it | Solution Builders

Y3K-it | Solution Builders
Mostrando entradas con la etiqueta Java. Mostrar todas las entradas
Mostrando entradas con la etiqueta Java. Mostrar todas las entradas

lunes, 15 de agosto de 2011

Alternativa boquense

Lanzamos un nuevo site para la agurpación alternativa boquense, además de encontrar información del club, de los trabajos de la agrupación, fotos, videos y sonidos de los hinchas de boca, las personas que visisten el site podrán jugar al nuevo juego de captura de movimientos y podrán tener la cancha de boca en sus manos con la tenconología de realidad aumentada.



El sitio para visitar y jugar con el escudo de boca y de la agrupación es

http://www.alternativaboquense.com.ar/realidadaumentada.asp

Para más información escribanos a info@y3k-it.com

Android - Audi A7

A partir de mañana las personsar que pasen por ezeiza podrán conocer el nuevo Audi A7 Sportback. Y3K-it desarrolló para el eventos la aplicación que presenta las caracterísitcas del auto, prestaciones, ficha técnica, fotos, etc.
El dispositivo seleccionado en esta ocación fue la tablet de Viewsonic llamada Viewpad S10 con sistema operativo Android. A continuación alguas capturas de pantallas:



Si querés probar la aplicación en tu dispositivo Android podés descargarla desde acá.

La aplicación se lanzó también para plataformas iOS. Si querés la versión para iPad escribinos a info@y3k-it.com

lunes, 11 de abril de 2011

Gemalto - SSO



Y3K-it desarrolla con éxito la solución de Single Sing On (SSO) para empresa internacional líder en seguridad digital Gemalto (http://www.gemalto.com/). La herramienta se utilizará para integrar las soluciones con las que hoy cuenta la empresa, y, ya fue implementada con éxito en Entel Bolivia.
La solución fue desarrollada en Java y la comunicación vía WebServices. Los servicios publicados se utilizan para autenticación, autorización y recuperación de clave de usuario vía SMS haciendo uso de la plataforma OTA con la que hoy cuenta la compañia.

Para más información escriba a info@y3k-it.com o visite http://www.y3k-it.com/

sábado, 9 de abril de 2011

Dashboard

Y3K-it lanza al mercado su herramienta Dashboard para la presentación de información en tiempo real. Este producto pretende ser una alternativa a los costos tableros que existen hoy en el mercado es una herramienta flexible, fácil de usar, fácil de implementar.

La herramienta es 100% gratuita y se puede descargar desde el sitio de Y3K-it.


En este video puede verse el parte del funcionamiento del producto


Pueden probar la heeramienta en el siguiente link:

http://produccion.y3k-it.com:9003/Dashboard/Dashboard.html
Usuario/Password: demo/demo


El producto fue implementado con éxito en los siguientes clientes










Para mas información escriba a info@y3k-it.com a visite http://y3k-it.com/

viernes, 25 de marzo de 2011

Spark ComboBox en Flex 4

Como ustedes saben empezamos el proyecto de Sipco para Gefco (http://www.gefco.com.ar/), empresa de logística francesa.
El frontend del sistema lo estamos haciendo en Flex 4 y el backend en JBoos. Debido a que el sistema es uno de los más importantes de la compañia, y, es de uso común para Chile, Argentina y Brasil, el volumen de información es muy grande, de ahí que todos los ComboBox de la aplicación deben permitir búsquedas tipo autocomplete o lookahead.
El ComboBox de Spark que viene con Flex 4 permite tener esta funcionalidad y trabajar con Objects pero si bindeamos el selectedItem a una variable y el dataProvider es una lista de objectos cuando el usuario ingresa un valor String el sistema explota por problemas de bindeo.

Para replicar el error creamos un proyecto Flex nuevo y agregamos un PruebaCombo.mxml en el mismo agregamos un ComboBox de spark




Como se ve en el código necesitamos agregar una clase de ActionScript, por lo tanto agregamos el archivo Persona.as con la clase Persona con las propiedades id y descripcion. Recuerden agregar algunas instancias de personas al dataProvider en el creationComplete de PruebaCombo.mxml.

Finalmente ejecutamos el sistema, si seleccionamos un item existente queda la variable persona instanciada con el item de la lista, perso si ingresamos texto que no cumpla un match, por ejemplo "fff" el error es:

TypeError: Error #1034: Error de conversión forzada: no se puede convertir "fff" en com.y3k.Persona.


La solución más sencilla para evitar este tipo de error es implementar labelToItemFunction, esto lo debemos repetir cada vez que usemos un ComboBox con objetos complejos. La solución propuesta es hacer nuestro ComboBox que herede del Spark e implemente su propia labelToItemFunction para evitar que nos seleccionen elementos que no existan:

Para eso agregamos una clase Y3KComboBox.as con el siguiente código:


package com.gefco.view
{
 import spark.components.ComboBox;


 public class Y3KComboBox extends ComboBox
 {
  // Indica que nuestra implmentación de de labelToItemFunction
  // es idLabelToItemFunction
  public function Y3KComboBox() {
    super.labelToItemFunction = idLabelToItemFunction;
  }


  // Para evitar que seleccionen algo que no exista y romper el
  // doble bindeo seleccionamos el primero de la lista
  private function idLabelToItemFunction(input:String):* {
    var item:Object;


    if(super.caretIndex <= 0 && super.dataProvider.length>0) {
        item = super.dataProvider.getItemAt(0);
    }
    return item;
  }
 }
}

Ahora, en lugar de usar deberemos usar <s:ComboBox> deberemos usar <view:ComboBox>

Para más información dirigirse a http://www.y3k-it.com/ o escribir a info@y3k-it.com

sábado, 19 de marzo de 2011

Y3Kanoid

Implementamos un nuevo juego de ralidad aumentada, en esta oportunidad Y3Kanoid, una adaptación del clásico Arkanoid con la incorporación de realidad aumentada para el maejo de la paleta.



El juego fue desarrollado en Flex usando las librerías FlarToolkit. A continuación el código usado para el juego.

// ----- Lógica juego ARKANOID -----
private var NUM_BLOCK_ROWS:int=5;
private var NUM_BLOCK_COLS:int=10;
private var BALL_RADIUS:int=6;
private var INITIAL_BALL_SPEED:int=25;
private var BLOCK_FIELD_Y:int=50;
private var BLOCK_GUTTER_X:int=2;
private var BLOCK_GUTTER_Y:int=2;
private var PADDLE_HEIGHT:int=10;
private var PADDLE_WIDTH:int=50;
private var PADDLE_DIST_FROM_BOTTOM:int=10;
private var blocks:Array=new Array(0);
private var ball:Sprite=new Sprite();
private var paddle:Sprite=new Sprite();
 
// Variables del estado del juego private var ball_dx:Number;


private var ball_dy:Number;
private var ball_speed:Number;
private var lives:int=3;
 
Embed(source="./assets/azul.jpg")]
private var GoldBlock:Class;
 
Embed(source="/assets/rojo.jpg")]
private var RedBlock:Class;
 
Embed(source="/assets/verde.jpg")]
private var BlueBlock:Class;
 
private var allBlocks:Array=new Array(GoldBlock, RedBlock, BlueBlock);
 
public function initGame():void     // Bola
    ball.graphics.beginFill(0xee00ee);
    ball.graphics.drawCircle(0, 0, BALL_RADIUS);
    ball.graphics.endFill();
    addChild(ball);
    resetBall();

    // Paddle  
    paddle.graphics.beginFill(0x000000);
    paddle.graphics.drawRect(-PADDLE_WIDTH / 2, -PADDLE_HEIGHT / 2, PADDLE_WIDTH,     PADDLE_HEIGHT);
    paddle.graphics.endFill();
    paddle.y=VIDEO_HEIGHT - PADDLE_DIST_FROM_BOTTOM;
    addChild(paddle);

    // Bloques var reference_block:DisplayObject=new GoldBlock();
    sprite.x=block_field_x + x * (reference_block.width + BLOCK_GUTTER_X);
    sprite.y=BLOCK_FIELD_Y + y * (reference_block.height + BLOCK_GUTTER_Y);
    addChild(sprite);
    blocks.push(sprite);
    current_block_index++;
    current_block_index=0;

    ticker.addEventListener(TimerEvent.TIMER, onTick);
    ticker.start();
}

var block_field_width:int=NUM_BLOCK_COLS * reference_block.width + (NUM_BLOCK_COLS - 1) * BLOCK_GUTTER_X;
var block_field_x:int=(VIDEO_WIDTH - block_field_width) / 2;
var current_block_index:int=0;
for (var x:int=0; x < NUM_BLOCK_COLS; x++)
    for (var y:int=0; y < NUM_BLOCK_ROWS; y++)
        var current_image:Class=allBlocks[current_block_index];
        var sprite:DisplayObject=new current_image();
        if (current_block_index >= allBlocks.length)var ticker:Timer=new Timer(10);

public function onTick(event:TimerEvent):void
{
    detect(null);

    // Ajustar paleta al mouse (sin realidad aumentada)
    //paddle.x=mouseX;
   
    // Ajustar paleta al marcador (con realidad aumentada)
    paddle.x=actualX;

    // Verificar colisión
    if (ball.hitTestObject(paddle))
    // Ajustar el recorrido de la bola segun golpe en la paleta
    ball_dx=(ball_dx + new_ball_dx) / 2;
    ball_dy=-ball_dy;
var new_ball_dx:Number=(ball.x - paddle.x) / (PADDLE_WIDTH / 2.0) * INITIAL_BALL_SPEED;
// Colision con bloques
{
    for (var i:int=0; i < blocks.length; i++)
        var block:DisplayObject=blocks[i];
        if (block == null)continue; // Colisión
        {
                if (ball.hitTestObject(block)) // Borrar el tocado
                removeChild(block);
                blocks[i]=null;

                // Calcular rebote de bola
                var ball_distance_norm_x:int=(ball.x - block.x) / block.width;
                var ball_distance_norm_y:int=(ball.y - block.y) / block.height;// No volver a la misma direccion de rebote
                ball_dy=-ball_dy;
                ball_dx=-ball_dx;
                ball_dx=-ball_dx;
                if (ball_distance_norm_x * ball_dx > 0)
                else if (ball_distance_norm_y * ball_dy > 0)
                else if (ball_distance_norm_x > ball_distance_norm_y)
                else
                  ball_dy=-ball_dy;

                // Aumentar velocidad un 2.5%
                ball_dx*=1.025;
                ball_dy*=1.025;
            }
        }

    if (ball.x - BALL_RADIUS < 0)if (ball.x + BALL_RADIUS > VIDEO_WIDTH)if (ball.y - BALL_RADIUS < 0)// Se fue la pelotita al carajo
    {
        lives-=1;
    }

        resetBall();
        if (ball.y - BALL_RADIUS > VIDEO_HEIGHT)if (lives > 0) {// todo: GAME OVER
        }
        // Mover pelotita
        ball.x+=ball_dx;
        ball.y+=ball_dy;
}
public function resetBall():void
{
        ball.x=0.25 * VIDEO_WIDTH;
        ball.y=0.5 * VIDEO_HEIGHT;
        ball_dx=INITIAL_BALL_SPEED * 0.70;
        ball_dy=INITIAL_BALL_SPEED * 0.70;
}
´
El método para la detección del patrón y movimiento del paddle o paleta:

private function detect(aEvent:Event):void
{
    bitmapData.draw(video);
    flarRgbRaster_BitmapData=new FLARRgbRaster_BitmapData(bitmapData);try
    {
    if (detector.detectMarkerLite(flarRgbRaster_BitmapData, 80) && detector.getConfidence() > 0.3) {
        //Mover paleta del Arkanoid segun el marcador
    }
}

El marcador que usamos para jugar:


Finalmente les dejo un link al juego para que lo prueben después de imprimir el marcador y el link de descarga del proyecto Flex completo

Juego:
http://produccion.y3k-it.com/Y3Kanoid/Y3Kanoid.html
Fuentes:
http://produccion.y3k-it.com/download/Y3Kanoid.rar



Para más información dirigirse a http://www.y3k-it.com/ o escribir a info@y3k-it.com.
 
{

lunes, 14 de marzo de 2011

Hynet - Junipper Flow


Y3K-it implementa la solución Y3KFlow para el manejo de estadísicas de equipos Junniper, la solución contratada por Hynet e implementada inicalmente en Edesur parsea oficia de proxy parseando los mesajes que recive aplica reglas de categorización del paquete y lo retransmite a un concentrador desde donde se muestran las estadísticas.
El sistema fue desarrollado en Java con C integrado con JNI (Versión Linux) para la retransmición de paquetes.

Skinizate.com - E-commerce

Y3K implementa con éxito la solución de e-commerce http://www.decompras.com.mx/.  El sitio con más de 110.000 usuarios está disponible y realiza entergas para todo el mundo.
Se puede pagar con todos los medios de pago del mercado mexicando incluyendo las cadenas Oxo y 7-eleven. Para el resto de la región tiene integración con PayPal, DineroMail y otros medios de pago virtuales.


El sitio comercia skinis para dispositivos, inclusive cuenta con un wizard para que los usuarios creen sus propios skins.



Desarrollado integramente en Java el carrito de compras cuenta con un Backend de administración integrado con herramientas de BI que permiten manejar todo la inforamción del sitio, ordenes de compra, stock, y, determinar tendencias de compras, promociones, top ten, etc.


Para más información visite http://www.y3k-it.com/ o escriba a info@y3k-it.com

DeCompras.com - E-commerce en México

Y3K implementa con éxito la solución de e-commerce http://www.decompras.com.mx/ para ADN de México. El sitio con más de 144.000 usuarios está disponible y realiza entergas para toda Latinoamérica incluyendo Brasil.
Se puede pagar con todos los medios de pago del mercado mexicando incluyendo las cadenas Oxo y 7-eleven. Para el resto de la región tiene integración con PayPal, DineroMail y otros medios de pago virtuales.

Inicialmente pensado para vender productos de tecnología, hoy extiende su mercado a productos de alta gama como perfumes y vinos argentinos.

Hoy cuenta con HP, Dell, Compaq entre otros como proveedores directos permitiendo al sitio tener los mejores precios del mercado.

Desarrollado integramente en Java el carrito de compras cuenta con un Backend de administración integrado con herramientas de BI que permiten manejar todo la inforamción del sitio, ordenes de compra, stock, y, determinar tendencias de compras, promociones, top ten, etc.

Para más información visite www.y3k-it.com o escriba a info@y3k-it.com

jueves, 10 de marzo de 2011

PACSS - Sistema de seguridad aeroportuario

Y3K-it implementó con éxito la solución de seguridad aeroportuaria en los aeropuertos internacionales de Casablanca, Rabat y Marrakech en Marruecos y en el Aeropuerto Internacional de Aremnia. Desde 2006, personal de Y3K-it desarrolla soluciones en tecnología JAVA J2EE utilizadas por todas las áreas de la compañía como MOVS, Presupuesto y Autogestión.

En la foto el monitor de salida de vuelos en el aeropuerto de Marruecos






Aeropuertos Argentina 2000, Honywell Argentina S.A. e Y3K-it, continúan trabajando en el desarrollo de la solución. Habiendo integrado periféricos que permiten la captura de datos patronímicos de los pasajeros. A través de la solución el aeropuerto y otras organizaciones regulatorias de seguridad pueden identificar a todos los pasajeros en el aeropuerto, y mediante un circuito de anillos de control de seguridad la solución es capaz de detectar anomalías en dichos controles. Esto sumado a que el gobierno contará con información de cada pasajero tal como sus huellas dactilares, fotografía digital al momento del vuelo, e imagen digitalizada del pasaporte.
Implementando esta herramienta el aeropuerto puede asegurar con un 100% de certeza que el pasajero que realizó el check-in sea el mismo que abordo al avión minutos después.


El sistema integra dispositivos de seguridad tan diversos como lectores de huellas digitales Sagem, lectogragadores de RFID Alien, reconocimiento facial, voice recognition, Tarjetas MiFare, foto, cámaras domóticas, colectores de datos, etc.

Desarrollado con tecnologías EJB3, JNI, Oracle Database, Oracle IAS 10.1.3, Quartz y
Swing para la vista.
Para el sistema de desarrollaron drivers nativos en C para integrarlos con Java a través de
JNI.

Para más información visite www.y3k-it.com o escriba a info@y3k-it.com

miércoles, 9 de marzo de 2011

Realidad aumentada - Captura de movimientos

Y3K implementa un nuevo juego de realidad aumentada, esta vez usando tecnología de captura de movimientos


La tecnología de Motion Captura se logra comparando frame a frame de un video para ver el cambio de pixels entre un frame y otro, estos cambios de pixels se almacenan en un array logrando coordenadas de cambios o movimientos.
El algoritmo de detección de cambios es muy sencillo:

public function getDifferences():Array 
{
  newData.draw(video);
  var differences:Array=[]; 

  for (var px:int=0; px < newData.width; px+=blockSize)
  {
    for (var py:int=0; py < newData.height; py+=blockSize)
    {
      var oldPixel:uint=oldData.getPixel(px, py);
      var newPixel:uint=newData.getPixel(px, py);

      if (Math.abs(newPixel - oldPixel) > sensitivity)
      {
        differences.push(new Point(px, py));
      }
    }
  }

  oldData.copyPixels(newData, newData.rect, new Point(0, 0));
  return differences; 
}

Este método es el que retorna el array de cordenadas con los cambios.


Para probar el juego entrá en http://www.y3k-it.com/eventos/

Para más información visite http://www.y3k-it.com/ o escriba a info@y3k-it.com