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

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

1
เหตุใดโปรแกรมเมอร์จึงใช้ 'Acme' เป็นแพคเกจเนมสเปซหรือชื่อไดเรกทอรี [ปิด]
นี่อาจจะใช่หรือไม่ใช่คำถามโง่ ๆ ก็ได้ แต่ฉันอยากจะรู้คำตอบของบางสิ่งที่รบกวนฉันมาระยะหนึ่งแล้ว ฉันมักจะเห็นตัวอย่างการเขียนโปรแกรม / การประชุมที่โปรแกรมเมอร์ได้สร้างไดเรกทอรีที่เรียกว่าacmeใส่สิ่งต่างๆ อะไรAcmeหมายถึง? ทำไม Acme และไม่ใช่ Emca หรืออื่น ๆ Acme เป็นชื่อโฟลเดอร์ทั่วไปสำหรับจัดกลุ่มคลาส OOP เบ็ดเตล็ดหรือไม่ คำนี้มาจากที่ไหนในแง่ของการประชุมการเขียนโปรแกรม เท่าที่ฉันเห็นมันไม่มีส่วนเกี่ยวข้องกับโปรแกรมเมอร์ UI http://plan9.bell-labs.com/sys/doc/acme.html

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

5
อะไรคือความพินาศของ MVC [ปิด]
ฉันใช้ MVC / MV * ตั้งแต่ฉันเริ่มจัดระเบียบโค้ดของฉันเมื่อหลายปีก่อน ฉันใช้มันมานานจนฉันไม่สามารถคิดวิธีอื่นใดในการวางโครงสร้างโค้ดของฉันและงานทุกอย่างที่ฉันเคยทำหลังจากฝึกงานเป็น MVC คำถามของฉันคืออะไรการล่มสลายของ MVC คืออะไร? MVC จะเป็นตัวเลือกที่ไม่ดีสำหรับโครงการในกรณีใดและตัวเลือกที่ถูกต้อง (เพิ่มเติม) จะเป็นอย่างไร เมื่อฉันค้นหาทางเลือก MVC เกือบทุกผลลัพธ์เป็นเพียงประเภท MVC ที่แตกต่างกัน หากต้องการ จำกัด ขอบเขตให้แคบลงเพื่อไม่ให้ถูกปิดให้พูดสำหรับเว็บแอปพลิเคชัน ฉันทำงานกับส่วนหลังและส่วนหน้าสำหรับโครงการต่าง ๆ ดังนั้นฉันจึงไม่สามารถพูดได้ว่าส่วนหน้าหรือส่วนหลัง

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

