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

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

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

1
doxygen รองรับเทมเพลตสำหรับเอาต์พุต HTML หรือไม่
ฉันได้บันทึกรหัสไว้doxygenแล้ว แต่ฉันไม่ต้องการ HTML ที่เป็นค่าเริ่มต้น ฉันรู้ว่าฉันสามารถปรับแต่งได้ด้วยการให้ CSS หัวกระดาษท้ายกระดาษ ฯลฯ (เช่น GNOME) และฉันจะเพิ่มรหัส PHP ทั่วไปลงในไฟล์และบอกให้บันทึกได้.phpแต่นั่นไม่ใช่สิ่งที่ฉันต้องการจริงๆ . สิ่งที่ฉันต้องการคือผลลัพธ์เช่น MSDN ฉันไม่สามารถอธิบายได้จริงๆ คำถามของฉันคือมีความเป็นไปได้ในการใช้ doxygen กับบางสิ่งบางอย่างเช่นเทมเพลตหรือฉันต้องแสดงผล XML และแยกมันด้วยโปรแกรมอื่น

4
คำศัพท์: ตั้งค่าสถานะลบจริงๆกับการตั้งค่า IsDeleted (“ soft delete”)
ฉันมีเว็บไซต์ที่ผู้ใช้ทั่วไปสามารถลบบันทึกได้สิ่งที่เกิดขึ้นคือการIsDeletedตั้งค่าสถานะ ในหน้าการดูแลระบบผู้ใช้ที่มีสิทธิพิเศษสามารถลบระเบียนที่ SQL จริงDELETEทิ้งเรคคอร์ดดังกล่าวอย่างถาวร ความแตกต่างมีความสำคัญเนื่องจากเหตุผลที่ชัดเจนและฉันต้องการใช้คำที่สอดคล้องกันเพื่ออ้างถึงการลบรูปแบบหนึ่งกับอีกรูปแบบหนึ่ง ฉันได้รับเล่นกับคำว่าRemove, Delete, DiscardและอาจและRecycleArchive คำถามของฉันคือ: มีคำที่ผู้ใช้หันหน้าไปทางมาตรฐานที่แตกต่างพฤติกรรมทั้งสอง?
10 terminology  data 

4
รูปแบบการออกแบบสำหรับพฤติกรรม polymorphic ในขณะที่อนุญาตให้แยกไลบรารี
สมมติว่าผมมีลำดับชั้นของชั้นเรียน:Item Rectangle, Circle, Triangleฉันต้องการที่จะสามารถวาดพวกเขาดังนั้นความเป็นไปได้ครั้งแรกของฉันคือการเพิ่มDraw()วิธีเสมือนในแต่ละ: class Item { public: virtual ~Item(); virtual void Draw() =0; }; อย่างไรก็ตามฉันต้องการแยกฟังก์ชั่นการวาดภาพเป็นห้องสมุดวาดแยกในขณะที่ห้องสมุด Core มีเพียงการแสดงขั้นพื้นฐาน มีความเป็นไปได้สองอย่างที่ฉันคิดได้: 1 - A DrawManagerที่รับรายการItems และต้องใช้dynamic_cast<>เพื่อระบุสิ่งที่ต้องทำ: class DrawManager { void draw(ItemList& items) { FOREACH(Item* item, items) { if (dynamic_cast<Rectangle*>(item)) { drawRectangle(); } else if (dynamic_cast<Circle*>(item)) { drawCircle(); } .... } } }; …

4
Word สำหรับชุดไฟล์และโฟลเดอร์ [ปิด]
ปิด คำถามนี้เป็นคำถามความคิดเห็นตาม ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้สามารถตอบข้อเท็จจริงและการอ้างอิงได้โดยแก้ไขโพสต์นี้ ปิดให้บริการใน4 ปีที่แล้ว ฉันพยายามหาชื่อคลาสที่สามารถแสดงทั้งไฟล์และโฟลเดอร์ ใครรู้คำนี้?
10 naming 

