<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>C# on Junian Dev</title>
    <link>https://www.junian.dev/tags/csharp/</link>
    <description>Recent content in C# on Junian Dev</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>en-us</language>
    <managingEditor>author@junian.dev (Junian Triajianto)</managingEditor>
    <webMaster>author@junian.dev (Junian Triajianto)</webMaster>
    <copyright>Copyright &amp;copy; 2014 - 2026 Junian.dev</copyright>
    
	    <atom:link href="https://www.junian.dev/tags/csharp/index.xml" rel="self" type="application/rss+xml" />
    
    <item>
      <title>Blazor Apps by Junian.dev</title>
      <link>https://www.junian.dev/blazor-apps/</link>
      <pubDate>Wed, 28 Jan 2026 06:00:00 +0700</pubDate>
      <author>author@junian.dev (Junian Triajianto)</author>
      <guid>https://www.junian.dev/blazor-apps/</guid>
      <description></description>
    </item>
    <item>
      <title>Run a .NET App from a Single C# File</title>
      <link>https://www.junian.dev/dev/dotnet-run-csharp-app/</link>
      <pubDate>Sat, 27 Sep 2025 05:44:27 +0700</pubDate>
      <author>author@junian.dev (Junian Triajianto)</author>
      <guid>https://www.junian.dev/dev/dotnet-run-csharp-app/</guid>
      <description>&lt;p&gt;With .NET 10, you can run a C# file directly, no project or solution file required!&lt;/p&gt;
&lt;p&gt;This is especially useful for automation scripts, DevOps tasks, or quick experimentation.&lt;/p&gt;
&lt;p&gt;In this tutorial, I&amp;rsquo;ll show you how it works on macOS (or any supported Unix-based system).&lt;/p&gt;
&lt;h2 id=&#34;getting-started-with-dotnet-app-runcs&#34;&gt;Getting Started with dotnet app run.cs&lt;/h2&gt;
&lt;p&gt;First, install the &lt;a href=&#34;https://dotnet.microsoft.com/en-us/download/dotnet/10.0&#34;&gt;.NET 10 SDK&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;On macOS, you can use Homebrew:&lt;/p&gt;

&lt;figure class=&#34;highlight&#34;&gt;
    &lt;button class=&#34;btn-clipboard chroma&#34; title=&#34;Copy to clipboard&#34;&gt;&lt;i class=&#34;fa icon-clipboard&#34;&gt;&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 24 24&#34; class=&#34;feather feather-copy&#34;&gt;&lt;rect x=&#34;9&#34; y=&#34;9&#34; width=&#34;13&#34; height=&#34;13&#34; rx=&#34;2&#34; ry=&#34;2&#34;/&gt;&lt;path d=&#34;M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1&#34;/&gt;&lt;/svg&gt;&lt;/i&gt;&lt;span class=&#34;msg-clipboard&#34;&gt;&lt;/span&gt;&lt;/button&gt;
    &lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;brew install junian/dotnet/dotnet-sdk@10.0&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
    
&lt;/figure&gt;&lt;p&gt;Create a new file and make it executable:&lt;/p&gt;</description>
    </item>
    <item>
      <title>WinForms 32-bit &#39;Designer Could Not Be Shown&#39; Issue</title>
      <link>https://www.junian.dev/dev/dotnet-winforms-32bit-designer-issue/</link>
      <pubDate>Sun, 09 Mar 2025 10:30:40 +0700</pubDate>
      <author>author@junian.dev (Junian Triajianto)</author>
      <guid>https://www.junian.dev/dev/dotnet-winforms-32bit-designer-issue/</guid>
      <description>&lt;p&gt;When I was working on a company WinForms project in Visual Studio, I encountered the following error:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;The designer could not be shown for this file because none of the classes within it can be designed. The designer inspected the following classes in the file: frmDataEditor &amp;mdash; The base class &amp;lsquo;Client.Forms&amp;rsquo; could not be loaded. Ensure the assembly has been referenced and that all projects have been built.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Here&amp;rsquo;s the complete Stack Trace:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Fizz Buzz - LeetCode in C#</title>
      <link>https://www.junian.dev/dev/fizz-buzz/</link>
      <pubDate>Thu, 14 Nov 2024 12:01:57 +0700</pubDate>
      <author>author@junian.dev (Junian Triajianto)</author>
      <guid>https://www.junian.dev/dev/fizz-buzz/</guid>
      <description>&lt;p&gt;The Fizz Buzz problem is a classic exercise that is often used to teach basic programming concepts such as loops and conditionals.&lt;/p&gt;
