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

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

3
ต้นกำเนิดของ“ Readme”
ผู้คนเริ่มเขียนไฟล์ Readme เมื่อใด ดูเหมือนว่าทุกโปรแกรมมีไฟล์นี้โดยไม่คำนึงถึงรูปแบบ มีการใช้เอกสารครั้งแรกของเอกสารนี้หรือไม่?

3
Douglas Crockford หมายถึงอะไรเมื่อเขาพูดว่า jQuery ไม่ได้ขยายขนาด [ปิด]
ในส่วนคำถามและคำตอบของการพูดคุยนี้ดักลาสคร็อคฟอร์ดกล่าวว่า jQuery ไม่ได้ปรับขนาดเช่นเดียวกับห้องสมุดยอดนิยมอื่น ๆ เขาหมายความว่าอย่างไรและอะไรคือสิ่งที่เกี่ยวกับห้องสมุดอื่น ๆ ที่ทำให้พวกเขาสามารถปรับขนาดได้มากขึ้น?

5
มีรหัสดั้งเดิมเหลืออยู่เท่าไหร่ในผลิตภัณฑ์ซอฟต์แวร์ที่ทันสมัย [ปิด]
พวกคุณหลายคนทำงานกับ บริษัท ขนาดใหญ่ที่จัดส่งซอฟต์แวร์ที่มีชื่อเสียง ฉันสงสัยว่ารหัสต้นฉบับ (โดยทั่วไปคือรหัสที่ปล่อย "v1.0") เหลืออยู่ในแอปพลิเคชั่นขนาดใหญ่ที่ทันสมัยเช่นพูด Firefox, Photoshop, Windows, Linux, etc? ฉันชอบประสบการณ์มือแรกและเรื่องราวในโลกแห่งสงครามจริง ๆ ขอบคุณสำหรับความพึงพอใจอยากรู้อยากเห็นของฉัน แก้ไข ปรากฎว่ามีระดับของความเข้าใจผิด สิ่งที่ฉันตามมาก็คือ: เมื่อคุณตำหนิ / คำอธิบายประกอบซอร์สโค้ดมีส่วนใดส่วนหนึ่งหรือแม้กระทั่งไฟล์ทั้งหมดมิได้ถูกแตะต้องตั้งแต่รุ่น 1.0 เริ่มต้น

15
ฉันจะทำให้การปรับใช้การผลิตเป็นไปโดยอัตโนมัติโดยไม่ต้องกังวลมากได้อย่างไร
ที่ร้านของเราเราใช้ SVN สำหรับการควบคุมแหล่งที่มาและ CruiseControl สำหรับ CI ในการจัดการการสร้างและการปรับใช้อัตโนมัติเพื่อการพัฒนาการทดสอบและการรวมระบบของเรา ทั้งหมดนี้ทำงานได้อย่างราบรื่น แต่เนื่องจากข้อ จำกัด ด้านฮาร์ดแวร์และทรัพยากรสภาพแวดล้อมการรวมระบบของเราไม่ได้เป็น 2 สภาพแวดล้อมที่สมดุลของเซิร์ฟเวอร์เช่นสภาพแวดล้อมการผลิตของเรา ในขณะที่ทุกสิ่งทุกอย่างมีค่าเท่ากันนั่นจะเป็นความแตกต่างเพียงอย่างเดียวระหว่างสภาพแวดล้อมการรวมและการผลิตของเรา (แม้ว่าจะเป็นเรื่องใหญ่!) ในทางทฤษฎีความแตกต่างคือการกำหนดค่าที่แตกต่างกันเล็กน้อยของเซิร์ฟเวอร์แอปของเราและสคริปต์การปรับใช้จะต้องวางสิ่งประดิษฐ์บิลด์ลงในเซิร์ฟเวอร์สองเครื่องแทนที่จะเป็นเพียงเซิร์ฟเวอร์เดียว แต่ทำไมฉันถึงกังวลมาก โดยทั่วไปฉันไม่ได้เป็นคนที่คลั่งไคล้การควบคุม แต่ฉันมักรู้สึกว่าไม่เพียงพอที่จะปรับใช้การผลิตเพื่อการผลิตด้วยตนเอง ฉันได้ยินมาจากเพื่อนร่วมงานว่านี่เป็นสิ่งที่น่ากลัวจริงๆแต่พวกเขาล้มเหลวในการฟ้องร้อง ฉันรู้ว่าเมื่อฉันทำด้วยตนเองฉันสามารถดูได้ว่าฉันกำลังคัดลอกไฟล์ที่ถูกต้องฉันกำลังปิดเซิร์ฟเวอร์แอปและทำให้แน่ใจว่าปิดเรียบร้อยแล้วฉันกำลังเริ่มเซิร์ฟเวอร์สำรองและตรวจสอบบันทึกทางกายภาพแล้ว ตรวจสอบให้แน่ใจว่ามันเริ่มดีแล้ว มันทำให้ฉันสบายใจ อะไรคือข้อโต้แย้งหรือข้อโต้แย้งนี้สำหรับการปรับใช้การผลิตสคริปต์อัตโนมัติ?

