Tuesday, February 27, 2018

ทดลองใส่ข้อมูล 2 เท่าของแรมดูสิ (Week 6)

การ Query ข้อมูลลง Database จำนวนมากๆ
ในส่วนที่ผมทำ คือ ทดลองใส่ข้อมูลลง PostgreSQL ให้ได้ 2 เท่าของแรม ซึ่งผมใช้แรมจำนวน 8 GB นั้นคือ ต้องใส่ข้อมูลให้ได้ 16 GB
โดยเป้าหมายแรกที่ใส่ไปนั้น ต้องการให้ใส่ข้อมูลเป็นจำนวน 100M ตัว ซึ่งจะสุ่มข้อมูลเกรด รหัสวิชา ปีการศึกษา ภาคการเรียน และรหัสนักศึกษา แต่ผลลัพธ์ที่ได้ คือ เก็บได้ไปแค่ 2M ตัวเท่านั้น

ซึ่งในการเก็บข้อมูลเข้า Database จะใช้ภาษา Python ซึ่งทำได้ ดังนี้


ในการ query ข้อมูลเข้า Database นั้น จะ query ข้อมูลจากตารางย่อยก่อน นั้นคือ ปีการศึกษา, ภาคการเรียน เป็นต้น 



จากนั้นทำการสุ่มข้อมูลจากตารางย่อยแล้วเอาข้อมูลตารางหลัก จับเวลาแล้วบันทึกเวลาลงไฟล์ CSV

เมื่อหลังจากลงข้อมูลเสร็จ ก็จะทำการ SELECT ข้อมูล แต่แล้วปัญหาก็เกิดขึ้ินเมื่อ pgAdmin ไม่สามารถเข้าถึง Server ได้ เลยกะว่าจะลองแล้วลง PostgreSQL ใหม่แล้วค่อยมาทำต่อ

การคิดหัวข้อ Project
ในหัวข้อ Project นั้น เราได้ลองคิดว่าจะทำกัน 2 งาน ซึ่งมี
1. เก็บจำนวนค่าไฟ
2. ทำตารางการซ้อมและการแข่งขันนักกีฬา E-Sport 
ซึ่งเราได้ตกลงแล้วว่าจะทำหัวข้อ 2 ทำตารางการซ้อมและการแข่งขันนักกีฬา E-Sport ครับ

ปัญหาที่พบ
1. ยัง Query ข้อมูลไม่เสร็จ ซึ่งอาจจะ Query กันในภายหลัง
2. Query ข้อมูลช้า ซึ่งอาจปรับโค้ดให่ไม่ต้องเปิด-ปิด Database ตลอดเวลา
3. Query ข้อมูลใน PostgreSQL ไม่ได้เพราะเข้า Server ไม่ได้ ซึ่งอาจจะต้องลบแล้วลงใหม่
4. ขี้เกียจทำ Blog + ขี้เกียจทำงานให้ดี ซึ่งทำไม่รู้วิธีแก้ปัญหา จะทำยังไงดีครับ ???

ลิ้งก์ที่อ้างอิง



  • เกรด, รหัสวิชา, ปีการศึกษา, ภาคการเรียน, รหัสนักศึกษาหกหกหกหกหกหกหกหกหกฟหกฟหกืา่่ไก่ืไ่ืก่าืๆไ


Tuesday, February 20, 2018

ค้นหา ER Diagram (Week 5)

ในส่วนที่ผมได้ทำนั้นมี ดังนี้
ผมได้หา ER Diagram ของการยืมหนังสือ


ซึ่งข้อมูลในนี้ประกอบไปด้วย
Entity : Member, Book
Relation : Borrow
Attributes :
  • Member : MemberType, Member_NO, Name, Branch, Sex
  • Book : Book_Code, Title, BookType, ISBN, Author
  • Borrow : Date_Borrow, Date_Return
Database ช่วยอะไรได้บ้าง
ประเทศ : ทำให้ประเทศไทยสามารถนำข้อมูลที่จำเป็นมารวมกันจนเกิดมาเป็น Big Data ซึ่งสามารถนำข้อมูลส่วนนี้ไปวิเคราะห์ต่อได้

