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

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

6
โครงการ URI คืออะไร
ฉันค้นหาคำถามนี้แล้ว แต่ไม่พบคำตอบที่ดี แม้แต่บทความ Wikipedia เกี่ยวกับURIsก็ไม่ได้อธิบายอย่างละเอียด ฉันคิดว่ามันเป็นโปรโตคอลสำหรับการเข้าถึงหน้าเว็บ เช่น HTTP / HTTPS / FTP แต่บทความ wiki พูดเป็นอย่างอื่น รูปแบบ URI บางอย่างไม่เกี่ยวข้องกับโปรโตคอลเฉพาะใด ๆ (เช่น "ไฟล์") และอื่น ๆ อีกมากมายไม่ใช้ชื่อของโปรโตคอลเป็นคำนำหน้า (เช่น "news") ฉันรู้ว่าสิ่งที่เป็นส่วนหนึ่งของ URL เป็นโครงการ แต่คำถามที่แท้จริงของฉันคือมันทำอะไร?
18 protocol  internet  uri 


1
ทำไมห้องสมุดของ Microsoft ขึ้นอยู่กับ Newtonsoft.Json
สิ่งนี้อาจเริ่มย้อนกลับไปเมื่อ Microsoft สร้างไลบรารี ASP.NET Web API อย่างน้อยนั่นก็คือเมื่อฉันจำได้ถ้าฉันไม่ผิด อย่างไรก็ตามตั้งแต่นั้นเป็นต้นมาแพ็กเกจ HTTP ของมันเริ่มต้นขึ้นอยู่กับไลบรารี Newtonsoft.Json สำหรับการทำให้เป็นอนุกรมของข้อมูล (de) เป็นไปตามและมาจาก JSON ทำไม บริษัท ขนาดใหญ่เท่ากับ Microsoft จะเพิ่มการพึ่งพาในไลบรารีโอเพ่นซอร์ส ฉันคิดว่ามันแปลกแม้ว่าพวกเขาจะไปเปิดแหล่งที่มาอย่างเต็มที่กับ. NET แล้วเพราะมันเป็นห้องสมุดที่ไม่ใช่ Microsoft เท่านั้นที่ใช้เป็นที่พึ่งพึ่งพาเท่าที่ฉันรู้ เป็นคำถามโบนัส James Newton-King ได้รับการสนับสนุนทางการเงินจาก Microsoft หรือไม่
18 .net  asp.net  json  web-api 

4
เหตุใดคลาสข้อมูลจึงถูกพิจารณาว่าเป็นกลิ่นรหัส
นี้บทความอ้างว่าชั้นข้อมูลเป็น "กลิ่นรหัส" เหตุผล: มันเป็นเรื่องปกติเมื่อคลาสที่สร้างขึ้นใหม่มีฟิลด์สาธารณะเพียงไม่กี่ฟิลด์เท่านั้น แต่พลังที่แท้จริงของวัตถุคือพวกเขาสามารถมีประเภทพฤติกรรมหรือการดำเนินการกับข้อมูลของพวกเขา เหตุใดวัตถุจึงมีข้อมูลเพียงอย่างเดียว หากความรับผิดชอบหลักของชั้นเรียนคือการแสดงข้อมูลจะไม่เพิ่มวิธีการที่ใช้กับข้อมูลทำลายหลักการความรับผิดชอบเดี่ยวหรือไม่?

2
แชร์คีย์ SSH ส่วนตัวด้วย Bash บน Windows
ฉันติดตั้ง Windows 10 พร้อม Git แล้ว Git นี้ใช้C:/Users/MyNamedir ของฉันเป็นไดเรกทอรี HOME และ/.ssh/dir ภายในเหมาะสมสำหรับการจัดหาคีย์ SSH ส่วนตัวของฉัน ฉันเพิ่งเปิดใช้งานและตั้งค่า "Bash บน Ubuntu บน Windows" (เป็นคำที่ถูกต้อง!) และติดตั้ง Git ในนั้นด้วย ฉันต้องการให้ทั้ง Gits ใช้ชุดคีย์เดียวกันซึ่งไม่สำคัญว่าจะใช้สภาพแวดล้อมแบบใดในเครื่องนี้การกระทำของฉันจะมาจากฉันเสมอ เป็นปัญหาว่าผบหน้าแรกในทุบตีที่แตกต่างกัน ( /home/MyName) ../../mnt/c/Users/MyName/.sshและดังนั้นจึงไม่เห็นกุญแจที่ตั้งอยู่ในที่ห่างไกลในขณะนี้ ฉันคิดว่าฉันจะเป็นผู้ชนะด้วยการเปลี่ยนตัวแปรสภาพแวดล้อม HOME โดยใช้ export HOME=/c/mnt/Users/MyName สิ่งนี้ได้เปลี่ยน HOME dir สำเร็จ แต่ bash git ยังไม่เห็นคีย์ที่อยู่ใน./.sshdir ฉันไม่แน่ใจว่านี่คือ A) หรือไม่เพราะ bash git ต้องการคีย์ในรูปแบบไฟล์อื่น? …

