ปลูกผักสลัดไฮโดรโปนิกส์(Hydroponic lettuce) : วันที่ 3 ย้ายเมล็ดผักที่งอกรากแล้วลงฟองน้ำ

หลังจากทำการเพาะเมล็ดผักสลัดจนงอกรากแล้ว เข้าสู่วันที่ 3 ของการปลูก ก็จะทำการย้ายเมล็ดผักสลัดที่เริ่มมีรากงอกออกมาจากเมล็ดลงในฟองน้ำสำหรับปลูกผักแบบไฮโดโปรนิกส์ โดยทำการแยกลงฟองน้ำแต่ละช่อง แบ่งเป็นช่องละ 1 ต้น อุปกรณ์ที่ใช้ก็จะมี:- 1. เมล็ดผักที่เพาะจนเริ่มมีรากงอกออกมาแล้ว 2. ฟองน้ำสำหรับปลูกผักไฮโดรโปนิกส์ โดยฟองน้ำจะมีลักษณะเฉพาะซึ่งจะแบ่งเป็นช่องๆ ในแต่ละช่องจะสามารถดึงเพื่อแยกออกเป็นต้นๆ ได้ง่าย และแต่ละช่องจะมีการบากรอยเอาไว้ตรงกลางให้ทะลุฟองน้ำ เพื่อให้รากต้นผักสามารถทะลุลงไปรับน้ำและปุ๋ยด้านล่างได้ง่าย ไม่ต้องเจาะฟองน้ำลงไปเองทั้งหมด 3. คีมปลายแหลม สำหรับคีบเมล็ดผักและรากลงไปในฟองน้ำที่มีการบากรอยตรงกลางไว้แล้ว 4. ภาชนะสำหรับใส่น้ำและมีขนาดพอดีกับแผ่นฟองน้ำ โดยการเลือกภาชนะที่มีขนาดพอดีกับแผ่นฟองน้ำ จะช่วยลดการเกิดตะไคร่น้ำในบริเวณที่ว่างรอบๆ ฟองน้ำที่แดดส่องถึง ถ้ามีที่ว่างรอบๆ ฟองน้ำเยอะพอปลูกไปสักพักบริเวณดังกล่าวมักจะเกิดตะไคร่น้ำขึ้น 5. มุ้ง, ตาข่าย หรือผ้าคลุมที่ตาถี่ๆ มาคลุมภาชนะเอาไว้ กันแมลงเข้าไปกัดกินทำลายต้นกล้า หลังจากทำการย้ายเมล็ดผักสลัดที่งอกรากแล้วลงฟองน้ำเสร็จเรียบร้อยแล้ว ก็ทำการใส่น้ำในภาชนะ วางไว้ในที่ร่มสัก 1-2 วัน ให้ต้นกล้าฟื้นตัวดีก่อน แล้ววันถัดไปจึงค่อยย้ายต้นกล้าออกไปรับแดดตามปกติ *** ข้อควรระวังในช่วงนี้คือ อย่าให้หน้าฟองน้ำแห้งเกินไปถ้าสังเกตุว่าหน้าฟองน้ำแห้ง ก็ให้พยายามเสปรย์น้ำให้หน้าฟองน้ำชื่นอยู่เสมอ เพราะว่า ช่วงนี้รากของผักที่เพิ่งเริ่มงอกออกมาจากเมล็ดจะยังไม่ยาวมากจนสามารถทะลุฟองน้ำลงไปด้านล่าง บางทีรากอาจจะยังอยู่บริเวณส่วนบนหรือตรงกลางๆ ฟองน้ำ ถ้าหน้าฟองน้ำแห้งเกินไป รากและเมล็ดผักที่อยู่ด้านบนอาจจะเหี่ยวตายได้ค่ะ ***

การสร้าง UICollectionView ซ้อนใน UICollectionView