&lt;p&gt;In this article, I&amp;rsquo;ll show you my attempt to solve this problem.&lt;/p&gt;
&lt;h2 id=&#34;problem-description&#34;&gt;Problem Description&lt;/h2&gt;
&lt;details&gt;
&lt;p&gt;Given an integer &lt;code&gt;n&lt;/code&gt;, return a string array &lt;code&gt;answer&lt;/code&gt; &lt;em&gt;(&lt;strong&gt;1-indexed&lt;/strong&gt;) where&lt;/em&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;answer[i] == &amp;quot;FizzBuzz&amp;quot;&lt;/code&gt; if &lt;code&gt;i&lt;/code&gt; is divisible by &lt;code&gt;3&lt;/code&gt; and &lt;code&gt;5&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;answer[i] == &amp;quot;Fizz&amp;quot;&lt;/code&gt; if &lt;code&gt;i&lt;/code&gt; is divisible by &lt;code&gt;3&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;answer[i] == &amp;quot;Buzz&amp;quot;&lt;/code&gt; if &lt;code&gt;i&lt;/code&gt; is divisible by &lt;code&gt;5&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;answer[i] == i&lt;/code&gt; (as a string) if none of the above conditions are true.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;example-1&#34;&gt;Example 1:&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Input:&lt;/strong&gt; &lt;code&gt;n = 3&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Output:&lt;/strong&gt; &lt;code&gt;[&amp;quot;1&amp;quot;,&amp;quot;2&amp;quot;,&amp;quot;Fizz&amp;quot;]&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;example-2&#34;&gt;Example 2:&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Input:&lt;/strong&gt; &lt;code&gt;n = 5&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Output:&lt;/strong&gt; &lt;code&gt;[&amp;quot;1&amp;quot;,&amp;quot;2&amp;quot;,&amp;quot;Fizz&amp;quot;,&amp;quot;4&amp;quot;,&amp;quot;Buzz&amp;quot;]&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;example-3&#34;&gt;Example 3:&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Input:&lt;/strong&gt; &lt;code&gt;n = 15&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Output:&lt;/strong&gt; &lt;code&gt;[&amp;quot;1&amp;quot;,&amp;quot;2&amp;quot;,&amp;quot;Fizz&amp;quot;,&amp;quot;4&amp;quot;,&amp;quot;Buzz&amp;quot;,&amp;quot;Fizz&amp;quot;,&amp;quot;7&amp;quot;,&amp;quot;8&amp;quot;,&amp;quot;Fizz&amp;quot;,&amp;quot;Buzz&amp;quot;,&amp;quot;11&amp;quot;,&amp;quot;Fizz&amp;quot;,&amp;quot;13&amp;quot;,&amp;quot;14&amp;quot;,&amp;quot;FizzBuzz&amp;quot;]&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;constraints&#34;&gt;Constraints:&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;1 &amp;lt;= n &amp;lt;= 10&lt;sup&gt;4&lt;/sup&gt;&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/details&gt;
&lt;!--adsense--&gt;
&lt;h2 id=&#34;intuition&#34;&gt;Intuition&lt;/h2&gt;
&lt;p&gt;When breaking down the problem, the task is to iterate through a sequence of numbers while applying simple divisibility rules to determine the correct output for each number.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Palindrome Number - LeetCode in C#</title>
      <link>https://www.junian.dev/dev/palindrome-number/</link>
      <pubDate>Sun, 10 Nov 2024 17:03:55 +0700</pubDate>
      <author>author@junian.dev (Junian Triajianto)</author>
      <guid>https://www.junian.dev/dev/palindrome-number/</guid>
      <description>&lt;h2 id=&#34;problem&#34;&gt;Problem&lt;/h2&gt;
