Брзо реаговање: Отклањање погрешака базе података и профилисање до спашавања

Аутор: Roger Morrison
Датум Стварања: 22 Септембар 2021
Ажурирати Датум: 1 Јули 2024
Anonim
Брзо реаговање: Отклањање погрешака базе података и профилисање до спашавања - Технологија
Брзо реаговање: Отклањање погрешака базе података и профилисање до спашавања - Технологија

Одузети: Домаћин Ериц Каванагх разговарао је о уклањању погрешака и профилирања базе података с др. Робин Блоор, Дез Бланцхфиелд и ИДЕРАс Бертом Сцалзо.



Тренутно нисте пријављени. Пријавите се или пријавите да бисте видели видео.

Ериц Каванагх: У реду, даме и господо, у среду је 4:00 по источном времену, и то наравно значи.

Робин Блоор: Не могу те чути, Ериц.

Ериц Каванагх: Био сам тамо пре неколико дана, па ниси сам. Али, тако да је данашња тема заиста занимљива ствар. То је врста ствари за коју желите да будете сигурни да се дешава у позадини ваше компаније, осим ако нисте особа која то ради, у ком случају желите да будете сигурни да то радите правилно. Јер су разговарали о отклањању грешака. Нитко не воли бугове, нико не воли када софтвер престане радити - људи се узнемире, корисници постану непријатељски расположени. То није добро. Дакле, ишли смо да разговарамо о „Брзом реаговању: Отклањање грешака и профилирање базе података за спашавање“.


Доиста је место за твоје, удари ме, наравно @ериц_каванагх.

Ова година је врућа. И уклањање погрешака биће вруће, без обзира на све. Стварно ће бити један од ових проблема који никада неће нестати, без обзира колико добро се сналазимо у тим стварима, увек ће то бити проблеми, па је кључно како доћи до места где можете брзо да решите та питања? У идеалном случају имате сјајне програмере, сјајна окружења у којима не иде превише погрешно, али као што каже стара изрека: „Несреће се догађају у најбољим породицама.“ И исто важи за организације. Дакле, ово ће се догодити, десиће се, питање је шта ће бити ваше решење за суочавање са тим и решавање тих проблема?

Добро се чујте са Др. Робин Блоор-ом, затим нашим Дез Бланцхфиелд-ом одоздо, и наравно, нашег доброг пријатеља Берта Сцалзо-а из ИДЕРА-е. А у ствари, предаћу кључеве Робин Блоору, однесите га. Спрат је твој.

Робин Блоор: ОК. Ово је занимљива тема. Мислио сам да ће Дез вјероватно наставити о стварним техникама и ратним причама о уклањању погрешака и помислио сам да само радим позадинску дискусију како бисмо добили потпуно заокружену слику онога што се догађа. Ја сам то дуго радио, и некада сам био кодер, тако да је било, и скоро сам био у искушењу са овом презентацијом да почнем воштати лирско о идеји отвореног кода, али мислио сам да ћу то оставити неком другом.


Овде је листа познатих бугова, а већина њих се налази на топ листи било кога, у основи, све осим последње две кошта најмање 100 милиона долара. Први је био Марс климатски орбитер, изгубио се у свемиру и то због проблема са кодирањем, где су људи збунили метричке јединице са (смех) ногама и инчима. У Ариане Фиве Флигхт 501 дошло је до неусклађености између мотора који је укључен и рачунара који су требали покретати ракету када је била лансирана. Вишеструки кварови на рачунару, експлозија ракете, вести о насловима. Совјетски гасовод 1982. године, за који се сматра да је највећа експлозија у историји планете; Нисам сигуран да ли је то. Руси су украли неки аутоматизовани управљачки софтвер, а ЦИА је схватила да ће то урадити и убацила грешке у њега, а Совјети су то спровели без тестирања. Дакле, дигао је нафтовод, помисливши да је то забавно.

Црв Моррис био је кодни експеримент, који је изненада постао безобзиран црв који је обишао све врсте - очигледно је проузроковао штету у вредности од 100 милиона долара; то је процена наравно. Интел је направио познату грешку са математичким чипом - инструкцијом из математике на Пентиум чипу 1993. године - која је требало да кошта више од 100 милиона долара. Програм Апплес Мапс вероватно је најгоре и најопасније покретање свега што је Аппле икада урадио. Мислим, људи који су покушали да је користе, мислим да се неко возио по 101, и открили да је Аппле Мап рекао да се налазе усред залива Сан Франциско. Тако су људи почели да називају апликацију Аппле Мапс као иЛост. - наш најдужи прекид у 1990. години - његов интересантан са становишта трошкова нечег таквог - АТ&Т су радили око девет сати и коштали су око 60 милиона долара у међуградским позивима.

И био сам у америчкој осигуравајућој компанији и бази података, они су имплементирали нову верзију базе података и почели су брисати податке. И тога се добро сећам, јер сам након тога позван да учествујем у некој врсти избора база података због тога. И било је веома занимљиво да су узели нову верзију базе података, а имали су и батерију тестова коју су урадили за нове верзије базе података које су прошле све тестове. Пронашао је заиста нејасан начин за брисање података.

Дакле, свеједно, то је то. Мислио сам да говорим о неподударности импеданце и изданом СКЛ-у. Занимљиво је да релацијске базе података похрањују податке у табеле и кодрере и имају тенденцију да манипулишу подацима у објектним структурама које заиста не одговарају врло добро у табеле. И због тога добијате оно што се назива неподударност импеданце и неко се мора суочити с тим на неки или други начин. Али шта се заправо догађа, јер један модел, модел кодира и други модел базе података нису нарочито усклађени. Добијате грешке који се једноставно не би десили да је индустрија градила ствари које раде заједно, а мислим да је смешно. Дакле, у основи кодирача, када добијете хијерархије, то могу бити типови, могу резултирати скупови, могу бити слабе могућности АПИ-ја, може бити много ствари које једноставно избацују ствари у смислу интеракције са базом података. Али ствар која је за мене највише занимљива, заиста занимљива; увек ме је изненадило што сте имали ову СКЛ баријеру која је такође својеврсна импеданција на начин да кодери и база података раде један са другим. Дакле, СКЛ има препознавање података, што је у реду и има ДМЛ за одабир, пројекат и придруживање, што је у реду. Можете бацити пуно могућности у погледу избацивања података из базе података с тим. Али има врло мало математичког језика за обављање ствари. Има мало тога и онога, и има врло мало времена заснованих на стварима. Због тога је СКЛ несавршен, ако желите, начин за добијање података. Дакле, дечки из базе уградили су похрањене процедуре како би живели у бази података и разлог за похрањене процедуре које живе тамо је тај што заправо нисте желели да бацате податке напред и назад у програм.

Неке су функционалности биле изузетно специфичне за податке, тако да није био само референтни интегритет и каскадно бришући и такве ствари, база података је водила рачуна о свим изненадним стављањем функционалности у базу података, што је наравно значило да је функционалност за апликација се може поделити на кодер и саму базу података. А то је учинило посао имплементације неких врста функција заиста прилично тешким и самим тим више склоним грешкама. Дакле, то је једна страна игре са базама података, јер то значи да сте добили на примјер пуно имплементација, да сам био укључен у релацијске базе података заиста је грозно пуно кода који сједи у похрањеним процедурама и који се рукује одвојено од кода који сједи у апликацијама. А чини се да је то морало бити врло необично, јер би требало да буде прилично паметно радити разне ствари.