7
คุณติดตามชั้นเรียนและฟังก์ชั่นที่ทีมของคุณเขียนไว้ได้อย่างไร?
เมื่อทำงานกับโค้ดฉันต้องเผชิญกับความท้าทายหลายอย่างที่เพื่อนร่วมทีมของฉันทำและฉันได้เขียนฟังก์ชั่นและชั้นเรียนที่มีประโยชน์ หากมีการสื่อสารที่ดีฉันจะได้ยินเกี่ยวกับสิ่งที่ยอดเยี่ยมที่ใครบางคนรวบรวมไว้และอีกหกเดือนต่อมาเมื่อฉันต้องการฉันอาจจำได้และเรียกใช้ฟังก์ชันนั้นประหยัดเวลา หากฉันจำไม่ได้หรือไม่เคยรู้เรื่องนี้ฉันอาจจะประดิษฐ์วงล้อขึ้นใหม่ มีวิธีปฏิบัติที่เฉพาะเจาะจงในการบันทึกสิ่งเหล่านี้หรือไม่? คุณทำให้พวกมันหาง่ายได้อย่างไร? หากทีมของคุณไม่มีเอกสารดังกล่าวคุณจะรู้ได้อย่างไรว่าล้อของคุณมีอยู่แล้ว? แก้ไข: ทั้งหมด แต่หนึ่งในคำตอบที่เกี่ยวข้องกับสถานการณ์ในอุดมคติดังนั้นขอสรุปการแก้ปัญหาเหล่านั้น: เอกสาร & การสื่อสาร; wikis, stand-up meetings เป็นต้นสิ่งเหล่านี้ล้วน แต่เป็นสิ่งที่ยอดเยี่ยม แต่พวกเขาต้องพึ่งพาโปรแกรมเมอร์ที่มีเวลา (และทักษะ) ในการเขียนเอกสารและเข้าร่วมการประชุมและจดบันทึกและจดจำทุกสิ่ง คำตอบที่ได้รับความนิยมมากที่สุดจนถึงปัจจุบัน (Caleb's) เป็นคำตอบเดียวที่โปรแกรมเมอร์สามารถใช้งานได้ซึ่งไม่สามารถจัดทำเอกสารและการประชุมได้ การเขียนโปรแกรมเป็นสิ่งที่โปรแกรมเมอร์ทำและใช่โปรแกรมเมอร์ที่ยอดเยี่ยมสามารถเขียนเอกสารประกอบการทดสอบหน่วย ฯลฯ แต่มาดูกัน - พวกเราส่วนใหญ่ชอบเขียนโปรแกรมเพื่อจัดทำเอกสาร วิธีแก้ปัญหาของเขาคือที่โปรแกรมเมอร์จำรหัสที่ใช้ซ้ำได้และดึงมันออกไปยังคลาสหรือพื้นที่เก็บข้อมูลของตัวเองหรืออะไรก็ตามและโดยความจริงที่ว่ามันถูกแยกออกมันจะกลายเป็นความสามารถในการเรียนรู้ . และนี่คือความสำเร็จโดยการเขียนโปรแกรม ในแบบที่ฉันเห็นมันเป็นแบบนี้: ฉันเพิ่งเขียนสามหน้าที่และมันเกิดขึ้นกับฉันที่คนอื่นควรรู้เกี่ยวกับพวกเขา ฉันสามารถจัดทำเอกสารเขียนบันทึกประกาศในที่ประชุม ฯลฯ - ซึ่งฉันทำได้ แต่ไม่ใช่จุดแข็งของฉัน - หรือ .... ฉันสามารถแยกพวกเขาออกจากชั้นเรียนตั้งชื่อให้ดีทำให้พวกเขาทำงานได้ กล่องดำและติดไว้ที่ไฟล์คลาสอื่น ๆ จากนั้นอีเมลสั้น ๆ ประกาศว่าเป็นเรื่องง่าย นักพัฒนาซอฟต์แวร์คนอื่นสามารถสแกนโค้ดและเข้าใจได้ดีกว่าฟังก์ชั่นแยกที่ใช้ในโค้ดที่พวกเขาไม่เข้าใจ - บริบทนั้นจะถูกลบ …

13
ฉันทำคะแนนเรื่องราวได้มากกว่า 4-5 เท่าโดยเฉลี่ย แต่สร้างข้อบกพร่องในอัตราครึ่งหนึ่ง กราฟบอกว่ามันเป็นข้อผิดพลาดมากกว่า 2x วิธีจัดการกับมันได้อย่างไร
ดังนั้นจึงเป็นที่ยอมรับกันโดยทั่วไปว่าโปรแกรมเมอร์ระดับสูงสามารถสร้างลำดับความสำคัญได้มากกว่า / ดีกว่ารหัสโดยเฉลี่ย เป็นที่ยอมรับกันโดยทั่วไปว่าอัตราข้อผิดพลาดที่เกิดขึ้นในโค้ดนั้นค่อนข้างคงที่สำหรับโปรแกรมเมอร์ แต่มีแนวโน้มที่จะได้รับผลกระทบจากกระบวนการที่ใช้เมื่อเขียนรหัสและหลังจากเขียนรหัสแล้ว (ตามที่ฉันเข้าใจ) มนุษย์มักจะทำผิดพลาดในอัตราที่ค่อนข้างคงที่ - โปรแกรมเมอร์ที่ดีกว่าเพียงสังเกตเห็นพวกเขามากขึ้น โปรดทราบว่าการยืนยันทั้งสองข้างต้นมาจากCode Completeโดย Steve McConnell ดังนั้นจึงไม่ใช่เรื่องของมุมมองที่แตกต่าง ดังนั้นฉันจึงเริ่มเห็นสิ่งนี้ในรหัสของฉัน ฉันสามารถใช้จำนวนโค้ดประมาณ 4-5 เท่ากับเพื่อนร่วมงานของฉัน (วัดจากคะแนนเรื่องราวที่ประเมินโดยทีม) ด้วยคุณภาพที่สูงขึ้น (ขึ้นอยู่กับตัวชี้วัดประสิทธิภาพและจำนวนการเปลี่ยนแปลงที่เกิดขึ้นหลังจากเช็คอิน) แต่ฉันก็ยังทำผิดอยู่ ระหว่างการทดสอบหน่วยที่ดีขึ้นความเข้าใจที่ดีขึ้นเกี่ยวกับสิ่งที่รหัสกำลังทำอยู่และการมองปัญหาที่ดีขึ้นเมื่อทำการตรวจสอบโค้ดฉันไม่ได้ผลิตข้อผิดพลาด 4-5 เท่า แต่ฉันยังคงผลิตประมาณสองครั้งเป็นโรคจิตหลายพบได้โดยการควบคุมคุณภาพเป็นนักพัฒนาอื่น ๆ ในทีมของฉัน อย่างที่คุณอาจจินตนาการสิ่งนี้ทำให้เกิดปัญหาบางอย่างกับผู้ที่ไม่ใช้เทคนิคทำการวัดแบบเมตริก ฉันพยายามที่จะชี้ให้เห็นว่าฉันผลิตข้อบกพร่องในอัตราครึ่งหนึ่งของเพื่อนของฉัน (และแก้ไขสองเท่าเป็นจำนวนมาก) แต่มันเป็นเรื่องยากที่จะขายเมื่อมีกราฟบอกว่าฉันผลิตข้อผิดพลาดเป็นสองเท่า ดังนั้นวิธีจัดการกับความจริงที่ว่าผลผลิตที่เพิ่มขึ้นจะนำไปสู่การเพิ่มจำนวนข้อบกพร่อง?

2
รหัสสถานะ HTTP REST ที่แนะนำสำหรับ 'ถึงขีด จำกัด การร้องขอ'
ฉันกำลังรวบรวมข้อมูลจำเพาะสำหรับบริการ REST ซึ่งเป็นส่วนหนึ่งที่จะรวมความสามารถในการเร่งความเร็วให้กับผู้ใช้ทั้งในกลุ่มและรายบุคคล เท่ากันหมดเวลาสำหรับสิ่งเหล่านี้จะสามารถกำหนดค่าต่อทรัพยากร / กลุ่ม / บริการ ฉันแค่ดูข้อมูลจำเพาะ HTTP 1.1 และพยายามตัดสินใจว่าจะสื่อสารกับลูกค้าอย่างไรว่าคำขอจะไม่ได้รับการตอบสนองเพราะพวกเขาถึงขีด จำกัด แล้ว ตอนแรกฉันคิดว่ารหัสลูกค้า403 - Forbiddenเป็นรหัสแต่จากสเป็ค: การอนุญาตจะไม่ช่วยและไม่ควรทำซ้ำการร้องขอ รบกวนฉัน ปรากฏขึ้นจริงว่า503 - Service Unavailableเป็นสิ่งที่ดีกว่าที่จะใช้ - เพราะมันช่วยให้การสื่อสารของเวลาลองผ่านการใช้Retry-Afterส่วนหัว เป็นไปได้ว่าในอนาคตฉันอาจมองหาการสนับสนุน 'ซื้อ' คำขอเพิ่มเติมผ่านทางอีคอมเมิร์ซ (ในกรณีนี้มันจะดีถ้ารหัสลูกค้า402 - Payment Requiredได้รับการสรุป!) - แต่ฉันคิดว่านี่อาจถูกบีบให้เป็นการตอบสนอง 503 เช่นกัน คุณคิดว่าฉันควรใช้อันไหน หรือมีอีกอย่างที่ฉันไม่ได้พิจารณา?

7
การเขียนโปรแกรมฟังก์ชั่นการทำงานจำนวนเล็กน้อยสามารถเข้าใจได้โดยคนที่ไม่ใช่ FP หรือไม่ [ปิด]
กรณี : ฉันทำงานที่ บริษัท เขียนแอปพลิเคชันใน Python ที่จัดการข้อมูลจำนวนมากในอาร์เรย์ ฉันเป็นผู้พัฒนาโปรแกรมนี้เพียงคนเดียวในขณะนี้ แต่อาจมีการใช้ / แก้ไข / เพิ่มเติมในอนาคต (1-3 ปี) โดยโปรแกรมเมอร์คนอื่น ๆ ในขณะนี้ที่ฉันไม่รู้จัก ฉันอาจจะไม่ได้อยู่ที่นั่นเพื่อช่วยเหลือโดยตรง แต่อาจให้การสนับสนุนผ่านอีเมลหากฉันมีเวลา ดังนั้นในฐานะนักพัฒนาซอฟต์แวร์ที่ได้เรียนรู้การทำงานของโปรแกรม (Haskell) ฉันมักจะแก้ปัญหาเช่นกรองเช่นนี้: filtered = filter(lambda item: included(item.time, dur), measures) ส่วนที่เหลือของรหัสคือ OO เป็นเพียงกรณีเล็ก ๆ ที่ฉันต้องการแก้ปัญหาแบบนี้เพราะมันง่ายกว่าและสวยงามกว่าตามที่ฉันบอก คำถาม : วันนี้การเขียนโค้ดเป็นแบบนี้หรือไม่ นักพัฒนาซอฟต์แวร์ที่ไม่ได้เขียน / เรียนรู้ FP ตอบสนองต่อรหัสเช่นนี้อย่างไร มันอ่านได้หรือไม่ สามารถปรับเปลี่ยนได้? ฉันควรเขียนเอกสารเช่นอธิบายให้เด็กฟังว่าเส้นทำอะไร? # Filter out the …

8
ฉันจะสร้างโครงสร้างข้อมูลสำหรับ "เขาวงกต" ที่มีขนาดไม่ จำกัด ได้อย่างไร
ฉันไม่แน่ใจจริงๆว่า "เขาวงกต" เป็นคำที่ถูกต้อง ผู้ใช้โดยทั่วไปเริ่มต้นในซิงเกิลRoomที่มี 4 ประตู (N, S, E และ W) พวกเขาสามารถไปในทิศทางใดก็ได้และห้องถัดไปแต่ละห้องจะมีอีกห้องหนึ่งโดยมีประตูตั้งแต่ 1 ถึง 4 ประตูที่ไปยังห้องอื่น "เขาวงกต" ควรจะมีขนาดไม่ จำกัด และเพิ่มขึ้นเมื่อคุณย้ายห้อง มีจำนวน จำกัดRoomsแต่จำนวนที่มีอยู่นั้นเป็นแบบไดนามิกและสามารถเปลี่ยนแปลงได้ ปัญหาของฉันคือฉันไม่แน่ใจว่าโครงสร้างข้อมูลที่ดีที่สุดสำหรับรูปแบบประเภทนี้ ครั้งแรกที่ฉันคิดว่าจะใช้แค่ชุดของRoomวัตถุ[X] [X] แต่ฉันค่อนข้างจะหลีกเลี่ยงเพราะสิ่งนี้ควรจะเติบโตในทุกทิศทางและควรสร้างห้องที่ "เยี่ยมชม" เท่านั้น อีกความคิดหนึ่งคือการให้แต่ละRoomคลาสมี 4 Roomคุณสมบัติที่เชื่อมโยงสำหรับ N, S, E และ W และเพียงแค่เชื่อมโยงไปยังก่อนหน้านี้Roomแต่ปัญหาของการที่ฉันไม่รู้วิธีระบุว่าผู้ใช้เข้าห้องหรือไม่ มีห้องที่อยู่ติดกันแล้ว "สร้าง" ตัวอย่างเช่น, --- --- ---------- | | | | เริ่ม 5 4 …

22
พื้นที่ว่างในตัวระบุเคยเป็นสำนวนหรือไม่? [ปิด]
สไตล์C #แนะนำให้ใช้CamelCaseในตัวระบุเพื่อคั่นคำ ประเพณีเสียงกระเพื่อมแนะนำให้ใช้ - ขีดกลาง - แทน เคยมีภาษาการเขียนโปรแกรมที่ไม่อนุญาตให้ใช้ช่องว่างในตัวระบุ แต่เป็นสำนวนที่ใช้กันทั่วไปเมื่อใช้ตัวระบุหลายคำ? เป็นไปได้ที่จะมีตัวระบุที่มีช่องว่างในการใช้งานบางอย่างของSchemeแต่ก็ไม่ใช่วิธีปฏิบัติที่แพร่หลาย นี่คือตัวอย่าง: Petite Chez Scheme Version 8.4 Copyright (c) 1985-2011 Cadence Research Systems > (define |hey there| 100) > (define |x y z| 200) > (list |hey there| |x y z|) (100 200)

13
เป็นการสัมภาษณ์ที่ไม่ดีหรือไม่ที่ให้ผู้สมัครเขียนการใช้ลิสต์ที่เชื่อมโยง [ปิด]
การอ่านเว็บไซต์นี้และดังนั้นฉันได้เห็นเรื่องราวการสัมภาษณ์และคำตอบมากมายที่บอกว่าผู้สมัครต้องใช้รายการที่เชื่อมโยงตั้งแต่เริ่มต้น โดยปกติแล้วนี่คือแบบฝึกหัด "gimme" สำหรับการเขียนโปรแกรมบทบาทผู้สมัครเช่นการเขียน FizzBuzz แนวคิดคือถ้าผู้สมัครไม่สามารถทำสิ่งนี้ได้พวกเขาไม่สามารถเขียนโปรแกรมและควรถูกปฏิเสธเกือบจะทันที อย่างไรก็ตามฉันไม่สามารถช่วยได้ แต่คิดว่านี่อาจเป็นวิธีปฏิบัติที่ไม่ดีด้วยเหตุผลดังต่อไปนี้: ภาษาระดับสูงที่ทันสมัยเช่น C # และ Python ใช้รายการอย่างกว้างขวาง การเขียนออบเจ็กต์ลิสต์ของคุณเองจะต้องใช้ภายใต้สถานการณ์ที่ผิดปกติเท่านั้นและอาจไม่เหมาะสม ภาษาระดับต่ำกว่าเช่น C ++ มีไลบรารีมาตรฐานพร้อมตัววนซ้ำ / รายการคอนเทนเนอร์และวัตถุ ในแง่ของสองประเด็นแรกนักเขียนโค้ดสามารถใช้เวลาหลายปีโดยไม่ต้องคิดถึงการใช้รายการ (เชื่อมโยงเชื่อมโยงซ้ำซ้อน ฯลฯ ) ด้วยตนเอง บางคนอาจไม่เห็นสิ่งเหล่านี้มาตั้งแต่สมัยเรียน พลังการคำนวณยังไม่ได้เป็นปัจจัยเมื่อหลายปีก่อนดังนั้นประสิทธิภาพผ่านพอยน์เตอร์จึงไม่ใช่ปัญหาที่เคยเป็น (โดยทั่วไป) การค้นหาเว็บอย่างง่ายของบางอย่างเช่น "รายการลิสต์ที่เชื่อมโยง" จะแสดงตัวอย่างโค้ดจำนวนมากที่เพิ่งถูกจดจำและทะเลาะวิวาทกันไม่ได้บ่งชี้ความสามารถที่แท้จริงของผู้สมัคร ฉันควรจะบอกว่าการใช้รายการที่เชื่อมโยงเพื่อนำไปสู่คำถาม / การอภิปรายปลายเปิดของผู้สมัครที่มีความสามารถในการแก้ปัญหา / การคิดเชิงวิพากษ์นั้นน่าจะเป็นการสัมภาษณ์ที่ดี ไม่ว่าผู้สัมภาษณ์คนใดจะเห็นว่าผู้สมัครเป็นอย่างไรและพวกเขาคิดว่ามีประโยชน์อย่างไร ฉันคิดว่าวิธีการแบบไบนารีนี้ของ "ไม่มีรหัสรายการที่เชื่อมโยงไม่มีงาน" สำหรับโปรแกรมเมอร์ที่ทำงานบนเดสก์ท็อปหรือโปรแกรมประยุกต์บนเว็บนั้นล้าสมัยไปแล้ว มันอาจเป็นอันตรายได้ ผู้สมัครที่จำไม่ได้ว่าจะทำงานร่วมกับหัวหน้ารายการอย่างถูกต้องได้อย่างไรอาจเป็น coder และเพื่อนร่วมงานที่ยอดเยี่ยมได้ คิด? แก้ไข : มีความคิดเห็นจำนวนมาก (ดี) …

7
ทริกเกอร์ของ SQL และเมื่อใดหรือเมื่อใดที่จะไม่ใช้
เมื่อฉันเรียนรู้เกี่ยวกับ SQL มาก่อนฉันมักจะบอกให้ใช้เฉพาะทริกเกอร์หากคุณต้องการและเลือกที่จะใช้ขั้นตอนการจัดเก็บแทนถ้าเป็นไปได้ โชคไม่ดีที่ตอนนี้ (ไม่กี่ปีที่ผ่านมาดี) ฉันไม่ได้อยากรู้อยากเห็นและใส่ใจเกี่ยวกับปัจจัยพื้นฐานเหมือนตอนนี้ฉันไม่เคยถามเหตุผลว่าทำไม ชุมชนมีความเห็นอย่างไรในเรื่องนี้? มันเป็นเพียงการตั้งค่าส่วนตัวของใครบางคนหรือควรหลีกเลี่ยงการเรียก (เช่นเคอร์เซอร์) เว้นแต่จะมีเหตุผลที่ดีสำหรับพวกเขา
43 sql 

2
รูปแบบ ActiveRecord เป็นไปตาม / สนับสนุนหลักการออกแบบ SOLID หรือไม่?
ฉันสนใจว่ารูปแบบ ActiveRecord สร้างชื่อเสียงจาก Ruby on Rails กระตุ้นหรือกีดกันการใช้หลักการออกแบบSOLID ตัวอย่างเช่นสำหรับฉันแล้ววัตถุ ActiveRecord นั้นมีทั้งตรรกะของโดเมนและตรรกะการคงอยู่ซึ่งเป็นการละเมิดความรับผิดชอบเดียว

6
ปลอดภัยกว่าหรือไม่ที่จะใช้รหัสผ่านหลายครั้ง?
ฉันได้อ่านสองสามครั้งว่าเมื่อเก็บรหัสผ่านมันเป็นวิธีที่ดีในการ 'double hash' สตริง (เช่นด้วย md5 จากนั้น sha1 ทั้งคู่ด้วยเกลืออย่างเห็นได้ชัด) ฉันเดาคำถามแรกคือ "ถูกจริงหรือไม่" ถ้าไม่ใช่โปรดเลิกสนใจคำถามนี้ :) เหตุผลที่ฉันถามคือบนหน้าของมันฉันจะบอกว่ามันสมเหตุสมผล อย่างไรก็ตามเมื่อฉันคิดถึงมันทุกครั้งที่แฮชถูกทำใหม่ (อาจมีบางสิ่งเพิ่มเข้าไป) ทั้งหมดที่ฉันเห็นคือมีการลดขอบเขตบนของ 'เอกลักษณ์' สุดท้าย ... ที่เกี่ยวข้องกับ อินพุตเริ่มต้น ขอผมใช้อีกวิธี: เรามีจำนวน x ของสตริงที่เมื่อแฮชจะลดลงเป็น y ที่เป็นไปได้ กล่าวคือมีการชนในเซตแรก ตอนนี้มาจากชุดที่สองถึงชุดที่สามมันเป็นไปไม่ได้หรือที่สิ่งเดียวกันจะเกิดขึ้น (เช่นการชนในชุดของสตริง 'y' ที่เป็นไปได้ทั้งหมดที่ส่งผลให้แฮชเดียวกันในชุดที่สาม) ในหัวของฉันสิ่งที่ฉันเห็นคือ 'ช่องทาง' สำหรับการเรียกใช้ฟังก์ชันแฮชแต่ละครั้ง 'ช่องทาง' ชุดความเป็นไปได้ที่ไม่มีที่สิ้นสุดในชุด จำกัด และอื่น ๆ แต่เห็นได้ชัดว่าการโทรแต่ละครั้งทำงานบนขอบเขต จำกัด ก่อน ตั้งไม่ใหญ่กว่าอินพุต อาจเป็นตัวอย่างที่จะอธิบายเสียงคร่ำครวญของฉันได้ไหม ใช้ 'hash_function_a' ที่จะให้ 'a' …
43 hashing 

3
ต้นกำเนิดและความหมายของวลี“ แลมบ์ดาที่สุดคืออะไร”
ฉันยุ่งกับภาษาการเขียนโปรแกรมที่ใช้งานได้ไม่กี่ปีที่ผ่านมาและฉันก็พบกับวลีนี้ ตัวอย่างเช่นมันเป็นบทของ "The Little Schemer ซึ่งแน่นอนว่าบล็อกนี้มีมาก่อนชื่อนี้ (ไม่บทไม่ได้ช่วยตอบคำถามของฉัน) ฉันเข้าใจความหมายของแลมบ์ดาความคิดของฟังก์ชั่นนิรนามนั้นเรียบง่ายและทรงพลัง แต่ฉันไม่เข้าใจว่า "ที่สุด" หมายถึงอะไรในบริบทนี้ สถานที่ที่ฉันได้เห็นวลีนี้: ชื่อของบทที่ 8 ของ The Little Schemer บล็อก: http://lambda-the-ultimate.org/ ชุดเอกสาร "แลมบ์ดาสุดยอด X": http://library.readscheme.org/page1.html ฉันรู้สึกว่าฉันไม่มีข้อมูลอ้างอิงที่นี่ใครช่วยได้บ้าง

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