WPF Layout (Part I)

Introduction to WPF Layout การอออกแบบ controls  คือส่วนสำคัญของการออกแบบโปรแกรมที่นำมาใช้งาน การจัดวาง controls ที่มีการกำหนดค่าขนาดของ pixel ของ controls นั้นๆ อาจจะใช้งานได้ดีในกรณีสภาพแวดล้อมที่ถูกจำกัด แต่ในขณะเดียวกันจะได้ผลลัพธ์ที่ไม่พึงประสงค์นักหากไปแสดงบนหน้าจอที่มีความละเอียดของหน้าจอหรือขนาดของตัวอักษรที่ต่างกันออกไป WPF จึงมีการนำ panel มาแก้ไขปัญหาในส่วนนี้  โดย panel ที่ใช้ในการจัดวาง Layout มีอยู่ 5 ชนิดที่นิยมใช้การการออกแบบดังนี้ Grid Panel Stack Panel Dock Panel Wrap Panel Canvas Panel Best Practices หลีกเลี่ยงการกำหนดค่าตำแหน่ง : กรณีที่ต้องการกำหนดตำแหน่งการวาง controls ใน panel ควรใช้ Alignment properties ร่วมกับ Margin เพื่อกำหนดค่าตำแหน่งใน panel แทนการกำหนดเป็นค่าคงที่ในตำแหน่งนั้นๆ หลีกเลี่ยงการกำหนดขนาด : ควรกำหนด Width และ Height ของ element ให้เป็น Auto ไม่ใช้ canvas panel ในการจัดวาง layout ของ element ใช้ canvas panel กรณีที่เป็น vector graphic เท่านั้น ควรใช้ Stack panel เพื่อจัดเรียงปุ่ม ใช้ grid panel ในกับ form ที่เป็น form สำหรับการรับข้อมูลเข้า โดย control ที่อยู่ใน grid panel ที่เป็น label ควรกำหนดขนาดเป็น Auto และ controlที่เป็น Textbox ควรกำหนดขนาดเป็น * ใช้ itemControl ใน DataTemplate ของ grid panel เพื่อใช้ในการจัดวาง control ที่แสดงข้อมูลที่มีการเปลี่ยนแปลงของ keyตลอดเวลา และควรใช้ SharedSize เพื่อให้ label มีขนาดความกว้างเท่ากัน Vertical and Horizontal Alignment ใช้ VerticalAlignment และ HorizontalAlignmant properties เพื่อกำหนด  Control ให้อยู่ในส่วนเดียวกันหรือหลายๆส่วนใน panel   นั้นๆ  โดยมีตัวอย่างดังภาพ Margin and Padding Margin และ Padding properties จะจองพื้นที่ช่องว่างรอบๆของcontrol ดังนี้ • The Margin คือ ส่วนของช่องว่างรอบๆของ control. • The Padding คือส่วนของช่องว่างที่อยู่ภายใน control. • The Padding ของ control ที่อยู่ภายนอก คือ Margin ของ control ที่อยู่ภายใน Control นั้นๆ Height and Width ไม่แนะนำให้กำหนดค่า Height และ Width เนื่องจากจะทำให้ยุ่งยากในการจัดการ  การจัดการที่ดีควรจะกำหนดค่า  MinHeight, MaxHeight, MinWidth และ MaxWidth ตามต้องการ  หรือหากต้องการกำหนด width หรือ height เป็น Auto ขนาดของ controls ก็จะมีขนาดเท่ากับของข้อมูลโดยอัตโนมัติ Overflow Handling Clipping ในกรณีที่ elementsซ้อนทับ border ของ panel เราจะกำหนดการแสดงการจัดวางของ control โดยใช้ ClipToBounds property โดยมีกำหนดค่าเป็น  true หรือ false  ดังรูป Scrolling กรณีที่เนื้อหาของข้อมูลมีจำนวนมากเกินกว่าขนาดของ panel

Read More »

การบริหารโครงการโดยใช้เครื่องมือ Team Foundation Server (Phase 5 : การตรวจสอบงานที่ได้รับมอบหมาย และการบันทึกผลการทำงาน)

