Rumah Pembangunan Sambutan cepat: debug pangkalan data dan pemprofilan untuk penyelamatan

Sambutan cepat: debug pangkalan data dan pemprofilan untuk penyelamatan

Anonim

Dengan Staff Techopedia, 15 Mac, 2017

Takeaway: Host Eric Kavanagh membincangkan penyebaran pangkalan data dan profil dengan Dr. Robin Bloor, Dez Blanchfield dan Bert Scalzo IDERA.

Anda tidak log masuk sekarang. Sila log masuk atau mendaftar untuk melihat video.

Eric Kavanagh: Baiklah, tuan-tuan dan puan-puan, ia adalah 4:00 waktu Timur pada hari Rabu, dan sudah tentu itu bermakna.

Robin Bloor: Tidak boleh dengar awak, Eric.

Eric Kavanagh: Saya berada di sana beberapa hari yang lalu, jadi anda tidak bersendirian. Tetapi jadi topik hari ini adalah perkara yang sangat menarik. Ini jenis perkara yang anda ingin memastikan yang berlaku di latar belakang di syarikat anda, melainkan anda orang yang melakukannya, dalam hal ini anda ingin memastikan anda melakukannya dengan betul. Kerana kita bercakap mengenai penyahpepijatan. Tiada siapa yang suka bug, tidak ada yang suka apabila perisian berhenti berfungsi - orang menjadi kecewa, pengguna tidak dapat bersikap ramah. Itu tidak baik. Jadi, kami akan bercakap mengenai "Rapid Response: Debugging Pangkalan Data dan Profiling Penyelamat."

Terdapat tempat mengenai anda dengan benar, memukul saya di Twitter, @eric_kavanagh sudah tentu.

Tahun ini panas. Dan debugging akan menjadi panas, tidak kira apa. Ini benar-benar akan menjadi salah satu daripada masalah-masalah yang tidak akan hilang, tidak kira betapa baiknya kita mendapatkan barang ini, selalu ada isu-isu, jadi kuncinya adalah bagaimana anda dapat ke mana anda dapat menyelesaikan masalah dengan cepat? Idealnya, anda mempunyai pengaturcara yang hebat, persekitaran yang hebat, di mana tidak terlalu banyak kesilapan, tetapi seperti kata-kata lama, "Kemalangan berlaku dalam keluarga yang terbaik." Dan yang sama berlaku untuk organisasi. Jadi, perkara ini berlaku, ia akan berlaku, persoalannya ialah apa yang akan menjadi penyelesaian anda untuk mengatasinya dan menyelesaikan masalah itu?

Kami akan mendengar dari Dr Robin Bloor, kemudian Dez Blanchfield kita sendiri dari bawah, dan tentu saja, sahabat baik kita, Bert Scalzo, dari IDERA. Dan sebenarnya, saya akan menyerahkan kunci kepada Robin Bloor, membawanya. Lantai adalah milik anda.

Robin Bloor: OK. Ini adalah topik yang menarik. Saya fikir kerana Dez mungkin akan meneruskan mengenai teknik sebenar dan cerita perang tentang penyahpepijatan, saya fikir saya akan melakukan perbincangan latar belakang supaya kita perlu mendapatkan gambaran penuh tentang apa yang sedang berlaku. Saya lakukan ini lama sekali, dan saya biasa menjadi coder, jadi seperti itu, dan saya hampir tergoda dengan persembahan ini untuk mula melambangkan idea mengenai sumber terbuka tetapi saya fikir saya akan meninggalkannya kepada orang lain.

Berikut adalah senarai pepijat yang terkenal, dan kebanyakannya masuk ke senarai teratas sesiapa, pada asasnya, semua kecuali dua kos terakhir sekurang-kurangnya $ 100 juta. Yang pertama ialah Orbiter Iklim Marikh, hilang dalam ruang dan ia disebabkan oleh masalah pengkodan, di mana orang-orang keliru unit metrik dengan (ketawa) kaki dan inci. Ariane Five Flight 501 terdapat ketidaksesuaian antara enjin yang dipasang dan komputer yang sepatutnya menjalankan roket apabila ia dilancarkan. Kegagalan komputer pelbagai, meletup roket, berita utama. Paip gas Soviet pada tahun 1982, dikatakan sebagai letupan terbesar dalam sejarah planet ini; Saya tidak pasti sama ada ia. Orang Rusia mencuri beberapa perisian kawalan automatik, dan CIA menyedari bahawa mereka akan melakukan itu dan meletakkan bug di dalamnya, dan Soviet melaksanakannya tanpa ujian. Jadi, meniup saluran paip ke atas, fikir itu lucu.

Cacing Morris adalah percubaan pengekodan, yang tiba-tiba menjadi cacing rapuh yang melanda semua orang-itu nampaknya menyebabkan kerosakan bernilai $ 100 juta; itulah anggaran tentu saja. Intel membuat kesilapan yang terkenal dengan cip matematik - arahan matematik pada cip Pentium pada 1993 - yang sepatutnya mempunyai kos lebih dari $ 100 juta. Program Peta Apple mungkin merupakan pelancaran paling buruk dan paling buruk yang pernah dilakukan oleh Apple. Orang yang cuba menggunakannya, maksudnya, seseorang memandu sepanjang 101, dan mendapati Peta Apple mengatakan bahawa mereka berada di tengah-tengah San Francisco Bay. Jadi, orang mula merujuk kepada aplikasi Apple Maps sebagai iLost. Yang menjadi masalah terpanjang pada tahun 1990 - itu hanya menarik dari sudut pandangan kos sesuatu seperti itu - AT & T telah keluar selama kira-kira sembilan jam dan ia menelan belanja $ 60 juta dalam panggilan jarak jauh.

Dan saya berada di syarikat insurans UK, dan pangkalan data, mereka melaksanakan versi baru dalam pangkalan data dan ia mula menyapu data. Dan saya teringat dengan begitu baik, kerana saya dipanggil kemudian untuk mengambil bahagian dalam pemilihan pangkalan data semacam itu. Dan sangat menarik bahawa mereka telah mengambil versi pangkalan data baru, dan mereka mempunyai bateri ujian yang mereka lakukan untuk versi baru pangkalan data yang melewati semua ujian. Ia menemui cara yang sangat jelas untuk menghapus data.

Jadi, bagaimanapun, itu sahaja. Saya fikir saya akan bercakap tentang ketidakpadanan impedans dan SQL dikeluarkan. Sangat menarik bahawa pangkalan data relasi menyimpan data dalam jadual dan coder cenderung untuk memanipulasi data dalam struktur objek yang benar-benar tidak memetakan dengan sangat baik kepada jadual. Dan kerana itu, anda mendapat apa yang dipanggil impedans ketidakcocokan, dan seseorang harus berurusan dengannya dalam beberapa cara atau lain-lain. Tetapi apa yang sebenarnya berlaku, kerana satu model, model coder dan pangkalan data model lain, tidak disejajarkan. Anda mendapat bug yang tidak akan berlaku sekiranya industri telah membina sesuatu yang berfungsi bersama, yang saya fikir adalah lucu. Oleh itu, pada dasarnya, di sisi coders, apabila anda mendapatkan hierarki, ia boleh menjadi jenis, ia boleh menghasilkan set, ia boleh menjadi keupayaan API yang lemah, ia boleh menjadi banyak perkara yang hanya membuang sesuatu dalam hal interaksi dengan pangkalan data. Tetapi perkara yang paling bagi saya, sangat menarik; sentiasa kagum saya bahawa anda mempunyai halangan SQL ini yang juga jenis impedansi dengan cara yang coders dan pangkalan data bekerja dengan satu sama lain. Jadi, SQL mempunyai pengiktirafan data, yang baik dan ia mempunyai DML untuk memilih, projek dan menyertai, yang baik-baik saja. Anda boleh membuang banyak keupayaan dari segi mendapatkan data daripada pangkalan data dengan itu. Tetapi ia mempunyai bahasa matematik yang sangat sedikit untuk melakukan sesuatu. Ia mempunyai sedikit ini dan itu, dan ia mempunyai sangat sedikit perkara berasaskan masa. Dan kerana itu, SQL adalah tidak sempurna, jika anda suka, cara mendapatkan data. Oleh itu, orang-orang pangkalan data membina prosedur tersimpan untuk tinggal di pangkalan data dan alasan untuk prosedur yang disimpan di sana adalah bahawa anda tidak benar-benar mahu membuang data ke belakang ke program.

Bagi sesetengah fungsinya adalah data yang sangat spesifik, maka itu bukan sekadar integriti rujukan dan menghapuskan dan hal-hal seperti itu, pangkalan data mengurus semua secara tiba-tiba anda meletakkan fungsi dalam pangkalan data, yang bermaksud sudah tentu fungsi untuk aplikasi boleh dibahagikan antara pengkod dan pangkalan data itu sendiri. Dan yang membuat kerja melaksanakan beberapa jenis fungsi benar-benar agak sukar dan oleh itu lebih banyak kesilapan rawan. Jadi, itu satu sisi permainan pangkalan data, kerana ini bermakna bahawa anda mempunyai banyak perlaksanaan misalnya, bahawa saya terlibat dalam pangkalan data relasi ada benar-benar banyak kod yang banyak yang duduk dalam prosedur tersimpan yang ditangani secara berasingan daripada kod yang duduk dalam aplikasi. Dan ia seolah-olah sesuatu yang sangat pelik dapat, ia sepatutnya agak pintar melakukan pelbagai perkara.

