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

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

4
วิธีเพิ่มทักษะโครงสร้างข้อมูลของฉันหลังจากการจำศีลนาน [ปิด]
ปิด. คำถามนี้เป็นคำถามปิดหัวข้อ ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้เป็นหัวข้อสำหรับ Software Engineering Stack Exchange ปิดให้บริการใน4 ปีที่แล้ว ฉันค่อนข้างดีกับอัลกอริธึมและโครงสร้างข้อมูลหนึ่งครั้งนานมาแล้ว ตั้งแต่นั้นมาฉันตั้งโปรแกรมอย่างมืออาชีพจากนั้นก็จัดการทีมเล็ก ๆ ซึ่งยิงทักษะด้านเทคโนโลยีทั้งหมดของฉันในด้านนี้ ฉันตัดสินใจว่าฉันต้องการเป็นนักพัฒนาอีกครั้งและทำงานให้กับ Google สิ่งนี้คือฉันออกจากการฝึกซ้อมมากและถ้าฉันจะถูกสัมภาษณ์ตอนนี้ฉันจะหลุดออกไปใน 10 นาที โปรแกรมการฝึกอบรมใดที่คุณจะแนะนำให้ฉันกลับมาเป็นรูปร่างอีกครั้ง? ฉันเริ่มวันหยุดสุดสัปดาห์นี้ด้วยการกลับไปใช้ข้อมูลพื้นฐานแบบสัมบูรณ์และใช้อัลกอริทึมการเรียงลำดับรายการที่ลิงก์และตารางแฮช ต่อไปฉันคิดว่าฉันจะอ่านเนื้อหาทั้งหมดของหลักสูตรในโครงสร้างข้อมูลพื้นฐานและอัลกอริธึมกราฟอื่น ๆ ฉันต้องการค้นหาชุดของการฝึกปฏิบัติที่ฉันสามารถทำได้ในระยะเวลาอันสั้นเพื่อเล่นปาหี่เซลล์สมองเก่า ฉันรู้สิ่งนี้ - ฉันแค่ต้องเตือนตัวเองว่าฉันรู้
10 training 

3
โอเพนซอร์สใบอนุญาตที่ไม่ใช่เชิงพาณิชย์? [ปิด]
ปิด. คำถามนี้เป็นคำถามปิดหัวข้อ ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้เป็นหัวข้อสำหรับ Software Engineering Stack Exchange ปิดให้บริการใน6 ปีที่ผ่านมา ฉันต้องการเผยแพร่ซอฟต์แวร์ภายใต้สิทธิ์ใช้งาน opensource โดยมีเงื่อนไขดังต่อไปนี้: คุณได้รับอนุญาตให้: แบ่งปัน - เพื่อคัดลอกแจกจ่ายและส่งงานดังกล่าว ใช้รหัสรุ่นที่แก้ไขในแอปพลิเคชันของคุณ คุณไม่ได้รับอนุญาตให้: เผยแพร่รหัสที่แก้ไขแล้ว ใช้รหัสในเชิงพาณิชย์ มีลิขสิทธิ์ซอฟต์แวร์ที่ตรงกับความต้องการของฉันหรือไม่ (crosspost: /programming/4558546/opensource-noncommercial-license )
10 licensing 

