Pop

Curso diseño de bases de datos 3.Creamos nuestro diagrama entidad relación

3. Creamos nuestro diagrama entidad relación

  • Hola a todos. En esta serie de vídeos pretendo diseñar una base de datos partiendo de unas especificaciones iniciales proporcionadas por un cliente. En este tercer vídeo creamos nuestro modelo entidad relación en la web https://creately.com/es/crear-diagrama-entidad-relacion
  • Este es el diagrama que hemos creado para resolver nuestro problema:

  • En el vídeo os explico el proceso de creación del diagrama que tenemos en la imagen superior:



Curso .NET Core en C# - 16.Pasando datos desde un controlador a la Vista

16. Pasando datos desde un controlador a la Vista

  • Hola a todos. En este curso, analizaremos todos los conceptos básicos, intermedios y avanzados de ASP.NET Core que nos ayudan a crear aplicaciones web basadas en datos.Al final de este curso, podremos realizar todas las operaciones de un CRUD, es decir, crear, leer, actualizar y eliminar datos  utilizando SQL Server como nuestra base de datos.
  • En este vídeo veremos diferentes formas de pasar datos a una Vista desde un Controlador en ASP.NET Core MVC. Tenemos 3 formas de pasar datos de un controlador a una vista
    • Usando ViewData
    • Usando ViewBag
    • Usando un objeto del modelo fuertemente tipado.
  • En el vídeo mostramos como se hace:

  • Método  ViewData. Añadimos esto a la clase  homeContrller
   public ViewResult Details()
        {
            Amigo modelo = amigoAlmacen.dameDatosAmigo(2);

            ViewData["Cabecera"] = "LISTA AMIGOS";
            ViewData["Amigo"] = modelo;

            return View(modelo);
        

        }

    •  y ponemos esto en el código de la de la vista.
    <h3>@ViewData["Cabecera"]</h3>

    @{
        var amigo = ViewData["Amigo"] as Ejemplo1.Models.Amigo;
    }

    <div>
        Nombre : @amigo.Nombre
    </div>
    <div>
        Email : @amigo.Email
    </div>
    <div>
        Ciudad : @amigo.Ciudad
    </div>
  • Método  ViewBag . Es muy similar a ViewData sólo que con ViewBag usamos propiedades dinámicas en lugar de claves de cadena.
  • Generalmente no usamos ViewData o ViewBag. El enfoque preferido para pasar datos de un controlador a una vista es mediante el uso de un objeto modelo fuertemente tipado.Os dejo el código de la vista:
@model Ejemplo1.Models.Amigo

        public ViewResult Details()
        {
            Amigo amigo = amigoAlmacen.dameDatosAmigo(2);

            ViewData["Cabecera"] = "LISTA AMIGOS";
            ViewData["Amigo"] = amigo;

            ViewBag.Titulo = "LISTA AMIGOS ViewBag";
            ViewBag.Amigo = amigo;

            return View(amigo);
        }
    <h3>Fuertemente tipado</h3>
    <div>
        Nombre:@amigo.Nombre
    </div>
    <div>
        Email:@amigo.Email

    </div>
    <div>
        Ciudad:@amigo.Ciudad
    </div>

Curso .NET Core en C# - 15..Conociendo las vistas (MVC)

15. Conociendo las vistas (MVC)

  • Hola a todos. En este curso, analizaremos todos los conceptos básicos, intermedios y avanzados de ASP.NET Core que nos ayudan a crear aplicaciones web basadas en datos.Al final de este curso, podremos realizar todas las operaciones de un CRUD, es decir, crear, leer, actualizar y eliminar datos  utilizando SQL Server como nuestra base de datos.
  • En este vídeo hablaremos sobre las vistas.Básicamente contienen la lógica para mostrar los datos del modelo que le proporciona el controlador. Las vistas son plantillas HTML con marcado Razor incrustado. De forma predeterminada, MVC busca ver archivos en la carpeta Vistas.
  • Los archivos de vista que pertenecen a un controlador específico se almacenan en una subcarpeta en la carpeta Vistas y esa subcarpeta tiene el mismo nombre que el controlador. El archivo de vista tiene el mismo nombre que el del método de acción del controlador con una extensión .cshtml
  • En el siguiente vídeo lo explicamos:

  • Os dejo  el código de la clase  HomeController visto en el vídeo:
public class HomeController:Controller
{
        private IAmigoAlmacen amigoAlmacen;

        public HomeController(IAmigoAlmacen AmigoAlmacen)
        {
            amigoAlmacen = AmigoAlmacen;
        }

        //public string Index()
        //{
        //    return amigoAlmacen.dameDatosAmigo(3).Email;
        //}

        //public JsonResult Details()
        //{
        //    Amigo modelo = amigoAlmacen.dameDatosAmigo(1);
        //    return Json(modelo);
        //}

        public ViewResult Index()
        {
            Amigo modelo = amigoAlmacen.dameDatosAmigo(1);
            return View(modelo);
        }

        public ViewResult Details()
        {
            Amigo modelo = amigoAlmacen.dameDatosAmigo(2);
            return View(modelo);
        }
}

Curso diseño de bases de datos 2.Modelo entidad relación

2. Modelo entidad relación

  • Hola a todos. En esta serie de vídeos pretendo diseñar una base de datos partiendo de unas especificaciones iniciales proporcionadas por un cliente. En este segundo vídeo veremos la teoría del modelo entidad relación:
  • Os dejo un resumen de lo visto en el vídeo:
    • Entidad/Relación (E/R): Se trata de una descripción a alto nivel de la distribución de los datos procesados en un sistema.
      • Entidades: Objeto real o abstracto, sobre el que se desea almacenar información en la BBDD.
        •  Existencia Propia
        • Sea diferente de las demás Todas las ocurrencias de la entidad tienen que tener los mismos atributos. 
        • Clases: Regulares (existen por si mismas) también llamadas fuertes.Débiles, su existencia depende de otra.
        •  Dependencia de Existencia: La entidad débil tiene su propia clave y no necesita la clave de la fuerte para identificarse.
        •  Dependencia de Identidad: La entidad débil no se puede identificar sin la clave de la fuerte.
      • Relación: Asociación entre una o varias entidades.
        • Nombre que la distingue del resto.
        • Cardinalidad: número de tuplas de una entidad. 1:N. 
        • Tipo de Correspondencia: número máximo y mínimo de ocurrencias que se relacionan entre una o varias entidades.
          • Relaciones 1:N: Cada ocurrencia de una entidad puede relacionarse con 0, 1 o varias ocurrencias dela otra entidad.
          •  Relaciones M:N: Cada ocurrencia de una entidad puede estar relacionada con 0, 1  varias ocurrencias de la otra entidad y viceversa.
          • Relaciones 1:1: Cada ocurrencia de una entidad se relaciona con una y sólo una de otra entidad.
        • Tipos:
          • Regulares: Asocian 2 entidades regulares.
          • Débiles: Asocian una entidad regular con una débil.
          •  Recursiva: Asocia una entidad consigo misma. También llamada reflexiva, unaria.
          • Exclusiva: Si se relaciona con una, no se puede relacionar con la otra. 
          • Ternaria, Cuaternaria, etc: Relaciona más de dos entidades.
      • Atributo:Propiedad de un tipo de la entidad. Cada tipo de entidad ha de tener un conjunto mínimo de atributos que identifiquen unívocamente su ocurrencia. Es el atributo o conjunto de atributos denominados identificador principal (la clave).
        • Clases:
          • Univaluado: Sólo un valor para todas las ocurrencias. 
          • Obligatorio: Debe tomar al menos un valor.
          • Identificador o clave: Identifica inequívocamente a cada ocurrencia.
          •  Multivaluado: pude tomar varios valores.
          •  Derivado: se puede sacar de otro atributo.
          • Compuesto: Atributo compuesto por varios atributos simples.
        •   Dominio: Conjunto de valores que puede tomar un atributo. Tiene existencia propia con independencia de entidad, relación o atributo.

Curso .NET Core en C# - 14..Conociendo los controladores (MVC)