&lt;details&gt;
&lt;p&gt;Given an integer &lt;code&gt;x&lt;/code&gt;, return &lt;code&gt;true&lt;/code&gt; &lt;em&gt;if&lt;/em&gt; &lt;code&gt;x&lt;/code&gt; &lt;em&gt;is a&lt;/em&gt; &lt;em&gt;&lt;strong&gt;palindrome&lt;/strong&gt;&lt;/em&gt; &lt;em&gt;, and&lt;/em&gt; &lt;code&gt;false&lt;/code&gt; &lt;em&gt;otherwise&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Example 1:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Input:&lt;/strong&gt; &lt;code&gt;x = 121&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Output:&lt;/strong&gt; &lt;code&gt;true&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Explanation:&lt;/strong&gt; 121 reads as 121 from left to right and from right to left.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Example 2:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Input:&lt;/strong&gt; &lt;code&gt;x = -121&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Output:&lt;/strong&gt; &lt;code&gt;false&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Explanation:&lt;/strong&gt; From left to right, it reads -121. From right to left, it becomes 121-. Therefore it is not a palindrome.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Example 3:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Input:&lt;/strong&gt; &lt;code&gt;x = 10&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Output:&lt;/strong&gt; &lt;code&gt;false&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Explanation:&lt;/strong&gt; Reads 01 from right to left. Therefore it is not a palindrome.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Constraints:&lt;/strong&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Remove Duplicates From Sorted Array - LeetCode in C#</title>
      <link>https://www.junian.dev/dev/remove-duplicates-from-sorted-array/</link>
      <pubDate>Sat, 09 Nov 2024 14:46:13 +0700</pubDate>
      <author>author@junian.dev (Junian Triajianto)</author>
      <guid>https://www.junian.dev/dev/remove-duplicates-from-sorted-array/</guid>
      <description>&lt;h2 id=&#34;problem-description&#34;&gt;Problem Description&lt;/h2&gt;
&lt;details&gt;
&lt;p&gt;Given an integer array &lt;code&gt;nums&lt;/code&gt; sorted in &lt;strong&gt;non-decreasing order&lt;/strong&gt;, remove the duplicates &lt;a href=&#34;https://en.wikipedia.org/wiki/In-place_algorithm&#34;&gt;&lt;strong&gt;in-place&lt;/strong&gt;&lt;/a&gt; such that each unique element appears only &lt;strong&gt;once&lt;/strong&gt;. The &lt;strong&gt;relative order&lt;/strong&gt; of the elements should be kept the &lt;strong&gt;same&lt;/strong&gt;. Then return &lt;em&gt;the number of unique elements in&lt;/em&gt; &lt;code&gt;nums&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Consider the number of unique elements of &lt;code&gt;nums&lt;/code&gt; to be &lt;code&gt;k&lt;/code&gt;, to get accepted, you need to do the following things:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Change the array &lt;code&gt;nums&lt;/code&gt; such that the first &lt;code&gt;k&lt;/code&gt; elements of &lt;code&gt;nums&lt;/code&gt; contain the unique elements in the order they were present in &lt;code&gt;nums&lt;/code&gt; initially. The remaining elements of &lt;code&gt;nums&lt;/code&gt; are not important as well as the size of &lt;code&gt;nums&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Return &lt;code&gt;k&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Custom Judge:&lt;/strong&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Two Sum - LeetCode in C# - Hash Table Solution</title>
      <link>https://www.junian.dev/dev/two-sum-hash-table/</link>
      <pubDate>Fri, 08 Nov 2024 18:51:32 +0700</pubDate>
      <author>author@junian.dev (Junian Triajianto)</author>
      <guid>https://www.junian.dev/dev/two-sum-hash-table/</guid>
      <description>&lt;h2 id=&#34;problem&#34;&gt;Problem&lt;/h2&gt;
