<?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: Pranam K</title>
    <description>The latest articles on DEV Community by Pranam K (@pranambhat).</description>
    <link>https://dev.to/pranambhat</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%2F412543%2F0a6f88bb-21ea-4a8e-9d3a-72ef82e5c59c.jpg</url>
      <title>DEV Community: Pranam K</title>
      <link>https://dev.to/pranambhat</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/pranambhat"/>
    <language>en</language>
    <item>
      <title>Best Books for Algorithms and Data Structures in Programming</title>
      <dc:creator>Pranam K</dc:creator>
      <pubDate>Sat, 09 Jul 2022 15:05:37 +0000</pubDate>
      <link>https://dev.to/pranambhat/best-books-for-algorithms-and-data-structures-in-programming-13m1</link>
      <guid>https://dev.to/pranambhat/best-books-for-algorithms-and-data-structures-in-programming-13m1</guid>
      <description>&lt;p&gt;Best Books for Algorithms and Data Structures in programming:&lt;/p&gt;

&lt;p&gt;1) Cracking The Coding Interview: 189 Programming Questions and Solutions - 6th Edition - Gayle Laakmann McDowell&lt;/p&gt;

&lt;p&gt;2) Algorithms in A Nutshell: : A Practical Guide, Second Edition - George Heineman, Gary Pollice, Stanley Selkow&lt;/p&gt;

&lt;p&gt;3) Thomas H. Cormen - Algorithms Unlocked (The MIT Press)&lt;/p&gt;

&lt;p&gt;4) Adnan Aziz and Amit Prakash - Algorithms For Interviews: A Problem Solving Approach&lt;/p&gt;

&lt;p&gt;5) Narasimha Karumanchi - Data Structures And Algorithms Made Easy: Data Structures And Algorithmic Puzzles&lt;/p&gt;

&lt;p&gt;6) Introduction To Algorithms 3rd Edition - Thomas H Cormen, Charles E Leiserson, Ronald L Rivest, Clifford Stein&lt;/p&gt;

&lt;p&gt;7) Dynamic Programming for Coding Interviews - Meenakshi and Kamal Rawat&lt;/p&gt;

&lt;p&gt;8) Data Structures and Algorithms. Aho, Ullman &amp;amp; Hopcroft&lt;/p&gt;

&lt;p&gt;9) Algorithms by Robert Sedgewick &amp;amp; Kevin Wayne&lt;/p&gt;

&lt;p&gt;10) Algorithm Design by Kleinberg &amp;amp; Tardos&lt;/p&gt;

&lt;p&gt;11) The Design and Analysis of Algorithms - Anany Levitin&lt;/p&gt;

&lt;p&gt;12) The Programming Pearls (2nd Edition) by Jon Bentley&lt;/p&gt;

&lt;p&gt;13) The Algorithm Design Manual by Steve S. Skiena&lt;/p&gt;

&lt;p&gt;14) Beautiful Code: Leading Programmers Explain How They Think (Theory in Practice (O'Reilly))&lt;/p&gt;

&lt;p&gt;15) Elements of Programming Interviews: The Insiders' Guide 2nd Edition by Adnan Aziz, Tsung-Hsien Lee, Amit Prakash&lt;/p&gt;

</description>
      <category>books</category>
      <category>webdev</category>
      <category>programming</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>How to START, RESTART, STOP and DELETE multiple Azure VM's?</title>
      <dc:creator>Pranam K</dc:creator>
      <pubDate>Fri, 01 Jul 2022 06:32:18 +0000</pubDate>
      <link>https://dev.to/pranambhat/how-to-start-restart-stop-and-delete-multiple-azure-vms-31o8</link>
      <guid>https://dev.to/pranambhat/how-to-start-restart-stop-and-delete-multiple-azure-vms-31o8</guid>
      <description>&lt;p&gt;When we have Virtual Machines in Azure (opens new window), we have to stop, start and restart them. We can easily do this for one VM, in the overview blade of the VM in the Azure portal. &lt;/p&gt;

&lt;p&gt;But how do we stop or restart multiple VMs at once? &lt;/p&gt;

&lt;p&gt;We can do it in the Azure portal!&lt;/p&gt;

&lt;p&gt;In this article, we will use the Azure portal to perform basic VM management tasks on multiple Azure VMs.&lt;/p&gt;

&lt;p&gt;Prerequisites:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;An Azure subscription (If you don't have an Azure subscription, create a free account (opens new window)before you begin)&lt;/li&gt;
&lt;li&gt;Two or more existing Azure Virtual Machines (opens new window). &lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
&lt;li&gt;
Use the Azure portal to control Azure VMs&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;We will use the Azure portal to stop, restart and delete multiple VMs at the same time in this article.&lt;/p&gt;

&lt;p&gt;Go to the Azure portal (opens new window)&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Click on the menu in the top-left and select "Virtual machines". This shows you all your Azure Virtual Machine's.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;In the menu, you can see buttons for Start, Restart and Stop. If you don't see those buttons, you can reach them by opening the menu from the ... button.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmazd04h8bwzwz5zccppx.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmazd04h8bwzwz5zccppx.png" alt="Image description" width="800" height="290"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;(Options menu in the Virtual machines blade)&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Select two Virtual Machines&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Click the Restart button&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Confirm the restart operation. This will restart the selected VMs, which can take a few minutes.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8vy0pn5ji7lwfharlf80.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8vy0pn5ji7lwfharlf80.png" alt="Image description" width="800" height="212"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;(Restart multiple Virtual Machines)&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Select two VMs&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Open the menu and click on Delete. This opens the Delete Resources blade.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Type "yes" to confirm the deletion and click Delete.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fua6pbu240safhat0kbuf.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fua6pbu240safhat0kbuf.png" alt="Image description" width="800" height="364"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;(Delete multiple Virtual Machines)&lt;/p&gt;

&lt;p&gt;Conclusion:&lt;/p&gt;

&lt;p&gt;We can use the Virtual Machine's blade in the Azure portal to Start, Stop, Restart and Delete multiple Azure Virtual Machine's (opens new window) at the same time.&lt;/p&gt;

</description>
      <category>azure</category>
      <category>devops</category>
      <category>microservices</category>
      <category>webdev</category>
    </item>
    <item>
      <title>How Azure Works?</title>
      <dc:creator>Pranam K</dc:creator>
      <pubDate>Fri, 01 Jul 2022 06:11:07 +0000</pubDate>
      <link>https://dev.to/pranambhat/how-azure-works-5c27</link>
      <guid>https://dev.to/pranambhat/how-azure-works-5c27</guid>
      <description>&lt;p&gt;Azure is Microsoft's public cloud platform. Azure offers a large collection of services, which includes platform as a service (PaaS), infrastructure as a service (IaaS), and managed database service capabilities. However, what exactly is Azure, and how does it work?&lt;/p&gt;

&lt;p&gt;Azure, like other cloud platforms, relies on a technology known as virtualization. Most computer hardware can be emulated in software. Computer hardware is simply a set of instructions, which are permanently, or semi-permanently, encoded in silicon. Emulation layers are used to map software instructions to hardware instructions. Emulation layers allow virtualized hardware to execute in software like the actual hardware itself.&lt;/p&gt;

&lt;p&gt;Essentially, the cloud is a set of physical servers in one or more datacenters. The datacenters execute virtualized hardware for customers. So how does the cloud create, start, stop, and delete millions of instances of virtualized hardware for millions of customers simultaneously?&lt;/p&gt;

&lt;p&gt;To understand the servers, let's look at the architecture of hardware in the datacenter. Inside each datacenter, there's a collection of servers sitting in server racks. Each server rack contains many server blades, and a network switch. These provide network connectivity and a power distribution unit (PDU), which creates power. Racks are sometimes grouped together in larger units known as clusters.&lt;/p&gt;

&lt;p&gt;The server racks, or clusters, are chosen to run virtualized hardware instances for the user. However, some servers run cloud management software, known as a fabric controller. The fabric controller is a distributed application with many responsibilities. It allocates services, monitors the health of the server and the services running on it, and heals servers when they fail.&lt;/p&gt;

&lt;p&gt;Each instance of the fabric controller is connected to another set of servers running cloud orchestration software, typically known as the front end. The front end hosts the web services, RESTful APIs, and internal Azure databases, which are used for all functions in the cloud.&lt;/p&gt;

&lt;p&gt;For example, the front end hosts the services that handle customer requests. The requests allocate Azure resources and services such as virtual machines, and Azure Cosmos DB. First, the front end validates and verifies if the user is authorized to allocate the requested resources. If so, the front end checks a database to locate a server rack with sufficient capacity, which instructs the fabric controller to allocate the resource.&lt;/p&gt;

&lt;p&gt;Azure is a huge collection of servers and networking hardware, which runs a complex set of distributed applications. These applications orchestrate the configuration and operation of virtualized hardware and software on those servers. The orchestration of these servers is what makes Azure so powerful. With Azure, users don't have to maintain and upgrade their hardware as Azure does this behind the scenes.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Angular 14 is here!</title>
      <dc:creator>Pranam K</dc:creator>
      <pubDate>Fri, 03 Jun 2022 05:12:06 +0000</pubDate>
      <link>https://dev.to/pranambhat/angular-14-is-here-4hdn</link>
      <guid>https://dev.to/pranambhat/angular-14-is-here-4hdn</guid>
      <description>&lt;p&gt;&lt;strong&gt;Angular v14&lt;/strong&gt; is released today! Angular Team has completed 2 major requests for comments (RFC):&lt;/p&gt;

&lt;p&gt;Angular v14 is released today! Angular Team has completed 2 major requests for comments (RFC):&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Strictly Typed Reactive Forms RFC closed #1 GitHub issue.&lt;/li&gt;
&lt;li&gt;Standalone APIs RFC introduced a simpler way to author Angular apps.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Angular team renamed the default branch in their repositories in the Angular organization to main.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Main Feature's:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;✅ Standalone components&lt;/p&gt;

&lt;p&gt;✅ Page Title resolver&lt;/p&gt;

&lt;p&gt;✅ Route providers&lt;/p&gt;

&lt;p&gt;✅ Environment initializer&lt;/p&gt;

&lt;p&gt;✅ Typed Reactive Forms&lt;/p&gt;

&lt;p&gt;✅ CLI Autocomplete&lt;/p&gt;

&lt;p&gt;1) Standalone components:&lt;/p&gt;

&lt;p&gt;Angular standalone components aim to streamline the authoring of Angular applications by reducing the need for NgModules. In v14, standalone components are in developer preview. They are ready to be used in your applications for exploration and development, but are not a stable API and will potentially change outside our typical model of backwards compatibility.&lt;/p&gt;

&lt;p&gt;With standalone components, directives and pipes, the standalone: true flag allows you to add imports directly in your @Component() without an @NgModule().&lt;/p&gt;

&lt;p&gt;Explore a new Stackblitz demo app to learn more about how to build an Angular app using standalone components.&lt;/p&gt;

&lt;p&gt;In developer preview, we want to utilize open source to ensure standalone is fully prepared to be released as a stable API. Add your first standalone component with ng generate component  --standalone, then head to GitHub repository to provide feedback as you begin to explore.&lt;/p&gt;

&lt;p&gt;In the coming months, we will continue to build out schematics (such as ng new  --standalone), as well as documenting the use cases and learning journey for this new, streamlined mental model. Please keep in mind that in developer preview, changes may occur as we continue to implement our designs.&lt;/p&gt;

&lt;p&gt;2) Typed Angular Forms&lt;/p&gt;