Saya fikir saya juga bercakap tentang prestasi pangkalan data kerana kesalahan prestasi sering dianggap sebagai pepijat, tetapi pada dasarnya anda boleh mengalami kesesakan di CPU, di memori, di cakera, di rangkaian dan anda boleh mempunyai masalah prestasi kerana mengunci . Idea ini adalah bahawa pengkod tidak benar-benar perlu prihatin tentang prestasi dan pangkalan data akan sebenarnya berfungsi dengan baik. Ia sepatutnya direka supaya pengkod tidak perlu tahu. Walau bagaimanapun, anda mendapat reka bentuk pangkalan data yang buruk, anda mendapat reka bentuk program yang buruk, anda mendapat kesimpulan dalam pencampuran kerja, yang juga boleh membawa kepada masalah prestasi. Anda mendapat keseimbangan beban, anda mendapat perancangan kapasiti, pertumbuhan data - yang boleh menyebabkan pangkalan data hanya berhenti, atau melambatkan. Ia satu perkara yang menarik, apabila pangkalan data menjadi hampir penuh, mereka perlahan. Dan anda boleh mempunyai isu lapisan data dari segi replikasi dan keperluan untuk meniru dan keperluan untuk melakukan sandaran dan pemulihan. Bagaimanapun, itulah gambaran umum.

Satu-satunya perkara yang saya ingin katakan ialah debugging pangkalan data hanya boleh menjadi seperti keburukan dan tidak remeh - dan saya katakan bahawa kerana saya telah melakukan banyak perkara - dan anda akan sering mendapati ia seperti semua situasi dalam penyahpepijatan saya Pernah berpengalaman adalah, perkara pertama yang pernah anda lihat adalah kekacauan. Dan anda perlu mencuba dan pergi dari keadaan huru-hara untuk mengetahui bagaimana keadaan huru-hara itu berlaku. Dan selalunya apabila anda melihat isu pangkalan data yang anda cari adalah data rasuah dan anda berfikir, "Bagaimana keadaannya berlaku?"

Bagaimanapun, saya akan menyerahkan kepada Dez, yang mungkin akan mengatakan lebih banyak kata-kata kebijaksanaan daripada saya keluar. Saya tidak tahu bagaimana untuk menghantar bola kepada anda, Dez.

Eric Kavanagh: Saya akan lulus, bertahan, terus.

Suara automatik: Barisan peserta disenyapkan.

Eric Kavanagh: Baiklah, bertahan satu saat, biarkan saya memberi Dez bola.

Dez Blanchfield: Terima kasih, Eric. Ya, Dr. Robin Bloor, anda sememangnya betul: ini adalah satu topik, suatu gangguan sepanjang hayat jika anda akan mengampuni pun, maaf saya tidak dapat membantu diri saya pada perkara itu. Semoga anda dapat melihat skrin pertama saya di sana, permohonan maaf saya untuk masalah saiz fon di bahagian atas. Topik pepijat adalah syarahan, dalam banyak kes dalam pengalaman saya. Ini topik yang luas dan luas, jadi saya akan meletakkan tumpuan pada dua bidang utama, khususnya konsep apa yang kita anggap sebagai pepijat, tetapi isu pengaturcaraan. Saya fikir hari-hari ini memperkenalkan bug semata-mata pada umumnya dijemput oleh persekitaran pembangunan bersepadu, walaupun mereka mungkin mengalami masalah lama. Tetapi selalunya ia lebih banyak menjadi kod profiling dan mungkin untuk menulis kod fungsi yang seharusnya menjadi pepijat. Oleh itu, gelaran saya di sini, saya sebenarnya mempunyai salinan ini dalam resolusi A3 yang sangat tinggi, tetapi malangnya ia telah dimusnahkan dalam gerakan rumah. Tetapi ini adalah nota tulisan tangan pada lembaran pengaturcaraan dari tahun 1945, di mana kononnya beberapa orang di Harvard University di Amerika Syarikat, membina kedua mesin mereka yang bernama Mark II. Mereka menyebarkan beberapa isu, dalam bahasa yang sama, tetapi mereka cuba mencari kesalahan, dan ternyata sesuatu yang sedikit berbeza daripada apa yang perkakasan dan masalah perisian yang sepatutnya datang.

Oleh itu, mitos bandar adalah bahawa pada 9 September 1945 sebuah pasukan di Universiti Harvard telah menarik mesin, mereka melihat sesuatu yang mereka panggil "menyampaikan tujuh puluh" - pada masa itu pengaturcaraan telah dilakukan secara fizikal, anda luka kod di sekitar papan, dan itulah bagaimana anda memprogramkan mesin itu secara berkesan - dan mereka mendapati nombor geganti ini tujuh puluh ada sesuatu yang tidak kena dengannya, dan ternyata istilah sebenar "bug" berlaku kerana ia benar-benar adalah rama-rama - kononnya ada adalah rama-rama yang terselip di antara beberapa keping dawai tembaga yang pergi dari satu tempat ke tempat lain. Dan kisah itu membawa Grace Hopper yang legenda sebagai kapsyen ini, untuk slaid tajuk saya, "kes pertama sebenar bug yang dijumpai" memetik tidak menandakan.

Tetapi ketika Robin menyoroti lebih awal dalam slaid pertamanya, konsep bug berlaku sejauh mana kita dapat membayangkan manusia mengira, konsep seperti patch. Istilah "tampalan" berasal dari sekeping pita sebenar yang direkam di atas lubang pada kad punch. Tetapi keseluruhan titik ini, ialah istilah "debugging" keluar dari konsep ini mencari bug dalam mesin fizikal. Dan sejak itu, kami telah menggunakan istilah itu sekitar cuba menangani isu-isu, sama ada tidak seperti masalah pengekodan dalam program yang tidak dikompilasi, tetapi sebagai program yang tidak berfungsi dengan baik. Dan secara khusus belum diprofilkan hanya mencari perkara seperti gelung tidak berkesudahan yang tidak dapat dikesan.

Tetapi kita juga mempunyai senario, dan saya fikir saya akan meletakkan beberapa slaid lucu sebelum saya mendapat sedikit lebih terperinci. Inilah kartun klasik, yang dipanggil XKCD di web, dan kartunis mempunyai beberapa pandangan yang agak lucu di dunia. Dan yang satu ini tentang seorang kanak-kanak yang dipanggil "Little Bobby Tables" dan kononnya ibu bapanya menamakan budak lelaki ini Robert '); DROP TABLE Pelajar - dan ia dipanggil, dan semacam "Hi, ini sekolah anak lelaki anda yang mempunyai masalah komputer, " dan menjawab ibu bapa, "Ya, adakah dia memecahkan sesuatu?" Dan guru itu berkata, "Nah, dalam satu cara, "dan guru bertanya, " adakah anda benar-benar menamakan anak anda Robert '); DROP JALAN Pelajar; -? "Dan ibu bapa berkata, " Oh ya, sedikit Bobby Tabel yang kita panggil dia. "Bagaimanapun, mereka terus mengatakan bahawa mereka kini telah kehilangan rekod pelajar tahun, saya harap anda gembira. Dan sambutannya ialah, "Anda perlu membersihkan dan membersihkan input pangkalan data anda." Dan saya menggunakannya berkali-kali untuk membicarakan beberapa masalah yang kita ada dalam mencari kod dalam kod, yang sering kali kod tidak melihat data juga.

Satu lagi yang lucu, saya tidak tahu sama ada ini benar atau tidak - Saya mengesyaki ia adalah spoof - tetapi sekali lagi, ia juga menyentuh tulang lucu saya. Seseorang menukar plat lesen di hadapan kereta mereka, kepada kenyataan yang sama yang menyebabkan pangkalan data jatuh ke dalam kamera kelajuan dan sebagainya yang menangkap plat lesen kereta. Dan saya selalu merujuknya kerana saya ragu-ragu mana-mana pemrogram menjangkakan hit dan jalankan kod mereka dengan kenderaan motor yang sebenar, tetapi tidak pernah memandang rendah - kuasa geek yang marah.

(Ketawa)

Tetapi ini membawa kepada saya ke titik utama saya, saya rasa, dan itu adalah bahawa pada satu masa, kita boleh debug dan kod profil sebagai manusia semata-mata. Tetapi saya sangat berpandangan bahawa masa itu telah berlalu, dan secara anekdot dalam pengalaman saya, yang pertama saya - dan ini akan menanggung saya sangat, saya pasti; Robin anda dialu-alukan untuk menenangkan saya untuk ini - tetapi dari segi sejarah saya telah datang dari latar belakang pada usia 14 mengembara ke hujung bandar, dan mengetuk pintu pusat data yang dipanggil "Data Com" di New Zealand dan bertanya sama ada saya boleh mendapatkan wang saku di sekolah dengan menaiki bas lewat, kira-kira 25 km berulang setiap hari, dengan meletakkan kertas di pencetak, dan kaset dalam pemacu pita, dan hanya menjadi pentadbir umum. Dan cukup ingin tahu mereka memberi saya pekerjaan. Tetapi dari masa ke masa, saya berjaya mendapatkan diri saya ke dalam kakitangan dan mencari pengaturcara dan menyedari saya suka pengekodan dan melalui proses menjalankan skrip dan kerja kelompok, yang pada akhir hari masih kod. Anda perlu menulis skrip dan kerja kelompok yang kelihatan seperti program mini dan kemudian melalui keseluruhan proses duduk di atas kod penulisan terminal 3270 dengan tangan.

Malah, pengalaman saya yang pertama adalah pada terminal teletype, yang sebenarnya pencetak fizikal 132-lajur. Pada asasnya, fikirkan seperti mesin taip yang sangat tua dengan kertas yang menatal melalui itu, 'kerana mereka tidak mempunyai tiub CRT. Dan kod debugging pada itu adalah masalah yang sangat tidak penting, jadi anda cenderung untuk menulis semua kod anda dengan tangan, dan kemudian bertindak seperti juru tipis, melakukan yang terbaik untuk tidak mendapatkan ralat untuk menyelinap masuk, kerana ia sangat mengecewakan untuk memberitahu editor satu baris untuk pergi ke garis tertentu dan kemudian mencetak garis dan kemudian taipkannya kembali. Tetapi pada satu masa dahulu, itulah cara kita menulis kod dan itu bagaimana kita debug, dan kita mendapat sangat, sangat baik pada itu. Dan sebenarnya, ia memaksa kita untuk mempunyai teknik pengaturcaraan yang sangat baik, kerana ia adalah masalah yang sangat baik untuk memperbaikinya. Tetapi perjalanan itu lalu - dan kita semua akrab dengan ini - ia pergi dari pengalaman terminal 3270 di dunia saya, ke Digital Equipment VT220 di mana anda boleh melihat perkara-perkara di skrin, tetapi sekali lagi, anda hanya melakukan perkara yang sama anda melakukan format cetakan kertas jenis cetak hanya pada CRT, tetapi anda dapat memadam dengan lebih mudah dan anda tidak mempunyai bunyi "dit dit dit dit dit".

