คำถามติดแท็ก release

23
วิธีการขอโทษเมื่อคุณทำลายสิ่งก่อสร้างตอนกลางคืน [ปิด]
ความมุ่งมั่นครั้งแรกของฉันในโครงการของฉันส่งผลให้งานสร้างในยามค่ำคืนถูกทำลายและผู้คนต่างอยู่เหนือฉันขณะที่เราใกล้จะวางจำหน่าย ฉันต้องการส่งอีเมลขอโทษที่ควรฟังด้วยความจริงใจและในขณะเดียวกันก็บอกว่านี่เป็นความมุ่งมั่นครั้งแรกของฉันและนี่จะไม่ถูกทำซ้ำอีกต่อไป การเป็นผู้พูดภาษาอังกฤษที่ไม่ใช่เจ้าของภาษาฉันมีปัญหาในการหาคำที่ถูกต้อง มีคนช่วยได้ไหม

11
มีเหตุผลใดที่จะไม่ยอมรับซอฟต์แวร์ที่ส่งมอบเป็นเครื่องเสมือนจริงหรือไม่?
นี่เป็นคำถามเกี่ยวกับโลจิสติกส์ไม่ใช่คำถามทางเทคนิค บริษัท ของฉันจ้างงานซอฟต์แวร์ฝังตัวบางงาน โดยเฉพาะเราได้จ่ายผู้รับเหมาเพื่อพัฒนาระบบฝังตัวสำหรับเราเนื่องจากเราไม่มีความรู้ภายในเพียงพอที่จะทำเอง (เรามีนักพัฒนาแอปพลิเคชันบนเดสก์ท็อปเท่านั้น) ดังนั้นผู้รับเหมาได้เสร็จสิ้นซอฟต์แวร์และพวกเขาได้ถามว่าพวกเขาอาจส่งมอบมันให้กับเราในเครื่องเสมือนจริงหรือไม่ VM เป็นเครื่อง Windows 8 ที่ประกอบด้วย CodeWarrior IDE ที่กำหนดค่าไว้ล่วงหน้าพร้อมด้วยซอร์สโค้ดเป็นโครงการ CodeWarrior แนวคิดคือสิ่งนี้จะช่วยให้เราสามารถทำการเปลี่ยนแปลงรหัสภายใน VM ที่กำหนดค่าไว้แล้วเพื่อการพัฒนาโครงการนี้ต่อไป มีข้อเสียใด ๆ ในการทำเช่นนี้แทนที่จะให้พวกเขาแนะนำเราเกี่ยวกับวิธีการกำหนดค่าเครื่องพัฒนาของเราเองเพื่อทำการเปลี่ยนแปลงรหัสในโครงการหรือไม่? ปัญหาเดียวที่ฉันสามารถคาดการณ์ได้คือ VM ทำงานช้าและใช้เวลานานในการสร้างโครงการใหม่เมื่อเราทำการเปลี่ยนแปลงรหัส แต่ในทางกลับกันฉันชอบความคิดที่จะได้รับสภาพแวดล้อมการพัฒนาระบบฝังตัวที่กำหนดค่าไว้ล่วงหน้าดังนั้นฉันจึงไม่จำเป็นต้องเพิ่ม IDE อีกตัวในเดสก์ท็อปแอปพลิเคชันเดสก์ท็อปของฉัน ฉันไม่สามารถนึกถึงเหตุผลที่ดีว่าทำไมไม่ยอมรับ VM ที่ส่งมอบได้ แต่ฉันแค่ต้องการเรียกใช้โดยชุมชนนี้ในกรณีที่มีบางสิ่งที่ฉันขาดหายไป

