Подготовка к собеседованию на Node.js 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 каналы и чаты
Транскрипция видео:
привет пожалуйста и в общем я начну задавайте вопросы меня зовут никита я работаю в компании обрела ночь с разработчиком ну про меня про моей рабочей опыт вообще опыта коммерческого у меня уже под четыре года получается на ноги интереснее всего создавать разные сложные системы продумывать грамотно абстракции чтобы было максимально перри использование кода чтобы мои коллеги и моим коллегам не нужно было задумываться ни о чем кроме написания бизнес логики на тех абстракция которые уже были созданы до них
00:00:00 - 00:01:38
окей может быть может быть ты вкратце скажешь что кроме ноды и кроме java script а ты еще когда-либо писал может быть причем такой есть коммерческого вот непосредственно того за чтобы деньги платили у меня кроме надо ни было но так для себя легче сказать наверно начнем я не писал потому что принципе даже на код ли не когда ты написал полноценное мобильное приложение под android но плюсы на плюсах много писал еще студенческое время python тоже самое многофункциональных языков попробовал хаски лист
00:00:54 - 00:02:22
на листе даже sub1 написал но точно что-то забыл не пробовал не пробовал свифт не пробовала к сожалению большому не пробовал этот как он называется новый аналог плюсов раз про просто не пробовал но обязательно еще попробую это в планах есть просто не успел еще да ну java совсем чуть-чуть а сишарп тоже не пробовал в принципе кругозор достаточно широкий и давай тогда начинаем по ноги в общем то смотри у нас основная идея появления появления но должно же быть какая-то вот основная вещь и сочи из-за
00:01:40 - 00:03:22
чего он вообще смог завоевать рынок быть выйти в народ и приносить пользу какая была основная идея и и что было до этого что послужило причиной появления думаю что основная идея как и основной плюс сейчас это возможность разработки на одном языке и б к и фонтан перетянуть набег а тот же язык чтобы создать такое понятие как разработчик которая может писать на одном языке группы говоря все абстракции в принципе с фронта сейчас активно переносится на ногу и я думаю что это была основная идея да конечно
00:02:39 - 00:04:13
отличное направлении а вот эта идея была такая организационно-технологическая какие несколько основных идей легли в основу в техническую основу создания но у джеймса возможно там вкратце расскажешь из каких компонентов состоит сам runtime что объединилась чтобы сделать это платформе но разница нужно наверное начать с разницы с как по мне с основным конкурентом надо как минимум в начале это пыхой появляется у нас в в полном смысле этого слова мульти поточной да то есть на каждый запрос у нас новый поток создается а
00:03:26 - 00:05:09
надо принято считать что она одна поточная но мы знаем конечно там есть red bull но он недоступен для прикладного программиста но тем не менее под каждый запрос новый поток не создается основной процесс а если мы используем печь певцы и в принципе можно сделать так чтобы однажды запущенной об их а просто получала от apache она отдельно standalone запущенный к ней приходят запросы ну вообще там процессная модель не поточная процессная модель вообще идея правильная постоянно она запускается выходит запускается выходит
00:04:19 - 00:05:45
это огромные накладные расходы а в ноги давно у нас один поток грубо говоря основной поток один в котором выполняется все запросы через асинхронную модель которая управляет лебофф на бекки а на фронте у нас есть event что-то там библиотека какая-то я забыл но там что-то с ивентами связано библиотека . liebe либо это просто session а я библиотека которая управляет эта синхронной моделью в ней крутятся вот этот вот и вот лупа со всеми очередями этими и соответственно он уже управляет асинхронной модели также есть
00:05:01 - 00:06:41
443 до в которых выполняются там разные операции криптографии там dns что еще там zlib например то есть но в принципе к ним доступа из java script а у нас нет в них в основном происходит происходит управление операциями ввода-вывода и взаимодействие с операционной системой так ну а в user ланди у нас какие есть возможности по параллельности и в общем распараллеливание исполнение кода но распараллеливания как такое в принципе было всегда просто на основе процесс мульти процессор в мульте процессов да
00:05:51 - 00:07:29
на основе там кластера и процесса ну понятно что там были проблемы с этим в чем разница между кластером учил процессом так не забудь вкратце кластеры child просто с разница в том что кластер там разница в сокетах то есть класс стр больше подходит под создание мульти кластерного о спиде мульти процесс ого-го http сервиса потому что он автоматически проще там открывается грубо говоря один сервак и автоматически сокеты разбрасываются по всем по каждому из кластеров я правильно на прослушивание на прослушивание где находится
00:06:40 - 00:08:15
этот мастере в мастере когда мы на базе кластера делаем то у нас buy ant на порт типичный происходит в мастере а каким образом обработка перелазит на эти child маркеры в кластере как это в коде должно быть или как это делать но да вообще как бы по какому принципу вообще может быть распределение вот мы сделали один мастер и 10 этих child of вот как будут распределяться сокеты которые открываются клиентские соки ты уже скоро android да да да то есть они распределяются через round robin но мы можем это как-то переписать иначе
00:07:27 - 00:09:14
да насколько я помню я это когда-то писал конечно там несколько лет назад я там ну можно задать функцию насколько я знаю какой покой worker thread какой socket попадет если я не ошибаюсь в процессах это вообще иначе создается там каждый сервер открывается в отдельном этом самом а вот в кластере да по-моему там можно как задать так давай теперь наверное немножечко по поводу взаимодействия ноды с базами данных что ты используешь для работы с базами до базы данных на спуск race driver п-п-понятно мы может быть кроме пусть gresso еще
00:08:21 - 00:10:14
что-нибудь использовал там редис не знаю а конечно мы используем reddy's тоже то есть рядом с пу стрессом но если говорить реляционную базу да ну то есть среди сам там в принципе все понятно там просто есть драйвер редиса на основе которого там у нас есть свои абстракции мы с ними работаем непосредственно вот на таком уровне с прогрессом понятно там уже посложнее то есть мы начали с того что я взял type вот на этом проекте да ну где я уже закладывал архитектуру с нуля вот сначала в самом начале мы взяли
00:09:18 - 00:10:28
type r m но мне сразу оно не понравилось то есть там столько было проблем что я просто понял что в какой-то момент ведется 1 какому-то отдельному человеку чисто сопровождать это арам поэтому я начал искать варианты а сначала хотел просто вернуться на уровень книг со и написать свои абстракции какие-то для этого но там нашел призму это как они называют пост р-н то есть она как бы это не совсем играем вообще в теоретическом смысле этого слова то есть да то есть там ну ты знаешь да призму конечно да да
00:09:52 - 00:11:17
знаешь окей ну то есть вот мы используем призму мы полностью довольны она а почему of tanks и не понравилось интересности не понравилось ну смотри мы то есть понятно что что knicks что призма они на самом деле то есть довольно схожи но поддержка как никто пока что в typescript и довольно низкая и далеко не так круто типы ну young разрешаются типы короче вас вашими возвращаемых значений в комиксе просто этого тут вопрос текущего состояния дел удобнее писать схемы да ты имеешь ввиду схема на приз 3 сми да
00:10:36 - 00:12:01
вот в этом синации но это не очень удобно то есть было бы удобнее чтобы ну не было я вообще не понял зачем понял почему им не подошел и не знаю но джейсон или или java script просто на там есть очень нужна проблем я тоже хотела это разрабатывать почему бы не сделать свой язык класс мы сделаем свой синтаксис и вызываем интерпретировать свой язык программирования давно я хотел им сделать эшу но понял что учитывая что это довольно много функционала им нужно будет давать я покажу этого не сделал им очень вот не
00:11:20 - 00:12:40
хватает во всей этой схеме каких-то аналогах какого то хотя бы декораторов для полей то есть вот у нас допустим есть в нашем проекте джейсон поля в разных сущностях которые являются платформа зависимыми и мы бы хотели автоматический ва лидировать эти поля джейсон поля при вставке в и получение с базы данных то есть мы не можем их одной девушкой описать там целый класс до того для каждого из этих полей и фронтами должен должна выбраться конкретное dt у нас есть тоже абстракции разные для для автомате полуавтоматической болидов но
00:12:03 - 00:13:24
мы бы хотели прямо на уровне схемы это задать то есть задать какую-то функцию и передать в эту функцию вот эти вот типы ну а как это можно сделать если там во первых нет декораторов как таковых а даже если они добавят вряд ли там будет поддержка java-script а ok в общем да по поводу еще метаданных где-то еще используешь проектах метаданных возможно нади корректорах возможно просто формируя какие-то свои структуры виде там хочет его скриптовых структуру или же значит в каком-то своем синтаксисе возможно в общем лишь во многих проектах
00:12:43 - 00:14:07
скажем так глубоко и долго развивающихся всегда появляется или свой язык или свой формат метаданных чтобы можно было задача декларативной описывает выступаешь да я все все что только можно я стараюсь описывать декларативно для этого понятно нужно создавать напрасных абстракцию нас есть целый набор таких мест допустим самый банальный это синтаксис описания перми shinoda то есть у нас на каждом and puente контроллерах есть возможность через декоратор permissions задать перми шин и там ну то есть целая логика задания вот
00:13:27 - 00:14:54
метаданных по перми шинам то есть это грубо говоря похоже на то как у тебя раньше была устроена структура в мид осинки то есть и по если два если два массива вложенных это типа параллельно или наоборот и если один массив то это типа последовательно у нас то же самое то есть это может в перми шин передать массив любой вложенности и ну да любой вложенности то есть и зависимости от этого разные комбинации перемещена в допустим если мы хотим чтобы на для этого контроллера пользователь мог зайти если у него есть
00:14:11 - 00:15:29
бар mesh in a или b и если б ты еще всегда c то это задается просто массив 1а , массив bc или сделал массива на не или но поговорят то есть вот таких это их место очень много то есть есть по коду для валидации декораторов и для валидации детей все дети у нас вернее все входящие параметры у нас во лидируют автоматически для этого тоже мы используем декораторы знаешь гадко для течка класс валидатор она меня не очень радует но тем не менее альтернативы нет поэтому на основе валидаторов класс валидатор
00:14:49 - 00:16:20
библиотеки мы создали свои валидаторы ещё более высокоуровневые более таки уже проверенное временем скажем так то есть вот мы их используем для валидации входящих параметров на основе данного а может быть где-то у вас используется куда генерации кода генерации нет но codegen призма использует куда генерацию дааа но мы к дегенерации нет окей теперь значит какие у нас есть системой модульности и в чем их разница какие вот ноги используются кент на фронте возможно их как-то можно совмещать какие здесь проблемы может быть ты сталкивался
00:15:38 - 00:17:15
ну да то есть когда ну да появилась появились соответственно khaman модули команды отдали но там проблем очень много было они не сразу проявились но со временем то есть стало понятно что рассказать проблемы да там и модулей ну да да да хорошо у нас reg'lar это просто функция которая может быть грубо говоря в любом месте в коде да и ну то есть просто вот если допустим на batman просто загружаем все зависимости да то мы должны просто вот как сказать подходим у нас есть там список зависимости на бекки да и если мы для какого-то файла
00:16:29 - 00:18:19
пишем рак lair где-то там глубине файла и еще допустим как-то вычисляем этот давай пример приведу вот я приведу его а когда то вот на для призма да есть иммиграции как для типичной рынке но не было при этом миграции видами то есть следы но в типичном понимании этого слова да то есть это какие-то тестовые данные но мы следы использовали для того чтобы заносить в базу данных системную информацию например список ролей список кормишина да допустим там несколько системных юзеров которые являются по сути рут системными сервисными ролями
00:17:27 - 00:18:48
для этого использовать использовали сиды то есть сид это просто ds файл в котором через клиент при этом идет работа с со вставкой данных так вот не было такой возможности чтобы следы тоже были иерархическими чтобы их можно было создавать со временем то есть мог быть только один сет файл до которой призма запускает нельзя было там через месяц допустим сделать креатив и записать новую новый сид как новую миграцию поэтому я написал библиотечку которая также как и призма и просто делает сиды иерархическими и к сожалению в этой
00:18:08 - 00:19:27
то есть базовая версия этой библиотеке работала таким образом что эквайер получал через ред дир список файлов в папочке с седыми и соответственно рик верил их динамически и соответственно ним нельзя было понять какие именно файлы нужны для того чтобы разрешить зависимости вот данного файла от системного с видами вот та же самая проблема в принципе наблюдается и с в обычном коде то есть когда просто рекламе может быть в любом месте в ходе его входные параметры могут быть вычислимыми и соответственно нельзя
00:18:49 - 00:20:09
создать как это называется ну то есть скомпилированные и код который в котором будут все необходимые зависимости поэтому нужно совать все зависимости импорт а то есть новое ну не новое уже старая логика с импортом и она заставляет разработчиков писать импорт и в определенном месте в коде и при этом ну импорт можно и середине фрейлина можно середине это ты про динамически импорта говоришь да динамически импорт можно но вот главное на самом деле не это главное то что импорте и экспорте они позволяют не
00:19:29 - 00:20:54
выполняя файл четко понять что экспортируется импортируется в а какая существенно есть разница между динамическим импортом и рыхлой и рам середине файла так функция эквайер возвращает хорошо да функция reg'lar возвращает а все я понял да функция эквайер является синхронной правильно то есть поэтому мы должны ждать дождаться ее выполнение законопатили функция recall блокирующая и и единственная такая штука что конечно она может быстро исполняться из-за кеша то есть оно не сильно надолго заблокируют
00:20:12 - 00:21:32
если она второй раз исполнено дана новая хорошим да я могу им part of у импорта в динамических есть некоторые проблемы по поводу кеша может быть с этим сталкивался с динамическими импортом я вообще один раз в жизни сталкивался как раз таки в этих средах но это возможно то есть прийти к этому если ты не знаешь о смотри нет наверное нет я в двух словах скажу что вообще у обычных импорт of и у обычных рекламе raw общей кэш а у динамических импорта в отдельный кошек никто не знает почему это скорее всего
00:20:59 - 00:22:40
баг или так потом давай наверное по внедрению зависимости и по формированию зацепления модулей вот мы имеем какую-то там структуру которая выражается в виде папок файлов и там классов и экспортируемых каких-то объектов экспортируемых классов интерфейсом и всего такого как вот удобнее всего и и грамотнее всего зацепить все это при старте приложения чтобы нужной зависимости про бросились нужные места у нас вот есть такие принципы как чистая архитектура де де де возможно вы скорее всего строить и какую-то
00:21:50 - 00:23:40
архитектура приложения может быть ты best practice и поэтому расскажешь но тут я могу говорить очень долго на самом деле то есть у меня лучше останавливаясь лет конечно нет а ухожу ну мы стараемся использовать д д д то есть конечно мы его низ и не используем в полном смысле этого слова двух словах допустим у нас есть свой словарик лучших практиков виде дни что если говорить про модули то для начала такое основное правило которое лично я всегда стараюсь придерживаться это разделять файлы и всю логику не по
00:22:45 - 00:24:09
не по функциональности опахи чан то есть допустим если есть выбор создать папку грубо говоря контроллер services и модель из то это плохой вариант если можно если вместо этого можно создать фича 12 фича 3 и в каждой из этих папок будет один контроллер один модуль 1 series это такое базовое правило то есть тут по многим причинам так лучше делать так да я согласен конечно что так лучше но вообще меня раздражает огромное количество власти buller plate это нужно постоянно писать и сервисы контроллер
00:23:26 - 00:24:45
все это вместе в общем мне кажется что это куча обвязки а нужно все-таки чтобы было только бизнес-логика нет мне на самом деле нравится как ну вот компрессии это реализовано то есть ну понятно что возможно не всем не все смогут контролировать до поведение допустим как это в им прессе сделано через папки то есть это на самом деле прикольно то есть там если я неправ то есть я им просто не использовал вроде как ты понимаешь вот если я не прав поправьте там контроллеры куба говоря пути к and plain там это название папок файловой системы
00:24:06 - 00:25:27
правильно ну если мы говорим про внешний api до внешней api do not это прикольно то есть там грубо говоря не нужно создавать там свои контроллеры в которых описывать все пути ну да я согласен то есть много много было ли это еще связано с моделями в на стену и если тебе нужно что-то вып на уровне контроллера перед перехватить то там есть специальные интерфейсы которые можно реализовать и практически сделать ну что-то типа хуков если все-таки на уровне на уровне контроллера тебе нужно больше больше управление ситуации чем тебе дает
00:24:46 - 00:26:04
просто вот положить intent какой то ты все равно можешь это сделать тот же настолько с возможностью не писать google плейт да да да но как бы такое же разделение есть вот у тебя есть отдельный and point описанный и ты если очень простое api ты можешь прям в нем кусочек бизнес-логики написать если что-то сложно это делаешь отдельно сервис и кончик его отдельно и туда обращаешься вот по поводу сервиса все вот этой вот идей может быть ты подробнее расскажешь да ну грубо говоря контроллер вот в моем
00:25:26 - 00:26:45
понимании должен вызывать один метод сервиса в идеале то есть ну понятно в контроллере не может быть бизнес логики но даже вызвать два метода сервиса как у от этого я уже считаю перебором то есть один метод сервиса под один вызов контроллера а сервис это уже грубо говоря место где сконцентрирована бизнес-логика в сервисе желательно чтобы у нас не было таких вещей как там и обращения к каким-то криптографическим функциям то есть вот это все есть свои сервисы которые вот лично у меня в проекте лежат в специальные папочки
00:26:07 - 00:27:26
систем это папка в которой собрано такое ни бизнес ни бизнес логическая то есть это разделение приложение на на слои да то есть но если мы говорим про слои там понятно то есть у нас не зная просто об этом никогда не задумывался ну я так понимаю у нас лукавая архитектура проекта нас есть как раз таки вот эта бабочка systems где все кэш база данных криптография ну там много всего то есть http клиент клиент с ошибками валидации и так дальше то есть это все в папочке systems в других сервисах нету даже обращения к
00:26:46 - 00:28:19
этим сервисом то есть ну хорошо к криптографии есть ну потому что без этого никак ну допустим валидация http ошибки они сами все настроено таким образом что к ним даже не надо обращаться они сами там где надо появляются в сервисе уже просто какая-то бизнес-логика что-то посчитать безопасно положить куда-то опять таки используя сервисы по работе с то есть следующий слой на там с базами данных например ну то есть вот так ну так окей а может быть даже нибудь рассказываешь расскажет про сетевые протоколы и взаимодействия в
00:27:37 - 00:29:04
вашей описки с frontend давай частью возможно я по нему наверное фронтэнда мне занимаешься или занимаемся но в любом случае как происходит с ними взаимодействия во первых взаимодействия на организационном уровне что вы выдаете swagger вы даете ли вы так как они интегрируются спокойно и какие протоколы какие форматы данных как вы передаете им документацию возможно есть какие-то значит инструкции и координация как проходит потому что это у вас две разные команды или у вас есть разработчики который 1 новый томатный
00:28:22 - 00:29:49
там у нас разные люди то есть у нас нету fools так разработчиков но тем не менее мы все еще одна команда вот оки хорошо я понял вопрос я расскажу если ты непротив про то как есть сейчас потому что реалии диктуют свои условия то как я хочу сделать в будущем как работает сейчас да у нас есть swagger но я настроил максимальное количество плагинов и всего что можно было так чтобы swagger полностью автоматически строил доку на основе типов в intent в этих ванкоин когда то есть request a response даже можете
00:29:09 - 00:30:37
рассказать помните рассказывал про платформа зависимые поля такая довольно наша концепция вызвано нашим продуктом то есть у нас продукт работает на большое количество рекламных платформ своей звуком stick током с google драйвом и поэтому по сути вся логика она очень зависит от того для каких в каких условиях был вызван тот или иной контроллер соответственно и данные которые передаются тоже были тоже зависят от по сути от того для какой рекламная платформа был вызван контента при этом создавать and point под
00:29:53 - 00:31:06
facebook тик ток и snapchat тоже не хотелось бы поэтому нас and point и на все одни сервисы на все одни но при этом сделано таким образом что ип в типах могут быть полях которые платформа зависимы и даже это вынесено в лагерь но по сути главное правило которое я следует а все что может делать автоматически должно делаться автоматически поэтому пока что есть только swagger есть также пост мой конечно в пост монетам коллекция есть мы и как можем сохраняем или актуальном состоянии я сейчас говорю тогда про документацию а
00:30:30 - 00:31:52
потом про общение но мы хотим я хочу сделать таким образом что будет ты же знаком до сам модулями общее со всей этой логикой сабо долей дедовских напомни у нас нужны пользуюсь на что не знаю как называется этот самом деле такая логика довольно интересно это когда у нас есть несколько microsd микро сервиса в данном случае допустим пускай это будет bk фронт то есть это микро сервиса но это разные репозиторию разницу-то выше разные репозитории или в мины репе вот в этом плане не менее понятно что у нас разные репозитории но
00:31:12 - 00:32:33
при этом разные репозитории хотят использовать некоторые утилитарные допустим класса и одни и те же и можно сделать сам модуль обычную npm библиотеку и нашу или одно из решений а лишь через and film подключить и просто обычные кетовский гидов sku библиотек да да на самом деле есть несколько решений я знаю три решения это вот гид сам модулей через npm это делать но насколько я помню у нас были проблемы именно с тем чтобы сделать npm модуль ну нашим то есть приватным я не помню какие проблемы потому что они защищались by vox и но
00:31:55 - 00:33:26
вот понятно ну вообще-вообще это прекрасно делается что и в git не в npm не публикуем ну или нужно свой приватный npm а можно внутри мне публика и просто забираем сразу mt mt умеет собирать модулей прямо с гитхаба допустим по ключу на тачке генерируешь добавляешь его так же как и включил да ну на самом деле это даже даже лучше чем это модуль и потому что спецам модулями скажем так понял это когда много пакет джейсен файлов в одном проекте все понял то есть о чем речь и как мы хотели использовать то есть у нас
00:32:41 - 00:34:23
на самом деле снт моделями то тоже можно сделать это же прав но в любом случае у нас будет свой отдельный репозиторий в которой будут вынесены все типы это ора квесты и раз пан ци и по сути этот будет создана логика таким образом что невозможно за published в централизованной репозитории пока ты не втянул зависимости с этого репозитория соответственно что фронт что бег не смогут сделать таким образом поменять api чтобы другая сторона об этом не узнала вот какая логика у нас есть проблемы да понятно что мы пытаемся
00:33:34 - 00:34:55
backward compatibility хранить но когда это положено на человеческий фактор все равно рано или поздно случаются багира не придерживаемся да да да ну вот то есть я хочу сделать так чтобы просто нельзя было скомпилировать проект чтобы апина frontier полностью то есть чтобы api на фронте bk это было просто как вызов библиотеки какой-то то есть полностью покрыта все типами и так дальше вот это то к чему мы придем но пока что swagger как бы 15 процентов этого берет на себя просто за счет того что swagger тоже автоматически
00:34:15 - 00:35:29
генерирует документацию и фронт то есть в принципе я перекладываю грубо говоря ответственность на фронт что вот но перед тем как publish it изменения в api посмотрите в spy gear то есть если в лагере что-то не так тот но это ваша ответственность будет грубо говоря вот но когда будет собой далее то выйдет еще лучше да теперь что касается общения с фронтов у нас общение через https есть также были выпсуке ты чуть чуть раньше сейчас они временно отключены потому что мы просто не успели реализовать
00:34:51 - 00:36:08
но распределенные websocket и через редис то есть у нас когда были в пхукет у нас был 1 инстанции сейчас инстанция появилось два и будет расширяться поэтому и просто не успели еще сделать логика архитектуру но ближайшее время мы это добавим ну то есть в потоке там будет все взаимодействие также есть ощущение что рано или поздно мы полностью перейдем на общение по веб соки там потому что зачем хранить 2 транспорта архетипе снова и выпсуке там и по вы пакетом если можно просто топовых соки там все данные отправлять
00:35:32 - 00:36:45
то есть они шли в две стороны еще экономить на установление соединения да да вот правильно то есть поэтому а пока что об этом речь не идет пока что речь идет о том чтобы получить этом просто какие-то апдейты гонять но в будущем да мы перейдем полностью на востоке это скорее всего что еще могут двух словах сказать про граф кир я считаю что это точно тупик ну если честно но я бы кафки никогда не использовал потому что вот это вот логика что по сути мы логику по получению данных полностью на фронт
00:36:09 - 00:37:21
переносим ну ты же знаешь граф это мы абсолютно абсолютно с тобой согласен что это супер вот то есть тут в этом в плане то есть и a6 фронт допустим вот меня вот сюда возникало вопрос такой что если фронт запросит вложенность десятикратной у вложенность сущностей и просто положит камбэк мы тогда что но этаж не может а быть правильно поэтому мы должны как ограничить вложенность возможную сущности а если мы ограничиваем вложенность по сути мы ограничиваем фронт и ничего не выигрываем то есть мы добавили какой-то супер сложное решение
00:36:46 - 00:38:13
ну супер сложная относительном смысле этого слова просто heart attack какое-то решение которое при этом все равно является ограниченным ну то есть не вот такое очень не нравится или все или ничего тогда вот если спать и зависимости вот поэтому правки или нет рпц тоже хороший вариант но мы пока не используем потому что с рпц ну там рпц то же самое что призма то есть нужно писать в своем языке описания структур и почему-то для не станет герпесе допрашивает джейсон рпц там нет никакого своего языка наверняка
00:37:32 - 00:38:54
можно джейсон апельсина в любом случае нужно писать в отдельном месте описывать ну то есть тут проблема не в том что отдельный синтаксис отдельный синтаксиса просто как усугубляющим фактором даже если был бы джейсон все равно нужно отдельно помимо того что ты описываешь типы типы ты описываешь тебе нужно исчезнуть вот этот файлик почему-то вот для настанет авто генерации этого файлика по что меня удивило вот это вот поэтому пока что рпц нет а вот в пакеты и https да то есть для описания контрактов api нельзя
00:38:15 - 00:39:25
использовать нормально типы которые у тебя в бизнес логики не за но для и открыто в мид архи и все это можно одна система типов ты и из них черпаешь имена типов как для описания базы так и для подписания контрактов и я поняла в принципе что делая что ну потому что я что же по сути кто-то был в мид архип как бы понимаю к чему все идет ну вот как бы пока что вот вместе мы используем с древности к сожалению очень многого из того что будет в мид архи нету предвидится что поделаешь и нет отстающая штука еще
00:38:50 - 00:40:12
она почему по одной простой причине потому что большое количество пользователей попробуй с таким багажом быстро двигаться вот поэтому я не особо ну скажем так радуюсь когда пока мид архи я не достигла степени готовности которая меня устроит чтобы насильно распространялась в продаж то есть сейчас меня интересуют только ограниченно этом несколько десятков внедрений на которых можно обкатывать вопросы к тебе сразу есть если ты непротив твои скажем так требования к стыку mind or he они же допустим за последние пять
00:39:30 - 00:40:58
лет ну сильно менялись правильно вот и соответственно они почему меняется но не в последнюю очередь потому что там твои как бы знание тоже усиливаются но и верно в первую очередь потому что просто мир меняется да меняется требуется и за изменение мира и из-за того что конечно же сфера применения metar хи и она немножечко я нащупываю сегмент где она будет наиболее эффективна когда мне говорят что типа давайте мы сайт на металле и напишем сайты надо делать если то у вас просто сайт статические файлы на город в
00:40:14 - 00:41:31
положительные ну вот у меня в контексте этого к тебе вопрос ты не думал о том что твои требования к стеку будут меняться быстрее чем чем будет разрабатываться с так и в итоге вот это когда будет про доктора димитар хи очень туманно нет нет на самом деле у нас есть road map и еженедельные созвон и и последний последний год мы очень активизировались именно в плане того что нужно обрубить все что не очень критично и сделать ее product ради и упаковать ее уже какие-то готовые продукты сейчас несколько есть
00:40:53 - 00:42:28
там больших компаний которые внедряют и сами contributors тоже по делали свои стартапы все это не все это необходимо для того чтобы конечно же обкатывать технологию на реальности потому можно конечно знаешь как засесть в какой-то идеальной башни из слоновой кости как ты говоришь вот что это никогда не будет product ретинита в общем у нас есть идея того что все таки нужно сделать это product рейде потому что любую технологию там возьми там nest призму там книг графике мы всегда скажем типа в мид
00:41:39 - 00:43:10
архита всегда гораздо краснее спроектирована да ну как во сне спроектирована но в результате есть очень много других пробелов почему почему же это не не используется очень сейчас дописываем инфраструктуру потому что на самом деле у нас не вот не все что мы перечислили является основным основным является вообще микро изоляция и вопрос безопасности вообще в ноде куча разных проблем но они меркнут по поводу сравнении с проблемами безопасности того что происходит в модулях там со всеми этими зависимости
00:42:28 - 00:43:55
пакетный менеджер пока не создаешь нет нет но меня вполне пока что устраивает npm но меня не устраивает то что огромное количество внешних модулей у нас основная задача это сделать так чтобы мы были очень сильно изолированными от всего вот короче тратя который тасс у вас есть модули которые мы используем внешние в технологическом стайки но их очень мало и они все проверены и у нас как бы есть такой список разрешено и и разрешенные версии проверенных модулей а как вы решаете вопросы с безопасностью и с тем что надо
00:43:16 - 00:44:52
модули растут и ограничивать нужно как-то разработчиков во всем этом деле смотри у нас я за этим вопросом стараюсь очень тоже жестко следить то есть у нас любая сорт party зависимость реально долго обсуждается то есть ее потребности в итоге несмотря на то что у нас уже довольно большой продукт у нас ну как сказать по сравнению со средним статистическим очень маленькое количество зависимости то есть это некоторые базовые зависимости такие как мест до его пакеты то есть мест am on st core и несколько просто она пакетов от
00:44:05 - 00:45:18
которых никуда не уйти такие как класс валидатор и класс трансформер да то есть нашей архитектуре по сути они тоже но нет покрыты тестами то есть именно вот эти библиотеки покрыты тестами настолько насколько это возможно вообще все дни использовать ну так то есть тест кстати это тоже один из пунктов можно покрывать тестами эти библиотеки все остальные вообще sdk мы не используем слова совсем не смотря на то что у нас куча интеграции с другими платформами то есть facebook google drive дропбокс там ос
00:44:41 - 00:45:48
марка так дальше у нас примет url мы ходим мы создали свой http и клиент который умеет вы лидировать response от этих всех спать и и но логировать ошибки если они произошли и умеет маппить ошибки а почему вы не используете в но деревьев встроенный арте типичный клиент как он использует наш ешьте типичный клиент это просто высокоуровневая abstract верстка да-да-да дичи или ты про он дичи говоришь ну да есть во первых indis теперь же у нее ваш встроили он теперь стал просто версии моды она еще пока что не
00:45:14 - 00:46:49
она только в октябре станет но product ради не весит и строили только значит такой высокопроизводительный поли feel хотя ты знаешь почему он кстати очень быстрый почему быстрее энди shave и соответственно вот эта реализация да потому что если ты просто будешь ешьте теперь эти ps библиотеки использовать это может делать get или post вот которые там встроены производительность не очень да они упираетесь у вас скорее всего нет у большого потока запроса я постараюсь вспомнить потому что я считал эту информацию
00:46:02 - 00:47:34
блин очень жаль будет если они вспомню но я вот поэтому и хотел использовать ум дишей от даже его подключил в проект и у нас даже была реализация еще полгода назад на у ниши но потом я вот вышло 18 версия и я просто жду октября до когда можно будет уже использовать непосредственно 60 почему почему же она быстрее блин пакеты что что сокеты ну да там что-то с опытами с dns м с сокетами науки это не обязательно помнить это такое я почти до там куча оптимизации на самом деле вообще коду desheli интересно
00:46:54 - 00:48:26
почитать там куча хеширования там dns запросов куча оптимизации перри использование сокетов в неё как бы когда ты просто использую шерстить эту библиотеку но обычно все это просто не надо из-за того что самый распространенный кейс использовать нечасто дергание каких-то у львов ну в нашем случае как раз таки она очень часто и вот поэтому я зайду надо думать ну или ждать фича или использовать у нюши этим вопросы окно а еще может быть какие то есть security ешь его может быть какие то есть связанные с
00:47:45 - 00:49:25
изоляцией контекстов пользователей связаны с инъекциями возможно с в общем такие вот практике западный до насчет ну во-первых сейчас одну минуту до насчет безопасности тоже мы за этим очень следим это можно у нас во первых данные которые у нас такая система просто у нас такая система что мы храним по сути супер конфиденциальные данные наших клиентов нас би ту би продукт для оптимизации маркетинга больших айти компаний соответственно по сути ну от нас зависит заработок до то есть сотен там людей из
00:48:34 - 00:50:18
числящихся в миллионов баксов поэтому хранение данных мы следим все что надо шифру им фишеру им по самым там скажем так передовым технологиям то есть мне очень нравится тоже за следить за тем как развивается безопасности вот что касается изоляции контекстов и тому подобного нет у нас ничего такого но нам не нужно делать не знаю таких случаев чтобы нам такое нужно было бы сделать что касается моря до садов adidas а по сути у нас вся система полностью закрыт то есть в принципе доступиться к ней если у тебя не так ты не сможешь от
00:49:36 - 00:51:02
внутренней корпоративной системы но смотри то есть в принципе есть это нет это не внутренняя корпоративная система это открытая система то есть она уж у нас даже есть сайты можешь там зарегистрироваться но чтобы попасть внутрь ты должен а то есть ну связаться с вами и так дальше то есть выбрать пакет там довольно за крупные деньги на то есть и после этого ты попадаешь внутрь просто если ты там пошлешь и запрос на наши api ты там получишь она 2 сад и все понятно что можно послать столько она 2 со что
00:50:22 - 00:51:36
это в любом случае станет проблемой но во первых она 2 сад случается это самый-самый первый слой серым сервера это во первых во вторых ну как бы понятно что его вред не очень большой во вторых у нас вот эта вся логика по инфраструктуре вынесено то есть я этим медь в меньшей степени занимались у нас есть команда devops of для которой конечно же не дадут положить наш сервак через до доз то есть логика у нас вся в офисе и соответственно там весь балансировщик этот самый как он называется host вот этот который стоит бастион то
00:51:00 - 00:52:20
есть там как бы есть какая-то логика но я этим не занимаюсь так еще вопросы вы собираете какие-то метрики там допустим по использованию памяти secu интенсивности загрузки его глупо и т.к. hippo как интенсивность выделения памяти сборщика мусора все остальное надо конечно у нас есть промо the us которой все метрики собирает он он х 100 вы скажем так то есть все что относится к сети трафику процессору памяти что касается внутренних натовских штук про которые ты сказал то есть есть персики на их а нет в продакшене у
00:51:41 - 00:53:32
нас их нет то есть когда мне надо было что-то ну было к эта проблема с производительностью я их добавил и я их убрал просто потому что вот пока что не времени в них разобраться чтобы добавить их на постоянной основе также есть в центре есть интересная штука называется performance как-то там она лайза что-то такое там очень интересно потому что там по каждому запросу можно посмотреть в миллисекундах время выполнения каждой функции она наверху как тоже и устроено именно там она но все-таки использует какой-то де баккер отладчик
00:52:39 - 00:54:08
натовский и ну допустим можешь подключиться к ладожскому процессу из и там смотреть flame графы может быть этот механизм используется потому что через пир фукс каждой функции и даже не знаю там есть возможность до каждая функция причем сделано таким образом да не похоже что это пир хук согласен с тобой не просто каждую функцию то есть она каким-то образом ну не каким-то образом понятно каким образом то есть если допустим это запрос в http ну всегда или запрос базу данных то есть но ну ладно это в принципе нет ничего
00:53:23 - 00:54:54
удивительного да то есть функция запроса в базу данных она просто долго выполняется то есть тут нет ничего удивительно pma льна да вот поэтому-то она позволяет каждую функцию отслеживать время выполнения это прикольно то есть мы это подключили и отключили потому что мне просто не очень не нравится см3 по сути как у нас сейчас обстоят дела у нас есть киба на то есть елка стек и там выполнение в миллисекундах каждого запроса и если я вижу какую-то аномалию я просто ну настолько понимаю наш продукт что я в
00:54:09 - 00:55:21
принципе сразу понимаю в чем в чем проблема понятно что это не долгосрочное решение то есть мы вернемся к какому-то решению и какое-то формальное решение которое работать без без твоей интуиции ах да да саша наверно то есть скорее всего это будут торф я найду время чтобы с ними разобраться и то есть мы их конечно же добавим рано или поздно там тоже кстати есть баг игры реализовали для worker тредов тоже когда я знаю она да я сделал по нему даже видосик специально я очень надеюсь кто-нибудь зафиксирует и закроет ищу которой
00:54:45 - 00:56:05
венская а ты чего не хочешь нет времени ну ты знаешь я мид орфею постоянно пишу но я подвод сталкиваюсь с огромным количеством таких багов я их обхожу ира порчу на самом деле портить баки так чтобы они были нормально описанные воспроизведены это тоже хороший большая работа признана до рапорт что у них есть некоторые баги такие а может быть есть какие-то у вас механизмы как вы боретесь с утечками памяти или таких проблем никогда не было или вот допустим какие-то вещи связанные с тем что память очень много выделяется и
00:55:25 - 00:56:51
потом она не собирается может быть вы отключали garbage collection когда-нибудь или увеличивали объем максимально разрешенной для выделения памяти ну вот короче с управлением памяти что это было но смотри я смотрела есть те финале за и шин регистре да так он называется energy store прикольная штука но скажем честно вот у нас вышел сейчас новый номер да ко мне в команду енот как бы вот человек говорит шу кот очень хорошо написан он прям приятно удивлен и в принципе код действительно написан настолько легковесно и настолько
00:56:15 - 00:57:40
прозрачно что вот утечек памяти янь ну такого точно не было чтобы это какой-то проблема еще стала не такого у нас на бы ни было это говорит о хорошем проектирование я сейчас уже наверное мы не успеем поговорить про там solid газ и всякие паттерны ну в общем возможно что-то из этого ты используешь вот может быть просто в двух-трех словах про ну просто не все там не обзор да а вот конкретно вот используем эта потому это потому но опять таки это чуть-чуть упирается в то и папки 4 возможно паттерны из банды четырех да да банда 4
00:57:00 - 00:58:35
но окей хорошо можно начать отдаст с бандой 4 опять таки там сколько 23 паттерна кажется и как бы вот упирается в то что вот я не помню весь список поэтому его никто не помнит ты меня назови potter да я скажу мы его используем или нет я тебе назову паттерн а ты мне скажешь он есть в банде 4 или нету и если если он вроде или нет потому что банда 4 это очень мало патронов и почти все что используется в ноги его это другие потоки другими людьми и уже после банды четырех открытый конструктор вот квиллинг
00:57:52 - 00:59:19
конструктор меня я такого не помню до 4 до в анди 4 его нету а вновь где это один из основополагающих паттернов то есть это возможность передавать во внутрь конструктора класса какую-то функцию которая расширяет его поведение и таким образом нам не нужно наследования делать вот таким образом мы можем сделать допустим рида был стрим или transform стрим мы можем это сделать двумя способами можем у наследоваться типа сделать класс extends transform transform стрим а можем сделать new transform stream и туда функцию
00:58:36 - 01:00:04
трансформа просто и это получается что как будто бы вместо того чтобы мы наследуем мы переопределяем хотят раствором до открытый конструктор получается что мы вообще можем заменить наследование на открытый конструктор почти везде но но для этого у тебя базовый класс должен знать о том что его кто-то может последовать за ранее должен быть так подготовлен чтобы возможных причем возможных таких вот перри определяющих хуков которые могут приходить ему причем они могут приходить как аргументы в конструктор приходить а могут общем
00:59:21 - 01:00:55
сам приходить распространено знаешь во многих встроенных библиотеках у тебя общин и там 20 аргументов или да даже в наших этих в наших библиотеках вот брейся тоже есть очень активно мы используем такое что просто объектом общин передаем все там от относится к лаки клонирования валидации так дальше если это то есть если бы надо не стояло на одном из вот таких основополагающих вот этих паттерн их открытый конструктор но тут была вкусная в общем наследование переопределения было бы сплошная jar ну
01:00:08 - 01:01:36
да не очень вообще вообще говорят наследования антипатр последнего это скажем как один из самых переоцененных и опасных шаблонов ну а иногда и тогда он нужен и дает хороший результат что у нас в общем каков же ваш skype те можем поступать чтобы уходить от преследования один способ обсудили это открытый конструктор а есть еще возможно какие то я не знаю как тебе сказать у нас допустим в проекте вообще наследования нету нигде и никогда просто вот как-то я не знаю я никогда не понимал зачем вообще
01:00:53 - 01:02:18
тактирование предметной области наследования не нужно не нужно никогда она нужна для системных абстракций акций дозоре я перебил не хотел ну короче для системных абстракций это естественная штука наследование по что ты делаешь какой-то абстрактный соки и и соки с какой-то особенностью который умеет буфере zero вать там и вот вот тебе наследование а где в предметной области у тебя есть допустим я не знаю какой товар на складе есть там приходная накладная какая то есть пациент в клинике где тут наследования
01:01:39 - 01:03:08
животные зайчик кролик когда никто не бегает не кушает не не гавкает никакой практически очень редко бывает я знаю что вот ну то есть предпочитают просто композицию наследования вот это в принципе по сути нет ни не только композицию да то есть можно как называется не композиция а типов когда обращение от посылки забыл типа композиция агрегация агрегация дону композиция агрегация это использование java script новых объектов в качестве стр актов тут идея правильная и простая до невозможности на них очень удобно писать
01:02:27 - 01:04:05
тогда той пинге контракты и все такое так ну я думаю что это практически все же я хотел спросить возможно у тебя еще есть вопросы ко мне да на самом деле я от такой вопрос возник что вас globalstar джим то муж это было всегда интереснее всего мне дату работа с базами данных самый интерес по моему как у вас нам развивается да мне тоже но мы на самом деле его отложили в долгий ящик мы настроили приоритеты в мид архи и таким образом что мы сейчас весь упор сделали на то чтобы писать типовые корпоративные информационные
01:03:26 - 01:04:56
системы чтобы можно было быстро смоделировать грубо говоря то за день-два смоделировать предметную область на микросхемах за день-два написать а пешку и потом сконцентрироваться на написание кода предметной области чтобы вот чтобы он был максимально кратким немногословным без всяких бойлер plate of с быстрым стартом фреймворк главное чтобы у них реворка вот сервер приложений там или платформа с быстрым стартом но чтобы не терялся темп мы пытаемся сейчас отладить метрики освоения фреймворка вот когда берется
01:04:12 - 01:05:49
новый проект вот мы на нем стартуем насколько люди быстро понимают эти концепции насколько им даша была маленькая документация купить даже вот мы смотрим если это нужно будет очень сложно описывать доль долго объяснять экзампла какие-то в общем это не подходит чтобы и был и быстрый старт и что темп не терялся этого самом деле сложная сложная оптимизационная задача которая на самом деле optimize ничем не уступает там я не знаю каким нибудь оптимизация в системном программирование но только это все-таки
01:05:02 - 01:06:17
штука связанная с более социальной составляющей программирования тем насколько просто программисты понимают те конструкции тебя абстракции которые внутри используя потеряемся максимально адаптировать мид орфею к внедрению вот такое понял какой еще был вопрос я как бы в принципе понимаю как в open source и зарабатываю да то есть но вообще очень интересная не для всех конечно не все готовы к таким рискам но вообще довольно интересная интересный field и вот интересно то есть ты сейчас вот если не секрет ты сейчас работаешь параллельно
01:05:39 - 01:07:18
какой-то коммерческой среде или же ты из окон source а полностью себя обеспечиваешь ну это для меня это одно и то же потому что я просто занимаюсь своей активностью вот абсолютно своей которая периодически обвешиваться какими-то позициями в разных компаниях которые могут добавляться и удалятся делаю я все равно одно и то же я [смех] помню как бы в общем сейчас есть несколько компаний в которых я 2 ether несколько в которых я сетевой нескольких которых я совладелец и как бы конечно какое какое-то время тратится на
01:06:28 - 01:08:14
насчет какие-то корпоративные bull sheet of ski и там носят переговоры но очень минимальное я это все сокращаю потому что это всегда абсолютно не конструктивно у нас все это заменено тем что практически все разработчики которые в этих проектах есть они понимают друг друга с полуслова а почему они понимают друг друга с полуслова потому что все это стоит на базе моего курса по ноги и по java script у после него это позволяет потом меньше совещаться и многие люди контрибьютором мид архи и в этих проектах поэтому там с одного
01:07:23 - 01:08:51
подмигивания они уже понимают как решать все вопросы ну я в основном чем занимаюсь так этап если какая-то такая бага которая значит где-то проблема возникла та я так как я знаю практически вдоль и поперек всю кодовую базу амитабхи я очень быстро в голове сразу захожу где ее фиксить ну но у нас контрибьютором достаточно много и есть contributors которые кантри пилят в мид архив а им за это компания платит есть за счет contributors которые просто по своей инициативе есть компьютеры которые совладельцы каких-то стартапов и any
01:08:09 - 01:09:36
country бьют в мид орфею потому что им нужен там появилась какая-то фича то есть она растет на разных способах и на данной шине компании и на том что мне платят за то что за 2 или по внедрению какие-то компании вот платят за review кода там всего этого в сумме мне вполне хватает каких то огромных денег нет но мне абсолютно хватает этого дела до того чтобы заниматься всем чем я люблю и тем чем я буду заниматься в любом случае будут не за это платить или они будут поэтому я понял я на самом деле вот эта позиция да то
01:08:53 - 01:10:16
что ты сказал вот это настолько хорошо знаешь код что можешь просто посмотрев на ошибку же понять где она произошла у ну вот то я себя чувствую сейчас тоже это нехорошо на самом деле какие считают это не хорошо да человеком на проекте потому что когда я куда-то исчезнут а все то есть не знаю людям придется намного дольше разве тем не менее у нас все покрыто тестами и другие люди тоже быстро найдут ошибку но все-таки на порядок я быстрее это сделаю обычно кроме определённых библиотек у нас есть определенные
01:09:36 - 01:10:48
библиотеки в которой я почти не лезу которые закреплены за другими разработчиками вот которые я допустим начинал какой-то старт этой библиотеке дал а сейчас я просто там не не держу в курсе вообще что там про из ходит но я периодически там там раз или два в год я заложу эту библиотеку опять вычитываю версию исходник и предлагаю какой-то рефакторинг ну то есть это регулярно происходит точно так же там другие разработчики приходят ко мне в код разделены сферы ответственности конечно и у нас конечно все покрыто тестами
01:10:12 - 01:11:35
но это юнитами вся весь технологический степок артистами но сама библиотека бета-теста на немножечко морально устарела хоть тестами и покрыта но мы собираемся ее чуть переписать но от этого не будет изменено синтаксис самих тестов также это никак не повлияет на покрытие такой вопрос еще если это не против чисто прикладной у нас уже очень давно есть некоторые разных не то чтобы разногласия а недопонимания одного момента вот у нас в коде есть функциональность уже в третий раз сегодня затрагивает эту платформа
01:10:53 - 01:12:27
зависимость да то есть когда для разных платформ рекламных или там стороны и разных есть разные реализации функциональности то есть грубо говоря ну грубо говоря как абстрактная фабрика да у которой есть допустим 5 сервисов есть абстрактный сервис ты говоришь про патрон стратегии но паттерн стратегия и паттерн абстрактно фабрика очень связаны между собой какие по нему как-то вижу ok вопрос не в этом то есть до стратегия конечно это одновременной строке это больше стратегия в данном случае но есть
01:11:42 - 01:12:53
абстрактная фабрика если мы до того если мы до того для каждого из сервисов использованием дату из стратегии грубо говоря это абстрактно как я вижу абстрактное и the path применение абстрактные фабрики для функциональности они для данных на нам короче наоборот и вопрос в чем вот есть у нас с абстрактный bridge абстрактный мост который по которому унифицированном у синтаксису можно получить конкретную функциональную зато есть допустим есть абстракт допустим get file bridge элбридж в себе имеет google drive get file drop box get file
01:12:18 - 01:13:55
я вас get file соответственно в каком-то коде где нам нужно получить конкретную реализацию мы пишем вот этот bridge . передаем туда допустим dropbox или же какой-то абсент допустим параметры которые приходят извне и потом уже у этого полученного сервиса вызываем . get file так вот вопрос в том является ли это бриджем то есть у нас столько было споров на предмет того чем является вот этот вот файл промежуточный это мост или это какой-то mapper как его назвать как ты считаешь ну мне когда это скорее
01:13:06 - 01:14:21
всего понимаешь у всех coupe тарнов даже классических банда 4 есть идеи идея паттерна но нету эталонной реализации и поэтому в каждом языке и в каждом вообще проекте может быть куча разных реализации я бы это назвал больше стратегий ну конечно эта стратегия не в чистом виде потому что у вас приходит какой-то аргумент скорее всего к эта строка имя провайдера я но миска да по дином да но я бы не знаю я бы брал просто какую-то коллекцию коллекцию строк и вот если значит у меня было бы было бы коллекция вот где
01:13:44 - 01:15:23
был бы ключ там google drive там или какой-то и значение имя класса который нужно там это так и есть если хочешь этим даже в коде показать как это выглядит просто реализация паттерна стратегия на java скрипте выглядит как коллекция где ключ и значение сам класс но эта коллекция их таких коллекций огромное количество поэтому все они строго унифицированы и наследуется от абстрактного бриджа под ну так сейчас это называется в котором опционально можно еще определить метод get и данте fire агентами аир это по сути метод
01:14:33 - 01:15:58
который на основе какой-то порции данных получит как раз таки и идентификатор из вот этой и науки потом соответственно будет вызван метод get in city of но это автоматически все будет происходить это я тебе скажу это гибридный паттерн который вы изобрели но нужно посмотреть конечно код скорее всего он просто состоит из нескольких идей ну и серьезно сдобренной возможностями java скрипта потому что если бы такое писали на джаве вы получили это классические паттерна и можно все изобретать чтоб хочешь ну да
01:15:16 - 01:16:29
ну такое окей ну хорошо в принципе интересно но 46 я могу сказать наверное последний вопрос уже чисто для себя чисто интересно вообще какие вот вот вот если предположить что вот ты проводишь собеседование чисто для себя до рано или поздно ну да ладно логично вот на что вот ты обращаешь внимание потому что вот я когда право я когда проводил внимание собеседование я обращал внимание допустим там на какие-то свои штуки в основном это soft скиллы ну потому что я понимаю что если там человек не знает что пароль должен
01:15:52 - 01:17:24
хэшировать они шифроваться в базе данных да то есть но это это плохо конечно но этому легче научиться чем чем тому чтобы допустим не конфликт мечеть в команде вот интересно жарко лишь внимание ну смотри для меня важно чтобы у человека голова варила то есть вот если у него при разговоре выявлено сознание то все остальное это уже выращиваемая вещь это знание или там опыт или это все наращивая вы и вещи но так мне на самом деле там не лишне приходят люди которые на собеседования я даже их вообще и
01:16:41 - 01:18:12
не зову ее как бы не пропускаю через себя если если они не учились по моему моему материка бы моему курсу и ну потому что мне с ними не не будет удобно и комфортно работать а таких которые учились по этому курсу у меня много и много желающих поэтому я тут очень выигрышная ситуация предварительная фильтрация уже на собеседовании уходит много ресурсов времени всего остального и я их в частности использую вот ну для того чтобы еще научить кого-то вот сегодняшнее собеседование посмотрит куча людей и для них это будет как лекция для
01:17:26 - 01:18:55
многих за них это будет уже как эталон того какие вопросы могут быть какие ответы могут быть как нужно себя там вести на собеседовании все мне нравится чтобы собеседование был дружественная атмосфера какая-то не то что значит пришел человек атрибутом рисуешь ты не помнишь там кто раньше исполняется там с это мидия телеском тайм-аут 0 кому это вообще нужно это все справочная информация которую можно посмотреть за три минуты в интернете но есть люди которые приходят с таким апломбом типа я все знаю тут вот вот эта
01:18:11 - 01:19:46
технология хорошая плохая и значит а вот тут у вас неправильно кто пришёл на собеседование ну в общем то если есть с обоих сторон доброжелательность это всегда очень позитивная и хорошая вещь того чтобы человека взять ну и насколько быстро он улавливает мысль я начинаю это мысль если человек может ее схватить на лету и продолжить но это тоже очень хорошо хорошо интересно у меня вопросы закончились тогда еще от от тебя по сути вердикты все что еще до захочешь сказать какие то рекомендую отличная просто
01:18:58 - 01:20:44
не совсем честно вел я прощупал практически все темы которые хотел и нащупал такие вещи в которых могут быть пробелы но я их не спрашивал потому что я считаю все эти вещи справочной информации которую всегда можно найти в интернете да ты и сам знаешь что не является частью критически важных знаний профессионалы чтобы он вынимал из головы там любой паттерн из банды четырех и расписывал его быстро рисовал диаграмму классов и для этого паттерна и приводил примеры приводил там плюсы и минусы его ну то
01:19:54 - 01:21:29
есть это все это энциклопедические знания у кого-то мозг так устроен что все эти энциклопедические знания там нормально поместятся распределяются и быстро вынимаются а у кого то нет но он эффективен в работе поэтому вот я считаю что ты эффективен в работе и самое главное поэтому ну чувствуется что ты и как руководитель и как профессионал и как человек который может помочь младшим специалистам это все гораздо более важные штуки чем конкретно приди и не книжная просто которая нужна зазубрить мы в общем то я думаю что так примерно
01:20:46 - 01:22:23
поговорили там на уровне я не знаю ли да наверно очень существенным скажем так перспективой в сторону архитектуры приложений и возможно там через какое-то время [музыка] ну вот архитектором или сетевого обязательно тоже в этом направлении развиваться это это ещё куча всего чего мы сегодня не покрыта мы покрыли в основном те знания которые должны быть у сеньора или до одну потому что такая задача практично и переговорные знания проектирования координации команд но чувствуется что ты этим занимаешься так или иначе
01:21:34 - 01:23:23
приходится кучу всяких вещей которые связаны именно с координацией людей хорошо спасибо очень доволен и доволен что из попы и выходят такие специалисты в том числе возможно я где-то приложил усилия я точно могу сказать да ну в общем спасибо и удачи все ступаешь запись да да конечно пока и
01:22:33 - 01:23:39