18
ผู้พัฒนาควรโต้แย้งคุณสมบัติที่ไม่จำเป็นหรือเป็นอันตรายหรือไม่?
อะไรคือทัศนคติที่ดีจากนักพัฒนาเมื่อพูดคุยเกี่ยวกับคุณสมบัติใหม่และคือคุณสมบัติที่ไม่สำคัญ / น่าสงสัย? สมมติว่าคุณกำลังพัฒนาภาษาจาวาบางอย่างเช่นภาษาและเจ้านายพูดว่า: "เราต้องการตัวชี้เพื่อให้นักพัฒนาซอฟต์แวร์สามารถทำเรื่องกับหน่วยความจำวัตถุได้โดยตรง!" นักพัฒนาควรลดระดับความคิดลงเพราะเพิ่มความซับซ้อนและช่องโหว่ด้านความปลอดภัยที่คาดเดาไม่ได้หรือไม่หรือเขาควรทำอะไรถาม นี่อาจไม่ใช่ตัวอย่างที่ดี แต่สิ่งที่เกี่ยวกับสิ่งที่อยู่ในพื้นที่สีเทาเช่นการเพิ่มปุ่มที่ทำลายเวิร์กโฟลว์หรือขัดต่อโครงสร้างภายในของโปรแกรม ฯลฯ อะไรคือการกระจาย "สามารถทำได้" ที่ดีที่สุดกับ "ไม่สามารถทำได้" สำหรับโปรแกรมเมอร์ปกติ แก้ไข: คำถามไม่เกี่ยวกับเจ้านายที่ไม่ดี: D ฉันสนใจมากขึ้นว่าผู้คนจะเข้าถึงปัญหาใหม่ ๆ อย่างไรซึ่งเพิ่มปัญหาจำนวนมากที่เห็นได้ชัดเจนในขณะที่อาจมีประโยชน์เล็กน้อย ทัศนคติทั่วไปควรเป็น: ใช่เราจะทำมันไขความซับซ้อน อาจจะ ไม่การทำใหม่ทั่วไปและความหมายไม่ได้แสดงถึงการเปลี่ยนแปลง สิ่งที่ควรเป็นปฏิกิริยาของนักพัฒนาที่ดี?
32 design 

4
“ การกลับกันของการควบคุม” ส่งเสริม“ รูปแบบโดเมนโลหิตจาง” หรือไม่?
เมื่อฉันใช้ IoC Container ในโปรเจ็กต์สุดท้ายของฉันฉันได้จบด้วยหน่วยงานโลหิตจางและตรรกะทางธุรกิจส่วนใหญ่ของฉันในบริการไร้สัญชาติ ฉันเคยเห็นโปรเจ็กต์ที่เขียนโดยนักพัฒนาคนอื่น ๆ ที่ใช้ "Inversion of Control" และพวกเขามักจะเป็น "Anemic" เนื่องจาก "Anemic Domain Model" เป็นรูปแบบต่อต้านจึงเป็นไปได้หรือไม่ที่จะใช้ IoC และ Rich Domain เป็นตัวอย่างที่ดีของพวกเขาโครงการโอเพนซอร์สที่ทำเช่นนั้น?