Мислио сам да Ид такође говорим о перформансама базе података, јер се грешке у перформансама често сматрају грешкама, али у основи можете имати уско грло у ЦПУ-у, у меморији, на диску, на мрежи и можете имати проблема са перформансама због закључавања. Идеја би била да кодер заиста не треба да се брине о перформансама и да би база података у ствари била прилично добра. Требало би да буде дизајниран тако да кодер не треба знати. Међутим, добијате лош дизајн базе података, добијате лош дизајн програма, добијате истовремено сагласност у мешању радног оптерећења, што такође може довести до проблема са перформансама. Добивате балансирање оптерећења, планирате капацитет, раст података - што може довести до тога да се база података само заустави или успори. Занимљива је ствар када се базе података скоро пуне, успоравају. И можете имати проблем са слојевима података у смислу репликације и потребе за копирањем и потребом за прављење резервних копија и опоравка. У сваком случају, то је општи преглед.

Једино што бих хтео да кажем је да отклањање грешака у базама података може бити само напорно и не тривијално - и то кажем зато што сам пуно тога урадио - и често ћете открити његове ситуације као и све ситуације при отклањању грешака које сам икада доживео је, прво што сте икада видели је неред. И морате покушати и прећи из нереда да бисте сазнали како је до нереда дошло. И често када гледате у питање базе података, све што гледате су оштећени подаци и мислите: "Како се дођавола то догодило?"

У сваком случају, прећи ћу на Дез који ће вероватно рећи више речи мудрости него што сам испао. Не знам како да ти пренесем лопту, Дез.

Ериц Каванагх: Проћи ћу, станите, сачекајте.

Аутоматизовани глас: Линије учесника су искључене.

Ериц Каванагх: У реду, сачекај тренутак, дај да Дез дам лопту.

Дез Бланцхфиелд: Хвала, Ериц. Да, докторе Робин Блоор, заиста сте најтачнији: ово је тема, доживотна глупост ако се опростите за папу, извини што нисам могао себи да помогнем. Надам се да ћете тамо моћи да видите мој први екран, извињавам се због проблема са величином фонта. Тема грешака је свакодневно предавање, у многим случајевима из мог искуства. То је тако широка и широка тема, тако да ћу се усредсредити на две кључне области, тачније на концепт онога што ми сматрамо грешком, али проблем програмирања. Мислим да ових дана увођење грешака по себи углавном долази из интегрисаних развојних окружења, иако су то можда дуготрајне грешке. Али често је то случај профилирања кода и могуће писање кода који функционише, то би требало бити грешка. Дакле, мој насловни слајд овде, уствари сам имао копију ове слике у веома високој резолуцији А3, али нажалост уништен је у пресељењу куће. Али ово је рукописна белешка на програмском листу из око 1945. године, где су наводно неки људи са Универзитета Харвард у САД-у, своју другу конструкцију машине назвали Марк ИИ. Дебугирали су неко питање, заједничким језиком, али покушавали су пронаћи грешку, а испоставило се да се нешто мало разликовало од хардвера и наводног проблема са софтвером.

Дакле, урбани мит је онај круг око 9. септембратх, 1945. тим са Универзитета Харвард раздвајао је машину, наишли су на нешто што су називали "седамдесет релејних" - у тим данима програмирање је урађено у физичком смислу, везали сте шифру око плоче и тако сте ефикасно програмирали машина - и открили су овај релеј број седамдесет да нешто није у реду са њим, а испоставило се да је стварни израз „бубица“ настао зато што је буквално био мољац - наводно је био мољац закачен између неког комада бакрене жице са једног места на друго. А прича каже да легендарна Граце Хоппер за овај наслов, за мој слајд наслов, „први стварни случај проналаска бубе“, цитира цитат.

Али како је Робин нагласио раније у свом првом дијапозитиву, концепт грешке сеже толико далеко колико можемо замислити да људи раде рачунање, концепте попут закрпе. Израз "закрпа" настао је од стварног дела траке који се залепио преко рупе на картици за бушење. Али цела поанта овога је да је појам „отклањање грешака“ произашао из овог концепта проналажења грешке у физичкој машини.И од тада, ту терминологију смо користили око покушаја да се бавимо проблемима, или не толико колико проблема кодирања у програму који се не компајлира, већ као програм који не ради добро. А посебно није профилирано само пронађите ствари попут бесконачних петљи које само нигде не иду.

Али имамо и сценариј, и мислио сам да сам ставио неколико шаљивих слајдова пре него што сам се позабавио мало више детаља. Ево класичног цртаног филма, названог КСКЦД на интернету, и карикатуриста има прилично смешне погледе на свет. А они о детету званом "Мали Бобби столи" и наводно су његови родитељи тог дечака прозвали Робертом); СМОЖИТЕ ТАБЕЛУ Ученици; - и то се зове, и врста „Здраво, ово је школа ваших синова која има проблема са рачунаром", а родитељ одговара: „О, драги, је ли нешто покварио?", А наставник каже: „Па, на неки начин ", а учитељ пита," да ли си заиста именовао свог сина Роберта); ДРОП ТАБЛЕ Студенти; -? “А родитељ каже:„ О да, мали Бобби Столови, зовемо га. “У сваком случају, настављају да кажу да су сада изгубили студенте о годинама, надам се да сте срећни. А одговор је: „Па, требали бисте очистити и санирати уносе своје базе података.“ А ја то много пута користим да причам о неким проблемима које имамо у проналажењу ствари у коду, а да често и код не гледа податке. .

Још једна смешна, не знам да ли је ово стварно или не - сумњам да је то подметач - али опет, такодје се дотиче моје смешне кости. Неко мења регистарске таблице на предњем делу свог аутомобила, на сличну изјаву која узрокује пад података у брзинама камера и тако даље, који снимају регистарске таблице аутомобила. Увек то говорим као да сумњам да је било који програмер очекивао да ће их стварни мотор пронаћи и погодити, али то никада не подцењујте - моћ љутог штребера.

(Смех)

Али претпостављам да ме ово води ка мојој кључној тачки, а то је да смо једном давно могли исправити погрешку и профилити код као обичне смртнике. Али ја увелико сматрам да је то време прошло, и то случајно у мом искуству, мој први - и то ће ми грозно старост, сигуран сам; Робин, добродошао си да ми се засмејаш због тога - али историјски долазим из позадине у доби од 14 година лутајући крај града и куцајући на врата дата центра под називом „Дата Цом“ на Новом Зеланду и питати да ли Могао бих зарадити џепарац у школи тако што бих сваки дан долазио у касни аутобус, око 25 км вожње, стављајући папир у касете и врпце у касете и био сам генерални администратор. И довољно је знатижељно да су ми дали посао. Али с временом сам успео да се упустим у особље и нађем програмере и схватим да волим кодирање и прошао сам кроз процес извршавања скрипти и скупоцјених послова, што на крају дана још увек кодира. Морате писати скрипте и скупити задатке који изгледају као мини програми, а затим проћи кроз цео процес седења на 3270 терминалу за писање терминала.