3
ทำไม java generics ไม่สามารถอยู่ในอาร์เรย์ได้?
ทำไมเมื่อฉันพยายามสร้าง ArrayLists: ArrayList<Integer>[] arr=new ArrayList<Integer>[40];มีข้อผิดพลาดและ java ไม่อนุญาตสิ่งนี้ มีเหตุผลที่เกี่ยวข้องกับการใช้งาน generics ของจาวา, generics ในภาษาใด ๆ หรือบางสิ่งบางอย่างโดยพลการ?

3
ยาสามัญและการลบประเภท
Generics ใน Java ถูกนำไปใช้โดยการลบประเภท JLS บอกว่าแรงบันดาลใจคือความเข้ากันได้ย้อนหลัง ที่ไหนในทางกลับกัน C # generics จะ reifiable ในทางทฤษฎีอะไรคือข้อดีและข้อเสียโดยมี Generics เป็น "ลบ" หรือ "reifiable"? Java หายไปหรือเปล่า

4
นักพัฒนาแอปพลิเคชันมืออาชีพใช้ระบบควบคุมเวอร์ชันเช่น GIT และ Subversion อย่างไร
ฉันเป็นนักพัฒนามือใหม่และฉันสงสัยมาตั้งแต่แรกว่าเครื่องมือใช้งานอย่างมืออาชีพเช่น GIT และ Subversion (ฉันไม่มีความเข้าใจที่ดีเกี่ยวกับเครื่องมือเหล่านี้) เพื่อตอบสนองความต้องการของโครงการ หากพวกเขาใช้มันฉันจะตั้งค่าแบบนั้นได้อย่างไร แอปพลิเคชันของฉันไม่ใหญ่มากและฉันยังไม่ได้ทำงานเป็นทีมพวกเขาจะช่วยฉันได้มากหรือไม่ มีคำถามในเว็บไซต์นี้เกี่ยวกับวิธีการใช้เครื่องมือ แต่ฉันต้องการการสนับสนุนเริ่มต้น

1
Node.js หรือ servlets [ปิด]
ปิด คำถามนี้จะต้องมีมากขึ้นมุ่งเน้น ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้มุ่งเน้นที่ปัญหาเดียวโดยแก้ไขโพสต์นี้ ปิดให้บริการใน4 ปีที่แล้ว ฉันเคยได้ยินมากและอ่านเกี่ยวกับภาษาด้านเซิร์ฟเวอร์ Javascript เช่น Node.js และเห็นการเปรียบเทียบจำนวนมากในความโปรดปรานของโหนด ฉันไม่เข้าใจสิ่งที่ทำให้ดีขึ้นหรือเร็วขึ้นหรือเกี่ยวข้องกับบางสิ่งบางอย่างที่โตเต็มที่เหมือน Java Servlets แต่ Servlets ถูกสร้างขึ้นบนภาษาการเขียนโปรแกรมแบบมัลติเธรดซึ่งตรงข้ามกับ Node.js ถ้าอย่างนั้น node.js จะเร็วขึ้นได้อย่างไร? ถ้าสมมติว่าผู้ใช้ 1000K สอบถามสำหรับบันทึกฐานข้อมูล Node.js ไม่ควรช้ากว่า Servlets ยังไม่ servlets มีความปลอดภัยที่ดีขึ้นเมื่อเทียบกับ Node.js?

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

