อยากดึงข้อมูลมาแสดงใน 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 »

วิธีส่ง email ออกไปในนามหน่วยงาน ด้วย PSU Webmail

เนื่องจาก ตอนนี้มีหลายหน่วยงาน มีความต้องการใช้ “email ส่วนกลาง” ที่เป็น Mailbox แยกจากบุคคล กันมามากจึงขอเรียนให้ทราบถึงปัญหาที่หน่วยงานของท่านจะเจอ ก่อนจะตัดสินใช้วิธีการดังกล่าว ไม่รู้ใครอ่าน ไม่รู้ว่าใครส่งออกไป ไม่รู้ว่าใครลบ email สำคัญนั้น ไม่รู้ว่าใครเปลี่ยนพาสเวิร์ด วิธีที่ทำกันมาตลอด คือ การสร้าง Groupmail นั้น แต่ละกลุ่ม มีสมาชิกผู้รับได้หลายคน ทำให้ช่วยกันดูแลได้ การส่งออก สามารถตั้งได้ว่า ส่งออกไปในนามหน่วยงาน และสามารถตรวจสอบได้ว่า ใครเป็นคนส่ง สามารถสร้าง Archive ได้ หมายความว่า ย้อนกลับมาดูได้ว่า เรื่องเหล่านี้ พูดคุยกันไปว่าอย่างไรบ้าง สมาชิกบางคน ลบ email ไป แต่ การสนทนา ยังอยู่ หมดปัญหา 1 account แต่รู้รหัสผ่านกันหลายคน สำหรับวิธีการตั้งค่า ให้ แต่ละคนในกลุ่ม ส่งออกไปในนามหน่วยงานได้ บน PSU Webmail คลิกที่ เมนู Options 2. คลิก Personal Information 3. คลิก Edit Advanced Identities 4. จากนั้น กรอกข้อมูล Full Name, E-Mail Address และ Signature มีข้อที่ *** ต้องห้าม *** อยู่อย่างนึงคือ Fullname ต้องไม่มีเครื่องหมายพิเศษใด ๆ โดยเฉพาะ เครื่องหมาย “.” จากนั้น กดปุ่ม Save/Update 5. เมื่อต้องการส่ง Email แบบ Compose สามารถเลือกได้ว่า ต้องการให้ออกไปนามหน่วยงาน เมื่อผู้รับได้รับ ก็จะเห็นแบบนี้ ครับ

Read More »

How to create LVM volume group and logical volume

LVM ย่อมาจาก Logical Volume Manager ความสามารถของ LVM คือสามารถสร้าง logical partition ขยายไปบนฮาร์ดดิสก์หลายๆ ลูกได้ ขั้นตอนต่อไปนี้เป็นขั้นตอนที่ทำบน CentOS หรือ Oracle Linux หรือ ค่าย Redhat Enterprise Linux ส่วนฝั่ง Debian ก็สามารถใช้คำสั่งเดียวกันทำงานเหมือนกัน แต่อาจจะต้องติดตั้งโปรแกรมเพิ่ม โดยขนาดสูงสุดที่ LVM ทำได้ขึ้นกับชนิดของ CPU และ Kernel ที่ใช้งาน สำหรับ Kernel 2.4 บน CPU 32-Bit มีขนาดได้ไม่เกิน 2TB สำหรับ Kernel 2.6 บน CPU 32-Bit มีขนาดได้ไม่เกิน 16TB สำหรับ Kernel 2.6 บน CPU 64-Bit มีขนาดได้ไม่เกิน 8EB ป้จจุบัน Kernel รุ่น ? CPU 64-Bit ยังไม่มีคำตอบ แต่เมื่อ format ให้มีระบบไฟล์แบบ ext4 จะสร้างพาทิชั่นได้ไม่เกิน 1EB เท่านั้น ขึ้นกับ file system ใช้งานด้วย เริ่มได้ เข้าระบบด้วยบัญชีผู้ใช้ที่มีสิทธิ์ของ root ซึ่งอาจจะเป็น root เอง หรือ user ที่อยู่ในกลุ่ม wheel หากเข้าด้วยบัญชีผู้ใช้อื่นๆ ที่ไม่ใช่ root ให้สั่งคำสั่ง หรือ จึงจะสามารถทำคำสั่งต่อไปได้ ตรวจสอบว่ามีฮาร์ดดิสก์ลูกไหนถูกใช้งานอยู่บ้างด้วยคำสั่ง ได้ผลลัพธ์ประมาณดังรูป จากภาพข้างต้น /dev/sda ถูกใช้งานอยู่แล้วคือ /dev/sda1 และ /dev/sda2 ให้ตรวจสอบว่ามีดิสก์ลูกอื่นอีกหรือไม่ด้วยคำสั่ง จะเห็นว่ามี /dev/sdb, /dev/sdc และ /dev/sdd ที่ว่างอยู่ จะใช้ /dev/sdb เริ่มจากสร้างพื้นที่สำหรับทำ LVM ก่อนด้วยคำสั่ง กด n ตามด้วย p ตามด้วย 1 แล้ว enter 2 ครั้ง กด t แล้วพิมพ์ 8e แล้วกด w ดังภาพ สร้าง LVM physical volume โดยใช้คำสั่ง pvcreate สร้าง LVM volume group ชื่อ vg_u01 สร้าง LVM logical volume group ชื่อ lv_u01 ใน volume group ที่ชื่อ vg_u01 โดยให้มีขนาดทั้งหมดที่มีอยู่ใน vg_u01 ดังภาพ ดูสถานะว่า LVM สร้างเสร็จแล้วด้วยคำสั่ง ดูสถานะว่ามี Physical Volume เท่าไหร่ ด้วยคำสั่ง ก่อนใช้งานอย่าลืม format โดย device ที่จะต้อง format จะกลายเป็น /dev/vg_u01/lv_u01 ให้มีชื่อว่า u01 สร้าง mount point ให้กับ lv_u01 mount lv_u01 เข้ากับ /u01 ตรวจสอบว่า /u01 ถูกเรียกใช้งานแล้ว ใส่ -h เพื่อให้ระบุขนาดเป็น GMK สั่งให้ mount อัตโนมัติทุกครั้งที่บูตเครื่องเพิ่มข้อความต่อไปนี้ในแฟ้ม /etc/fstab จบขอให้สนุก อาจจะยังไม่เห็นภาพว่าแล้วมันกระจายไปดิสก์หลายๆ ลูกได้อย่างไร อธิบายง่ายๆ /u01 สามารถอยู่ได้บนฮาร์ดดิสก์มากกว่าหนึ่งลูก โดยเห็นเป็นพื้นที่เดียวกันคือ