Dan kemudian anda tahu, terminal Wyse - seperti Wyse 150, mungkin antara muka kegemaran saya ke komputer yang pernah - dan kemudian PC dan kemudian Mac, dan kemudian hari ini GUI moden dan ID yang berasaskan web. Dan pelbagai program melalui itu, pengaturcaraan dalam satu dan assembler dan PILOT dan Logo dan Lisp dan dan Fortran dan Pascal serta bahasa-bahasa yang mungkin membuat orang mengasyikkan. Tetapi ini adalah bahasa yang memaksa anda untuk menulis kod yang baik; mereka tidak membiarkan anda pergi dengan amalan buruk. C, C ++, Java, Ruby, Python - dan kita dapat meningkatkan tahap pengaturcaraan, kita mendapat lebih banyak skrip, kita semakin mendekatkan diri ke Structured Query Language dan bahasa seperti PHP yang sebenarnya digunakan untuk membuat SQL. Maksud memberitahu anda, yang berasal dari latar belakang saya, saya diajar sendiri dalam banyak cara dan yang membantu saya belajar, mengajar saya amalan pengaturcaraan yang sangat baik dan amalan yang sangat baik di sekitar reka bentuk dan proses untuk memastikan saya tidak memperkenalkan kod buggy.

Kaedah pengaturcaraan pada hari ini, contohnya, Contohnya, Bahasa Query Berstruktur, SQL, ia adalah bahasa pertanyaan yang sangat kuat dan mudah. Tetapi kami telah mengubahnya menjadi bahasa pengaturcaraan dan saya tidak benar-benar percaya bahawa SQL pernah direka untuk menjadi bahasa pengaturcaraan moden, tetapi kami telah membuatnya menjadi begitu. Dan yang memperkenalkan banyak isu, sebab ketika kita memikirkan dari dua sudut pandang: dari titik pengkodean pandangan dan dari sudut pandang DBA. Sangat mudah datang dan memperkenalkan pepijat untuk perkara-perkara seperti teknik pemrograman yang kurang baik, usaha malas menulis kod, kekurangan pengalaman, petua pet klasik yang saya contohkan dengan orang SQL yang melompat di Google dan mencari sesuatu dan mencari laman web yang mendapat contoh dan melakukan salinan dan tampal kod yang sedia ada. Dan kemudian mereplikasi pengkodan buruk, penyelewengan dan memasukkannya ke dalam pengeluaran, kerana ia hanya berlaku untuk memberikan hasil yang mereka inginkan. Anda mempunyai cabaran lain, contohnya, hari ini kita semua bergegas ke arah ini, apa yang kita sebut perlumbaan kepada sifar: cuba melakukan semua yang begitu murah dan begitu pantas, bahawa kita mempunyai senario di mana kita tidak menggunakan lebih rendah - kakitangan yang dibayar. Dan saya tidak bermaksud bahawa dengan cara yang tidak jujur, tetapi kami tidak mengupah pakar untuk setiap pekerjaan yang mungkin. Suatu ketika dahulu ada apa-apa kaitan dengan komputer adalah sains roket; ia terlibat dalam perkara-perkara yang dilancarkan dan sangat kuat, atau masuk ke dalam angkasa atau jurutera adalah lelaki dan wanita yang berkelayakan yang berwibawa dan mempunyai pendidikan yang ketat yang membuat mereka tidak melakukan hal-hal yang gila.

Hari-hari ini, ada banyak orang yang masuk ke dalam pembangunan dan reka bentuk dan pangkalan data yang tidak mempunyai pengalaman bertahun-tahun, tidak semestinya sama latihan atau sokongan. Dan jadi anda berakhir dengan senario hanya pakar amatur tradisional berbanding pakar. Dan ada garis yang terkenal, saya tidak boleh ingat siapa yang mencipta petikan itu, garis itu berkata, "Jika anda berfikir bahawa menyewa seorang pakar yang mahal untuk melakukan pekerjaan, tunggu sehingga anda menyewa beberapa amatur yang membuat masalah dan anda perlu membersihkannya. "Dan begitu SQL mempunyai masalah itu, dan ia sangat mudah dipelajari, ia sangat mudah digunakan. Tetapi tidak, pada pandangan saya, bahasa pengaturcaraan sempurna. Ia sangat mudah untuk melakukan perkara-perkara seperti membuat bintang pilih dari mana sahaja dan tarik semua itu ke dalam bahasa pengaturcaraan yang anda lebih selesa dengan seperti PHP dan Ruby atau Python, dan gunakan bahasa pengaturcaraan yang anda kenal secara asli, lakukan manipulasi data, dan bukan melakukan pertanyaan yang lebih kompleks dalam SQL. Dan kita melihat ini banyak, dan kemudian orang bertanya-tanya mengapa pangkalan data berjalan lambat; itu kerana sejuta orang sedang cuba membeli tiket dalam sistem tiket dalam talian, di mana ia memilih bintang pilih dari mana sahaja.

Sekarang, itulah contoh yang sangat melampau, tetapi anda mendapat titik dari semua itu. Jadi, untuk benar-benar menumbuk pulang ke rumah, inilah satu contoh yang saya bawa. Saya peminat besar matematik, saya suka teori huru-hara, saya suka set Mandelbrot. Di sebelah kanan ada satu rendition set Mandelbrot, yang saya yakin kita semua kenal. Dan di sebelah kiri terdapat sekeping SQL yang sebenarnya menjadikannya. Sekarang, setiap kali saya meletakkan ini pada skrin di suatu tempat, saya mendengar ini "Oh tuhan saya, seseorang yang menyampaikan siri Mandelbrot dengan SQL, adakah anda serius? Itulah gila! "Baiklah, maksudnya adalah untuk menggambarkan apa yang saya buat di sana, dan itu ya, sebenarnya anda kini boleh memprogram hampir apa-apa dalam SQL; ia adalah bahasa pengaturcaraan yang sangat maju, berkuasa dan moden. Pada asalnya ia adalah bahasa pertanyaan, ia direka bentuk untuk mendapatkan data. Oleh itu, sekarang kami mempunyai pembinaan yang sangat kompleks dan kami mempunyai prosedur tersimpan, kami mempunyai metodologi pengaturcaraan yang digunakan untuk bahasa dan oleh itu sangat mudah untuk amalan pengaturcaraan yang lemah, kekurangan pengalaman, kod potong dan tampal, kakitangan yang berpenghasilan rendah yang cuba menjadi kakitangan bergaji tinggi, orang berpura-pura mereka tahu, tetapi mereka perlu belajar di tempat kerja.

Pelbagai perkara di mana kod profiling dan apa yang kita rujuk sebagai debugging, yang tidak banyak mencari bug yang menghentikan program daripada bekerja, tetapi bug yang hanya menyakiti sistem dan kod yang kurang berstruktur. Apabila anda melihat skrin ini sekarang, dan anda fikir, itu sahaja, ia agak comel dan anda berfikir, "Wow, grafik yang hebat, saya suka menjalankannya." Tetapi bayangkan bahawa berjalan pada beberapa bahagian logik perniagaan . Ia kelihatan agak kemas, tetapi ia bercakap matematik teori grafis yang diberikan secara grafik, tetapi apabila anda berfikir tentang apa yang mungkin berpotensi digunakan dalam beberapa logik perniagaan, anda akan mendapat gambar dengan cepat. Dan untuk benar-benar menggambarkannya - dan maafkan warna-warna itu dibalikkan, ia sepatutnya menjadi latar belakang hitam dan teks hijau untuk menjadi skrin hijau, tetapi anda masih boleh membacanya.

Saya pergi dan melihat dengan cepat satu contoh apa yang anda boleh lakukan jika anda benar-benar gila dan tidak mempunyai sebarang pengalaman dan datang dari latar belakang pengaturcaraan yang berbeza dan menggunakan seperti C ++ ke SQL, untuk benar-benar menggambarkan titik saya, sebelum Saya menyerahkan kepada tetamu yang terpelajar dari IDERA. Ini adalah pertanyaan berstruktur yang ditulis seperti C ++, tetapi ia dikodkan dalam SQL. Dan ia sebenarnya dilaksanakan, tetapi ia dilaksanakan selama kira-kira tiga hingga lima minit. Dan ia menarik balik satu garis data daripada pelbagai pangkalan data, pelbagai bergabung.

Sekali lagi, semua perkara ini adalah jika anda tidak mempunyai alat yang betul, jika anda tidak mempunyai platform dan persekitaran yang betul untuk dapat menangkap perkara-perkara ini, dan ia akan menghasilkan, dan kemudian anda mempunyai 100, 000 orang memukul sistem setiap hari, atau jam, atau minit, tidak lama lagi anda akan mengalami pengalaman Chernobyl di mana zat besi mula mencairkan dan menguburkannya ke teras planet ini, kerana sekeping kod itu tidak boleh masuk ke dalam pengeluaran. Sistem anda dan alat anda, maafkan saya, harus mengambilnya sebelum ia berada di mana-mana sahaja - walaupun melalui proses ujian, walaupun melalui UAT dan integrasi sistem, sekeping kod itu harus diambil dan disorot dan seseorang harus diketepikan dan "Lihatlah, itu kod yang benar-benar cantik, tetapi mari kita dapatkan DBA untuk membantu anda membina pertanyaan berstruktur dengan betul, kerana terus terang, itu hanya buruk." Dan URL di sana, anda boleh pergi dan lihat - ia dirujuk sebagai pertanyaan SQL yang paling rumit yang pernah anda tulis. Sebab sebab percayalah, itu benar-benar mengkompilasi, ia berjalan. Dan jika anda memotong dan menyisipkannya dan hanya mengejek pangkalan data, ia cukup sesuatu untuk ditonton; jika anda mempunyai alat untuk menonton pangkalan data hanya cuba dan meleleh selama tempoh tiga hingga lima minit, untuk memanggil kembali apa yang satu baris teks.

