Word : การปรับรูปแบบ font สารบัญตามที่เราต้องการ

กลับมาอีกครั้งกับเรื่อง Word สืบเนื่องมาจาก Blog ที่แล้วที่กล่าวถึงเรื่องการได้มีส่วนช่วยเพื่อนร่วมงานในการทำคู่มือ จึงได้มีโอกาสในการใช้งาน Word ซึ่งปัญหาที่พบอีกเรื่องก็คือ Font สารบัญ ไม่ใช่รูปแบบ Font ที่ต้องการคือ TH SarabunPSK ผู้เขียนจึงได้เขียนเรื่องนี้ขึ้นมาเพื่อที่ผู้อ่านจะสามารถนำไปใช้งานได้ ตัวอย่าง ผู้เขียนได้ทำการสร้างเนื้อหาทดสอบ ใน Style Heading และใส่สารบัญเรียบร้อย ดังภาพ จะเห็นได้ว่า Font ในเนื้อหา เป็น TH SarabunPSK ตามที่ตั้งค่าใน Style Heading1 ไว้ตามที่ต้องการ แต่ส่วนสารบัญนั้นเป็น Font แปลก ๆ ไม่ใช่ Font ที่เราต้องการ เริ่มทำการเปลี่ยน Font โดยไปที่ที่เราเลือกสารบัญแบบอัตโนมัติมาใส่ คือไปที่ Menu References -> Table of Contents -> Custom Table of Contents… จะพบหน้าต่าง Modify Style ที่ส่วนล่างซ้าย เลือก Format -> Font ที่หน้าต่าง Table of Contents มุมล่างขวา เลือก Modify… เพื่อเข้าไปแก้ไขรูปแบบ Font จากนั้นหน้าต่าง Style เลือก Level สารบัญที่ต้องการแก้ไขรูปแบบ ในที่นี้เลือกแก้ไขสารบัญ Level 1 จากนั้นกดปุ่ม Modify เรื่องน่ารู้ TOC ย่อมาจาก Table of Contents ซึ่งก็คือ สารบัญนั่นเอง จะพบหน้าต่าง Font นี่คือ Font ตั้งต้นที่เราได้ จะเป็นว่าไม่ใช่สิ่งที่เราต้องการ แก้ไขได้เลย แก้ไขให้เป็น Font ที่เราต้องการทั้ง 2 จุด คือ Latin Text และ Conplext scripts จากนั้น กดปุ่ม OK ออกมาเรื่อย ๆ กลับออกมาจนเกือบจะถึงขั้นตอนสุดท้าย จะมีหน้าต่างถามว่า จะเปลี่ยนจริง ๆ ละนะ จะทับของเดิมละนะ ตอบ Yes ไปเล้ย แถ่นแท๊นนน ผลลัพธ์สุดท้าย สวยงามอย่างที่เราต้องการ เย้! หวังว่าเนื้อหาเรื่องนี้คงจะมีประโยชน์ต่อผู้อ่านไม่มากก็น้อยนะคะ ขอบคุณค่าา 😀😍

Read More »

Word : การใส่รูปแบบเลขหน้าที่ต่างกันในไฟล์เดียวกัน