У ствари, моје прво искуство било је на терминалу телелета, који је заправо био физички грех 132 колоне. У суштини, мислите на врло стару писаћу машину са папиром који се провлачио кроз њу, јер нису имали ЦРТ цев. А код за уклањање погрешака на том месту био је врло невивијални проблем, тако да сте имали тенденцију да ручно напишете сав свој код, а затим се понашате као дактилограф, трудећи се да не дођете до грешака да се увучете, јер то мора бити изузетно фрустрирајуће уредник једне линије отишао је до одређене линије, а затим линију и затим је поново унео. Али једном приликом, тако смо писали код и тако смо исправљали грешке, и у томе смо били веома, врло добри. У ствари, то нас је присилило на веома добре технике програмирања, јер је била права гњаважа да то поправимо. Али путовање је тада прошло - и сви су били упознати с тим - ишло је од искуства 3270 терминала у мом свету, до Дигиталне опреме ВТ220 на којој сте могли видети ствари на екрану, али опет, управо сте радили исту ствар као и ви на папирној врпци врста ед формата само на ЦРТ-у, али могли сте их лакше избрисати и нисте имали тај звук „дит дит дит дит“.

А онда знате, Висе терминали - попут Висе 150 - вероватно мој омиљени интерфејс за рачунар икада - а затим ПЦ и Мац, а данас модерне ГУИ и ИД-ове који се темеље на вебу. И низ програма кроз то, програмирање у једном и асемблеру и ПИЛОТ и Лого, Лисп и Фортран и Пасцал и језике који могу натерати људе. Али то су језици због којих сте морали да пишете добар код; нису вам дозволили да се склоните са лошим праксама. Ц, Ц ++, Јава, Руби, Питхон - и што више напредујемо у тој фази програмирања, добијамо више сличан скрипту, приближавамо се језику структурираног упита и језицима попут ПХП-а који се заправо користе за позивање СКЛ-а. Поанта да вам кажем да долазим из моје позадине, била сам самоученица на више начина, а они који су ми помогли да учим, научили су ме врло доброј програмској пракси и врло добрим праксама око дизајна и процеса како бисте били сигурни да нисам увео бугги код.

Начин програмирања ових дана, на пример, Структурни језик упита, СКЛ, његов је врло моћан, једноставан језик упита. Али ми смо то претворили у програмски језик и ја стварно не верујем да је СКЛ икада дизајниран као модеран програмски језик, али ми смо га сковали да то постане. А то уводи читав гомилу проблема, који настају када размишљамо са две тачке гледишта: са становишта кодирања и са становишта ДБА. Врло је лако доћи и увести грешке за ствари попут само лоших програмских техника, лењо напора код писања кода, недостатка искуства, класичног пеее-а за кућне љубимце које имам, на пример, са СКЛ-овцима који скачу на Гоогле и траже нешто и проналазе тај веб-сајт добио пример и урадио копију и лепљење постојећег кода. А затим копирање лошег кодирања, злоупотребе и стављање у производњу, јер се једноставно догоди да им дате резултате које желе. Имате и других изазова, на пример, ових дана сви су журили ка томе, оно што ми називамо трком до нуле: покушавајући да све направимо тако јефтино и тако брзо, да имамо сценарио где нисмо запошљавали мање плаћене кадрове. И то не мислим безобразно, али нисам ангажирао стручњаке за сваки могући посао. Некада давно било шта везе са рачунаром била је ракетна наука; била је укључена у ствари које су се гњавиле и биле веома гласне, или су улазиле у свемир или су инжењери били високо квалификовани мушкарци и жене који су дипломирали и имали ригорозно образовање које их је спречавало да раде луде ствари.

Ових дана пуно људи који се баве развојем и дизајном и базом података који нису имали дугогодишње искуство, нису имали нужно исту обуку или подршку. И тако завршавате сценаријем само традиционалног аматера насупрот стручњака. И постоји позната линија, не могу се заправо сјетити ко је створио цитат, линија иде: "Ако мислите да је скупо ангажовање стручњака за посао, причекајте док не запослите неколико аматера који стварају проблем и морате очистите га. "И тако СКЛ има то питање, и то је врло, врло лако научити, његов је врло једноставан за употребу. Али, по мом мишљењу, то није савршен програмски језик. Врло је лако урадити ствари попут одабране звезде одакле год да извучете све то у програмски језик који вам је угоднији као ПХП и Руби или Питхон, и користите програмски језик који сте изворно познавали, за манипулацију подацима, уместо да ради сложенији упит у СКЛ-у. И то много видимо, и тада се људи питају зашто база података ради споро; то је зато што милион људи покушава да купи карту из система за онлајн куповину, где то чини одабрана звезда одакле год.

То је заиста екстремни пример, али ви од свега тога схватате. Дакле, да бих стварно погодио ту тачку кући, ево примера који ја много носим. Велики сам љубитељ математике, волим теорију хаоса, волим комплете Манделброт. На десној страни је приказ комплета Манделброт, за који сам сигуран да су сви били упознати. А на левој страни је део СКЛ-а који то заправо и чини. Сада, сваки пут када негде ставим ово на екран, чујем ово „О мој боже, неко је направио Манделброт серију са СКЛ-ом, јеси озбиљан? То је сулудо! “Па, смисао свега тога је да илуструјем оно што сам управо изнео, а то је да, у ствари сада можете програмирати готово све у СКЛ-у; његов веома развијен, моћан, модеран програмски језик. Када је првобитно био језик упита, дизајниран је тако да само добије податке. Дакле, сада имамо врло сложене конструкције и имамо похрањене процедуре, имамо методологију програмирања која се примењује на језик, тако да је веома лако због лоше програмске праксе, недостатка искуства, кода за смањивање и лепљење, ниско плаћеног особља које покушава да бити високо плаћено особље, људи који се претварају да знају, али морају да науче на послу.

Читав низ ствари код којих се профилира код и оно што називамо отклањањем грешака, није толико проналажење грешака који спречавају програме да раде, већ грешке које само штете систему и слабо структуриран код. Када сада погледате овај екран и помислите да је то баш симпатично и мислите: „Вау, каква сјајна графика, волим то покренути.“ Али замислите да то ради на неком делу пословне логике. Изгледа прилично уредно, али говори математички графички приказану теорију хаоса, али када размишљате за шта би се потенцијално могло користити у некој пословној логици, слика врло брзо добијате слику. И да то заиста илуструјем - и жао ми је што су боје обрнуте, то би требало да буде црна позадина и зелена да буде зелени екран, али то још увек можете да прочитате.

Отишао сам и брзо погледао пример онога што би потенцијално могао да урадиш ако си заиста луд и немаш искуства и долазиш из другачије позадине програмирања и применим сличности Ц ++ на СКЛ, да стварно илуструјем свој став, пре Предајем нашем ученом госту из ИДЕРА-е. Ово је структурирани упит написан као Ц ++, али је кодиран у СКЛ-у. И заправо се извршава, али се извршава у периоду од три до пет минута. И повлачи наизглед једну линију података из више база података, више спојева.

