Typescript está de moda. Un lenguaje fuertemente tipado, con objetos basados en clases, que viene a corregir los problemas históricos de javascript con el apoyo de Microsoft y Angular.
Por otro lado, Dart es un lenguaje desarrollado por Google como alternativa a javascript, que viene a cubrir también los problemas históricos de javascript.
¿Es Dart una alternativa real a Typescript?
En esta charla vamos a ver una comparativa "face to face" entre los 2 lenguajes, basada en ejemplos. Características, sintaxis, performance, ecosistema,...
¿Llegaremos a alguna conclusión?
node-db: La excusa perfecta para hablar de C++ y Node.jsMariano Iglesias
Un ejemplo de amistad entre C++ y Node.jsEsta charla introduce a node-db, una libreria para Node.js que busca ofrecer un soporte unificado a multiples bases de datos relacionales (MySQL y Oracle entre ellas), como una excusa para entrar al tema de fondo: el desarrollo de plugins para Node. js utilizando C++ y el motor V8
PARADIGMAS FP Y OOP USANDO TÉCNICAS AVANZADAS DE PROGRAMACIÓN ASÍNCRONAVíctor Bolinches
02/03/2017
Charla Universidad Politécnica de Valencia - https://www.upv.es/
Asingnatura : Auditoria, Calidad y Gestion de Sistemas de Información (ACG)
Máster Universitario en Ingeniería Informática - https://www.upv.es/titulaciones/MUIINF/
Slides for my talk in FrontFest 2018 (Madrid, Feb 17). It's a technical comparison of the change detection mechanism as implemented in AngularJS, React, Angular2 and VueJS
See demos at https://github.com/jabadia/frontfest-frameworks-demos
node-db: La excusa perfecta para hablar de C++ y Node.jsMariano Iglesias
Un ejemplo de amistad entre C++ y Node.jsEsta charla introduce a node-db, una libreria para Node.js que busca ofrecer un soporte unificado a multiples bases de datos relacionales (MySQL y Oracle entre ellas), como una excusa para entrar al tema de fondo: el desarrollo de plugins para Node. js utilizando C++ y el motor V8
PARADIGMAS FP Y OOP USANDO TÉCNICAS AVANZADAS DE PROGRAMACIÓN ASÍNCRONAVíctor Bolinches
02/03/2017
Charla Universidad Politécnica de Valencia - https://www.upv.es/
Asingnatura : Auditoria, Calidad y Gestion de Sistemas de Información (ACG)
Máster Universitario en Ingeniería Informática - https://www.upv.es/titulaciones/MUIINF/
Slides for my talk in FrontFest 2018 (Madrid, Feb 17). It's a technical comparison of the change detection mechanism as implemented in AngularJS, React, Angular2 and VueJS
See demos at https://github.com/jabadia/frontfest-frameworks-demos
Swift es el nuevo lenguaje de apple para el desarrollo de apps para iOS y aplicaciones para OSX. @sergiogl_ nos hizo esta introducción en el X Betabeers Badajoz (13/06/2014)
Programa para cifrar y descifrar cadenas
Desarrollado en C#, Visual Studio 2015
Algoritmos de Encripación y Desencriptación.
Práctica de un programa que puede ser agregado a una pantalla de login para generar cadenas encriptadas (cifradas)
Programación de Base de Datos
Unidad 2: Apps con arquitectura cliente-servidor
Ejemplo de aplicación cliente-servidor en C# utilizando conexiones TCP/IP
Tanto el cliente como el servidor están desarrollados en consola
Swift es el nuevo lenguaje de apple para el desarrollo de apps para iOS y aplicaciones para OSX. @sergiogl_ nos hizo esta introducción en el X Betabeers Badajoz (13/06/2014)
Programa para cifrar y descifrar cadenas
Desarrollado en C#, Visual Studio 2015
Algoritmos de Encripación y Desencriptación.
Práctica de un programa que puede ser agregado a una pantalla de login para generar cadenas encriptadas (cifradas)
Programación de Base de Datos
Unidad 2: Apps con arquitectura cliente-servidor
Ejemplo de aplicación cliente-servidor en C# utilizando conexiones TCP/IP
Tanto el cliente como el servidor están desarrollados en consola
The educational models of C.E.S.A.R. are focused on Employability and Education for Citizenship. The major motivation at the institute in designing these innovative educational models is to improve the student's life, fostering Social Leverage.
What is skeena2050 provides the details about the community building group that is withing in the Skeena Valley. The hosting organizations are Skeenawild and Skeena Watershed Conservation Coalition.
Javascript no para de expandirse y avanzar. Y ahora, con la llegada de EcmaScript 6, ciertos workflows y la forma de escribir código va a cambiar. Ahora los javascripters vamos a tener más herramientas en nuestras manos. Ya hay frameworks populares como Angular que sus futuras versiones vendrán en EcmaScript 6. ¿Porqué no hecharle un vistazo al futuro?
Charla impartida por Luis Calvo en la última edición de Codemotion (Madrid, Spain - Nov 21-22)
aqui estoy explicando un poco como son las estructuras de control de la Programacion orientada a objeto if-else, for, while,do-while,switch-case,exception
Angular 2 for dart mentiras y verdades (Google I/O extended Madrid)Rafael Bermúdez Míguez
A estas alturas todos sabemos que una aplicación Angular 2 se puede escribir en TypeScript o JavaScript. Sin embargo, no es tan conocido que viene con soporte oficial para Dart. Y lo cierto es que las únicas aplicaciones de Google en producción con Angular2 vienen de la mano de Dart. AdWords o GreenTea ya lo utilizan.
¿Tiene sentido utilizar Angular2 con Dart? ¿Ventajas e inconvenientes?
En esta charla veremos las diferencias entre Typescript y Dart, nos adentraremos en la creación de una aplicación Angular2 con Dart e intentaremos descubrir las verdades y mentiras que rodean este tema.
Muchos programadores piensan que enfrentarse a un reto extremo es muy complicado, lleva muchísimo tiempo y está al alcance de muy pocos. Pero no es así. Lo más importante es proponérselo, dar el primer paso y sobre todo divertirse. El primero igual no lo ganas, pero es que lo más importante no es eso, es aprender. En esta charla te doy las claves imprescindibles para tirarte a la piscina. Merece la pena. No tienes nada que perder y todo que ganar
Apache Cassandra es una base de datos NoSQL altamente escalable. Con la llegada de Gorm 5, se ha abordado una 'as-complete-as-possible' implementación GORM que mapea las clases de dominio e instancias a tablas de Cassandra 2.0. Veremos brevemente qué es Cassandra y qué MAGIA nos proporciona esta capa Gorm para hacernos la vida más fácil.
Construyendo tu propia bola de cristal predicción de precios con machine lea...Rafael Bermúdez Míguez
Hoy la información tiene un gran impacto en las decisiones. Conocer el timing en un mercado de compra/venta puede marcar diferencias.
Nos situamos en el mercado del videojuego, tenemos millones de registros de información histórica y queremos crear un sistema de análisis predictivo de fluctuaciones de precio.
¿Predecir el futuro?¿Por dónde empezar?
Abordamos nuestro caso real : OTOGAMI. Desde la definición del proyecto a la evaluación del resultado. Expondremos nuestras decisiones de producto, de arquitectura, tratamiento de datos, machine learning y todas las preguntas que seamos capaz de atender.
No es cosa de magos, y apta para todos los públicos.
Esperamos que sea inspiradora, ¡no te la pierdas!
Aunque se dice que cada proyecto es un mundo, tras participar en proyectos desde 5 perspectivas diferentes ( administración, pyme, consultoría, empresa multinacional y startup) he llegado a 7 conclusiones comunes.
En esta charla trataré de explicar mis 7 conclusiones sobre management de equipos y proyectos técnicos. Entre otras cosas abordaremos la estimación, gestión de equipo, el rol de jefe de proyecto o el de responsable de producto.
Presentación de la conferencia CorunaDev 2015 ( Coruña developers)
El Big Data ha llegado para quedarse. Y lo está cambiando todo. Cualquier aplicación reciente necesita funcionalidades Big Data. Hacer aplicaciones como antes tiene cada vez menos sentido.
Y sí, *como programador te afecta. Y mucho.*
Las opciones de almacenamiento, paralelización, concurrencia, escalabilidad o arquitecturas de aplicación están evolucionado rápidamente.
Programación reactiva, microservicios, cassandra, hadoop, spark,
¿Te atreves a ponerte al día en 40 min?
Xii betabeers galicia todo lo que me hubiera gustado saber cuando abrace el...Rafael Bermúdez Míguez
Todo lo que me hubiera gustado saber cuando abracé el agilismo
¿Eres nuevo en el mundo ágil? ¿Tienes experiencia pero crees que necesitas un empujón? ¿Sientes que cada pequeño problema que solucionas abre otros dos?
En esta charla cuento desde mi experiencia y mediante ejemplos prácticos todo lo que me hubiera gustado que alguien me hubiese contado cuando me introduje en el mundo ágil y que en muchos casos he aprendido “por las malas”. Prestaremos también atención a cómo enfocar la implantación de una metodología ágil (basada en Scrum y Kanban) en nuestra organización o adaptar una ya existente que no funciona debidamente.
Es una charla para gente que quiere acercarse a la gestión ágil o para alguien con conocimientos que quiera ver y debatir un punto de vista externo al suyo.
Presentado en:
http://betabeers.com/event/xii-betabeers-galicia-coruna-1583/
Catalogo general Ariston Amado Salvador distribuidor oficial ValenciaAMADO SALVADOR
Distribuidor Oficial Ariston en Valencia: Amado Salvador distribuidor autorizado de Ariston, una marca líder en soluciones de calefacción y agua caliente sanitaria. Amado Salvador pone a tu disposición el catálogo completo de Ariston, encontrarás una amplia gama de productos diseñados para satisfacer las necesidades de hogares y empresas.
Calderas de condensación: Ofrecemos calderas de alta eficiencia energética que aprovechan al máximo el calor residual. Estas calderas Ariston son ideales para reducir el consumo de gas y minimizar las emisiones de CO2.
Bombas de calor: Las bombas de calor Ariston son una opción sostenible para la producción de agua caliente. Utilizan energía renovable del aire o el suelo para calentar el agua, lo que las convierte en una alternativa ecológica.
Termos eléctricos: Los termos eléctricos, como el modelo VELIS TECH DRY (sustito de los modelos Duo de Fleck), ofrecen diseño moderno y conectividad WIFI. Son ideales para hogares donde se necesita agua caliente de forma rápida y eficiente.
Aerotermia: Si buscas una solución aún más sostenible, considera la aerotermia. Esta tecnología extrae energía del aire exterior para calentar tu hogar y agua. Además, puede ser elegible para subvenciones locales.
Amado Salvador es el distribuidor oficial de Ariston en Valencia. Explora el catálogo y descubre cómo mejorar la comodidad y la eficiencia en tu hogar o negocio.
HPE presenta una competició destinada a estudiants, que busca fomentar habilitats tecnològiques i promoure la innovació en un entorn STEAM (Ciència, Tecnologia, Enginyeria, Arts i Matemàtiques). A través de diverses fases, els equips han de resoldre reptes mensuals basats en àrees com algorísmica, desenvolupament de programari, infraestructures tecnològiques, intel·ligència artificial i altres tecnologies. Els millors equips tenen l'oportunitat de desenvolupar un projecte més gran en una fase presencial final, on han de crear una solució concreta per a un conflicte real relacionat amb la sostenibilitat. Aquesta competició promou la inclusió, la sostenibilitat i l'accessibilitat tecnològica, alineant-se amb els Objectius de Desenvolupament Sostenible de l'ONU.
Catalogo Cajas Fuertes BTV Amado Salvador Distribuidor OficialAMADO SALVADOR
Explora el catálogo completo de cajas fuertes BTV, disponible a través de Amado Salvador, distribuidor oficial de BTV. Este catálogo presenta una amplia variedad de cajas fuertes, cada una diseñada con la más alta calidad para ofrecer la máxima seguridad y satisfacer las diversas necesidades de protección de nuestros clientes.
En Amado Salvador, como distribuidor oficial de BTV, ofrecemos productos que destacan por su innovación, durabilidad y robustez. Las cajas fuertes BTV son reconocidas por su eficiencia en la protección contra robos, incendios y otros riesgos, lo que las convierte en una opción ideal tanto para uso doméstico como comercial.
Amado Salvador, distribuidor oficial BTV, asegura que cada producto cumpla con los más estrictos estándares de calidad y seguridad. Al adquirir una caja fuerte a través de Amado Salvador, distribuidor oficial BTV, los clientes pueden tener la tranquilidad de que están obteniendo una solución confiable y duradera para la protección de sus pertenencias.
Este catálogo incluye detalles técnicos, características y opciones de personalización de cada modelo de caja fuerte BTV. Desde cajas fuertes empotrables hasta modelos de alta seguridad, Amado Salvador, como distribuidor oficial de BTV, tiene la solución perfecta para cualquier necesidad de seguridad. No pierdas la oportunidad de conocer todos los beneficios y características de las cajas fuertes BTV y protege lo que más valoras con la calidad y seguridad que solo BTV y Amado Salvador, distribuidor oficial BTV, pueden ofrecerte.
2. Hoja de personaje
Rafael Bermúdez Míguez
Gallego
Caótico soñador infinitemonkeys
@inf_monkeys
I coding
● @rafbermudez
● rafa@rafbermudez.com
3. ● Google (2011)
○ v1.0 en 2014
○ Open source: BSD
● Propósito general
○ Orientado a objetos
○ Orientado a tipado dinámico
○ Transcompila a Javascript
■ ES5
Contexto
● Microsoft (2012)
○ v1.0 en 2014 (actualmente v2.0)
○ Open source: Apache 2.0
● Superset de Javascript
○ Orientado a objetos
○ Orientado a tipado estático
○ Transcompila a Javascript
■ ES5*, ES6, …
5. // Named function
function add(x, y) {
return x + y;
}
// Named function
add(x, y) {
return x + y;
}
Funciones
// Anonymous arrow function EC6
let myAdd = (x, y) => x+y;
// Anonymous function
let myAdd = function(x, y) { return x+y; };
// First class functions
let useFunc = (x, f) => f(x);
let result = useFunc (2, (a) => a * a); //4
// Anonymous function
var myAdd = (x, y) => x+y;
// First class functions
var useFunc = (x, f) => f(x);
var result = useFunc (2, (a) => a * a); //4
6. // Default params
function add(x, y = 2) {
return x + y;
}
// Default params
add(x, y: 2 ) {
return x + y;
}
Params. por defecto | opcionales
// Optional params
function add(x, y, z?){
let result = x + y;
if (z) { result +=z; }
return result;
}
// Optional params
add(x, y, [z]) {
var result = x+y;
if (z !=null) { result +=z;}
return result;
}
7. function add(x, y, z?) {
var result = x + y;
if (z) { var result = x + y + z; }
return result;
}
let a = add(1,1,1) // 3
add(x, y, [z]) {
var result = x+y;
if (z !=null) { var result = x + y + z;}
return result;
}
var a = add(1,1,1) // 2
Ámbito de las variables
function add(x, y, z?) {
let result = x + y;
if (z) { let result = x + y + z; }
return result;
}
let a = add(1,1,1) // 2
10. ¿Por qué?
Typescript respeta el function scope de Javascript
*Las funciones de flecha capturan la función donde se crea en lugar de donde
se invoca.
Troleo Quiz 1
12. // Named function
function add(x: number, y: number): number {
return x + y;
}
// Named function
num add(num x, num y) {
return x + y;
}
Tipos
// Anonymous arrow function EC6
let myAdd = (x:number, y:number):number => x+y;
// Anonymous function
let myAdd = (baseValue: number, increment: number) => number =
function(x: number, y: number): number {
return x + y;
};
/ Anonymous function
num myAdd = ( num x, num y) => x+y;
13. let a = 3; //inference, x:number var a = 3; //Optional types, dynamic, not inference
Tipos: Inferencia
// Anonymous arrow function EC6
let myAdd = (x:number, y:number):number => x+y;
//inference, myAdd: (number, number) => number
// Anonymous function
num myAdd = ( num x, num y) => x+y;
14. // Anonymous function
int myAdd = ( int x, int y) => x+y;
int myAdd = ( num x, num y) => x+y; //Implicit cast
// Anonymous arrow function EC6
let myAdd = (x:number, y:number):number => x+y;
// Named function
function add(x: number, y: number): number {
return x + y;
}
// Named function
int add(int x, int y) {
return x + y;
}
Tipos Básicos
number: double-precision 64-bit (IEEE) int <: num
16. var parrot: Parrot = new Sparrow();
¿?
var sparrow: Sparrow = new Parrot();
¿?
Troleo Quiz 2
class Sparrow {
sound = "cheep";
}
class Parrot {
sound = "squawk";
}
class Duck {
sound = "quack";
swim(){
alert("Going for a dip!");
}
}
Sustituíble
Sustituíble
17. var parrot2: Parrot= new Duck();
¿?
var duck: Duck = new Parrot();
¿?
Troleo Quiz 2
class Sparrow {
sound = "cheep";
}
class Parrot {
sound = "squawk";
}
class Duck {
sound = "quack";
swim(){
alert("Going for a dip!");
}
}
Sustituíble
IDE & compiler error
19. Dart utiliza Duck Typing dinámico
( en tiempo de ejecución)
o
Dart utiliza Duck Typing estático
(en tiempo de compilación)
activando el checked mode
Troleo Quiz 2
TypeScript utiliza Duck Typing estático
( en tiempo de compilación)
Hace posible la implementación ágil de
interfaces, el uso de union types, …
25. var f = new Foo();
f.myMethod(1);
¿?
Troleo Quiz 3
class Foo {
myMethod(a: number){
alert(a.toString());
}
myMethod(a: string) {
alert(a);
}
}
var f = new Foo();
f.myMethod(1);
IDE & compiler error
26. ¿Por qué?
Duplicate method implementation
Una única implementación por función. Evítalo utilizando Type union
Troleo Quiz 3
28. // models/Dog.ts
class Dog {
name:string;
constructor(name:string) {this.name = name;}
makeSound() {
return "guau";
}
}
export = Dog;
// models/Dog.dart
class Dog {
String name;
Dog(String name) {this.name = name;}
makeSound() {
return "guau";
}
}
Módulos
___________________________
// main.ts
import Dog = require('models/Dog');
var dog = new Dog(“Pancho”);
console.log(dog.makeSound());
____________________________
// main.dart
import 'models/Dog.dart' show Dog;
var dog = new Dog(“Pancho”);
print(dog.makeSound());
29. // Arrays
let numberList: number[] = [1, 2, 3];
let numberList: Array<number> = [1, 2, 3];
// Enums
enum Color {Red, Green, Blue};
let c: Color = Color.Green;
// Tuples
let x: [string, number];
x = ["hello", 10]; // OK
x = [10, "hello"]; // Error
// Sin soporte nativo para Maps, Sets, ...
// ES6 MapCollections
// Lists
List numberList = [1, 2, 3];
List<string, num> x = ["hello", 10]; //Tuple
//Enums
enum Color {Red, Green, Blue};
Color c = Color.Green
//Maps
var accounts = {'bob@example.com': new Account(/* … */),
'john@example.com': new Account(/* … */)};
//Set, Queue, …
//Soporte a muchas más colecciones (e
implementaciones) a través del paquete collections
Colecciones
30. ● Nativamente
○ Futuros
■ Async/await
■ Future API
○ Streams
■ Asynchronous for loop
■ Stream API
● A través de ES6
○ Async/await
○ Promesas
● Librerías de terceros
○ Streams
Soporte asíncrono
31. async function doPing() {
await ping();
}
async function ping() {
for (var i = 0; i < 10; i++) {
await delay(300);
console.log(“ping”);
}
}
function delay(ms: number) {
return new Promise(resolve => setTimeout(resolve, ms));
}
doPing();
doPing() async {
await ping();
}
ping() async {
for (var i = 0; i < 10; i++) {
await delay(300);
print(“ping”);
}
}
Future delay(num ms) {
return new Future.delayed(ms));
}
doPing();
Async/await, promesas y
futuros
33. ¿Angular2 está pensado para TypeScript?
¿?
Troleo Quiz 4
¿Typescript es todo lo que necesito?
¿?
NPM
SystemJs
Jasmine
Js minification
Gulp
...
Sí, pero Angular 2 nace de
AngularDart!
38. ¿Comunidad en stack overflow?
¿?
¿El equipo de Google Dart me da soporte directo
por slack?
¿?
Troleo Quiz 5
¿Aplicaciones reales (y grandes) con Dart?
¿?AdWords y Greentea
15.362 hilos
Tiempo medio de
respuesta = ¡¡ 6 min !!