เคยไหมที่เวลาผู้อ่านจะสร้างคู่มือหรือเอกสารที่ต้องมีคำนำ สารบัญ ต่อด้วยเนื้อหา อาจจะจบด้วยภาคผนวก ซึ่งแต่ละส่วนนั้นมีการแสดงเลขหน้าที่ไม่เหมือนกัน ส่วนคำนำ สารบัญ อาจจะใช้เลขหน้าเป็นตัวอักษร เช่น ก, ข แต่ส่วนเนื้อหาใช้ตัวเลขอารบิค ในช่วงนี้ ผู้เขียนได้มีการช่วยเหลือเพื่อนร่วมงานในเรื่องนี้ในการทำคู่มือจึงได้นำลงมาใส่ไว้ใน Blog เผื่อเป็นประโยชน์แก่ท่านผู้อ่าน ตัวอย่าง ผู้เขียนสร้างเนื้อหามา 2 บรรทัดเพื่อเป็นเนื้อหาทดสอบในการใส่เลขหน้า จากนั้นทำการใส่ตัวแบ่งหน้า โดยเลือกเป็น Section Breaks -> Next Page จากนั้นใส่เลขหน้าเป็นเลขอารบิคปกติ เลขหน้าจะเริ่มที่หน้าที่ 1 และ 2 ไปเรื่อย ๆ จากนั้นผู้อ่านของดูที่แถบ Ribbon ใน Tab Header & Footer และพบเมนู Link to Previous ซึ่งจะเป็นว่าเมนูนี้ถูกไฮไลท์อยู่ นั่นคือ เลขหน้าจะต่อเนื่องจาก Section ก่อนหน้า ให้เลือกเมนูนี้อีกครั้ง เพื่อเอาการ Link กับ Section ก่อนหน้าออก จากนั้นลบเลขหน้าที่หน้าที่ 2 ออก จากนั้นไปที่เมนู Page Number -> Format Page Number เพื่อทำการเลือกรูปแบบตัวเลขที่ต้องการใส่ใหม่ ในที่นี้ต้องการใส่เลขหน้าเป็นตัวอักษรภาษาไทย เมื่อพบหน้าต่าง Page Number Format ให้ทำการเลือกรูปแบบเลขหน้าที่ Number format จากนั้น ที่ Page numbering ในเลือกเป็น Start at โปรแกรม Word จะเลือกค่าโดยปริยายเป็น “ก” มาให้ จากนั้นกด OK ผู้อ่านลองเลือกแผ่นกระดาษดูจะพบว่า เลขหน้าได้ทำการเปลี่ยนให้เป็นที่เรียบร้อย ผู้เขียนหวังว่าเนื้อหาเรื่องนี้จะเป็นประโยชน์ต่อผู้อ่านไม่มากก็น้อย ขอบคุณค่ะ 😀😍

Read More »

แสดงข้อมูล Memory CPU Disk ด้วย C# EP.3

แล้วก็มาถึง EP สุดท้ายของซีรีส์นี้ นั่นก็คือการดึงข้อมูลการใช้งานพื้นที่บน Disk ก่อนจะไปหาพื้นที่ disk เราต้องไปหา drive กันก่อนว่ามี drive อะไรบ้าง จากนั้นจึงไปหาข้อมูล disk ของ drive นั้นๆ โดยเราจะใช้ class DriveInfo สำหรับดึงข้อมูล drive ต่างๆ ออกมา ดังโค้ดตัวอย่าง โดยเราสามารถดึงข้อมูล drive ต่างๆ ได้ผ่านเมทธอด GetDrives() และเข้าถึงชื่อ drive ได้ผ่าน property Name เมื่อมาถึงขั้นตอนนี้ เราก็สามารถเข้าถึงข้อมูลพื้นที่ disk และการใช้งานของแต่ละ drive ได้ไม่ยากแล้ว ผ่าน property ต่างๆ ของ object DriveInfo เราไปดูตัวอย่างโค้ดกันเลย จากตัวอย่าง เราต้องตรวจสอบเพิ่มเติมว่า Drive ที่เราต้องการอยู่ในสถานะพร้อมใช้งานอยู่หรือไม่ผ่าน IsReady ก่อนที่จะเรียกใช้งานเมทธอดอื่น เพื่อให้การแสดงผลข้อมูลอยู่ในรูปแบบที่เข้าใจง่าย และแปลงรูปแบบข้อมูลให้เป็น GB ก็จะได้ตัวอย่างโค้ดทั้งหมดดังต่อไปนี้ ผลลัพธ์จากการรันโค้ดข้างต้น นอกจากนี้ DriveInfo ยังมีอีกหลาย property ที่เราสามารถเรียกใช้งานได้ ดังตัวอย่าง DriveInfo Properties AvailableFreeSpace Indicates the amount of available free space on a drive, in bytes. DriveFormat Gets the name of the file system, such as NTFS or FAT32. DriveType Gets the drive type, such as CD-ROM, removable, network, or fixed. IsReady Gets a value that indicates whether a drive is ready. Name Gets the name of a drive, such as C:. RootDirectory Gets the root directory of a drive. TotalFreeSpace Gets the total amount of free space available on a drive, in bytes. TotalSize Gets the total size of storage space on a drive, in bytes. VolumeLabel Gets or sets the volume label of a drive. สำหรับบทความในซีรี่ส์นี้ก็ขอจบแต่เพียงเท่านี้ หวังว่าจะมีประโยชน์บ้างไม่มากก็น้อย พบกันใหม่เมื่อมีเรื่องอยากจะเขียน สวัสดีครับ อ้างอิง https://docs.microsoft.com/en-us/dotnet/api/system.io.driveinfo?view=net-5.0 https://www.c-sharpcorner.com/UploadFile/puranindia/driveinfo-class-in-C-Sharp/

