Подготовка к собеседованию на Python 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:01 - 00:01:24
Поэтому соответственно будут похожие на те которые я обычно провожу примерно по тем вопросам примерно так как и зачем Да кстати если вы у вас есть темный бэкграунд в виде один из Битрикс Вот и Вы прям вот вам это надо попробоваться дату Приходите У меня есть некоторые заказчики которые хотят перейти с битрикса на джангу но переходный период это все надо поддерживать надо надо кого-то надо с кем-то вот так вот Я сам не умею вот или вы готовы попробовать себя в роли пить пичника Вот ладно в общем пишите в личку там телега
00:00:44 - 00:02:06
есть Минска минутка циничная реклама Извините Вот ладно давайте к делу Михаил Представься пожалуйста ну самую презентация Расскажи про себя я был всю жизнь политических [музыка] [музыка] всем быстренько написал типа чё ребята как войтишку залететь не сказали что в принципе никак но если хочешь можешь попробовать через там и посоветовали Яндекс отучиться на Яндексе ты прям провоцируешь меня опять на циничную рекламу есть промокод на Яндекс но это не реклама просто промокод 13 процентов если надо тоже в личку
00:01:26 - 00:03:02
стучитесь Это я спокойно поделюсь ладно так отучился ты в Яндексе и Да ну и отучился в Яндексе и пока учился стал опять же мочь всех своих друзей типа не нужен ли вам программист который сделает такое интересное вот написал проект для знакомого педагога Вот мои первые условно коммерческий проект был Telegram бот который через который ученики у педагога записываются на уроке педагог размечает у себя сетку Google календаре а ученики через интерфейс телеграмма смотрят где есть свободные свободное время
00:02:52 - 00:04:16
различные [музыка] я лучше покажу Чуть более позднее Потому что тот год совсем такой ладно дальше и дальше пошло по наклонной сторону Telegram ботов на Джанги я по моему ничего никаких денег не заработал потому что потом был еще один заказ на Telegram ботов парочка было таких сделать копии мне какой-то цыганский хочу такой же делаю заказ какого-то завода решили цифровизовать и хотят попробовать интересный проект [музыка] алчами Вот и И связь все это с Google таблицами и такой надо было интерфейс более-менее
00:03:34 - 00:05:24
спроектировать и чтобы юзеров был аккаунт своей личности такое Это был классный интересный проект Ну а потом меня один так сказать Не знаю то ли блогер то ли маркетолог это другое Илюха привет Если ты смотришь он взял меня свое крыло предложил платить фиксированные какие-то фиксированную ставку чтоб я пилил для него я не знаю программистский ширпотреб он говорит типа Скачай мне вот этот сайт полностью скачаю хочу там Инстаграм и через Инстаграм запрещенную в России [музыка] не забывайте не пользуетесь
00:04:52 - 00:06:17
категорически нельзя Вот и последний проект Вот наверное вот он самый клевый он него разрешился заказчик выложить так сказать Open Source это проект с Google Telegram Бота чат-бота с Open Aim там opena и gp3 с этим всем работает опять пользовательские аккаунты за каждого токенов транскрипция перевод из форматов формате Ну вот и вот мы потом посмотрим хорошо Вижу вижу опыт у тебя есть определенные даже немножко стыдно тебя спрашивать Какие Какие типы данных есть питоне вот поэтому мы с тобой будем очень
00:05:35 - 00:07:09
заниматься будем практическими вещами заняться Расскажи немножко как ты себе понимаешь концепцию зачем она нужна что куда [музыка] но Насколько я понял из всяких нужен для того чтобы использовать код но и в общем чтобы вообще концепция родилась на том когда хищники заметили что слишком много пишут одного и того же в каждом отдельном проекте и решили это скомпоновать в блоке кода и какие-то переиспользуемые так сказать более универсальные и без этого Получилось концепция op то есть ну хорошо наследования это зачем вот это как бы
00:06:25 - 00:08:13
реализует эту концепцию.п плане о нужное концепция реализует для того чтобы писать код был и так капсуляция я прям несколько роликов смотрел каждый говорит Немножко по-разному это не сокрытие оно отличается чем-то от закрытия но честно говоря определение сто процентов точно не выданные но [музыка] если внутренняя логика объекта сокрытая внутренняя логика объекта с предоставленным пользовательским интерфейсом наверное так я понимаю Ладно допустим Ну давай дальше же разобрались хотелось бы узнать твое
00:07:27 - 00:09:04
определение полиморфизма и расследование [музыка] руки не дошли книжек почитать Я пытался читать словами можно знакомиться примере на просто так полиморфизм это когда из одного насколько понимаю базового класса при помощи опять же интерфейсов можно сделать как один инструмент и другой инструмент они будут разные от одного базового класса когда мы в можем от некой структуры от класса не переписывая все его интерфейса атрибуты и методы заново Мы берем Все его методы и одним простым действием наследованием
00:08:30 - 00:10:05
методы старого класса и дополняет Ну ладно давай попробуем что-нибудь накрутить [музыка] Раскрой свой в Редактор Так ну смотрим Давай мы с тобой попробуем решить какую-то небольшую бизнес задачку То есть это будет не задача на какой-то алгоритм это больше задача на на мысли на то как ты себе это видишь как это все реализовать Давай представим что нам нужно запрограммировать такую сущность как колода карт задача и твоя задача сделать так чтобы пользователю во-первых она генерировалась эта колода карт каким-то
00:09:34 - 00:11:08
образом и он мог дергать из этой колоды случайную карту одну или потом еще потом еще и так далее взяли эту задачку мастерства Поэтому да но смотри там там да то есть она там решена немножко другим способом да то есть как бы там насколько я помню Table по-моему они используют использовали да А я тебя мягко буду подталкивать к использованию классов Раз уж мы тут начинали говорить про и вот это все то логично что такая Задачка она решается через о п Но должна решаться каким-то образом да Ну вот давай как-нибудь и
00:10:31 - 00:12:08
попробуем ее решить потом Ну как бы Сначала давай Давай логика какой-то Вот обсудим как-то себе как бы ты такую задачку решил первое что приходит сдать объект колоды и объект карты в объекте колоде а колода скажем будет метод генерации колоды и будет метод выдачи случайной карты Ну огонь Давай выглядит выглядит логично То есть он не только наивные а Наверное может быть единственно правильный Давай начнем с карты да то есть что там карта есть если человек по-английски да Вообще [музыка] должны быть
00:11:22 - 00:13:08
и значение так ранг н к рэнч это другой [музыка] Да вот так ранг но он не должен быть цифровой Хотя хотелось бы все-таки строка получается тоже буквы что-то я привычки когда-то класс делаю размечаю тут же надо через инит это делать [музыка] Почему нет выглядит вообще как вообще чем разница дата класса от обычного стандартного класса реализованные капота методы А кстати довольно удобно будет Кстати почему нет да Если уж на то пошло то вот это то самое где можно использовать Так у нас есть как стиют сьют
00:12:47 - 00:14:52
ну неважно то есть можешь транслитерация Если уж на то пошло или можно загуглить как как это звучит Ну масть масть все-таки загугли а то как-то уже даже стрёмно английский это документацию меня к этому жизни готовила пока Мы же 4 [музыка] Ну и методы какие здесь у меня могут быть наверное никаких чистого карты Ничего не сделать не можем посмотреть а да стр по-моему В чем разница между репорт и STR Блин они разных Я тоже у него этого чувака читал Откуда вы взяли Я забыл Ну хорошо книжки читаешь [музыка]
00:14:19 - 00:16:12
[музыка] или просто без разницы Ну давай хорошо Почему Конечно да [музыка] точно нужен но иначе как он как этот метод тоже логично действительно нужен я с тобой согласен Ты наверное в СССР тоже иначе ему будет скучно он станет не чувствую нотки чего подтрунивание отлично Ну что же Ладно С класса с картой разобрались Давай тогда колоду сделаем там кстати в книжке она абсолютно отвратительно сделано если ты об этом то есть так как книжки не надо делать как минимум я минут 10 соображал как она там сделано через строковый генерацию
00:16:00 - 00:17:48
вот кстати вот давай вот через лиском прихеншн это хорошо Это хорошо да Давайте теперь надо колоть колода причем Смотри какая давай сразу Раз уж ты эту книжку читал Давайте усложним задачку у него там французская колода Это от Ну у него там двойка тройка четверка пятерка шестерка девятка десятка Да и валет дома король туз а нам надо наверное сделать две колоды одна французская другая русская русская колода от французской отличается что у нас шестерка начинается Вот так вот то есть вот у тебя такая задача сделать так
00:17:30 - 00:18:58
чтобы у нас было две колоды а не одна и мы могли бы пользователь мог выбирать колоду а потом из неё дергать [музыка] базовый класс от него наследовать я не знаю наверное логично можно базовый можно абстрактный можно еще каким-то способом это все сделать а б с Я никогда не использовал но у вас на этом но у вас на домена ты можешь вы были в команде на совесть Извините Ладно нет ну если если есть прям вот тяга желания Давай попробуем через интерфейсы можно не вопрос Но если как бы нету тяги и нет прям вот такого вот
00:18:14 - 00:20:07
опыта то давай решим как как ты можешь идея с тем что сделать какой-то базовый класс от него колода которые бы умел что-то да потом от него от наследовать конкретную реализацию Ну наверное Хорошая идея Почему нет так [музыка] есть идея должен принимать [аплодисменты] [музыка] конструктор класса и он должен принять он должен принять список карт которые мы хотим чтобы были в колоде То есть если это русская колода то в ней будет список расширенный если суженый если это французское то расширенный То есть он должен принять типа что-то
00:19:14 - 00:21:04
[музыка] карт лист наверное просто Ну да кажется наверное здесь как-то не надо принимает корзина Давай Карден чтобы уж как-то она вот да и там можно карту например сделать конечно мелочь Я понимаю что вообще [музыка] допускаю или что Нет меня не включен сейчас F8 поэтому я скорее всего просто забыл как этот черт В класс пишется с нуля то есть скорее всего и надо сюда принять аргумент Нет конечно же наследуемся Господи как стыдно Я понял просто деф надо написать наследоваться не надо у нас все-таки не
00:20:29 - 00:22:20
2 Кстати а если бы вот а вообще вот чисто теоретически если мы поговорим понаследоваться то есть логично что даже базовый какой-то Класс вот так он же чего-то наследуется от чего но есть это не какой-то базовый класс но все что [музыка] больше наверное знаете не надо и это должен [музыка] да Блин как же там прописывается атрибуты можно без аннотации Боитесь как бы не критично это абсолютно что если сделать так здесь мы просто его создаем нет Нам нужен именно и нет данный нужен и нет который при создании класса
00:21:48 - 00:23:28
принимает этот лист и генерирует генерирует и генерирует Self получается саму колоду так [музыка] генерировать свою колоду [музыка] в общем-то этот лист нам хранить принципе то вообще не нужно хранить колоду генератор который делает создает объекты карт и записывает их свой внутренний список получается он ничего не принимает на вход то есть мы говорим он принимает список карт то есть мы за него задаем например что там должно быть 6789 10 Валет дама король туз Вот мы вот это Передаем и он из вот этого набора по
00:22:47 - 00:24:23
всем четырем мастям мастер создает колоду я вот такой Ну хорошо делаете Потом обсудим так Ну количество [музыка] У нас есть Как называется набор мастей который будет содержать типа [музыка] [музыка] [музыка] нужен этот сел черт я вообще забыл как называется синтаксис где именно вот на Как сказать Ну смотри чтобы ответить на этот вопрос давай с тобой порассуждаем это переменный объект или переменная классно классов да так и значит наверное сел в общем-то и не нужен потому что она характерна для любого объекта класса и все Если бы я
00:23:51 - 00:26:17
мог заглянуть в Google конечно же я бы тут не сидел не тупила я могу Google заглянуть Давай я буду твоим Гуглом Будем считать что вот так хорошо окей Тогда мы берем этот список Нет сначала берем [музыка] Ага и он его не видит [музыка] и дальше начинаем также карты и генерируем объект [музыка] нам нужно его где-то хранить надо его задать что [музыка] равно список и наверное не так мы сделаем сначала так [музыка] где равно карту с именами конечно получилось но донимать равна [музыка] Ну да и получается что передавая это
00:26:21 - 00:28:46
когда закончится вся эта тема [музыка] Но кажется нет он же задал переменную ничего не возвращает его Достаточно того что он что-то сделал [музыка] получается как это история теперь пользоваться мы вызываем конструктор класса типа колода колода колода но мы тут методы ей не реализовали то есть типа случайную карту выдать мы не реализовать Давай со случайной карты Чуть позже давай мы Давай сделаем метод который бы нам позволил всю колоду посмотреть Что у нас там на генерировалось до Пока так нет А если нет
00:29:09 - 00:30:55
[музыка] показать [музыка] [музыка] а нет нет это мы уже будем в другом месте делать но в общем он просто Давай попробуем так вот пока пока возвращать список просто А смысл Пусть возвращает список я не против Ну что там солдат Давай пусть возвращает этого нам в принципе достаточно Да чтобы понять что мы сами можем распечатать не это ерунда это не важно достаточно то что он просто вернет список и прям вот обычным принтом мы увидим достаточно Окей [музыка] Возможно это сработает он же так не поймет что ему возвращать А
00:30:36 - 00:32:18
если мы вернем всю колоду это нас устроит Вполне себе и он здесь ведь строчку должен возвращать Да вернет что возможность работать не знаю Давай попробуем не получится поймем где ошиблись и поменяем что-нибудь если можно через тестирование решать то я вообще могу вопросов Это сделать не знаю отлично чисто тестирования это прекрасно Если ты Можно конечно если ты если ты умеешь в тестировании в т.д это вообще кайф Давай тогда не то что я буду там но написал нет если ты через тестирование то это тест кейса
00:32:00 - 00:33:33
если ты написал и распечатал это не тестирование это ладно другое нельзя это Нет другое можно как бы ну тебя сразу несколько баллов упала так [музыка] сразу несколько баллов добавилось то есть Писать не писать сэр там туда-сюда Почему А в чем сложность Ну то что я этого не делал ни разу Поэтому я тут буду сейчас изобретать велосипед и еще больше но допустим нам нужно колода которая [музыка] а теперь-то мы можем сделать теперь то мы можем сделать а нет от этого конечно можно так унаследоваться чтобы получить другую
00:33:02 - 00:34:50
колоду но это уже будет неудобно наследовать типа Russian Deck И от этого будет уже как-то странно мягко говоря как бы у тебя Универ какой-то универсальную штуку там написал про нее еще давай посмотрим как она работает а потом посмотрим как [музыка] [музыка] [музыка] в 13 строчки вот эти вот фигурные скобки не нужны просто так твои точки и так хорошо надо это же вызов класса происходит [музыка] так Но если он передать список список типа [музыка] [музыка] [музыка] 6 7 6 7 8 9 10 дома король [музыка]
00:34:04 - 00:36:20
ничего мне пока не пришлось [музыка] [музыка] окей ладно попробовать это за теории Это должно сработать Ну давай [музыка] [музыка] а все через Join [музыка] скорее через да типа а просто лист не можем сделать прям вот взять Кать лист скобочки сок вот так да вот так но не сказать что прям красота конечно да но мы за красотой не гонимся Джона давай пока здесь не будем делать нам здесь задача посмотреть что как бы у нас все эти карты образовались она себя даже наверное хорошо потому что мы видим Какие объекта у нас допустим
00:36:08 - 00:38:31
[музыка] Ну что ж давай попробуем Рандом сделать а потом может быть минут несколько подумаем В какую сторону можно это чтобы улучшить [музыка] [музыка] [музыка] он должен вернуть даже возвращает объект [музыка] [музыка] показываться как есть [музыка] он так показывается да [музыка] типа список не помню если Рандом нет нужен [музыка] Ну наверное из рандома надо честь такое [музыка] выдергивает один элемент [музыка] Вполне возможно что годится нам такое может тогда сделать импорт Почему А как-то Рандом больше ничего
00:38:23 - 00:40:56
сделать иначе типа не сейчас тоже будешь использовать часть Да конечно можно так хорошо Можно так не проблема [музыка] [музыка] хотелось бы как думаешь с работы Вот что-то мне кажется нет [музыка] Ну давай попробуем последовательность [музыка] [музыка] [музыка] То есть как бы она сработало ну должен работать Ладно хорошо В первом приближении видимо задача решена да то есть мы можем делать любую колоду с Любой последовательностью [музыка] давай сразу начнем с каких-то вот глобальных вопросов что-то скажешь про чистый код чистой
00:41:02 - 00:42:57
функции вот это все ляции кстати [музыка] чистый кот это такое вообще концепция сборник договоренности Ну договоренности Короче давай давай вот как сделаем то есть как бы там наверное есть такая штука Как сайд эффекты да то есть мы если что-то делаем мы хотели бы чтобы это ничего нельзя было сломать вот скажи вот мы хотим сделать сейчас русскую колоду и французскую если мы ошибемся и одну из карт туда не передадим мы сломаем твой код или нет здесь будет еще что-то чего угодно она просто с этой с этим что угодно и вот но
00:43:01 - 00:44:41
это же не будет это же не будет русская колода это будет что-то уже совсем другое Посмотри у нас задача вот задача звучало сделать что-то который генерирует две вещи русскую колоду и французскую колоду все остальное не должно чтобы даже если человек который взял и захотел он просто но Хочешь что-то другое Извини Твоя принцесса в другом замке Давай придумаем тебе еще такую сущности Можно я манипулировать а ну окей не сложно решается давай решим раз не сложно [музыка] пускай будет а как папе 8 [музыка]
00:44:08 - 00:45:44
дата нет [музыка] и конечно Глобал Я что-то слышал что это плохо да Кстати почему потому что они хранятся если Но на самом деле не совсем так то есть как бы если у тебя есть Global мы его можем поменять из любого места мы возьмем переопределен r&k лист и потом мы не знаем какую колоду конкретно мы генерируем А если она у нас да нет как бы Можно конечно и так но разница в общем не влияет это же у нас Мы же не смог мы как-то сможем сет поменять снаружи этого снаружи классы если у нас нет интерфейс
00:45:34 - 00:47:10
для изменения наверное будет как минимум затруднительно как максимум невозможно поэтому здесь все как бы хорошо здесь Видишь есть инкапсуляция и снаружи никакой человек не придет и нам здесь ничего не испортит А вот Рен крест он испортить может логично можно рент лист перетащить точно также внутрь и сделать из него такое вот такую штуку например можно было даже от предыдущего класса наследоваться и переопределить можно было до Ладно давай пока это делать не будем Ну вот как бы это сделали это Молодцы Да
00:46:28 - 00:47:56
давай прямо вот Без без вот этих вот всех историй да то есть она вот так хорошо получается как бы Давай посмотрим на 16 строчку пристально Как еще можно такое сделать можно написать можно просто на уровне идеи видишь как это можно сделать эти списки передать как-то более изящно верхний список как-то изящно передашь разные сущности которые тебе нужно А вот Нижний список особенно во французской колоде здесь прям просится что-то как-то иначе сделать потому что у тебя целая куча цифр которые идут друг за дружком
00:47:27 - 00:49:03
Но их так как у нас есть буквы мы не можем сгенерировать простым А мы можем все равно придется хранить Ну буква да отдельно согласен а не буква а не буквы но через раньше можно опять же Хотя нет Задайте Просто как то рамки раньше чтобы он генерировал нужное количество Ну ладно речь идет она не про генератора здесь делать типа Ford Ну да но генератор экспресс Expression это другое немножко Эта история это больше про генератор А то что ты хочешь сделать это называется риском прихеншн то есть улучшится это называется генератор
00:48:14 - 00:50:03
списков по моему Вот Но она генератором не является другое это Саха рочек Ладно давай если у тебя нет Четкого понимания как это выглядит потом будете домашнее задание так дальше Давай 19 22 что здесь у нас как-то можно изменить улучшить сделать более питание еще не знаю Вот честно не сходу не вижу Окей Ладно тоже наверное надо посмотреть лиском прихеншн там для такой истории есть очень очень прикольно Я просто честно вот ненавижу списков генератора Можно мне приходилось их читать вспомнил как у lot со списка
00:49:16 - 00:50:47
включения называется мне приходилось их читать в этом несколько раз не давали проекты на переписку и я с ними наплакался ненавижу так ничего страшного нет Тебе проще есть Ладно по остальному как бы условно Ладно давай поговорим о том что все-таки вернемся к заданию У нас есть русская колода есть французская но хотя бы на уровне идеи как мы будем это дело решать Они же прям очень похожи правда Ну да Поэтому и был один класс для обоев А еще из этого же класса можно было сделать колоду например для других игр
00:50:20 - 00:52:06
там знаю 1000 или 100 тоже задав карту как бы это решал один класс они Ладно так давай на этом слайд холдингом закончим Давай по-быстрому пробежимся по твоим проектом это тоже очень интересно вот особенно последние которым ты так гордишься его Интересно было бы мне посмотреть [музыка] [музыка] а ритме я к нему так и не написал но как-то два дня сидел анонсировал каждую функцию то есть в целом просто залезет как-то зайдя вход понятно что Откуда делается но переднюю здесь требуется объемные руки Ладно
00:51:11 - 00:52:45
давай черт корицу к черту доверишь давай покажи красоту давай покажи логику как ты разбивал вот этот проект на кусочки Как откуда ты это придумал Расскажи логику как ты это начал Что зачем Что у тебя за что здесь отвечает так это можно расширить если будет какая-то задание другое Хорошо первое что здесь есть Цифра это папка которая закидывается на на сервер сиенвом и просто нажимаем нажимаете докер компуста все И вот запустился если правильный ничего не надо сами и иммиграции проходят и подгружаются То есть он
00:52:29 - 00:54:05
поднимает докер и в этом контейнере он запускается правильно Ладно про докер Давай кстати посмотрим что у тебя Понятно Вот Ну вот он [музыка] Тут ничего абсолютно интересно ладно То есть мы ставим все из рекламы И что дальше создаем приложение [музыка] [музыка] [музыка] У меня есть разработки чтобы можно было на Живую будете менять вот а есть докер компост Ну грубо говоря пруд в инфре и вот в нем уже запускается бот я обращу обращу внимание что ты вот логин пароль вывозе данных так конечно да именно
00:53:20 - 00:55:31
Но потому что почему это делал а как можно по-другому Ну здесь есть даже есть через [музыка] значок этого доллара из докер короче компост подтягивает но не понимаю почему так нельзя а я вспомнил вот так делается я понял почему я так не сделал потому что у меня были проблемы с базой данных а эти проблемы надо было очень быстро решать потому что проект сдавал другому разработчику я его максимально быстро сдавал им и дебажил вот так вот на Живую вот так Вот потому что все равно это Open Source проект напротив все другое
00:54:54 - 00:56:32
и поэтому будем Будем надеяться что кто-то поменяет логин и пароль а кто-то не поменяется и на этом мы тоже будем надеяться когда придем И попросим из него чему-нибудь цену окей ладно А как вообще ну как вообще имеет смысл хранить [музыка] такие вот критичные вещи там благие на пароль в проекте Я бы хранил все хорошо дальше к Бота у нас время уже ставится немножко минут 10 с тобой чтобы еще обратную связь надо сделать так рекламу даже теста есть это говорю в теста не умеешь здесь целая куча всякой ерунды которая
00:55:47 - 00:57:27
например Здесь тестировал а ну это вот поправка сообщений типа стримам здесь тестирование подключения к базе данных здесь я тестировал базу данных в основном потому что как бы пишется функция и вызывать ее отдельно неудобно как Джанги шелла тут нет чтобы проверить поэтому я занимался [музыка] ерунда Ладно давай тогда мы посмотрим так мы это точка запуска работа чтобы можно было из удобной директории дернуть здесь Проходит окружение токен проходит инициализация базы данных команды подгружаются диспетчер
00:56:45 - 00:58:22
регистрируется где-то вот тут и подключается тоже где-то здесь и все и запускается грамма под капотом реализован реализованы то есть мне не пришлось сделать он сам каким-то образом именно просто магия абсолютно ашанбек и ничего это такое Олимпик и не это служебный файл олимпика здесь по моему я тоже захард хотел Бота Да если захард ходил но но я если она переопределяю в eng в точку вообще зачем для миграции чтобы делать миграции как где-то хранятся эти файлы миграции Да они хранятся тоже здесь база данных миграции
00:57:44 - 00:59:49
я правильно понимаю что у тебя вот этот Main это основной файл который просто берет все запускает основная логика сейчас вот вот в обработчиках здесь так сказать Центральный файл и нет здесь регистрируется хенджеры То есть я их разбил по блокам То есть это команды даже Нет скорее Вот это всех эндлера которые работают без машины состоянии то есть мне Что такое машина состоянии машином состоянии когда программа запоминает некий статус пользователя чтобы помнить его предыдущие ответы и на основе предыдущих ответов
00:58:55 - 01:00:39
формировать хорошо дальше это выхода из машины стояние то есть чтобы можно было кэш вот этот обнулить одна и та же функция просто разными по-разному зарегистрировано чтобы из разных мест работать но здесь диалога потому что главное здесь все функции какой-то конечный автомат а это очень похоже на на urls.pi в джанге то есть здесь точно по точно такому же принципу сверху вниз идет запрос и первое совпадение фильтра То есть как только фильтр регистрирует Ну выдает True срабатывает функция которая передается
00:59:59 - 01:01:46
вот сюда то есть вот это все функции которые Должны сработать А это фильтры которые должны фильтровать Почему вы не читает потому что здесь есть юзер потенциально планировался админ то есть отдельный юзер интерфейс отдельно планировался админ интерфейс и все это как бы консолидирует в себе и нет потому что за обработку отвечают а дальше эти хэндлеры уже есть для юзера например диалог настройки диалог их там тоже несколько это диалог что было самое сложное в этом проекте самое сложное было учет токенов наладить
01:00:58 - 01:02:29
Потому что когда ты обращаешься наладил я это вот здесь Но это функции обработчики Да сейчас сейчас даже чуть-чуть если у нас есть еще минут лишняя минута сейчас покажу откуда стартует У нас есть юзер диалог сам диалог сам диалог происходит [музыка] Как только приходит сообщение от пользователя она перехватывается и создаю это сообщение создается базе данных то есть что сохраняем базу данных описания вообще мне каждый функции есть и описание Что она делает почему-то она не открывается [музыка] а как ты добился того чтобы у тебя в
01:01:47 - 01:03:33
каждой функции было описание везде есть вот это просто я уже месяц этим проектом не занимаюсь и конкретно откуда стартует логика Но короче логика в том что как Каждый раз когда создается сообщение сделал каждый раз это создается сообщение запускается это сообщение передается в функцию которая считает сколько в нем токенов и просто юзер аккаунт прибавляет это количество токенов звучит очень просто но наверное я с этим неделю мучился потому что токены считаются странно они считаются Я долго искал референс по которому этот расчет
01:03:20 - 01:04:52
будет происходить потому что это вот это я не сам написал и украл Я долго искал чувака Кто нормально ты реализовал у которого не пропадают токены Проблема в чем просто посчитать токены легко и записать их Но количество потраченных которые посчитал кофе openai и количество потраченных которые я у себя внутри посчитал они разнились и вот этот и вот эту разницу вот за счет всех вот этих вот плюс там один минус один и вот это вот плюс 4 это все очень неочевидно в документации этого нифига Нет просто такое слово вот это все это было
01:04:13 - 01:05:34
не столько был я нашел чувака который реализовал более менее похожий функционал и у него было Вот это описано Ну ладно примерно по коду мне твой уровень в первом приближении понятен здесь конечно смотреть смотреть Давай тогда перейдем к следующему этапу следующий этап это у нас Задавай свои вопросы относительно наши замечательные компании у нас сегодня не получится чутье у нас сегодня я постараюсь ответить максимально а у вас сейчас нужен стажер так понял стажер он чем будет заниматься поначалу
01:04:56 - 01:06:29
смотря у нас назревает несколько разных проектов и стажер у нас по сути будет Заниматься тем что никто не хочет делать Вот у нас очень мало кто хочет в один из Битрикс делать Вот с одной стороны Мы хотим дружить с заказчиком Он классно реально да И постепенно его перевозить на другое на питание чисток но его некоторое время надо Будет поддерживать Это поддерживать тоже должны будем мы и Стажеры нужно будет краткий период взять и научиться в Битрикс таким образом чтобы там хотя бы какую-то информацию менять
01:05:47 - 01:07:10
еще что-то это не Rocket Science но тем не менее определенную гибкость ума и желание нырнуть оно потребует бонус такому человеку можно сказать что после того как он пострадает с этим заказчиком то этого заказчика перевозить на джангу как минимум Ну там не сильно сложный проект вот будет именно он вот такой вот кейс у себя где-то внутри добавится Вот это раз два У нас есть тоже достаточно большие проекты назревают там остапят и там нужно будет человек который Но если он не умеет восстать который он хотел бы научиться
01:06:28 - 01:08:00
Как правильно делать остапя У нас есть специалисты в этом стеке Вот но всякие мелкие дела мелкие таски в принципе наверное имеет смысл рутинная отдавать стажёру который бы вот на этом руку набивал и третий момент Это классно это замечательно это не сильно сложная история которая как раз позволяет человеку нормально вкатиться В проект посмотреть что у нас там устроено и с гарантии ничего не сломать совершенно точно потому что если ты тестирование да то есть если если тесты как бы они не идут ну ничего поправим тесты не страшно
01:07:15 - 01:08:38
да Или наоборот поймем что где-то у нас коде не так это очень круто что тесты не идут Вот но как бы если тестов нет вообще-то тогда очень печально так что Это вот три направления на которые мне нужен стажер Ну а постепенно он уже будет вставать на какие-то проекты будет пилить мы скажем Извините Ничего страшного По времени не переживай Просто я тоже таким моментом как к нему с ним взаимосвязь происходит то есть им удается типа вот тебе значит ТЗ мы как бы ждем результат получается так но это идеальный стаж если если в него даешь
01:07:56 - 01:09:34
нет не ТЗ там все-таки декомпозиция занимается Project Manager то есть и просто дать ТЗ на сделай ну блин ну так не бывает то есть обычно все таки мы декомпозируем то есть вот такой вот фичу надо выпилить она сделала должна быть Вот так решена вот так вот так если мы делаем какой-то новый проект то Сначала мы говорим так сделай основу для проекта Вот посмотри доки как это делается и сделай а потом у нас код review мы говорим сделал молодец или сделал Но здесь немножко не по доки давай вот это посмотрим и как-то переделаем потом
01:08:53 - 01:10:08
следующий момент в этом проекте нам нужно приложуха сделай он делает приложу мы смотрим так приложухи Вот это хорошо вот здесь вот почему так сделано обсуждаем смотрим что удачно что очень удачно что настолько удачно что мы даже не знали что так можно делать а человек сделал не просто кинули ТЗ делать хочешь [музыка] Ну это круто устроена насколько я слышал вот знакомы кто устраивался То есть если ребята если вам Родин предложит работу лучше соглашайтесь это у меня это я сейчас в этих самых утонул запросах Кстати да предложение
01:09:30 - 01:11:13
валидно буквально пару дней Потом потому что я точно знаю что придут люди которые знают умеют практикует Я просто потом не буду гарантировать что оно это вакансия она открыта Вот но плюс ада еще момент по стажеру чтобы тоже руку набить У меня есть замечательный мальчик для битья собственный сайт вот и он уже созрел до для рефакторинга Ну даже не для эффекта а развития там надо какие разделы сделать вот и в общем-то поскольку это некоммерческий проект туда стажёра запустить не страшно даже если что-то
01:10:23 - 01:11:43
сломается вернее не запустится в срок дедлайн мы не продал бы получим Ну в общем-то взаимодействие с человеком но без всяких рисков для заказчиков это очень плохо нет у нас Какая история у нас бонусная история То есть у нас и сотрудники ничего не получают там у них какая-то есть зарплата но она абсолютно не серьезная То есть как бы составные Деньги идут с бонусов То есть если у человека есть проект А у нас есть заказчики которые постоянно с нашими работать с нами Работают но есть бюджет на который он нас на нас тратит из этого
01:11:03 - 01:12:20
бюджета платится зарплата то есть чем больше проект у тебя работаешь тем больше у тебя денег в итоге получается то есть ну не скажу что у нас миллионы можно заработать Ну 80-90 в принципе на джуне это ощущение возможно Вполне себе но это прям нагрузка это прям надо будет работать стажёру Ну там можно поставить 10 20 30 наверное получится но без гарантии это человек зависит насколько он классный Ну ладно [музыка] постепенно перейдем если вопросов больше нет да нет наверное сразу зарплата начинает Конечно
01:11:48 - 01:13:32
нет зарплата у нас коллектив хорошая но зарплату пока маленькая мы ребята растущие миллионы предложить не можем это правда здесь даже не буду говорить что в этом плане Молодцы но тенденция к увеличению есть Ладно давай по состав ты прям классная общаться с тобой приятно Прикольно вот прямо одно удовольствие есть рассуждение есть логика есть понимание как куда зачем то есть прям по кайфу с большим удовольствием А по хордам но тесты так вышло что их надо во всяком случае у меня Я точно знаю что во многих
01:12:47 - 01:14:21
компаниях Эта история тоже важна То есть даже если ты умеешь просто во сердца и перед тем как начинаешь писать что-то Ты сделаешь какие-то тесты напишешь мало-мальски это прям однозначно большой плюс Это потому что ты понимаешь наперед как должен работать твой код что-то от него ждешь и даже когда тебе просто пишут ТЗ говорят ТЗ что мы хотим от тебя Ты сразу накидал пару тестов это прям кайф рекомендую в эту штуку прокачаться будет прям проще и значительно лучше плюс еще в коде если у тебя эта штука
01:13:34 - 01:14:56
будет покрыта тестами то это тоже совсем другой уровень будет к вопросу о том что отлаживать принтами это как бы Ок с одной стороны так делает никто не признается Но конечно теста без тестов не так вот но про то что не знаешь абстракцию не сказать что это прям часто используется в питомец мысли АБС Да нет я умею я как бы знаю как им пользоваться просто ни разу этого не делать Ну можно в принципе порешать пару задачек и если у тебя будет Вот такая возможность немножко блеснуть чешуи тоже в плюс но не прям
01:14:16 - 01:15:33
плюс плюс Во всяком случае в моих глазах Знаешь хорошо не знаешь не страшно Вот листка prefension Ну блин здесь сложный момент Наверное это с одной стороны вкусовщина с другой стороны точно знаешь что есть ребята которые завалили Собес после из-за того что им сказали ребята код не питание так не пишет У нас есть замечательный им надо использовать языка это такой компании не прошел [музыка] этот вопрос привычки на самом деле то есть как бы это реально вопрос привычки она стоит немножко на там лидкоде на
01:14:55 - 01:16:26
каком-нибудь порешать задачки которые решаются в одну строчку У тебя глаз набьется ты будешь читать это нормально то есть вложенность два Ну такое себе уже на самом деле может быть с некоторой натяжкой можно сказать что это такая фигня но на одном уровне вот это вот штука она читается намного лучше чем куча вот этих столбиков Но вопрос привычки но опять же видишь по таким мелочам можно понять насколько у тебя насмотренность коде То есть как бы человек который много читает питанизм вот этот весь он прекрасно читать должен
01:15:41 - 01:17:08
уметь у него с годами или со временем можно покопаться здесь точка роста она тоже не сказать что прям супер критичная да но вот она есть да ладно преобразование типов ничего не скажу то есть как бы нет некоторые уверенности что взять и стр можно из листа сделать все что нам нужно строчку Ну как было это тоже мелочь [музыка] скорее досадная досадная фигня чем какой-то серьезный пробел вот знаешь 8 это классно не все знают его наизусть но линтер помогает тем не менее Так что вот по Лайф кодингу могу сказать что слабовато
01:16:23 - 01:18:06
если говорить про Live coding я бы сказал что Наверное нет Потому что какая-то есть Ну какой то есть умение Да но структурность и того понимания как нужно писать его по стиля но его в общем-то я не заметил то есть вот эти все истории по рассуждения хорошие то есть и то что ты использовал для карты дата класс тоже вообще прям по кайфу я прям кайфанул и поэтому сильно усложнил Тебе задание в надежде на то что прям вот вот прям вот страшно страшно страшно будет потом смотреть Вот но наверное надо попробовать пышечку разные примеры на
01:17:15 - 01:18:52
наследование на капсуляцию просто куда-то куда-то в сторону почитать посмотреть попрактиковать Маловато практики допускает так вот по самому погиту но мы посмотрели вы не очень много вот но могу сказать что создается впечатление что писал Действительно ты вот то что то что у тебя в гите реально как бы написано тобой это очень ценно то есть технически Если бы у меня стоял вопрос давать тебе стажировку или не давать стажировку я конечно посмотрел бы на других кандидатов но на их уровне Ну как бы на если берем какой-то среднего
01:18:06 - 01:19:43
кандидата ты Вполне себе [музыка] есть хорошие шансы что другие будут сильно хуже и тебе скажут Слушай ну давай ты то есть Джон стажер Вполне себе ну подкачаться надо вот в этой истории лайф-кодинге я допускаю что у тебя есть опыт в решении задачи каких-то алгоритмических которые тоже надо спрашивают или нет У меня есть вот это кайф это такая для фриланса такая для небольшой компании такая для галеры То есть в принципе если у тебя есть желание устроиться на какой-то вот такой вот штуку то как бы шансы очень хорошие можешь
01:18:55 - 01:20:39
поучаствовать в Голодных играх вполне возможно есть тогда не можешь Я уже нашел работу мне Ну тем более так что ничего удивительно что Ты работу нашел потому что у тебя есть код который решает бизнес задачи это очень ценно очень круто то есть не всегда оказывается нужен вот этот Лайф кодинг Не всегда нужно понимание чтобы решать задачки Так что вот я бы сказал что я бы наверное тебе оффер дал с некоторой натяжкой посмотрел бы на других кандидатов Скоро это в общем-то ты нашел работу не у меня значит человеку другие другие
01:19:52 - 01:21:35
качества в тебе цены и в общем-то ты разработчик а всякие штуки они придут Я думаю что вот как-то так [музыка] чем оправдываться чтобы люди не видели в этом Вот ладно на этом оптимистичным но тем Всем пока пока спасибо что смотрели вот и тебя попрошу не выходить никогда из кадра сейчас я отключусь
01:20:46 - 01:21:41