18
ทีมพัฒนาสามารถป้องกันประสิทธิภาพที่ช้าในแอพสำหรับผู้บริโภคได้อย่างไร
เมื่อก่อนหน้านี้ฉันถามสิ่งที่รับผิดชอบเกี่ยวกับซอฟต์แวร์ช้าคำตอบสองสามข้อที่ฉันได้รับบอกว่าเป็นปัญหาทางสังคมและการจัดการ: นี่ไม่ใช่ปัญหาด้านเทคนิค แต่เป็นปัญหาด้านการตลาดและการจัดการ .... ในที่สุดผู้จัดการผลิตภัณฑ์มีหน้าที่เขียนรายละเอียดสำหรับสิ่งที่ผู้ใช้ควรได้รับ มีหลายสิ่งหลายอย่างที่ผิดไป: ผู้จัดการผลิตภัณฑ์ล้มเหลวในการตอบสนองต่อปุ่มในสเป็ค ... ทีมงาน QA ทำหน้าที่ทดสอบปานกลางกับสเป็คปานกลาง ... หากการจัดการผลิตภัณฑ์และพนักงานควบคุมคุณภาพกำลังนอนหลับอยู่ โปรแกรมเมอร์เราไม่สามารถชดเชยได้ - บ๊อบเมอร์ฟี่ย์ ผู้คนทำงานกับแอพที่ดี ในขณะที่ทำงานปัญหาด้านประสิทธิภาพจะคืบคลานเข้ามาเหมือนกับข้อบกพร่อง ข้อแตกต่างคือ - ข้อบกพร่องคือ "ไม่ดี" - พวกเขาร้องออกมา "หาฉันและแก้ไขฉัน" ปัญหาประสิทธิภาพการทำงานเพียงแค่นั่งที่นั่นและแย่ลง โปรแกรมเมอร์มักคิดว่า "รหัสของฉันจะไม่มีปัญหาด้านประสิทธิภาพ แต่ฝ่ายบริหารจำเป็นต้องซื้อเครื่องจักรที่ใหม่กว่า / ใหญ่กว่า / เร็วกว่า" ความจริงก็คือหากนักพัฒนาซอฟต์แวร์ค้นหาปัญหาด้านประสิทธิภาพเป็นระยะ ๆ ( ซึ่งจริง ๆ แล้วง่ายมาก ) พวกเขาก็สามารถกำจัดพวกมันได้ - Mike Dunlavey ดังนั้นหากนี่เป็นปัญหาทางสังคมกลไกทางสังคมที่องค์กรสามารถจัดทำขึ้นเพื่อหลีกเลี่ยงการส่งมอบซอฟต์แวร์ที่ช้าแก่ลูกค้า
32 performance  ui 

7
จะหางานที่ไม่มีประสบการณ์ได้อย่างไร? [ปิด]
ฉันกำลังจะสำเร็จการศึกษาระดับวิทยาลัยใหม่และฉันกำลังพยายามฝึกงานหรือตำแหน่งวิศวกรซอฟต์แวร์ jr อย่างไรก็ตามฉันไม่เคยมีประสบการณ์ในสาขานี้เลย ทั้งหมดที่ฉันจะได้คือปริญญาของฉันและโครงการในชั้นเรียนที่ฉันทำเสร็จ ฉันจะทำให้ประวัติย่อของฉันน่าสนใจยิ่งขึ้นเพื่อที่ฉันจะได้สัมภาษณ์ได้อย่างไร นอกจากนี้ฉันจะจัดโครงสร้างรายละเอียดของโครงงานในชั้นเรียนได้อย่างไร? ฉันควรให้รายละเอียดมากมาย
32 skills 

11
ซอฟต์แวร์โอเพนซอร์ซคุณภาพดีออกแบบมาอย่างดี [ปิด]
ฉันกำลังเรียนออกแบบซอฟต์แวร์ที่ฉันควรเลือกซอฟต์แวร์โอเพ่นซอร์สเพื่อวิเคราะห์จากมุมมองการออกแบบซอฟต์แวร์ มันจะต้องเป็นโครงการขนาดใหญ่: ไม่น้อยกว่า 100,000 บรรทัดของรหัส ฉันอยากจะเลือกซอฟต์แวร์ที่ได้รับการออกแบบมาเป็นอย่างดีและออกแบบให้มีความเข้าใจในการออกแบบซอฟต์แวร์ที่ดี โดยการออกแบบที่ดีฉันหมายถึงสิ่งต่าง ๆ เช่นคลาสที่มีความหมายและสถาปัตยกรรมการใช้รูปแบบ (การออกแบบ) ที่ดีการใช้สิ่งที่เป็นนามธรรมการจัดองค์ประกอบที่ดีการประสานที่สูง คุณมีซอฟต์แวร์อะไรบ้างที่จะแนะนำฉัน ทราบว่าซอฟต์แวร์เพียงแค่ต้องมีการออกแบบที่ดีการออกแบบไม่จำเป็นต้องมีเอกสาร! :) มันไม่จำเป็นต้องเป็นแอปพลิเคชั่นสำหรับผู้ใช้ ... มันอาจจะเป็นห้องสมุดเครื่องมือ ฯลฯ ...