ตัวเรา : นำข้อมูลจากแหล่งเว็บต่างๆที่เก็บใน Database มาทำการบ้านได้
อื่นๆ : เราสามารถสร้างเกมที่เป็นแบบ Multiplayer ได้ โดยใช้ Realtime Database

ปัญหาที่เจอ
  • จะเริ่มสอบแล้ว แก้ปัญหาโดยการเริ่มอ่านหนังสือ
  • เพื่อนไม่ได้ทำ ER ใน Google Slide เพราะเข้าผิด แก้ปัญหาโดยการให้เพื่อนทำใน Google Slide

Tuesday, February 6, 2018

ทดลองใช้ Database ตัวอื่นๆ (Week 4)


PostgreSQL





PostgreSQL เป็น Database ที่มีลักษณะเป็น Object-Relational ซึ่งใช้คำสั่งของ SQL ได้ พัฒนาโดย มหาวิทยาลัยแคลิฟอร์เนีย (Berkeley Computer Science department, University of California.) ใช้ได้บน Linux, UNIX และ Windows ซึ่งจุดเด่นคือ
  • ทนต่อการใช้งาน ออกแบบให้รองรับสภาพ
  • มีความน่าเชื่อถือและเสถียรภาพ
  • ครอสแพลทฟอร์ม
  • มีการใช้งานหลากหลาย เช่น Subquery, Complex Join
ข้อจำกัดของ PostgreSQL คือ ใช้งานยากกว่า MySQL, SQLite เป็นต้น



PgAdmin

เป็นโปรแกรมที่ใช้จัดการฐานข้อมูลของ PostgreSQL ซึ่งสร้างตารางหรือดูข้อมูลในตาราง หรือเพิ่มข้อมูลในตารางได้ เป็นต้น ยกตัวอย่างในการแสดงข้อมูลในตารางโดยใช้ PgAdmin

ตัวอย่างในการแสดงข้อมูลในตารางโดยใช้ PgAdmin


How to download Mysql module
โหลด mysql.connector ผ่าน Commad Prompt ให้พิมพ์   



"pip install psycopg2"
ลงเพื่อให้ Python 3 สามารถเรียกใช้ module psycopg2

สามารถ compile ได้


PostgreSQL with Python

"import psycopg2" 
เรียกใช้ module psycopg2
"conn = psycopg2.connect(“dbname=’KMUTNB_DB’  user=’postgres’ host=’localhost’ password=’*****’ ”)"
สร้าง Object ติดต่อกับ PostgreSQL
"cursor.execute('INSERT INTO  public.main
(student_id, year, semester, course_code, grade_char) VALUES (%s,%s,%s,%s,%s)'
, data)"
คำสั่ง INSERT ข้อมูลลง ในตาราง
ปัญหา Foreign key Error : ไม่มีรหัสวิชาในตาราง subject

Primary key Error : มีข้อมูลอยู่ในตาราง main
ผลการทดสอบ
ผลลัพธ์ของการทดสอบโค้ดของ Python

Firebase

Firebase เป็น NOSQL Database กล่าวคือเป็น Database ที่ไม่จำเป็นต้องใช้ SQL ซึ่งพัฒนาโดย Google ลักษณะเด่นของ Firebase มีดังนี้
  • Firebase เป็น NoSQL database ดังนั้นจึงไม่จำเป็นที่จะต้องเรียนรู้ SQL เพื่อจัดการ Database
  • ส่งข้อมูลในรูปแบบ JSON
  • มีการ sync ข้อมูลแบบ realtime กับทุก devices ที่เชื่อมต่อ
  • ใช้ได้ทั้ง Android, iOS และ Web
ข้อจำกัดของ Firebase

  • จำเป็นต้องทำธุรกรรมการเงินก่อนใช้งาน Firebase
  • หากมีข้อมูลที่ผิดรูปแบบแล้ว ก็ยังใส่เข้าไปใน Database
  • มีความน่าเชื่อถือน้อยกว่า RDBMS
  • มีคน Support น้อยกว่า RDBMS
  • หาผู้เชี่ยวชาญได้ยากกว่า RDBMS