Read More »

ทุกคนใน PSU ใช้ Google Meet สำหรับประชุม / การเรียนการสอน ได้ใน 3 ขั้นตอน

Google Meet เปิดให้บัญชีของ PSU Email “ทุกคน” สามารถใช้งานได้ (เพราะเราใช้บริการ G Suite for Education) สร้างห้องประชุมได้ * รองรับได้สูงสุด 250 คน ต่อห้อง ** สตรีมมิงแบบสด บันทึก VDO ได้ โดยเก็บบน Google Drive *** * เราในฐานะผู้มีบัญชี G Suite สามารถ สร้าง ได้ และเชิญผู้เข้าร่วม โดย ผู้เข้าร่วมประชุม ไม่จำเป็นต้องมี Google Account ก็ได้ (ดูอย่างเดียว) ** ถ้าต้องการทำสำหรับงานประชุมที่มีคนดูอย่างเดียวจำนวนมาก เช่น เปิดสอนคลาสใหญ่ แนะนำ วิธีสร้าง Live Stream ด้วย Google Meet เพื่องานประชุมขนาดใหญ่ *** สามารถบันทึกได้จนถึง 1 ก.ค.2020 เริ่มกันเลย 0: Login ด้วย PSU Email (หากยังไม่เคยใช้บริการมาก่อน ขอให้ดำเนินตามขั้นตอนตามนี้ https://gafe.psu.ac.th/support/1/1) และแนะนำให้เริ่มต้นจากหน้า Gmail 1: คลิกที่ App หรือ 9 จุด จากนั้นคลิกที่ ไอออน Meet ดังภาพ (หรือจะเปิด website https://meet.google.com เลยก็ได้) 2: คลิกที่ Join or start a meeting แล้วตั้งชื่อเป็นภาษาอังกฤษ แล้วคลิก Continue แล้วคลิก Allow คลิก Join Now 3: เชิญคนเข้าร่วม ทำได้โดยการ ส่ง Link ไปให้ เช่น ส่งทาง LINE/Facebook/Email หรืออะไรก็แล้วแต่สะดวก หรือ จะ Add People ก็ได้ หากต้องการห้องเฉพาะกลุ่ม นอกนั้น … บันทึก VDO คลิกรูป 3 จุดด้านล่างขวา แล้ว เลือก Record meeting แล้วก็ Accept แสดง PowerPoint เริ่มจากเปิด PowerPoint ที่ต้องการ แล้วเข้าสู่โหมด Presentation แล้วคลิก Present now แล้ว เลือก A window แล้วเลือก window ที่ต้องการแสดง แล้วกดปุ่ม Share เลือกสลับหน้าจอได้ เลือกว่าให้จะนำภาพใครขึ้น Stage หรือ จะดูในส่วนของ Chat ก็ได้ หยุดการบันทึก คลิกที่ 3 จุด ด้านล่างขวา แล้ว กด Stop recording หยุด Meeting คลิกที่รูป โทรศัพท์สีแดงตรงกลาง ไฟล์บันทึก Meeting อยู่ใน Google Drive ที่ My Drive > Meet Recordings หมายเหตุ: จะได้ไฟล์ ซึ่งสามารถ Download ออกมาเป็น .mp4 ได้ (รอสักครู่หลังสิ้นสุดการ Meeting) และ จะสามารถ Play ได้ เมื่อ Google Drive เตรียมไฟล์เสร็จ เช่น เอาไปแสดงในเว็บไซต์ ตามวิธีการ เค้าเอาไฟล์ MP4 บน

Read More »

[สภากาแฟ] ว่าด้วยเรื่องสายงานคนไอที 2020

อยากทดลองเขียนบทความแนวแชร์ความคิดเห็นส่วนตัวแบบนั่งพูดคุยง่ายๆสบายๆ โดยไม่มีรูปแบบอะไรดูบ้าง ขอเริ่มจากเรื่องนี้ล่ะกันว่าด้วยเรื่องสายงานของคนไอทีที่เริ่มชัดเจนขึ้นเรื่อยๆ หรือชัดมานานแล้วผมพึงเข้าใจมัน  ด้วยความที่เทคโนโลยีมันเปลี่ยนแปลงอย่างรวดเร็วโดยเฉพาะสายโปรแกรมเมอร์ จนเกิดอาการซ๊อคตามไม่ทันไม่รู้จะจับอะไรก่อนดี มันดูสับสนวุ่นวายไปหมด จนกระทั่ง 2-3 ปี มานี้เริ่มจับทางถูกพอทำให้ไม่ตกขบวนบ้าง ได้รับอีเมล์จากไมโครซอฟท์ หัวข้อ “Join our Apps & Infrastructure sessions at the Open Source Virtual Summit” ลองเข้าไปอ่านรายเอียดดูว่ามีอะไรน่าสนใจบ้าง พบว่าหัวข้อการอบรมแบ่ง 3 track ใหญ่ๆ ได้แก่ Apps & Infrastructure Developer Data & AI เห็นได้ชัดว่าสายงานคนไอที 2020 ถ้าแบ่งแบบหยาบน่าจะเป็น 3 ลู่วิ่งนี้… ลู่วื่งที่ 1. Apps & Infrastructure เป็นของสาย System Admin หรือ SysAdmin เกี่ยวกับการสร้างโครงสร้างพื้นฐาน ออกแบบ วางระบบ แน่นอนว่าต้องเกี่ยวข้องกับ Cloud ทำยังไงให้มีโครงสร้างระบบพื้นฐานที่ดีสามารถี่รันแอพที่ตอบโจทย์ผู้ใช้งานได้ และต้องมีความรู้เรื่องเทคโนโลยีคอนเทนเนอร์ เช่น Docker Kubernetes ฯลฯ …สังเกตว่าสายไอที Network เพียวๆ ที่เป็นฮาร์แวร์จะถูกแยกลู่ออกไปเลย คงเป็นผู้เชี่ยวชาญด้านๆ นั้น ได้แก้ Data Center คอนฟิก Switch ซึ่งไม่มาแตะซอฟแวร์มากนัก   ลู่วื่งที่ 2 Developer อันนี้สายโปรแกรมเมอร์ล้วนๆ รักไม่มุ่งแต่มุ่งโฟกัสที่พัฒนาแอพอย่างเดียว โค้ดคือชีวิตอย่าไปให้เค้าแตะเรื่อง Infrastructure มากนัก เทรนก็เลยมาแนว Serverless แบบไม่ต้องห่วงหน้าพะวงหลัง เน้นการพัฒนาแอพให้ดี เรื่องวุ่นวายปล่อยให้ Cloud จัดการให้ ลู่วิ่งที่ 3 Data & AI ยุดสมัยนี้ของมันต้องมี… แยกมากันชัดๆโฟกัสไปเลยว่าจะเอาดีทางสายนี้ สำหรับผมความคิดเห็นที่จะพูดถึงลู่นี้ไม่มีเพราะไม่รู้ 555 เพราะไม่เคยแตะเลย แต่ใครมาเอาดีสายนี้รับรองว่าอนาคตสดใสแน่นอนครับ สุดท้ายฝากลิงค์งานสามารถเข้าคลิกดู agenda ได้ : https://info.microsoft.com/AP-AzureMig-WBNR-FY20-03Mar-18-OpenSourceVirtualSummit-4491_01Registration-ForminBody.html

Read More »