8
ควรมีการยืนยันในการสร้างงาน
พฤติกรรมเริ่มต้นของassertใน C ++ คือการไม่ทำอะไรเลยใน build build ฉันเข้าใจว่ามันทำด้วยเหตุผลด้านประสิทธิภาพและอาจป้องกันไม่ให้ผู้ใช้เห็นข้อความแสดงข้อผิดพลาดที่น่ารังเกียจ อย่างไรก็ตามฉันขอยืนยันว่าสถานการณ์เหล่านั้นที่assertมีผู้ถูกไล่ออก แต่ถูกปิดการใช้งานมีปัญหามากขึ้นเพราะแอปพลิเคชันอาจจะล้มเหลวในทางที่แย่ลงกว่าเดิมเพราะค่าคงที่บางส่วนถูกทำลาย นอกจากนี้อาร์กิวเมนต์ประสิทธิภาพสำหรับฉันนับเฉพาะเมื่อมันเป็นปัญหาที่วัดได้ ส่วนใหญ่assertในรหัสของฉันไม่ซับซ้อนกว่า assert(ptr != nullptr); ซึ่งจะมีผลกระทบเล็กน้อยกับรหัสส่วนใหญ่ สิ่งนี้นำไปสู่คำถาม: ควรยืนยัน (หมายถึงแนวคิดไม่ใช่การนำไปปฏิบัติเฉพาะ) ควรมีการใช้งานใน build build หรือไม่? ทำไมจะไม่ล่ะ)? โปรดทราบว่าคำถามนี้ไม่ได้เกี่ยวกับวิธีเปิดใช้งาน asserts ใน build builds (เช่น#undef _NDEBUGหรือใช้การยืนยัน assert แบบกำหนดเอง) นอกจากนี้มันไม่เกี่ยวกับการเปิดใช้งาน asserts ในรหัสห้องสมุดของบุคคลที่สาม / มาตรฐาน แต่ในรหัสที่ควบคุมโดยฉัน

7
บริษัท ขนาดใหญ่ของนักพัฒนาซอฟต์แวร์ตรวจสอบข้อบกพร่องในโปรแกรมของพวกเขาอย่างไร
ฉันสงสัยว่า บริษัท ผู้พัฒนาซอฟต์แวร์รายใหญ่ตรวจสอบข้อบกพร่องในโปรแกรมของพวกเขาอย่างไร พวกเขาแค่ทดสอบในคอมพิวเตอร์หลายเครื่องหรือไม่

2
วิธีการโอเพนซอร์สโครงการที่มีที่เก็บ git มีสื่อที่มีลิขสิทธิ์ในประวัติศาสตร์?
ฉันต้องการเผยแพร่โครงการซอฟต์แวร์บันทึกข้อมูลเสียงด้วยลายนิ้วมือภายใต้ลิขสิทธิ์ฟรี แต่พื้นที่เก็บข้อมูลมีไฟล์เสียงที่มีลิขสิทธิ์ กรณีทดสอบยังใช้ไฟล์เหล่านี้ในปัจจุบัน ฉันจะปล่อยรหัสต่อสาธารณะด้วยประวัติเวอร์ชันสูงสุด แต่ไม่ละเมิดลิขสิทธิ์ได้อย่างไร รายละเอียด: รหัสเป็นรุ่นภายใต้คอมไพล์ เราจะยุบมันทั้งหมดกลับเป็นสาขาเดียวก่อนที่จะปล่อย มีข้อมูลเสียง 400 MB ไฟล์บางไฟล์เป็นเพลงที่ได้รับอนุญาตฟรีจาก Jamendo ส่วนไฟล์อื่น ๆ เป็น MP3 จากคอลเล็กชันส่วนตัวของเรา ไม่ว่าเราจะใช้วิธีใดเราจะเก็บสำเนา repo ดั้งเดิมที่ไม่เปลี่ยนรูปเสมอเพื่อไม่ให้ทำลายประวัติโครงการ คำถามหลัก: วิธีจัดการกับการเปิดตัวสาธารณะ? ลบล้างประวัติทั้งหมดของไฟล์ที่เป็นปัญหาจากที่เก็บ git และปล่อย repo ที่แก้ไข (v64 ชี้วิธีการทำเช่นนี้) อีกทางเลือกหนึ่งให้จับภาพสถานะปัจจุบันของรหัสและไม่ต้องกังวลว่าจะมีประวัติสาธารณะของรหัสเผยแพร่ล่วงหน้า คำถามด้าน: เราจะหลีกเลี่ยงภาวะที่กลืนไม่เข้าคายไม่ออกนี้ได้อย่างไรในตอนแรกเนื่องจากบางครั้งจำเป็นต้องใช้รหัสหรือสื่อส่วนตัวสำหรับช่วงแรก ๆ ของโครงการ

4
ปล่อยบิลด์ vs บิลด์บิลด์ต่อคืน
วิธีแก้ปัญหาทั่วไปคือการสร้าง CI (การรวมอย่างต่อเนื่อง) ที่ทำงานบนบิลด์เซิร์ฟเวอร์: มันจะวิเคราะห์ซอร์สโค้ด, สร้างบิลด์ (ในการดีบัก) และรันการทดสอบ, ครอบคลุมการทดสอบวัด ฯลฯ ตอนนี้ชนิดบิลด์อื่นที่มักรู้จักกันคือ "บิลลี่ยามค่ำคืน": ทำสิ่งที่ช้าเช่นสร้างเอกสารรหัสสร้างแพ็คเกจการติดตั้งปรับใช้กับสภาพแวดล้อมการทดสอบและทำการทดสอบอัตโนมัติ (ควันหรือยอมรับ) กับสภาพแวดล้อมการทดสอบเป็นต้น ตอนนี้คำถาม: จะดีกว่าไหมถ้ามี "build build" แยกกันเป็นสามเป็น build build? หรือ "Nightly build" ในโหมด release และใช้เป็นรีลีส? คุณใช้อะไรใน บริษัท ของคุณ (บิลด์รีลีสควรเพิ่มแท็กบางชนิดให้กับแหล่งควบคุมของเวอร์ชันผลิตภัณฑ์ที่มีศักยภาพ)

2
แนวปฏิบัติที่ดีในการเขียนบันทึกประจำรุ่น
ในการส่งมอบซอฟต์แวร์ทุกรุ่นเราต้องเขียนบันทึกย่อประจำรุ่น ตัวอย่างเช่นต่อไปนี้เป็นคำศัพท์ที่ฉันเพิ่มเมื่อฉันเขียนบันทึกย่อประจำรุ่น: วันวางจำหน่าย แก้ไขข้อผิดพลาด เพียงพอหรือมีอะไรอีกหรือไม่
12 release 

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

5
คุณควรจะปล่อยบางสิ่งที่คุณสามารถแฮ็คได้หรือไม่
ในฐานะผู้สร้างโปรแกรมคุณอาจอยู่ในตำแหน่งที่ดีกว่าใครก็ตามที่ต้องระวังช่องโหว่ด้านความปลอดภัยและแฮ็คที่อาจเกิดขึ้น หากคุณรู้ว่ามีช่องโหว่ในระบบที่คุณเขียนนั่นคือสัญญาณที่เพิ่มความปลอดภัยต้องเพิ่มก่อนเผยแพร่หรือควรประเมินเป็นกรณี ๆ ไปเพื่อพิจารณาความรุนแรงของช่องว่างความปลอดภัยหรือไม่
12 security  release 

6
กลยุทธ์การแบ่งสาขาและการกำหนดเวอร์ชันสำหรับไลบรารีที่แบ่งใช้
ข้อความเหล่านี้ดูเหมือนว่าเกี่ยวข้อง แต่สมองของฉันเริ่มละลายพยายามคิดผ่าน: P นายจ้างของฉันเพิ่งเริ่มใช้การควบคุมแหล่งที่มาส่วนใหญ่เป็นเพราะก่อนที่พวกเขาจะจ้างนักพัฒนามากขึ้น "ที่เก็บ" คือฮาร์ดไดรฟ์ของ dev ที่โดดเดี่ยวซึ่งทำงานจากที่บ้านเป็นหลัก ทั้งหมดของรหัส .NET เขาต้องการเขียนได้รับการตรวจสอบในว่อนและมีเป็นจำนวนมากของการทำซ้ำ (อ่าน: คัดลอกวาง) ฟังก์ชั่น ตอนนี้ระบบ SCM ของเราได้รับการเชิดชูข้อมูลสำรอง ฉันต้องการดึงรหัสที่ซ้ำกันบางส่วนลงในห้องสมุดสาธารณะ ฉันปล่อยให้ repo ดั้งเดิมอยู่คนเดียวเพื่อที่เราจะได้ไม่ทำลายสิ่งใด - เราสามารถย้ายและ / หรือปรับโครงสร้างโค้ดที่มีอยู่เดิมและเมื่อจำเป็น ดังนั้นฉันจึงตั้งค่า repo สำหรับรหัสใหม่รวมถึงไลบรารี ปัญหาของฉันเกี่ยวกับการกำหนดเวอร์ชันไลบรารี่โดยไม่ทำให้เรายุ่งเหยิงในกระบวนการที่มากเกินไป: โดยยอมรับว่าเราต้องการแนวทางที่สอดคล้องกันมากขึ้นด้วย devs ทั้งหมดที่เขียนโค้ดที่คล้ายกันมากการจัดการและ devs อื่น ๆ เปิดเพื่อจัดระเบียบใหม่ ลงไปได้ด้วยดีถ้าการแก้ปัญหาเริ่มส่งผลกระทบต่อผลผลิต ทางออกที่ดีที่สุดในใจของฉันคือการสร้างห้องสมุดแยกจากกันโดยแต่ละโครงการขึ้นอยู่กับรุ่นที่เลือกและเข้ากันได้โดยเจตนา ด้วยวิธีนี้เรารู้ว่าลูกค้ารายใดมีไลบรารีรุ่นใดที่สามารถทำซ้ำข้อบกพร่องได้อย่างน่าเชื่อถือรักษาสาขาการปล่อยอิสระสำหรับผลิตภัณฑ์และไลบรารีและไม่ทำลายโครงการของกันและกันเมื่อเปลี่ยนรหัสที่ใช้ร่วมกัน สิ่งนี้ทำให้การอัปเดตห้องสมุดยุ่งยากโดยเฉพาะอย่างยิ่งสำหรับผู้ที่ทำงานจากที่บ้าน ฉันคาดว่าห้องสมุดจะเปลี่ยนแปลงอย่างรวดเร็วอย่างน้อยในขั้นต้นเมื่อเรา (ในที่สุด) ดึงบิตทั่วไปเข้าด้วยกัน มีความเป็นไปได้ค่อนข้างมากที่ฉันคิดอย่างถี่ถ้วนและเราก็สามารถสร้างทุกอย่างให้สอดคล้องกับความมุ่งมั่นล่าสุดของห้องสมุดได้ แต่อย่างน้อยฉันก็ควรเตรียมตัวให้พร้อมสำหรับวันที่เราตัดสินใจว่าส่วนประกอบบางอย่างต้องเป็นรุ่นที่เป็นอิสระและ กระจาย ความจริงที่ว่าบางไลบรารีจะต้องติดตั้งใน GAC ทำให้การกำหนดเวอร์ชันมีความสำคัญเป็นพิเศษ ดังนั้นคำถามของฉันคืออะไรฉันหายไปไหน …

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

1
Jenkins Paramerized Trigger + Copy Artifact
ฉันกำลังทำงานเพื่อจัดตั้งเจนกินส์เพื่อจัดการงานสร้างของเรา บิลด์ประกอบประกอบด้วยตัวติดตั้ง Windows ที่มีไบนารีบางตัวที่ต้องสร้างบน Linux นี่คือสิ่งที่ฉันมี: ส่วน Windows และ Linux ถูกตั้งค่าเป็นโครงการแยกเจนกินส์ โครงการ Windows ได้รับการกำหนดพารามิเตอร์โดยใช้แท็ก Subversion เพื่อสร้างและปล่อย ในฐานะส่วนหนึ่งของการสร้างโครงการ Windows จะเรียกใช้บิลด์ของ Subversion แท็กเดียวกันสำหรับโครงการ Linux (โดยใช้ปลั๊กอินParameterized Trigger ) จากนั้นคัดลอกส่วนจากโครงการ Linux (ใช้ปลั๊กอินCopy Artifact ) ไปยังพื้นที่ทำงานของโครงการ Windows เพื่อให้ สามารถรวมไว้ในตัวติดตั้ง Windows ได้ จุดที่ฉันติดอยู่: ตอนนี้ Copy Artifact ได้รับการตั้งค่าเพื่อคัดลอกงานสร้างที่สำเร็จครั้งล่าสุด ดูเหมือนว่าจะมีประสิทธิภาพมากกว่าในการกำหนดค่า Copy Artifact เพื่อคัดลอกจากบิลด์ที่แน่นอนที่ทริกเกอร์ Parameterized ทริกเกอร์ แต่ฉันมีปัญหาในการหาวิธีการทำงาน มีตัวเลือกสำหรับพารามิเตอร์ "build …

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