Jadi, untuk meringkaskan, dengan itu, latar belakang saya dalam pengkodan telah mengajar saya bahawa anda boleh memberi orang pistol dan jika mereka tidak berhati-hati mereka akan menembak diri mereka di kaki; silap mata adalah untuk menunjukkan kepada mereka di mana mekanisme keselamatan itu. Dengan alat yang betul dan perisian yang tepat di hujung jari anda, setelah anda melakukan pengkodan, anda boleh menyemak kod anda, anda dapat mencari masalah dengan profil kode, anda dapat menemukan bug yang tidak diinginkan secara efektif yang merupakan masalah kinerja, dan seperti yang saya katakan Sebelum ini, sekali lagi, anda boleh melakukannya dengan melihat skrin hijau. Anda tidak boleh lagi; terdapat beratus-ratus ribu baris kod, terdapat beribu-ribu aplikasi yang digunakan, ada berjuta-juta pangkalan data dalam beberapa keadaan, dan bahkan manusia super tidak dapat melakukannya dengan tangan lagi. Anda benar-benar memerlukan perisian yang betul dan alat yang betul di hujung jari anda dan anda memerlukan pasukan untuk menggunakan alat tersebut, supaya anda dapat mencari isu-isu ini dan alamatnya dengan sangat, dengan cepat, sebelum anda sampai ke titik, sedangkan Dr. Robin Bloor menekankan, perkara-perkara sama ada menjadi bencana, dan perkara meletup, atau lebih biasa, mereka hanya menelan belanja banyak dolar dan banyak masa dan usaha dan menghancurkan semangat dan hal-hal, ketika mereka tidak dapat mengerti mengapa hal-hal mengambil lama untuk berlari.

Dan dengan itu, saya akan menyerahkan kepada tetamu kami dan saya berharap dapat mendengar bagaimana mereka menyelesaikan masalah ini. Dan terutamanya demo saya rasa bahawa kami akan menerima. Eric, saya akan balik semula.

Eric Kavanagh: Baiklah, Bert, bawa dia pergi.

Bert Scalzo: Baiklah, terima kasih. Bert Scalzo di sini dari IDERA, saya pengurus produk untuk alat pangkalan data kami. Dan saya akan bercakap tentang penyahpepijatan. Saya fikir salah satu perkara yang paling penting yang dikatakan oleh Robin sebelum ini - dan sangat benar ialah debugging adalah kebetulan dan tidak remeh, dan apabila anda pergi ke debug pangkalan data, ia adalah suatu perintah magnitud bahkan lebih berat dan tidak remeh - jadi, itu adalah petikan penting.

OKEY. Saya ingin memulakan dengan sejarah pengaturcaraan, kerana banyak kali saya melihat orang yang tidak debug, mereka tidak menggunakan debugger, mereka hanya memprogram dengan bahasa apa sahaja yang mereka gunakan, dan banyak kali mereka akan mengatakan kepada saya "Baiklah, perkara-perkara debugger itu baru, dan kami belum mula menggunakannya lagi." Dan apa yang saya lakukan ialah saya menunjukkan kepada mereka carta garis masa ini, jenis pra-sejarah, zaman tua, zaman pertengahan, ia baik dari mana kita berada dari segi bahasa pengaturcaraan. Dan kami mempunyai bahasa yang sangat lama bermula pada tahun 1951 dengan kod pemasangan, dan Lisp dan FACT dan COBOL. Kemudian kita masuk ke kumpulan seterusnya, Pascals dan Cs dan seterusnya kumpulan seterusnya, C ++, dan lihat di mana tanda tanya itu - tanda tanya itu kira-kira tepat sekitar tahun 1978 hingga tahun 1980. Di suatu tempat di dalam julat yang kita ada debugger yang ada pada kami, dan sebagainya untuk mengatakan, "Hei, saya tidak menggunakan debugger, sebab itu salah satu perkara baru, " maka anda mesti memulakan pengaturcaraan, anda tahu, kembali pada tahun 1950-an, sebab itu hanya cara yang anda akan hilang dengan tuntutan itu.

Sekarang perkara lain yang lucu tentang carta ini ialah Dez hanya membuat komen mengenai Grace Hopper, saya sebenarnya tahu Grace, jadi agak lucu. Dan kemudian perkara lain yang saya ketawa adalah dia bercakap tentang teletip dan saya duduk di sana pergi, "Man, itu lonjakan terbesar yang pernah kita ada dalam produktiviti, ketika kita pergi dari kad ke teletypes, itu lompatan terbesar yang pernah ada. "Jadi, dan saya telah memprogramkan dalam semua bahasa di sini, termasuk SNOBOL, yang tidak pernah didengar sebelum ini, itu adalah CDC, Perbadanan Data Kawalan, jadi saya rasa saya sudah terlalu tua untuk industri ini .

Dez Blanchfield: Saya akan katakan, anda sudah lama berumur kami.

Bert Scalzo: Ya, saya memberitahu anda, saya rasa seperti Grandpa Simpson. Jadi saya melihat penyahpepijatan dan ada cara yang berbeza untuk melakukan debugging. Anda boleh bercakap tentang apa yang kita semua fikirkan sebagai tradisional masuk ke debugger dan melangkah melalui kod. Tetapi juga, orang akan menggunakan kod mereka; itu di mana anda melekatkan pernyataan ke dalam kod anda dan mungkin anda menghasilkan file output, fail jejak atau sesuatu, dan oleh itu anda menggunakan kod anda. Saya akan mengira bahawa sebagai debugging, ia sedikit lebih sukar, cara melakukannya, tetapi ia adalah penting. Tetapi, kami juga mempunyai kenyataan cetak yang terkenal: anda menonton dan orang sebenarnya meletakkan kenyataan cetak dan saya benar-benar melihat alat di mana - dan alat pangkalan data - di mana jika anda tidak tahu bagaimana menggunakan debugger, anda menekan butang dan ia akan melekatkan kenyataan cetakan sepanjang kod anda untuk anda dan kemudian apabila anda selesai anda menekan butang lain dan ia melepaskannya. Kerana itulah banyak debug orang.

Dan sebab kami debug dua kali: pertama sekali, kami dapat mencari perkara yang membuat kod kami tidak berkesan. Dalam erti kata lain, biasanya itu bermakna ada kesalahan logik atau kami merindui keperluan perniagaan, tetapi apa itu, kod itu tidak berkesan; ia tidak melakukan apa yang kami harapkan. Pada masa yang lain kita pergi dan kita melakukan penyahpepijatan, ia adalah untuk kecekapan dan itu boleh menjadi kesilapan logik, tetapi apakah itu, saya melakukan perkara yang betul, ia tidak datang cukup cepat. Sekarang, saya membuat titik itu kerana profiler mungkin lebih baik untuk senario kedua dan kita akan bercakap tentang kedua-dua debuggers dan profilers. Di samping itu, terdapat konsep penyahpepijatan jarak jauh; ini penting kerana banyak kali jika anda duduk di komputer peribadi anda, dan anda menggunakan debugger, yang memasuki pangkalan data di mana kod itu sebenarnya dilaksanakan di pangkalan data, anda sebenarnya melakukan apa yang disebut debugging jauh. Anda mungkin tidak menyedarinya, tetapi itulah yang berlaku. Dan kemudian, ia sangat biasa dengan debugger ini untuk mempunyai titik pecah, melihat mata, melangkah dan melangkah dan beberapa perkara biasa lain, yang saya akan tunjukkan kepada mereka pada skrin petikan skrin dalam seketika.

Sekarang, profil: anda boleh melakukan profil dalam beberapa cara yang berbeza. Sesetengah orang akan mengatakan bahawa kerja-kerja menangkap dan memainkan semula di mana ia menangkap segala-galanya, yang dianggap sebagai profil. Pengalaman saya lebih baik jika ia dilakukan secara persampelan. Tidak ada sebab untuk menangkap setiap kenyataan, kerana beberapa kenyataan mungkin berlari dengan begitu cepat sehingga anda tidak peduli, apa yang anda benar-benar cuba untuk melihat adalah, baik, yang selalu muncul terus-menerus, kerana mereka berlari terlalu lama. Oleh itu, kadang-kadang profil boleh bermakna pensampelan dan bukannya menjalankan keseluruhan perkara. Dan selalunya, anda akan mendapat beberapa jenis output yang boleh anda gunakan, kini boleh dilihat di dalam persekitaran pembangunan IDE, di mana ia dapat memberi anda histogram prestasi pelbagai baris kod, tetapi ia juga boleh jadi ia menghasilkan fail jejak.

Profiler mula-mula muncul pada tahun 1979. Jadi, mereka telah lama bertahun-tahun juga. Hebat untuk mencari sumber penggunaan, atau isu prestasi, dengan kata lain bahawa perkara kecekapan. Secara umumnya, ia adalah berasingan dan berbeza daripada debugger, walaupun saya telah bekerja dengan debugger yang melakukan kedua-duanya pada masa yang sama. Dan ketika profiler saya rasa lebih menarik dari dua alat itu, jika saya merasa tidak cukup orang debug, maka pastinya tidak cukup profil orang, karena salah satu dari sepuluh debugger akan profil, nampaknya. Dan itu memalukan, kerana profil boleh benar-benar membuat perbezaan besar. Sekarang, bahasa pangkalan data, seperti yang telah kami bincangkan sebelumnya, anda sudah mendapat SQL - dan kami telah memaksa palang putaran ke dalam lubang persegi di sini dan memaksanya menjadi bahasa pengaturcaraan - dan Oracle. Itulah PL / SQL - itu bahasa prosedur SQL - dan SQL Server, itu Transact-SQL, itu SQL-99, itu SQL / PSM - untuk, saya fikir, itu Modul Tersimpan Prosedur. Postgres memberikan namanya yang lain, nama DB2 lagi nama, Informix, tetapi maksudnya semua orang telah memaksa membina jenis 3GL; dengan kata lain, UNTUK gelung, pada pengisytiharan berubah-ubah dan semua perkara lain yang asing kepada SQL kini menjadi sebahagian daripada SQL dalam bahasa-bahasa tersebut. Jadi, anda perlu dapat debug PL / SQL atau Transact-SQL sama seperti program Visual Basic.

