วิศวกรรมซอฟต์แวร์

ถาม - ตอบสำหรับมืออาชีพนักวิชาการและนักเรียนที่ทำงานในวงจรการพัฒนาระบบ

6
โปรแกรมเมอร์. NET เดี่ยวย้ายไปอยู่กับทีม [ปิด]
ปิด. คำถามนี้เป็นคำถามปิดหัวข้อ ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้เป็นหัวข้อสำหรับ Software Engineering Stack Exchange ปิดให้บริการใน5 ปีที่ผ่านมา ฉันเป็นโปรแกรมเมอร์. NET เดี่ยวสำหรับการเริ่มต้นเล็ก ๆ ในช่วง 8 ปีที่ผ่านมา ฉันได้รวบรวมซอฟต์แวร์ที่ดีและฉันก็พยายามปรับปรุงตัวเองให้ดีขึ้นและปฏิบัติตามแนวทางปฏิบัติที่ดีที่สุดรวมถึงการควบคุมแหล่งที่มา (SVN / TFS) ฉันทำงานอย่างใกล้ชิดกับทีมวิศวกรของสาขาวิชาอื่น ๆ แต่เมื่อมันลงมากับซอฟต์แวร์ฉันเป็นคนเดียวที่เขียนโปรแกรม ฉันรักงานฝีมือของการเขียนโปรแกรมและรักการเรียนรู้สิ่งใหม่เพื่อแปลงเครื่องมือของฉัน ใน 2 สัปดาห์ฉันจะเริ่มงานใหม่ในทีมนักพัฒนา 20. NET ตำแหน่งของฉันจะอยู่ในระดับกลางและฉันจะทำงานภายใต้โปรแกรมเมอร์บางคนที่มีภูมิหลังที่น่าประทับใจอย่างไม่น่าเชื่อ อีกครั้งการพัฒนาของทีมจะเป็นเรื่องใหม่สำหรับฉันดังนั้นฉันจึงมองหาเคล็ดลับ "คนใหม่" ทั่วไปที่จะช่วยให้ฉันมีประสิทธิภาพและง่ายต่อการเข้าร่วมเท่าที่จะเป็นไปได้ สิ่งใดไปรวมถึงเคล็ดลับระดับสูงและสิ่งเล็ก ๆ น้อย ๆ เกี่ยวกับการสื่อสารในแต่ละวัน
12 team  teamwork 

5
ข้อดีของวิธีการหลายวิธีมากกว่าสวิตช์
ฉันได้รับการตรวจสอบโค้ดจากผู้พัฒนาระดับสูงในวันนี้โดยถามว่า "อย่างไรก็ตามอะไรคือสิ่งที่คุณคัดค้านการมอบหมายหน้าที่โดยใช้คำสั่งสวิตช์?" ฉันได้อ่านในหลาย ๆ ที่เกี่ยวกับวิธีการปั๊มการโต้เถียงผ่านวิธีสลับการโทรเป็นวิธีการที่ไม่ดี OOP ไม่สามารถขยายได้ ฯลฯ อย่างไรก็ตามฉันไม่สามารถหาคำตอบที่ชัดเจนสำหรับเขาได้ ฉันต้องการจะทำสิ่งนี้ให้กับตัวเองซักครั้ง นี่คือคำแนะนำเกี่ยวกับรหัสการแข่งขันของเรา (php ใช้เป็นตัวอย่าง แต่สามารถใช้ได้ในระดับสากล): class Switch { public function go($arg) { switch ($arg) { case "one": echo "one\n"; break; case "two": echo "two\n"; break; case "three": echo "three\n"; break; default: throw new Exception("Unknown call: $arg"); break; } } } class …

