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

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

6
การอัพเดตการแฮชรหัสผ่านโดยไม่บังคับให้ใช้รหัสผ่านใหม่สำหรับผู้ใช้ที่มีอยู่
คุณรักษาแอปพลิเคชันที่มีอยู่ด้วยฐานผู้ใช้ที่สร้างไว้แล้ว เมื่อเวลาผ่านไปมีการตัดสินใจว่าเทคนิคการแฮ็กรหัสผ่านปัจจุบันล้าสมัยและจำเป็นต้องอัพเกรด นอกจากนี้สำหรับเหตุผล UX คุณไม่ต้องการให้ผู้ใช้ปัจจุบันถูกบังคับให้อัปเดตรหัสผ่านของพวกเขา การอัพเดตการแฮชรหัสผ่านทั้งหมดต้องเกิดขึ้นหลังหน้าจอ สมมติว่าฐานข้อมูล 'ง่าย' สำหรับผู้ใช้ที่มี: ID อีเมล์ รหัสผ่าน วิธีการหนึ่งที่จะแก้ไขข้อกำหนดดังกล่าวได้อย่างไร ความคิดปัจจุบันของฉันคือ: สร้างวิธีการแฮ็กใหม่ในชั้นเรียนที่เหมาะสม อัพเดตตารางผู้ใช้ในฐานข้อมูลเพื่อเก็บฟิลด์รหัสผ่านเพิ่มเติม เมื่อผู้ใช้เข้าสู่ระบบสำเร็จโดยใช้แฮรหัสผ่านที่ล้าสมัยแล้วให้กรอกฟิลด์รหัสผ่านที่สองด้วยแฮชที่อัปเดต สิ่งนี้ทำให้ฉันมีปัญหาที่ฉันไม่สามารถแยกความแตกต่างที่สมเหตุสมผลระหว่างผู้ใช้ที่มีและผู้ที่ไม่ได้อัพเดตแฮชรหัสผ่านของพวกเขาและจะถูกบังคับให้ตรวจสอบทั้งสองอย่าง ดูเหมือนว่ามีข้อบกพร่องอย่างน่ากลัว นอกจากนี้โดยทั่วไปหมายความว่าเทคนิคการแปลงแป้นพิมพ์แบบเก่าอาจถูกบังคับให้อยู่ต่อไปเรื่อย ๆ จนกว่าผู้ใช้ทุกคนจะอัปเดตรหัสผ่านของตน ในขณะนั้นฉันสามารถเริ่มลบการตรวจสอบการแฮชเก่าและลบฟิลด์ฐานข้อมูลฟุ่มเฟือย ฉันกำลังมองหาเคล็ดลับการออกแบบที่นี่เป็นส่วนใหญ่เนื่องจาก 'โซลูชัน' ปัจจุบันของฉันสกปรกไม่สมบูรณ์และไม่มีอะไร แต่ถ้าต้องการรหัสจริงเพื่ออธิบายวิธีแก้ไขที่เป็นไปได้อย่าลังเลที่จะใช้ภาษาใด ๆ

