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

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

2
เป็นไปได้ไหมที่จะกำหนดโอเปอเรเตอร์ bitwise ทั้งหมดโดยใช้ 'bitwise nand' คล้ายกับวิธีบูลลอจิกทั้งหมดที่สามารถสร้างโดยใช้เพียง 'บูลีน nand'?
Nand เป็นที่รู้จักในฐานะประตูตรรกะสากลเพราะมันช่วยให้คุณกำหนดประตูตรรกะแบบบูลอื่น ๆ ทั้งหมด: not(x) = nand(x,x) and(x, y) = not(nand(x, y)) or(x, y) = nand(not(x), not(y)) nor(x, y) = not(or(x, y)) xor(x, y) = nand(nand(a, nand(a, b)), nand(b, nand(a, b))) สิ่งนี้เรียกว่าnand-logicและมักใช้ในคอมพิวเตอร์สมัยใหม่เพราะทรานซิสเตอร์สามารถทำตัวเหมือน nand-gate ฉันสงสัยว่ามันเป็นไปได้ที่จะทำสิ่งที่คล้ายกับการดำเนินงานระดับบิต Can เช่นบิต NAND (bnand) ถูกนำมาใช้ในการกำหนดbnot, bor, band, bnor, bxor? มีการดำเนินการระดับบิตสากล?

9
วิธีที่ชัดเจนในการข้ามองค์ประกอบแรกในดัชนีที่ใช้สำหรับลูป
ฉันมีการวนรอบที่ฉันต้องข้ามองค์ประกอบแรกในอาร์เรย์ zero-based ข้อใดแสดงถึงความตั้งใจของฉันอย่างชัดเจนมากขึ้น for($i=1 ; $i < count(array) ; $i++){ array[$i]; } หรือ for($i=0+1 ; $i < count(array) ; $i++){ array[$i]; }
9 php  loops 

4
การจัดการการเปลี่ยนแปลงในสถาปัตยกรรม microservice ที่ขับเคลื่อนด้วยเหตุการณ์
ฉันกำลังทำโครงการวิจัยที่ฉันค้นคว้าตัวเลือกเพื่อจัดการการเปลี่ยนแปลงในสถาปัตยกรรมไมโครบริการที่ขับเคลื่อนด้วยเหตุการณ์ สมมุติว่าเรามีแอปพลิเคชั่นที่ให้บริการต่าง ๆ สี่อย่าง แต่ละบริการเหล่านี้มีฐานข้อมูลของตัวเองเพื่อเก็บข้อมูลในเครื่อง ในการตั้งค่านี้บริการสี่รายการสื่อสารกันโดยใช้ Event Bus ดังนั้นเมื่อมีสิ่งใดเกิดขึ้นในบริการมันจะเผยแพร่กิจกรรม บริการอื่น ๆ ทั้งหมดที่มีความสนใจในเหตุการณ์นั้นจะดำเนินการด้วยวิธีของตนเอง ในกรณีนี้บริการต่าง ๆ ในสถาปัตยกรรมจำเป็นต้องมี "สัญญา" เกี่ยวกับเนื้อหาของเหตุการณ์เหล่านี้ (แอตทริบิวต์ ฯลฯ ) ดังนั้นบริการจึงมี "การพึ่งพาคู่กันอย่างหลวม ๆ " ต่อเหตุการณ์เหล่านี้ คำถามของฉันคือ: เราจะจัดการการเปลี่ยนแปลงในเหตุการณ์เหล่านี้ได้อย่างไร ดังนั้นบริการสมมติว่าลงทะเบียนผู้ใช้ใหม่ในแอปพลิเคชัน ดังนั้นจึงส่งกิจกรรม "" UserRegistered "Service B เลือกกิจกรรมนั้นและประมวลผล แต่นักพัฒนาบางคนในทีมบริการ C ตัดสินใจว่าพวกเขาต้องการเพศของผู้ใช้ที่ลงทะเบียนด้วยดังนั้นเหตุการณ์จึงเปลี่ยนไปและแอตทริบิวต์เพศ ถูกเพิ่มไปยังเหตุการณ์ "UserRegistered" เราจะมั่นใจได้อย่างไรว่า Service B ยังสามารถรับเหตุการณ์เดียวกันด้วยคุณสมบัติพิเศษนั้นโดยไม่ต้องปรับใช้ซ้ำ และมีวิธีอื่นในการแก้ไขปัญหานี้แล้วกำหนดเหตุการณ์เหล่านี้หรือไม่

