martes, 22 de mayo de 2012

Embeber font en app iOS

Como embeber una font (true type font) en una app para iOS desarrollada con GeneXus?

La idea es embeber una font que no esta dentro del set standard de fuentes, en mi caso queria usar una llamada OSP-DIN.

1. Una que se obtiene el archivo .ttf (OSP-DIN.ttf) instalarlo en el MAC, doble click -> install font.

2. En GeneXus cambiar la propiedad font-familiy de la clase en cuestión, en mi caso la TabPage:


Notar que el nombre a colocar en font-family debe coincidir con el nombre de la font que instalé en el MAC donde voy a compilar la app, para saber el nombre de la fuente dar doble click sobre el archivo ttf.

3. Luego de dar F5 mi app luce así en el emulador:


O sea, hasta ahora no se esta teniendo en cuenta la font que coloque en la class.

4. Agregar el archivo .ttf al folder GXResources del proyecto Xcode


5. Agregar la entrada 'Fonts provided by application' donde el valor sea el nombre del archivo de la font


6. Listo, la font quedó embebida y la app luce así




miércoles, 20 de julio de 2011

Think outside the box

Hace unos años atrás Rodrigo en su charla sobre construcción de aplicaciones fuera de contexto me entusiasmo con la idea de desarrollar aplicaciones con GeneXus que fueran mas allá de las clásicos ERPs, CRMs, Portales, Sistemas contables, de logística, etc.

De un tiempo a esta parte he estado jugando con aplicaciones web y user controls entorno al desarrollo de aplicaciones fuera de contexto, y ahora con la GeneXus Evolution 2 y específicamente con el nuevo Smart Devices Generator se abre la posibilidad de incursionar en el desarrollo de este tipo de aplicaciones y de las otras  también para plataformas como Apple, Androiod y Blackberry.

A diferencia de Rodrigo que se metía en el mundo de los juegos basados en web, a mi me gusto la idea de jugar con la integración con redes sociales como twitter y facebook.

Acá les dejo MySDTwit,



una aplicación desarrollada con el nuevo Smart Devices Generator donde podemos hacer búsquedas sobre Twitter. Por ahora es muy básica pero la idea es seguir el desarrollo hasta que se convierta en un cliente de twiter by GeneXus, por el momento puede ser útil para ver conceptos como:

- traer cosas desde twitter
- toJson
- Work With for Smart Devices
- HTML & Image domain
- enviar mensajes

update:

- regular expressions
- data selectors

Pueden bajarse la KB desde aca












domingo, 13 de marzo de 2011

Japon: conflicto de emociones

Son las 12:34 de la noche en el aeropuerto de Osaka, unas horas antes un amigo en Alemania,
mis amigos de Artech en Uruguay y yo en Japon buscabamos un pasaje que me devolviera a Uruguay
luego de lo que todos sabemos sucedio y sigue sucediendo en Japon.
No pude tomar un vuelo que me llevara a Frankfurt porque hubo problemas con mi tarjeta de credito,
asi que debo pasar la noche por aca.

No se exactamente lo que quiero escribir, es una mezcla muy extrana de muchos sentimientos al mismo tiempo, que van desde: el alivio por haber pasado ileso todo lo que sucedio, el miedo por no saber lo que esta pasado y pasara, la felicidad de saber que tengo mucha gente que me quiere y se preocupa mucho por mi, la alegria y orgullo de trabajar donde trabajo y de tener companeros que se preocupan y hacen lo imposible por mi vuelta y mi bienestar, y la impotencia por no poder transmitir toda la tranquilidad necesaria a mi esposa, mi hermano, mis padres, mis sobrinos, y mi familia toda.

Soy un privilegiado en todo esto que esta pasando, a pesar que obviamente no haya sido bueno para nadie.
Luego del terremoto tuve la suerte de volver a mi casa y no tener que pasar la noche en la calle.

No estaba cerca de las ciudades afectadas por el tsunami ni tampoco cerca del problema en la planta de energia nuclear.

Tambien soy un privilegiado porque cuando tuve miedo me tome un tren y me fui a kilometros de distancia.
Y ahora estoy intentando volverme a Uruguay.

Ese privilegio en parte se debe a que soy un alien en esta tierra, soy un extranjero que vino a trabajar, no soy de aqui mi familia, mis amigos, mis companeros estan en Uruguay, es un realidad. y debo celebrarlo y festejarlo.

Pero existe otra realidad, desde hace 4 anos vengo a Japon. He estado trabajando fisicamente en japon practicamente 2 anos, y he estado otros 2 anos trabajando desde Uruguay incluso en el mismo horario que ellos. Muchos companeros de trabajo de la empresa donde trabajo han pasado a ser grandes amigos, conozco sus vidas, sus familias, he ido a sus casas, he salido con ellos, me han dado mucho carino, me han ayudado en practicamente todo. Entonces es dificil festejar y celebrar cuando yo estoy volviendo a mi pais a ver a mi familia y los estoy dejando solos en este momento.