3
ฉันควร encapsulate การเข้าถึงฐานข้อมูลได้อย่างไร
ตัวอย่างของโครงสร้างชั้นดีที่ใช้ในการจัดการการเข้าถึงฐานข้อมูลคืออะไร ฉันเป็นแฟนตัวยงของคลาสแค็ปซูลและต้องการให้คอนเทนเนอร์ (เช่นรถยนต์) ไม่ทำงานฐานข้อมูล ฉันต้องการความสามารถในการปล่อยสิ่งต่าง ๆ เช่นแคชฐานข้อมูลในอนาคตได้อย่างง่ายดาย ฉันมักจะใช้รูปแบบของคลาสคอนเทนเนอร์พร้อมด้วย getters และ setters สำหรับการตรวจสอบความถูกต้องและการเข้าถึงฐานข้อมูลที่ดำเนินการโดยคลาส singleton เดียว ที่ถูกกล่าวว่านี้มักจะผสมระหว่างคนทั้งสองและกลายเป็นค่อนข้างสับสน ขออภัยถ้าคำถามของฉันยากที่จะเข้าใจ ฉันไม่แน่ใจเกี่ยวกับคำศัพท์เกี่ยวกับฐานข้อมูลอย่างแน่นอน โปรดสอบถามหากจำเป็น
10 c++  database 

2
การออกแบบ Domain Driven ที่เทียบเท่ากับภาษาโปรแกรมที่ใช้งานได้
ฉันชอบความคิดเกี่ยวกับการออกแบบที่ขับเคลื่อนด้วยโดเมน แต่ในขณะที่ฉันกำลังเรียนรู้ Go ฉันสงสัยว่ามี DDD ที่เทียบเท่ากับภาษาที่มีประสิทธิภาพมากกว่าหรือไม่

2
ฉันควรแคชข้อมูลหรือกดฐานข้อมูลหรือไม่
ฉันไม่ได้ทำงานกับกลไกการแคชใด ๆ และสงสัยว่าตัวเลือกของฉันคืออะไรในโลก. net สำหรับสถานการณ์ต่อไปนี้ โดยทั่วไปเรามีบริการ REST ซึ่งผู้ใช้ผ่าน ID ของหมวดหมู่ (think folder) และหมวดหมู่นี้อาจมีหมวดหมู่ย่อยมากมายและแต่ละหมวดย่อยอาจมี 1,000 คอนเทนเนอร์สื่อ (คิดว่าวัตถุอ้างอิงไฟล์) ซึ่งมีข้อมูลเกี่ยวกับ ไฟล์ที่อาจอยู่บนเซิร์ฟเวอร์ NAS หรือ SAN (ไฟล์เป็นวิดีโอในกรณีนี้) ความสัมพันธ์ระหว่างหมวดหมู่เหล่านี้ถูกเก็บไว้ในฐานข้อมูลพร้อมกับกฎการอนุญาตและข้อมูลเมตาเกี่ยวกับหมวดย่อย ดังนั้นจากมุมมอง UI เรามีตัวควบคุมทรีโหลดที่ขี้เกียจซึ่งขับเคลื่อนโดยผู้ใช้โดยคลิกที่โฟลเดอร์ย่อยแต่ละโฟลเดอร์ (คิดว่าเป็น Windows explorer) เมื่อพวกเขามาที่ URL ของไฟล์วิดีโอพวกเขาจะสามารถดูวิดีโอได้ จำนวนผู้ใช้สามารถเติบโตเป็น 1000 และหมวดหมู่ย่อยและวิดีโออาจอยู่ในช่วง 10,000 เมื่อระบบเติบโต คำถามคือเราควรดำเนินการตามที่มันทำงานอยู่ในขณะที่แต่ละคำขอกระทบฐานข้อมูลหรือเราควรคิดถึงการแคชข้อมูลหรือไม่ เรากำลังใช้ IIS 6/7 และ Asp.net