UICollectionView คืออะไร? UICollectionView คือ คลาสคอมโพเนนท์ที่ทำหน้าที่จัดการลำดับการแสดงผลของกลุ่มของออบเจคในเลย์เอาท์ที่ปรับแต่งได้ สำหรับ CollectionView นั้นมีฟังก์ชันพื้นฐานทั่วไปทำงานเหมือนกันกับ TableView นอกจากว่า CollectionView นั้นสามารถที่จะจัดรูปแบบการแสดงผลได้มากกว่า 1 คอลัมน์ขึ้นไป หลายคนคงคุ้นเคยกับการใช้งานกับ UITableView กันอยู่แล้ว แต่ UITableView มีข้อจำกัดที่รูปแบบในการแสดงข้อมูลจะเป้นในลักษณะข้อมูลเรียงกันจากบนลงล่าง ซึ่งเหมาะกับสมัยก่อนที่หน้าจอของมือถือยังไม่ใหญ่มากพอจะแสดงข้อมูลหลายๆอย่างในแถวเดียวกันได้ แต่พอมือถือมีขนาดหน้าจอที่ใหญ่ขึ้นๆ ทำให้การแสดงข้อมูลเพียงอันเดียวต่อแถว ดูเป็นการใช้พื้นที่หน้าจอที่ไม่เหมาะสม UICollectionView เป็นเหมือน UITableView ที่ต่อยอดขึ้นมาเพื่อแสดงผลในรูปแบบที่หลากหลายได้มากขึ้น โดยสามารถแสดงเป็น grid หรือแสดงข้อมูลตามแนวนอนจากซ้ายไปขวาได้ ทำให้ยืดหยุ่นต่อการปรับใช้กับหน้าจอขนาดใหญ่   เรามีความสงสัยขึ้นมาว่า จะเป็นไปได้ไหมที่เราจะสร้าง UICollectionView ซ้อนใน UICollectionView แต่ยังคงสามารถจะเซต delegate และ datasource ให้กับ UICollectionView ได้เหมือนเดิมและยังสามารถทำงานได้ปกติตามหลักการใช้งานของ UICollectionView ? วันนี้เราจะมาหาคำตอบให้คลายกับความสงสัยนี้กัน  

iOS Tutorial – Begin with swift ( day 9 )

Initialization คือกระบวนการเตรียม instance ให้พร้อมใช้ของ class, structure หรือ enumeration กระบวนการนี้รวมไปถึง การกำหนดค่าเริ่มต้น properties ของ instance ไปถึงการเตรียมความพร้อมของค่าต่างๆ ที่จำเป็นก่อนที่ instance นี้จะพร้อมสำหรับใช้งาน Initializers คือ method ที่ถูกเรียกเพื่อจะสร้าง instance ใหม่ เราประกาศโดยใช้คีย์เวิรด์ init ตัวอย่างการใช้ struct TrackInfo{ var currentTime:Int init(){ currentTime = 0 } } จากตัวอย่าง structure มี properties อยู่ตัวเดียวคือ currentTime และมี initializer โดยไม่รับ parameter ใดๆ เข้ามาเลย โดยภายในจะทำหน้าที่เซตค่าตั้งต้นให้กับตัวแปร currentTime แต่เราสามารถจะเซตค่าตั้งต้นให้กับตัวแปร currentTime จากวิธีเบื้องต้น หรือเซตค่าตั้งต้นให้ตัวแปรนี้จากตอนประกาศตัวแปรเลยก็ได้ ดังนี้ Read more about iOS Tutorial – Begin with swift ( day 9 )[…]

เกมส์จับคู่คำศัพท์ อักษรญี่ปุ่นกับรูปภาพ

