<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: windy</title>
    <description>The latest articles on DEV Community by windy (@windson).</description>
    <link>https://dev.to/windson</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F99122%2F1c6c61e8-55ac-4fce-8673-dad0db012985.jpg</url>
      <title>DEV Community: windy</title>
      <link>https://dev.to/windson</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/windson"/>
    <language>en</language>
    <item>
      <title>Working with Google Cloud Storage for ASP.NET Core 6 Applications</title>
      <dc:creator>windy</dc:creator>
      <pubDate>Mon, 10 Oct 2022 19:32:26 +0000</pubDate>
      <link>https://dev.to/windson/working-with-google-cloud-storage-for-aspnet-core-6-applications-4mfl</link>
      <guid>https://dev.to/windson/working-with-google-cloud-storage-for-aspnet-core-6-applications-4mfl</guid>
      <description>&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/7tAAGnSbfCc"&gt;
&lt;/iframe&gt;
&lt;br&gt;
I made a detailed video tutorial &lt;a href="https://youtu.be/7tAAGnSbfCc"&gt;Working with Google Cloud Storage for ASP.NET Core 6 Applications&lt;/a&gt;, and &lt;a href="https://tutlinks.com/google-cloud-storage-asp-net-core/"&gt;article&lt;/a&gt;, where you will learn how to work with Google Cloud Storage for ASP.NET Core 6 Web applications. This is the real time demonstration of performing file based CRUD operations directly on to the Google Cloud Storage. You can follow along with this tutorial if you have a GCP account. It's free to sign up and you will get $300 Credit if you sign up with your credit card.&lt;/p&gt;

&lt;p&gt;Contents of this tutorial include&lt;br&gt;
Part 1 - GCP Setup&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Introduction&lt;/li&gt;
&lt;li&gt;Login to GCP&lt;/li&gt;
&lt;li&gt;Create a Project&lt;/li&gt;
&lt;li&gt;Crate a Bucket&lt;/li&gt;
&lt;li&gt;Create a Service Account&lt;/li&gt;
&lt;li&gt;Create &amp;amp; Download key for Service Account&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Part 2 - Create and Set up ASP.NET Core 6 MVC with EF Core project&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Create ASP.NET Core 6 MVC Razor Project in Visual Studio&lt;/li&gt;
&lt;li&gt;Update appsettings.json&lt;/li&gt;
&lt;li&gt;Create GCS Config Options class&lt;/li&gt;
&lt;li&gt;Register GCS Config Options class in services&lt;/li&gt;
&lt;li&gt;Add Nuget - Google.Cloud.Storage.V1&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Part 3 - Implement Cloud Storage Service to work upload, delete and read files from GCP Cloud Storage&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Create a Cloud Storage Service&lt;/li&gt;
&lt;li&gt;Implement Upload File Async for Google Cloud Storage&lt;/li&gt;
&lt;li&gt;Implement Delete File Async for Google Cloud Storage&lt;/li&gt;
&lt;li&gt;Implement Get Signed Url Async for Google Cloud Storage&lt;/li&gt;
&lt;li&gt;Register Cloud Storage Service as singleton&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Part 4 - Implement MVC application to handle file uploads on GCP Cloud Storage&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Add a model with IFormFile field&lt;/li&gt;
&lt;li&gt;Add a Controller&lt;/li&gt;
&lt;li&gt;Manage Nuget packages - Add NpgSQL, Remove MSSQL&lt;/li&gt;
&lt;li&gt;UseNpgSql in Program.cs &amp;amp; Update Connection String&lt;/li&gt;
&lt;li&gt;Add Migrations&lt;/li&gt;
&lt;li&gt;Update Database&lt;/li&gt;
&lt;li&gt;Update Shared Layout Navigation to show Animals menu&lt;/li&gt;
&lt;li&gt;Styling Home Page with Animals Poster&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Part 4.1 - Implement MVC for Create View with File Upload functionality to Cloud Storage&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Create Razor View with File Upload&lt;/li&gt;
&lt;li&gt;Update Controller to depend on Cloud Storage Service&lt;/li&gt;
&lt;li&gt;Implement Create Action to invoke Upload File to Cloud Storage&lt;/li&gt;
&lt;li&gt;Test a file upload &amp;amp; Verify in Cloud Storage Bucket&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Part 4.2 - Implement MVC for Details View with Show file from Signed URL of a file in Cloud Storage&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Details Razor View with Image rendered from Signed URL&lt;/li&gt;
&lt;li&gt;Implement Details Action to get Signed URL from Cloud Storage&lt;/li&gt;
&lt;li&gt;Edit Razor View with File Upload&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Part 4.3 - Implement MVC for Edit View with File Delete &amp;amp; Upload (replace) functionality to Cloud Storage&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Implement Edit Action to Replace file in Cloud Storage&lt;/li&gt;
&lt;li&gt;Test Edit Animal &amp;amp; Verify replace file in Cloud Storage Bucket&lt;/li&gt;
&lt;li&gt;Delete Razor View with Image rendered from Signed URL&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Part 4.4 - Implement MVC for Delete View with File Delete functionality from Cloud Storage&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Implement Delete Action to remove file in Cloud Storage Bucket&lt;/li&gt;
&lt;li&gt;Verify Delete Animal removes file from Cloud Storage Bucket&lt;/li&gt;
&lt;li&gt;Play with the file CRUD operations on GCP&lt;/li&gt;
&lt;li&gt;Showing List of Animals along with Photos in Index Razor View&lt;/li&gt;
&lt;li&gt;Implement Index Action to get list of Signed URLs from GCS&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>googlecloudstorage</category>
      <category>gcp</category>
      <category>cloudstorage</category>
      <category>aspdotnetcore6</category>
    </item>
    <item>
      <title>Host FastAPI application on Ubuntu Virtual Machine</title>
      <dc:creator>windy</dc:creator>
      <pubDate>Thu, 31 Dec 2020 11:33:15 +0000</pubDate>
      <link>https://dev.to/windson/host-fastapi-application-on-ubuntu-virtual-machine-52n6</link>
      <guid>https://dev.to/windson/host-fastapi-application-on-ubuntu-virtual-machine-52n6</guid>
      <description>&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Ftscohipxthrovv1f44mt.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Ftscohipxthrovv1f44mt.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;br&gt;