&lt;details&gt;
&lt;p&gt;Given an array of integers &lt;code&gt;nums&lt;/code&gt; and an integer &lt;code&gt;target&lt;/code&gt;, return &lt;em&gt;indices of the two numbers such that they add up to &lt;code&gt;target&lt;/code&gt;&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;You may assume that each input would have &lt;strong&gt;&lt;em&gt;exactly&lt;/em&gt; one solution&lt;/strong&gt;, and you may not use the &lt;em&gt;same&lt;/em&gt; element twice.&lt;/p&gt;
&lt;p&gt;You can return the answer in any order.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Example 1:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Input:&lt;/strong&gt; &lt;code&gt;nums = [2,7,11,15], target = 9&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Output:&lt;/strong&gt; &lt;code&gt;[0,1]&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Explanation:&lt;/strong&gt; Because &lt;code&gt;nums[0] + nums[1] == 9&lt;/code&gt;, we return &lt;code&gt;[0, 1]&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Example 2:&lt;/strong&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Two Sum - LeetCode in C# - Brute force approach</title>
      <link>https://www.junian.dev/dev/two-sum-bruteforce/</link>
      <pubDate>Fri, 08 Nov 2024 13:39:47 +0700</pubDate>
      <author>author@junian.dev (Junian Triajianto)</author>
      <guid>https://www.junian.dev/dev/two-sum-bruteforce/</guid>
      <description>&lt;p&gt;&lt;em&gt;You might want to read the &lt;a href=&#34;https://www.junian.dev/leetcode/two-sum-hash-table/&#34;&gt;Hash Table&lt;/a&gt; solution. It&amp;rsquo;s better.&lt;/em&gt;&lt;/p&gt;
&lt;h2 id=&#34;intuition&#34;&gt;Intuition&lt;/h2&gt;
&lt;p&gt;When I first encountered the Two Sum problem, my initial thought was to check each possible pair of numbers in the array.
If a pair sums to the target value, then that would be our solution.&lt;/p&gt;
&lt;p&gt;This brute force method should work, but intuitively, I thought there might be more efficient ways.&lt;/p&gt;
&lt;p&gt;However, starting with the simplest idea often helps to understand the problem better and refine the approach.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Folder Browser Dialog on Windows with C#</title>
      <link>https://www.junian.dev/dev/csharp-open-folder-dialog/</link>
      <pubDate>Sun, 05 May 2024 13:42:11 +0700</pubDate>
      <author>author@junian.dev (Junian Triajianto)</author>
      <guid>https://www.junian.dev/dev/csharp-open-folder-dialog/</guid>
      <description>&lt;p&gt;In this guide, I&amp;rsquo;ll walk you through the process of implementing a folder selection UI using C#.&lt;/p&gt;
&lt;p&gt;In many applications, users need to specify a folder where certain files will be saved or retrieved.
Providing a user-friendly way to select folders enhances the overall usability of your application.&lt;/p&gt;
&lt;p&gt;To implement a folder selection dialog in C#, we&amp;rsquo;ll use the &lt;code&gt;FolderBrowserDialog&lt;/code&gt; class provided by the .NET framework.
This class allows users to browse and select folders from their file system with ease.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Can&#39;t Open Form [Design] View in WinForms Project</title>
      <link>https://www.junian.dev/dev/winforms-unable-open-design-view/</link>
      <pubDate>Sun, 05 May 2024 09:48:56 +0700</pubDate>
      <author>author@junian.dev (Junian Triajianto)</author>
      <guid>https://www.junian.dev/dev/winforms-unable-open-design-view/</guid>
      <description>&lt;p&gt;Have you ever been developing a WinForms project and encountered a situation where you couldn&amp;rsquo;t use the View Designer?&lt;/p&gt;
&lt;p&gt;This problem can occur when you&amp;rsquo;re using the latest SDK-style project but are still targeting an older version of .NET, such as 4.8 or below.&lt;/p&gt;
&lt;p&gt;Rest assured, you&amp;rsquo;re not alone. The solution is rather straightforward.&lt;/p&gt;
&lt;p&gt;In Visual Studio, simply right-click on your project file and select &lt;strong&gt;Edit Project File&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Now, you just need to include a new &lt;code&gt;ItemGroup&lt;/code&gt; for your Form files.&lt;/p&gt;</description>
    </item>
    <item>
      <title>VSCode Avalonia Extension Download .NET Runtime Issue</title>
      <link>https://www.junian.dev/dev/vscode-avalonia-requested-to-download-dotnet-runtime/</link>
      <pubDate>Wed, 17 Apr 2024 16:08:38 +0700</pubDate>
      <author>author@junian.dev (Junian Triajianto)</author>
      <guid>https://www.junian.dev/dev/vscode-avalonia-requested-to-download-dotnet-runtime/</guid>
      <description>&lt;p&gt;So I want to start using AvaloniaUI on macOS, but suddenly it always happens.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;AvaloniaTeam.vscode-avalonia requested to download the .NET Runtime.