5
ควรใช้การสืบทอดเมื่อใดจึงจะใช้ 'เพียงฟิลด์บูลีน'
ในแอปพลิเคชัน Rails ของเราเรากำลังเพิ่มการแจ้งเตือน บางส่วนของสิ่งเหล่านี้คือblockingพวกเขาหยุดความคืบหน้าของทรัพยากรใด ๆ ที่พวกเขากำลังเพิ่มเพราะข้อมูลบางอย่างเกี่ยวกับทรัพยากรที่หายไป การแจ้งเตือนอื่น ๆ เป็นการแจ้งเตือนที่ง่ายและให้ข้อมูลเท่านั้น วันนี้ฉันได้พูดคุยกับโปรแกรมเมอร์คนอื่นในทีมของเรา ฉันได้สร้างโครงสร้างการสืบทอดเช่นนี้: อย่างไรก็ตามเขาต้องการให้ฉันเพิ่มblockingวิธีการส่งคืนบูลีนในแต่ละการแจ้งเตือนและระบุรายการของคลาสย่อยที่ปิดกั้นภายในคลาสพาเรนต์การแจ้งเตือน ความแตกต่างระหว่างวิธีการเหล่านี้ไม่มากนัก ในแนวทางของฉันไม่ต้องระบุรายการนี้ทำให้ root class cleaner ในทางตรงกันข้ามตรรกะพิเศษที่เกิดขึ้นในNotification::Blockingตอนนี้ก็ไม่ได้มีขนาดใหญ่มากเช่นกัน นามธรรมชนิดใดที่เหมาะกับปัญหานี้มากขึ้น?

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

2
คอมไพเลอร์ Java AOT ทำงานอย่างไร
มีเครื่องมือไม่กี่อย่างที่นั่น ( Excelsior JET , ฯลฯ ) ที่อ้างว่าแปลงแอป Java ให้เป็นไฟล์ปฏิบัติการดั้งเดิม ( *.exe) อย่างไรก็ตามมันเป็นความเข้าใจของฉันว่าเครื่องมือเหล่านี้เป็นเพียงการสร้าง wrappers พื้นเมืองที่เรียกใช้ / ดำเนินการjavaจากเปลือกหรือบรรทัดคำสั่ง หากความเข้าใจนั้นไม่ถูกต้องฉันไม่เห็นว่ามันจะเป็นไปได้ หาก JVM ที่ทำงานอยู่ ( javaกระบวนการ) เป็นล่ามประสิทธิภาพสูงโดยการโหลด bytecode จาก Java classfiles ในทันทีฉันไม่เห็นว่าแอป Java (คอลเลกชันของไฟล์ bytecode ที่ทำหน้าที่เป็นอินพุตของ JVM) จะเป็นอย่างไร แปลงเป็นปฏิบัติการจริง ๆ นี้เป็นเพราะกระบวนการ JVM เป็นแล้วปฏิบัติการพื้นเมืองที่ใช้ชุดของไฟล์ bytecode เป็น input หากต้องการรวมไฟล์ bytecode เหล่านั้นและกระบวนการ JVM เข้าด้วยกันเป็นโปรแกรมปฏิบัติการแบบเนทีฟแบบรวมไม่สามารถทำได้โดยไม่ต้องเขียน JVM และยกเลิกการแยกจากข้อมูลจำเพาะ …
18 java  compiler  aot 