Step by step &lt;a href="https://bit.ly/3hpS0Ws" rel="noopener noreferrer"&gt;video tutorial&lt;/a&gt; on deploying FastAPI app on Ubuntu 18 VM. FastAPI app performs Async CRUD operations on PostgreSQL. It is hosted on Gunicorn as a systemd and exposed as a reverse proxy to the outside world through Caddy 2 Web Server.&lt;/p&gt;

&lt;p&gt;Also check out this &lt;a href="https://bit.ly/2SGLWgt" rel="noopener noreferrer"&gt;detailed article&lt;/a&gt; that includes end to end steps for FastAPI deployment on Ubuntu along with the steps to troubleshoot at every phase of deployment.&lt;/p&gt;

</description>
      <category>python</category>
      <category>fastapi</category>
      <category>gunicorn</category>
      <category>caddy</category>
    </item>
    <item>
      <title>FastAPI + PostgreSQL + Async REST Endpoints + Azure Deployment</title>
      <dc:creator>windy</dc:creator>
      <pubDate>Sat, 11 Jul 2020 08:01:09 +0000</pubDate>
      <link>https://dev.to/windson/fastapi-postgresql-async-rest-endpoints-azure-deployment-23d0</link>
      <guid>https://dev.to/windson/fastapi-postgresql-async-rest-endpoints-azure-deployment-23d0</guid>
      <description>&lt;p&gt;I wrote articles and made videos that demonstrates Implementing Async CRUD REST APIs using Python based FastAPI framework. And added detailed notes about deploying FastAPI on Azure with Full Source code available on GitHub. You may find the links here&lt;/p&gt;

&lt;p&gt;Video: &lt;a href="https://bit.ly/3j42qvf"&gt;Implementing Async REST APIs in Python using FastAPI with PostgreSQL CRUD&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Articles:&lt;br&gt;
&lt;a href="https://bit.ly/2O6onvp"&gt;Implementing Async REST APIs in FastAPI with PostgreSQL CRUD&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://bit.ly/3gPntQ7"&gt;Deploy FastAPI on Azure App Service&lt;/a&gt;&lt;/p&gt;

