<?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: Vatthanachai Wongprasert</title>
    <description>The latest articles on DEV Community by Vatthanachai Wongprasert (@vatthanachaiw).</description>
    <link>https://dev.to/vatthanachaiw</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%2F259941%2F7127bdb7-adca-4808-908d-29e28d7bbac1.jpeg</url>
      <title>DEV Community: Vatthanachai Wongprasert</title>
      <link>https://dev.to/vatthanachaiw</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/vatthanachaiw"/>
    <language>en</language>
    <item>
      <title>Hello Terraform, Part 1: เตรียมเครื่องมือกันก่อน</title>
      <dc:creator>Vatthanachai Wongprasert</dc:creator>
      <pubDate>Mon, 20 Apr 2020 07:25:03 +0000</pubDate>
      <link>https://dev.to/vatthanachaiw/hello-terraform-1ff8</link>
      <guid>https://dev.to/vatthanachaiw/hello-terraform-1ff8</guid>
      <description>&lt;p&gt;พึ่งได้มีโอกาสแตะ Terrafrom ก็เลยอยากจะมาเขียนบันทึกเอาไว้อ่านทีหลังครับ แต่.. ก็คิดว่าอาจจะพอมีประโยชน์สำหรับผู้ที่สนใจ แต่ก็ไม่รู้ว่าจะเริ่มศึกษายังไงดีเลยเอาเป็นว่ามาแชร์ดีกว่า มาเริ่มกันเลยดีกว่า&lt;/p&gt;

&lt;p&gt;ก่อนอื่นในบทความนี้จะใช้งาน Terraform ร่วมกับ Azure นะครับ ซึ่งถ้าจะใช้งานร่วมกับ cloud ตัวอื่นก็อาจจะต้องตรวจสอบข้อมูลของ Cloud ที่จะใช้งานก่อนนะครับ และในบทความนี้จะเป็นการเตรียมความพร้อมของเครื่องก่อนจะใช้งาน Terraform ครับ&lt;/p&gt;

&lt;p&gt;เริ่มแรกก็ต้องไปสมัครใช้งาน Azure ก่อน โดยสามารถใช้งานแบบ Free Account หรือจะแบบเสียเงินก็ได้ครับ และสำหรับ Free Account ก็จะได้ $200 จะสามารถใช้งานได้ 30 วัน ส่วน service อื่นๆ สามารถใช้งานได้ 1 ปีครับ สำหรับวิธีการสมัครสามารถหาได้ใน Google ครับ&lt;/p&gt;

&lt;p&gt;ขั้นตอนต่อไปก็จะติดตั้ง Terraform โดยใช้ Chocolatey เป็นตัวช่วยครับ โดยเราจะใช้ powershell ในการติดตั้ง โดยจะต้องเปิด powershell ด้วย Administrator และใช้คำสั่ง&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;c:\&amp;gt; Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;สำหรับคำสั่งนี้สามารถดูได้จากหน้าเว็บนี้ ในกรณีที่อาจจะมีเปลี่ยนแปลงครับ&lt;br&gt;
&lt;a href="https://chocolatey.org/install"&gt;https://chocolatey.org/install&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--k8Exjs68--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/r2ejf62k81p4x0nyotvg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--k8Exjs68--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/r2ejf62k81p4x0nyotvg.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;จากนั้นใช้คำสั่งนี้ เพื่ออัพเดท env ของ powershell หรือปิด powershell แล้วเปิดใหม่ด้วย Administrator ก็ได้&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;c:\&amp;gt; refreshenv
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;หลังจากนั้นก็จะเป็นการติดตั้ง Terraform โดยใช้คำสั่ง&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;c:\&amp;gt; choco install terraform -y
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;หากเครื่องใครติดตั้งแล้วก็อาจจะมีข้อความเหมือนเครื่องผมครับ&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Ju_ipnmv--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/v0xbntfxrd7yg4onv8oy.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Ju_ipnmv--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/v0xbntfxrd7yg4onv8oy.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;ลองใช้คำสั่งนี้เพื่อตรวจสอบ version ของ Terraform&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;c:\&amp;gt; terraform --version
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--9h46h7pW--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/hgk131tciz2p41vssq81.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--9h46h7pW--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/hgk131tciz2p41vssq81.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;ลำดับต่อไปก็ IDE ซึ่งเราจะใช้ VS Code ในการเขียนคำสั่ง (สำหรับการติดตั้งขอข้ามนะครับ) และเราจะทำการติดตั้ง extension ชื่อ Terraform ตามลิงค์นี้ &lt;a href="https://marketplace.visualstudio.com/items?itemName=mauve.terraform"&gt;https://marketplace.visualstudio.com/items?itemName=mauve.terraform&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;เท่านี้ก็พร้อมที่จะใช้งาน Terraform เพื่อสร้างระบบบน Azure แล้วครับ&lt;/p&gt;