4
การกระจายข้อมูลข้ามขอบเขตวัตถุ
หลายครั้งที่วัตถุธุรกิจของฉันมักจะมีสถานการณ์ที่ข้อมูลจำเป็นต้องข้ามขอบเขตวัตถุบ่อยเกินไป เมื่อทำ OO เราต้องการให้ข้อมูลอยู่ในวัตถุเดียวและมากที่สุดเท่าที่เป็นไปได้รหัสทั้งหมดที่เกี่ยวข้องกับข้อมูลนั้นควรอยู่ในวัตถุนั้น อย่างไรก็ตามกฎเกณฑ์ทางธุรกิจไม่ได้ปฏิบัติตามหลักการนี้ทำให้ฉันมีปัญหา ตัวอย่างเช่นสมมติว่าเรามีคำสั่งซื้อที่มีหมายเลขของ OrderItems ซึ่งอ้างถึง InventoryItem ซึ่งมีราคา ฉันเรียกใช้ Order.GetTotal () ซึ่งสรุปผลของ OrderItem.GetPrice () ที่ทวีคูณปริมาณโดย InventoryItem.GetPrice () จนถึงตอนนี้ดีมาก แต่จากนั้นเราพบว่าบางรายการมีการขายสองรายการต่อการจัดการหนึ่งรายการ เราสามารถจัดการสิ่งนี้ได้โดยให้ OrderItem.GetPrice () ทำบางอย่างเช่น InventoryItem.GetPrice (ปริมาณ) และปล่อยให้ InventoryItem จัดการกับสิ่งนี้ อย่างไรก็ตามเราพบว่าดีลแบบสองต่อหนึ่งนั้นมีระยะเวลาที่ จำกัด เท่านั้น ช่วงเวลานี้จะต้องเป็นไปตามวันที่สั่งซื้อ ตอนนี้เราเปลี่ยน OrderItem.GetPrice () เป็น InventoryItem.GetPrice (quatity, order.GetDate ()) แต่เราต้องสนับสนุนราคาที่แตกต่างกันขึ้นอยู่กับระยะเวลาที่ลูกค้าอยู่ในระบบ: InventoryItem.GetPrice (ปริมาณ, คำสั่งซื้อ GetDate (), คำสั่งซื้อ GetCustomer …

3
INT_MIN-1 เป็นอันเดอร์โฟล์หรือโอเวอร์โฟลว์หรือไม่?
ฉันดูเหมือนจะจำได้ว่าฉันกำลังอ่านที่ underflowหมายความว่าคุณมีขนาดเล็กเกินไปขนาดที่ไม่สามารถนำเสนอได้อีกต่อไปในประเภท overflowหมายความว่าคุณมีขนาดใหญ่เกินไปขนาดที่ไม่สามารถนำเสนอได้อีกต่อไปในประเภท อย่างไรก็ตามในทางปฏิบัติฉันเข้าใจว่ามีการใช้ข้อกำหนดดังกล่าว underflowหมายความว่าคุณมีค่าน้อยเกินไปที่ไม่สามารถนำเสนอในรูปแบบได้อีกต่อไป overflowหมายความว่าคุณมีขนาดใหญ่เกินไปค่าที่ไม่สามารถนำเสนอได้อีกต่อไปในประเภท ความหมายที่ถูกต้องที่จะใช้ที่นี่คืออะไร? คำที่กำหนดแตกต่างกันสำหรับประเภทจำนวนเต็มและทศนิยมหรือไม่

4
ฉันควรเรียนรู้อะไรจากโครงการ
ฉันสงสัยว่าคุณสมบัติพิเศษใดบ้างที่ฉันสามารถเรียนรู้จาก Scheme ซึ่งจะช่วยให้ฉันเป็นโปรแกรมเมอร์ที่ดีขึ้น ฉันมีประสบการณ์มากมายในภาษากระแสหลักและฉันกำลังมองหาเพื่อขยายขอบเขตและเรียนรู้เกี่ยวกับแง่มุมการใช้งานที่ขาดหายไปจากภาษาอื่น ฉันคุ้นเคยกับการปิดจาก javascript, การแสดงออกแลมบ์ดาจาก C # และฉันสงสัยว่าสิ่งที่ฉันสามารถมุ่งเน้นไปที่การขาดในภาษาอื่น ๆ ? นอกเหนือจากไวยากรณ์เสียงกระเพื่อมฉันรู้สึกเหมือนสิ่งที่ฉันได้เห็นจนถึงตอนนี้ฉันได้พบในภาษาอื่น ๆ มีอะไรพิเศษสำหรับ Scheme / Lisp ที่จะสอนอะไรใหม่ ๆ ให้ฉัน

8
นักพัฒนาควรมีส่วนร่วมในการทดสอบขั้นตอนหรือไม่
เราใช้กระบวนการพัฒนารูปตัววีแบบคลาสสิก จากนั้นเรามีข้อกำหนดสถาปัตยกรรมการออกแบบการใช้งานการทดสอบการรวมระบบการทดสอบและการยอมรับ ผู้ทดสอบกำลังเตรียมกรณีทดสอบในช่วงแรกของโครงการ ปัญหาคือเนื่องจากปัญหาทรัพยากร (*) ขั้นตอนการทดสอบยาวเกินไปและมักสั้นลงเนื่องจากข้อ จำกัด ด้านเวลา (คุณรู้จักผู้จัดการโครงการ ... ;) นักพัฒนากำลังทำการทดสอบหน่วยตามที่ควรจะเป็น ดังนั้นคำถามของฉันง่าย: นักพัฒนาควรมีส่วนร่วมในขั้นตอนการทดสอบและไม่เป็น 'อันตราย' เกินไป ฉันกลัวว่ามันจะทำให้ผู้จัดการโครงการรู้สึกถึงคุณภาพที่ผิดพลาดในขณะที่ทำงานเสร็จ แต่คนที่เพิ่มเข้ามานั้นมีคุณค่าหรือไม่? ฉันไม่มั่นใจในการพัฒนาของนักทดสอบ (ไม่มีความผิดที่นี่ แต่เราทุกคนรู้ว่ามันยากที่จะทำลายในไม่กี่คลิกสิ่งที่คุณได้ทำในวันที่ร้ายแรง ขอบคุณสำหรับการแบ่งปันความคิดของคุณ (*) สำหรับเหตุผลที่คลุมเครือการเพิ่มจำนวนผู้ทดสอบไม่ใช่ตัวเลือก ณ วันนี้ (เพียงแค่ล่วงหน้าไม่ใช่โปรแกรมเมอร์ที่ซ้ำซ้อนควรช่วยผู้ทดสอบในการออกแบบการทดสอบหรือไม่ซึ่งพูดถึงการเตรียมการทดสอบและไม่ทดสอบการทำงานที่เราหลีกเลี่ยงความเกี่ยวข้องของนักพัฒนา)

5
เป็นความคิดที่ดีที่จะสร้างตารางใหม่สำหรับลูกค้าแต่ละรายของ webapp หรือไม่?
นี่คือกึ่งสมมุติและเนื่องจากฉันไม่เคยมีประสบการณ์ในการจัดการกับตารางฐานข้อมูลขนาดใหญ่ฉันจึงไม่ทราบว่ามันน่ากลัวด้วยเหตุผลบางประการ ตามสถานการณ์: ลองนึกภาพแอปพลิเคชันบนเว็บ - สมมติว่าซอฟต์แวร์บัญชีซึ่งมีลูกค้า 20,000 รายและลูกค้าแต่ละรายมีรายการมากกว่า 1,000 รายการในตาราง นั่นคือ 20 ล้านแถวซึ่งฉันรู้ว่าสามารถชะลอการค้นหาที่ซับซ้อนได้อย่างแน่นอน ในกรณีเช่นนี้การสร้างตารางใหม่ในฐานข้อมูลสำหรับไคลเอ็นต์แต่ละเครื่องเหมาะสมหรือไม่ ฐานข้อมูลมีปฏิกิริยาอย่างไรกับการมีตารางขนาด 20k (หรือมากกว่านั้น)?

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

3
คุณใช้กรอบการจัดการความสามารถในการขยายอย่างไร
ฉันทำงานกับ MEF มาประมาณ 2 สัปดาห์ ฉันเริ่มคิดว่า MEF คืออะไรค้นคว้าหาวิธีใช้ MEF และในที่สุดก็ใช้โฮสต์กับ 3 โมดูล สัญญาที่พิสูจน์แล้วว่าง่ายต่อการเข้าใจและจัดการโมดูลได้ง่าย ถึงแม้ว่า MEF จะใช้งานได้จริง แต่ฉันก็ยังสงสัยในระดับใด ฉันหมายความว่าทุกคนจะต้องเขียนแอปพลิเคชันที่มีอยู่เดิมใหม่เพื่อเพิ่มความสามารถหรือไม่? ใช่ฟังดูแล้วก็ทำไม่ได้อย่างบ้าคลั่ง วาทศาสตร์พูด: MEF ส่งผลต่อแนวโน้มปัจจุบันในการเขียนโปรแกรมอย่างไร คุณเริ่มมองหาโอกาสในการใช้ MEF หรือไม่? คุณได้เริ่มวางแผนเขียนใหม่ของแอพที่มีอยู่แล้วซึ่งอาจได้ประโยชน์จากการเพิ่มความสามารถหรือไม่? ที่กล่าวว่าคำถามของฉันคือ ฉันจะรู้ได้อย่างไรเมื่อฉันควรวางแผนโครงการใหม่ที่มีความสามารถในการขยาย ฉันจะรู้ได้อย่างไรว่าโครงการที่มีอยู่นั้นจำเป็นต้องเขียนใหม่อีกครั้งเพื่อเพิ่มความสามารถ? มีใครใช้ MEF ไหม
10 .net  frameworks  mef 

4
อาร์กิวเมนต์จะทำการตรวจสอบไฟล์ไบนารีอีกครั้งใน SCM
ฉันทำงานให้กับ บริษัท ที่สร้างแอปพลิเคชัน Java เป็นหลักและฉันพยายามโน้มน้าวให้ทุกคนหยุดตรวจสอบไฟล์ไบนารี่ (การอ้างอิงและผลิตภัณฑ์ขั้นสุดท้าย) ไปยัง SCM พวกเขารู้ว่ามันเป็นวิธีปฏิบัติที่ไม่ดี แต่พวกเขาคิดว่า "มันใช้งานได้" และมันก็ไม่ได้เป็นปัญหาจริงๆแม้ในขณะที่หลายคนรู้เกี่ยวกับ Maven และเครื่องมืออื่น ๆ สำหรับการสร้างนอกเหนือจาก Ant ทั้งนักเขียนบทละครและโปรแกรมเมอร์ (ประมาณ 50 คน) พร้อมที่จะรับฟังข้อโต้แย้งใด ๆ และยอมรับว่ามันเสียพื้นที่ในการสำรองข้อมูล แต่ฉันต้องการที่จะเชื่ออย่างแท้จริงเพราะการเปลี่ยนนิสัยจะต้องใช้ความพยายามอย่างมาก คุณใช้ข้อโต้แย้งอะไรเพื่อสนับสนุนการเปลี่ยนแปลง แก้ไข:โอเคมันสมเหตุสมผลแล้วที่จะแยกความแตกต่างระหว่างไฟล์ที่แทบจะไม่เปลี่ยนแปลงเช่นการพึ่งพาและการสร้างไฟล์ ถึงอย่างนั้นฉันก็ให้ความสนใจในเหตุผลต่อหลัง
10 java  builds 

6
คู่มือการใช้งาน - วิธีการถึงวันที่?
หากคุณมีผลิตภัณฑ์ที่อยู่ในตลาดมาเป็นเวลานาน แต่มันยังอยู่ในการพัฒนาที่ใช้งานอยู่ทุกวัน - ควรอัพเดทคู่มือบ่อยแค่ไหน? หากผู้ใช้ของคุณได้รับการอัปเดตเป็นรุ่นที่ทันสมัยอยู่เสมอเนื่องจากองค์กรของคุณเห็นว่าการแก้ไขข้อบกพร่องล่าสุดนั้นอยู่ในเวอร์ชันที่จัดส่งอยู่เสมอ หมายความว่าคุณสามารถแก้ไขข้อบกพร่องได้ในวันหนึ่งและวันถัดไปที่กำลังเกิดการผลิต

2
“ กรอบการยืนยัน” คืออะไร?
ผมอ่านเกี่ยวกับกรอบการทดสอบหน่วย js ทดสอบขับเมื่อผมพบว่าคนที่อยู่เบื้องหลังกรอบตั้งใจที่จะบูรณาการกับกรอบการยืนยัน กรอบการยืนยันคืออะไร มันเป็นกรอบการทดสอบหน่วยหรือไม่ ถ้าเป็นกรณีเฉพาะกรอบดังกล่าวคืออะไร?

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

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

4
การสร้างใหม่ในการออกแบบโดเมนขับเคลื่อน [ปิด]
ปิด คำถามนี้ต้องการรายละเอียดหรือความคมชัด ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ เพิ่มรายละเอียดและชี้แจงปัญหาโดยแก้ไขโพสต์นี้ ปิดให้บริการใน6 ปีที่ผ่านมา ฉันเพิ่งเริ่มทำงานในโครงการและเรากำลังใช้การออกแบบที่ขับเคลื่อนด้วยโดเมน (ตามที่กำหนดโดย Eric Evans ในการออกแบบที่ขับเคลื่อนด้วยโดเมน: การแก้ปัญหาความซับซ้อนในหัวใจของซอฟต์แวร์ฉันเชื่อว่าโครงการของเราเป็นผู้สมัครสำหรับการออกแบบนี้ แบบที่อีแวนส์อธิบายไว้ในหนังสือของเขา ฉันกำลังดิ้นรนกับความคิดในการปรับโครงสร้างใหม่อย่างต่อเนื่อง ฉันรู้ว่าการปรับโครงสร้างเป็นสิ่งจำเป็นในโครงการใด ๆ และจะเกิดขึ้นอย่างหลีกเลี่ยงไม่ได้เมื่อมีการเปลี่ยนแปลงซอฟต์แวร์ อย่างไรก็ตามจากประสบการณ์ของฉันการเปลี่ยนโครงสร้างเกิดขึ้นเมื่อความต้องการของทีมพัฒนาเปลี่ยนไปไม่ใช่ความเข้าใจในการเปลี่ยนแปลงโดเมน ("การปรับโครงสร้างใหม่เป็นความเข้าใจที่ลึกซึ้งยิ่งขึ้น" ตามที่ Evans เรียกว่า) ฉันกังวลมากที่สุดกับความก้าวหน้าในการทำความเข้าใจโมเดลโดเมน ฉันเข้าใจว่าทำการเปลี่ยนแปลงเล็กน้อย แต่จะเกิดอะไรขึ้นถ้าจำเป็นต้องเปลี่ยนแปลงโมเดลเป็นอย่างมาก เป็นวิธีที่มีประสิทธิภาพในการโน้มน้าวตัวเอง (และอื่น ๆ ) คุณควร refactor หลังจากที่คุณได้รับรูปแบบโดเมนที่ชัดเจนคืออะไร? ท้ายที่สุดการปรับโครงสร้างองค์กรเพื่อปรับปรุงโค้ดหรือประสิทธิภาพอาจแตกต่างอย่างสิ้นเชิงจากวิธีการแสดงออกในแง่ของรหัสภาษาที่แพร่หลาย บางครั้งดูเหมือนว่าไม่มีเวลาพอที่จะสร้างใหม่ โชคดีที่ SCRUM ปล่อยให้ตนเองฟื้นฟู ลักษณะซ้ำของ SCRUM ทำให้ง่ายต่อการสร้างชิ้นเล็ก ๆ และเปลี่ยนแปลงและมัน แต่เมื่อเวลาผ่านไปชิ้นส่วนนั้นจะใหญ่ขึ้นและจะเกิดอะไรขึ้นถ้าคุณมีความก้าวหน้าหลังจากชิ้นส่วนนั้นใหญ่มากจนยากที่จะเปลี่ยน มีใครทำงานในโครงการที่ใช้การออกแบบโดยใช้โดเมนหรือไม่ ถ้าเป็นเช่นนั้นจะเป็นการดีหากได้รับข้อมูลเชิงลึกเกี่ยวกับสิ่งนี้ ฉันต้องการได้ยินเรื่องราวความสำเร็จเป็นพิเศษเนื่องจาก DDD ดูเหมือนจะยากมาก ขอบคุณ!

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