บ้าน พัฒนาการ การตอบสนองอย่างรวดเร็ว: การดีบักฐานข้อมูลและการทำโปรไฟล์เพื่อช่วยเหลือ

การตอบสนองอย่างรวดเร็ว: การดีบักฐานข้อมูลและการทำโปรไฟล์เพื่อช่วยเหลือ

Anonim

โดย Techopedia Staff วันที่ 15 มีนาคม 2017

Takeaway: Host Eric Kavanagh กล่าวถึงการดีบักและทำโปรไฟล์ฐานข้อมูลกับ Dr. Robin Bloor, Dez Blanchfield และ Bert Scalzo ของ IDERA

คุณยังไม่ได้เข้าสู่ระบบโปรดเข้าสู่ระบบหรือลงทะเบียนเพื่อดูวิดีโอ

Eric Kavanagh: โอเคผู้หญิงและสุภาพบุรุษเป็นเวลา 4:00 น. ในวันพุธและแน่นอนว่านั่นหมายความว่า

Robin Bloor: ไม่ได้ยินเสียงคุณเอริค

Eric Kavanagh: ฉันอยู่ที่นั่นเมื่อหลายวันก่อนดังนั้นคุณไม่ได้อยู่คนเดียว แต่หัวข้อในวันนี้เป็นสิ่งที่น่าสนใจจริงๆ เป็นสิ่งที่คุณต้องการให้แน่ใจว่าเกิดขึ้นในพื้นหลังที่ บริษัท ของคุณเว้นแต่ว่าคุณเป็นคนที่ทำมันในกรณีที่คุณต้องการให้แน่ใจว่าคุณทำอย่างถูกต้อง เพราะเรากำลังพูดถึงการดีบัก ไม่มีใครชอบข้อบกพร่องไม่มีใครชอบเมื่อซอฟต์แวร์หยุดทำงาน - ผู้คนอารมณ์เสียผู้ใช้จะไม่เป็นมิตร นั่นไม่ดีเลย ดังนั้นเราจะพูดถึง "การตอบสนองอย่างรวดเร็ว: การดีบักฐานข้อมูลและการทำโปรไฟล์เพื่อช่วยเหลือ"

มีจุดที่เกี่ยวกับตัวคุณอย่างแท้จริงตีฉันบน Twitter แน่นอน @eric_kavanagh

ปีนี้อากาศร้อน และการดีบั๊กก็จะร้อนไม่ว่าจะเกิดอะไรขึ้นก็ตาม มันจะเป็นหนึ่งในปัญหาเหล่านี้ที่ไม่เคยหายไปไม่ว่าเราจะได้รับสิ่งนี้ดีแค่ไหนจะมีปัญหาอยู่เสมอดังนั้นกุญแจสำคัญคือคุณจะไปยังที่ที่คุณสามารถแก้ไขปัญหาเหล่านั้นได้อย่างรวดเร็วอย่างไร ในอุดมคติแล้วคุณมีโปรแกรมเมอร์ที่ดีสภาพแวดล้อมที่ดีซึ่งไม่ผิดพลาดมากนัก แต่ตามคำพูดเดิม ๆ ที่ว่า“ อุบัติเหตุเกิดขึ้นในครอบครัวที่ดีที่สุด” และสิ่งเดียวกันก็เป็นจริงสำหรับองค์กร ดังนั้นสิ่งนี้เกิดขึ้นมันจะเกิดขึ้นคำถามคือสิ่งที่จะเป็นทางออกของคุณในการจัดการกับมันและการแก้ปัญหาเหล่านั้นหรือไม่

เราจะได้ยินจากดร. โรบินบลอร์จากนั้นก็เป็น Dez Blanchfield ของเราเองจากใต้ลงมาและแน่นอนเพื่อนที่ดีของเราคือเบิร์ตสคัลโซจาก IDERA และในความเป็นจริงฉันจะส่งมอบกุญแจให้โรบินบลอร์เอามันออกไป พื้นเป็นของคุณ

Robin Bloor: ตกลง นี่เป็นหัวข้อที่น่าสนใจ ฉันคิดว่าเพราะ Dez น่าจะเป็นเรื่องเกี่ยวกับเทคนิคที่แท้จริงและเรื่องราวสงครามเกี่ยวกับการดีบักฉันคิดว่าฉันแค่ทำการสนทนาเบื้องหลังเพื่อที่เราจะได้ภาพรวมที่สมบูรณ์ของสิ่งที่เกิดขึ้น ฉันทำแบบนี้มานานและฉันก็เคยเป็น coder ดังนั้นมันจึงเป็นเช่นนั้นและฉันก็เกือบถูกล่อลวงด้วยการนำเสนอนี้เพื่อเริ่มแว็กซ์โคลงสั้น ๆ เกี่ยวกับความคิดของโอเพนซอร์ส แต่ฉันคิดว่าฉันจะทิ้งมันไว้กับคนอื่น

นี่คือรายการข้อผิดพลาดที่โด่งดังและส่วนใหญ่จะเข้าสู่รายการอันดับต้น ๆ ของทุกคนยกเว้นค่าใช้จ่ายสองอย่างสุดท้ายอย่างน้อย $ 100 ล้าน คนแรกคือยานอวกาศ Climate Mars, ได้หายไปในอวกาศและมันเป็นเพราะปัญหาการเข้ารหัสที่ผู้คนสับสนหน่วยเมตริกที่มีฟุตและนิ้ว (หัวเราะ) Ariane Five Flight 501 มีข้อผิดพลาดระหว่างเครื่องยนต์ที่ติดตั้งและคอมพิวเตอร์ที่ควรจะใช้งานจรวดเมื่อเปิดตัว ความล้มเหลวของคอมพิวเตอร์หลายเครื่องการระเบิดจรวดข่าวพาดหัว ท่อส่งก๊าซโซเวียตในปี 1982 กล่าวกันว่าเป็นการระเบิดครั้งใหญ่ที่สุดในประวัติศาสตร์ของโลก ฉันไม่แน่ใจว่ามันเป็น รัสเซียขโมยซอฟต์แวร์ควบคุมอัตโนมัติบางส่วนและซีไอเอก็ตระหนักว่าพวกเขากำลังจะทำเช่นนั้นและใส่จุดบกพร่องเข้าไปในนั้นและโซเวียตก็ดำเนินการโดยไม่มีการทดสอบ ดังนั้นเป่าไปป์ไลน์คิดว่าน่าขบขัน

หนอนมอร์ริสเป็นการทดลองเขียนโค้ดซึ่งทันใดนั้นก็กลายเป็นหนอนที่โลดโผนรอบตัวทุกคน - มันทำให้เกิดความเสียหายมูลค่า $ 100 ล้าน; นั่นเป็นค่าประมาณแน่นอน Intel ทำข้อผิดพลาดที่มีชื่อเสียงด้วยชิปคณิตศาสตร์ซึ่งเป็นคำสั่งทางคณิตศาสตร์เกี่ยวกับชิป Pentium ในปี 1993 ซึ่งคาดว่าจะมีราคาสูงกว่า $ 100 ล้าน โปรแกรมแผนที่ของ Apple อาจเป็นการเปิดตัวที่แย่ที่สุดและร้ายกาจที่สุดในสิ่งที่ Apple เคยทำมา ฉันหมายถึงคนที่ลองใช้มันคนกำลังขับรถไปตาม 101 และพบว่า Apple Map บอกว่าพวกเขาอยู่กลางอ่าวซานฟรานซิสโก ดังนั้นผู้คนจึงเริ่มอ้างถึงแอพ Apple Maps เป็น iLost การหยุดทำงานที่ยาวนานที่สุดของเราในปี 1990 - เป็นเรื่องที่น่าสนใจจากมุมมองของค่าใช้จ่ายบางอย่างเช่น AT&T ออกมาประมาณเก้าชั่วโมงและมีค่าใช้จ่ายในการโทรทางไกลประมาณ 60 ล้านเหรียญ

และฉันอยู่ที่ บริษัท ประกันภัยของสหราชอาณาจักรและฐานข้อมูลพวกเขาใช้ฐานข้อมูลเวอร์ชันใหม่และเริ่มลบข้อมูล และฉันจำได้ดีมากเพราะฉันถูกเรียกใช้หลังจากนั้นเพื่อมีส่วนร่วมในการเลือกฐานข้อมูลบางประเภทเพราะสิ่งนั้น และน่าสนใจมากที่พวกเขาได้นำฐานข้อมูลเวอร์ชั่นใหม่มาและพวกเขามีแบตเตอรีทดสอบที่พวกเขาทำกับฐานข้อมูลเวอร์ชันใหม่ที่ผ่านการทดสอบทั้งหมด พบวิธีที่ไม่ชัดเจนในการล้างข้อมูล

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

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

ฉันคิดว่าฉันยังพูดคุยเกี่ยวกับประสิทธิภาพของฐานข้อมูลเพราะข้อผิดพลาดด้านประสิทธิภาพมักถูกมองว่าเป็นข้อบกพร่อง แต่โดยทั่วไปคุณสามารถมีคอขวดที่ CPU, หน่วยความจำ, ดิสก์, บนเครือข่ายและคุณสามารถมีปัญหาด้านประสิทธิภาพเนื่องจากล็อค . แนวคิดจะเป็นว่า coder ไม่จำเป็นต้องกังวลเกี่ยวกับประสิทธิภาพและฐานข้อมูลในความเป็นจริงจะทำงานได้ดีพอสมควร มันควรจะได้รับการออกแบบเพื่อให้ coder ไม่จำเป็นต้องรู้ อย่างไรก็ตามคุณได้รับการออกแบบฐานข้อมูลที่ไม่ดีคุณจะได้รับการออกแบบโปรแกรมที่ไม่ดีคุณจะได้รับการทำงานพร้อมกันในการผสมภาระงานซึ่งอาจนำไปสู่ปัญหาประสิทธิภาพการทำงาน คุณได้รับโหลดบาลานซ์คุณจะได้รับการวางแผนกำลังการผลิตการเติบโตของข้อมูลซึ่งอาจทำให้ฐานข้อมูลหยุดทำงานหรือชะลอตัวลง มันเป็นสิ่งที่น่าสนใจเมื่อฐานข้อมูลเกือบจะเต็มพวกเขาจะชะลอตัวลง และคุณสามารถมีปัญหาเลเยอร์ข้อมูลในแง่ของการจำลองแบบและความจำเป็นในการทำซ้ำและจำเป็นต้องสำรองและกู้คืน อย่างไรก็ตามนั่นเป็นภาพรวมทั่วไป

สิ่งเดียวที่ฉันอยากจะบอกคือการดีบั๊กฐานข้อมูลอาจเป็นเรื่องยากและไม่สำคัญ - และฉันพูดอย่างนั้นเพราะฉันได้ทำมันมามากมาย - และคุณมักจะค้นพบว่ามันเป็นเหมือนทุกสถานการณ์ในการดีบักที่ฉัน เคยมีประสบการณ์เป็นสิ่งแรกที่คุณเคยเห็นเป็นระเบียบ และคุณต้องพยายามทำสิ่งที่ยุ่งเหยิงเพื่อให้เกิดความยุ่งเหยิง และบ่อยครั้งที่คุณมองปัญหาฐานข้อมูลสิ่งที่คุณดูคือข้อมูลที่เสียหายและคุณคิดว่า“ มันเกิดขึ้นได้อย่างไร”