Опет, цела поента је у томе што ако немате исправне алате, ако немате исправне платформе и окружења да бисте могли да ухватите ове ствари, и они уђу у производњу, и онда морате 100.000 људи ударати у систем сваки дан или сат или минут, врло брзо завршите са искуством у Чернобилу где се велико гвожђе почне топити и закопати у језгро планете, јер тај део кода никада не би требало да уђе у производњу. Извињавам се, ваши системи и ваши алати би требало да то покупе пре него што крене било где у близини - чак и кроз тестни процес, чак и кроз УАТ и интеграцију система, тај део кода треба да се покупи и истакне, а некога треба одвести и говорећи: „Гледај, то је заиста лепа шифра, али дозволимо вам да добијете ДБА који ће вам помоћи да правилно направите тај структурни упит, јер искрено, то је једноставно гадно.“ А УРЛ адресе тамо можете да погледате и да се то назива - најсложенији СКЛ упит који сте икада написали. Јер ми верујте, то се у ствари компилира, али покреће. А ако то исечете и залепите и само исмевате базу података, то је сасвим нешто за гледање; ако имате алате за гледање базе података, само покушајте да се растопите током периода од три до пет минута, да позовете оно што је једна линија.

Дакле, да сумирам, имајући то на уму, читава моја позадина кодирања научила ме је да људима можете дати пиштољ, а ако нису пажљиви, пуцаће себи у стопало; трик је у томе да им покажете где је безбедносни механизам. Са правим алатима и правим софтвером на дохват руке, након што извршите кодирање, можете да прегледате свој код, можете да пронађете проблеме профилирањем кода, можете да пронађете ефикасне ненамерне грешке које представљају проблеме са перформансама, као што сам већ рекао раније , некад, то бисте могли да урадите гледајући зелени екран. Не можеш више; постоје стотине хиљада линија кодова, постоје десетине хиљада апликација, постоје милиони база података у неким случајевима, па чак и супер људи то више не могу радити руком. Дословно вам је потребан прави софтвер и прави алати на дохват руке и потребан вам је тим који ће користити те алате како бисте могли да пронађете ове проблеме и да их решите врло брзо, пре него што дођете до тачке, док Др. Истакнуо је Робин Блоор, ствари постају катастрофалне, а ствари се разбуђују, или чешће, оне вас једноставно коштају много долара, пуно времена и труда и уништавају морал и ствари, кад не могу открити зашто ствари трају дуго времена да трчим.

А имајући то у виду, предаћу нашем госту и радујем се што ћу решити како су они решили ово питање. А нарочито демо који мислим да је требало да примим. Ериц, пребацујем се назад.

Ериц Каванагх: ОК, Берт, однеси то.

Берт Сцалзо: У реду Хвала. Берт Сцалзо овде из ИДЕРА-е, Им менаџер производа за наше алате за базе података. И разговараћу о отклањању грешака. Мислим да је једна од најважнијих ствари коју је Робин раније рекао - и њена истина је да је отклањање грешака напорно и не-тривијално, а када одете у базу података, отклањање грешака у њеном редоследу је још тежих и не-тривијалних - тако да био важан цитат.

ОК. Хтео сам да почнем са историјом програмирања, јер пуно пута видим људе који не отклањају грешке, не користе исправу грешке, само програмирају на било ком језику који користе, и много пута ми кажу: „Па, те су исправљачи грешке нове, а ми их још нисмо почели користити. "И тако, оно што ја радим је да им покажем ову табелу временске траке, неку врсту претповијести, старост, средњи вијек, врсту говорења гдје смо били услови програмских језика. И имали смо врло старе језике, почевши од 1951. године, са кодом монтаже, и Лиспом, ФАЦТ-ом и ЦОБОЛ-ом. Затим прелазимо у следећу групу, Паскали и Цс, а затим следећу групу, Ц ++ с, и гледамо где је та упитница - та је упитна тачно тачно око 1978. до можда 1980. Негде у том распону смо имали уређаји за уклањање грешака који су нам доступни далеко са том тврдњом.

Друга ствар која је смијешна у вези с овим графикономом је што је Дез управо написао коментар о Граце Хоппер, заправо сам познавао Граце, па је онако смијешна. А онда, друга ствар којој сам се смејао је то да је говорио о телетиповима и седео сам тамо, „Човече, то је био највећи скок у продуктивности, када смо прешли с карата на телетипе, то је био највећи скок икада.“ , и програмирао сам на свим језицима овде, укључујући СНОБОЛ, за који нико до сада није чуо, био је то ЦДЦ, Цонтрол Дата Цорпоратион, тако да претпостављам да сам постао мало престар за ову индустрију.

Дез Бланцхфиелд: Хтео сам да кажем, оставили сте нас страшно.

Берт Сцалзо: Да, кажем вам, осјећам се као дјед Симпсон. Дакле, гледам на исправљање погрешака и постоје различити начини извођења грешке. Могли бисте разговарати о ономе што сви ми сматрамо традиционалним уласком у програм за уклањање погрешака и преласком кода. Али такође, људи ће инструментирати свој код; ту држите изјаве у вашем коду и можда направите излазну датотеку, датотеку у траговима или нешто слично, па на тај начин инструментирате свој код. Рачунао бих да је то отклањање грешака, то је мало тежи начин, али то се рачуна. Али такође, добили смо чувену изјаву: гледате и људи заправо стављају изјаве и заправо сам видео алат где - и његов алат за базу података - где, ако не знате како да користите алат за уклањање грешака, притиснете дугме и он ће се залепити изјаве у вашем коду за вас, а затим када завршите, притиснете још једно дугме и он их уклони. Јер тако много људи отклања грешке.

А разлог за уклањање погрешака је двострук: пре свега, морамо пронаћи ствари које наш код чине неефикасним. Другим речима, обично то значи да постоји логичка грешка или смо пропустили пословни захтев, али оно што јесте јесте да ли код није ефикасан; не ради оно што смо очекивали. Други пут када идемо на исправљање грешака, то је ефикасност и то би могла бити логична грешка, али шта је то, да ли сам исправно поступио, једноставно се не враћа довољно брзо. Сада то мислим, јер су профили вероватно бољи за тај други сценарио и желели су да разговарају и о грешкама и о профилима. Поред тога, постоји овај концепт даљинске уклањања погрешака; ово је важно јер пуно пута ако седите на свом личном рачунару и користите алат за уклањање погрешака, који погоди базу података где се код заиста извршава у бази података, заправо радите оно што се назива даљинско отклањање грешака. Можда то не схватате, али ето шта се догађа. А онда је врло често у овим програмима за уклањање грешака да се пронађу прекидне тачке, посматрачке тачке, закораче и пређу и неке друге уобичајене ствари које ћу им показати на тренутак на снимку екрана.

Сада, профилирање: профилирање можете радити на неколико различитих начина. Неки ће рећи да се радно оптерећење хвата и репродукује тамо где све обухвата, а то се рачуна и као профилирање. Моје искуство је било боље ако је извршено узорковање. Нема разлога да ухватите сваку поједину изјаву, јер неке изјаве могу једноставно да се покрену тако брзо да вас није брига, оно што стварно покушавате да видите је добро, које су оне које се непрестано приказују јер се предуго приказују . Дакле, понекад профилирање може значити узорковање, а не покретање читаве ствари. И обично ћете добити неку врсту излаза који можете користити, а који би сада могао да буде визуелни унутар ИДЕ развојног окружења, где би вам могао дати сличан хистограм перформанси различитих линија кода, али би такође могао да остане било да производи датотеку у траговима.

