Bóveda de ideas: esaideaesmia.com


Safety vault

A mí me pasa. Creo que a tí te pasa. Espero que a muchos les pase.

En un mundo donde faltan buenas ideas, a las personas que tienen ideas les falta tiempo para realizarlas.

¿Cuántas veces se escucha o se dice ‘esa idea era mía’?

Gracias a este proyecto ahora podrás certificar que así fue. La ‘idea’ (con derechos de autor, hahaha o por lo menos de dmca) es que cuando tengas una de esas brillantes ideas en lugar de escribirla en un “post it” o en una “nota en la compu” o “enviartela por email” (para luego nunca verla) es que abras tu aplicación. Ahí podrás ir apuntando todo lo relativo a tú idea y al final “sellarla” ese sello lo que dará será una certificación de la fecha en la que guardaste la idea – la cual si no lo quieres nunca será publicada, así nadie te robará la idea (ya estamos averiguando temas de encripción termo nuclear cuántica para guardar los datos de manera más segura que simplemente transformarlos en ceros y unos) y te quedarás tranquilo hasta que alguien más la haga realidad y entonces puedas decir con certeza y fecha que esa “era tu idea”.

Ya me dirán si les gusta.

Saludos,
Gorka

P.D. – si la idea era de ustedes espero me lo hagan saber, así podemos trabajar en equipo para la realización…

P.D. 2 - Osea, esta app es la estampa de respaldo. No es copright y no es para que puedas demandar a nadie, es sólo para que puedas comprobar (digamos a tus amigos o novia, etc) que la idea sí la tuviste!


AS3 getdefinitionbyname y el compilador


Loopholes breakfast of lawyers

