<?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: Steve Mak</title>
    <description>The latest articles on DEV Community by Steve Mak (@ssmak).</description>
    <link>https://dev.to/ssmak</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%2F296252%2F1a6c2a7b-a9ae-4e51-8981-592111192d6d.jpg</url>
      <title>DEV Community: Steve Mak</title>
      <link>https://dev.to/ssmak</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/ssmak"/>
    <language>en</language>
    <item>
      <title>How to make an URL to be shorter?</title>
      <dc:creator>Steve Mak</dc:creator>
      <pubDate>Tue, 07 Jan 2025 16:21:54 +0000</pubDate>
      <link>https://dev.to/ssmak/how-to-make-an-url-to-be-shorter-59l3</link>
      <guid>https://dev.to/ssmak/how-to-make-an-url-to-be-shorter-59l3</guid>
      <description>&lt;p&gt;Have you experience on sharing a long URL to other people and think so difficult to input into your mobile device?&lt;/p&gt;

&lt;p&gt;Here is the guide for you to create a short URL and convert it to QR code with logo in the center which make it more meaningful.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Sample&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://medium.com/@ssmak/whats-the-difference-between-live-reload-and-hot-reload-9a013fb4c288" rel="noopener noreferrer"&gt;https://medium.com/@ssmak/whats-the-difference-between-live-reload-and-hot-reload-9a013fb4c288&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Result&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://i.gourl.ing/e8txa5" rel="noopener noreferrer"&gt;https://i.gourl.ing/e8txa5&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%2F259hq8l1dz353t1gdac1.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%2F259hq8l1dz353t1gdac1.png" alt="Image description" width="132" height="132"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 1&lt;/strong&gt;&lt;br&gt;
Visit the website: &lt;a href="https://shortest.me/" rel="noopener noreferrer"&gt;https://shortest.me/&lt;/a&gt;.&lt;br&gt;
Shortest.me is a web platform that let you create a short URL and QR code.&lt;br&gt;
You can also setup a password for the link even an expiry time. Especially, the service is free today.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 2&lt;/strong&gt;&lt;br&gt;
Paste the long URL into the provided field.&lt;br&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%2F82o8n8apg4r4aro82lfo.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%2F82o8n8apg4r4aro82lfo.png" alt="Image description" width="720" height="350"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 3&lt;/strong&gt;&lt;br&gt;
a: Select the icon here or&lt;br&gt;
b: You can select your custom image here&lt;br&gt;
c: You can setup a password for the link&lt;br&gt;
d: You can setup the expiry date&lt;br&gt;
e: Click the ‘Start’ button to generate the short URL or QR code.&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%2F09pbupn35dxdwjtmchcr.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%2F09pbupn35dxdwjtmchcr.png" alt="Image description" width="720" height="563"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 4&lt;/strong&gt;&lt;br&gt;
Share the short URL or QR code with others.&lt;br&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%2Fgxr0zmbjyxc5u0jw6l00.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%2Fgxr0zmbjyxc5u0jw6l00.png" alt="Image description" width="720" height="446"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This process makes it easier to share long URLs and adds a personalized touch with the QR code logo.&lt;/p&gt;

&lt;p&gt;Enjoy and make your life easier!&lt;/p&gt;

</description>
      <category>url</category>
      <category>shorten</category>
      <category>free</category>
      <category>qrcode</category>
    </item>
    <item>
      <title>Ionic</title>
      <dc:creator>Steve Mak</dc:creator>
      <pubDate>Sat, 26 Nov 2022 14:09:33 +0000</pubDate>
      <link>https://dev.to/ssmak/ionic-1jcn</link>
      <guid>https://dev.to/ssmak/ionic-1jcn</guid>
      <description>&lt;h1&gt;
  
  
  Quick Start
&lt;/h1&gt;

&lt;p&gt;For full documentation, please visit to the official website: &lt;/p&gt;

&lt;h5&gt;
  
  
  CLI
&lt;/h5&gt;

&lt;p&gt;&lt;a href="https://ionicframework.com/docs/cli/" rel="noopener noreferrer"&gt;https://ionicframework.com/docs/cli/&lt;/a&gt;&lt;/p&gt;

&lt;h5&gt;
  
  
  Capacitor
&lt;/h5&gt;

&lt;p&gt;&lt;a href="https://capacitor.ionicframework.com/docs/" rel="noopener noreferrer"&gt;https://capacitor.ionicframework.com/docs/&lt;/a&gt;&lt;/p&gt;

&lt;h5&gt;
  
  
  Native
&lt;/h5&gt;

&lt;p&gt;&lt;a href="https://ionicframework.com/docs/native" rel="noopener noreferrer"&gt;https://ionicframework.com/docs/native&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  CLI
&lt;/h2&gt;

&lt;p&gt;Install/Update Ionic as global CLI&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-g&lt;/span&gt; ionic
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;New project&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;ionic start myApp
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Link project to Ionic AppFlow&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;ionic &lt;span class="nb"&gt;link&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Preview in web browser&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;ionic serve
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Build web assets and prepare your app for any platform targets&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;ionic build
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Add a native platform to your Ionic project&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;ionic capacitor add android
ionic capacitor add ios
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Open the project in Xcode&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;ionic capacitor open ios
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Sync web assets folder to ios/android folder&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;ionic capacitor copy ios
ionic capacitor copy android
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Live reload with capacitor&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;ionic capacitor run ios &lt;span class="nt"&gt;-l&lt;/span&gt; &lt;span class="nt"&gt;--external&lt;/span&gt;
ionic capacitor run android &lt;span class="nt"&gt;-l&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Install native plugin&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;// Install Core library &lt;span class="o"&gt;(&lt;/span&gt;once per project&lt;span class="o"&gt;)&lt;/span&gt;
npm &lt;span class="nb"&gt;install&lt;/span&gt; @ionic-native/core &lt;span class="nt"&gt;--save&lt;/span&gt;

// Install Ionic Native TypeScript wrapper
npm &lt;span class="nb"&gt;install&lt;/span&gt; @ionic-native/barcode-scanner &lt;span class="nt"&gt;--save&lt;/span&gt;

// Install Cordova plugin
npm &lt;span class="nb"&gt;install &lt;/span&gt;phonegap-plugin-barcodescanner &lt;span class="nt"&gt;--save&lt;/span&gt;

// Update native platform project&lt;span class="o"&gt;(&lt;/span&gt;s&lt;span class="o"&gt;)&lt;/span&gt; to include newly added plugin
ionic cap &lt;span class="nb"&gt;sync&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



</description>
      <category>cheatsheet</category>
      <category>ionic</category>
      <category>cli</category>
      <category>quickstart</category>
    </item>
    <item>
      <title>Overview of ASP.NET &amp; ASP.NET Core</title>
      <dc:creator>Steve Mak</dc:creator>
      <pubDate>Sat, 26 Nov 2022 11:31:37 +0000</pubDate>
      <link>https://dev.to/ssmak/overview-of-aspnet-aspnet-core-8l8</link>
      <guid>https://dev.to/ssmak/overview-of-aspnet-aspnet-core-8l8</guid>
      <description>&lt;h1&gt;
  
  
  ASP.NET
&lt;/h1&gt;

&lt;p&gt;&lt;em&gt;Reference&lt;/em&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;em&gt;&lt;a href="https://en.wikipedia.org/wiki/ASP.NET" rel="noopener noreferrer"&gt;https://en.wikipedia.org/wiki/ASP.NET&lt;/a&gt;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;&lt;a href="https://docs.microsoft.com/en-us/aspnet/overview" rel="noopener noreferrer"&gt;https://docs.microsoft.com/en-us/aspnet/overview&lt;/a&gt;&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  ASP.NET Web Forms &lt;sup&gt;&lt;em&gt;.aspx&lt;/em&gt;&lt;/sup&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Initial release on January 5, 2002.&lt;/li&gt;
&lt;li&gt;A framework for building modular pages out of components, with UI events being processed server-side.&lt;/li&gt;
&lt;li&gt;Web Forms was included in the original .NET Framework 1.0 release in 2002.&lt;/li&gt;
&lt;li&gt;The first programming model available in ASP.NET.&lt;/li&gt;
&lt;li&gt;Code-behind model.&lt;/li&gt;
&lt;li&gt;Unlike newer ASP.NET components, Web Forms is not supported by ASP.NET Core.&lt;/li&gt;
&lt;li&gt;File extension: .aspx, .cshtml, .vbhtml&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;Reference&lt;/em&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;em&gt;&lt;a href="https://docs.microsoft.com/en-us/aspnet/web-forms" rel="noopener noreferrer"&gt;https://docs.microsoft.com/en-us/aspnet/web-forms&lt;/a&gt;&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;



&lt;h3&gt;
  
  
  ASP.NET MVC
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Initial release on March 13, 2009.&lt;/li&gt;
&lt;li&gt;Stable release on November 28, 2018.&lt;/li&gt;
&lt;li&gt;Allows for building web pages using the model–view–controller design pattern.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;Reference&lt;/em&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;em&gt;&lt;a href="https://en.wikipedia.org/wiki/ASP.NET_MVC" rel="noopener noreferrer"&gt;https://en.wikipedia.org/wiki/ASP.NET_MVC&lt;/a&gt;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;&lt;a href="https://github.com/aspnet/AspNetWebStack" rel="noopener noreferrer"&gt;https://github.com/aspnet/AspNetWebStack&lt;/a&gt;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;&lt;a href="https://docs.microsoft.com/en-us/aspnet/mvc" rel="noopener noreferrer"&gt;https://docs.microsoft.com/en-us/aspnet/mvc&lt;/a&gt;&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;