1
ทำไมการส่งไฟล์จึงใช้งานเชิงมุมได้ยาก [ปิด]
ปิด คำถามนี้ต้องการรายละเอียดหรือความคมชัด ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่เพิ่มรายละเอียดและชี้แจงปัญหาโดยแก้ไขโพสต์นี้ ปิดให้บริการใน4 ปีที่แล้ว ฉันต้องส่งไฟล์ (ไฟล์ที่มีขนาดใหญ่มาก) ไปยังเซิร์ฟเวอร์ ฉันกำลังศึกษาตัวเลือกสิ่งที่ฉันมีและวิธีการทำ ฉันกำลังใช้เชิงมุม + เอ็กซ์เพรส + โหนด ถ้าฉันใช้รูปแบบที่เรียบง่ายฉันสามารถจับไฟล์บนเซิร์ฟเวอร์โดยใช้ multer โดยไม่มีปัญหา ง่ายมาก html เป็นเพียงรูปแบบที่ฉันระบุเป้าหมาย ฯลฯ และทุกอย่างทำงานได้ รหัส nodejs นั้นง่ายมากและตรงไปตรงมา ทันทีที่ฉันพยายามใช้เชิงมุมทุกอย่างจะซับซ้อนอย่างไม่น่าเชื่อ หมายความว่าฉันต้องใช้คำสั่งและยังมีปัญหากับเซิร์ฟเวอร์ อย่างที่ฉันบอกว่าฉันใช้ multer ซึ่งต้องการข้อมูลเป็น "multipart / form-data" และฉันได้รับจากเซิร์ฟเวอร์ "ข้อผิดพลาด: Multipart: ไม่พบขอบเขต" มีโมดูลมากมายให้โหลดไฟล์เป็นมุม ซึ่งแสดงว่าเป็นปัญหาที่เกิดซ้ำกับโซลูชันมากกว่าหนึ่งรายการ ตอนนี้ฉันไม่ต้องการที่จะโพสต์รหัสเพราะการที่ผมถามที่กองมากเกิน คำถามของฉันลึกซึ้งยิ่งขึ้น: ทำไมสิ่งที่สามารถทำได้ด้วยรูปแบบที่เรียบง่ายซับซ้อนในเชิงมุม? ฉันไม่ได้ตั้งใจในเรื่องที่ไม่ดี ฉันหมายถึงมันใน 'ฉันต้องการที่จะเข้าใจ' วิธี

1
เออร์แลงเป็นภาษาต้นแบบของนักแสดงหรือ
ฉันกำลังอ่านบทความนี้: http://www.doc.ic.ac.uk/~nd/surprise_97/journal/vol2/pjm2/ และมันก็กล่าวว่า: ... ในโมเดลนักแสดงแม้จำนวนเต็มจะแสดงเป็นนักแสดง ... Wikipedia ยืนยัน: โมเดลนักแสดงนำปรัชญาที่ทุกอย่างเป็นนักแสดง Erlang มีชนิดข้อมูลจำนวนมากและประเภทเหล่านั้นไม่ใช่นักแสดงเท่าที่ฉันสามารถบอกได้ ไม่ได้หมายความว่า Erlang ไม่ใช่ภาษานางแบบนักแสดงในแบบที่บางคนพูดว่า Java ไม่ได้เป็นภาษาที่ใช้งานได้เพราะมันขาดคุณสมบัติการเขียนโปรแกรมที่ใช้งานได้บางอย่าง? PS: โดยการขยายนั่นหมายความว่า Akka ไม่ใช่แบบอย่างของนักแสดงเพราะนอกเหนือจากประเภทข้อมูลที่ไม่ใช่นักแสดงที่มาจากภาษาแม่ยังช่วยให้ผู้สืบทอดสืบทอดพฤติกรรมของพวกเขาผ่านทางภาษาแม่

2
คุณแยกมุมมองออกจากตรรกะในแอปพลิเคชัน Winform อย่างไร
ฉันรู้ว่ามีรูปแบบเช่น MVC เพื่อแยกมุมมองจากตรรกะ แต่ฉันไม่ทราบว่าเป็นเรื่องธรรมดาเพียงใดในแอปพลิเคชัน Winform สำหรับแอปพลิเคชัน C # Winform ฉันอาจเริ่มต้นด้วยFormและค่อยๆเพิ่มส่วนประกอบ UI ลงไปจากนั้นสำหรับกิจกรรมของส่วนประกอบ ( click, textchanged... ) ฉันเรียกฟังก์ชั่นของฉันหรือเขียนตรรกะของฉันตรงนั้น! ฉันรู้ว่าเป็นนิสัยที่ไม่ดี แต่ฉันไม่ทราบว่าวิธีที่ดีที่สุดในการเริ่มต้นโครงการใน Visual Studio (แม่แบบกรอบงานจุดเริ่มต้น) MVC เป็นทางออกเดียวหรือไม่ ฉันควรทำเพื่อโครงการใด ๆ ! ฉันต้องการรับแนวทางหรือเฟรมเวิร์กขนาดเล็กเพื่อเริ่มต้นใช้งาน
18 c#  mvc  winforms 