Профилри су се први пут појавили 1979. Дакле, и они су дуго времена били ту. Изврсно за проналажење потрошње ресурса или проблема са перформансама, другим речима, ствар ефикасности. Генерално гледано, његов је одвојен и различит од исправљача, иако сам радио са програмима за уклањање погрешака који раде и једно и друго истовремено. И док су профили за два алата занимљивији, ако сматрам да нема довољно проблема за уклањање погрешака, онда дефинитивно нема довољно профила јер ће се, чини се, један од десет дебугера профилисати. А то је срамота, јер профилисање заиста може да направи огромну разлику. Сада, језици база података, као што смо раније говорили, добили сте СКЛ - и ми смо на неки начин присилно заокренули заокрет у квадратну рупу и натерали га да постане програмски језик - и Орацле.То је ПЛ / СКЛ - тај процесни језик СКЛ - и СКЛ Сервер, његов Трансацт-СКЛ, СКЛ-99, СКЛ / ПСМ - за, мислим, његов модул за похрану процедура. Постгрес му даје друго име, ДБ2 још једно име, Информик, али поента је у томе што су сви присилили конструкције типа 3ГЛ; другим ријечима, ФОР петље, у декларацији варијабле и све остале ствари које су стране у СКЛ-у сада су дио СКЛ-а на тим језицима. И тако, морате бити у стању да отклоните грешку ПЛ / СКЛ или Трансацт-СКЛ баш као што би то радио програм Висуал Басиц.

Сада, објекти базе података, ово је важно јер ће људи рећи: „Па, које ствари морам да отклоним у апликацији базе података?“ А одговор је: па, шта год можете да похраните у базу података као код - ако радим Т- СКЛ или ПЛ / СКЛ - и похрањујем објекте у базу података, вероватно је сачувану процедуру или меморисану функцију. Али ту се такође покреће: окидач је попут похрањене процедуре, али активира се на неки догађај. Сада ће неки људи у своје окидаче ставити једну линију кода и позвати похрањену процедуру тако да задрже сав свој похрањени код и процедуре, али исти је концепт: ипак би окидач могао бити оно што покреће цијелу ствар. И тада као Орацле имају нешто што се зове пакет, што је налик библиотеци ако хоћете. Ставите 50 или 100 похрањених процедура у једно групирање, које се назива пакет, тако да изгледа као библиотека. Дакле, ево исправљача грешке на стари начин; ово је уствари алат који ће вам заправо ући и залепити све ове изјаве о грешкама у коду. Дакле, свугде где видите блок за уклањање погрешака, не уклањајте, покретање аутоматског исправљача грешке и траг, све их је заглавио неки алат. А линије изван тога, што је мањина кода, добро, то је метода ручног уклањања погрешака.

А разлог зашто ово изнесем је у томе што, ако покушавате то учинити ручно, заправо ћете укуцати више кода за уклањање погрешака који ћете ставити у све ове изјаве него што је то код. Иако ово може да функционише, и иако је боље од ничега, ово је веома тежак начин за уклањање погрешака, посебно јер, шта ако је потребно 10 сати да се ова ствар покрене, и где има проблема, у реду је три? Да радим интерактивну сесију за отклањање погрешака, знао бих у линији три - пет минута - хеј, постоји проблем овде, могу престати. Али с тим сам морао сачекати да се покрене, све до завршетка, а онда морам погледати датотеку о траговима која вероватно садржи све ове изјаве, и покушати пронаћи иглу у сену сена. Опет, ово је боље него ништа, али то не би био најбољи начин рада. Ето, то би изгледала та датотека која је настала са претходног слајда; Другим речима, покренуо сам програм и његов списак је добио гомилу изјава у овој датотеци с траговима, а ја могу или не морам да прођем кроз ово и пронађем оно што требам да пронађем. Дакле, опет нисам сигуран да би то требало да радите.

Сада, интерактивни програм за отклањање грешака - и ако сте користили нешто попут Висуал Студио за писање програма или Ецлипсе, имали сте исправљаче грешке и користили их са својим другим језицима - једноставно нисте размишљали да их овде користите са својом базом података. А ту су и алати, попут нашег ДБ Артисан-а и нашег Рапид-а СКЛ-а, овде је Рапид СКЛ, који има исправљање погрешака, а на левој страни можете видети похрањену процедуру која се зове „провери дупликата“. У основи, тек треба да погледам и видим да ли у табели имам више редова са истим насловом филма. Дакле, база података је за филмове. И могли сте да видите на десној страни, у горњој трећини, у средини сам добио свој изворни код, добио сам оно што се назива варијаблама мог сата и трагом стокова позива, а затим сам на дну добио неке излазне податке. И оно што је овде важно јесте, ако погледате преко те прве црвене стрелице, ако пређете мишем преко променљиве, заправо могу видети која је вредност у тој променљивој у том тренутку, док Им прелазим код. И то је заиста корисно, а онда могу да прелазим једну линију у исто време преко кода, не морам да кажем извршење, могао бих да кажем корак по линији, да погледам шта се догодило, да пређем на другу линију, да видим шта се догодило и Радим то у бази података. Иако седим на Рапид СКЛ-у на рачунару и моја је база података у облаку, и даље могу радити ту даљинску исправљање погрешака и видети је и контролирати одавде, и радити исправљање погрешака као што бих то урадио са било којим другим језиком.

Сада, следећа стрелица тамо - можете видети мало попут стрелице која показује десно, ка излазу ДБМС-а, тамо је тренутно мој показивач - дакле другим речима, закорачио сам Иве и тамо сам тренутно. Дакле, ако кажем „корак поново“, прећи ћу на следећи ред. Сада одмах испод тога видећете црвену тачку. Па, то је тачка прекида, која каже: „Хеј, не желим да пређем преко ових редова.“ Ако само желим да пређем преко свега и стигнем до те црвене тачке, могу да притиснем дугме за покретање и пребацим се одавде до краја, или до прекида, ако су постављене неке прекидне тачке, а онда ће се зауставити и пустити ме да поново одрадим корак. А разлог зашто је све ово важно и моћно је, јер кад се ја бавим тиме, оно што се дешава у средини, па чак и на дну - али што је најважније у средини - промениће се и ја видим вредности својих променљивих, могу видите мој траг стог позива, тако да су све те информације тамо приказане као да прелазим код, тако да ја заправо могу да видим и осећам и схватим шта се дешава и како код заправо ради у време извршења . И обично могу наћи проблем, ако постоји, или ако сам довољно добар да га решим.

ОК, сада ћу разговарати о профилеру, а у овом случају ово је профил који видим кроз програм за уклањање грешака. Сећате се да сам рекао понекад да су одвојене, а понекад могу бити заједно? У овом случају, и опет, ја сам у Рапид СКЛ-у, а на левој страни, поред бројева линија, могу видјети маржу. А оно што је, то је број секунди или микросекунди потребних за извршавање сваке линије кода, и то јасно видим, сво своје време проводим у овој петљи ФОР, где ја бирам све из табеле. И тако, оно што се догађа унутар те петље за ФОР вероватно је нешто што морам да погледам, и ако успем да га побољшам, исплатиће дивиденде. Нећу добити никаква побољшања радећи на оним линијама које имају 0.90 или 0.86; тамо нема пуно времена. Сада, у овом случају и опет, ја сам у Рапид СКЛ-у, видећете како могу да се профилирам мешано са дебугирањем. Оно што је лепо је што Рапид СКЛ такође омогућава да то урадите на други начин. Брзи СКЛ омогућава вам да кажете: „Знате шта? Не желим да будем у програму за уклањање грешака, само желим да покренем ово и онда желим да графички или визуелно погледам исте врсте информација. "