Downloading .NET version(s) 8.0.4~arm64 &amp;hellip;.Error
Failed to download .NET 8.0:
Web Request to &lt;a href=&#34;https://dot.net/v1/dotnet-install.sh&#34;&gt;https://dot.net/v1/dotnet-install.sh&lt;/a&gt; Failed: n[r].split is not a function. Aborting. Please ensure that you are online.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;To solve that, just open the VSCode &lt;code&gt;settings.json&lt;/code&gt; and configure it with the following settings.&lt;/p&gt;

&lt;figure class=&#34;highlight&#34;&gt;
    &lt;button class=&#34;btn-clipboard chroma&#34; title=&#34;Copy to clipboard&#34;&gt;&lt;i class=&#34;fa icon-clipboard&#34;&gt;&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 24 24&#34; class=&#34;feather feather-copy&#34;&gt;&lt;rect x=&#34;9&#34; y=&#34;9&#34; width=&#34;13&#34; height=&#34;13&#34; rx=&#34;2&#34; ry=&#34;2&#34;/&gt;&lt;path d=&#34;M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1&#34;/&gt;&lt;/svg&gt;&lt;/i&gt;&lt;span class=&#34;msg-clipboard&#34;&gt;&lt;/span&gt;&lt;/button&gt;
    &lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-json&#34; data-lang=&#34;json&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;dotnetAcquisitionExtension.existingDotnetPath&amp;#34;&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;nt&#34;&gt;&amp;#34;extensionId&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;ms-dotnettools.csharp&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;nt&#34;&gt;&amp;#34;path&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;/usr/local/share/dotnet/dotnet&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;},&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;nt&#34;&gt;&amp;#34;extensionId&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;ms-dotnettools.csdevkit&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;nt&#34;&gt;&amp;#34;path&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;/usr/local/share/dotnet/dotnet&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;},&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;nt&#34;&gt;&amp;#34;extensionId&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;visualstudiotoolsforunity.vstuc&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;nt&#34;&gt;&amp;#34;path&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;/usr/local/share/dotnet/dotnet&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;},&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;nt&#34;&gt;&amp;#34;extensionId&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;AvaloniaTeam.vscode-avalonia&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;nt&#34;&gt;&amp;#34;path&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;/usr/local/share/dotnet/dotnet&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;},&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
    
&lt;/figure&gt;&lt;p&gt;That&amp;rsquo;s it, now you can use &lt;code&gt;AvaloniaUI&lt;/code&gt; on VSCode with auto-complete and everything.&lt;/p&gt;</description>
    </item>
    <item>
      <title>String Comparison by Ignoring Case in C#</title>
      <link>https://www.junian.dev/dev/csharp-string-comparison-ignore-case/</link>
      <pubDate>Thu, 02 Apr 2020 10:19:09 +0700</pubDate>
      <author>author@junian.dev (Junian Triajianto)</author>
      <guid>https://www.junian.dev/dev/csharp-string-comparison-ignore-case/</guid>
      <description>&lt;p&gt;String value in C# is case-sensitive.
That means lower case and upper case texts are considered different when you compare them.&lt;/p&gt;
&lt;p&gt;But, there are some cases when you need to compare two strings and ignore their case.
For example when you&amp;rsquo;re building a search engine.&lt;/p&gt;
&lt;p&gt;To compare two strings by ignoring their case, you can just put an additional parameter when you&amp;rsquo;re using &lt;code&gt;string.Equals()&lt;/code&gt; method.&lt;/p&gt;
&lt;p&gt;Take a look the following snippet as an example.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Base64 String Encoding and Decoding in C#</title>
      <link>https://www.junian.dev/dev/csharp-base64-string-encode-decode/</link>
      <pubDate>Tue, 31 Mar 2020 20:28:58 +0700</pubDate>
      <author>author@junian.dev (Junian Triajianto)</author>
      <guid>https://www.junian.dev/dev/csharp-base64-string-encode-decode/</guid>
      <description>&lt;p&gt;Base64 is a radix-64 ASCII string format that represents binary data.