&lt;h3&gt;
  
  
  ASP.NET Web Pages (Razor) &lt;sup&gt;&lt;em&gt;.cshtml .vbhtml&lt;/em&gt;&lt;/sup&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Initial release on January 2011.&lt;/li&gt;
&lt;li&gt;A lightweight syntax for adding dynamic code and data access directly inside HTML markup.&lt;/li&gt;
&lt;li&gt;The namespace for Razor Engine is System.Web.Razor&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;Reference&lt;/em&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;em&gt;&lt;a href="https://docs.microsoft.com/en-us/aspnet/web-pages" rel="noopener noreferrer"&gt;https://docs.microsoft.com/en-us/aspnet/web-pages&lt;/a&gt;&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;



&lt;h3&gt;
  
  
  ASP.NET Web API
&lt;/h3&gt;

&lt;p&gt;A framework for building Web APIs on top of the .NET Framework.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Reference&lt;/em&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;em&gt;&lt;a href="https://docs.microsoft.com/en-us/aspnet/web-api" rel="noopener noreferrer"&gt;https://docs.microsoft.com/en-us/aspnet/web-api&lt;/a&gt;&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;



&lt;h3&gt;
  
  
  ASP.NET WebHooks
&lt;/h3&gt;

&lt;p&gt;Implements the Webhook pattern for subscribing to and publishing events via HTTP.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Reference&lt;/em&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;em&gt;&lt;a href="https://docs.microsoft.com/en-us/aspnet/webhooks" rel="noopener noreferrer"&gt;https://docs.microsoft.com/en-us/aspnet/webhooks&lt;/a&gt;&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;



&lt;h3&gt;
  
  
  SignalR
&lt;/h3&gt;

&lt;p&gt;A real-time communications framework for bi-directional communication between client and server.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Reference&lt;/em&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;em&gt;&lt;a href="https://docs.microsoft.com/en-us/aspnet/signalr" rel="noopener noreferrer"&gt;https://docs.microsoft.com/en-us/aspnet/signalr&lt;/a&gt;&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;



&lt;h3&gt;
  
  
  ASP.NET AJAX
&lt;/h3&gt;

&lt;p&gt;An extension with both client-side as well as server-side components for writing ASP.NET pages that incorporate Ajax functionality.&lt;/p&gt;



&lt;h3&gt;
  
  
  ASP.NET Dynamic Data
&lt;/h3&gt;

&lt;p&gt;A scaffolding extension to build data driven web applications..&lt;/p&gt;



&lt;h3&gt;
  
  
  ADO.NET
&lt;/h3&gt;

&lt;p&gt;A data access technology from the Microsoft .NET Framework that provides communication between relational and non-relational systems through a common set of components.&lt;/p&gt;



&lt;h3&gt;
  
  
  Entity Framework (EF)
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Initial release on August 11, 2008.&lt;/li&gt;
&lt;li&gt;Stable release on September 29, 2019.&lt;/li&gt;
&lt;li&gt;An open source object-relational mapping (ORM) framework for ADO.NET. It was a part of .NET Framework, but since Entity Framework version 6 it is separated from .NET framework.&lt;/li&gt;
&lt;li&gt;The first version of Entity Framework (EFv1) was included with .NET Framework 3.5 Service Pack 1 and Visual Studio 2008 Service Pack 1, released on 11 August 2008.&lt;/li&gt;
&lt;/ul&gt;



&lt;h3&gt;
  
  
  LINQ
&lt;/h3&gt;
&lt;h5&gt;
  
  
  LING to SQL
&lt;/h5&gt;

&lt;p&gt;Allows to be used to query Microsoft SQL Server databases, including SQL Server Compact databases.&lt;/p&gt;

&lt;h5&gt;
  
  
  LING to Entities
&lt;/h5&gt;

&lt;p&gt;The LINQ to Entities provider allows LINQ to be used to query various RDBMS data sources. Several database server specific providers with Entity Framework support are available.&lt;/p&gt;



&lt;h1&gt;
  
  
  ASP.NET Core
&lt;/h1&gt;

&lt;p&gt;&lt;em&gt;Reference&lt;/em&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://en.wikipedia.org/wiki/ASP.NET_Core" rel="noopener noreferrer"&gt;https://en.wikipedia.org/wiki/ASP.NET_Core&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;.NET Core is a free and open-source, managed computer software framework for Windows, Linux, and macOS operating systems.[5] It is a cross-platform[6] successor to .NET Framework.[7] The project is primarily developed by Microsoft and released under the MIT License.&lt;br&gt;
ASP.NET Core version 3 works only on .NET Core dropping support of .NET Framework.&lt;/p&gt;

&lt;h3&gt;
  
  
  Identity Core
&lt;/h3&gt;

&lt;h3&gt;
  
  
  MVC Core
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Initial release on 27 June 2016.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Razor Page
&lt;/h3&gt;

&lt;h3&gt;
  
  
  Web API
&lt;/h3&gt;

&lt;h3&gt;
  
  
  Blazor
&lt;/h3&gt;

&lt;h3&gt;
  
  
  Entity Framework Core (EF Core)
&lt;/h3&gt;

&lt;p&gt;A modern object-database mapper for .NET. It supports LINQ queries, change tracking, updates, and schema migrations.&lt;br&gt;
&lt;em&gt;Reference: &lt;a href="https://github.com/dotnet/efcore" rel="noopener noreferrer"&gt;https://github.com/dotnet/efcore&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  gRPC
&lt;/h3&gt;

&lt;h3&gt;
  
  
  NuGet
&lt;/h3&gt;

</description>
      <category>overview</category>
      <category>aspdotnet</category>
      <category>dotnet</category>
      <category>core</category>
    </item>
    <item>
      <title>Cheatsheet for LINQ</title>
      <dc:creator>Steve Mak</dc:creator>
      <pubDate>Sat, 26 Nov 2022 11:25:09 +0000</pubDate>
      <link>https://dev.to/ssmak/cheatsheet-for-linq-9m6</link>
      <guid>https://dev.to/ssmak/cheatsheet-for-linq-9m6</guid>
      <description>&lt;h1&gt;
  
  
  Intro.
&lt;/h1&gt;

&lt;p&gt;A query variable is always an enumerable type that will produce a sequence of elements when it is iterated over in a foreach statement or a direct call to its IEnumerator.MoveNext method.&lt;/p&gt;