И можете видети да више нисам у програму за отклањање грешака и он покреће програм, а након извршења, даје ми графиконе да ми испричају ствари, тако да видим да сам добио једну изјаву која изгледа као да заузима већину пита графикона, а ако погледам, видим на овој решетки према дну, ред 23, поново је петља ФОР: хен узима највише времена, он је уствари тај тамноцрвени жвакаћи све карте са питу. Дакле, ово је још један начин профилирања. Случајно називамо тог „Аналитичара кода“ у нашем алату. Али у основи је само профил који се одваја од исправљача грешака. Неки воле да то раде на први начин, неки воле да то раде на други начин.

Зашто радимо исправљање погрешака и профилисање? То није зато што желимо написати највећи код на свету и добити повећану плату - то би могао бити наш разлог, али то није баш разлог зашто то радите - обећали сте послу да ћете нешто урадити коректно, да ће ваш програм бити ефикасан. За то ћете користити исправљач грешака. Поред тога, пословни крајњи корисници; нису баш стрпљиви: желе резултате чак и пре него што притисну тастер. Требало је да читају њихове мисли и да све ураде одмах. Другим речима, то мора да буде ефикасно. И тако, за то бисмо користили профил. Сада, без ових алата, стварно верујем да сте тај момак у пословном оделу са луком и стрелицом, а пуцате у мету и вежетете очима. Јер како ћете пронаћи како се програм извршава тако што ћете погледати статички код и како ћете схватити која је линија тамо где би заиста провели највише времена у извршењу, опет само гледањем статичког кода? Преглед кода неке од ових ствари може или не мора показати, али нема гаранције да ће их прегледати све. Помоћу програма за уклањање погрешака и профила требало би да пронађете све те грешке.

ОК, управо ћу направити прави брзи демо овде. Није ми намера да гурам производ, само желим да вам покажем како изгледа исправљање грешака, јер много људи људи ће рећи: „Никада раније нисам видео ниједно од ових.“ И изгледа прилично на слајдовима за екран, али шта да ли изгледа кад је у покрету? Дакле, ево на мом екрану тржим наш ДБ Артисан производ; тамо имамо и исправљање погрешака. ДБ Артисан је намењен више за ДБА, Рапид СКЛ је више за програмере, али видео сам програмере који користе ДБ Артисан и видео сам ДБА који користе Рапид. Дакле, немојте се заокупити производом. И ево, имам избор да направим исправку, али пре него што покренем програм за исправљање грешака, издвојит ћу овај код да бисте видели како изгледа код пре него што га покренем. Дакле, ево потпуно истог кода који је био на снимку екрана, ово је моја провера дупликата. И желим да откријем ово, па притиснем грешку. И сада треба тренутак и кажете: „Па, зашто вам треба тренутак?“ Сјетите се даљинског уклањања погрешака: уклањање погрешака се заправо дешава на мом серверу базе података, а не на рачунару. Дакле, требало је да пређем и направим сесију тамо, направим ствар на даљинском отклањању грешке, прикачим моју сесију на ту сесију даљинског отклањања грешке и поставим канал за комуникацију.

Дакле, ево моје стрелице, тамо горе на врху, у првом реду, ту сам код у шифри. А ако притиснем тамо трећу икону, што је корак у, видећете да се стрелица управо померила, а ако наставим да је притиснем, видећете да се наставља кретати. Ако бих хтео да се спустим до ове петље ФОР, јер знам да је ту проблем, могу поставити тачку прекида. Мислио сам да сам то поставио. О, пуцај, имао сам један од мојих типки за снимање екрана пресликан на исти тастер као и за исправљање погрешака, а то узрокује конфузију. ОК, тако да сам тамо ручно поставио тачку прекида, тако да сада уместо да радим корак, корак, корак, корак док не стигнем тамо, заправо могу само да кажем: „Само напред и покрени ову ствар“, и то ће престати. Примјетите да ме је пребацио доље на мјесто гдје је прекидна точка, тако да сам сада у стању покретања ове петље, могу видјети на шта су све моје варијабле постављене, што није изненађење, јер сам их све иницијализирао у нула. А сада могу закорачити у ову петљу и почети гледати шта се догађа унутар ове петље.

Дакле, сада ће се одбројати број мојих станарина и ја могу прелазити мишем преко тог момка и погледати, два, два су већа од једног, тако да ће вероватно урадити следећи део овог кода. Другим речима, нешто је пронашло. Само идем и пустим то да трчи. Не желим да пролазим кроз све овде; оно што желим да вам покажем је да када се направи програм за отклањање грешака, он се завршава као у нормалном програму. Поставио сам тачку прекида, па кад сам рекао трчање једноставно се вратио на следећу тачку прекида. Ако га пустим да ради до краја, узрокујем оно што желим да видите је да исправљач погрешака не мења понашање програма: када се изврши, требао бих добити потпуно исте резултате да сам га покренуо не унутар исправљача грешке.

И с тим ћу суспендовати демо и вратити се јер желимо да осигурамо времена за питања и одговоре. И тако, отворићу га за питања и одговоре.

Ериц Каванагх: У реду, Робин, можда питање од тебе и онда пар из Деза?

Робин Блоор: Да, наравно, то ми је фасцинантно, наравно. Радио сам са оваквим стварима, али никада нисам радио са нечим таквим у бази података. Можете ли ми дати неку идеју за шта људи користе профил? Пошто је то слично, да ли они гледају - јер претпостављам да јесу - да гледају проблеме перформанси, да ли ће вам то помоћи да разликујете када бази података треба времена и када коду треба времена?

Берт Сцалзо: Знате, то је фантастично питање. Рецимо да радим у Висуал Басиц-у, а ја ћу унутар свог Висуал Басиц назвати Трансацт-СКЛ или ПЛ / СКЛ. Дозволите ми да урадим ПЛ / СКЛ, јер се Орацле не игра увек добро са Мицрософтовим алатима. Можда сам профилирао свој Висуал Басиц код, а тамошњи профил би могао да каже: „Хеј, назвао сам ову сачувану процедуру и трајало је предуго.“ Али тада могу да уђем у похрањену процедуру и могу да направим профил базе података на сачуваном Поступак и реците: „У реду, од 100 изјава које су овде, ево пет који су узроковали проблем.“ И тако, можда ћете морати да урадите тим за тагове где морате да користите више профила.

Идеја је да ако вам се икада каже да је проблем са перформансама у вашој бази података, профил базе података може вам помоћи да пронађете игле у пласту сена на којој су изјаве заправо оне где имате проблем. Кажем вам још једну ствар која се појавила са профилирањем: ако имате комад кода који се зове милион пута, али то траје само микросекунду сваки од милион пута, али зове се милион пута, шта би профилер показао , та ствар је трајала током многих јединица. И док је код можда високо ефикасан, можда ћете изгледати и рећи: „Оох, упућивали смо овај позив на овај део кода пречесто. Можда бисмо га требали звати само толико често, а не сваки пут када обрађујемо плочу “или нешто слично. И тако заправо можете пронаћи где постоји ефикасан код који се пречесто зове, а то је заправо проблем перформанси.