Read More »

JavaScript : ไม่ควรใช้ For Loop ใน Arrays

เชื่อว่า Programmer/Developer JavaScript ล้วนเคยผ่านการใช้งาน For Loops ในการ Coding กันมาแล้ว จำเป็นที่คุณต้องเลือกใช้มันให้เหมาะกับแต่ละสถานการณ์ แนะนำว่า ไม่ควรใช้ For Loop ใน Arrays แต่ขอแนะนำให้ใช้ .forEach() Method แทน .forEach() Method คืออะไร .forEach()  เป็น Built-in Method ใน Array Class ซึ่งได้รับการเปิดตัวใน ECMAScript 2015 (หรือที่เรียกกันว่า ES6) โดย Method จะทำการ Callback เป็น Arguments และเพื่อไม่ให้เกิดปัญหาขึ้น Callback จะเป็น Function ที่ถูก Execute สำหรับทุก item ใน Array ตัวอย่าง เพื่อแสดงถึงการใช้งานพื้นฐานของ .forEach() Method เรามาเริ่มด้วยการ Define Array ของ Integer แล้ว Print ค่าที่เป็น ยกกำลัง2 ของพวกมันลงใน Console การเพิ่ม Index เข้าไป เราได้ทำการเพิ่ม Optional Parameter ตัวที่ 2 เข้าไปใน Function Definition ของเรา การจัดเก็บค่าด้วย .forEach() แล้วถ้าเราไม่ต้องการที่จะ Print ทุกอย่าง แต่อยากเก็บ Result ไว้ในตัวแปรใหม่ล่ะ? จะเห็นว่า .forEach() Method ไม่มีการ Return ใด ๆ กลับมาให้ ซึ่งการใช้ .map() Method ดูจะเป็นคำตอบที่ดีที่สุดในสถานการณ์นี้ แต่อย่างไรก็ตาม หากต้องการใช้ .forEach() เราสามารถเขียน Code ใหม่ได้ดังนี้ การเขียน Callback Function สั้นกระชับขึ้น หากต้องการทำให้ Code สั้นกระชับมากขึ้น สามารถเขียนได้ดังนี้ หรือแบบนี้ก็ได้เช่นเดียวกัน อ้างอิง : https://medium.com/better-programming/stop-using-for-loops-to-iterate-over-arrays-5c46940e79d1

Read More »

ปรับแต่ง SQL ให้เร็วขึ้น