</description>
      <category>terraform</category>
      <category>iac</category>
    </item>
    <item>
      <title>Raspbian + Dotnet Core</title>
      <dc:creator>Vatthanachai Wongprasert</dc:creator>
      <pubDate>Thu, 09 Apr 2020 14:38:37 +0000</pubDate>
      <link>https://dev.to/vatthanachaiw/raspbian-dotnet-core-50gb</link>
      <guid>https://dev.to/vatthanachaiw/raspbian-dotnet-core-50gb</guid>
      <description>&lt;p&gt;คำเตือน!! บทความนี้มีแต่ Text ไม่เหมาะกับผู้ที่ไม่ชอบอ่านหนังสือนะครับ :P&lt;/p&gt;

&lt;p&gt;จริงๆ เคยคิดว่าอยากจะลองศึกษาเกี่ยวกับการใช้งาน dotnet core บน arm cpu ดู แต่ก็ไม่เคยได้ลองสักที มีแต่ได้เขียนบน Windows ซะเป็นส่วนใหญ่ เอาเป็นว่าวันนี้อยากจะลองติดตั้ง DotNet Core บน Raspbian หรือ OS ของ Raspberry Pi นั่นเอง&lt;br&gt;
เริ่มเลยดีกว่า.... และขอข้ามขั้นตอนติดตั้ง Raspbian ไปเลยก็แล้วกัน&lt;/p&gt;

&lt;p&gt;ขั้นตอนแรกสุด เราก็ต้องไปเอาไฟล์ของ Dot Net Core(ขอใช้ตัวย่อ .netCore แทน) จากเว็บกันก่อน โดยในที่นี้จะใช้ Version 3.1.201 สำหรับ SDK และ 3.1.3 สำหรับ runtime และจะใช้แบบ Arm32 ทั้งหมด (จริงๆ จะใช้แบบ Arm64 ก็ได้ แต่ว่าตั้งใจว่าจะเขียนใช้งานกับพวก Hardware ด้วย ซึ่ง libraries ที่มีตอนนี้ยังไม่รองรับ 64bit แบบเต็มๆ เหมือนกับ 32ิbit)&lt;/p&gt;

&lt;p&gt;ให้เราโหลดไฟล์ลงมาที่ pi (ขอใช้แทนการเรียก Raspbian/Raspberry Pi) โดยใช้คำสั่งนี้&lt;/p&gt;

&lt;p&gt;SDK&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;wget https://download.visualstudio.microsoft.com/download/pr/ccbcbf70-9911-40b1-a8cf-e018a13e720e/03c0621c6510f9c6f4cca6951f2cc1a4/dotnet-sdk-3.1.201-linux-arm.tar.gz
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Runtime&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;wget https://download.visualstudio.microsoft.com/download/pr/c11e9248-404f-4e5b-bd99-175079419d6f/83902a43e06f9fb4e45a4c6a6d5afc0b/dotnet-runtime-3.1.3-linux-arm.tar.gz
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Asp.net Core Runtime&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;wget https://download.visualstudio.microsoft.com/download/pr/b68cde83-05c7-4421-ad9a-3e6f2cc53824/876dbfc9b4521d3ca89a226c6438ffc1/aspnetcore-runtime-3.1.3-linux-arm.tar.gz
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fc81ecs8230mg03hby3fl.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fc81ecs8230mg03hby3fl.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fzyerwi28vftvhqwbb6tf.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fzyerwi28vftvhqwbb6tf.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;สำหรับ .netCore เวอร์ชันใหม่ๆ สามารถเช็คได้จากลิงค์นี้ &lt;a href="https://dotnet.microsoft.com/download" rel="noopener noreferrer"&gt;https://dotnet.microsoft.com/download&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;หลังจากที่เราโหลดไฟล์มาครบแล้ว ขั้นตอนต่อไปก็จะเป็นการติดตั้ง .netCore กันสักที โดยที่เราจะเริ่มจากสร้างโฟลเดอร์ dotnet-arm32 ที่ ~/ (หรือ $Home) -&amp;gt; ติดตั้ง SDK -&amp;gt; ติดตั้ง Runtime -&amp;gt; ติดตั้ง Asp.net Core Runtime&lt;br&gt;
ซึ่งคำสั่งก็จะมีดังนี้&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;mkdir dotnet-arm32
tar zxf dotnet-sdk-3.1.201-linux-arm.tar.gz -C $HOME/dotnet-arm32
tar zxf dotnet-runtime-3.1.3-linux-arm.tar.gz -C $HOME/dotnet-arm32
tar zxf aspnetcore-runtime-3.1.3-linux-arm.tar.gz -C $HOME/dotnet-arm32

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;ขั้นตอนต่อไป เราก็จะทำการ setup path ให้กับ .netCore เพื่อให้สามารถเรียกใช้งานได้ โดยที่เราจะเพิ่มคำสั่งข้างล่างเข้าไปในไฟล์ .profile เพื่อให้สามารถเรียกใช้งานได้เลย โดยที่เราไม่ต้อง setup ทุกครั้งที่ต้องการใช้งาน&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# set .NET Core SDK and Runtime path
export DOTNET_ROOT=$HOME/dotnet-arm32
export PATH=$PATH:$HOME/dotnet-arm32
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;เปิดไฟล์ .profile ขึ้นมาด้วยสิทธิ์ของ root ด้วยคำสั่ง&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo nano .profile
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;แล้วจากนั้นก็เพิ่มคำสั่งเข้าไปที่ด้านล่างสุดของไฟล์ ดังภาพ&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F74p3dyvyquiju9gaoonb.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F74p3dyvyquiju9gaoonb.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;จากนั้นให้สั่ง Reboot เครื่องใหม่เพื่อให้ pi อ่านค่า path ที่เพิ่มเข้าไปใหม่&lt;/p&gt;