&lt;h1&gt;
  
  
  Syntax
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight csharp"&gt;&lt;code&gt;&lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="p"&gt;..&lt;/span&gt; &lt;span class="k"&gt;in&lt;/span&gt; &lt;span class="p"&gt;..&lt;/span&gt;
&lt;span class="p"&gt;[&lt;/span&gt; &lt;span class="k"&gt;join&lt;/span&gt; &lt;span class="p"&gt;..&lt;/span&gt; &lt;span class="k"&gt;in&lt;/span&gt; &lt;span class="p"&gt;..&lt;/span&gt; &lt;span class="k"&gt;on&lt;/span&gt; &lt;span class="p"&gt;..&lt;/span&gt; &lt;span class="k"&gt;equals&lt;/span&gt; &lt;span class="p"&gt;..&lt;/span&gt; &lt;span class="p"&gt;]&lt;/span&gt;
&lt;span class="p"&gt;[&lt;/span&gt; &lt;span class="k"&gt;where&lt;/span&gt; &lt;span class="p"&gt;|&lt;/span&gt; &lt;span class="k"&gt;orderby&lt;/span&gt; &lt;span class="p"&gt;..&lt;/span&gt; &lt;span class="k"&gt;ascending&lt;/span&gt; &lt;span class="p"&gt;|&lt;/span&gt; &lt;span class="k"&gt;descending&lt;/span&gt; &lt;span class="p"&gt;|&lt;/span&gt; &lt;span class="k"&gt;let&lt;/span&gt; &lt;span class="p"&gt;]&lt;/span&gt;
&lt;span class="p"&gt;[&lt;/span&gt; &lt;span class="k"&gt;group&lt;/span&gt; &lt;span class="p"&gt;..&lt;/span&gt; &lt;span class="k"&gt;by&lt;/span&gt; &lt;span class="p"&gt;..&lt;/span&gt; &lt;span class="k"&gt;into&lt;/span&gt; &lt;span class="p"&gt;..&lt;/span&gt; &lt;span class="p"&gt;]&lt;/span&gt;
&lt;span class="k"&gt;select&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="p"&gt;{}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h1&gt;
  
  
  Group clause
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight csharp"&gt;&lt;code&gt;&lt;span class="kt"&gt;var&lt;/span&gt; &lt;span class="n"&gt;queryCountryGroups&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt;
    &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="n"&gt;country&lt;/span&gt; &lt;span class="k"&gt;in&lt;/span&gt; &lt;span class="n"&gt;countries&lt;/span&gt;
    &lt;span class="k"&gt;group&lt;/span&gt; &lt;span class="n"&gt;country&lt;/span&gt; &lt;span class="k"&gt;by&lt;/span&gt; &lt;span class="n"&gt;country&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Name&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;];&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h1&gt;
  
  
  Select clause
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight csharp"&gt;&lt;code&gt;&lt;span class="kt"&gt;var&lt;/span&gt; &lt;span class="n"&gt;queryNameAndPop&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt;
    &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="n"&gt;country&lt;/span&gt; &lt;span class="k"&gt;in&lt;/span&gt; &lt;span class="n"&gt;countries&lt;/span&gt;
    &lt;span class="k"&gt;select&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="n"&gt;Name&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;country&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Name&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;Pop&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;country&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Population&lt;/span&gt; &lt;span class="p"&gt;};&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h1&gt;
  
  
  Orderby clause
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight csharp"&gt;&lt;code&gt;&lt;span class="n"&gt;IEnumerable&lt;/span&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;Country&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;querySortedCountries&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt;
    &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="n"&gt;country&lt;/span&gt; &lt;span class="k"&gt;in&lt;/span&gt; &lt;span class="n"&gt;countries&lt;/span&gt;
    &lt;span class="k"&gt;orderby&lt;/span&gt; &lt;span class="n"&gt;country&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Area&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;country&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Population&lt;/span&gt; &lt;span class="k"&gt;descending&lt;/span&gt;
    &lt;span class="k"&gt;select&lt;/span&gt; &lt;span class="n"&gt;country&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h1&gt;
  
  
  Join clause
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight csharp"&gt;&lt;code&gt;&lt;span class="kt"&gt;var&lt;/span&gt; &lt;span class="n"&gt;categoryQuery&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt;
    &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="n"&gt;cat&lt;/span&gt; &lt;span class="k"&gt;in&lt;/span&gt; &lt;span class="n"&gt;categories&lt;/span&gt;
    &lt;span class="k"&gt;join&lt;/span&gt; &lt;span class="n"&gt;prod&lt;/span&gt; &lt;span class="k"&gt;in&lt;/span&gt; &lt;span class="n"&gt;products&lt;/span&gt; &lt;span class="k"&gt;on&lt;/span&gt; &lt;span class="n"&gt;cat&lt;/span&gt; &lt;span class="k"&gt;equals&lt;/span&gt; &lt;span class="n"&gt;prod&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Category&lt;/span&gt;
    &lt;span class="k"&gt;select&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="n"&gt;Category&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;cat&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;Name&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;prod&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Name&lt;/span&gt; &lt;span class="p"&gt;};&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h1&gt;
  
  
  Let clause
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight csharp"&gt;&lt;code&gt;&lt;span class="kt"&gt;string&lt;/span&gt;&lt;span class="p"&gt;[]&lt;/span&gt; &lt;span class="n"&gt;names&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="s"&gt;"Svetlana Omelchenko"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;"Claire O'Donnell"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;"Sven Mortensen"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;"Cesar Garcia"&lt;/span&gt; &lt;span class="p"&gt;};&lt;/span&gt;
&lt;span class="n"&gt;IEnumerable&lt;/span&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="kt"&gt;string&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;queryFirstNames&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt;
    &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="n"&gt;name&lt;/span&gt; &lt;span class="k"&gt;in&lt;/span&gt; &lt;span class="n"&gt;names&lt;/span&gt;
    &lt;span class="k"&gt;let&lt;/span&gt; &lt;span class="n"&gt;firstName&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;Split&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sc"&gt;' '&lt;/span&gt;&lt;span class="p"&gt;)[&lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
    &lt;span class="k"&gt;select&lt;/span&gt; &lt;span class="n"&gt;firstName&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="k"&gt;foreach&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;string&lt;/span&gt; &lt;span class="n"&gt;s&lt;/span&gt; &lt;span class="k"&gt;in&lt;/span&gt; &lt;span class="n"&gt;queryFirstNames&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="n"&gt;Console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;Write&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;s&lt;/span&gt; &lt;span class="p"&gt;+&lt;/span&gt; &lt;span class="s"&gt;" "&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="c1"&gt;//Output: Svetlana Claire Sven Cesar&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h1&gt;
  
  
  Subqueries in a query expression
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight csharp"&gt;&lt;code&gt;&lt;span class="kt"&gt;var&lt;/span&gt; &lt;span class="n"&gt;queryGroupMax&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt;
    &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="n"&gt;student&lt;/span&gt; &lt;span class="k"&gt;in&lt;/span&gt; &lt;span class="n"&gt;students&lt;/span&gt;
    &lt;span class="k"&gt;group&lt;/span&gt; &lt;span class="n"&gt;student&lt;/span&gt; &lt;span class="k"&gt;by&lt;/span&gt; &lt;span class="n"&gt;student&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;GradeLevel&lt;/span&gt; &lt;span class="k"&gt;into&lt;/span&gt; &lt;span class="n"&gt;studentGroup&lt;/span&gt;
    &lt;span class="k"&gt;select&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt;
    &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="n"&gt;Level&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;studentGroup&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Key&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="n"&gt;HighestScore&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt;
            &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="n"&gt;student2&lt;/span&gt; &lt;span class="k"&gt;in&lt;/span&gt; &lt;span class="n"&gt;studentGroup&lt;/span&gt;
             &lt;span class="k"&gt;select&lt;/span&gt; &lt;span class="n"&gt;student2&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Scores&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;Average&lt;/span&gt;&lt;span class="p"&gt;())&lt;/span&gt;
             &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;Max&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
    &lt;span class="p"&gt;};&lt;/span&gt;

&lt;span class="c1"&gt;// percentileQuery is an IEnumerable&amp;lt;IGrouping&amp;lt;int, Country&amp;gt;&amp;gt;&lt;/span&gt;
&lt;span class="kt"&gt;var&lt;/span&gt; &lt;span class="n"&gt;percentileQuery&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt;
    &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="n"&gt;country&lt;/span&gt; &lt;span class="k"&gt;in&lt;/span&gt; &lt;span class="n"&gt;countries&lt;/span&gt;
    &lt;span class="k"&gt;let&lt;/span&gt; &lt;span class="n"&gt;percentile&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;int&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="n"&gt;country&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Population&lt;/span&gt; &lt;span class="p"&gt;/&lt;/span&gt; &lt;span class="m"&gt;10_000_000&lt;/span&gt;
    &lt;span class="k"&gt;group&lt;/span&gt; &lt;span class="n"&gt;country&lt;/span&gt; &lt;span class="k"&gt;by&lt;/span&gt; &lt;span class="n"&gt;percentile&lt;/span&gt; &lt;span class="k"&gt;into&lt;/span&gt; &lt;span class="n"&gt;countryGroup&lt;/span&gt;
    &lt;span class="k"&gt;where&lt;/span&gt; &lt;span class="n"&gt;countryGroup&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Key&lt;/span&gt; &lt;span class="p"&gt;&amp;gt;=&lt;/span&gt; &lt;span class="m"&gt;20&lt;/span&gt;
    &lt;span class="k"&gt;orderby&lt;/span&gt; &lt;span class="n"&gt;countryGroup&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Key&lt;/span&gt;
    &lt;span class="k"&gt;select&lt;/span&gt; &lt;span class="n"&gt;countryGroup&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="c1"&gt;// grouping is an IGrouping&amp;lt;int, Country&amp;gt;&lt;/span&gt;
&lt;span class="k"&gt;foreach&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;var&lt;/span&gt; &lt;span class="n"&gt;grouping&lt;/span&gt; &lt;span class="k"&gt;in&lt;/span&gt; &lt;span class="n"&gt;percentileQuery&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="n"&gt;Console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;WriteLine&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;grouping&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Key&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="k"&gt;foreach&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;var&lt;/span&gt; &lt;span class="n"&gt;country&lt;/span&gt; &lt;span class="k"&gt;in&lt;/span&gt; &lt;span class="n"&gt;grouping&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="n"&gt;Console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;WriteLine&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;country&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Name&lt;/span&gt; &lt;span class="p"&gt;+&lt;/span&gt; &lt;span class="s"&gt;":"&lt;/span&gt; &lt;span class="p"&gt;+&lt;/span&gt; &lt;span class="n"&gt;country&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Population&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h1&gt;
  
  
  Standard query operators
&lt;/h1&gt;

&lt;p&gt;&lt;em&gt;Ref: &lt;a href="https://docs.microsoft.com/en-us/dotnet/api/system.linq.enumerable.selectmany?view=netcore-3.1" rel="noopener noreferrer"&gt;https://docs.microsoft.com/en-us/dotnet/api/system.linq.enumerable.selectmany?view=netcore-3.1&lt;/a&gt;&lt;/em&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Where Select SelectMany Skip SkipWhile
Take TakeWhile Join GroupJoin Concate
OrderBy OrderByDescending ThenBy ThenByDescending Reverse
GroupBy Distinct Union Intersect Except
AsEnumerable AsQueryable ToArray ToList ToDictionary
ToLookup OfType Cast SequenceEqual First
FirstOrDefault Last LastOrDefault Single SingleOfDefault
ElementAt ElementAtOrDefault DefaultEmpty All Any
Contains Count LongCout Sum Min
Max Average Aggregate equal/Equals from/From
in/In into/Into key let Group
Range Repeat
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



