วันอังคารที่ 23 มกราคม พ.ศ. 2561

Export to .csv file




    ในสัปดาห์การเรียนในสัปดาห์ที่ 2 นั้น อ.SPN ได้ให้ทดลอง export CSV format หรือ ก็คือให้ดาวน์โหลดตัวข้อมูลเกรดที่ได้ทำใน spreadsheet ครั้งที่แล้วให้มาเป็นไฟล์ CSV เพื่อที่จะนำไปใช้ในการเขียนโปรแกรม Python เพื่อทำการคำนวณเกรด 
  
   โดยหลังจากที่ได้ทดลองดาวน์โหลดมาแล้วผลที่ได้ก็คือ ไฟล์ csv ดังภาพ


    ไฟล์ csv ดังกล่าวนั้นไม่เหมาะแกการจะนำไปใช้ในการเก็บข้อมูลคำนวณเกรด เพราะมีคอลัมน์บางคอลัมน์ที่ไม่จำเป็น ผมเลยทำการแก้ spread sheet และ เอาเฉพาะข้อมูลที่จำเป็นมาเท่านั้นได้แก่


    1. ภาคการเรียน
    2. ชื่อวิชา
    3. หน่วยกิต
    4. ตอนเรียน
    5. เกรด(ABC)
    6. เกรด(ตัวเลข)
    7. หน่วยกิตที่ลง

    โดยหลังจากแก้เสร็จได้ทำการ export ผลที่ได้คือ





วันอังคารที่ 16 มกราคม พ.ศ. 2561

Score and Grade



    จากสไลด์ของอาจารย์ SPN ได้กำหนดไว้ว่า ให้นศ.ทุกคนลองใช้ spreadsheet เพื่อทำการคำนวณ GPA ของนศ. แต่ละคนออกมา

    โดยอาจารย์ SPN ได้กำหนดให้ลองใช้ spreadsheet ของตัว Google


    โดยผมได้จัดทำ spreadsheet และทำตามที่อาจารย์ SPN ได้กำหนดไว้ โดยใช้วิธีในการทำแบบพื้นฐาน ไม่ได้ซับซ้อนอะไร

    ในตัวงานนั้นจะเป็น spreadsheet ซึ่งจะมีส่วนประกอบเป็นตารางมีคอลัมน์ มีแถว ในการอธิบายนั้นผมจะขออธิบายตามคอลัมน์ต่างๆ ซึ่งจะเป็นการเก็บข้อมูลหลายๆข้อมูลของแต่ละวิชา

    ในส่วนของคะแนน และ รายชื่อวิชาต่างๆนั้นนำมาจากเว็บทะเบียนของมหาลัยเพื่อใช้ในการอ้างอิง เพื่อตรวจสอบความถูกต้องของ เกรด และ คะแนน

Column(หลัก)

1. ปีการศึกษา


2. รายชื่อวิชา


3. หน่วยกิตกับตอนเรียน


4. เกรด


    ในส่วนนี้จะมีการแปลงเกรดจากที่เป็นตัวอักษรภาษาอังกฤษมาเป็นตัวเลข โดยใช้เงื่อนไข if ของ excel ดังนี้ 

=IF(E2="A",4,IF(E2="B+",3.5,IF(E2="B",3,IF(E2="C+",2.5,IF(E2="C",2,IF(E2="D+",1.5,IF(E2="D",1,0)))))))

ถ้าหากช่อง E2(คอลัมน์เกรดที่เป็นตัวอักษร) ตรงกับเงื่อนไขใดก็จะแปลงเป็นตัวเลขแล้วใส่ในช่อง F2(คอลัมน์เกรดที่แปลงเป็นตัวเลข)

คอลัมน์เกรด*หน่วยกิต ไว้สำหรับใช้ในการคำนวณเกรดโดยจะมีสูตรการคิดเกรดเฉลี่ยนรวมก็คือ นำเอาเกรด*หน่วยกิตของแต่ละวิชาแล้วจับมาหาผมรวม แล้วหารด้วยหน่วยกิตทั้งหมด
เกรดเฉลี่ย = ผลรวมทุกวิชาของ(หน่วยกิตของวิชา*เกรดที่ได้)/หน่วยกิตทั้งหมด

5. หน่วยกิตทั้งหมด


    หน่วยกิตที่ลงทั้งหมดในปีการศึกษานั้นบวกกัน

6. เกรดเฉลี่ยประจำเทอมและสะสม


        คิดได้จากสูตรในข้อที่ 4. หรือ ก็คือนำหน่วยกิตแต่ละวิชามาคูณกับเกรดที่ได้และจับหาผลรวมของทุกๆวิชา และหารด้วยหน่วยกิตทั้งหมดที่ลงจะได้ เกรดเฉลี่ยประจำเทอม ส่วนเกรดเฉลี่ยสะสมจะเอาทุกเกรดที่มีอยู่มารวมกันแล้วหารด้วยจำปีการศึกษาทั้งหมด

ผลลัพธ์



    ซึ่งหากนำไปเทียบกับที่ทางมหาลัยเป็นคนคิดนั้นผลก็คือตรงตามที่ได้ทดลองทำเอง









    ลิงค์ตัว spreadsheet (เฉพาะคนที่มี email.kmutnb.ac.th)












Database System


    หลังจากโพสต์นี้เป็นต้นไปจะเป็นโพสต์ที่เกี่ยวข้องกับวิชา Database System ประจำปีการศึกษา 2/2560

