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

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

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

6
มีภาษาที่ transpiles ไป C ด้วยไวยากรณ์ที่ดีขึ้นหรือไม่ [ปิด]
ตามที่เป็นอยู่ในปัจจุบันคำถามนี้ไม่เหมาะสำหรับรูปแบบคำถาม & คำตอบของเรา เราคาดหวังคำตอบที่จะได้รับการสนับสนุนจากข้อเท็จจริงการอ้างอิงหรือความเชี่ยวชาญ แต่คำถามนี้จะเรียกร้องให้มีการอภิปรายโต้แย้งโต้แย้งหรือการอภิปรายเพิ่มเติม หากคุณรู้สึกว่าคำถามนี้สามารถปรับปรุงและเปิดใหม่ได้โปรดไปที่ศูนย์ช่วยเหลือเพื่อขอคำแนะนำ ปิดให้บริการใน6 ปีที่ผ่านมา CoffeeScript เป็นภาษาที่เปลี่ยนไปใช้ JavaScript ด้วยไวยากรณ์ที่สะอาดซึ่งได้รับแรงบันดาลใจจาก Ruby มีภาษาที่คล้ายกันซึ่ง transpiles เป็น C หรือไม่ทำให้โค้ดที่อ่านง่ายขึ้นโดยไม่กระทบต่อประสิทธิภาพ หากไม่มีสิ่งนี้เกิดขึ้นมีเหตุผลที่ดีที่จะไม่สร้างมันขึ้นมาหรือไม่?
19 c  syntax  compiler 

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

2
ต้นไม้ Aguri คืออะไร
จะผ่านรายการข่าวแฮ็กเกอร์เก่าบางอย่างฉันเจอโพสต์จากผู้ใช้ที่กล่าวว่า ต้นไม้ Aguri ซึ่งแต่งงานกับ Radix Trie ขนาดเท่าขอบ (เช่นที่คุณใช้ในตารางการจัดเส้นทางซอฟต์แวร์) ไปยังรายการ LRU และสังเคราะห์มวลรวมอัตโนมัติ (เช่น 10.0.0.0/16 จาก 1,000 การสังเกตในทุก IP) จากรูปแบบ ของการแทรก พวกเขาเป็นที่รู้จักกันดีในการวิเคราะห์ทราฟฟิก แต่เราก็ใช้มันในการวิเคราะห์หน่วยความจำรันไทม์เช่นกัน ~ tptacek ดังนั้นฉันจึงตัดสินใจค้นหามัน การค้นหาโดย Google อย่างรวดเร็วทำให้ฉันไปที่ไดรเวอร์ F1 การค้นหาวิกิพีเดียนำไปสู่วรรณะทางการเกษตรในอินเดียและบางรายการจากญี่ปุ่น Stack Overflow พบผล 0 รายการ/programming//search?q=aguri site:stackoverflow.com/questions aguri ในที่สุดฉันก็เชื่อมโยงมันกลับไปยังผู้ใช้แล้วเห็นว่าเขามีลิงค์ในบล็อกของเขา http://www.matasano.com/log/1009/aguri-coolest-data-structure-youve-never-heard-of/ แต่มันตายไปแล้ว ดังนั้นโครงสร้างข้อมูล Aguri นี้คืออะไรและถ้าเป็นโครงสร้างข้อมูลจริงเหตุใดจึงไม่มีการบันทึกไว้ที่อื่น

6
ไฟล์ INI หรือ Registry หรือไฟล์ส่วนตัว?
ฉันต้องการบันทึกการกำหนดค่าของโครงการซึ่งรวมถึง ขนาดหน้าจอ ตำแหน่งหน้าจอ เส้นทางโฟลเดอร์ การตั้งค่าผู้ใช้และอื่น ๆ สถานที่มาตรฐานที่คุณสามารถบันทึกสิ่งเหล่านี้คือค่าการกำหนดค่าคือ: Registry ไฟล์ INI ไฟล์ส่วนบุคคล (เช่น * .cfg) คุณเลือกระหว่างสถานที่เหล่านี้อย่างไร นอกจากนี้ยังมีข้อดีและข้อเสียของการใช้ใด ๆ ของพวกเขา?

6
อัลกอริทึมการแฮชที่“ ปลอดภัย” คืออะไร
หลังจากอ่านคำถามที่น่าสนใจนี้ฉันรู้สึกว่าฉันมีความคิดที่ดีว่าอัลกอริทึมการแปลงแป้นพิมพ์ที่ไม่ปลอดภัยที่ฉันใช้ถ้าฉันต้องการ แต่ฉันไม่รู้ว่าทำไมฉันจึงอาจใช้อัลกอริทึมที่ปลอดภัยแทน ดังนั้นความแตกต่างคืออะไร? ผลลัพธ์ไม่ใช่แค่ตัวเลขสุ่มที่แสดงถึงสิ่งที่ถูกแฮชหรือไม่ อะไรทำให้อัลกอริทึมการแปลงแป้นพิมพ์มีความปลอดภัย
19 security  hashing 