Робин Блоор: Да, то је дивно. Никад то нисам урадио. Видите, наравно, када сам имао проблема са базом података, било је као да бих се на овај или онај начин бавио базом података или се бавио кодом; Никада се не бих могао истовремено суочити са обојицом. Али тамо, опет, нисам - никад нисам био укључен у прављење апликација у којима смо чували процедуре, па претпостављам да никада нисам наишао на проблеме који су ме дивили, идеја да сте поделили код између база података и програм. Али тако, учините све - Претпостављам да ће одговори бити да, али ово је део активности развојног тима, када на један или други начин покушавате да поправите нешто што је покварено или можда покушавате да спојите нову апликацију. Али да ли се све то прилагођава свим осталим компонентама које бих очекивао у окружењу? Да ли могу да очекујем да бих могао да снимим ово заједно са свим својим тест пакетима и свим тим осталим стварима које бих радио и са својим стварима у вези са управљањем пројектима, да ли је тако све ово заједно?

Берт Сцалзо: Да, то може постати део било ког структуираног процеса у који ћете предузети своје програмирање или развојне напоре. И смешно је, што сам прошле недеље имао клијента који је правио веб апликацију, а њихова база података је, историјски, била мала, па чињеница да нису били баш добри програмери никада им није нашкодила. Па, њихова база података је расла током година, и сада јој је потребно 20 секунди на веб страници, између, када кажете: „Пријавите се и дајте ми неке податке да видим“ и када се екран заиста појави, и сада је његов проблем са перформансама И знали су да проблем није у било којој њиховој Јави или неком другом месту. Али имали су хиљаде сачуваних процедура и зато су морали да започну профилисање ускладиштених процедура да би открили зашто је овој веб страници потребно 20 секунди да би се појавило? И заправо смо установили да се у једној од њихових одабраних изјава придружили картезијански људи, а то нисмо знали.

Робин Блоор: Вов

Берт Сцалзо: Али неко ми је један пут рекао: „Па како су могли да се придруже картезијанском језику, а не знају?“ И ово звучи заиста ужасно; понекад програмер који није баш угодан за СКЛ направи нешто попут придруживања картезијанцу, али тада ће ми вратити само први запис, тако да знам да имам нешто, а треба ми само први. И тако, они не схватају да су управо вратили милијарду записа или прегледају милијарду записа, јер су добили оно што их је занимало.

Робин Блоор: Вау, знам, тако се зове - па, то је Дез, о људима који нису баш тако вешти колико би можда требали да знате, знате. Ако сте програмер, требали бисте знати какве су импликације издавања било које наредбе. Мислим, заиста, то не може бити оправдање за тај ниво глупости. Такође претпостављам да сте, на овај или онај начин, само језички агностик у вези с тим, јер се све ово фокусира на страни базе података. Да ли сам у праву? Да ли је то исто, шта год да користите на страни кодирања?

Берт Сцалзо: Апсолутно то можете учинити у Фортрану или Ц или Ц ++. У ствари, на неким Уникима чак можете то учинити и за њихове скриптне језике; они заправо пружају исте алате. А онда желим да се вратим на тренутак за оно што сте рекли без изговора. Даћу програмерима једну паузу, јер не волим бацати програмере испод аутобуса. Али проблем је заиста академско окружење, јер када идете да научите како да будете програмер, научили сте да размишљате истовремено. Ниси научен сет размишљања, а то је оно што структурирани језик упита или СКЛ ради са скуповима; зато имамо унију, пресек и минус оператора. А понекад је врло тешко да особа која никада није размишљала у вези са сетовима, да се одрекне, пребаци се на обраду снимака и ради са сетовима.

Робин Блоор: Да, с тобом сам. Мислим, схваћам сада, то је питање образовања; Мислим да је то потпуно питање образовања, мислим да је природно да програмери размишљају процедурално. А СКЛ није процедурални, већ његов декларативни. Ви заправо само кажете: "Ово је оно што желим и није ме брига како то радите", знате? Док с програмским језицима често завирујете рукаве и падате у детаље чак и управљања бројевима, док радите петљу. Слаба рука за:

Берт Сцалзо: Не. ОК, настави.

Да, хтео сам да кажем да сте навели још један пример да ће профилер добро ухватити, као што се и даље догађа с овом евиденцијом у исто време. Понекад програмер који је добар у логици снимања, не може смислити како да ради СКЛ програм. Па, рецимо да прави две петље ФОР и у основи чини спајање, али то ради на страни клијента. Дакле, он ради исти ефекат као придруживање, али он то ради сам, а профил би то ухватио, јер бисте вероватно потрошили више времена радећи спајање ручно, него што бисте серверу базе података омогућили да то уради уместо вас.

Робин Блоор: Да, то би била катастрофа. Мислим, само би се бацио наоколо. Третирање увек лоше.

У сваком случају, прелазим на Дез; Сигуран сам да има неколико занимљивих питања.

Дез Бланцхфиелд: Хвала вам, да, знам. Придружићу вам се не бацајући програмере испод аутобуса. Мислим, провео сам превише година у животу и сам био кодер, на сваком нивоу, знате, да ли је, као што сте рекли, седео у командној линији Уник машине, а у неким случајевима сам чак био укључен у неколико различитих портова Уника од једне хардверске платформе до друге. И можете замислити изазове које смо тамо имали. Али стварност је то да је картица за излазак из затвора за сваки кодер и скриптер на свету. Ракетна наука, буквално, писати заиста уско, сваки пут, ракетна наука. И познате приче људи попут Денниса Ритцхиеја и Бриана Кернахана који самостално раде на неком делу кода, а затим се надолазе на преглед кода путем кафе и открију да су написали потпуно исти део кода, у потпуно истом програму, у тачно истом на исти начин. И они су то урадили у Ц. Али, тај пуристички ниво програмирања постоји веома ретко.

Чињеница је да на дневној бази има само 24 сата дневно, седам дана у недељи, а ми морамо само да завршимо ствари. И тако, када су у питању не само традиционални програмери, ДБА-и, и кодери, и сцриптери, и сисадмин, мрежни администратори, и безбедносно особље, и све до ових дана са подацима о грађанима; Чујемо, сви покушавају да раде свој посао. И зато мислим да је сјајно од свега што сам волео ваш демо и волео сам оно што сте нам оставили тамо, пре само тренутак, разговарајући са Робином о чињеници да ово има одређено - можда не толико ниша - али широки простор који се односи на поправљање кода и СКЛ-а и база података. Али био сам заиста узбуђен кад сам чуо да кажете како бисте могли да га покуцате скриптом шкољке и пронађете неке проблеме, јер знате, у данашњем дану и старости увек су радили до најнижих трошкова на свему.

Разлог зашто негде можете купити мајицу од 6 долара је тај што је неко изградио систем довољно јефтин да уствари производи и отпрема и логистички испоручује, продаје и продаје на мало и узима путем интернета плаћања да бисте добили ту мајицу од 6 долара. А то се не догађа ако некима буде плаћено 400.000 долара да пишу код на савршен начин; његов цео развој. Дакле, та поанта, претпостављам да је једно од питања које вас заиста волим да нам дате само мало више увида, шта је ширина и досег типа људи које тренутно видите који користе ове врсте алата за профилисање кода и прегледавање за проблеме са перформансама? У почетку, историјски, одакле долазе? Јесу ли то биле велике инжењерске куће? И онда, ако кренете напријед, да ли је то тачно, мислим ли да мислим да све више и више компанија имплементира овај алат или ове алате како би покушали да помогну кодерима, за које знају да само раде ствари како би завршили посао. и склонити је кроз врата? А понекад нам треба карта за излазак из затвора? Да ли сам у праву мислећи да смо историјски имали више инжењерског фокуса и развоја? То је сада добивало мање, како је Робин рекао, академског приступа, а сада његов самоук, или сечи и залијепи код, или једноставно гради ствари? И да ли се то подудара са врстом људи који сада узимају производ?