จากบทความ การบริหารโครงการโดยใช้เครื่องมือ Team Foundation Server (Phase 4 : การวางแผนงาน) เป็นบทบาทของ Project manager ในการมอบหมายงานให้กับสมาชิกในทีม สำหรับในบทความนี้ จะกล่าวถึงในมุมมองของสมาชิกทีมที่ได้รับมอบหมายงานบ้าง ว่าจะสามารถเข้าไปดูงานที่ได้รับมอบหมายได้อย่างไรได้บ้าง เรามาดูกันเลยนะค่ะ… สำหรับสมาชิกในทีม สามารถตรวจสอบงานที่ได้รับมอบหมาย ได้ในมุมมองดังนี้ Step 1 จาก TFS เลือกโครงการที่ต้องการตรวจสอบงานที่ได้รับอบหมาย ตามรูปที่ 1 Step 2 เลือก Work จากนั้นเลือก Blacklogs และเลือก Sprint ที่ต้องการ ดังรูปที่ 2 Step 3 ทำการเลือกชื่อของตนเอง ดังรูปที่ 3 Step 4 จะแสดง Tasks ที่ได้รับมอบหมาย ตามรูปที่ 4 นะค่ะ จากขั้นตอนข้างต้น ทำให้เจ้าตัวทราบว่า มี Tasks อะไรบ้างที่ได้รับมอบหมาย แต่ละ Task มีสถานะเป็นอย่างไรแล้วบ้าง ซึ่งได้แก่ ยังไม่ดำเนินการ กำลังดำเนินการ หรือดำเนินการเสร็จไปเรียบร้อยแล้วนั่นเอง…ยังมีอีกมุมมองนึงที่ทีมงานสามารถตรวจสอบปริมาณงานว่า งานที่ได้รับมอบหมาย มีปริมาณคงเหลือมากน้อยเพียงใด โดยตรวจดูจากเวลาที่เหลือ ดังนี้ค่ะ ^__^ เลือก Backlogs สามารถดูเวลางานที่เหลือจาก Work by Assigned to และดูจากชื่อของตนเอง ว่ามีจำนวนชั่วโมงเวลาที่เหลือเท่าไหร่ หากมีปริมาณชั่วโมงเยอะ แสดงว่าปริมาณงานยังเยอะอยู่นะค่ะ… ขั้นตอนสามารถดูได้จากรูปที่ 5 นะค่ะ จากบทความข้างต้น เป็นการตรวจสอบปริมาณงานของทีมงานแต่ละคนนะค่ะว่าได้รับมอบหมายงานอะไรบ้าง มีปริมาณเหลือมากน้อยเพียงใด ขั้นตอนต่อไปปจะเล่าถึงขั้นตอนของการบันทึกผลการปฏิบัติงานให้ฟังต่อนะค่ะ สำหรับการบันทึกผลการปฏิบัติงาน สามารถทำได้ดังนี้ค่ะSpet 1 เลือก Work จากนั้นเลือก Blacklogs และเลือก Sprint ที่ต้องการ ดังรูปที่ 6 Step 2 เลือก Task ที่ต้องการบันทึกผล จะแสดงดังรูปที่ 7 จากรูปที่ 7 จะต้อง Update ข้อมูลต่าง ๆ ดังนี้1. State โดยประกอบด้วย Inprogress คือ กำลังดำเนินการ และ Todo หมายถึง ดำเนินการเสร็จเรียบร้อยแล้ว2. Remaining work ให้ระบุจำนวนชั่วโมงที่เหลือ3. History ให้ระบุข้อมูลต่าง ๆ ที่ดำเนินการ โดยสามารถแนบไฟล์ต่าง ๆ เข้าไปได้เมื่อใส่รายละเอียดเรียบร้อยแล้ว ก็ทำการกดปุ่ม Save เพื่อบันทึกผลการปฏิบัติงาน ขั้นตอนง่าย ๆ ไม่ยากใช่ไม๊ค่ะ เห็นไม๊ค่ะว่า TFS สามารถช่วยเรื่องการวางแผน การมอบหมาย และการบันทึกผลการทำงานได้ ในครั้งต่อไป จะมากล่าวมุมมองการติดตามการดำเนินงาน หรือติดตามผลการปฏิบัติงาน ว่าเป็นไปตามแผนที่วางไว้หรือไม่…อย่าลืมติดตามกันต่อนะค่ะ… ขอบคุณค่ะ

Read More »

ทำความรู้จัก Xamarin.Forms + วิธีติดตั้งบน Windows