Sekarang, objek pangkalan data, ini penting kerana orang akan berkata, "Nah, apa yang perlu saya debug dalam pangkalan data?" Dan jawapannya, baik, apa sahaja yang anda boleh simpan dalam pangkalan data sebagai kodak - jika saya lakukan T-SQL, atau PL / SQL - dan saya menyimpan objek dalam pangkalan data, mungkin prosedur yang disimpan atau fungsi disimpan. Tetapi ada juga pencetus: pencetus adalah sejenis seperti prosedur tersimpan, tetapi kebakaran pada beberapa jenis peristiwa. Sekarang, sesetengah orang dalam pemicu mereka akan meletakkan satu baris kod dan memanggil prosedur tersimpan supaya mereka menyimpan semua kod dan prosedur tersimpan mereka, tetapi ia adalah konsep yang sama: ia masih pemicu boleh menjadi apa yang memulakan segala-galanya. Dan kemudian sebagai Oracle, mereka mempunyai sesuatu yang dipanggil pakej, yang semacam perpustakaan seperti jika anda mahu. Anda meletakkan 50 atau 100 prosedur tersimpan dalam satu kumpulan, dipanggil pakej, jadi ia seperti perpustakaan. Jadi, inilah debugger cara lama; ini sebenarnya alat yang akan masuk dan melekatkan semua pernyataan debug ini dalam kod anda untuk anda. Oleh itu, di mana-mana anda melihat blok debug, jangan keluarkan, debugger auto mula dan jejak, semuanya tersekat oleh beberapa alat. Dan garis di luar itu, yang merupakan minoriti kod, dengan baik, itulah kaedah debugging bukan manual.

Dan sebab saya membawa ini, jika anda cuba melakukan ini dengan tangan, anda sebenarnya akan menaip lebih banyak kod debugging untuk dimasukkan ke dalam semua pernyataan cetakan ini daripada anda dengan kod. Jadi, sementara ini mungkin berfungsi, dan ketika itu lebih baik daripada apa-apa, ini adalah cara yang sangat sukar untuk debug, terutama sejak, bagaimana jika ia diambil 10 jam untuk hal ini dijalankan, dan di mana masalahnya ada dalam baris tiga? Jika saya melakukan sesi debugging secara interaktif, saya akan tahu pada baris tiga - lima minit ke sana - hey, ada masalah di sini, saya boleh berhenti. Tetapi dengan ini, saya perlu menunggu untuk menjalankannya, sehinggalah selesai dan kemudian saya perlu melihat beberapa fail jejak yang mungkin mempunyai semua kenyataan cetak di dalamnya, dan cuba mencari jarum di dalam jerami. Sekali lagi, ini lebih baik daripada apa-apa, tetapi ia tidak akan menjadi cara terbaik untuk bekerja. Kini, ini adalah apa yang kelihatan seperti fail yang datang dari slaid sebelumnya; dalam erti kata lain, saya menjalankan program ini, dan ia hanya mendapat banyak pernyataan cetak dalam fail jejak ini dan saya mungkin atau mungkin tidak dapat menyedut melalui ini dan mencari apa yang saya perlu cari. Jadi, sekali lagi, saya tidak begitu pasti bahawa ini adalah cara anda mahu bekerja.

Sekarang, debug interaktif - dan jika anda menggunakan sesuatu seperti Visual Studio untuk menulis program, atau Eclipse, anda mempunyai debugger dan anda menggunakannya dengan bahasa anda yang lain - hanya tidak berfikir untuk menggunakannya di sini dengan pangkalan data anda. Dan terdapat alat di luar sana, seperti DB Artisan dan Rapid SQL kami, ini Rapid SQL di sini, yang mempunyai debugger, dan anda boleh lihat di sebelah kiri, saya mempunyai prosedur yang tersimpan yang dipanggil "cek untuk pendua." Pada asasnya, ia hanya akan pergi dan melihat dan melihat sama ada saya mempunyai beberapa baris dalam jadual dengan tajuk filem yang sama. Oleh itu, pangkalan data adalah untuk filem. Dan anda boleh lihat di sebelah kanan, di bahagian atas ketiga, saya mendapat kod sumber saya di tengah-tengah, saya mempunyai apa yang dipanggil pembolehubah jam tangan saya dan dulang timbunan panggilan saya, dan kemudian di bahagian bawah saya ' dan mendapat beberapa mesej output. Dan apa yang penting di sini ialah, jika anda melihat anak panah merah pertama, jika saya tetikus ke atas pemboleh ubah, saya sebenarnya dapat melihat nilai apa yang ada dalam pembolehubah itu pada masa itu dalam masa, kerana saya melangkah masuk ke kod. Dan itu benar-benar berguna, dan kemudian saya boleh melangkah satu baris pada satu masa melalui kod itu, saya tidak perlu mengatakan melaksanakan, saya boleh mengatakan langkah demi langkah, biar saya melihat apa yang berlaku, langkah yang lain, biar saya melihat apa yang berlaku, dan saya lakukan ini dalam pangkalan data. Dan walaupun saya duduk di Rapid SQL di PC saya dan pangkalan data saya berada di awan, saya masih boleh melakukan debugging jauh itu dan melihatnya dan mengawalnya dari sini, dan melakukan debug seperti saya dengan mana-mana bahasa lain.

Sekarang, anak panah seterusnya di sana - anda dapat melihat anak panah seperti kecil yang menunjuk ke kanan, ke arah output DBMS, di mana kursor saya pada masa ini - jadi dengan kata lain, saya telah melangkah dan itu di mana saya berada di masa ini. Jadi, jika saya berkata, "Langkah sekali lagi, " saya akan pergi ke baris seterusnya. Sekarang di bawah ini anda akan melihat titik merah. Nah, itu titik putus, yang mengatakan "Hei, saya tidak mahu melangkah ke garisan ini." Jika saya hanya ingin melompat ke atas segala-galanya dan sampai ke titik merah itu, saya boleh memukul butang larian dan ia akan berjalan dari sini sama ada hingga ke akhir, atau ke titik putus, jika terdapat titik putus yang ditetapkan, dan kemudian ia akan berhenti dan saya akan melangkah lagi. Dan sebab ini semua penting dan berkuasa, adalah kerana apabila saya melakukan semua ini, apa yang berlaku di bahagian tengah dan juga bahagian bawah - tetapi yang paling penting di tengah - akan berubah dan saya dapat melihat nilai dari pemboleh ubah saya, Saya dapat melihat jejak panggilan saya, anda tahu, dan semua maklumat itu dipaparkan di sana kerana saya melangkah kod, jadi saya benar-benar dapat melihat dan merasakan dan mendapatkan pemahaman tentang apa yang berlaku dan bagaimana sebenarnya kod itu bekerja pada masa pelaksanaan. Dan biasanya saya dapat mencari masalah, jika ada, atau jika saya cukup baik untuk menangkapnya.

OK, sekarang saya akan bercakap mengenai profiler, dan dalam kes ini, ini adalah profiler yang boleh saya lihat melalui debugger. Ingat saya katakan kadang-kadang mereka terpisah dan kadang-kadang mereka boleh bersama-sama? Dalam kes ini, dan sekali lagi, saya berada di Rapid SQL, dan saya dapat melihat ada margin, di sebelah kiri, di sebelah nombor baris. Dan apa itu, itulah bilangan detik atau mikrodetik yang diperlukan untuk melaksanakan setiap baris kod, dan saya dapat melihat dengan jelas, semua masa saya dibelanjakan dalam gelung FOR ini dimana saya memilih semua dari meja . Dan sebagainya, apa yang berlaku di dalam gelung UNTUK itu mungkin sesuatu yang saya perlu lihat, dan jika saya boleh membuatnya lebih baik, ia akan membayar dividen. Saya tidak akan mendapat apa-apa penambahbaikan dengan bekerja pada garis yang mempunyai seperti 0.90 atau 0.86; tidak banyak masa yang dibelanjakan di sana. Sekarang, dalam kes ini, dan sekali lagi, saya dalam SQL Rapid, anda melihat bagaimana saya boleh melakukan profil yang bercampur dengan debug saya. Kini, apa yang baik adalah Rapid SQL juga membolehkan anda melakukannya dengan cara lain. SQL Rapid membolehkan anda mengatakan, "Anda tahu apa? Saya tidak mahu berada di debugger, saya hanya mahu menjalankan ini dan kemudian saya ingin melihat jenis maklumat yang sama secara grafik atau visual. "

Dan anda dapat melihat bahawa saya tidak lagi dalam debugger dan ia menjalankan program dan selepas pelaksanaan selesai, ia memberi saya carta untuk memberitahu saya perkara supaya saya dapat melihat bahawa saya mempunyai satu pernyataan yang kelihatan seperti ia mengambil kebanyakan carta pai dan jika saya melihat, saya melihat pada grid itu ke arah bawah, baris 23, terdapat gelang FOR lagi: dia mengambil masa yang paling banyak, dia sebenarnya merah gelap mengunyah semua carta pai. Oleh itu, ini adalah satu lagi cara untuk membuat profil. Kami berlaku untuk memanggil bahawa "Kod Penganalisis" dalam alat kami. Tetapi pada asasnya hanya profiler dipisahkan daripada debugger. Sesetengah orang suka melakukannya dengan cara yang pertama, sesetengah orang suka melakukannya dengan cara yang kedua.