&lt;p&gt;หลังจากนั้นเมื่อ Reboot เสร็จแล้ว ให้ลองใช้คำสั่งนี้เพื่อแสดงรายละเอียดของ .netCore&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;dotnet --info
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;ซึ่งก็จะได้รายละเอียดดังภาพ&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fmgg2il3vbn8zjxku36by.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fmgg2il3vbn8zjxku36by.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;เพี่ยงเท่านี้ก็จะสามารถใช้งาน .netCore บน pi ได้แล้ว แต่....&lt;br&gt;
ถ้าจะให้ใช้ terminal ide อย่าง nano หรือ vim ก็คงจะลำบากสำหรับบางคน งั้นเรามาใช้ VSCode บน Windows เขียนโปรแกรมกันดีกว่า&lt;/p&gt;

&lt;p&gt;เปิด VSCode ขึ้นมาแล้วติดตั้ง extension ที่ชื่อ Remote Development &lt;br&gt;
โดยใช้คีย์ลัด CTRL + Shift + X เพื่อเปิดหน้าต่างของ Extension ขึ้นมา แล้วในช่องค้นหาก็ใส่ชื่อ Remote Development และเลือก Install &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F12xjl64bky7bzah911w1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F12xjl64bky7bzah911w1.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;หลังจากติดตั้งเสร็จแล้ว ให้กดปุ่ม F1 หรือ CTRL + Shift + P เพื่อเปิด short command ขึ้นมา จากนั้นให้พิมพ์ Remote-ssh: Connect to Host และเลือก + Add new SSH Host เพื่อเป็นการกำหนดข้อมูลของ Pi  ที่เราต้องการจะใช้งาน โดยเราสามารถใส่เป็น pi@ ก็ได้ แล้วกด Enter&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fk45pebks60mdku406gwa.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fk45pebks60mdku406gwa.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;จากนั้นจะให้เลือกตำแหน่งที่จะบันทึกการตั้งค่าของ SSH ซึ่งในที่นี้จะเลือกเป็น user directory ดังภาพ&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fe7oqlf3btd8qladci3tz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fe7oqlf3btd8qladci3tz.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;เมื่อบันทึกเสร็จแล้ว ให้ปิด VSCode แล้วเปิดขึ้นมาให้ VSCode จะทำการเชื่อมต่อไปยัง Pi และจากนั้นจะถามเกี่ยวกับระบบปลายทางว่าเป็น OS แบบไหน ให้เลือก Linux และกด Enter&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F2z68it6mnhz62ozs5oac.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F2z68it6mnhz62ozs5oac.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;หากไม่ขึ้น popup ให้กด F1 และเลือก Remote-ssh: Connect to Host อีกครั้ง จะขึ้นโปรไฟล์ SSH ขึ้นมาให้เลือกไปยังโปรไฟล์ที่เพิ่มเข้าไป&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fckcnmspkt9pf87g618jt.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fckcnmspkt9pf87g618jt.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;หลังจากนั้นก็จะถามรหัสผ่านสำหรับ login อีกครั้ง ก็จะเป็นอันเสร็จ&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fd5l16um0hh1zsd8yitgs.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fd5l16um0hh1zsd8yitgs.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;สำหรับวิธีใช้งาน ขั้นแรกเราก็ต้องไปสร้างโปรเจคบน pi ขึ้นมาก่อน โดยในที่นี้จะสร้างเป็นโปรเจคไว้ในโฟลเดอร์ Documents\dotnet-projects และสร้างโปรเจคแบบ Console ด้วยคำสั่ง&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;dotnet new console --name HelloWorld
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fx0u046v9ss04gignfzn4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fx0u046v9ss04gignfzn4.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;หลังจากนั้นกลับมาที่ VSCode ก็จะเจอโปรแจค ดังภาพ&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Frlmo6eat4cgott135p7p.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Frlmo6eat4cgott135p7p.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;จากนั้นทดลองรันโปรเจคโดยใช้ Terminal โดยใช้คีย์ลัด CTRL + Shift + ~ ก็จะมีหน้าต่าง Terminal แสดงขึ้นมา ให้เราย้ายไปใช้โฟลเดอร์ที่เก็บโปรเจคก่อน ซึ่งก็จะเหมือนกับในภาพ&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fyp01bgljfqr5ls7i3ly6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fyp01bgljfqr5ls7i3ly6.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;จากนั้นเราจะใช้คำสั่งเพื่อรันโปรเจค ดังนี้&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;dotnet run
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;ซึ่งก็จะได้ผลลัพท์แบบนี้&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fxz6lpl932z0l26v4nbte.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fxz6lpl932z0l26v4nbte.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>raspbian</category>
      <category>raspberrypi</category>
      <category>dotentcore</category>
    </item>
    <item>
      <title>C# Functional แบบงงๆ</title>
      <dc:creator>Vatthanachai Wongprasert</dc:creator>
      <pubDate>Tue, 25 Feb 2020 15:46:56 +0000</pubDate>
      <link>https://dev.to/vatthanachaiw/c-functional-9lo</link>
      <guid>https://dev.to/vatthanachaiw/c-functional-9lo</guid>
      <description>&lt;p&gt;สำหรับใครที่เป็นแฟนพันธุ์แท้ C# จะรู้ว่าความสามารถใหม่ (เมื่อนานมาแล้ว) จะสามารถเขียน Functional เหมือนกับภาษา F# หรือ Scala ได้ ซึ่งมันเป็นอะไรที่ว้าวมาก... (โดยเฉพาะผมที่พึ่งได้มีเวลาพักหายใจ)&lt;br&gt;