แบบฝึกหัดสำหรับฝึกท่องจำคำศัพท์ โดยสร้างออกมาในรูปแบบเกมส์จับคู่คำศัพท์ภาษาญี่ปุ่นกับรูปภาพ โดยทำการอ้างอิงคำศัพท์, ความหมายและแบบภาพการ์ตูนประกอบคำศัพท์จากหนังสือ Exercise for practice Japanese vocabularies by using matching game in order to match between alphabets and pictures reference from book. หนังสืออ้างอิง(Reference book) ชื่อหนังสือ(title): Draw Japanese วาด+เขียน ญี่ปุ่น Basic(N5-N4) นักเขียน(author): Ebidora วาดภาพประกอบ(illustrator): Mochikaka สำนักพิมพ์(publisher): พราว ลิงค์หนังสือ(link of book): http://www.proudpoet.com/shop/หนังสือ/ภาษาศาสตร์/draw-japanese-วาดเขียน-ญี่ปุ่น-n5-n4/ โดยแบบฝึกหัดนี้ เกิดจากที่ผู้เขียนได้ฝึกท่องจำคำศัพท์โดยอาศัยการคัดตัวอักษรญี่ปุ่นและวาดภาพประกอบจากหนังสือวันละ 1-4 คำ เมื่อคัดคำศัพท์และฝึกท่องจำ จนครบจำนวนในหมวดคำต่างๆ ก็จะนำมาสร้างเป็นแบบฝึกหัดในรูปแบบเกมส์จับคู่ระหว่างตัวอักษร, โรมันจิและรูปภาพ เพื่อใช้สำหรับกลับมาทบทวนคำศัพท์, ความหมายและภาพประกอบของคำศัพท์นั้นๆ ได้เมื่อเวลาผ่านไป ในเวอร์ชันปัจจุบัน เกมส์จับคู่ตัวอักษรกับรูปภาพได้แบ่งออกเป็นสองส่วนดังนี้ Read more about เกมส์จับคู่คำศัพท์ อักษรญี่ปุ่นกับรูปภาพ[…]

เกมส์จับคู่คำศัพท์ ตัวอักษรจีนกับรูปภาพ

แบบฝึกหัดสำหรับฝึกท่องจำคำศัพท์ โดยสร้างออกมาในรูปแบบเกมส์จับคู่คำศัพท์ภาษาจีนกับรูปภาพ โดยทำการอ้างอิงคำศัพท์, ความหมายและแบบภาพการ์ตูนประกอบคำศัพท์จากหนังสือ Exercise for practice Chinese vocabularies by using matching game in order to match between Chinese alphabets and pictures reference from book. หนังสืออ้างอิง(Reference book) ชื่อหนังสือ(title): Draw Chinese วาด+เขียน จีน Basic(HSK3-HSK4) นักเขียน(author): สิรินดา โสภณอรุณโชติ วาดภาพประกอบ(illustrator): ณัฏฐา จุลเสฏฐพานิช สำนักพิมพ์(publisher): พราว ลิงค์หนังสือ(link of book): https://www.proudpoet.com/shop/ภาษาศาสตร์/draw-chinese-วาดเขียน-จีน-hsk3-hsk4/ โดยแบบฝึกหัดนี้ เกิดจากที่ผู้เขียนได้ฝึกท่องจำคำศัพท์โดยอาศัยการคัดตัวอักษรจีนและวาดภาพประกอบจากหนังสือวันละ 1 คำ เมื่อคัดคำศัพท์และฝึกท่องจำ จนครบจำนวนในหมวดคำต่างๆ ก็จะนำมาสร้างเป็นแบบฝึกหัดในรูปแบบเกมส์จับคู่ระหว่างตัวอักษรจีน, พินอินและรูปภาพ เพื่อใช้สำหรับกลับมาทบทวนคำศัพท์, ความหมายและภาพประกอบของคำศัพท์นั้นๆ Read more about เกมส์จับคู่คำศัพท์ ตัวอักษรจีนกับรูปภาพ[…]

Python – OOP(Object-Oriented Programming)