Берт Сцалзо: Да тачно. И дајем вам сасвим конкретан пример, ми само желимо да довршимо посао, јер пословни људи не желе савршенство. Његова је врста компјутеризоване шах: шаховска игра не тражи савршен одговор; тражи одговор који је довољно добар у разумном року, тако да то и програмирамо. Али оно што сада налазим је да већина људи уместо да каже да желе профиларе као део тестирања јединице - тако бих то урадила, јер не доживљавам као губљење времена - шта се дешава сада је то што се ради касније, понекад, током интеграционог тестирања или тестирања отпорности на стрес, ако су имали среће. Али већину времена је његов део ескалације, где су неке ствари почеле производити, неко време трајао, можда чак и трајао годинама, а сада то не ради добро, а сада то добро профилише. И чини се да је то сада чешћи сценарио.

Дез Бланцхфиелд: Да, и мислим да је израз "технички дуг" вероватно више него познат; Знам Робина и сигурно јесам. Мислим да је за мене концепт техничког дуга ових дана, посебно у окретним приступима развоју и изградњи система, сасвим стварна ствар, и ми то заправо и водимо рачуна у пројектима. Знам, мислим, добили смо сопствене пројекте попут Медиа Ленс-а и других, где се свакодневно дешава кодирање и разне ствари широм Блоор Групе. И кад год смо нешто радили, ми некако посматрамо, гледам то и увек посматрамо са становишта онога што ће ме коштати да ово исправим сада, насупрот томе да ли могу то да схватим у канту и извадите га напоље и гледајте да ли ће се ове ствари покварити. И наследити овај технички дуг за који знам да ћу морати да се вратим касније и поправим.

И мислим, урадио сам то у последњих седам дана: Написао сам пар алата и скрипти, написао сам пар делова језика Питхон, и распоредио сам га у задњи део Монгоа, осигуравајући да је његов леп, чист и сигуран, али једноставно добија упит који ми је потребан, знајући да ми треба та функција да радим, да додјем до веће слагалице; ту је моја права бол. Тако да имате технички дуг и мислим да ово сада није само повремена ствар, мислим да је то део ДНК који се развија. Људи само - не безобразно - само прихватају да је технички дуг уобичајен начин издавања и једноставно га морају покренути. Тамо имате технички дуг. И мислим да је сјајна ствар у ономе што сте нам показали на демонстрацији то што можете буквално профилисати и гледати колико времена нешто треба да ради. И то ми је вероватно једна од омиљених ствари. Мислим, у ствари сам правио алате за профилирање - користили смо алате у Сед и Леку и Орцу да бисмо покренули наш код и видели где су петље, пре него што су доступни овакви алати - и када направите код да бисте прегледали свој код , постајете веома добри у томе што не морате да прегледавате свој код. Али то сада није случај. Имајући то у виду, постоји ли одређени тржишни сегмент који то заузима више него било који други? Видети као маса -

Берт Сцалзо: О да, имам ... направићу аналогију за вас и показаћу вам да то раде не-програмери стално. Јер ако икад предајем класу за грешке и профилирање или сеансу, питам људе: „ОК, колико људи овде улази у Мицрософт Ворд и намерно никада не користи проверу правописа?“ И нико не диже руку, јер за писање докумената, сви знамо да можемо направити енглеске грешке, и зато сви користе алатку за провјеру правописа. И рекао сам: "Па, како то да када пишете у свој ИДЕ попут Висуал Басиц, не користите исправу? То је иста ствар, то је као провера правописа. "

Дез Бланцхфиелд: Да, у ствари, то је сјајна аналогија. Нисам стварно размишљао, морам да признам да заправо радим нешто слично са неколико алата које користим. У ствари, један ОДФ, мој омиљени код Ецлипсе-а, је само сечење и лепљење кода тамо и тражење ствари које су одмах истакнуте и схватање да сам написао погрешку у неком класном позиву. Али, али што је сада занимљиво са оваквим алатом можете то учинити у реалном времену, за разлику од тога да се вратите и погледате касније, што је некако лепо кад бисте га ухватили унапред. Али да, то је сјајна аналогија само стављања у програм за обраду текста, што ће изазвати занимљив позив на буђење, само схватите да сте направили грешке у грешци или чак граматичку грешку, зар не?

Берт Сцалзо: Баш тако.

Дез Бланцхфиелд: Дакле, да ли видите више потешкоћа од, ваљда, мислим, последњег питања од мене, пре него што пређем на наша питања и питања, можда, за наше полазнике. Ако бисте желели да дате неку врсту препоруке око приступа томе - претпостављам да је то реторичко - да ли је то случај да рано уђете и то примените како се развијате, пре него што се развијате? Или је случај да углавном градите, крећете се, нешто састављате, а затим уђете и касније то профилирате? Сумњам да је случај раног уласка и пазите да вам се шифре чисте унапред. Или је случај да би они требали размотрити овај део свог посла након размештања?

Берт Сцалзо: У идеалном случају, они би то урадили унапред, али пошто су сви у свету гужве, где треба да заврше ствари, склони су да то не ураде док не наиђу на проблем перформанси који не могу да реше додавањем више ЦПУ-а и меморије. на виртуелну машину.

Дез Бланцхфиелд: Да. Па, уствари сте споменули нешто занимљиво, ако могу брзо? Прије сте поменули да се то може покренути било где и да може да разговара са базом података са задње стране. Дакле, ово је у складу с бимодалним концептом о којем сада причамо, о облаку у просторији / ван простора, и по изгледу ствари, на крају дана, ако може разговарати са задњим крајем и видети код, то баш и не брине, зар не?

Берт Сцалзо: Тачно, да, можете то покренути у облаку.

Дез Бланцхфиелд: Одлично, јер мислим да управо тамо креће наш нови храбри свет. Дакле, Ериц. Вратићу се сада и видети да имамо овде неколико питања и желим да наши полазници и даље остану с нама, иако смо прошли сат.

Ериц Каванагх: Да, постоји неколико људи напољу, само брзо напишем коментар: Берт, мислим да је метафора, аналогија коју дајеш коришћењу провере правописа искрено сјајна. То је достојно блога или два, сасвим искрено, јер је то добар начин да уобличите оно што радите и колико је то драгоцено, и како би заиста требало бити најбоља пракса да се користи дебугер на редовно, зар не? Кладим се да добијете неке главе главом када га избаците напоље, зар не?

Берт Сцалзо: Апсолутно, јер оно што им кажем је: „Зашто извршим правописну проверу својих докумената? Не желим да се срамим глупим правописним грешкама. "Па, не желе да их срамотају глупе грешке кодирања!

Ериц Каванагх: Јел тако. Да заиста. Па, људи, овде смо горили за сат и пет минута, велико хвала свима вама на вашем времену и пажњи. Ми архивирамо све те веб четове, слободно се вратите било када и погледајте их. Најбоље место за проналазак ових веза је вероватно тецхопедиа.цом, па добро додајте ово на ову листу овде.

И с тим су се опростили, народе. Још једном, одличан посао, Берт, захваљујући нашим пријатељима из ИДЕРА-е. Па разговарајмо са вама следећи пут, а добро разговарамо следеће недеље. Брини се! Ћао.