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

ผู้เขียน: Roger Morrison
วันที่สร้าง: 22 กันยายน 2021
วันที่อัปเดต: 1 กรกฎาคม 2024
Anonim
Database Access Using ODBC with Visual COBOL
วิดีโอ: Database Access Using ODBC with Visual COBOL

Takeaway: โฮสต์ Eric Kavanagh พูดคุยเกี่ยวกับการดีบักและทำโปรไฟล์กับดร. Robin Bloor, Dez Blanchfield และ IDERAs Bert Scalzo



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

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

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

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

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

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


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

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

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


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

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

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

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

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

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

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

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

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

Eric Kavanagh: เอาล่ะแขวนบนหนึ่งวินาทีให้ฉันให้เดซบอล

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

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

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

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

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

(หัวเราะ)

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

ในความเป็นจริงประสบการณ์ครั้งแรกของฉันอยู่ที่เทอร์มินัลโทรพิมพ์ซึ่งจริงๆแล้วเป็นคอลัมน์ทางกายภาพ 132 คอลัมน์ โดยพื้นฐานแล้วคิดว่าเหมือนเครื่องพิมพ์ดีดที่เก่าแก่มากที่มีกระดาษที่เลื่อนผ่านมันทำให้พวกเขาไม่มีหลอด CRT และการดีบั๊กโค้ดนั้นเป็นปัญหาที่ไม่สำคัญดังนั้นคุณจึงมักจะเขียนโค้ดทั้งหมดด้วยมือแล้วทำตัวเหมือนนักพิมพ์ดีดทำอย่างดีที่สุดเพื่อไม่ให้เกิดข้อผิดพลาดในการแอบเข้ามาเพราะมันน่าหงุดหงิดอย่างยิ่งที่ต้องบอก เครื่องมือแก้ไขบรรทัดเดียวเพื่อไปที่บรรทัดหนึ่งแล้วตามด้วยบรรทัดแล้วพิมพ์กลับเข้ามา แต่กาลครั้งหนึ่งนั่นคือวิธีที่เราเขียนโค้ดและนั่นคือวิธีที่เราดีบั๊กและเราทำได้ดีมาก และในความเป็นจริงมันบังคับให้เรามีเทคนิคการเขียนโปรแกรมที่ดีมากเพราะมันเป็นเรื่องยากที่จะแก้ไข แต่การเดินทางก็ผ่านไป - และทุกคนก็คุ้นเคยกับสิ่งนี้ - มันเริ่มจากประสบการณ์เทอร์มินัล 3270 ในโลกของฉันไปที่ Digital Equipment VT220 ที่คุณสามารถเห็นสิ่งต่าง ๆ บนหน้าจอ แต่อีกครั้งคุณก็ทำสิ่งเดียวกับที่คุณทำ ในรูปแบบเทปกระดาษของรูปแบบ ed เพียงบน 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 ได้แล้ว มันเป็นภาษาการเขียนโปรแกรมที่ทันสมัยพัฒนาอย่างหนักหน่วงและทรงพลัง เมื่อแรกเริ่มมันเป็นภาษาของแบบสอบถามมันถูกออกแบบมาเพื่อรับข้อมูล ดังนั้นตอนนี้เรามีโครงสร้างที่ซับซ้อนมากและเราได้เก็บขั้นตอนไว้เรามีวิธีการเขียนโปรแกรมที่ใช้กับภาษาและดังนั้นจึงเป็นเรื่องง่ายมากสำหรับการฝึกเขียนโปรแกรมที่ไม่ดีขาดประสบการณ์รหัสตัดและวางพนักงานที่มีรายได้น้อยพยายาม เป็นพนักงานที่จ่ายเงินสูงคนแกล้งทำเป็นรู้ แต่ต้องเรียนรู้เกี่ยวกับงาน

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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 ได้ เอาเป็นว่าสมมติว่าเขาทำสอง FOR FOR ลูปและโดยทั่วไปแล้วจะเข้าร่วม แต่เขาทำมันในฝั่งไคลเอ็นต์ ดังนั้นคุณจะได้รับผลกระทบเช่นเดียวกับการเข้าร่วม แต่เขาทำเองและโปรไฟล์จะจับได้เพราะคุณอาจต้องใช้เวลาในการเข้าร่วมด้วยตนเองมากกว่าที่จะปล่อยให้เซิร์ฟเวอร์ฐานข้อมูลทำเพื่อคุณ

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

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

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

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

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

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

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

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

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

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

Bert Scalzo: เผง

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

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

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

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

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

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

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

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

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