4
มากเกินกว่าจะเรียนรู้จัดการกับเทคโนโลยีที่หลากหลาย [ปิด]
เป็นการยากที่จะบอกสิ่งที่ถูกถามที่นี่ คำถามนี้คลุมเครือคลุมเครือไม่สมบูรณ์กว้างเกินไปหรือโวหารและไม่สามารถตอบได้อย่างสมเหตุสมผลในรูปแบบปัจจุบัน สำหรับความช่วยเหลือในการทำความเข้าใจคำถามนี้เพื่อที่จะสามารถเปิด, ไปที่ศูนย์ช่วยเหลือ ปิดให้บริการใน7 ปีที่ผ่านมา ฉันกำลังจะสำเร็จการศึกษาและฉันทำงานเป็นนักพัฒนาเว็บในแผนก IT ของห้องสมุดของเรา เมื่อฉันดูประกาศรับสมัครงานฉันรู้สึกอึดอัดใจกับเทคโนโลยีที่หลากหลาย บริษัท บางแห่งสนใจเรื่องคณิตศาสตร์ + อัลกอริธึม + โครงสร้างข้อมูล บางคนสนใจเกี่ยวกับประสบการณ์ในเทคโนโลยีกองซ้อน XYZ SQL, css, html, frameworks, javascript, รูปแบบการออกแบบ ฯลฯ .. ฯลฯ ... ฯลฯ เมื่อถึงจุดหนึ่งฉันก็รู้ว่าฉันต้องเริ่มต้นการเรียนรู้พื้นฐานเพื่อให้ได้งานทำในที่ที่ดีกว่าและไปจากที่นั่น แต่ทักษะที่ตั้งไว้เพื่อรับฉันเข้าประตูแตกต่างกันไปและฉันไม่มีเวลาเรียนรู้ทุกอย่าง คุณจัดการกับปัญหานี้อย่างไร กองที่จำเป็นสำหรับการจ้างงานคืออะไร? พูดใน php หรือ ror arena บางทีการย้ายที่ชาญฉลาดอาจเป็นการย้ายไปยังกองเทคโนโลยีที่มีความหลากหลายน้อยกว่าเช่น. net
19 skills 

8
ทำไม x = x ++ ไม่ได้กำหนด?
มันไม่ได้กำหนดเพราะมันจะแก้ไขxสองครั้งระหว่างจุดลำดับ มาตรฐานบอกว่ามันไม่ได้กำหนดดังนั้นมันจึงไม่ได้กำหนด เท่าที่ฉันรู้ แต่ทำไม ความเข้าใจของฉันคือการห้ามการทำเช่นนี้จะช่วยให้คอมไพเลอร์เพิ่มประสิทธิภาพได้ดีขึ้น นี่อาจสมเหตุสมผลเมื่อ C ถูกประดิษฐ์ขึ้น แต่ตอนนี้ดูเหมือนจะเป็นข้อโต้แย้งที่อ่อนแอ ถ้าเราต้องสร้าง C ใหม่วันนี้เราจะทำแบบนี้หรือจะทำได้ดีกว่านี้ได้ไหม หรืออาจมีปัญหาที่ลึกกว่านั้นทำให้ยากที่จะกำหนดกฎที่สอดคล้องกันสำหรับนิพจน์ดังกล่าวดังนั้นจึงเป็นการดีที่สุดที่จะห้ามพวกเขา สมมติว่าเราต้องสร้าง C ใหม่ในวันนี้ ฉันอยากจะแนะนำกฎง่ายๆสำหรับการแสดงออกเช่นx=x++ซึ่งดูเหมือนว่าฉันจะทำงานได้ดีกว่ากฎที่มีอยู่ ฉันต้องการรับความคิดเห็นของคุณเกี่ยวกับกฎที่แนะนำเมื่อเปรียบเทียบกับกฎที่มีอยู่หรือคำแนะนำอื่น ๆ กฎที่แนะนำ: ระหว่างจุดลำดับลำดับของการประเมินผลจะไม่ได้รับการกำหนด ผลข้างเคียงเกิดขึ้นทันที ไม่มีพฤติกรรมที่ไม่ได้กำหนดที่เกี่ยวข้อง นิพจน์ประเมินค่านี้หรือว่า แต่จะไม่ฟอร์แมตฮาร์ดดิสก์ของคุณอย่างแน่นอน (ฉันไม่เคยเห็นการใช้งานที่x=x++ฟอร์แมตฮาร์ดดิสก์มาก่อน) ตัวอย่างนิพจน์ x=x++- xดีที่กำหนดไว้ไม่เปลี่ยนแปลง ครั้งแรกที่xจะเพิ่มขึ้น (ทันทีเมื่อx++ได้รับการประเมิน) xแล้วก็ค่าเดิมจะถูกเก็บไว้ใน x++ + ++x- ที่เพิ่มสองครั้งเพื่อประเมินx แม้ว่าอาจประเมินทั้งสองด้านก่อนผลลัพธ์ก็คือ(ด้านซ้ายก่อน) หรือ(ด้านขวาก่อน)2*x+2x + (x+2)(x+1) + (x+1) x = x + (x=3)- ไม่ได้, xการตั้งค่าเป็นอย่างใดอย่างหนึ่งหรือx+3 ถ้าด้านขวาได้รับการประเมินครั้งแรกก็ …