อย่างไรก็ตามฉันจะส่งต่อไปยัง Dez ซึ่งอาจจะพูดคำพูดของภูมิปัญญามากกว่าที่ฉันออกมาด้วย ฉันไม่รู้วิธีส่งลูกบอลให้คุณเดซ

Eric Kavanagh: ฉันจะผ่านมันไปข้างหน้ารอก่อน

เสียงอัตโนมัติ: ปิดสายของผู้เข้าร่วม

Eric Kavanagh: เอาหละรอสักครู่ให้ฉันให้ Dez

Dez Blanchfield: ขอบคุณ Eric ใช่ดร. โรบินบลอร์คุณถูกที่สุดแน่นอน: นี่เป็นหัวข้อข้อผิดพลาดตลอดชีวิตถ้าคุณจะต้องยกเลิกโทษปุนขอโทษด้วยที่ฉันไม่สามารถช่วยตัวเองได้ หวังว่าคุณจะเห็นหน้าจอแรกของฉันที่นั่นขอโทษสำหรับปัญหาขนาดตัวอักษรที่ด้านบน หัวข้อของข้อบกพร่องคือการบรรยายเป็นเวลานานในหลาย ๆ กรณีในประสบการณ์ของฉัน มันเป็นหัวข้อที่กว้างและกว้างขวางดังนั้นฉันจะวางโฟกัสในสองประเด็นหลักโดยเฉพาะแนวคิดของสิ่งที่เราพิจารณาว่าเป็นจุดบกพร่องมาก แต่เป็นปัญหาการเขียนโปรแกรม ฉันคิดว่าทุกวันนี้การแนะนำบั๊กต่อ se โดยทั่วไปได้รับโดยสภาพแวดล้อมการพัฒนาแบบรวมแม้ว่าพวกเขาอาจเป็นบั๊กที่ใช้เวลานาน แต่บ่อยครั้งที่มันเป็นกรณีของรหัสการทำโปรไฟล์และเป็นไปได้ที่จะเขียนโค้ดที่ใช้งานได้ซึ่งควรเป็นข้อผิดพลาด ดังนั้นสไลด์หัวเรื่องของฉันที่นี่ฉันมีสำเนานี้จริง ๆ ในความละเอียดสูง A3 แต่น่าเสียดายที่มันถูกทำลายในการย้ายบ้าน แต่นี่เป็นบันทึกที่เขียนด้วยลายมือบนแผ่นงานเขียนโปรแกรมจากประมาณปี ค.ศ. 1945 ที่ชาวบ้านบางคนที่ Harvard University ในสหรัฐอเมริกาสร้างขึ้นเป็นครั้งที่สองของพวกเขาที่มีชื่อว่า Mark II พวกเขากำลังดีบั๊กปัญหาบางอย่างในภาษาทั่วไป แต่พวกเขาพยายามที่จะหาข้อผิดพลาดและปรากฎว่ามีบางอย่างที่แตกต่างจากสิ่งที่เป็นฮาร์ดแวร์และปัญหาซอฟต์แวร์ที่คาดคะเนมา

ดังนั้นตำนานของเมืองก็คือรอบที่ 9 กันยายน 1945 ทีมที่มหาวิทยาลัยฮาร์วาร์ดถูกดึงออกจากเครื่องจักรพวกเขาเจอสิ่งที่เรียกว่า "รีเลย์เจ็ดสิบ" - ในสมัยนั้นการเขียนโปรแกรมเสร็จสมบูรณ์ รอบ ๆ บอร์ดและนั่นคือวิธีที่คุณตั้งโปรแกรมให้กับเครื่องได้อย่างมีประสิทธิภาพ - และพวกเขาพบว่าหมายเลขรีเลย์เจ็ดสิบนั้นมีบางอย่างผิดปกติกับมันและกลายเป็นคำว่า "บั๊ก" ที่เกิดขึ้นจริงเพราะมันค่อนข้างเป็นตัวมอด เป็นผีเสื้อกลางคืนที่ถูกหุ้มด้วยลวดทองแดงบางส่วนจากที่หนึ่งไปอีกที่หนึ่ง และเรื่องราวดังกล่าวทำให้เกรซฮ็อปเปอร์ตำนานดังเช่นคำบรรยายใต้ภาพสำหรับชื่อเรื่องของฉัน“ ในกรณีแรกที่พบข้อผิดพลาด” อ้างถึงคำพูด

แต่อย่างที่โรบินเน้นไว้ก่อนหน้านี้ในสไลด์แรกของเขาแนวคิดของบั๊กกลับไปไกลที่สุดเท่าที่เราจะจินตนาการได้ว่ามนุษย์กำลังคำนวณ คำว่า "patch" นั้นมาจากเทปจริงที่ติดอยู่บนรูบนการ์ดพันช์ แต่ประเด็นทั้งหมดนี้คือคำว่า "การดีบั๊ก" นั้นมาจากแนวคิดในการค้นหาจุดบกพร่องในเครื่องทางกายภาพ และตั้งแต่นั้นเป็นต้นมาเราได้ใช้คำศัพท์นั้นในการพยายามจัดการกับปัญหาไม่มากเท่ากับการเข้ารหัสปัญหาในโปรแกรมที่ไม่ได้รวบรวม แต่เป็นโปรแกรมที่ทำงานได้ไม่ดี และโดยเฉพาะยังไม่ได้รับการประวัติเพียงแค่ค้นหาสิ่งต่าง ๆ เช่นลูปที่ไม่มีที่สิ้นสุดที่ไม่มีที่ไหนเลย

แต่เราก็มีสถานการณ์และฉันคิดว่าฉันจะใส่สไลด์ตลกสองสามอย่างก่อนที่ฉันจะได้รับรายละเอียดเพิ่มเติมอีกเล็กน้อย นี่คือการ์ตูนคลาสสิกที่เรียกว่า XKCD บนเว็บและนักเขียนการ์ตูนมีมุมมองที่น่าตลกเกี่ยวกับโลก และเรื่องนี้เกี่ยวกับเด็กคนหนึ่งที่เรียกว่า "โต๊ะบ๊อบบี้น้อย" และพ่อแม่ของเขาชื่อโรเบิร์ตเด็กน้อยคนนี้); DROP TABLE Students; - และมันถูกเรียกว่า, และ“ สวัสดีนี่คือโรงเรียนลูกชายของคุณที่มีปัญหาคอมพิวเตอร์บ้าง” และผู้ปกครองตอบว่า“ โอ้ที่รักเขาทำลายบางอย่างเหรอ?” และครูพูดว่า“ เอ่อ ในทางใดทางหนึ่ง” และครูถามว่า“ คุณตั้งชื่อลูกชายของคุณโรเบิร์ตจริงๆ”); DROP TABLE Students; -?” และผู้ปกครองบอกว่า“ ใช่แล้วบ๊อบบี้ตารางเล็ก ๆ ที่เราเรียกเขาว่า” อย่างไรก็ตามพวกเขายังพูดต่อไปว่าตอนนี้พวกเขาทำสถิตินักเรียนปีนี้หายไปฉันหวังว่าคุณจะมีความสุข และการตอบสนองคือ“ คุณควรทำความสะอาดและฆ่าเชื้ออินพุตของฐานข้อมูลของคุณ” และฉันใช้หลายครั้งเพื่อพูดคุยเกี่ยวกับปัญหาบางอย่างที่เรามีในการค้นหาสิ่งต่าง ๆ ในรหัสซึ่งบ่อยครั้งที่รหัสไม่ได้ดูข้อมูล เช่นกัน

ตลกอีกอันหนึ่งฉันไม่รู้ว่านี่เป็นของจริงหรือไม่ - ฉันสงสัยว่ามันเป็นการหลอก - แต่อีกครั้งมันแตะกระดูกตลกของฉันด้วย บางคนเปลี่ยนป้ายทะเบียนด้านหน้ารถเป็นข้อความที่คล้ายกันซึ่งทำให้ฐานข้อมูลตกหล่นกล้องจับความเร็วและอื่น ๆ ที่จับป้ายทะเบียนรถยนต์ และฉันมักจะอ้างถึงเสมอว่าฉันสงสัยว่าโปรแกรมเมอร์คนใดคาดว่าจะมีการชนรหัสของพวกเขาโดยยานยนต์จริง แต่ไม่เคยประมาทนั่นคือพลังของความโกรธ

(หัวเราะ)

แต่สิ่งนี้ทำให้ฉันถึงจุดสำคัญของฉันฉันเดาและนั่นคือกาลครั้งหนึ่งเราสามารถแก้จุดบกพร่องและรหัสโปรไฟล์เป็นเพียงปุถุชน แต่ฉันเห็นมากว่าเวลาผ่านไปแล้วและจากประสบการณ์ของฉันครั้งแรกของฉัน - และนี่จะทำให้ฉันอายุมากชะมัดฉันแน่ใจ Robin ยินดีต้อนรับคุณที่จะกระตุ้นความสนุกให้กับฉัน - แต่ในอดีตฉันมาจากพื้นหลังเมื่ออายุ 14 ปีพเนจรไปตามจุดสิ้นสุดของเมืองและเคาะประตูศูนย์ข้อมูลที่ชื่อว่า“ Data Com” ในใหม่ นิวซีแลนด์และถามว่าฉันจะได้รับเงินค่าขนมที่โรงเรียนด้วยการไปบ้านรถบัสสาย 25 กม. ของการเดินทางทุกวันโดยใส่กระดาษในเครื่องพิมพ์และเทปในเทปไดรฟ์และเป็นผู้ดูแลระบบทั่วไป และอยากรู้อยากเห็นพอพวกเขาให้ฉันทำงาน แต่เมื่อเวลาผ่านไปฉันจัดการเพื่อรับพนักงานและค้นหาโปรแกรมเมอร์และตระหนักว่าฉันรักการเขียนโปรแกรมและผ่านขั้นตอนการเรียกใช้สคริปต์และงานแบทช์ซึ่งในตอนท้ายของวันยังคงเป็นรหัส คุณต้องเขียนสคริปต์และงานแบ็ตช์ที่มีลักษณะเป็นโปรแกรมขนาดเล็กและดำเนินการขั้นตอนทั้งหมดในการเขียนรหัสด้วยเครื่อง 3270