&lt;p&gt;Angular v14 closes Angular’s top GitHub issue: implementing strict typing for the Angular Reactive Forms package.&lt;/p&gt;

&lt;p&gt;Typed forms ensure that the values inside of form controls, groups, and arrays are type safe across the entire API surface. This enables safer forms, especially for deeply nested complex cases.&lt;/p&gt;

&lt;p&gt;This feature is the result of a public request for comments and design review, which was built upon the prior prototyping, work, and testing of Angular community contributors&lt;/p&gt;

&lt;p&gt;Update schematics allows for incremental migration to typed forms, so you can gradually add typing to your existing forms with full backwards compatibility. ng update will replace all form classes with untyped versions (for example, FormGroup -&amp;gt; UntypedFormGroup). You can then enable types at your own pace (for example, UntypedFormGroup -&amp;gt; FormGroup).&lt;/p&gt;

&lt;p&gt;In order to take advantage of new typing support, try searching for instances of the Untyped forms controls and migrating to the new typed forms API surface where possible.&lt;/p&gt;

&lt;p&gt;3) Streamlined best practices&lt;/p&gt;

&lt;p&gt;Angular v14 brings built-in features that enable developers to build high quality apps, from routing to your code editor, starting with new change detection guides on angular.io.&lt;/p&gt;

&lt;p&gt;4) Streamlined page title accessibility&lt;/p&gt;

&lt;p&gt;Another best practice is ensuring that your app’s page titles uniquely communicate the page’s contents. v13.2 streamlines this with the new Route.title property in the Angular Router. Adding a title now requires no additional imports and is strongly typed. We can configure more complex title logic by providing a custom TitleStrategy.&lt;/p&gt;

&lt;p&gt;5) Extended developer diagnostics&lt;/p&gt;

&lt;p&gt;New extended diagnostics provide an extendable framework that gives you more insight into your templates and how you might be able to improve them. Diagnostics give compile-time warnings with precise, actionable suggestions for your templates, catching bugs before run-time.&lt;/p&gt;

&lt;p&gt;The flexible framework this introduces for developers to add diagnostics in the future.&lt;/p&gt;

&lt;p&gt;6) Catch the invalid “Banana in a box” error on your two-way data bindings&lt;/p&gt;

&lt;p&gt;A common developer syntax error is to flip the brackets and parentheses in two-way binding, writing ([]) instead of [()]. Since () sorta looks like a banana and [] sorta looks like a box, we nicknamed this the “banana in a box” error, since the banana should go in the box.&lt;/p&gt;

&lt;p&gt;While this error is technically valid syntax, our CLI can recognize that this is rarely what developers intend. In the v13.2 release we introduced detailed messaging on this mistake and guidance on how to solve this, all within the CLI and your code editor.&lt;/p&gt;

&lt;p&gt;7) Catch nullish coalescing on non-nullable values&lt;/p&gt;

&lt;p&gt;Extended diagnostics also raise errors for useless nullish coalescing operators (??) in Angular templates. Specifically, this error is raised when the input is not “nullable”, meaning its type does not include null or undefined.&lt;/p&gt;

&lt;p&gt;Extended diagnostics show as warnings during ng build, ng serve, and in real-time with the Angular Language Service. The diagnostics are configurable in tsconfig.json, where you can specify if diagnostics should be a warning, error, or suppress.&lt;/p&gt;

&lt;p&gt;8) Tree-shakeable error messages&lt;/p&gt;

&lt;p&gt;As we continue our Angular Debugging Guides, a community contribution by Ramesh Thiruchelvam adds new runtime error codes. Robust error codes make it easier to reference and find info on how to debug your errors.&lt;/p&gt;

&lt;p&gt;This allows the build optimizer to tree-shake error messages (long strings) from production bundles, while retaining error codes.&lt;/p&gt;

&lt;p&gt;To debug a production error, go to Angular reference guides and reproducing the error in a development environment, in order to view the full string.&lt;/p&gt;

&lt;p&gt;9) More built-in improvements&lt;/p&gt;

&lt;p&gt;Angular v14 includes support for the latest TypeScript 4.7 release and now targets ES2020 by default, which allows the CLI to ship smaller code without downleveling.&lt;/p&gt;

&lt;p&gt;10) Bind to protected component members&lt;/p&gt;

&lt;p&gt;In v14, you can now bind to protected component members directly from your templates.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;@Component(
  selector: 'my-component',
  template: '{{ message }}',  // Now compiles!
})
export class MyComponent {
  protected message: string = 'Hello world';
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This gives you more control over the public API surface of your reusable components.&lt;/p&gt;

&lt;p&gt;11) Optional injectors in Embedded Views&lt;/p&gt;

&lt;p&gt;v14 adds support for passing in an optional injector when creating an embedded view through ViewContainerRef.createEmbeddedView and TemplateRef.createEmbeddedView. The injector allows for the dependency injection behavior to be customized within the specific template.&lt;/p&gt;

&lt;p&gt;This enables cleaner APIs for authoring reusable components and for component primitives in Angular CDK.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;viewContainer.createEmbeddedView(templateRef, context, 
      injector: injector,
})
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;12) NgModel OnPush&lt;/p&gt;

&lt;p&gt;NgModel changes are reflected in the UI for OnPush components.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;@Component(
      selector: 'my-component',
      template: `
        &amp;lt;child [ngModel]="value"&amp;gt;&amp;lt;/child&amp;gt;
      `,
      changeDetection: ChangeDetectionStrategy.OnPush
    })

class MyComponent {}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;13) Built-in primitives and tooling&lt;/p&gt;