10
การแย่งชิง: วิธีการรวมงานที่ทำโดยนักพัฒนาที่ประสบความสำเร็จเกินกำลังออกจากวง?
เรามีทีม SCRUM "ทั่วไป" และเรามุ่งมั่นที่จะทำงานเพื่อการวิ่งและยังคงมีงานในมือ เมื่อเร็ว ๆ นี้เราประสบปัญหาในการพยายามรวม / จัดการกับงานของนักพัฒนาที่ประสบผลสำเร็จมากเกินไปในการทำงานนอกกลุ่ม (เลือกที่จะทำงานนอกเวลาทำงานปกติ / การวิ่ง) เพื่อยกตัวอย่างถ้าทีมงานใช้ 50 คะแนนในการทำงานสมมติว่าพวกเขาจะทำงานทั้งหมดให้เสร็จภายในกรอบ SCRUM ในตอนท้ายของการวิ่งและพวกเขาและ บริษัท มีความสุข หนึ่งในสมาชิกในทีมตัดสินใจที่จะทำงานด้วยตัวเองในรายการที่ค้างในเวลาว่างของตัวเอง พวกเขาไม่ได้ตรวจสอบในงานนี้ แต่แทนที่จะบันทึกไว้ (เราใช้ TFS และอยู่ในชั้นวาง) วิธีจัดการกับสิ่งนี้? ปัญหาเล็กน้อย .. ในระหว่างการวิ่งครั้งต่อไปสมาชิกในทีมบอกว่างานเขียนโปรแกรมเสร็จแล้ว 99% และเพียงแค่ต้องการตรวจสอบรหัสและทดสอบ คุณจัดการกับสิ่งนี้ใน SCRUM และวิธีการแบบเปรียวได้อย่างไร ผู้พัฒนารายอื่นบ่นว่าไม่เกี่ยวข้องกับการตัดสินใจออกแบบที่เกี่ยวข้องกับเรื่องราวเหล่านี้เนื่องจากงานเสร็จจากวง เจ้าของผลิตภัณฑ์ของเราถูกล่อลวงให้ดึงงาน "ฟรี" นี้และสมาชิกที่ประสบความสำเร็จมีแนวโน้มที่จะทำสิ่งนี้โดยมีจุดประสงค์เพื่อให้ได้คุณสมบัติเพิ่มเติมลงในผลิตภัณฑ์ที่ทีมไม่สามารถทำได้ในการวิ่ง มีมุมมองว่าสิ่งนี้กำลังทำลาย "กระบวนการ" เห็นได้ชัดว่า QA, UI และงานเอกสารยังคงต้องทำในงานนี้ ฉันเห็นการสนทนาจำนวนมากเกี่ยวกับการไม่บังคับให้ทีม SCRUM ทำงานล่วงเวลา แต่สมาชิกในทีมทำงานด้านบนและเกินความคาดหวังที่เกิดขึ้นระหว่างการวางแผนและการดำเนินการวิ่งหรือไม่ ฉันลังเลที่จะปกครองบุคคลนี้และบอกว่าคุณไม่สามารถทำงานพิเศษได้ (เตือนให้หมดกำลังใจ) …
32 agile  scrum  team 

3
คำอธิบายอย่างง่ายของการรวมอย่างต่อเนื่อง
คุณจะกำหนด Integration Integration อย่างต่อเนื่องและส่วนประกอบ CI เซิร์ฟเวอร์ใดที่ประกอบด้วย ฉันต้องการอธิบายให้คนในแผนกการตลาดทราบว่าการรวมระบบแบบต่อเนื่องคืออะไร พวกเขาเข้าใจการควบคุมแหล่งที่มา - เช่นพวกเขาใช้การโค่นล้ม แต่ฉันต้องการอธิบายให้พวกเขาทราบอย่างถูกต้องว่า CI คืออะไร วิกิพีเดียบทความไม่ถูกต้องกำหนดมันบทความ Martin Fowlerเพียง แต่ช่วยให้ต่อไปนี้ซึ่งเป็นพื้นซ้ำซากตามด้วยคำอธิบายที่คลุมเครือของ 'บูรณาการ': การรวมอย่างต่อเนื่องเป็นวิธีการพัฒนาซอฟต์แวร์ที่สมาชิกของทีมรวมการทำงานของพวกเขาบ่อยครั้งโดยทั่วไปแต่ละคนจะรวมอย่างน้อยทุกวัน - นำไปสู่การรวมหลายต่อวัน การรวมแต่ละครั้งจะถูกตรวจสอบโดยการสร้างอัตโนมัติ (รวมถึงการทดสอบ) เพื่อตรวจหาข้อผิดพลาดการรวมได้เร็วที่สุด อัปเดต : ฉันส่งภาพนี้ให้ฉันพวกเขาไม่สามารถหาภาพที่ง่ายกว่านี้ได้ อัปเดต 2 : ย้อนกลับจากแผนการตลาด (สำหรับช่วงเวลาที่มีคำถาม 3 ข้อ): ฉันชอบคำตอบทั้งหมด 3 ข้อ - ด้วยเหตุผลที่แตกต่างกัน ฉันรู้สึกเหมือนเข้าสู่ระบบเพียงเพื่อขอบคุณพวกเขาทั้งหมด! เห็นได้ชัดว่าเขาไม่สามารถ - ขอบคุณในนามของเขา :) อัปเดต 3 : ฉันรู้แล้วว่าได้อ่านบทความ Wikipedia ว่ามันมีหลักการซึ่งเมื่อคุณใช้หัวเรื่องเป็นรายการที่ค่อนข้างดี: …