Each digit of base64 encoded string represents exactly 6 bits of data.&lt;/p&gt;
&lt;p&gt;It is designed to carry binary data across platforms that only support text content.&lt;/p&gt;
&lt;p&gt;The usage is mostly popular in Web platform.
For example it&amp;rsquo;s being used to embed image files inside HTML or embed font file inside CSS.&lt;/p&gt;
&lt;p&gt;Even though the main purpose is to store binary data into a text content, base64 sometimes is being used to hide a text.
For example to prevent the content of your website scraped by robot.&lt;/p&gt;</description>
    </item>
    <item>
      <title>&#39;Hello, World!&#39; Program in C#</title>
      <link>https://www.junian.dev/dev/csharp-hello-world/</link>
      <pubDate>Tue, 31 Mar 2020 19:25:12 +0700</pubDate>
      <author>author@junian.dev (Junian Triajianto)</author>
      <guid>https://www.junian.dev/dev/csharp-hello-world/</guid>
      <description>&lt;p&gt;Hi, welcome to C# FAQs.
I create this section to collect and write frequently used C# methods.
I will also write the description, or the step by step tutorial with simple english so you can understand it easily.&lt;/p&gt;
&lt;p&gt;For the first post, I&amp;rsquo;ll show you how to write a C# program that prints &amp;ldquo;Hello, World!&amp;rdquo; on your screen.
This is the simplest program in any programming language.
It&amp;rsquo;s a good first step for anyone learning to code.
After you finish this, you&amp;rsquo;ll understand the basic syntax in C#.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Save C# Image Object into Oracle BLOB</title>
      <link>https://www.junian.dev/dev/csharp-image-to-oracle-blob/</link>
      <pubDate>Wed, 13 Nov 2019 06:00:13 +0700</pubDate>
      <author>author@junian.dev (Junian Triajianto)</author>
      <guid>https://www.junian.dev/dev/csharp-image-to-oracle-blob/</guid>
      <description>&lt;p&gt;Some of my friends requested me to make a tutorial about the Oracle database and C#.
This time, I’d like to share about how to Save Image or Picture from C# Object into Oracle BLOB Type.
It’s very easy if you know the trick.&lt;/p&gt;
&lt;p&gt;To make the tutorial simple, let&amp;rsquo;s assume a table with 1 field.
It&amp;rsquo;ll be used to store a collection of photos.&lt;/p&gt;

&lt;figure class=&#34;highlight&#34;&gt;
    &lt;button class=&#34;btn-clipboard chroma&#34; title=&#34;Copy to clipboard&#34;&gt;&lt;i class=&#34;fa icon-clipboard&#34;&gt;&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 24 24&#34; class=&#34;feather feather-copy&#34;&gt;&lt;rect x=&#34;9&#34; y=&#34;9&#34; width=&#34;13&#34; height=&#34;13&#34; rx=&#34;2&#34; ry=&#34;2&#34;/&gt;&lt;path d=&#34;M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1&#34;/&gt;&lt;/svg&gt;&lt;/i&gt;&lt;span class=&#34;msg-clipboard&#34;&gt;&lt;/span&gt;&lt;/button&gt;
    &lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sql&#34; data-lang=&#34;sql&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;CREATE&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;TABLE&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;PHOTO&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;PHOTO_BIN&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;BLOB&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
    
&lt;/figure&gt;&lt;p&gt;Next, open or create a new C# project.
Add &lt;code&gt;Oracle.ManagedDataAccess&lt;/code&gt; NuGet package to your project.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Complete C# String Hash Functions</title>
      <link>https://www.junian.dev/dev/csharp-string-hash/</link>
      <pubDate>Fri, 14 Sep 2018 06:34:40 +0700</pubDate>
      <author>author@junian.dev (Junian Triajianto)</author>
      <guid>https://www.junian.dev/dev/csharp-string-hash/</guid>
      <description>&lt;p&gt;For a while I&amp;rsquo;ve been seeing my blog traffic and surprisingly there are some of you are landed here by searching about &lt;a href=&#34;https://www.junian.dev/csharp-md5/&#34;&gt;MD5 string hash in C#&lt;/a&gt;, specifically used for storing password.
