Notebook Tips – ประหยัด ยืดอายุแบตเตอรี่

มีคำถามมากมายเกี่ยวกับแบตเตอรี่ ไม่ว่าจะเป็นการชาร์จ, แบตเสื่อม ประหยัดแบต โน๊ตบุ๊คและอีกมากมาย เนื่องด้วยในบรรดาอุปกรณ์ภายในโน๊ตบุ๊คของเราส่วนมาก สิ่งที่จะมีปัญหาอันดันแรก นั้นก็คือแบตเตอรี่ ซึ่งหากใช้งานไม่ถูกต้อง ซื้อมาเพียงไม่กี่เดือนแบตก็เสื่อมแล้ว ทำให้เป็นปัญหาเวลาใช้นอกสถานที่เป็นอย่างมาก 1.ปล่อยให้แบตเตอรี่หมดก่อนแล้วค่อยชาร์จ เรื่องความร้อนนั้นเป็นของคู่กับโน้ตบุ๊คด้วยเลยก็ว่าได้ ส่วนสำหรับแบตเตอรี่นั้นหากได้รับความร้อนนานๆ อายุก็จะสั้นลงแน่นอน แต่เอ๊ะ!! แล้วจะให้ทำยังไงหละในเมื่อการชาร์จทุกเครื่องมันก็ร้อนนิหน่า ถูกไหม? แต่มีวิธีแนะนำ นั้นก็คือ อย่าปล่อยให้แบตเตอรี่อยู่ต่ำกว่าประมาณ 20% ซึ่งถ้าจะให้ดีควรอยู่ในระดับ 20-30% หรืออาจจะ 40% ก็ได้ แต่ก็อย่าเกินนี้ เพราะยิ่งแบตเหลือน้อยมากๆ การชาร์จมันก็จะนาน ทำให้เกิดความร้อนมากกว่านั้นเอง และที่สำคัญอย่าให้แบตเตอรี่หรือตัวเครื่องโน้ตบุ๊คเราอยู่ใกล้กับสิ่งของร้อนๆ ด้วย 2.ถอดแบตเตอรี่ออกขณะเล่นเกมหรือเวลาอยู่บ้าน ถามกันว่าต้องถอดแบตเตอรี่หรือเปล่า? ต้องใส่ไว้ตลอดไหม? วันนี้ก็มีคำตอบให้ หากเราถอดไว้แล้ว แต่เกิดปัญหา ไฟดับ ไฟกระชาก มันก็อาจจะทำให้อุปกรณ์หรือโน้คบุ๊คของเราเสียหายได้ครับ ซึ่งอันที่จริงหากเราถอดแบตเตอรี่ออกมามันจะช่วยให้ยืดอายุการใช้งานได้จริง แต่มันก็เพียงเล็กน้อย แล้วมันจะคุ้ม? กับสิ่งที่เราอาจจะเสียไป ดูแล้วมันก็คงได้ไม่คุ้มเสีย 3.ถอดแบตเตอรี่เก็บไว้ ไม่ต้องใช้ ไม่เสื่อม ปกติแบตเตอรี่ อายุประมาณ 1 ปีหรืออาจจะน้อยหรือมากกว่า ตามลักษณะการใช้งาน เราก็เริ่มเห็นปัญหาแบตเตอรี่เสื่อมแล้ว ใช้งาน 1 ปีเต็มพอดี แบตก็ใช้งานได้สั้นลง 30 นาที จากปกติใช้ได้ 3 ชั่วโมง ตอนนี้ก็เหลือ 2 ชั่วโมง 30 นาทีโดยประมาณ ใช้ถูกหลักบ้างไม่ถูกหลักบ้างตามสถานะการ และแต่ส่วนใหญ่แล้วแบตเตอรี่มักจะสิ้นใจก่อนโน้ตบุ๊คของเราอยู่แล้ว โดยปกติก็ โน้ตบุ๊ค 1 เครื่อง กับ แบตเตอรี่ 2 ลูก ก็ถือว่ากำลังดี ก็คือใช้ตัวที่แถมมา และเราก็เปลี่ยนหนึ่งครั้ง มันก็จะสิ้นอายุไขของมัน หรือบางท่านก็อาจจะใช้แบตเตอรี่ลูกเดียวแบบนี้ก็ถือว่าคุ้มค่ามาก เพิ่มชั่วโมงการทำงานของโน้ตบุ๊ตบนแบตเตอรี่ โดยไม่ต้องเสียสตางค์ วิธีพื้นฐานคลาสสิคยิ่งนัก โดยเจ้า Windows Power Manager นั้นจะมีติดตั้งมาให้บนโน้ตบุ๊คทุกตัว(ที่ใช้ Windows) โดยวิธีที่ง่ายที่สุดที่ไม่ต้องปรับแต่งอะไรเลยก็คือเลือกปรับให้มันเป็น Power Saver นั่นเอง แต่ระดับสมาชิก NBS คงไม่ทำอะไรง่ายๆ  ซึ่งมันก็มีวิธีแอดวานซ์กว่านั้น ก็คือให้สังเกตเครื่องหมายรูปถ่านที่ Task Bar > คลิกซ้าย เลือก More Power Option > Change Plan Setting > Change Advance Power Option ที่นี้มันก็จะขึ้นหน้าต่าง Power Option หัวข้อที่แนะนำให้ปรับถ้าต้องการใช้แบตเตอรี่โน้ตบุ๊คนานๆ ก็จะ Processor ให้ Maximize อยู่ที่ราวๆ 50% ก็จะช่วยประหยัดไฟได้พอสมควร โดยที่ประสิทธิภาพของเครื่องไม่ตกลงมากนัก การบล๊อกแฟลชโฆษณาต่างๆ และปิดโปรแกรมที่ไม่จำเป็นหรือปิด (Disable) Wireless / Bluetooth รวมถึง การลดความสว่างของหน้าจอ ก็ล้วนแต่มีส่วนช่วยให้ใช้งานได้ยาวนานขึ้น การ Calibrate Battery เพื่อเพิ่มอายุการใช้งาน เมื่อแบตเตอรี่โน้ตบุ๊กเสื่อมทำไงดี ? สำหรับผู้ที่ใช้โน้ตบุ๊คมาสักปี 2 ปีปัญหาหนึ่งที่มักจะเจอกันก็คือแบตเตอรี่เสื่อม?ซึ่งถ้าใช้เครื่องมาระดับนี้การเสื่อมของแบตเตอรี่ถือเป็นเรื่องปรกติ แม้ท่านจะทำวิธีใดก็ตามแบตเตอรี่ที่ท่านใช้ๆอยู่ก็ย่อมต้องเสื่อมไปตามการเวลาเป็นปรกติ หลายๆท่านอาจจะเลือกที่จะต่อ Adapter ตลอดเวลา หรือไม่ก็ซื้อเครื่องใหม่ไปเลย แต่อีกหลายๆท่านก็ยังจำเป็นต้องใช้แบตเตอรี่อยู่ (และก็ไม่มีตังซื้อเครื่องใหม่) การซื้อแบตเตอรี่ใหม่จึงเป็นทางเลือกที่น่าสนใจเพราะราคาถูกกว่าซื้อเครื่องใหม่ และก็ทำให้โน้ตบุกใช้งานแบตเตอรี่ได้เหมือนเดิมปัจจุบันแบตเทียบก็ถือเป็นตัวเลือกที่น่าสนใจสำหรับผู้ที่งบประมาณจำกัด แต่อยากเปลี่ยนแบตเตอรี่ก้อนเก่าที่เสื่อมแล้วเป็นแบตตัวใหม่ใสปิ้ง อีกทั้งปัจจุบันผู้ผลิตแบตเตอรี่เทียบหลายๆเจ้าก็พยายามพัฒนาคุณภาพให้เทียบเท่าแบตแท้จากผู้ผลิตโน้ตบุ๊ก โอกาสที่แบตเทียบจะมีปัญหาใช้งานได้ไม่เต็มที่หรือแบตเตอรี่ระเบิดก็มีโอกาสน้อย เพียงแต่ว่าเราต้องดูชื่อผู้ผลิตหรือนำเข้าให้มันใจ ยิ่งถ้าเป้นแบรนด์ที่ขายมานานหรือเป็นที่รู้จักก็จะช่วยให้เรามั่นใจขึ้น วิธีการประหยัดพลังงานให้แบตเตอร์รี่โน้ตบุ๊ก เครื่องโน้ตบุ๊กตัวโปรดของคุณจะกลายเป็นภาระอันใหญ่หลวงทันที ถ้าหากเราต้องมัวแต่วิ่งหาปลั้กไฟเพราะว่าแบตหมดก่อนเวลาอันควรเอาซะดื้อๆ ต่อไปนี้จะเป็น  วิธีการที่เราอยากจะแนะนำ เพื่อจะทำให้เครื่องโน้ตบุ๊กของคุณสามารถประหยัดพลังงาน และใช้งานแบตเตอร์รี่ของคุณเพิ่มเติมได้อีกหลายนาที 1.จัดเรียงข้อมูลในฮาร์ดดิสก์อย่างสม่ำเสมอ ฮาร์ดดิสก์เป็นจุดที่ทำงานช้าและใช้พลังงานมากที่สุดจุดหนึ่งของเครื่องโน้ตบุ๊ก ยิ่งเราสามารถทำให้ฮาร์ดดิสก์ของเราทำงานได้ไวมากขึ้นเท่าไร ความต้องการที่จะใช้พลังงานก็จะน้อยลงเท่านั้น วิธีการหนึ่งที่ทำให้เครื่องทำงานได้เต็มประสิทธิภาพอยู่เสมอ ก็คือการ Defragment หรือจัดเรียงข้อมูลในฮาร์ดดิสก์นั้นเอง 2.ปิดโปรแกรมที่ทำงานอยู่ด้านหลังออกไปบ้าง หากคุณเป็นคนที่ไม่ค่อยสนใจอะไรเวลาลงโปรแกรมล่ะก็ คุณจะได้โปรแกรมที่แอบทำงานอยู่เงียบๆ อยู่ข้างหลังตามมาเป็นว่าเล่น โปรแกรมพวกนี้ชอบถูกสั่งให้เปิดขึ้นมารอการใช้งานพร้อมกับ Windows ตั้งแต่แรก นั้นเป็นสาเหตุที่ทำให้เครื่องคอมพิวเตอร์ของคุณบูตช้าลงทุกวันๆ 3.ดึงอุปกรณ์ภายนอกที่ไม่ได้ใช้ออก อุปกรณ์ USB ทั้งหลายแหล่ที่คุณเสียบทิ้งไว้กับเครื่อง จะดึงพลังงานออกไปจากแบตอยู่เสมอ ไม่ว่าจะมากหรือน้อยก็ตาม แม้แต่เม้าส์และตัว WiFi ถ้าหากคุณไม่ได้ใช้งานก็ควรจะปิด เพื่อให้เครื่องตัดกระแสไฟออกไป4.เพิ่มหน่วยความจำให้พอต่อการใช้งาน ยิ่งเครื่องมีแรมมากพอจะให้โปรแกรมใช้เท่าไร โอกาสที่โปรแกรมจะไปใช้ Virtual

