Entradas

Mostrando las entradas con la etiqueta genexus

GX24

Imagen
Se terminó otro Encuentro GeneXus, el número 24 en esta oportunidad. Otra vez un muy buen evento con una organización impecable y charlas de muy buen nivel. Hubo muchas charlas interesantes, no pude ver todas las que quería así que ahora me tengo que poner al día. Sobre la temática de las charlas, vi que hubo muchas charlas sobre diseño. Es una opinión subjetiva, pero creo que muchas más que en eventos anteriores. No creo que sea casualidad que se hable tanto de diseño: en la medida que maduran las plataformas (Smart Devices en particular, pero también Web) y los usuarios se acostumbran a aplicaciones de mejor nivel de diseño, nos exige a nosotros los desarrolladores de aplicaciones a pensar más en este tema. Una conclusión a la que todos llegan, es que el diseño tiene que ser parte del desarrollo de la aplicación desde el primer momento, y no ser algo que se agrega luego de terminar la funcionalidad. También vi que hubo muchas charlas sobre "cloud computing", otro ...

Disparo de eventos desde un User Control GeneXus en iOS

Imagen
Los User Controls en GeneXus permiten extender la funcionalidad provista por los generadores, para resolver escenarios de User Interface que no están resueltos en los controles estandar. Hay varios controles interesantes en el Marketplace , principalmente para Web pero también para Smart Devices . Si bien estos User Controls se utilizan mayormente para cambiar el aspecto visual de las aplicaciones, puede haber casos donde sea necesario ejecutar código del usuario. En iOS esto es muy fácil de hacer, si la implementación del control hereda de la clase GXControlBase o alguna de sus clases derivadas. Hay dos forma de hacerlo: disparando una acción del panel o disparando un evento del control. Disparar una acción del panel Para disparar una acción definida en el panel donde se encuentra el User Control, alcanza con incluir el siguiente código: [self fireActionWithName:actionName userInterfaceContext:nil withEntityData:nil]; donde self es la implementación del user control ...

Cómo hacer una aplicación para iOS en 45 minutos

Imagen
Es verdad, lo reconozco, el título de la nota es un poco tendencioso (1) ... Pero también es verdad lo que dice, que pude hacer una aplicación e instalarla en mi teléfono en 45 minutos, desde la idea hasta tenerla en ejecución. La aplicación es muy simple, obviamente. Necesitaba tener algunas notas para una presentación que iba a ser sin PPTs, para no olvidarme de decir nada. En realidad me hubiera servido cualquier aplicación de notas, pero se me ocurrió que podría ser divertido hacer la aplicación, y con GeneXus es realmente fácil, así que me animé. La aplicación tiene dos entidades con sus respectivos "work with": Presentaciones y Notas. Las Presentaciónes tienen un Título, las Notas tienen un Titulo y una Descripción. Solo eso. La otra pantalla que tiene la aplicación es el "modo presentación", donde se elige la presentación que voy a hacer y se muestran las notas en un Paged Grid , el título más grande y la descripción al pie. Para pasar de una nota ...

Finanzas.app

Imagen
Como comentaba Rodrigo en su blog Neurona Financiera , el registro de nuestros gastos es fundamental si queremos tener controladas nuestras finanzas. Yo también pasé como él por varias etapas: una planilla Excel, un programa Visual Fox Pro hecho con GeneXus 9.0 que después migró a .Net, una aplicación web en Google App Engine. Finanzas.app es la siguiente iteración en este ciclo, está desarrollada en GeneXus Tilo B3 , y es una aplicación que funciona completamente desconectada. El hecho de que sea Offline es el punto fuerte de la aplicación. Seguramente no se compara en funcionalidad con las alternativas (por ejemplo ZetaCuentas por nombrar otra hecha con GeneXus), pero me permite tener los datos locales sin que intervenga un tercero. No me considero extremadamente paranoico, pero cuando hablamos de dinero, prefiero no darle la información a otros... Cómo obtener la aplicación La aplicación la estoy desarrollando para uso personal, por lo que no me interesa distribuirla en fo...

Respaldo de la base de datos Offline en iTunes

Imagen
El escenario principal para las aplicaciones Offline que generamos con GeneXus, se tiene un componente en el servidor donde se centralizan los datos ingresados en cada uno de los dispositivos. En este escenario no es imprescindible hacer un respaldo de la base de datos Offline, ya que la misma siempre se puede volver a construir a partir de los datos del servidor. Sin embargo, el generador Offline permite otro escenario donde sí puede ser importante tener respaldo de los datos: cuando la aplicación es completamente Offline y no tiene componente en el servidor. Si bien acceder al sistema de archivos del iPhone se puede, no hay una forma "nativa" de hacerlo. Hay aplicaciones que exponen dicho sistema de archivos a la Mac o al PC, pero en general tienen algún costo. En particular para la base de datos Offline, como se almacena en la carpeta Documents que es una carpeta especial dentro de la aplicación, es posible copiar el archivo desde iTunes como se explica en este ...

