การเขียนโปรแกรม

คำถาม & คำตอบสำหรับโปรแกรมเมอร์มืออาชีพและกระตือรือร้น

12
อะไรคือวิธีที่“ ถูกต้อง” ในการวนซ้ำในอาร์เรย์ใน Ruby
PHP สำหรับหูดทั้งหมดมันค่อนข้างดีในการนับนี้ ไม่มีความแตกต่างระหว่างอาเรย์และแฮช (บางทีฉันไร้เดียงสา แต่นี่ดูเหมือนจะถูกต้องสำหรับฉัน) และเพื่อย้ำผ่านคุณเพียงแค่ทำ foreach (array/hash as $key => $value) ใน Ruby มีหลายวิธีที่จะทำสิ่งนี้: array.length.times do |i| end array.each array.each_index for i in array Hashes มีเหตุผลมากกว่านี้เพราะฉันใช้เสมอ hash.each do |key, value| เหตุใดฉันจึงไม่สามารถทำสิ่งนี้กับอาร์เรย์ได้ ถ้าผมต้องการที่จะจำเพียงหนึ่งวิธีที่ผมคิดว่าผมสามารถใช้each_index(ตั้งแต่มันทำให้ทั้งดัชนีและความคุ้มค่าที่มีอยู่) แต่มันน่ารำคาญที่จะต้องทำแทนเพียงarray[index]value โอ้ใช่ฉันลืมไปarray.each_with_indexแล้ว อย่างไรก็ตามอันนี้ครับเพราะมันไป|value, key|และhash.eachไป|key, value|! นี่มันไม่บ้าเหรอ?
341 ruby  arrays  loops 

5
แปลง INT เป็น VARCHAR SQL
ฉันกำลังใช้ Sybase และฉันกำลังเลือกตัวเลือกที่ส่งคืนคอลัมน์ที่เรียกว่า "iftype" แต่ประเภทของมันคือ int และฉันจำเป็นต้องแปลงเป็น varchar เมื่อฉันพยายามเลือกโดยไม่ใช้ฟังก์ชั่นแปลงฉันได้รับข้อผิดพลาดนี้: รหัสข้อผิดพลาด 257, สถานะ SQL 37000: การแปลงโดยนัยจากประเภทข้อมูล 'VARCHAR' เป็น 'INT' ไม่ได้รับอนุญาต ใช้ฟังก์ชัน CONVERT เพื่อเรียกใช้แบบสอบถามนี้ CONVERTฉันไม่ทราบวิธีการใช้ฟังก์ชั่น มีใครช่วยฉันทีได้ไหม

10
สร้างซิงเกิลตันโดยใช้ dispatch_once ของ GCD ใน Objective-C
หากคุณสามารถกำหนดเป้าหมาย iOS 4.0 ขึ้นไป การใช้ GCD เป็นวิธีที่ดีที่สุดในการสร้างซิงเกิลตันใน Objective-C (ปลอดภัยไหม) + (instancetype)sharedInstance { static dispatch_once_t once; static id sharedInstance; dispatch_once(&once, ^{ sharedInstance = [[self alloc] init]; }); return sharedInstance; }

8
จะใส่ข้อมูลโมเดลและพฤติกรรมได้ที่ไหน [TL; ดร; ใช้บริการ]
ฉันกำลังทำงานกับ AngularJS สำหรับโครงการล่าสุดของฉัน ในเอกสารประกอบและแบบฝึกหัดข้อมูลโมเดลทั้งหมดจะถูกใส่เข้าไปในขอบเขตของคอนโทรลเลอร์ ฉันเข้าใจว่าจะต้องมีให้พร้อมใช้งานสำหรับคอนโทรลเลอร์และภายในมุมมองที่เกี่ยวข้อง อย่างไรก็ตามฉันไม่คิดว่ารูปแบบควรนำไปใช้จริงที่นั่น มันอาจจะซับซ้อนและมีแอตทริบิวต์ส่วนตัวเช่น นอกจากนี้อาจต้องการนำมาใช้ซ้ำในบริบท / แอปอื่น การวางทุกอย่างลงในคอนโทรลเลอร์จะแบ่งรูปแบบ MVC โดยสิ้นเชิง เช่นเดียวกันถือเป็นจริงสำหรับพฤติกรรมของรูปแบบใด ๆ ถ้าฉันจะใช้สถาปัตยกรรม DCIและแยกพฤติกรรมจากตัวแบบข้อมูลฉันจะต้องแนะนำวัตถุเพิ่มเติมเพื่อเก็บพฤติกรรม สิ่งนี้จะทำได้โดยการแนะนำบทบาทและบริบท DCI == D ATA C ollaboration ฉัน nteraction แน่นอนว่าแบบจำลองข้อมูลและพฤติกรรมสามารถนำไปใช้กับวัตถุจาวาสคริปต์ธรรมดาหรือรูปแบบ "คลาส" ใด ๆ แต่สิ่งที่จะเป็นวิธี AngularJS ที่จะทำอย่างไร ใช้บริการหรือไม่ ดังนั้นลงมาที่คำถามนี้: คุณใช้โมเดลอย่างไรแยกจากคอนโทรลเลอร์ตามแนวทางปฏิบัติที่ดีที่สุดของ AngularJS

