Windows Terminal (1)

เบื่อ cmd ใช้ Windows Terminal แทนกันดีกว่า… ให้ดูรูปก่อน สวยงามตระการตา!!! บางคนใช้แล้วอาจจะมีความสุข เริ่มได้ เหมาะสำหรับ Windows 10 version 1909 ขึ้นไป ติดตั้ง Git ติดตั้ง Windows Terminal จาก Microsoft Store หรือ จาก Github ถ้าหากติดตั้งจาก Github ต้องติดตั้ง Desktop Bridge VC++ v14 Redistributable Package ด้วย และโปรแกรมจะไม่อัพเดตตัวเองต้องโหลดมาปรับรุ่นเองทุกครั้ง ระวัง!!! ติดตั้งแล้วเปิดใช้งานจะได้หน้าตาประมาณนี้ เราจะเปลี่ยนหน้าตากันเริ่มจากพิมพ์คำสั่งต่อไปนี้ (ต้องเชื่อมต่ออินเตอร์เน็ต) Posh-Git เอาไว้แสดงข้อมูลของ Git ใน prompt Oh-My-Posh เป็น theme สวยๆ ของ powershell นั่นเอง ต่อด้วยคำสั่ง ตรวจสอบโฟลเดอร์สำหรับเก็บ Profile ของ PowerShell ด้วยคำสั่ง สร้างแฟ้ม $PROFILE (ไฟล์ขื่อ Microsoft.PowerShell_profile.ps1 ในโฟลเดอร์ C:\Users\haruo\OneDrive\Documents\WindowsPowerShell\) โดยมีข้อความต่อไปนี้ ปิดแล้วเปิดใหม่ก็จะได้ดังภาพ จะเห็นว่ามีเครื่องหมาย  อยู่ที่ prompt ด้วยจำเป็นต้องลงฟอนท์เพิ่มเติมนั่นคือฟอนท์ Powerline ซึ่งสามารถติดตั้งโดยโหลด Cascadia Code มาติดตั้ง เมื่อติดตั้งแล้วให้เปลี่ยนฟอนท์ของ Windows Terminal โดยคลิก แล้วเลือก Settings จะเป็นการเปิดการตั้งค่า default ที่เรียกใช้งานอยู่ ด้วย default text editor เลื่อน cursor ลงมาประมาณบรรทัดที่ 38 แล้วกด enter เพิ่มข้อความว่า save แล้วไปดูผลได้เลย สวยแล้ว! จบขอให้สนุก Oh-My-Posh ยังมี Theme อื่นๆ ลองเข้าไปเลือกดูได้ เปลี่ยน theme ได้โดยแก้แฟ้ม $PROFILE เปลี่ยนจาก Paradox เป็นอย่างอื่นเช่น Darkblood เป็นต้น save ปิดแล้วเปิด Windows Terminal ใหม่

Read More »

[บันทึกกันลืม] แก้ปัญหา server certificate verification failed บน gitlabs

ปัญหาคือ: จะ git push จาก Linux/Ubuntu มาเก็บใน gitlabs ขององค์กร git push -u origin master แต่ติดปัญหาว่า fatal: unable to access ‘https://gitlab.xxx.xxx.xxxx/userid/repo.git/’: server certificate verification failed. CAfile: /etc/ssl/certs/ca-certificates.crt CRLfile: none วิธีแก้ปัญหา (แบบรีบ ๆ) git config –global http.sslVerify false ก็จะใช้งานได้แล้ว *** เออ “ก็ง่าย ๆ” แต่ไม่มีบอกไว้ให้หาง่าย ๆ นิ ***

Read More »

วิธีสร้างตาราง HTML Table จาก CSV File

โจทย์คือ ต้องสร้างระบบ เพื่อให้ผู้ใช้ สร้าง โครงสร้างแบบฟอร์ม ด้วย Excel แล้วต้องแปลงให้เป็น Web Page ซึ่ง จะต้องการตกแต่งด้วย Bootstrap หน้าตาต้นแบบเป็นแบบนี้ (ในที่นี้ใช้ Google Sheets แต่ก็ทำวิธีการเดียวกันกับ MS Excel) ถ้า ใช้วิธี Save As เป็น HTML ตรง ๆ จะได้หน้าตาประมาณนี้ ซึ่งจะยุ่งยากมาก ในการจัดการ และการควบคุมการแสดงผล วิธีการคือ !!! 1 Save As เป็น CSV 2 เปิดเว็บhttp://www.convertcsv.com/csv-to-html.htm 3 แล้ว Upload ไฟล์ หรือจะ Copy Paste ก็ได้ 4 ก็จะได้ plain HTML 5 เอาไปประกอบกับ Bootstrap ได้สบาย (ในภาพ ใช้ django template tag ด้วย เลยได้ widget ตามที่กำหนด) หวังว่าจะเป็นประโยชน์ครับ