</description>
      <category>cheatsheet</category>
      <category>linq</category>
    </item>
    <item>
      <title>Learning Notes of ADO.NET</title>
      <dc:creator>Steve Mak</dc:creator>
      <pubDate>Sat, 26 Nov 2022 11:24:25 +0000</pubDate>
      <link>https://dev.to/ssmak/learning-notes-of-adonet-h56</link>
      <guid>https://dev.to/ssmak/learning-notes-of-adonet-h56</guid>
      <description>&lt;h1&gt;
  
  
  Primary Objects
&lt;/h1&gt;

&lt;p&gt;&lt;em&gt;(Ref: &lt;a href="https://docs.microsoft.com/en-us/dotnet/framework/data/adonet/data-providers" rel="noopener noreferrer"&gt;https://docs.microsoft.com/en-us/dotnet/framework/data/adonet/data-providers&lt;/a&gt;)&lt;/em&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Connection - &lt;em&gt;Provides connectivity to a data source.&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;Command - &lt;em&gt;Enables access to database commands to return data, modify data, run stored procedures, and send or retrieve parameter information.&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;DataReader - &lt;em&gt;Provides a high-performance stream of data from the data source.&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;DataAdapter - &lt;em&gt;Provides the bridge between the DataSet object and the data source. The DataAdapter uses Command objects to execute SQL commands at the data source to both load the DataSet with data and reconcile changes that were made to the data in the DataSet back to the data source.&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;DataSet - &lt;em&gt;Contains a collection of one or more DataTable objects consisting of rows and columns of data, and also primary key, foreign key, constraint, and relation information about the data in the DataTable objects.&lt;/em&gt;
&lt;em&gt;(DataTable, DataView, DataRow)&lt;/em&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;h1&gt;
  
  
  DataReader or DataSet
&lt;/h1&gt;

&lt;p&gt;Use a DataSet to do the following:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Cache data locally in your application so that you can manipulate it. If you only need to read the results of a query, the DataReader is the better choice.&lt;/li&gt;
&lt;li&gt;Remote data between tiers or from an XML Web service.&lt;/li&gt;
&lt;li&gt;Interact with data dynamically such as binding to a Windows Forms control or combining and relating data from multiple sources.&lt;/li&gt;
&lt;li&gt;Perform extensive processing on data without requiring an open connection to the data source, which frees the connection to be used by other clients.&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>learning</category>
      <category>ado</category>
      <category>dotnet</category>
    </item>
    <item>
      <title>Cheatsheet for Dotnet-CLI</title>
      <dc:creator>Steve Mak</dc:creator>
      <pubDate>Sat, 26 Nov 2022 11:23:04 +0000</pubDate>
      <link>https://dev.to/ssmak/cheatsheet-for-dotnet-cli-16og</link>
      <guid>https://dev.to/ssmak/cheatsheet-for-dotnet-cli-16og</guid>
      <description>&lt;p&gt;&lt;em&gt;Reference&lt;/em&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;em&gt;&lt;a href="https://docs.microsoft.com/en-us/dotnet/core/tools/" rel="noopener noreferrer"&gt;https://docs.microsoft.com/en-us/dotnet/core/tools/&lt;/a&gt;&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  List installed package
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight powershell"&gt;&lt;code&gt;&lt;span class="n"&gt;dotnet&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;list&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;package&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Restores the dependencies and tools of a project
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight powershell"&gt;&lt;code&gt;&lt;span class="n"&gt;dotnet&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;restore&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Install new package to local project
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight powershell"&gt;&lt;code&gt;&lt;span class="n"&gt;dotnet&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;add&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;package&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;package_name&lt;/span&gt;&lt;span class="err"&gt;&amp;gt;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Remove package from local project
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight powershell"&gt;&lt;code&gt;&lt;span class="n"&gt;dotnet&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;remove&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;package&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;package_name&lt;/span&gt;&lt;span class="err"&gt;&amp;gt;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



</description>
      <category>cheatsheet</category>
      <category>dotnet</category>
      <category>cli</category>
    </item>
    <item>
      <title>MongoDB</title>
      <dc:creator>Steve Mak</dc:creator>
      <pubDate>Sat, 26 Nov 2022 11:20:50 +0000</pubDate>
      <link>https://dev.to/ssmak/cheatsheet-for-mongodb-49l5</link>
      <guid>https://dev.to/ssmak/cheatsheet-for-mongodb-49l5</guid>
      <description>&lt;h4&gt;
  
  
  Reference
&lt;/h4&gt;

&lt;p&gt;&lt;a href="https://docs.mongodb.com/manual/reference/" rel="noopener noreferrer"&gt;https://docs.mongodb.com/manual/reference/&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Default MongoDB Port
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Default Port&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;27017&lt;/td&gt;
&lt;td&gt;The default port for mongod and mongos instances. You can change this port with port or --port.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;27018&lt;/td&gt;
&lt;td&gt;The default port for mongod when running with --shardsvr command-line option or the shardsvr value for the clusterRole setting in a configuration file.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;27019&lt;/td&gt;
&lt;td&gt;The default port for mongod when running with --configsvr command-line option or the configsvr value for the clusterRole setting in a configuration file.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Common Mongod options
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;mongod &lt;span class="nt"&gt;--help&lt;/span&gt;
mongod &lt;span class="nt"&gt;--dbpath&lt;/span&gt; &amp;lt;directory path&amp;gt;
mongod &lt;span class="nt"&gt;--logpath&lt;/span&gt; &amp;lt;file path&amp;gt;
mongod &lt;span class="nt"&gt;--port&lt;/span&gt; &amp;lt;port number&amp;gt;
mongod &lt;span class="nt"&gt;--auth&lt;/span&gt;
mongod &lt;span class="nt"&gt;--bind_ip&lt;/span&gt; localhost,123.123.123.123
// Let Mongod run as Daemon
mongod &lt;span class="nt"&gt;--fork&lt;/span&gt;
mongod &lt;span class="nt"&gt;--replSet&lt;/span&gt; &lt;span class="s2"&gt;"&amp;lt;Replicate set name&amp;gt;"&lt;/span&gt;
mongod &lt;span class="nt"&gt;--keyFile&lt;/span&gt; &lt;span class="s2"&gt;"&amp;lt;Key file path&amp;gt;"&lt;/span&gt;
mongod &lt;span class="nt"&gt;--sslMode&lt;/span&gt; requireSSL
mongod &lt;span class="nt"&gt;--sslCAFile&lt;/span&gt; &amp;lt;CA file path &lt;span class="k"&gt;in &lt;/span&gt;PEM format&amp;gt;
mongod &lt;span class="nt"&gt;--sslPEMKeyFile&lt;/span&gt; &amp;lt;Key file path &lt;span class="k"&gt;in &lt;/span&gt;PEM format&amp;gt;
mongod &lt;span class="nt"&gt;--config&lt;/span&gt; &lt;span class="s2"&gt;"&amp;lt;Configuration file path&amp;gt;"&lt;/span&gt;
mongod &lt;span class="nt"&gt;-f&lt;/span&gt; &lt;span class="s2"&gt;"&amp;lt;Configuration file path&amp;gt;'
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Default Database Roles
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Role&lt;/th&gt;
&lt;th&gt;Privileges&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Database User&lt;/td&gt;
&lt;td&gt;readAnyDatabase, readWriteAnyDatabase&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Database Administration&lt;/td&gt;
&lt;td&gt;dbAdminAnyDatabase,userAdminAnyDatabase&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Cluster Administration&lt;/td&gt;
&lt;td&gt;-&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Backup/Restore&lt;/td&gt;
&lt;td&gt;-&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Super User&lt;/td&gt;
&lt;td&gt;root&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;userAdmin&lt;/td&gt;
&lt;td&gt;-&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;dbAdmin&lt;/td&gt;
&lt;td&gt;-&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;dbOwner&lt;/td&gt;
&lt;td&gt;-&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;readWrite&lt;/td&gt;
&lt;td&gt;-&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Manage db user
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;//
// Create a new user
//
mongo admin &lt;span class="nt"&gt;--host&lt;/span&gt; localhost:27000 &lt;span class="nt"&gt;--eval&lt;/span&gt; &lt;span class="s1"&gt;'
  db.createUser({
    user: "m103-admin",
    pwd: "m103-pass",
    roles: [
      {role: "root", db: "admin"}
    ]
  })
'&lt;/span&gt;

// OR

use admin
db.createUser&lt;span class="o"&gt;(&lt;/span&gt;
  &lt;span class="o"&gt;{&lt;/span&gt;
    user: &lt;span class="s2"&gt;"myUserAdmin"&lt;/span&gt;,
    &lt;span class="nb"&gt;pwd&lt;/span&gt;: passwordPrompt&lt;span class="o"&gt;()&lt;/span&gt;, // or cleartext password
    roles: &lt;span class="o"&gt;[&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt; role: &lt;span class="s2"&gt;"userAdminAnyDatabase"&lt;/span&gt;, db: &lt;span class="s2"&gt;"admin"&lt;/span&gt; &lt;span class="o"&gt;}&lt;/span&gt;, &lt;span class="s2"&gt;"readWriteAnyDatabase"&lt;/span&gt; &lt;span class="o"&gt;]&lt;/span&gt;
  &lt;span class="o"&gt;}&lt;/span&gt;
&lt;span class="o"&gt;)&lt;/span&gt;