&lt;p&gt;CDK and tooling improvements supply the building blocks for a stronger development environment, from CDK menu primitives to CLI auto-completion.&lt;/p&gt;

&lt;p&gt;14) New primitives in the Angular CDK&lt;/p&gt;

&lt;p&gt;Angular’s Component Dev Kit provides a whole suite of tools for building Angular components. In v14, we’re promoting the CDK Menu and Dialog to stable!&lt;/p&gt;

&lt;p&gt;This release includes new CDK primitives that can be used to create more accessible custom components based on the WAI-ARIA menu and menubar design patterns.&lt;/p&gt;

&lt;p&gt;15) hasHarness and getHarnessOrNull in Component Test Harnesses&lt;/p&gt;

&lt;p&gt;v14 includes new methods for HarnessLoader to check if a harness is present, and to return the harness instance if present. Component Test Harnesses continue to provide a flexible way to write better tests for your components.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;const loader = TestbedHarnessEnvironmen
        .loader(fixture);


    const hasButton = await loader
        .hasHarness(MatButtonHarness)


    const buttonHarnessOrNull = await loader
        .getHarnessOrNull(MatButtonHarness);
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;16) Angular CLI enhancements&lt;/p&gt;

&lt;p&gt;Standardized CLI argument parsing means more consistency across the entire Angular CLI, and now every flag uses --lower-skewer-case format. Angular team has removed deprecated camel case arguments support and added support for combined aliases usage.&lt;/p&gt;

&lt;p&gt;Run ng --help for cleaner output that explains your options.&lt;/p&gt;

&lt;p&gt;17) ng completion&lt;/p&gt;

&lt;p&gt;Accidentally typing ng sevre instead of ng serve happens all the time. Typos are one of the most common reasons a command line prompt throws an error. To solve this, v14’s new ng completion introduces real-time type-ahead autocompletion!&lt;/p&gt;

&lt;p&gt;To ensure all Angular developers know about this, the CLI will prompt you to opt-in to autocomplete during your first command execution in v14. You can also manually run:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;ng completion&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;and the CLI will automatically set this up for you.&lt;/p&gt;

&lt;p&gt;18) ng analytics&lt;/p&gt;

&lt;p&gt;The CLI’s analytics command allows you to control analytics settings and print analytics information. More detailed output clearly communicates your analytics configurations, and provides our team with telemetry data to inform our project prioritization. It sincerely helps a lot when you turn it on!&lt;/p&gt;

&lt;p&gt;19) ng cache&lt;/p&gt;

&lt;p&gt;ng cache provides a way to control and print cache information from the command line. We can enable, disable, or delete from disk, and print statistics and information.&lt;/p&gt;

&lt;p&gt;20) Angular DevTools is available offline and in Firefox&lt;/p&gt;

&lt;p&gt;The Angular DevTools debugging extension now supports offline use. For Firefox users, find the extension in the Add-ons for Mozilla.&lt;/p&gt;

&lt;p&gt;21) Experimental ESM Application Builds&lt;/p&gt;

&lt;p&gt;Finally, v14 introduces an experimental esbuild-based build system for ng build, which compiles pure ESM output.&lt;/p&gt;

&lt;p&gt;To try this out in your app, update the browser builder in your angular.json:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;"builder": "@angular-devkit/build-angular:browser"

"builder": "@angular-devkit/build-angular:browser-esbuild"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Reference:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://angular.io/guide/roadmap" rel="noopener noreferrer"&gt;https://angular.io/guide/roadmap&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://update.angular.io/?v=13.0-14.0" rel="noopener noreferrer"&gt;https://update.angular.io/?v=13.0-14.0&lt;/a&gt;&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>angular</category>
      <category>angular14</category>
      <category>angularv14</category>
    </item>
    <item>
      <title>Say No to NgModule in Angular 14!</title>
      <dc:creator>Pranam K</dc:creator>
      <pubDate>Sat, 28 May 2022 16:19:57 +0000</pubDate>
      <link>https://dev.to/pranambhat/say-no-to-ngmodule-in-angular-14-39hl</link>
      <guid>https://dev.to/pranambhat/say-no-to-ngmodule-in-angular-14-39hl</guid>
      <description>&lt;p&gt;NgModules consolidate components, directives, and pipes into cohesive blocks of functionality, each focused on a feature area, application business domain, workflow, or common collection of utilities.&lt;/p&gt;

&lt;p&gt;An NgModule is a class marked by the @NgModule decorator. @NgModule takes a metadata object that describes how to compile a component's template and how to create an injector at runtime. It identifies the module's own components, directives, and pipes, making some of them public, through the exports property, so that external components can use them. @NgModule can also add service providers to the application dependency injectors.&lt;/p&gt;

&lt;p&gt;Angular 14 is going to introduce an alternative way to write applications — Standalone components, directives, and pipes.&lt;/p&gt;

&lt;p&gt;The term “standalone” refers to components, directives, or pipes that can be used independently of NgModule. Although you’ll still need to use the core and external NgModules, you probably won’t need to create new ones.&lt;/p&gt;

&lt;p&gt;Let’s create an application without NgModules. First, we need to generate it using the angular-cli:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;npx @angular/cli@next new ng14&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;The next step is to delete app.module.ts and replace the bootstrapModule() function in main.ts with bootstrapApplication():&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import { enableProdMode } from '@angular/core';
import { bootstrapApplication } from '@angular/platform-browser';
import { AppComponent } from './app/app.component';
import { environment } from './environments/environment';

if (environment.production) {
  enableProdMode();
}

bootstrapApplication(AppComponent)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The bootstrapApplication() can take a list of providers that should be available to the root component and all its children:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import { importProvidersFrom } from '@angular/core';
import { bootstrapApplication } from '@angular/platform-browser';
import { AppComponent } from './app/app.component';
import { HttpClientModule } from '@angular/common/http'

bootstrapApplication(AppComponent, {
  providers: [importProvidersFrom(HttpClientModule)]
}).catch(err =&amp;gt; console.error(err));
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The function extracts the providers from the provided module.&lt;/p&gt;

&lt;p&gt;Now we need to change the AppComponent to be a standalone component. Let's set the standalone property to &lt;strong&gt;true&lt;/strong&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;@Component({
  selector: 'app-root',
  templateUrl: './app.component.html',
  standalone: true,
  styleUrls: ['./app.component.scss']
})
export class AppComponent {}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now we can see the AppComponent’s template in our browser. As our component is standalone, we can use the new imports property. The imports property specifies the template dependencies of the component — those directives, components, and pipes it can use.&lt;/p&gt;

&lt;p&gt;Standalone components can import other standalone components, directives, pipes, and existing NgModules. For example, we can create a standalone directive, and use it in our component:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;npx ng g directive foo --standalone
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import { Directive } from '@angular/core';

@Directive({
  selector: '[appFoo]',
  standalone: true
})
export class FooDirective {}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import { CommonModule } from '@angular/common';
import { FooDirective } from './foo.directive';

@Component({
  selector: 'app-root',
  template: `
     &amp;lt;div appFoo *ngIf="bar"&amp;gt;Foo&amp;lt;/div&amp;gt;
  `,
  standalone: true,
  imports: [FooDirective, CommonModule]
})
export class AppComponent {}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Let us add routing to the application.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;const routes: Routes = [{
  path: 'todos',
  component: TodosPageComponent
}]

@Component({
  selector: 'app-root',
  template: `
     &amp;lt;a routerLink="/todos"&amp;gt;Todos&amp;lt;/a&amp;gt;
     &amp;lt;router-outlet&amp;gt;&amp;lt;/router-outlet&amp;gt;
  `,
  standalone: true,
  imports: [RouterModule.forRoot(routes)],
  styleUrls: ['./app.component.scss']
})
export class AppComponent {}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This isn’t possible because Angular doesn’t allow us to use ModuleWithProvider in a standalone component. Next, we might try using the new importProvidersFrom function in the component’s providers:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;const routes: Routes = [{
  path: 'todos',
  component: TodosPageComponent
}]

@Component({
  selector: 'app-root',
  template: `
     &amp;lt;a routerLink="/todos"&amp;gt;Todos&amp;lt;/a&amp;gt;
     &amp;lt;router-outlet&amp;gt;&amp;lt;/router-outlet&amp;gt;
  `,
  standalone: true,
  providers: importProvidersFrom(RouterModule.forRoot(routes)),
  imports: [FooDirective, CommonModule],
  styleUrls: ['./app.component.scss']
})
export class AppComponent {}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Using in-app navigation will work. The router will miss the first navigation. Initialization of the router should be performed in the bootstrap process:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;bootstrapApplication(AppComponent, {
  providers: [importProvidersFrom(RouterModule.forRoot(routes))]
}).catch(err =&amp;gt; console.error(err));
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The TodosPageComponent is eagerly loaded. Let’s change it to load lazily and add a TodoPageComponent:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import { Routes } from '@angular/router';