ในความเป็นจริงประสบการณ์ครั้งแรกของฉันอยู่ที่เทอร์มินัลโทรพิมพ์ซึ่งเป็นเครื่องพิมพ์จริงขนาด 132 คอลัมน์ โดยพื้นฐานแล้วคิดว่าเหมือนเครื่องพิมพ์ดีดที่เก่าแก่มากที่มีกระดาษที่เลื่อนดู 'เพราะพวกเขาไม่มีหลอด CRT และการดีบั๊กโค้ดนั้นเป็นปัญหาที่ไม่สำคัญดังนั้นคุณจึงมักจะเขียนโค้ดทั้งหมดด้วยมือแล้วทำตัวเหมือนนักพิมพ์ดีดทำอย่างดีที่สุดเพื่อไม่ให้เกิดข้อผิดพลาดในการแอบเข้ามาเพราะมันน่าหงุดหงิดอย่างยิ่งที่ต้องบอก เครื่องมือแก้ไขบรรทัดเดียวไปที่บรรทัดหนึ่งแล้วพิมพ์บรรทัดแล้วพิมพ์กลับเข้ามา แต่กาลครั้งหนึ่งนั่นคือวิธีที่เราเขียนโค้ดและนั่นคือวิธีที่เราดีบั๊กและเราทำได้ดีมาก และในความเป็นจริงมันบังคับให้เรามีเทคนิคการเขียนโปรแกรมที่ดีมากเพราะมันเป็นเรื่องยากที่จะแก้ไข แต่การเดินทางก็ผ่านไป - และเราทุกคนคุ้นเคยกับสิ่งนี้ - มันผ่านประสบการณ์เทอร์มินัล 3270 ในโลกของฉันไปที่ Digital Equipment VT220 ที่คุณสามารถเห็นสิ่งต่าง ๆ บนหน้าจอ แต่อีกครั้งคุณก็ทำสิ่งเดียวกัน คุณทำในรูปแบบเทปกระดาษในรูปแบบที่พิมพ์บน CRT แต่คุณสามารถลบได้ง่ายขึ้นและคุณไม่มีเสียง“ ดิตดิตดิตดิทดิ”

และจากนั้นคุณก็รู้ว่าเทอร์มินัล Wyse - เช่น Wyse 150 อาจเป็นอินเตอร์เฟสที่ฉันโปรดปรานกับคอมพิวเตอร์เลยทีเดียวจากนั้นก็พีซีและ Mac แล้วสมัยนี้ GUIs และ ID สมัยใหม่ที่ใช้เว็บ และช่วงของโปรแกรมที่ผ่านการเขียนโปรแกรมในหนึ่งและแอสเซมเบลอร์และ PILOT และโลโก้และ Lisp และและ Fortran และ Pascal และภาษาที่อาจทำให้คนประจบประแจง แต่ภาษาเหล่านี้บังคับให้คุณเขียนโค้ดที่ดี พวกเขาไม่ยอมให้คุณออกไปกับการปฏิบัติที่ไม่ดี C, C ++, Java, Ruby, Python - และเราได้รับเพิ่มเติมขั้นตอนการเขียนโปรแกรมที่เราได้รับเหมือนสคริปต์มากขึ้นเราได้ใกล้ชิดกับ Structured Query Language และภาษาเช่น PHP ที่ใช้จริงเพื่อเรียก SQL ประเด็นของการบอกคุณว่ามาจากพื้นหลังของฉันฉันสอนตัวเองได้หลายวิธีและสิ่งที่ช่วยฉันเรียนรู้สอนการเขียนโปรแกรมที่ดีมากและฝึกปฏิบัติที่ดีเกี่ยวกับการออกแบบและกระบวนการเพื่อให้แน่ใจว่าฉันไม่ได้ แนะนำรหัสรถ

วิธีการเขียนโปรแกรมวันนี้สิ่งต่าง ๆ เช่น Structured Query Language, SQL เป็นภาษาแบบสอบถามที่ทรงพลังและง่ายมาก แต่เราเปลี่ยนมันเป็นภาษาการเขียนโปรแกรมและฉันไม่เชื่อจริง ๆ ว่า SQL นั้นถูกออกแบบมาให้เป็นภาษาการเขียนโปรแกรมที่ทันสมัย ​​แต่เราได้บิดเบือนให้มันกลายเป็นสิ่งนั้น และนั่นทำให้เกิดปัญหามากมาย 'เมื่อเราคิดถึงจากมุมมองสองจุด: จากจุดเข้ารหัสของมุมมองและจากมุมมอง DBA มันง่ายมากที่จะเข้ามาและแนะนำบั๊กสำหรับสิ่งต่าง ๆ เช่นเทคนิคการเขียนโปรแกรมที่ไม่ดีความพยายามขี้เกียจในการเขียนโค้ด, การไม่มีประสบการณ์, สัตว์เลี้ยงสุดคลาสสิคที่ฉันมีตัวอย่างกับคน SQL ที่กระโดดบน Google และค้นหาเว็บไซต์ มีตัวอย่างและทำสำเนาและวางรหัสที่มีอยู่ และทำซ้ำการเข้ารหัสที่ไม่ดีการทุจริตต่อหน้าที่และนำไปผลิตเพราะมันเพิ่งเกิดขึ้นเพื่อให้ผลลัพธ์ที่พวกเขาต้องการ คุณมีความท้าทายอื่น ๆ เช่นวันนี้เราทุกคนรีบไปที่นี้สิ่งที่เราเรียกว่าการแข่งขันเป็นศูนย์: พยายามทำทุกอย่างให้ถูกและเร็วมากจนเรามีสถานการณ์ที่เราไม่ได้จ้างต่ำกว่า - จ่ายพนักงาน และฉันไม่ได้หมายความว่าอย่างไร้เล่ห์เหลี่ยม แต่เราไม่ได้จ้างผู้เชี่ยวชาญสำหรับงานที่เป็นไปได้ทั้งหมด กาลครั้งหนึ่งสิ่งที่เกี่ยวกับคอมพิวเตอร์คือวิทยาศาสตร์จรวด มีส่วนร่วมในสิ่งต่าง ๆ ที่ดังขึ้นและดังมากหรือเข้าไปในอวกาศหรือวิศวกรเป็นชายและหญิงที่ผ่านการรับรองอย่างหนักที่จบปริญญาและมีการศึกษาที่เข้มงวดซึ่งทำให้พวกเขาไม่สามารถทำสิ่งที่บ้า

ทุกวันนี้มีคนจำนวนมากเข้ามามีส่วนร่วมในการพัฒนาและออกแบบและฐานข้อมูลที่ไม่เคยมีประสบการณ์มาก่อนไม่จำเป็นต้องมีการฝึกอบรมหรือการสนับสนุนที่เหมือนกัน ดังนั้นคุณจะจบลงด้วยสถานการณ์ของมือสมัครเล่นดั้งเดิมกับผู้เชี่ยวชาญ และมีบรรทัดที่โด่งดังฉันจำไม่ได้ว่าใครเป็นคนสร้างใบเสนอราคาบรรทัดนั้นพูดว่า“ ถ้าคุณคิดว่าการจ้างผู้เชี่ยวชาญให้ทำงานให้แพงรอจนกระทั่งคุณจ้างมือสมัครเล่นสองคนที่สร้างปัญหาขึ้นมาและคุณ ต้องทำความสะอาด” ดังนั้น SQL จึงมีปัญหานั้นและมันง่ายมากที่จะเรียนรู้มันใช้งานง่ายมาก แต่ในความคิดของฉันมันไม่ใช่ภาษาการเขียนโปรแกรมที่สมบูรณ์แบบ มันง่ายมากที่จะทำสิ่งต่าง ๆ เช่นเลือกดาวจากที่ใดก็ได้และดึงสิ่งเหล่านั้นลงในภาษาการเขียนโปรแกรมที่คุณคุ้นเคยกับเช่น PHP และ Ruby หรือ Python และใช้ภาษาการเขียนโปรแกรมที่คุณคุ้นเคย การจัดการข้อมูลแทนที่จะทำแบบสอบถามที่ซับซ้อนมากขึ้นใน SQL และเราเห็นสิ่งนี้มากแล้วผู้คนก็สงสัยว่าทำไมฐานข้อมูลทำงานช้า เป็นเพราะคนหลายล้านคนพยายามที่จะซื้อตั๋วในรูปแบบระบบจองตั๋วออนไลน์

ตอนนี้มันเป็นตัวอย่างที่ยอดเยี่ยมมาก แต่คุณก็สามารถชี้ให้เห็นได้ทั้งหมด ดังนั้นเพื่อที่จะเจาะจุดนั้นจริงๆนี่คือตัวอย่างที่ฉันพกติดตัวไปมาก ฉันเป็นแฟนตัวยงของวิชาคณิตศาสตร์ฉันชอบทฤษฎีความโกลาหลฉันรักชุด Mandelbrot ทางด้านขวามือมีชุด Mandelbrot ซึ่งฉันแน่ใจว่าเราทุกคนคุ้นเคย และทางซ้ายมือมีชิ้นส่วนของ SQL ที่แสดงผลออกมา ตอนนี้ทุกครั้งที่ฉันวางมันลงบนหน้าจอที่ไหนสักแห่งฉันได้ยินสิ่งนี้“ โอ้พระเจ้าผู้สร้างชุด Mandelbrot ด้วย SQL คุณจริงจังไหม? นั่นมันบ้าไปแล้ว! "จุดรวมทั้งหมดของมันคือการแสดงให้เห็นถึงสิ่งที่ฉันเพิ่งสรุปไว้ที่นั่นและนั่นก็ใช่แล้วอันที่จริงคุณสามารถเขียนโปรแกรมเกือบทุกอย่างใน SQL ได้แล้ว มันเป็นภาษาการเขียนโปรแกรมที่ทันสมัยและพัฒนาอย่างมาก เมื่อแรกเริ่มมันเป็นภาษาของแบบสอบถามมันถูกออกแบบมาเพื่อรับข้อมูล ดังนั้นตอนนี้เรามีโครงสร้างที่ซับซ้อนมากและเรามีขั้นตอนการจัดเก็บเรามีวิธีการเขียนโปรแกรมที่ใช้กับภาษาและดังนั้นจึงเป็นเรื่องง่ายมากสำหรับการฝึกเขียนโปรแกรมที่ไม่ดีขาดประสบการณ์ขาดรหัสตัดและวาง พนักงานที่มีรายได้ต่ำพยายามที่จะเป็นพนักงานที่มีรายได้สูงคนแกล้งทำเป็นรู้ แต่ต้องเรียนรู้เกี่ยวกับงาน

ช่วงทั้งหมดของสิ่งที่การทำโปรไฟล์โค้ดและสิ่งที่เราเรียกว่าการดีบักซึ่งไม่ค่อยพบข้อบกพร่องที่หยุดโปรแกรมจากการทำงาน แต่ข้อบกพร่องที่เพิ่งทำร้ายระบบและรหัสที่มีโครงสร้างไม่ดี เมื่อคุณดูที่หน้าจอตอนนี้และคุณคิดว่ามันเป็นเพียงแค่มันน่ารักและคุณคิดว่า“ ว้าวช่างเป็นกราฟิกที่ยอดเยี่ยมฉันชอบที่จะใช้มัน” แต่ลองจินตนาการว่าการใช้ตรรกะทางธุรกิจบางอย่าง . มันดูเรียบร้อยดี แต่มันพูดถึงทฤษฎีความโกลาหลทางคณิตศาสตร์ที่แสดงผลแบบกราฟิก แต่เมื่อคุณคิดเกี่ยวกับสิ่งที่อาจใช้ในตรรกะทางธุรกิจบางอย่างคุณจะได้ภาพที่รวดเร็วมาก และเพื่อแสดงให้เห็นว่า - และฉันขอโทษที่สีกลับด้านมันควรจะเป็นพื้นหลังสีดำและตัวอักษรสีเขียวเป็นหน้าจอสีเขียว แต่คุณยังสามารถอ่านได้