สำหรับ python นั้นภาษาหนึ่งที่รองรับรูปแบบการเขียนโปรแกรมหลายกระบวนทัศน์(multi-paradigm programming language) หรือถ้าให้เรียกง่ายๆ ก็คือรองรับรูปแบบการเขียนโปรแกรมในหลายรูปแบบ(อ่านเพิ่มเติมเกี่ยวกับกระบวนทัศน์) ซึ่งจะสามารถใช้การเขียนโปรแกรมในหลายรูปแบบ ซึ่งคุณลักษณะหนึ่งที่รับมาใช้งานก็คือ รูปแบบการเขียนโปรแกรมแบบหนึ่งที่เป็นที่นิยมกันมากในปัจจุบันคือ การเขียนโปรแกรมเชิงวัตถุ หรือ OOP(Object-Oriented programming language) การเขียนโปรแกรมในรูปแบบเชิงวัตถุนั้น จะให้ความสำคัญกับวัตถุจะเป็นการจัดแบ่งส่วนประกอบต่างๆในโปรแกรมให้เป็นวัตถุ (object) โดยวัตถุจะสามารถดำเนินการต่างๆ ได้, เก็บข้อมูลต่างและสื่อสารเพื่อแลกเปลี่ยนข้อมูลระหว่างกันและ โดยวัตถุหนึ่ง(object)หนึ่งจะประกอบด้วยลักษณะสำคัญ 2 ประการ คือ: – คุณลักษณะ(attributes) สำหรับเก็บข้อมูลต่างๆที่เกี่ยวข้องกับวัตถุนี่ – พฤติกรรม(behavior) เป็นการดำเนินการของวัตถุนี่ อาจจะใช้เพื่อคำนวนต่างๆ หรือส่งข้อมูลไปมา ตัวอย่างเช่น เรากำหนดให้สร้างวัตถุชนิดหนึ่ง(object)แทน การทำงานเกี่ยวกับรถยนต์ ซึ่งภายในวัตถุนี้มีลักษณะสำคัญตามหัวข้อข้างต้นดังนี้ คุณลักษณะ(attributes) ของรถยนต์ ประกอบด้วย: สี, ชนิด, จำนวนล้อ, ความยาว, ความกว้าง, ความสูง พฤติกรรมของรถยนต์(behavior) ประกอบด้วย: เคลื่อนไปข้างหน้า, ถอยไปข้างหลัง, เลี้ยว, จอด เราใช้งาน OOP เพื่อที่สามารถจะช่วยให้ไม่มีการเขียนกลุ่มคำสั่งใดๆ Read more about Python – OOP(Object-Oriented Programming)[…]

Python – User-defined Exception

Python – User-defined Exception สำหรับ python นั้น มี built-in exception ที่สร้างไว้ให้ใช้งานแล้วหลายชนิดตามที่กล่าวถึงไปในบทก่อนหน้านี้ เพื่อให้สามารถรองรับการเกิดข้อผิดพลาดในรูปแบบต่างๆ ที่สามารถเกิดขึ้นในโปรแกรม นอกจากข้อผิดพลาดในรูปแบบดังกล่าว เรายังสามารถที่จะกำหนดวิธีการรองรับข้อผิดพลาดชนิดใหม่ขึ้นเอง(user-defined exception) เพื่อจัดการข้อผิดพลาด หรือ ส่งข้อข้อมูลเฉพาะเจาะจงให้เหมาะสมตามรูปแบบข้อผิดพลาดนั้นได้อีกด้วย วิธีการสร้างการรองรับข้อผิดพลาดชนิดใหม่ๆ ขึ้นมาใช้งานเองนั้น(user-defined exception) สามารถทำได้โดยการสร้างคลาสใหม่สำหรับข้อผิดพลาดนั้น โดยคลาสใหม่ทุกคลาสที่จัดการกับข้อผิดพลาดนี้จะต้องเป็นคลาสที่สืบทอดมาจากคลาส Exception อาจจะเป็นการสืบทอดโดยตรง หรือ สืบทอดต่อกันมาอีกทอด(derived) จากคลาสต้นแบบที่เป็น built-in exception สำหรับคลาสที่เป็น built-in exception ทุกคลาสที่มีให้ใช้งาน ต่างเป็นเป็นคลาสที่สืบทอดมาจากคลาส Exception นี้เช่นเดียวกัน รูปแบบการสร้าง user-defined exception ที่สืบทอดมาจากคลาส Exception โดยตรง เราสามารถสร้าง user-defined exception ขึ้นมาใช้งานเอง โดยการสร้างคลาสขึ้นมาใหม่ และคลาสเหล่านี้จำเป็นต้องสืบทอดมาจากคลาส Exception โดยตรง หรือ คลาสอื่นๆ ที่สืบทอดมาจากคลาส Read more about Python – User-defined Exception[…]

Python – Exception Handling(Try, Except และ Finally)