การพัฒนา Mobile Application ปัจจุบันมีหลากหลาย solution ให้เลือกใช้ ไม่ว่าจะเป็นการพัฒนาแบบ native แยกตามแต่ละแพลตฟอร์ม , พัฒนาแบบ hybrid และแบบ cross platform นอกจากจะมีรูปแบบการพัฒนาให้พิจารณาเลือกแล้ว ยังมี Mobile framework ที่หลากหลายที่เรานำมาใช้ในการพัฒนา app ไม่ว่าจะเป็น React Native, Ionic, Fluter,Android Studio, Xcode, Xamarin เป็นต้น โดยบทความนี้ผู้เขียนจะมาแนะนำ Xamarin.Forms ซึ่งเป็น framework หนึ่งที่นิยมใช้ในการพัฒนา mobile app กัน พร้อมทั้งแนะนำวิธีติดตั้งเครื่องมือเพื่อใช้งาน Xamarin คืออะไร? Xamarin คือ framework หนึ่งในการพัฒนา mobile app แบบ cross platform ของค่าย Microsoft ที่สามารถเขียน code ด้วยภาษา C# แล้วคอมไพล์เป็น native app ให้สามารถรันบน ios , android และ windows platforms ได้ ซึ่งปัจจุบันตัว Xamarin เองก็มีรูปแบบการพัฒนาออกเป็น 2 แนวทาง คือ Xamarin Native และ Xamarin.Forms แล้ว Xamarin.Forms กับ Xamarin Native ต่างกันยังไง? Xamarin Native หรือที่ฝรั่งเรียก Traditional Xamarin Approach เนี่ยเป็นรูปแบบที่ทาง Xamarin ได้พัฒนาออกมาใช้เป็นรูปแบบแรก (ปัจจุบันก็ยังมีให้ใช้อยู่) ซึ่งเป็น shared code platform concept โดยเราสามารถใช้ code ฝั่ง business logic ร่วมกันได้ แต่ code ฝั่ง UI เราก็ต้องเขียน code แยกตาม sdk ของแต่ละ platforms ซึ่งผู้พัฒนาต้องรู้จักการใช้ control ต่างๆ การวาง layout ของแต่ละ platform มาพอสมควร Xamarin.Forms เป็น concept และ tools รูปแบบใหม่ของ Xamarin ที่สามารถแชร์ code ระหว่าง platform ได้ 100% คือสามารถเขียน code เพียงครั้งเดียวทั้งฝั่ง business logic และ UI แล้วคอมไพล์เป็น native app ให้รันได้ทุก platforms (ios, android และ windows) ในส่วนของ UI จะเขียนด้วย XAML เช่นเดียวกับ WPF แต่ต่างกันที่การจัด layout และ control UI ที่มีแตกต่างกัน ซึ่งหากนักพัฒนาคนไหนเคยเขียน WPF มาแล้วก็สามารถเขียน mobile app ด้วย Xamarin.Forms ได้ง่ายขึ้น Xamarin.Forms เหมาะกับ? Developer ที่คุ้นเคยกับ .NET framework เนื่องจากจะคุ้นเคยกับ Tools ที่ใช้งานและทำให้เข้าใจ concept และสามารถพัฒนา app ได้รวดเร็วยิ่งขึ้น พัฒนา Data Entry app เนื่องจาก Xamarin.Forms มี Simple UI control ให้พร้อมใช้งาน ต้องการ app ที่คุ้มค่าแต่ใช้ budget น้อย

Read More »

การทดสอบซอฟต์แวร์ (Software Testing) – 7 ข้อมูลที่ผู้ทดสอบต้องทราบก่อนเริ่มการทดสอบซอฟต์แวร์

บทความนี้ ไม่ได้เกี่ยวข้องกับ 7 สิ่งมหัศจรรย์ของโลกนะคะ (ก็แหงอ่าาจิ) แต่ผู้เขียนจะนำเสนอ 7 ข้อมูลที่ผู้ทดสอบต้องทราบก่อนเริ่มการทดสอบซอฟต์แวร์ (นอกเหนือจากความรู้เกี่ยวกับ Software Testing ที่ทุกท่านต้องทราบกันดีอยู่แล้ว) ซึ่งได้รวบรวมมาจากประสบการณ์ของผู้เขียนเองเผื่อจะเป็นประโยชน์สำหรับผู้ทดสอบท่านอื่น ๆ ค่ะ ตามตารางข้างล่างนี่เลยยยค่ะ ตารางข้างต้นนั้น หวังว่าคงจะเป็นข้อมูลที่ช่วยให้ผู้ทดสอบในการเตรียมตัวทดสอบ ไม่มากก็น้อยนะคะ 🙂 ลองเอาไปปรับใช้กันดูนะคะ ยังมีข้อมูลอีกหลายส่วนเลยล่ะคะ ไปลองตั้งคำถามกับตัวเองก่อนเริ่มทดสอบดูนะคะ ว่าเราต้องทราบอะไรบ้างงงน๊าาาาา ที่จะเป็นประโยชน์ก่อนที่เราจะลงมือทดสอบซอฟต์แวร์กัน

