Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

สอนครั้งที่ 1 cpe4235 (การวิเคราะห์และโปรแกรมเชิงวัตถุ) / 2557

2,325 views

Published on

รู้จักกับ Computer Programming
รู้จักกับเครื่องมือ (Tools)
และภาพรวมของการพัฒนา Java Web Application

Published in: Technology
  • Be the first to comment

สอนครั้งที่ 1 cpe4235 (การวิเคราะห์และโปรแกรมเชิงวัตถุ) / 2557

  1. 1. CPE4235 การวิเคราะห์และโปรแกรมเชิงวัตถุ จิตกร พิทักษ์เมธากุล Java Web Developer @Geniustree Co.,Ltd “i am programmer.”
  2. 2. CPE4235 1 รู้จักกับ Computer Programming รู้จักกับเครื่องมือ (Tools) และภาพรวมของการพัฒนา Java Web Application
  3. 3. เนื้อหา • รู้จักกับ Computer Programming • รู้จักกับ Java • Netbeans IDE & Plugins • Maven • VCS (Version Control System) • Git & Github • ภาพรวมการพัฒนา Java Web Application CPE4235 Java Basic Git
  4. 4. CPE4235 อะไรคือ Computer Programming?
  5. 5. Computer Programming CPE4235 “เป็นสิ่งที่มนุษย์ใช้เป็นตัวแทนสำหรับสร้ำงปฏิสัมพันธ์กับ คอมพิวเตอร์ (Human to Computer)”
  6. 6. ซึ่งประกอบไปด้วยลำดับของชุดคำสั่ง (Sequence of Instructions) ต่ำงๆ มำกมำย เพื่อบอกให้คอมพิวเตอร์ทำงำนตำมที่มนุษย์ต้องกำร เรียกอีกอย่ำงหนึ่งว่ำ “ภำษำโปรแกรม” หรือ “Programming Language” CPE4235
  7. 7. มนุษย์ที่เขียนภำษำโปรแกรม เรำเรียกว่ำ “โปรแกรมเมอร์” (Programmer) CPE4235
  8. 8. บำงครั้ง เรำก็เรียกมนุษย์พวกนี้ว่ำ “นักพัฒนำ” หรือ “Developer” CPE4235
  9. 9. CPE4235 Mark Zuckerberg Bill Gate Steve Wozniak Larry Page Facebook Microsoft Apple Google
  10. 10. “โปรแกรมเมอร์ คือศิลปิน ผู้สร้ำงสรรค์ผลงำนศิลปะ ด้วยกำรเขียนโค๊ด” CPE4235
  11. 11. CPE4235
  12. 12. สิ่งที่ถูกเขียนขึ้นด้วยภำษำโปรแกรม เรำเรียกว่ำ CPE4235
  13. 13. CPE4235 “ซอฟต์แวร์ หรือ โปรแกรม หรือ แอพพลิเคชัน” (Software or Program or Application)
  14. 14. CPE4235
  15. 15. ต้นกาเนิดภาษาโปรแกรม CPE4235
  16. 16. CPE4235 ภำษำโปรแกรมแรกที่มนุษย์คิดค้นขึ้นมำเพื่อใช้ติดต่อสื่อสำรกับ คอมพิวเตอร์นั้น ประกอบไปด้วยตัวเลขเพียงแค่ 2 ตัวเท่ำนั้น คือ 0 กับ 1 เช่น 01010010 01000110 11001000 01010011 ภำษำโปรแกรมนี้ เรำเรียกกันว่ำ “Machine Code”
  17. 17. CPE4235 [101010111 01011101] Human Computer Machine Code
  18. 18. ปัญหาของ Machine Code CPE4235
  19. 19. CPE4235 • จดจำรูปแบบได้ยำก (ยำกโคตร) • เรียนรู้ และทำ ควำมเข้ำใจได้ลำบำก • ใช้ระยะเวลำในกำรเรียนรู้สูง • ต้องรู้ลึกเกี่ยวกับกำรทำ งำนของ CPU และ Memory • สิ้นเปลืองทรัพยำกร (สมอง) • ได้ไม่คุ้มเสีย
  20. 20. กาเนิดภาษาใหม่ “Assembly” CPE4235
  21. 21. CPE4235 Assembly เป็นภำษำโปรแกรมชนิดหนึ่ง มีลักษณะเป็นคำสั่ง ภำษำอังกฤษสั้นๆ เข้ำใจได้ง่ำยกว่ำ Machine Code คำสั่ง ของ Assembly จะถูกแปลงไปเป็นคำสั่ง Machine Code อีกที เช่น XOR CL, [12H] = 00110010 00001110 00010010 00000000 ที่เราต้องจา
  22. 22. CPE4235 Assembly
  23. 23. CPE4235 Assembly Language ตัวแปลภาษา Assembly Machine Code input Assembler output Computer การทางาน
  24. 24. แต่มันก็ยังยากอยู่ดี! CPE4235
  25. 25. มนุษย์จึงพยำยำมสร้ำงภำษำโปรแกรมใหม่ขึ้นมำอีก เพื่อให้ง่ำยขึ้น และมีควำมใกล้เคียงกับภำษำมนุษย์ (ภำษำอังกฤษ : English) มำกที่สุด ซึ่งเรำนิยำมภำษำใหม่ที่สร้ำงขึ้นมำนี้ว่ำ CPE4235 “High Level Language”
  26. 26. CPE4235 ภาษาระดับสูง “High Level Language”
  27. 27. ภำษำระดับสูง CPE4235 หมำยถึง “ภำษำที่ใช้ในกำร เขียนโปรแกรม ที่มีควำม ใกล้เคียงกับภำษำมนุษย์มำกที่สุด โดยที่ผู้เขียนไม่จำ เป็นต้องรู้ลึกถึง โครงสร้ำงภำยในของคอมพิเตอร์”
  28. 28. CPE4235 กำรทำงำน จะใช้ตัวแปลภำษำที่เรียกว่ำ Compiler /Interpreter คอยทำกำรแปลคำสั่งที่เรำเขียน เพื่อนำไปแปลง / สั่งกำร คอมพิวเตอร์อีกที
  29. 29. มีหลำยภำษำ เช่น • ภำษำซี (C) • ภำษำเบสิก (Basic) • ภำษำปำสคำล (Pascal) • ภำษำไพธอน (Python) • ภำษำพีเอชพี (PHP) • ภำษำจำวำ (Java) เป็นต้น CPE4235
  30. 30. CPE4235 Source Code ตัวแปลภาษา High Level Machine Code Compiler / InterPreter input output Computer การทางาน
  31. 31. CPE4235 Best Programming Language to Learn in 2014 ประมวลผลจำกเว็บไซต์ http://jobstractor.com/ อ้ำงอิง http://www.sitepoint.com/best-programming-language-learn-2014/
  32. 32. CPE4235
  33. 33. CPE4235
  34. 34. CPE4235
  35. 35. CPE4235 Java เป็นภำษำโปรแกรมระดับสูงตัวหนึ่ง ที่ถูกคิดค้นขึ้นในปี ค.ศ. 1991 (หรือปี พ.ศ. 2534 ตอนนี้มีอำยุ23 ปี : ปีนี้ปี 2557 หรือปี 2014) พัฒนำโดย ทีมวิศวกรของบริษัท ซันไมโครซิสเต็มส์ (Sun MicroSystem) นำทีมโดย เจมส์ กอสลิง (James Gosling)
  36. 36. CPE4235 เป็นส่วนหนึ่งของ The Green Project ใช้เวลำในกำรพัฒนำ 4 ปี จึงสำเร็จและออกสู่สำธำรณะ ในปี ค.ศ. 1995 (พ.ศ. 2538)
  37. 37. CPE4235 เจมส์ กอสลิง (James Gosling) “บิดาแห่ง Java” 19 พฤษภาคม 2498 (อายุ 59 ปี)
  38. 38. CPE4235 โดยมีวัตุประสงค์ เพื่อนำมำใช้แทนภำษำ C++ ตอนแรกตั้งชื่อว่ำภำษำโอ๊ก (Oak) แต่เนื่องจำกมีคนจดลิขสิทธิ์ภำษำ Oak ไปแล้ว จึงได้คิดชื่อใหม่ มำเป็น Java ในที่สุด ซึ่งหมำยถึง “กำแฟ”
  39. 39. CPE4235 ปัจจุบัน Java เป็นลิขสิทธิ์ของบริษัท เพรำะ Oracle ซื้อ Sun Micro System มำ จึงได้ลิขสิทธิ์ Java มำด้วย
  40. 40. CPE4235 จุดเด่น / ข้อดี ของภาษา Java
  41. 41. CPE4235 เป็นภาษาโปรแกรมเชิงวัตถุ (OOP : Object Oriented Programming)
  42. 42. CPE4235 Platform Independent หรือการไม่ขนึ้กับ platform “Write One Run Anywhere”
  43. 43. CPE4235 ประสิทธิภำพสูง High Performance
  44. 44. CPE4235 มีระบบจัดกำรคืนหน่วยควำมจำอัตโนมัติ (Garbage Collection)
  45. 45. CPE4235 Strong เกิด Bug ค่อนข้ำงยำก เนื่องจำกเป็นภำษำที่ ค่อนข้ำงเข้มงวดกับไวยำกรณ์
  46. 46. CPE4235 Libraries เยอะ มีของให้เล่นเยอะมำกกก
  47. 47. CPE4235 มีกำร update ออก version มำใหม่เรื่อยๆ ตอนนี้เป็น Java8 (jdk8 update 25 : 13/12/2014)
  48. 48. CPE4235 ไม่เสียค่าลิขสิทธ์ิในการพัฒนา
  49. 49. CPE4235 ข้อเสีย
  50. 50. CPE4235 ใช้ระยะเวลำในกำรเรียนรู้สูง / ค่อนข้ำงยำก
  51. 51. CPE4235 แพลตฟอร์ม (Platform)
  52. 52. CPE4235 Platform หมำยถึง “Hardware หรือ Software ที่ทำหน้ำที่เป็น Environment ใน กำร Run Program”
  53. 53. CPE4235 ในที่นี้เรำจะพูดถึง Software อย่ำงเดียว เช่น • Windows • Linux • iOS • Android • Facebook • Google+
  54. 54. CPE4235 Java Platform
  55. 55. CPE4235 กำรเขียนโปรแกรมด้วยภำษำ Java จะถูกแบ่งออกเป็น 3 รูปแบบ หรือ 3 Platform คือ • JSE (Java Standard Edition) • JME (Java Micro Edition) และ • JEE (Java Enterprise Edition)
  56. 56. CPE4235 JSE (Java Standard Edition) เป็น Java Platform มำตรฐำน (Standard) เหมำะสำหรับกำร พัฒนำ Desktop Application นักพัฒนำหรือ Developer ทั่วๆไป ใช้แค่ JSE ก็เพียงพอสำหรับ กำรพัฒนำ Java Application แล้ว
  57. 57. CPE4235 JSE ประกอบไปด้วย • JDK (Java Development Kit) ที่รวมเอำ Compiler และ Debugger สำหรับนักพัฒนำ เอำไว้พัฒนำ Java Application • JRE (Java Runtime Environment) คือสภำพแวดล้อมที่ใช้ใน กำร Run Java Application
  58. 58. CPE4235 JDK คือ เครื่องมือ หรือ Tools JRE คือ สภำพแวดล้อมในกำร Run Java App
  59. 59. CPE4235 อธิบำยง่ำยๆ ถ้ำเรำมองว่ำ Java Application คือรถแข่ง JRE ก็เปรียบเสมือนกับสนำมรถแข่งที่เอำไว้ให้รถแข่งวิ่ง ถ้ำไม่มี JRE แล้ว Java ก็ทำงำนไม่ได้ และ JDK ก็เปรียบเสมือนเครื่องมือที่ใช้ในกำรผลิตรถแข่ง หรือก็คือ โรงงำนผลิตรถแข่งนั่นเอง
  60. 60. CPE4235 Java Application Java Development Kit Java Runtime Environment
  61. 61. CPE4235 ถ้ำเรำแค่ต้องกำร Run Java App เรำใช้แค่ JRE ก็พอ แต่ถ้ำเรำต้องกำรเขียน Java App เรำต้องใช้ JDK
  62. 62. CPE4235 JDK JRE
  63. 63. CPE4235 JME (Java Micro Edition) เป็น Java Platform ที่เล็กที่สุด เหมำะสำหรับอุปกรณ์พกพำ เช่น โทรศัพท์มือถือ หรือ PDA เป็นต้น หลำยคนอำจเข้ำใจผิดคิดว่ำ M ในที่นี้หมำยถึง Mobile M = Micro
  64. 64. CPE4235 แล้ว Android คือ JME หรือเปล่ำ ?
  65. 65. CPE4235 คำตอบคือ ไม่ใช่
  66. 66. CPE4235 JEE (Java Enterprise Edition) เป็น Java Platform ที่ใหญ่ที่สุด แน่นอนว่ำ ถ้ำใหญ่กว่ำ JSE แล้ว ทุกๆ อย่ำงที่มีอยู่ใน JSE ก็จะ ติดมำด้วย
  67. 67. CPE4235 JEE (Java Enterprise Edition) JEE JSE Sub set
  68. 68. CPE4235 JEE (Java Enterprise Edition) ส่วนที่มีเหนือกว่ำ JSE ก็คือ JEE เป็น เทคโนโลยีที่ใช้สำหรับกำรพัฒนำ Application บนฝั่ง Server
  69. 69. CPE4235 JSE = Java ที่เขียนทำงฝั่ง Client หรือ Desktop Application JEE = Java ที่เขียนทำงฝั่ง Server
  70. 70. CPE4235 JEE (Java Enterprise Edition) เป็นกำรเขียนโปรแกรมที่ทำ งำนอยู่บนระบบเครือข่ำยขององค์กร หรือ Enterprise
  71. 71. CPE4235 ก่อนจะเขียน java มำทำ ควำมรู้จักกับไฟล์ 3 ชนิดก่อน .java .class .jar
  72. 72. CPE4235 .java เป็นไฟล์ที่เก็บ ภำษำโปรแกรม java ที่เรำเขียนขึ้นมำ เช่น • Staff.java • Address.java • Visit.java
  73. 73. CPE4235 ข้ำงใน .java (syntax ภำษำ java)
  74. 74. CPE4235 .class เป็นไฟล์แปล (Translated) ของไฟล์ .java นั้นๆ เรำเรียก code ที่อยู่ในไฟล์ .class ว่ำ “Java Byte Code” • Staff.class • Address.class • Visit.class
  75. 75. CPE4235 staff.java ตัวแปล staff.class
  76. 76. CPE4235 ข้ำงใน .class (อ่ำนไม่รู้เรื่อง)
  77. 77. CPE4235 .jar เป็นคล้ำยๆ ซิปไฟล์ (.zip file) ของภำษำ java ที่รวบรวมไฟล์ .class + ไฟล์อื่นๆ และ Meta data ไว้ข้ำงใน
  78. 78. CPE4235 .jar ส่วนมำกแล้ว .jar จะเป็น Libraries File คือรวบรวม java code ที่สำมำรถเอำไปใช้ต่อได้ แพ็ค (pack) รวมกันไว้
  79. 79. CPE4235 staff.class Audit.class Build / Pack Test.class .jar
  80. 80. CPE4235 .jar .class Meta data other .class .class .class .class
  81. 81. CPE4235
  82. 82. การทางานของ Java CPE4235 MyCode .java JVM Compiler Computer MyCode .class 010010101 Machine Code Java Virtual Machine
  83. 83. CPE4235 JVM
  84. 84. CPE4235 JVM (Java Virtual Machine) เป็นโปรแกรม ที่ทำหน้ำที่เป็นจักรกลเสมือน คอยอ่ำนคำสั่งจำก Java Byte Code (.class) แล้วนำไปแปลงเป็น คำสั่งของ Platform นั้นๆ เพื่อสั่งงำน Computer อีกที
  85. 85. CPE4235 Byte code / .class JVM Computer
  86. 86. CPE4235 JVM (Java Virtual Machine) ขึ้นตรงกับ Platform เอำ JVM ไหนมำ run Java Byte Code ก็จะทำงำนตำมคำสั่งของ Platform นั้นๆ
  87. 87. CPE4235 Java Byte Code (.class) Windows Linux Mac … JVM JVM JVM JVM Java Source Code (.java) Compiler
  88. 88. CPE4235 Java เป็น Independent Platform (ไม่ขึ้นตรงต่อแพลตฟอร์ม) ส่วนตัวที่ Dependent คือ JVM
  89. 89. CPE4235 Java Byte Code (.class) Windows Linux Mac … JVM JVM JVM JVM Java Source Code (.java) Compiler
  90. 90. CPE4235 Java Byte Code (.class) Windows Linux Mac … JVM JVM JVM JVM Java Source Code (.java) Compiler เราสนใจแค่นี้
  91. 91. CPE4235 ภำพรวมกำรพัฒนำ
  92. 92. CPE4235 วิชำนี้ ผมจะพำคุณเขียน Java Web Application ที่ Run บน Cloud Service (Virtual Private Server)
  93. 93. CPE4235 แต่!
  94. 94. CPE4235 คุณจะได้เขียน Web Application หลังจำกกลำง ภำคเป็นต้นไป (ภำควิชำชีพ)
  95. 95. CPE4235 เพรำะในครึ่งแรก (6 ครั้งแรก) คุณต้องเขียน Java ให้เป็นก่อน
  96. 96. CPE4235 แต่ก่อนจะเริ่มเขียน เรำมำดูภำพรวมกันก่อน ว่ำต้องทำอะไรบ้ำง
  97. 97. CPE4235 คุณ coding Build / pack deploy เช่ำ VPS (Virtual Private Server) www.yourweb.com .jar / .war Server
  98. 98. CPE4235 คุณ coding Build / pack deploy เช่ำ VPS (Virtual Private Server) www.yourweb.com .jar / .war Server
  99. 99. CPE4235 คุณ coding
  100. 100. CPE4235 คุณ coding Push /pull
  101. 101. CPE4235 ว่ำด้วย “เครื่องมือ (Tools)”
  102. 102. CPE4235 • IDE (Integrated Development Environment) • VCS (Version Control System) • Build Tool
  103. 103. CPE4235 IDE
  104. 104. CPE4235 IDE (Integrated Development Environment) เป็นเครื่องมือที่ช่วยในกำรพัฒนำโปรแกรม โดยมีสิ่งอำนวยควำมสะดวกต่ำงๆ เพื่อให้เขียนโปรแกรมได้ง่ำยขึ้น เช่นเครื่องมือ Compile, Run, Test Project มีตัว Check ไวยำกรณ์ภำษำ ฯลฯ
  105. 105. CPE4235 IDE (Integrated Development Environment) มีหลำยตัว เช่น • Netbeans IDE • Eclipse IDE • IntelliJ IDE …
  106. 106. IDE ที่ได้รับความนิยมในช่วงนี้CPE4235
  107. 107. CPE4235
  108. 108. CPE4235 Netbeans IDE เป็นเครื่องมือที่ใช้ในกำรพัฒนำ Java Application ตัวหนึ่ง ที่มีชื่อเสียงมำกๆ ถูกสร้ำงขึ้นในปี 1998 (พ.ศ. 2541) ด้วยภำษำ Java โดยกลุ่มนักศึกษำ “Rock Solid Software" ขณะนั้นเป็นโปรเจ็คนักศึกษำ
  109. 109. CPE4235 Netbeans IDE และต่อมำได้เผยแพร่ให้บุลคลทั่วไปได้ใช้งำน ในรูปแบบของ Open Source และฟรี ต่อมำในปี ค.ศ. 2000 (พ.ศ. 2543)บริษัท Sun Micro System ผู้พัฒนำภำษำ Java ได้เข้ำมำเป็นผู้สนับสนุนหลักในกำรพัฒนำ
  110. 110. CPE4235 ปัจจุบัน Netbeans IDE รองรับกำรเขียนโปรแกรมหลำยภำษำ และมีเครื่องมืออำนวยควำมสะดวกต่ำงๆ มำกมำย สำมำรถเข้ำไป Downloads และเรียนรู้กำรใช้งำนได้ที่ www.netbeans.org
  111. 111. Netbeans IDE CPE4235
  112. 112. Netbeans IDE CPE4235
  113. 113. Netbeans IDE CPE4235
  114. 114. CPE4235
  115. 115. CPE4235 Maven เป็นเครื่องมือที่ใช้ในกำรสร้ำง Java Project ตัวหนึ่ง ที่ได้รับควำมนิยมสูงสุดในตอนนี้
  116. 116. CPE4235 Maven ใช้แทนกำรสร้ำง Project แบบ Manual เอง เพรำะกำรสร้ำงแบบ Manual ทำให้เกิดปัญหำต่ำงๆ ตำมมำมำกมำย
  117. 117. CPE4235 ข้อเสียของกำรสร้ำง Project แบบ Manual • Developer แต่ละคนกำหนดโครงสร้ำง Project ไม่เหมือนกัน โครงสร้ำงโปรเจ็ค สะเปะ สะปะ • บำรุง /ดูแลรักษำโค๊ด (โคตร) ยำก • จำโค๊ดไม่ได้ • Libraries Version ไม่ตรงกัน • Run ที่ Environment แตกต่ำงกันไม่ได้ • ทำเองทุกอย่ำง ซ้ำไปซ้ำมำ
  118. 118. CPE4235 แล้วทำไมไม่ใช้อะไรที่มัน Auto ช่วยล่ะ! สะดวกกว่ำเยอะเลย
  119. 119. CPE4235 Maven มีควำมสำมำรถในกำร Build, Compile, Test, Clean … project ทำ Dependencies Management ช่วยจัดกำรเรื่อง Project Structure / Project Template รวมทั้งยังสำมำรถ config Profile Environment ในกำร run บน Environment ที่แตกต่ำงกันได้ด้วย
  120. 120. CPE4235 Build Maven จะช่วยจัดกำรเรื่องกำร (Auto) Build Project ให้เรำ Project Build / Pack .jar นำ .jar นั้นไปใช้ได้เลย ไม่ต้องเขียน Build Script เอง
  121. 121. CPE4235 Compile เมื่อเรำทำกำร Build Project Maven จะทำกำร Compile Source Code จำก .java -> .class ให้เรำเองโดยอัตโนมัติ เรำไม่ต้องมำนั่ง $ javac mycode.java
  122. 122. CPE4235 Test เรำสำมำรถทำกำรผนวก Unit Test ไปพร้อมกับกำร Build หรือกำรติดตั้งได้เลย ซึ่ง Maven ก็จะจัดกำรให้
  123. 123. CPE4235 Clean Maven จะจัดกำรเรื่องกำร Clean Project ให้ เพียงแค่คลิกขวำแล้วสั่ง Clean .jar File ที่มีอยู่ก็จะหำยไป เป็นกำรล้ำง .jar File
  124. 124. CPE4235 Dependency Management (Core of Maven) คือเรื่องของกำร Config และ Download Library ซึ่ง Maven จะทำกำร Download Library ต่ำงๆ มำให้เรำโดย อัตโนมัติ โดยที่เรำไม่ต้องหำ Library มำใส่ Project เอง เรำแค่ Config Library ที่ต้องกำรไว้ที่ ในไฟล์ pom.xml
  125. 125. CPE4235 Libraries นั้นๆ เรำจะเรียกมันว่ำ Dependencies
  126. 126. CPE4235 Depend on Project Dependency
  127. 127. CPE4235 Depend on Project Dependency
  128. 128. CPE4235 Depend on Project Dependency
  129. 129. CPE4235 Project สร้ำง/config project เอง
  130. 130. CPE4235 Project .jar .jar .jar .jar .jar .jar สร้ำง/config project เอง
  131. 131. CPE4235 Project ลองใช้ Maven ช่วย
  132. 132. ลองใช้ Maven ช่วย Project CPE4235 Project Maven
  133. 133. Project CPE4235 Project Maven .jar .jar .jar Central Repository ลองใช้ Maven ช่วย internet
  134. 134. ลองใช้ Maven ช่วย Project CPE4235 Project Maven .jar .jar .jar Central Repository .jar .jar .jar Local Repository internet
  135. 135. ลองใช้ Maven ช่วย Project CPE4235 Project Maven .jar .jar .jar Central Repository .jar .jar .jar Local Repository internet
  136. 136. CPE4235 ทำให้ระบบเร็วกว่ำเดิม ลด Bandwidth ด้วย Local Repo Server Repo Central Repo
  137. 137. CPE4235 .jar .jar .jar Central Repository ลองใช้ Maven ช่วย Local Repository .jar .jar .jar internet Nexus .jar .jar .jar Server Repository
  138. 138. CPE4235 Project Structure / Project Template Project ที่สร้ำงขึ้นจำก maven จะดูเป็นระเบียบ โครงสร้ำงแน่นอน ตำยตัวในทุกๆ Project ทำให้ Developer ทุกคนใน Project นั้น ใช้ โครงสร้ำง Project เหมือนกัน
  139. 139. CPE4235 มี Plugin อื่นๆช่วย มำกมำย รวมทั้ง เรำยังสำมำรถเขียน Maven Plugins ขึ้นมำใช้งำนเองได้
  140. 140. CPE4235 กลำยเป็นมำตรฐำนในกำรสร้ำง Project ไปแล้ว เนื่องจำก Developer ทั่วทุกมุมโลกต่ำงก็ใช้ Maven และ IDE ดังๆ อย่ำง NetBeans กับ Eclipse ก็รองรับกำรสร้ำง Project ด้วย Maven ด้วย
  141. 141. CPE4235 ถ้ำไม่เชื่อลองไปหำดู Java Project บน Github ดูสิ Maven ทั้งนั้น
  142. 142. CPE4235 ข้อเสีย เมื่อแก้ code ใหม่ ต้อง re deploy ใหม่ตลอด นั่นคือต้อง build ใหม่เสมอ วิธีแก้ไข หำ tool ตัวอื่นมำช่วย deploy แทนให้ เช่น JRebel เป็นต้น
  143. 143. CPE4235 ระบบควบคุมเวอร์ชัน Version Control System
  144. 144. CPE4235 Version Control System (VCS) คือ ระบบที่จัดเก็บกำรเปลี่ยนแปลงที่เกิดขึ้นกับไฟล์(File) โดยจัดเก็บเป็น Version ไว้ เพื่อที่เรำจะสำมำรถเรียกดู/ย้อนหลังกลับไปยังไฟล์ Version ใด Version หนึ่ง เมื่อไรก็ได้
  145. 145. CPE4235
  146. 146. CPE4235 Version Control System แบ่งออกเป็น 3 ประเภท ดังนี้ • Local VCS • Centralized VCS • Distributed VCS
  147. 147. CPE4235 Local VCS • ทำกำรคัดลอก File เก็บไว้ที่เครื่องตัวเอง • ทำงำนแบบ Stand alone • เรียก File version ใด version หนึ่งขึ้นมำดูเมื่อไหร่ก็ได้
  148. 148. CPE4235 Local VCS - ข้อเสีย • ใช้ได้คนเดียว ไม่สำมำรถแชร์ให้คนอื่นใช้ได้ • เครื่องพัง File หำยเกลี้ยง ถึงกับปวดตับกันเลยทีเดียว!
  149. 149. CPE4235 Centralized VCS • ทำงำนแบบ Client / Server • เก็บ File ไว้ที่เครื่องส่วนกลำง • เรียก File version ใด version หนึ่งขึ้นมำดูเมื่อไหร่ก็ได้ • แชร์ให้คนอื่นๆ ใช้ได้
  150. 150. CPE4235 Centralized - ข้อเสีย ถ้ำเครื่อง Server พัง File ก็หำยอยู่ดี
  151. 151. CPE4235 Distributed VCS • ทำกำรคัดลอก File เก็บไว้ทุกเครื่อง • ทำงำนแบบ Distributed • เรียก File version ใด version หนึ่งขึ้นมำดูเมื่อไหร่ก็ได้ • ทุกคนแชร์ข้อมูลให้กัน • เครื่องใดเครื่องหนึ่งพัง ก็ไปเอำจำกเครื่องอื่นได้
  152. 152. CPE4235 Happy :)
  153. 153. CPE4235 Version Control System มีหลำยตัว เช่น • Git - กำเนิดมำจำก Linux Project • SVN (Sub Version) - ของ Google • CVS • Mercurial • Bazaar … …
  154. 154. CPE4235
  155. 155. CPE4235 ประวัติย่อของ Git Git เกิดมำในช่วงแรกของกำรพัฒนำ Linux Kernel ซึ่งเป็น Software Open Source ขนำดใหญ่ ที่มีกำรแชร์ Source Code ผ่ำน กันไปมำ ทำให้ Control Project ค่อนข้ำงลำบำก
  156. 156. CPE4235 ในปี ค.ศ. 2002 (พ.ศ. 2545) เริ่มมีกำรนำเครื่องมือ Distributed Version Control System ที่ไม่ใช่Open Source ชื่อ BitKeeper มำใช้ งำน
  157. 157. CPE4235 ในปี ค.ศ. 2005 (พ.ศ. 2548) ควำมสัมพันธ์ระหว่ำง Community ที่ พัฒนำ Linux Kernel และบริษัทที่พัฒนำ BitKeeper มีอันต้องจบลง กำรใช้งำนเครื่องมือนี้ก็ถูกยกเลิกไป
  158. 158. CPE4235 ทำให้นักพัฒนำหลำยคน (โดยเฉพำะอย่ำงยิ่ง Linus Torvalds ผู้สร้ำง Linux) ต้องพัฒนำเครื่องมือของตัวเองขึ้นมำจำก ประสบกำรณ์ที่ ่มีอยู่ระหว่ำงกำรใช้งำน BitKeeper
  159. 159. CPE4235 ตูทำเองก็ได้ฟระ!
  160. 160. CPE4235 โดยมีวัตถุประสงค์ดังต่อไปนี้ • Speed - ควำมเร็ว • Simple - เรียบง่ำย • Parallel - สนับสนุนกำรทำงำนหลำยทำงพร้อม ๆ กัน (มี branch กำรพัฒนำเป็นพัน) • Distributed • Scale – สำมำรถรองรับโปรเจคขนำดใหญ่อย่ำง Linux Kernel ได้เป็นอย่ำงดี (ทั้งในแง่ควำมเร็วและขนำดของข้อมูล)
  161. 161. CPE4235 Repository
  162. 162. CPE4235 Repository คือ Directory ที่ใช้สำหรับเก็บสถำนะกำรเปลี่ยนแปลงต่ำงๆ (Version) ของ File ที่เกิดขึ้น Repository
  163. 163. CPE4235 Repository
  164. 164. CPE4235 สำมำรถมีได้ หลำย Repositories ขึ้นอยู่กับว่ำ เรำต้องกำร Control Version ที่ไหนบ้ำง
  165. 165. CPE4235 เช่น ถ้ำเรำทำงำน 3 Projects เรำก็จะมี Repository 3 Repos แยกออกจำกกัน (อยู่ในคอมพิวเตอร์เครื่องเดียวกัน) เป็นต้น Project 1 Project 2 Project 3 Repository Repository Repository
  166. 166. CPE4235 Project 1 Project 2 Project 3 Repository Repository Repository
  167. 167. CPE4235 สังเกตเห็นอะไรมั้ย?
  168. 168. CPE4235 มันคือ Local Version Control System เครื่องพังมำก็เท่ำเดิม
  169. 169. CPE4235 ฉะนั้น เปลี่ยนมันใหม่ซ่ะ
  170. 170. CPE4235 Repository Repository Repository Repository Repository Repository Git Client Git Server Client Server Architecture
  171. 171. Repository CPE4235 Repository Repository Repository Repository Repository Git Client Git Server Repository Repository Repository Git Client
  172. 172. CPE4235 กำรทำงำนของ Git คือจะ clone ข้อมูลไปไว้ที่ทุกเครื่องเหมือนกัน ทั้งหมด ถ้ำเครื่องใด เครื่องหนึ่งพัง ไฟล์ที่อยู่บนอีกเครื่องก็ยังอยู่ครบ 100% เรียกว่ำ เป็นกำร copy ไปทั้ง repo (รวมทั้งประวัติทั้งหมดด้วย) ไม่ใช่แค่บำงส่วน
  173. 173. CPE4235 ลักษณะกำรทำงำนของ Git จะ Clone เฉพำะ สิ่งที่มีกำรแก้ไขเก็บไว้ อันไหนไม่มีกำรเปลี่ยนแปลง ก็ไม่ต้องเก็บ
  174. 174. CPE4235 คำศัพท์/คำสั่ง ที่ใช้ใน Git Local git init คือกำรสร้ำง Repositoy git add คือกำรเพิ่ม file หรือ document นั้นเข้ำไปใน Repository git commit คือกำรบันทึก Version ใหม่ลงใน Repository Server git push คือกำรส่งข้อมูลที่ทำกำร commit แล้วไปเก็บไว้ที่ server repo git pull คือกำรดึงข้อมูลล่ำสุด จำก server repo ลงมำที่ local repo
  175. 175. CPE4235 Git Client Git Server
  176. 176. CPE4235 git init
  177. 177. CPE4235 Git Client Git Server Repository
  178. 178. CPE4235 git add
  179. 179. CPE4235 Git Client Git Server Repository
  180. 180. CPE4235 git commit
  181. 181. CPE4235 Git Client Git Server Repository
  182. 182. CPE4235 git init
  183. 183. CPE4235 Git Client Git Server Repository Repository
  184. 184. CPE4235 git push
  185. 185. CPE4235 Git Client Git Server Repository Repository
  186. 186. CPE4235 git pull
  187. 187. CPE4235 Git Client Git Server Repository Repository
  188. 188. CPE4235 เรียนรู้git เบื้องต้น ได้ที่ http://up1.github.io/git-guide/index.th.html
  189. 189. CPE4235 Github
  190. 190. CPE4235 Github Git Server Git Client Git Client Git Client Git Client Git Client Git Client Git Client
  191. 191. CPE4235 Github github.com เป็นเว็บไซต์ที่ให้บริกำรเสมือน git server เป็นบริกำรฟรีแบบมีเงื่อนไขคือ คุณสำมำรถใช้งำนได้ฟรี แต่โปรเจ็คที่สร้ำงขึ้นจะต้องเป็นแบบ public เท่ำนั้น
  192. 192. CPE4235 Github ถ้ำไม่อยำกให้ใครเห็น ก็ต้องเสียตังค์ใช้บริกำร เพื่อสร้ำงโปรเจ็คแบบ private
  193. 193. CPE4235 Bug
  194. 194. CPE4235 บั๊ก (Bug) หรือ จุดบกพร่อง หมำยถึง ปัญหำที่เกิดขึ้นกับโปรแกรม อันเนื่องมำจำกคำสั่งที่ทำงำนไม่ถูกต้อง ตำมที่คำดหวังไว้
  195. 195. CPE4235 “มันไม่ใช่ Bug แต่มันเป็น Feature”
  196. 196. CPE4235 สำธิตและอธิบำยกำรทำงำนจริงๆ
  197. 197. CPE4235 ทบทวนคำศัพท์ที่ต้องใช้บ่อย
  198. 198. CPE4235 • Compile คือกำรแปลง code .java .class • Build คือกำร pack project .jar • Run คือ กำรสั่ง Run Project นั้น หรือกำรสั่ง Run class ที่มี public static void main • Clean คือกำร ล้ำง .jar file • Commit คือ กำรบันทึก version file ลง local repository • Push คือ กำรส่งข้อมูลจำก local repo ไปไว้ที่ server repo • Pull คือ กำร update หรือดึงข้อมูลล่ำสุด ของ server repo ลงมำ • Conflict คือ code ชนกัน ระหว่ำงทำกำรดึง code
  199. 199. CPE4235 ที่จะให้ทำต่อไปนี้คือ 1. ติดตั้ง JAVA 2. ติดตั้ง Netbeans IDE 3. สร้ำง Project ด้วย Maven 4. เขียน code hello world 5. สมัคร Github 6. สร้ำง repository ตำมที่ต้องกำร 7. ใช้ Git (Netbeans Plugin) push code ไปไว้บน github

×