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

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

5
Test Driven Development: วิธีที่ดี / เป็นที่ยอมรับในการทดสอบการทำงานของระบบไฟล์?
ฉันกำลังทำงานในโครงการในขณะนี้ที่สร้างตาราง (เหนือสิ่งอื่นใด) ตามเนื้อหาของระบบไฟล์และในทางกลับกันก็จะทำการแก้ไข meta-data บางอย่างในสิ่งที่พบ คำถามคือจะเขียนการทดสอบรอบนี้หรือตั้งค่าอย่างไร มีวิธีง่าย ๆ ในการเยาะเย้ยเรื่องนี้หรือไม่? หรือฉันควรตั้ง "กล่องแซนด์บ็อกซ์"?

3
กำลังค้นหาลำดับจำนวนเต็ม
ฉันมีปัญหาในการค้นหาที่ซับซ้อนพอสมควรซึ่งฉันได้พยายามลดคำอธิบายต่อไปนี้ ฉัน googling แต่ไม่สามารถค้นหาอัลกอริทึมที่ดูเหมือนจะพอดีกับปัญหาของฉันหมดจด โดยเฉพาะอย่างยิ่งจำเป็นต้องข้ามจำนวนเต็มเอง บางทีใครบางคนที่นี่สามารถชี้ให้ฉันเห็นบางอย่าง? ใช้ลำดับของจำนวนเต็ม A เช่น (1 2 3 4) ใช้ลำดับของจำนวนเต็มและทดสอบว่ามีรายการใดตรงกับ A ดังกล่าวหรือไม่ A มีจำนวนเต็มทั้งหมดในลำดับการทดสอบ การเรียงลำดับของจำนวนเต็มในลำดับการทดสอบจะเหมือนกันใน A เราไม่สนใจจำนวนเต็มใน A ที่ไม่อยู่ในลำดับการทดสอบ เราต้องการลำดับการทดสอบที่ตรงกันทั้งหมดไม่ใช่แค่ลำดับแรก ตัวอย่าง A = (1 2 3 4) B = (1 3) C = (1 3 4) D = (3 1) E = (1 2 5) B …
14 algorithms 

4
เมื่อไม่มี TCO เมื่อใดต้องกังวลเกี่ยวกับการสแต็คกอง?
ทุกครั้งที่มีการอภิปรายเกี่ยวกับภาษาการเขียนโปรแกรมใหม่ที่กำหนดเป้าหมาย JVM ย่อมมีคนพูดถึงสิ่งต่าง ๆ เช่น: "JVM ไม่รองรับการปรับให้เหมาะสมแบบหางเรียกดังนั้นฉันทำนายสแต็กการระเบิดจำนวนมาก" ชุดรูปแบบนั้นมีการเปลี่ยนแปลงหลายพันรายการ ตอนนี้ฉันรู้ว่าบางภาษาเช่น Clojure มีโครงสร้างการเกิดขึ้นเป็นพิเศษที่คุณสามารถใช้ สิ่งที่ฉันไม่เข้าใจคือ: การขาดการเพิ่มประสิทธิภาพการโทรหางมีความร้ายแรงเพียงใด? ฉันควรกังวลเกี่ยวกับเรื่องนี้เมื่อใด แหล่งที่มาหลักของความสับสนอาจมาจากความจริงที่ว่า Java เป็นหนึ่งในภาษาที่ประสบความสำเร็จมากที่สุดและภาษา JVM บางส่วนดูเหมือนจะทำได้ค่อนข้างดี วิธีการที่เป็นไปได้ถ้าขาดการ TCO เป็นจริงของใด ๆกังวล?