Diapositivas y video de mi charla en el #GX23

Imagen
El video de la charla lo pueden ver en el sitio del evento. Las diapositivas están también ahí, pero también las subí a SkyDrive que funciona mejor que SlideShare, que no respeta el orden de aparición de los elementos de la diapositiva. Solo las diapositivas capaz que no dicen mucho, pueden ver las notas en cada una (creo que están bien... no las revisé en la versión final).

Resumen del #GX23

Imagen
Terminó otro encuentro GeneXus . Como siempre fueron tres días de mucha actividad, de ver cosas nuevas, de reencontrarse con gente, de salir de la rutina. Otra vez, como todos los años, con una organización impecable. Todas las charlas (las que vi yo al menos) respetaron el horario. Lleva mucho esfuerzo hacer que todo salga bien, hacer que del otro lado ni siquiera nos demos cuenta de todo lo que hay atrás. Así que mis felicitaciones a quienes participaron de la organización. Con respecto al contenido, hubo sin duda mucha variedad. Mi interés eran obviamente las charlas de Smart Devices, y en particular las que daba la comunidad. Así es que fui a las charlas de DVelop ( What 2 Listen , SD+ ), a la que dio Armando Cardozo de Simplifica sobre oportunidades y desafíos , y a la de Marcos Abellón y Matías Preciozzi sobre reconocimiento facial y realidad aumentada . La conclusión de estas charlas, es que se están haciendo cosas muy interesantes con el generador, y que una ap...

Charla de Offline Applications en el #GX23

Imagen
Este año en el Encuentro GeneXus voy a estar dando una charla sobre aplicaciones Offline para dispositivos móviles. Todavía no está la grilla con los horarios, pero pueden ver la descripción de la charla en la lista preliminar en el sitio del encuentro. El tema de aplicaciones Offline es nuevo en GeneXus Tilo. Aunque ya había algo que se mostró en el evento pasado, este año está mucho más completa la funcionalidad, por lo que los invito a quienes les interese a ver las charlas sobre el tema. Además de mi charla va a haber otras 3, que van a estar en la misma sala y una a continuación de la otra, así que se pueden agendar todo el "track". Pueden ver más información de estas charlas en los siguientes links: Aplicaciones Offline para Smart Devices: Visión General Fuerza de ventas móvil utilizando tabletas Android e integrada con SAP Aplicaciones Offline para Smart Devices: Arquitectura y desarrollo con GeneXus

Seguridad en aplicaciones GeneXus

Imagen
En la reunión de ayer del GUG Montevideo , Diego Rostagnol hizo una presentación sobre seguridad en aplicaciones GeneXus que estuvo interesante. La charla generó una discusión que estuvo buena, porque se plantearon posibles problemas de seguridad en distintos niveles de la aplicación. Diego planteó algunos casos que yo en particular no había considerado, y creo que los aportes del público sirvieron para aclarar otros que tal vez no estaban del todo correctos. No me considero un experto en seguridad ni mucho menos, pero igual quería dejar escrito acá más o menos los temas que se hablaron ayer, más que nada porque creo que estos temas son muy importantes y en general no se le dedica el tiempo suficiente. GeneXus resuelve una buena parte de los problemas de seguridad, y eso es muy bueno, pero también tiene un lado negativo: como GeneXus resuelve cosas de forma automática, podemos pensar que está todo resuelto. Y eso no es así. Veamos los puntos que surgieron ayer de la reunión,...

Consultar la base de datos offline en iOS

Imagen
Hace unos días se liberó la versión Beta 1 de GeneXus Tilo , que tiene como una de sus características principales la posibilidad de generar aplicaciones Offline para Smart Devices . Algo que puede resultar útil, sobre todo cuando estamos diagnosticando algún problema, es poder consultar directamente la base de datos. En iOS no es algo evidente como hacer esto, por lo que lo dejo escrito acá por si alguien lo precisa. Esto sirve para el Simulator, no en un dispositivo... Lo primero que debemos hacer es obtener la ruta al archivo SQLite. Para eso, debemos ejecutar la aplicación desde Xcode en el Simualtor. Debemos ejecutarla desde Xcode y no desde GeneXus, para así tener la opción de hacer debug . Ponemos un breakpoint en algún punto por el que sepamos que va a pasar la aplicación (puede ser un procedure o el data provider asociado a un panel), y cuando se detiene, en la consola, escribimos: po [[GXDBManager sharedInstance] databasePath] Ese comando nos va a dar la ruta d...