Sin abusar mucho (y no entrar a detalles MUY técnicos de OOP) estoy utilizando una clase de la librería de Flash AS3 que me permite instanciar clases de manera dinámica. Es una manera muy cómoda de eficientar procesos repetitivos (y de continuar con las ventajas de OOP como el polimorfismo) que nunca pensé que llegaría a utilizar (porque acostumbro declarar directamente las clases que voy a usar como propiedades privadas pero quise ver si podía quitar mucho código que se repetía sin sentido y encontré esta manera:

var referencia_clase:Class = getDefinitionByName(string_clase) as Class;
instancia = new referencia_clase();

// si se preguntan por qué la instancia no tiene declaración formal es porque antes está declarada como un objeto “dinámico/genérico” que vía polimorfismo puedo reusar para distintas clases

Necesita un string con el nombre de la clase con lo que se hace una referencia a la misma y luego esa misma referencia se usa para instanciar el objeto de la clase en sí.

Con eso ya se tiene acceso (vía el objeto) a todos los métodos y propiedades.

PERO…

Por la manera en la que trabaja el compilador de Flash (en mi caso versión cs5.5) cuando se usa un “import” para traer clases a memoria para luego instanciarlas, el compilador sólo agrega a memoria las clases que sí tienen una llamada real (no hace falta instancia, puede ser nada más la referencia: var obj_clase:Nombre_Clase;). Eso quiere decir que las clases que uno querría llamar de manera dinámica NO ESTÁN en memoria y por lo tanto cuando se ejecuta el código se tira un error de ejecución de variable nula. Es un bug? No creo, es más como un loophole curioso ya que si con el import sí se trajeran a memoria las clases que se piden entonces el compilador perdería una super ventaja que tiene de eficientar las llamadas reales que tiene que hacer.

Entonces cómo se resuelve esto? Como lo puse arriba: haciendo una referencia como propiedad dentro de la clase que va a usar el getDefinitionByName => var referencia:Clase_Dinamica;

Aunque esto implica que se tienen que agregar todas las clases que se van a usar de manera dinámica una por una, aún así se puede aprovechar la función getDefinitionByName para eficientar códigos (igual habría que hacer realmente un benchmark de uso de recursos de instancias reales vs. referencia clases e instanciación de una en una para ver qué camino es mejor).

Espero esto ayude a aquellos que querían usar el método y les mandaba el error:

ReferenceError: Error #1065: Variable nombre_de_la_clase is not defined

Saludos,
Gorka


Proyecto: Who is that dude?


Facial Recognition

La idea: estás viendo una pelicula o una serie de televisión (es más hasta una revista), no sabes como se llama el actor/actriz que está frente a tí, así que sacas tu iphone abres tu app de Who’s that dude? enfocas su cara y puf! magicamente te saca los datos del actor de IMDB. En la pantalla del iphone saldría un cuadro donde tienes que poner la cara del actor (y esto puede ser difícil si las cosas se están moviendo pero eventualmente podemos hacer que sólo con que se vea la cara en la pantalla se le reconozca.

La idea es que la app manda fotos de la cara a un servidor, este servidor se encarga de hacer el reconocimiento (con una base de datos de caras y celebridades preparada desde antes) y cuando encuentra un match manda pedir los datos a algún servicio de IMDB (hay que revisar que exista esto o sino usar su feed de XML o sino hasta parsear sus HTML’s) y eso se enseña al usuario en el iphone.

¿Qué necesito para hacer esto?

Tengo ya varias ideas de cómo hacer la parte del servidor del reconocimiento facial, pero hasta que haga pruebas prefiero no contar demasiado.

Eventualmente si sale este proyecto, voy a hacer uno similar que use los datos y fotos de Facebook y que funcione para cualquier persona pública.

Saludos,
Gorka


Proyecto: Reloj de sol (estilo los picapiedra)


Sun clock

La idea es sencilla y divertida: se ve la sombra generada por una estaca (virtual) en un círculo con referencias horarias. Lo divertido es que planeo usar técnicas de realidad aumentada para lograr que la dirección y grado de la misma sean congruentes con la manera y posición del smartphone. Es decir que para que funcione correctamente tendría que estar apuntando al norte y completamente plano, pero si no es así de todas maneras algún resultado tendrá.

En una futura actualización hasta me podría conectar a un sistema de clima y si el lugar se encuentra nublado hasta podría considerar moderar la intenisdad de la sombra generada.

¿Qué necesito para hacer esto?

Diseño:

Un proyecto más a la lista, también es sencillo y ya usa un par de técnicas más avanzadas así que será un resultado divertido.

Saludos,
Gorka


AS3 native scrollbar


AS3 scrollbar

Para uno de mis proyectos (y lo más seguro es que para todos eventualmente) me encontré con la necesidad de poner un texto en un espacio más chico del total del texto, esto simple y sencillamente se soluciona habilitando un scrollbar.

La onda fue que al hacer uso del Componente que ya existe en flash de scrollbar me vino la duda si a la hora de enviarlo al iphone se vería de manera “nativa” o si mantendría el aspecto de flash. Al hacer las pruebas ví que mantenía el aspecto típico, y eso no me gustó nada porque le quita “usabilidad” (al no usar controles nativos a los que los usuarios ya se van acostumbrando – OJO gracias al desarrollo de apps para ios en flash y as3 se pueden recrear TODOS los controles que se quiera y a veces es bueno para innovar, pero en este caso es algo tan sencillo que no valía la pena recrearlo todo).

Busqué un rato en web y no encontré nada para iOS, hay muchos sí para AS3 pero simplemente para aplicaciones o web nada para mobile. Intenté trucar el componente que viene con flash y no sirvió de mucho, así que tuve que ponerme a hacer esto por código propio desde cero.

Resultó algo muy fácil, es una simple clase que al instanciar se le tienen que dar dos parametros: 1.- el movieclip origen (esto para que tenga acceso al stage y así pueda usar addChild) y 2.- la caja de texto a la que se le va a poner el scrollbar.

Notas

package {
  import flash.display.MovieClip;
  import flash.display.Shape;
  import flash.events.*;
  import flash.text.TextField;

  public class ComponentVerticalScrollbar {
    // ——- Constructor ——-
    public function ComponentVerticalScrollbar(obj_home:MovieClip, obj_text_field:TextField, num_width:Number=5, num_round_w:Number=2, num_round_h=2, num_alpha:Number=.5, num_color:Number=0xCCCCCC) {
      referencia_home = obj_home;
      objeto_text_field = obj_text_field;
      var number_position_x:Number = objeto_text_field.x + objeto_text_field.width ;
      objeto_text_field.width -= 10;
      var number_position_y:Number = objeto_text_field.y;
      var num_height:Number = Math.floor(objeto_text_field.height / objeto_text_field.maxScrollV);
      if(num_height < 20){
        num_height = 20;
      }
      round_square_trackbar = new Shape();
      round_square_trackbar.graphics.lineStyle(0, num_color, 0, false);
      round_square_trackbar.graphics.beginFill(num_color);
      round_square_trackbar.graphics.drawRoundRect(number_position_x, number_position_y, num_width, num_height, 10, 10); round_square_trackbar.graphics.endFill();
      round_square_trackbar.alpha = num_alpha;
      referencia_home.addChild(round_square_trackbar);
      objeto_text_field.addEventListener(Event.SCROLL, handler_scroll);
    }
    // ——- Properties ——-
    private var referencia_home:MovieClip;
    private var objeto_text_field:TextField;
    private var round_square_trackbar:Shape;
    // ——- Methods ——-
    private function handler_scroll(event:Event):void{
      // hago el indice actual basados en cero
      var number_actual:Number = objeto_text_field.scrollV  1;
      var number_total:Number = objeto_text_field.maxScrollV  1;
      round_square_trackbar.y = ((number_actual) / (number_total) * objeto_text_field.height)  (number_actual / number_total * round_square_trackbar.height);
    }
  }
}

En fin espero que a alguien le sirva o ayude.

Saludos,
Gorka


Proyecto: Where is my car?


Direction

La idea es sencilla: al terminar de estacionar el coche abres en tu iphone la app, esperas que te geolocalice y luego marcas el lugar donde estás con el coche. Vas y haces lo tuyo (sea fiesta, trabajo, lo que sea..), cuando sales de tu “evento” prendes la app de nuevo en la opción de guía y te enseña una brújula con una flecha en dirección a tu coche.

¿Qué se necesita para hacer esto? (sin entrar a detalles de computadoras, aparatos y programas de desarrollo, sino más bien en cuanto a procesos)

En una actualización se puede agregar funcionalidad que te guíe tomando en cuenta calles y edificios (ya que esta versión seguro te pide que atravieses paredes para llegar directamente).

Es un proyecto sencillo, espero poder darme unas horas para llevarlo a cabo y tenerlo listo para luego subirlo al app Store y que lo puedan descargar y jugar con el.

Saludos,
Gorka


Gipsy


I’m just a browser, not a systems engineer infront of his computer – computer virus said when expected to root from a sandbox.


Pagination