I wrote the first draft of that tutorial when I was still in college while learning C# as a student, so it&amp;rsquo;s really old tutorial.&lt;/p&gt;
&lt;p&gt;As we know, MD5 isn&amp;rsquo;t recommended anymore because it is designed to be very fast and efficient.
By using modern computers and techniques, it is possible to &amp;ldquo;brute force&amp;rdquo; the hash output, in order to retrieve the original input.
Because of this, many security experts suggest not to use it for password hashing.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Solving Sharepoint ClientContext Socket Exception in C#</title>
      <link>https://www.junian.dev/dev/sharepoint-clientcontext-socket-exception/</link>
      <pubDate>Fri, 07 Sep 2018 06:39:53 +0700</pubDate>
      <author>author@junian.dev (Junian Triajianto)</author>
      <guid>https://www.junian.dev/dev/sharepoint-clientcontext-socket-exception/</guid>
      <description>&lt;p&gt;So, you&amp;rsquo;ve been writing a Sharepoint client application and it&amp;rsquo;s running just fine.
After several weeks or months, you noticed some errors were showing up.
If you see a lot of &lt;code&gt;SocketException&lt;/code&gt; error messages like following snippet, then this article is for you.&lt;/p&gt;

&lt;figure class=&#34;highlight&#34;&gt;
    &lt;button class=&#34;btn-clipboard chroma&#34; title=&#34;Copy to clipboard&#34;&gt;&lt;i class=&#34;fa icon-clipboard&#34;&gt;&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 24 24&#34; class=&#34;feather feather-copy&#34;&gt;&lt;rect x=&#34;9&#34; y=&#34;9&#34; width=&#34;13&#34; height=&#34;13&#34; rx=&#34;2&#34; ry=&#34;2&#34;/&gt;&lt;path d=&#34;M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1&#34;/&gt;&lt;/svg&gt;&lt;/i&gt;&lt;span class=&#34;msg-clipboard&#34;&gt;&lt;/span&gt;&lt;/button&gt;
    &lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-csharp&#34; data-lang=&#34;csharp&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;System&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Net&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;WebException&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Unable&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;to&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;connect&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;to&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;the&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;remote&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;server&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;---&amp;gt;&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;System&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Net&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Sockets&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;SocketException&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Only&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;one&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;usage&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;of&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;each&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;socket&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;address&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;protocol&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;network&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;address&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;port&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;is&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;normally&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;permitted&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;127.0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;0.1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;443&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;     &lt;span class=&#34;n&#34;&gt;at&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;System&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Net&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Sockets&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Socket&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;DoConnect&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;EndPoint&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;endPointSnapshot&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;SocketAddress&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;socketAddress&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;     &lt;span class=&#34;n&#34;&gt;at&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;System&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Net&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;ServicePoint&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;ConnectSocketInternal&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Boolean&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;connectFailure&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Socket&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;s4&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Socket&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;s6&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Socket&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;amp;&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;socket&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;IPAddress&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;amp;&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;address&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;ConnectSocketState&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;state&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;IAsyncResult&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;asyncResult&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Exception&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;amp;&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;exception&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
    
&lt;/figure&gt;&lt;p&gt;In my previous article about &lt;a href=&#34;https://www.junian.dev/sharepoint-socket-exception/&#34;&gt;Sharepoint CSOM Socket Exception&lt;/a&gt;, I wrote about on how to solve this issue by editing some registry values.
I did it and worked beautifully, but only for several days.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Running Your First ASP.NET Core Web App with MySQL on Ubuntu 16.04</title>
      <link>https://www.junian.dev/dev/aspnet-core-mysql-ubuntu-16-04/</link>
      <pubDate>Tue, 24 Jan 2017 09:15:00 +0000</pubDate>
      <author>author@junian.dev (Junian Triajianto)</author>
      <guid>https://www.junian.dev/dev/aspnet-core-mysql-ubuntu-16-04/</guid>
      <description>&lt;p&gt;Since Microsoft open sourcing their .NET Platform, which is called .NET Core, they stole my attention again. I always love using .NET Framework. I develop desktop apps using it. I develop mobile apps using Xamarin. But I rarely use its web platform for one simple reason, it requires Windows-based Server to run.&lt;/p&gt;