1
ประสิทธิภาพของรหัส ADT ที่มุ่งเน้นการกำหนดเดียวบน CPU ที่ทันสมัย
การทำงานกับข้อมูลที่ไม่เปลี่ยนรูปแบบด้วยการมอบหมายครั้งเดียวมีผลชัดเจนที่ต้องใช้หน่วยความจำมากขึ้นอย่างใดอย่างหนึ่งจะเข้าใจเพราะคุณกำลังสร้างค่าใหม่อย่างต่อเนื่อง(แม้ว่าคอมไพเลอร์ภายใต้ฝาครอบทำเคล็ดลับตัวชี้ แต่ฉันเคยได้ยินสองสามครั้งในขณะนี้ว่าการสูญเสียที่เกิดขึ้นกับประสิทธิภาพนั้นมีมากกว่าเมื่อได้รับประโยชน์จากวิธีการที่ CPU (ตัวควบคุมหน่วยความจำของมันโดยเฉพาะ) สามารถใช้ประโยชน์จากความจริงที่ว่าหน่วยความจำไม่ได้กลายพันธุ์ ฉันหวังว่าจะมีใครซักคนที่จะเข้าใจว่าเรื่องนี้เกิดขึ้นจริงได้อย่างไร (หรือถ้าไม่ใช่) ในความคิดเห็นในโพสต์อื่นถูกกล่าวถึงว่าAbstract Data Types (ADT's) เกี่ยวข้องกับสิ่งนี้ซึ่งทำให้ฉันอยากรู้เพิ่มเติมว่า ADT มีผลเฉพาะวิธีที่ CPU ใช้กับหน่วยความจำอย่างไร อย่างไรก็ตามนี่เป็นสิ่งที่แยกกันส่วนใหญ่ฉันแค่สนใจว่าความบริสุทธิ์ของภาษานั้นมีผลต่อประสิทธิภาพของ CPU และแคช ฯลฯ อย่างไร

1
LGPL 2.1 กับ LGPL 3.0 ข้อดีและข้อเสีย
จากสิ่งที่ฉันได้อ่าน LGPL 3.0 ช่วยให้คุณใช้ใบอนุญาตร่วมกับใบอนุญาตอื่น ๆ ได้รับอนุญาตมากขึ้นเกี่ยวกับเรื่องนั้น (ไม่แน่ใจเกี่ยวกับเรื่องนั้น) จากhttps://www.gnu.org/licenses/gpl-faq.html#AllCompatibilityมันบอกว่ามันเข้ากันไม่ได้กับ GPLv2 ในขณะที่ LGPL 2.1 เข้ากันได้กับมัน มันตรงกันข้ามกับสิ่งที่ฉันอ่าน ... คุณรู้หรือไม่ว่าข้อดีและข้อเสียของ LGPL 3.0 ที่เหนือกว่า LGPL 2.1 คืออะไร? ข้อเสียอย่างหนึ่งก็คือมันเข้ากันไม่ได้กับ GPLv2
32 licensing  gpl  lgpl 

8
ความปลอดภัยและความน่าเชื่อถือในการโฮสต์เว็บไซต์เช่น sourceforge, github หรือ bitbucket สำหรับโปรเจ็กต์แบบปิดเป็นอย่างไร [ปิด]
ฉันกำลังพิจารณาใช้ sourceforge, bitbucket หรือ github สำหรับการจัดการการควบคุมแหล่งที่มาสำหรับธุรกิจของฉัน ฉันมีโครงการแบบเปิดและฉันมีส่วนร่วมในโครงการเปิดเช่น gcc แต่ฉันก็มีธุรกิจที่ฉันพัฒนาซอฟต์แวร์โอเพนซอร์สสำหรับการใช้ชีวิตของฉัน แหล่งที่เชื่อถือได้ความเชื่อถือของ Github หรือ Bitbucket ในแง่ของการรักษาความปลอดภัยของซอฟต์แวร์จากการสอดรู้สอดเห็นหรือไม่? โฮสติ้งมีความเสถียรเพียงใดในแง่ของการป้องกันการสูญหายของข้อมูล? มีใครบ้างไหมที่ใช้ตรรกะทางธุรกิจกับชุดดังกล่าว? มีใครออกสำรวจโซลูชันโฮสติ้งหลาย ๆ

3
หลักการของความประหลาดใจน้อยที่สุดคืออะไร?
ในการเขียนโปรแกรมสิ่งที่เรียกว่า Principle of Least ประหลาดใจ? แนวคิดนี้เกี่ยวข้องกับการออกแบบ API ที่ดีอย่างไร สิ่งนี้ใช้ได้กับการเขียนโปรแกรมเชิงวัตถุเท่านั้นหรือมันซึมซาบเทคนิคการเขียนโปรแกรมอื่น ๆ ด้วยหรือไม่ สิ่งนี้เกี่ยวข้องกับหลักการ "ทำสิ่งเดียวในวิธีการของคุณและทำได้ดีหรือไม่"?

2
เหตุใดค่าบูลีนจึงถูกเก็บเป็นไบต์ภายในคอมพิวเตอร์เมื่อต้องการเพียงบิตเดียว
ฉันเพิ่งเริ่มเรียนรู้การเขียนรหัสและในหนังสือของฉันฉันเจอคำถามนี้ "ทำไมค่าบูลีนจึงถูกจัดเก็บเป็นไบต์ภายในคอมพิวเตอร์เมื่อต้องการเพียงบิตเดียว" บางคนสามารถให้ความกระจ่างแก่คำถามนี้ได้มากขึ้น

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

2
วิธีการออกแบบระบบการแจ้งเตือนที่ปรับขนาดได้? [ปิด]
ฉันต้องเขียนผู้จัดการระบบการแจ้งเตือน นี่คือข้อกำหนดของฉัน: ฉันต้องสามารถส่งการแจ้งเตือนบนแพลตฟอร์มที่แตกต่างกันซึ่งอาจแตกต่างกันโดยสิ้นเชิง (สำหรับตัวอย่างฉันต้องสามารถส่ง SMS หรืออีเมลได้) บางครั้งการแจ้งเตือนอาจเหมือนกันสำหรับผู้รับทุกคนสำหรับแพลตฟอร์มที่กำหนด แต่บางครั้งอาจเป็นการแจ้งเตือนต่อผู้รับ (หรือหลายคน) ต่อแพลตฟอร์ม การแจ้งเตือนแต่ละครั้งสามารถมีส่วนของข้อมูลเฉพาะแพลตฟอร์มได้ (สำหรับตัวอย่าง MMS ที่มีเสียงหรือภาพ) ระบบจำเป็นต้องปรับขนาดได้ฉันต้องสามารถส่งการแจ้งเตือนจำนวนมากโดยไม่ต้องหยุดทำงานทั้งแอปพลิเคชันหรือเซิร์ฟเวอร์ มันเป็นกระบวนการสองขั้นตอนแรกที่ลูกค้าอาจพิมพ์ข้อความและเลือกแพลตฟอร์มที่จะส่งไปและควรสร้างการแจ้งเตือนเพื่อประมวลผลแบบเรียลไทม์ในภายหลัง จากนั้นระบบจะต้องส่งการแจ้งเตือนไปยังผู้ให้บริการแพลตฟอร์ม สำหรับตอนนี้ฉันจบลงด้วยบางอย่าง แต่ฉันไม่รู้ว่ามันจะปรับขนาดได้หรือถ้ามันเป็นการออกแบบที่ดี ฉันว่าวัตถุต่อไปนี้ (ในภาษาเทียม): Notificationวัตถุทั่วไป: class Notification { String $message; Payload $payload; Collection<Recipient> $recipients; } ปัญหาเกี่ยวกับวัตถุต่อไปนี้จะเกิดอะไรขึ้นถ้าฉันมีผู้รับ 1,000,000? แม้ว่าRecipientวัตถุนั้นจะเล็กมากมันก็จะใช้หน่วยความจำมากเกินไป ฉันสามารถสร้างการแจ้งเตือนได้หนึ่งรายการต่อผู้รับ แต่ผู้ให้บริการแพลตฟอร์มบางรายกำหนดให้ฉันส่งเป็นชุดซึ่งหมายความว่าฉันต้องกำหนดหนึ่งการแจ้งเตือนที่มีผู้รับหลายคน การแจ้งเตือนที่สร้างขึ้นแต่ละครั้งสามารถเก็บไว้ในที่เก็บข้อมูลถาวรเช่น DB หรือ Redis มันจะเป็นการดีหรือไม่ที่จะรวมกันในภายหลังเพื่อให้แน่ใจว่าสามารถปรับขนาดได้หรือไม่? ในขั้นตอนที่สองฉันต้องดำเนินการการแจ้งเตือนนี้ แต่ฉันจะแยกแยะการแจ้งเตือนกับผู้ให้บริการแพลตฟอร์มที่เหมาะสมได้อย่างไร ฉันควรใช้วัตถุเช่นMMSNotificationขยายabstract Notificationหรือไม่ หรือสิ่งที่ต้องการNotification.setType('MMS')? เพื่อให้สามารถประมวลผลการแจ้งเตือนจำนวนมากในเวลาเดียวกันฉันคิดว่าระบบคิวการส่งข้อความเช่น RabbitMQ อาจเป็นเครื่องมือที่เหมาะสม …

10
อะไรคือจุดใช้ของรายการเหนือเวคเตอร์ใน C ++?
ฉันใช้การทดลอง 3 แบบที่เกี่ยวข้องกับรายการ C ++ และเวกเตอร์ ผู้ที่มีเวกเตอร์พิสูจน์ได้ว่ามีประสิทธิภาพมากขึ้นแม้ว่าจะมีการแทรกอยู่ตรงกลางจำนวนมาก ดังนั้นคำถาม: ในกรณีใดรายการที่มีเหตุผลมากกว่าเวคเตอร์? หากเวกเตอร์ดูเหมือนจะมีประสิทธิภาพมากขึ้นในกรณีส่วนใหญ่และพิจารณาว่าสมาชิกของพวกเขาเหมือนกันแล้วจะมีข้อได้เปรียบอะไรที่เหลืออยู่สำหรับรายการ? สร้างจำนวนเต็ม N และวางไว้ในคอนเทนเนอร์เพื่อให้คอนเทนเนอร์ยังคงเรียงลำดับ การแทรกได้รับการดำเนินการอย่างไร้เดียงสาโดยการอ่านองค์ประกอบทีละหนึ่งและแทรกใหม่ขวาก่อนที่จะมีขนาดใหญ่ขึ้นครั้งแรก ด้วยรายการเวลาจะผ่านหลังคาเมื่อมิติเพิ่มขึ้นเมื่อเทียบกับเวกเตอร์ แทรกจำนวนเต็ม N ที่ส่วนท้ายของคอนเทนเนอร์ สำหรับรายการและเวกเตอร์เวลาเพิ่มขึ้นตามลำดับความสำคัญเท่ากันแม้ว่ามันจะเร็วขึ้น 3 เท่าเมื่อใช้เวกเตอร์ แทรกจำนวนเต็ม N ในคอนเทนเนอร์ เริ่มจับเวลา เรียงลำดับคอนเทนเนอร์โดยใช้ list.sort สำหรับรายการและ std :: sort สำหรับเวกเตอร์ หยุดจับเวลา อีกครั้งเวลาเพิ่มขึ้นตามลำดับความสำคัญเท่ากัน แต่มันจะเร็วขึ้นโดยเฉลี่ย 5 เท่าด้วยเวกเตอร์ ฉันอาจทำการทดสอบต่อไปและหาตัวอย่างสองสามข้อที่รายการจะพิสูจน์ได้ดีขึ้น แต่ประสบการณ์ร่วมกันของพวกคุณที่อ่านข้อความนี้อาจให้คำตอบที่มีประสิทธิผลมากขึ้น คุณอาจเจอสถานการณ์ที่รายการใช้งานได้สะดวกกว่าหรือทำได้ดีกว่า

4
การจัดการหลายคนที่ทำงานในโครงการด้วย GIT
ฉันใหม่กับ GIT / GitHub มาก (เหมือนเพิ่งเริ่มเมื่อวาน) ฉันต้องการทราบว่าวิธีที่ดีที่สุดในการจัดการหลายคนที่ทำงานในโครงการเดียวกันกับ Github คืออะไร ขณะนี้ฉันกำลังจัดการโครงการหนึ่งโครงการกับผู้พัฒนาสี่ราย ฉันจะไปเกี่ยวกับขั้นตอนการทำงานและทำให้แน่ใจว่าทุกอย่างตรงกันได้อย่างไร (หมายเหตุ: นักพัฒนาทั้งหมดจะมีหนึ่งบัญชีสากล) นักพัฒนาแต่ละคนจำเป็นต้องอยู่ในสาขาที่แตกต่างกันหรือไม่? ฉันจะสามารถจัดการกับ 2 คนที่ทำงานกับไฟล์เดียวกันได้หรือไม่? กรุณาโพสต์คำตอบอย่างละเอียดฉันไม่ใช่คนขี้อาย ฉันต้องเข้าใจเรื่องนี้ดี
32 git  github 

5
ฉันเป็นผู้ใช้คอมไพล์สับสนโดยการแตกแขนงของ Mercurial ฉันจะติดตามการเปลี่ยนแปลงเล็กน้อยได้อย่างไร
ฉันเคยใช้คอมไพล์มาก่อน แต่ฉันต้องการมีส่วนร่วมกับไพ ธ อนดังนั้นตอนนี้ฉันต้องเรียนรู้ Mercurial และฉันพบว่ามันน่าหงุดหงิดมาก ดังนั้นฉันจึงทำแผ่นแปะเล็ก ๆ สองสามชิ้นและฉันต้องการติดตามพวกเขาในคอมมิชชัน Mercurial Repository เห็นได้ชัดว่ามี4 วิธีที่จะจัดการกับการแตกแขนงในปรอท 1 และ 4 ดูไร้สาระอย่างสมบูรณ์สำหรับฉันสาขาชื่อดูเหมือนจะมีน้ำหนักมากและฉันรู้สึกว่าฉันไม่ควรใช้พวกเขาสำหรับการแก้ไข 1 คอมมิชชันที่รวดเร็วดังนั้นฉันจึงใช้บุ๊กมาร์ก ตอนนี้แพทช์ของฉันถูกปฏิเสธและฉันต้องการลบสาขาบุ๊กมาร์กของฉันจากที่เก็บของฉัน ตกลงใน git ฉันจะบังคับลบสาขาของฉันและลืมมันดังนั้นฉันลบบุ๊คมาร์คของฉันและตอนนี้ฉันมีปัญหาต่อไปนี้: TortoiseHG และhg logยังคงแสดงให้เห็นว่าการกระทำและdefaultสาขามี 2 หัว และถ้าฉันเข้าใจถูกต้องคุณจะไม่สามารถลบการคอมมิทเป็น hg หากไม่มีปลั๊กอินเพิ่มเติม Mercurial ไม่เพียง แต่แฮช แต่ยังปรับปรุงหมายเลข ในขณะที่ฉันเพิ่มความมุ่งมั่นของตัวเองสองสามข้อความมุ่งมั่นทั้งหมดที่ดึงมาหลังจากนั้นมีหมายเลขการแก้ไขที่แตกต่างจาก repo ส่วนกลางหลัก ฉันhg updateดึงหลังจากย้ายmasterบุ๊กมาร์กของฉันไปยังการคอมมิชชันล่าสุดโดยอัตโนมัติ แต่ฉันไม่สามารถหาวิธีที่จะทำได้ใน TortoiseHG ผมทำอะไรผิดหรือเปล่า? นี่เป็นเรื่องปกติและคาดหวังและฉันควรจะเพิกเฉยต่อปัญหาเหล่านี้หรือไม่ หรือฉันจะทำงานกับสาขาของฉันได้อย่างไร

4
วิธีที่ถูกต้องในการจัดการกับการแก้ปัญหาการส่งออกใน Java คืออะไร
ในขณะที่โครงการ Java ปัจจุบันของฉันเติบโตขึ้นเรื่อย ๆ ฉันรู้สึกว่าจำเป็นที่จะต้องเพิ่มการดีบักเอาต์พุตในหลาย ๆ จุดของโค้ดของฉัน หากต้องการเปิดใช้งานหรือปิดใช้งานคุณลักษณะนี้อย่างเหมาะสมขึ้นอยู่กับการเปิดหรือปิดเซสชันการทดสอบฉันมักจะใส่private static final boolean DEBUG = falseจุดเริ่มต้นของชั้นเรียนที่การทดสอบของฉันกำลังตรวจสอบอยู่และใช้วิธีนี้เล็กน้อย (เช่น): public MyClass { private static final boolean DEBUG = false; ... some code ... public void myMethod(String s) { if (DEBUG) { System.out.println(s); } } } และไม่ชอบ แต่นั่นไม่ได้ทำให้ฉันสุขใจเพราะแน่นอนว่ามันใช้ได้ แต่อาจมีหลายคลาสเกินไปที่จะตั้งค่า DEBUG ให้เป็นจริงถ้าคุณไม่จ้องมองเพียงสองสามคน ในทางกลับกันฉัน (เหมือน - ฉันคิดว่า …

4
เหตุใด F # จึงมีโหมดโต้ตอบ แต่ไม่ใช่ C #
F # ออกมาพร้อมกับ REPL แบบโต้ตอบ C # ไม่มีการเรียงลำดับและจริง ๆ แล้วเป็นเรื่องยากที่จะเล่นโดยไม่ต้องตั้งค่าโปรเจ็กต์เต็มรูปแบบ (แม้ว่า LINQpad จะใช้งานได้ มีบางสิ่งที่แตกต่างกันโดยพื้นฐานเกี่ยวกับภาษาที่อนุญาตให้ F # มีคอนโซลการโต้ตอบ แต่ทำให้ยากต่อการปรับใช้สำหรับ C # หรือไม่ ตั้งแต่หลายปีต่อมาผู้คนยังคงมาที่คำถามนี้ฉันควรทราบว่าตอนนี้มีตัวเลือกมากมาย คุณสามารถใช้ PowerShell (ติดตั้งล่วงหน้าในเครื่อง windows สมัยใหม่ทุกรุ่น) เพื่อเล่นกับ. Net framework หรือคุณสามารถใช้LinqPad ต้นแบบพลรหัส หรือคุณสามารถใช้ScriptCsหรือคุณสามารถใช้สภาพแวดล้อม jsfiddle ประเภทออนไลน์เช่นComplify.netหรือJsil ตัวเลือกมากมาย
32 c#  .net  tools  f# 

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