14. Conociendo los controladores (MVC)

  • Hola a todos. En este curso, analizaremos todos los conceptos básicos, intermedios y avanzados de ASP.NET Core que nos ayudan a crear aplicaciones web basadas en datos.Al final de este curso, podremos realizar todas las operaciones de un CRUD, es decir, crear, leer, actualizar y eliminar datos  utilizando SQL Server como nuestra base de datos.
  • En este vídeo profundizaremos un poco en el funcionamiento de los  controladores y su rol en ASP.NET Core MVC. El controlador en MVC es una clase y hereda de Microsoft.AspNetCore.Mvc.Controller .Cuando una solicitud del navegador llega a nuestra aplicación, es el controlador el que maneja la solicitud HTTP entrante  y responde a la acción del usuario.
  • La clase de controlador contiene un conjunto de métodos públicos. Estos métodos públicos en la clase Controller se denominan métodos de acción.  Son estos métodos de acción del controlador los que manejan y procesan la solicitud HTTP entrante.

  • En resumen:
    • Cuando una solicitud del navegador llega a nuestra aplicación, es el controlador en el patrón de diseño MVC, el que maneja la solicitud HTTP entrante y responde a la acción del usuario.
    • El controlador construye el modelo  y devuelve los datos del modelo a la persona que llama.
    • Selecciona una vista y pase los datos del modelo a la vista
    • La Vista genera el HTML requerido para presentar los datos.

Curso diseño de bases de datos 1.Introducción