export const todosRoutes: Routes = [
  {
    path: 'todos',
    title: 'Todos Page',
    children: [
      {
        path: '',
        loadComponent: () =&amp;gt;
          import('./todos-page.component').then((m) =&amp;gt; m.TodosPageComponent),
        children: [
          {
            path: ':id',
            loadComponent: () =&amp;gt;
              import('./todo-page/todo-page.component').then(
                (m) =&amp;gt; m.TodoPageComponent
              ),
          },
        ],
      },
    ],
  },
];
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Instead of using loadChildren and passing a NgModule, we use the loadComponent property and pass a component. We can also declare providers for this Route and its children using the new providers property:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import { Routes } from '@angular/router';

export const todosRoutes: Routes = [
  {
    path: 'todos',
    title: 'Todos Page',
    providers: [
      {
        provide: 'Angular',
        useValue: 'v14',
      },
    ],
    children: [
      {
        path: '',
        loadComponent: () =&amp;gt;
          import('./todos-page.component').then((m) =&amp;gt; m.TodosPageComponent),
        children: [
          {
            path: ':id',
            loadComponent: () =&amp;gt;
              import('./todo-page/todo-page.component').then(
                (m) =&amp;gt; m.TodoPageComponent
              ),
          },
        ],
      },
    ],
  },
];
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;We can also pass an array of routes to loadChildren:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;export const ROUTES: Route[] = [
  { path: 'child', component: ChildCmp},
]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;{
  path: 'parent',
  loadChildren: () =&amp;gt; import('./children').then(m =&amp;gt; m.ROUTES),
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Conclusion:&lt;/p&gt;

&lt;p&gt;In coming days, Angular team may come up with Angular 14 update and new feature's. Stay tuned!&lt;/p&gt;

</description>
      <category>programming</category>
      <category>javascript</category>
      <category>angular</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>Create a CI/CD pipeline in Microsoft Azure DevOps for the .NET project</title>
      <dc:creator>Pranam K</dc:creator>
      <pubDate>Sun, 15 May 2022 17:49:45 +0000</pubDate>
      <link>https://dev.to/pranambhat/create-a-cicd-pipeline-in-microsoft-azure-devops-for-the-net-project-4jdh</link>
      <guid>https://dev.to/pranambhat/create-a-cicd-pipeline-in-microsoft-azure-devops-for-the-net-project-4jdh</guid>
      <description>&lt;p&gt;&lt;strong&gt;&lt;u&gt;Pre-requisites:&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Microsoft Azure Account: If you do not have an active account, sign-up here: &lt;a href="https://azure.microsoft.com/en-us/free/" rel="noopener noreferrer"&gt;Sign-up&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Visual Studio Dev Essentials: If you do not have Visual Studio subscription, check this out: &lt;a href="https://visualstudio.microsoft.com/dev-essentials/" rel="noopener noreferrer"&gt;Visual Studio&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Let's get started. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;What is DevOps Starter?&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;DevOps Starter makes it easy to get started on Azure using either GitHub actions or Azure DevOps. It helps you launch your favorite app on the Azure service of your choice in just a few quick steps from the Azure portal.&lt;/p&gt;

&lt;p&gt;DevOps Starter sets up everything you need for developing, deploying, and monitoring your application. You can use the DevOps Starter dashboard to monitor code commits, builds, and deployments, all from a single view in the Azure portal.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;What are the advantages of DevOps Starter?&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;DevOps starter the following supports 2 CI/CD providers, to automate your deployments:&lt;/p&gt;

&lt;p&gt;1) GitHub Actions&lt;br&gt;
2) Azure DevOps&lt;/p&gt;

&lt;p&gt;DevOps Starter automates the setup of an entire continuous integration (CI) and continuous delivery (CD) for your application to Azure. You can start with existing code or use one of the provided sample applications. Then you can quickly deploy that application to various Azure services such as Virtual Machines, App Service, Azure Kubernetes Services (AKS), Azure SQL Database, and Azure Service Fabric.&lt;/p&gt;

&lt;p&gt;DevOps Starter does all the work for the initial configuration of a DevOps pipeline including everything from setting up the initial Git repository, configuring the CI/CD pipeline, creating an Application Insights resource for monitoring, and providing a single view of the entire solution with the creation of a DevOps Starter dashboard in the Azure portal.&lt;/p&gt;

&lt;p&gt;Key benefits of using DevOps Starter:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Quickly deploy your application to Azure.&lt;/li&gt;
&lt;li&gt;Automate the setup of a CI/CD workflow or pipeline.&lt;/li&gt;
&lt;li&gt;View and understand how to properly set up a CI/CD workflow or pipeline.&lt;/li&gt;
&lt;li&gt;Further customize the release pipelines based on your specific scenarios.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;What is CI/CD pipeline and what is the purpose of CI/CD pipeline?&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A CI/CD pipeline automates your software delivery process. The pipeline builds code, runs tests (CI), and safely deploys a new version of the application (CD). Automated pipelines remove manual errors, provide standardized feedback loops to developers, and enable fast product iterations.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;Step 1:&lt;/u&gt;&lt;/strong&gt; &lt;/p&gt;