16
ความเรียบง่ายปรับปรุงความสามารถในการอ่านได้เสมอหรือไม่
เมื่อเร็ว ๆ นี้ฉันกำลังพัฒนามาตรฐานการเข้ารหัสสำหรับ บริษัท ของเรา (เราเป็นทีมใหม่ที่แยกสาขาออกเป็นภาษาใหม่สำหรับ บริษัท ) ในร่างแรกของฉันฉันกำหนดวัตถุประสงค์ของมาตรฐานการเข้ารหัสของเราเพื่อปรับปรุงความสามารถในการอ่านความสามารถในการบำรุงรักษาความน่าเชื่อถือและประสิทธิภาพ (ฉันเพิกเฉยต่อความสามารถในการเขียนแบบพกพาราคาเข้ากันได้กับมาตรฐานก่อนหน้า ฯลฯ ) หนึ่งในเป้าหมายของฉันในขณะที่เขียนเอกสารนี้คือการผลักดันแนวคิดของความเรียบง่ายของรหัส แนวคิดคือควรมีการเรียกใช้ฟังก์ชันหรือการดำเนินการต่อบรรทัดเดียวเท่านั้น ความหวังของฉันคือสิ่งนี้จะเพิ่มความสามารถในการอ่าน เป็นความคิดที่ฉันนำมาจากภาษาก่อนหน้าของเรา อย่างไรก็ตามฉันได้ตั้งข้อสงสัยเกี่ยวกับการผลักดันนี้: ความเรียบง่ายช่วยเพิ่มความสะดวกในการอ่านหรือไม่? มีกรณีที่การเขียนรหัสที่เรียบง่ายลดการอ่านหรือไม่? ควรชัดเจน แต่โดย "เรียบง่าย" ฉันไม่ได้หมายถึง "ง่ายต่อการเขียน" แต่สิ่งต่าง ๆ เกิดขึ้นน้อยกว่าต่อบรรทัด