เข้าเรื่องกันเลยดีกว่า&lt;/p&gt;

&lt;p&gt;I know the Greek C# already know the new feature of her. Her have the functional feature like F# or Scala. But for me, this feature is Wowww.&lt;/p&gt;

&lt;p&gt;Ok, let's start.&lt;/p&gt;

&lt;p&gt;เริ่มแรกผมจะสร้าง Console App ขึ้นมาโดยจะเลือก Target Framework ไปที่ 4.8 ส่วนชื่อโปรเจคก็ตามใจชอบ หลังจากสร้างโปรเจคใหม่แล้ว ตัว Visual Studio ก็จะเปิดไฟล์ Program.cs ขึ้นมา ซึ่งรูปแบบคำสั่งเองก็จะมีลักษณะ ดังนี้&lt;/p&gt;

&lt;p&gt;First I will create the console application and select the project target to .Net Framework 4.8, but for the project name; I think you can enter from your need. After create, We will get the code like this.&lt;/p&gt;


&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;


&lt;p&gt;จากนั้นเราก็มา Re-Factor Code กันใหม่นิดหนึ่ง (ซึ่งเอาจริงๆ ไม่ต้องทำก็ได้ ข้ามไปเลยก็ได้ ฮ่าๆ)&lt;/p&gt;

&lt;p&gt;Now, I have re-factor the code by removing unused code. and this is the result of re-factor. or you can skip this step.&lt;/p&gt;


&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;


&lt;p&gt;หลังจากไร้สาระกันไปแล้ว ต่อไปเราก็จะเริ่มเขียนฟังกชั่นง่ายๆ ตัวนึงขึ้นมา โดยที่โค๊ดจะมีดังนี้&lt;/p&gt;

&lt;p&gt;Next, I have writing some functional like this.&lt;/p&gt;


&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;


