martes, 14 de mayo de 2024

Google I/O 16 para desarrolladores 😍


Como fan de Google que soy, obligatoriamente debía ver el Google I/O de hoy.
Además, ahora dentro del mundo del emprendimiento, tengo la facilidad de libertad de horario:
Puedo ver al mediodía una conferencia de Google, y si hay más qué hacer, se hará así deba quedarme hasta tarde.
Pero no es posible que siendo empleado, no podía ver dicha conferencia porque no aporta a mis funciones dentro del empleo... y también deba quedarme hasta tarde 🙄

Todo esto era para hacer bilis para demostrar mi lado humano, y que los bots no piensen que esto fue generado por una inteligencia artificial.

Teniendo en cuenta que casi todo va de la mano de Android Studio:



Jetpack Compose:

Novedades:

  • Lanzamiento oficial: Jetpack Compose (para desarrollo de interfaces de usuario en Android) está oficialmente disponible para el pueblo.
  • Nuevas funciones: Se introdujeron nuevas funcionalidades como soporte para pantallas plegables, mejoras en el rendimiento, nuevas APIs de animación e integración con Compose for Desktop.
  • Herramientas y recursos: Se anunció la actualización de Android Studio con soporte para Jetpack Compose, la publicación de documentación oficial y ejemplos de código, y la creación de una comunidad de desarrolladores.

Casos de éxito:

  • Google Maps: Se explicó cómo Jetpack Compose había mejorado el rendimiento y la fluidez de la interfaz de usuario de Google Maps.
  • Twitter: Se detalló cómo Twitter había utilizado Jetpack Compose para crear una experiencia de usuario más moderna y atractiva.
  • Duolingo: Se mostró cómo Duolingo había aprovechado Jetpack Compose para mejorar la accesibilidad y la usabilidad de su aplicación de aprendizaje de idiomas.

Facilidades para desarrolladores:

  • Desarrollo multiplataforma: Permite crear interfaces de usuario para Android, iOS, web, escritorio y dispositivos integrados con una sola base de código.
  • Rendimiento nativo: Las aplicaciones Jetpack Compose se ejecutan de forma nativa en cada plataforma, ofreciendo una experiencia fluida y receptiva.
  • Interfaz de usuario moderna: Permite crear interfaces de usuario modernas y atractivas con widgets personalizables.
  • Desarrollo rápido: Ofrece herramientas y recursos que agilizan el proceso de desarrollo.
  • Comunidad grande y activa: Cuenta con una comunidad de desarrolladores en constante crecimiento que proporciona soporte y comparte recursos.

Desarrollo web moderno con Google:

Novedades:

  • Nuevas herramientas y tecnologías: Se presentaron nuevas herramientas como GWT, Angular, React, Vue.js, Firebase y Jamstack.
  • Nuevas funciones para plataformas web de Google: Se introdujeron nuevas funciones como WebAssembly, Progressive Web Apps (PWAs) y AMP (Accelerated Mobile Pages).
  • Consejos y recomendaciones: Se brindaron consejos para crear sitios web modernos y de alto rendimiento, como utilizar un enfoque de diseño móvil primero, optimizar el rendimiento para la carga rápida de páginas, crear interfaces de usuario intuitivas y fáciles de usar, aprovechar las herramientas de análisis web para comprender el comportamiento del usuario y mantener el código limpio y bien documentado.

Casos de éxito:

  • Aplicaciones web de Google: Google Pay, Google Stadia, Flutter Gallery.
  • Aplicaciones de terceros: HAMILTON, Reflectly, Nubank, Mercado Libre.

Facilidades para desarrolladores:

  • Desarrollo multiplataforma: Permite crear aplicaciones web que se ejecutan en diferentes navegadores y dispositivos.
  • Rendimiento y escalabilidad: Ofrece herramientas y tecnologías para crear aplicaciones web de alto rendimiento y escalables.
  • Seguridad y confiabilidad: Brinda servicios de seguridad y confiabilidad para proteger las aplicaciones web.
  • Facilidad de uso: Ofrece herramientas y recursos para facilitar el desarrollo de aplicaciones web.
  • Comunidad grande y activa: Cuenta con una comunidad de desarrolladores web en constante crecimiento que proporciona soporte y comparte recursos.

IA y aprendizaje automático para desarrolladores:

Novedades:

  • Últimas herramientas de IA: TensorFlow, PyTorch, AutoML, AI Platform.
  • Disponibilidad: La mayoría de las herramientas eran de código abierto y disponibles al público en general.
  • Ejemplos: Reconocimiento de voz, visión artificial, traducción automática, chatbots, generación de contenido.

Casos de éxito:

  • Spotify: Utiliza el aprendizaje automático para recomendar música a sus usuarios.
  • Netflix: Utiliza el aprendizaje automático para personalizar las recomendaciones de películas y series a sus usuarios.
  • Uber: Utiliza el aprendizaje automático para optimizar las rutas de sus conductores.