ฉันไปและดูตัวอย่างที่รวดเร็วของสิ่งที่คุณสามารถทำได้ถ้าคุณคลั่งไคล้จริง ๆ และไม่มีประสบการณ์ใด ๆ และมาจากพื้นหลังที่แตกต่างกันของการเขียนโปรแกรมและใช้ไลค์ของ C ++ กับ SQL เพื่อแสดงจุดของฉันก่อน ฉันมอบให้กับแขกผู้มีเกียรติของเราจาก IDERA นี่เป็นแบบสอบถามที่มีโครงสร้างที่เขียนเหมือน C ++ แต่มันเขียนใน SQL และมันดำเนินการจริง แต่จะดำเนินการในช่วงเวลาประมาณสามถึงห้านาที และจะดึงข้อมูลหนึ่งบรรทัดออกมาจากฐานข้อมูลหลาย ๆ ตัวอย่างชัดเจน

จุดรวมของสิ่งนี้คือถ้าคุณไม่มีเครื่องมือที่ถูกต้องหากคุณไม่มีแพลตฟอร์มและสภาพแวดล้อมที่ถูกต้องเพื่อให้สามารถจับสิ่งเหล่านี้และพวกเขาได้รับการผลิตแล้วคุณจะมี 100, 000 คน กดปุ่มระบบทุกวันหรือชั่วโมงหรือนาทีในไม่ช้าคุณจะจบลงด้วยประสบการณ์ที่เชอร์โนบิลที่เหล็กขนาดใหญ่เริ่มละลายและฝังตัวเองลงในแกนกลางของโลกเพราะชิ้นส่วนของรหัสนั้นไม่ควรจะเกิดขึ้น ระบบและเครื่องมือของคุณขอโทษที่ฉันควรหยิบมันขึ้นมาก่อนที่จะเข้าใกล้ทุกที่ - แม้ผ่านขั้นตอนการทดสอบแม้กระทั่งผ่านการรวมระบบของ UAT และการรวมระบบชิ้นส่วนของรหัสนั้นควรจะหยิบขึ้นมาและไฮไลต์ พูดว่า“ ดูสิมันเป็นโค้ดที่น่ารักมาก ๆ แต่ให้ DBA ช่วยคุณสร้างเคียวรีที่มีโครงสร้างอย่างถูกต้องเพราะตรงไปตรงมานั่นเป็นสิ่งที่น่ารังเกียจ” และ URL ก็อยู่ตรงนั้นคุณสามารถไปดูได้ - มันเรียกว่า แบบสอบถาม SQL ที่ซับซ้อนที่สุดที่คุณเคยเขียน เพราะฉันเชื่อว่าเป็นเรื่องจริงที่จะรวบรวมมันจะทำงาน และถ้าคุณตัดและวางสิ่งนั้นและแค่เลียนแบบฐานข้อมูลมันเป็นสิ่งที่น่าจับตามอง หากคุณมีเครื่องมือในการดูฐานข้อมูลเพียงลองและละลายลงในช่วงสามถึงห้านาทีเพื่อโทรกลับข้อความหนึ่งบรรทัด

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

และด้วยสิ่งนั้นในใจฉันจะมอบให้กับแขกของเราและฉันหวังว่าจะได้ยินว่าพวกเขาได้แก้ไขปัญหานี้อย่างไร โดยเฉพาะอย่างยิ่งการสาธิตฉันคิดว่าเรากำลังจะได้รับ เอริคฉันจะย้อนกลับไป

Eric Kavanagh: ตกลงเบิร์ตเอามันออกไป

Bert Scalzo: โอเคขอบคุณ Bert Scalzo ที่นี่จาก IDERA ฉันเป็นผู้จัดการผลิตภัณฑ์สำหรับเครื่องมือฐานข้อมูลของเรา และฉันจะพูดคุยเกี่ยวกับการแก้จุดบกพร่อง ฉันคิดว่าหนึ่งในสิ่งที่สำคัญที่สุดที่โรบินกล่าวไว้ก่อนหน้านี้ - และมันเป็นเรื่องจริงมากที่การดีบั๊กนั้นยากและไม่สำคัญและเมื่อคุณไปที่การดีบั๊กฐานข้อมูลมันเป็นลำดับความสำคัญยิ่งขึ้น เป็นคำพูดที่สำคัญ

ตกลง. ฉันต้องการเริ่มต้นด้วยประวัติการเขียนโปรแกรมเพราะหลายครั้งที่ฉันเห็นคนที่ไม่ได้ดีบั๊กพวกเขาไม่ได้ใช้ดีบั๊กพวกเขาเพียงแค่เขียนโปรแกรมด้วยภาษาใดก็ตามที่พวกเขาใช้และหลายครั้งที่พวกเขาจะพูดกับฉัน “ สิ่งที่ดีบั๊กเกอร์คือสิ่งใหม่และเรายังไม่ได้เริ่มใช้สิ่งเหล่านั้น” ดังนั้นสิ่งที่ฉันทำคือฉันแสดงแผนภูมิเส้นลำดับเวลาก่อนประวัติศาสตร์อายุวัยกลางคนใจดี พูดว่าเราอยู่ที่ไหนในแง่ของภาษาการเขียนโปรแกรม และเรามีภาษาโบราณมากเริ่มต้นในปี 1951 ด้วยรหัสการชุมนุมและ Lisp และ FACT และ COBOL จากนั้นเราจะเข้าสู่กลุ่มต่อไป Pascals และ Cs และจากนั้นกลุ่มถัดไป C ++ s และดูว่าเครื่องหมายคำถามนั้นอยู่ที่ไหน - เครื่องหมายคำถามนั้นอยู่ที่ประมาณราวปี 1978 ถึง 1980 บางทีที่ไหนสักแห่งในช่วงนั้น debuggers พร้อมให้เราแล้วพูดว่า“ เฮ้ฉันไม่ได้ใช้ดีบักเกอร์” เพราะนั่นเป็นหนึ่งในสิ่งใหม่ ๆ เหล่านั้น” จากนั้นคุณต้องเริ่มเขียนโปรแกรมคุณรู้ไหมย้อนกลับไปในปี 1950 สาเหตุที่เป็น วิธีเดียวที่คุณจะหนีจากการเรียกร้องนั้น

ตอนนี้อีกสิ่งที่ตลกเกี่ยวกับแผนภูมินี้คือ Dez เพิ่งแสดงความคิดเห็นเกี่ยวกับ Grace Hopper ฉันรู้จัก Grace จริงๆแล้วมันตลกดี จากนั้นอีกสิ่งหนึ่งที่ฉันหัวเราะคือเขาพูดคุยเกี่ยวกับโทรพิมพ์และฉันกำลังนั่งอยู่ที่นั่น“ ชายนั่นเป็นก้าวกระโดดที่ยิ่งใหญ่ที่สุดที่เราเคยมีในการผลิตเมื่อเราไปจากไพ่ไปจนถึงโทรพิมพ์นั่นคือการกระโดดครั้งยิ่งใหญ่ที่สุด ” ดังนั้นและฉันได้ตั้งโปรแกรมในทุกภาษาที่นี่รวมถึง SNOBOL ที่ไม่มีใครเคยได้ยินมาก่อนมันเป็น CDC, Control Data Corporation ดังนั้นฉันคิดว่าฉันแก่เกินไปสำหรับอุตสาหกรรมนี้ .

Dez Blanchfield: ฉันจะบอกว่าคุณอายุมากแล้วที่นั่น

Bert Scalzo: ใช่ฉันกำลังบอกคุณฉันรู้สึกเหมือนคุณปู่ซิมป์สัน ดังนั้นฉันจึงดูการดีบักและมีวิธีการดีบักที่แตกต่างกัน คุณอาจจะพูดถึงสิ่งที่เราทุกคนคิดว่าเป็นวิธีการแบบดั้งเดิมในการดีบักเกอร์และก้าวผ่านโค้ด แต่คนจะใช้รหัสของพวกเขา นั่นคือสิ่งที่คุณติดงบลงในรหัสของคุณและบางทีคุณอาจสร้างไฟล์ออกไฟล์ติดตามหรือบางสิ่งบางอย่างและเพื่อให้คุณใช้รหัสของคุณ ฉันจะนับว่าเป็นการดีบั๊กมันหนักขึ้นเล็กน้อยวิธีการทำ แต่มันนับ แต่เราก็มีคำสั่งพิมพ์ที่โด่งดัง: คุณดูและผู้คนใส่คำแถลงการพิมพ์เข้าไปในนั้นและฉันได้เห็นเครื่องมือที่ - และเป็นเครื่องมือฐานข้อมูล - ซึ่งถ้าคุณไม่รู้วิธีใช้ดีบักเกอร์ คุณกดปุ่มแล้วมันจะพิมพ์ข้อความไปทั่วทั้งรหัสของคุณจากนั้นเมื่อคุณทำเสร็จแล้วคุณจะกดปุ่มอีกปุ่มหนึ่ง เพราะนั่นเป็นวิธีที่ผู้คนจำนวนมาก debug

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

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

โปรไฟล์ปรากฏตัวครั้งแรกในปีค. ศ. 1979 ดังนั้นสิ่งเหล่านี้จึงมีมาเป็นเวลานานเช่นกัน เหมาะสำหรับการค้นหาการใช้ทรัพยากรหรือปัญหาด้านประสิทธิภาพในคำอื่น ๆ ที่มีประสิทธิภาพ โดยทั่วไปแล้วมันแยกจากตัวดีบักถึงแม้ว่าฉันจะทำงานร่วมกับเครื่องมือดีบั๊กที่ทำทั้งสองอย่างในเวลาเดียวกัน และในขณะที่ผู้สร้างโปรไฟล์ฉันคิดว่าเป็นเครื่องมือที่น่าสนใจมากขึ้นถ้าฉันรู้สึกว่ามีคนไม่เพียงพอที่จะทำการดีบั๊กแล้วแน่นอนว่ามีคนไม่พอเพราะโปรไฟล์หนึ่งในสิบ debuggers จะโพรไฟล์ดูเหมือนว่า และนั่นเป็นความอัปยศเพราะการทำโปรไฟล์สามารถสร้างความแตกต่างได้อย่างมาก ตอนนี้ภาษาฐานข้อมูลตามที่เราได้พูดถึงก่อนหน้านี้คุณได้รับ SQL - และเราได้บังคับให้ตรึงหมุดกลมเข้าไปในช่องสี่เหลี่ยมที่นี่และบังคับให้มันกลายเป็นภาษาการเขียนโปรแกรม - และ Oracle นั่นคือ PL / SQL - นั่นคือภาษาขั้นตอน SQL - และ SQL Server, มันคือ Transact-SQL, มันคือ SQL-99, มันคือ SQL / PSM - สำหรับ, ฉันคิดว่าเป็นโมดูลที่เก็บไว้ในกระบวนงาน Postgres ให้ชื่ออื่น, DB2 แต่เป็นชื่ออื่น, Informix, แต่ประเด็นก็คือทุกคนบังคับให้โครงสร้างแบบ 3GL; กล่าวอีกนัยหนึ่งคือ FOR loops ที่การประกาศตัวแปรและสิ่งอื่น ๆ ทั้งหมดที่ต่างจาก SQL นั้นตอนนี้เป็นส่วนหนึ่งของ SQL ในภาษาเหล่านั้น ดังนั้นคุณต้องสามารถดีบัก PL / SQL หรือ Transact-SQL เช่นเดียวกับที่คุณใช้กับโปรแกรม Visual Basic

