DevelUY

Planeta de desarrolladores uruguayos

20 de julio de 2017

Fernando Briano

Firefox Focus: 1 millón de descargas y 3 nuevas características pedidas por usuarios

Desde que Mozilla publicó Firefox Focus para Android (¡hace menos de un mes!), la aplicación fue descargada 1 millón de veces. Ya cuentan con más de 8.000 comentarios, y la aplicación tiene un rating de 4.5 estrellas. Muy buena respuesta por parte de la comunidad al hermoso navegador simple, rápido y orientado a la privacidad que nos brinda Mozilla.

Firefox Focus

En mi caso vengo usándolo prácticamente a diario, es al que voy por defecto. Si necesito algo extra, puedo abrir el sitio que estoy viendo en Firefox estándar. También he conseguido que más de una persona empiece a usarlo por puras recomendaciones (Mozilla, give me free stuff!).

Junto a este festejo se agregaron 3 nuevas características. Prestando atención a los comentarios de los usuarios, se juntaron las características que se pudieran agregar rápidamente y en menos de un mes del lanzamiento, ahora contamos con:

  • Videos a pantalla completa: Algo que estaba esperando, aunque justo no funciona (todavía) para YouTube… Parece que se volvió una prioridad debido a los comentarios de usuarios. “Entendemos que si vas a mirar un video en tu teléfono, sólo vale la pena si se puede expandir al tamaño completo de la pantalla de tu teléfono celular.” Se agregó soporte para la mayoría de los sitios siendo YouTube la excepción más notable. El soporte para YouTube depende de la corrección de un bug por parte de Google y será incluido apenas esté arreglado.
  • Soporte de descargas: Se actualizó la aplicación para permitir descarga de archivos de todo tipo
  • Actualización de las acciones de las notificaciones: Ahora no sólo sirven para recordarnos borrar el historial. También incluyen la opción de abrir Firefox Focus a través de las notificaciones.

Mozilla tiene la misión de asegurarse que sus productos satisfagan las necesidades de los usuarios.Responder al feedback con mejoras rápidas y notables es su forma de decir gracias y dejarnos saber que nos están escuchando. Puedes descargar la última versión de Firefox Focus en Google Play App Store.

por Fernando, el 20 de julio de 2017 a las 20:00

17 de julio de 2017

Alejandro Segovia

Normal Mapping 2.0

This week we swtiched gears back into Rendering! A lot of work went into building Normal Mapping in the new Renderer. The following image shows the dramatic results:

Normal mapping in the new Deferred Renderer.

Normal mapping in the new Deferred Renderer.

Here, I switch back and forth between the regular Geometry Pass shader and a Normal Mapping-aware shader. Notice how Normal mapping dramatically changes the appearance of the bricks, making them feel less part of a flat surface and more like a real, coarse surface.

I initially discussed Normal Mapping back in 2014, so I definitely recommend you check out that post for more details on how the technique works. The biggest difference in building Normal Mapping in Vortex V3 compared to Vortex 2.0 was implementing it on top of the new Deferred Renderer.

There is more work to be done in terms of Normal Mapping, such as adding specular mapping, but I’m happy with the results so far. Next week we continue working on graphics! Stay tuned for more!

por Ale, el 17 de julio de 2017 a las 06:27

11 de julio de 2017

Alejandro Segovia

Putting it all together

This week has been a big one in terms of wrangling together several big pillars of the engine to provide wider functionality. The image below shows how we can now dynamically run an external Lua script that modifies the 3D world on the fly:

Vortex loading and running an external script that changes the texture of an entity's material.

Vortex loading and running an external script that changes the texture of an entity’s material.

In the image above, I’ve created two boxes. Both of these have different materials and each material references a different texture.

What you can see I’m doing is that I “mistakenly” drag from the Asset Library a character texture and assign it as the second box’s texture. Oh no! How can we fix this? It’s easy: just run an external script that will assign the first box’s texture to the second!

I’ve pasted the code of the script below:

function get_entity_material( entity )
	--get an entity's material
	local RENDER_COMPONENT_TYPE = 1
	local rendercomp = entity:first_component_of_type( RENDER_COMPONENT_TYPE )
	local material = rendercomp:get_material()
	return material;
end

ent0 = vtx.find_first_entity_by_name("box0")
mat0 = get_entity_material( ent0 )
tex0 = mat0:get_texture( "diffuseTex" )

ent1 = vtx.find_first_entity_by_name("box1")
mat1 = get_entity_material( ent1 )

mat1:set_texture( "diffuseTex", tex0 )

print("done")

As you can see, the script is pretty straightforward. It finds the boxes, drills all the way down to their materials and then assigns the texture of the first box to the second. The changes are immediately seen in the 3D world.

It’s worth noting that all function calls into the vtx namespace and derived objects are actually jumping into C++. This script is therefore dynamically manipulating engine objects, that’s why we see its effects in the scene view.

The function names are still work in progress, and admittedly, I need to write more scripts to see if these feel comfortable or if they’re too long and therefore hard to remember. My idea is to make the scripting interface as simple to use as possible, so please if you have any suggestions I would love to hear your feedback! Feel free to leave a comment below!

