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

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

3
วิธีจัดการการเปลี่ยนแปลงสกีมาของฐานข้อมูลในการเปิดตัวโครงการโอเพ่นซอร์ส
ฉันจัดการโปรแกรมประยุกต์ PHP / MySQL เว็บแบบโอเพนซอร์ซที่ใช้โดยโรงเรียน K-12 และวิทยาลัยบางแห่ง ฉันยังเป็นผู้พัฒนาโครงการเท่านั้น ในขณะที่มันเคยเป็นมากกว่าการดาวน์โหลดต้นฉบับของแอปพลิเคชันที่นายจ้างของฉันโฮสต์ฉันได้ทำงานในช่วงปีที่ผ่านมาเพื่อให้เป็นโครงการโอเพ่นซอร์ส "ของจริง" พร้อมเอกสารประกอบการเผยแพร่หมายเลขการเปลี่ยนแปลงสาธารณะ ฯลฯ ฉันกำลังมองหาเพื่อปรับปรุงกระบวนการอัพเกรดและหนึ่งในพื้นที่ที่อาจเจ็บปวด (โดยเฉพาะอย่างยิ่งสำหรับโรงเรียนที่มีความเชี่ยวชาญด้านไอที) คือการเปลี่ยนแปลงโครงสร้างฐานข้อมูลระหว่างรุ่นต่างๆ พวกเขามักจะไม่เกิดขึ้นบ่อยหรือมีการเปลี่ยนแปลงที่รุนแรง แต่ฉันขอขอบคุณข้อเสนอแนะเกี่ยวกับกระบวนการ ขณะนี้ฉันยังคงสคริปต์ฐานติดตั้ง SQL ไว้เพื่อติดตั้งฐานข้อมูลในการติดตั้งใหม่ ซึ่งรวมถึงสคีมาที่สมบูรณ์สำหรับรุ่นปัจจุบัน ไม่จำเป็นต้องดำเนินการใด ๆ สำหรับการติดตั้งใหม่ การเปลี่ยนแปลงที่เกิดขึ้นระหว่างการเผยแพร่จะถูกเก็บไว้ในupgrade-$releasever.sqlสคริปต์และจำเป็นต้องเรียกใช้สคริปต์การอัปเกรดทั้งหมดสำหรับการเผยแพร่ที่ถูกข้ามไป เชลล์สคริปไม่ค่อยเหมาะสมนักเนื่องจากผู้ใช้ของเราจำนวนมากทำงานบนโฮสต์ที่ไม่มีการเข้าถึงเชลล์ เนื่องจากลำดับความสำคัญอื่น ๆ สคริปต์ติดตั้ง / อัพเกรดที่ใช้เบราว์เซอร์ PHP ที่ซับซ้อนจึงไม่น่าจะเกิดขึ้นได้ อย่างไรก็ตามฉันต้องการทำบางสิ่งกับสคริปต์ PHP ที่ใช้เบราว์เซอร์เพื่อทำให้การอัพเกรดง่ายขึ้น คำแนะนำเกี่ยวกับวิธีการเข้าถึง

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

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