5
มีข้อได้เปรียบอะไรบ้างจากการใช้การแสดงผลหน้าฝั่งเซิร์ฟเวอร์
ฉันกำลังพัฒนาแอปพลิเคชันเว็บและฉันได้เขียนทั้งเว็บไซต์ใน html / js / css และในแบ็กเอนด์ฉันมี servlets ที่โฮสต์บริการ RESTFUL บางส่วน ตรรกะการนำเสนอทั้งหมดทำผ่านการรับออบเจ็กต์ json และแก้ไขมุมมองผ่านจาวาสคริปต์ แอปพลิเคชันนั้นเป็นเครื่องมือค้นหาเป็นหลัก แต่จะมีบัญชีผู้ใช้ที่มีบทบาทแตกต่างกัน ฉันค้นคว้ากรอบบางอย่างเช่น Play และ Spring ฉันค่อนข้างใหม่ในการพัฒนาเว็บไซต์ดังนั้นฉันจึงสงสัยว่าการใช้การแสดงผลหน้าเว็บเซิร์ฟเวอร์จะมีประโยชน์อย่างไร มันคือ: ความเร็ว? การพัฒนาและขั้นตอนการทำงานง่ายขึ้น? เข้าถึงไลบรารีที่มีอยู่หรือไม่ มากกว่า? ถูกทุกข้อ?

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

6
ใน MVC อะไรคือความแตกต่างระหว่างคอนโทรลเลอร์และเราเตอร์
พวกเขาหมายถึงสิ่งเดียวกัน (แนบ URL กับการกระทำหรือการกระทำกับ URL) หรือมีความแตกต่างที่ฉันขาดหายไปหรือไม่? ตัวอย่าง: http://github.com/dannyvankooten/PHP-Router vs. http://konstrukt.dk
19 mvc  routing 

4
ฉันจะแยกคำออกจากประโยคและกำหนดว่าแต่ละส่วนของคำพูดคืออะไร? [ปิด]
เป็นการยากที่จะบอกสิ่งที่ถูกถามที่นี่ คำถามนี้คลุมเครือคลุมเครือไม่สมบูรณ์กว้างเกินไปหรือโวหารและไม่สามารถตอบได้อย่างสมเหตุสมผลในรูปแบบปัจจุบัน สำหรับความช่วยเหลือในการทำความเข้าใจคำถามนี้เพื่อที่จะสามารถเปิด, ไปที่ศูนย์ช่วยเหลือ ปิดให้บริการใน6 ปีที่ผ่านมา ฉันต้องการเขียนสิ่งที่ต้องใช้ประโยคและระบุแต่ละคำที่มันมีและกำหนดว่าส่วนใดของคำพูดแต่ละคำคืออะไร ตัวอย่างเช่น สวัสดีชาวโลกฉันเป็นประโยคหนึ่ง จะกลับมานี้ verb noun, pronoun verb adjective noun ในอุดมคติแล้วฉันต้องการที่จะก้าวไปอีกขั้นหนึ่งและรับประโยคและโดยทางโปรแกรมแล้วเข้าใจว่าสิ่งที่พยายามตีความและอาจทำบางสิ่งเกี่ยวกับมัน ดังนั้นคำถามของฉันคือมีคนได้ยินบางสิ่งเช่นนี้หรือไม่?

4
การนำโปรเจ็กต์โอเพนซอร์สไปยังซอร์สที่ปิด
เป็นไปได้อย่างถูกกฎหมายที่จะเริ่มโครงการเมื่อเปิดเป็นโอเพนซอร์ซกลับสู่แหล่งข้อมูลปิดได้อย่างไร? โดยเฉพาะอย่างยิ่งใบอนุญาต GPL รุ่นใดก็ได้