Metro México DF 2.0, primer aplicación Offline con iOS

Imagen
Hace unos días, se liberó la versión 2.0 de la aplicación del Metro de México DF para iOS , hecha con GeneXus Tilo , y que tiene como novedad que incorpora la funcionalidad de generación Offline de esta versión. Hasta donde sé (1) , esta es la primera aplicación Offline en iOS con GeneXus. La generación Offline para aplicaciones de Smart Devices es una de las características principales de la versión Tilo , de la cual estamos por liberar una beta que agrega esta funcionalidad para iOS. Por "aplicaciones Offline" en este caso, entendemos aplicaciones que tienen una base de datos en el dispositivo (SQLite, tanto en iOS como en Android), y tienen generación de código del lado del cliente, por lo que pueden funcionar completamente desconectadas del servidor. En la versión Evolution 2 lo más parecido, es el caché de datos, que permitía acceder a los mismos a pesar de no tener conexión, pero no permitía ejecutar código del lado del cliente ni realizar modificaciones en la b...

Literales de tipo Date y DateTime en GeneXus

Imagen
Cuando programamos, ya sea en GeneXus o en cualquier otro lenguaje, es muy común usar literales en el código, para valores conocidos o especiales de la aplicación. Por ejemplo, si voy a hacer una suma de varios registros, inicializo la variable en cero: &suma = 0 O si estoy por ejemplo en una transacción y quiero saber si estoy en modo Insert, puedo preguntar if &Mode = 'INS'     ... endif (nota: es un ejemplo... lo recomendable en este caso es usar el dominio enumerado TrnMode) En GeneXus hay unos cuantos tipos de datos, pero podríamos decir que los principales son cuatro: números, strings, booleanos y fechas (o fecha-hora para ser más precisos). Para los tres primeros, es bien sabido como expresar literales, ¿pero para las fechas? Esta funcionalidad creo que no es muy conocida, pero en GeneXus también se pueden escribir literales de fechas, utilizando el caracter # como delimitador (así como usamos las comillas simples o dobles para los strings). ...

Realidad Aumentada en aplicaciones iOS con GeneXus

Imagen
Hace un tiempo, Gastón hablaba sobre las ventajas del "Model Driven Development" , y una de las que menciona es la extensibilidad. Hoy sin duda esto queda demostrado, gracias a aplicaciones como ArTur MVD . ArTur MVD es una guía turística de Montevideo para iOS y Android, desarrollada por la gente de DevXtend . Fue premiada durante el XXI Encuentro GeneXus (año 2011), y en su momento incluía una función de reconocimiento de monumentos, para lo cual alcanzaba con tomar una foto del monumento, y la aplicación nos mostraba la información del mismo. Hace unos días subieron una nueva versión al App Store, que incluye la funcionalidad de realidad aumentada. Cuando uno apunta la cámara del dispositivo en una determinada dirección, muestra los restaurantes, comercios, hoteles, etc. que hay en esa dirección, dentro de un radio de 5 kilómetros. La aplicación está hecha con GeneXus X Evolution 2 , y la funcionalidad de realidad aumentada está provista por un user control ...

Objective-C: ejecución sincrónica mediante semáforos

Imagen
En Objective-C, o para ser más precisos en iOS, la norma es que cuando una tarea lleva tiempo, la misma se ejecuta de forma asincrónica mediante el uso de delegates y call-backs . Por ejemplo, si queremos obtener el contenido de una página web, usamos  NSURLConnection . El método start de dicha clase, inicia la operación y termina inmediatamente, antes de comenzar a recibir datos. Los datos llegan a través de los métodos del protocolo  NSURLConnectionDelegate , como por ejemplo,  connection:didReceiveData: . Esto presenta un problema para la implementación de las clases estándar de GeneXus, ya que por ejemplo cuando hacemos &httpClient.execute('GET', 'http://www.google.com') &status = &httpClient.statusCode esperamos que al volver de la llamada la variable &status tenga la información correspondiente. La solución que encontramos para que la ejecución se realice de forma sincrónica, es mediante el uso de semáforos. Los semáforos son pa...

Encuentro #GX22