2
ฉันควรจัดเก็บการอ้างสิทธิ์ผู้ใช้ของฉันในโทเค็น JWT หรือไม่
ฉันใช้โทเค็น JWT ในส่วนหัว HTTP เพื่อตรวจสอบสิทธิ์คำขอไปยังเซิร์ฟเวอร์ทรัพยากร เซิร์ฟเวอร์ทรัพยากรและเซิร์ฟเวอร์รับรองความถูกต้องมีบทบาทผู้ปฏิบัติงานแยกกันสองบทบาทบน Azure ฉันไม่สามารถตัดสินใจได้ว่าควรจัดเก็บการเคลมในโทเค็นหรือแนบไปกับคำขอ / ตอบกลับด้วยวิธีอื่น รายการการอ้างสิทธิ์ส่งผลกระทบต่อการแสดงผลองค์ประกอบ UI ฝั่งไคลเอ็นต์รวมถึงการเข้าถึงข้อมูลบนเซิร์ฟเวอร์ ด้วยเหตุนี้ฉันต้องการตรวจสอบให้แน่ใจว่าการเรียกร้องที่ได้รับจากเซิร์ฟเวอร์นั้นเป็นของแท้และผ่านการตรวจสอบก่อนที่จะดำเนินการตามคำขอ ตัวอย่างของการอ้างสิทธิ์คือ: CanEditProductList, CanEditShopDescription, CanReadUserDetails เหตุผลที่ฉันต้องการใช้โทเค็น JWT สำหรับพวกเขาคือ: การป้องกันที่ดีขึ้นต่อการแก้ไขการเคลมสินค้าด้านลูกค้า ไม่จำเป็นต้องค้นหาการอ้างสิทธิ์ในทุกคำขอ เหตุผลที่ฉันไม่ต้องการใช้โทเค็น JWT: เซิร์ฟเวอร์รับรองความถูกต้องจะต้องทราบรายการการเรียกร้องเป็นศูนย์กลางของแอพ โทเค็นกลายเป็นจุดเดียวของการแฮ็ค ฉันได้อ่านบางสิ่งที่บอกว่าโทเค็น JWT ไม่ได้มีไว้สำหรับข้อมูลระดับแอป สำหรับฉันแล้วดูเหมือนว่าทั้งคู่มีข้อเสีย แต่ฉันโน้มตัวไปยังการรวมการอ้างสิทธิ์เหล่านี้ลงในโทเค็นและเพียงแค่ต้องการเรียกใช้สิ่งนี้โดยผู้ที่เคยจัดการกับเรื่องนี้มาก่อน หมายเหตุ: ฉันจะใช้ HTTPS สำหรับคำขอ API ทั้งหมดดังนั้นดูเหมือนว่าโทเค็นจะปลอดภัยพอ ฉันใช้ AngularJS, C #, Web API 2 และ MVC5