8
อะไรเป็นสาเหตุของประสิทธิภาพที่ไม่ดีในแอพสำหรับผู้บริโภค [ปิด]
Comcast DVRของฉันใช้เวลาอย่างน้อยสามวินาทีในการตอบสนองต่อทุกปุ่มกดควบคุมระยะไกลทำให้งานง่าย ๆ ในการรับชมทีวีกลายเป็นประสบการณ์การกดปุ่มที่น่าผิดหวัง iPhone ของฉันใช้เวลาอย่างน้อยสิบห้าวินาทีในการแสดงข้อความและล่ม¼ครั้งที่ฉันพยายามเปิดแอพ iPod เพียงแค่การรับและอ่านอีเมลมักใช้เวลานานกว่าหนึ่งนาที แม้แต่ navcom ในรถของฉันก็มีการควบคุมที่นุ่มนวลและไม่ตอบสนองและมักจะกลืนอินพุตที่ต่อเนื่องหากฉันแยกพวกมันออกจากกันไม่กี่วินาที อุปกรณ์เหล่านี้เป็นเครื่องมือสำหรับผู้ใช้ปลายทางที่ใช้ฮาร์ดแวร์ซึ่งการใช้งานควรเป็นสิ่งสำคัญยิ่ง แต่อุปกรณ์เหล่านี้ก็ล้มเหลวเมื่อตอบสนองและแฝงอยู่ในระดับพื้นฐาน ซอฟต์แวร์ของพวกเขาเป็นเพียงช้าเกินไป อะไรอยู่เบื้องหลังสิ่งนี้ มันเป็นปัญหาทางเทคนิคหรือปัญหาสังคมหรือไม่? ใครหรืออะไรรับผิดชอบ เป็นเพราะสิ่งเหล่านี้ทั้งหมดถูกเขียนในภาษาที่มีการจัดการและเก็บรวบรวมขยะมากกว่ารหัสท้องถิ่นหรือไม่? โปรแกรมเมอร์แต่ละคนเป็นผู้เขียนซอฟต์แวร์สำหรับอุปกรณ์เหล่านี้หรือไม่? ในทุกกรณีผู้พัฒนาแอปรู้ว่าแพลตฟอร์มฮาร์ดแวร์แบบใดที่พวกเขากำหนดเป้าหมายและความสามารถของมันคืออะไร พวกเขาไม่นำมาพิจารณาหรือไม่? เขาเป็นคนที่พูดซ้ำ ๆ ว่า "การทำให้เกิดประโยชน์สูงสุดเป็นรากเหง้าของความชั่วทั้งหมด" เขาพาพวกเขาหลงทางหรือเปล่า? มันเป็นความคิดของ "โอ้เป็นเพียง 100ms เพิ่มเติม" ทุกครั้งจนกว่ามิลลิวินาทีเหล่านั้นทั้งหมดเพิ่มขึ้นถึงนาที? เป็นความผิดของฉันหรือเปล่าที่ต้องซื้อผลิตภัณฑ์เหล่านี้ตั้งแต่แรก? นี่เป็นคำถามอัตนัยกับไม่มีคำตอบเดียว แต่ฉันมักผิดหวังเพื่อดูคำตอบจำนวนมากดังนั้นที่นี่บอกว่า "โอ้ไม่ต้องกังวลเกี่ยวกับความเร็วรหัสประสิทธิภาพการทำงานไม่ได้เรื่อง" เมื่อเห็นอย่างชัดเจนในบางจุดมันไม่เรื่อง ผู้ใช้ปลายทางที่ติดอยู่กับประสบการณ์ที่ช้าไม่ตอบสนองและน่ากลัว ดังนั้นสิ่งที่จุดผิดพลาดสำหรับผลิตภัณฑ์เหล่านี้? เราในฐานะโปรแกรมเมอร์สามารถทำอะไรได้บ้างเพื่อหลีกเลี่ยงการสร้างความเจ็บปวดให้กับลูกค้าของเรา?

12
ทำไม บริษัท ต่างๆถึงบอกฉันว่าพวกเขาต้องการให้ฉันเป็นพนักงานใน บริษัท ไม่ใช่ผู้รับเหมา [ปิด]
บริบท ฉันกำลังมองหางานเป็นผู้รับเหมาในสาขาความเชี่ยวชาญของฉันและต้องการที่จะได้รับเงินน้อยลงและมีผลประโยชน์น้อยกว่าการทำงานเป็นผู้รับเหมาระยะสั้น ปัญหา: บริษัท ต่างๆบอกว่าฉันต้องเป็นพนักงานของ บริษัท ด้วยเหตุผลด้านทรัพย์สินทางปัญญา คำถาม: มันจะไม่ง่ายสำหรับพวกเขาที่จะให้ฉันเซ็นสัญญาว่างานของฉันเป็นของพวกเขาเหรอ? ถ้าฉันทำงานเป็นผู้รับเหมาพวกเขาสามารถปล่อยให้ฉันไปเมื่อค่าของฉันลดลงและประหยัดเงินจำนวนมาก สิ่งที่ฉันหายไปที่นี่?

2
ประวัติของการออกเสียงของ SQL อย่างไม่เป็นทางการคืออะไร?
SQL ออกเสียงอย่างเป็นทางการว่า / /skjuːˈɛl / like "SQL" ตามที่ระบุใน Beaulieu, Alan (เมษายน 2009) Mary E. Treseler เอ็ด การเรียนรู้ SQL (2nd ed.) Sebastapol, CA, USA: O'Reilly ไอ 978-0-596-52083-0 แต่บ่อยครั้งที่มันถูกออกเสียง / ˈsiːkwəl / เช่น "ผลสืบเนื่อง" ประวัติศาสตร์ของการออกเสียงครั้งที่สองนี้คืออะไร?
32 sql  history 