//
// Grant role to db user
//
db.grantRolesToUser&lt;span class="o"&gt;(&lt;/span&gt; &lt;span class="s2"&gt;"dba"&lt;/span&gt;,  &lt;span class="o"&gt;[&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt; db: &lt;span class="s2"&gt;"playground"&lt;/span&gt;, role: &lt;span class="s2"&gt;"dbOwner"&lt;/span&gt;  &lt;span class="o"&gt;}&lt;/span&gt; &lt;span class="o"&gt;]&lt;/span&gt; &lt;span class="o"&gt;)&lt;/span&gt;

//
// Query the role privileges
//
db.runCommand&lt;span class="o"&gt;(&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt; rolesInfo: &lt;span class="o"&gt;{&lt;/span&gt; role: &lt;span class="s2"&gt;"dbOwner"&lt;/span&gt;, db: &lt;span class="s2"&gt;"playground"&lt;/span&gt; &lt;span class="o"&gt;}&lt;/span&gt;, showPrivileges: &lt;span class="nb"&gt;true&lt;/span&gt;&lt;span class="o"&gt;}&lt;/span&gt; &lt;span class="o"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  MongoDB Shell (Common operations)
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Connect to MongoDB server&lt;/span&gt;
mongo &lt;span class="s2"&gt;"mongodb+srv://cluster0.rwrtm.mongodb.net/&amp;lt;dbname&amp;gt;"&lt;/span&gt; &lt;span class="nt"&gt;--username&lt;/span&gt; &lt;span class="nb"&gt;test&lt;/span&gt;
// OR
mongo &lt;span class="nt"&gt;--username&lt;/span&gt; root &lt;span class="nt"&gt;--password&lt;/span&gt; root123 &lt;span class="nt"&gt;--authenticationDatabase&lt;/span&gt; admin

&lt;span class="c"&gt;# Show all existing databases&lt;/span&gt;
show dbs
&lt;span class="c"&gt;# or&lt;/span&gt;
show databases

&lt;span class="c"&gt;# Switch database&lt;/span&gt;
use &amp;lt;database_name&amp;gt;

&lt;span class="c"&gt;# Show all collection within current database&lt;/span&gt;
show collections

&lt;span class="c"&gt;# Create a new collection&lt;/span&gt;
db.createCollection&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'&amp;lt;collection_name&amp;gt;'&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="c"&gt;# Create index&lt;/span&gt;
db.&amp;lt;collection&amp;gt;.createIndex&lt;span class="o"&gt;(&lt;/span&gt;
  &lt;span class="o"&gt;{&lt;/span&gt; &lt;span class="s2"&gt;"product"&lt;/span&gt;: 1 &lt;span class="o"&gt;}&lt;/span&gt;,
  &lt;span class="o"&gt;{&lt;/span&gt; &lt;span class="s2"&gt;"name"&lt;/span&gt;: &lt;span class="s2"&gt;"name_index"&lt;/span&gt; &lt;span class="o"&gt;}&lt;/span&gt;
&lt;span class="o"&gt;)&lt;/span&gt;

&lt;span class="c"&gt;# Load data into database&lt;/span&gt;
load&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'loadMovieDetailsDataset.js'&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;

&lt;span class="c"&gt;# Shutdown the Mongod (*Must switch to 'admin' database first)&lt;/span&gt;
db.shutdownServer&lt;span class="o"&gt;()&lt;/span&gt;
// OR
db.adminCommand&lt;span class="o"&gt;(&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt; shutdown: 1 &lt;span class="o"&gt;}&lt;/span&gt; &lt;span class="o"&gt;)&lt;/span&gt;

&lt;span class="c"&gt;# Iterate next result set in cursor&lt;/span&gt;
it

&lt;span class="c"&gt;# Select document&lt;/span&gt;
&lt;span class="c"&gt;## Select all data with pretty print out&lt;/span&gt;
db.&amp;lt;collection_name&amp;gt;.find&lt;span class="o"&gt;()&lt;/span&gt;.pretty&lt;span class="o"&gt;()&lt;/span&gt;
&lt;span class="c"&gt;## Select with matching criteria for array or nested object&lt;/span&gt;
db.movieDetails.find&lt;span class="o"&gt;({&lt;/span&gt; &lt;span class="s2"&gt;"genres.1"&lt;/span&gt;: &lt;span class="s2"&gt;"Western"&lt;/span&gt; &lt;span class="o"&gt;})&lt;/span&gt;
&lt;span class="c"&gt;## Projection: Select the 'genres' field in return only (1: include, 0: exclude)&lt;/span&gt;
db.movieDetails.find&lt;span class="o"&gt;({&lt;/span&gt; &lt;span class="s2"&gt;"year"&lt;/span&gt;: 1982 &lt;span class="o"&gt;}&lt;/span&gt;, &lt;span class="o"&gt;{&lt;/span&gt; &lt;span class="s2"&gt;"genres"&lt;/span&gt;: 1 &lt;span class="o"&gt;})&lt;/span&gt;
&lt;span class="c"&gt;## With comparison operators ($eq, $gt, $gte, $in, $lt, $lte, $ne, $nin)&lt;/span&gt;
db.movieDetails.find&lt;span class="o"&gt;({&lt;/span&gt; writers: &lt;span class="o"&gt;{&lt;/span&gt; &lt;span class="nv"&gt;$in&lt;/span&gt;: &lt;span class="o"&gt;[&lt;/span&gt; &lt;span class="s1"&gt;'Ethan Coen'&lt;/span&gt;, &lt;span class="s1"&gt;'Joel Coen'&lt;/span&gt; &lt;span class="o"&gt;]}})&lt;/span&gt;
&lt;span class="c"&gt;## With element operators ($exists, $type)&lt;/span&gt;
db.movies.find&lt;span class="o"&gt;({&lt;/span&gt; viewerRating: &lt;span class="o"&gt;{&lt;/span&gt; &lt;span class="nv"&gt;$type&lt;/span&gt;: &lt;span class="s1"&gt;'int'&lt;/span&gt;&lt;span class="o"&gt;}})&lt;/span&gt;
&lt;span class="c"&gt;## With logical operators ($and, $not, $nor, $or)&lt;/span&gt;
db.shipwracks.find&lt;span class="o"&gt;({&lt;/span&gt;&lt;span class="nv"&gt;$or&lt;/span&gt;: &lt;span class="o"&gt;[{&lt;/span&gt;watlev: &lt;span class="o"&gt;{&lt;/span&gt;&lt;span class="nv"&gt;$eq&lt;/span&gt;: &lt;span class="s1"&gt;'always dry'&lt;/span&gt;&lt;span class="o"&gt;}}&lt;/span&gt;, &lt;span class="o"&gt;{&lt;/span&gt;&lt;span class="nv"&gt;$and&lt;/span&gt;: &lt;span class="o"&gt;[{&lt;/span&gt;depth: &lt;span class="o"&gt;{&lt;/span&gt;&lt;span class="nv"&gt;$type&lt;/span&gt;: &lt;span class="s1"&gt;'int'&lt;/span&gt;&lt;span class="o"&gt;}}&lt;/span&gt;, &lt;span class="o"&gt;{&lt;/span&gt;depth: &lt;span class="o"&gt;{&lt;/span&gt;&lt;span class="nv"&gt;$eq&lt;/span&gt;: 0&lt;span class="o"&gt;}}]}]})&lt;/span&gt;
&lt;span class="c"&gt;## With array operator ($all, $elemMatch, $size)&lt;/span&gt;
db.movieDetails&lt;span class="o"&gt;({&lt;/span&gt;genres: &lt;span class="o"&gt;{&lt;/span&gt;&lt;span class="nv"&gt;$all&lt;/span&gt;: &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"Comedy"&lt;/span&gt;, &lt;span class="s2"&gt;"Crime"&lt;/span&gt;, &lt;span class="s2"&gt;"Drama"&lt;/span&gt;&lt;span class="o"&gt;]}})&lt;/span&gt;
&lt;span class="c"&gt;## WIth evaluation operators ($expr, $jsonSchema, $mod, $regex, $text, $where)&lt;/span&gt;
db.movieDetails&lt;span class="o"&gt;({&lt;/span&gt;&lt;span class="s1"&gt;'awards.text'&lt;/span&gt;: &lt;span class="o"&gt;{&lt;/span&gt;&lt;span class="nv"&gt;$regex&lt;/span&gt;: /^Won .&lt;span class="k"&gt;*&lt;/span&gt;/&lt;span class="o"&gt;}})&lt;/span&gt;