Mengapa kita melakukan debugging dan profil? Ia bukan kerana kita mahu menulis kod terbesar di dunia dan mendapatkan kenaikan gaji - itu mungkin alasan kita, tetapi itu bukan sebabnya anda melakukannya - anda menjanjikan perniagaan yang akan anda lakukan dengan betul, bahawa program anda akan berkesan. Itulah yang anda akan gunakan debugger untuk. Di samping itu, pengguna akhir perniagaan; mereka tidak sabar: mereka mahukan keputusan sebelum mereka menekan kekunci. Kami sepatutnya membaca fikiran mereka dan melakukan semuanya dengan serta-merta. Dalam erti kata lain, ia perlu menjadi cekap. Dan sebagainya, itulah yang kita gunakan profiler untuk. Sekarang, tanpa alat ini, saya benar-benar percaya anda lelaki ini dalam saman perniagaan dengan busur dan anak panah dan anda menembak sasaran dan anda ditutup dengan mata. Kerana bagaimana anda akan mencari bagaimana program dijalankan dengan hanya melihat kod statik dan bagaimana anda akan mengetahui baris mana di mana ia benar-benar akan menghabiskan masa yang paling dalam pelaksanaan, sekali lagi, hanya dengan melihat kod statik? Tinjauan kod mungkin atau mungkin tidak muncul beberapa perkara ini, tetapi tidak ada jaminan kod kajian akan menemui mereka semua. Menggunakan debugger dan profiler anda harus dapat mencari semua bug tersebut.

OK, saya hanya akan melakukan demo cepat di sini. Bukan niat saya untuk menolak produk, saya hanya ingin menunjukkan kepada anda apa yang kelihatan seperti penyebab debugger 'sebab banyak kali orang akan berkata, "Saya tidak pernah melihat salah satu daripada ini sebelum ini." Dan ia kelihatan cantik dalam slaid skrin snap, tetapi apa yang kelihatan seperti ketika ia bergerak? Jadi, di sini pada skrin saya saya menjalankan produk Artisan DB kami; kita mempunyai debugger di sana juga. Artisan DB lebih bermakna bagi DBAs, Rapid SQL lebih banyak untuk pemaju, tetapi saya telah melihat pemaju yang menggunakan DB Artisan, dan saya telah melihat DBA yang menggunakan Rapid. Jadi, jangan terperangkap pada produk. Dan di sini, saya mempunyai pilihan melakukan debug, tetapi sebelum saya melancarkan debug, saya akan mengeluarkan kod ini supaya anda dapat melihat kod tersebut sebelum saya mula menjalankannya. Jadi, di sini ialah kod yang sama yang terdapat dalam petikan skrin, ini adalah cek saya untuk pendua. Dan saya mahu debug ini, jadi saya tekan debug. Dan sekarang, ia mengambil sedikit masa dan anda berkata, "Nah, mengapa ia mengambil masa?" Ingat penyahpepijat jauh: debugging sebenarnya berlaku di pelayan pangkalan data saya, bukan pada PC saya. Jadi, ia perlu pergi dan buat sesi di sana, buat perkara penyahpepijatan jarak jauh, sambungkan sesi saya ke sesi penyahpepijatan jarak jauh dan sediakan saluran komunikasi.

Jadi, sekarang, anak panah saya, di sana di atas, dengan satu baris, di mana saya berada di dalam kod. Dan jika saya menekan ikon ketiga di sana, yang merupakan langkah ke dalam, anda akan melihat anak panah itu bergerak, dan jika saya terus menekannya, anda akan melihatnya terus bergerak. Kini, jika saya mahu pergi ke gelung FOR ini, kerana saya tahu di sinilah masalahnya, saya boleh menetapkan titik putus. Saya fikir saya menetapkannya. Oh menembak, saya mempunyai salah satu kunci tangkapan skrin saya dipetakan ke kunci yang sama seperti debugger, itu yang menyebabkan kekeliruan. OK, jadi saya secara manual menetapkan titik pemecah di sana, jadi sekarang bukannya melakukan langkah, langkah, langkah, langkah sehingga saya sampai ke sana, sebenarnya saya hanya boleh berkata, "Teruskan dan lari perkara ini, " dan ia akan berhenti. Perhatikan ia menggerakkan saya sepanjang jalan ke mana titik pecahnya, jadi saya kini dalam konteks menjalankan gelung ini, saya dapat melihat apa yang semua pemboleh ubah saya ditetapkan, yang tidak mengejutkan, kerana saya memulakan semua kepada sifar. Dan sekarang, saya boleh melangkah masuk ke dalam gelung ini dan mula melihat apa yang berlaku di dalam gelung ini.

Oleh itu, sekarang ia akan membuat kiraan pilih dari sewa saya dan saya boleh tetikus ke atas lelaki itu dan melihat, dia dua, dua adalah lebih besar daripada satu, jadi ia mungkin akan melakukan sekeping seterusnya kod ini. Dengan kata lain, ia mendapati sesuatu. Saya akan teruskan dan membiarkannya berjalan. Saya tidak mahu melalui segala-galanya di sini; apa yang saya ingin tunjukkan kepada anda adalah apabila debugger selesai, ia selesai seperti program biasa. Saya mempunyai set breakpoint, jadi apabila saya berkata berlari, ia hanya kembali ke titik break seterusnya. Saya membiarkannya berjalan hingga akhirnya, 'sebab apa yang saya ingin anda lihat ialah debugger tidak mengubah tingkah laku program: apabila ia selesai berjalan, saya harus mendapat hasil yang sama jika saya tidak menjalankannya di dalam debugger.

Dan dengan itu, saya akan menggantung demo dan kembali kerana kami ingin memastikan kami mempunyai masa untuk soalan dan jawapan. Jadi, saya akan membukanya untuk soalan dan jawapan.

Eric Kavanagh: Baiklah, Robin, mungkin pertanyaan daripada anda dan kemudian pasangan dari Dez?

Robin Bloor: Ya, sudah tentu, saya dapati ini menarik, tentu saja. Saya telah bekerja dengan perkara-perkara seperti ini, tetapi saya tidak pernah bekerja dengan apa-apa seperti ini dalam pangkalan data. Bolehkah anda memberi saya idea mengenai apa yang digunakan oleh profiler? Kerana ia seperti, apakah mereka melihat - 'kerana saya menganggap mereka - mereka sedang melihat masalah prestasi, adakah ia akan membantu anda membezakan antara apabila pangkalan data mengambil masa dan apabila kod memerlukan masa?

Bert Scalzo: Anda tahu, itu soalan yang hebat. Katakan saya bekerja di Visual Basic, dan saya, dalam Visual Basic saya akan memanggil Transact-SQL atau PL / SQL. Biarkan saya melakukan PL / SQL, kerana Oracle tidak bermain dengan baik dengan alat Microsoft. Saya mungkin memaparkan kod Visual Basic saya, dan profilnya mungkin berkata, "Hei, saya memanggil prosedur yang disimpan ini dan mengambil masa terlalu lama." Tetapi kemudian saya boleh masuk ke prosedur tersimpan dan saya boleh melakukan profil pangkalan data pada disimpan Prosedur dan berkata, "OK, daripada 100 kenyataan yang ada di sini, inilah lima yang menyebabkan masalah ini." Oleh itu, anda mungkin perlu membuat pasukan tag, di mana anda perlu menggunakan beberapa profiler.

Idea ini adalah jika anda pernah memberitahu masalah prestasi dalam pangkalan data anda, profil pangkalan data boleh membantu anda mencari jarum dalam storan jerami yang mana kenyataannya sebenarnya adalah masalah di mana anda mempunyai masalah. Saya memberitahu anda satu lagi perkara yang muncul dengan pemprofilan: jika anda mempunyai sekeping kod yang dipanggil satu juta kali, tetapi ia hanya memerlukan satu mikrosekon setiap juta kali, tetapi ia akan dipanggil satu juta kali, profiler akan menunjukkan, perkara itu berlari untuk banyak unit masa ini. Oleh itu, sementara kod itu mungkin sangat berkesan, anda mungkin melihat dan berkata, "Ooh, kami membuat panggilan ini terlalu sering. Mungkin kita hanya perlu memanggilnya setiap kali, dan bukannya setiap kali kita memproses rekod, "atau sesuatu. Dan oleh itu anda boleh mencari di mana terdapat kod yang cekap yang hanya dipanggil terlalu kerap, dan itu sebenarnya masalah prestasi.

Robin Bloor: Ya, itu bagus. Saya tidak pernah melakukan ini. Anda lihat, sudah tentu, apabila saya mempunyai masalah pangkalan data ia seperti saya akan dalam satu cara atau sama ada berurusan dengan pangkalan data atau berurusan dengan kod; Saya tidak boleh berurusan dengan kedua-dua mereka pada masa yang sama. Tetapi di sana, sekali lagi, saya tidak melakukannya- Saya tidak pernah benar-benar terlibat dalam membina aplikasi di mana kita telah menyimpan prosedur, jadi saya rasa saya tidak pernah benar-benar menghadapi masalah yang digunakan untuk memandu saya liar, idea bahawa anda 'd memecah kod antara pangkalan data dan program. Tetapi, lakukan semua-saya menganggap jawapannya akan menjadi ya, tetapi ini adalah sebahagian daripada aktiviti pasukan pembangunan, apabila anda dalam satu cara atau yang lain cuba untuk membetulkan sesuatu yang patah, atau mungkin cuba membawa yang baru permohonan bersama. Tetapi adakah ini semua disesuaikan dengan semua komponen lain yang saya harapkan dalam persekitaran? Bolehkah saya menjangkakan bahawa saya boleh klip ini bersama-sama dengan semua pek ujian saya dan semua perkara lain yang akan saya lakukan dan dengan bahan pengurusan projek saya, adalah bagaimana semua klip ini bersama-sama?