&lt;p&gt;Now that Microsoft and community actively develop its framework for cross-platform environment, I stumble upon and see the latest stable build which is version 1.1. I read their blog and found out about news that ASP.NET Core 1.1 with Kestrel was ranked as the fastest mainstream fullstack web framework in the &lt;a href=&#34;https://aka.ms/techempower&#34;&gt;TechEmpower plaintext benchmark&lt;/a&gt;. That&amp;rsquo;s such a nice claim and gave me attention to try their product.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Camera Face Detection in C# using Emgu CV and WPF</title>
      <link>https://www.junian.dev/dev/csharp-emgucv-camera-face-detection/</link>
      <pubDate>Thu, 29 Dec 2016 09:49:00 +0000</pubDate>
      <author>author@junian.dev (Junian Triajianto)</author>
      <guid>https://www.junian.dev/dev/csharp-emgucv-camera-face-detection/</guid>
      <description>&lt;p&gt;Hi there, this is a new tutorial category in my blog. It&amp;rsquo;s Computer Vision. In this blog, I&amp;rsquo;d like to show you something cool. It&amp;rsquo;s how to perform Face Detection using your camera or Webcam. You&amp;rsquo;ll see how your application can detect faces from a captured image. Curious about it? Let&amp;rsquo;s take a look how to do that.&lt;/p&gt;
&lt;p&gt;This what you need to follow this tutorial:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Microsoft Visual Studio 2010. Or if you don&amp;rsquo;t have one, you can use 2008 version.&lt;/li&gt;
&lt;li&gt;Emgu CV (OpenCV in .NET). You can download the latest version in this link: &lt;a href=&#34;https://www.emgu.com/wiki/index.php/Main_Page&#34;&gt;www.emgu.com/wiki/index.php/Main_Page&lt;/a&gt; and follow the installation instruction.&lt;/li&gt;
&lt;li&gt;Basic Knowledge of C# Programming.&lt;/li&gt;
&lt;li&gt;Familiar in WPF Development.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;After you&amp;rsquo;ve got what you need, it&amp;rsquo;s time to rock!&lt;/p&gt;</description>
    </item>
    <item>
      <title>Load External Image into WPF using OpenFileDialog</title>
      <link>https://www.junian.dev/dev/wpf-load-external-image/</link>
      <pubDate>Tue, 13 Dec 2016 13:31:00 +0000</pubDate>
      <author>author@junian.dev (Junian Triajianto)</author>
      <guid>https://www.junian.dev/dev/wpf-load-external-image/</guid>
      <description>&lt;p&gt;This is my first time I made a tutorial about WPF. I don’t think it’s a new technique, but I just want to share what I learned at home. I assume that you understand WPF a little bit. In this tutorial I’d like to show you how to load external image into WPF using &lt;code&gt;OpenFileDialog&lt;/code&gt;.&lt;/p&gt;
&lt;h2 id=&#34;step-1&#34;&gt;Step 1&lt;/h2&gt;
&lt;p&gt;Create a new WPF Project, &lt;em&gt;File&lt;/em&gt; → &lt;em&gt;New&lt;/em&gt; → &lt;em&gt;Project&amp;hellip;&lt;/em&gt; and chose &lt;em&gt;WPF Application&lt;/em&gt; (by the way, I’m using Visual Studio 2008 in this tutorial). You’ll see an empty window called &lt;code&gt;Window1.xaml&lt;/code&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Password Encryption using MD5 Hash Algorithm in C#</title>
      <link>https://www.junian.dev/dev/csharp-md5/</link>
      <pubDate>Thu, 08 Dec 2016 09:57:00 +0000</pubDate>
      <author>author@junian.dev (Junian Triajianto)</author>
      <guid>https://www.junian.dev/dev/csharp-md5/</guid>
      <description>&lt;p&gt;&lt;strong&gt;Update (Sep 14, 2018)&lt;/strong&gt;:
&lt;em&gt;The new &lt;a href=&#34;https://www.junian.dev/csharp-string-hash/&#34;&gt;complete string hash algorithms in C#&lt;/a&gt; tutorial is available.&lt;/em&gt;
&lt;em&gt;I would suggest not to use MD5 anymore, because it&amp;rsquo;s not safe and easily collide.&lt;/em&gt;
&lt;em&gt;But I&amp;rsquo;ll leave the original tutorial here for educational purpose.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;It’s really bad if someone knew your password.
As a software developer, we have an ethic that we also don’t want to see other’s password.
Which mean, storing password in a plain text is a nope.&lt;/p&gt;</description>
    </item>
    
  </channel>
</rss>