Imagen
Los pasados días, del 1 al 3 de octubre, se llevó a cabo como todos los años el Encuentro GeneXus, esta vez en su edición número 22. Este año no me tocó dar charla, así que fue más tranquilo :) Como siempre un lujo la organización. Viéndolo desde adentro se ve que hay mucha gente que trabaja mucho para que todo funcione y salga como tiene que salir, así que mis felicitaciones a todos los involucrados. Pero vamos a las charlas... Lunes GeneXus y el contexto tecnológico En su charla sobre GeneXus, Nicolás Jodal contó algunas de las cosas que tenemos en la Evolution 2, contó sobre las aplicaciones que (conocemos que) se hicieron con el generador de Smart Devices, y que sumadas tienen más de 250.000 descargas de las respectivas tiendas de aplicaciones. Luego contó alguna cosa de lo que vamos a tener en GeneXus Tilo, entre ellas el generador Windows 8. Para esta parte de la charla invitó a Eduardo Mangarelli de Microsoft que mostró una tableta con Windows 8 y algunas aplicaci...

Nuevo blog: GeneXus Tips

Imagen
El mes pasado algunos compañeros de soporte de Artech empezaron a escribir un blog con tips de GeneXus. Ese blog que hasta el martes pasado estaba privado, quedó ahora público. Muy amablemente me invitaron a participar, así que de vez en cuando van a ver alguna nota mía en dicho blog :) Así que sin más, les dejo el link: GeneXus Tips . Espero que les resulte útil.

Equipos: applicación iPhone y Android

Imagen
En el equipo de desarrollo estuvimos haciendo un poco de dogfooding , para probar el nuevo generador para Smart Devices de la Evolution 2 . Surgieron varias aplicaciones interesantes que podrán encontrar ahí, pero que no voy a poner los links porque hay una competencia a ver quien consigue más descargas :) En particular, la que hice yo se llama Equipos, y es un juego. Sí, un juego con GeneXus. Puede parecer raro, pero no soy el primero ; ni siquiera soy el único que hizo un juego para Smart Devices en esta competencia de desarrollo. En realidad la aplicación tiene dos juegos: en el primero se debe adivinar cual es el escudo que corresponde, entre varios, a un equipo de fútbol dado su nombre en el segundo se debe ingresar el nombre de un equipo viendo su escudo (para esto usé lo de la comparación de strings que comentaba en otra nota). La aplicación está disponible para iPhone y para teléfonos Android . Los invito a que la bajen. Con respecto a la dificultad para hacerl...

Comparación de strings por aproximación

Imagen
Para una aplicación que estoy haciendo con GeneXus (después cuento de que se trata...), necesitaba poder comparar dos strings, pero no necesito que sean exáctamente iguales, me alcanza con que sean aproximados. El primer intento fue hacer que uno de los dos strings fuera por lo menos la mitad del largo del otro y que estuviera contenido. Como aproximación está bien, pero si por ejemplo uno de los dos tiene un tilde y el otro no, da que son diferentes. Gracias a Matías me enteré que existe un algoritmo, llamado Distancia de Levenshtein , que se usa justamente para esto. Según Wikipedia: En Teoría de la información y Ciencias de la Computación se llama Distancia de Levenshtein, distancia de edición, o distancia entre palabras, al número mínimo de operaciones requeridas para transformar una cadena de caracteres en otra. Se entiende por operación, bien una inserción, eliminación o la sustitución de un carácter. Esta distancia recibe ese nombre en honor al científico ruso Vladimir L...

Nuevo blog: GeneXus for Smart Devices

Imagen
Esta nota es solo para contarles que estamos empezando un nuevo blog: GeneXus for Smart Devices . La idea es tener un lugar donde contar las cosas que estamos haciendo, nuevas funcionalidades, tips, como extender los generadores, etc. Los invito a que lo visiten y se suscriban ( por RSS ). Ya tiene un par de notas, la bienvenida y una nota contando una funcionalidad nueva :) El blog está en inglés, porque parece lo más razonable para una comunidad de desarrolladores .

Encuentro #GX21

Imagen
Pasó otro encuentro GeneXus más, y este año me tocó vivirlo desde el otro lado, desde el lado de la organización. Se vive distinto, pero no tanto el evento en sí, sino más bien la previa, donde vi lo que trabajaron todos para llegar con todo pronto en fecha. Del evento en sí, el estar adentro le quita el componente de la sorpresa, de ver en que estuvieron trabajando en el último año. Así y todo, hubo momentos en los que tuve que elegir, porque había más de una charla que me interesaba. Este año no me dio el tiempo de hacer una reseña por día como venía haciendo en años anteriores, así que hago una sola con los tres días. Lunes Sobre las charlas, vi las primeras, de @breogan_gonda , @guscarr y @gmilano en la sala 4CR donde se trasmitían en vivo, porque la 2B quedo chica... Como introducción estuvieron muy bien, para que todos estemos más al tanto de lo que se iba a hablar en el resto del evento. Lástima que a  @guscarr  no le anduvo apagar la lámpara desde el telé...