</description>
      <category>fastapi</category>
      <category>python</category>
      <category>azure</category>
      <category>rest</category>
    </item>
    <item>
      <title>FastAPI on GCP App Engine</title>
      <dc:creator>windy</dc:creator>
      <pubDate>Tue, 19 May 2020 18:05:27 +0000</pubDate>
      <link>https://dev.to/windson/fastapi-on-gcp-app-engine-4a29</link>
      <guid>https://dev.to/windson/fastapi-on-gcp-app-engine-4a29</guid>
      <description>&lt;p&gt;I made a 20 min video (link at the bottom) that demonstrates how to deploy a simple FastAPI app to App Engine on Google Cloud Platform. &lt;br&gt;
This tutorial can be followed along to practice on your own provided that you have a billing enabled GCP account.&lt;br&gt;
This tutorials covers very basic details like &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Creating a project in GCP,&lt;/li&gt;
&lt;li&gt;Accessing the Cloud shell,&lt;/li&gt;
&lt;li&gt;Clone the repository on to Cloud Shell VM, &lt;/li&gt;
&lt;li&gt;Do a Sanity hosting of the FastAPI on Cloud Shell VM and explain about worker processes&lt;/li&gt;
&lt;li&gt;Create an App Engine&lt;/li&gt;
&lt;li&gt;Deploy FastAPI on to App Engine&lt;/li&gt;
&lt;li&gt;Check Logs of App Engine&lt;/li&gt;
&lt;li&gt;Clean up and Shutdown Project once practiced the tutorial.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Some notes about billing
&lt;/h3&gt;

&lt;p&gt;I have performed this deployment and shutdown the project after I'm done with deployment and learning a couple of months ago. So no bill has been generated for me. I do not even have credits active at the time of performing this tutorial.&lt;/p&gt;

&lt;h3&gt;
  
  
  Link for tutorial
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://bit.ly/3g0VwFE"&gt;Deploy FastAPI Python app to Google Cloud Platform on App Engine&lt;br&gt;
&lt;/a&gt;&lt;/p&gt;

</description>
      <category>fastapi</category>
      <category>gcp</category>
      <category>python</category>
    </item>
    <item>
      <title>Add your project located on PC to GitHub, A detailed How To Article</title>
      <dc:creator>windy</dc:creator>
      <pubDate>Tue, 04 Feb 2020 10:54:26 +0000</pubDate>
      <link>https://dev.to/windson/add-your-project-located-on-pc-to-github-a-detailed-how-to-article-2p95</link>
      <guid>https://dev.to/windson/add-your-project-located-on-pc-to-github-a-detailed-how-to-article-2p95</guid>
      <description>&lt;p&gt;This detailed tutorial &lt;a href="http://bit.ly/2UoEXLe"&gt;http://bit.ly/2UoEXLe&lt;/a&gt; will walk you through adding an existing project to GitHub.&lt;/p&gt;

&lt;p&gt;Following is the Quick Cheat Sheet to add existing repository to git has step by step approach to add and push an existing code base to a new GitHub repository.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;echo "# my-first-repo-on-github" &amp;gt;&amp;gt; README.md&lt;/code&gt;&lt;br&gt;
&lt;code&gt;git init&lt;/code&gt;&lt;br&gt;
&lt;code&gt;# Create New repository on GitHub&lt;/code&gt;&lt;br&gt;
&lt;code&gt;# git remote add origin url&lt;/code&gt;&lt;br&gt;
&lt;code&gt;git remote add origin https://github.com/your-awesome-username/name-of-your-repository.git&lt;/code&gt;&lt;br&gt;
&lt;code&gt;git remote -v&lt;/code&gt;&lt;br&gt;
&lt;code&gt;git pull origin master&lt;/code&gt;&lt;br&gt;
&lt;code&gt;git add .&lt;/code&gt;&lt;br&gt;
&lt;code&gt;git commit -m 'init'&lt;/code&gt;&lt;br&gt;
&lt;code&gt;git push origin master&lt;/code&gt;&lt;/p&gt;

</description>
      <category>github</category>
      <category>addexisitingproject</category>
      <category>versioncontrol</category>
      <category>sourcecontrol</category>
    </item>
    <item>
      <title>FastAPI + Heroku + Gunicorn + Uvicorn</title>
      <dc:creator>windy</dc:creator>
      <pubDate>Mon, 27 Jan 2020 12:36:04 +0000</pubDate>
      <link>https://dev.to/windson/fastapi-heroku-gunicorn-uvicorn-ghe</link>
      <guid>https://dev.to/windson/fastapi-heroku-gunicorn-uvicorn-ghe</guid>
      <description>&lt;p&gt;In the mentioned video tutorial, a sample hello world REST API will be deployed to Heroku that was implemented with python based FastAPI. FastAPI is a framewrok to build robust APIs with autogenerated swagger documentation for its endpoints.&lt;br&gt;