Read More »

แนวทางการเขียน Unit Tests ที่ดีสำหรับ C # (2)

ในบทความก่อนหน้า ได้พูดถึงการเลือก Testing framework ที่เหมาะสม การเขียน unit test โดยใช้แนวคิดแบบ “AAA” (Arrange, Acr, Assert) และการกำหนดชื่อ method ที่สื่อความหมายเข้าใจได้ง่าย Test Initialize & Cleanup เมื่อ unit tests ทำการทดสอบ methods ภายใน class ก็จำเป็นต้องสร้าง instance ของ class นั้นๆขึ้นมาก่อน ซึ่งจะเกิดขึ้นหลายๆครั้งใน unit test เพื่อประหยัดเวลาและทรัพยากรของระบบ เราสามารถใช้ [TestInitialize] attribute ของ MSTest เพื่อบอกว่า method นั้นใช้สำหรับกำหนดค่าเริ่มต้น สร้าง instance ของ class ก่อนที่จะเริ่ม run unit tests (หรือ [SetUp] ใน NUnit หรือถ้าใช้ xUnit.net ให้สร้างใน constructor ) เมื่อการทดสอบจบลง เราจะต้องทำการ cleanup object ต่างๆที่ใช้ในการทดสอบ โดยการใช้ [TestCleanup] attribute ในกรณีที่ใช้ MSTest ([TearDown ใน NUnit หรือ implement IDisposable interface สำหรับกรณีที่ใช้ xUnit.net) ตัวอย่างด้านล่าง จะกำหนดให้ method “Initialize” เป็น method ที่ใช้สำหรับสร้าง instance ของ class ที่จะใช้ในการทดสอบ ซึ่งจะถูกเรียกใช้ก่อนการทดสอบจะเริ่มทำงาน Shouldly Assertion Framework Shouldly framework จะช่วยให้ unit test ทำได้ง่ายและเข้าใจได้ง่ายขึ้น มันจะช่วยผู้พัฒนาในการเขียนการยืนยันผลการทำงานของ unit tests ซึ่งเมื่อกลับมาดู unit test อีกครั้งสามารถอ่าน code แล้วเข้าใจวัตถุประสงค์และความคาดหวังของการทดสอบ เปรียบเทียบความแตกต่างระหว่าง การใช้ Shouldly กับ ไม่ใช่ Shouldly With Shouldly Without Shouldly Shouldly สามารถใช้ในการตรวจสอบ exception ว่าเกิดตามที่คาดหวังไว้หรือไม่ และสามารถตรวจสอบ meesage ของ exception ได้ Moq Mocking Framework การสร้าง object จำลองสำหรับ object ที่ไม่ใช่ object หลักที่จะทำการทดสอบ แทนที่การเรียกใช้ object จริงๆ เช่น logging utility หรือ database จะทำให้การทดสอบทำได้อย่างมีประสิทธิภาพขึ้น ซึ่งการทำแบบนี้ เราต้องใช้ Mocking framework มาช่วย โดยตัวที่ได้รับความนิยมตัวนึงก็คือ Moq framework การใช้ Moq framework จะช่วยให่เราสามารถ mock class ต่างๆโดยใช้เพียง interface. ตัวอย่างเช่น การใช้ mock ของ logging utility ใน unit test แทนที่จะสร้างและเรียกใช้ logging utility ตัวจริง We can also verify if a mock object was invoked inside a method and the amount of times it was invoked: อ้างอิง : https://kiltandcode.com/2019/06/16/best-practices-for-writing-unit-tests-in-csharp-for-bulletproof-code/

Read More »

แนวทางการเขียน Unit Tests ที่ดีสำหรับ C #

ในความคิดของผู้เขียน ผู้พัฒนาส่วนใหญ่มักไม่ชอบที่จะเขียน Unit testing บางคนอาจจะคิดว่ามันน่าเบื่อ หรือบางคนก็ไม่เห็นคุณค่าในการเขียน code เพื่อตรวจสอบการทำงานของ code อื่นๆ Unit testing คือแนวทางในการเขียน code เพื่อตรวจสอบว่าหน่วยการทำงานใน แอปพลิเคชันซอฟต์แวร์ ว่าทำงานตามที่ตั้งใจไว้หรือไม่ เช่น หากตั้งใจที่จะให้ตัวอักษรตัวแรกของคำเป็น พิมพ์ใหญ่ unit test จะต้องสามารถตรวจสอบว่าตัวอักษรตัวแรกเป็นตัวพิมพ์ใหญ่โดยไม่สนใจอักษรตัวอื่นๆ ข้อดีอย่างหนึ่งของการเขียน unit tests ใน C # คือ เราสามารถใช้ Test Explorer ใน Visual Studio เพื่อตรวจสอบว่าการทดสอบทั้งหมดผ่านหรือไม่ โดยที่ไม่ต้องกังวลว่าการเปลี่ยนแปลงล่าสุดที่เขียน จะทำให้ระบบทำงานไม่ได้หรือไม่ การเลือก Testing Framework Testing frameworks ช่วยให้เราสามารถใช้ attribute ในการเขียน unit tests [TestClass] หรือ [TestMethod] ซึ่ง attribute เหล่านี้บอกให้ Text Explorer ใน Visual Studio รู้จัก class หรือ method นั้นคือ unit test และจะรันโค้ดเพื่อตรวจสอบการทำงานว่าผ่านหรือไม่ผ่าน Testing frameworks สำหรับ. NET ที่ได้รับความนิยมคือ MSTest xUnit.NET NUnit การเลือก Testing frameworks ก็เหมือนกับการเลือกรถ บางอันมีประสิทธิภาพสูง บางอันให้ความสะดวกสบาย แต่สุดท้ายทั้งหมดก็ทำงานเพื่อบรรลุเป้าหมายเดียวกัน NUnit เป็น test framework แรกๆที่ได้รับความนิยมสำหรับผู้พัฒนา .NET, เมื่อเปรียบเทียบกับความสามารถของ MSTest ( test framework ของ Microsoft) โดยส่วนใหญ่ก็จะเหมือนกับใน NUnit และ MSTest เป็น test framework ที่ถูกสร้างขึ้นและสามารถใช้งานได้ใน Visual Studio สำหรับ xUnit.NET เป็นน้องใหม่ใน test framework ที่นำเสนอคุณสมบัติเพิ่มเติมและวิธีการที่ง่ายขึ้นในการเขียน unit tests ที่พัฒนาโดย NET Core โดยส่วนใหญ่จะไม่ใช้เวลามากเกินไปในการพิจารณา test framework เพื่อใช้ในโครงการหากโครงการมีการกำหนด test framework ที่เฉพาะเจาะจง ก็ให้ใช้ test framework นั้น ถ้าไม่ได้กำหนด ก็ให้ทำการศึกษาและตัดสินใจเลือก test framework ที่เหมาะกับโครงการ AAA ( Arrange, Act, Assert ) วิธีการเขียน unit test แบบ ‘AAA’ (Arrange, Act, Assert) เป็นวิธีปฏิบัติในการเขียน unit test และช่วยให้เราสามารถเขียน unit test ในรูปแบบที่ทำซ้ำและเข้าใจได้ Arrange เราจะเริ่มเขียน unit test โดยการจัดเรียง objects ที่ต้องการทดสอบ ซึ่งอาจจะเป็นการ initializing class หรือ การเตรียมข้อมูลในฐานข้อมูลสำหรับทดสอบ หรือการ mocking object โดยการใช้ interface ตัวอย่างด้านล่าง มีกำหนดค่า mock object ของ ILogger<Calc> ให้กับ interface “ILogger” Act เราจะดำเนินการ และเรียกใช้ส่วนของ code หรือ method ที่ต้องการทดสอบโดยการผ่านค่า parameter ให้กับ method และเก็บผลลัพธ์ใน valiable ที่กำหนด ตัวอย่างด้านล่าง เป็นการเรียกใช้ method “Divide” โดยส่ง parameter ไป 2 ตัว และเก็บผลลัพธ์การทำงานในตัวแปร result Assert สุดท้าย

Read More »

เขียน Unit test ทดสอบการทำงานกับฐานข้อมูลที่ใช้ Entity Framework Core

ในบทความนี้ จะนำเสนอการเขียน unit test เพื่อทดสอบการทำงานของ method ที่ใช้งาน Entity Framework Core ซึ่งตัว Entity Framework Core มาพร้อมความสามารถที่สามารถใช้งาน in-memory store ซึ่งสามารถใช้ในการทดสอบได้ หรือจะใช้ mock framework ในการทดสอบก็ได้ โดยในบทความนี้จะแสดงให้เห็นทั้งสองแนวทาง In Memory Database In Memory Database เป็นการสร้าง database จำลองขึ้นมาใช้บน memory แทนที่การใช้ database ตัวจริง ทำให้เราสามาถเขียน unit test โดยที่ไม่ไปกระทบกับ database จริงๆ โดยการเพิ่ม Microsoft.Entityframework.InMemory NuGet package เข้าไปใน test projet ในส่วนของ DbContext class จะต้องมี constructor ที่รับ DbContectOption เป็น parameter จากตัวอย่างด้านบน เราใช้ UseInMemoryDatabase extension method -ของ DbContextOptionsBuilder ซึ่งรับ parameter 1 ตัวเพื่อกำหนดชื่อของ database โดยเราจะใช้ Guid จากนั้นก็สามารถเขียน unit test ได้ดังนี้ จากตัวอย่างด้านบน CreateDbContext method ทำหน้าที่ในการสร้าง DbContext object ที่ทำงานกับ in-memory database แทนที่จะใช้งาน database ตัวจริง หลังจากนั้นก็สามารถทำตามที่ต้องการได้ เหมือนกับการใช้งาน DbContext ปกติ Using Mock Frameworks อีกทางเลือกหนึ่ง เราสามารถใช้ mock frameworks ในการเขียน unit tests ซึ่งเราจะใช้ Moq mock frameworks ซึ่งเป็น mock frameworks ที่ได้รับความนิยมสำหรับ .Net platform โดยก่อนที่จะเริ่มเขียน unit test เราจะต้องกำหนดให้ DbSet pproperty ของ DbContext เป็น virtual ซึงจะทำให้ Moq framework สามารถสร้าง fake object และ override property นี้ได้ และดำเนินการดังนี้ สร้าง generic collection สำหรับ DbSet property แต่ละตัว Config fake DbSet ใน mock framework Setup และ forward DbSet property เหล่านั้นไปที่ generic collection Provider Expression ElementType GetEnumerator() อ้างอิง : https://www.bitiniyan.com/2019/02/02/how-to-write-unit-tests-with-entity-framework-core/

Read More »

SSH:- no matching key exchange method found

เดี๋ยวนี้ใน Windows 10 ก็มี ssh ให้ใช้งาน แต่พอใช้กับเซิร์ฟเวอร์รุ่นเก่าๆ ก็เข้าไม่ได้ซะงั้น ไปลอง ssh ฝั่ง Linux (WSL2) ก็ให้ผลเหมือนกันคือ!!! ถ้าเป็นเมื่อก่อน วิ่งไปหา putty อย่างไว…. แต่ Windows อุตส่าห์ทำมาให้ใช้แล้วทั้งทีจะไม่ใช้ได้ยังไง สิ่งที่ต้องตรวจสอบก่อนคือ man ssh_config สำหรับ Linux ฝั่ง client ว่ารองรับ ciphers และ kexalgorithms แบบไหนรองรับหรือไม่ ส่วนฝั่ง Windows 10 จะอิงตาม OpenBSD manual ซึ่งเหมือนกับ Linux แหละ สร้างแฟ้ม .ssh/config โดย Linux ก็จะให้สร้างที่ /home/username/.ssh/ Windows ก็อยู่ที่ C:\Users\username\.ssh สำหรับ error ว่า no matching key exchange method found. Their offer: diffie-hellman-group-exchange-sha1,diffie-hellman-group14-sha1,diffie-hellman-group1-sha1 ให้เพิ่มข้อความต่อไปนี้ลงในแฟ้ม .ssh/config โดย somhost.example.org เป็นชื่อและโดเมนเนมของ server เป้าหมาย สำหรับ error ว่า no matching cipher found. Their offer: aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,arcfour,aes192-cbc,aes256-cbc,rijndael-cbc@lysator.liu.se ให้เลือกมา 1 cipher ที่ปรากฎใน error มาใส่ในแฟ้ม .ssh/config บาง server ต้องรวมทั้งสองอย่างเช่น ถ้าไม่อยากสร้างแฟ้ม .ssh/config สามารถสั่งผ่าน command line ได้เลยเช่น หรือ ถ้ามี error 2 อย่าง เมื่อสร้างแฟ้ม .ssh/config แล้วลอง ssh เข้าไปใหม่ อ้างอิง https://www.openssh.com/legacy.html https://docs.microsoft.com/en-us/windows-server/administration/openssh/openssh_server_configuration เย่ไม่ต้องลง putty ละ อย่างไรก็ดี ควรรีบหาทางขยับขยายย้ายเซิร์ฟที่ยังใช้วิธีการเข้ารหัสแบบเก่า ให้เป็นรุ่นใหม่ๆ จะดีและยั่งยืนกว่า จบขอให้สนุก

Read More »