&lt;p&gt;Set up a sample ASP.NET project using DevOps Starter project&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Sign into the Microsoft Azure portal: &lt;a href="https://portal.azure.com/" rel="noopener noreferrer"&gt;https://portal.azure.com/&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;In the search box, type DevOps and select DevOps Starter. Then click on Create DevOps Starter.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0dklvmxyc6981q74ctp8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0dklvmxyc6981q74ctp8.png" alt="Image description" width="615" height="217"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fsawh2dxmb6jc6e7xl8t0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fsawh2dxmb6jc6e7xl8t0.png" alt="Image description" width="800" height="430"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;By default, DevOps Starter project setup with GitHub. Click on change settings to change the destination to Azure DevOps and click Done.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2rmmjqcikza7sq7qyk94.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2rmmjqcikza7sq7qyk94.png" alt="Image description" width="800" height="360"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Select the .NET sample application and click Next.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6mf907rxjijfd0lbae0p.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6mf907rxjijfd0lbae0p.png" alt="Image description" width="800" height="525"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The .NET samples include a choice of either the open source ASP.NET framework or the cross-platform .NET Core framework. Select the .NET Core application framework. This is an ASP.NET Core MVC application. Enable Add a database toggle to add the database to the application. When you’re done, choose Next.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fz478ib39bm27imsc19zi.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fz478ib39bm27imsc19zi.png" alt="Image description" width="671" height="559"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Web App on Windows is the default deployment target. We can optionally choose Virtual Machine. Click Next.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhcg88efn69ujwwnh612v.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhcg88efn69ujwwnh612v.png" alt="Image description" width="696" height="557"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Select your Azure DevOps organization and choose a name for your project and Web app. Click Review + Create.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3yglr76u2wi6c1dcude1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3yglr76u2wi6c1dcude1.png" alt="Image description" width="696" height="561"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Click on Additional Settings if you would like to edit web app and database parameters.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmgsrpbqiyujsj4gutlg6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmgsrpbqiyujsj4gutlg6.png" alt="Image description" width="767" height="609"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Click Go to resource.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxruabms8b2lj2npjs9aa.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxruabms8b2lj2npjs9aa.png" alt="Image description" width="419" height="209"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmovnp2xb9408ur891yy2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmovnp2xb9408ur891yy2.png" alt="Image description" width="800" height="353"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;We can now work on ASP.NET Core app with a CI/CD process that automatically deploys our latest work to our web site. On the right side of the dashboard, select Browse to view our running application.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fg8jkskdoow66ydcptsgh.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fg8jkskdoow66ydcptsgh.png" alt="Image description" width="557" height="222"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fc97zg5zqna9g0cmxydqy.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fc97zg5zqna9g0cmxydqy.png" alt="Image description" width="800" height="431"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;Step 2:&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Let's check and validate CI/CD pipelines configuration for the Azure DevOps project.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Select Build Pipelines from the top of the Azure DevOps project dashboard. This link opens a browser tab and the Azure DevOps build pipeline.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4o56oks9244huvo8ix7j.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4o56oks9244huvo8ix7j.png" alt="Image description" width="540" height="90"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Click on Edit.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvw9az7ntyb92gll1j4ut.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvw9az7ntyb92gll1j4ut.png" alt="Image description" width="800" height="334"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;This build pipeline performs various tasks such as fetching sources from the Git repository, restoring dependencies, compile the application, run tests and publishing outputs used for deployments.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flm4yfmtfv4w9aqn3biw1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flm4yfmtfv4w9aqn3biw1.png" alt="Image description" width="800" height="517"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Go to pipeline name, select History. We can see an audit trail of our recent changes for the build. Azure DevOps keeps track of any changes made to the build definition and allows us to compare versions.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Select Triggers. The Azure DevOps project automatically created a CI trigger and every commit to the repository initiates a new build.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fi5posm7aafbbninevi0t.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fi5posm7aafbbninevi0t.png" alt="Image description" width="800" height="206"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Click Releases under Pipelines section.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxzhascj2m2zr4xan3fme.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxzhascj2m2zr4xan3fme.png" alt="Image description" width="227" height="151"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Now select the release pipeline. Click Edit.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdhzdj4a1786456miow3g.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdhzdj4a1786456miow3g.png" alt="Image description" width="800" height="135"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Under Artifacts, select Drop.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fr5u7r8p0dy2t1htkyaby.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fr5u7r8p0dy2t1htkyaby.png" alt="Image description" width="800" height="310"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;To the right-hand side of the Drop icon, select the Continuous deployment trigger. This release pipeline has an enabled CD trigger, which executes a deployment every time there is a new build artifact available. Disable this trigger, when our deployments require manual execution.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxw3ft2333nxyklblj3vl.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxw3ft2333nxyklblj3vl.png" alt="Image description" width="800" height="223"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Select Tasks. The tasks are the activities your deployment process performs.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3c9oyucsq1j49h1fnrcp.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3c9oyucsq1j49h1fnrcp.png" alt="Image description" width="528" height="271"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fsgw0af6veicqe2oryncc.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fsgw0af6veicqe2oryncc.png" alt="Image description" width="490" height="406"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;On the right-hand side of the browser, select View releases.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fglcgqgymeue8to02anhi.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fglcgqgymeue8to02anhi.png" alt="Image description" width="352" height="68"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8wq0cvfpi01cqlvd8lzf.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8wq0cvfpi01cqlvd8lzf.png" alt="Image description" width="544" height="159"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Now click on the release number.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fc7brw0n5k6isc7onpc8a.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fc7brw0n5k6isc7onpc8a.png" alt="Image description" width="624" height="405"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Click Logs. The logs contain information about the deployment process.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;Step 3:&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Write code. Commit &amp;amp; Push the code changes and execute CI/CD.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Click on Repos to view the created Git repository by Azure DevOps project.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fi0opjkcna3y4x3dhm4pz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fi0opjkcna3y4x3dhm4pz.png" alt="Image description" width="800" height="408"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;To view the repository, first clone URL by selecting Clone from the top right of the browser.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3348h4v601xmcym25fe4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3348h4v601xmcym25fe4.png" alt="Image description" width="800" height="237"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Go to left-hand side of the browser, navigate to the Application/aspnet-core-dotnet-core/Pages/Index.cshtml file. Select Edit, and make a change.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffolcpd15wlwc3ludw72l.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffolcpd15wlwc3ludw72l.png" alt="Image description" width="800" height="404"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Make some changes and commit the code.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Go to Pipelines. Notice, build is in progress. The changes are automatically built and deployed via Azure DevOps CI/CD pipelines.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fz4ckslu51b9etnnwzy42.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fz4ckslu51b9etnnwzy42.png" alt="Image description" width="800" height="208"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Once the Build and Release are completed in your browser, navigate to the Azure DevOps project dashboard. On the right side of the dashboard, select Browse to view your updated running application.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fn34nyxofm9ev7f5yzcuk.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fn34nyxofm9ev7f5yzcuk.png" alt="Image description" width="557" height="222"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fyoge1cx13psnq500f0ch.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fyoge1cx13psnq500f0ch.png" alt="Image description" width="800" height="441"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;Conclusion:&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;In this blog we have learned how we can set up a CI/CD pipeline for the sample .NET project in Microsoft Azure DevOps with step by step guide. Hope it helps someone out there. Thank you.&lt;/p&gt;

</description>
      <category>programming</category>
      <category>tutorial</category>
      <category>azure</category>
      <category>devops</category>
    </item>
    <item>
      <title>How to set LinkedIn on Dark Mode?</title>
      <dc:creator>Pranam K</dc:creator>
      <pubDate>Fri, 14 Jan 2022 04:16:41 +0000</pubDate>
      <link>https://dev.to/pranambhat/how-to-set-linkedin-on-dark-mode-1aga</link>
      <guid>https://dev.to/pranambhat/how-to-set-linkedin-on-dark-mode-1aga</guid>
      <description>&lt;p&gt;LinkedIn recently introduced Dark Mode for Mobile as well as Web. They faced a lot of problems and they have rolled back. Again, this time LinkedIn has introduced Dark Mode feature. Those who like this feature, make use of it. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How to set LinkedIn on Dark Mode? 🤔&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Click on the Profile Picture -&amp;gt; Settings -&amp;gt; Account preferences -&amp;gt; Display -&amp;gt; Dark mode -&amp;gt; Dark mode&lt;/p&gt;

&lt;p&gt;Conclusion:&lt;/p&gt;

&lt;p&gt;Dark Mode feature is totally up to user's who like to use. &lt;/p&gt;

</description>
    </item>
    <item>
      <title>What really happened with Aaron Swartz?</title>
      <dc:creator>Pranam K</dc:creator>
      <pubDate>Mon, 10 Jan 2022 06:06:38 +0000</pubDate>
      <link>https://dev.to/pranambhat/what-really-happened-with-aaron-swartz-2ddd</link>
      <guid>https://dev.to/pranambhat/what-really-happened-with-aaron-swartz-2ddd</guid>
      <description>&lt;p&gt;&lt;strong&gt;&lt;u&gt;Introduction:&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Many of the programmer's spend their valuable time on the open source community and platforms. Their work needs to be valuated and should give them the credits when it comes to copying/downloading their contents. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Now, let us see what is OSS?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Open Source Software (OSS) is a product or in general, computer software that is released under a license (example: MIT) in which the copyright holder grants users the rights to use, study, change, and distribute the software and its source code to anyone and for any purpose.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What are the Open Source communities?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Open Source is a platform where developer's code and maintain their repositories in a decentralized and collaborative manner. It also contains peer-review system, maintain packages, build, deployment, etc.&lt;/p&gt;

&lt;p&gt;&lt;u&gt;Examples:&lt;/u&gt; GitHub, GitLab, Git, Bitbucket, Heroku, AWS, Azure DevOps, Stack Overflow, etc.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;Story:&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Marak is a well-known coder/developer over GitHub. He was good at his work all the time. He maintained a lot of code repo's and worked on lot of projects over GitHub. #oss and #opensource are the 2 big term's until and unless they get valued. Often OSS developer's make the world keep the lights on but aren't compensated for their time :)&lt;/p&gt;

&lt;p&gt;Marak created &amp;amp; maintained a repository which is used by Fortune 500 companies. Which has 2,424,317 Weekly Downloads and 2,571 Dependents.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fomwxiykjjxsfi570m0sx.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fomwxiykjjxsfi570m0sx.png" alt="Image description" width="800" height="370"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Marak was struggling, asked help. Got nothing in return. In protest, he updated the README.md file with the famous quote "What really happened with Aaron Swartz?" and he removed his code (faker.js) from his repository. In the mean-time, GitHub suspended his account for removing something he owned the rights to.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Now the question comes here is:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;1) On what basis GitHub removed his account? He wrote the first line of code and he will write the last line as well. He has the right to maintain his code and repositories. On what terms and condition's GitHub has the right to remove his account from the community?&lt;/p&gt;

&lt;p&gt;2) When a developer writes the code why can't he get's valued when million's of people download his code and take the credits?&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;Conclusion:&lt;br&gt;
&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;GitHub is just an open source platform to share and maintain code repositories. However, it is not the only choice for a developer!&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;Reference:&lt;br&gt;
&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://lnkd.in/gtW28Hhg" rel="noopener noreferrer"&gt;https://lnkd.in/gtW28Hhg&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://lnkd.in/g2F_zMtk" rel="noopener noreferrer"&gt;https://lnkd.in/g2F_zMtk&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://lnkd.in/gRseV7gh" rel="noopener noreferrer"&gt;https://lnkd.in/gRseV7gh&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://lnkd.in/g7rC6e6G" rel="noopener noreferrer"&gt;https://lnkd.in/g7rC6e6G&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://lnkd.in/gvshgVkh" rel="noopener noreferrer"&gt;https://lnkd.in/gvshgVkh&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://lnkd.in/gPzDDwr5" rel="noopener noreferrer"&gt;https://lnkd.in/gPzDDwr5&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://lnkd.in/gTQHD9DA" rel="noopener noreferrer"&gt;https://lnkd.in/gTQHD9DA&lt;/a&gt;&lt;/p&gt;