The video tutorial concentrates on deploying the FastAPI app without using docker to Heroku &lt;a href="http://bit.ly/3aO1g35"&gt;http://bit.ly/3aO1g35&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In case you are interested in a detailed walkthrough on how to create FastAPI and deploy it to Heroku, you may want to refer to this article &lt;a href="http://bit.ly/2RD68jM"&gt;http://bit.ly/2RD68jM&lt;/a&gt;&lt;/p&gt;

</description>
      <category>fastapi</category>
      <category>heroku</category>
      <category>python</category>
    </item>
    <item>
      <title>Hosting WordPress on Azure App Service (Linux)</title>
      <dc:creator>windy</dc:creator>
      <pubDate>Tue, 24 Dec 2019 12:57:35 +0000</pubDate>
      <link>https://dev.to/windson/hosting-wordpress-on-azure-app-service-linux-5ek5</link>
      <guid>https://dev.to/windson/hosting-wordpress-on-azure-app-service-linux-5ek5</guid>
      <description>&lt;p&gt;In this tutorial &lt;a href="http://bit.ly/2PMmWDV"&gt;http://bit.ly/2PMmWDV&lt;/a&gt;, we will see how to host a WordPress CMS on Azure App Service Linux Plan. The tutorial also discusses about troubleshooting various issues with SSL Config and setting up your WordPress for different loads of traffic.&lt;/p&gt;

&lt;p&gt;Following Topics are covered in detail in the video tutorial: &lt;br&gt;
1 Create App Service (Linux)&lt;br&gt;
2 Create MySQL Database Server &lt;br&gt;
3 Access Secure Shell (SSH) &lt;br&gt;
4 Deploy WordPress &lt;br&gt;
5 Connect Azure Database for MySQL from MySQL WorkBench &lt;br&gt;
6 Create a Database for WordPress Application &lt;br&gt;
7 Configure WordPress Installation &lt;br&gt;
8 Scale Up/Down App Service Plan &lt;br&gt;
9 Configure SSL for WordPress on Azure (Important Step) &lt;/p&gt;

</description>
      <category>wordpress</category>
      <category>azure</category>
      <category>devops</category>
      <category>hosting</category>
    </item>
    <item>
      <title>How to Configure ASP.NET Core 3.1 AngularJS SPA and Identity Server 4 Authentication with PostgreSQL DB</title>
      <dc:creator>windy</dc:creator>
      <pubDate>Sun, 15 Dec 2019 15:10:30 +0000</pubDate>
      <link>https://dev.to/windson/configuring-asp-net-core-3-1-angularjs-spa-and-identity-server-4-authentication-with-postgresql-db-jgk</link>
      <guid>https://dev.to/windson/configuring-asp-net-core-3-1-angularjs-spa-and-identity-server-4-authentication-with-postgresql-db-jgk</guid>
      <description>&lt;p&gt;In this tutorial we will see how to configure an ASP.NET Core 3.1 web application with AngularJS SPA as front end and PostgreSQL as database with Secure User membership implementation using Identity Server 4.&lt;/p&gt;