1
ทำไมบางเว็บไซต์แสดง 0 bytes ในเครื่องมือสำหรับนักพัฒนาซอฟต์แวร์ของ Chrome
ฉันกำลังทำการเพิ่มประสิทธิภาพความเร็วหน้าสำหรับเว็บไซต์ของฉันและศึกษาว่าเว็บไซต์อื่น ๆ ทำได้อย่างไร ฉันสังเกตเห็นว่าบางเว็บไซต์เช่นFacebookหรือRinggitplusแสดง 0 ไบต์สำหรับบางแหล่งข้อมูลในเครื่องมือสำหรับนักพัฒนาของ Chrome แท็บเครือข่ายในขณะที่ขนาดเนื้อหาจริงมีหลายกิโลไบต์ ฉันอ่านบางบทความที่บอกว่าขนาดคือจำนวนเงินที่ถูกดึงออกมาและเนื้อหาคือขนาดจริงของการตอบสนอง ดังนั้นเมื่อขนาดคือ 0 ไบต์ก็หมายความว่ามันทำหน้าที่จากแคช แต่สิ่งเดียวกันนี้เกิดขึ้นเมื่อฉันเปิดหน้าโดยใช้ไม่ระบุตัวตนหรือล้างแคชทั้งหมดของฉัน สิ่งนี้เป็นไปได้อย่างไรและฉันจะบรรลุสิ่งเดียวกันสำหรับเว็บไซต์ของฉันได้อย่างไร
14 http  caching  chrome 

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

2
การตัดสินใจออกแบบ - ทำไมต้องสร้าง <p> โดยไม่มี </p>
TL; DR บางโปรแกรมที่ใช้กันอย่างแพร่หลาย, ซึ่งสร้าง html, จะสร้างแท็กเปิดย่อหน้าเท่านั้น, และไม่ปิดโปรแกรม, โดยสันนิษฐานว่าเบราว์เซอร์จะปิดย่อหน้าอย่างเหมาะสม. บนใบหน้าของมันดูเหมือนว่าฉันว่าเบราว์เซอร์จะปิดย่อหน้าอย่างถูกต้องไม่ถูกต้อง การตีความของฉันถูกต้องหรือไม่ โดยทั่วไปแล้วการแลกเปลี่ยนอะไรที่เกี่ยวข้องกับการตัดสินใจประเภทนี้? การค้นหาผ่านซอร์สโค้ด moinmoin บรรทัดของรหัสต่อไปนี้ดึงดูดสายตาของฉัน: # We only open those tags and let the browser auto-close them: _auto_closing_tags = set(['p']) ( แหล่งที่มา ) หลังจากอ่านส่วนที่เหลือของการนำไปใช้ฉันเชื่อมั่นว่าใช่แน่นอนเมื่อ moinmoin สร้างรหัส html สำหรับหน้าใดหน้าหนึ่งของมันมันจะสร้างแท็กเปิดย่อหน้าอย่างถูกต้องตามความเหมาะสมในขณะเดียวกันก็ตั้งใจหลีกเลี่ยง แท็กปิดย่อหน้า (แม้จะสามารถทำได้เล็กน้อย) สำหรับกรณีการใช้งานที่เฉพาะเจาะจงของฉันค่อนข้างผิดปกติพฤติกรรมนี้ไม่ถูกต้อง ฉันถูกล่อลวงให้ส่งรายงานข้อผิดพลาดและ / หรือเปลี่ยนพฤติกรรม อย่างไรก็ตามดูเหมือนว่าการตัดสินใจการออกแบบนี้ได้ทำขึ้นมาอย่างพิถีพิถันแล้ว ฉันไม่เก่งพอในความซับซ้อนของมาตรฐาน html หรือการใช้งานเบราว์เซอร์ต่าง ๆ เพื่อให้สามารถบอกได้ว่านี่เป็นพฤติกรรมที่ถูกต้องโดยทั่วไปและฉันมีความรู้สึกว่าสัญชาตญาณของฉันในการแก้ไข / …