16
การฝึกในการส่งคืนตัวแปรอ้างอิง C ++ นั้นชั่วร้ายหรือไม่?
ฉันคิดว่ามันเป็นเรื่องส่วนตัว ฉันไม่แน่ใจว่าความคิดเห็นจะเป็นเอกฉันท์หรือไม่ (ฉันเห็นตัวอย่างโค้ดจำนวนมากซึ่งส่งคืนการอ้างอิง) จากความคิดเห็นที่มีต่อคำถามนี้ฉันเพิ่งถามเกี่ยวกับการเริ่มต้นการอ้างอิงการอ้างอิงกลับอาจเป็นความชั่วเพราะ [อย่างที่ฉันเข้าใจ] มันทำให้ง่ายต่อการพลาดการลบซึ่งจะนำไปสู่การรั่วไหลของหน่วยความจำ สิ่งนี้ทำให้ฉันเป็นกังวลขณะที่ฉันติดตามตัวอย่าง (เว้นแต่ฉันจะจินตนาการถึงสิ่งต่าง ๆ ) และทำสิ่งนี้ในสถานที่ที่เหมาะสม ... ฉันเข้าใจผิดหรือเปล่า? มันชั่วร้ายเหรอ? ถ้าเป็นเช่นนั้นความชั่วร้ายเพียงใด? ฉันรู้สึกว่าเนื่องจากพอยน์เตอร์และการอ้างอิงแบบผสมของฉันรวมกับความจริงที่ว่าฉันใหม่กับ C ++ และความสับสนอย่างสมบูรณ์เกี่ยวกับสิ่งที่จะใช้เมื่อแอปพลิเคชันของฉันต้องเป็นนรกหน่วยความจำรั่วไหล ... นอกจากนี้ฉันเข้าใจว่าการใช้ตัวชี้สมาร์ท / แชร์นั้นเป็นที่ยอมรับโดยทั่วไปว่าเป็นวิธีที่ดีที่สุดในการหลีกเลี่ยงการรั่วไหลของหน่วยความจำ
341 c++  reference  c++-faq 

10
ฉันจะเห็นการกระทำที่แตกต่างระหว่างกิ่งในคอมไพล์ได้อย่างไร?
ฉันอยู่ที่ branch-X และเพิ่มความมุ่งมั่นอีกสองสามข้อไว้บนนั้น ฉันต้องการเห็นความแตกต่างทั้งหมดระหว่าง MASTER และสาขาที่ฉันอยู่ในแง่ของความมุ่งมั่น ฉันสามารถทำ git checkout master git log และจากนั้น git checkout branch-X git log และมองเห็นสิ่งเหล่านี้แตกต่างกันไป แต่ฉันหวังว่าจะง่ายกว่าและมีข้อผิดพลาดน้อยลง
341 git  logging  branch  git-log 

5
UIButton ลบการกระทำเป้าหมายทั้งหมด
ฉันได้เพิ่ม target-action-forControlEvents: ลงใน UIButton แล้ว ฉันต้องการลบสิ่งเหล่านี้ทั้งหมดในครั้งเดียวโดยไม่ต้องจัดสรรคืน ฉันจะตั้งเป้าหมายใหม่ เป็นไปได้และฉันจะไปเกี่ยวกับเรื่องนี้?
341 ios  uibutton 

10
ดาวน์โหลดไฟล์ไปยังเซิร์ฟเวอร์จาก URL
อันนี้ดูเหมือนง่ายมากและเป็น สิ่งที่คุณต้องทำเพื่อดาวน์โหลดไฟล์ไปยังเซิร์ฟเวอร์ของคุณคือ: file_put_contents("Tmpfile.zip", file_get_contents("http://someurl/file.zip")); มีเพียงปัญหาเดียวเท่านั้น ถ้าคุณมีไฟล์ขนาดใหญ่เช่น 100mb จากนั้นคุณจะมีหน่วยความจำไม่เพียงพอและไม่สามารถดาวน์โหลดไฟล์ได้ สิ่งที่ฉันต้องการคือวิธีการเขียนไฟล์ไปยังดิสก์ขณะที่ฉันกำลังดาวน์โหลด ด้วยวิธีนี้ฉันสามารถดาวน์โหลดไฟล์ที่ใหญ่กว่าโดยไม่ต้องเจอปัญหาหน่วยความจำ
341 php  http  stream  download 

