<rss xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:pingback="http://madskills.com/public/xml/rss/module/pingback/" xmlns:webfeeds="http://webfeeds.org/rss/1.0" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" version="2.0"><channel><webfeeds:logo>https://arief21.azurewebsites.net/images/zenicon.jpg</webfeeds:logo><webfeeds:analytics id="G-6XJ13WX8JF" engine="GoogleAnalytics" /><title>Arief21</title><link>https://arief21.azurewebsites.net/</link><description>This blog is for my tough about technology and powered by DasBlog Core built on the awesome legacy of the original DasBlog! </description><image><url>https://arief21.azurewebsites.net/images/zenicon.jpg</url><title>Arief21</title><link>https://arief21.azurewebsites.net/</link></image><copyright>Arief Samuel, All Rights Reserved.</copyright><lastBuildDate>Thu, 21 Oct 2021 18:13:02 GMT</lastBuildDate><managingEditor>ariefsamuel21@gmail.com</managingEditor><webMaster>ariefsamuel21@gmail.com</webMaster><item><trackback:ping>https://arief21.azurewebsites.net/feed/trackback/4fc38759-d237-42a9-b46e-a952e500b000</trackback:ping><pingback:server>https://arief21.azurewebsites.net/feed/pingback</pingback:server><pingback:target>https://arief21.azurewebsites.net/post/4fc38759-d237-42a9-b46e-a952e500b000</pingback:target><dc:creator>Arief</dc:creator><wfw:comment>https://arief21.azurewebsites.net/2021/10/21/minimal-api-create-todoapi-with-dotnet-60-preview/comments#comments-start</wfw:comment><wfw:commentRss>https://arief21.azurewebsites.net/feed/rss/comments/4fc38759-d237-42a9-b46e-a952e500b000</wfw:commentRss><title>Minimal API – Create TodoApi With dotNet 6.0 Preview</title><guid isPermaLink="false">https://arief21.azurewebsites.net/post/4fc38759-d237-42a9-b46e-a952e500b000</guid><link>https://arief21.azurewebsites.net/2021/10/21/minimal-api-create-todoapi-with-dotnet-60-preview</link><pubDate>Thu, 21 Oct 2021 18:13:02 GMT</pubDate><description>&lt;div&gt;&lt;div id="scid:77ECF5F8-D252-44F5-B4EB-D463C5396A79:88489b24-bec1-4677-a0fd-27aa9308bbb0" style="margin: 0px; padding: 0px; float: none; display: inline;"&gt;&lt;/div&gt;Pre-requisites :&lt;ul&gt;&lt;li&gt;&lt;div align="justify"&gt;&lt;a href="https://dotnet.microsoft.com/download/dotnet/5.0"&gt;dotnet-sdk&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;&lt;div align="justify"&gt;&lt;a href="https://dotnet.microsoft.com/download/dotnet/6.0" target="_blank"&gt;dotnet 6 preview sdk&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="justify"&gt;dotnet ef tools&lt;/div&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;&lt;div align="justify"&gt;&lt;code&gt;dotnet tool &lt;/code&gt;&lt;code&gt;install&lt;/code&gt; &lt;code&gt;--global dotnet-ef&lt;/code&gt;&lt;/div&gt;&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;&lt;div align="justify"&gt;dotnet dev-certs https –trust&lt;/div&gt;&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;&lt;a href="https://code.visualstudio.com/download"&gt;visual studio code&lt;/a&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;&lt;div align="justify"&gt;Extension&lt;/div&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;&lt;div align="justify"&gt;C# &lt;/div&gt;&lt;li&gt;&lt;div align="justify"&gt;C# Extensions &lt;/div&gt;&lt;li&gt;&lt;div align="justify"&gt;NuGet Package Manager&lt;/div&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;p align="justify"&gt;Let’s get started&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;div align="justify"&gt;Create new project with dotnet cli&lt;/div&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;&lt;div align="justify"&gt;dotnet new webapi –n TodoApi&lt;/div&gt;&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;&lt;div align="justify"&gt;Run and test the applications&lt;/div&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;&lt;div align="justify"&gt;cd TodoApi &amp;amp;&amp;amp; dotnet run&lt;/div&gt;&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;&lt;div align="justify"&gt;Stop the application&lt;/div&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;&lt;div align="justify"&gt;ctrl + c&lt;/div&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;p align="justify"&gt;Install these two packages from nuget packages :&lt;/p&gt;&lt;ul&gt;&lt;li&gt;dotnet add package Microsoft.EntityFrameworkCore&lt;/li&gt;&lt;li&gt;dotnet add package Microsoft.EntityFrameworkCore.InMemory&lt;/li&gt;&lt;/ul&gt;&lt;p align="justify"&gt;&lt;img width="968" height="734" style="border-image: none;" src="https://user-images.githubusercontent.com/63085636/138333579-7f9344bf-1fc0-44c3-9664-fe95ab67e5ab.png"&gt;&lt;/p&gt;&lt;/div&gt;</description><comments>https://arief21.azurewebsites.net/2021/10/21/minimal-api-create-todoapi-with-dotnet-60-preview/comments#comments-start</comments><category>dotnet</category><category>minimal-api</category><category>webapi</category></item><item xml:lang="en-us"><trackback:ping>https://arief21.azurewebsites.net/feed/trackback/3a1b6773-879e-481e-8cb2-56416e78551b</trackback:ping><pingback:server>https://arief21.azurewebsites.net/feed/pingback</pingback:server><pingback:target>https://arief21.azurewebsites.net/post/3a1b6773-879e-481e-8cb2-56416e78551b</pingback:target><dc:creator /><wfw:comment>https://arief21.azurewebsites.net/2021/10/13/net-5-web-api-with-postgresql/comments#comments-start</wfw:comment><wfw:commentRss>https://arief21.azurewebsites.net/feed/rss/comments/3a1b6773-879e-481e-8cb2-56416e78551b</wfw:commentRss><title>.Net 5 Web API With PostgreSQL</title><guid isPermaLink="false">https://arief21.azurewebsites.net/post/3a1b6773-879e-481e-8cb2-56416e78551b</guid><link>https://arief21.azurewebsites.net/2021/10/13/net-5-web-api-with-postgresql</link><pubDate>Wed, 13 Oct 2021 05:12:00 GMT</pubDate><description>&lt;div&gt;&lt;div id="scid:77ECF5F8-D252-44F5-B4EB-D463C5396A79:88489b24-bec1-4677-a0fd-27aa9308bbb0" class="wlWriterEditableSmartContent" style="margin: 0px; padding: 0px; float: none; display: inline;"&gt;LiveJournal Tags:&lt;/div&gt;
&lt;p align="justify"&gt;Pre-requisites&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;div align="justify"&gt;&lt;a href="https://dotnet.microsoft.com/download/dotnet/5.0"&gt;dotnet-sdk&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;div align="justify"&gt;dotnet ef tools&lt;/div&gt;
&lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;div align="justify"&gt;&lt;code&gt;dotnet tool &lt;/code&gt;&lt;code&gt;install&lt;/code&gt; &lt;code&gt;--global dotnet-ef&lt;/code&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;li&gt;
&lt;div align="justify"&gt;dotnet dev-certs https –trust&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div align="justify"&gt;dotnet new&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;li&gt;
&lt;div align="justify"&gt;&lt;a href="https://www.docker.com/products/docker-desktop"&gt;docker&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;div align="justify"&gt;postgreSQL docker&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div align="justify"&gt;docker compose&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;li&gt;
&lt;div align="justify"&gt;PostgreSQL (use local postgreSQL instead of docker)&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div align="justify"&gt;&lt;a href="https://code.visualstudio.com/download"&gt;visual studio code&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;div align="justify"&gt;Extension&lt;/div&gt;
&lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;div align="justify"&gt;C#&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div align="justify"&gt;C# Extensions&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div align="justify"&gt;NuGet Package Manager&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/ul&gt;
&lt;/ul&gt;
&lt;p align="justify"&gt;Let’s get started&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;div align="justify"&gt;cd document/projects&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div align="justify"&gt;dotnet new webapi –n AwesomeApi –f net5.0&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div align="justify"&gt;code .&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div align="justify"&gt;required assets to build and debug are missing from …. click yes&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div align="justify"&gt;run with ctrl + f5 or click the Run and Debug + click this play button&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div align="justify"&gt;open the app in your browser. Navigate to this URL &lt;a href="https://localhost:5001/swagger/index.html"&gt;https://localhost:5001/swagger/index.html&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;div align="justify"&gt;if the your connection is nit private then run this command dotnet dev-certs https –trust&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;li&gt;
&lt;div align="justify"&gt;add connection to PostgreSql Instance or Docker compose&lt;/div&gt;
&lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;div align="justify"&gt;&lt;a href="https://gist.github.com/arief-samuel/82ce7e3043a88d5214f95b639513f765"&gt;gist&lt;/a&gt;&lt;/div&gt;