10
จัดส่งได้ แต่เช้าไม่ส่ง [ปิด]
สิ่งนี้เริ่มต้นในฐานะ "หมายเหตุถึงตัวเอง" ดังนั้นโปรดยกโทษให้ฉันถ้าความยุ่งยากนั้นชัดเจนและการเขียนนั้นน้อยกว่าตัวเอก ... สามวิชาหลักที่ฉันมีอยู่ในระดับแนวหน้าของจิตใจของฉันเมื่อเร็ว ๆ นี้: แรงจูงใจ การเรียนรู้ (อยากรู้อยากเห็น) ทำ (ทำ) ตอนนี้ฉันเรียนแรงจูงใจและแรงจูงใจมาหลายเดือนแล้ว ดูเหมือนว่ามีแรงจูงใจที่แตกต่างกันมากมายที่ผู้คนอาจมีเพื่อทำสิ่งต่าง ๆ (ฉันตระหนักว่าฟังดูน่าเบื่อ แต่ทนกับฉัน) ฉันได้รับการวาดจริงๆมันเพราะฉันหมดหวังที่จะหาเหตุผลที่ผมทำในสิ่งที่ฉันทำและทำไมฉันจะไม่ทำสิ่งที่ฉันต้องการจะทำ แต่ไม่ทำ ฉันอยู่ท่ามกลางการอ่านหนังสือแฮกเกอร์และจิตรกรชื่อดังของพอลเกรแฮม ในนั้นเขาทำให้กรณีที่แฮ็กเกอร์และจิตรกรมีความคล้ายคลึงกันมาก จิตรกรทำภาพวาด แฮกเกอร์ทำซอฟต์แวร์ จิตรกรไม่จำเป็นต้องเข้าใจองค์ประกอบทางเคมีของสีเพื่อสร้างภาพวาดที่สวยงาม และแฮกเกอร์ไม่จำเป็นต้องรู้ 1 และ 0 เพื่อสร้างซอฟต์แวร์ที่สวยงาม เกรแฮมนั้นดึงความแตกต่างระหว่างสาขาวิทยาศาสตร์คอมพิวเตอร์ที่แตกต่างกัน: บางคนดูเหมือนจะเรียนคณิตศาสตร์ ดูเหมือนว่าบางคนกำลังศึกษาคอมพิวเตอร์ด้วยตัวเอง แฮกเกอร์กำลังสร้างซอฟต์แวร์ ความแตกต่างนั้นสำคัญอย่างไม่น่าเชื่อ ดูเหมือนว่าแรงจูงใจสำหรับบางคนคือการทำสิ่งที่สวยงาม และแรงจูงใจสำหรับผู้อื่นคือการเรียนรู้จากความอยากรู้ แรงจูงใจบางอย่างดูเหมือนจะชัดเจนสำหรับฉัน แต่ความอยากรู้อยากเห็นดูเหมือนชัดเจนน้อยลง ฉันจะถือว่าตัวเองเป็นคนที่มีความอยากรู้อยากเห็นอย่างแน่นอนและไม่สามารถดับได้เพื่อเรียนรู้ทุกอย่างที่ฉันทำได้ แต่นี่คือสิ่งที่ปัญหาเกิดขึ้น สิ่งที่ทำให้ฉันกลัวมากคือฉันอยากทำทุกอย่าง ฉันอยากทำสิ่งต่าง ๆ อย่างยิ่ง ฉันต้องการเขียนหนังสือ ฉันต้องการทาสี ฉันต้องการแต่งเพลง ฉันต้องการทำสิ่งต่าง ๆ เช่นการเดินทาง …

20
หนังสือที่ดีที่สุดเกี่ยวกับทฤษฎีและการปฏิบัติของสถาปัตยกรรมซอฟต์แวร์? [ปิด]
ฉันมีนักพัฒนาสองสามคนที่ บริษัท ของฉันซึ่งต้องการเปลี่ยนจากการเขียนโปรแกรมมาเป็นสถาปัตยกรรม หนังสือที่ดีที่สุดในทฤษฎีและการปฏิบัติของสถาปัตยกรรมซอฟต์แวร์คืออะไร? รวมภาพหน้าปกถ้าทำได้ รู้สึกฟรีที่จะรวมหนังสือทั่วไปและหนังสือที่เกี่ยวข้องกับเทคโนโลยีเฉพาะ

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