3
เหตุใด Swift initialise subclass จะต้องมีฟิลด์ที่เหมาะสมเป็นอันดับแรก
ในภาษา Swift เพื่อเริ่มต้นอินสแตนซ์หนึ่งต้องกรอกข้อมูลในฟิลด์ทั้งหมดของคลาสนั้นและจากนั้นเรียก superconstructor เท่านั้น: class Base { var name: String init(name: String) { self.name = name } } class Derived: Base { var number: Int init(name: String, number: Int) { // won't compile if interchange lines self.number = number super.init(name) } } สำหรับฉันดูเหมือนว่าย้อนหลังเนื่องจากต้องselfสร้างอินสแตนซ์ก่อนที่จะกำหนดค่าให้กับเขตข้อมูลและรหัสนั้นให้ความประทับใจราวกับว่าการผูกมัดเกิดขึ้นหลังจากการมอบหมายเท่านั้น นอกจากนั้นซูเปอร์คลาสยังไม่มีวิธีทางกฎหมายในการอ่านคุณสมบัติที่แนะนำของคลาสย่อยดังนั้นความปลอดภัยจะไม่นับในกรณีนี้ นอกจากนี้ภาษาอื่น ๆ อีกมากมายเช่น JavaScript และแม้แต่ …

3
โรงงาน DI / IoC คอนเทนเนอร์ vs โรงงาน: ฉันจะกำหนดค่าแอปพลิเคชันของฉันได้ที่ไหนและเพราะเหตุใด
ฉันกำลังพยายามคิดออกว่าจะใช้รีจิสตรี DIC / IoC ในการกำหนดค่าซอฟต์แวร์ของฉันและเมื่อใดที่จะใช้โรงงานพร้อมกับเหตุผลที่อยู่เบื้องหลังทั้งสองวิธี ฉันใช้ StructureMap เป็น DI container ของฉัน (DIC) ซึ่งง่ายต่อการกำหนดค่าโดยใช้การลงทะเบียน ใน DIC จริงวัตถุที่ลงทะเบียนทั้งหมดเป็นแบบคงที่ในความรู้สึกที่ฉันไม่จำเป็นต้องเปลี่ยน / แลกเปลี่ยนการใช้งาน / อินสแตนซ์ที่รันไทม์เมื่อ DIC มีการกำหนดค่าและพวกเขาจะถูกกำหนดค่าใน DIC เป็น singletons อย่างไรก็ตามเนื่องจากซอฟต์แวร์ (SW) ของฉันจะทำงานในอุปกรณ์ต่าง ๆ ฉันจึงต้องเลือกรีจิสตรีเฉพาะอุปกรณ์ขึ้นอยู่กับอุปกรณ์ที่ SW ของฉันทำงานเพื่อกำหนดค่าฮาร์ดแวร์ให้เหมาะสม เนื่องจากการสร้างวัตถุบางอย่างของฉันต้องอ่านในไฟล์กำหนดค่าฉันจึงใช้โรงงานเพื่อส่งคืนอินสแตนซ์เหล่านี้ไปยัง DIC เพื่อแยกการอ่านการกำหนดค่าออกจากการสร้างวัตถุ ฉันลงทะเบียนตัวรับสัญญาณจากโรงงานใน DIC สำหรับประเภทปลั๊กอินที่เกี่ยวข้อง ตอนนี้บอกว่าฉันมีประเภทปลั๊กอินที่IMotorมีรูปแบบที่เป็นรูปธรรมMotor1และMotor2ซึ่งควรได้รับการจัดการโดยโรงงาน ขณะนี้มีสองวิธีที่ฉันสามารถตัดสินใจได้ว่าจะกำหนดค่าอุปกรณ์ของฉันอย่างไร: ฉันผ่านข้อมูลเกี่ยวกับอุปกรณ์ที่ว่า SW กำลังทำงานอยู่บนไปMotorFactoryและจะส่งกลับมอเตอร์ที่ถูกต้องอย่างใดอย่างหนึ่งหรือMotor1 Motor2ในกรณีนี้ตรรกะในการตัดสินใจอยู่ภายในโรงงาน ผมกำหนดค่าไอซีตามไปยังอุปกรณ์ที่ทำงานอยู่ในและสร้างโรงงานที่สองMotor1FactoryและMotor2Factoryที่หนึ่งสร้างและอื่น ๆMotor1 Motor2ในกรณีนี้ผมจะมีที่แตกต่างกันสำหรับรายการรีจิสทรีIMotorในการลงทะเบียนเฉพาะอุปกรณ์ที่ใช้อย่างใดอย่างหนึ่งหรือMotor1FactoryMotor2Factory ตอนนี้คำถามของฉันคือ: หนึ่งในสองวิธีนี้เป็นที่นิยมและทำไม สำหรับฉันดูเหมือนว่ากรณีแรกจะไม่ตรงไปข้างหน้าและซับซ้อนเนื่องจากฉันกระจายตรรกะที่ตัดสินใจประเภทที่จะยกตัวอย่างทั่วรหัสฐาน …

2
Apollo-11: การใช้การรวมแทน linker
เมื่อเร็ว ๆ นี้ในรูปแบบดิจิตอลและกลายเป็นซื้อคืนที่เดิมพอลโล 11 คำแนะนำรหัสที่มาของคอมพิวเตอร์ได้รับการทำใช้ได้สำหรับการดูบน Github ในMAIN.agcผู้เขียน repo แสดงความคิดเห็นว่าพวกเขา แยกซอร์สโค้ดเสาหินขนาดใหญ่ออกเป็นส่วนย่อยที่เล็กกว่าและจัดการได้มากกว่านั่นคือแยกเป็นไฟล์ # # แต่ละไฟล์ อีกไม่นานผู้เขียนกล่าว อาจถูกถามอย่างสมเหตุสมผลว่าเหตุใดจึงมีการรวมแหล่งที่มาหลายหมื่นบรรทัดด้วยการรวมเข้าด้วยกันแทนที่จะรวบรวมไฟล์ต้นฉบับแยกจากกันแล้วเชื่อมโยงเข้ากับรูปแบบปฏิบัติการ คำตอบคือทีมพัฒนาดั้งเดิมไม่มีตัวเชื่อมโยง ฉันรู้ว่าตัวเชื่อมโยงคืออะไรและฉันเข้าใจประเด็นของพวกเขา - แต่ฉันไม่เคยได้ยินวลี (เท่าที่ ASM ดำเนินการ) "เข้าร่วมด้วยวิธีการรวม" สิ่งนี้หมายความว่า? เมื่อพิจารณาว่าตัวเชื่อมโยงเป็นเรื่องใหญ่ในการเขียนโปรแกรมฉันอยากรู้ว่าการทดแทนตัวเชื่อมโยงนี้ด้วย "วิธีการรวม" คืออะไรและมันทำงานอย่างไร

4
ฉันเพิ่มประสิทธิภาพก่อนเวลาอันควรหรือไม่
ขณะนี้ฉันอยู่ในขั้นตอนการออกแบบของสถาปัตยกรรมที่อิงส่วนประกอบใน C ++ การออกแบบปัจจุบันของฉันรวมถึงการใช้งานคุณสมบัติต่างๆเช่น: std::vectors ของstd::shared_ptrs เพื่อเก็บส่วนประกอบ std::dynamic_pointer_cast std::unordered_map<std::string,[yada]> ส่วนประกอบจะแสดงข้อมูลและตรรกะของรายการต่าง ๆ ที่จำเป็นในซอฟต์แวร์เช่นเกมเช่นกราฟิกฟิสิกส์ AI เสียง ฯลฯ ฉันได้อ่านทุกที่ที่แคชคิดถึงนั้นยากต่อการปฏิบัติงานดังนั้นฉันจึงทำการทดสอบบางอย่างซึ่งทำให้ฉันเชื่อว่าจริง ๆ แล้วมันสามารถทำให้แอปพลิเคชันช้าลง ฉันไม่สามารถทดสอบคุณสมบัติภาษาดังกล่าวได้ แต่มีการกล่าวในหลาย ๆ ที่ว่าสิ่งเหล่านี้มักจะมีค่าใช้จ่ายสูงและควรหลีกเลี่ยงหากเป็นไปได้ เนื่องจากฉันอยู่ในขั้นตอนการออกแบบของสถาปัตยกรรมและสิ่งเหล่านี้จะรวมอยู่ในหลักของการออกแบบฉันควรพยายามหาวิธีที่จะหลีกเลี่ยงพวกเขาตอนนี้เนื่องจากมันจะยากมากที่จะเปลี่ยนในภายหลังหากมีประสิทธิภาพ ปัญหา? หรือฉันเพิ่งถูกจับในการเพิ่มประสิทธิภาพก่อนวัยอันควร?

1
มันเหมาะสมไหมที่จะใช้หลักการใน Redux กับภาษา OO?
Redux เป็นโปรแกรมที่ใช้งานได้เป็นหลักและมันสมเหตุสมผลดี เมื่อฉันย้ายกลับไปเป็นภาษา OOP ที่ไม่ใช่ javascript ในโครงการอื่นฉันต้องการใช้หลักการเดียวกันเช่นวัตถุสถานะเดียวตัวลดซึ่งทำหน้าที่ในส่วนของรัฐนั้นชั้นธุรกิจของการกระทำเชิงความหมายเพื่อปรับเปลี่ยนรัฐ โครงการของฉันอยู่ใน C ++ และฉันต้องการทราบว่ามันสมเหตุสมผลหรือไม่ที่จะลองใช้วิธีการที่ใช้งานได้และมีรูปแบบของ redux เพื่อออกแบบแอปพลิเคชัน ประสิทธิภาพไม่ได้สำคัญอย่างยิ่งสำหรับแอพนี้ แต่การบำรุงรักษาก็คือ ฉันต้องเผชิญปัญหาอะไรบ้างในการออกแบบแอพเช่นนี้ ฉันควรเพิ่มว่านี่ไม่ใช่แอป GUI และเมื่อคิดถึงมากกว่านั้น redux อาจลดประโยชน์ในแอปพลิเคชั่นที่ไม่ใช่ GUI เนื่องจากไม่มีเอฟเฟกต์ภาพโดยตรงจากการอัปเดตสถานะแอปพลิเคชัน

2
โครงสร้างข้อมูลสำหรับเกมกระดานสองมิติในภาษาที่ใช้งานได้
ฉันกำลังสร้างการใช้งานMiniMaxอย่างง่ายในภาษาโปรแกรม Elixir เนื่องจากมีเกมความรู้ที่สมบูรณ์แบบมากมาย (tic toe, connect-four, หมากรุก, หมากรุกเป็นต้น) การใช้งานนี้อาจเป็นกรอบในการสร้างเกม AIs สำหรับเกมเหล่านี้ อย่างไรก็ตามปัญหาหนึ่งที่ฉันกำลังเผชิญคือวิธีการจัดเก็บสถานะของเกมอย่างถูกต้องในภาษาที่ใช้งานได้ เกมเหล่านี้ส่วนใหญ่เกี่ยวข้องกับกระดานเกมสองมิติซึ่งการดำเนินการดังต่อไปนี้เป็นประจำ: อ่านเนื้อหาของตำแหน่งบอร์ดเฉพาะ อัปเดตเนื้อหาของตำแหน่งกระดานเฉพาะ (เมื่อส่งคืนความเป็นไปได้ในการย้ายครั้งใหม่) พิจารณาเนื้อหาของสถานที่หนึ่งแห่งขึ้นไปที่เชื่อมต่อกับตำแหน่งปัจจุบัน (เช่นตำแหน่งแนวนอนแนวตั้งหรือแนวทแยงถัดไปหรือก่อนหน้า) พิจารณาเนื้อหาของสถานที่เชื่อมต่อหลายแห่งในทิศทางใด พิจารณาเนื้อหาของไฟล์ทั้งหมดจัดอันดับและเส้นทแยงมุม การหมุนหรือการมิเรอร์บอร์ด (เพื่อตรวจสอบความสมมาตรที่ให้ผลลัพธ์แบบเดียวกับที่คำนวณแล้ว) ภาษาที่ใช้งานได้ส่วนใหญ่ใช้รายการที่เชื่อมโยงและ Tuples เป็นแบบเอกสารสำเร็จรูปพื้นฐานของโครงสร้างข้อมูลหลายองค์ประกอบ อย่างไรก็ตามสิ่งเหล่านี้ดูเหมือนจะทำให้งานแย่มาก: รายการที่เชื่อมโยงมีเวลาค้นหา O (n) (เชิงเส้น) นอกจากนี้เนื่องจากเราไม่สามารถ 'สแกนและอัปเดตบอร์ด' ในการกวาดบนกระดานเพียงครั้งเดียวการใช้รายการดูเหมือนจะไม่สามารถทำได้ Tuplesมีเวลาค้นหา O (1) (คงที่) อย่างไรก็ตามการแสดงบอร์ดเป็น tuple ที่มีขนาดคงที่ทำให้ยากในการย้ำผ่านอันดับไฟล์ไฟล์ diagonals หรือสี่เหลี่ยมต่อเนื่องชนิดอื่น ๆ นอกจากนี้ทั้ง Elixir และ Haskell (ซึ่งเป็นภาษาที่ใช้งานได้สองภาษาที่ฉันรู้จัก) ไม่มีไวยากรณ์ในการอ่านองค์ประกอบที่nของ tuple …

6
การพิมพ์สแตติกมีประโยชน์จริง ๆ ในโครงการขนาดใหญ่อย่างไร
ในขณะที่อยากรู้อยากเห็นในหน้าหลักของเว็บไซต์ภาษาการเขียนโปรแกรมสคริปต์ฉันพบข้อความนี้: เมื่อระบบมีขนาดใหญ่เกินไปที่จะเก็บไว้ในหัวของคุณคุณสามารถเพิ่มประเภทคงที่ สิ่งนี้ทำให้ฉันจำได้ว่าในสงครามศาสนาจำนวนมากระหว่างภาษาแบบคงที่ภาษาที่รวบรวม (เช่น Java) และภาษาแบบไดนามิกที่ถูกตีความ (ส่วนใหญ่เป็นภาษาไพ ธ อนเนื่องจากมีการใช้มากกว่า แต่เป็น "ปัญหา" ที่ใช้ร่วมกันระหว่างภาษาสคริปต์ส่วนใหญ่) แฟน ๆ ที่พิมพ์ภาษามากกว่าภาษาที่พิมพ์แบบไดนามิกคือพวกเขาไม่ได้ปรับขนาดให้ดีขึ้นสำหรับโครงการขนาดใหญ่เพราะ "วันหนึ่งคุณจะลืมฟังก์ชั่นกลับมาและคุณจะต้องค้นหามันในขณะที่พิมพ์ภาษาแบบคงที่ทุกอย่าง มีการประกาศอย่างชัดเจน " ฉันไม่เคยเข้าใจข้อความเช่นนี้ ความซื่อสัตย์แม้ว่าคุณจะประกาศฟังก์ชั่นการส่งคืนคุณสามารถและจะลืมมันหลังจากที่คุณเขียนโค้ดหลายบรรทัดและคุณจะต้องกลับไปที่บรรทัดที่ประกาศไว้โดยใช้ฟังก์ชันการค้นหาของ แก้ไขข้อความของคุณเพื่อตรวจสอบ นอกจากนี้เมื่อฟังก์ชั่นถูกประกาศด้วยการtype funcname()...รู้ทันtypeคุณจะต้องค้นหาแต่ละบรรทัดที่เรียกใช้ฟังก์ชั่นเพราะคุณรู้เพียงว่าfuncnameในขณะที่ในไพ ธ อนและสิ่งที่คุณชอบเพียงแค่ค้นหาdef funcnameหรือfunction funcnameเกิดขึ้นเพียงครั้งเดียวที่ การประกาศ ยิ่งกว่านั้นด้วย REPLs การทดสอบฟังก์ชั่นการกลับมาของอินพุตที่แตกต่างกันเล็กน้อยในขณะที่ภาษาที่พิมพ์แบบคงที่คุณจะต้องเพิ่มโค้ดบางบรรทัด ดังนั้นนอกเหนือจากการทราบประเภทการส่งคืนของฟังก์ชันที่เห็นได้ชัดว่าไม่ใช่จุดแข็งของภาษาที่พิมพ์แบบคงที่การพิมพ์แบบคงที่มีประโยชน์มากในโครงการขนาดใหญ่อย่างไร

3
ฉันควรทำตามระเบียบวิธีซอฟแวร์ใดเมื่อฉันทำการวิจัย?
ฉันมักจะวิเคราะห์ข้อมูลการทดลองและแม้ว่าฉันจะมีสคีมาโดยทั่วไปของขั้นตอนที่ฉันต้องทำฉันอาจต้องปรับแต่งมันกับข้อมูลเฉพาะของการทดลองหรือคำถามที่อยู่เบื้องหลัง ฉันมักจะเป็นรหัสเดียวเท่านั้น ฉันดูวิกิพีเดียแต่ฉันไม่แน่ใจว่าวิธีการใดที่ฉันสามารถใช้ได้บางส่วนเพราะฉันไม่เคยปฏิบัติตามใด ๆ และบางส่วนเพราะบางครั้งฉันเพียงแค่สำรวจข้อมูลเพื่อดูว่ามันดูเหมือนอะไรและบางครั้งฉันต้องการคำตอบ (และเพราะฉันไม่ได้คาดหวังมากที่จะทดสอบหรือมีคุณภาพที่แน่นอนในรหัสของฉัน) ฉันได้รับแจ้งให้ถามคำถามนี้หลังจากหนึ่งหรือสองชั่วโมงค้นพบว่าฟังก์ชัน r tableอาศัยตามลำดับของเวกเตอร์ไม่ใช่ชื่อขององค์ประกอบเพื่อเปรียบเทียบพวกมัน จากนั้นฉันก็ควรทดสอบพฤติกรรมและฟังก์ชั่นที่ฉันใช้กับข้อมูลจำลอง แต่ฉันใช้ตารางหลังจากการวิเคราะห์อื่น ๆ ทำให้ขาดข้อมูลดังนั้นฉันจึงไม่สามารถทำตามวิธีการพัฒนาแบบทดสอบได้ (ถ้าฉันเข้าใจถูกต้อง) อย่างไรก็ตามฉันรู้สึกว่ามีการปรับปรุงบางอย่างในวิธีที่ฉันเผชิญกับโครงการฉันอาจมีประสิทธิภาพมากขึ้นนอกเหนือจากการตรวจสอบข้อผิดพลาดได้เร็วขึ้น แต่ยังรวมถึงวิธีการและสิ่งที่จะมองหาในกรณีที่ฉันสงสัยผลลัพธ์ ความผิดพลาดตัวอย่างนี้ วิธีการซอฟต์แวร์ใดที่เหมาะที่สุดในการวิจัย โดยทั่วไปฉันถามว่าจะรับประกันคุณภาพและความคืบหน้าของเวลาได้อย่างไรรวมถึงรักษาความจำเพาะของการวิจัย ตัวอย่างการทำงานของฉัน: นักชีววิทยาทราบคำถามและรู้ว่าการทดลองจะนำไปสู่การมีข้อมูลที่น่าสนใจ (เช่นระดับการแสดงออกของยีนในสองเงื่อนไข) จากนั้นเขา / เธอจะทำการทดลองและจำตัวอย่างจาก 10 คน / หนู / หนู ตอนนี้ฉันต้องวิเคราะห์ข้อมูลสำหรับ 10 ตัวอย่างเหล่านั้นโดยใช้ห้องสมุดและการทดสอบที่มีอยู่ (หรือใช้การทดสอบใหม่) แต่คำนึงถึงคำถามที่นักชีววิทยามีอยู่ในใจ โครงสร้างนั้นเหมือนกับในการทดลองก่อนหน้า (ซึ่งเกี่ยวข้องกับ 6 เงื่อนไขและสัตว์อื่น) แต่การทดสอบทางสถิติการทำให้เป็นมาตรฐานโครงสร้างข้อมูลอาจเปลี่ยนแปลงได้ ดังนั้นฉันมักจะคัดลอกเวอร์ชันก่อนหน้าและปรับให้เข้ากับความต้องการในปัจจุบัน

6
เกณฑ์การยอมรับสำหรับคดีขอบ
ฉันเป็นเจ้าของผลิตภัณฑ์ในทีมเปรียว ฉันเมื่อทำการทดสอบการยอมรับ PO ฉันมักจะจดบันทึกเพื่อลองกรณีขอบบางอย่าง ไม่ใช่เรื่องแปลกสำหรับฉันที่จะค้นพบบางสิ่งและจากนั้นฉันก็ส่งมันกลับไปที่ผู้พัฒนา ฉันได้รับการผลักดันกลับจากหนึ่งในนักพัฒนาซอฟต์แวร์เมื่อฉันปฏิเสธเรื่องราวของเขา เขาบอกว่ามันไม่ยุติธรรมเพราะฉันไม่ได้ระบุกรณีขอบและวิธีการที่โปรแกรมควรตอบสนองในเกณฑ์การยอมรับในขณะที่เขามักจะเขียนโค้ดเฉพาะสิ่งที่ฉันอธิบายในเรื่อง ฉันสนับสนุนให้เขาถามฉันในขณะที่เขากระแทกเข้ากับเคสที่มีขอบขณะเขียนโค้ด แต่เขาคิดว่าไม่ใช่หน้าที่ของเขาที่จะคิดผ่านเคสที่เป็นขอบฉันและฉันควรทำเรื่องใหม่สำหรับการวิ่งครั้งต่อไป ในการป้องกันของฉันฉันไม่ทราบว่าการออกแบบของเขาสำหรับเรื่องราวจนกระทั่งหลังจากที่เขาใช้มันดังนั้นมันยากที่จะย้ำผ่านความเป็นไปได้ทั้งหมด (การกำหนดค่าจะอยู่ใน DB หรือไฟล์คุณสมบัติ?) เพื่อความเรียบง่ายสมมติว่าเรามีเรื่องราวที่จะเพิ่มการหารลงในแอพเครื่องคิดเลข ในโลก SCRUM ในอุดมคติมันจะเป็นหน้าที่ของฉันที่จะเพิ่ม "จัดการหารด้วยศูนย์สถานการณ์" เพื่อเกณฑ์การยอมรับหรือเขาควรจะทำงานผ่านกรณีเหล่านั้นในขณะที่เขาพัฒนาเพื่อให้แอปไม่ได้แปลในวันที่ 5/0? เพื่อความชัดเจนในกรณีนี้ฉันจะไม่ยอมรับหากแอปขัดข้องอย่างหนักในวันที่ 5/01 แต่ฉันจะผ่านถ้ามันบันทึกพิมพ์ DIV0 หรือวิธีอื่นใดเพื่อจัดการข้อผิดพลาด ... ตราบใดที่มันไม่ทำงาน ไม่ผิดพลาด

1
การห่อตามปกติของ C ++ เทมเพลตประเภท API ใน C
ฉันกำลังทำงานกับการห่อ C ++ API ซึ่งให้การเข้าถึงแหล่งข้อมูล (Hazelcast) ในฟังก์ชัน C เพื่อให้ที่เก็บข้อมูลสามารถเข้าถึงได้จากรหัส C เท่านั้น Hazelcast C ++ API สำหรับโครงสร้างข้อมูลแผนที่มีลักษณะดังนี้: auto map = hazelcastClient->client->getMap<int, string>(mapName); map.put(key, value); มันใช้ประโยชน์จากประเภทแม่แบบkeyและvalueพารามิเตอร์ เนื่องจากไม่มีเทมเพลตใน C ฉันจึงคิดเกี่ยวกับการสร้างฟังก์ชั่น wrapper สำหรับแต่ละความเชี่ยวชาญของgetMap<T, U>วิธี นั่นคือสำหรับแต่ละประเภท C แม้ว่าฉันรู้ว่ามีsignedและunsignedรุ่นของประเภท C, ฉันดีกับการ จำกัด API เพื่อสนับสนุนเฉพาะint, double, float, char *สำหรับและkeyvalue ดังนั้นฉันจึงเขียนสคริปต์ขนาดเล็กที่สร้างชุดค่าผสมทั้งหมดโดยอัตโนมัติ ฟังก์ชั่นที่ส่งออกมีลักษณะเช่นนี้: int Hazelcast_Map_put_int_string( Hazelcast_Client_t *hazelcastClient, const char …
9 c++  c  api-design 

3
ในการพูดจา REST ความแตกต่างระหว่างทรัพยากรและการเป็นตัวแทนคืออะไร?
ความเข้าใจของฉันเกี่ยวกับ REST ที่เปิดใช้งานการสร้างแบบจำลองการบริการเป็นการแสดงสถานะและการเปลี่ยนจากสถานะหนึ่งไปสู่อีกสถานะหนึ่งทำให้ใช้ HTTP ฉันมักจะเข้าใจแหล่งข้อมูลว่าเป็นตัวแทนของสถานะด้านบริการจนกระทั่งเมื่อไม่นานมานี้เมื่อฉันอ่านบทความนี้โดย Jimmy Bogard ซึ่งฉันรู้ว่าเป็นนักพัฒนา / สถาปนิกที่ชาญฉลาดซึ่งเป็นที่เคารพของชุมชน เพื่ออ้างอิงข้อความเฉพาะจากโพสต์นั้น การเป็นตัวแทนแตกต่างกันเล็กน้อย - มันอธิบายถึง สถานะปัจจุบันของทรัพยากร (เมื่อมีการร้องขอ) นี่ทำให้ฉันสับสน ความคิดเห็นที่ยอมรับโดยทั่วไปในหัวข้อคืออะไร?
9 rest  api  api-design 

1
จะทำอย่างไรเมื่อใช้รหัสลิขสิทธิ์ MIT ในโครงการลิขสิทธิ์ GPL
ผมทำงานในโครงการส่วนบุคคลที่ฉันวางแผนในการออกใบอนุญาตภายใต้GNU Affero GPL อย่างไรก็ตามฉันพบรหัสบางอย่างที่ได้รับอนุญาตภายใต้ MIT ที่ต้องการใช้จริง ๆ แต่ฉันไม่แน่ใจว่าฉันควรทำอย่างไรเกี่ยวกับสิทธิ์ใช้งาน ส่วนที่เหลือของรหัสจะเป็นของฉันภายใต้ GNU Affero เป็นเพียงไฟล์ต้นฉบับและไฟล์ส่วนหัวที่ฉันใช้ซึ่งได้รับอนุญาตภายใต้ MIT ฉันได้อ่านคำถามนี้ที่นี่เกี่ยวกับโปรแกรมเมอร์เกี่ยวกับรหัส MIT / GPL ที่ทำงานร่วมกันและอันนี้เกี่ยวกับซอฟต์แวร์ภายใต้ MIT ที่ใช้ไลบรารี GPL รวมถึงอื่น ๆ อีกมากมาย แต่ฉันก็ยังไม่ชัดเจนในสิ่งที่ฉันควรทำ ใบอนุญาต เท่าที่ฉันจะบอกได้สิ่งที่ฉันต้องทำก็คือปล่อยใบอนุญาต MIT ไว้ในห้องสมุดและใส่หมายเหตุในไฟล์ลิขสิทธิ์เกี่ยวกับใบอนุญาตสองใบที่ต่างกันและรหัสที่พวกเขานำไปใช้นั้นถูกต้องหรือไม่

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