Bert Scalzo: Ya, ia boleh menjadi sebahagian daripada sebarang proses berstruktur untuk melakukan pemrograman atau usaha pembangunan anda. Dan itu lucu, minggu lepas saya mempunyai pelanggan yang sedang membina aplikasi web, dan pangkalan data mereka telah kecil, secara bersejarah, dan hakikat bahawa mereka bukan pengaturcara yang sangat baik tidak pernah menyakiti mereka. Nah, pangkalan data mereka telah berkembang selama bertahun-tahun, dan kini mengambil masa 20 saat dalam laman web, antara ketika anda berkata, "Log masuk saya dan beri saya beberapa data untuk melihat" dan apabila skrin sebenarnya muncul, dan sekarang kini masalah prestasi. Dan mereka tahu masalahnya tidak ada di Jawa mereka atau mana-mana tempat lain. Tetapi mereka mempunyai beribu-ribu prosedur tersimpan dan jadi mereka harus memulakan profil prosedur tersimpan untuk mengetahui mengapa laman web ini mengambil masa 20 saat untuk muncul? Dan kita sebenarnya mendapati mereka mempunyai Cartesian menyertai salah satu kenyataan pilihan mereka dan tidak tahu.

Robin Bloor: Wow.

Bert Scalzo: Tetapi seseorang pernah berkata kepada saya pada satu ketika, "Bagaimana mereka boleh menyertai Cartesian dan tidak tahu?" Dan ini akan menjadi sangat mengerikan; kadang-kadang seorang pemrogram yang tidak begitu selesa dengan SQL akan melakukan sesuatu seperti memberi saya satu ikatan Cartesian, tetapi kemudian hanya memberi saya kembali rekod pertama, jadi saya tahu saya mendapat sesuatu, dan saya hanya perlu yang pertama. Jadi, mereka tidak menyedari bahawa mereka hanya membawakan satu bilion rekod atau mereka melihat satu bilion rekod, 'kerana mereka mendapat yang mereka minat.

Robin Bloor: Betul, saya tahu, itulah yang dipanggil-baik, itulah yang Dez sedang berlaku, dari segi orang tidak sama seperti mahir seperti mungkin, anda tahu. Jika anda seorang pengatur program, anda harus tahu apa implikasi mengeluarkan arahan apa pun. Maksud saya, sebenarnya, tidak ada alasan bahawa tahap kebodohan. Saya juga menganggap bahawa anda, dalam satu cara atau yang lain, hanya bahasa agnostik berkenaan dengan ini, kerana ini semua memberi tumpuan kepada bahagian pangkalan data. Adakah saya betul? Adakah ia sama, apa sahaja yang anda gunakan di sebelah pengekodan?

Bert Scalzo: Sudah tentu, anda boleh melakukan ini dalam Fortran atau C atau C ++. Sebenarnya, pada beberapa Unixes anda juga boleh melakukannya untuk bahasa skrip mereka; mereka sebenarnya menyediakan alat yang sama. Dan kemudian saya mahu kembali sebentar untuk apa yang anda katakan tanpa alasan. Saya akan memberikan satu program pemecah, kerana saya tidak suka membuang programmer di bawah bas. Tetapi masalahnya benar-benar persekitaran akademik kerana apabila anda pergi untuk belajar bagaimana menjadi seorang pengaturcara, anda diajar pemikiran rekod pada satu masa. Anda tidak diajar berfikir yang ditetapkan, dan itulah Apa yang Terstruktur Query Language, atau SQL berfungsi dengan set; itulah sebabnya kami mempunyai kesatuan, persimpangan dan pengendali tolak. Dan kadang-kadang sangat sukar untuk orang yang tidak pernah berfikir dari segi set, untuk berhenti, melepaskan pemprosesan rekod pada satu masa dan bekerja dengan set.

Robin Bloor: Ya, saya bersama anda pada masa itu. Maksud saya, saya mendapat sekarang, itu masalah pendidikan; Saya fikir itu benar-benar satu isu pendidikan, saya fikir bahawa ia adalah semula jadi bagi pengaturcara untuk berfikir secara prosedur. Dan SQL bukan prosedur, itu perisytiharan. Anda sebenarnya hanya berkata, "Inilah yang saya mahu dan saya tidak peduli bagaimana anda melakukannya, " anda tahu? Sedangkan dengan bahasa pengaturcaraan anda sering mendapat lengan baju anda digulung dan anda turun ke dalam minutiae bahkan menguruskan hitungan, ketika anda melakukan loop. Saya akan menyerahkan kepada-

Bert Scalzo: Tidak. OK, teruskan.

Yeah, saya akan mengatakan bahawa anda membawa satu contoh lain yang profiler akan menangkap yang baik, jenisnya berjalan dengan pemprosesan rekod ini pada masa ini. Kadang-kadang, seorang pengaturcara yang baik pada logik rekod-at-satu-masa, tidak dapat memikirkan cara melakukan program SQL. Nah, katakan dia membuat dua gelung FOR dan pada dasarnya tidak menyertai, tetapi dia melakukannya di sisi klien. Oleh itu, dia melakukan kesan yang sama seperti menyertai, tetapi dia melakukannya sendiri, dan profil akan menangkapnya, kerana anda mungkin akan menghabiskan lebih banyak masa melakukan gabungan secara manual daripada membiarkan pelayan pangkalan data melakukannya untuk anda.

Robin Bloor: Ya, itu akan menjadi bencana. Maksud saya, anda hanya akan membelasah. Thrashing sentiasa buruk.

Bagaimanapun, saya akan berpindah ke Dez; Saya pasti dia mempunyai beberapa soalan yang menarik.

Dez Blanchfield: Terima kasih, ya, saya buat. Saya akan menyertai anda dalam program tidak membuang program di bawah bas. Maksud saya, saya telah menghabiskan terlalu banyak tahun dalam hidup saya sebagai pengkod sendiri, di setiap peringkat, anda tahu, sama ada seperti yang anda katakan, duduk di barisan arahan mesin Unix, dan dalam beberapa kes, saya juga terlibat di beberapa pelabuhan yang berbeza dari Unix dari satu platform perkakasan yang lain. Dan anda boleh membayangkan cabaran yang kami ada di sana. Tetapi kenyataannya adalah bahawa kad getir keluar untuk setiap pengkod dan scripter di dunia. Ia adalah sains roket, secara literal, untuk menulis sangat ketat setiap kali, sepanjang masa, adalah sains roket. Dan kisah terkenal orang seperti Dennis Ritchie dan Brian Kernahan bekerja pada beberapa sekeping kod secara bebas dan kemudian berpaling ke kod kajian semula chat melalui kopi dan mengetahui mereka telah menulis sekeping kod yang sama, dalam program yang sama, dengan cara yang sama. Dan mereka melakukannya dalam C. Tetapi tahap pemrograman yang murni ada sangat jarang.

Hakikatnya adalah setiap hari, hanya ada 24 jam dalam sehari, tujuh hari dalam seminggu, dan kita hanya perlu mendapatkan barangan. Dan, apabila ia bukan hanya pengaturcara tradisional, DBA, dan coder, dan skrip, dan sysadmin, dan pentadbir rangkaian, dan kakitangan keselamatan, dan segala-galanya sampai ke sisi data rakyat hari ini; kita dengar, semua orang hanya berusaha untuk melakukan pekerjaan mereka. Dan jadi saya fikir yang hebat dari semua ini adalah saya suka demo anda dan saya suka mengambilaway yang anda tinggalkan kami di sana, hanya beberapa saat yang lalu, bercakap dengan Robin tentang hakikat bahawa ini mempunyai tertentu - mungkin tidak begitu banyak niche - tetapi ruang luas yang digunakan untuk, sejauh menetapkan kod dan SQL dan pangkalan data. Tetapi saya sangat teruja untuk mendengar anda mengatakan bahawa anda boleh mencucuknya di skrip shell dan mencari beberapa isu, kerana anda tahu, pada hari ini dan umur kita sentiasa berusaha untuk kos terendah pada segala-galanya.

Sebab anda boleh membeli baju $ 6 di suatu tempat, adalah kerana seseorang membina sistem yang murah untuk benar-benar menghasilkan dan menghantar dan logistik menyampaikan dan menjual dan runcit dan mengambil pembayaran dalam talian untuk mendapatkan baju $ 6 itu. Dan itu tidak berlaku jika anda telah mendapat orang yang dibayar $ 400, 000 setahun untuk menulis kod dengan cara yang sempurna; ia hanya keseluruhan pembangunan. Jadi, ketika itu, saya rasa salah satu soalan yang saya benar-benar mengasihi anda untuk memberi kita lebih banyak pandangan, apakah keluasan dan jangkauan jenis orang yang anda lihat pada masa ini yang menggunakan alat ini ke profil kod dan mencari isu prestasi? Pada mulanya, secara sejarah, dari mana asalnya? Adakah mereka menjadi rumah kejuruteraan besar? Dan kemudian, ke depan, adakah perkara itu, adakah saya betul dalam berfikir bahawa semakin banyak syarikat melaksanakan alat ini, atau alat-alat ini, untuk mencuba dan membantu coders, yang mereka tahu yang baru saja selesai untuk menyelesaikan pekerjaan itu dan mengeluarkannya? Dan kadang-kadang kita perlu kad getaran keluar? Adakah saya betul-betul berfikir bahawa secara sejarah kami mempunyai fokus dan pembangunan yang lebih banyak? Sekarang, kita semakin kurang, seperti yang dikatakan Robin, pendekatan akademik, dan kini ia mengajar diri sendiri, atau kod cut-and-paste, atau hanya membina sesuatu? Dan adakah ia sepadan dengan jenis orang yang mengambil produk sekarang?