</description>
      <category>opensource</category>
      <category>community</category>
      <category>programming</category>
    </item>
    <item>
      <title>List of Algorithms in Computer Programming</title>
      <dc:creator>Pranam K</dc:creator>
      <pubDate>Mon, 06 Dec 2021 09:24:57 +0000</pubDate>
      <link>https://dev.to/pranambhat/list-of-algorithms-in-computer-programming-4loa</link>
      <guid>https://dev.to/pranambhat/list-of-algorithms-in-computer-programming-4loa</guid>
      <description>&lt;p&gt;&lt;strong&gt;Introduction&lt;/strong&gt;:&lt;/p&gt;

&lt;p&gt;In this article, we will see all the available algorithms in computer programming. This will be helpful to develop and build great products and thus will improve efficiency and quality.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Description&lt;/strong&gt;:&lt;/p&gt;

&lt;p&gt;I have listed out all the algorithms at one place. Few of them are most familiar one’s and the rest all of them are not used by us on a regular basis. However, these concepts/data structures/algorithms are really helpful when deciding the complexity of the architecture or problem. If all of us make use of these algorithms at right place, we can build and deliver top-notch products to the market.&lt;/p&gt;

&lt;p&gt;Searching:&lt;br&gt;
1) Binary Search&lt;br&gt;
2) Linear Search&lt;br&gt;
3) Depth First Search&lt;br&gt;
4) Breadth First Search&lt;br&gt;
5) Rabin-Karp Algorithm&lt;br&gt;
6) Z Algorithm&lt;/p&gt;

&lt;p&gt;Sorting:&lt;br&gt;
1) Insertion Sort&lt;br&gt;
2) Heap Sort&lt;br&gt;
3) Selection Sort&lt;br&gt;
4) Merge Sort&lt;br&gt;
5) Quick Sort&lt;br&gt;
6) Counting Sort&lt;br&gt;
7) Bucket Sort&lt;br&gt;
8) Bubble Sort&lt;br&gt;
9) Radix Sort&lt;br&gt;
10) Shell Sort&lt;br&gt;
11) Comb Sort&lt;br&gt;
12) Pigeonhole Sort&lt;br&gt;
13) Cycle Sort&lt;/p&gt;

&lt;p&gt;Graphs:&lt;br&gt;
1) Kruskal’s Algorithm&lt;br&gt;
2) Dijkstra’s Algorithm&lt;br&gt;
3) Bellman Ford Algorithm&lt;br&gt;
4) Floyd Warshall Algorithm&lt;br&gt;
5) Topological Sort Algorithm&lt;br&gt;
6) Flood Fill Algorithm&lt;br&gt;
7) Lee Algorithm&lt;br&gt;
8) Prim’s Algorithm&lt;br&gt;
9) Boruvka’s Algorithm&lt;br&gt;
10) Johnson’s Algorithm&lt;br&gt;
11) Kosaraju’s Algorithm&lt;br&gt;
12) Tarjan’s Algorithm&lt;/p&gt;

&lt;p&gt;Arrays:&lt;br&gt;
1) Kadane’s Algorithm&lt;br&gt;
2) Floyd’s Cycle Detection Algorithm&lt;br&gt;
3) Knuth-Morris-Pratt Algorithm (KMP)&lt;br&gt;
4) Quick Select Algorithm&lt;br&gt;
5) Boyer — More Majority Vote Algorithm&lt;/p&gt;

&lt;p&gt;Tree:&lt;br&gt;
1) AA Tree&lt;br&gt;
2) Binary Indexed Tree or Fenwick Tree&lt;br&gt;
3) Quadtree&lt;br&gt;
4) Cartesian Tree&lt;br&gt;
5) Fibonacci heap&lt;br&gt;
6) Interval Tree&lt;br&gt;
7) Finger Tree&lt;br&gt;
8) Crit-bit Trees&lt;br&gt;
9) Scapegoat Tree&lt;br&gt;
10) Splay Tree&lt;br&gt;
11) Suffix Tree&lt;br&gt;
12) Counted B-Trees&lt;br&gt;
13) Binary Space Partitioning&lt;br&gt;
14) Van Emde Boas Tree&lt;/p&gt;

&lt;p&gt;Others:&lt;br&gt;
1) Huffman Coding Compression Algorithm&lt;br&gt;
2) Euclid’s Algorithm&lt;br&gt;
3) Union Find Algorithm&lt;br&gt;
4) Manacher’s Algorithm&lt;br&gt;
5) Eukerian Path (Hierholzer’s Algorithm)&lt;br&gt;
6) Convex Hull | Set 1 (Jarvis’s Algorithm or Wrapping)&lt;br&gt;
7) Convex Hull | Set 2 (Graham Scan)&lt;br&gt;
8) Convex Hull using Divide and Conquer Algorithm&lt;br&gt;
9) Quickhull Algorithm for Convex Hull&lt;br&gt;
10) Distinct elements in subarray using Mo’s Algorithm&lt;br&gt;
11) Line Sweep Algorithm&lt;br&gt;
12) MO’s Algorithm (Query square root decomposition)&lt;br&gt;
13) Disjoint-set Data Structure&lt;br&gt;
14) Ackermann Function&lt;br&gt;
15) Zobrist Hashing&lt;br&gt;
16) FM-index&lt;br&gt;
17) Circular buffer&lt;br&gt;
18) Hungarian Algorithm / Kuhn–Munkres Algorithm / Munkres Assignment Algorithm&lt;br&gt;
19) Dekker’s Algorithm&lt;br&gt;
20) Winged Edge&lt;br&gt;
21) Burrows–Wheeler Transform&lt;br&gt;
22) Zipper&lt;br&gt;
23) Five Balltree Construction Algorithms&lt;br&gt;
24) Cuckoo Hashing&lt;br&gt;
25) Rope (Data Structure)&lt;br&gt;
26) Binary Decision Diagram&lt;br&gt;
27) Disjoint-set Data Structure&lt;br&gt;
28) Bloom Filter&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Conclusion&lt;/strong&gt;:&lt;/p&gt;

&lt;p&gt;In this article, we have seen the list of algorithms available in computer programming. Let us learn and use these algorithms to build great products in our day to day life. If you know any algorithm other than these algorithms, kindly comment here! Let us learn these algorithms one by one! Thank you.&lt;/p&gt;

</description>
      <category>algorithms</category>
      <category>datastructures</category>
      <category>programming</category>
      <category>productivity</category>
    </item>
    <item>
      <title>Angular &amp; Ivy Compiler</title>
      <dc:creator>Pranam K</dc:creator>
      <pubDate>Sat, 22 May 2021 14:49:36 +0000</pubDate>
      <link>https://dev.to/pranambhat/angular-ivy-compiler-143o</link>
      <guid>https://dev.to/pranambhat/angular-ivy-compiler-143o</guid>
      <description>&lt;p&gt;Ivy is a complete rewrite of Angular’s rendering engine. In fact, it is the fourth rewrite of the engine and the third since Angular 2. But unlike rewrites two and three, which you might not have even noticed, Ivy promises huge improvements to your application. With Ivy, you can compile components more independently of each other. This improves development times since recompiling an application will only involve compiling the components that changed.&lt;/p&gt;

&lt;p&gt;Ivy also has a very big focus on tree-shaking. This is the process in which the Typescript compiler looks at your code and figures out exactly which libraries are needed and then eliminates any unused code. As a result, the distributed code will be much smaller and the loading times of your application will improve.&lt;br&gt;
Ivy has been around in a preview version since Angular 8, but you previously had to manually opt into using the new engine. With Angular 9, Ivy is the standard engine for rendering your content.&lt;br&gt;
With all these massive changes behind the scenes, you might be scared and wonder how much you would need to refactor your code to be compatible with Ivy. It turns out that the Angular team has made backward compatibility a priority and, in most cases, you should not have to change anything in your application other than updating it to the latest Angular version.&lt;br&gt;
Tree Shaking&lt;br&gt;
Tree Shaking is a term that means removing unused code during bundling process. This can be done by using tools like Rollup and Uglify. During the build process, tree shaking tools use static analysis and eliminates the unused and unreferenced code. However, tree shaking tools have limitations when the conditional code exists as static analysis depends on references. For example, an unused code path within “IF” statement cannot be identified by static analyzer and that code still resides in bundle even if it is not used during runtime. Due to the above mentioned limitations, current rendering pipeline is modified to optimize the bundle size.&lt;/p&gt;