วันเสาร์ที่ 8 กรกฎาคม พ.ศ. 2560

Functional Test

    ในการ test แบบ functional test จะขออธิบายไล่ถ้าได้ test อะไรบ้าง จะไม่ได้อธิบายเป็น commit ต้องขออภัยด้วย เพราะว่าตอนทดลองทำ test ได้ทำแล้วก็แก้ แล้วก็ทำต่อเลยไม่ได้ทำการ commit

    เป็น method เรียกใช้ตัวเองในการกำหนด browser ที่จะใช้ในการ test ในกรณีนี้จะเป็น firefox และจะมีการเรียกใช้ method create_test_date() เพื่อใช้ในการสร้างข้อมูลเพื่อใช้ในการ test

    เหตุผลที่จะต้องมีการสร้างข้อมูลก่อนเทสนั้นก็เพราะว่า web app ตัวนี้จะเป็น web app ที่ใช้ในการสุ่ม รายชื่ออาหารซึ่งเป็นข้อมูลใน Database ซึ่งมันจะต้องมีข้อมูลเพื่อใช้ในการสุ่ม แต่ว่าในการ test นั้นเราจะใช้ Database จำลองซึ่งจะไม่มีข้อมูล และ สามารถใส่ข้อมูลจากการ test ได้ โดยไม่ไปกระทบกับตัวข้อมูล ของ Database ที่ใช้งานอยู่จริงๆ











    Method tearDown จะเป็น method เรียกใช้ตัวเอง เพื่อใช้ในการปิด browser หลังจากที่ได้ทำการ test เสร็จแล้ว

    Method create_test_data() จะทำการสร้างข้อมูลลงไปใน Database จำลองเพื่อใช้ในการทดลองสุ่มอาหาร ซึ่งจะใส่ไว้แค่ตัวเดียว เพื่อที่จะดูว่ามีการแสดงผลที่ถูกต้องหรือไม่






































    ในการ test จะ test ตาม user story ที่ได้เขียนเอาไว้ โดย ตอนแรกจะทำการค้นหา title ของ web page ก่อน หลังจากนั้น ก็จะทำการกด ปุ่มโดยค้นหา element โดยใช้ id ว่า button_box โดยจะถูกกำหนดไว้ตอนเขียน web app หลังจากนั้นจะใช้คำสั่ง click() เพื่อทำการคลิกปุ่มแล้วก็จะ check หา id ที่เป็น choice หรือ ก็คือ เหล่าตัวเลือกหมวดอาหาร

    พอค้นหาเจอแล้วก็จะใช้คำสั่ง click เช่นเดิม แล้วก็จะหา id submit ซึ่งจะเป็นปุ่มกด submit นั้นเอง แต่วิธีกดจะไม่เหมือนเดิมเพราะจะใช้การ send_keys(Keys.ENTER) หรือ ก็คือสั่งให้กด Enter นั้นเอง ก็จะไปหน้าผลลัพธ์ แล้วก็ จะค้างไว้ 5 วินาทีเพื่อดูผล แล้วหน้าต่างจะปิดลง แล้วขึ้น Finish the test! ไว้ที่หน้าต่าง terminal

วันพฤหัสบดีที่ 29 มิถุนายน พ.ศ. 2560

แก้ไขเพิ่มเติม

จากการ present ครัังล่าสุดได้มีการแนะนำจาก SPN ให้นำหน้าเว็บบางหน้าออกไปเพราะจะทำให้คลิกเยอะเกินไป ทางผมก็ได้ทำการแก้ไขนำเอา แล้วก็ลองใช้ web app และแก้ไขเพิ่มเติมดังนี้


ก็ได้ทำเพิ่มมาสอง commit อันแรกก็จะเป็นปุ่ม back ในหน้าแก้ไข ซึ่งได้พบว่าลืมใส่เอาไว้ เลยไม่สามารถกลับไปที่หน้าหลักได้

commit ถัดไปก็ได้นำหน้า Home ออกไปเพราะว่าจาก คำแนะนำของ SPN ก็ได้เข้าใจว่า มันก็มีหน้า Homepage ที่ไว้สำหรับลิงค์ไปหา App ต่างๆแล้ว หน้านี้ก็คงไม่จำเป็นเพราะจะทำให้เกิดการคลิก ที่เยอะจนเกินไปครับ 

หน้านี้ก็จะหายไป

จะกลายมาเป็นหน้านี้แทน

    ในส่วนนี้ก็จะขอชี้แจ้งเพียงเล็กน้อยก็คือ version control ตอนนี้ใช้ Bitbucket ครับ  https://bitbucket.org/thanut_suwannawong/

โดย commit จะหายไปบางส่วนเนื่องจากมีการนำไฟล์มา push กับ repository ตัวใหม่ แล้วเผลอลบ repository บน cloud อันเก่าไปด้วย โดยลืมคิดเรื่อง commit ไป commit ในส่วนของการสร้าง web app ก็จะหายไปบางส่วน ครับผม และสาเหตุที่ต้องสร้าง repository ก็เพราะว่าต้องการที่จะใช้ในการ pull ลง pythonanywhere ได้ง่าย เลยแยก repository ไว้เก็บเป็น repo ละ app ครับผม

วันศุกร์ที่ 19 พฤษภาคม พ.ศ. 2560