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

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

4
“ การปีนป่าย” คืออะไร?
ฉันเคยได้ยินการปีนป่ายที่กล่าวถึงในบริบทของ Agile หรือ Extreme Programming ดูเหมือนจะเป็นส่วนเสริมในการจับคู่ มันคืออะไรกันแน่? ควรใช้เมื่อใด คุณทำได้ดีแค่ไหน?

6
ฉันจะทำให้คิวรี SQL ที่ซับซ้อนเขียนง่ายขึ้นได้อย่างไร [ปิด]
ฉันพบว่ามันยากมากที่จะเขียนแบบสอบถาม SQL ที่ซับซ้อนที่เกี่ยวข้องกับการรวมในหลาย ๆ ตาราง (อย่างน้อย 3-4) และเกี่ยวข้องกับเงื่อนไขซ้อนหลาย ข้อความค้นหาที่ฉันถูกขอให้เขียนนั้นอธิบายได้ง่ายด้วยประโยคสองสามประโยค แต่อาจต้องใช้รหัสที่หลอกลวง ฉันค้นหาตัวเองบ่อยครั้งโดยใช้มุมมองชั่วคราวเพื่อเขียนข้อความค้นหาเหล่านี้ซึ่งดูเหมือนว่าเป็นเรื่องเล็ก ๆ น้อย ๆ คุณสามารถให้เคล็ดลับใดที่ฉันสามารถใช้เพื่อทำให้การสืบค้นที่ซับซ้อนเหล่านี้ง่ายขึ้น โดยเฉพาะอย่างยิ่งฉันจะแยกแบบสอบถามเหล่านี้ออกเป็นขั้นตอนที่ฉันต้องใช้เพื่อเขียนรหัส SQL ได้อย่างไร โปรดทราบว่าฉันเป็น SQL ฉันกำลังถูกขอให้เขียนเป็นส่วนหนึ่งของการบ้านสำหรับหลักสูตรฐานข้อมูลดังนั้นฉันไม่ต้องการซอฟต์แวร์ที่จะทำงานให้ฉัน ฉันต้องการเข้าใจรหัสที่ฉันเขียน รายละเอียดทางเทคนิคเพิ่มเติม: ฐานข้อมูลโฮสต์บนเซิร์ฟเวอร์ PostgreSQL ที่รันบนเครื่องโลคัล ฐานข้อมูลมีขนาดเล็กมาก: มีไม่เกินเจ็ดตารางและตารางที่ใหญ่ที่สุดมีน้อยกว่าประมาณ 50 แถว เคียวรี SQL กำลังถูกส่งผ่านไปยังเซิร์ฟเวอร์โดยผ่าน LibreOffice Base
42 sql  tips  query 

3
มีอะไรเลวร้ายเกี่ยวกับ DOM
ฉันคอยฟังคน (โดยเฉพาะ Crockford) พูดว่า DOM เป็น API ที่แย่มาก แต่ไม่ได้พิสูจน์ความเป็นจริงของคำสั่งนี้ นอกเหนือจากความไม่สอดคล้องกันของเบราว์เซอร์แล้วอะไรคือสาเหตุที่ทำให้ DOM ถูกพิจารณาว่าไม่ดี?

14
ฉันต้องทำอะไรเพื่อไม่ขโมยรหัส“ Hello World” ด้วยใบอนุญาต GPL
ในโครงการฉันพบไฟล์ที่math.cมีส่วนหัว GPL ขนาดใหญ่และ ... //------------------------------------------------------------------------------ /// Returns the minimum value between two integers. /// \param a First integer to compare. /// \param b Second integer to compare. //------------------------------------------------------------------------------ unsigned int min(unsigned int a, unsigned int b) { if (a < b) { return a; } else { return b; } …
42 licensing  c  gpl 

8
ชนิดข้อมูลดั้งเดิมมีความหมายอย่างไร
ความเข้าใจของฉันเกี่ยวกับประเภทข้อมูลดั้งเดิมคือ มันเป็นประเภทข้อมูลที่จัดทำโดยภาษาโดยนัย (อื่น ๆ เป็นชั้นเรียนที่ผู้ใช้กำหนด) ภาษาที่ต่างกันจึงมีชุดข้อมูลที่แตกต่างกันซึ่งถือว่าเป็นภาษาดั้งเดิมสำหรับภาษานั้น นั่นถูกต้องใช่ไหม? และอะไรคือความแตกต่างระหว่าง "ประเภทข้อมูลพื้นฐาน" และ "ประเภทข้อมูลในตัว" Wikipedia กล่าวว่าประเภทข้อมูลดั้งเดิมเป็นหนึ่งในสองชนิดนี้ PS - ทำไมประเภท "string" จึงถูกพิจารณาว่าเป็นประเภทพื้นฐานใน SNOBOL4 และไม่ใช่ใน Java?
42 data-types 