Next week I will continue working on adding more functionality to the scripting API, as well as adding more features to the renderer! Stay tuned for more!

por Ale, el 11 de julio de 2017 a las 18:38

10 de julio de 2017

Fernando Briano

Música, Maestro Splinter: Otra noche de música geek

Música, Maestro SplinterEn 2015 tuve la oportunidad de ser parte de la excelente noche musical: Música, Maestro Yoda. Este año el talentosísimo violinista Gerónimo Oyenard vuelve a liderar un cuarteto de cuerdas para otra noche de música geek. Con el objetivo de que la entrada sea gratuita, el espectáculo se va a financiar a través de una campaña en ColectaTe. A través de ella se puede adquirir varios artículos con arte realizado exclusivamente para el recital por distintos artistas. Les dejo la información, ¡nos vemos ahí!

Miércoles 12 de julio, 19:30 hrs.
Centro Cultural de España
Rincón 629 entre B. Mitre y Juan Carlos Gomez.

Después del suceso del concierto “Música, Maestro Yoda” (2015), el conjunto de cuerdas liderado por el violinista compatriota Geronimo Oyenard se apresta a lanzar su secuela espiritual. Para los que dicen que segundas partes nunca fueron buenas, esta edición incluirá partituras en arreglos originales de memorables bandas sonoras de películas superheroicas, de ciencia ficción, aventuras, animación y series televisivas de ayer, hoy y siempre.

El evento contará con la conducción de los comunicadores Ignacio Alcuri y Leo Lagos, así como también con la ambientación visual compaginada por el programador Fernando Briano. Para completar la presentación, contaremos con arte y souvenirs alusivos para el público, creados para la ocasión por reconocidos artistas de AUCH (Asoc. Uruguaya de Creadores de Historieta).
Los mismos podrán ser adquiridos a modo de recompensas a través de contribuciones en la página web de colectate, así como también en la antesala del concierto en cantidades limitadas o por encargo.

Músicos invitados: Clara Kruk (violín), Mariana Mastrogiovanni (viola), Adrián Borgarelli (violonchelo), Andrea Brassesco (soprano).
Artistas colaboradores: Nicolas Peruzzo, Matias Bergara, entre muchos otros.

La invitación en forma de cómic, por Nicolás Peruzzo.

La invitación en forma de cómic, por Nicolás Peruzzo.

La campaña

A fin de hacer el espectáculo accesible al público general en forma gratuita, la presente colecta tiene como objetivo recaudar fondos suficientes para compensar la labor de arreglos, ensayos y actuación de los músicos, así como también de los citados colaboradores, gastos técnicos y logísticos relacionados con el espectáculo.

Si la colecta superase el monto requerido, el saldo se destinará a la edición 2018 del evento y como donación a AUCH, cuyos artistas brindarán su trabajo en forma honoraria para el material gráfico alusivo. Cada contribuyente es libre de donar el monto que desee, calificando a las siguientes recompensas, con arte de los citados artistas a elección:

a) $ 150: asiento priorizado (pero no garantizado)*
b) $ 250: a) + print
c) $ 300: a) + pin
d) $ 350: a) + taza
e) $ 400: a) + elige tu bis de la siguiente lista! (Imágenes debajo)

  1. A. R. Juele: Spaghetti Western
  2. Nico Peruzzo: Alf-Roos
  3. Edgard Machiavello: Star Trek
  4. Fiorella Santana: Game of Thrones
  5. Gabriel Serra: Mad Max
  6. H. Hansz: James Bond
  7. Maco: Dr. Who
  8. Pablo Praino: Leonardo
  9. Pablo Praino: Splinter
  10. Sebastian Navas: X-Men
  11. Ignacio Alcuri: Star Wars
  12. Matias Bergara: Patoaventuras

Música, Maestro Splinter

d) $ 450: a) + remera

También aceptamos contribuciones menores y mayores que califiquen a dos o más de los ítems mencionados. Los amables donantes serán contactados por correo electrónico para especificar los detalles de su(s) recompensa(s) (diseño a seleccionar, talle de la remera, lista de bises).

*En función de la capacidad limitada de la sala (145 localidades), recomendamos a quienes contribuyan con $ 150 o más se presenten con suficiente anticipación la noche del concierto, a fin de tener un asiento priorizado.

En caso de que la concurrencia masiva al evento deje sin asiento a varios de nuestros contribuyentes, los artistas haremos todo lo posible para agregar una función V.I.P. en otra fecha y locación a determinar.

Auspician: Centro Cultural de España; AUCH; Montevideo Comics; Multiverseros

Campaña en ColectaTe

Les dejo un video de parte de lo que fue la primera edición, ¡nos vemos ahí!

por Fernando, el 10 de julio de 2017 a las 21:00

9 de julio de 2017

Enrique Almeida

Módulos en Genexus

En las últimas semanas, trabajé en la modularización de una KB grande, un proyecto que aun no finalizó.

Esto me llevo a reflexionar un poco sobre el estado actual de los módulos en GeneXus.