1. Introducción

  • Hola a todos. En esta serie de vídeos pretendo diseñar una base de datos partiendo de unas especificaciones iniciales proporcionadas por un cliente. En este primer vídeo recogemos dichas especificaciones.Son las siguientes: 
    • Una liga regional de baloncesto , ha decidido informatizar sus instalaciones creando una base de datos para guardar la información de los partidos que se juegan en la liga.
      • Se desea guardar en primer lugar los datos de los jugadores. De cada jugador se quiere guardar el nombre, fecha de nacimiento y posición en la que juega (Cada jugador tiene un código de jugador que lo identifica de manera única.
      • De cada uno de los equipos de la liga es necesario registrar el nombre del equipo, nombre del estadio en el que juega, el aforo que tiene, el año de fundación del equipo y la ciudad de la que es el equipo. Cada equipo también tiene un código que lo identifica de manera única. Un jugador solo puede pertenecer a un único equipo.
      • De cada partido que los equipos de la liga juegan hay que registrar la fecha en la que se juega el partido, los puntos que ha metido el equipo de casa y los puntos que ha metido el equipo de fuera. Cada partido tendrá un código numérico para identificar el partido.
      • También se quiere llevar un recuento de los puntos que hay en cada partido. Se quiere almacenar el minuto en el que se meten los puntos y la descripción de la canasta gol. Un partido tiene varias canastas y un jugador puede meter varios puntos en un partido.
      • Por último se quiere almacenar, en la base de datos, los datos de los presidentes de los equipos de baloncesto (dni, nombre, apellidos, fecha de nacimiento, equipo del que es presidente y año en el que fue elegido presidente). Un equipo de baloncesto tan sólo puede tener un presidente, y una persona sólo puede ser presidente de un equipo de la liga.
  • En el siguiente vídeo lo  vemos:

Curso .NET Core en C# - 13.Construyendo nuestro modelo para MVC

13. Construyendo nuestro modelo para MVC

  • Hola a todos. En este nuevo curso, analizaremos todos los conceptos básicos, intermedios y avanzados de ASP.NET Core que nos ayudan a crear aplicaciones web basadas en datos.Al final de este curso, podremos realizar todas las operaciones de un CRUD, es decir, crear, leer, actualizar y eliminar datos  utilizando SQL Server como nuestra base de datos.
  • En este vídeo veremos un ejemplo sobre como construir nuestro modelo.Para ellos supongamos que necesitamos gestionar una lista de amigos. Nos creamos un modelo en MVC que contendrá un conjunto de clases que representarán los datos y la lógica para administrar esos datos. 

  • Os dejo parte del código visto en el vídeo:
    • Clase Startup
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Ejemplo1.Models;
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.Http;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging;

namespace Ejemplo1
{
    public class Startup
    {

        private IConfiguration _configuration;

        public Startup(IConfiguration configuration)
        {
            _configuration = configuration;
        }

        // This method gets called by the runtime. Use this method to add services to the container.
        // For more information on how to configure your application, visit https://go.microsoft.com/fwlink/?LinkID=398940
        public void ConfigureServices(IServiceCollection services)
        {
            services.AddMvc();
           // services.AddSingleton<IAmigoAlmacen, MockAmigoRepositorio>();

        }

        // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
        public void Configure(IApplicationBuilder app, IHostingEnvironment env )
        {

            if (env.IsDevelopment())
            {
                DeveloperExceptionPageOptions d = new DeveloperExceptionPageOptions
                {
                    SourceCodeLineCount = 2
                };
                app.UseDeveloperExceptionPage(d);
            }
            else if (env.IsProduction() || env.IsStaging())
            {
                app.UseExceptionHandler("/Error");
            }

            app.UseStaticFiles();
            app.UseMvcWithDefaultRoute();


        }
    }
}

    • Clase HomeController
using Ejemplo1.Models;
using Microsoft.AspNetCore.Mvc;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;

namespace Ejemplo1.Controllers
{
    public class HomeController:Controller
    {
        private IAmigoAlmacen amigoAlmacen;

        public HomeController(IAmigoAlmacen AmigoAlmacen)
        {
            amigoAlmacen = AmigoAlmacen;
        }

   
        public string Index()
        {
            return amigoAlmacen.dameDatosAmigo(1).Email;
        }
    }
}

    • Clase MockAmigoRepositorio
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;

namespace Ejemplo1.Models
{
    public class MockAmigoRepositorio:IAmigoAlmacen
    {
        private List<Amigo> amigosLista;

        public MockAmigoRepositorio()
        {
            amigosLista = new List<Amigo>();
            amigosLista.Add(new Amigo() { Id = 1, Nombre = "Pedro", Ciudad = "Madrid", Email = "Pedro@mail.com" });
            amigosLista.Add(new Amigo() { Id = 2, Nombre = "Juan", Ciudad = "Toledo", Email = "Juan@mail.com" });
            amigosLista.Add(new Amigo() { Id = 3, Nombre = "Sara", Ciudad = "Cuenca", Email = "Sara@mail.com" });
        }

        public Amigo dameDatosAmigo(int Id)
        {
            return this.amigosLista.FirstOrDefault(e => e.Id == Id);
        }
    }
}

    • Interface IAmigoAlmacen
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;

namespace Ejemplo1.Models
{
    public interface IAmigoAlmacen
    {
       Amigo dameDatosAmigo(int Id);

     
    }
}

    • Clase Amigo
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;

namespace Ejemplo1.Models
{
    public class Amigo
    {
        public int Id { get; set; }
        public string Nombre { get; set; }
        public string Email { get; set; }
        public string Ciudad { get; set; }
    }
}

Curso .NET Core en C# - 12.AddMvc VS AddMvcCore

12. AddMvc VS AddMvcCore

  • Hola a todos. En este nuevo curso, analizaremos todos los conceptos básicos, intermedios y avanzados de ASP.NET Core que nos ayudan a crear aplicaciones web basadas en datos.Al final de este curso, podremos realizar todas las operaciones de un CRUD, es decir, crear, leer, actualizar y eliminar datos  utilizando SQL Server como nuestra base de datos.
  • Después de adaptar nuestro proyecto para poder utilizar el patrón de diseño  MVC en el anterior capítulo. En este vídeo discutiremos la diferencia entre utilizar el método AddMvc o el método AddMvCCore, a la hora de configurar nuestro proyecto en la clase Startup.cs:
  • Os dejo un enlace al código fuente para que podáis comprobar lo explicado en el vídeo:

Tutorial Open AI Gym - Nuestro bot cobra vida (3/3)

3.Vemos nuestro bot funcionando

  • Hola a todos, en esta ocasión finalizamos con nuestro  tutorial de open ai gym (Open AI) , que es un conjunto de herramientas para desarrollar y comparar algoritmos de aprendizaje. Es compatible con enseñar a los agentes de todo, desde caminar hasta jugar juegos como Pong o Pinball.
  •  En el siguiente vídeo podemos ver como como acabamos la implementación de nuestro propio agente de juego. Vemos como entrenar al modelo y también podremos contemplar a nuestro bot jugando su primera partida.
  • Código fuente visto en el vídeo:
#Con esta función contruimos nuestros mmodelo.Nuestra red neuronal
def build_model(input_size, output_size):
    model = Sequential()
    model.add(Dense(128, input_dim=input_size, activation='relu'))
    model.add(Dense(52, activation='relu'))
    model.add(Dense(output_size, activation='linear'))
    model.compile(loss='mse', optimizer=Adam())

    return model
#creamos la función que entrenará nuestro modelo
def train_model(training_data):
    X = np.array([i[0] for i in training_data]).reshape(-1, len(training_data[0][0]))
    y = np.array([i[1] for i in training_data]).reshape(-1, len(training_data[0][1]))
    model = build_model(input_size=len(X[0]), output_size=len(y[0]))
    
    model.fit(X, y, epochs=10)
    return model
trained_model = train_model(training_data)


scores = []#inicializamos puntuaciones y array de elecciones
choices = []
for each_game in range(1):#jugamos 100 partidas
    score = 0
    prev_obs = []
    for step_index in range(goal_steps):#Jugamos 500 pasos por partida
        
        env.render()
        if len(prev_obs)==0:
            action = random.randrange(0,2)#en el primer paso elegimos movimiento al azar
        else:
            #A partir del segundo paso conocemos el estado actual del juego.
            #Entonces, tomaremos esa observación y se la daremos a nuestro 
            #modelo para predecir qué acción debemos tomar. 
            action = np.argmax(trained_model.predict(prev_obs.reshape(-1, len(prev_obs)))[0])
        #guardamos elección
        choices.append(action)
        new_observation, reward, done, info = env.step(action)
        prev_obs = new_observation
        score+=reward
        if done:
            break

    env.reset()
    scores.append(score)

print(scores)
print('Average Score:',sum(scores)/len(scores))
print('choice 1:{}  choice 0:{}'.format(choices.count(1)/len(choices),choices.count(0)/len(choices)))

Curso .NET Core en C# - 11.Adaptando nuestro proyecto a MVC

11. Adaptando nuestro proyecto a MVC

  • Hola a todos. En este nuevo curso, analizaremos todos los conceptos básicos, intermedios y avanzados de ASP.NET Core que nos ayudan a crear aplicaciones web basadas en datos.Al final de este curso, podremos realizar todas las operaciones de un CRUD, es decir, crear, leer, actualizar y eliminar datos  utilizando SQL Server como nuestra base de datos.
  • Después de ver la teoría del MVC en el anterior capítulo. En este vídeo prepararemos el Proyecto Core de ASP.NET con el que hemos estado trabajando hasta ahora.Recordar que utilizamos la plantilla de proyecto "Vacío". Por lo que este proyecto no tiene configuración para MVC. Para configurar el proyecto añadimos:
public void ConfigureServices(IServiceCollection services{services.AddMvc();}
  • También añadimos al método configure las siguientes llamadas:
        app.UseStaticFiles();
    app.UseMvcWithDefaultRoute();
      UseMvcWithDefaultRoute ()

      • En el siguiente vídeo podemos ver como hacemos los pasos necesarios para pasar nuestra aplicación de consola a una aplicación MVC:

      Curso .NET Core en C# - 10.MVC

      10. MVC

      • Hola a todos. En este nuevo curso, analizaremos todos los conceptos básicos, intermedios y avanzados de ASP.NET Core que nos ayudan a crear aplicaciones web basadas en datos.Al final de este curso, podremos realizar todas las operaciones de un CRUD, es decir, crear, leer, actualizar y eliminar datos  utilizando SQL Server como nuestra base de datos.
      • En esta ocasión empezamos con el modelo-vista-controlador.Todos sabemos que una aplicación típica del mundo real normalmente tiene las siguientes capas.
        • Capa de interfaz de usuario 
        • Capa de lógica de negocios o capa de dominio
        • Capa de acceso a datos
      • MVC se suele utilizar como patrón de diseño arquitectónico para implementar la capa de interfaz de usuario de una aplicación. MVC consta de tres partes fundamentales: 
        • Modelo:El modelo en una aplicación de MVC representa el estado de la aplicación y cualquier lógica de negocios u operaciones que esta deba realizar. 
        • Vista: Las vistas se encargan de presentar el contenido a través de la interfaz de usuario. Puedes pensar en una vista como una plantilla HTML.
        • Controlador: Los controladores son los componentes que controlan la interacción del usuario, trabajan con el modelo y, en última instancia, seleccionan una vista para representarla.
      • Os dejo un vídeo con la explicación:


      Curso .NET Core en C# - 34.Creamos nuestro propio log

      34.Creamos nuestro propio log Hola a todos. En este curso, analizaremos todos los conceptos básicos, intermedios y avanzados de  ASP.NET...