Bert Scalzo: Ya, tepatnya. Dan saya akan memberikan anda contoh yang sangat spesifik, kita hanya mahu mendapatkan pekerjaan yang dilakukan, 'kerana orang-orang perniagaan tidak mahu kesempurnaan. Ia seperti permainan catur berkomputer: permainan catur tidak mencari jawapan sempurna; ia mencari jawapan yang cukup baik dalam jangka masa yang munasabah, jadi itulah program kami. Tetapi apa yang saya cari sekarang ialah, kebanyakan orang bukannya mengatakan mereka mahu profiler sebagai sebahagian daripada ujian unit mereka - iaitu bagaimana saya akan melakukannya, 'kerana saya tidak melihatnya sebagai pembaziran masa - apa yang berlaku adalah sekarang bahawa itu dilakukan kemudian, kadang-kadang, semasa ujian integrasi atau ujian tekanan, jika kita bernasib baik. Tetapi kebanyakan masa itu adalah sebahagian daripada peningkatan, di mana sesuatu telah dikeluarkan, ia berlari seketika, mungkin berlari selama bertahun-tahun, dan sekarang ia tidak berfungsi dengan baik, dan kini kami akan memaparkannya. Dan itu seolah-olah menjadi senario yang lebih biasa sekarang.

Dez Blanchfield: Ya, dan saya fikir istilah "hutang teknikal" mungkin salah satu yang anda lebih dikenali; Saya tahu Robin dan saya pasti. Saya fikir hari-hari ini, terutamanya dalam pendekatan tangkas untuk membangun dan pembinaan sistem, kepada saya, konsep hutang teknikal sekarang adalah perkara yang sangat nyata, dan kita sebenarnya menyumbang dalam projek. Saya tahu, maksud saya, kami ada projek kami sendiri seperti Media Lens dan lain-lain, di mana kami mendapat pengekodan setiap hari, dan pelbagai perkara di seluruh Kumpulan Bloor. Dan apabila kita sedang membina sesuatu, kita sememangnya melihat, saya melihatnya, dan sentiasa melihat dari sudut pandang apa yang akan membebankan saya untuk menetapkan ini sekarang, berbanding saya boleh mendapatkannya dalam boleh dan dapatkan di sana, dan kemudian tonton dan lihat apakah perkara ini akan pecah. Dan mewarisi hutang teknikal ini yang saya tahu saya harus melingkari kemudian dan menetapkan.

Dan saya maksudkan, saya telah melakukannya dalam tempoh tujuh hari yang lalu: Saya telah menulis beberapa alat dan skrip, saya telah menulis beberapa bahasa Python, dan saya telah mengerahkannya ke Mongo kembali, membuat pasti ia bagus dan bersih dan selamat, tetapi ia hanya mendapat pertanyaan yang perlu saya lakukan, mengetahui bahawa saya memerlukan fungsi itu untuk berfungsi, untuk mendapatkan teka-teki yang lebih besar; Itulah kesakitan sebenar saya. Dan jadi anda menanggung hutang teknikal ini, dan saya fikir ini bukan sekadar perkara sesekali, saya fikir ini adalah sebahagian daripada DNA yang sedang berkembang sekarang. Orang-orang sahaja - tidak disingenuiti - mereka hanya menerima hutang teknikal adalah jenis modus operandi biasa isu, dan mereka hanya perlu menanggungnya. Di sinilah anda menanggung hutang teknikal. Dan saya fikir perkara yang hebat tentang apa yang anda tunjukkan kepada kami dalam demo ialah profil anda secara literal dan melihat berapa lama sesuatu diperlukan untuk dijalankan. Dan itu mungkin salah satu perkara kegemaran saya. Maksud saya, saya sebenarnya telah membina alatan profil - kita gunakan untuk membina alat di Sed dan Lex dan Orc untuk menjalankan kod kami dan melihat di mana gelung itu, sebelum alat seperti ini tersedia - dan apabila anda telah membina kod untuk pergi dan semak kod anda sendiri, anda mendapat sangat baik kerana tidak perlu mengkaji semula kod anda sendiri. Tetapi itu tidak berlaku sekarang. Dengan itu, adakah segmen pasaran tertentu yang mengambilnya lebih daripada yang lain? Melihat seperti jisim-

Bert Scalzo: Oh yeah, saya punya - saya akan melukis analogi untuk anda, dan menunjukkan kepada anda bahawa bukan programmer melakukannya sepanjang masa. 'Sebab, jika saya pernah mengajar kelas debugger dan profil atau sesi, saya akan bertanya kepada orang ramai, "OK, berapa ramai orang di sini pergi ke Microsoft Word dan sengaja tidak menggunakan pemeriksa ejaan?" Dan tiada siapa yang meletakkan tangan mereka, kerana untuk menulis dokumen, kita semua tahu kita boleh membuat kesilapan bahasa Inggeris, dan oleh itu semua orang menggunakan pemeriksa ejaan. Dan saya berkata, "Nah, bagaimana jika anda menulis teks dalam IDE anda seperti Visual Basic, anda tidak menggunakan debugger? Ia perkara yang sama, ia seperti pemeriksa ejaan. "

Dez Blanchfield: Ya, sebenarnya, itu adalah analogi yang hebat. Saya tidak fikir, saya perlu mengakui bahawa saya sebenarnya melakukan sesuatu yang serupa dengan beberapa alat yang saya gunakan. Sebenarnya, satu, ODF, kegemaran saya dengan Eclipse hanya memotong dan menampal kod di sana dan mencari perkara-perkara yang hanya menyerlahkan serta-merta dan menyedari bahawa saya membuat kesilapan dalam beberapa panggilan kelas. Dan, tetapi kini menarik dengan alat seperti ini, anda boleh melakukannya dalam masa nyata berbanding dengan datang kembali dan melihatnya kemudian, yang agak bagus untuk menangkapnya. Tetapi ya, itulah analogi yang hebat untuk hanya memasukkan teks ke dalam pemproses kata, kerana ia adalah panggilan bangun yang menarik, hanya menyedari bahawa anda telah membuat beberapa kesilapan atau bahkan kesalahan tatabahasa, bukan?

Bert Scalzo: Tepat.

Dez Blanchfield: Jadi, adakah anda melihat lebih banyak masalah sekarang daripada yang saya maksudkan, maksud saya, soalan akhir dari saya, sebelum saya membuang kepada Q & A mungkin, untuk hadirin kami. Sekiranya anda akan memberikan semacam cadangan mengenai pendekatan untuk melakukan ini - saya menganggap ini adalah retorik - adakah kes anda mendapat awal dan mendapatkan ini dilaksanakan seperti yang anda sedang berkembang, sebelum anda membangun? Atau adakah kes anda mendapatkan bangunan, bergerak, membina sesuatu kemudian masuk dan profilnya kemudian? Saya mengesyaki ia adalah kes mendapatkan awal dan pastikan muka kod anda bersih. Atau adakah ia satu perkara yang mereka patut mempertimbangkan bahagian ini selepas mereka menggunakan?

Bert Scalzo: Idealnya, mereka akan melakukannya di hadapan, tetapi kerana semua orang berada di dunia keramaian dan kesibukan di mana mereka hanya mendapatkan barangan yang dilakukan, mereka cenderung untuk tidak melakukannya sehingga mereka mengalami masalah prestasi yang mereka tidak dapat menyelesaikannya menambah lebih banyak CPU dan memori ke mesin maya.

Dez Blanchfield: Ya. Jadi, sebenarnya anda menyebut sesuatu yang menarik, jika saya boleh dengan cepat? Anda telah menyebut sebelum ini bahawa ini boleh dijalankan dari mana-mana sahaja, dan boleh bercakap dengan pangkalan data di hujung belakang. Jadi ini selesa dengan jenis konsep bimodal yang kita bercakap tentang sekarang, dari awan di premis / premis, dengan melihat perkara-perkara juga, pada akhir hari, jika ia boleh bercakap dengan hujung belakang dan melihat kod itu, ia tidak begitu peduli, adakah ia?

Bert Scalzo: Tepat, ya, anda boleh menjalankan ini di awan.

Dez Blanchfield: Sangat baik, kerana saya fikir ia adalah jenis di mana dunia berani baru kita akan pergi. Jadi, Eric. Saya akan kembali kepada anda sekarang dan melihat bahawa kami mempunyai beberapa soalan di sini dan saya mahu para hadirin kami tetap tinggal bersama kami, walaupun kami telah melepasi jam itu.

Eric Kavanagh: Ya, ada beberapa orang di sana, saya hanya akan membuat komen yang cepat: Bert, saya fikir metafora itu, analogi yang anda berikan untuk menggunakan pemeriksaan ejaan terus terang. Itu layak untuk blog atau dua, secara terang-terangan, kerana ia adalah cara yang baik untuk merangka konteks apa yang anda lakukan, dan betapa berharganya, dan bagaimana ia benar-benar menjadi amalan terbaik untuk menggunakan debugger secara tetap, kan? Saya yakin anda mendapat beberapa kepala mengangguk apabila anda membuangnya keluar, bukan?

Bert Scalzo: Sudah tentu, sebab apa yang saya katakan kepada mereka adalah, "Mengapa saya menjalankan pemeriksaan ejaan pada dokumen saya? Saya tidak mahu malu dengan kesilapan ejaan yang bodoh. "Mereka tidak mahu malu dengan kesilapan pengkodan bodoh!

Eric Kavanagh: Betul. Ya sememangnya. Nah, orang-orang, kami telah membakar selama satu jam dan lima minit di sini, terima kasih yang besar kepada anda semua di luar sana untuk masa dan perhatian anda. Kami mengarkibkan semua sembang web ini, jangan ragu untuk kembali pada bila-bila masa dan menyemaknya. Tempat terbaik untuk mencari pautan tersebut mungkin techopedia.com, jadi kami akan menambahkan ini ke senarai ini di sini.

Dan dengan itu, kami akan membida anda perpisahan, orang. Sekali lagi, kerja yang baik, Bert, terima kasih kepada rakan-rakan kami dari IDERA. Kami akan bercakap dengan anda pada masa akan datang, kami akan bercakap dengan anda minggu depan, sebenarnya. Jaga diri! Selamat tinggal.

Sambutan cepat: debug pangkalan data dan pemprofilan untuk penyelamatan