&lt;p&gt;Tree Shaking is applied to Angular features. If any of the Angular features are not used in your code, you don’t need to pay for that code&lt;/p&gt;

&lt;p&gt;Test Results by Google&lt;br&gt;
Here are results of basic Hello World application provided by Google. Current angular generated 36Kb size of bundle wherein Ivy generated 2.7Kb, which is 93% reduction in size.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fa17n5zjgub5d5o5q8ee3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fa17n5zjgub5d5o5q8ee3.png" alt="image" width="530" height="306"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Google tested the Hello World application on mobile devices that have slower network like 3G. The current application load time is 4.0s whereas Ivy application load time is 2.2s, which is 45% reduction in load time.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fe2a6wlfi1kthyjajep4x.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fe2a6wlfi1kthyjajep4x.png" alt="image" width="530" height="304"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Google is still in verification process. Once it is done, Google will make Ivy a default renderer.&lt;/p&gt;

&lt;p&gt;To start a new project with Ivy, use the --enable-ivy flag with the ng new command:&lt;/p&gt;

&lt;p&gt;npm i -g @angular/cli@latestng update&lt;/p&gt;

&lt;p&gt;ng new angular-ivy-app --enable-ivy&lt;/p&gt;

&lt;p&gt;To enable/update the existing project to Ivy Compiler:&lt;br&gt;
npm i -g @angular/cli@latestng update&lt;/p&gt;

&lt;p&gt;OR in your tsconfig.json file update this:&lt;/p&gt;

&lt;p&gt;{&lt;br&gt;
  "compilerOptions": {&lt;br&gt;
    "module": "esnext",&lt;br&gt;
    // ...&lt;br&gt;
  },&lt;br&gt;
  "angularCompilerOptions": {&lt;br&gt;
    "enableIvy": true,&lt;br&gt;
    "allowEmptyCodegenFiles": true&lt;br&gt;
  }&lt;br&gt;
}&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;angular.json:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;{&lt;br&gt;
  "projects": {&lt;br&gt;
    "your-project": {&lt;br&gt;
      "architect": {&lt;br&gt;
        "build": {&lt;br&gt;
          "options": {&lt;br&gt;
            ...&lt;br&gt;
            "aot": true,&lt;br&gt;
          }&lt;br&gt;
        }&lt;br&gt;
      }&lt;br&gt;
    }&lt;br&gt;
  }&lt;br&gt;
}&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Advantages of Ivy Compiler:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;1)  Smaller bundle sizes:&lt;br&gt;
The Ivy compiler has been designed to remove parts of Angular that aren’t being used via tree-shaking and to generate less code for each Angular component.&lt;/p&gt;

&lt;p&gt;2)  Faster testing:&lt;br&gt;
In Ivy, TestBed doesn’t recompile components between tests unless a component has been manually overridden, which allows it to avoid recompilation between the grand majority of tests. With this change, the framework’s core acceptance tests are about 40% faster. We would expect users to see their own application test speeds to be around 40–50% faster.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;TestBed&lt;/strong&gt;&lt;br&gt;
Configures and initializes environment for unit testing and provides methods for creating components and services in unit test.&lt;/p&gt;

&lt;p&gt;Note: TestBed is the primary API for writing unit tests for Angular applications and libraries. Use TestBed in tests. It will be set to either TestBedViewEngine or TestBedRender3 according to the compiler used.&lt;/p&gt;

&lt;p&gt;3)  Better debugging:&lt;br&gt;
Ivy provides you with more tools to debug your applications. When running an application in Dev Mode with the Ivy runtime, we now offer the new ng object for debugging.&lt;/p&gt;

&lt;p&gt;Ivy also improves the stack trace for debugging issues such as the ExpressionChangedAfterItHasBeenCheckedError. &lt;/p&gt;

&lt;p&gt;4)  Improved CSS class and style binding:&lt;br&gt;
The Ivy compiler and runtime provides improvements for handling styles. Previously, if an application contained competing definitions for a style, those styles would destructively replace each other. With Ivy, the styles are merged in a predictable way.&lt;/p&gt;

&lt;p&gt;5)  Improved type checking:&lt;br&gt;
The Angular compiler can check more of the types of your application, and it can apply more strict rules. These features will help you and your team catch bugs earlier in the development process.&lt;br&gt;
• fullTemplateTypeCheck — Activating this flag tells the compiler to check everything within your template (ngIf, ngFor, ng-template, etc)&lt;br&gt;
• strictTemplates — Activating this flag will apply the strictest Type System rules for type checking.&lt;/p&gt;

&lt;p&gt;6)  Improved build errors:&lt;br&gt;
The Ivy compiler makes all of the error messages easier to read. This in turn helps a developer to resolve and fix the bugs at faster rate.&lt;/p&gt;

&lt;p&gt;7)  Improved build times, enabling AOT on by default:&lt;br&gt;
For the first time ever we are using AOT even for DEV mode builds. This means that &lt;code&gt;ng serve&lt;/code&gt; now benefits from the same compile-time checking as production builds, significantly improving the developer experience for Angular.&lt;/p&gt;

&lt;p&gt;8)  Improved Internationalization:&lt;br&gt;
With Ivy, we’re making this faster by moving the build-time i18n substitutions later in the build process. This change allowed us to make it up to 10 times faster.&lt;br&gt;
Internationalization is the process of designing and preparing your app to be usable in different languages. Localization is the process of translating your internationalized app into specific languages for particular locales.&lt;br&gt;
Angular simplifies the following aspects of internationalization:&lt;br&gt;
• Displaying dates, number, percentages, and currencies in a local format.&lt;br&gt;
• Preparing text in component templates for translation.&lt;br&gt;
• Handling plural forms of words.&lt;br&gt;
• Handling alternative text.&lt;/p&gt;

&lt;p&gt;9)  Backward Compatibility:&lt;br&gt;
Ivy supports backward compatibility so that your existing applications wouldn't break. Today, thousands of applications are using angular framework. You don’t need to upgrade angular for Ivy.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Example:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A sample Angular 10 project with Ivy Compiler:&lt;/p&gt;

&lt;p&gt;Make sure you have the latest version of Angular:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2mgoxojgpms4q2h8rux9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2mgoxojgpms4q2h8rux9.png" alt="image" width="604" height="592"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;1)  git clone &lt;a href="https://github.com/PranamBhat/Angular-Ivy-Compiler" rel="noopener noreferrer"&gt;https://github.com/PranamBhat/Angular-Ivy-Compiler&lt;/a&gt;&lt;br&gt;
2)  cd Angular-Ivy-Compiler&lt;br&gt;
3)  npm install&lt;br&gt;
4)  npm start (or) ng serve&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1jfcjvnut7wr8t22e1a2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1jfcjvnut7wr8t22e1a2.png" alt="image" width="605" height="204"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Go to browser: &lt;a href="http://localhost:4200" rel="noopener noreferrer"&gt;http://localhost:4200&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fi35xdn513rkxrbiuc37t.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fi35xdn513rkxrbiuc37t.png" alt="image" width="604" height="150"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now see the Bundle Files, Network and Timings:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fj38jllld4k6x555yvhvm.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fj38jllld4k6x555yvhvm.png" alt="image" width="603" height="203"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fujssjf6dtgkheryj220z.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fujssjf6dtgkheryj220z.png" alt="image" width="607" height="252"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnixh8pd8nhqn15v908xq.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnixh8pd8nhqn15v908xq.png" alt="image" width="603" height="305"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1jgyap6oa1dkk4mycldh.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1jgyap6oa1dkk4mycldh.png" alt="image" width="603" height="297"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Conclusion:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;As we can see, the bundle file size, network connectivity/loading speed and overall timings are much faster than Angular old versions. With Angular 10 and Ivy Compiler we can run any application effectively by keeping efficiency and quality in mind.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Simplified Azure Storage Client in .NET Core</title>
      <dc:creator>Pranam K</dc:creator>
      <pubDate>Fri, 19 Mar 2021 08:00:01 +0000</pubDate>
      <link>https://dev.to/pranambhat/simplified-azure-storage-client-in-net-core-43k0</link>
      <guid>https://dev.to/pranambhat/simplified-azure-storage-client-in-net-core-43k0</guid>
      <description>&lt;p&gt;I have created "Simplified Azure Storage Client in .NET Core". I was originally thinking to just create a RESTful client at first, and then decided to make it more powerful by enabling it to communicate with Azure Storage and Redis Cache. &lt;/p&gt;