7
การอ้างอิงจาวาสคริปต์ภายนอกกับการโฮสต์สำเนาของฉันเอง
บอกว่าฉันมีเว็บแอปที่ใช้ jQuery เป็นการดีกว่าถ้าจะโฮสต์ไฟล์ javascript ที่จำเป็นในเซิร์ฟเวอร์ของฉันพร้อมกับไฟล์เว็บไซต์ของฉันหรืออ้างอิงกับ CDN ของ jQuery (ตัวอย่าง: http://code.jquery.com/jquery-1.7.1.min.js ) ? ฉันเห็นข้อดีทั้งสองด้าน: ถ้าอยู่บนเซิร์ฟเวอร์ของฉันนั่นคือการพึ่งพาจากภายนอกน้อยกว่า ถ้า jQuery ลงหรือเปลี่ยนโครงสร้างการโฮสต์หรืออะไรทำนองนั้นแอพของฉันก็จะแตก แต่ฉันรู้สึกว่ามันจะไม่เกิดขึ้นบ่อยครั้ง ต้องมีไซต์เล็ก ๆ จำนวนมากในการดำเนินการนี้และทีม jQuery จะต้องการหลีกเลี่ยงการทำลายไซต์เหล่านั้น ถ้าอยู่บนเซิร์ฟเวอร์ของฉันนั่นเป็นข้อมูลอ้างอิงภายนอกที่น้อยกว่าที่ใครบางคนสามารถเรียกได้ว่าเป็นปัญหาด้านความปลอดภัย หากมีการอ้างอิงจากภายนอกฉันไม่ต้องกังวลเกี่ยวกับแบนด์วิดท์เพื่อให้บริการไฟล์ (แม้ว่าฉันรู้ว่ามันไม่มาก หากมีการอ้างอิงจากภายนอกและฉันกำลังปรับใช้เว็บไซต์นี้ไปยังเซิร์ฟเวอร์จำนวนมากที่ต้องมีสำเนาของไฟล์ทั้งหมดของตัวเองแล้วมันเป็นไฟล์ที่น้อยกว่าที่ฉันต้องจำไว้เพื่อคัดลอก / อัปเดต

13
มีทางเลือกให้บิต?
มีทางเลือกให้บิตเป็นหน่วยข้อมูลที่เล็กที่สุดหรือไม่? มีบางสิ่งที่ไม่เพียง 0 หรือ 1 แต่จริงๆแล้วมีสถานะเป็นไปได้หลายอย่างในระหว่างนั้น การเก็บโฟลตแบบนั้นจะเป็นเรื่องปกติหรือไม่?

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

7
ทำไม Zend Framework จึงซับซ้อน?
ฉันเป็นนักพัฒนาเว็บและมีประสบการณ์ในการพัฒนาเว็บแอปพลิเคชั่นหลายตัวใน PHP ฉันมีความคิดในการพัฒนาผลิตภัณฑ์สำหรับตัวเองและตัดสินใจที่จะใช้เฟรมเวิร์กที่ใช้ MVC เพราะฉันชอบแนวคิดของ MVC มากและวิธีที่หนึ่งสามารถจัดการและแก้ไขแอปพลิเคชันได้อย่างง่ายดาย ฉันเลือก Zend Framework และดูเหมือนยากกว่าการเรียนรู้ภาษาโปรแกรมใหม่ มีหลายสิ่งหลายอย่างเกิดขึ้นพร้อมกันแม้กระทั่งเพื่อเรียกใช้แอปพลิเคชันขนาดเล็ก แนวคิดการกำหนดเส้นทางในทำนองเดียวกันนั้นซับซ้อนมากเนื่องจากเป็นเรื่องใหม่สำหรับโปรแกรมเมอร์หลัก ฉันรู้ว่าพวกที่นี่อ่านคำถามหลายพันคำถามแบบเดียวกับที่ฉันถาม แต่ฉันไม่ต้องการเรียนรู้ Zend Framework ข้ามคืน ฉันยินดีที่จะให้เวลามากที่สุดเท่าที่มันต้องการ แต่จนถึงขณะนี้มันไม่มีเหตุผลสำหรับฉัน มีหลายพันชั้นเรียนในห้องสมุด Zend แต่ noob จะทราบได้อย่างไรว่าจะใช้ class specfic ได้อย่างไรและใช้อย่างไร ฉันยังคงพบว่ามันยากมากที่จะเข้าใจ bootstrap ของ Zend Framework และการแมป ฉันอ่านคู่มือปฏิบัติตามและสิ่งต่าง ๆ เริ่มต้นทำงาน แต่ฉันก็ไม่ทราบว่ามันเกิดขึ้นจริง ๆ ฉันยังไม่มีเงื่อนงำว่าแบบจำลองมุมมองและตัวควบคุมทำงานร่วมกันอย่างไรและวิธีการวางแผนแอปพลิเคชันใน Zend Framework เมื่อพูดถึง core php ฉันมีความคิดในใจว่าจะต้องทำอะไรและแปลมันง่ายกว่าในรหัส แต่ใน Zend Framework ฉันไม่รู้วิธีแปลความคิดของฉัน

2
คำว่า "ต้นไม้สีแดง / ดำ" มาจากไหน
แดง / ดำต้นไม้เป็นวิธีหนึ่งที่จะใช้ค้นหาต้นไม้ไบนารีสมดุล หลักการที่อยู่เบื้องหลังว่ามันทำงานได้เหมาะสมกับฉัน แต่สีที่เลือกไม่ได้ ทำไมสีแดงและดำตรงข้ามกับสีอื่น ๆ หรือคุณลักษณะโดยทั่วไป? เมื่อฉันได้ยิน "แดงและดำ" สิ่งแรกที่นึกถึงก็คือกระดานตรวจสอบและLes Misérablesซึ่งทั้งสองอย่างนี้ดูเหมือนจะไม่สามารถใช้ได้ในบริบทนี้

14
นี่เป็นสถานการณ์ที่ถูกต้องที่จะใช้ค่าคงที่หรือไม่?
ดังนั้นอาจารย์ของฉันก็ให้ความเห็นย้อนกลับในโครงการที่ฉันทำอยู่ เขาเชื่อมต่อสองสามคะแนนสำหรับรหัสนี้: if (comboVendor.SelectedIndex == 0) { createVendor cv = new createVendor(); cv.ShowDialog(); loadVendors(); } สิ่งนี้อยู่ในตัวจัดการ "เปลี่ยนดัชนี" ของ combobox มันถูกใช้เมื่อผู้ใช้ต้องการสร้างผู้ขายรายใหม่ตัวเลือกอันดับแรกของฉัน (ดัชนี 0 ที่ไม่เคยเปลี่ยนแปลง) เปิดกล่องโต้ตอบ "สร้างผู้ขายใหม่" ดังนั้นเนื้อหาของกล่องคำสั่งผสมของฉันจึงดูเป็นแบบนี้: Create New Vendor... Existing Vendor Existing Vendor 2 Existing Vendor 3 ปัญหาของเขากับรหัสบรรทัดแรก: if (comboVendor.SelectedIndex == 0) เขาอ้างว่า 0 ควรเป็นค่าคงที่และทำเครื่องหมายให้ฉันจริงเพราะสิ่งนั้น เขาอ้างว่าฉันไม่ควรใช้ตัวอักษรในรหัสของฉันเลย ฉันไม่เข้าใจว่าทำไมฉันถึงต้องการทำให้รหัสนั้นในสถานการณ์นั้นคงที่ ดัชนีนั้นจะไม่มีวันเปลี่ยนแปลงหรือเป็นสิ่งที่คุณจะต้องปรับแต่ง ดูเหมือนว่าหน่วยความจำไม่เพียงพอที่จะเก็บ 0 …
42 c# 

4
'ความซับซ้อนตามวัฏจักรของโค้ดของฉันหมายถึงอะไร
ฉันใหม่สำหรับการวิเคราะห์โค้ดแบบสแตติก แอปพลิเคชันของฉันมีความซับซ้อนตามวัฏจักร 17,754 แอปพลิเคชันนั้นมีรหัสเพียง 37,672 บรรทัด มันถูกต้องหรือไม่ที่จะบอกว่าความซับซ้อนนั้นสูงตามบรรทัดของโค้ด? อะไรคือความซับซ้อนของวงจรที่บอกกับฉัน?

8
ฟังก์ชั่นการเขียนโปรแกรมเป็นไปได้ใน Java? [ปิด]
ฉันถูกเรียกดูผ่าน Amazon.com ร้านหนังสือและฉันมาข้ามหนังสือ"หน้าที่ Programming สำหรับ Java Developers" ฉันรู้ว่าการเขียนโปรแกรมฟังก์ชั่นพื้นฐานบางอย่างและได้รับการเขียนโปรแกรมใน Java เป็นเวลา 3 ปี ฉันต้องการที่จะรู้ว่าฟังก์ชั่นการเขียนโปรแกรมเป็นไปได้แม้ใน Java?

10
กำหนดรหัสที่แข็งแกร่งคืออะไร
อาจารย์ของฉันอ้างอิงถึงตัวอย่าง Java นี้เมื่อเขาพูดถึงรหัส "แข็งแกร่ง": if (var == true) { ... } else if (var == false) { ... } else { ... } เขาอ้างว่า "รหัสที่มีประสิทธิภาพ" หมายถึงโปรแกรมของคุณคำนึงถึงความเป็นไปได้ทั้งหมดและไม่มีสิ่งใดเป็นข้อผิดพลาด - ทุกสถานการณ์ได้รับการจัดการโดยรหัสและส่งผลให้อยู่ในสถานะที่ถูกต้องดังนั้นจึงเป็น "อื่น" อย่างไรก็ตามฉันสงสัยว่า หากตัวแปรเป็นบูลีนจุดตรวจสอบสถานะที่สามคืออะไรเมื่อสถานะที่สามเป็นไปไม่ได้ทางตรรกะ? "ไม่มีสิ่งเช่นข้อผิดพลาด" ดูเหมือนไร้สาระเช่นกัน; แม้แอปพลิเคชันของ Google จะแสดงข้อผิดพลาดโดยตรงกับผู้ใช้แทนที่จะกลืนให้เงียบหรืออย่างใดถือว่าพวกเขาเป็นสถานะที่ถูกต้อง และมันก็เป็นเรื่องดี - ฉันชอบที่จะรู้ว่าเมื่อมีอะไรผิดปกติ และดูเหมือนว่าการอ้างสิทธิ์ว่าแอปพลิเคชันจะไม่มีข้อผิดพลาดเลย ดังนั้นนิยามที่แท้จริงของ "รหัสที่มีประสิทธิภาพ" คืออะไร?

8
ทำไมการแบ่งส่วน (ไม่)
ฉันกำลังศึกษาระบบปฏิบัติการและสถาปัตยกรรม x86 และในขณะที่ฉันอ่านเกี่ยวกับการแบ่งส่วนและการแบ่งหน้าฉันก็อยากรู้อยากเห็นว่าระบบปฏิบัติการที่ทันสมัยจัดการการจัดการหน่วยความจำได้อย่างไร จากสิ่งที่ฉันพบ Linux และระบบปฏิบัติการอื่น ๆ ส่วนใหญ่หลีกเลี่ยงการแบ่งส่วนเพื่อสนับสนุนการแบ่งหน้า เหตุผลสองสามข้อที่ฉันพบคือความเรียบง่ายและพกพาสะดวก มีการใช้งานอะไรในทางปฏิบัติสำหรับการแบ่งส่วน (x86 หรืออย่างอื่น) และเราจะเคยเห็นระบบปฏิบัติการที่แข็งแกร่งใช้หรือจะใช้ระบบเพจแบบเพจต่อไป ตอนนี้ฉันรู้ว่านี่เป็นคำถามที่โหลด แต่ฉันอยากรู้ว่าการแบ่งส่วนจะจัดการกับระบบปฏิบัติการที่พัฒนาขึ้นใหม่ได้อย่างไร มันสมเหตุสมผลหรือไม่ที่จะชอบเพจที่ไม่มีใครจะพิจารณาแนวทาง 'แบบแบ่งส่วน' มากขึ้น? ถ้าเป็นเช่นนั้นทำไม และเมื่อฉันบอกว่าการแบ่งส่วน 'ชุน' ฉันหมายความว่าลีนุกซ์ใช้เท่าที่มันจะทำได้ เพียง 4 ส่วนสำหรับผู้ใช้และรหัสเคอร์เนล / ส่วนข้อมูล ในขณะที่อ่านเอกสารของ Intel ฉันเพิ่งรู้สึกว่าการแบ่งส่วนได้รับการออกแบบด้วยโซลูชั่นที่แข็งแกร่งกว่าในใจ จากนั้นอีกครั้งฉันถูกบอกในหลาย ๆ ครั้งว่าความซับซ้อนของ x86 สามารถทำได้ ฉันพบเรื่องราวเล็ก ๆ น้อย ๆ ที่น่าสนใจหลังจากเชื่อมโยงกับ 'ประกาศ' ดั้งเดิมของ Linux Torvald สำหรับ Linux เขาพูดเรื่องนี้ไม่กี่โพสต์ในภายหลัง: พูดง่ายๆว่าการย้ายพอร์ตนั้นเป็นไปไม่ได้ ส่วนใหญ่จะอยู่ใน C …

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