&lt;span class="c"&gt;# Insert document&lt;/span&gt;
&lt;span class="c"&gt;## Insert only one document&lt;/span&gt;
db.&amp;lt;collection_name&amp;gt;.insertOne&lt;span class="o"&gt;({})&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="c"&gt;## Insert few documents at a time&lt;/span&gt;
db.&amp;lt;collection_name&amp;gt;.insertMany&lt;span class="o"&gt;([]&lt;/span&gt;,&lt;span class="o"&gt;{&lt;/span&gt; &lt;span class="s2"&gt;"ordered"&lt;/span&gt;: &amp;lt;boolean&amp;gt; &lt;span class="o"&gt;})&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="c"&gt;# Update document&lt;/span&gt;
&lt;span class="c"&gt;# Update only one document&lt;/span&gt;
db.moviesScratch.updateOne&lt;span class="o"&gt;({&lt;/span&gt;&lt;span class="s2"&gt;"type"&lt;/span&gt;: &lt;span class="s2"&gt;"movie"&lt;/span&gt;&lt;span class="o"&gt;}&lt;/span&gt;, &lt;span class="o"&gt;{&lt;/span&gt; &lt;span class="nv"&gt;$set&lt;/span&gt;: &lt;span class="o"&gt;{&lt;/span&gt; &lt;span class="s2"&gt;"type"&lt;/span&gt;: &lt;span class="s2"&gt;"book"&lt;/span&gt; &lt;span class="o"&gt;}&lt;/span&gt; &lt;span class="o"&gt;})&lt;/span&gt;
&lt;span class="c"&gt;## Update few documents at a time&lt;/span&gt;
db.moviesScratch.updateMany&lt;span class="o"&gt;({}&lt;/span&gt;, &lt;span class="o"&gt;{&lt;/span&gt; &lt;span class="nv"&gt;$set&lt;/span&gt;: &lt;span class="o"&gt;{&lt;/span&gt; &lt;span class="s2"&gt;"star"&lt;/span&gt;: &lt;span class="s2"&gt;""&lt;/span&gt; &lt;span class="o"&gt;}&lt;/span&gt; &lt;span class="o"&gt;})&lt;/span&gt;
&lt;span class="c"&gt;## Update or Insert a new document if not existed&lt;/span&gt;
db.moviesScratch.updateOne&lt;span class="o"&gt;({&lt;/span&gt; title: &lt;span class="s2"&gt;"Steve Jobs"&lt;/span&gt; &lt;span class="o"&gt;}&lt;/span&gt;, &lt;span class="o"&gt;{&lt;/span&gt; &lt;span class="nv"&gt;$set&lt;/span&gt;: &lt;span class="o"&gt;{&lt;/span&gt; title: &lt;span class="s2"&gt;"Steve Jobs"&lt;/span&gt;, year: 2000, &lt;span class="nb"&gt;type&lt;/span&gt;: &lt;span class="s2"&gt;"movie"&lt;/span&gt;, comment: &lt;span class="o"&gt;[]&lt;/span&gt; &lt;span class="o"&gt;}}&lt;/span&gt;, &lt;span class="o"&gt;{&lt;/span&gt; upsert: &lt;span class="nb"&gt;true&lt;/span&gt; &lt;span class="o"&gt;})&lt;/span&gt;
&lt;span class="c"&gt;# Replace whole document (field '_id' is immutable and can't be changed)&lt;/span&gt;
db.moviesScratch.replaceOne&lt;span class="o"&gt;({&lt;/span&gt;title:&lt;span class="s2"&gt;"Steve Jobs"&lt;/span&gt;&lt;span class="o"&gt;}&lt;/span&gt;, tmp&lt;span class="o"&gt;)&lt;/span&gt;

&lt;span class="c"&gt;# Delete document&lt;/span&gt;
&lt;span class="c"&gt;## Delete only one document&lt;/span&gt;
db.moviesScratch.deleteOne&lt;span class="o"&gt;({&lt;/span&gt;title:&lt;span class="s2"&gt;"Steve Jobs 2"&lt;/span&gt;&lt;span class="o"&gt;})&lt;/span&gt;
&lt;span class="c"&gt;## Delete few documents at a time&lt;/span&gt;
db.moviesScratch.deleteMany&lt;span class="o"&gt;({&lt;/span&gt;title:&lt;span class="s2"&gt;"Steve Jobs"&lt;/span&gt;&lt;span class="o"&gt;})&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  User management commands:
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;db.createUser&lt;span class="o"&gt;()&lt;/span&gt;
db.dropUser&lt;span class="o"&gt;()&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h1&gt;
  
  
  Collection management commands:
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;db.&amp;lt;collection&amp;gt;.renameCollection&lt;span class="o"&gt;()&lt;/span&gt;
db.&amp;lt;collection&amp;gt;.createIndex&lt;span class="o"&gt;()&lt;/span&gt;
db.&amp;lt;collection&amp;gt;.drop&lt;span class="o"&gt;()&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h1&gt;
  
  
  Database management commands:
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;db.dropDatabase&lt;span class="o"&gt;()&lt;/span&gt;
db.createCollection&lt;span class="o"&gt;()&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h1&gt;
  
  
  Database status command:
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;db.serverStatus&lt;span class="o"&gt;()&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h1&gt;
  
  
  Log related command:
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Get the logging components:&lt;/span&gt;
db.getLogComponents&lt;span class="o"&gt;()&lt;/span&gt;

&lt;span class="c"&gt;# Change the logging level:&lt;/span&gt;
db.setLogLevel&lt;span class="o"&gt;(&lt;/span&gt;0, &lt;span class="s2"&gt;"index"&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;

&lt;span class="c"&gt;# View the logs through the Mongo shell:&lt;/span&gt;
db.adminCommand&lt;span class="o"&gt;({&lt;/span&gt; &lt;span class="s2"&gt;"getLog"&lt;/span&gt;: &lt;span class="s2"&gt;"global"&lt;/span&gt; &lt;span class="o"&gt;})&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h1&gt;
  
  
  Profile related command:
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Get profiling level&lt;/span&gt;
db.getProfilingLevel&lt;span class="o"&gt;()&lt;/span&gt;

&lt;span class="c"&gt;# Set profiling level:&lt;/span&gt;
db.setProfilingLevel&lt;span class="o"&gt;(&lt;/span&gt;1&lt;span class="o"&gt;)&lt;/span&gt;

&lt;span class="c"&gt;# Set slowms to 0:&lt;/span&gt;
db.setProfilingLevel&lt;span class="o"&gt;(&lt;/span&gt; 1, &lt;span class="o"&gt;{&lt;/span&gt; slowms: 0 &lt;span class="o"&gt;}&lt;/span&gt; &lt;span class="o"&gt;)&lt;/span&gt;

&lt;span class="c"&gt;# Get profiling data from system.profile:&lt;/span&gt;
db.system.profile.find&lt;span class="o"&gt;()&lt;/span&gt;.pretty&lt;span class="o"&gt;()&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h1&gt;
  
  
  Built-in management tools
&lt;/h1&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Program&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;th&gt;Usage&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;mongostat&lt;/td&gt;
&lt;td&gt;Get stats on a running mongod process.&lt;/td&gt;
&lt;td&gt;mongostat --port 30000&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;mongodump&lt;/td&gt;
&lt;td&gt;Get a BSON dump of a MongoDB collection.&lt;/td&gt;
&lt;td&gt;mongodump --port 30000 --db applicationData --collection products&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;mongorestore&lt;/td&gt;
&lt;td&gt;Restore a MongoDB collection from a BSON dump.&lt;/td&gt;
&lt;td&gt;mongorestore --drop --port 30000 dump/&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;mongoexport&lt;/td&gt;
&lt;td&gt;Export a MongoDB collection to JSON or CSV (or stdout!).&lt;/td&gt;
&lt;td&gt;mongoexport --port 30000 --db applicationData --collection products -o products.json&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;mongoimport&lt;/td&gt;
&lt;td&gt;Create a MongoDB collection from a JSON or CSV file.&lt;/td&gt;
&lt;td&gt;mongoimport --port 30000 products.json&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h1&gt;
  
  
  Replication
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;Log Format

&lt;ol&gt;
&lt;li&gt;Binary&lt;/li&gt;
&lt;li&gt;Statement-Based&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;Roles

&lt;ol&gt;
&lt;li&gt;Primary&lt;/li&gt;
&lt;li&gt;Secondary&lt;/li&gt;
&lt;li&gt;Arbiter&lt;/li&gt;
&lt;li&gt;Delayed&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;Commands&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Command&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;rs.status()&lt;/td&gt;
&lt;td&gt;Getting replica set status.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;rs.initiate()&lt;/td&gt;
&lt;td&gt;Initiating the replica set.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;rs.add()&lt;/td&gt;
&lt;td&gt;Adding other members to replica set.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;rs.isMaster()&lt;/td&gt;
&lt;td&gt;Getting an overview of the replica set topology.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;rs.stepDown()&lt;/td&gt;
&lt;td&gt;Stepping down the current primary.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

</description>
      <category>cheatsheet</category>
      <category>mongodb</category>
      <category>nosql</category>
    </item>
    <item>
      <title>Cheatsheet for Composer</title>
      <dc:creator>Steve Mak</dc:creator>
      <pubDate>Sat, 26 Nov 2022 11:19:11 +0000</pubDate>
      <link>https://dev.to/ssmak/cheatsheet-for-composer-2h2f</link>
      <guid>https://dev.to/ssmak/cheatsheet-for-composer-2h2f</guid>
      <description>&lt;h4&gt;
  
  
  &lt;em&gt;Reference&lt;/em&gt;
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;&lt;em&gt;&lt;a href="https://getcomposer.org/doc/" rel="noopener noreferrer"&gt;https://getcomposer.org/doc/&lt;/a&gt;&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Download &amp;amp; Install composer locally
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;php &lt;span class="nt"&gt;-r&lt;/span&gt; &lt;span class="s2"&gt;"copy('https://getcomposer.org/installer', 'composer-setup.php');"&lt;/span&gt;
php &lt;span class="nt"&gt;-r&lt;/span&gt; &lt;span class="s2"&gt;"if (hash_file('sha384', 'composer-setup.php') === '8a6138e2a05a8c28539c9f0fb361159823655d7ad2deecb371b04a83966c61223adc522b0189079e3e9e277cd72b8897') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"&lt;/span&gt;
php composer-setup.php
php &lt;span class="nt"&gt;-r&lt;/span&gt; &lt;span class="s2"&gt;"unlink('composer-setup.php');"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Check composer version
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;./composer.phar &lt;span class="nt"&gt;--version&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Create a new project based on existing repository
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;./composer create-project &lt;span class="nt"&gt;--prefer-dist&lt;/span&gt; laravel/laravel &lt;span class="nb"&gt;.&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Make directory writable within the Laravel application
&lt;/h3&gt;

&lt;p&gt;1) storage&lt;br&gt;
2) bootstrap/cache&lt;/p&gt;