&lt;p&gt;All tools are wrapped into single class "Restme()" to keep everything simple. The class will automatically identify whether it's used as HTTP Client, Azure Storage Client or Redis Cache Client.&lt;/p&gt;

&lt;p&gt;Since they are all about requesting and saving data, it is going to play a major role when it comes to saving time and space.&lt;/p&gt;

&lt;h3&gt;
  
  
  Code:
&lt;/h3&gt;

&lt;pre&gt;

//HTTP Restful client (sudo code)  
// Get data  
rest.Get(requestUrl);  
// Save data  
rest.Add(paramKey, paramValue);  
rest.Post(requestUrl, data);  
// Delete data  
rest.Delete(requestUrl);
  
//Azure Storage or Redis ache sudo-code  
// Get data  
rest.Get("/container/filePath");  
rest.Get("/container/jsonData");  
rest.Get("/container/filePath");  
  
// Save data  
rest.Post("/container/filePath", myObject);  
// Delete data  
rest.Delete("/container/filePath");   

&lt;/pre&gt;

&lt;h3&gt;
  
  
  Example:
&lt;/h3&gt;

&lt;h4&gt;
  
  
  1. Use it as a basic RESTful HTTP Client:
&lt;/h4&gt;

&lt;pre&gt;
//direct string JSON return    
var rest = new Restme(new Uri("http://freegeoip.net"));  
var result1 = rest.Get("/json/github.com");  
  
//automatic Generic cast    
var result2 = rest.Get &amp;lt; MyObject &amp;gt; ("/json/github.com");  
var resultAsync2 = await rest.GetAsync &amp;lt;&amp;lt; MyObjecT &amp;gt; ("/json/github.com");  
  
//add parameters (Parameters get automatically converted into query string or post form fields)    
rest.add("q", "github.com");  
var result3 = rest.Get &amp;lt; MyObject &amp;gt; ("/json");  
var resultAsync3 = await rest.GetAsync &amp;lt; MyObjecT &amp;gt; ("/json");  
  
//supports POST, DELETE, PUT etc.    
var rest2 = new Restme(new Uri("http://example.com"));  
rest2.Add("Username", "abc@def.com");  
rest2.Add("Birthday", DateTime.UtcNow);  
rest2.Post &amp;lt; MyObject &amp;gt; ("/someurl");  
  
rest3.PostAsync &amp;lt; MyObject &amp;gt; ("/asyncexample");  
  
  
//supports direct object submission    
var myObject = new MyObject()  
{  
    Username = "abc@def.com",  
        Birthday = DateTime.UtcNow  
};  
var rest3 = new Restme(new Uri("http://example.com"));  
rest3.Add(myObject);  
rest3.Post &amp;lt; ExpectedResultObject &amp;gt; ("/directObjectPost");  
&lt;/pre&gt;

&lt;h4&gt;
  
  
  2. Use it as an Azure Storage Client:
&lt;/h4&gt;

&lt;pre&gt;
//get blob stream directly      
var blobStorageConnectionString = "{Your Storage Account Connection String}";  
  
  
var rest = new Restme(blobStorageConnetionString);  
  
  
rest.CreateAzureBlobContainerIfNotExists = true; //do this only if you want to auto create the container        
  
  
//NOTE 1: first segment of the path should always be your container name      
  
  
//NOTE 3: Type T: if it is a type of Stream it will be stored as original Stream as Azure Blob, otherwise it is always saved into JSON format as Azure Blob      
  
  
//NOTE 2: use a type of Stream if you want the original value retrieved from the blob      
  
  
rest.Get &amp;lt; Stream &amp;gt; ("/myContainer/myfilePath");  
  
rest.GetAsync &amp;lt; Stream &amp;gt; ("/myContainer/myfilePath");  
  
  
//NOTE: only blob items saved in JSON format is suppported      
  
  
rest.Get &amp;lt; ObjectType &amp;gt; ("/myContainer/myfileObjectInJSONFileFormat");  
  
rest.GetAsync &amp;lt; ObjectType &amp;gt; ("/myContainer/myfileObjectInJSONFileFormat");  
&lt;/pre&gt;

&lt;h4&gt;
  
  
  3. Use it as a Redis Cache Client:
&lt;/h4&gt;

&lt;pre&gt;
var redisConnectionString = "{Your Redis Cache Connection String}";    
var rest = new Restme(redisConnectionString);    
    
//get cache data (support Generic cast)    
var cacheResult = rest.Get("home:testKey");    
var cacheResult2 = rest.Get("home:testKey2");    
var cacheResult3 = rest.Get("home:testKey3");    
    
//set cache data    
rest.Post("home:testKey","value");    
rest.Post("home:testKey2",true);    
    
var myObject = new ObjectType();  //will be serialized into JSON format and stored as string on redis server    
rest.Post("home:testKey3", myObject);  
&lt;/pre&gt;

&lt;h3&gt;
  
  
  Advantages:
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;The main goal is to increase productivity and keep code simplicity. &lt;/li&gt;
&lt;li&gt;Currently it includes: RESTful HTTP Client, Azure Storage Client, Redis Cache Client.&lt;/li&gt;
&lt;li&gt;Simple methods and flexible calls&lt;/li&gt;
&lt;li&gt;Uses Newtonsoft JSON and allows custom serilization&lt;/li&gt;
&lt;li&gt;Async support&lt;/li&gt;
&lt;li&gt;HTTP Client:

&lt;ul&gt;
&lt;li&gt;Parameters get automatically converted into query string or post form fields&lt;/li&gt;
&lt;li&gt;Supports GET, POST, PUT, DELETE&lt;/li&gt;
&lt;li&gt;Bearer Authentication and custom headers&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Azure Storage Client:

&lt;ul&gt;
&lt;li&gt;Simplified call stack&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Redis Cache Client

&lt;ul&gt;
&lt;li&gt;Simplified call stack (Currently only support Azure Redis Cache, you can modify the source code to support other Redis Servers as well)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;h4&gt;
  
  
  Check out the full code here:
&lt;/h4&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fassets.dev.to%2Fassets%2Fgithub-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/PranamBhat" rel="noopener noreferrer"&gt;
        PranamBhat
      &lt;/a&gt; / &lt;a href="https://github.com/PranamBhat/AzureDotNet" rel="noopener noreferrer"&gt;
        AzureDotNet
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      Simplified Azure Storage Client in .NET Core
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;REST Http Client&lt;/h1&gt;
&lt;/div&gt;
&lt;p&gt;Simplified Azure Storage Client in .NET Core is a collectino of useful utility tools implemented in .NET Core aiming to increase productivity and keep code simplicity. Currently it includes: RESTful HTTP Client, Azure Storage Client, Redis Cache Client.&lt;/p&gt;
&lt;p&gt;All tools are wrapped into single class &lt;strong&gt;Restme()&lt;/strong&gt; to keep everything simple, the class will automatically identify whether it's used as HTTP Client, Azure Storage Client or Redis Cache Client.&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;Features&lt;/h3&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;Implemented based on the latest .NET Core 1.0 (RC2)&lt;/li&gt;
&lt;li&gt;Simple methods and flexible calls&lt;/li&gt;
&lt;li&gt;Uses Newtonsoft JSON and allows custom serilization&lt;/li&gt;
&lt;li&gt;Async support&lt;/li&gt;
&lt;li&gt;HTTP Client
&lt;ul&gt;
&lt;li&gt;Parameters get automatically converted into query string or post form fields&lt;/li&gt;
&lt;li&gt;Supports GET, POST,  PUT, DELETE&lt;/li&gt;
&lt;li&gt;Bearer Authentication and custom headers&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Azure Storage Client:
&lt;ul&gt;
&lt;li&gt;Simplified call stack&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Redis Cache Client
&lt;ul&gt;
&lt;li&gt;Simplified call stack (Currently only support Azure Redis Cache, you can modify the source code to support other Redis Servers)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;Nuget Package&lt;/h3&gt;

&lt;/div&gt;
&lt;div class="highlight highlight-source-cs notranslate position-relative overflow-auto js-code-highlight"&gt;
&lt;pre&gt;    &lt;span class="pl-s1"&gt;Install&lt;/span&gt;&lt;/pre&gt;…
&lt;/div&gt;
&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/PranamBhat/AzureDotNet" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


</description>
      <category>azure</category>
      <category>csharp</category>
      <category>dotnet</category>
      <category>performance</category>
    </item>
  </channel>
</rss>