5
การแย่งชิงใช้ข้อมูลจำเพาะทางเทคนิคใน Backlog ผลิตภัณฑ์มากกว่าเรื่องราวของผู้ใช้หรือไม่
ที่ บริษัท ที่ฉันทำงานอยู่ตอนนี้เราก็เริ่มทำโครงการสrum ไม่ยากนักที่จะโน้มน้าวให้ผู้จัดการย้ายจากน้ำตกไปยังสrum เรากำลังทำโครงการที่เราสร้างแพลตฟอร์มขึ้นใหม่จากศูนย์ ดังนั้นฟังก์ชั่น (ส่วนใหญ่) จึงเป็นที่รู้จักและการปรับปรุงส่วนใหญ่ค่อนข้างใช้เทคนิค ในเรื่องนี้มันอาจเป็นเหตุผลที่จะมีงานด้านเทคนิคมากกว่าเรื่องราวของผู้ใช้ งานในมือของเรามีงานด้านเทคนิคทุกประเภทเช่น: เขียนคลาส DB ใหม่จาก MySQL เป็น PostgreSQL ใช้การบันทึกระบบ เขียนแคชวัตถุใหม่ สิ่งต่าง ๆ ที่เกิดขึ้นระหว่างการยืนรวมถึงความต้องการ "งานวิจัย" ที่ยาวนาน แต่พวกเขาไม่เคยทำ นอกจากนี้สมาชิกในทีมเรียกร้องในช่วงกลางของการวิ่งที่ต้องเพิ่มงานที่ไม่ได้วางแผนไว้ Scrum Master ควรจัดการกับสิ่งนี้อย่างไร เป็นไปได้ไหมว่าสำหรับโครงการประเภทนี้การแย่งชิงกันไม่ใช่ทางที่จะไป?