3
มาพร้อมกับกลยุทธ์การควบคุมเวอร์ชันสำหรับ SVN
นอกเวลาฉันจะพยายามหากลยุทธ์ในการควบคุมเวอร์ชันสำหรับ บริษัท ของฉัน ปัจจุบันเราใช้ SVN แต่ไม่มีโครงสร้าง - โดยพื้นฐานแล้วเรามีลำตัวและมุ่งมั่นเท่านั้น เมื่อเร็ว ๆ นี้ผู้จัดการฝ่ายพัฒนาเริ่มต้นพื้นที่เก็บข้อมูลที่สองซึ่งทำหน้าที่เป็น "แท็ก" ของเรา แต่จะต้องรวมเข้ากับ "ลำต้น" ด้วยตนเองเนื่องจากไม่ได้เป็นส่วนหนึ่งของพื้นที่เก็บข้อมูลเดียวกัน แต่แยกต่างหากโดยสิ้นเชิง ในความเป็นจริงมีเพียงโฟลเดอร์เดียวที่เรียกว่า "Dev" (จริง ๆ แล้วมีโฟลเดอร์ "Dev" ที่แตกต่างกันตามวันที่ที่แตกต่างกัน แต่เพียงแค่ "Dev" เป็นโฟลเดอร์หลัก) และภายใต้นั้นเป็นทุกอย่างอื่น โครงการอื่น ๆ ทั้งหมด มันไม่ได้จัดโดยโปรเจคเลยมันไม่มีคอนเซ็ปต์ของ branch / tag / trunk หรืออะไรเลย คนที่ตั้งขึ้นครั้งแรก (หายไปนาน แน่นอน) ดูเหมือนจะไม่รู้วิธีตั้งค่า SVN เลยและตั้งแต่นั้นมาก็ไม่มีใครใส่ใจที่จะเรียนรู้วิธีการทำสิ่งต่าง ๆ อย่างถูกต้องเพราะกลัวว่าจะทำลายบางสิ่งบางอย่าง เราไม่ใช้ CI ใด ๆ …