Si no me he ido antes es porque he pensado mucho en todos ellos y en lo bien que me han tratado todo este tiempo, Owaki, Yonekura, Takeshi, Akiko, Yokoi, Ando, Egawa, Yoko, Kawanishi, Oseki, Minsung, y muchos mas.

A pesar de estar bien, y que pronto volvere a Uruguay, es un momento de mierda, donde se chocan varios sentimientos y emociones.

lunes, 14 de febrero de 2011

LRMenu: GeneXus User Control

Haba visto la idea en una aplicacion del amigo @agareppe y me pareció que estaría bueno tenerlo como un user control para que sea un poco mas facil su utilización. Así que luego de hacer algunos cambios deje publicado en el marketplace un control para que podamos agregar una lista de links a nuestra aplicacion de una forma para nada intrusiva:



Por ahora solo es posible modificar algunas propiedades:

Width & Height: ancho y largo
Location: top-right o top-left, la position del control es absoluta, es decir se dibujara arriba a la derecha o arriba a la izquierda de nuestra pantalla
Links: lista de links a incluir, es una collection de pares (url, description)
MenuTitle: titulo a colocar en el menu

Como verán el control es muy simple y tiene algunas propiedades básicas, para personalizar a nuestro gusto el menu: color, font, background, etc., se debe modificar el css correspondiente (LRMenu.css).

miércoles, 26 de enero de 2011

MyIsValid: GeneXus User Control

Hace un tiempo atrás hice un user control para darle un poco mas de potencia a las aplicaciones generadas. La idea del control es poder validar un valor y hacer determinadas acciones luego de validado, pero mi principal objetivo era el siguiente: validar un campo, por ejemplo validar algo tan simple como que el valor ingresado tenga una determinada cantidad de caracteres, y si dicha validación no satisfactoria mostrar un mensaje de error.

La idea para esto es tener un control que pueda asociarlo a la att/var que quiero validar y luego programar el evento myisvalid asociado, donde pueda escribir la validación que yo desee.

Por lo tanto podríamos tener algo como:

Event Start
   MyIsValidCtrl.AttachedControl =  &myvariable.InternalName
EndEvent

de esta forma asociamos la var/att que queremos validar con el user control. Si se quieren validar muchos campos se debe tener un myisvalid control por cada var/att a validar.

Luego programamos el evento myisvalid asociado a dicho control:

Event MyIsValidCtrl.MyIsValid
  if &myvariable.lenght() < 8
MyIsValidCtrl.PopUpUrl = Error.Link("your variable lenght must to be higher than 8")
MyIsValidCtrl.ShowPopUp = "true"
  else
MyIsValidCtrl.ShowPopUp = "false"
  endif
EndEvent

de esta forma estamos chequeando que la longuitud de la variable &myvariable sea mayor a 8, y en caso que sea menor a 8 vamos a mostrar un error (popup). Para mostrar dicho mensaje de error estamos seteando las propiedades ShowPopUp en true y la propiedad PopUpUrl con la url del webpanel que usaremos para mostrar el mensaje de error, en el ejemplo se llamara al webpanel Error en caso que la longuitud no sea la que esperamos.

Fácil no?

Pero lo mejor del control es que controla donde va a parar el foco luego de cerrar la popup de error, por lo tanto es ideal para los casos donde queremos validar un campo y en caso de error seguir parados en ese campo hasta que se corrija el valor ingresado.

Consideraciones:

- El user control fue pensado para que siempre que se ingrese un valor erróneo en el campo asociado al control el foco vuelva a ese campo luego de mostrar un mensaje de error.

Por tal motivo se utilizó el evento onblur de javascript para asociar al control y no el onchange. Esto ocasiona que el evento MyIsValid se dispare siempre que se pierda el foco del control independientemente de haber ingresado o no un valor en el campo.

- Para que funcione correctamente en Free Style Grids se debe tener el U1 de GXEv1 o superior.

Lo pueden bajar desde el marketplace.

Cualquier cosa me encuentran en mi mail o en @cimasan.

Enjoy!

lunes, 24 de enero de 2011

View Source Part: GeneXus Extension

Luego de resolver algunas referencias incorrectas y levantar algunos warnings quedo disponible una nueva versión de la extension View Source en el GeneXus Marketplace compatible con GXEV1 U3 o superior.