ตอนนี้วัตถุฐานข้อมูลนี่เป็นสิ่งสำคัญเพราะผู้คนจะพูดว่า "เอาล่ะฉันต้องดีบั๊กอะไรในฐานข้อมูล" และคำตอบก็คือทุกอย่างที่คุณสามารถเก็บไว้ในฐานข้อมูลเป็นรหัสได้ - ถ้าฉันทำ T-SQL หรือ PL / SQL - และฉันกำลังจัดเก็บวัตถุในฐานข้อมูลอาจเป็นกระบวนงานที่เก็บไว้หรือฟังก์ชันที่เก็บไว้ แต่ก็มีทริกเกอร์ด้วยเช่นกันทริกเกอร์นั้นเหมือนกับกระบวนงานที่เก็บไว้ แต่มันก็เกิดเหตุการณ์บางอย่าง ตอนนี้บางคนในทริกเกอร์ของพวกเขาจะวางโค้ดหนึ่งบรรทัดแล้วเรียกขั้นตอนการจัดเก็บเพื่อให้พวกเขาเก็บรหัสและโพรซีเดอร์ที่เก็บไว้ทั้งหมดไว้ แต่เป็นแนวคิดเดียวกัน: มันยังคงเป็นสิ่งที่ทำให้เกิดสิ่งทั้งมวล และในฐานะที่เป็นออราเคิลพวกเขามีสิ่งที่เรียกว่าแพคเกจซึ่งเหมือนกับห้องสมุดถ้าคุณต้องการ คุณใส่กระบวนงานที่เก็บไว้ 50 หรือ 100 รายการไว้ในการจัดกลุ่มเดียวเรียกว่าแพคเกจดังนั้นมันจึงเป็นเหมือนห้องสมุด นี่คือตัวแก้จุดบกพร่องแบบเก่า นี่เป็นเครื่องมือที่จริงแล้วจะเข้าไปข้างในและติดคำสั่ง debug ทั้งหมดในโค้ดของคุณ ดังนั้นทุกที่ที่คุณเห็นบล็อกการดีบักอย่าลบตัวเริ่มต้นอัตโนมัติและการติดตามตัวแก้จุดบกพร่องโดยเครื่องมือบางอย่างติดอยู่ และเส้นข้างนอกนั่นคือส่วนน้อยของรหัสนั่นคือวิธีการดีบั๊กแบบไม่มีคู่มือ

และสาเหตุที่ฉันนำมาใช้คือถ้าคุณพยายามทำสิ่งนี้ด้วยมือคุณจะต้องพิมพ์รหัสการดีบั๊กเพิ่มเติมเพื่อใส่ในงบการพิมพ์เหล่านี้มากกว่าที่คุณใช้รหัส ดังนั้นในขณะนี้อาจใช้งานได้และในขณะที่ดีกว่าไม่มีอะไรนี่เป็นวิธีที่ยากมากในการดีบักโดยเฉพาะอย่างยิ่งถ้าจะใช้เวลา 10 ชั่วโมงเพื่อให้สิ่งนี้ทำงานและที่มีปัญหาอยู่ในบรรทัดที่สาม ถ้าฉันทำเซสชันการดีบักแบบโต้ตอบฉันจะรู้ได้ที่บรรทัดที่สาม - ห้านาที - เดี๋ยวก่อนมีปัญหาที่นี่ฉันสามารถเลิกได้ แต่ด้วยสิ่งนี้ฉันต้องรอให้มันทำงานจนเสร็จและจากนั้นฉันต้องดูไฟล์ติดตามที่อาจมีคำสั่งการพิมพ์เหล่านี้อยู่และลองค้นหาเข็มใน กองหญ้า อีกครั้งมันดีกว่าไม่มีอะไร แต่มันจะไม่เป็นวิธีที่ดีที่สุดในการทำงาน ตอนนี้นี่คือสิ่งที่ไฟล์นั้นจะมีลักษณะเช่นนั้นมาจากสไลด์ก่อนหน้า กล่าวอีกนัยหนึ่งฉันรันโปรแกรมและมันก็มีคำสั่งพิมพ์จำนวนมากในไฟล์ติดตามนี้และฉันอาจหรืออาจไม่สามารถสูบฉีดผ่านสิ่งนี้และค้นหาสิ่งที่ฉันต้องการค้นหา ดังนั้นอีกครั้งฉันไม่แน่ใจว่านี่คือวิธีที่คุณต้องการทำงาน

ตอนนี้ตัวดีบั๊กแบบโต้ตอบ - และถ้าคุณใช้บางอย่างเช่น Visual Studio ในการเขียนโปรแกรมหรือ Eclipse คุณมีตัวดีบั๊กและคุณใช้มันกับภาษาอื่น ๆ ของคุณ - ไม่คิดว่าจะใช้พวกเขาที่นี่กับฐานข้อมูลของคุณ และมีเครื่องมือออกมาเช่น DB Artisan ของเราและ Rapid SQL ของเรานี่คือ Rapid SQL ที่นี่ซึ่งมีดีบักเกอร์และคุณสามารถเห็นทางด้านซ้ายมือฉันมีขั้นตอนการจัดเก็บที่เรียกว่า "ตรวจสอบรายการที่ซ้ำกัน" โดยพื้นฐานแล้วมันจะไปดูและดูว่าฉันมีหลายแถวในตารางที่มีชื่อภาพยนตร์เรื่องเดียวกันหรือไม่ ดังนั้นฐานข้อมูลสำหรับภาพยนตร์ และคุณจะเห็นทางด้านขวามือบนสามอันดับแรกฉันมีซอร์สโค้ดอยู่ตรงกลางฉันมีสิ่งที่เรียกว่าตัวแปรเฝ้าดูและถาดโทรสแต็คของฉันแล้วที่ด้านล่างฉัน ' ได้รับข้อความที่ส่งออกบางส่วน และสิ่งสำคัญคือที่นี่ถ้าคุณดูที่ลูกศรสีแดงแรกนั้นถ้าฉันเลื่อนเมาส์ไปที่ตัวแปรฉันจะเห็นว่าคุณค่าคืออะไรในตัวแปรนั้น ณ เวลานั้นในขณะที่ฉันกำลังก้าวผ่านโค้ด และมันมีประโยชน์จริง ๆ และจากนั้นฉันก็สามารถทีละบรรทัดทีละรหัสฉันไม่ต้องบอกว่าเอ็กซีคิวต์ฉันสามารถพูดทีละบรรทัดให้ฉันดูสิ่งที่เกิดขึ้นก้าวอีกบรรทัดหนึ่งให้ฉันดูว่าเกิดอะไรขึ้น และฉันกำลังทำสิ่งนี้ในฐานข้อมูล และถึงแม้ว่าฉันจะนั่งอยู่บน Rapid SQL บนพีซีของฉันและฐานข้อมูลของฉันอยู่ในคลาวด์ฉันก็ยังสามารถทำการดีบักแบบรีโมทและดูและควบคุมจากที่นี่และทำการดีบั๊กเหมือนกับที่ฉันใช้กับภาษาอื่น

ทีนี้ลูกศรต่อไปที่นั่น - คุณสามารถเห็นลูกศรชี้ไปทางขวาตรงไปทางเอาท์พุท DBMS นั่นคือที่ที่เคอร์เซอร์ของฉันอยู่ในขณะนี้ - พูดอีกอย่างคือฉันก้าวแล้วและนั่นคือที่ที่ฉันอยู่ ช่วงเวลาที่. ดังนั้นถ้าฉันพูดว่า“ ก้าวอีกครั้ง” ฉันจะไปที่บรรทัดถัดไป ตอนนี้ด้านล่างที่คุณจะเห็นจุดสีแดง นั่นคือเบรกพอยต์ที่บอกว่า“ เฮ้ฉันไม่ต้องการก้าวข้ามเส้นเหล่านี้” ถ้าฉันแค่อยากข้ามทุกอย่างและไปที่จุดสีแดงนั่นฉันสามารถกดปุ่มเรียกใช้แล้วมันจะวิ่ง จากจุดนี้ไปจนถึงจุดสิ้นสุดหรือจุดพักหากมีจุดพักใด ๆ จากนั้นจุดหยุดก็จะหยุดและให้ฉันก้าวไปอีกครั้ง และเหตุผลที่สำคัญและมีประสิทธิภาพก็คือเพราะเมื่อฉันทำทั้งหมดนี้สิ่งที่เกิดขึ้นในกลางและล่าง - แต่ที่สำคัญที่สุดกลาง - จะเปลี่ยนและฉันสามารถเห็นค่าจากตัวแปรของฉัน ฉันสามารถเห็นร่องรอยการโทรสแต็คของคุณคุณรู้และข้อมูลทั้งหมดนั้นจะปรากฏที่นั่นขณะที่ฉันก้าวผ่านโค้ดดังนั้นฉันสามารถเห็นและรู้สึกและได้รับความเข้าใจในสิ่งที่เกิดขึ้นและรหัสเป็นอย่างไร ทำงานในเวลาดำเนินการ และโดยทั่วไปฉันสามารถพบปัญหาหากมีหรือถ้าฉันดีพอที่จะจับมัน

ตกลงตอนนี้ฉันกำลังจะพูดถึง profiler และในกรณีนี้นี่คือ profiler ที่ฉันเห็นผ่านตัวดีบัก จำได้ไหมว่าฉันบอกว่าบางครั้งมันแยกจากกัน ในกรณีนี้และอีกครั้งฉันอยู่ใน Rapid SQL และฉันเห็นว่ามีระยะขอบด้านซ้ายถัดจากหมายเลขบรรทัด และนั่นคือคือจำนวนวินาทีหรือไมโครวินาทีที่ใช้ในการเรียกใช้งานโค้ดแต่ละบรรทัดและฉันเห็นได้อย่างชัดเจนว่าเวลาทั้งหมดของฉันใช้เวลาในลูปนี้สำหรับที่ฉันเลือกทุกอย่างจากตาราง . และสิ่งที่เกิดขึ้นภายในวง FOR อาจเป็นสิ่งที่ฉันต้องดูและถ้าฉันสามารถทำให้ดีขึ้นได้ก็จะจ่ายเงินปันผล ฉันจะไม่ได้รับการปรับปรุงใด ๆ โดยทำงานกับสายเหล่านั้นที่มีค่า 0.90 หรือ 0.86 มีเวลาไม่มากนัก ตอนนี้ในกรณีนี้และอีกครั้งฉันอยู่ใน Rapid SQL คุณจะเห็นว่าฉันสามารถสร้างโปรไฟล์ที่ผสมกับการดีบักได้อย่างไร ตอนนี้สิ่งที่ดีคือ Rapid SQL ยังให้คุณทำอย่างอื่น Rapid SQL ช่วยให้คุณพูดว่า“ คุณรู้อะไรไหม ฉันไม่ต้องการที่จะอยู่ใน debugger ฉันแค่ต้องการเรียกใช้แล้วฉันต้องการดูแบบกราฟิกหรือข้อมูลประเภทเดียวกัน