Facilidades para desarrolladores:

  • Herramientas de código abierto: La mayoría de las herramientas de IA y aprendizaje automático son de código abierto y gratuitas.
  • Plataformas en la nube: Google Cloud Platform, Amazon Web Services, Microsoft Azure.
  • Recursos educativos: Tuturiales, cursos en línea, documentación.
  • Comunidad de desarrolladores: Foros, grupos en línea, eventos.

Google Cloud Platform:

Novedades:

  • Anthos: Plataforma para implementar y gestionar aplicaciones en múltiples entornos.
  • BigQuery: Almacén de datos en la nube para análisis a gran escala.
  • Vertex AI: Plataforma unificada para el desarrollo y la implementación de modelos de IA.
  • Looker: Plataforma de business intelligence para la visualización y el análisis de datos.
  • Cloud Spanner: Base de datos relacional globalmente distribuida y altamente escalable.
  • Cloud Run: Plataforma sin servidor para ejecutar contenedores sin necesidad de administrar infraestructura.

Casos de éxito:

  • Spotify: Utiliza Cloud Storage para almacenar su biblioteca de música y Cloud CDN para distribuirla a nivel mundial.
  • The New York Times: Utiliza BigQuery para analizar datos de lectores y mejorar su contenido.
  • Evernote: Utiliza Cloud Spanner para gestionar su base de datos global de notas.
  • Coca-Cola: Utiliza Vertex AI para desarrollar modelos de IA que optimizan su cadena de suministro.
  • Twitter: Utiliza Cloud Run para ejecutar sus microservicios y escalar rápidamente.

Tipos de aplicaciones en la nube:

  • Aplicaciones web y móviles: Desarrolla y despliega aplicaciones web y móviles escalables y de alto rendimiento.
  • Análisis de datos: Almacena, procesa y analiza grandes conjuntos de datos para obtener información valiosa.
  • Aprendizaje automático: Entrena, implementa y escala modelos de aprendizaje automático para resolver problemas complejos.
  • Internet de las cosas (IoT): Conecta y gestiona dispositivos IoT en la nube.
  • Computación de alto rendimiento (HPC): Ejecuta cargas de trabajo de HPC en la nube para resolver problemas científicos y de ingeniería complejos.

Facilidades para desarrolladores:

  • Entorno de desarrollo gratuito: Google Cloud ofrece un entorno de desarrollo gratuito para que los desarrolladores puedan probar sus aplicaciones en la nube sin costo.
  • Herramientas de desarrollo: Google Cloud proporciona una amplia gama de herramientas de desarrollo para ayudarte a crear, implementar y administrar tus aplicaciones en la nube.
  • Documentación y tutoriales: Google Cloud ofrece una amplia documentación y tutoriales para ayudarte a comenzar a usar sus servicios.
  • Soporte de la comunidad: Google Cloud tiene una comunidad activa de desarrolladores que pueden ayudarte con tus preguntas y problemas.

Google I/O Keynote Dev presentó una gran cantidad de novedades emocionantes para los desarrolladores, incluyendo el lanzamiento oficial de Jetpack Compose, nuevas herramientas y tecnologías para el desarrollo web moderno, nuevas herramientas de IA y aprendizaje automático, y nuevas funcionalidades para Google Cloud Platform.
Estas novedades ofrecen a los desarrolladores una gran variedad de posibilidades para crear aplicaciones innovadoras y de alto rendimiento.


Recibe en tu correo electrónico las últimas actualizaciones de éste blog:
Ingrese su e-mail:

(y no olvide confirmar su suscripción)
También me encuentras en facebook. También en twitter. También en tumblr.

sábado, 16 de febrero de 2019

ColumnDelimiter en SSIS




Trabajar con Integration Services, puede ser muy práctico para crear soluciones ETL de manera gráfica como interacción entre SQL, C#, y accesos a diferentes inputs y outputs;
Pero también puede resultar todo un dolor de cabeza para realizar un cambio en 50 archivos planos CSV, donde tienes que ingresar conexión por conexión, para editar el delimitador de columna.

Peor aún, es querer realizar el cambio en el XML correspondiente al paquete dtsx, y no tener la codificación correspondiente para cada símbolo a usar como delimitador.

Como primer paso, debemos abrir el paquete a modificar, en edición de código (presionando F7 sobre el paquete, o escogiendo la opción del menú desplegable al hacer clic sobre dicho paquete).

Luego, al visualizar el código XML, debemos buscar lo siguiente:
ColumnDelimiter

Dependiendo de la versión de Visual Studio, podrá verse así:
<DTS:Property DTS:Name="ColumnDelimiter" xml:space="preserve">XXX</DTS:Property>
o así (VS2017):
DTS:ColumnDelimiter="XXX"

Donde XXX es la notación SSIS (SQL Server Integration Services).
A continuación, un mapeo de estos valores:

Notación SSIS Elemento
_x000D__x000A_ {CR}{LF}
_x003B_ Punto y coma (;)
_x002C_ Coma (,)