Mis reflexiones están basadas en la experiencia de trabajo de modularizacion algunas KB chicas en GeneXus 15 y una KB grande en Evolution 3. Faltarian varias mas para sacar conclusiones mas generales, pero creo que el intercambio de ideas de como se usan los módulos es necesario.

Para que sirven los módulos? 

Uno de los problemas que tienen los módulos, es que sirven para mucha cosas diferentes, lo cual ha hecho que se pierda un poco el foco hacia donde hay que seguir desarrollándolos.

Pueden servir para
* Entender mejor la KB
* Ayudar en el mantenimiento de la KB
* Distribuir el desarrollo entre varios integrantes o grupos
* Hacer mas fácil el Deploy de la aplicación
* Unir mas de una KB
* Distribución de binarios e interfaces.
* Hacer mas rapido el proceso de desarrollo

y algunos temas mas.

El tener tantos puntos fuertes, ha hecho que sea difícil enfocar la evolución de este objeto,

Por ejemplo, al ver las charlas de los Encuentros GeneXus anteriores, se ve un énfasis muy importante en la etapa de distribución de módulos como binarios (como hacen hoy GAM, GXFlow, etc), haciendo menos hincapié en los otros puntos.

Me parece que tanto el IDE de GeneXus, como los Patterns mas populares y GeneXus Server deberían avanzar para sacar provecho de lo que hoy tienen los módulos y también definir un plan de como van a seguir evolucionando estos objetos. Este plan, posiblemente exista y yo no lo conozco, pero me gustaria conocerlo.

En que se podría mejorar?


En el IDE de GeneXus:

* No hay una forma fácil de ver todos los objetos que pertenecen a un módulo.

* No es fácil saber a que módulo pertenece una tabla y tampoco saber si la tabla es publica o privada.

* Puedo exportar todos los objetos de un módulo, pero no puedo importar solo los objetos de un módulo de un xpz.

* Seria bueno poder seleccionar un módulo, y que hacer como que mi KB fuera solo ese módulo, sin ver mas que los objetos públicos de otro módulo.

* Es necesario, poder ponerle módulos a las tablas, en forma independiente de las transacciones, y también si son publicas o privadas. En muchas ocasiones, es bueno tener la transacción privada y la tabla publica.

* Hoy es obligatorio que una tabla sea publica, si tiene integridad referencial con tablas de otro módulo. Esto seria bueno poder cambiarlo.

* Si muevo un folder de módulo, no detecta que los objetos que estan dentro de dicho folder cambiaron de módulo, hasta que se realiza un build del objeto o de alguno que lo llame.

* Valorar en forma diferente las referencias a tablas. No es lo mismo un programa que actualiza una tabla fuera del módulo, a una transacción que hace un chequeo de integridad referencial. Hoy, debo poner la transaccion publica que genera la tabla como publica y dejar la tabla publica, para ambos casos, pero entiendo que seria mejor tratarlo en forma diferente.

GeneXus Server

* En el dialogo de Commit, se tiene el módulo, pero en el Update no.
Esto hace que si quiero actualizar objetos solo de un módulo, es bien difícil hacerlo.

* Una KB con módulos que tiene Build all exitoso, al querer subir los objetos cambiados, los Commits dan errores innecesarios al subir objetos en módulos.
Esto obliga a dividir el Commit en varios pasos.

* En los casos anteriores, al hacer el Update de dichos objetos, hay que también hacerlo en pasos, bajando primeros algunos y luego otros. En KB chicas esto es manejable. En KB grandes, es una perdida de tiempo enorme.


Patrones

* Solo como ejemplo, el WorkWith, genera un objeto ListPrograms, no se fija si los programas que llama son publico o privados, dando error en la especificación.  Seria bueno poder tener esto solucionado y no tener que borrarlo en cada KB. Se puede borrar en la KB y subir el cambio al server, pero cuando hago un Create KB from server, vuelve a crearse y a dar errores.

* (Para WW, WW+ y similares) Todos los objetos generados por una instancia, pertenecen al mismo módulo que el objeto en el que se basan dicha instancia. Puede ser interesante, que los objetos pertenezcan al mismo módulo de las tablas que recorren, pues sino, obligan a poner como publicas a tablas en forma innecesaria.

Si alguien llego hasta aquí, puede quedarse con la sensación que los módulos son un problema. En realidad, tienen una gran cantidad de virtudes y ventajas. Estas son solo algunas de las piedritas en el zapato, que pueden solucionarse.

Lo que pretendo es tratar de dar un poco de visibilidad al tema, para que los módulos sigan mejorando y puedan cumplir con todos sus objetivos.

Lo ideal, seria que dentro de unos años, podamos tener una KB que tenga solo mi módulo, subirlo al server y que se integre en un desarrollo mayor, sin tener que hacer  nada adicional. Y que se pueda distribuir en forma de binarios, con diferentes versiones, manejando tablas y reorganizaciones por módulos.

por noreply@blogger.com (Enrique Almeida), el 9 de julio de 2017 a las 22:30