&lt;p&gt;You can follow along with this video tutorial here (&lt;a href="http://bit.ly/2EkotL5"&gt;http://bit.ly/2EkotL5&lt;/a&gt;) as it is step by step detail providied you have following PreRequisites satisfied.&lt;/p&gt;

&lt;p&gt;PreRequisites:&lt;br&gt;
Visual Studio 2019 (Community/Professional/Enterprise Edition) v16.4.0 or higher&lt;br&gt;
PostgreSQL Database Server installed. Version 11 or Higher&lt;br&gt;
How to install PostgreSQL on Windows PC &lt;a href="http://bit.ly/2LYxk9z"&gt;http://bit.ly/2LYxk9z&lt;/a&gt;&lt;br&gt;
A browser preferrably Chrome, Firefox or IE 11 or higher&lt;br&gt;
PgAdmin to access PostgreSQL Server Database&lt;br&gt;
Windows 10 PC&lt;/p&gt;

&lt;h2&gt;
  
  
  Install PostgerSQL
&lt;/h2&gt;

&lt;p&gt;Install PostgerSQL on your PC or access remote PostgerSQL db.&lt;br&gt;
To install PostgerSQL on your Windows 10 PC, check out the link in the description below that details on how to install and configure PostgerSQL 11 on your Windows 10 PC.&lt;br&gt;
Once the installation is done, Open pgAdmin&lt;br&gt;
Once the setup is completely done a database with asp.net core3.1 membership authentication related schema will appear here.&lt;/p&gt;

&lt;h2&gt;
  
  
  Update Visual Studio 2019 with .NET Core 3.1
&lt;/h2&gt;

&lt;p&gt;To get latest .NET Core 3.1, for that open Visual Studio Installer and update the installer itself if it prompts for an update and then update your Visual Studio to have .NET Core 3.1.&lt;br&gt;
Now Click on update your Visual Studio to the version 16.3.10. You can do this on community edition too and ensure you have .Net Core 3.1 version installed which got released in December 2019 &lt;/p&gt;

&lt;h2&gt;
  
  
  What Next ?
&lt;/h2&gt;

&lt;p&gt;Now lets create an ASP.NET Core 3.1 application that will talk to this PostgerSQL database.&lt;br&gt;
We will configure the creation of the ASP.NET Core application to have Authentication at the Individual User Accounts.&lt;br&gt;
And then we generate migration scripts that will dump the authentication related tables in to the database.&lt;/p&gt;

&lt;h2&gt;
  
  
  Create ASP.NET Core 3.1 Angular application with Individual User Accounts
&lt;/h2&gt;

&lt;p&gt;Now launch the Microsoft Visual Studio 2019 IDE. From the Get Started section, select the option to Create a new project.&lt;br&gt;
Look for and select the ASP.NET Core Web Application and click on Next to proceed&lt;br&gt;
Give Project name and location of your choice.&lt;br&gt;
For example, name the project ASPNET-Core3-1-Angular-PostgreSQL-Identity-Server and click Create.&lt;br&gt;
In the Create a new ASP.NET Core web application step, choose Angular template. Because we want our application to have an Angular based front-end. You may also choose React.js, Web Application to has ASP.NET razor Pages or Web Application (Model-View-Controller).&lt;br&gt;
Now in the right pane click on Change hyperlink under Authentication label to configure our application to have Individual User Accounts and click on OK.&lt;br&gt;
Now click on Create.&lt;br&gt;
Now this template configuration will generate all the code related to Authentication that involves Migration Schema that will generate tables for users, roles, claims, logins etc.,&lt;br&gt;
The template also has angular screens automagically generated for Register, Login, Forgot Password, Login Menu.&lt;br&gt;
This scaffolded template eases the developer to focus on the application functionality rather than setting the user authentication from the scratch.&lt;/p&gt;

&lt;h2&gt;
  
  
  Delete Migrations directory
&lt;/h2&gt;

&lt;p&gt;As the default database this template is configured to work with is MSSQL, we want to change this to work with PostgerSQL.&lt;br&gt;
For that, delete the Migrations directory which has MSSQL related migration schema that is located under the Data directory.&lt;/p&gt;

&lt;h2&gt;
  
  
  Update Connection string to point to PostgreSQL Database
&lt;/h2&gt;

&lt;p&gt;Also update the default connection string  present in appsettings.json to point to the local or remote PostgerSQL database. For local PostgerSQL server, the connection string goes like &lt;br&gt;
Server=localhost;Port=5432;Database=aspnetmembership;User Id=postgres;Password=mysupersecret!&lt;/p&gt;

&lt;h2&gt;
  
  
  Update Dependencies
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Remove Microsoft.EntityFrameworkCore.SqlServer
&lt;/h3&gt;

&lt;p&gt;Now remove the reference to Microsoft.EntityFrameworkCore.SqlServer which is located under Dependencies -&amp;gt; Packages&lt;br&gt;
As we want to configure our application to target PostgerSQL instead of MSSQL.&lt;br&gt;
In the solution explorer, navigate to Dependencies -&amp;gt; Packages right-click on Microsft.EntityFrameworkCore.SqlServer and remove.&lt;br&gt;
Now install PostgerSQL package for EntityFrameworkCore.&lt;br&gt;
To do that right click on the project ASPNET-Core3-1-Angular-PostgreSQL-Identity-Server in the solution explorer and click on Manage NuGet Packages...&lt;br&gt;
This will open up a window to manage the Nuget packages for our project.&lt;/p&gt;

&lt;p&gt;Now navigate to Browse menu, search for Npgsql.EntityFrameworkCore.PostgreSQL and from the version selector choose the latest stable version 3.1.0 and Install&lt;br&gt;
Click on OK for the Preview Changes prompt.&lt;/p&gt;

&lt;p&gt;Ensure that all the dependent packages are having version compatiability with .NET Core 3.1&lt;/p&gt;

&lt;h2&gt;
  
  
  Update Startup.cs
&lt;/h2&gt;

&lt;p&gt;Now open Startup.cs file and locate ConfigureServices method.&lt;br&gt;
Find and replace UseSqlServer with UseNpgsql in order to point our DbContext to our PostgerSQL database.&lt;br&gt;
Also set the lamba expression options.SignIn.RequireConfirmedAccount to false. This will disable the requirement to the registered users to confirm their email before they could login. This setting is suitable for development purposes only. And do not forget to enable it to true once you have email server configured for the customer facing applications.&lt;/p&gt;

&lt;h2&gt;
  
  
  Update malformed .csproj file
&lt;/h2&gt;

&lt;p&gt;Now open the .csproj file of ASPNET-Core3-1-Angular-PostgreSQL-Identity-Server and ensure the execution commands are properly written. If you see repeated double hypens like npm run build  -- --prod and npm run build:ssr -- --prod change it to npm run build  --prod and for ssr npm run build:ssr --prod&lt;/p&gt;

&lt;h2&gt;
  
  
  install angular cli
&lt;/h2&gt;

&lt;p&gt;Now install angular cli. For that in the search box at the top of IDE type developer command prompt and open it.&lt;br&gt;
It will open up a command prompt window with current directory defaulted to project's root directory.&lt;br&gt;
Now set the current directory to ClientApp with the command&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;cd ClientApp&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;and then run the command &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;npm install --save-dev @angular/cli@latest&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This will install latest version of angular cli and saves it as dev dependency in the package.json located in ClientApp directory.&lt;br&gt;
This operation will take a while.&lt;/p&gt;

&lt;h2&gt;
  
  
  Add-Migration scripts
&lt;/h2&gt;

&lt;p&gt;Now we will generate PostgerSQL based migrations schema. &lt;br&gt;
Open the Package Manager Console by navigating to &lt;br&gt;
Tools -&amp;gt; Nuget Package Manager -&amp;gt; Package Manager Console&lt;br&gt;
Type in the command &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;add-migration PostgreSQLIdentitySchema&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This will generate Migrations directory adjacent to Data directory.&lt;br&gt;
Migrations directory will have two c-sharp files named datetimestamp_migrationname.cs to create identity schema &lt;br&gt;
and ApplicationDbContextModelSnapshot.cs that has the snapshot of the models that get migrated with this schema.&lt;/p&gt;

&lt;h2&gt;
  
  
  Update-Database
&lt;/h2&gt;

&lt;p&gt;Now that we have migration schema with asp.net core 3.1 Authentication aut-generated for PostgerSQL, lets create our new database aspnetmembership to have the tables created related to authentication.&lt;br&gt;
For that run the command &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;update-database&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This command will create a database named aspnetmembership which is configured in the connection string located in appsettings.json&lt;br&gt;
Based on the auto-generated schema located in Migrations directory, the asp.net core 3.1 membership tables will be created in the aspnetmembership database.&lt;br&gt;
To view the new database created, go to pgAdmin refresh the Databases node that is present under Servers -&amp;gt; PostgerSQL 11&lt;br&gt;
You will find newly created aspnetmembership database.&lt;br&gt;
Look for the tables node present under Schemas node of the aspnetmembership database.&lt;/p&gt;

&lt;h2&gt;
  
  
  Build the solution
&lt;/h2&gt;

&lt;p&gt;Now in Visual Studio go to build menu and click on the Build Solution. This process will take a while as we are building the solution for the first time.&lt;br&gt;
For the first time all the dependent packages for the front-end angular app will be downloaded in the node modules directory and then the entire solution will be built.&lt;/p&gt;

&lt;h2&gt;
  
  
  Run the application
&lt;/h2&gt;

&lt;p&gt;Click on the dropdown next to Run button and select your favorite browser from which you want to launch the web app. Lets proceed with chrome.&lt;br&gt;
Now click on the IIS Express and wait for the application to open in default browser configured for your PC.&lt;br&gt;
You can notice the Default home page with navigation menu having links for Register and Login pages.&lt;/p&gt;

&lt;h2&gt;
  
  
  Access non-authenticated page
&lt;/h2&gt;

&lt;p&gt;The Counter navigation menu item is a non-authenticated page. Lets click on it to access it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Access authenticated page
&lt;/h2&gt;

&lt;p&gt;The Fetch Data navigation menu item is an authenticated page. As we have not yet registered, clicking on Fetch data menu will redirect the page to login.&lt;br&gt;
In order for users to login, they must be registered.&lt;/p&gt;

&lt;h2&gt;
  
  
  Register
&lt;/h2&gt;

&lt;p&gt;So navigate to registeration page and provide email, password and then provide confirm password.&lt;br&gt;
Click on Register. Next click on login.&lt;br&gt;
As we disabled email confirmation for registered users, clicking on login will automatically redirect us to the authenticated app.&lt;br&gt;
Now that we are authenticated, click on Fetch data and you will be shown the default dummy weather data which is an authenticated page.&lt;/p&gt;

&lt;h2&gt;
  
  
  Manage Profile
&lt;/h2&gt;

&lt;p&gt;Notice the email in the navigation menu, click on it to customize your profile, change email, password and also an option to download all the personal data.&lt;/p&gt;

&lt;h2&gt;
  
  
  Logout
&lt;/h2&gt;

&lt;p&gt;Click on Logout and you will see the navigation menu shows Register and Login links.&lt;/p&gt;

&lt;h2&gt;
  
  
  Check registered users in database.
&lt;/h2&gt;

&lt;p&gt;Now in order to check the registered users in the PostgerSQL database,go back to pgAdmin and &lt;br&gt;
expand the nodes aspnetmembership -&amp;gt; Schemas -&amp;gt; Tables right-click on AspNetUsers table and select the option View/Edit Data.&lt;br&gt;
You will notice the user entry with the details we registered with.&lt;/p&gt;

</description>
      <category>aspnetcore31</category>
      <category>postgres</category>
      <category>angular</category>
      <category>identityserver4</category>
    </item>
    <item>
      <title>Creating ASP.NET Core 3.0 React SPA with Entity Framework Core Identity Server for MySQL Database in 20 Minutes</title>
      <dc:creator>windy</dc:creator>
      <pubDate>Sat, 07 Dec 2019 21:06:24 +0000</pubDate>
      <link>https://dev.to/windson/creating-asp-net-core-3-0-react-spa-with-entity-framework-core-identity-server-for-mysql-database-in-20-minutes-1001</link>
      <guid>https://dev.to/windson/creating-asp-net-core-3-0-react-spa-with-entity-framework-core-identity-server-for-mysql-database-in-20-minutes-1001</guid>
      <description>&lt;p&gt;This tutorial uses .net core version 3.0 The web app has react as front end, MySQL as Database layer where the asp.net membership related schema will be migrated to.&lt;/p&gt;

&lt;p&gt;Pre-Requisites:&lt;br&gt;
Microsoft Visual Studio 2019 Community Edition&lt;/p&gt;

&lt;p&gt;.net core 3 &lt;a href="https://dotnet.microsoft.com/download/dotnet-core"&gt;https://dotnet.microsoft.com/download/dotnet-core&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;MySQL Tools for Visutal Studio &lt;a href="https://dev.mysql.com/downloads/windows/visualstudio/"&gt;https://dev.mysql.com/downloads/windows/visualstudio/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;mysql-for-visualstudio-1.2.9.msi (&lt;a href="https://dev.mysql.com/downloads/windows/visualstudio/"&gt;https://dev.mysql.com/downloads/windows/visualstudio/&lt;/a&gt;)&lt;/p&gt;

&lt;p&gt;Configurating ASP.NET Membership web app for MySQL&lt;br&gt;
Step 1:&lt;br&gt;
Delete Migrations Directory under the Data Directory&lt;/p&gt;

&lt;p&gt;Step 2:&lt;br&gt;
Uninstall the package Microsoft.EntityFrameworkCore.SQLServer Install the package Pomelo.EntityFrameworkCore.MySql&lt;/p&gt;

&lt;p&gt;Step 3:&lt;br&gt;
Create db in MySql&lt;/p&gt;

&lt;p&gt;CREATE SCHEMA reactmembership;&lt;/p&gt;

&lt;p&gt;Step 4:&lt;br&gt;
Update value of DefaultConnection in appsettings.json to&lt;/p&gt;

&lt;p&gt;server=localhost;port=3306;database=reactmembership;user=root;password=p@$$w0Rd;CharSet=utf8&lt;/p&gt;

&lt;p&gt;Step 5:&lt;br&gt;
In Startup.cs file update ConfigureServices method to replace UseSqlServer with UseMySql&lt;/p&gt;

&lt;p&gt;Step 6:&lt;br&gt;
Tools -~ Nuget Package Manager -~ Package Manager Console&lt;/p&gt;

&lt;p&gt;In Visual Studio, use the Package Manager Console to scaffold a new migration and apply it to the database:&lt;/p&gt;

&lt;p&gt;Add-Migration [migration name]&lt;br&gt;
Update-Database&lt;/p&gt;

&lt;p&gt;Full Code on Github Repo : &lt;a href="http://bit.ly/2LWgacA"&gt;http://bit.ly/2LWgacA&lt;/a&gt;&lt;br&gt;
Video Tutorial : &lt;a href="http://bit.ly/2rfxVN1"&gt;http://bit.ly/2rfxVN1&lt;/a&gt;&lt;/p&gt;

</description>
      <category>identityserver4</category>
      <category>aspnetcore3</category>
      <category>mysqldatabase</category>
      <category>react</category>
    </item>
    <item>
      <title>Federated Learning Interview Questions</title>
      <dc:creator>windy</dc:creator>
      <pubDate>Sat, 07 Sep 2019 14:44:29 +0000</pubDate>
      <link>https://dev.to/windson/federated-learning-interview-questions-idd</link>
      <guid>https://dev.to/windson/federated-learning-interview-questions-idd</guid>
      <description>&lt;p&gt;Federated Machine Learning is finding its way to emerge and rule the future of Machine Learning with the usage of internet enabled devices like laptops, smart phones, tablets and voice assistants growing at an exponential rate. Understand more about Federated Machine Learning in the form of Q&amp;amp;A here &lt;a href="http://bit.ly/2KGoUna"&gt;http://bit.ly/2KGoUna&lt;/a&gt;&lt;/p&gt;

</description>
      <category>datascience</category>
      <category>machinelearning</category>
    </item>
    <item>
      <title>Calculating the Best SIP Date with Highest Returns</title>
      <dc:creator>windy</dc:creator>
      <pubDate>Thu, 15 Nov 2018 01:04:25 +0000</pubDate>
      <link>https://dev.to/windson/calculating-the-best-sip-date-with-highest-returns-5dfd</link>
      <guid>https://dev.to/windson/calculating-the-best-sip-date-with-highest-returns-5dfd</guid>
      <description>

&lt;p&gt;This is a simple analysis to find out which SIP date had yielded highest returns for Parag Parikh Long Term Equity Fund – Direct Plan – Growth. The standard SIP dates considered are 1st, 5th, 10th, 15th, 20th and 25th of calendar month. The following analysis is illustrated using python programming language. Read more &lt;a href="http://bit.ly/2FlcobV"&gt;http://bit.ly/2FlcobV&lt;/a&gt;&lt;/p&gt;


</description>
      <category>python</category>
      <category>dataanalysis</category>
      <category>mutualfunds</category>
    </item>
    <item>
      <title>How to Invest in Direct Mutual Funds through AMC</title>
      <dc:creator>windy</dc:creator>
      <pubDate>Thu, 11 Oct 2018 00:30:58 +0000</pubDate>
      <link>https://dev.to/windson/how-to-invest-in-direct-mutual-funds-through-amc-3kei</link>
      <guid>https://dev.to/windson/how-to-invest-in-direct-mutual-funds-through-amc-3kei</guid>
      <description>

&lt;p&gt;Investing in Direct mutual funds save a lot of money over the period of years in contrast to investing in regular mutual funds. Many people tend to buy mutual funds through brokers just because there are many third-party services available in the market attracting potential investors.&lt;/p&gt;

&lt;p&gt;The post &lt;a href="https://mfrepublic.com/invest-in-direct-mutual-funds-through-amc/"&gt;How to Invest in Direct Mutual Funds through AMC&lt;/a&gt; appeared first on &lt;a href="https://mfrepublic.com"&gt;MF Republic&lt;/a&gt;.&lt;/p&gt;


</description>
      <category>howto</category>
      <category>learn</category>
      <category>amfi</category>
      <category>assetmanagementcom</category>
    </item>
  </channel>
</rss>