Recibe en tu correo electrónico las últimas actualizaciones de éste blog:
Ingrese su e-mail:
(y no olvide confirmar su suscripción)
También me encuentras en facebook. También en twitter. También en tumblr.

martes, 17 de mayo de 2016

El error de la base octal en Java



Todo empezó con una sencilla pregunta

¿Cuál es el resultado de la siguiente línea de código en java?:
int suma = 023 + 010;
System.out.println(suma); 
Pero utilizar la regla de "el cero a la izquierda no tiene valor" es la alternativa equivocada:
Lo que en lenguaje natural procesamos como una suma de resultado = 33;
para Java, el 0 a la izquierda se utiliza para expresar números en base 8, por lo que la suma tiene un resultado distinto:
  • 023 = 2*8 + 3 = 19:
  • 010 = 1*8 + 0 = 8;
  • 19 + 8 = 27.

Pueden comprobarlo en este compilador online, copiando/pegando las líneas de código puestas arriba.

Entonces, dicho con expresiones Java: 23 != 023
Y nótese que hasta el analizador web de sintaxis los muestra de distintos colores.

Bases aritméticas en Java

Java comprende el uso de base decimal, hexadecimal, octal y binaria.
Y se utilizan de la siguiente manera:
// Base decimal (10), comprende dígitos [0-9]
int decimal = 495; 
// Base hexadecimal (16), empieza con 0x o 0X, comprende dígitos y letras [0-9A-Fa-f]
int hexa = 0x1EF;  
// Base octal (8), empieza con 0, comprende dígitos [0-7]
int octal = 0757; 
// Base binaria (2), empieza con 0b o 0B, y comprende dígitos [0-1]
int binario = 0b111101111;
¿El problema es el lenguaje natural, o el problema es java?

Así como el error de interpretación; puede surgir un error de concatenación (para algoritmos de seguridad y encriptación, por ejemplo)
Entonces, pensando en calcular un número, internamente Java calculará su equivalente en base octal... lo que potencialmente podría significar un error.

Mi propuesta:
Como la gente de Sun Microsystems Oracle sigue diariamente mi humilde blog, propongo que -tal cual base 2 y base 16, utilicen una notación especial para base 8: 0b, 0x, y 0o respectivamente.
(Y no, el "0" no se confunde con la "o", porque hasta la RAE ya eliminó la "ó" usada antiguamente para diferenciarla del cero).
Así que aquí la lanzo, aunque sea otra idea muerta en el ciberespacio.



Recibe en tu correo electrónico las últimas actualizaciones de éste blog:
Ingrese su e-mail:
(y no olvide confirmar su suscripción)
También me encuentras en facebook. También en twitter. También en tumblr.

viernes, 11 de marzo de 2016

Carreras de Computación en el Perú (2006)


Al año 2006, el club "Colegio de Ingenieros del Perú" contaba con un catálogo de nomenclaturas de carreras relacionadas a Computación:

NombreTotalEstadoPrivadas
Ciencias de la Computación321
Computación110
Computación Científica110
Estadística e Informática330
Ingeniería de Computación y Sistemas707
Ingeniería de Sistemas391920
Ingeniería de Sistemas de Información101
Ingeniería de Sistemas de Información y Gestión101
Ingeniería de Sistemas e Informática1248
Ingeniería de Sistemas Empresariales101
Ingeniería de Sistemas y Computación101
Ingeniería de Sistemas y Cómputo101
Ingeniería de Sistemas y Seguridad Informática101
Ingeniería de Software413
Ingeniería de Tecnologías de Información y Sistemas101
Ingeniería en Computación e Informática110
Ingeniería en Informática y Sistemas110
Ingeniería en Teleinformática101
Ingeniería Industrial y Sistemas101
Ingeniería Industrial con especialidad en Sistemas110
Ingeniería Informática1248
Ingeniería Informática y de Sistemas734
Matemática con especialidad en Computación110
Total1024260
41.18%58.82%

A pesar de tener el mismo nombre, en varios de los casos, el contenido NO ES COMPATIBLE, y por lo tanto no es posible afirmar que dos profesionales con el mismo título sean compatibles.

10 años después, no sé qué tanto han cambiado las cosas (tampoco encuentro una información parecida, actualizada).
Pero sigue existiendo la misma ambigüedad e incompatibilidad entre las carreras.

¿Habrá mejorado esta situación?

jueves, 18 de febrero de 2016

El fenómeno a observar y el observador




Muchos hombres rebalsaron el agua de la bañera antes que Arquímedes;
Muchas manzanas cayeron de los árboles desde el entonces jardín del Edén,
y (la fuerza de) la avalancha de vapor pudo ser notada en cualquier momento desde que se hirvió agua en una olla con tapa.

Todos estos casos ocurrieron eones antes de que su propio significado (y utilidad) sean percibidos.
Obviamente, un descubrimiento casual involucra tanto el fenómeno a observar y un apropiado e inteligente observador.

* Traducción libre, no literal
Walter CannonThe Way of an Investigator (1945)

(Previamente publicado aquí)