“อย่าภูมิใจกับความสำเร็จทางเทคโนโลยีที่คุณสร้างขึ้นมากเกินไป ความสามารถในการทำลายดาวเคราะห์นั้นเทียบไม่ได้กับพลังแห่งพลัง" - ดาร์ธ เวเดอร์ บนดาวมรณะ
บทนำ
อาจเป็นไปได้ว่าบทความสองส่วนถัดไปของซีรีส์นี้เป็นบทความที่หลาย ๆ คนคาดหวังมากที่สุดและด้วยเหตุผลที่ดี มีอะไรนอกเหนือจากขอบฟ้า นอกเหนือจาก Java บริสุทธิ์? นักพัฒนา Java หายใจอะไรในทุกโครงการ? ลองพิจารณาคู่มือนี้เพื่อศึกษาด้วยตนเองฉบับสมบูรณ์สำหรับวิศวกรแบ็คเอนด์ทั่วไป ที่มีภาษาโปรแกรมหลักคือ Java ฉันตั้งใจที่จะครอบคลุมค่าเฉลี่ยของโรงพยาบาลให้มากที่สุดเท่าที่จะเป็นไปได้ และไม่เพียงแต่อธิบายกรอบการทำงานที่ได้รับความนิยมมากที่สุดเท่านั้น แต่ยังรวมถึงโซลูชันที่ถือว่ามีความเกี่ยวข้องในขณะนี้ด้วย แน่นอนว่ามีเครื่องมือมากมาย และการทำความเข้าใจสิ่งที่สำคัญที่สุดและดีที่สุดก็คือหนทางสู่ความไม่มีที่ไหนเลย พวกคุณแต่ละคนดูที่ส่วน "งาน"ใน DOU และพบกองเทคโนโลยีที่มีการทำซ้ำอย่างต่อเนื่องจากตำแหน่งที่ว่างไปยังตำแหน่งที่ว่าง ฉันเข้าใจว่ามันเป็นไปไม่ได้ที่จะอธิบายทุกอย่าง แต่การคิดกรอบการทำงานทั่วไปก็เป็นเรื่องปกติ ดังนั้นเรามาลองทำตามคำแนะนำนี้กัน ในอดีตในโครงการใดโครงการหนึ่งมีความลำบากใจค่อนข้างน่าสนใจเกิดขึ้นซึ่งฉันคิดว่าเกิดขึ้นและเกิดขึ้นซ้ำแล้วซ้ำอีกสำหรับหลาย ๆ คนในพื้นที่ใดพื้นที่หนึ่ง งานได้รับการตั้งค่าให้แนบการเรนเดอร์หน้า HTML หนึ่งหน้าเข้ากับฟังก์ชันการทำงานที่เสร็จสมบูรณ์เพียงเพื่อแสดงสถานะของเอนทิตีแต่ละรายการ ด้วยเหตุนี้ เพื่อนร่วมงานของฉันจึงตัดสินใจแนบ Spring thymeleaf ซึ่งดึงส่วนหนึ่งของการพึ่งพาหลักของ Spring เอง เมื่อไม่มีใครใช้ Spring และทั้งหมดนี้เป็นเพียงเพจปกติหน้าเดียวซึ่งแสดงสถานะของเอนทิตี 2-3 รายการ "ฉันไม่เคยเห็นประโยชน์มากนักในการใช้ไลท์เซเบอร์สองอัน...มันเป็นการแสดงความเห็นในความคิดของฉัน" - โอบีวัน เคโนบี ในแง่หนึ่ง นักพัฒนาแก้ไขปัญหาได้โดยเร็วที่สุด ติดตั้งเฟรมเวิร์กที่เขามีประสบการณ์ใช้และรวมเข้ากับโปรเจ็กต์ภายในเวลาไม่กี่ชั่วโมง แต่ในทางกลับกัน โปรแกรมของเรามีขนาดใหญ่ขึ้น ดังนั้นคำถามง่ายๆ จึงกลายเป็น: เขาทำสิ่งที่ถูกต้องหรือไม่? สำหรับงานอะตอมมิก เมื่อคุณรู้แน่นอนว่า thymeleaf/Spring MVC ฯลฯ นี้ใหญ่กว่า จะไม่ใช้ที่ไหนเลยอย่าใช้เลยจะดีกว่า ฉันมักจะประหลาดใจกับวลีเช่น “โอ้! ใช่ เราใช้ Hibernate ที่นี่! ดูสิ ทุกอย่างเยี่ยมเลย ORM!” และเมื่อถามคำถามเชิงตรรกะว่า JDBC ปกติจะผ่านที่นี่ไปได้หรือเปล่า พวกเขาก็ยักไหล่ มีสถาปัตยกรรมธรรมดาซึ่งควรจะเรียบง่ายซึ่งควรได้รับการปฏิบัติด้วยความกังวลใจไม่เกะกะด้วยกรอบที่ทันสมัยและทันสมัยสุด ๆ ดังที่ Obi-Wan กล่าวข้างต้น นี่ไม่ใช่อะไรมากไปกว่าการอวดอ้าง แม้ว่าจะจำเป็นต้องรู้วิธีใช้งานก็ตาม ในความคิดของฉัน Javaist รุ่นเยาว์เป็นคนที่โชคร้ายที่สุด - มีข้อกำหนดมากมายและมีห้องสมุดมากมายที่ต้องศึกษา Java EE เพียงอย่างเดียวมีเอกสารประกอบผ่านหลังคา คำถามเกิดขึ้น ผู้เริ่มต้นควรทำอะไร เขาควรเรียนรู้อะไรต่อไป เขาควรทำอะไรหลังจาก Horstmann? คำตอบง่ายๆ น่าเสียดาย พบปะผู้คนมากมาย และเราจะไม่เริ่มต้นด้วยกรอบทางธุรกิจ แต่ด้วยสิ่งที่จำเป็นทางโลกมากกว่าระบบปฏิบัติการ
ลินุกซ์
นอกจาก Windows และ/หรือ Yosemite ที่สะดวกสบายแล้ว คุณยังต้องยกมือขึ้นสู่ Linux ด้วยรอยยิ้ม สำหรับบางโครงการ แค่เป็นผู้ใช้และรู้วิธีใช้บรรทัดคำสั่งก็เพียงพอแล้วสำหรับโครงการอื่น ๆ อีกมากมาย วิธีไหนดีที่สุด? มีหนังสือ/บทช่วยสอนมากมายบนอินเทอร์เน็ต เริ่มต้นด้วยการติดตั้งUbuntuหรือการแจกจ่ายอื่น ๆ ที่คุณต้องการและลองใช้เป็นระบบปฏิบัติการหลักของคุณในเดือนหรือสองเดือนถัดไป จะดีกว่ามากหากคุณเริ่มเรียนรู้ Java ภายใน Linux โดยการคอมไพล์และจัดการไฟล์โดยใช้เทอร์มินัล บรรทัดคำสั่ง Linux โดย William Shotts อ่านหนังสือเล่มนี้ไม่ใช่ในรูปแบบนวนิยาย "50 Shades of Grey" แต่เป็นหลักสูตรเชิงโต้ตอบเต็มรูปแบบ - เปิดเทอร์มินัลแล้วทำซ้ำตามผู้เขียน คุณต้องการพื้นฐานและ Linux ทำงานอย่างไร? เราจะไม่เรียนหลักสูตรวิทยาการคอมพิวเตอร์และระบบปฏิบัติการอีกต่อไป - ที่อยู่ในส่วนถัดไป ไปที่edx.orgและลองใช้ หลักสูตร Introduction to Linuxแบบ ง่ายๆ นอกจากนี้ยังมีหนังสือจากซีรีส์ที่กล่าวถึงข้างต้นว่าLinux ทำงานอย่างไร: สิ่งที่ผู้ใช้ระดับสูงทุกคนควรรู้ โดย Brian Ward สิ่งพิมพ์ที่มีภาพประกอบค่อนข้างชัดเจนซึ่งให้ความสำคัญกับระบบเครือข่าย อุปกรณ์ และการจัดการทรัพยากร ไปข้างหน้า? มีหนังสือดีๆ เล่มหนึ่ง ซึ่งฉันมีอยู่ที่ไหนสักแห่งที่นี่... ใช่แล้ว (ฝุ่นผง)... นี่ไง! Unix และ Linux: คู่มือผู้ดูแลระบบ เอวี เนเมธ. คู่มือค่อนข้างใหญ่ แปลได้ดี พูดตามตรง โดยส่วนตัวแล้วฉันไม่เชี่ยวชาญเรื่องนี้ แต่ฉันชอบพื้นฐานของการบริหารงานมาก (ส่วนแรก) โดยปกติแล้ว คุณไม่สามารถละเลยสคริปต์เชลล์ได้ จะดีกว่าถ้าลองทั้งหมดนี้ในทางปฏิบัติ แต่จากหนังสือคุณสามารถดูการเรียนรู้ bash Shell: การเขียนโปรแกรม Unix Shell โดย Cameron Newham บทความจำนวนมากบน Linux/Unix ไม่สามารถครอบคลุมได้ทั้งหมด โดยเฉพาะในบทความนี้ ซึ่งมี Linux อยู่เบื้องหลัง เพื่อนร่วมงานของฉันในที่ทำงานซึ่งกินสุนัขในเรื่องนี้แนะนำสิ่งที่ค่อนข้างใช้งานได้จริง: ดาวน์โหลด ArchLinux และลองเริ่มต้นใช้งาน ในกระบวนการนี้คุณจะได้เรียนรู้สิ่งที่ฉันไม่ต้องการมากที่สุด!หน้าต่าง
ในประวัติย่อของโปรแกรมเมอร์มีคอลัมน์: “ประสบการณ์ Windows มากกว่า 10 ปี” แน่นอน ฉันขอแสดงความยินดีกับคุณที่คุณเล่นเคาน์เตอร์ตั้งแต่อายุ 10 ขวบบน Windows แต่ฉันขอให้คุณอย่าขุดหลุมล่วงหน้าในการสัมภาษณ์ เพราะในโครงการที่คุณทำงานอย่างใกล้ชิดด้วย IIS, แบทช์/พาวเวอร์เชลล์, พระเจ้าห้าม, การลงทะเบียน, การสัมภาษณ์จะไม่ใช่เรื่องยากจริงๆ และนอกจากรอยยิ้มตรงข้ามกับคนที่นั่งอยู่ ลิดาคุณยังจะได้รับความอัปยศอดสูอีกด้วย คุณต้องการสิ่งนี้หรือไม่? คำตอบนั้นบ่งบอกตัวมันเอง เก็บ Windows ที่ละเมิดลิขสิทธิ์ของคุณออกจากทอร์เรนต์แล้วลองติดตั้งบนเครื่องเสมือน Windows Server บางประเภท ไม่เพียงศึกษาจากฝั่งผู้ใช้และการติดตั้ง JAVA_HOME เท่านั้น ในเรื่องนี้มีคำ แนะนำ ที่เกือบจะสมบูรณ์อยู่ในรูปแบบของหนังสือMastering Windows Server 2012 R2 โดย Mark Minasi ตัวอย่างเช่น หากคุณใช้ PowerShell ลองดูหนังสือที่ยอดเยี่ยมWindows PowerShell in ActionโดยManning โดย Bruce Payette ฉันเข้าใจว่าเป็นไปไม่ได้ที่จะอ่านเกิน 1,000 หน้า แต่อย่างน้อยคุณก็สามารถเก็บไว้เป็นข้อมูลอ้างอิงได้ ฉันคิดว่าไม่มีอะไรจำเป็นอีกแล้ว ด้วยเหตุนี้ ให้ใส่ใจกับช่องว่างในความรู้เกี่ยวกับการใช้ Windows และค้นหาข้อมูลที่คุณสนใจบนอินเทอร์เน็ตสร้างเครื่องมือ
มาเวน
สิ่งที่สำคัญที่สุดที่ต้องเข้าใจใน Maven คืออะไร? นี่คือขั้นตอนแรกและงาน:- เรียนรู้สิ่งที่ Maven ทำในแต่ละช่วง คุณยังสามารถจดจำได้ นี่เป็นความสำเร็จเกือบ 80% และจะทำให้คุณเห็นภาพที่ชัดเจน
- สร้างโปรเจ็กต์แซนด์บ็อกซ์ของคุณเองภายในเครื่องด้วยระบบหลายโมดูล พร้อมการจัดการการขึ้นต่อกันที่ชัดเจน ลองแนบไลบรารีของบุคคลที่สามลองสร้างบางสิ่งโดยใช้ไลบรารีเหล่านั้น
- เล่นกับโปรไฟล์
- ทำความเข้าใจการจัดการปลั๊กอินและศึกษารายการปลั๊กอินยอดนิยมบนเว็บไซต์อย่างเป็นทางการ
- สำรวจว่าคุณสามารถใช้ Maven ในโปรเจ็กต์ของคุณให้เกิดประโยชน์สูงสุดได้อย่างไร ตัวอย่างเช่น การสร้างแบบขนานสามารถลดเวลาในการสร้างได้อย่างมาก
มด
เครื่องมือนี้ดูง่ายกว่ามาก ดังนั้นจึงไม่มีอะไรต้องเรียนรู้มากนักที่นี่ ยังมีโปรเจ็กต์ที่ ANT เป็นเครื่องมือสร้างเพียงตัวเดียว นี่เป็นเรื่องปกติอย่างยิ่ง: ANT ได้พิสูจน์ตัวเองแล้วว่าเป็นเครื่องมือสร้างที่เรียบง่ายและตรงไปตรงมาในบริบทของการจัดการงานปรมาณูขนาดเล็ก (งานมด) แน่นอนว่ามีปลั๊กอินมากมายที่นี่ เช่นเดียวกับ Maven ในการเริ่มต้นใช้งาน ANT ให้ทำดังต่อไปนี้:- ลองจัดการไฟล์และโฟลเดอร์
- ใช้คำสั่งต่าง ๆ เพื่อดำเนินงาน จากสิ่งนี้ เรียนรู้การพึ่งพาและลำดับความสำคัญของงานใน ANT
- แตกไฟล์และ/หรือไฟล์ zip ในงานลองเล่นกับเนื้อหาของไฟล์เก็บถาวรเป็นต้น
เกรเดิล
สำหรับฉัน Gradle นั้นใกล้ชิดกับ ANT มากกว่า Maven แต่ก็สามารถเรียกได้ว่าเป็นน้องชายต่างแม่ของทั้งสองคนนี้เลย มีวงจรชีวิตคล้ายกับ Maven และมีความยืดหยุ่นของงานเดียวกันกับที่ ANT มี สิ่งที่สำคัญที่สุดคือ Gradle ไม่ได้ใช้ XML และยิ่งไปกว่านั้น คุณสามารถทำทุกอย่างที่คุณต้องการได้หากคุณคุ้นเคยกับ Groovy ไม่มากก็น้อย โดยทั่วไปแล้วค่อนข้างอร่อย อย่ากลัวที่จะใช้ Ant/Maven/Gradle ในบริบทของ IDE ของคุณ เครื่องมือเหล่านี้ผสานรวมเข้ากับ Eclipse/IDEA อย่างแน่นหนา และการใช้เครื่องมือเหล่านี้ในบริบทของ IDE ก็ค่อนข้างสะดวกสบายการบูรณาการอย่างต่อเนื่อง
ทฤษฎี
นี่คือโปรแกรมเทวดาที่ปกป้องคุณจากการถูกไล่ออก กล่าวโดยสรุป นี่คือซอฟต์แวร์ที่ติดตามการเปลี่ยนแปลงในโค้ด สร้างและรันการทดสอบที่เขียนขึ้นสำหรับคุณ หากทุกอย่างเรียบร้อยดีหลังจากการคอมมิต/ผสานแต่ละครั้ง โครงสร้างจะเรืองแสงเป็นแสงสีเขียว/สีน้ำเงินที่น่าพึงพอใจ ทันทีที่คุณทำสิ่งของเสียหาย ระบบ CI จะรายงานทันที อย่างไรก็ตาม มีทฤษฎีเล็กน้อย - นี่มันคลาสสิก! การบูรณาการอย่างต่อเนื่อง: การปรับปรุง คุณภาพซอฟต์แวร์และการลดความเสี่ยง โดย Paul Duvall (หรือที่รู้จักในชื่อ “Continuous Integration” ในภาษารัสเซีย) หนังสือเล่มนี้กล่าวถึงการสร้างระบบ CI ของคุณเองด้วย ลองดูโซลูชันยอดนิยมสองรายการในพื้นที่นี้เจนกินส์
เจนกินส์ หรือที่รู้จักในชื่อ ฮัดสัน แอปพลิเคชั่นที่เปิดกว้าง เป็นมิตร ใช้งานง่าย หากต้องการทำความคุ้นเคยกับ Jenkins ให้มากขึ้น ให้ลองทำดังนี้:- ดาวน์โหลดลงในคอมพิวเตอร์ของคุณ ติดตั้งและกำหนดค่า JDK, Maven, ANT และทุกสิ่งที่คุณต้องการสำหรับโปรเจ็กต์
- สร้างงานแรกและระบุตำแหน่งของโปรเจ็กต์ของคุณ เช่น main pom.xml เรียกใช้ตรวจสอบให้แน่ใจว่าคุณมีการทดสอบบางอย่างเพื่อให้มองเห็นได้ชัดเจน
- เรียนรู้วิธีดำเนินโครงการของคุณด้วยการตั้งค่าและตัวเลือกต่างๆ
- แนบปลั๊กอินต่างๆ และดูวิธีการทำงานร่วมกับโปรเจ็กต์ของคุณ
- สร้างทริกเกอร์สำหรับงานต่างๆ สร้างไปป์ไลน์ขนาดเล็ก
- สำรวจ DSL และลองรวมเข้ากับ Jenkins
- ตั้งค่าทาสจากคอมพิวเตอร์เครื่องอื่นและ/หรือทำให้เป็นเครื่องปกติสำหรับการรันบิลด์
- สร้างงานสร้างยามค่ำคืน
GO TO FULL VERSION