Para los que nunca la usaron, es una extension muy simple que nos permite colocar un nuevo tab en los objetos de forma de poder ver el código fuente generado (java, c#) para dicho objeto.

sábado, 22 de enero de 2011

Primeras impresiones

Otra vez en tierras niponas.

A pocas horas de haber llegado me cope para escribir las "primeras" impresiones.

Basta tomarse un avión e irse a miles de km de distancia para que me vengan las ganas de escribir las impresiones que ya no deberían asombrarme pero que felizmente o infelizmente lo siguen haciendo.

Lo primero y principal es volver a tener la posibilidad de comer comida japonesa, sin dudas una de las mejores cosas de estar tan lejos de Uruguay y estar en un país asiático; la diversidad, la calidad, lo balanceado y lo saludable hacen que sea un placer comer...afuera obvio. No solo japonesa, india (el curry con nan de lo mejor que he probado) , koreana (tan buena como la japonesa), thailandesa, vietnamita, etc.).

Bueno y para los que ya me conocen me sigue asombrando lo vivo que nos creemos los latinos:
  • Seguimos creyendo que cuanto menos laburemos y estudiemos mas vivos somos, esta gente de Asia labura mínimo 9 horas y no menos, y antes cuando estudiaban tenían solo 2 meses de vacaciones al ano mientras nosotros los vivos laburamos la menor cantidad de horas que podamos o el sindicato consiga, y cuando vamos a la escuela deseamos que vengan los 3 meses de vacaciones, el feriado, el finde largo, el paro de maestros, la enfermedad de la maestra y la asamblea técnico docente para no ir. Ahora me entero que dado que no les fue bien reduciendo la jornada de estudios de niños,  adolescentes y jóvenes (países como China, Singapur o Coreo del Sur los están pasando por arriba  a nivel de avances, calidad de vida, y todo lo de mas) volverán a tener clases los sábados y jornadas mas largas. Los muy vivos se creen que mejoraran con mas y mejor educación.
  • Cuanto mas ruido hace el caño de nuestra moto o el escape del auto mas interesantes somos como personas. 
  • Cruzar la calle antes que el semáforo lo permita nos hace terriblemente cool, y eso que supuestamente el nivel de vida nuestro es mas lento que el de los asiáticos, increíblemente los giles de los ponjas esperan a que la verde habilite y nunca pero nunca cruzan antes, que ingenuos! pudiéndose ahorrar tantos minutos al día, de ultima en que jode que se hagan mierda algunos cada tanto no?
  • Los muy giles se guardan el papel en el bolsillo y lo tiran cuando ven un tacho en lugar de tirarlo en la calle y junto a 25 millones de japoneses hacer de la ciudad el basurero mas grande que imaginemos. En esto nosotros si que somos los mas vivos, porque siendo 3 millones tiramos mas basura en la calle que 25 millones.  
  • Parece joda, pero aun no se enteraron de la viveza criolla, yo pensaba que hoy en día todo era mas globalizado y todo llegaba a todos lados, pero los muy estúpidos aun no se avivaron de los beneficios que pueden sacar con ese invento latino, te siguen devolviendo lo que dejaste olvidado o lo que se te cayo en la calle, y siguen siendo extremadamente honestos en todo. 
  • Cuando hacen pis tiran de la "cadena" que gasta menos agua, y cuando hacen lo segundo la "cadena" que tira mas agua, que estúpidos! pudiendo tirar siempre la cadena que tira mas agua y olvidarse de si se hizo lo primero o lo segundo y del agua que se tira.
  • El inodoro en invierno es calentito, el macho latino se sienta en el inodoro helado sea invierno o verano.
  • Miles de sanitarios quedaron sin trabajo porque inventaron un sistema para separar los sólidos de lo liquido en las cañerías por lo cual todo el mundo tira el papel en el inodoro y nunca se tapa, los líos con el sindicato de sanitarios que abran tenido! por no quedarse quietos y seguir como estaban poniendo un papelito que diga: "no arrojar el papel en el inodoro" y llamando al sanitario cuando se tapaba.
  • Siguen insistiendo con no tener guardas en los ómnibus!! lo que se pierden por se fríos y calculadores, perfectamente podrían contratar a un guarda para hablar con los pasajeros, tomarse un mate mientras les explica de forma totalmente amable que linea puedo tomarme para llegar al estadio.
  • Cuando ellos fueron nosotros fuimos, vinimos y volvimos a ir. Son humildes, y siempre miran que pueden aprender del otro para mejorar. Boludos! quieren seguir mejorando en vez de hacer la plancha.
  • De las peores cosas que vi, si hacen mal las cosas los rajan! nunca pensé fueran tan papanatas.
  • Miran mal al que llega tarde a una reunión!! no podes! pudiendo llegar una hora tarde, y hacer perder tiempo a quien llego en hora, mira que son!
  • Dicen gracias! piden permiso! y se disculpan! saladoooooo pensar que es tan fácil ser un mal educado y cagarse en el de al lado. 
  • Los muy bobos tratan de buscarte una mesa y atenderte con amabilidad cuando vas a comer afuera, pudiendo dejar al cliente que busque su mesa, y espere una horita mientras alguien viene a preguntarle que desea. 


Please let me know If you are japanese and you are reading this using a automatic translator (like google translator), may you won't understand it.