16
บล็อกอื่นเพิ่มความซับซ้อนของรหัสหรือไม่ [ปิด]
ปิด คำถามนี้เป็นคำถามความคิดเห็นตาม ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้สามารถตอบข้อเท็จจริงและการอ้างอิงได้โดยแก้ไขโพสต์นี้ ปิดให้บริการใน5 ปีที่ผ่านมา นี่คือมากตัวอย่างง่าย นี่ไม่ใช่คำถามเฉพาะภาษาและฉันขอให้คุณเพิกเฉยต่อวิธีการอื่น ๆ ที่สามารถเขียนฟังก์ชันและการเปลี่ยนแปลงที่เกิดขึ้นได้ . สีเป็นประเภทที่ไม่ซ้ำกัน string CanLeaveWithoutUmbrella() { if(sky.Color.Equals(Color.Blue)) { return "Yes you can"; } else { return "No you can't"; } } ผู้คนจำนวนมากที่ฉันได้พบ ReSharper และผู้ชายคนนี้ (ซึ่งความคิดเห็นเตือนฉันฉันกำลังมองหาที่จะถามในขณะนี้) จะแนะนำการ refactoring รหัสเพื่อลบelseบล็อกออกจากนี้: (ฉันจำไม่ได้ว่าคนส่วนใหญ่พูดอะไรฉันอาจไม่ได้ถามอย่างอื่น) string CanLeaveWithoutUmbrella() { if(sky.Color.Equals(Color.Blue)) { return "Yes you can"; } return …

6
TDD และการครอบคลุมการทดสอบที่สมบูรณ์ในกรณีที่จำเป็นต้องมีการทดสอบแบบเลขชี้กำลัง
ฉันกำลังทำงานกับเครื่องมือเปรียบเทียบรายการเพื่อช่วยในการจัดเรียงรายการผลการค้นหาที่ไม่เรียงลำดับตามข้อกำหนดเฉพาะจากลูกค้าของเรา ข้อกำหนดเรียกร้องให้อัลกอริทึมความเกี่ยวข้องจัดอันดับด้วยกฎต่อไปนี้ตามลำดับความสำคัญ: ตรงกับชื่อ คำค้นหาทั้งหมดในชื่อหรือคำพ้องความหมายของผลลัพธ์ คำค้นหาบางคำในชื่อหรือคำพ้องความหมายของผลลัพธ์ (% จากมากไปหาน้อย) คำทั้งหมดของคำค้นหาในคำอธิบาย คำบางส่วนของคำค้นหาในคำอธิบาย (% มากไปหาน้อย) วันที่แก้ไขล่าสุดจากมากไปน้อย ตัวเลือกการออกแบบตามธรรมชาติสำหรับตัวเปรียบเทียบนี้ดูเหมือนจะเป็นอันดับที่จัดอันดับขึ้นอยู่กับพลังของ 2 ผลรวมของกฎที่สำคัญน้อยกว่านั้นไม่สามารถเป็นได้มากกว่าการจับคู่เชิงบวกกับกฎที่มีความสำคัญสูงกว่า นี่คือความสำเร็จโดยคะแนนต่อไปนี้: 32 16 8 (คะแนน tie-breaker รองตาม% จากมากไปน้อย) 4 2 (คะแนน tie-breaker รองตาม% จากมากไปน้อย) 1 ในจิตวิญญาณ TDD ฉันตัดสินใจเริ่มต้นด้วยการทดสอบหน่วยของฉันก่อน ในการมีกรณีทดสอบสำหรับแต่ละสถานการณ์ที่ไม่ซ้ำกันจะต้องมีอย่างน้อย 63 กรณีทดสอบที่ไม่ซ้ำกันโดยไม่พิจารณากรณีทดสอบเพิ่มเติมสำหรับตรรกะตัวแบ่งลำดับที่สองในกฎข้อที่ 3 และ 5 ซึ่งดูเหมือนจะเป็นเรื่องที่น่ากลัว การทดสอบจริงจะน้อยลง ตามกฎจริงเองกฎบางอย่างทำให้มั่นใจได้ว่ากฎที่ต่ำกว่าจะเป็นจริงเสมอ (เช่นเมื่อ 'คำค้นหาทั้งหมดปรากฏในคำอธิบาย' จากนั้นกฎ 'คำค้นหาคำบางคำที่ปรากฏในคำอธิบาย' จะเป็นจริงเสมอ) ยังคงมีระดับความพยายามในการเขียนแต่ละกรณีทดสอบเหล่านี้คุ้มค่าหรือไม่ นี่เป็นระดับของการทดสอบที่มักจะถูกเรียกเมื่อพูดถึงการครอบคลุมการทดสอบ 100% …

1
มีการแทนที่ที่ทันสมัยสำหรับเครื่องมือทดสอบการกลายพันธุ์เช่น Jester for Java หรือไม่?
“ ทำไมแค่คิดว่าการทดสอบของคุณดีเมื่อคุณรู้แน่? บางครั้งเจสเตอร์บอกการทดสอบของฉันว่าเป็นสุญญากาศ แต่บางครั้งการเปลี่ยนแปลงที่พบก็เกิดขึ้นราวกับสายฟ้าออกจากสีน้ำเงิน แนะนำเป็นอย่างยิ่ง” - Kent Beck แต่ฉันเห็นว่าไม่มีแม้แต่แท็กที่ชื่อว่า " Jester " ใน stackoverflow ดังนั้นสิ่งที่ทดแทนที่ทันสมัยสำหรับเจสเตอร์ถ้ามี? เราจะแน่ใจได้อย่างไรว่าการทดสอบหน่วยที่เขียนไว้นั้นมั่นคงกว่าการค้นหาสถิติจากการครอบคลุมโค้ดจากเครื่องมือเช่นCoberturaและClover ?

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