Python – Exception Handling(Try, Except และ Finally) ทำความรู้จักกับ exception ในบทนี้เราจะมาพูดถึงขั้นตอนในการเขียนคำสั่งเพื่อดักจับข้อผิดพลาดในรูปแบบต่างๆ ที่อาจเกิดขึ้นได้ในโปรแกรมที่เราเขียนขึ้นมาใช้งาน จากบทที่แล้ว ที่เราได้พูดถึงชนิดของข้อผิดพลาดที่มีให้ใช้งานกันใน python(built-in exception) ซึ่งเมื่อเกิดข้อผิดพลาดในระหว่างการดำเนินการคำสั่งต่างๆ ก็จะมีการแจ้งข้อผิดพลาดนั้นออกมา โดยสามารถจะมีรูปแบบที่เฉพาะเจาะจงตามชนิดของข้อผิดพลาดนั้นๆ หรืออาจจะมีรูปแบบอธิบายข้อผิดพลาดแบบกว้างๆ ก็ได้ เมื่อเกิดข้อผิดพลาด(exceptions) ขึ้นในระหว่างการดำเนินการทำคำสั่ง หากเรามีการเขียนคำสั่งเพื่อจัดการกับข้อผิดพลาดได้ถูกต้องและครอบคลุมถึงชนิดข้อผิดพลาดดังกล่าว และมีการปรับคำสั่งรองรับให้เหมาะสม เราสามารถจะข้ามขั้นตอนที่ทำให้เกิดข้อผิดพลาดนั้นไป และไปทำงานในคำสั่งส่วนอื่นๆ หรืออาจจะให้โปรแกรมหยุดการทำงานแต่ก็แจ้งรายละเอียดข้อผิดพลาดที่เหมาะสมและเข้าใจง่ายได้ แต่หากเราไม่มีการเขียนคำสั่งเพื่อจัดการกับข้อผิดพลาดเลย อาจจะส่งผลให้โปรแกรมที่ดำเนินการอยู่หยุดลงทันที โดยไม่ได้ทำการบันทึกข้อมูลสำคัญ, จัดการกับข้อมูลที่ได้ประมวลผลก่อนหน้า หรือ ปรับข้อความให้เหมาะสมเผื่อให้ผู้ใช้งานสามารถเข้าใจถึงข้อผิดพลาดได้ง่าย ตัวอย่างเช่น ถ้าหากมีการเขียนโปรแกรมให้ฟังก์ชัน A เรียกใช้ฟังก์ชัน B ซึ่งเรียกใช้ฟังก์ชัน C อีกที แล้วมีข้อผิดพลาดเกิดขึ้นในฟังก์ชัน C ถ้าภายในฟังก์ชัน C มีการเขียนคำสั่งเพื่อจัดการข้อผิดพลาด โดยอาจเป็นการระบุค่าที่เหมาะสม หรือปรับอัลกอริทึมให้เหมาะสม แล้วแจ้งข้อมูลข้อผิดพลาดนั้นและวิธีแก้ไขให้ผู้ใช้ทราบเพื่อเป็นข้อมูล ก็สามารถข้ามไปทำคำสั่งอื่นๆ ต่อไปได้โดยไม่หยุดการทำงานของโปรแกรม แต่ถ้าไม่มีการเขียนคำสั่งเพื่อจัดการข้อผิดพลาด(handle exception) ไว้ในฟังก์ชัน C Read more about Python – Exception Handling(Try, Except และ Finally)[…]

Python – Error and Built-in Exceptions