7
Python เป็นตัวเลือกที่ดีในการพัฒนา UIs หรือไม่ ถ้าเป็นเช่นนั้น wxPython หรือ Tkinter?
ฉันรอคอยที่จะพัฒนาแอปพลิเคชันเดสก์ท็อปโดยใช้ Python ฉันเป็นผู้เริ่มต้นและฉันไม่มีความเชี่ยวชาญเพียงพอใน Python ฉันยังเป็นโปรแกรมเมอร์ Java แม้ว่าฉันจะมีประสบการณ์ในการสร้าง UIs โดยใช้ Swing แต่ฉันเห็นว่าแอพที่พัฒนาบน Swing นั้นค่อนข้างช้าเกินไป นี่อาจเป็นเหตุผลหนึ่งว่าทำไมการใช้งานหลัก ๆ หลายอย่างใน C / C ++ เหมือนกับในเบราว์เซอร์ / เกม การพัฒนา UI ใน C ++ อาจเป็นตัวเลือกที่ดีกว่า แต่ฉันชอบที่จะเลือกภาษาการเขียนโปรแกรมระดับสูงผ่าน C / C ++ ดังนั้นฉันเลือกที่จะใช้ Python โดยสันนิษฐานว่ามันจะทำงานได้ดีบน Java Swing เนื่องจาก Python เองนั้นสร้างบน C / C ++ ดังนั้นฉันจะไปข้างหน้ากับสมมติฐานนี้ว่า Python ดีกว่า Java …