เริ่มการใช้งาน Firebase

เมื่อคุณได้ทำการสมัครใช้งาน Firebase แล้ว ให้เข้ามาที่หน้าต่าง Firebase ของท่าน ไปยังส่วนหน้าของ Database




เริ่มการใช้งาน Firebase
ตัวอย่างการเพิ่มข้อมูลลง Database


ตัวอย่างตารางจาก SQLite
เพิ่มบนเว็บไซต์ Firebase ตามตาราง SQL ด้านบน


ได้รูปแบบ JSON

How to download Firebase Module

โหลด mysql.connector ผ่าน Commad Prompt พิมพ์

"pip install python-firebase"

ลงเพื่อให้ Python 2 สามารเรียกใช้ module firebase
สามารถ compile ได้
Firebase with Python

"from firebase import firebase"
เรียกใช้ module firebase
"firebase.FirebaseApplication('https://nithichaisoftwareengkmutnb.firebaseio.com/', None)"

สร้าง Object ติดต่อกับ Firebase

"result = self.fb.put(url=uri, name=self.index, data=data_set)"

คำสั่ง PUT ข้อมูลลง Database
ผลลัพธ์การ put
เมื่อทำการรันโปรแกรมผ่าน Command Line แล้ว
จะเห็นของข้อมูลที่เพิ่มเข้ามาใน Database

Globalization

"Globalization หรือ โลกาภิวัตน์ ตามพจนานุกรมฉบับราชบัณฑิตยสถาน พ.ศ. 2542 หมายถึง "การแพร่กระจายไปทั่วโลก การที่ประชาคมโลกไม่ว่าจะอยู่ ณ จุดใด สามารถรับรู้ สัมพันธ์ หรือรับผลกระทบจากสิ่งที่เกิดขึ้นได้อย่างรวดเร็วกว้างขวาง ซึ่งเนื่องมาจากการพัฒนาระบบสารสนเทศเป็นต้น" โลกาภิวัตน์ เป็นคำศัพท์เฉพาะที่บัญญัติขึ้นเพื่อตอบสนองปรากฏการณ์ของสังคมโลกที่เหตุการณ์ทางเศรษฐกิจ การเมือง สิ่งแวดล้อม และวัฒนธรรมที่เกิดขึ้นในส่วนหนึ่งของโลก ส่งผลกระทบอันรวดเร็วและสำคัญต่อส่วนอื่นๆของโลก"

แต่สำหรับเรา Globalization คือ

“Globalization คือ การที่คนบนโลกนี้ สามารถติดต่อสื่อสารด้วยกัน หรือทำกิจกรรมบางอย่างร่วมกัน”
Globalization มีผลกับเราที่
“สามารถทำให้เราได้เล่นเกมจากประเทศอื่น และยังได้เล่นเกมกับคนจากประเทศอื่นด้วย เช่น คนฟิลิปปินส์ คนเกาหลี คนจีน เป็นต้น ทำให้เราเรียนรู้ภาษาหรือวัฒนธรรมต่างๆ”
และเราคิดว่ามีผลกระทบกับประเทศไทย คือ
“ยกตัวอย่างกระแสของ E-Sport ที่ทั่วโลกกำลังตื่นตัว แล้วส่งผลทำให้ E-Sport กลายเป็นกีฬา เริ่มมีคนไทยไปร่วมงานแข่งขัน E-Sport ระดับโลก และมีแผนที่ประเทศไทยเข้าไปอยู่ในเกม”
ปัญหาที่พบ
ในทางเทคนิค
  • เพื่อนใช้ Database ตัวนี้ไม่ได้
    • แก้ปัญหาโดยการลองสลับ Database กัน
  • ทำ MariaDB ไม่ทัน
    • แก้ปัญหาโดยการตัดออกแล้วเอา Firebase ตัวอื่นมาแทน

SQL injection (Week 16)

SQL Injection ในบางครั้งนักพัฒนาใช้ method ‘+’ (concat) กับ String ที่เป็นคำสั่ง SQL เพื่อ query ข้อมูลที่ user ต้องการ ซึ่งทำให้เกิดช่...