2
อัลกอริทึมสำหรับรายการที่หมดอายุในการจัดเก็บคีย์ - ค่าคืออะไร?
ฉันคิดว่าการจัดเก็บคีย์ - ค่าปัจจุบันใช้ "วันหมดอายุ" สำหรับรายการอย่างไร ขณะนี้ฉันมี 2 ตัวแปรสำหรับสิ่งนั้นในใจ: พวกเขาไม่ได้ทำอะไร (เก็บข้อมูลที่หมดอายุ) และจะตรวจสอบเมื่อคุณทำเช่น GET โดยคีย์บางอย่าง ปัญหาที่นี่คือถ้าคุณถูก จำกัด ในหน่วยความจำรายการที่หมดอายุจะไม่ถูกลบ พวกเขาเก็บโครงสร้างข้อมูลเพิ่มเติมเพื่อให้ได้ "เร็วที่สุดที่จะหมดอายุ" ฉันเห็นมันสามารถทำได้กับบางสิ่งเช่นนี้ storage_data = dict(key -> [value, expire_timestamp]) expire_tree = SomeBinaryLikeTree(expire_timestamp -> [keys])

8
เหตุใดการเสนองานส่วนใหญ่จึงมีไว้สำหรับนักพัฒนา <ภาษาที่นี่> แทนที่จะเป็นผู้พัฒนาโดยทั่วไป [ปิด]
ตามที่เป็นอยู่ในปัจจุบันคำถามนี้ไม่เหมาะสำหรับรูปแบบคำถาม &amp; คำตอบของเรา เราคาดหวังคำตอบที่จะได้รับการสนับสนุนจากข้อเท็จจริงการอ้างอิงหรือความเชี่ยวชาญ แต่คำถามนี้อาจเรียกร้องให้มีการอภิปรายโต้แย้งโต้แย้งหรือการอภิปรายเพิ่มเติม หากคุณรู้สึกว่าคำถามนี้สามารถปรับปรุงและเปิดใหม่ได้โปรดไปที่ศูนย์ช่วยเหลือเพื่อขอคำแนะนำ ปิดให้บริการใน7 ปีที่ผ่านมา ในโลกอุดมคติ: ในบทความที่ยอดเยี่ยมอย่าเรียกตัวเองว่าเป็นโปรแกรมเมอร์และคำแนะนำด้านอาชีพอื่น ๆ Patrick McKenzie อธิบายเหนือสิ่งอื่นใดภาษานั้นไม่สำคัญ: นักพัฒนาคือคนที่แก้ปัญหาโดยทั่วไป นักพัฒนาไม่ใช่คนที่เขียนรหัสในภาษาที่เฉพาะเจาะจง ธุรกิจไม่สนใจภาษาที่คุณรู้จัก หากพวกเขาต้องการจ้างนักพัฒนาสำหรับโครงการที่เขียนในภาษาที่เฉพาะเจาะจงและพวกเขามีผู้สมัครที่มีประสบการณ์สูง แต่ไม่เคยเขียนบรรทัดของรหัสในภาษานี้เขาจะยังคงได้รับการว่าจ้าง จากประสบการณ์ของฉันทั้งในฐานะนักพัฒนาและในฐานะบุคคลที่ต้องจ้างนักพัฒนาอื่น ๆ การสังเกตนั้นคล้ายกันมาก: ประสบการณ์ N ปีใน Java หรือประสบการณ์ N ปีใน C # ไม่สำคัญ สิ่งที่สำคัญคือผู้สมัครรู้วิธีการแก้ปัญหารู้ถึงความแตกต่างระหว่างรหัสสปาเก็ตตี้และโค้ดที่สะอาดด้วยสถาปัตยกรรมที่มีความคิดดีเป็นต้น ฉันไม่สนใจภาษาที่คุณใช้มาก่อน สำหรับโครงการ C # ฉันจะจ้างนักพัฒนามืออาชีพที่ใช้ชีวิตในการเขียนโค้ด Java, Python และ Ruby on Railsมากกว่าผู้เริ่มต้นที่รู้เพียง C # และรู้ว่ามันแย่ ความรู้และประสบการณ์ที่คุณได้รับจากการใช้ภาษาหนึ่งนั้นส่วนใหญ่สามารถใช้ซ้ำได้ในภาษาอื่น ผู้พัฒนาที่มีประสบการณ์ซึ่งใช้ Ruby …

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