5
คุณสามารถพัฒนาทักษะการเขียนโปรแกรมโดยเรียนรู้กระบวนทัศน์ภาษาอื่น ๆ ได้หรือไม่?
ถ้าเป็นเช่นนั้นคุณช่วยบอกฉันได้หรือไม่ว่าการเรียนรู้กระบวนทัศน์ใหม่เปลี่ยนวิธีการของคุณในการแก้ปัญหาการเขียนโปรแกรมแม้ว่าปัญหาจะอยู่ในกระบวนทัศน์ / ภาษา / เทคโนโลยีอื่นหรือไม่? ฉันจะซาบซึ้งจริง ๆ ถ้าคุณสามารถบอกฉันในลักษณะที่เฉพาะเจาะจงวิธี X (เช่น: JAVA / C # / C ++) ทักษะการเขียนโปรแกรมของคุณดีขึ้นโดยการเรียนรู้ Y (เช่น: Scheme / Prolog / Lisp) นอกจากนี้กรอบความคิดใดที่คุณแนะนำช่วยให้มากที่สุดในการเป็นโปรแกรมเมอร์ที่ดี? ประสบการณ์ของฉันมีโครงสร้างเท่านั้น - OOP, ความจำเป็น - ขั้นตอนและในขอบเขตของเทมเพลตการเขียนโปรแกรม แต่ฉันไม่ได้เรียนรู้ภาษาอื่น ขอบคุณ!

6
แนวทางการตรวจสอบโค้ดสำหรับ CSS, JS และ HTML
ฉันถูกขอให้สร้างแนวทางสำหรับการตรวจสอบ CSS, JS และ HTML ฉันรู้ว่ามีแนวทางการเข้ารหัสสำหรับ JS แต่ฉันไม่รู้เกี่ยวกับ HTML และ CSS ในการตรวจสอบ JS ฉันจะทำตามแนวทางเหล่านั้นอย่างแน่นอนและกล่าวถึงพวกเขา แต่ CSS และ HTML เป็นอย่างไร นอกเหนือจากข้อผิดพลาดเชิงตรรกะและปัญหาการเยื้องสิ่งใดที่ฉันต้องตรวจสอบเมื่อฉันตรวจสอบมาร์กอัปและหรือ CSS?

3
ควรใช้ RCP เมื่อใด
ฉันชอบเขียนแอปพลิเคชั่น GUI ขนาดเล็กโดยใช้ Java และ Swing บางอย่างเช่นไคลเอนต์สำหรับเว็บไซต์Tumblrโซเชียล ฉันควรใช้ Eclipse RCP หรือแพลตฟอร์ม Netbeans หรือไม่ ฉันจะได้รับประโยชน์อะไรจากการใช้ทั้งสองอย่างโดยใช้การแกว่งแบบธรรมดา / SWT แอพพลิเคชั่น RCP ต้องการการพึ่งพามากกว่าการพัฒนาโดยใช้ Swing หรือ SWT หรือไม่?
9 java  gui 

4
คุณจะจัดการเรื่องราวที่ต้องพึ่งพาในการต่อสู้ได้อย่างไร
ใน บริษัท ที่ฉันทำงานอยู่ในขณะนี้เราสังเกตว่าบางครั้งเรื่องราวบางเรื่องก็ผูกพันกัน นี่อาจเป็นเพราะมันเป็นคุณสมบัติโดยรวมที่เหมือนกันหรือว่าเป็นคุณสมบัติที่แตกต่างกัน แต่มีบางอย่างที่ต้องทำให้เสร็จก่อนเพื่อดำเนินการต่อกับสิ่งต่อไป ฯลฯ คุณจัดการกรณีนี้อย่างไรโดยไม่หยุดเวิร์กโฟลว์ของการวนซ้ำ? พวกเรากำลังทำอะไรผิดหรือเปล่า?
9 scrum  stories 

2
วิธีที่ดีในการประเมินสถาปัตยกรรมที่มีน้ำหนักเบาคืออะไร?
ฉันคุ้นเคยกับวิธีการประเมินผลสถาปัตยกรรมเช่นเทคนิควิธีสถาปัตยกรรม tradeoff วิเคราะห์ (Atam)และธุรกิจที่มุ่งเน้นมากขึ้นค่าใช้จ่ายผลประโยชน์ของวิธีการวิเคราะห์ (CBAM) อย่างไรก็ตามวิธีการเหล่านี้มีขนาดใหญ่พอสมควร: พวกเขากำหนดช่วงการระดมสมองหลายครั้งการนำเสนอการพัฒนาโฮสต์ของสถานการณ์ที่อธิบายถึงการแลกเปลี่ยน ฯลฯ ในขณะที่มีประโยชน์สำหรับโครงการที่มีขนาดที่แน่นอนพวกเขามีขนาดใหญ่เกินไปสำหรับโครงการภายใน พัฒนาโดยนักพัฒนาไม่กี่คน (หรือน้อยกว่า) แม้ว่าจะมีขนาดเล็ก แต่ก็มีข้อ จำกัด ด้านคุณภาพค่อนข้างสูง (ประสิทธิภาพ, ความสามารถในการปรับขนาด, ความสามารถในการปรับตัว) การปฏิบัติทั่วไปที่ฉันเคยใช้ในอดีตคือการมีนักพัฒนาหนึ่งคน (หรือสถาปนิกหากทีมมีหนึ่งคน) เพื่อสร้างสถาปัตยกรรมทั่วไปสำหรับแอปพลิเคชันแล้วพูดคุยกันบนกระดานไวท์บอร์ดกับส่วนที่เหลือของทีม เครื่องหมายหลอก - UML บางอย่างที่ง่ายต่อการวาดและเข้าใจ โดยทั่วไปจะนำไปสู่ข้อเสนอแนะและการวนซ้ำในสถาปัตยกรรม แต่มันก็มีแนวโน้มที่จะไม่เป็นทางการเกินไปจนทำให้มีการตั้งสมมติฐานทุกชนิดซึ่งอาจกลายเป็นการตัดสินใจที่ผิดพลาดในภายหลัง วิธีการเช่น Atam มักจะบังคับให้ผู้มีส่วนได้เสียทุกคนที่จะคิดอย่างลึกซึ้งเกี่ยวกับสถาปัตยกรรมซึ่งนำไปสู่การอภิปรายจนทุกคนอย่างน้อยเห็นด้วยกับสิ่งที่สถาปัตยกรรมว่าเป็น ใครบ้างมีประสบการณ์กับการทำการประเมินสถาปัตยกรรมเบื้องหน้าบ้างไหม? ถ้าเป็นเช่นนั้นการปฏิบัติที่ดีคืออะไร?

5
พื้นฐานทางประวัติศาสตร์ของการใช้ Javascript ในการเขียนโปรแกรมเว็บคืออะไร?
ฉันมาจากภูมิหลังทางวิทยาศาสตร์ที่เราใช้ Python บ่อยๆ ตอนนี้ฉันเริ่มที่จะเริ่มต้นด้วยการพัฒนาเว็บฉันพบว่าตัวเองสงสัยอยู่ตลอดเวลาว่าทำไม JavaScript เป็นภาษาฝั่งไคลเอ็นต์หลักบนเว็บ ความเด่นของ JavaScript คืออุบัติเหตุในอดีตหรืออย่างอื่นหรือไม่ นอกจากนี้ฉันอยากรู้อยากเห็นหากมีอุปสรรคใด ๆ ในการรวม Python เข้ากับสคริปต์ฝั่งไคลเอ็นต์

1
หลักฐานปัจจุบันสนับสนุนการยอมรับบริบทผ่านแบบจำลองข้อมูลของแคนนอนหรือไม่
แนวคิด "บัญญัติ" นั้นแพร่หลายในซอฟต์แวร์ รูปแบบเช่นCanonical Model , Canonical Schema , Canonical Data Modelเป็นต้นดูเหมือนจะเกิดขึ้นซ้ำแล้วซ้ำอีกในการพัฒนา เช่นเดียวกับนักพัฒนาหลายคนฉันมักจะติดตามอย่างไม่ถี่ถ้วนภูมิปัญญาดั้งเดิมที่คุณต้องการแบบจำลองที่เป็นที่ยอมรับมิฉะนั้นคุณจะต้องเผชิญกับการระเบิดของนักทำแผนที่และนักแปล หรืออย่างน้อยฉันก็เคยทำเช่นนั้นจนกระทั่งสองสามปีที่ผ่านมาเมื่อฉันอ่านEF Vote of No Confidence เป็นครั้งแรก: สมมติฐานที่ครั้งหนึ่งเคยสนับสนุนการแสวงหารูปแบบข้อมูลที่ยอมรับไม่ได้และไม่สามารถรวมปัจจัยที่จะค้นพบได้เมื่อแนวคิดถูกนำไปใช้จริง เราพบว่าผ่านการลองผิดลองถูกมาหลายปีว่าการใช้แบบจำลองแยกต่างหากสำหรับแต่ละบริบทซึ่งอาจใช้แบบจำลองข้อมูลแคนนอนเป็นวิธีที่ซับซ้อนน้อยที่สุดเป็นวิธีที่มีค่าใช้จ่ายน้อยที่สุดและเป็นวิธีหนึ่งที่นำไปสู่ ของแอพพลิเคชั่นและอุปกรณ์ปลายทางโดยใช้แบบจำลองตามบริบทและเป็นวิธีการที่ไม่สนับสนุนให้เอนโทรปีของซอฟต์แวร์ที่เป็นแบบจำลองมาตรฐานยอมรับ บทความนี้ไม่มีหลักฐานใด ๆ ที่สนับสนุนข้อเรียกร้องของมัน แต่ทำให้ฉันสงสัยว่าวิธีการ CDM นั้นนานพอที่จะลองใช้ทางเลือกอื่นและซอฟต์แวร์ที่ได้นั้นไม่ได้ระเบิดอย่างแท้จริงหรือเป็นรูปเป็นร่าง แต่นั่นไม่ได้แปลว่าโดดเดี่ยวทั้งหมด ฉันเพิ่งจะโชคดี ดังนั้นฉันจึงสงสัยว่ามีการวิจัยอย่างจริงจังในเรื่องของผลกระทบระยะยาวในทางปฏิบัติของการมีแบบจำลองมาตรฐานและแบบจำลองเชิงบริบทในระบบซอฟต์แวร์หรือสถาปัตยกรรมหรือไม่? หรือถ้ามันยังเร็วเกินไปที่จะถามว่ามีนักพัฒนา / สถาปนิกคนใดเขียนเกี่ยวกับประสบการณ์ส่วนตัวที่เปลี่ยนจาก CDM เป็นแบบจำลองตามบริบทอิสระหรือในทางกลับกันและสิ่งที่เกิดขึ้นจริงในเรื่องการผลิตความซับซ้อนหรือความน่าเชื่อถือ แล้วความแตกต่างในระดับต่าง ๆ คือการใช้แบบจำลองเดียวกันในแอพพลิเคชั่นเดียวกับการใช้ข้ามระบบของแอพพลิเคชั่นหรือทั้งองค์กร (โปรดข้อเท็จจริงเท่านั้นยินดีต้อนรับเรื่องราวสงคราม แต่ไม่มีการเก็งกำไร)

8
สิ่งที่ควรพิจารณาสำหรับเว็บไซต์“ ยอดเยี่ยม” และต่อต้าน?
บริษัท ของฉันกำลังพิจารณาที่จะรวมแอพพลิเคชั่นและไซต์เทียร์ 1 (เช่นการผลิตขั้นปลาย) ลงในฐานรหัสที่ครอบคลุมทั้งหมด ทฤษฎีคือการอนุญาตการออกแบบและฟังก์ชั่นโดยรวมของพวกเขาสามารถเป็นเนื้อเดียวกันและการจัดการจากส่วนกลาง ฉันไม่มีข้อกังวลใด ๆ เกี่ยวกับวิธีการนี้เนื่องจากโครงสร้างข้อมูลที่สนับสนุนแต่ละแอปพลิเคชันแตกต่างกันมากกฎเกณฑ์ทางธุรกิจมีความซับซ้อนและเป็นเอกลักษณ์ของแต่ละแอปพลิเคชันและฐานรหัสโดยรวมสำหรับแอปพลิเคชันที่มีอยู่นั้นแตกต่างกันมาก แก้ไข : สภาพแวดล้อมในปัจจุบันประกอบด้วยไซต์ ASP.Net 1.1 สามแห่งที่แทบจะไม่เคยเห็นความรักที่แท้จริงเลยตั้งแต่แรกถูกเขียน (เนื่องจากส่วนใหญ่ไม่มีนักพัฒนาที่มีประสบการณ์ใน บริษัท ) และแอปพลิเคชัน MVC2 หนึ่งที่เคยเป็นไซต์ ASP.Net 1.1 ก่อน อัพเกรดเมื่อปีที่แล้ว เราเขียนเฉพาะใน C # บริษัท มีขนาดค่อนข้างเล็กมีพนักงานประมาณ 50 คน สามคนเป็นนักพัฒนาที่แท้จริง การจัดการ (แม้แต่การจัดการด้านไอที) ไม่มีภูมิหลังด้านไอทีหรือประสบการณ์ใด ๆ นอกเหนือจากการจัดการโครงการของโครงการด้านไอที (และดังนั้นบางคนก็ผ่านความรู้เกี่ยวกับคำศัพท์และผลกระทบทางธุรกิจ) แอปพลิเคชั่นส่วนใหญ่เป็นบริการออนไลน์เพื่อสนับสนุนผลิตภัณฑ์ที่ขายโดย บริษัท บริษัท ไม่ได้จำหน่ายซอฟต์แวร์ใด ๆ โดยตรง ดังนั้นเพื่อวลีสถานการณ์ทั้งหมดนี้ในคำถามที่เฉพาะเจาะจงและมีเหตุผลตอบ: อะไรคือเหตุผลที่น่าสนใจสำหรับและต่อต้านการพยายามดึงระบบทั้งหมดของคุณเข้าด้วยกันเป็นโซลูชัน over-arching เดียวที่กำหนดเงื่อนไขปัจจุบัน (เช่นฐานรหัสเก่าระบบธุรกิจที่ซับซ้อนและกฎ …

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

3
คุณรวม GTD เข้ากับภารกิจการเขียนโปรแกรมรายวันของคุณอย่างไร
วิธีการ "ทำให้ทุกอย่างเสร็จสิ้น" ของ David Allen ดูเหมือนจะเป็นวิธีที่มีประโยชน์มากในการจัดระเบียบงานและทำให้งานเสร็จ มีใครที่นี่ใช้ GTD ในงานเขียนโปรแกรมประจำวันและถ้าเป็นเช่นนั้นวิธีที่ดีที่สุดที่จะไปเกี่ยวกับมันคืออะไร?

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