และคุณสามารถเห็นได้ว่าฉันไม่ได้อยู่ในโปรแกรมดีบั๊กอีกต่อไปแล้วมันก็รันโปรแกรมและหลังจากการดำเนินการเสร็จสิ้นมันทำให้แผนภูมิของฉันบอกสิ่งต่าง ๆ เพื่อที่ฉันจะได้เห็นว่าฉันมีคำสั่งเดียว แผนภูมิวงกลมส่วนใหญ่และถ้าฉันดูฉันเห็นในตารางนั้นที่ด้านล่างบรรทัดที่ 23 มีการวนรอบ FOR อีกครั้ง: เขาสละเวลามากที่สุดในความเป็นจริงเขาจริง ๆ แล้วว่าสีแดงเข้มเคี้ยวแผนภูมิวงกลมทั้งหมด และนี่เป็นอีกวิธีในการทำโปรไฟล์ เราเรียกว่า "นักวิเคราะห์รหัส" ในเครื่องมือของเรา แต่โดยพื้นฐานแล้วมันเป็นเพียงแค่ตัวสร้างโปรไฟล์ที่แยกออกจากตัวดีบัก บางคนชอบทำวิธีแรกบางคนชอบทำวิธีที่สอง

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

ตกลงฉันจะทำตัวอย่างด่วนจริงที่นี่ มันไม่ใช่ความตั้งใจของฉันที่จะผลักดันผลิตภัณฑ์ฉันแค่ต้องการแสดงให้คุณเห็นว่าตัวดีบักดูเหมือน 'ทำให้หลายครั้งที่ผู้คนจะพูดว่า "ฉันไม่เคยเห็นสิ่งเหล่านี้มาก่อนเลย" และมันก็ดูสวยในสไลด์หน้าจอ แต่ดูเหมือนเมื่ออยู่ในเคลื่อนไหว? ดังนั้นบนหน้าจอของฉันฉันใช้ผลิตภัณฑ์ DB Artisan ของเรา เรามีดีบักเกอร์ในนั้นเช่นกัน DB Artisan นั้นมีความหมายมากกว่าสำหรับ DBAs Rapid SQL นั้นมีความหมายมากกว่าสำหรับนักพัฒนา แต่ฉันได้เห็นนักพัฒนาที่ใช้ DB Artisan และฉันเคยเห็น DBA ที่ใช้ Rapid ดังนั้นอย่าจมอยู่กับผลิตภัณฑ์ และที่นี่ฉันมีทางเลือกในการทำการดีบัก แต่ก่อนที่ฉันจะเริ่มการดีบักฉันจะแยกรหัสนี้เพื่อให้คุณสามารถดูว่ารหัสลักษณะเป็นอย่างไรก่อนที่ฉันจะเริ่มเรียกใช้ ดังนั้นนี่คือรหัสเดียวกันแน่นอนที่อยู่ในภาพหน้าจอนี่คือการตรวจสอบของฉันสำหรับการซ้ำซ้อน และฉันต้องการที่จะแก้ปัญหานี้ดังนั้นฉันจึงกด debug และตอนนี้มันใช้เวลาสักครู่และคุณพูดว่า“ เอาล่ะทำไมใช้เวลาซักครู่” จำการดีบักแบบรีโมท: การดีบักเกิดขึ้นจริง ๆ บนเซิร์ฟเวอร์ฐานข้อมูลของฉันไม่ใช่ในพีซีของฉัน ดังนั้นจึงต้องข้ามไปและสร้างเซสชันที่นั่นสร้างสิ่งที่ดีบั๊กจากระยะไกลเชื่อมต่อเซสชั่นของฉันเข้ากับเซสชันการดีบักระยะไกลนั้นและตั้งค่าช่องทางการสื่อสาร

ดังนั้นตอนนี้นี่คือลูกศรของฉันมันขึ้นอยู่ที่ด้านบนทีละบรรทัดนั่นคือที่ฉันอยู่ในรหัส และถ้าฉันกดไอคอนที่สามตรงนั้นซึ่งเป็นขั้นตอนหนึ่งคุณจะเห็นลูกศรนั้นเพิ่งขยับและถ้าฉันกดมันต่อไปคุณจะเห็นมันเคลื่อนไหวต่อไป ทีนี้ถ้าฉันอยากลงไปที่ FOR FOR วงนี้เพราะฉันรู้ว่าปัญหาอยู่ที่ใดฉันสามารถกำหนดจุดพักได้ ฉันคิดว่าฉันตั้งที่ โอ้ยิงฉันมีหนึ่งในปุ่มจับภาพหน้าจอของฉันที่แมปไปยังปุ่มเดียวกับตัวดีบักนั่นคือสิ่งที่ทำให้เกิดความสับสน ตกลงดังนั้นฉันเพิ่งตั้งเบรกพอยต์ด้วยตนเองดังนั้นตอนนี้แทนที่จะทำตามขั้นตอนขั้นตอนขั้นตอนจนกระทั่งฉันไปถึงที่นั่นจริง ๆ ฉันสามารถพูดได้ว่า“ ไปข้างหน้าและทำสิ่งนี้” และมันจะหยุด สังเกตุว่ามันเคลื่อนฉันไปจนถึงจุดที่หยุดพักดังนั้นตอนนี้ฉันเข้าสู่บริบทของการวิ่งวนรอบนี้ฉันสามารถเห็นว่าตัวแปรทั้งหมดของฉันถูกตั้งค่าเป็นอะไรซึ่งไม่น่าแปลกใจเพราะฉันเริ่มต้นมันทั้งหมด ถึงศูนย์ และตอนนี้ฉันสามารถก้าวเข้าสู่วงนี้และเริ่มดูว่าเกิดอะไรขึ้นภายในวงนี้

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

และด้วยสิ่งนั้นฉันจะระงับการสาธิตและย้อนกลับไปเพราะเราต้องการให้แน่ใจว่าเรามีเวลาสำหรับคำถามและคำตอบ ดังนั้นฉันจะเปิดขึ้นสำหรับคำถามและคำตอบ

Eric Kavanagh: เอา ล่ะ Robin อาจเป็นคำถามจากคุณแล้วก็เป็นคู่จาก Dez

Robin Bloor: ใช่แน่นอนฉันพบว่าสิ่งนี้มีเสน่ห์แน่นอน ฉันทำงานกับสิ่งนี้ แต่ฉันไม่เคยทำงานกับอะไรแบบนี้ในฐานข้อมูล คุณช่วยให้ฉันมีความคิดในสิ่งที่ผู้คนใช้ profiler เพื่อ? เพราะเป็นเช่นนั้นพวกเขากำลังดู - เพราะฉันเข้าใจว่าพวกเขากำลัง - พวกเขากำลังมองปัญหาด้านประสิทธิภาพการทำงานมันจะช่วยให้คุณแยกแยะความแตกต่างระหว่างเมื่อฐานข้อมูลต้องใช้เวลาและเมื่อรหัสใช้เวลาหรือไม่

Bert Scalzo: คุณรู้นั่นเป็นคำถามที่ยอดเยี่ยม สมมติว่าฉันทำงานใน Visual Basic และฉันภายใน Visual Basic ของฉันฉันจะเรียก Transact-SQL หรือ PL / SQL ให้ฉันทำ PL / SQL เพราะ Oracle ไม่ค่อยเล่นกับเครื่องมือของ Microsoft ฉันอาจทำโปรไฟล์ Visual Basic ของฉันและโปรไฟล์อาจพูดว่า“ เฮ้ฉันเรียกขั้นตอนการจัดเก็บนี้และใช้เวลานานเกินไป” แต่จากนั้นฉันสามารถเข้าสู่ขั้นตอนการจัดเก็บและสามารถทำโปรไฟล์ฐานข้อมูลในที่จัดเก็บได้ ขั้นตอนและพูดว่า“ ตกลงจาก 100 ข้อความที่อยู่ที่นี่นี่คือห้าข้อที่ก่อให้เกิดปัญหา” และดังนั้นคุณอาจต้องทำแท็กทีมที่คุณต้องใช้หลายโปรไฟล์

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

Robin Bloor: ใช่แล้วมันวิเศษมาก ฉันไม่เคยทำสิ่งนี้ แน่นอนว่าเมื่อฉันมีปัญหาเกี่ยวกับฐานข้อมูลมันก็เหมือนกับว่าฉันจะไปทางใดทางหนึ่งกับฐานข้อมูลหรือจัดการกับรหัส; ฉันไม่สามารถจัดการกับพวกเขาทั้งสองในเวลาเดียวกัน แต่ที่นั่นอีกครั้งฉันไม่ได้ทำ - ฉันไม่เคยมีส่วนร่วมในการสร้างแอปพลิเคชันที่เราได้จัดเก็บขั้นตอนดังนั้นฉันเดาว่าฉันไม่เคยเจอปัญหาที่เคยทำให้ฉันเครียดความคิดที่คุณ แยกรหัสขึ้นระหว่างฐานข้อมูลและโปรแกรม แต่ทำทุกอย่าง - ฉันคิดว่าคำตอบจะเป็นใช่ แต่นี่เป็นส่วนหนึ่งของกิจกรรมทีมพัฒนาเมื่อคุณอยู่ในทางใดทางหนึ่งหรืออีกทางหนึ่งพยายามแก้ไขสิ่งที่เสียหายหรืออาจพยายามนำสิ่งใหม่มาใช้ แอพลิเคชันด้วยกัน แต่ทั้งหมดนี้ปรับแต่งพร้อมกับส่วนประกอบอื่น ๆ ทั้งหมดที่ฉันคาดหวังในสภาพแวดล้อมหรือไม่? ฉันคาดหวังได้หรือไม่ว่าฉันสามารถคลิปนี้พร้อมกับชุดทดสอบทั้งหมดของฉันและสิ่งอื่น ๆ ทั้งหมดที่ฉันจะทำและกับสิ่งที่การจัดการโครงการของฉันนั่นคือทั้งหมดนี้คลิปด้วยกันไหม?