5
ราคาแพงในที่สุดก็ลอง
ในกรณีของรหัสที่คุณต้องทำการล้างทรัพยากรก่อนออกจากฟังก์ชันมีความแตกต่างที่สำคัญระหว่าง 2 วิธีในการทำมัน การทำความสะอาดทรัพยากรก่อนทุกคำสั่งส่งคืน void func() { login(); bool ret = dosomething(); if(ret == false) { logout(); return; } ret = dosomethingelse(); if(ret == false) { logout(); return; } dootherstuff(); logout(); } การทำความสะอาดทรัพยากรในบล็อกสุดท้าย void func() { login(); try { bool ret = dosomething(); if(ret == false) return; ret = dosomethingelse(); …

4
รูปแบบการออกแบบสำหรับการนำเข้าข้อมูลของแหล่งข้อมูลประเภทต่าง ๆ และไปยังประเภทปลายทางต่างๆ
ฉันต้องออกแบบและสร้างสคริปต์นำเข้า (ใน C #) ที่สามารถจัดการต่อไปนี้: อ่านข้อมูลจากแหล่งต่าง ๆ (XML, XSLX, CSV) ตรวจสอบข้อมูล เขียนข้อมูลไปยังวัตถุประเภทต่าง ๆ (ลูกค้าที่อยู่) ข้อมูลจะมาจากแหล่งที่มาจำนวนหนึ่ง แต่แหล่งที่มาจะมีรูปแบบการนำเข้าหนึ่งรูปแบบเสมอ (เช่น csv, xml, xslx) รูปแบบการนำเข้าอาจแตกต่างกันไปตามแหล่งที่มา รูปแบบการนำเข้าใหม่อาจถูกเพิ่มในอนาคต ประเภทวัตถุปลายทางจะเหมือนกันเสมอ (ลูกค้าที่อยู่และอื่น ๆ ) ฉันกำลังคิดเกี่ยวกับการใช้ยาชื่อสามัญและฉันอ่านบางอย่างเกี่ยวกับรูปแบบของโรงงาน แต่ฉันเป็น noob ที่ค่อนข้างใหญ่ในพื้นที่นี้ รูปแบบการออกแบบที่เหมาะสมในการแก้ไขปัญหานี้คืออะไร

10
เหตุใด RDBMS จึงไม่ส่งคืนตารางที่เข้าร่วมในรูปแบบที่ซ้อนกัน
ตัวอย่างเช่นฉันต้องการดึงข้อมูลผู้ใช้และหมายเลขโทรศัพท์และที่อยู่อีเมลทั้งหมดของเขา หมายเลขโทรศัพท์และอีเมลจะถูกเก็บไว้ในตารางแยกต่างหากผู้ใช้หนึ่งรายไปยังโทรศัพท์ / อีเมลจำนวนมาก ฉันสามารถทำได้ค่อนข้างง่าย: SELECT * FROM users user LEFT JOIN emails email ON email.user_id=user.id LEFT JOIN phones phone ON phone.user_id=user.id ปัญหานี้คือการส่งคืนชื่อผู้ใช้ DOB สีที่ชื่นชอบและข้อมูลอื่น ๆ ทั้งหมดที่จัดเก็บในตารางผู้ใช้ซ้ำแล้วซ้ำอีกสำหรับแต่ละระเบียน (ผู้ใช้บันทึกอีเมลโทรศัพท์) สันนิษฐานว่ากินแบนด์วิดท์ ลงผลลัพธ์ จะดีกว่าไหมถ้ามันส่งคืนแถวเดียวสำหรับผู้ใช้แต่ละคนและภายในบันทึกนั้นมีรายการอีเมลและรายการโทรศัพท์หรือไม่ มันจะทำให้ข้อมูลทำงานได้ง่ายขึ้นด้วยเช่นกัน ฉันรู้ว่าคุณสามารถรับผลลัพธ์เช่นนี้โดยใช้ LINQ หรือกรอบงานอื่น ๆ แต่ดูเหมือนว่ามันจะเป็นจุดอ่อนในการออกแบบฐานข้อมูลเชิงสัมพันธ์ เราสามารถแก้ไขได้โดยใช้ NoSQL แต่ไม่ควรมีพื้นกลางบ้าง ฉันพลาดอะไรไปรึเปล่า? ทำไมจึงไม่มีสิ่งนี้ * ใช่มันถูกออกแบบด้วยวิธีนี้ ฉันเข้าใจแล้ว ฉันสงสัยว่าทำไมไม่มีทางเลือกอื่นให้ทำงานด้วยได้ง่ายขึ้น SQL สามารถทำสิ่งที่มันทำอยู่ต่อไป แต่จากนั้นพวกเขาสามารถเพิ่มคำสำคัญหรือสองคำเพื่อทำ post-processing …
14 design  sql  rdbms 

1
วิธีที่เหมาะสมของการซ้อนรีซอร์สในโมเดล REST คืออะไร?
ฉันออกแบบ REST API ของการบริการและติดอยู่กับวิธีที่เหมาะสมในการซ้อนทรัพยากร ทรัพยากร: คู่ค้าตั๋วการตั้งค่า การเชื่อมต่อระหว่างทรัพยากร: พันธมิตรมีตั๋วหลายใบ พันธมิตรมีการตั้งค่า ตรรกะ Bussines: คุณสามารถแสดงรายชื่อพันธมิตรทั้งหมดเป็นผู้ใช้ที่ไม่ระบุชื่อ คุณสามารถเพิ่มตั๋วใหม่ให้กับพันธมิตรที่ระบุในฐานะผู้ใช้ที่ไม่ระบุชื่อ พันธมิตรเท่านั้นที่สามารถแสดงตั๋วของเขา พันธมิตรเท่านั้นที่สามารถแก้ไขตั๋วของเขาได้ พันธมิตรเท่านั้นที่สามารถแสดงรายการการตั้งค่า พันธมิตรเท่านั้นที่สามารถแก้ไขการตั้งค่า สิ่งที่ฉันทำจนถึงตอนนี้: แหล่งข้อมูลพันธมิตร GET / คู่ค้า - แสดงรายชื่อพันธมิตรทั้งหมด GET / คู่ค้า /: id - แสดงรายละเอียดของพันธมิตรที่ระบุโดย: พารามิเตอร์ id GET / คู่ค้า /: partner_id / ตั๋ว - รายการตั๋วของพันธมิตร GET / คู่ค้า /: คู่ค้า / ตั๋ว /: …
14 api  rest  api-design 

5
เอกสารที่เขียนเป็นเหตุผลที่ดีสำหรับการเรียนรู้ภาษาการเขียนโปรแกรมหรือไม่? [ปิด]
ปิด คำถามนี้เป็นคำถามความคิดเห็นตาม ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้สามารถตอบข้อเท็จจริงและการอ้างอิงได้โดยแก้ไขโพสต์นี้ ปิดให้บริการใน4 ปีที่แล้ว ฉันกำลังเรียน Python ซึ่งไม่ได้เป็นส่วนหนึ่งของหลักสูตรวิทยาลัยของฉัน ฉันถูกถามในการสัมภาษณ์ว่าทำไมฉันถึงเลือก Python และฉันตอบว่ามันง่ายต่อการเรียนรู้และเอกสารนั้นเขียนได้ดีมาก ผู้สัมภาษณ์ไม่ตอบว่าเป็นเหตุผลที่ดีหรือไม่ เขาดูมั่นใจ แต่ฉันไม่แน่ใจ เอกสารที่เขียนเป็นอย่างดีพร้อมกับความสะดวกในการเรียนรู้เหตุผลที่ดีพอสำหรับการเลือกภาษาสคริปต์หรือไม่? หรือฉันควรอธิบายเพิ่มเติมเกี่ยวกับความพร้อมใช้งานของไลบรารี Python และฐานผู้ใช้ที่ใหญ่ขึ้นของ Python เพียงแค่ทราบ Python ไม่จำเป็นสำหรับงาน บริษัท ทำงานกับ Ruby-on-rails Python อยู่ในประวัติย่อของฉันและฉันคิดว่าผู้สัมภาษณ์ต้องการทราบถึงข้อควรพิจารณาที่ฉันทำขึ้นใหม่ในขณะที่เลือกภาษาการเขียนโปรแกรม

1
ผู้เขียนได้แทรกลิขสิทธิ์ลงในรหัสด้วยคำชี้แจงสิทธิ์การใช้งานสาธารณะ gnu - ความหมาย?
ฉันพบโครงการบน Github ที่ฉันสนใจที่จะให้การสนับสนุนซึ่งอ้างว่าเป็นโอเพ่นซอร์สและมีใบอนุญาต GPL ที่รวมอยู่ในนั้น แต่ผู้แต่งดั้งเดิมได้เพิ่มการแจ้งเตือนเรื่องลิขสิทธิ์ลงในไฟล์ต้นฉบับแต่ละไฟล์ ฉันไม่แน่ใจว่าทำไม แต่ฉันรู้สึกไม่ถูกต้องที่สนับสนุนโครงการที่มักจะมีชื่อของคนอื่นอยู่เสมอ มันทำลายความรู้สึกที่ชุมชนสร้างขึ้นและทำให้ฉันไม่สบายใจเกี่ยวกับสิ่งที่ผู้เขียนอาจเลือกทำกับโครงการต่อไป ความหมายของการจดลิขสิทธิ์รหัส GPL โอเพนซอร์สนั้นเป็นอย่างไร สิ่งนี้ให้อำนาจผู้เขียนต้นฉบับมากกว่าผู้สนับสนุน? # Copyright (C) 2012, 2013 __AUTHORNAME__ # This file is part of __PROJECTNAME__. # # __PROJECTNAME__ is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as …

7
ใน Java ทำไมสมาชิกที่ได้รับความคุ้มครองทำให้เข้าถึงคลาสของแพ็คเกจเดียวกันได้
จากเอกสารอย่างเป็นทางการ... แพ็คเกจ Class Class ย่อย YYYY สาธารณะ ป้องกัน YYYN ไม่มีตัวแก้ไข YYNN YNNN ส่วนตัว สิ่งนี้คือฉันจำไม่ได้ว่ามีกรณีการใช้งานที่ฉันต้องการเข้าถึงสมาชิกที่ได้รับความคุ้มครองจากชั้นเรียนภายในแพ็คเกจเดียวกัน อะไรคือสาเหตุของการนำไปใช้นี้? แก้ไข:เพื่อชี้แจงฉันกำลังมองหากรณีการใช้งานเฉพาะที่ทั้งคลาสย่อยและคลาสภายในแพ็คเกจเดียวกันจำเป็นต้องเข้าถึงเขตข้อมูลหรือวิธีการป้องกัน package some.package; public class A { protected void protectedMethod(){ // do something } } package another.package; public class B extends A{ public void someMethod(){ // accessible because B is a subclass of A protectedMethod(); …

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

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