Подготовка к собеседованию на Frontend Developer
Менторы
Специалисты своей области, которые смогут помочь вам
Middle .Net Developer
Senior Product Manager
Middle Python Developer
Ведущий программист
Backend Software Engineer (PHP)
Senior .NET/C# developer
Middle DevOps Engineer | Tbilisi, Georgia
Middle C# .NET
Senior PHP-разработчик
Middle python developer
Каналы
Полезные Telegram каналы и чаты
Транскрипция видео:
давай я получается поставил запись и так друзья всем привет все это не стандартный выпуск у нас собеседование с мавлида вы муратом привет мурат расскажи немного о себе да во всем привет меня зовут марат мне 26 лет я работаю frontend разработчикам в одной из компаний север групп вот на позиции middle разработчик ну и собственно сегодня проводим такой показатель на собеседовании добраться нет знаний и возможно что-то рассказать чем-то поделиться отлично давай начнем может немножко расскажешь про свой опыт вообще сколько
00:00:00 - 00:01:20
работаешь с какими-то технологиями работал вот он начинал yasya кому это было приблизительно 3 год назад то есть это интернет магазин парфюмерии занимались в основном тем что рефакторинг старый legacy код приводили его в чувство так скажем вот делали кит новые фичи технологии там использовались все то есть там был зоопарк это админка была на первом gullari какие-то компоненты навью что-то на реакции в основном абилки вот ну вот мы старались все-таки на нативном до скрипте писать там какие-то сервисы
00:00:43 - 00:02:07
переносить все на него оптимизировать и так далее вот далее я после года работы шел на можешь сказать на фриланс накид частные проекты занимался там админ коми прочим в основном стэк это был react реакторе dax вот и на таком жестокий а потом пришел в новую компанию в которой собственно до сих пор работаю на реакторе dax typescript то есть вот такой славный так ну и понятное дело что вся экосистема который окружает у доктора голову работу чуть более трех лет конкретно с реактором именно есть мы берем
00:01:25 - 00:02:46
коммерческий опыт который внутри компании то месяцев восемь наверно если мы беремся проект который делал вон там побольше будет куда полтора вот понял отлично так эти ссылку скинул а в этом в чате собственно на этот наказ inbox давайте зайдешь сразу и приступим же начнем с теоретических вопросов перейдем к таким практическим задачам небольшим их потом собственно этот уже начнется life корень такой небольшой вот примерно в таком формате собеседование пройдет так что давай начнем то вообще первую очередь
00:02:06 - 00:03:19
программа поговорим про event луп ты можешь описать да проверь в этом сундуке гитара да давай сначала просто говорим что такое event log про синхронность как что работает и оттуда дальше пойдем ну скажем так в браузере есть у нас движок v8 который позволяет собственно работать в скрипту интер интерпретировать его и прочее и у нас java script принципе он асинхронный однопоточный последователей у нас есть возможность делать какие-то там запросу да благодаря этому в парке так далее и про event log что тут можно сказать то
00:02:42 - 00:04:10
есть у браузера есть своя api например когда мы вызываем tomcat тайм-аут этом интервалы и прочее и браузер так скажем распределяет эти вызовы по очередям то есть есть макро тоски есть micro тоски в которые которых у нас выполняется какой-то код например java script а если он встречает какие-то там микро тоски он может в одну их очередь распределить если он встречает компромисс и так далее синхронный вызову в другую очередь то есть по большому счету это ну сама за себя говорит то есть цикл событий там в скрипте то есть
00:03:30 - 00:04:47
система распределения вызова функции так скажем понял да в целом хороший ответ все подробно а вот ты упомянул как раз таки микро тоски и макро тоски он может как раз таки рассказать вообще то есть например что такое майка мокрота skidata есть и чем они и 1 не то что такое как можно создать мокрота scudo мокрота цикла и микро то куда то есть какие например с помощью вызова чего можно создать одну и другую вот и какая у них там принципиальная разница есть ну то есть чем они отличаются вообще смотри я сейчас вот у меня всегда была
00:04:09 - 00:05:22
проблема что я путал что у нас находится в микро тоска что в макро возможно потому что сами за себя не так уж ярко говорят ну допустим нас с разделением браузерного api в виде таймаутов интервалов они попадают по моему они попадают в микро тоски давай просто сейчас скажу что понятнее было пробиться рясу перебил микро тоски то есть micro это более меньше считается типа micro макро то есть макро это больше как бы за истину обычно вот либо совершить как полезу может быть а так продолжаю вот в цлк основном разница нужно там в
00:04:45 - 00:05:47
терминологии здесь а nokia здесь только остается сравнить что есть больше в 100 меньше для дано допустим допустим у нас какие-то тайм-аут и интервалы попадают в микро тоски асинхронные какие-то выполнять допустим у нас пишется функция с осинка синкавы и и он не помещается в макро тарский вот и ему надо как-то этим жонглировать то есть есть определенный порядок есть так скажем приоритетность выполнения тех или иных задач потому что несмотря на то что они выполняются синхронно то поскольку джо скрип последовательный язык так или
00:05:16 - 00:06:27
иначе то есть конечную станцию они ну они выполняются последовательно и я забыл вопрос в чем еще раз различия ну да да да в чем собственно различие то есть ты в целом правильно сказал уже образом пять лет насти наверное да окей тогда давай вот приоритетности но здесь за чтобы до в дальнейшем как вы как искать используя терминологию то есть наоборот просто микро тоски это более приоритетным окраски менее приоритетные давай туда вот поговорим то есть сэр тайм-аут вот и например у нас есть давай сейчас
00:05:52 - 00:07:03
сразу здесь кусок вот например у нас есть такой код да то есть что здесь вообще в ком приоритете будет выполняться можешь просто пройтись по нему рассказать черт выполнится и почему да сейчас отдашь ли так у нас есть с этим с нулем у нас есть кроме срезов и у нас есть console.log по большому счету наверное должен быть сразу сразу console.log но нас тут есть прям срезов нонсана он не внутри себя выполняет концу но куча сделать метод за ну тогда я скорее всего сначала 11 строка 1 затем учат бы так у нас в приоритете
00:06:27 - 00:08:02
тайм-аут или затем 9 и затем скорее всего вот 6 9 3 ну да в целом правильно окей а вот примерно знаешь вообще как эти очереди работают то есть именно принцип по которым они работают то есть макро тоски и микро тоски то есть например сейчас я покажу о чем я говорю то есть например мора два куска таки взять сейчас давай туда сюда чуть ниже отойдем в два куска кода есть один вот такой и другое у нас есть вот такой у нас есть вот такой и короче давай просто поговорим как раз они будут ли как то есть за исключением того что одна там
00:07:18 - 00:08:38
например из-за своей приоритетности будет как-то раньше выполняться будет ли какое-то принципиальное детину принципиальна разница между вот этим вот кодом и и между вот этим сейчас одна минута переварю у нас есть функция ран которые принимают в аргументы набат внутри называется тайм аут тайм аут кстати 100 мом не передаешь ничего ну да да да можно 0 передать на 1 должна последнего как можно быстрее выполнится в которые собственно называется концовок нам бы и выполняется а выполняется оно же получается внутри себя ран на плюс 1
00:08:08 - 00:09:17
и 2 код в константу b мы присваиваем вызов про разрезов и далее уже function дрон [музыка] так в пром срезов получается в зен мы называем console.log ранам слушаю очень очень непонятная идеи на самом деле но сам по себе давай расскажи код бесполезно это то есть он просто рекурсивно будет как бы вызывать там числа то есть лакировать то там 1 2 3 4 5 вот начиная с но я точнее с одно начал считать одного просто например давай тогда такой вопрос то есть эти оба кода например когда мы запустим у нас будет
00:08:42 - 00:10:08
наша страница открывается там есть например 20 лари всего на то что происходит на 17 строке скорее всего будет так скажем блокировать выполнен у дальнейший путь отрисовку а то что у нас происходит во втором куски кода то есть там идет the promise резал цзин она наверное будет уже после основной отрисовки вызываться возможно так а может раскрыть просто ты горишь после основа отрисовки что ты именно имеешь ввиду то есть ну может мы ее вызвали там я не знаю потом данной странице зашли то есть в москве и я имею ввиду поток
00:09:25 - 00:10:44
выполнения кода именно то есть получается у нас идет выполнение кого-то кода выполнение это не знают рисовки прочего и хотя наверное ты мал помнит и возможно не прав потому что ты мог как раз таки даже с минимальным значением здесь мы передаем все там открыто значением даже 0 это не говорит нам о том что он выполнится сразу же там при миллисекундах которые там перед ну вот скорее всего это минимум который передается и после чего он будет выполняться этот код внутри а вот с кроме сами вот часто сейчас так не
00:10:05 - 00:11:16
подскажу как он будет вести себя вот на странице в общем нет ли здесь затрудняюсь ответить поэтому лучше час прошел что здесь имел ввиду потому что кот такой неординарный но в том как задачу до задача в самые простые что код сам по себе он как искать не ходят там продакшен до который ты в реале пишешь на самом деле что я хотел узнать от тебя то есть это принципиально разница как в очереди макро тоскану могу короче макро task-ов да и микро task-ов работалось микро тоски как мы уже говорили они более приоритетные да вот и получается
00:10:39 - 00:11:55
микро тоски они если например смотри вызвалась к эта микро тоска и она в очередь добавила еще одну microprose куда вот как здесь происходит и здесь вызывает вот это микро тоскует callback да и он через рану опять заново ну засветит еще одну микро тарском в кроме сцен еще поставить давай череп туда давай итак паз по сути атаку микро task приоритет выше у них очередь то я даже немножко по-другому работают не только приоритет более высокий то есть micro тоски они что выполняется как только этот освободился стек до execution стек
00:11:17 - 00:12:17
то есть выполнение кода и сразу в первую очередь сначала смотрится микро тоски их очередь и получать эту очередь вызывается до того как вот этого момента пока она полностью пустой не станет то есть если то есть одна микро таскать эти тучи вторую dota так оно выполняется выполнялся выполняться будет и по итогу так вот этот вот код вот эта 2 раны он у тебя страница как бы странице поломаю то есть останется просто зависнет и на него кликать не сможешь окраски set time out и очередь мокрота скафа на они
00:11:47 - 00:12:39
выполняются по одной штуке тайсон одну выполнил и продолжает свои вин клуб одну выполнил и продолжаете менту то есть там будешь сети ты внука вообще пофигу понял то есть это там к эта очередь будет собираться то есть если например вызываешь относятся тоску из этих 2 понял но как бы они села по одной штуке выполняться будут окей ладно это доплыл это такие уже прямо дали детали до как бы то есть часто бываешь таким можешь не столкнуться можно полезно знать а вот мы поговорили про макро тоски и микро тоски
00:12:13 - 00:13:12
да а вот есть такая одна сущность еще одна вот оно как бы знаешь ни там ни там стоит можешь вообще ну знаешь ли вообще кикнуть с помощью чего еще можно стать это синхронной калмыки вот и какая разница то есть в этой в этой функции есть поведение ну вот смотри есть set time out with интервал там до с этой media вот эти вот все остальные штуки есть вот кроме срезов там и по-моему там вес восьмом что у microsoft добавили вы паркер я не как раз таки не правы бургер за трудно значит эти стандартные вещь про
00:12:44 - 00:13:57
которые все знают они к одному либо к другому относится а есть такая одна вещь у неё прям вот одна функция да у него прямо очень узкое применение она специально под по дну как под одну задачу сделано это даже иллюстрирована в ее имени вот ее название и как бы она вот стащить что-то среднее между микро тоски мимо красками то есть но в поведении своем и вот если ты назовешь если я знаю я могу раскрыть а если я назову это не машинки вот она просто вот вот как-то знаете посередине стоит ну просто знаешь или нет если нет я
00:13:27 - 00:14:38
расскажу и пойдем дальше нет я знаю в целом же скоро станешь не использовал таким образом хотя это наверное нужно было выполнить ну компом подождать кайт выполнение анимации да то есть до следующей отрисовки и выполнить что-то внутри вот тогда но это было очень давно и неправда поэтому вот как-то там подробно и наверное про рекорд на нем очень фрай мне расскажу вот ну я так понимаю что суть как раз в том что у нас если у нас выполняется сразу поскольку он однопоточный он может сразу же пересчитывать вот у нас есть выполнение
00:14:04 - 00:15:23
на двух строках года подряд выполнение там какой-то задачи с разными показателей например мы там в на 10 строке на 15 пикселей блок увеличиваем и тот же блок там на 11 строке на 16 пикселей java script это объединит и сделать вызов сразу на 16 пиксель до что нам сделать чтобы посередине между выполнением там 10 строки и 11 вклиниться и произвести какое-то действие да вот в данном случае скорее всего как раз можно вызвать request они машин фрейм внутри которого мы выполним какую-то часть кода и это
00:14:43 - 00:16:02
нам поможет скажи если это не так а вот окей но просто 1 request понимающая фрейма то есть давать сначала просто вот в общем про event log поговорим просто но чуть более детально помнишь в какой стати вызывается request a не меньшим фрейм то есть и вот эти вот стадии браузер paint layout про этот как ты знаешь подробно или сейчас просто окей окей окей ладно ну да просто получается не в целом ты все правильно сказал а потому что то есть браузер как бы он обновляет там ну то есть зависимости там от частот монитора да там какого сколько
00:15:23 - 00:16:27
мы поддерживать там ее яд я не за производительность и так хотя там целом в среднем точнее 60 этих 60 кадров в секунду до то есть он там будет вызывать это там перед тем как он начнет все там пересчитать перенесенном вызвать рекой с онемевшей фрейм вот просто как раз таки с рекой с онемевших фреймами насколько я сам помню то что они вызываются как раз вот перед этим перед пересчетом именно вот это вот расположение элементов так и перед point им уже непосредственно сами перед перерисовки там и очищения там убитых
00:15:56 - 00:16:55
кадров и все вот это вот одно по во всех браузеров кому кроме safari сафари наоборот после работает по моему обычному то есть как бы обычно всегда заворачивает cadillac такую анимацию как ты говорил сначала знаешь там типа на пресс аккордеона мида поставил там выступает в ноль потом в 500 либо там входе другое значение на котором должен раскрыться обычно стать 2 потому что ну как бы во всех браузерах это сработает вот но в целом идея правильная вот а по поводу очереди а чего говорил просто очередь у них знаешь в чем по-другому
00:16:25 - 00:17:20
работать тоже например смотри если это действо рекой с они машин фреймов очереди стоит он вызовет все 10 штук их и потом если request они меньше информсети другой request занимающим фрейм он не будет вызван понял то есть promise и они вот так вот до бесконечности если один вызывать другой то есть один этот 1 микро тоска довольно еще одно они будут знаешь так бесконечно вызываться макро тоски они по одной вызывается request дальнейшем фрейм они вот у них к эта пачка есть они все вызвались а все которые америку и с не
00:16:53 - 00:17:50
меньшим фреймы которые ну короче понял уже дачами колени продолжим мысль о все они мощным фрейм которые внутри ты имеешь ввиду не будет уже вызываться да да да который внутри то есть есть река нева ижс фрейм засветит еще один рекой мишин фрейма вызывается в следующий раз вот но вот сколько я помню там участвовал синтаксически встречаешь когда request машин фрейм вызывается внутри другого когда расскажу в чем прикол если он не будет вызываться уж сразу не он ну смотри вот как здесь у нас получается да
00:17:22 - 00:18:23
вот этот код же он не поломает правильно браузер он будет работать обычно такие анимации делают такой на канвасе до каната червяка рисует я ненавидел их надеть видосов ну это стандартное знать 1 ч как начинаешь учить там как это сделать смей как орочьего фюрер вот это все время то пишет окей но ну как раз таки что происходит здесь у нас один request понимаешь на фрейм поэтому можно ну то есть ты был если бы ты тоже думал что он работает как макро тоска что он защитил и как бы от ну собственно вызвал
00:17:52 - 00:18:50
функцию да вот эту и пошел дальше свою работу we went лупи делать это как бы то есть это как бы сказать не совсем правильно потому что если два request они меньше фрейма пдд вот так вот стоять они оба вызываются вот эти два рано они в следующий раз выйдут в следующем лупи понял уже в следующем целями вот и получается ну то есть например с мари из у нас 10 этих как его варикоз а не меньшим фреймов засчиталось и каждый из них еще один сидит да то есть у нас 10 штук вызывается добавится 10 штук в очереди вот эти 10 суп который в очереди
00:18:21 - 00:19:19
они уже в следующем цикле вызываться в себя чем кадре вот ну то есть в этом просто разница есть окей так давай чтобы пока нам не мешал все за камень там наверное и пойдем дальше кекс оставьте скриптом то ты горел работал до то есть опыт есть в самом понимании какой то есть правильно можешь рассказать для чего нужен немного он решает typescript у меня на уровне описание то есть каких-то интерфейсов там то есть возможно немножко использования это мне сказать что это не даст работа чтобы глубоко ну а вообще да the white состоял просто
00:18:50 - 00:20:13
говорим для чего вообще typescript нужен да то есть и вообще какие проблемы решает и еще есть понимаю почему настолько популярен стал почему сейчас настолько востребован преимущество используем тот скрипта как это как по мне то он дает более такой твердый и прочный каркас скажем приложению за счет того что у нас все функции всякие до компоненты у них описаны все входящих и аргументы до них описан их возврата и то есть если у нас функция принимает какие-то аргументы например а намбер и возвращает она
00:19:43 - 00:20:56
строку то она у нас задекларированы это дает следующие преимущества во-первых код становится более какими документирован им я работая с компонентом typescript то есть если новый человек пришел работать на проект и он видит что вызывается пойду компонент какая-то функция если это на java script and достаточно сложно отследить все эти связи тоже посмотреть какие пропсы в него попадают они все пропсы приходят напрямую да что-то может нам приходить через stora что там ну в общем я к тому что у него то есть
00:20:22 - 00:21:28
собирается попса томс разных до от родителя там где-то от стороны так далее и хотелось бы иметь возможность сразу посмотреть что принимает от или наукой компонент или функцией как раз typescript нам это даёт посмотреть она дает посмотреть что принимает что это значение означает потому что как правило у нас и именно вы именованные какие-то константы и так далее они несут за собой информации о том какого типа да нам же надо про с этими сущностями какие-то манипуляции а в зависимости от того какой них тип мы можем понять какие
00:20:55 - 00:22:03
манипуляции можем проводить что у нас там где почему сломалась и так далее это первое это документация второе это вот так чему я сказал что у нас более твердый каркас то есть у нас меньше в целом ошибок в коде typescript по ходу работы сразу анализирует и дает возможность ну предоставляет возможность понять где у нас что сломалось то есть программистом тоже человек он может что-то забыть передать он может передать там не того формата да не того типа купить функцию может произвести опять таки те же самые
00:21:29 - 00:22:47
манипуляции как с массивом хотя ему на вход приходит объект да и здесь в данном случае typescript сразу подсветят сразу покажет что имеется проблемы программистов сразу устраняет что еще можно назвать вообще преимущественно тут как-то но слушая основное это наверное то что я уже сказал возможно походу еще что-то вспомним ну да не в целом все понятно все правильно как раз хотелось услышать именно это окей так давай тогда еще расскажем вообще есть какие то еще до функции у также crypto data есть он как раз таки
00:22:08 - 00:23:25
действует вот в основном да как систем как искать как super set до java script at а то есть есть какие-то еще до печи который то есть можно еще другие инструменты можно заменять может ли он заменять другие инструменты вот они скорее говорю что вот у него основная цель от в том чтобы именно предоставить типизацию скрипт код вот и как бы в целом-то этой подметил да и собственно туда же идут кита пены fit plus с тем что у тебя получается поле такой уже авто документированный кодов какой-то мере становится вот а если
00:22:46 - 00:23:56
китай чтоб функции у него которые он например меняет да то есть это как бы такой вопрос скорее больше на знаешь не знаете всякий случай сразу приходит компилятор да то есть мы можем избавиться от того же бабеля да если он компилирует сразу потом из 5 допустим да потому что не все у нас браузеры поддерживают современный китай фичи вот это приходит на ум что ты мешаешь мне в целом да это просто у него еще есть такой да капец какой-то функционал что он в какой-то мере может быть линкором на таким небольшим которой раза андрич был кот на
00:23:23 - 00:24:38
примером выделяет да то есть это не совсем как бы ошибка именно с точки зрения типизации скорее больше такое лента воевод фича но он открыл предоставляет да и вот разборку вот то есть она там в кивком в каких то моментах там не идеально да ты сама там я не знаю какие то супер там и не знаю ну то есть я бы ему зачастую как бы его там тоже свои минусы есть обычно вы снова только этот как его бэг-энда compiled через typescript компилятор вот носом обычно бабелем прогоняются а так да то есть в целом в этом плане она как
00:24:01 - 00:25:04
бы как сказать заменяет некоторые инструменты гейл анн так давай тогда попробуем чуть написать вообще код ты за человек незнаком да и давай попробуй просто описать вот с точки зрения типизации функцию map которые вот вы raider так у нас есть шест файла и может создадим в своем праве . с тем виден да да попробуем туда прийти и просто описать функцию move которые дефолтное представьте вызова ты вызываешь map ты придешь массив известную функция маркера до лучшего такое попробуем типизировать так насколько я помню первым мы можем
00:24:32 - 00:26:06
можно что передавать аргументы generic если первым педант ти вторым так второй период функция у нас функция возвращает как раз массив случайными так почему почти было бы не по паспорту обозначил что здесь допустим вот так вот можно описать можно так абсолютно нет ни написать вот так вот не нет они не валить на синтез ты хочешь сказать что массив применяется при потом на возврат мог делать и что он возвращает тот же самый я сейчас расскажу map же не всегда может с таким же типом массе возвращать это
00:25:37 - 00:27:09
здесь умножить на 2 мальцева так быть отныне конкретно кучу старцевым дня не не взялся хоккей с лучшими заставил жену той тып скопить из этого сначала просто опишем эту функцию вспомнил все аргументы есть ума пера и потом уже в целом все очевидно будет ну то есть map но первым по очевидному начал принимать массив кита значений да за что в типизации должно быть он принимает массив ну то есть вот да ведь функция в по рынку mapping как раз принимает mapyr и здесь та же самый пример а возвращает он
00:26:26 - 00:27:54
уже опять китайская он может вернуть что угодно то есть понятно что он возвращает массив он возвращает не обязательно тот тип который приходит ему дед наверное уже внутренности то есть можем ли мы написать то же самое что упрощает не вот видишь давайте так напиши это не совсем верно быть то что это не покроет hey скоро например мы там я не знаю строки с помощью пары санта до переводов намбер и либо же наоборот на этом лагере строки ну короче понял вот но вот смотри в целом то что у тебя какое количество
00:27:28 - 00:28:35
аргументов правильно давай чуть-чуть попробуем подумать то есть у нас вот mapper что он принимает персону себя в первым аргументом принимает валы и проверить давай просто поговорим про макаркин аргумент принимает сколько вообще в его аргументов передается помнишь mapper он думает волевую принимает яндекс по моему 2 3 помощью яндекс и 3 map слушать 3 на самом деле 3 есть мало кто знает вот как бы это называется начали массив приходится предыдущем я вот-вот возможно даже не то что забыл возможные виду то уж не использовал даже
00:28:04 - 00:29:36
и не знал прикольно то есть можно всегда получать актуальным сразу иметь внутри не актуальны это regenerate изначальной которые ты им apes ну ну вот ok смотрите получается смотрите ты принимаешь волне какой угол виде будет в вазу и край принимаю не очень функцию этот факт давай просто начать описывать функции сейчас просто r описал но это же неправильно смотри вот как-то отдельный тип вынести дать ну смотри давай его доставим срд какая проблема если мы записываем то есть что означает generic ты можешь передать все что угодно а я
00:28:49 - 00:30:05
уже сам разберусь тушь ну то есть что-то передал правильно едем на сайт на тачке достаточности можешь вообще какой-то сюда чепухой передать то здесь например у тебя будет 1 2 3 да а сюда ты передашь я не знаю что может что передать может в 3d quality копчик возвращаешь это как понимать как бы не ругается на все ok проходит значит то есть получается и вот чисто типизации дженериками не совсем правильно да значит надо описать немножко по-другому ну тогда второй параметр надо получается вынести в отдельный вообще типы описать отдельно
00:29:27 - 00:30:40
потому что музыка неудобно будет прям ты давай прям здесь напишем что палец то есть здесь надо будет все прямо писать что вот нас когда певцы внутри аргумент феодоры вот когда-то не пишут fdf это странно вообще работает ну отлично вишни описываешь также какие по обычному функции то есть ну вообще все точно также у тебя вот как обычная стрелочная функция будет просто здесь ребенок какой то есть места более горит rp просто быть здесь получается она принимает целью первым и это как раз таки является а этом ti ну
00:30:06 - 00:31:29
просто писать везде там она умели и не будет как то наверно не очень вот давай давай дописать давай белье как подумаю потому что что можно написать но ты же сказал что назвать что она типа что у тебя путем массив из элементов sti значит тебе water чего будет первого аргумента приходить . хоть и будет так на и ну если мы напишем ти это будет уже массив правильно весь то есть а если мне почему ну смотри как у тебя песню таки какой то элемента первый аргумент это массив ти вот мы получается generic передали весь
00:30:53 - 00:32:32
масть позициям берем окей валюте тогда вторым у нас идет индекс на мамба напишем и третьим элементом арджуну и тогда у нас получается вот так вот и все вот и возвращает он получается он возвращает тоже массив и разве так но если у нас map функция map а нет подожди он возвращает это же matpat типа он возвращает элемент получается то элемент нос каким такой типизации то есть он может быть же правильно все что все что угодно то есть человек напишет [музыка] да здесь и человек если человек оттуда все что угодно может вернуть а нам нужно
00:31:42 - 00:33:32
просто об этом знать не адрес то она напишет что то есть нам же нужно узнать о том что человек вернулся у нас провели два цикла узнать нужно надо чтобы typescript получается надо чтоб тащи сюда сам определил там [музыка] когда-то жить и я не знаю то есть возвращает ну не короче ланда писал просто два этих что давай просто не задерживаться а тебя я все удалите это один д-р другой вот встретил раза дживс попал и дожди тогда у нас а почему он ругается продолжает ругаются ну возвращать лан давай возвращаться что
00:32:38 - 00:34:09
должно возвращаться из чего из общей функцией map массив [музыка] ну да допиши короче ритер type давай просто упал питер так вы будет массив массив типа просто [музыка] окей ладно у нас если возвращает только у нас возвращает сущности помад функция то он здесь возвращает массив этих новых сущностей как раз ok сейчас ругается это то что он key to define под него чувствовать tgx продуваем все правильно окей ладно давай туда на этом остановимся и пойдем дальше ok ok ok ok давай обратно в интерфейс наверно
00:33:31 - 00:35:23
давайте поговорим в целом про вообще оптимизация веб страниц да то есть такие методы там оптимизм давай поговорим как про конкретно си кей за у нас например есть из по приложения то есть нет несколько страниц там все запросы да то есть именно как бы такое знаешь то есть у нас a piano то есть backend начнем такой чисто афишка да вот и как бы этот какие вообще могут быть какие проблемы с кими сталкивался с точки зрения оптимизации и какие вообще решения есть в целом то с чего вообще на горе поговорим потом уже
00:34:35 - 00:35:47
про конкретные какие-то кейсы проблемы могут быть у нас могут быть лишние рендеры развалины когда это касается списков да почему они возникают опять-таки у нас если изменяются пропсы или изменяются локальный стоит компонент рендерится если вы передали допустим в элемент массива кто нибудь функцию до которые по сути передается по ссылке и родитель обновляется следователя обновляется эта функция следовательно обновляется ссылка да и тогда у нас child а не рендерится здесь спасает уже ряд мимо там проверки там на
00:35:11 - 00:36:29
входные пропсы так далее это первое чтобы сендер второе у нас часто бывает кейс когда люди не отписываются от каких-то тайм-аута допустим не очищая таймауту да если у нас там допустим если функциональный компонент to use фиг он возвращает call back который вызывается при демонтированный компонент неплохо было бы в нем очищать эти тайм-аут и интервалы если какие то есть интересен народа было бы неплохо их удалять вот что еще у нас может быть и по оптимизации но по оптимизации могут быть опять таки какие-то
00:35:50 - 00:37:05
картинки тяжелые да если у нас нет куклы служба если у нас есть тот же список и он огромен то у нас идёт как минимум первичный рендер всего списка здесь спасает виртуализация то есть в часть видимого в ту часть которая у нас видно до видимого мы можем за рендерить этот кусок списком и по мере скролла рендерить все остальное чтобы у нас не было этих проблем ну вот такие проблемы обычно часто вылезают а вот с точки зрения какого-то такого давать первоначального первоначальной загрузке страницы да давай представим
00:36:28 - 00:37:46
что наставление тот же интернет магазин и нам нужно чтобы у нас то есть как бы сел хороший был что страница загружалась быстро то есть вот в таких кейсах и пропуски проблем сталкивал случае здесь как правило байт проблему что загружается огромный банду с другой страниц вот если даже бывает там разделение допустим на мобильными и стоп на версию да и при этом там мобильная версия загружать то есть в целом мы здесь был бы неплохо разделять на чан кидаю либо это мобилка там desktop и планшет если это супер там большую
00:37:07 - 00:38:20
картину нам нужно ещё больше оптимизации то вообще разделяет начинки по страницам надо смотреть на стиле который загружается зачастую тоже приходит сразу скопом вот и первоначально отрисовка страниц вот неплохо было бы до чтобы у нас сразу приложение было так построена что у нас вот часть которая нам нужна загружалась все остальное загружалась либо в фоне либо по мере перехода в эту часть окей вот а ты еще упомянул тоже до провод лишнюю загрузку с этих как его скриптов тогда и стилей а ты помнишь вот атрибут таки если скрипта
00:37:43 - 00:39:11
осинки de fin de fer да можешь рассказать что они делать сейчас попробую в общем у нас идет последовательно отрисовка страницы и когда браузер доходит до скрипта но то ли скрипт он будет выполнять сразу тот скрипт который там находится и затем уже после того как скрипт выполнен браузер будут продолжать строить эту страницу атрибуты помогают нам отсрочить то есть если мы делаем вот сейчас бы вспомнить различия и в целом предназначение в общем суть такова что мы можем благодаря этим тегам просто отрисовать страницу и затем
00:38:27 - 00:40:01
начать одну то есть по моему как раз de fer он сделает так что страница сначала от рисуется полностью а потом уже вернется к скрипту а вот что сделает а sing он будет слушать не могу сейчас про разницу сказать обычно стараются скрыты вообще вы носите его перед закрытым там тегом плане чтобы после опрессовки не начали выполнять не могу сейчас про разницу сказать точно не вспомню но там разница есть в том что sing получается давайте приведу пример то есть например то есть осинка давайте расскажем как
00:39:17 - 00:40:41
работы до синко де фер потом попробуем вместе подумать как проблем может быть to sing как работает а когда у тебя доходит то есть до этого как раз элемента да да скрипта то есть на нем браузер не останавливает он запускает загрузку и там когда он загрузится он сам в себе там в свое время он запустится правильно ведь вот то есть ну как бы как любой там можно представить аналогию с дело с кем-то синхронным запросам делать запрос там на подгрузку скрипта он подгрузился типа ok ok загрузился типа ее там запустится в свое
00:39:59 - 00:40:58
время там то есть нему а может очень и запустится можно вообще там висеть будет то там человек загран страница он даже не успел закону загрузится аки а теперь давай представим диффер да то есть вот а ты вообще значит такой вот давайте просто немножко отойдем от темой просто на ведутся на мысль в пайке да то есть на работу же свой парк ну то есть и разделения то есть обычно какой термин есть то есть выпойки для разделения вот этих вот для разделения кода то есть когда называется каждый эти куски это например
00:40:28 - 00:41:25
шевченко ну да да да вот чанки да то есть обычно как то есть несколько чанков 2 представим так что у тебя например есть например то есть у тебя есть какой-то код для страницы да и например первый файл да он на при tamron той как всегда идет который легкий томом между стамбуле вы пока нужен для своих это какой-то внутренней истории потом у тебя например вторым идет скриптом да у тебя идет большая библиотека например как в и третьему текут третьем куском третьем скриптом у тебя подгружается твою же код приложения там я не знаю два
00:40:56 - 00:42:00
компонента на практических по 100 строк кода и они все грузится с одного сервера то есть матами запустили где-то там засунули какой-то папку эти файлы там я туда кидаемся этого с нашего сервера эти файлы окей смотри теперь какая проблема получается удались с одного сервера идут то есть они запускаются да там то есть нигде фиору там он проходит увидишь все их надо загружать и он начинает загружать то есть это есть получать свою допустим вас 1 скриптом я не знаю там буквально там сколько они за полом
00:41:31 - 00:42:26
обычно маленький там один килобайт до занимает runtime 2 аята я точно цифры не помню второй реально огромный понятное дело жирный и третий наш код и вот представьте синхронный подгрузкой а может проблема произойти вот они практически одновременно начали загружаться у нас медленный интернет там я не знаю реактором раз в 4 дольше загружается чем runtime и и наш кот ну проблему как раз в медленной загрузки но смотри что будет если то есть скорее всего если они примерно ну практически сразу тату они не сразу но практически
00:41:58 - 00:43:00
сразу начнет загружаться и то есть react весь намного больше чем наши наши компоненты то есть проблемы же как раз будет в том что наши компоненты загрузится то реактора и загрузи выполнится до того как еще у нас загрузился react ну да да да и получается у нас вылетает ошибка вот а диффер как раз таки он эту проблему решает он в режиме получается будет загружать он загрузит их да ну а бабу части будет точнее загружать будет также но выполнять будет их последователи из откровения да да да она он подгружать их тоже
00:42:29 - 00:43:33
получается то есть они как бы блокирует страница не был да и посту как секс дом подстроится он их в нужном порядке запустит то есть он запустит сначала 1 потом второй потом 3 вот в этом плане de fer полагает мы и целом ты и как раз таки есть момент что тонком плане тут это и венджи вот он тоже получается как раскаты тизер используешь он запустится пост о как все differ скрипт запустится погрузиться туда в дом контур гладит сработает вот синкансен как бы на это никогда не он может как раз произойти
00:43:01 - 00:44:05
вроде до синхронно youtube у вас ассасин когда с декором он как раз таки будет ждать то есть пока все таки гесер скрипты загрузят туда уже тонком плоды с работами то есть большинстве случаев на самом деле то есть осинка можно использовать как это метрика да там оно там сама по себе живет ты просто про геев чик делают у себя в комнате если у нас страница зависит от скриптов которые ну то есть это зависит от скриптов дата мы делаем de fer и ждем окончания загрузки ну да да да то есть получается обычно так много сау как бы тизер
00:43:33 - 00:44:29
конечно использовать освежили в памяти что есть что окей окей окей так что у нас по времени мы примерно минут 50 назначил on давай туда уже перейдем к фактуре давай в целом вообще поговорим то сейчас же как искать уже хуки давно появились до попова назад и в целом уже все переходит уже поэтому большинство перешли давай вот попробуем поговорить вообще то есть в чем разница как бы принципиально между классами хуками и классами компонентами и компонентами на руках вообще какие плюсы ты видишь волков и какие там
00:44:01 - 00:45:15
минусы есть вот классовые компоненты они ну то есть работы с классом и компонентами программиста вынуждены были писать эти хотим углубляться в так скажем в дерево построения да то есть нас получается было так скажем наследование домен за всех до наследование возможно тот назовет его у нас оборачивались куски кода в другие куски кода и и так приложение у нас было многоуровневым что усложняло и замедлял работу java script а вот руки функциональный в целом стиль позволил то есть как сказать немного эту историю
00:44:40 - 00:46:09
облегчить благодаря тому как раз что у нас нет вот это вот глубокого дерево приложение мы можем строить его ну понятно дело что не плоско но намного менее так скажем рекурсивно там что ли менее глубоко и как то сбоку подставлять там необходимый функционал вот ну как то так какие еще преимущества есть у пауков по сравнению с теми же хоком и классами но сейчас так не вспомню может быть по ходу что скажу выполнению сейчас хочешь показать наглядно разницу или как я пока что просто ладно окей вот ты как бы
00:45:27 - 00:47:01
отметил да типа еще одного а минусы какие то есть и видишь жуков ты не видишь вообще ли какие-либо минусы и если да то какие то что их надо писать на не ну как бы хочет спросить писать надо было мотоцикл с суши минусы я ожидал услышать и падая сюда скатился до минусы какие могут быть минусом быть ну разве что разве что надо вообще посмотреть под капот и смотреть как они вызываются дальше эти хуки и тогда возможно мы сможем посмотреть о минусах в исходнике реакция не лазил не смотрел что там как они вызываются
00:46:13 - 00:47:41
поэтому сейчас так сразу о минусах тяжелых я не скажу ну а давай попробуем подумать а все что стал осложнений есть какие-то моменты которые ты заметил что вот например в классовых компонентах они были чуть попроще [музыка] то сложнее ну стало сложнее как минимум ну то есть получается у нас классовых компонентов забыл с были ссылки вот на эти функции у нас как раз проблемы с равен даром не была такая глобальная как оно происходит сейчас с руками в принципе возможно не было на этих коллберг ход а сейчас мы передаем вот
00:47:00 - 00:48:12
эти функции в дочерние компоненты ведь этим функциям свойственно обновляться и вот мы имеем то есть все же рендер многочисленный на разных компаний подключается nude pics ok а вообще так читал ли нет там в гитхабе я помню был этот как раз таки проползал на хуки и вообще помнишь ли какая прям такая то как его одна из прям больших причин было то есть почему вообще прям окончательное решение приняли перейти и да хватит раз помнишь или нет но я уже знал ли возможно и не знаю ну точно не помню но там ещё один
00:47:37 - 00:48:47
аспект был что facebook долго пытался как будто при пока он назывался сборщика не стану то ли они хотели сделать сборщик который еще параллельно может быть запускать и соответственно идет об оптимизации делать то есть там у пиратки это не нужны ну то есть более знаешь такой тип более агрессивные 3 шейкин так сказать да то есть если какой-то метод не используя что из планировалось что можно будет как-то убрать там и вот подобными оптимизации они занимались вот с помощью сборки и этот какой проект в конце
00:48:21 - 00:49:24
концов заселился вот и там к краске один из одной из причин почему было то что очень сложно анализировать код который объектно-ориентированный и всю эту историю с наследованием с и сами коты за функция швов функциях мощь запихивать какие-то там свойства прямо вот winston знаком с то там как вы написали же раньше в реакции то что там часто видел там левый да там значение просто вид он застал там равняется вот и такие вещи обычно сложно отследить вот и как раз таки это тоже был таким прям ну прям аж
00:48:52 - 00:50:06
как сказать здесь была сильной мотивации полностью уйти от классов чтобы можно было сделать в конце концов подряд какой-то сборщик который уже определял бы сам куски как которые обновляются и исходя из своего кода да чтоб все декларативно было и что все было анализируем а вот что от чего зависит и как бы уже ну как быть и в том что в идеале хотят прийти к тому чтобы можно было вот полностью как будто не нужно будет вырезать с помощью сборки вот они руками делать окей ладно давай вот тогда поговорим про
00:49:29 - 00:50:29
состояние в реакции да то есть так вы еще что-то знать про мысль пришла что мы сидим сюда на самом деле практически ничего не пишем окей лан давай поговорим просто про состояние в реакция prostate и и вообще каким образом их обновлять нужен то есть какая у них особенность есть то есть что нельзя делать состоит в реакции она со стеком в реакции нельзя его мутировать потому что потому что react можно сказать не делает это строгое сравнение вот осмотрит лишь на поверхностные и тогда у нас компонент понимает что нужно
00:50:01 - 00:51:17
рендерится после того как там стоит изменился что ты подразумеваешь под строгим сравнений глубокое сравнение объектов например у нас есть объект и мы можем сегодня я просто надо ok ok а вот скажи мне а если бы мы мутировали да например стоит то помогло бы глубокое сравнение здесь если бы мы мутировали стоит помогло бы линн глубокое сравнение слушай ну наверное да почему нет то есть сейчас он смотрит просто на то что ссылка изменилось а если менялся какая-то сущность по этой ссылке то есть допустим свойства объекта но при этом мы
00:50:39 - 00:52:06
react у дали понять то есть что там действительно изменилось хотя он же должен еще и прочитать это то есть не только понять что надо обновиться еще и прочитать но просто если ты монтируешь то есть это же ясно рясу перебил ты монтируешь подразумевает что-то объект один и тот же остается но понимаешь да да то есть ссылка остается одна и та же на ну да вот у вас здесь есть например ну просто вот это под капотом реактор так скажу то есть свойство делать стоит отдавать за 6 и вот теперь это как сравнение будет
00:51:27 - 00:52:41
происходить то есть как бы у тебя придет прием стоит она примерно функцию да будет искать функция кпр да и у тебя будет приходить на например стоит news и я просто говорю что если мы и мутирует именно в таком виде да вот тут такой функции кампер вообще будет ли какой-то смысл а смысл для чего для того чтобы обновился компонента есть ряд понял обновлять компонент элемент да вообще есть ли смысл от такого сравнения чтобы реакторе компонентов дарил свернет наверное да у нас же существует мы bags тот же который
00:52:04 - 00:53:18
проверяет на глубокой смотреть получается я понимаю о чем ты говоришь нас давай просто чуть раскроем что ты подразумеваешь под глубоким сравнение куда то есть предстоит . а равно не устоит . и мы проверим равны ли его свойство окей да вот у нас вот такой стенд был и потом мы вот так вот сделали то где-то в коде там я не знаю давай был что при встрече что в не устоит придет попробуем кто-то рассмотреть ну конкретно вот какой объект придет а слушать ну здесь скорее всего ну придет тот же самый объект с 5 то есть он не
00:52:41 - 00:54:03
будет здесь ну то есть придет та же самый объект со старыми значениями ну я скорее того что смытых чего я веду что если у тебя сравнивается предыдущие новые значения это по дефолту говорит о том что у тебя всему ютубу понимаешь потому что у тебя предыдущие новое значение это будет одно и то же если монтируешь не тая я так подумал что ты имеешь ввиду поможет ли мы то что если мы дори акта донесем грубо говоря глубоким сравнением что кому что пропсы там изменились но просто если мы донесем до него туда а если мы используем
00:53:22 - 00:54:36
стандартные ну то есть мы же можем проверить сами и потом запустить какой-то фарс апдейт до а можем использовать вот как раз таки это нативный способы react а если мы используем шут апдейтом комп он туда там придет как бы один и тот же объект тогда это не поможет ни я понял нет в целом верно про здесь скорее но то что просто прикол в том что чтобы тебе самому даже тип кампер сделать тебе нужно сделать копию понимаешь потому что даже глубокое сравнение она сначала тройного равно обычно проверяю то есть
00:53:59 - 00:55:03
как бы за чем-то сравнивать это полностью идентичные вещи понимаешь я вот скорее про это говорил что типа ну как по глубокой сравнение то есть здесь скорее немножко другой паттерн применяется вот потому что ему глубокая ты не сможешь вообще никак не сможешь но это сотру будет возвращаться то есть ну вот а то что говорить я понял просто вот то давайте рассмотрим такой кейс ладно вот и и jacket альтернативные подходы дано при обовьют он же что никто мутирует состоит и в боксе например а как это вообще работает есть
00:54:32 - 00:55:32
понимание службы по моему там использует как раз прокси и когда у нас идет какие-то обращения пора [музыка] записей так далее это у нас как раз будет обновляться после она игре будет проверяться на там наверно эту проблему как раз там необходимости [музыка] постоянно поддержку фильму табельный стилю у нас новый вид по моему как раз на прокси аха старый там to define прописан так или иначе то есть нас над сайтом есть обертка которая помогает отслеживать какие то там запись и чтение прочее и благодаря этой оберткой то есть но
00:55:01 - 00:56:29
делается на видимо от и между оберткой самим компонентами и уже аннулируется обновлением название помнишь вот именно точнее в этих методов обертки которые ну то есть гитары да верно о кей а вот например если рассматривать как вообще есть ли какие-то как сказать если какой то понимаешь какие плюсы мы при могут быть и у одного подхода и его другого то есть с которыми сахарами и сыну 7 толстый там ну во-первых если мы берем плюс геттер и сеттер а у нас идет на пятки более глубокое сравнение у нас нет необходимости каждый раз создавать
00:55:49 - 00:57:23
допустим у нас есть там массив из тысячи элемент у нас что-то изменилось нас нет необходимости каждый раз создавать новый массив скорее всего это немножко бьет все таки по памяти вот и в целом наверняка это делать ну немного легче чем строить новые сущности до подменять их там и так далее поэтому здесь подход такой с гетрами satomi более полно понятен для чего он сделан это легче плюс там вот как раз таки во вью же у нас нет вот этих вот проблем тоже даст рэндами прочим который возникает при акте ну есть наверно не в таких
00:56:36 - 00:57:50
масштабах react все-таки немножко глубже приходится этим покопаться а какие плюсы несет имеют а был стоит ну и акту легче по теряет то есть это уже получается если у нас он либо бьет по памяти либо по немножко по производительности то есть получается здесь не надо там уходить в глубину какой-то огромный проверяйте значения просто ряд проверено вот этого столовый cool делает проверяет поверхностно то есть изменилось ли у нас ссылка если она изменилась пожалуйста обновите но если не примитивная сущность
00:57:15 - 00:58:21
а погоди а вот например как раз с гитарами setra нас прокси нужно ли канату глубоко выходить разве ты между что так или иначе то есть если вызвался типа сеттер значит слушаю наверное ну то есть если вызвался с означает однозначно что-то поменялось даты между дать тебе просто надо найти с помощью полудня в гитарах как происходит но тебе нужно найти все зависимости которые должны обновить которые вот тогда ну то есть изначальный поиск все равно присутствует в плане начали поиск ну когда ты делаешь
00:57:47 - 00:59:07
обертку над объектом он же так или иначе проанализирует правильно весь объект чтобы понимать а но это на самом деле с гетрами центрами держал define property везде сделать с прокси в этом плане полегче как этот идиот и не описывающие свойства то есть это же дефов define property он был неудобен в том плане что ты не можешь динамический объект создать как бы реактивные коту потому что у тебе нужно сразу снять все свойства и ты на каждый свойства там гетр сделайте сектор через wine property апраксин этом плане
00:58:27 - 00:59:26
у него простаты и как раз таки вот этот методы описывая get set тепла и все такое и там уже ты можешь эти действия производить придет ориджинал объект вот на котором зовем прокси короче еще эта история да я больше про то как это под капотом реализующего скрипки с наверняка немножко работать сложнее чем просто наш потом подменили на новый какой-то объект опять-таки не знать о но то что вещь просто например достать к это свойство используется обычного plain объекта чем с прокси ну да да да конечно ну я же что
00:58:57 - 01:00:02
рак скорее всего пошел больше штаб по легкому пути в общем вот хотя может быть есть какие-то super plus и потому им это был подходе я них не знаю [музыка] окей окей окей а вот в целом с точки зрения например как искать наименьшего количества рендеров такой подход лучше если хочешь вот наименьшее количество кадров компонентов сделать даже вот рендер методы не вызывались который реактора ты мечту какой подход вот какую или какую реактор ну да либо как у редакции там реакторе бама бы xxi такой сравнение
00:59:29 - 01:00:53
будешь делать суши ну наверное как раз по пути там об их сыпью будет получше эту историю ну да да да верно потому что там например если он как бог а конкретно знает какой компонент что использует реактивом в той или иной мере ту стену это контролировать ты используешь правильные у нас 30 когда вызывается обновление да вот у нас допустим обернуты там 100 компонентов в connect ну там 100 компонентов будет грубо и после каждого там обновление стороны пересчитываться просто будет ли они обновляться внутри себя будут решать
01:00:16 - 01:01:29
connect как раздать его вот проверкой поэтому поэтому даже сейчас скорее в том что типа тебе самому нужно правильно и простора передавать то есть если сюда restore будешь передавать компоненты уже внутри компонента братья connect не поможет как-никак моя скрипка это окей ладно ладно ладно ладно hey а так в целом поговорили а вот в реакции тогда каким образом получается вот мы proconnect сказали дальше там типа есть именно оптимизации рендеров с помощью чего вот функциональных и в классах компонентах
01:00:52 - 01:02:08
оптимизировали рендеры с помощью чего функциональных компонента оптимизировали эвентри помимо функциональных и в классных то есть это мы использовали в классах по моему вот вы с классами я работал немного но по-моему там был пир компонент который как раз про да да да я говорю то в целом не сильно важно да вот в ну и там функция если ты не используешь пер комфорта было шуток dot com порт который как раз можно было провести вот этот сравнение до предыдущей там новое значение если у нас функциональный то у
01:01:34 - 01:02:44
нас есть ряд мимо который принимает первый аргумент компонент вторым функцию которая возможно тоже проверить старый новые пропсы сравнить их там и ну что чтобы управлять и обновлять нам компонент или нет плюс есть хуки по типу например искал bk в котором мы можем memorize ровать функцию которую мы передаем в черный там компонент и в данном случае при обновлении родители у нас будет оставаться эта функция плюс из произведений из производительности мы можем сложить для там если нас киски то сложно пересчет этому обертывать их плюс
01:02:08 - 01:03:26
мимо вот и тогда у нас при тех же самых дополняться зависимостях у нас будут возвращать тоже результат без вызывать функции так окей ладно давайте дальше прогнали по хуком да то есть вот есть эффект и есть и злая вот эффект можешь вообще рассказать то есть в чем разница и когда как бы использовать слушай хороший вопрос island эффект не использован по моему как как раз разница в том что если эффект сразу вызывается сразу же синхронно после отрисовки компонент отрисовки владимир кунин сможешь повторить
01:02:47 - 01:04:08
синхронный или асинхронный синхрон вот он называется сразу после отрисовки вот ну а себе в целом суть такая же какую засек тур буря то есть если у нас допустим и эффект вызывается асинхронно то этот эффект после всех изменений в доме который происходит он называется синхрон окей а когда такие плюсы например могут быть одного и другого вообще и в каких кейсах то есть ну и эффект получше будет использовать этих эффектов эффект в цирке в кейсах не знают все кто не слушает такие кейсы дай подумать что можно потому что сани
01:03:31 - 01:05:03
дел приходит думать то есть чтобы он где бы это могло помочь ну опять таки если нам нужно получить какие-то данные там перед отрисовкой река мы можем обратиться к услышал и получить их там как-то в каких случаях чтобы такой прям живой пример привести сложно ok так на самом деле эффект как раздавить верно ты отметил что для измерения дома нужен вот то есть он может быть полезен чтобы замерах это сделать сразу же и возможно даже стоит выставить например в этом коде новые значения и сразу обновиться компоненты
01:04:17 - 01:05:33
человеку the table к не увидеть также ну и в целом для обновления каких-то state of и точно для для обновления какого-то этого какие-то стили и там да и вот все такого дезинфекция предпочтительнее потому что ее эффект так ты скажешь о после обновления дома синхронно происходит за человек может что-то увидеть вот какой то узнаешь на секунду кадр это обновлялись например и не знаю и размер да то есть например элементу через стиле его и как бы сразу же он то есть больше столбцы таблицы будешь там увидел на
01:05:06 - 01:06:06
котика на доли секунды этот элемент со старым размером есть опять-таки может обратной вообще ситуация быть что мы увидели как делаем какие-то сложные том числе не и прочей у нас может тормозить отрисовку да это такой тоже может быть вот но в целом дате префект он всегда будет предпочтительней а давай попробуем еще вот давай попробуем чуть написать по писать код да сейчас вот например был жив класса в компонентах насколько помню force апдейт до например метод вот довольно представим что мы это в своем
01:05:36 - 01:06:49
bags пишем и там например мы сами с помощью прокси определяем что компания должна обновиться вот и как мы это сделаем то есть как бы вот этот форсов да это прям можем реализовать через функциональный компонент но здесь внизу что готова можно сразу написать скачался так я на самом деле немножко задачу вот что мне надо сейчас конкретно сделать обновить принудительно компоненты да я просто поменяю ему стоит локальный можно укорачивать выше вопрос компонент принудительно обновляла ну вот у нас есть допустим он
01:06:13 - 01:07:24
подставит фолз так он здесь нет и в этом автоимпорт они развлечь автоимпорт у тебя не работает данная мысль или здесь в свои 50 дай-ка мне это точно просто контрится компонент окей а вот давайте теперь представим вот такой кейс да и нам нужно что вот эта функция откосов действо на предстоящую в пути компонентная stydio передаем как можно написать этот код немножко по-другому чтобы у нас подтянутый force апдейт не обновлялся мы в гипсу передадим и задает поддержку что ты между чтобы force апдейт не обновлялся при каких случаях
01:06:59 - 01:08:32
чтобы ну можно писать код так чтобы он вообще не обновлялся да вот шоу вот можно написать короче есть такой способ как это можно сделать так чтобы мы наоборот заблокировали то есть не-не-не-не-не-не чтобы не заблокируешь обмакну работал как ты как было до этого без русского барокко но чтобы он вообще никогда не обновлял свой reference to сейчас ты как делаешь изобретут у тебя обновляется и он явится в зависимости водой попробовать посмотреть эту нас есть и каждый раз когда мы вызываем force апдейт у нее после вызова
01:08:03 - 01:09:16
новый reference будет правильно ведь а я хочу чтобы она вот вообще никогда свою рефери с не меняла но работала правильно ну прикольно получается здесь же такая циклично как зависимость то есть он да да да и сам дэвид и при этом если он содержит дтп и сады этот он будет меняться а вот вот такой кейс в нашей ситуации не поможем поможете стоит еще другие стоит есть понял чтобы он при изменить других стоит тоже не обновлял стоит там есть а вот как сделать так чтобы он вообще никто не обновлялся сушину не передавать
01:08:42 - 01:09:51
просто ему ничего в temps ну фей это будет работать а здесь смотря тогда получается изобретать будет старые значение до а тогда мы здесь можем сделать yous зарину вместо и estate использую зря ты типа не я сейчас просто в целом она так писали игру не каждый же рендерить не обязательно читать ну наверное здесь используют суре freedom зомбей . korn и тогда здесь наверное ничего не придавать dips и при этом актуально будет ну только здесь не и задать тоже будет ну короче щас немножко равно не какой код будет работать
01:09:16 - 01:10:50
такой же вопрос он будет компонент обновлять или нет слушай а глина хорошо рыцаря в общем нам нужно чтобы обновлялась компонента здесь не будет обновлять компонент потому что это рек он будет скоро когда я вообще написал какой то глупость рождение сейчас курса blade у нас в ews callback мы не передаем в него значение но при этом нам надо бы получить предыдущее значение [музыка] ну мы скорее всего здесь должны вот дополнительную какую-то сущностью иметь типов узрев блин не знаю честно мне приходит как мне вот это вот
01:10:22 - 01:11:55
смотри твоя идея с рифом оно правильное давай попробуем его добить но есть способ намного легче во давай попробовать и попробовать чуть чуть подумать вообще вот что вот сетар этого куста это возвращает какие какие значения может принимать чуть подумай если не вспомнишь давай сверху мид объем в средствами столь же рабочий кейс ну с он принимает по моему типу может принимать call back до которым есть предыдущее значение то есть и ты мечта если мы вызовем есть [музыка] [музыка] так вот что чтобы это вопрос возвращает
01:11:22 - 01:12:47
ли он здесь то есть получается он несмотря на юз кубик он здесь будет иметь актуальность значения да да да да вы пойдете туда можно вообще даже убрать его не используем окей а давай попробуем с рифами добить историю на самом деле она тоже правильно было в какой-то мере то есть просто например данном кейсе то не нужно но с рифами это тоже можно сделать то есть у тебя есть идеи как можно сделать через риф например если у нас не было возможности клуба передавать попробуем то есть мы все-таки задэ это
01:12:13 - 01:13:17
делаем refin да ну смотри есть вас и запрете древ ну ты смотри в каких случаях компонент обновляется на меняется стоит и либо пропуск да значит стоит на сцену нужно будет менять проверить да тогда нужно дополнительное типа [музыка] расправился маг дополнительными да да да она по сути нужно чтобы еще у нас что-то было дополнительно вот помимо стоит а я вопросы задаёшь написано что мы здесь можем сделать и мы меняемся это задает на а в конце я сейчас подумал что прибор сам менять просто нам его менять всегда смотри вот
01:12:49 - 01:14:21
и воспользуйся давай сразу скажу есть неправильные заботит использовать он здесь не актуально и будет давать ну то есть для этого как раз рифы нужен здесь его использовать так окей а ты между что ты смотри давай давай попробуем разбить задачи на подзадачи у нас есть state правильно который должен обновляться вот и у нас сейчас проблема в том что сейчас мы не можем использовать как раз таки стоит внутри callback а то есть вам нужно как-то получать этот значение внутри и искал bp через риф и значит то есть свой проблему
01:14:01 - 01:15:14
нагрев обновлять вот я сделал час до как теперь левую на обновлять сразу же после ну то есть вызываем типу [музыка] же как мы орех нам каком случае вообще нужно обновлять кантри нужно сейчас я подумал нужными нам здесь в обновлять что я окончательно запутался то есть мы здесь не обновляем функций у нас есть старое значение но нам с это изобретать нужно записывать новое значение тогда нам нужно [музыка] прямо здесь наверное тоже записать и [музыка] стану а здесь тогда нужно степа и тоже были уже использовать
01:14:38 - 01:16:11
да все верно верно вот на самом деле это очень полезно вот такой как искать фишка нас такими вот орехами потому что например если передаешь какой-то отклик до в дочерней компоненты которые там не должен обновляться до например то есть много рендерит и он клик же он должен происходить только тогда когда человек нажал на кнопку и выделите чтобы вот как раз я например call back at никогда не обновлялся и в таких случаях рифы прям очень полезное бывают то есть получается потому что у тебя то есть не должны
01:15:35 - 01:16:38
никита матч эффекты внизу произойти еще что то это вот то что я везла это объяснял вот уроки а не знаю можно при ликовать и ну что ж потом скину так и не в целом порядку разобрались у меня с вопросами все за исключением один остался а вот помнишь то есть так какой компонент вообще там обычно пишет приложение он такой один тинькова вспомним когда заходит ладно окей один компонент такой есть который на руках нельзя реализовать и я обычно как бы и его все на классах пишут до сих пор вид кетч который позже компонентами
01:16:09 - 01:17:30
орбан dry да сегодня в целом эти скетчи это метод короче и нужный ответ получил окей давай теперь немножко чуть-чуть тоже с практике продолжим но по джессу здесь такие задачки есть как искать полу таки наверное алгоритмические такие богу и полу название вот овсом очень сложно нету давай попробуем опять написать функцию map расставь скрипта но с использованием редиса да ты не можешь герой мог использовать так ну короче хорошо сейчас смотри значит r радиус равно мне [смех] не устроило подожди я нашел выход из
01:16:49 - 01:18:28
ситуации как инженер но ты как бизнес заказчик недоволен на это понимаю решением окей давай ладно без юмора в общем у нас есть функция map есть функция filter и на них реализовать через радиус атома погибели вспоминать что при принимать радиус он принимает call back в котором первым аргументом он принимает по моему аккумулятор да а вторым каранд валью напишем и до принимать раз начальный аккумулятор что мы что является начальным аккумулятором у нас при папе то есть когда мы проходим циклом начальным
01:18:00 - 01:19:34
аккумулятор у нас является пустой массив поскольку map это как раз макне мутируют лучший она возвращает новых поэтому у нас есть пустой массив сейчас мы пройдемся по нему и смотрю что он возвращает то есть получается у нас есть массив дальше мы проходим поэтому массиву и в должны вывернуть corinth пылью то есть такой здесь индекс вообще возвращаются яндекс по моим третим на помощь и вот 4 есть можем ли мы от яндекс сделать так вот сделать карен пылью который зависит от mmorpg типа возможно часто бредятина пишу но я хочу
01:18:50 - 01:20:40
вот так получается у нас есть функция map она принимает вторым понимая цену от функцию у нас уже 3 deus который идет циклом по rain берет пустой массив и в пустой массив по индексу делает он подожди они возможно нет получается здесь map она же принимает весь этот хотя не так арендовали слушай а давай посмотрим я могу вообще смотреть консоль ну что туда можешь я на самом деле давайте скажу сразу это сработает вот ты написал правильно но типа здесь два момента есть один это мило chef один это такой маленький
01:19:49 - 01:21:16
момент это то что сенате принципе по хорошему передать здесь и короче а это же самое да да да но это вот это не то что как бы его 2 вопрос такой можно ли без индекса здесь обойтись ну то есть нужен ли он тебе вот чтобы светить ну хотя наверное мы можем просто каждый раз возвращать типа сейчас секунду как раз на рынке по возвращает его так вот и тогда у нас давать не подойдет вода засосет не ударяя пока а вот если мы каждый раз будем возвращать map он что делает он принимает corinth волну и возвращает
01:20:34 - 01:21:46
зама пинай да то есть какой-то новый вид карт world внутри строку перевели в зомби rda значит получается что вернуться здесь вот мы переводим ну давай вот такой кекс а подожди он вернет весь массив все-все соляным нам нужно элемент например вот здесь что вернемся в mapi массив массивы почему нет это все я я путаю оригинальные болты с маком который mapper вот давай да потому что он вернет как раз сущность на ту же единицу массива да а потом аккумулятор откуда он берется эмулятор откуда он берется аккумулятором
01:21:12 - 01:22:43
вот у тебя изначальное значение above последующих вызовов какую откуда будет аккумулятор браться с возврата как раз то что возвращает туда вот это возвращать что будет еще раз стрелял сущность правильную а все он должен возвращать каждый раз все сорян тогда смотри у тебя вот это ryterna давай так скажем ликер на аккумуляторы всегда должно быть но можно ли без индекса обойтись просто говорю решение короче правильно я просто говорю что здесь вот можно без индекса обойтись и попросим типа вот так вот
01:22:04 - 01:23:11
рождение так тоже можно давать ну как как бы чисто в теории так тоже можно то есть это сработает но это немножко не очевидно бы в том плане что этот целом подполковника сворачивать да-да-да ну короче просто может быть с этим как делать просто типа тоже у тебя performance будет наград слушают и функцию а вы подожди а как а как ты просто массив элемент добавляешь уж если мутированных типа или да а здесь пусть подойдет или нет да мы же все равно добавляет массе ну да тогда просто скорее к тому что всего в
01:22:36 - 01:23:54
конец добавляет что сетях ну можно через пусть написать я просто попадания грызться за час давай теперь попробуем фильтр сделать написал map а вот фильтр 2 теперь надо вы должно быть по 3 сейчас давай вот допишем что здесь пока фильтр доделать чтобы слизью сумками и таки порту самый call back фильтр тоже со мной как и map он возвращает новый массив поэтому у нас аккумулятором является массив значит что мы делаем сейчас помню чтобы у нас принимает фильтр давай мы здесь тоже переделаем чтобы основа не путался
01:23:20 - 01:24:44
давай сразу просто назовем его обычно предикат название так теперь мы фильтр filtron op понимает слабак и попробуй уж не давай подожди давай попробуем не торопиться не писать а вот чуть вспомнить как работает фильтр то есть что он делает ему принимать своим передать callback и что вот этот callback возвращает сам по себе какой тип значения массив кэшбэк от фильтра бульон по моему да и потом на основе этого булин и по ее потом возвращать бульона на и что на основе этого бульона определяется определяет возвращается ли эта сущность
01:24:10 - 01:25:40
то есть будет ли она пушиться а справедливо справедливо он тогда здесь надо будет [музыка] попробовать теперь осталось нам в голове все сделал и стану как написать привести будет окей смотри у нас должен быть какой-то флаг чтобы мы понимали добавляем ли мы этот элемент или нет он стал если это был этот из-под простить из он как раз так [музыка] оао подожди а при детей то он получается в нем есть проверка он должен [музыка] сразу просто передаем все остальные аргумент ладно давай сам учатся рэм индекс а кстати тоже да да да но но
01:25:10 - 01:27:09
это приморская сказать не костенко плане все функции там евреи сам то есть они будут но один на одно лицо как говорится уж если так мы вам подожди а все это верно и возвращаем здесь ладно ukit так тоже сюда написал нет нет нет не все написал если здесь не вызов этой функции здесь вот так вот он должен карт типа засунуть ее в общем фильтр он оставляет неизменяемым сущности просто у них фильтрует поэтому здесь не нужно вызывать вот так руки да все правильно да все правильно и так давай короче у нас все никак отыскать последняя задачка
01:26:16 - 01:28:03
вот знай же функцию коррида который из этого функционального программирования нет покажи давай что она делается то есть она как раз курирует функцию да то есть например три аргумента она вызывает то есть ну можно вызвать вот так вот да то есть по одному передавали на будем взрывать функции пока ты все аргументами передашь вот перейдешь на сразу два аргумента у тебя на возвращает функций который один аргумент принимает и когда туже этот аргумент передаешь ну то есть короче если все упростить она тебе возвращает
01:27:17 - 01:28:23
функцию пока ты не передавшие аргументы вот то есть это как раз просто такое как искать такая утилитка которая упрощает курирование чтобы самому то знать под каждый кейс вот так вот не писать поэтому короче понял до чего ну почти исчез по ходу разберемся так почему она кодирует мне надо написать функцию какую вот эту функцию гарри тогда придется разбирать чем дело и токио на ее можно вызывать смотри давно правду мента принимает ну то есть разную функцию да обожди другую функцию то есть кори он принимает функцию и то
01:27:55 - 01:29:19
есть возвращать карьеру эту функцию то есть карьера wanna функция ну это по сути то в которой можно аргументы частично передавать то есть и передал один аргумент и и вот вещь то есть ты можешь потом сразу два передать можешь по частям вот передавать он принимает функция я давай сразу код написать давай попробуем сначала вот полностью разобраться разбить и потом как бы уже начать писать что здесь торопился из-за этого как бы этот давай вот сначала попробуем просто какое-то словах обсудить как это делать
01:28:50 - 01:29:54
и потом уже попробуем кода написать вот давай сначала ну то есть в целом потому как оно работает те же все понятно да или есть еще вопрос нет я немножко путаюсь в том что она вот-вот смотри получается у нас этом цвет который имеет три аргумента и возвращает результат заменить инструмент кори принимают эту функцию от так и возвращают и возвращает функцию которую можно а то есть можно в которую можно каким удобным образом передать эти все три аргумента типа да да да то есть смотри обычно как делать в чем прикол
01:29:22 - 01:30:39
кодированием например мне кажется так например там делать например короче прямо вот такую сделать функцию например которая принимает например сначала mapper до какой-то и потом уже там и рейда клей ты сделал фактуру стрим маркер все не короче сейчас созваниваетесь скорее вот вот представь что у вас есть такая функция ритер ничего на будет дано вас будет вызывать пассив маг и марта и например я из неё могу что создание могу например создать там например тут reanimator до стрима перья передам чего сюда я передам
01:30:05 - 01:31:39
и маркер передам string вот и например потом я уже стриг mapper могу использовать вот уже сюда носить передать дано превратить 23 у меня по итогу на выходе будет один короче понял до 2 и 3 т.к. в конке есть это полезно то сюда какари функций чтобы например при сейчас 3 аргумента и я на правки в такие смогу захотеть сразу сразу передать данный аргумент у сердца хочу передать мапперы сразу же массив и чтобы мне результат вернулся сразу все аргументы есть я хочу чтобы можно было сразу снова сильно видать да
01:30:52 - 01:32:06
мне нужно чтобы то есть у меня есть значение могу сразу передать какие-то нету вот каких то это удобность это неудобно то есть и как бы карим он в этом плане может очень удобно быть чтобы тебе как бы не приходилось заморачиваться понял вот по потому что вы каждый раз ему такие вот функции писать было бы неплохо если бы я эту функцию кори использован по работе чтобы щас про маленький вспомнил науки этого попробуем то есть кориана что не вот она возвращает во-первых функцию и она каким-то образом понимает сколько
01:31:32 - 01:32:41
это фон она знает чайка эту функцию то функции есть какие-то двое мне даже давай-давай-давай падай вот давай не думать пока технической реализации вообще давай вот просто на слово охот ну как как ты это вообще сам руками не руками ну давай просто псевдокода просто поговорим как ну какой алгоритм действий у нас будет и потом если кто-то здесь просто один момент есть такая одна фишка которую ну ты можешь не знать это есть как бы этот она в целом не важно это . google янгом решается быстром давай просто попробуем вот алгоритм действий
01:32:07 - 01:33:06
проговорить и потом уже приступим к написанию то есть в первую очередь что вам нужно понять что она возвращает имя что сколько аргументов там то есть ну то есть получается возвращает кори функцию других да да да но при этом должно понимать сколько там аргументов или все таки да да да да полюбому дозу ну то есть ты знаешь как это делать или нет просто вот как раз этот и является ключевой момент есть не значит и сразу скажу и потом ждем арестом просто эти документы тип взять но не совсем совсем ну вот а ты
01:32:37 - 01:33:48
принимаешь функцию вот сюда придет это нам нужно понять сколько у нее аргументов есть массив по моему аркас который приходит марганец не совсем аргумент функции кори будет ну короче у функции есть такое свойство length и она говорит о том сколько у функции аргументов вот чего ну вот если ты вызовешь давайте же я думаю не столько массе ну короче это вот как раз вот эту фишку ключевая вот но типа она как бы решается очень быстро бубен вопрос это сразу на это времени теперь у вас есть три зала герой
01:33:12 - 01:34:25
станцевать посмотришь вот и вот давай знаю это попробую написать тогда получается он должен типа количество но он должен вернуть такое количество функций по сути хотя с другой стороны он же может передать в одну типа два аргумента во вторую 3 ну то есть вот это вариациями но получается мы должны динамически это определять то есть на ходу нет а потом что в руками типа вызывать количество функции вот думаю как вот именно правильно вызывает потому что смотри он возвращается будет функция будет посмотреть точнее fan cooling сейчас
01:33:49 - 01:35:12
подумаю о своей просто сейчас углубляться в технические детали да давай вот попробуем просто вот то есть мы вот смотри вот как ты это руками делал бы да например ну представь что ты там я не знаю сам функция тут просто тебе приходит и создаешь carrera на функцию с тремя аргументами я вызывать и что потом делать с ее если вы звали с одним аргументом что ты делаешь ты что ты возвращаемся и возвращает функцию правильно а если перед или два аргумента что делаешь разрушая функцию которая возвращает функцию
01:34:32 - 01:35:45
обязательно ли тебе каждый раз возвращать набор функций ну то есть возвращает функцию который возвращает функцию тебе нужно это ну потому что смотри если передали один аргумент тебе не обязательно ты можешь вернуть функцию да например и в нее передадут все остальные аргументы правильно ведь до а могут вся сами не периода могут по одному передавать и как можно это определить [музыка] прикольная задачи то есть если перед нами просто вот самое что смущает ты распределил их так что ты можешь передать типа
01:35:16 - 01:36:37
кодирования тут тремя аргументами можете по сначала вызвать по 2 потом три ну по большому счету в обоих случае а во всех случаях ты возвращаешь функцию но дальше но сейчас какую-то проблему видишь давай скажем так вот только про подруг основная проблема в том что во первых ты же должен возвращать типа это понимаю результат или я просто немножко путаю уже с этим с [музыка] с компасом то есть ты не должен возвращать получается результат предыдущей функции должен просто возвращать функции разбросанные по ну да здесь не знаете
01:35:58 - 01:37:28
как алгоритмическая как на самом деле то есть ты должен как-то распределить ну то есть посмотреть сколько аргументов принимает функция потому что я же правильно взял the feelings он берет свою жопу да да да так и тогда если ты передаешь и ты здесь допустим три аргумента и он должен вернуть [музыка] функцию которая вызовет эту функцию типа кладовая по кейсам писать давай просто вот этот кейс начала рассмотрим как надо писать что будут кейс только работал давай то есть у нас есть три аргумента мы делаем а
01:36:46 - 01:38:09
где есть аргументы которые получаем включается сюда что-ли получать переживается этими аргумент на досок с одним один передастся да только 1 берешь так [музыка] так это сделал весь с тремя а если нам передали вот как раз типа а подожди то здесь надо проверить соответствие фанк likes и и количество аргументов получается да типа то есть тогда если мы проверим если оно будет меньше то мы будем возвращать функцию типа x меньше или равно наверное или равно что когда просто возвращает функцию его выложить выполнению то есть 0 и если
01:37:36 - 01:39:29
у нас передано меньше аргументов чем в принципе функции содержит то мы возвращаем [музыка] [музыка] возвращаем получается сейчас и вот сюда с поэтому что это зеланда варки сначала запишем вот вот этот а потом кайф вернемся сейчас секундочку буквально буквально возвращает 0 ну короче все я запутался повреждений давай вода 100 вот этот кейс начала запишем вот чтобы она столько вот это работало а вот я их не удаляя не ну короче ланда за камень давай вот вот этот опишем кейс ещё здесь сделать натану iv оставь подожди вот вот здесь
01:38:57 - 01:40:15
вот еще у нас сделано по старинке сначала работал [музыка] так по друзья нам нужно это проверка или нет если мы здесь знаю что арксинус это меньше типы чем facts and значит сюда вам придет в ком кейси но она если больше прилету отбрось это просто вот и мишне ну вот сейчас у нас работает этот кейс или нет давай планируем его как видишь у вас ошибка стоит сохраняем сейчас ошибки нету ну вот этого я поведу [музыка] работать или нет он define the какие то почему он возвращает функцию то есть такой что он улетел обратно
01:39:59 - 01:41:35
раздавать назван давай над мнение зацикленное для меня не нужно окей смотри давай теперь мы идем сюда да вот теперь какое у нас кейси есть ты хочешь ну давай просто фишка это включает скажи какие мысли то есть сейчас на данный момент мысли такие что если тебя мы мысли вообще уйти в небольшую рекурсию не знаю то есть если у тебя аргументов меньше 5 на чем длины то ты берешь эту функцию вызываешь текущими аргументами из и возвращаешь функцию которая берет остаточные аргументы то есть остальные но при этом оно тоже внутри себя должна
01:41:04 - 01:42:21
проверять как бы в селе потому что это же можно раздробить еще до на несколько да такое ощущение как будто оно должно уйти немножко в рекурсию и проверить все типы в ну каждый случай пока до тех пор то еду нужен базовый случай пока аргумент они будут типа равны fangs врачу ok а теперь смотри то есть еще раз у тебя сейчас ну окей от давай попробуем описать это то есть виде все-таки проблемах чтобы это написать рекурсия теперь напишем вот опять таки эти годы проблемы проблемы увижу написать это без
01:41:43 - 01:42:57
рекурсии на самом деле потому что я так понимаю это можно как-то итеративно сделать давайте нам подсказку в курсе здесь точно нужно а точно нужно ну тогда давай в каком плане даже рекурсивная функция саму себя вызывает ну короче ладно но я ведь все-таки можем базовый во-первых случай который он выйдет [музыка] подождал нас сейчас есть базовый случай или нету ну вот лан лан довольно удобно типы между базовым случае он просто вернет а если нет он вернет функцию вот как понять что ты ж не знаешь то что
01:42:23 - 01:43:52
смотрела на давай водопад просто давай в идеале что могут здесь должны делать просто расскажи в идеале как что мы должны сделать мы должны остаточные аргументы получить типы до получай по их потом что сделать из моей вернуть что получается есть мы должны вернуть во-первых в первую очередь что вернуть функцию правильно да и сейчас возвращаешь не функции ты сейчас возвращаешь ну результат это уже не правильно нужно вернуть окей и что вам нужно сделать то есть вот здесь внутри этой функции вот тут вот
01:43:10 - 01:44:21
нам нужно получается каким-то образом получить достаточные аргументы я просто не знал вас по времени то есть в целом как ты хочешь добивать или про давай добьем я так понимаю что типа [музыка] ну взять как раз иной метод сласти повязать и закинуть туда clinkz и и тогда от него как раз на счета at our clients + 1 грубо говоря я от него получить достаточный аргумент этот тип того то есть у меня в голове все вертится но если честно я уже вот смотри смотри смотри подожди вот эти вот смотри давай вот рассмотрим теперь мы один кейс
01:43:48 - 01:44:58
рассмотрели давай все остальное уберем и оставим также пинча делают и оставим еще вот этот кейс вот у нас есть кейс смотри мы принимаем сначала один аргумент и потом и принимаю все остальные то есть в таком кейсе как ты опишешь функций давай вот просто сделаем что нам нужно либо вот так и было так ну и сразу же вот это вот одно и то же короче что и вот они вот этот вот вот да вот эти два кейса теперь рассмотрим что у нас вот ну то есть по сути в двухуровневые carrera вани я понял то есть это максим только два
01:44:23 - 01:45:34
уровня может быть как ты сделать это как раз здесь возвращает уже [музыка] с аргументами но у тебя проблема в названии во первых все становимся рк сумму тебе works 2 напиши ну короче без разницы ok а все ли ты аргументы передал вот сюда функцию рассмотрим пришли сначала два аргумента потом один [музыка] нет не все только хотел чтоб все передались 12 ну вернуть еще одну и минаев не подожди-подожди-подожди почему так она же принимает аргументы ну она же вызывает типа ее как колерованную часто на собеседовании сказал бы все
01:45:00 - 01:46:55
спасибо ну просто указатель на и поэтому я такой типа и же думаю над этим потому что вот смотри смотри просто блин ты как отскакивать а вот и вокруг да около хотите сфокусироваться просто нужен смотри вот у нас есть вот этот кейс это кейс это сразу все аргументы передали смотри вот вот у нас функция take a ride это вот она мы принимаем какой-то какие-то какое-то количество аргументов то есть в данном случае это 1 2 3 да а в данном случае это 12 достигать 100 12 пришло отсюда знать еще приходит вот в
01:46:20 - 01:47:17
этом кейсе 33 ok а ты вызываешь функцию что-то было передаешь а [музыка] значит и что надо передать еще помимо 3 и все [музыка] [музыка] окей вот теперь у нас кейсы работает правильно который давай я просто все четыре твоих кейса вот так вот и пишут не они не а это я просто добавлю аргументы как не будет работать вот ok а теперь смотрите что мы здесь по сути сделали то есть вот это 5 объясню а вот давай теперь ландыш моментов что вот эти разрабов работают давай посмотрим но по идее должны работать короче вот ну давай
01:46:49 - 01:48:13
сразу видим что ему нечего ну блин короче он ругается что органов использовал но это источники ключевое слово все же историю короче щас теперь все работает у нас три раза 6 выводятся в консоль все вот это мы сделали правильно то мы так напишем окей теперь смотри у нас может быть кейс у вас три у нас может быть 4 да то есть а вот как это можно реализовать нового собственно чуть то есть через вот как ты говорил то есть повторные вызовы да через рекурсию пусть у нас ведь у нас уже ведь есть те езда который проверяет что все аргументы
01:47:43 - 01:48:56
неправильно ведь сразу же есть вот базовый this data стёпа если аргументы с нужное количество передано значит вот все есть да верному тут ли нужно заранее [музыка] разные днях то есть ты копируешь как раз по одному уровню то есть какари каждый раз на 1 уровень вызывается и потом у тебя создается новая карьера ваная функция то есть по сути не я не знаю честно многие ладно давай я тебе просто скажу это если просидел нибудь задать что символ так далее по консоль сейчас не приходит внутри как должно
01:48:25 - 01:49:46
быть по идее во первых вот сюда должна передаваться ланса по дефолту вопрос сейчас прочего это пишу и поймешь в чем и история так весь сценарий будет принимать а за форекс и здесь будет пранк получается и сначала просто арка еще такое будет и сюда надо передать [музыка] . так и flame смесь чем likes так по идее поидее сейчас должно под удар заверен как слоган совы . четыре раза ну короче как видишь работать в чем логика получается то что ты копируешь следующий раз функцию который ты возвращаешь просто ты передаешь
01:49:14 - 01:51:10
оставшееся количество то есть мы сначала carrera вали на 3 до а потом ты к режущим на 2 понял то есть и передали еще два аргумента декорирует на один просто ей длину передаешь каждый раз и все как бы прикольно просто проблема в том что еще вот такой момент есть как из при этом ssd аргументы function makes быть 0 то есть но это такая как тобой момент который стать надо поэтому здесь важно будет передавать через аргумент между радости просто и каждый раз вызываешь заново карие горишь сколько аргументов
01:50:29 - 01:51:31
осталось начале нужно три аргумента предпринять понял если есть эти три аргумента пришел ты возвращаешь а иначе ты возвращаешь опять карьеру иную функцию которую нужно два аргумента принять понял то есть если пеленали один аргумент и опять вернешь карьеру и функций который нужен один аргумент еще получить то есть ну как бы таковой к идет о кей но все туда на этому вообще по совету все вот в целом как как адская как такой заключая в целом я на самом деле довольно таки понравилась вроде то есть ну понятное дело что здесь были
01:51:00 - 01:51:56
моменты которые такие тип stabby скриптом даты как говорил что много при особо не работал вот но я просто думал на самом деле что получше получится вот но с другой стороны в кито других моментах однако с этого разбирались тайм-аут от лупами прямо как бы нормально отвечал поэтому тоже додумался то есть многие на самом деле правду фишку с рифами вообще не знают вот то есть и как бы ну вообще даже часто бывает то что вижу что вот просто знаешь как этот как здесь как for sale dvd прокидывать вот там к 1 review смотрю
01:51:33 - 01:52:33
так что это хорошо вот здесь тоже хорошо что узнал то есть как бы знаешь типа видно что база есть но вот именно по таким задачам scary то есть скорее нужно мне кажется потренироваться именно разбивать на части задачу да и как бы немножко набивать надо просто эта задача не продуктовый то есть тут понимаешь то есть они же не пишутся то есть такое используется как правило готовы поэтому над немножко набивать руку над а вот допустим ван клайс да если ты мне сейчас не пуска откуда я бы это вообще узнал ну
01:52:03 - 01:53:04
да но это скорее не руку набивать такое за ты за гуглишь быстро и просто горели скорее скорее говорю ты спиндэша корея популярная функция да и ты скорее всего и решения нашел бы ее вот но я говорю что просто в целом например как бы этот как его по частям вот разбить ее как бы это реализовать то есть в кольта ну то есть здесь да здесь два аспекта есть руку напевать чтобы знать проблему и как ее решаются на решение для стандартных для нее и второе просто умение развить тоже ты порой бывает ну у меня тоже
01:52:33 - 01:53:28
такая проблема была то есть сейчас как бы этот как его и я вот как раз работала дней то есть довольно таки долго и то что ты начинаешь сразу идти идти идти а если чуть-чуть подумаешь тысячи разобьешь но и такое кино детали тогда все проще получается изначально подумав немножко до туда можно сразу намного более как быстро решение написать то есть ну короче то есть вначале просто весь план продумать ее просто понять как ты это делал бы знаешь вот как хороший пример есть горят как ты руками это делал бы надуть представь что там фото
01:53:01 - 01:54:01
коробки собрать дайте там курьеров привозите может три курьера прийти 2 ну то есть как бы и ну то есть это как бы такой пример сейчас да ну вот когда ты так раскладываешь и тогда уже давно остается только то что было то тут все так он как будто перевести в [музыка] порту здесь просто какой-то паттерн знать вот а в остальном как бы установка его никаких сложностей с такими задачами ну суши все туда спасибо тебе большое вот все туда ребят всем спасибо за просмотр если есть как все-таки пожеланий идеи вот вопросы к мурат
01:53:31 - 01:54:40
исходить чтобы щеки то собеса засняли обязательно пишите в комментариях всем спасибо за просмотр всем пока
01:54:07 - 01:54:20