&lt;script src="https://gist.github.com/arief-samuel/82ce7e3043a88d5214f95b639513f765.js"&gt;&lt;/script&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div align="justify"&gt;docker-compose up –d&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;div align="justify"&gt;dotnet add package Npgsql.EntityFrameworkCore.PostgreSQL --version 5.0.2&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div align="justify"&gt;dotnet add package Microsoft.EntityFrameworkCore.Design --version 5.0.5&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div align="justify"&gt;Add Models folder&lt;/div&gt;
&lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;div align="justify"&gt;Add new class as entity&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;li&gt;
&lt;div align="justify"&gt;Add Data Folder (for persistance or abstarction to database)&lt;/div&gt;
&lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;div align="justify"&gt;Create IDataContext&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div align="justify"&gt;Create DataContext than implement IDataContext&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;li&gt;
&lt;div align="justify"&gt;Update appsetting.json&lt;/div&gt;
&lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;div align="justify"&gt;Add Connection String&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;li&gt;
&lt;div align="justify"&gt;Add Service to container on startup class&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div align="justify"&gt;do migration&lt;/div&gt;
&lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;div align="justify"&gt;dotnet ef migrations add InitialMigration&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div align="justify"&gt;dotnet ef database update&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div align="justify"&gt;cek database created&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;li&gt;
&lt;div align="justify"&gt;If use repository pattern&lt;/div&gt;
&lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;div align="justify"&gt;create folder repository&lt;/div&gt;
&lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;div align="justify"&gt;create interface and concrete classes&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/ul&gt;
&lt;li&gt;
&lt;div align="justify"&gt;add interface on repository to startup.cs&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div align="justify"&gt;create controller class&lt;/div&gt;
&lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;div align="justify"&gt;create dto if needed&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;li&gt;
&lt;div align="justify"&gt;enablel swagger (on .net5.0 swagger was adding on webapi template by default)&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;/div&gt;</description><comments>https://arief21.azurewebsites.net/2021/10/13/net-5-web-api-with-postgresql/comments#comments-start</comments></item><item><trackback:ping>https://arief21.azurewebsites.net/feed/trackback/ccad2a33-1272-4a71-81a5-4b1c3b66b66f</trackback:ping><pingback:server>https://arief21.azurewebsites.net/feed/pingback</pingback:server><pingback:target>https://arief21.azurewebsites.net/post/ccad2a33-1272-4a71-81a5-4b1c3b66b66f</pingback:target><dc:creator>Arief</dc:creator><wfw:comment>https://arief21.azurewebsites.net/2021/10/12/blog-post-topic/comments#comments-start</wfw:comment><wfw:commentRss>https://arief21.azurewebsites.net/feed/rss/comments/ccad2a33-1272-4a71-81a5-4b1c3b66b66f</wfw:commentRss><title>Blog Post Topic</title><guid isPermaLink="false">https://arief21.azurewebsites.net/post/ccad2a33-1272-4a71-81a5-4b1c3b66b66f</guid><link>https://arief21.azurewebsites.net/2021/10/12/blog-post-topic</link><pubDate>Tue, 12 Oct 2021 17:12:30 GMT</pubDate><description>&lt;div&gt;&lt;h6&gt;This is the list of topic that i want to learn and share it’s as blog post or youtube video.&lt;/h6&gt;&lt;ul&gt;&lt;li&gt;Migration EntityFramework&lt;/li&gt;&lt;ul&gt;&lt;li&gt;PostrgreSql &lt;/li&gt;&lt;li&gt;SqlServer&lt;/li&gt;&lt;li&gt;Sqlite&lt;/li&gt;&lt;li&gt;MySql&lt;/li&gt;&lt;/ul&gt;&lt;li&gt; API&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Redis as database&lt;/li&gt;&lt;li&gt;Shaping and Pagination&lt;/li&gt;&lt;li&gt;Cache&lt;/li&gt;&lt;li&gt;Hateoas&lt;/li&gt;&lt;li&gt;Minimal API&lt;/li&gt;&lt;li&gt;REST&lt;/li&gt;&lt;li&gt;GraphQl&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;DevOps&lt;/li&gt;&lt;ul&gt;&lt;li&gt;CI/CD&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Azure DevOps&lt;/li&gt;&lt;li&gt;Github Actions&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Unit Test&lt;/li&gt;&lt;ul&gt;&lt;li&gt;MsTest&lt;/li&gt;&lt;li&gt;XUnit&lt;/li&gt;&lt;li&gt;NUnit&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Integration Test&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Selenium&lt;/li&gt;&lt;li&gt;PlayWright&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;li&gt;Cloud Native&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Azure for dotNet Developer&lt;/li&gt;&lt;li&gt;AWS sdk for dotNet&lt;/li&gt;&lt;li&gt;dotNet on GCP&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Setup VS Code for C# Developer&lt;/li&gt;&lt;li&gt;Learning Resources&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Blogs&lt;/li&gt;&lt;li&gt;Docs&lt;/li&gt;&lt;li&gt;Dotnet Awesome&lt;/li&gt;&lt;li&gt;Youtube Channel&lt;/li&gt;&lt;li&gt;Kurasi Penulis&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Advance Topic&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Microservice&lt;/li&gt;&lt;ul&gt;&lt;li&gt;SAGA Pattern&lt;/li&gt;&lt;li&gt;Outbox Pattern&lt;/li&gt;&lt;li&gt;Decoupling Application&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Message Broker&lt;/li&gt;&lt;ul&gt;&lt;li&gt;RabbitMq&lt;/li&gt;&lt;li&gt;Kafka&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;li&gt;ETL&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Kafka&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;li&gt;Modular Monolith&lt;/li&gt;&lt;li&gt;Design Pattern&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Clean Architecture&lt;/li&gt;&lt;li&gt;Hexagonal / Union Arch&lt;/li&gt;&lt;li&gt;CQRS&lt;/li&gt;&lt;li&gt;Event Sourcing&lt;/li&gt;&lt;li&gt;DDD&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;li&gt;Basic Topic&lt;/li&gt;&lt;ul&gt;&lt;li&gt;C# basic&lt;/li&gt;&lt;li&gt;dotNet for beginners&lt;/li&gt;&lt;li&gt;write your first C# code&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;FrontEnd&lt;/li&gt;&lt;ul&gt;&lt;li&gt;dotNet with React&lt;/li&gt;&lt;li&gt;Blazor&lt;/li&gt;&lt;li&gt;ASP.Net&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Razor Page&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;ASP.Net MVC&lt;/li&gt;&lt;li&gt;Angular with dotNet&lt;/li&gt;&lt;li&gt;VanillaJS&lt;/li&gt;&lt;li&gt;VueJs + Nuxt&lt;/li&gt;&lt;li&gt;Cms&lt;/li&gt;&lt;ul&gt;&lt;li&gt;OrchadCMS&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;li&gt;Database&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Row Base&lt;/li&gt;&lt;ul&gt;&lt;li&gt;NoSql&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Redis&lt;/li&gt;&lt;li&gt;MongoDb&lt;/li&gt;&lt;li&gt;CosmosDb&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;SQL&lt;/li&gt;&lt;ul&gt;&lt;li&gt;PostgreSql&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;li&gt;Collumnar / Collumn Base&lt;/li&gt;&lt;ul&gt;&lt;li&gt;ClickHouse&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;/div&gt;</description><comments>https://arief21.azurewebsites.net/2021/10/12/blog-post-topic/comments#comments-start</comments></item><item><trackback:ping>https://arief21.azurewebsites.net/feed/trackback/cc334b6a-8634-4937-8d3a-a01c4359d749</trackback:ping><pingback:server>https://arief21.azurewebsites.net/feed/pingback</pingback:server><pingback:target>https://arief21.azurewebsites.net/post/cc334b6a-8634-4937-8d3a-a01c4359d749</pingback:target><dc:creator>Arief</dc:creator><wfw:comment>https://arief21.azurewebsites.net/2021/10/12/projects/comments#comments-start</wfw:comment><wfw:commentRss>https://arief21.azurewebsites.net/feed/rss/comments/cc334b6a-8634-4937-8d3a-a01c4359d749</wfw:commentRss><title>Projects</title><guid isPermaLink="false">https://arief21.azurewebsites.net/post/cc334b6a-8634-4937-8d3a-a01c4359d749</guid><link>https://arief21.azurewebsites.net/2021/10/12/projects</link><pubDate>Tue, 12 Oct 2021 16:36:30 GMT</pubDate><description>&lt;div&gt;&lt;h5&gt;This is the list of weekend &amp;amp; side projects I did for fun and learning.&lt;/h5&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;&lt;h5&gt;# Learning / Open Source Projects&lt;/h5&gt;&lt;p&gt;# Article Api Server&lt;/p&gt;&lt;p&gt;Article Api build in Go - Chi with Sqlite database.&lt;/p&gt;&lt;p&gt;View the source code &lt;a href="https://github.com/arief-samuel/Article-Api"&gt;here&lt;/a&gt; .&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Objective&lt;/strong&gt;: Build a simple API for save some important learning resources such as blog post, docs, etc&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Technologies Used&lt;/strong&gt;: Go, Chi SQLite &lt;/p&gt;&lt;p&gt;&lt;strong&gt;Outcomes&lt;/strong&gt;: Create API that implement CRUD base against simple and powerfull database (SQLite)&lt;/p&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;&lt;h5&gt;# Commercial Projects&lt;/h5&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;&lt;h5&gt;# Other Project&lt;/h5&gt;&lt;/div&gt;</description><comments>https://arief21.azurewebsites.net/2021/10/12/projects/comments#comments-start</comments></item><item><trackback:ping>https://arief21.azurewebsites.net/feed/trackback/50e6c0e2-ee97-4c3b-a370-f4416b1ecc84</trackback:ping><pingback:server>https://arief21.azurewebsites.net/feed/pingback</pingback:server><pingback:target>https://arief21.azurewebsites.net/post/50e6c0e2-ee97-4c3b-a370-f4416b1ecc84</pingback:target><dc:creator>Arief</dc:creator><wfw:comment>https://arief21.azurewebsites.net/2021/07/18/cleaning-up-docker-disk-space-in-wsl2/comments#comments-start</wfw:comment><wfw:commentRss>https://arief21.azurewebsites.net/feed/rss/comments/50e6c0e2-ee97-4c3b-a370-f4416b1ecc84</wfw:commentRss><title>Cleaning Up Docker Disk Space In WSL2</title><guid isPermaLink="false">https://arief21.azurewebsites.net/post/50e6c0e2-ee97-4c3b-a370-f4416b1ecc84</guid><link>https://arief21.azurewebsites.net/2021/07/18/cleaning-up-docker-disk-space-in-wsl2</link><pubDate>Sun, 18 Jul 2021 00:02:21 GMT</pubDate><description>&lt;div&gt;&lt;p align="justify"&gt;&lt;img width="930" height="239" src="https://www.docker.com/sites/default/files/d8/2019-07/horizontal-logo-monochromatic-white.png"&gt;&lt;/p&gt;&lt;p align="justify"&gt;Ruang hard-disk adalah sumber daya paling terbatas di laptop saya. Saya memiliki SSD 512Gb yang saya perjuangkan untuk tetap berada di bawah rekomendasi ruang kosong 25% (125Gb) untuk drive ini. Penggunaan Docker dalam development adalah salah satu tantangan untuk hal ini — Docker terlalu mudah untuk mengumpulkan banyak Images dalam waktu yang sangat singkat. &lt;p align="justify"&gt;Seperti gambar dibawah ini : &lt;p align="justify"&gt;&lt;img src="https://user-images.githubusercontent.com/63085636/126039345-e7f093b3-13d1-4f0d-ac0d-3746b1ddb84f.PNG"&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;img src="https://user-images.githubusercontent.com/63085636/126039517-7c6e9342-00d6-4fc3-a0aa-8c55d1b30315.PNG"&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;img width="1019" height="79" src="https://user-images.githubusercontent.com/63085636/126039395-e6a29d74-d64d-4819-b3dc-fee067793c15.PNG"&gt;&lt;/p&gt;&lt;p align="justify"&gt;Saya benar-benar terkejut melihat bahwa drive virtual (VHDX) yang digunakan Docker di WSL2 telah membengkak hingga 31,6Gb! Saat itulah saya memutuskan untuk mulai melakukan langkah-langkah pembersihan resmi untuk Docker, termasuk pendekatan terakhir yang kurang dikenal yang saya gunakan untuk akhirnya merebut kembali sebagian besar ruang disk itu.&lt;p align="justify"&gt;Perintah Pembersihan yang Direkomendasikan&lt;br&gt;Tempat pertama untuk memulai adalah menghapus semua container yang berhenti dan tidak berjalan. Anda dapat melihatnya dengan perintah docker ps -a. Kecuali jika Anda berencana untuk memulai kembali salah satu images ini, mereka tidak menghabiskan ruang. Anda dapat menghapusnya dengan menjalankan docker system prune . Docker bahkan akan memberi tahu Anda berapa banyak ruang yang berhasil diambil kembali. &lt;/p&gt;&lt;p align="justify"&gt;&lt;img src="https://user-images.githubusercontent.com/63085636/126039903-7f31e4d3-3154-4fa6-9e6a-f9a3ffc13aac.PNG"&gt;&lt;/p&gt;&lt;p align="justify"&gt;Langkah selanjutnya adalah melihat daftar container dan menghapus yang tidak Anda butuhkan lagi. Anda dapat melihat daftar semua container docker di komputer Anda dengan perintah docker ps, dan menghapus containeryang tidak diperlukan dengan menggunakan perintah docker rm $ (docker ps –a –q). Bergantung pada berapa banyak container yang Anda kumpulkan dari waktu ke waktu, ini dapat menghemat cukup banyak ruang disk.&lt;p align="justify"&gt;&lt;img width="1046" height="270" src="https://user-images.githubusercontent.com/63085636/126051672-d7eecada-6440-4b96-b2e8-b7cae2a933d6.PNG"&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;img width="1039" height="238" src="https://user-images.githubusercontent.com/63085636/126051712-4ba4635f-6391-4255-92dc-e41a517976e2.PNG"&gt;&lt;/p&gt;&lt;p align="justify"&gt;Sekarang setelah Anda menghapus semua container yang tidak Anda perlukan lagi, sekarang saatnya menjalankan pemangkasan docker images&amp;nbsp; untuk menghapus i,ages yang menggantung. Ini adalah images layer yang tidak ada hubungannya dengan gambar lain di Docker dan tidak lagi diperlukan.&lt;p align="justify"&gt;&lt;img width="1049" height="188" src="https://user-images.githubusercontent.com/63085636/126051760-2107e132-13b7-486f-a261-c21f4107733a.PNG"&gt;&lt;/p&gt;&lt;p align="justify"&gt;Alih-alih menjalankan masing-masing perintah prune sebelumnya secara individual, Anda dapat menggunakan perintah docker sistem&amp;nbsp; prune -–all –volume –force, yang melakukan pemangkasan pada container, gambar, dan beberapa komponen lain yang tidak terlalu membutuhkan penyimpanan di dalam Docker.&lt;p align="justify"&gt;&lt;img src="https://user-images.githubusercontent.com/63085636/126039662-611b827f-5bb3-4b58-a8d9-d9362f3bd7ab.PNG"&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;img src="https://user-images.githubusercontent.com/63085636/126039903-7f31e4d3-3154-4fa6-9e6a-f9a3ffc13aac.PNG"&gt;&lt;/p&gt;&lt;p align="justify"&gt;Pada titik ini, Anda seharusnya mendapatkan kembali cukup banyak ruang. Lihat ukuran file VHDX Anda yang terletak di C:\\AppData\Local\Docker\wsl. Jika ukuran yang ditampilkan adalah tentang apa yang Anda harapkan relatif terhadap jumlah gambar yang Anda miliki, maka Anda sudah selesai. Tetapi jika Anda seperti saya, dan ukuran VHDX masih lebih besar dari jumlah gambar yang Anda miliki, maka inilah saatnya untuk pembersihan yang lebih dalam.&lt;p align="justify"&gt;&lt;img src="https://user-images.githubusercontent.com/63085636/126039517-7c6e9342-00d6-4fc3-a0aa-8c55d1b30315.PNG"&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;img width="1045" height="81" src="https://user-images.githubusercontent.com/63085636/126039395-e6a29d74-d64d-4819-b3dc-fee067793c15.PNG"&gt;&lt;/p&gt;&lt;p align="justify"&gt;Ruang disk saya untuk penyimpanan docker masih belum berubah di 31,6 Gb.&lt;br&gt;&lt;/p&gt;&lt;p align="justify"&gt;Opsi Nuklir&lt;br&gt;Setelah sedikit Googling, saya menemukan thread ini di repositori Docker GitHub dengan orang lain yang memiliki masalah serupa. Tampaknya tidak peduli seberapa sedikit gambar yang Anda miliki, Docker VHDX menolak untuk mengembalikan ruang disk yang pernah dibutuhkan. Sayangnya, satu-satunya solusi yang berhasil adalah masuk ke Docker Desktop, klik tombol troubleshoot, dan tekan tombol Clean / Purge data.&lt;/p&gt;&lt;p align="justify"&gt;&lt;img width="1040" height="595" src="https://user-images.githubusercontent.com/63085636/126040323-4add23fd-8f72-42f8-bf7b-cda2d7eaff7e.PNG"&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;img src="https://user-images.githubusercontent.com/63085636/126051874-10bf2191-8ef4-4628-a70e-82cc381dd4e4.PNG"&gt;&lt;/p&gt;&lt;p align="justify"&gt;Itu berhasil bagi saya, dengan mengorbankan semua gambar yang telah saya pull. Ini harga yang kecil untuk dibayar mengingat Docker menggunakan lebih dari 5% ruang disk saya.&lt;p align="justify"&gt;&lt;img src="https://user-images.githubusercontent.com/63085636/126051850-bcc97ade-0b5d-405c-91c2-f8e05fc5903f.PNG"&gt;&lt;/p&gt;&lt;p align="justify"&gt;Membersihkan Adalah Sebuah Tugas&lt;br&gt;Ada banyak cara untuk membersihkan ruang disk yang digunakan oleh Docker di WSL2. Tetapi tampaknya bahkan dengan semua perintah itu, terkadang Anda harus memulai dengan yang bersih.&lt;/p&gt;&lt;p align="justify"&gt;Beri tahu saya di komentar di bawah jika Anda menemukan solusi lain yang tidak terlalu drastis untuk masalah ini.&lt;/p&gt;&lt;/div&gt;</description><comments>https://arief21.azurewebsites.net/2021/07/18/cleaning-up-docker-disk-space-in-wsl2/comments#comments-start</comments><category>Docker</category><category>Wsl2</category></item><item><trackback:ping>https://arief21.azurewebsites.net/feed/trackback/b5f1f04e-337e-437d-8fb4-e4bbaa87184f</trackback:ping><pingback:server>https://arief21.azurewebsites.net/feed/pingback</pingback:server><pingback:target>https://arief21.azurewebsites.net/post/b5f1f04e-337e-437d-8fb4-e4bbaa87184f</pingback:target><dc:creator>Arief</dc:creator><wfw:comment>https://arief21.azurewebsites.net/2021/06/29/setup-visual-studio-code-for-net-development-environment/comments#comments-start</wfw:comment><wfw:commentRss>https://arief21.azurewebsites.net/feed/rss/comments/b5f1f04e-337e-437d-8fb4-e4bbaa87184f</wfw:commentRss><title>Set-Up Visual Studio Code For .NET Development Environment</title><guid isPermaLink="false">https://arief21.azurewebsites.net/post/b5f1f04e-337e-437d-8fb4-e4bbaa87184f</guid><link>https://arief21.azurewebsites.net/2021/06/29/setup-visual-studio-code-for-net-development-environment</link><pubDate>Tue, 29 Jun 2021 09:54:17 GMT</pubDate><description>&lt;div&gt;&lt;p&gt;&lt;img src="https://tutorialkodingku.com/wp-content/uploads/2021/01/Screenshot_17.png"&gt;&lt;/p&gt;&lt;p&gt;How to set-up Visual Studio Code for .NET Development Environment?&lt;/p&gt;&lt;/div&gt;</description><comments>https://arief21.azurewebsites.net/2021/06/29/setup-visual-studio-code-for-net-development-environment/comments#comments-start</comments></item><item><trackback:ping>https://arief21.azurewebsites.net/feed/trackback/0c583425-97ad-44fb-9cd4-805c8954f2ff</trackback:ping><pingback:server>https://arief21.azurewebsites.net/feed/pingback</pingback:server><pingback:target>https://arief21.azurewebsites.net/post/0c583425-97ad-44fb-9cd4-805c8954f2ff</pingback:target><dc:creator>Arief</dc:creator><wfw:comment>https://arief21.azurewebsites.net/2021/06/28/develop-and-building-react-application-with-net-core-backend-beginners-guide/comments#comments-start</wfw:comment><wfw:commentRss>https://arief21.azurewebsites.net/feed/rss/comments/0c583425-97ad-44fb-9cd4-805c8954f2ff</wfw:commentRss><title>Develop and Building React Application With .NET Core Backend #Beginners Guide</title><guid isPermaLink="false">https://arief21.azurewebsites.net/post/0c583425-97ad-44fb-9cd4-805c8954f2ff</guid><link>https://arief21.azurewebsites.net/2021/06/28/develop-and-building-react-application-with-net-core-backend-beginners-guide</link><pubDate>Mon, 28 Jun 2021 23:50:53 GMT</pubDate><description>&lt;div&gt;&lt;p&gt;&lt;img width="981" height="552" src="https://i.ytimg.com/vi/DpjvXVWGVNs/maxresdefault.jpg"&gt;&lt;/p&gt;&lt;p&gt;Stay tune!&lt;/p&gt;&lt;/div&gt;</description><comments>https://arief21.azurewebsites.net/2021/06/28/develop-and-building-react-application-with-net-core-backend-beginners-guide/comments#comments-start</comments></item><item xml:lang="en-us"><trackback:ping>https://arief21.azurewebsites.net/feed/trackback/01550cbf-1653-4139-9e15-0fd244ffb102</trackback:ping><pingback:server>https://arief21.azurewebsites.net/feed/pingback</pingback:server><pingback:target>https://arief21.azurewebsites.net/post/01550cbf-1653-4139-9e15-0fd244ffb102</pingback:target><dc:creator /><wfw:comment>https://arief21.azurewebsites.net/2021/06/28/create-restful-web-api-using-net-6-and-sqlite-with-entity-framework/comments#comments-start</wfw:comment><wfw:commentRss>https://arief21.azurewebsites.net/feed/rss/comments/01550cbf-1653-4139-9e15-0fd244ffb102</wfw:commentRss><title>Create Restful Web API using .NET 6 and SQLITE with Entity Framework</title><guid isPermaLink="false">https://arief21.azurewebsites.net/post/01550cbf-1653-4139-9e15-0fd244ffb102</guid><link>https://arief21.azurewebsites.net/2021/06/28/create-restful-web-api-using-net-6-and-sqlite-with-entity-framework</link><pubDate>Mon, 28 Jun 2021 23:40:56 GMT</pubDate><description>&lt;div&gt;&lt;p&gt;&amp;lt;h1 id="create-restful-web-api-using-net-5-and-sqlite-with-entity-framework"&amp;gt;Create Restful Web API using .NET 6 and SQLITE with Entity Framework&amp;lt;/h1&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;h3 id="pre-requisite"&amp;gt;Pre-Requisite&amp;lt;/h3&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;p&amp;gt;The 4 things that we will need before we start:&amp;lt;/p&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;ul&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;li&amp;gt;&amp;lt;a href="https://code.visualstudio.com/"&amp;gt;Visual Studio code &amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;li&amp;gt;&amp;lt;a href="https://dotnet.microsoft.com/download"&amp;gt;Dotnet core SDK &amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;li&amp;gt;&amp;lt;a href="https://www.postman.com/downloads/"&amp;gt;Postman &amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;li&amp;gt;&amp;lt;a href="https://sqlitestudio.pl/"&amp;gt;Sqlite studio &amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;/ul&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;p&amp;gt;Once we have downloaded and installed all of the required tool, we need to make sure that the dotnet SDK has been installed successfully, we need to open the terminal and check if the dotnet SDK is installed successfully by checking the dotnet version&amp;lt;/p&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;p&amp;gt;Open the terminal type the command below&amp;lt;/p&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;blockquote&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;p&amp;gt;dotnet --version&amp;lt;/p&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;/blockquote&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;p&amp;gt;Now we need to install the entity framework tool&amp;lt;/p&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;blockquote&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;p&amp;gt;dotnet tool install --global dotnet-ef&amp;lt;/p&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;/blockquote&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;p&amp;gt;Once thats finish we need to create our application&amp;lt;/p&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;blockquote&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;p&amp;gt;dotnet new webapi -n TodoApp --no-https&amp;lt;/p&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;/blockquote&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;h3 id="setup-development-environment-on-vscode"&amp;gt;Setup development environment on vscode&amp;lt;/h3&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;p&amp;gt;Click yes on Required Asset to build and debug :&amp;lt;/p&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;p&amp;gt;&amp;lt;img src="https://user-images.githubusercontent.com/63085636/127107840-236a0efc-cb0f-4c19-8299-1788571c3288.PNG" alt="requiredasset"&amp;gt;&amp;lt;/p&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;p&amp;gt;Add build group on tasks.json&amp;lt;/p&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;pre&amp;gt;&amp;lt;code class="lang-json"&amp;gt;&amp;lt;span class="hljs-string"&amp;gt;"problemMatcher"&amp;lt;/span&amp;gt;: &amp;lt;span class="hljs-string"&amp;gt;"&amp;lt;span class="hljs-variable"&amp;gt;$msCompile&amp;lt;/span&amp;gt;"&amp;lt;/span&amp;gt;,&lt;/p&gt;
&lt;p&gt;&amp;lt;span class="hljs-string"&amp;gt;"group"&amp;lt;/span&amp;gt;: {&amp;lt;span class="hljs-string"&amp;gt;"kind"&amp;lt;/span&amp;gt;: &amp;lt;span class="hljs-string"&amp;gt;"build"&amp;lt;/span&amp;gt;,&amp;lt;span class="hljs-string"&amp;gt;"isDefault"&amp;lt;/span&amp;gt;: &amp;lt;span class="hljs-literal"&amp;gt;true&amp;lt;/span&amp;gt;}&lt;/p&gt;
&lt;p&gt;&amp;lt;/code&amp;gt;&amp;lt;/pre&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;p&amp;gt;Add &amp;lt;code&amp;gt;&amp;amp;quot;uriFormat&amp;amp;quot;: &amp;amp;quot;%s/swagger&amp;amp;quot;&amp;lt;/code&amp;gt; on serverReadyAction for auto lunch swagger url when run application&amp;lt;/p&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;pre&amp;gt;&amp;lt;code class="lang-json"&amp;gt;&amp;lt;span class="hljs-string"&amp;gt;"serverReadyAction"&amp;lt;/span&amp;gt;: {&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;lt;span class="hljs-string"&amp;gt;"action"&amp;lt;/span&amp;gt;: &amp;lt;span class="hljs-string"&amp;gt;"openExternally"&amp;lt;/span&amp;gt;,&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;lt;span class="hljs-string"&amp;gt;"pattern"&amp;lt;/span&amp;gt;: &amp;lt;span class="hljs-string"&amp;gt;"\\bNow listening on:\\s+(https?://\\S+)"&amp;lt;/span&amp;gt;,&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;lt;span class="hljs-string"&amp;gt;"uriFormat"&amp;lt;/span&amp;gt;: &amp;lt;span class="hljs-string"&amp;gt;"%s/swagger"&amp;lt;/span&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/p&gt;
&lt;p&gt;&amp;lt;/code&amp;gt;&amp;lt;/pre&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;p&amp;gt;Now lets add the packages that we will nee in order of us to utilise the EntityFramrwork and SQLite&amp;lt;/p&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;pre&amp;gt;&amp;lt;code class="lang-bash"&amp;gt;dotnet add package Microsoft&amp;lt;span class="hljs-selector-class"&amp;gt;.EntityFrameworkCore&amp;lt;/span&amp;gt;&amp;lt;span class="hljs-selector-class"&amp;gt;.Sqlite&amp;lt;/span&amp;gt;&lt;/p&gt;
&lt;p&gt;dotnet add package Microsoft&amp;lt;span class="hljs-selector-class"&amp;gt;.EntityFrameworkCore&amp;lt;/span&amp;gt;&amp;lt;span class="hljs-selector-class"&amp;gt;.Tools&amp;lt;/span&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;/code&amp;gt;&amp;lt;/pre&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;p&amp;gt;Now lets open VS code and check our application and check the source code, lets build the application and see if its running&amp;lt;/p&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;pre&amp;gt;&amp;lt;code class="lang-bash"&amp;gt;dotnet build&lt;/p&gt;
&lt;p&gt;dotnet &amp;lt;span class="hljs-keyword"&amp;gt;run&amp;lt;/span&amp;gt;&amp;lt;span class="bash"&amp;gt;&amp;lt;/span&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;/code&amp;gt;&amp;lt;/pre&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;p&amp;gt;or you can use shortcut command &amp;lt;code&amp;gt;CTRL + SHIFT + B&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;p&amp;gt;Let check the .csproj file and see package was add onto our project&amp;lt;/p&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;pre&amp;gt;&amp;lt;code class="lang-xml"&amp;gt;&amp;lt;span class="hljs-tag"&amp;gt;&amp;amp;lt;&amp;lt;span class="hljs-name"&amp;gt;ItemGroup&amp;lt;/span&amp;gt;&amp;amp;gt;&amp;lt;/span&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;lt;span class="hljs-tag"&amp;gt;&amp;amp;lt;&amp;lt;span class="hljs-name"&amp;gt;PackageReference&amp;lt;/span&amp;gt; &amp;lt;span class="hljs-attr"&amp;gt;Include&amp;lt;/span&amp;gt;=&amp;lt;span class="hljs-string"&amp;gt;"Microsoft.EntityFrameworkCore.Sqlite"&amp;lt;/span&amp;gt; &amp;lt;span class="hljs-attr"&amp;gt;Version&amp;lt;/span&amp;gt;=&amp;lt;span class="hljs-string"&amp;gt;"5.0.8"&amp;lt;/span&amp;gt; /&amp;amp;gt;&amp;lt;/span&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;lt;span class="hljs-tag"&amp;gt;&amp;amp;lt;&amp;lt;span class="hljs-name"&amp;gt;PackageReference&amp;lt;/span&amp;gt; &amp;lt;span class="hljs-attr"&amp;gt;Include&amp;lt;/span&amp;gt;=&amp;lt;span class="hljs-string"&amp;gt;"Microsoft.EntityFrameworkCore.Tools"&amp;lt;/span&amp;gt; &amp;lt;span class="hljs-attr"&amp;gt;Version&amp;lt;/span&amp;gt;=&amp;lt;span class="hljs-string"&amp;gt;"5.0.8"&amp;lt;/span&amp;gt;&amp;amp;gt;&amp;lt;/span&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;span class="hljs-tag"&amp;gt;&amp;amp;lt;&amp;lt;span class="hljs-name"&amp;gt;IncludeAssets&amp;lt;/span&amp;gt;&amp;amp;gt;&amp;lt;/span&amp;gt;runtime; build; native; contentfiles; analyzers; buildtransitive&amp;lt;span class="hljs-tag"&amp;gt;&amp;amp;lt;/&amp;lt;span class="hljs-name"&amp;gt;IncludeAssets&amp;lt;/span&amp;gt;&amp;amp;gt;&amp;lt;/span&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;span class="hljs-tag"&amp;gt;&amp;amp;lt;&amp;lt;span class="hljs-name"&amp;gt;PrivateAssets&amp;lt;/span&amp;gt;&amp;amp;gt;&amp;lt;/span&amp;gt;all&amp;lt;span class="hljs-tag"&amp;gt;&amp;amp;lt;/&amp;lt;span class="hljs-name"&amp;gt;PrivateAssets&amp;lt;/span&amp;gt;&amp;amp;gt;&amp;lt;/span&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;lt;span class="hljs-tag"&amp;gt;&amp;amp;lt;/&amp;lt;span class="hljs-name"&amp;gt;PackageReference&amp;lt;/span&amp;gt;&amp;amp;gt;&amp;lt;/span&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;lt;span class="hljs-tag"&amp;gt;&amp;amp;lt;&amp;lt;span class="hljs-name"&amp;gt;PackageReference&amp;lt;/span&amp;gt; &amp;lt;span class="hljs-attr"&amp;gt;Include&amp;lt;/span&amp;gt;=&amp;lt;span class="hljs-string"&amp;gt;"Swashbuckle.AspNetCore"&amp;lt;/span&amp;gt; &amp;lt;span class="hljs-attr"&amp;gt;Version&amp;lt;/span&amp;gt;=&amp;lt;span class="hljs-string"&amp;gt;"5.6.3"&amp;lt;/span&amp;gt; /&amp;amp;gt;&amp;lt;/span&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;lt;span class="hljs-tag"&amp;gt;&amp;amp;lt;/&amp;lt;span class="hljs-name"&amp;gt;ItemGroup&amp;lt;/span&amp;gt;&amp;amp;gt;&amp;lt;/span&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;/code&amp;gt;&amp;lt;/pre&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;p&amp;gt;We start by removing the default template code that was generated by the .Net core framework for us. Will delete the WeatherForecastController and the WeatherForcast class.&amp;lt;/p&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;p&amp;gt;&amp;lt;img src="https://user-images.githubusercontent.com/63085636/127110864-3825ee74-5dcf-411c-b03a-2a523cd482e5.PNG" alt="WeatherForecastController"&amp;gt;&amp;lt;/p&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;p&amp;gt;Will create our own controller will call it TodoController.&lt;/p&gt;
&lt;p&gt;Will create our first simple action will call it TestRun, lets start coding our controller&amp;lt;/p&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;pre&amp;gt;&amp;lt;code class="lang-c#"&amp;gt;&amp;lt;span class="hljs-keyword"&amp;gt;using&amp;lt;/span&amp;gt; Microsoft.AspNetCore.Mvc;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;lt;span class="hljs-keyword"&amp;gt;namespace&amp;lt;/span&amp;gt; &amp;lt;span class="hljs-title"&amp;gt;TodoApp&amp;lt;/span&amp;gt;&lt;/p&gt;
&lt;p&gt;{&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; [Route(&amp;lt;span class="hljs-string"&amp;gt;"api/[controller]"&amp;lt;/span&amp;gt;)]&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; [ApiController]&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;lt;span class="hljs-keyword"&amp;gt;public&amp;lt;/span&amp;gt; &amp;lt;span class="hljs-keyword"&amp;gt;class&amp;lt;/span&amp;gt; &amp;lt;span class="hljs-title"&amp;gt;TodoController&amp;lt;/span&amp;gt; : &amp;lt;span class="hljs-title"&amp;gt;ControllerBase&amp;lt;/span&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; {&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; [HttpGet]&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;span class="hljs-function"&amp;gt;&amp;lt;span class="hljs-keyword"&amp;gt;public&amp;lt;/span&amp;gt; ActionResult &amp;lt;span class="hljs-title"&amp;gt;TestRun&amp;lt;/span&amp;gt;(&amp;lt;span class="hljs-params"&amp;gt;&amp;lt;/span&amp;gt;)&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;/span&amp;gt;{&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;span class="hljs-keyword"&amp;gt;return&amp;lt;/span&amp;gt; Ok(&amp;lt;span class="hljs-string"&amp;gt;"success"&amp;lt;/span&amp;gt;);&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; }&lt;/p&gt;
&lt;p&gt;}&lt;/p&gt;
&lt;p&gt;&amp;lt;/code&amp;gt;&amp;lt;/pre&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;p&amp;gt;look how our api on swagger ui&amp;lt;/p&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;p&amp;gt;Once the application is running we need to try it the api on swagger ui and there see we get the response.&lt;/p&gt;
&lt;p&gt;or you can copy this &amp;lt;code&amp;gt;https://localhost:5001/api/todo/&amp;lt;/code&amp;gt; url to browser see what you get the success response&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;lt;img src="https://user-images.githubusercontent.com/63085636/127113042-d7f9c1de-773e-4f0c-9f97-b0c53c231bc4.PNG" alt="swagger"&amp;gt;&amp;lt;/p&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;p&amp;gt;After testing it we now need to start adding models, we add a models folder in the root directory and we add a class inside of it called Item. This is going to be a very simple model which represent our todo list item.&lt;/p&gt;
&lt;p&gt;public class ItemData&amp;lt;/p&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;pre&amp;gt;&amp;lt;code class="lang-csharp"&amp;gt;&amp;lt;span class="hljs-keyword"&amp;gt;public&amp;lt;/span&amp;gt; &amp;lt;span class="hljs-keyword"&amp;gt;class&amp;lt;/span&amp;gt; &amp;lt;span class="hljs-title"&amp;gt;ItemData&amp;lt;/span&amp;gt;&lt;/p&gt;
&lt;p&gt;{&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;lt;span class="hljs-keyword"&amp;gt;public&amp;lt;/span&amp;gt; &amp;lt;span class="hljs-keyword"&amp;gt;int&amp;lt;/span&amp;gt; Id { &amp;lt;span class="hljs-keyword"&amp;gt;get&amp;lt;/span&amp;gt;; &amp;lt;span class="hljs-keyword"&amp;gt;set&amp;lt;/span&amp;gt;; }&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;lt;span class="hljs-keyword"&amp;gt;public&amp;lt;/span&amp;gt; &amp;lt;span class="hljs-keyword"&amp;gt;string&amp;lt;/span&amp;gt; Title { &amp;lt;span class="hljs-keyword"&amp;gt;get&amp;lt;/span&amp;gt;; &amp;lt;span class="hljs-keyword"&amp;gt;set&amp;lt;/span&amp;gt;; }&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;lt;span class="hljs-keyword"&amp;gt;public&amp;lt;/span&amp;gt; &amp;lt;span class="hljs-keyword"&amp;gt;string&amp;lt;/span&amp;gt; Details { &amp;lt;span class="hljs-keyword"&amp;gt;get&amp;lt;/span&amp;gt;; &amp;lt;span class="hljs-keyword"&amp;gt;set&amp;lt;/span&amp;gt;; }&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;lt;span class="hljs-keyword"&amp;gt;public&amp;lt;/span&amp;gt; &amp;lt;span class="hljs-keyword"&amp;gt;bool&amp;lt;/span&amp;gt; Done { &amp;lt;span class="hljs-keyword"&amp;gt;get&amp;lt;/span&amp;gt;; &amp;lt;span class="hljs-keyword"&amp;gt;set&amp;lt;/span&amp;gt;; }&lt;/p&gt;
&lt;p&gt;}&lt;/p&gt;
&lt;p&gt;&amp;lt;/code&amp;gt;&amp;lt;/pre&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;p&amp;gt;once we add our model now we need to build our DbContext. We need to create a Data folder in our root directory and inside this folder will create a new class called TodoAppDbContext.&amp;lt;/p&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;pre&amp;gt;&amp;lt;code class="lang-csharp"&amp;gt;&amp;lt;span class="hljs-keyword"&amp;gt;using&amp;lt;/span&amp;gt; Microsoft.EntityFrameworkCore;&lt;/p&gt;
&lt;p&gt;&amp;lt;span class="hljs-keyword"&amp;gt;using&amp;lt;/span&amp;gt; TodoApp.Models;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;lt;span class="hljs-keyword"&amp;gt;namespace&amp;lt;/span&amp;gt; &amp;lt;span class="hljs-title"&amp;gt;TodoApp.Data&amp;lt;/span&amp;gt;&lt;/p&gt;
&lt;p&gt;{&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;lt;span class="hljs-keyword"&amp;gt;public&amp;lt;/span&amp;gt; &amp;lt;span class="hljs-keyword"&amp;gt;class&amp;lt;/span&amp;gt; &amp;lt;span class="hljs-title"&amp;gt;TodoAppDbContext&amp;lt;/span&amp;gt; : &amp;lt;span class="hljs-title"&amp;gt;DbContext&amp;lt;/span&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; {&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;span class="hljs-keyword"&amp;gt;public&amp;lt;/span&amp;gt; DbSet&amp;amp;lt;Item&amp;amp;gt; Items { &amp;lt;span class="hljs-keyword"&amp;gt;get&amp;lt;/span&amp;gt;; &amp;lt;span class="hljs-keyword"&amp;gt;set&amp;lt;/span&amp;gt;; }&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;span class="hljs-function"&amp;gt;&amp;lt;span class="hljs-keyword"&amp;gt;public&amp;lt;/span&amp;gt; &amp;lt;span class="hljs-title"&amp;gt;TodoAppDbContext&amp;lt;/span&amp;gt;(&amp;lt;span class="hljs-params"&amp;gt;DbContextOptions&amp;amp;lt;TodoAppDbContext&amp;amp;gt; options&amp;lt;/span&amp;gt;) : &amp;lt;span class="hljs-title"&amp;gt;base&amp;lt;/span&amp;gt;(&amp;lt;span class="hljs-params"&amp;gt;options&amp;lt;/span&amp;gt;)&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;/span&amp;gt;{&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; }&lt;/p&gt;
&lt;p&gt;}&lt;/p&gt;
&lt;p&gt;&amp;lt;/code&amp;gt;&amp;lt;/pre&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;p&amp;gt;We need to specify our connection string inside the appsettings.Development.json application&amp;lt;/p&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;pre&amp;gt;&amp;lt;code class="lang-json"&amp;gt;{&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;lt;span class="hljs-attr"&amp;gt;"ConnectionStrings"&amp;lt;/span&amp;gt;: {&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;lt;span class="hljs-attr"&amp;gt;"DefaultConnection"&amp;lt;/span&amp;gt;: &amp;lt;span class="hljs-string"&amp;gt;"DataSource=app.db;Cache=Shared"&amp;lt;/span&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp; },&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;lt;span class="hljs-attr"&amp;gt;"Logging"&amp;lt;/span&amp;gt;: {&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;lt;span class="hljs-attr"&amp;gt;"LogLevel"&amp;lt;/span&amp;gt;: {&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;span class="hljs-attr"&amp;gt;"Default"&amp;lt;/span&amp;gt;: &amp;lt;span class="hljs-string"&amp;gt;"Information"&amp;lt;/span&amp;gt;,&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;span class="hljs-attr"&amp;gt;"Microsoft"&amp;lt;/span&amp;gt;: &amp;lt;span class="hljs-string"&amp;gt;"Warning"&amp;lt;/span&amp;gt;,&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;span class="hljs-attr"&amp;gt;"Microsoft.Hosting.Lifetime"&amp;lt;/span&amp;gt;: &amp;lt;span class="hljs-string"&amp;gt;"Information"&amp;lt;/span&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; }&lt;/p&gt;
&lt;p&gt;&amp;nbsp; }&lt;/p&gt;
&lt;p&gt;}&lt;/p&gt;
&lt;p&gt;&amp;lt;/code&amp;gt;&amp;lt;/pre&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;p&amp;gt;Perfect once our DbContext and connection string is ready we need to update the startup class so we can utilise the Application DbContext inside our application. Open the startup class in our root folder and add the following code.&amp;lt;/p&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;pre&amp;gt;&amp;lt;code class="lang-csharp"&amp;gt;public &amp;lt;span class="hljs-keyword"&amp;gt;void&amp;lt;/span&amp;gt; ConfigureServices(IServiceCollection services)&lt;/p&gt;
&lt;p&gt;{&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; services.AddDbContext&amp;amp;lt;TodoAppDbContext&amp;amp;gt;(&amp;lt;span class="hljs-function"&amp;gt;&amp;lt;span class="hljs-params"&amp;gt;options&amp;lt;/span&amp;gt; =&amp;amp;gt;&amp;lt;/span&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; options.UseSqlite(Configuration.GetConnectionString(&amp;lt;span class="hljs-string"&amp;gt;"DefaultConnection"&amp;lt;/span&amp;gt;)));&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; services.AddControllers();&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; services.AddSwaggerGen(&amp;lt;span class="hljs-function"&amp;gt;&amp;lt;span class="hljs-params"&amp;gt;c&amp;lt;/span&amp;gt; =&amp;amp;gt;&amp;lt;/span&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; c.SwaggerDoc(&amp;lt;span class="hljs-string"&amp;gt;"v1"&amp;lt;/span&amp;gt;, &amp;lt;span class="hljs-keyword"&amp;gt;new&amp;lt;/span&amp;gt; OpenApiInfo { Title = &amp;lt;span class="hljs-string"&amp;gt;"TodoApp"&amp;lt;/span&amp;gt;, Version = &amp;lt;span class="hljs-string"&amp;gt;"v1"&amp;lt;/span&amp;gt; });&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; });&lt;/p&gt;
&lt;p&gt;}&lt;/p&gt;
&lt;p&gt;&amp;lt;/code&amp;gt;&amp;lt;/pre&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;p&amp;gt;Once we have add the DbContext middleware we need to add the initial migration to create the database.&amp;lt;/p&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;pre&amp;gt;&amp;lt;code class="lang-bash"&amp;gt;dotnet ef migrations &amp;lt;span class="hljs-keyword"&amp;gt;add&amp;lt;/span&amp;gt;&amp;lt;span class="bash"&amp;gt; &amp;lt;span class="hljs-string"&amp;gt;"Initial Migrations"&amp;lt;/span&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;/span&amp;gt;dotnet ef database update&lt;/p&gt;
&lt;p&gt;&amp;lt;/code&amp;gt;&amp;lt;/pre&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;p&amp;gt;After the database update has completed successfully we can see we have a new folder called migrations which will contain the C# script which will be responsible on creating the database and its table Item. we can verify that the database has been created since we can see the app.db file in our root directory as well we can see that use the SQLite browser to verify that the table has been created successfully.&amp;lt;/p&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;p&amp;gt;Now that we have completed all of the infrastructure work for our controller. Now we need to start building our TodoController and connect it to the ApiDbContext.&amp;lt;/p&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;p&amp;gt;Will start by adding the get all items in our todo list&amp;lt;/p&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;pre&amp;gt;&amp;lt;code class="lang-csharp"&amp;gt;&amp;lt;span class="hljs-keyword"&amp;gt;using&amp;lt;/span&amp;gt; System.Linq;&lt;/p&gt;
&lt;p&gt;&amp;lt;span class="hljs-keyword"&amp;gt;using&amp;lt;/span&amp;gt; System.Threading.Tasks;&lt;/p&gt;
&lt;p&gt;&amp;lt;span class="hljs-keyword"&amp;gt;using&amp;lt;/span&amp;gt; Microsoft.AspNetCore.Mvc;&lt;/p&gt;
&lt;p&gt;&amp;lt;span class="hljs-keyword"&amp;gt;using&amp;lt;/span&amp;gt; Microsoft.EntityFrameworkCore;&lt;/p&gt;
&lt;p&gt;&amp;lt;span class="hljs-keyword"&amp;gt;using&amp;lt;/span&amp;gt; TodoApp.Data;&lt;/p&gt;
&lt;p&gt;&amp;lt;span class="hljs-keyword"&amp;gt;using&amp;lt;/span&amp;gt; TodoApp.Models;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;lt;span class="hljs-keyword"&amp;gt;namespace&amp;lt;/span&amp;gt; &amp;lt;span class="hljs-title"&amp;gt;TodoApp&amp;lt;/span&amp;gt;&lt;/p&gt;
&lt;p&gt;{&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; [Route(&amp;lt;span class="hljs-string"&amp;gt;"api/[controller]"&amp;lt;/span&amp;gt;)]&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; [ApiController]&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;lt;span class="hljs-keyword"&amp;gt;public&amp;lt;/span&amp;gt; &amp;lt;span class="hljs-keyword"&amp;gt;class&amp;lt;/span&amp;gt; &amp;lt;span class="hljs-title"&amp;gt;TodoController&amp;lt;/span&amp;gt; : &amp;lt;span class="hljs-title"&amp;gt;ControllerBase&amp;lt;/span&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; {&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;span class="hljs-keyword"&amp;gt;private&amp;lt;/span&amp;gt; &amp;lt;span class="hljs-keyword"&amp;gt;readonly&amp;lt;/span&amp;gt; TodoAppDbContext _context;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;span class="hljs-function"&amp;gt;&amp;lt;span class="hljs-keyword"&amp;gt;public&amp;lt;/span&amp;gt; &amp;lt;span class="hljs-title"&amp;gt;TodoController&amp;lt;/span&amp;gt;(&amp;lt;span class="hljs-params"&amp;gt;TodoAppDbContext context&amp;lt;/span&amp;gt;)&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;/span&amp;gt;{&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; _context = context;&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; [HttpGet]&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;span class="hljs-function"&amp;gt;&amp;lt;span class="hljs-keyword"&amp;gt;public&amp;lt;/span&amp;gt; &amp;lt;span class="hljs-keyword"&amp;gt;async&amp;lt;/span&amp;gt; Task&amp;amp;lt;ActionResult&amp;amp;gt; &amp;lt;span class="hljs-title"&amp;gt;GetItems&amp;lt;/span&amp;gt;(&amp;lt;span class="hljs-params"&amp;gt;&amp;lt;/span&amp;gt;)&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;/span&amp;gt;{&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;span class="hljs-keyword"&amp;gt;var&amp;lt;/span&amp;gt; items = &amp;lt;span class="hljs-keyword"&amp;gt;await&amp;lt;/span&amp;gt; _context.Items.ToListAsync();&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;span class="hljs-keyword"&amp;gt;return&amp;lt;/span&amp;gt; Ok(items);&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; [HttpGet(&amp;lt;span class="hljs-string"&amp;gt;"{id"&amp;lt;/span&amp;gt;)]&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;span class="hljs-function"&amp;gt;&amp;lt;span class="hljs-keyword"&amp;gt;public&amp;lt;/span&amp;gt; &amp;lt;span class="hljs-keyword"&amp;gt;async&amp;lt;/span&amp;gt; Task&amp;amp;lt;IActionResult&amp;amp;gt; &amp;lt;span class="hljs-title"&amp;gt;GetItem&amp;lt;/span&amp;gt;(&amp;lt;span class="hljs-params"&amp;gt;&amp;lt;span class="hljs-keyword"&amp;gt;int&amp;lt;/span&amp;gt; id&amp;lt;/span&amp;gt;)&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;/span&amp;gt;{&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;span class="hljs-keyword"&amp;gt;var&amp;lt;/span&amp;gt; item = &amp;lt;span class="hljs-keyword"&amp;gt;await&amp;lt;/span&amp;gt; _context.Items.FirstOrDefaultAsync(i =&amp;amp;gt; i.Id == id);&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;span class="hljs-keyword"&amp;gt;if&amp;lt;/span&amp;gt; (item &amp;lt;span class="hljs-keyword"&amp;gt;is&amp;lt;/span&amp;gt; &amp;lt;span class="hljs-literal"&amp;gt;null&amp;lt;/span&amp;gt;)&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;span class="hljs-keyword"&amp;gt;return&amp;lt;/span&amp;gt; NotFound();&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;span class="hljs-keyword"&amp;gt;return&amp;lt;/span&amp;gt; Ok(item);&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; [HttpPost]&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;span class="hljs-function"&amp;gt;&amp;lt;span class="hljs-keyword"&amp;gt;public&amp;lt;/span&amp;gt; &amp;lt;span class="hljs-keyword"&amp;gt;async&amp;lt;/span&amp;gt; Task&amp;amp;lt;ActionResult&amp;amp;gt; &amp;lt;span class="hljs-title"&amp;gt;CreateItem&amp;lt;/span&amp;gt;(&amp;lt;span class="hljs-params"&amp;gt;Item item&amp;lt;/span&amp;gt;)&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;/span&amp;gt;{&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;span class="hljs-keyword"&amp;gt;if&amp;lt;/span&amp;gt; (!ModelState.IsValid)&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;span class="hljs-keyword"&amp;gt;return&amp;lt;/span&amp;gt; BadRequest();&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;span class="hljs-keyword"&amp;gt;await&amp;lt;/span&amp;gt; _context.Items.AddAsync(item);&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;span class="hljs-keyword"&amp;gt;await&amp;lt;/span&amp;gt; _context.SaveChangesAsync();&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;span class="hljs-keyword"&amp;gt;return&amp;lt;/span&amp;gt; CreatedAtAction(&amp;lt;span class="hljs-keyword"&amp;gt;nameof&amp;lt;/span&amp;gt;(GetItem), &amp;lt;span class="hljs-keyword"&amp;gt;new&amp;lt;/span&amp;gt; { item.Id }, item);&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; [HttpPut(&amp;lt;span class="hljs-string"&amp;gt;"{id}"&amp;lt;/span&amp;gt;)]&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;span class="hljs-function"&amp;gt;&amp;lt;span class="hljs-keyword"&amp;gt;public&amp;lt;/span&amp;gt; &amp;lt;span class="hljs-keyword"&amp;gt;async&amp;lt;/span&amp;gt; Task&amp;amp;lt;IActionResult&amp;amp;gt; &amp;lt;span class="hljs-title"&amp;gt;UpdateItem&amp;lt;/span&amp;gt;(&amp;lt;span class="hljs-params"&amp;gt;&amp;lt;span class="hljs-keyword"&amp;gt;int&amp;lt;/span&amp;gt; id, Item item&amp;lt;/span&amp;gt;)&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;/span&amp;gt;{&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;span class="hljs-keyword"&amp;gt;if&amp;lt;/span&amp;gt; (id != item.Id)&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;span class="hljs-keyword"&amp;gt;return&amp;lt;/span&amp;gt; BadRequest();&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;span class="hljs-keyword"&amp;gt;var&amp;lt;/span&amp;gt; existingItem = &amp;lt;span class="hljs-keyword"&amp;gt;await&amp;lt;/span&amp;gt; _context.Items.FirstOrDefaultAsync(i =&amp;amp;gt; i.Id == id);&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;span class="hljs-keyword"&amp;gt;if&amp;lt;/span&amp;gt; (existingItem &amp;lt;span class="hljs-keyword"&amp;gt;is&amp;lt;/span&amp;gt; &amp;lt;span class="hljs-literal"&amp;gt;null&amp;lt;/span&amp;gt;)&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;span class="hljs-keyword"&amp;gt;return&amp;lt;/span&amp;gt; NotFound();&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; existingItem.Title = item.Title;&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; existingItem.Details = item.Details;&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; existingItem.Done = item.Done;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;span class="hljs-keyword"&amp;gt;await&amp;lt;/span&amp;gt; _context.SaveChangesAsync();&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;span class="hljs-keyword"&amp;gt;return&amp;lt;/span&amp;gt; NoContent();&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; [HttpDelete(&amp;lt;span class="hljs-string"&amp;gt;"{id}"&amp;lt;/span&amp;gt;)]&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;span class="hljs-function"&amp;gt;&amp;lt;span class="hljs-keyword"&amp;gt;public&amp;lt;/span&amp;gt; &amp;lt;span class="hljs-keyword"&amp;gt;async&amp;lt;/span&amp;gt; Task&amp;amp;lt;IActionResult&amp;amp;gt; &amp;lt;span class="hljs-title"&amp;gt;DeleteItem&amp;lt;/span&amp;gt;(&amp;lt;span class="hljs-params"&amp;gt;&amp;lt;span class="hljs-keyword"&amp;gt;int&amp;lt;/span&amp;gt; id&amp;lt;/span&amp;gt;)&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;/span&amp;gt;{&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;span class="hljs-keyword"&amp;gt;var&amp;lt;/span&amp;gt; item = &amp;lt;span class="hljs-keyword"&amp;gt;await&amp;lt;/span&amp;gt; _context.Items.FindAsync(id);&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;span class="hljs-keyword"&amp;gt;if&amp;lt;/span&amp;gt; (item &amp;lt;span class="hljs-keyword"&amp;gt;is&amp;lt;/span&amp;gt; &amp;lt;span class="hljs-literal"&amp;gt;null&amp;lt;/span&amp;gt;)&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;span class="hljs-keyword"&amp;gt;return&amp;lt;/span&amp;gt; NotFound();&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; _context.Items.Remove(item);&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;span class="hljs-keyword"&amp;gt;await&amp;lt;/span&amp;gt; _context.SaveChangesAsync();&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;span class="hljs-keyword"&amp;gt;return&amp;lt;/span&amp;gt; NoContent();&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;span class="hljs-function"&amp;gt;&amp;lt;span class="hljs-keyword"&amp;gt;private&amp;lt;/span&amp;gt; &amp;lt;span class="hljs-keyword"&amp;gt;bool&amp;lt;/span&amp;gt; &amp;lt;span class="hljs-title"&amp;gt;ItemExists&amp;lt;/span&amp;gt;(&amp;lt;span class="hljs-params"&amp;gt;&amp;lt;span class="hljs-keyword"&amp;gt;int&amp;lt;/span&amp;gt; id&amp;lt;/span&amp;gt;)&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;/span&amp;gt;{&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;span class="hljs-keyword"&amp;gt;return&amp;lt;/span&amp;gt; _context.Items.Any(e =&amp;amp;gt; e.Id == id);&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; }&lt;/p&gt;
&lt;p&gt;}&lt;/p&gt;
&lt;p&gt;&amp;lt;/code&amp;gt;&amp;lt;/pre&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;p&amp;gt;We can test each one of these in postman.&amp;lt;/p&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;p&amp;gt;Finally since we are using .Net 5 when creating webapi project Swagger will be already integrated within our application, in order for us to see the swagger interface we need to go to (&amp;lt;a href="http://localhost:5000/swagger/index.html"&amp;gt;http://localhost:5000/swagger/index.html&amp;lt;/a&amp;gt;)&amp;lt;/p&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;p&amp;gt;Swagger allows you to describe the structure of your APIs so that machines can read them, at no extra work from our side other then defining swagger in older version of .net core swagger will be able to read our API structure and give us a UI that we can use to enhance our dev experience&amp;lt;/p&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;p&amp;gt;Thank you for reading this article&amp;lt;/p&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;&lt;/code&gt;&lt;code&gt;
&lt;/code&gt;&lt;/p&gt;&lt;/div&gt;</description><comments>https://arief21.azurewebsites.net/2021/06/28/create-restful-web-api-using-net-6-and-sqlite-with-entity-framework/comments#comments-start</comments></item><item xml:lang="en-us"><trackback:ping>https://arief21.azurewebsites.net/feed/trackback/b05256f6-0125-4fe6-98cf-61af54b4bf9b</trackback:ping><pingback:server>https://arief21.azurewebsites.net/feed/pingback</pingback:server><pingback:target>https://arief21.azurewebsites.net/post/b05256f6-0125-4fe6-98cf-61af54b4bf9b</pingback:target><dc:creator>Arief</dc:creator><wfw:comment>https://arief21.azurewebsites.net/2021/06/22/kotakode-platform-komunitas-bagi-para-pegiat-it-di-indonesia/comments#comments-start</wfw:comment><wfw:commentRss>https://arief21.azurewebsites.net/feed/rss/comments/b05256f6-0125-4fe6-98cf-61af54b4bf9b</wfw:commentRss><slash:comments>2</slash:comments><title>KotaKode! Platform komunitas bagi para pegiat IT di Indonesia.</title><guid isPermaLink="false">https://arief21.azurewebsites.net/post/b05256f6-0125-4fe6-98cf-61af54b4bf9b</guid><link>https://arief21.azurewebsites.net/2021/06/22/kotakode-platform-komunitas-bagi-para-pegiat-it-di-indonesia</link><pubDate>Tue, 22 Jun 2021 13:25:53 GMT</pubDate><description>&lt;div&gt;&lt;p&gt;&lt;font face="Microsoft PhagsPa"&gt;&lt;img width="1103" height="143" src="https://user-images.githubusercontent.com/63085636/122912622-b58c1d80-d382-11eb-8dd2-9a4cdc7f3fd7.png"&gt;&lt;/font&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;font size="3"&gt;&lt;font face="Microsoft PhagsPa"&gt;Apakah anda mengetahui KotaKode? ya KotaKode ada sebuah&lt;font size="3"&gt;&lt;font size="3"&gt;&amp;nbsp;&lt;/font&gt;&lt;a href="https://kotakode.com/" target="_blank"&gt;&lt;font size="3"&gt;Komunitas programmer Indonesia&lt;/font&gt;&lt;/a&gt;&lt;font size="3"&gt;, atau platform komunitas bagi para pegiat IT di Indonesia dimana programmer dapat belajar dan berbagi wawasan seputar dunia IT terkini untuk mendukung memberikan pertumbuhan perekonomian di Indonesia. &lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;font face="Microsoft PhagsPa"&gt;Beberapa waktu lalu &lt;font size="3"&gt;saya tertarik dengan sebuah &lt;/font&gt;&lt;a href="https://kotakode.com/events" target="_blank"&gt;&lt;font size="3"&gt;webinar pemrograman&lt;/font&gt;&lt;/a&gt;&lt;font size="3"&gt;&amp;nbsp; dengan judul&amp;nbsp; &lt;a href="https://www.kotakode.com/event/nonton/27" target="_blank"&gt;&lt;font color="#9b00d3"&gt;“Berkarir Bersama Microsoft Indonesia”&lt;/font&gt;&lt;/a&gt;&lt;/font&gt; yang diadakan oleh &lt;a href="https://www.kotakode.com/" target="_blank"&gt;KotaKode&lt;/a&gt;. Ada beberapa hal yang menarik&amp;nbsp; dari webinar kali ini, Tentu saja banyak dari kita tentu saja mempunyai sebuah mimpi besar suatu saat kita dapat bekerja di sebuah Mulitnational Company, bukan? Ya Bekerja di Perusahaan Seperti &lt;font color="#9b00d3"&gt;Microsoft&lt;/font&gt;, &lt;font color="#ffff00"&gt;Google&lt;/font&gt;, &lt;font color="#4bacc6"&gt;Facebook&lt;/font&gt;, dll. merupakan mimpi bagi banyak orang. Namun kalau boleh jujur banyak diantara kita &lt;font color="#4bacc6"&gt;(termasuk saya)&lt;/font&gt; bingung kira kira harus mulai dari mana? skills apa yang harus kita bangun? portofolio seperti apa yang bagus agar dapat dilirk oleh perusahaan-perusahaan besar ini, dll.&amp;nbsp; Dan banyak diantara kita berakhir di &lt;font color="#f79646"&gt;“Ya sudahlah! gak mungkin saya bisa bekerja disana”.&lt;/font&gt; Tentu saja sebuah keuntungan bagi kita jika kita dapat belajar langsung dari orang–orang yang berpengalaman dan sudah melalui banyak proses untuk bearada dititk tertentu! dan benar sekali, di webinar kali ini kita dapat belajar langsung dari narasumbernya yang adalah Pegawai Microsoft Indonesia itu sendiri, yang tentu saja sangat kompeten dalam memberikan materi dan juga berbagi pengalaman saat mencapai disuatu titik dimana mereka bisa dikatakan menggapai mimpi besar tersebut.&amp;nbsp; Tak butuh watu lama untuk saya memutuskan untuk mengikuti webinar ini. dan&amp;nbsp; segera saya mendaftarkan diri saya di &lt;a href="https://kotakode.com/" target="_blank"&gt;sini&lt;/a&gt;&lt;/font&gt;&lt;font face="Microsoft PhagsPa" size="3"&gt;&lt;/font&gt;&lt;font face="Microsoft PhagsPa"&gt; untuk dapat mengikuti &lt;font size="3"&gt;&lt;/font&gt;&lt;/font&gt;&lt;a href="https://kotakode.com/events" target="_blank"&gt;&lt;font face="Microsoft PhagsPa" size="3"&gt;webinar pemrograman&lt;/font&gt;&lt;/a&gt;&lt;font face="Microsoft PhagsPa" size="3"&gt; ini.&lt;/font&gt;&lt;/p&gt;&lt;font size="3"&gt;&lt;/font&gt;&lt;p align="justify"&gt;&lt;font face="Microsoft PhagsPa" size="3"&gt;Berikuti ini adalah catatan saya dalam mengikuti webinar ini: &lt;/font&gt;&lt;/p&gt;&lt;font size="3"&gt;&lt;font size="3"&gt;&lt;/font&gt;&lt;font size="3"&gt;&lt;/font&gt;&lt;font size="3"&gt;&lt;/font&gt;&lt;p align="justify"&gt;&lt;font face="Microsoft PhagsPa" size="4"&gt;&lt;em&gt;&lt;u&gt;Tips for beginner Programmer!&lt;/u&gt;&lt;/em&gt;&lt;/font&gt;&lt;/p&gt;&lt;/font&gt;&lt;font size="3"&gt;&lt;p&gt;&lt;font face="Microsoft PhagsPa" size="3"&gt;&lt;em&gt;
Share dari Mas Romy(Cloud Solution Architect - Data &amp;amp; AI at Microsoft) &amp;amp; Ko Ricky (Building Cloud &amp;amp; AI Partner Ecosystem at Microsoft | Technology Strategist)&lt;/em&gt;&lt;/font&gt;&lt;/p&gt;&lt;/font&gt;&lt;font face="Microsoft PhagsPa" size="3"&gt;
&lt;/font&gt;&lt;p&gt;&lt;font face="Microsoft PhagsPa" size="3"&gt;Pelajari beberapa topik sebagai berikut:&lt;/font&gt;&lt;/p&gt;&lt;font size="3"&gt;&lt;ul&gt;&lt;li&gt;&lt;font face="Microsoft PhagsPa"&gt;&lt;strike&gt;
&lt;/strike&gt; Cloud Fundamental&lt;/font&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;&lt;font face="Microsoft PhagsPa"&gt;Cloud Fundamental sangat penting sekali saat ini, pelajari Cloud Native Apps, Serverless&lt;/font&gt;&lt;/li&gt;&lt;li&gt;&lt;font face="Microsoft PhagsPa"&gt;Salah satu kelebihan-nya kita bisa pisahkan/pindahkan environment Development -Stagging/Sanbox dari localhost ke cloud (gak perlu di local lag)&lt;/font&gt;&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;&lt;font face="Microsoft PhagsPa"&gt;
 Devops, include (dataops,devsecops)&lt;/font&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;&lt;font face="Microsoft PhagsPa"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Automatation&lt;/font&gt;&lt;/li&gt;&lt;li&gt;&lt;font face="Microsoft PhagsPa"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; CI/CD&lt;/font&gt;&lt;/li&gt;&lt;li&gt;&lt;font face="Microsoft PhagsPa"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Pipeline&lt;/font&gt;&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;&lt;font face="Microsoft PhagsPa" size="3"&gt;Data enginneering&lt;/font&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/font&gt;&lt;font face="Microsoft PhagsPa" size="3"&gt;
&lt;/font&gt;&lt;p&gt;&lt;font face="Microsoft PhagsPa" size="3"&gt;Pelajari 4 hal fundamental ini:&lt;/font&gt;&lt;/p&gt;&lt;font size="3"&gt;&lt;ul&gt;&lt;li&gt;&lt;font face="Microsoft PhagsPa"&gt;
Devops / Cloud fundamental&lt;/font&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;&lt;font face="Microsoft PhagsPa"&gt;Docker &lt;/font&gt;&lt;/li&gt;&lt;li&gt;&lt;font face="Microsoft PhagsPa"&gt;Kubernetes&lt;/font&gt;&lt;/li&gt;&lt;li&gt;&lt;font face="Microsoft PhagsPa"&gt;Automation&lt;/font&gt;&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;&lt;font face="Microsoft PhagsPa"&gt;Data fundamental&lt;/font&gt;&lt;/li&gt;&lt;li&gt;&lt;font face="Microsoft PhagsPa"&gt;AI fundamental &lt;/font&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;&lt;font face="Microsoft PhagsPa"&gt;ML&lt;/font&gt;&lt;/li&gt;&lt;li&gt;&lt;font face="Microsoft PhagsPa"&gt;Deep learning&lt;/font&gt;&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;&lt;font face="Microsoft PhagsPa" size="3"&gt;Lowcode - procode combination&lt;/font&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;&lt;font face="Microsoft PhagsPa"&gt;Power-Apps&lt;/font&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;/font&gt;&lt;font face="Microsoft PhagsPa" size="3"&gt;
&lt;/font&gt;&lt;p&gt;&lt;font face="Microsoft PhagsPa" size="3"&gt;Kita bisa &lt;font color="#ffff00"&gt;cari Community atau Environment yang mendukung kita&lt;/font&gt;&amp;nbsp; untuk bisa belajar dan berkembang, &lt;font color="#ffff00"&gt;Set Goal Set Plan kita&lt;/font&gt; dalam 1 tahun ,5 tahun, atau 10 tahun ke depan kita mau seperti apa, know our limit, kenali batasan dan kekurangan diri, fokus di kemampuan kita dan terus belajar dan juga harus &lt;font color="#ffff00"&gt;konsisten (consistency),&lt;/font&gt;&amp;nbsp; dan jangan lupa &lt;font color="#ffff00"&gt;Stay Humble.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;font color="#ffff00" face="Microsoft PhagsPa" size="3"&gt;
&lt;/font&gt;&lt;p&gt;&lt;font face="Microsoft PhagsPa" size="3"&gt;Dan terakhir jangan membatasi diri kita dengan "hanya" kita harus kerja di &lt;font color="#9b00d3"&gt;Microsoft&lt;/font&gt; saja, buka diri pelajari semua ecosystem di &lt;font color="#9b00d3"&gt;Microsoft&lt;/font&gt;, karna mungkin saja kita dapat opurtunity untuk kerja di &lt;font color="#9b00d3"&gt;Microsoft&lt;/font&gt; partner atau other company yang menggunakan Tech dari Microsoft .&lt;/font&gt;&lt;/p&gt;&lt;font size="3"&gt;&lt;/font&gt;&lt;p&gt;&lt;font face="Microsoft PhagsPa" size="3"&gt;so kalian dapat tonton video nya disini:&lt;/font&gt;&lt;/p&gt;&lt;iframe width="560" height="315" title="YouTube video player" src="https://www.youtube.com/embed/JBKgTL9wO58" frameborder="0" allowfullscreen="" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture"&gt;&lt;/iframe&gt;&lt;font face="Microsoft PhagsPa"&gt;
&lt;font face="Microsoft PhagsPa"&gt;&lt;br&gt;&lt;/font&gt;&lt;/font&gt;&lt;p&gt;&lt;font face="Microsoft PhagsPa"&gt;Ayoo! Dukung terus &lt;a href="https://www.kotakode.com/" target="_blank"&gt;KotaKode&lt;/a&gt; sebagai &lt;font size="3"&gt;&lt;/font&gt;&lt;a href="https://kotakode.com/" target="_blank"&gt;&lt;font size="3"&gt;Komunitas programmer Indonesia&lt;/font&gt;&lt;/a&gt;&lt;font size="3"&gt;, &lt;/font&gt;dalam menciptakan ekosistem yang inklusif bagi programmer di seluruh Indonesia. dan jangan lupa daftarkan diri kalian juga di &lt;a href="https://www.kotakode.com/" target="_blank"&gt;KotaKode&lt;/a&gt; untuk dapat ikutan diskusi forum tanya jawab, tulis blog dan membangun portofolio kita di &lt;a href="https://www.kotakode.com/" target="_blank"&gt;KotaKode&lt;/a&gt; dan juga jangan lewatkan event di &lt;font face="Microsoft PhagsPa"&gt;&lt;font size="3"&gt;&lt;/font&gt;&lt;/font&gt;&lt;a href="https://kotakode.com/events" target="_blank"&gt;&lt;font face="Microsoft PhagsPa" size="3"&gt;webinar pemrograman&lt;/font&gt;&lt;/a&gt; di &lt;a href="https://www.kotakode.com/" target="_blank"&gt;KotaKode&lt;/a&gt;. &lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font face="Microsoft PhagsPa"&gt;Demikian, Happy Coding and stay learning.&lt;/font&gt;&lt;/p&gt;&lt;/div&gt;</description><comments>https://arief21.azurewebsites.net/2021/06/22/kotakode-platform-komunitas-bagi-para-pegiat-it-di-indonesia/comments#comments-start</comments></item><item><trackback:ping>https://arief21.azurewebsites.net/feed/trackback/8853c6ec-f79c-419b-baea-fd505ae7e351</trackback:ping><pingback:server>https://arief21.azurewebsites.net/feed/pingback</pingback:server><pingback:target>https://arief21.azurewebsites.net/post/8853c6ec-f79c-419b-baea-fd505ae7e351</pingback:target><dc:creator>Arief</dc:creator><wfw:comment>https://arief21.azurewebsites.net/2021/06/02/just-start-if-not-now-when-the-first-blog-post/comments#comments-start</wfw:comment><wfw:commentRss>https://arief21.azurewebsites.net/feed/rss/comments/8853c6ec-f79c-419b-baea-fd505ae7e351</wfw:commentRss><title>Just Start ”If Not Now When” - The First Blog Post</title><guid isPermaLink="false">https://arief21.azurewebsites.net/post/8853c6ec-f79c-419b-baea-fd505ae7e351</guid><link>https://arief21.azurewebsites.net/2021/06/02/just-start-if-not-now-when-the-first-blog-post</link><pubDate>Wed, 02 Jun 2021 08:33:18 GMT</pubDate><description>&lt;div&gt;&lt;p&gt;&lt;img src="https://images.unsplash.com/photo-1607523751410-8ce15a864f94?ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&amp;amp;ixlib=rb-1.2.1&amp;amp;auto=format&amp;amp;fit=crop&amp;amp;w=667&amp;amp;q=80"&gt;&lt;p&gt;I thought I should begin this first blog post with a few words on what I hope to achieve. I started creating this website because I wanted to create a space where I could post interesting things I found or learned whilst working as a software developer or just generally in life. I hope to not just blog about software development, best practices or cool code snippets, but also look into some of the other “soft skills” a developer might need, such as software design and aesthetics which I have a particular interest in.&lt;p&gt;I have reached a point where I've helped build some pretty cool stuff in my career so far. I now want to share some of these things with the wider community. Hopefully, I'll have written some code which is of use to someone. Feel free to drop a comment now and again…&lt;/div&gt;</description><comments>https://arief21.azurewebsites.net/2021/06/02/just-start-if-not-now-when-the-first-blog-post/comments#comments-start</comments></item></channel></rss>