Read More »

การทดสอบซอฟต์แวร์ (Software Testing) – #2 (Step.1) ผู้ทดสอบรับการถ่ายทอดการทำงานของซอฟต์แวร์ที่จะทดสอบจากนักพัฒนาโปรแกรม

จากตอนที่ 1 เราได้ทราบภาพรวมกิจกรรมและขั้นตอนต่างๆ ทั้งหมดในการทดสอบซอฟต์แวร์กันไปแล้ว ตอนที่ 2 ผู้เขียนจะลงลึกในรายละเอียดขั้นตอนที่ 1 ของการทดสอบซอฟต์แวร์กันค่ะ โดยขั้นตอนที่ 1 นั่นก็คือ 1. ผู้ทดสอบรับการถ่ายทอดการทำงานของซอฟต์แวร์ที่จะทดสอบจากนักพัฒนาโปรแกรม ขั้นตอนนี้เป็นการถ่ายทอดการทำงานของซอฟต์แวร์จากนักพัฒนาโปรแกรมให้กับผู้ทดสอบเพื่อให้ผู้ทดสอบทราบภาพรวม ขอบเขตและเข้าใจการทำงานทั้งหมดของซอฟต์แวร์ก่อนเริ่มการทดสอบ รวมถึงรวบรวม Task Test ทั้งหมดของซอฟต์แวร์ที่จะทดสอบค่ะ ผู้เขียนขอย่อยการดำเนินการในขั้นตอนที่ 1 เพื่อให้เข้าใจง่าย ๆ ตาม Flowchart นี้นะคะ อธิบายดังนี้ ค่ะ 1. เริ่มจากการนัดหมายเวลาในการถ่ายทอดการทำงานของวอฟต์แวร์กันก่อนค่ะ โดยนักพัฒนาโปรแกรมจะนัดวันเวลาที่จะถ่ายทอดการทำงานของซอฟต์แวร์ให้กับผู้ทดสอบกับผู้จัดการโครงการ ซึ่งจะต้องนัดล่วงหน้า ระยะเวลาเท่าไหร่นั้นก็ตามแล้วแต่เห็นสมควรและพิจารณากันเอาเองค่า อย่างทีมของผู้เขียน ก็จะนัดอย่างน้อย 1 สัปดาห์ก่อนเริ่มการทดสอบค่ะ (นัดทำไม นัดกันให้ชัดเจน จะได้เตรียมตัวเตรียมใจถูกเตรียมสมองให้โล่งงงงค่ะกันถ้วนหน้าค่ะ) 2. เมื่อได้วันเวลากันเรียบร้อยแล้ว ผู้จัดการโครงการก็แจ้งวันเวลาที่นักพัฒนาโปรแกรมจะถ่ายทอดการทำงานของซอฟต์แวร์ให้กับผู้ทดสอบรับทราบค่ะ (PM ซึ่งถือว่ามีอำนาจการจัดการบริหารในทีม ก็จะมาแจ้งให้ทราบบ อิอิ สบายใจกันทุกฝ่ายค่ะ) 3. เมื่อถึงวันเวลาตามที่ได้นัดหมายไว้ นักพัฒนาโปรแกรมก็จะมาถ่ายทอดการทำงานของซอฟต์แวร์ให้กับผู้ทดสอบค่ะ ในขั้นนี้โปรแกรมเมอร์ต้องถ่ายทอดการทำงานของซอฟต์แวร์ให้กับผู้ทดสอบอย่างละเอียด และจัดเตรียม Software Requirements Specification และ Functional Design ของซอฟต์แวร์มาให้กับผู้ทดสอบด้วยนะคะ (จะได้ใช้เป็นข้อมูลตอนทดสอบค่ะ บางทีที่จดๆๆ เข้าใจมา ก็อาจจะผิดพลาดได้) –> ในการถ่ายทอดการทำงานของซอฟต์แวร์ นักพัฒนาโปรแกรมต้องอธิบาย ภาพรวมทั้งหมดและการทำงานของซอฟต์แวร์ว่ามีการทำงานอะไรบ้างและทำงานอย่างไร ซอฟต์แวร์มีข้อจำกัดอะไรบ้างเพื่อผู้ทดสอบจะได้เข้าใจและทราบข้อมูลที่จะนำไปทดสอบ –> โดยในระหว่างการถ่ายทอดการทำงานของซอฟต์แวร์ หากผู้ทดสอบมีข้อสงสัยเกี่ยวกับการทำงานของซอฟต์แวร์ ผู้ทดสอบควรซักถามจากนักพัฒนาโปรแกรมหรือศึกษาจาก Software Requirements Specification และ Functional Design ของซอฟต์แวร์ที่จะทดสอบให้เข้าใจนะคะ ไม่ควรเก็บข้อสงสัยนั้นไว้หรือทดสอบซอฟต์แวร์ไปตามความคิดของตนเองเพราะจะส่งผลให้การทดสอบนั้นดำเนินการไปในแนวทางที่ไม่ถูกต้อง การทดสอบอาจล่าช้ากว่าที่ได้กำหนดไว้ซึ่งเกิดจากผู้ทดสอบเอง และอาจไม่สามารถค้นหาข้อผิดพลาดที่มีอยู่ของซอฟต์แวร์ได้ค่ะ ผู้เขียนได้รวบรวมข้อมูลจากประสบการณ์ทดสอบซอฟต์แวร์ที่ผ่านมา และสรุปเป็นข้อมูลที่ผู้ทดสอบต้องทราบก่อนเริ่มการทดสอบซอฟต์แวร์เอาไว้ด้วยค่ะ ไว้จะมาแชร์ไว้ในบทความหน้าให้อ่านกันนะคะ (อัพเดท ตามไปอ่านกันได้ที่ บความเรื่อง 7 ข้อมูลที่ผู้ทดสอบต้องทราบก่อนเริ่มการทดสอบซอฟต์แวร์ นะคะ) ส่วนบทความนี้มาต่อที่ขั้นตอนถัดไปกันก่อนนะคะ 4. เมื่อผู้ทดสอบทราบข้อมูลก่อนการทดสอบซอฟต์แวร์แล้ว ให้บันทึกข้อมูลเหล่านั้นลงในฟอร์มบันทึกการทดสอบและผลการทดสอบส่วนที่ 1 คือ Test Information ที่ได้จัดเตรียมไว้ค่ะ ตัวอย่างค่ะ และขั้นสุดท้ายยยยยยยยยยยยย 5. ผู้ทดสอบรวบรวบการทำงานทั้งหมดของซอฟต์แวร์ที่จะทดสอบโดยรวบรวมจาก Function หรือ Use Case ของซอฟต์แวร์ซึ่งตรงตามข้อกำหนดของซอฟต์แวร์ที่ได้ระบุไว้ (หากโปรแกรมมีผู้ใช้หลายบทบาทให้แยก Task Test ตามบทบาทการใช้งาน) โดย Function เหล่านั้นจะถูกบันทึกเป็น Task Test ในการทดสอบและระบุ Task Test No. เอาไว้ (1 Task Test เท่ากับ 1 ชุดการทดสอบ) เพื่อเตรียม Test Step และออกแบบ Test Case สำหรับทดสอบแต่ละ Task Test ในขั้นตอนต่อไป สำหรับ Task Test No. นั้นแนะนำให้ตั้งโดยใช้ตัวอักษรย่อเพียงสองถึงสามตัวและตามด้วยตัวเลขที่จะเรียงลำดับไปเรื่อย ๆ เช่น TE001 เป็นต้น Task Test คือ ชุดการทดสอบของแต่ละการทำงาน (Function) ต่าง ๆ ของซอฟต์แวร์ ตัวอย่างค่ะ สำหรับรายละเอียดของขั้นตอนที่ 1 ก็มีเท่านี้ค่ะ ส่วนบทความหน้านั้น ผู้เขียนจะมาแชร์ข้อมูลที่ผู้ทดสอบต้องทราบก่อนเริ่มการทดสอบซอฟต์แวร์ไว้ให้นะคะ และบทความถัดไปจะลงลึกในรายละเอียดขั้นตอนที่ 2 (#3) กันต่อค่ะ

Read More »