</description>
      <category>cheatsheet</category>
      <category>composer</category>
      <category>php</category>
    </item>
    <item>
      <title>LDAP</title>
      <dc:creator>Steve Mak</dc:creator>
      <pubDate>Sat, 26 Nov 2022 11:17:48 +0000</pubDate>
      <link>https://dev.to/ssmak/cheatsheet-for-ldap-4067</link>
      <guid>https://dev.to/ssmak/cheatsheet-for-ldap-4067</guid>
      <description>&lt;h2&gt;
  
  
  LDAP (Lightweight Directory Access Protocol)
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;LDAP目錄的條目（entry）由屬性（attribute）的一個聚集組成，並由一個唯一性的名字參照，即專有名稱（distinguished name，DN）。例如，DN能取這樣的值：「ou=people,dc=wikipedia,dc=org」。&lt;/li&gt;
&lt;li&gt;LDAP is appropriate for any kind of directory-like information, where fast lookups and less-frequent updates are the norm.&lt;/li&gt;
&lt;li&gt;LDAP does not define how programs work on either the client or server side. It defines the "language" used for client programs to talk to servers (and servers to servers, too).&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Normal Attribute Name (X.500 standard)
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Attribute&lt;/th&gt;
&lt;th&gt;Meaning&lt;/th&gt;
&lt;th&gt;Example&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;dn&lt;/td&gt;
&lt;td&gt;Distinguished name&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;dc&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;o&lt;/td&gt;
&lt;td&gt;Organization&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;ou&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;c&lt;/td&gt;
&lt;td&gt;Country&lt;/td&gt;
&lt;td&gt;Country: e.g GB for Great Britain.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;cn&lt;/td&gt;
&lt;td&gt;Common name&lt;/td&gt;
&lt;td&gt;CN=Guy Thomas. Actually, this LDAP attribute can be made up from givenName joined to SN.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;sn&lt;/td&gt;
&lt;td&gt;Surname&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;givenName&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;homeDrive&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;Home Folder: connect.  Tricky to configure.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;name&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;name = Guy Thomas.  Exactly the same as CN.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;displayName&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;objectClass&lt;/td&gt;
&lt;td&gt;objectClass = User. Also used for Computer, organizationalUnit, even container. Important top-level container.&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;title&lt;/td&gt;
&lt;td&gt;Job title&lt;/td&gt;
&lt;td&gt;title = Manager&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;description&lt;/td&gt;
&lt;td&gt;Description&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;mail&lt;/td&gt;
&lt;td&gt;E-mail&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;wWWHomePage&lt;/td&gt;
&lt;td&gt;User's home page&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Reference
&lt;/h2&gt;

&lt;h4&gt;
  
  
  GUI LDAP Client tool
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.ldapadmin.org/" rel="noopener noreferrer"&gt;http://www.ldapadmin.org/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  Filter
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://confluence.atlassian.com/kb/how-to-write-ldap-search-filters-792496933.html" rel="noopener noreferrer"&gt;https://confluence.atlassian.com/kb/how-to-write-ldap-search-filters-792496933.html&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://ldapwiki.com/wiki/LDAP%20Filter%20Choices" rel="noopener noreferrer"&gt;https://ldapwiki.com/wiki/LDAP%20Filter%20Choices&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>ldap</category>
      <category>cheatsheet</category>
      <category>idm</category>
    </item>
    <item>
      <title>Stream</title>
      <dc:creator>Steve Mak</dc:creator>
      <pubDate>Sat, 26 Nov 2022 11:07:33 +0000</pubDate>
      <link>https://dev.to/ssmak/java-stream-cheatsheet-mam</link>
      <guid>https://dev.to/ssmak/java-stream-cheatsheet-mam</guid>
      <description>&lt;p&gt;Convert &lt;em&gt;n&lt;/em&gt; elements to an array list&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="nc"&gt;List&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;Integer&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;numbers&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;Arrays&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;asList&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;6&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Stream
&lt;/h2&gt;

&lt;p&gt;Stream map&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="nc"&gt;List&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;String&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;listOfStrings&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;Arrays&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;asList&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"1"&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="s"&gt;"2"&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="s"&gt;"3"&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="s"&gt;"4"&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="s"&gt;"5"&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;

&lt;span class="nc"&gt;List&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;Integer&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;listOfIntegers&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;listOfStrings&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;stream&lt;/span&gt;&lt;span class="o"&gt;()&lt;/span&gt;
        &lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;map&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nl"&gt;Integer:&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="n"&gt;valueOf&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;
        &lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;collect&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nc"&gt;Collectors&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;toList&lt;/span&gt;&lt;span class="o"&gt;());&lt;/span&gt;

&lt;span class="nc"&gt;System&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;out&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;println&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;listOfIntegers&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Stream reduce&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="c1"&gt;//&lt;/span&gt;
&lt;span class="c1"&gt;// Example 1&lt;/span&gt;
&lt;span class="c1"&gt;//&lt;/span&gt;
&lt;span class="nc"&gt;List&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;Integer&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;numbers&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;Arrays&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;asList&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;6&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
&lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;result&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;numbers&lt;/span&gt;
  &lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;stream&lt;/span&gt;&lt;span class="o"&gt;()&lt;/span&gt;
  &lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;reduce&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;subtotal&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="n"&gt;element&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;subtotal&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;element&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
&lt;span class="n"&gt;assertThat&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;result&lt;/span&gt;&lt;span class="o"&gt;).&lt;/span&gt;&lt;span class="na"&gt;isEqualTo&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;21&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;

&lt;span class="c1"&gt;//&lt;/span&gt;
&lt;span class="c1"&gt;// Example 2 (Use method reference)&lt;/span&gt;
&lt;span class="c1"&gt;//&lt;/span&gt;
&lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;result&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;numbers&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;stream&lt;/span&gt;&lt;span class="o"&gt;().&lt;/span&gt;&lt;span class="na"&gt;reduce&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nl"&gt;Integer:&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="n"&gt;sum&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
&lt;span class="n"&gt;assertThat&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;result&lt;/span&gt;&lt;span class="o"&gt;).&lt;/span&gt;&lt;span class="na"&gt;isEqualTo&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;21&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;

&lt;span class="c1"&gt;//&lt;/span&gt;
&lt;span class="c1"&gt;// Example 3&lt;/span&gt;
&lt;span class="c1"&gt;//&lt;/span&gt;
&lt;span class="nc"&gt;List&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;User&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;users&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;Arrays&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;asList&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;User&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"John"&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;30&lt;/span&gt;&lt;span class="o"&gt;),&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;User&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"Julie"&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;35&lt;/span&gt;&lt;span class="o"&gt;));&lt;/span&gt;
&lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;result&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;users&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;stream&lt;/span&gt;&lt;span class="o"&gt;()&lt;/span&gt;
  &lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;reduce&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;partialAgeResult&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="n"&gt;user&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;partialAgeResult&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;user&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;getAge&lt;/span&gt;&lt;span class="o"&gt;(),&lt;/span&gt; &lt;span class="nl"&gt;Integer:&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="n"&gt;sum&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
&lt;span class="n"&gt;assertThat&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;result&lt;/span&gt;&lt;span class="o"&gt;).&lt;/span&gt;&lt;span class="na"&gt;isEqualTo&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;65&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Stream.flatMap&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="c1"&gt;//&lt;/span&gt;
&lt;span class="c1"&gt;// Example 1&lt;/span&gt;
&lt;span class="c1"&gt;//&lt;/span&gt;
&lt;span class="nc"&gt;Merging&lt;/span&gt; &lt;span class="nc"&gt;Lists&lt;/span&gt; &lt;span class="n"&gt;into&lt;/span&gt; &lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="nc"&gt;Single&lt;/span&gt; &lt;span class="nc"&gt;List&lt;/span&gt;
&lt;span class="nc"&gt;List&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;Integer&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;list1&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;Arrays&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;asList&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
&lt;span class="nc"&gt;List&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;Integer&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;list2&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;Arrays&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;asList&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;6&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
&lt;span class="nc"&gt;List&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;Integer&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;list3&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;Arrays&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;asList&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;7&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;8&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;9&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;