2
เวิร์กโฟลว์ Github ที่ต้องการสำหรับการปรับปรุงคำขอดึงหลังจากการตรวจสอบรหัส
ฉันได้ส่งการเปลี่ยนแปลงไปยังโครงการโอเพ่นซอร์สบน Github และได้รับความคิดเห็นการตรวจสอบโค้ดจากหนึ่งในสมาชิกหลักของทีม ฉันต้องการอัปเดตรหัสโดยคำนึงถึงความคิดเห็นการตรวจสอบและส่งอีกครั้ง เวิร์กโฟลว์ที่ดีที่สุดสำหรับการทำเช่นนี้คืออะไร? จากความรู้ที่ จำกัด ของฉันเกี่ยวกับ git / github ฉันสามารถทำสิ่งใดสิ่งหนึ่งต่อไปนี้: อัปเดตรหัสเป็นการคอมมิชชันใหม่และเพิ่มการคอมมิทเริ่มต้นและอัปเดตลงในคำขอดึงของฉัน ยังไงก็ตาม (??) ย้อนกลับการคอมมิชชันเก่าจากที่เก็บของฉันและสร้างการคอมมิทใหม่ที่มีทุกอย่างจากนั้นเพิ่มคำขอดึงสำหรับสิ่งนั้น? git commitมีคุณสมบัติที่แก้ไข แต่ฉันได้ยินมาว่าคุณไม่ควรใช้งานหลังจากที่คุณส่งการคอมมิทนอกพื้นที่เก็บข้อมูลในเครื่องของคุณ? ในกรณีนี้ฉันได้ทำการเปลี่ยนแปลงบนพีซีในพื้นที่ของฉันและผลักดันไปยังสาขา github ของโครงการ นี่จะใช้การ 'แก้ไข' ไหม อื่น ๆ อีก? ดูเหมือนว่าตัวเลือก 2/3 จะดีเพราะโครงการโอเพนซอร์ซจะมีเพียงหนึ่งคอมมิชชันในประวัติศาสตร์ของพวกเขาซึ่งจะใช้งานทุกอย่าง แต่ฉันไม่แน่ใจว่าจะทำอย่างไร หมายเหตุ: ฉันไม่รู้ว่าสิ่งนี้มีผลกระทบต่อคำตอบหรือไม่ แต่ฉันไม่ได้ทำการเปลี่ยนแปลงในสาขาที่แยกจากกันฉันเพิ่งทำคอมมิชชันด้านบนของต้นแบบ



5
การทำความเข้าใจ setRetainInstance ของชิ้นส่วน (บูลีน)
เริ่มต้นด้วยเอกสาร: โมฆะสาธารณะ setRetainInstance (บูลีนเก็บ) ควบคุมว่าจะเก็บอินสแตนซ์ของส่วนย่อยไว้ในการสร้างกิจกรรมใหม่หรือไม่ (เช่นจากการเปลี่ยนแปลงการกำหนดค่า) สามารถใช้กับชิ้นส่วนที่ไม่ได้อยู่ในกองซ้อนด้านหลังเท่านั้น หากตั้งค่าวงจรชีวิตของแฟรกเมนต์จะแตกต่างกันเล็กน้อยเมื่อมีการสร้างกิจกรรมใหม่: onDestroy () จะไม่ถูกเรียก (แต่ onDetach () จะยังคงอยู่เนื่องจากแฟรกเมนต์กำลังถูกแยกออกจากกิจกรรมปัจจุบัน) onCreate (Bundle) จะไม่ถูกเรียกใช้เนื่องจากแฟรกเมนต์ไม่ได้ถูกสร้างขึ้นใหม่ onAttach (กิจกรรม) และ onActivityCreated (Bundle) จะยังคงถูกเรียกใช้ ฉันมีคำถาม: แฟรกเมนต์ยังรักษามุมมองหรือไม่หรือสิ่งนี้จะถูกสร้างใหม่ตามการเปลี่ยนแปลงการกำหนดค่าหรือไม่? "เก็บรักษา" หมายความว่าอะไร? ส่วนจะถูกทำลายเมื่อผู้ใช้ออกจากกิจกรรมหรือไม่ ทำไมมันไม่ทำงานกับเศษเล็กเศษน้อยในกองหลัง? กรณีการใช้งานแบบไหนที่เหมาะสมกับการใช้วิธีนี้?


16
การตั้งค่า NOCOUNT ON
แรงบันดาลใจจากคำถามนี้ที่มีมุมมองที่แตกต่างกันใน SET NOCOUNT ... เราควรใช้ SET NOCOUNT ON สำหรับ SQL Server หรือไม่ ถ้าไม่ทำไมล่ะ การแก้ไข 6 ในวันที่ 22 กรกฎาคม 2011 คืออะไร จะไม่แสดงข้อความ "แถว xx ที่ได้รับผลกระทบ" หลังจาก DML ใด ๆ นี่เป็นชุดผลลัพธ์และเมื่อส่งลูกค้าจะต้องดำเนินการ มันเล็ก แต่วัดได้ (ดูคำตอบด้านล่าง) สำหรับทริกเกอร์ ฯลฯ ลูกค้าจะได้รับ "xx rows ที่ได้รับผลกระทบ" หลายครั้งและทำให้เกิดข้อผิดพลาดทุกรูปแบบสำหรับ ORMs บางตัว, MS Access, JPA และอื่น ๆ (ดูการแก้ไขด้านล่าง) พื้นหลัง: วิธีปฏิบัติที่ดีที่สุดที่เป็นที่ยอมรับทั่วไป (ฉันคิดว่าจนกระทั่งคำถามนี้) …


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