Bert Scalzo: ใช่มันสามารถกลายเป็นส่วนหนึ่งของกระบวนการที่มีโครงสร้างเพื่อทำการเขียนโปรแกรมหรือการพัฒนาของคุณ และมันก็ตลกเมื่อสัปดาห์ที่แล้วที่ฉันมีลูกค้าที่กำลังสร้างแอปพลิเคชันบนเว็บและฐานข้อมูลของพวกเขามีขนาดเล็กในอดีตและดังนั้นความจริงที่ว่าพวกเขาไม่ใช่โปรแกรมเมอร์ที่ดีมากเลยไม่เคยทำร้ายพวกเขา ฐานข้อมูลของพวกเขาเติบโตขึ้นเรื่อย ๆ ในช่วงหลายปีที่ผ่านมาและตอนนี้มันใช้เวลา 20 วินาทีในหน้าเว็บระหว่างที่คุณพูดว่า "ลงชื่อเข้าใช้และให้ข้อมูลบางอย่างแก่ฉันเพื่อดู" และเมื่อหน้าจอปรากฏขึ้นจริง ปัญหาประสิทธิภาพ และพวกเขารู้ว่าปัญหาไม่ได้อยู่ในจาวาหรือที่อื่น ๆ แต่พวกเขามีขั้นตอนการจัดเก็บหลายพันรายการดังนั้นพวกเขาจึงต้องเริ่มการทำโปรไฟล์ขั้นตอนการจัดเก็บเพื่อค้นหาว่าทำไมหน้าเว็บนี้ถึงใช้เวลา 20 วินาทีจึงจะเกิดขึ้น และเราพบว่าพวกเขามีการเข้าร่วมคาร์ทีเซียนในหนึ่งในงบเลือกของพวกเขาและไม่ทราบ

Robin Bloor: ว้าว

Bert Scalzo: แต่มีบางคนพูดกับฉันครั้งหนึ่งว่า“ พวกเขาจะได้เข้าร่วมกับคาร์ทีเซียนได้อย่างไรและไม่รู้หรือไม่” และนี่จะฟังดูน่ากลัวจริงๆ บางครั้งโปรแกรมเมอร์ที่ไม่สะดวกกับ SQL จะทำอะไรบางอย่างเช่นให้การเข้าร่วม Cartesian กับฉัน แต่จากนั้นให้ฉันกลับบันทึกแรกเท่านั้นดังนั้นฉันรู้ว่าฉันได้รับบางอย่างและฉันต้องการเพียงครั้งแรก ดังนั้นพวกเขาจึงไม่ตระหนักว่าพวกเขาเพิ่งนำระเบียนพันล้านรายการกลับมาหรือดูผ่านหลายพันรายการ 'เพราะพวกเขาได้รับข้อมูลที่พวกเขาสนใจ

Robin Bloor: ว้าวฉันรู้แล้วมันคือสิ่งที่เรียกว่า - นั่นคือสิ่งที่ Dez กำลังดำเนินอยู่ในแง่ของคนที่ไม่ค่อยมีทักษะเท่าที่ควร หากคุณเป็นโปรแกรมเมอร์คุณควรรู้ว่าความหมายของการออกคำสั่งคืออะไร ฉันหมายถึงจริงๆไม่มีข้อแก้ตัวในระดับที่โง่เขลา ฉันยังสันนิษฐานว่าคุณไม่ทางใดก็ทางหนึ่งเพียงผู้ไม่เชื่อเรื่องพระเจ้าเกี่ยวกับเรื่องนี้เพราะนี่คือทั้งหมดที่มุ่งเน้นด้านฐานข้อมูล ฉันถูกต้องไหม? มันเหมือนกันสิ่งที่คุณใช้ในด้านการเข้ารหัส?

Bert Scalzo: แน่นอนคุณสามารถทำได้ใน Fortran หรือ C หรือ C ++ ในความเป็นจริงใน Unixes บางอันคุณสามารถทำได้สำหรับภาษาสคริปต์ของพวกเขา จริง ๆ แล้วพวกเขามีเครื่องมือเดียวกัน จากนั้นฉันอยากกลับไปอีกหนึ่งวินาทีสำหรับสิ่งที่คุณพูดโดยไม่มีข้อแก้ตัว ฉันจะให้โปรแกรมเมอร์หยุดพักเพราะฉันไม่ชอบโยนโปรแกรมเมอร์ลงใต้รถบัส แต่ปัญหาคือสภาพแวดล้อมทางวิชาการจริง ๆ เพราะเมื่อคุณไปเรียนรู้วิธีการเป็นโปรแกรมเมอร์คุณจะได้เรียนรู้การบันทึกแบบคิดต่อครั้ง คุณไม่ได้สอนการคิดแบบกำหนดเองและนั่นเป็นสิ่งที่ Structured Query Language หรือ SQL ทำงานกับชุด นั่นเป็นสาเหตุที่เรามีสหภาพจุดตัดและเครื่องหมายลบ และบางครั้งมันก็ยากมากสำหรับคนที่ไม่เคยคิดในแง่ของชุดการเลิกปล่อยให้ไปของการประมวลผลบันทึกเวลาและทำงานกับชุด

Robin Bloor: ใช่ฉันอยู่กับคุณแล้ว ฉันหมายถึงตอนนี้ฉันเป็นปัญหาการศึกษา ฉันคิดว่านั่นเป็นปัญหาการศึกษาอย่างสมบูรณ์ฉันคิดว่ามันเป็นเรื่องธรรมดาสำหรับโปรแกรมเมอร์ที่จะคิดขั้นตอน และ SQL นั้นไม่ได้เป็นขั้นตอน แต่เป็นการประกาศ คุณแค่พูดว่า“ นี่คือสิ่งที่ฉันต้องการและฉันไม่สนใจว่าคุณจะทำอย่างไร” คุณรู้ไหม ในขณะที่ภาษาการเขียนโปรแกรมคุณมักจะหงุดหงิดและคุณก็รู้สึกแย่แม้กระทั่งจัดการกับการนับในขณะที่คุณวนซ้ำ ฉันจะไป -

Bert Scalzo: ไม่ตกลงดำเนินการต่อ

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

Robin Bloor: ใช่แล้วนั่นจะเป็นหายนะ ฉันหมายความว่าคุณจะต้องตื่นเต้นไปกับมัน การฟาดฟันเป็นสิ่งที่ไม่ดีเสมอไป

อย่างไรก็ตามฉันจะส่งต่อไปยัง Dez; ฉันแน่ใจว่าเขามีคำถามที่น่าสนใจ

Dez Blanchfield: ขอบคุณใช่ฉันทำ ฉันจะเข้าร่วมกับคุณในการไม่เขียนโปรแกรมไว้ใต้รถบัส ฉันหมายความว่าฉันใช้เวลาหลายปีในชีวิตของฉันในการเป็นนักเขียนโค้ดตัวเองทุกระดับคุณรู้ไหมไม่ว่าจะเป็นตามที่คุณพูดนั่งบนบรรทัดคำสั่งของเครื่อง Unix และในบางกรณีฉันก็มีส่วนเกี่ยวข้องด้วย ในสองพอร์ตที่แตกต่างกันของ Unix จากแพลตฟอร์มฮาร์ดแวร์หนึ่งไปยังอีกแพลตฟอร์มหนึ่ง และคุณสามารถจินตนาการถึงความท้าทายที่เรามี แต่ความจริงก็คือที่นี่บัตรที่ออกจากคุกสำหรับทุกคน coder และผู้บันทึกในโลก มันเป็นวิทยาศาสตร์ของจรวดอย่างแท้จริงที่จะเขียนแน่นทุกครั้งตลอดเวลาเป็นวิทยาศาสตร์จรวด และเรื่องราวที่โด่งดังของผู้คนเช่น Dennis Ritchie และ Brian Kernahan ทำงานบนโค้ดบางส่วนอย่างอิสระจากนั้นเปลี่ยนเป็นบทวิจารณ์การแชทผ่านกาแฟและค้นหาว่าพวกเขาเขียนโค้ดเดียวกันในโปรแกรมเดียวกันหรือไม่ ในทำนองเดียวกัน และพวกเขาทำมันในซี แต่ระดับการเขียนโปรแกรมที่พิถีพิถันนั้นไม่ค่อยมีมากนัก

ความจริงก็คือในแต่ละวันมีเพียง 24 ชั่วโมงต่อวันเจ็ดวันต่อสัปดาห์และเราต้องทำสิ่งต่าง ๆ ให้สำเร็จ และเมื่อมันไม่ใช่แค่โปรแกรมเมอร์แบบดั้งเดิม DBAs และ coders และ scripters และ sysadmin และผู้ดูแลระบบเครือข่ายและเจ้าหน้าที่รักษาความปลอดภัยและทุกอย่างที่ผ่านไปยังด้านข้อมูลพลเมืองในทุกวันนี้ เราได้ยินมาว่าทุกคนแค่พยายามทำงานของพวกเขา และฉันก็คิดว่าสิ่งที่ดีที่สุดสำหรับเรื่องนี้คือฉันรักการสาธิตของคุณและฉันก็ชอบเรื่องที่คุณทิ้งเราไว้ที่นั่นเมื่อไม่นานมานี้คุยกับ Robin เกี่ยวกับความจริงที่ว่าสิ่งนี้มีเฉพาะ - อาจจะไม่มากนัก ช่องเล็ก ๆ - แต่เป็นพื้นที่กว้าง ๆ ที่มันใช้กับการแก้ไขโค้ดและ SQL และฐานข้อมูล แต่ฉันตื่นเต้นมากที่ได้ยินคุณพูดว่าคุณสามารถสะกิดมันได้ที่เชลล์สคริปต์และค้นหาปัญหาบางอย่างเพราะคุณรู้ว่าในวันและอายุของวันนี้เราทำงานเพื่อค่าใช้จ่ายต่ำที่สุดในทุกสิ่ง

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

Bert Scalzo: ใช่แล้ว และฉันจะให้คุณตัวอย่างที่เฉพาะเจาะจงมากเราแค่ต้องการให้งานเสร็จ 'เพราะนักธุรกิจไม่ต้องการความสมบูรณ์แบบ มันเหมือนเกมหมากรุกคอมพิวเตอร์: เกมหมากรุกไม่ได้มองหาคำตอบที่สมบูรณ์ มันมองหาคำตอบที่ดีพอในระยะเวลาที่เหมาะสมดังนั้นเราจึงตั้งโปรแกรม แต่สิ่งที่ฉันค้นพบตอนนี้คือคนส่วนใหญ่แทนที่จะบอกว่าพวกเขาต้องการให้ profiler เป็นส่วนหนึ่งของการทดสอบหน่วย - ซึ่งเป็นวิธีที่ฉันจะทำมัน 'เพราะฉันไม่เห็นว่าเป็นการเสียเวลา - สิ่งที่เกิดขึ้นคือ ขณะนี้มีการดำเนินการในภายหลังในบางครั้งระหว่างการทดสอบการรวมหรือการทดสอบความเครียดหากเราโชคดี แต่ส่วนใหญ่แล้วมันเป็นส่วนหนึ่งของการยกระดับซึ่งมีบางสิ่งบางอย่างเข้าสู่การผลิตมันวิ่งไปซักพักบางทีอาจจะวิ่งไปหลายปีและตอนนี้มันก็วิ่งไม่ดีและตอนนี้เราจะทำการโพรไฟล์ และนั่นดูเหมือนจะเป็นสถานการณ์ทั่วไปมากขึ้นในขณะนี้