&lt;span class="nc"&gt;List&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;List&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;Integer&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;listOfLists&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;Arrays&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;asList&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;list1&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="n"&gt;list2&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="n"&gt;list3&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;

&lt;span class="nc"&gt;List&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;Integer&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;listOfAllIntegers&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;listOfLists&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;stream&lt;/span&gt;&lt;span class="o"&gt;()&lt;/span&gt;
          &lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;flatMap&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;stream&lt;/span&gt;&lt;span class="o"&gt;())&lt;/span&gt;
          &lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;collect&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nc"&gt;Collectors&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;toList&lt;/span&gt;&lt;span class="o"&gt;());&lt;/span&gt;

&lt;span class="nc"&gt;System&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;out&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;println&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;listOfAllIntegers&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;

&lt;span class="c1"&gt;//&lt;/span&gt;
&lt;span class="c1"&gt;// Example 2&lt;/span&gt;
&lt;span class="c1"&gt;//&lt;/span&gt;
&lt;span class="nc"&gt;String&lt;/span&gt;&lt;span class="o"&gt;[][]&lt;/span&gt; &lt;span class="n"&gt;dataArray&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;String&lt;/span&gt;&lt;span class="o"&gt;[][]{{&lt;/span&gt;&lt;span class="s"&gt;"a"&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="s"&gt;"b"&lt;/span&gt;&lt;span class="o"&gt;},&lt;/span&gt; 
        &lt;span class="o"&gt;{&lt;/span&gt;&lt;span class="s"&gt;"c"&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="s"&gt;"d"&lt;/span&gt;&lt;span class="o"&gt;},&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;&lt;span class="s"&gt;"e"&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="s"&gt;"f"&lt;/span&gt;&lt;span class="o"&gt;},&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;&lt;span class="s"&gt;"g"&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="s"&gt;"h"&lt;/span&gt;&lt;span class="o"&gt;}};&lt;/span&gt;

&lt;span class="nc"&gt;List&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;String&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;listOfAllChars&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;Arrays&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;stream&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;dataArray&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;
              &lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;flatMap&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="nc"&gt;Arrays&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;stream&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="o"&gt;))&lt;/span&gt;
              &lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;collect&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nc"&gt;Collectors&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;toList&lt;/span&gt;&lt;span class="o"&gt;());&lt;/span&gt;

&lt;span class="nc"&gt;System&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;out&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;println&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;listOfAllChars&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  IntStream
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="c1"&gt;// Converting IntStream to Array&lt;/span&gt;
&lt;span class="kt"&gt;int&lt;/span&gt;&lt;span class="o"&gt;[]&lt;/span&gt; &lt;span class="n"&gt;intArray&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;IntStream&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;of&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="o"&gt;).&lt;/span&gt;&lt;span class="na"&gt;toArray&lt;/span&gt;&lt;span class="o"&gt;();&lt;/span&gt;

&lt;span class="c1"&gt;// Converting IntStream to List&lt;/span&gt;
&lt;span class="nc"&gt;List&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;Integer&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;list&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;IntStream&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;of&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;
            &lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;boxed&lt;/span&gt;&lt;span class="o"&gt;()&lt;/span&gt;
            &lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;collect&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nc"&gt;Collectors&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;toList&lt;/span&gt;&lt;span class="o"&gt;());&lt;/span&gt;

&lt;span class="c1"&gt;// Returns stream containing a single specified element.&lt;/span&gt;
&lt;span class="nc"&gt;IntStream&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;of&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt; &lt;span class="c1"&gt;// 10&lt;/span&gt;

&lt;span class="c1"&gt;// Returns stream containing specified all elements.&lt;/span&gt;
&lt;span class="nc"&gt;IntStream&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;of&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt; &lt;span class="c1"&gt;// 1,2,3&lt;/span&gt;

&lt;span class="c1"&gt;// Returns a sequential ordered int stream excludes the last element.&lt;/span&gt;
&lt;span class="nc"&gt;IntStream&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;range&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt; &lt;span class="c1"&gt;// 1,2,3,4&lt;/span&gt;

&lt;span class="c1"&gt;// Returns a sequential ordered int stream includes the last element.&lt;/span&gt;
&lt;span class="nc"&gt;IntStream&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;rangeClosed&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt; &lt;span class="c1"&gt;// 1,2,3,4,5&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



</description>
      <category>cheatsheet</category>
      <category>java</category>
      <category>stream</category>
    </item>
    <item>
      <title>Setup a LAMP stack development within A MINUTE!</title>
      <dc:creator>Steve Mak</dc:creator>
      <pubDate>Sat, 18 Sep 2021 06:41:15 +0000</pubDate>
      <link>https://dev.to/ssmak/setup-a-lamp-stack-development-within-a-minute-3ono</link>
      <guid>https://dev.to/ssmak/setup-a-lamp-stack-development-within-a-minute-3ono</guid>
      <description>&lt;p&gt;Before the minute, it assumes you have the knowledge on Git and Docker, and already installed Git and Docker Desktop. If not, please pick from there:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Git - &lt;a href="https://git-scm.com/downloads" rel="noopener noreferrer"&gt;https://git-scm.com/downloads&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Docker Desktop - &lt;a href="https://www.docker.com/get-started" rel="noopener noreferrer"&gt;https://www.docker.com/get-started&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Long story short, let's go!&lt;/p&gt;

&lt;p&gt;1) Clone the project from GitHub (ssmak/lamp 👈 Cool! it is my project! 😃)&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git clone https://github.com/ssmak/lamp.git
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;2) Enter the project directory&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;cd &lt;/span&gt;lamp
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;3) Start the LAMP stack&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;docker-compose up &lt;span class="nt"&gt;-d&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That's it! Please check with the link &lt;a href="http://127.0.0.1" rel="noopener noreferrer"&gt;http://127.0.0.1&lt;/a&gt;. It is the document root and mapped to the project path of ~/container_volume/www/default/html. You can also access with HTTPS, a self-signed certificate has been already generated.&lt;/p&gt;

&lt;p&gt;Furthers reading...&lt;/p&gt;

&lt;h3&gt;
  
  
  MySQL
&lt;/h3&gt;

&lt;p&gt;Connect to MySQL with IP:PORT (127.0.0.1:3306) and the credential (user: root  password: root).&lt;/p&gt;

&lt;h3&gt;
  
  
  PHP
&lt;/h3&gt;

&lt;p&gt;Visit &lt;a href="http://127.0.0.1/phpinfo.php" rel="noopener noreferrer"&gt;http://127.0.0.1/phpinfo.php&lt;/a&gt; and you can see the detail settings. Notes that many common modules have been already installed for you such as MySQLi, MongoDB, Memcached, Redis and GD, etc.&lt;/p&gt;

&lt;p&gt;For more details, please visit the project on GitHub&lt;br&gt;
&lt;a href="https://github.com/ssmak/lamp" rel="noopener noreferrer"&gt;https://github.com/ssmak/lamp&lt;/a&gt;&lt;/p&gt;

&lt;h5&gt;
  
  
  (The cover image of this post is not my work and just from Google search. Please let me know if you are the owner and require me to remove. THX!)
&lt;/h5&gt;

</description>
    </item>
    <item>
      <title>Maven</title>
      <dc:creator>Steve Mak</dc:creator>
      <pubDate>Thu, 10 Dec 2020 01:17:46 +0000</pubDate>
      <link>https://dev.to/ssmak/cheatsheet-for-maven-38gk</link>
      <guid>https://dev.to/ssmak/cheatsheet-for-maven-38gk</guid>
      <description>&lt;p&gt;&lt;em&gt;Official Reference: &lt;a href="https://maven.apache.org/guides/getting-started/maven-in-five-minutes.html" rel="noopener noreferrer"&gt;https://maven.apache.org/guides/getting-started/maven-in-five-minutes.html&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  New a Maven project
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;mvn archetype:generate &lt;span class="nt"&gt;-DgroupId&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;com.mycompany.app &lt;span class="nt"&gt;-DartifactId&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;my-app &lt;span class="nt"&gt;-DarchetypeArtifactId&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;maven-archetype-quickstart &lt;span class="nt"&gt;-DarchetypeVersion&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;1.4 &lt;span class="nt"&gt;-DinteractiveMode&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nb"&gt;false&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Clean up target folder (build folder)
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;mvn clean
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Compile the source
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;mvn compile
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Compile and Pack the compiled source
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;mvn package
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Test the package
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;java &lt;span class="nt"&gt;-cp&lt;/span&gt; target/lt-vaadin-components-1.0-SNAPSHOT.jar &amp;lt;FULL_CLASS_NAME_WITH_PACKAGE&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Install local JAR to local Maven repository
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;mvn &lt;span class="nb"&gt;install&lt;/span&gt;:install-file &lt;span class="nt"&gt;-Dfile&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&amp;lt;path-to-file&amp;gt; &lt;span class="nt"&gt;-DgroupId&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&amp;lt;group-id&amp;gt; &lt;span class="nt"&gt;-DartifactId&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&amp;lt;artifact-id&amp;gt; &lt;span class="nt"&gt;-Dversion&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&amp;lt;version&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



</description>
    </item>
  </channel>
</rss>