3
ปรับปรุงรูปแบบการออกแบบตัวสร้างของ Joshua Bloch หรือไม่
ย้อนกลับไปในปีพ. ศ. 2550 ฉันอ่านบทความเกี่ยวกับ Joshua Blochs เกี่ยวกับ "รูปแบบการสร้าง" และวิธีที่จะสามารถแก้ไขเพื่อปรับปรุงการใช้ตัวสร้างและตัวตั้งค่ามากเกินไปโดยเฉพาะอย่างยิ่งเมื่อวัตถุมีคุณสมบัติจำนวนมากซึ่งส่วนใหญ่เป็นทางเลือก สรุปโดยย่อของรูปแบบการออกแบบนี้จะฝึกหัดที่นี่ ฉันชอบแนวคิดนี้และใช้มันตั้งแต่ ปัญหากับมันในขณะที่มันสะอาดและดีที่จะใช้จากมุมมองของลูกค้าการใช้มันอาจเป็นความเจ็บปวดในก้น! มีสถานที่แตกต่างกันมากมายในวัตถุที่มีการอ้างอิงคุณสมบัติเดียวและทำให้การสร้างวัตถุและการเพิ่มคุณสมบัติใหม่ใช้เวลานาน ดังนั้น ... ฉันมีความคิด ก่อนวัตถุตัวอย่างในสไตล์ของ Joshua Bloch: สไตล์ Josh Bloch: public class OptionsJoshBlochStyle { private final String option1; private final int option2; // ...other options here <<<< public String getOption1() { return option1; } public int getOption2() { …

9
หลีกเลี่ยงข้อผิดพลาดที่มุ่งเน้นวัตถุย้ายจาก C ทำงานอะไรให้คุณ
ฉันได้เขียนโปรแกรมในภาษาเชิงปฏิบัติมาระยะหนึ่งแล้วและปฏิกิริยาแรกของฉันต่อปัญหาคือการเริ่มแบ่งมันเป็นงานเพื่อดำเนินการแทนที่จะพิจารณาหน่วยงานต่าง ๆ (วัตถุ) ที่มีอยู่และความสัมพันธ์ของพวกเขา ฉันมีหลักสูตรมหาวิทยาลัยใน OOP และเข้าใจพื้นฐานของการห่อหุ้มข้อมูลที่เป็นนามธรรมข้อมูลที่หลากหลายรูปแบบโมดูลย่อยและมรดก ผมอ่าน/programming/2688910/learning-to-think-in-the-object-oriented-wayและ/programming/1157847/learning-object-oriented-thinking , และจะดูหนังสือบางเล่มที่ชี้ไปยังคำตอบเหล่านั้น ฉันคิดว่าโครงการขนาดกลางถึงขนาดใหญ่หลายแห่งของฉันจะได้รับประโยชน์จากการใช้ OOP อย่างมีประสิทธิภาพ แต่ในฐานะมือใหม่ฉันต้องการหลีกเลี่ยงข้อผิดพลาดที่ใช้เวลานานและเสียเวลา จากประสบการณ์ของคุณข้อผิดพลาดเหล่านี้คืออะไรและมีวิธีการที่เหมาะสมรอบตัวพวกเขาอย่างไร หากคุณสามารถอธิบายได้ว่าทำไมพวกเขาถึงเป็นข้อผิดพลาดและวิธีที่ข้อเสนอแนะของคุณมีประสิทธิภาพในการจัดการกับปัญหานั้นจะได้รับการชื่นชม ฉันกำลังคิดตามแนวของบางอย่างเช่น "เป็นเรื่องปกติหรือไม่ที่จะมีผู้สังเกตการณ์และวิธีการปรับเปลี่ยนจำนวนพอสมควรและใช้ตัวแปรส่วนตัวหรือมีเทคนิคสำหรับการรวม / ลดพวกมัน?" ฉันไม่กังวลเกี่ยวกับการใช้ C ++ เป็นภาษา OO บริสุทธิ์หากมีเหตุผลที่ดีในการผสมวิธีการ (เตือนความจำถึงเหตุผลในการใช้ GOTO แม้ว่าจะ จำกัด อยู่เพียงเล็กน้อย) ขอบคุณ!

3
คำถามเกี่ยวกับการออกแบบการปรับใช้หน้าปัจจุบัน
ฉันได้ตรวจสอบการแบ่งหน้าใน asp.net mvc โดยเฉพาะและฉันรู้สึกว่ามีบางสิ่งบางอย่างที่มีประสิทธิภาพน้อยกว่าในการใช้งาน ประการแรกการใช้งานทั้งหมดใช้ค่าเลขหน้าดังนี้ public ActionResult MostPopulars(int pageIndex,int pageSize) { } สิ่งที่ฉันรู้สึกผิดคือ pageIndex และ pageSize ทั้งหมดควรเป็นสมาชิกของคลาส Pagination มิฉะนั้นวิธีนี้จะดูมีประโยชน์มาก นอกจากนี้ยังช่วยลดความยุ่งยากของพารามิเตอร์ที่ไม่จำเป็นในการใช้งาน สิ่งที่สองคือพวกเขาใช้ด้านล่างส่วนต่อประสาน public interface IPagedList<T> : IList<T> { int PageCount { get; } int TotalItemCount { get; } int PageIndex { get; } int PageNumber { get; } int PageSize { …

8
คุณทำให้ผู้จัดการเข้าใจถึงความคล่องตัวได้อย่างไร
ฉันมีปัญหากับผู้อำนวยการอาวุโสที่ไม่เข้าใจการพัฒนาซ้ำ ๆ (เปรียวน้อยกว่า) เขายืนยันว่าข้อกำหนดการออกแบบซอฟต์แวร์ (SDS) ของเราเสร็จสมบูรณ์ก่อนที่จะเขียนบรรทัดใด ๆ เสร็จสมบูรณ์สำหรับเขาหมายถึงรายละเอียดการทำงานทั้งหมดอยู่ที่นั่น นอกจากนี้ในฐานะอดีตโปรแกรมเมอร์โคบอลเขาต้องการเห็น "โมดูล" และผังงาน นี่คือเว็บแอปพลิเคชัน Java สำหรับการร้องเสียงดัง! อย่างไรก็ตามฉันกำลังพยายามหาที่ง่าย ๆ เพื่อชี้ให้เขาเห็นว่าเอกสารความปลอดภัยไม่จำเป็นต้องเสร็จสมบูรณ์ 100% ก่อนที่เราจะเริ่มเขียนโค้ด (หรือจะไม่สมบูรณ์) ข้อเสนอแนะใด ๆ ขอบคุณ!

7
เหตุใดโรงเรียนจึงไม่ครอบคลุม debuggers [ปิด]
ปิด คำถามนี้เป็นคำถามความคิดเห็นตาม ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้สามารถตอบข้อเท็จจริงและการอ้างอิงได้โดยแก้ไขโพสต์นี้ ปิดให้บริการใน4 ปีที่แล้ว หลังจากยังบ้านอีกคำถามในดังนั้น ดูเหมือนว่านักเรียนส่วนใหญ่ไม่มีความรู้ว่า debugger คืออะไรหรือจะใช้งานอย่างไร ฉันรู้สึกว่าการรู้วิธีใช้ดีบักเกอร์นั้นสำคัญพอ ๆ กับการเขียนโปรแกรมพื้นฐานอื่น ๆ คำถามไม่ควรทำการดีบั๊กและวิธีการใช้เครื่องมือการดีบักที่ทันสมัยได้รับการสอนควบคู่กับพื้นฐานการเขียนโปรแกรม? ถ้าไม่ใช่เพราะอะไร

10
ฉันเป็นผู้นำทีมหรือไม่?
ฉันอยู่ในตำแหน่งที่แปลกมาก ฉัน "เป็นผู้นำทีม" ในบทบาทสำหรับโครงการเฉพาะวิศวกรซอฟต์แวร์ในตำแหน่งงาน ในทีมของฉันฉันมีนักพัฒนา 4 คนหนึ่งในนั้นทำหน้าที่คล้ายกันในโครงการอื่น แต่ตอนนี้ของฉันได้รับความสำคัญดังนั้นเขาจึงทำงานกับฉัน ฉันมีผู้ทดสอบ 2 คนหนึ่งในนั้นคือผู้จัดการ สมาชิกอีกคนของทีมคือ "ตัวแทนลูกค้า" ซึ่งเป็นส่วนหนึ่งของแผนกที่ไม่เกี่ยวข้องอย่างสมบูรณ์ ฉันมีผู้จัดการที่อยู่เหนือฉันโดยตรงและฉันก็เชื่อว่าเหนือผู้จัดการทดสอบซึ่งเป็นส่วนหนึ่งของทีมของฉัน ... ไม่แน่ใจในเรื่องนั้น ฉันพยายามอธิบายให้ชัดเจนว่าทำไมบทบาทของฉันจึงมีหลายครั้ง มันยากสำหรับฉันที่จะเข้าใจว่าอำนาจของฉันเริ่มต้นและสิ้นสุดลงอย่างไรถ้าฉันมี คำตอบที่ฉันกำลังทำงานด้วยก็คือฉันเป็น "ผู้นำทางด้านเทคนิค" ของทีม นี่ดูเหมือนว่าหมายความว่าสิทธิ์ของฉันอยู่เหนือการตัดสินใจทางเทคนิคเกี่ยวกับสถาปัตยกรรมการออกแบบและมาตรฐานการประมวลผล / การเข้ารหัสเนื่องจากเกี่ยวข้องกับรหัสผลิตภัณฑ์ วันนี้มีบางอย่างเกิดขึ้นและผลลัพธ์ของรหัสที่ฉันมอบหมายให้กับหนึ่งในสมาชิกของทีมของฉันซึ่งแสดงให้เห็นถึงส่วนที่เหลือของ บริษัท ในการประชุมการแสดงของเรา - ทั้งหมด - ทั้งหมด ผู้แทนลูกค้าทำการอวด มีบางอย่างแสดงออกมาในวันนี้ซึ่งฉันไม่เห็นด้วยจริงๆและไม่มีใครเคยถามฉันเลยว่าฉันต้องการพูดในสิ่งที่เกิดขึ้นหรือไม่ ในระยะสั้นเพื่อให้ความสามารถของผู้ใช้ในการแสดงค่าในรายงานในมารยาทต่อไปนี้ ("เอกสาร" หน่วยหน่วยออกแบบโค้งมนไม่โค้งมน) พวกเขาให้การเข้าถึงเขตข้อมูลสำหรับการเปลี่ยนแปลงแต่ละครั้ง ดังนั้นเราจึงมีค่าในหน่วย doc แบบกลมหน่วยการออกแบบแบบโค้งหน่วยหน่วยกลมไม่มีหน่วยการออกแบบกลม แต่ละระเบียนที่ผู้ใช้จะต้องการทำงานด้วยมีค่าดังกล่าวจำนวนมากและแต่ละระเบียนได้รับอนุญาตในลักษณะนี้ ฉันเกลียดสิ่งนี้จริงๆ คนที่เราแสดงให้เห็นว่าต้องการให้แน่ใจว่า API ที่เราใช้สำหรับรายงานนั้นเหมือนกับวิธีที่เราทำสิ่งต่าง ๆ เช่นส่งออกข้อมูลไปยัง Excel น่าเสียดายที่ตอนนี้เราได้รับแรงผลักดันนี้ในทิศทางที่ฉันคิดว่าแย่มากจริง …

2
ตัวอย่างของโปรแกรมที่ไม่ชัดเจนของ Dijkstra
Memorial ~ Dijkstra เขียนว่าแม้แต่โค้ดง่ายๆที่ดูเหมือนไม่กี่บรรทัดก็อาจจะคลุมเครืออย่างไร้ความหวัง ในงานอย่างน้อยหนึ่งงานซึ่งตอนนี้ฉันไม่สามารถช่วยชีวิตตัวเองได้เขาได้จัดโปรแกรมตัวอย่างเล็ก ๆ น้อย ๆ เพื่อแสดงความคลุมเครือนี้ ใครช่วยชี้ให้ฉันดูกระดาษของเขาที่ซึ่งเขามีหนึ่งในตัวอย่างเหล่านี้ได้หรือไม่?
12 ambiguity 

5
การเขียนโปรแกรมฟังก์ชั่นแตกต่างกันไปหรือเป็นจริงที่ยากขึ้นจริงหรือ
การเขียนโปรแกรมฟังก์ชั่นแตกต่างกันไปหรือเป็นจริงที่ยากขึ้นจริงหรือ บอกคนที่ไม่เคยเรียนรู้การเขียนโปรแกรมมาก่อนและสอนการเขียนโปรแกรมที่ใช้งานได้ เทียบกับคนที่ไม่เคยเรียนรู้การเขียนโปรแกรมมาก่อนและสอนการเขียนโปรแกรมที่จำเป็น ซึ่งเขาจะหายากขึ้น? หรือเหมือนกัน คำถามของฉัน: พูดว่าปัญหาตอนนี้คือการป้อนข้อมูลอูฐกรณี เช่นนั้นqwe_asd_zxc_rty_fgh_vbnจะกลายเป็นqweAsdZxcRtyFghVbn วิธีการขั้นตอนคือ: แยกมันตาม _ วนรอบอาร์เรย์ที่กระโดดข้ามรายการแรก สำหรับแต่ละรายการเราใช้อักษรตัวแรกเป็นตัวพิมพ์ใหญ่ เข้าร่วมผลลัพธ์ด้วยกัน วิธีการทำงานคือ: หากไม่พบ_ผลตอบแทนinput ตัดinputพร้อมแรก_(เช่นที่เราได้รับqweและasd_zxc_rty_gfh_cvb) ใช้อักษรตัวแรกของheadและตกลงด้วยตัวพิมพ์ใหญ่ที่มีf(tail) ตกลงถ้าคุณมีพื้นหลังการใช้งานและมีประสบการณ์มากมายในการเขียนโปรแกรมเชิงกระบวนงานฉันอยากถามว่า: คุณจะต้องใช้เวลามากขึ้นในการคิดหาวิธีการหรือไม่หรือจะใช้เวลานานกว่านี้ หากคุณมีพื้นฐานของขั้นตอนการทำงานแต่มีประสบการณ์หลายปีในการใช้งานฟังก์ชั่นการเขียนโปรแกรมฉันอยากจะถามคำถามเดียวกันนี้: คุณจะต้องใช้เวลานานกว่านี้ในการหาวิธีการดำเนินการหรือจะใช้เวลานานกว่า วิธี?

4
เมื่อพูดถึงการโฮสต์โปรเจ็กต์การทิ้งส่วนบุคคลหนึ่งบริการและโครงสร้างโปรเจ็กต์จะโดดเด่นหรือไม่? [ปิด]
ปิด. คำถามนี้เป็นคำถามปิดหัวข้อ ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้เป็นหัวข้อสำหรับ Software Engineering Stack Exchange ปิดให้บริการใน4 ปีที่แล้ว ฉันกำลังดู Google Code, SourceForge, BitBucket และ GitHub เนื่องจากดูเหมือนว่าพวกเขาจะเป็นผู้เล่นรายใหญ่ ตอนนี้ฉันยังไม่ได้แยกคุณสมบัติทั้งหมดที่พวกเขามีให้ แต่ฉันกำลังมองหาที่ที่จะใส่รหัสต่าง ๆ ที่ฉันเขียน (โซลูชันของฉันสำหรับ Project Euler, รหัสที่ฉันอาจเขียนสำหรับ Code Golf / การเขียนโปรแกรม Puzzles Stack Exchange และอื่น ๆ ) ในตำแหน่งส่วนกลาง ดังนั้นคำถามแรกของฉันคือ: สำหรับสถานการณ์เช่นนี้บริการหนึ่งจะโดดเด่นในหมู่คนอื่น ๆ ? เมื่อฉันเลือกบริการแล้วฉันต้องเลือกวิธีที่ฉันจะแจกจ่ายรหัส มีตัวเลือกน้อยที่ฉันเห็นสำหรับการตั้งค่าที่เก็บและโครงการ ที่เก็บเดียวสามารถเก็บโปรเจ็กต์จำนวนมาก - ตัวอย่างเช่นฉันสามารถมีที่เก็บ "Project Euler Solutions" …

5
ทำไมต้องแยกแยะความแตกต่างระหว่างข้อกำหนดด้านการใช้งานกับความต้องการใช้งานไม่ได้
ฉันเข้าใจความแตกต่างระหว่างทั้งสอง แต่ฉันได้รับคำถามจากเพื่อนร่วมงานของฉันเกี่ยวกับประโยชน์ของข้อกำหนดการติดฉลากว่าใช้งานได้หรือไม่ทำงาน (หรือการนำส่ง) ทำไมต้องทำเช่นนั้น? เขาใช้เวลาในสิ่งที่เขาพูดเมื่อสองวันผ่านรายการข้อกำหนดสำหรับโครงการหนึ่งและไม่เห็นประโยชน์เพราะผลลัพธ์สุดท้ายคือส่งเอกสารไปยังองค์กรธุรกิจอื่นที่มีคำสั่ง "ทำทุกอย่าง" สิ่งที่ฉันกลัวคือข้อกำหนดที่รวมเข้าด้วยกันในเอกสารเดียว ฉันพยายามอธิบายถึงประโยชน์ในแง่การใช้งานจริง แต่ไม่สามารถขายได้ ฉันจะขายผลประโยชน์ของการจัดทำเอกสารได้อย่างไรว่าข้อกำหนดใดบ้างที่ใช้งานได้และไม่สามารถใช้งานได้

3
พวกคุณจัดการการแปลเพื่อแปลซอฟต์แวร์อย่างไร
ซอฟต์แวร์ส่วนใหญ่ที่ฉันเขียนไว้ในอาชีพของฉันนั้นถูกสร้างขึ้นสำหรับลูกค้าที่พูดภาษาอังกฤษ แต่เมื่อเร็ว ๆ นี้ฉันได้ทำงานในโครงการที่ต้องการการแปล UI สำหรับภาษาที่กว้างขึ้น ฉันแค่อยากรู้ว่าร้านค้าโปรแกรมอื่นได้รับการแปล พวกเขาใช้เครื่องมือแปลออนไลน์ที่มีข้อบกพร่องอย่างฉาวโฉ่หรือไม่? ฉันรู้ว่ามีนักแปลให้เช่า แต่ฉันจะต้องติดตามและทำสัญญากับพวกเขาหลายสิบคนเพื่อทำหน้าที่แปลอินเทอร์เฟซของฉันอย่างละเอียดหรือไม่ มีบริการที่เชี่ยวชาญในการทำเช่นนี้สำหรับภาษาที่หลากหลายหรือไม่? บางทีการใช้บางอย่างเช่น Turk Turk ของอเมซอนจะเป็นตัวเลือก แต่ฉันไม่รู้เลยว่าพนักงานที่มีอยู่นั้นมีความหลากหลายในไซต์นั้น ฉันคิดไม่มาก

5
คุณควรจะปล่อยบางสิ่งที่คุณสามารถแฮ็คได้หรือไม่
ในฐานะผู้สร้างโปรแกรมคุณอาจอยู่ในตำแหน่งที่ดีกว่าใครก็ตามที่ต้องระวังช่องโหว่ด้านความปลอดภัยและแฮ็คที่อาจเกิดขึ้น หากคุณรู้ว่ามีช่องโหว่ในระบบที่คุณเขียนนั่นคือสัญญาณที่เพิ่มความปลอดภัยต้องเพิ่มก่อนเผยแพร่หรือควรประเมินเป็นกรณี ๆ ไปเพื่อพิจารณาความรุนแรงของช่องว่างความปลอดภัยหรือไม่
12 security  release 

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.