Read More »

อยากดึงข้อมูลมาแสดงใน TreeView จะทำอย่างไรดี?

          ในบทความนี้ ผู้เขียนก็ยังคงอยู่ในเรื่องของ TreeView เช่นเคย เพื่อต่อยอดจากบทความก่อนในหัวข้อเรื่อง “มาทำความรู้จักกับพื้นฐานการใช้งาน “TreeView” สำหรับมือใหม่กันดีกว่า” ที่เป็นบทความเกี่ยวกับเรื่องการแนะนำวิธีจัดการกับ TreeView ด้วยการกำหนดคุณสมบัติต่างๆ แต่งสีเติมกลิ่น ให้ TreeView ของเราน่าสนใจยิ่งขึ้น แต่ข้อมูลที่นำมาใช้ในการแสดงผลยังคงเป็นในลักษณะกำหนดเองเป็นค่าตายตัวจากหน้าจอและยังไม่เน้นเรื่องดึงข้อมูลจากฐานข้อมูล ในบทความนี้จึงถือเป็นภาคต่อจากบทความที่แล้วและขอเน้นในส่วนของการดึงข้อมูลมาแสดงผลบน TreeView ในเชิงโปรแกรมกันบ้าง เพื่อให้ผู้อ่านได้ความรู้ทั้งในส่วนการกำหนดคุณสมบัติและการดึงข้อมูลมาแสดงไปประยุกต์ใช้ในงานพัฒนาร่วมกันได้ ขั้นตอนในการดึงข้อมูลจากฐานข้อมูลมาแสดงใน TreeView สร้าง TreeView ที่ต้องการใช้ในการแสดงผลข้อมูลตัวอย่าง code ในฝั่ง Client <body> <form id=”form1″ runat=”server”> <asp:TreeView ID=”TvOrganization” runat=”server” > </asp:TreeView> </form> </body> ติดต่อฐานข้อมูลเพื่อใช้ในการแสดงผล ซึ่งในตัวอย่างนี้จะขอสมมุติข้อมูลจาก datatable ที่สร้างขึ้นแทนตัวอย่าง code ในฝั่ง Server (C#) ฟังก์ชั่นตอน Page_Load protected void Page_Load(object sender, EventArgs e) { if (!this.IsPostBack) { ///////ดึงข้อมูลวิทยาเขต โดยในการใช้งานจริงจะเป็นการติดต่อกับฐานข้อมูลเพื่อดึงค่าวิทยาเขตมาแสดง DataTable dt = this.GetCampusData(); ///////เรียกใช้งานฟังก์ชั่น PopulateTreeView() เพื่อนำค่าข้อมูลวิทยาเขตมาแสดงผลใน TreeView โดยในกรณีนี้จะเริ่มสร้างจาก root node โดยส่งค่าพารามิเตอร์ของ parentId เป็น 0 this.PopulateTreeView(dt, 0, null); } } ฟังก์ชั่นดึงข้อมูลวิทยาเขตและคณะ/หน่วยงาน private DataTable GetCampusData() { ///////เตรียมข้อมูลวิทยาเขต เนื่องจากในกรณีนี้เป็นการสมมุติโครงสร้างและข้อมูลวิทยาเขตโดยสร้างเป็น DataTable เสมือนเป็นตารางวิทยาเขตในฐานข้อมูล DataTable dtCampus = new DataTable(); dtCampus.Columns.AddRange(new DataColumn[2] { new DataColumn(“CampID”, typeof(int)), new DataColumn(“CampNameThai”,typeof(string)) }); dtCampus.Rows.Add(“01”, “วิทยาเขตหาดใหญ่”); dtCampus.Rows.Add(“02”, “วิทยาเขตปัตตานี”); dtCampus.Rows.Add(“03”, “วิทยาเขตภูเก็ต”); dtCampus.Rows.Add(“04”, “วิทยาเขตสุราษฎร์ธานี”);dtCampus.Rows.Add(“05”, “วิทยาเขตตรัง”); return dtCampus; } private DataTable GetFacultyData() { ///////เตรียมข้อมูลคณะ/หน่วยงาน ในกรณีนี้เป็นการสมมุติโครงสร้างข้อมูลคณะ/หน่วยงานและสร้างเป็น DataTable โดยมีการระบุรหัสของวิทยาเขตไว้ด้วย ซึ่งในการทำงานจริงจะเป็นการดึงข้อมูลจากตารางที่เก็บข้อมูลคณะ/หน่วยงานแทน DataTable dtFaculty = new DataTable(); dtFaculty.Columns.AddRange(new DataColumn[3] { new DataColumn(“FacID”, typeof(int)), new DataColumn(“FacNameThai”,typeof(string)) , new DataColumn(“CampID”,typeof(string)) }); dtFaculty.Rows.Add(“01”, “สำนักงานอธิการบดี”,”01″); dtFaculty.Rows.Add(“02”, “ศูนย์คอมพิวเตอร์”, “01”); dtFaculty.Rows.Add(“03”, “วิศวกรรมศาสตร์”, “01”); dtFaculty.Rows.Add(“54”, “คณะรัฐศาสตร์”, “02”); dtFaculty.Rows.Add(“07”, “ศึกษาศาสตร์”, “02”); dtFaculty.Rows.Add(“36”, “วิทยาการสื่อสาร”, “02”); dtFaculty.Rows.Add(“81”, “ศูนย์การเรียนรู้”, “03”); dtFaculty.Rows.Add(“56”, “คณะศิลปศาสตร์และวิทยาศาสตร์”, “04”); dtFaculty.Rows.Add(“44”, “คณะเทคโนโลยีและการจัดการ”, “04”); dtFaculty.Rows.Add(“46”, “คณะพาณิชยศาสตร์และการจัดการ”, “05”); dtFaculty.Rows.Add(“66”, “คณะสถาปัตยกรรมศาสตร์”, “05”); return dtFaculty; } ฟังก์ชั่นที่ใช้ในการวนแสดงข้อมูลที่ได้จากวิทยาเขตและคณะ/หน่วยงานมาแสดงใน TreeView private void PopulateTreeView(DataTable dtParent, int parentId, TreeNode treeNode) { ///////ดึงค่าข้อมูลคณะ/หน่วยงาน DataTable dtChild = this.GetFacultyData(); DataRow[] drChild; ///////วนค่าข้อมูลวิทยาเขตจาก dtParent ที่เป็นพารามิเตอร์ที่ส่งมา foreach (DataRow

Read More »

มาทำความรู้จักกับพื้นฐานการใช้งาน “TreeView” สำหรับมือใหม่กันดีกว่า

          เชื่อว่านักพัฒนาโปรแกรม Web application ด้วย .Net หลายๆท่านอาจจะเคยได้ยินชื่อของเจ้า “TreeView” กันมาบ้างแล้ว หรือบางท่านก็อาจจะเกือบลืมเจ้าเครื่องมือตัวนี้ไปแล้วก็ตามเพราะมันอาจจะไม่ใช่เครื่องมือที่ถูกหยิบมาใช้บ่อยนัก ในบทความนี้ผู้เขียนจึงขอหยิบยกเจ้า “TreeView” มาปัดฝุ่น แนะนำลูกเล่นการใช้งาน การกำหนดคุณสมบัติต่างๆ และวิธีการใช้งานกันอย่างคร่าวๆก่อน เพื่อเป็นการปูพื้นฐานให้กับมือใหม่หัดใช้ TreeView และรื้อความทรงจำให้กับผู้ที่เคยใช้ TreeView มาก่อนหน้านี้ เผื่อความสามารถที่ซ่อนอยู่จะไปเตะตาตรงใจท่านใดที่กำลังมองหาการทำงานแบบนี้อยู่พอดี จนอยากนำเครื่องมือตัวนี้ไปประยุกต์ใช้เป็นอีกหนึ่งทางเลือกในการแสดงผลข้อมูลในงานพัฒนาของท่านกันอีกครั้งได้ค่ะ           แต่ก่อนจะพูดถึงลูกเล่นการทำงานของ TreeView คงต้องเกริ่นนำกันก่อนว่าเจ้าเครื่องมือตัวนี้ถูกจัดอยู่ในจำพวก Navigation Control ซึ่งบางคนอาจเกิดคำถามว่า ข้อมูลแบบใดบ้างจึงจะเหมาะนำมาใช้งานแสดงผลกับเจ้า TreeView นี้ ซึ่งโดยความเห็นส่วนตัวแล้วนั้น ผู้เขียนคิดว่าข้อมูลที่เหมาะจะมาแสดงผลด้วย TreeView ควรจะเป็นข้อมูลที่มีลักษณะเป็นแบบ Hierarchy หรือเป็นลักษณะโครงสร้าง มีลักษณะข้อมูลเป็นลำดับชั้นย่อยๆ เช่น โครงสร้างหน่วยงาน โครงสร้างองค์กร หรือข้อมูลที่เป็นประเภทหลักและประเภทย่อย เป็นต้น และเพื่อไม่ให้เป็นการเสียเวลา เรามาเรียนรู้วิธีจัดการกับ TreeView ของเรากันเลยดีกว่าค่ะ ขั้นตอนสร้าง TreeView อย่างง่ายจาก Tool box ของ Visual studio .Net สามารถทำได้ดังนี้ สร้าง TreeView โดยเลือกจากแท็บเครื่องมือ ในกลุ่ม Navigation มาวางในหน้าจอ design ของเรา ดังรูป การเพิ่มและจัดการ node ให้กับ TreeView ได้โดยการคลิกเลือก “Edit Nodes…” ดังภาพ การจัดการเพิ่ม-ลดข้อมูล node ในระดับต่างๆ จะแสดงภาพดังหน้าจอต่อไปนี้ เพื่อใช้ในการจัดการเพิ่ม-ลดข้อมูล node ในระดับต่างๆ ดังนี้ โดยขั้นตอนการเพิ่ม – ลด node อย่างคร่าวๆ มีดังนี้ การเพิ่ม node ที่เป็น root (ลำดับแรกสุด) โดยการกดปุ่ม การเพิ่ม node ระดับย่อย(child node) โดยการกดปุ่ม การลบ node ที่ไม่ต้องการ สามารถทำได้โดยการกดปุ่ม ปรับเปลี่ยนระดับความลึกของ node โดยคลิกเลือก node ที่ต้องการจัดการและกดปุ่ม เพื่อเลื่อนระดับความลึกมากน้อยได้ตามต้องการ ซึ่งจะเห็นได้ว่ามีการทำงานคล้ายกับการเยื้องย่อหน้าใน MS Word ที่เราคุ้นเคยกันดี การเลื่อนลำดับบน-ล่างให้กับ node สามารถทำได้โดยกดปุ่ม ตัวอย่าง หน้าจอการจัดการ node ใน TreeView               จากภาพตัวอย่าง มีการเพิ่มและจัดการ node ข้อมูลโครงสร้างองค์กรตั้งแต่ระดับมหาวิทยาลัย วิทยาเขต และคณะ โดยการกำหนดค่าตายตัวจากหน้าจอ design ด้วยการระบุเอง ไม่ได้ดึงจากฐานข้อมูล ซึ่งท่านสามารถทดลองเพิ่มและจัดการได้ด้วยตัวเองเพื่อให้เข้าใจการทำงานมากขึ้น โดยลองทำตามขั้นตอนการจัดการ node ข้างต้น               นอกจากการเพิ่ม-ลด node แล้ว ท่านยังสามารถกำหนดคุณสมบัติให้กับ node ได้ด้วย โดยคลิกข้อมูล node ที่ต้องการจัดการจากฝั่งซ้ายมือ และกำหนดคุณสมบัติของ node ดังกล่าวในฝั่งขวามือ ซึ่งรายละเอียดการกำหนดคุณสมบัติต่างๆ ในแต่ละ node จะขอพูดในหัวข้อถัดไป (ข้อ 4.)ค่ะ กำหนดคุณสมบัติให้กับแต่ละ node เราสามารถกำหนดคุณสมบัติ (Properties) เฉพาะให้กับแต่ละ node ได้ โดยจะขอพูดถึงคร่าวๆ ที่คิดว่าน่าจะใช้อยู่บ่อยๆและน่าสนใจ ดังนี้ ShowCheckBox : เป็นการระบุว่าจะให้ node ดังกล่าวแสดงช่องให้เลือกหรือไม่ Checked : เป็นการระบุว่า ต้องการให้มีการทำเครื่องหมายถูกไว้ในกล่อง check box หรือไม่ ซึ่งต้องมีการกำหนดควบคู่กับ ShowCheckBox = “true” นั่นเอง Text : ระบุว่าต้องการให้ node ดังกล่าวแสดงข้อความอะไร Value : ระบุค่าที่จะกำหนดให้กับ node ดังกล่าว

Read More »