เมื่อคุณ Run SQL Queries แล้วมันทำงานช้าขึ้นมา เราจะต้องกลับเข้าไปดู Queries ที่เขียนว่าจะสามารถแก้ไขจุดที่เป็นต้นเหตุได้อย่างไร บทความนี้เราจะมาแนะนำดูวิธีปรับแต่ง Queries ที่ทำงานช้าให้เร็วยิ่งขึ้นกัน ไม่จำเป็นต้องใช้ข้อมูลทุกอย่าง พิจารณาว่าจำเป็นต้องใช้ SELECT * หรือไม่? ควรจะดึงเฉพาะ Column ที่ต้องการเพื่อให้ได้ผลที่รวดเร็วขึ้น แทนที่จะใช้ SELECT * เพื่อดึงข้อมูลทั้งหมดออกมา หากมี Table ที่มีขนาดใหญ่หรือมีข้อมูลปริมาณมากใน Table ซึ่งมีแนวโน้มที่จะทำให้ Query Engine ต้องทำงานหนักในการดึงข้อมูลทุกอย่างไปสู่ Client Side ก็อย่าลืมที่จะใช้ LIMIT เพื่อจำกัดจำนวนของผลลัพธ์ เว้นเสียแต่ว่าต้องการดูข้อมูลในทุก ๆ Row ระวังการใช้ NOT IN พยายามหลีกเลี่ยงการใช้ ‘IN’ หรือ ‘NOT IN’ เพราะการทำเช่นนี้ หมายถึง กำลัง Scan ทั้ง Table อยู่ เพราะ Query Engine จะไล่ดูไปที่ทุก Row เพื่อตรวจสอบว่า ตรงตามเงื่อนไขหรือไม่ ให้เปลี่ยนมาใช้ ‘EXISTS’ หรือ ‘NOT EXISTS’ ดู เพราะมันจะส่งผลกระทบต่อ Query Plan น้อยกว่าการใช้ ‘NOT IN’ ใช้ Wildcards เท่าที่จำเป็น การใช้ Wildcards ที่จุดเริ่มต้นและจุดสิ้นสุดของ LIKE จะทำให้การ Query ช้าลง และอาจจะทำให้ได้ผลลัพธ์ที่มากเกินกว่าที่คุณต้องการ ให้ใช้ Wildcards เฉพาะเมื่อต้องการใช้งานจริง ๆ เท่านั้น โดยทั่วไปจะใช้กันเพียงแค่จุดเดียวเท่านั้น ดังนั้น จึงควรคำนึงถึงสิ่งที่ต้องการจะให้ Query Engine ทำ ระวัง Nested Queries การ Run หลาย ๆ Queries ซ้อนกันไปเรื่อย ๆ (Nested Queries) เหมือนอย่าง Function ถือเป็นสิ่งที่ไม่แนะนำให้ทำ และมันจะเร็วกว่าหากเขียนลงใน Table ลองพิจารณาการสร้าง Staging Tables ซึ่งนั่นหมายถึง เรากำลัง Join Subset ของข้อมูลที่เล็กลง ทำให้การ Query เร็วขึ้น ระวังการใช้ Views ซ้อน ๆ กัน Views เป็น Queries ที่จะ Run เมื่อเราเรียกใช้งาน หรือดูข้อมูล ซึ่งหากกำลังเรียกหลาย ๆ View หรือในกรณีที่แย่ที่สุด คือ การเรียก Views ซ้อน Views ซ้อน Views ไปเรื่อย ๆ นั่นคือ เรากำลังบอกให้ Query Engine ทำการ Run หลาย ๆ Queries เพื่อ Return Row และ Column ที่ต้องการ ลองเปลี่ยนเป็นเขียนมันลงไปใน Table หากต้องการดูข้อมูลในแต่ละ วัน/สัปดาห์/เดือน แทนที่จะใช้ Views เพื่อ Filter ข้อมูล แต่ถ้าหากยังมีความจำเป็นใช้ Nested Views อยู่ อยากให้ลองพิจารณาดูว่า ยังมีวิธีอื่นอีกหรือไม่ ที่สามารถทำได้ตรงกว่านี้ในการเข้าถึง Row และ Column ที่ต้องการด้วยการเขียน Queries แทนการ Run หลาย Queries เพื่อไปยัง Column ที่ต้องการจาก Nested Views ตัวสุดท้าย Indexes Indexes จะช่วยเพิ่มความเร็วให้ Queries ของเรา โดยการจัดลำดับข้อมูลเพื่อให้ Database Engine ทราบว่าจะหาข้อมูลที่ต้องการได้จากที่ไหน หรือมี

Read More »