Dez Blanchfield: ใช่และฉันคิดว่าคำว่า "หนี้ทางเทคนิค" อาจเป็นคำที่คุณคุ้นเคยมากกว่า ฉันรู้ว่าโรบินและฉันเป็นอย่างแน่นอน ฉันคิดว่าทุกวันนี้โดยเฉพาะอย่างยิ่งในแนวทางที่คล่องตัวในการพัฒนาและสร้างระบบสำหรับฉันแนวคิดของหนี้ทางเทคนิคตอนนี้เป็นเรื่องจริงมากและเราก็คำนึงถึงมันในโครงการ ฉันรู้ว่าฉันหมายความว่าเรามีโครงการของเราเองเช่น Media Lens และอื่น ๆ ซึ่งเราได้ทำการเขียนโค้ดทุกวันและสิ่งต่าง ๆ ทั่วทั้งกลุ่ม Bloor และเมื่อใดก็ตามที่เรากำลังสร้างบางสิ่งเรามองไปที่ฉันดูมันและมองจากมุมมองของสิ่งที่ทำให้ฉันต้องเสียค่าใช้จ่ายในการแก้ไขในตอนนี้และฉันจะได้มันใน สามารถและออกจากที่นั่นแล้วดูและดูว่าสิ่งนี้กำลังจะพัง และสืบทอดหนี้ทางเทคนิคนี้ที่ฉันรู้ว่าฉันจะต้องวนกลับในภายหลังและแก้ไข

และฉันหมายความว่าฉันได้ทำไปแล้วในเจ็ดวันที่ผ่านมา: ฉันเขียนเครื่องมือและสคริปต์สองสามรายการฉันได้เขียนภาษา Python สองสามชิ้นและฉันได้นำไปใช้กับ Mongo แน่ใจว่ามันดีและสะอาดและปลอดภัย แต่เพิ่งได้รับแบบสอบถามที่ฉันต้องทำรู้ว่าฉันต้องการฟังก์ชั่นที่จะทำงานเพื่อไปที่ปริศนาที่ใหญ่กว่า; นั่นคือความเจ็บปวดที่แท้จริงของฉัน และคุณต้องมีหนี้ทางเทคนิคนี้และฉันคิดว่าตอนนี้ไม่ได้เป็นเพียงแค่บางโอกาสฉันคิดว่านี่เป็นส่วนหนึ่งของ DNA ของการพัฒนาในขณะนี้ ผู้คนเพียงแค่ - ไม่กระฉับกระเฉง - พวกเขายอมรับว่าหนี้ทางเทคนิคเป็นปัญหาประเภทปกติและพวกเขาต้องได้รับมัน เป็นที่ที่คุณต้องรับภาระทางเทคนิค และฉันคิดว่าสิ่งที่ยอดเยี่ยมเกี่ยวกับสิ่งที่คุณแสดงให้เราเห็นในการสาธิตคือคุณสามารถโพรไฟล์อย่างแท้จริงและดูว่าต้องใช้เวลานานแค่ไหน และนั่นอาจเป็นหนึ่งในสิ่งที่ฉันชอบ ฉันหมายถึงฉันได้สร้างเครื่องมือทำโปรไฟล์ - เราเคยสร้างเครื่องมือใน Sed และ Lex และ Orc เพื่อเรียกใช้โค้ดของเราและดูว่าลูปนั้นอยู่ที่ไหนก่อนที่จะมีเครื่องมือแบบนี้ให้ใช้ - และเมื่อคุณสร้างโค้ดเพื่อไปและ ตรวจสอบรหัสของคุณเองคุณจะดีมากโดยไม่ต้องทบทวนรหัสของคุณเอง แต่นั่นไม่ใช่ตอนนี้ โดยที่ในใจมีกลุ่มตลาดเฉพาะที่ใช้สิ่งนี้มากกว่าสิ่งอื่นใดหรือไม่? เหมือนเห็นเป็นก้อน -

Bert Scalzo: ใช่แล้วฉันเข้าใจแล้วฉันจะวาดการเปรียบเทียบให้คุณและแสดงให้คุณเห็นว่าผู้ที่ไม่ใช่โปรแกรมเมอร์ทำตลอดเวลา 'เพราะถ้าฉันสอน debugger และคลาส profiling หรือเซสชั่นฉันจะถามผู้คนว่า "ตกลง, มีคนอยู่ที่นี่ใน Microsoft Word จำนวนเท่าไหร่และอย่าใช้เครื่องตรวจการสะกดคำ?" และไม่มีใครยกมือขึ้นเลย เพราะสำหรับการเขียนเอกสารเราทุกคนรู้ดีว่าเราสามารถทำผิดภาษาอังกฤษได้ดังนั้นทุกคนจึงใช้เครื่องตรวจตัวสะกด และฉันก็พูดว่า“ แล้วทำไมเมื่อคุณเขียนข้อความใน IDE ของคุณเช่น Visual Basic คุณไม่ได้ใช้ดีบักเกอร์? มันเป็นสิ่งเดียวกันมันเหมือนกับตัวตรวจสอบการสะกด”

Dez Blanchfield: ใช่จริง ๆ แล้วมันเป็นการเปรียบเทียบที่ยอดเยี่ยม ฉันไม่ได้คิดอย่างนั้นจริง ๆ ฉันต้องยอมรับว่าฉันทำสิ่งที่คล้ายกับเครื่องมือสองอย่างที่ฉันใช้ อันที่จริงหนึ่ง ODF รายการโปรดของฉันกับ Eclipse เป็นเพียงการตัดและวางรหัสในนั้นและไปหาสิ่งที่เพิ่งเน้นทันทีและตระหนักว่าฉันได้พิมพ์ผิดในบางสายเรียน และตอนนี้มันน่าสนใจด้วยเครื่องมือเช่นนี้คุณสามารถทำได้แบบเรียลไทม์เมื่อเทียบกับการกลับมาและดูในภายหลังซึ่งเป็นสิ่งที่ดีที่จะจับมันไว้ล่วงหน้า แต่ใช่นั่นเป็นการเปรียบเทียบที่ยอดเยี่ยมของการใส่ข้อความลงในโปรแกรมประมวลผลคำว่า 'เพราะมันเป็นบริการโทรปลุกที่น่าสนใจที่เพิ่งรู้ว่าคุณได้พิมพ์ผิดหรือไวยากรณ์ผิดใช่ไหม?

Bert Scalzo: แน่นอน

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

Bert Scalzo: ตามหลัก แล้วพวกเขาจะทำมันล่วงหน้า แต่เนื่องจากทุกคนอยู่ในโลกที่เร่งรีบและคึกคักที่พวกเขาต้องทำสิ่งต่าง ๆ พวกเขาจึงไม่ทำจนกว่าพวกเขาจะประสบปัญหาประสิทธิภาพที่พวกเขาไม่สามารถแก้ไขได้ด้วย เพิ่ม CPU และหน่วยความจำเพิ่มเติมให้กับเครื่องเสมือน

Dez Blanchfield: ใช่ ดังนั้นจริงๆแล้วคุณพูดถึงสิ่งที่น่าสนใจถ้าฉันสามารถทำได้อย่างรวดเร็ว? คุณกล่าวก่อนหน้านี้ว่าสามารถเรียกใช้จากที่ใดก็ได้และสามารถพูดคุยกับฐานข้อมูลที่ส่วนหลัง ดังนั้นนี่คือความสะดวกสบายกับแนวคิดแบบ bimodal ที่เราพูดถึงตอนนี้บนคลาวด์ on-premise / off-premise โดยรูปลักษณ์ของสิ่งต่าง ๆ เช่นกันในตอนท้ายของวันถ้ามันสามารถพูดคุยกับด้านหลังและดู รหัสมันไม่สนใจจริง ๆ ใช่ไหม?

Bert Scalzo: แน่นอนคุณสามารถเรียกใช้สิ่งนี้ได้ในคลาวด์

Dez Blanchfield: ยอดเยี่ยมเพราะฉันคิดว่านั่นเป็นสิ่งที่โลกใหม่ที่กล้าหาญของเรากำลังดำเนินอยู่ เอริค ฉันจะทิ้งคุณแล้วและเห็นว่าเรามีคำถามสองสามข้อที่นี่และฉันต้องการให้ผู้เข้าร่วมประชุมของเรายังคงอยู่กับเราแม้ว่าเราจะผ่านไปหนึ่งชั่วโมง

Eric Kavanagh: ใช่มีคนไม่กี่คนที่นั่นฉันจะแสดงความคิดเห็นอย่างรวดเร็ว: Bert ฉันคิดว่าอุปมาอุปมัยที่คุณให้เปรียบเทียบกับการใช้การตรวจการสะกดนั้นยอดเยี่ยมจริงๆ นั่นเป็นสิ่งที่ควรค่าแก่การบล็อกหนึ่งหรือสองคนค่อนข้างตรงไปตรงมาเพราะเป็นวิธีที่ดีในการจัดบริบทของสิ่งที่คุณทำและคุณค่าของมันคืออะไรและควรปฏิบัติอย่างไรดีที่สุดในการใช้ดีบักเกอร์ เป็นประจำใช่มั้ย ฉันพนันว่าคุณจะได้รับหัวบางพยักหน้าเมื่อคุณโยนมันออกมาใช่มั้ย

Bert Scalzo: แน่นอนเพราะสิ่งที่ฉันบอกพวกเขาคือ“ ทำไมฉันต้องตรวจสอบตัวสะกดในเอกสารของฉัน ฉันไม่ต้องการที่จะอับอายด้วยความผิดพลาดในการสะกดคำโง่ ๆ "พวกเขาไม่ต้องการที่จะอายเพราะความผิดพลาดการเข้ารหัสโง่ ๆ !

Eric Kavanagh: ใช่แล้ว ใช่แน่นอน. พวกเราทุกคนผ่านเวลาหนึ่งชั่วโมงและห้านาทีไปแล้วที่นี่ขอบคุณมากสำหรับพวกคุณทุกคนสำหรับเวลาและความสนใจของคุณ เราเก็บการแชทบนเว็บเหล่านี้ทั้งหมดอย่าลังเลที่จะกลับมาทุกเวลาและตรวจสอบพวกเขา สถานที่ที่ดีที่สุดในการค้นหาลิงก์เหล่านั้นน่าจะเป็น techopedia.com ดังนั้นเราจะเพิ่มสิ่งนี้ลงในรายการนี้ที่นี่

และด้วยสิ่งนี้เราจะบอกลาคุณทุกคน เป็นงานที่ยอดเยี่ยมอีกครั้งขอบคุณเบิร์ตกับเพื่อนของเราจาก IDERA เราจะคุยกับคุณในครั้งต่อไปเราจะคุยกับคุณในสัปดาห์หน้า ดูแล! ลาก่อน.

การตอบสนองอย่างรวดเร็ว: การดีบักฐานข้อมูลและการทำโปรไฟล์เพื่อช่วยเหลือ