&lt;p&gt;และเมื่อเราทดลองรันโปรแกรมของเราดู ก็จะได้ผลลัพท์ เท่ากับ 3 ...&lt;br&gt;
ว่าแต่.. Dev.to ทำใมใส่รูปได้แค่รูปเดียวเองแหะ... เอาเป็นว่าลองไปรันคำสั่งใน dotnetfiddle เอานะครับ&lt;/p&gt;

&lt;p&gt;And when I executed. the result is 3.&lt;br&gt;
I don't know why 'Dev.to' can insert only 1 image. Don't worry, please use the below link to test on the Dotnet Fiddle.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://dotnetfiddle.net/Widget/NHqzJa"&gt;https://dotnetfiddle.net/Widget/NHqzJa&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;จากโค๊ด ... เราได้กำหนดให้ฟังก์ชัน f รับค่า x เข้ามาและนำ x ไปบวกด้วย 2 ซึ่งถ้าเราป้อนค่าให้กับ x โดนกำหนดให้เป็น 1 ผลลัพธ์ที่ได้ก็จะมีค่าเท่ากับ 3 นั่นเอง&lt;/p&gt;

&lt;p&gt;From the Functional... I create the f function has the x parameter, and take him to add 2. and when I set x value is 1, the result is 3.&lt;/p&gt;

&lt;p&gt;ทีนี้เราจะมาลองเขียนโค๊ดชุดนี้กันแบบสั้นๆ โดยจะเขียนคำสั่งดังนี้&lt;/p&gt;

&lt;p&gt;Next, I will create a short functional like this.&lt;/p&gt;


&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;


&lt;p&gt;และหลังจากทดลองรันดูแล้ว ผลลัพธ์ที่ได้ก็จะเท่ากับ 3 เหมือนกับข้างบน&lt;/p&gt;

&lt;p&gt;After executed. The result is 3. Why the result like the previous function?&lt;/p&gt;

&lt;p&gt;&lt;a href="https://dotnetfiddle.net/Widget/B4yI3i"&gt;https://dotnetfiddle.net/Widget/B4yI3i&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;โอ้ววววว ไม่ต้องใส่ Func นำหน้า f ก็สามารถทำงานได้เหมือนกัน แจ่มปะละ ซึ่งก็จะรวมไปถึง i ที่เมื่อรับค่าจาก f แล้วก็ไม่จำเป็นต้องใส่ int เพราะค่าที่ได้ยังไงก็ได้กลับมาเป็น int แน่นอน&lt;/p&gt;

&lt;p&gt;Because of the c# can use the shortcode.The 'f' gets the 'x' parameter and add '2' to 'x';&lt;br&gt;
when I set 'i' to get the value from 'f', The 'i' will get the result from 'f'.&lt;/p&gt;

&lt;p&gt;นี่ละที่เป็นความสามารถใหม่ที่ทำให้ว้าวจริงๆ เอาเป็นว่าพอแค่นี้ก่อนดีกว่าง่วงนอนมากกก ไว้ว่างๆ มีเวลาหายใจเดี๋ยวค่อยมาลองเขียน function ใหม่ๆ กันดู&lt;/p&gt;

&lt;p&gt;I think this feature is very new for me haha.&lt;/p&gt;

&lt;p&gt;ส่งท้ายขยายความ... Func คืออะไร...&lt;/p&gt;

&lt;p&gt;Finally, What is the 'Function'?&lt;/p&gt;

&lt;p&gt;Func =&amp;gt; Function&lt;br&gt;
และค่าที่อยู่ใน &amp;lt;&amp;gt; จะมีความหมายคือ..  &lt;br&gt;
โดยที่ input type จะสามารถรับได้ที่ 16 ตัว และ Result 1 ตัว &lt;/p&gt;

&lt;p&gt;Func is from Function and the first type in '&amp;lt;&amp;gt;' is the input type and the final type is always is the result type.&lt;/p&gt;

&lt;p&gt;Func &amp;lt; T1, T2, T3, ... T16, Result &amp;gt; (พิมพ์ติดแล้วกลายเป็น markdown / I cannot type without space, because this code will change to the markdown.)&lt;/p&gt;

&lt;p&gt;ในตัวอย่าง Func f = (x) =&amp;gt; x + 2; นั้น หากเราเอามาเขียนเป็น Full Function ก็จะได้คำสั่งแบบนี้&lt;/p&gt;

&lt;p&gt;From this function 'Func f = (x) =&amp;gt; x + 2;'. If we want to create the full function. This is the code. Haha.&lt;/p&gt;


&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;


</description>
      <category>csharp</category>
      <category>functional</category>
    </item>
  </channel>
</rss>