Python – Error and Built-in Exceptions เมื่อต้องเขียนโปรแกรมที่มีความซับซ้อนมากขึ้น บ่อยครั้งภายในระบบที่ซับซ้อนอาจเกิดข้อผิดพลาดในระหว่างการทำคำสั่งต่างๆ ได้ โดยข้อผิดพลาดนั้นอาจจะเกิดขึ้นได้เนื่องจากหลายสาเหตุ ในบทนี้เราจะมาเรียนรู้เกี่ยวกับรูปแบบของ ข้อผิดพลาดที่เกิดจากการเขียนโปรแกรมไม่ถูกต้องตามหลักภาษา และ ข้อผิดพลาดที่เกิดในระหว่างการดำเนินการของโปรแกรม ข้อผิดพลาดที่เกิดจากการเขียนคำสั่งไม่ถูกต้องตามหลักภาษา ข้อผิดพลาดที่เกิดจากการเขียนคำสั่งไม่ถูกต้องตามหลักภาษา(syntax error, parsing error) ข้อผิดพลาดแบบนี้จะเกิดในช่วงที่กำลังแปรผลคำสั่งของโปรแกรม ให้เป็นภาษาของคอมพิวเตอร์เพื่อใช้สำหรับดำเนินการทำคำสั่งต่อไป ซึ่งจะมีการแจ้งข้อผิดพลาดและระบุรายละเอียดว่าคำสั่งส่วนใดที่ไม่ถูกต้องตามหลักภาษา ตัวอย่างการใช้งาน # -*- coding: utf-8 -*- # เรียกใช้งานไลบรารี่ math import math # ฟังก์ชันสำหรับคำนวณระยะทางจากข้อมูลความเร็วต้น, ความเร่งและเวลา def calculate_distance(initial_velocity, acceloration, time) distance = initial_velocity*time + (1.0/2.0)*acceloration*math.pow(time, 2) return distance # คำนวณระยะทางที่ม้าตัวหนึ่งสามารถวิ่งได้ เมื่อเวลาผ่านไป 10 วินาที โดยกำหนดให้ # Read more about Python – Error and Built-in Exceptions[…]

Python – Directory and Files Management

Python – Directory and Files Management สำหรับโปรเจคขนาดใหญ่ที่มีการแยกไฟล์ไว้เป็นกลุ่มตามการทำงานที่เกี่ยวเนื่องกัน อาจจะจัดการนำไฟล์เหล่านั้นมาจัดลงในโฟลเดอร์ย่อยๆ เพื่อจะง่ายต่อการเรียกใช้งาน, ค้นหาและทำการแก้ไข เมื่อมีการแยกส่วนกันสำหรับไฟล์จำนวนมาก เมื่อจำเป็นต้องเรียกใช้งานเพื่อแก้ไข, เพิ่มข้อมูล หรือลบ ไฟล์เหล่านั้น เราก็จำเป็นที่จะต้องสามารถระบุตำแหน่งของแต่ละไฟล์และแต่โฟลเดอร์เหล่านั้น เพื่อจะสามารถดำเนินการได้ถูกต้อง สำหรับ python นั้นสามารถเรียกใช้งานไลบรารี่ เช่น ไลบรารี่ os ในการเข้าถึงและทำการแก้ไขกับโครงสร้างการจัดเก็บข้อมูลของไฟล์และโฟลเดอร์เหล่านั้น พร้อมกับข้อมูลตำแหน่งที่ตั้งของไฟล์ต่างๆภายในระบบปฏิบัติการนั้นอีกด้วย สำหรับในบทความนี้เราจะใช้ตัวอย่าง จากโครงสร้างการจัดเก็บข้อมูลภายในโฟลเดอร์หนึ่งที่ถูกเก็บไว้ตรงตำแหน่ง “/home/<user>/works/python_tutorial/directory_and_files_management/”( โดย <user>: อ้างอิงถึงชื่อผู้ใช้งานระบบปฏิบัติการ ซึ่งอาจจะเปลี่ยนแปลงตามชื่อผู้ใช้งานที่ใช้ login เข้าใช้ระบบปฏิบัติการ ณ เวลานั้น) สำหรับโฟลเดอร์ดังกล่าวนั้นทำการเก็บไฟล์สำหรับข้อมูลเวปไซต์เวปหนึ่ง โดยจะมี ไฟล์ “index.html” สำหรับหน้าหลักของเวปไซต์ โฟลเดอร์ “css” สำหรับเก็บข้อมูลเกี่ยวกับ stylesheet โฟลเดอร์ “javascript” สำหรับเก็บข้อมูลเกี่ยวกับฟังก์ชันต่างๆในภาษา javascript โฟลเดอร์ “images” สำหรับเก็บรูปภาพที่จะต้องทำการใช้งานภายในเวปไซต์ดังกล่าว โดยจะมีโครงสร้างของไฟล์และโฟลเดอร์ดังแผนภาพด้านล่างนี้นี้ สำหรับฟังก์ชันที่เรียกใช้งานในตัวอย่างสำหรับบทนี้นั้น ได้ทำการคำสั่งจาก Read more about Python – Directory and Files Management[…]