1
ฉันได้ทดสอบหน่วยการเรียนของฉันแล้วฉันจะเริ่มต้นด้วยการทดสอบการรวมได้อย่างไร
ฉันได้เขียนคลาสที่จัดการผู้รับในรายการ MailChimp เรียกว่า MailChimpRecipient มันใช้คลาส MCAPI ซึ่งเป็น wrapper API ของบุคคลที่สาม http://apidocs.mailchimp.com/api/1.3/ http://apidocs.mailchimp.com/api/downloads/ ฉันส่งวัตถุ MCAPI ไปยังตัวสร้างของวัตถุ MailChimpRecipient ดังนั้นฉันจึงได้เขียนการทดสอบหน่วยโดยใช้ PHPUnit ที่ทดสอบตรรกะทั้งหมดในชั้นเรียนของฉันเอง (ฉันไม่ได้ทดสอบคลาส MCAPI) ฉันมีรหัสครอบคลุม 100% และการทดสอบทั้งหมดผ่าน สิ่งนี้ทำได้โดยการล้อเลียนและขัดถูวัตถุ MCAPI ขั้นตอนต่อไปของฉันคือการเขียนการทดสอบการรวมด้วยการใช้ PHPUnit ที่ฉันจะสร้างการติดตั้ง MailChimpRecipient โดยใช้วัตถุ MCAPI จริงตั้งค่าให้ใช้รายการ MailChimp จริง ฉันได้เขียนสิ่งที่ฉันคิดว่าเป็นการทดสอบแบบรวมซึ่งโดยทั่วไปแล้วการทดสอบจะทำให้การติดต่อกับวัตถุนั้นเป็นไปอย่างราบรื่น public function testAddedRecipientCanBeFound() { $emailAddress = 'fred@fredsdomain.com'; $forename = 'Fred'; $surname = 'Smith'; // …
19 php  unit-testing 

6
เป็นความคิดที่ดีหรือไม่ที่จะทำ UI 100% ใน Javascript และให้ข้อมูลผ่าน API
งานวันหลักของฉันคือการสร้างแอปพลิเคชัน HTML เมื่อฉันหมายถึงแอปพลิเคชันประเภท CRUD ที่ใช้ภายในซึ่งมี Gridviews ที่สามารถแก้ไขได้จำนวนมากกล่องข้อความดร็อปดาวน์และอื่น ๆ เรากำลังใช้เว็บฟอร์ม ASP.NET ซึ่งทำให้งานเสร็จ แต่ประสิทธิภาพส่วนใหญ่ค่อนข้างแย่และบ่อยครั้งที่คุณ ต้องกระโดดผ่านห่วงเพื่อให้ได้สิ่งที่คุณต้องการ ห่วงที่ห้อยลงมาจากเพดานและติดไฟ ดังนั้นฉันสงสัยว่ามันอาจจะเป็นความคิดที่ดีที่จะย้าย UI ทั้งหมดไปยังด้าน JavaScript พัฒนาชุดการควบคุมที่สามารถนำกลับมาใช้ใหม่ได้ซึ่งปรับให้เหมาะกับความต้องการของเราโดยเฉพาะและแลกเปลี่ยนข้อมูลกับเซิร์ฟเวอร์เท่านั้น ใช่ฉันชอบกระบวนทัศน์ "ควบคุม" (aka "วิดเจ็ต") ซึ่งค่อนข้างเหมาะกับแอปพลิเคชันดังกล่าว ดังนั้นในฝั่งเซิร์ฟเวอร์เรายังคงมีรูปแบบพื้นฐานไปยังมาร์กอัป ASPX ปัจจุบันของเรา แต่จากนั้นจะถูกส่งไปยังลูกค้าเพียงครั้งเดียวและส่วน Javascript จะดูแลการปรับปรุง UI ต่อไปทั้งหมด ปัญหาคือฉันไม่เคยทำแบบนี้มาก่อนและฉันไม่เคยเห็นใครทำแบบนี้มาก่อนเลยไม่รู้ว่าปัญหาจะเป็นอย่างไร โดยเฉพาะอย่างยิ่งฉันกังวลเกี่ยวกับ: ประสิทธิภาพยังคง การเปรียบเทียบแสดงให้เห็นว่าในปัจจุบันความล่าช้าหลักอยู่ที่ฝั่งไคลเอ็นต์เมื่อเบราว์เซอร์พยายามที่จะแสดงผลหน้าส่วนใหญ่อีกครั้งหลังจากการอัพเดต AJAX มาร์กอัป ASP.NET webforms ที่สร้างขึ้นให้ความหมายใหม่กับคำว่า "เว็บ" และตัวควบคุม Devexpress ที่หลากหลายเพิ่มเลเยอร์ Javascript ที่ซับซ้อนของตัวเอง แต่จะเร็วกว่าที่จะคำนวณการเปลี่ยนแปลงที่จำเป็นทั้งหมดในด้าน Javascript แล้วอัปเดตเฉพาะสิ่งที่จำเป็นต้องได้รับการปรับปรุง …

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