Михаил Непряхин: Так всем. Привет как видно слышно поставьте пожалуйста, плески
Михаил Непряхин: так Окей
Михаил Непряхин: так м сегодня мы говорим про интерфейсы
Михаил Непряхин: вообще давайте. Давайте
Михаил Непряхин: подытожим немножко вообще Что Мы Прошли. И Что еще
Михаил Непряхин: побази Голову. Нам надо
Михаил Непряхин: значит если так вот говорить Что является, базой
Михаил Непряхин: Что знать вест хэм.
Михаил Непряхин: Так начну во-первых значит это свайсы
Михаил Непряхин: большая. Тема
Михаил Непряхин: Свалась. И гонка данных это Ну нужные Для Собеседников Для жизни
Михаил Непряхин: картинка Тормозит
Михаил Непряхин: Выпленов Рпнов никаких Нету
Михаил Непряхин: ввп не должно Быть никаких
Михаил Непряхин: так а По картинке Подскажите кто нибудь Еще
Михаил Непряхин: как Коно тормозить не тормозит
Михаил Непряхин: Картинка
Михаил Непряхин: лен
Михаил Непряхин: закажи Странно
Михаил Непряхин: тормозить сильно
Михаил Непряхин: вообще
Михаил Непряхин: лдпр точно никакой не подключен
Михаил Непряхин: это очень Странно У Меня от Прямого соединения что Меня Любит
Михаил Непряхин: звукок
Михаил Непряхин: ну
Михаил Непряхин: донован Давайте
Михаил Непряхин: Да
Михаил Непряхин: видимо Это зум Уже Тормозит
Михаил Непряхин: ладно если Будет прямо, невозможно
Михаил Непряхин: То Пишите
Михаил Непряхин: Так короче Да свайсы
Михаил Непряхин: немножко. Мапы
Михаил Непряхин: Ну мапы в общем-то оно не так критично как свайсы ну просто важно понимать что мама, Она конкурентна в нее нельзя писать и если что нужно защищать медлик
Михаил Непряхин: далее ну рантайм
Михаил Непряхин: ну воронтами как бы две Темы поронтайм Это во-первых Это планировщик
Михаил Непряхин: а вот про Которого. Мы тоже, разговаривали на прошлом занятии
Михаил Непряхин: и немножко.
Михаил Непряхин: Аа гормочка лектор ну совсем немножко. Просто надо понять что он есть
Михаил Непряхин: вот Это то что касательно ронтаймы что происходит в фонтаме Это как бы Две основные Вещи
Михаил Непряхин: вот дальше
Михаил Непряхин: а
Михаил Непряхин: так свайсы.
Михаил Непряхин: Свайся планировщик ну вот сегодня иначе надо интерфейсе посмотреть
Михаил Непряхин: и щупали про п про полиморфизм в общем-то это та основа многих, патронов, и вообще ввп и останется еще у нас
Михаил Непряхин: по теории еще одна тема большая это про гурутины Каналы, вот все вместе Каналы, вэйт группы
Михаил Непряхин: и конструкция селект
Михаил Непряхин: вот мы
Михаил Непряхин: вот эта в Принципе база она не такая большая вот но если вы типа понимаете то уже хорошо
Михаил Непряхин: ру
Михаил Непряхин: ну два Компонента осны вернтайма Это вот ш планировщик и короче коллекторов
Михаил Непряхин: по большому счету Можно считать что там больше ничего нет
Михаил Непряхин: ну в целом как бы очень большая часть планирования да то есть мы имеем абстракцию
Михаил Непряхин: такую же по сложности даже сложнее чем в операционной системе Поэтому по Сути как бы у нас гоу работает в еще одной операционной системе
Михаил Непряхин: очень. Крупный шарлик на улице двадцать пять
Михаил Непряхин: а ну
Михаил Непряхин: чуть-чуть все сломалось что ли чего вообще происходит
Михаил Непряхин: как будто, бы там оно
Михаил Непряхин: как будто, бы здесь ничего не трогалось на самом деле
Михаил Непряхин: Ммм
Михаил Непряхин: Будто все нормально вообще ничего не менялось
Михаил Непряхин: Странно конечно
Михаил Непряхин: каким,
Михаил Непряхин: так
Михаил Непряхин: значит про про интрофейса
Михаил Непряхин: так вот нормально то есть вы Еще по идее Кот должен быть точно Так же
Михаил Непряхин: но михаил Возможно мне ходило это
Михаил Непряхин: поток звая, впредь
Михаил Непряхин: noise
Михаил Непряхин: видимо мид тоже начали блокировать судя по всему
Михаил Непряхин: и похоже ко мне придется перешать чего Другое место,
Михаил Непряхин: ну и
Михаил Непряхин: Даш
Михаил Непряхин: Ммм
Михаил Непряхин: так в общем
Михаил Непряхин: интерфейсы
Михаил Непряхин: а что это такое Ну во-первых зачем да то есть как их использовать значит есть ли в вашем языке были не трофейсы
Михаил Непряхин: Ну вот так вот камеру выключал.
Михаил Непряхин: Легче стало или нет
Михаил Непряхин: тормозит или не тормозится
Михаил Непряхин: ну шоу как без камеры
Михаил Непряхин: тормозить на корреспондентом уже записаться вмешиваться
Михаил Непряхин: теперь, они понятны
Михаил Непряхин: ну Стриминг, Не в четыре Ка Он типа в два с половиной Ка
Михаил Непряхин: Раньше, Картинка убывала все окна зума а Сейчас Нет
Михаил Непряхин: ну это Очень Странно Но Возможно он как-то обновился
Михаил Непряхин: Так ну смотреть Есть вариант Сейчас Давайте Я Попробую мид. Вдруг сми Там будут лучше То есть я сомневаюсь Что дело у меня Конечно очень Хороший интернет я думаю Что дело
Михаил Непряхин: взуми
Михаил Непряхин: Скорее всего начали. Блокировать
Михаил Непряхин: Сейчас я сделаю другую
Михаил Непряхин: попробуйте попробуйте Мид
Михаил Непряхин: Так как Же как Же это
Михаил Непряхин: Так Вот
Михаил Непряхин: Так Ну Что как митя.
Михаил Непряхин: Ту кто хочет можете Мне оставаться когда
Михаил Непряхин: не проблема
Михаил Непряхин: так ну что Давайте здесь проверим
Михаил Непряхин: так раз-два-три как тут тут впс два кадра Не два кадра
Михаил Непряхин: Секунду
Михаил Непряхин: так
Михаил Непряхин: мне застыдины в пресс
Михаил Непряхин: может быть Лучше картинка достаточно хуже чем взаимодействие на Экран
Михаил Непряхин: Ну и
Михаил Непряхин: что же что же она сломалась
Михаил Непряхин: слушайте Ну если Так же как безумие
Михаил Непряхин: видимо эточит У Меня
Михаил Непряхин: потому что как Будто Бы
Михаил Непряхин: нормальная статья была
Михаил Непряхин: Так чуть ли Не тот остался
Михаил Непряхин: Так ладно короче Давайте Попробуем что-нибудь Подсказывать вы там сами шуберте где лучше.
Михаил Непряхин: У и
Михаил Непряхин: это и
Михаил Непряхин: Изуми ка Будто, на рустанова Сейчас для Меня лучше. Того чем было
Михаил Непряхин: в начале
Михаил Непряхин: Странно
Михаил Непряхин: да У людей-то немного У Меня Там Конференция. До Ста Человек как-то Проплачено
Михаил Непряхин: ну? Явно чего То Вдем проблема. С сити
Михаил Непряхин: Так ладно Давайте Пытаться Пытаться Рассказывать нам
Михаил Непряхин: короче
Михаил Непряхин: А Что Мы Хотим? Какой функционал от интерфейсов Мы Хотим? Значит Вот Есть функция
Михаил Непряхин: У нее
Михаил Непряхин: сигнатуре
Михаил Непряхин: мы тут принимаем тот месседж
Михаил Непряхин: и
Михаил Непряхин: принимаем
Михаил Непряхин: интерфейс
Михаил Непряхин: а зачем так
Михаил Непряхин: Эээ потому что
Михаил Непряхин: значит вы зачем нужен. Энтрофей знаете как он описывается
Михаил Непряхин: а Тайп название интерфейса и ключевое слово интерфейс
Михаил Непряхин: и далее
Михаил Непряхин: смотрите у нас есть
Михаил Непряхин: метод
Михаил Непряхин: то есть в Интерфейсе просто описываются методы поведения
Михаил Непряхин: по сути интерфейс Это универсальный. Тип
Михаил Непряхин: То есть он полиморфный
Михаил Непряхин: он Реализует полиморфизм гоу и он не
Михаил Непряхин: эээ как бы Это не строгий не строгая структура А это Описание.
Михаил Непряхин: Каким поведением Должна обладать структура которую Мы хотим? Передать
Михаил Непряхин: А когда Мы говорим что Вот например Мы хотим? Работать с какой-то жесткой структурой
Михаил Непряхин: а вот у меня она здесь истина Сейчас найдем
Михаил Непряхин: вот у меня есть
Михаил Непряхин: врайтер какой то есть райтер
Михаил Непряхин: и у него есть метод
Михаил Непряхин: брайт
Михаил Непряхин: в общем-то сигнатура. Совпадает с энтрофейсом
Михаил Непряхин: и это значит Что Мы можем Эту структуру использовать в функциях которые принимают интерфейс от соответствующей диссертации
Михаил Непряхин: мы конечно же можем и строго сказать что наша функция принимает только
Михаил Непряхин: стд
Михаил Непряхин: стэй аут райдер
Михаил Непряхин: вот на только райтер принимает жестко и все
Михаил Непряхин: и как бы тоже все ок Мы можем вызвать у этого Врайтера который Мы принимаем метод врачей
Михаил Непряхин: ну собственно вот он Мы его можем Вызвать
Михаил Непряхин: и Но
Михаил Непряхин: потом появляется надобность когда мы хотим в каких-то Ситуациях вот в стд-аут Писать
Михаил Непряхин: а в каких-то Ситуациях файл, Писать
Михаил Непряхин: запустись у нас шоу
Михаил Непряхин: файл,
Михаил Непряхин: норайтер
Михаил Непряхин: и
Михаил Непряхин: получается что, вот мы Хотим, не Хотим, еще Раз, писать тот же самый код то есть здесь у нас много кода мы что нам придется две функции писать да
Михаил Непряхин: Одна, функция у нас может принимать стд-аут
Михаил Непряхин: райтера
Михаил Непряхин: а вторая функция вот вообще в один день точно такая же, То есть нас поведение Это устраивает но она принимает
Михаил Непряхин: файл.
Михаил Непряхин: Так я смотрю Миграция какая-то Да все-таки
Михаил Непряхин: Люди Выходят Перезаходят
Михаил Непряхин: дайте какую нибудь обратную, связь насколько все Плохо
Михаил Непряхин: иссяк
Михаил Непряхин: Ммм
Михаил Непряхин: Окей
Михаил Непряхин: ладно в Зоне Говорят хорошо
Михаил Непряхин: ну Еще михаил Можете Тоже,
Михаил Непряхин: Джемма Терпима
Михаил Непряхин: Окей
Михаил Непряхин: Так вот значит интерфейс решает проблему когда Мы хотим, вот чтобы Не писать Не Дублировать Код, повторно а Мы можем просто сказать Окей значит Мы
Михаил Непряхин: имеем структуры
Михаил Непряхин: с Одинаковыми. Методами То есть вот Наш контракт
Михаил Непряхин: и этот контракт Мы хотим? Абстрагировать
Михаил Непряхин: и для этого заводим энтрофейс
Михаил Непряхин: называть его можем как угодно но есть соглашение в Голову. Что
Михаил Непряхин: интрофис должен заканчиваться наьер ну это не Всегда, так ну вот если вы какие то библиотечные интерфейсы пишете
Михаил Непряхин: то ээ Трофей желательно называть оканчивающимся наер
Михаил Непряхин: и и
Михаил Непряхин: он не требует строгой имплементации то есть вот когда У нас есть структура
Михаил Непряхин: если она имеет. Метод который удовлетворяет интерфейсу
Михаил Непряхин: то Эту структуру можно Использовать в любом месте и ну где где принимается вот этот интерфейс
Михаил Непряхин: интрофейс может Быть называться как угодно Буддист У нас называется в райтер интерфейс да но он можно назвать вообще абсолютно как угодно главное чтобы вот этот контракт он совпадал То есть в этой не трофей написано.
Михаил Непряхин: Что и
Михаил Непряхин: а и
Михаил Непряхин: он работает только с теми структурами у Которых есть вот этот метод
Михаил Непряхин: и если. Оно совпадает То оно Будет приниматься
Михаил Непряхин: а в других языках ну Обычно все-таки чаще встречаться Не так тайпинг, а явная имплементация то Есть Есть мы специально должны вот здесь вот
Михаил Непряхин: сделать какой то имлемент
Михаил Непряхин: и вот Что конкретно Мы Имплементируем вот этот самый интерфейс
Михаил Непряхин: Но в Голову. Это Не нужно То есть потому что ну как бы Доктайпинг, что-то такое типа Если у вас есть структура которая летает как утка крякает как утка там плавает как утка то
Михаил Непряхин: наверное это утка а на самом деле не то что наверное это утка а как бы не важно. Утка или это не утка главное Что у утки есть правильные методы если есть методы правильные то значит Мы можем их использовать
Михаил Непряхин: Поэтому Мы заводим аа Одну Функцию
Михаил Непряхин: и используем вот этот вот интерфейс райдер
Михаил Непряхин: если, вот сюда вот мы передадим
Михаил Непряхин: а утку
Михаил Непряхин: ну утка должна быть сметанным в рай да
Михаил Непряхин: то ну Кот у Этой утки вызовет метод рад если мы сюда передадим курицу но у нее есть метод рай то вот в Этом месте Кот вызовет у Этой курицы метод райд
Михаил Непряхин: вот и оно Реально прикольно работает То есть этим приятно пользоваться вы Не задумываетесь что надо что-то импровизировать
Михаил Непряхин: если, вы понимаете что функция принимает интерфейс ну. Берете и добавляете ему метод или оно просто все работает
Михаил Непряхин: так обязательна ли структура или может быть любой век соотношенности натуре а у нас столько структура ну. Не обязательная структура Да естественно любой объект у Которого есть метод ну. То есть Это может быть и
Михаил Непряхин: все что угодно то есть как бы тут структура не обязательно главное чтобы у него было и были методы правильные нужные методы
Михаил Непряхин: то есть смотрятся именно на методы
Михаил Непряхин: так и
Михаил Непряхин: так здесь вот пока вопросов, нет пока вот все понятно,
Михаил Непряхин: потом переключались может что-то пропустил как тут, важная штука и дальше бомба это еще дальше Развивать
Михаил Непряхин: пока силке и понятно,
Михаил Непряхин: а с Лишним этот год ничего страшного пусть будут нас интересуют только методы которые вот минимально необходимы у Этой утки которого мы которую мы тут передаем может быть тысячи методов не важно главное что должен быть вот этот вот один который будет удовлетворять
Михаил Непряхин: ну и конечно вся Сигнатура, должна быть э ну видите как бы вот эти Названия Они тут не обязательны в интерфейсе их можно вообще ничего Не писать вот
Михаил Непряхин: суть в том что вот главное что в интерфейсе было Был тип который Мы аргумент который Мы принимаем и возвращаем значение какого они типа
Михаил Непряхин: но для удобства обычно и
Михаил Непряхин: вот если нету метода
Михаил Непряхин: как там оно
Михаил Непряхин: ну как я обычно этим не пользуюсь но здесь а вот генеральный метод
Михаил Непряхин: да вот тут, есть какие-то варианты для генерации я обычно просто надо меня реализовать какой-то интерфейс я копирую. Смотрю у Меня нету да а мне надо ну. Просто там пишу
Михаил Непряхин: и и Уже дальше оттусься от первого там из них Профессия Что мне надо было и дальше здесь уже описываю как она должна себя вести
Михаил Непряхин: вот Поэтому Удобнее здесь перемены оставлять
Михаил Непряхин: ну здесь видите еще такой пример
Михаил Непряхин: урайтера вот Он Что записывает
Михаил Непряхин: принимает спайс байт возвращает ошибку а вот это вот количество записанных бай ну значит просто это я тут показал вам пример стандартного интерфейса и Там в оригинале версии н Так и есть то. Есть это Количество перных бай
Михаил Непряхин: вот ну наверное в этом случае ну там из описания, видно конечно но можно было бы тут как-то там написать еще даже более понятнее губку Позволяет, в Сигнатуре больше дать информации
Михаил Непряхин: так. Почему Ониров Есть написанные рядом Со структурой
Михаил Непряхин: потому. Что это
Михаил Непряхин: ну. Тут. Наверное вопрос про то что обычно
Михаил Непряхин: думаю Возникает вопрос где Держать интерфейс да Ну Давайте Так
Михаил Непряхин: почему он Не рядом со структурой.
Михаил Непряхин: Потому. Что Мы интерфейсы держим
Михаил Непряхин: преимущественно
Михаил Непряхин: в Том месте где они используются
Михаил Непряхин: вот смотрите интерфейс используется вот в Этой функции,
Михаил Непряхин: ну вот Мы его используем Мы видим где Мы его используем да
Михаил Непряхин: и значит интерфейс Должен находиться здесь же в этом же пакете рядом с функцией это такая договоренность
Михаил Непряхин: Что интерфейсы держим в месте Использования.
Михаил Непряхин: Это первый вариант а второй вариант мы можем сделать Отдельный пакет для него и вот прямо туда его затолкать
Михаил Непряхин: но не рядом со структурой
Михаил Непряхин: потому, что
Михаил Непряхин: ну в библиотеках вы можете такое встретить То есть в Принципе рядом со структурой тоже кладут, но Идея же в том что
Михаил Непряхин: вы все равно его как бы важно видеть интерфейс это как бы контракт да по сути в том месте где вы его будете использовать
Михаил Непряхин: а структурой ну его Она просто реализует и все
Михаил Непряхин: и более того структура Же может реализовывать кучу интерфейсов сама того не зная то здесь может быть очень много разных методов и они просто есть
Михаил Непряхин: и Бах
Михаил Непряхин: а получается так что они реализуют на самом деле там
Михаил Непряхин: три интерфейса да то есть тут может быть тренер фейса райтер клаузер, и коузер, райтер
Михаил Непряхин: а ему всего лишь два метода имеем
Михаил Непряхин: так
Михаил Непряхин: а то есть дублирование интерфейса норм
Михаил Непряхин: Так а Мы даже и Не Контролируем дублирование профессии То есть и
Михаил Непряхин: кто его знает чьи интерфейсы его тут удовлетворили случайно
Михаил Непряхин: Так интерфейс сергей сергеевичем принц, показ про это Окей
Михаил Непряхин: так как понять какие Методы нужны для интерфейса
Михаил Непряхин: ориентируемся только на структуру или можно что-то еще
Михаил Непряхин: Ну смотрите
Михаил Непряхин: короче интерфейсы
Михаил Непряхин: и это такая тема
Михаил Непряхин: странная короче когда вы Их понимаете
Михаил Непряхин: то типа когда смотрите такие Вопросы, типа как Понять вы так ну что там понимать но вспоминая себя когда я разбирался с этим
Михаил Непряхин: это был настолько черный ящик настолько блэк бокс что я вообще никогда не понимал ну вот просто вот в какой-то момент вот когда вот много вот с этим вот работал в библиотеке писал потом Раз, такой а понял, ну, Это вот просто вкавыкал
Михаил Непряхин: Поэтому я допускаю
Михаил Непряхин: что а потому что смотрите здесь же вот
Михаил Непряхин: вопрос зачем он очень важный типа а зачем вообще нам эти на профессии нужны типа ну можно же Без них и как бы да, можно а
Михаил Непряхин: как бы вы поймете зачем они нужны какие методы и вообще как это работает только вот когда насмотренность появится вот у других вы посмотрите как оно вот Сейчас Мы Еще Клянем Там стандартные какие-то Интерфейсы.
Михаил Непряхин: Но оно прочит Это из Области. Ввп да как бы Это полиморфизм
Михаил Непряхин: и Это более глубокий философский вопрос зачем нам нужно полимурное Поведение но Пока, мы просто разбираемся что в гоу оно реализовано вот Так что значит у нас знак Тайпинг, Что У нас Нет явной имплементации
Михаил Непряхин: если так Получилось Что вам нужен Какой То интерфейс ну либо вы его
Михаил Непряхин: Дописывать какие-то Методы удовлетворяете ну либо как бы вы Не сможете работать с Этой функцией со своей структурой если, У вас Не будет Этих методов
Михаил Непряхин: так ориентированная структура можно что-то еще ну вот на Что ориентируемся на насмотренность на опыт и как бы вот оно не Сразу приходит короче такая тема сложная
Михаил Непряхин: Так если интерфейс используется во многих, местах то его нужно дублировать в Эти места Использования Не нужно использовать вы же ведь можете интерфейс значит Допустим смотрите какая История
Михаил Непряхин: А вот У нас
Михаил Непряхин: есть какой-то Пакет
Михаил Непряхин: де Бренда символ
Михаил Непряхин: есть какой-то Пакеты пэнтенси и Там лежит, нужный нам, интерфейс
Михаил Непряхин: а вот он Там Находится физически
Михаил Непряхин: э мы его Хотим? Заюзать ну как бы мы просто здесь добавляем вот этого депенси и все мы говорим, что, Мы здесь используем вот этот интерфейс который вот он Там объявлен
Михаил Непряхин: вот Поэтому как бы Место, нахождения интерфейса на самом деле вообще Не имеет значения потому что вы его Всегда сможете, заимпортировать и использовать
Михаил Непряхин: Но бест-проектис Это Держать интерфейс рядом с реализацией о нейтрализации рядом с использованием,
Михаил Непряхин: где Мы используем там Мы его держим то есть это как, бы
Михаил Непряхин: просто, лучшая практика
Михаил Непряхин: чтобы опять. Же увидеть и
Михаил Непряхин: а так не Помню как понять что в этом месте необходимо пронять энтрофей
Михаил Непряхин: Так и
Михаил Непряхин: если вам нужно полиморное поведение
Михаил Непряхин: то Есть вы написали очень длинную функцию
Михаил Непряхин: она прям длиннющая вообще вот три экрана
Михаил Непряхин: и вы понимаете что вот кроме как, со стыд-аутом
Михаил Непряхин: а вы еще вот просто хотите. Поработать здесь с файлом
Михаил Непряхин: Дженериков, Нет
Михаил Непряхин: ну типа Не было Анфисенерикова да как бы рано изначально как бы Были только интерфейсы
Михаил Непряхин: потом Появились дженерики недавно они Появились пару лет назад
Михаил Непряхин: Но они у них механизм Внутри как у интерфейсов То есть Поэтому что. Вы тут интерфейс заезжаете в худженерик ну без разницы
Михаил Непряхин: и тут по перформансу даже выгоднее использовать то, есть если есть вариант использовать в качестве интерфейса интерфейсе или инженерии надо использовать энтрофейс
Михаил Непряхин: вот Поэтому как бы это идиоматично
Михаил Непряхин: вот и интерфейс он просто позволяет не дублировать код то есть это по сути ну один из вариантов зачем уже интерфейс это
Михаил Непряхин: и и
Михаил Непряхин: как бы получить, обобщенный код то есть это интерфейсы помогают обобщить что-то
Михаил Непряхин: то есть вот мы получаем как бы обобщенную функцию которая умеет работать не только с каким-то одним не с одной жесткой структурой а с многими структурами первый вариант
Михаил Непряхин: а где еще используются интерфейсы интерфейса активно используется для связки слоев между Собой в архитектуре
Михаил Непряхин: например, вы для мосгориса вы поняли своего. Допустим представьте чем Тут поздно воспринимаем да
Михаил Непряхин: и хотим? Там внутри Этого метода с этим поиграть записать что-то в него,
Михаил Непряхин: а вы это делаете через интерфейс
Михаил Непряхин: эээ по Двум Причинам ну во-первых чтобы развязать свои То Есть интерфейс позволяет отвязаться от жестких импортов
Михаил Непряхин: ну что
Михаил Непряхин: у вас в импортах Ничего Нет когда вы используете, интерфейс у вас и
Михаил Непряхин: и это позволяет э ну как бы вот написать своистую чистую архитектуру
Михаил Непряхин: плюс вы можете интерфейс подменить то, есть вот вы погрози воспринимаете вы можете взять и подменить его на ненастоящий плогрыс и тем самым протестировать ваш, код
Михаил Непряхин: то есть если вот читать Книгу Роберта мартина Так же как бы
Михаил Непряхин: вот У нас Есть Несколько книг Которые Были на хайпе в последнее Время значит ну Там первая была Это клинтон
Михаил Непряхин: Тоже, собственно роберта мартина
Михаил Непряхин: и она
Михаил Непряхин: наделала много шума и на собесах сплошь и рядом спрашивали вот этот соолит вот Оттуда да пошел
Михаил Непряхин: и ну в общем-то вот
Михаил Непряхин: ну Объединим принципы в соле другой Человек ну вот про эти принципы писал мартин потом он написал еще одну, книгу клинов икча
Михаил Непряхин: и вот из последнего что наделала шуму-то она то есть вот чистая архитектура
Михаил Непряхин: и и
Михаил Непряхин: там основной принцип в Этой архитектуре
Михаил Непряхин: а это Принцип инверсии зависимости
Михаил Непряхин: ну вот Эти вот все вот Круги это тоже все про инверсию зависимостей
Михаил Непряхин: и инверсия зависимостей достигается через инъекцию зависимости Сейчас я просто Скажу. Это Можете Не понимать я просто объясняю и
Михаил Непряхин: Уменьшить связанность кода
Михаил Непряхин: давайте даже чтобы это наверное Рисую чтобы это
Михаил Непряхин: значит зачем Нужны Интрофии даты чем на вопрос
Михаил Непряхин: значит есть У нас такой принцип как
Михаил Непряхин: инверсия зависимостей
Михаил Непряхин: депендент синдвершен
Михаил Непряхин: значит чтобы реализовать этот принцип
Михаил Непряхин: то есть эээ он нужен для того Чтобы зачем ему нужно Чтобы и снизить связанность
Михаил Непряхин: снизить связанность кода что такое связанность кода
Михаил Непряхин: это когда вы делаете, изменения
Михаил Непряхин: в одном месте маленькое а оно влечет за Собой Изменение, большого количества кода
Михаил Непряхин: то есть это вот это
Михаил Непряхин: штука которая
Михаил Непряхин: превращает ваш. Код
Михаил Непряхин: в лапшу
Михаил Непряхин: и это то за чем, нужно Следить для того чтобы со Временем, не платить вот этот налог на большую связанность
Михаил Непряхин: вот аа еще по-другому про связанность это
Михаил Непряхин: есть, такое понятие как пауэлл куплен
Михаил Непряхин: ну там еще есть, хайка хижин ну вот нам нужна вот эта была куплена да вот Это Тоже Тоже про низкую связанность про уменьшение чтобы вот между Собой Два кусочка кода они имели небольшую связь Но
Михаил Непряхин: Не было такого, что вот они вот между Собой Там Один, в Другом Или они как То Вообще очень жестко связаны
Михаил Непряхин: вот это вот депенэнси инвершон
Михаил Непряхин: инверсия зависимостей она достигается за счет Депендиции и Джексон
Михаил Непряхин: как просто Несколько умных слов
Михаил Непряхин: депентенси Джексон
Михаил Непряхин: инъекция зависимостей меня можно Ужприинтересовать
Михаил Непряхин: Поинтересовать То Есть вот когда Мы в структуру Инъектим Инъектим какую-то зависимость
Михаил Непряхин: и происходит Это Через интерфейс
Михаил Непряхин: То Есть
Михаил Непряхин: значит У нас есть какая то структура
Михаил Непряхин: и внутри у нас не
Михаил Непряхин: Жесткие не Жесткая структура возгресса,
Михаил Непряхин: а интерфейс то есть вот мы сюда ин джектем
Михаил Непряхин: что Хотим, захотим настоящую базу заринжекем в настоящий возраст, захотим умок
Михаил Непряхин: зин Джексон мок это
Михаил Непряхин: фейковая реализация
Михаил Непряхин: чтобы проверить что все работает
Михаил Непряхин: без реальной базы ну с базой конечно не рекомендуется потому что базу поднять и проверить ничего не стоит и лучше так и делать
Михаил Непряхин: а это используется в основном когда у нас есть клиент другого сервиса у нас у нас Же Всегда связками касеры создают нас нашими консервами он называет какой то еще микросервис и в базу, ходит
Михаил Непряхин: вот базу,
Михаил Непряхин: надо Всегда проверять наживую
Михаил Непряхин: а вот когда У нас есть какая-то зависимость от другого сервиса
Михаил Непряхин: то Мы в Него Не, можем сходить но вот локально Мы допустим хотим, проверить Мы в нем происходить Не, можем
Михаил Непряхин: вот в этом месте
Михаил Непряхин: ставится. Интерфейс
Михаил Непряхин: и
Михаил Непряхин: мы в зависимости от того что Хотим?
Михаил Непряхин: То и передаем либо. Настоящую реализацию вот этого сервиса на Проде и Наш Сервис идет, вот в этот сервис
Михаил Непряхин: либо, если мы тестируем
Михаил Непряхин: то мы здесь фейковые Реализацию сервиса передаем
Михаил Непряхин: и там просто вместо Вызова ну там Методы те же Самые вызываются да ну Там просто типа Мы Никуда Не идем А просто сразу отдаем какие-то захорокоженные данные и таким образом Мы можем проверить нашу бизнес-логику которая в нашем сервисе
Михаил Непряхин: вот и
Михаил Непряхин: и по Сути это
Михаил Непряхин: есть Единственная
Михаил Непряхин: вот как бы область где мы применяем интерфейс в реальной жизни
Михаил Непряхин: потому, что. Интерфейсы которые вот типа врайтера рейдера
Михаил Непряхин: это библиотечная интерфейс и обычно когда вы имеете дело с какой-то библиотекой вы очень часто имеете дело с антрофейсом
Михаил Непряхин: почему так потому что авторы обычно у них свой взгляд на видение на развитие проекта
Михаил Непряхин: и у них обычно
Михаил Непряхин: а вот как бы
Михаил Непряхин: и свое какое-то есть видение
Михаил Непряхин: и они вам обычно дают энтрофейс для того чтобы вы работали с Этой библиотекой Вот чего угодно если Мы возьмем отдаст тот же допустим позгрес да То вы не будете работать со структурой позори вам дадут интерфейс
Михаил Непряхин: и этот интерфейс будет с сделай квери ну сделали запрос к Базе на чтение одной строки сделал запрос на чтение многих, строк
Михаил Непряхин: и это все делается через интерфейсы ну вот потому что автор может как-то менять и
Михаил Непряхин: и вот эти вот вещи удобно делать через интерфейс
Михаил Непряхин: но вы с этим э. Ну как бы вы не будете Иметь, проблемы не будете сталкиваться вы как бы
Михаил Непряхин: и вот так вот глубоко поймете интерфейсы только когда вы будете какую-то свою библиотеку писать этого может вообще никогда не случится вы никогда не будете писать свою библиотеку и Поэтому вот Это вот как там правильно сделать композицию интерфейсов Это Знание Никогда У вас и Не появится
Михаил Непряхин: вот аа а примеры того как строить архитектуру и вот Эту вот Инверсию зависимости Делать инъекцию зависимостей вот это мы все Будем разбирать смотреть По ровному то есть я это просто, вот какое-то Первое Касание просто
Михаил Непряхин: сказал какие-то ключевые слова и
Михаил Непряхин: Вот ну и волка хижина была куплена до хайка хижи но какие-то такие слова.
Михаил Непряхин: Вот здесь вот Так вот верхнем уровне примерно Понятная Профессия зачем Они Нужны то Есть вопросов Нет
Михаил Непряхин: Так
Михаил Непряхин: много вопросов ладно короче Давайте сделаем две, Минутки перерыв
Михаил Непряхин: и тут на вопросе к еще отвечу.
alex: Ой.
Михаил Непряхин: За шесть минут почитаем
Михаил Непряхин: ну так так
Михаил Непряхин: Помню свой в кукол это было безбожное божественное зрение, да вот к сожалению, он так и работает это правда в кувыкал с интерфейсами.
alex: Как на трофеи на дворе устроен спрашивается без их.
Михаил Непряхин: Да могут спросить про Сейчас Будем разбираться про нау Весьма присылайся могут но интерфейс
Михаил Непряхин: сильно проще то есть Энтрофит сложен, немножко в другом, устройство у него довольно простое
Михаил Непряхин: так несколько Раз смотрю ваше, видео про чисто архитектуру по несколько Раз много назад да так присадим природную архитектуру ну это да.
alex: Какую архитектуру это я создавал.
Михаил Непряхин: Так.
alex: А вгу используются айок контейнеры.
Михаил Непряхин: Или в этом Нет необходимости аио
Михаил Непряхин: аю си это что такое контейнеры.
dmitriy: Да Можно ли голосом Скажу.
Михаил Непряхин: Да Давайте.
dmitriy: Но Это, контейнеры с этим версии управления.
Михаил Непряхин: На который передается Управление Зависимостями
Михаил Непряхин: нет Ну смотрите значит
Михаил Непряхин: я Так понимаю
Михаил Непряхин: Это элементы в оренбурге обычно то Есть на Этом Приморке, строятся. Ну вот вот Ведь и спринкс Раз тут появился
Михаил Непряхин: короче если, бы в Гоу был Френбург вот Прямо вот в центре, Языка ну Как. В джаве да там
Михаил Непряхин: Спринг или ну я Не знаю там в джеймссе Есть какой-то главный фронт или Нет ну Типаж Джанго Это все короче говоря вокруг диая на контейнерах Построенная в френворке в гол такого Нет
Михаил Непряхин: пытались что То кто только Не, Пытался писать и есть глядя вот
Михаил Непряхин: от бубера
Михаил Непряхин: бывший даб потом они его переделали
Михаил Непряхин: забыл как он там Сейчас называется, Но он короче говоря очень уродливый и ужасный и его никто не использует
Михаил Непряхин: на конференциях бывает всплывают какие-то доклады про него но
Михаил Непряхин: нормальные люди этим не пользуются Поэтому Мы не используем
Михаил Непряхин: ничего стороннего ну Свое, Подобно контейнерам как Будто бы что-то пишется ну это даже контейнером назвать нельзя это что-то очень такое простое легкоесное без всяких Там замудренных Абстракций просто почти что в Лоб
Михаил Непряхин: как использовать Интерфейс в Контексте Вертикова ссылаюсь Или чистой рецептуры Стоит ли писать Интерфейс репозитор или сервис да То есть вот это единственное место, где стоит Использование трофейсы
Михаил Непряхин: вообще
Михаил Непряхин: я думаю Мы видели доклады про хейт в сторону интерфейсов что их очень много и Необоснованно используют Условно любой среднестатистический Человек он
Михаил Непряхин: у Него какое-то в голове есть представление что типа вот я написал
Михаил Непряхин: м какую То структуру
Михаил Непряхин: и кто-то Другой но Сейчас он Же сам будет писать вызов. Этой своей методов У своей структуры он зачем То это делать. Через интерфейсы
Михаил Непряхин: я не знаю откуда это пошло ну вот видимо соль или что-то люди придумали что интерфейса это прямо обязательно надо Сейчас на Интерфейсе делать интерфейса Стало слишком много это прям и
Михаил Непряхин: и все усложнять ну мало того усложнять интерфейс они еще и
Михаил Непряхин: интерфейсы платные то есть но в ней сколько-то стоят да
Михаил Непряхин: и власти есть и те и другие есть и бесплатные но там сложность в другом а Там синтекси есть сложность
Михаил Непряхин: вот и Поэтому
Михаил Непряхин: интерфейсы стоит употреблять Дозированно
Михаил Непряхин: только Там Где вы понимаете Что Это нужно То есть если вы ну вот не знаете Зачем Он здесь ну и не делайте его то есть как бы Вы должны отвечать на вопрос Зачем даже Если растут и спрашивают типа почему не интерфейс
Михаил Непряхин: аа ну, Вы должны спросить зачем здесь Еще не может Объяснить зачем ну, просто, Так принято ну, блин ну Давайте как Без религиозности да значит зачем они нужны в репозитории и Сервисе
Михаил Непряхин: а я объяснил шубы если, что Замокать
Михаил Непряхин: и можно было проверить реализацию все ли хорошо работает на моках
Михаил Непряхин: на Фейковых реализациях
Михаил Непряхин: и для того чтобы убрать явные импорты это опять же для того чтобы вот как интерфейсы Так и чистой архитектуры довольно Сложные,
Михаил Непряхин: архитектурные паттерны они легче изучаются понимаются когда У вас есть какие-то критерии вот где у вас чистая архитектура а где уже Нечистое так вот наличие интерфейса между отдателем и скейсом говорит о том Что у вас
Михаил Непряхин: ну. Хорошая правильная, архитектура с разделением на свои. Вот Поэтому там она вертика ссылаясь невертиковалась как бы без разницы интерфейсы используются только в отделении адаптеров от Бизнес-логики Вот и все
Михаил Непряхин: Раньше, Еще Можно было даже Из кейсы Вызывать из Контролеров Тоже, через, интерфейсы Но Сейчас этого никто почти Не Делает Поэтому как бы
Михаил Непряхин: надо понимать типа уметь объяснить зачем вам здесь Нужен интерфейс и почти Всегда, можно убрать ничего Не будет
Михаил Непряхин: так чтобы напримерпозиторы. Подменить да и вот из этого ну дто это вообще для того это дата трансфера это структура и
Михаил Непряхин: а вот у сервиса есть поведение
Михаил Непряхин: господи Сломал
Михаил Непряхин: а у сервиса есть поведение и
Михаил Непряхин: для того он не имеет метров на Него прежде чем Ну, вот логично а для сервиса Так как киева. Она тут уже Ответили. Так где хранить Интерфейсы и структуры которая используется Или реализуется несколькими редакторами.
Михаил Непряхин: И Интерфейсы Всегда хранятся. Рядом с бизнес логикой Ведь они будут вызываться в бизнес логике
Михаил Непряхин: Поэтому они и хранятся здесь же рядышком
Михаил Непряхин: а уж там сколькими под авторами они Реализуются
Михаил Непряхин: вообще Не важно То Есть Мы с точки, зрения бизнес-логики думаем и Видим интерфейс Мы его вызываем а уж Там и.
alex: Не Все.
Михаил Непряхин: Например, бод дискорд Или драма вкалетров есть один и значит еще есть Одна Такая тема, вот тоже интересное замечание
Михаил Непряхин: короче откуда вот Это вот берется
Михаил Непряхин: А значит когда Роберт мартин да кстати как Там По тормозам есть, они не Сохранились
Михаил Непряхин: найти отлично
Михаил Непряхин: Окей
Михаил Непряхин: так
Михаил Непряхин: А вот тут чего там было непонятно?
Михаил Непряхин: Значит есть еще такая тема?
Михаил Непряхин: Принтерфейса когда роберт мартин объяснял,
Михаил Непряхин: как Раз, это инверсии зависимости ну в этот провод пронервской зависимости я вот здесь рассказываю на этом месте да
Михаил Непряхин: значит он как как рассказывал типа значит он говорит вот смотрите есть У вас Бизнес-логика
Михаил Непряхин: как там
Михаил Непряхин: Есть У вас бизнес мой как ну дюс кейс он Же данте
Михаил Непряхин: и вы вот в Этой Бизнес-логике вызываете какой-то метод ну например у нас есть какой-то бот
Михаил Непряхин: и у него Мы
Михаил Непряхин: Дискорта телеграммы вк да ну это Даже наверное было бы Не так это были Бы реальные интерфейсы дискорда,
Михаил Непряхин: вот мы вызываем в дисконт что-то отправить да хотя допустим сентября-центр вызываем у дискорда, что-то отправляем в дисконт
Михаил Непряхин: и он объяснял, на базе данных
Михаил Непряхин: значит представьте у вас есть интерфейс
Михаил Непряхин: эдейта борис
Михаил Непряхин: интерфейс да и и вы ну что то отправляете не знаю
Михаил Непряхин: создаете и не сертите давайте так
Михаил Непряхин: что, ты не сертите в эту базу, данных вот это вот интерфейс
Михаил Непряхин: интерто
Михаил Непряхин: и он объяснял, как зачем он здесь нужен ну типа что, представьте вот у вас Сейчас база данных май сквель
Михаил Непряхин: а вы через, какое-то время захотите, поменять на пользу
Михаил Непряхин: и вам не нужно Будет трогать вот эту бизнес логику
Михаил Непряхин: вам просто надо Будет адаптер вот У вас есть адапта май эсквиль
Михаил Непряхин: а вам надо будет просто дописать рядышком адапте напосле
Михаил Непряхин: а и
Михаил Непряхин: в этом месте
Михаил Непряхин: просто при инициативе это же вот интер вот интерфейс анжеров в структуре
Михаил Непряхин: То есть Вот это Мы работаем через интерфейс вам надо будет просто подменить То есть когда вы через конструктор будете создавать и
Михаил Непряхин: но это просто, он объяснял. То есть как бы ну зачем типа как вы просто, делаете вот так вот чтобы так можно было сделать и будет хорошо люди поняли буквально
Михаил Непряхин: и дело в том что ни разу в жизни нигде я Не видел. Чтобы взяли и заменили одну, базу, данных на другую там несмотря на то что там и там эсквель
Михаил Непряхин: а синтаксис он все равно блин разный
Михаил Непряхин: они все равно Всегда очень сильно разъезжаются Там все равно кучу особенностей и Поэтому Вот этого стремится назвать одним создать один на трофейс и все Подтянуть под Него
Михаил Непряхин: это ошибка Не Стоит Так Делать если У вас Есть Дискорд
Михаил Непряхин: телеграм
Михаил Непряхин: и Вокал
Михаил Непряхин: как Будто Бы У всех У них Будет один Метод сент
Михаил Непряхин: да.
Михаил Непряхин: И как Будто бы можно просто сделать один интерфейс
Михаил Непряхин: и использовать этот интерфейс Везде то есть делать реализацию для дискурса для телеграммы для выка
Михаил Непряхин: но дело в том что все равно вэто же Разное и у вас рано или поздно возникнет Надобность как то особенно, поработать каким нибудь допустим телеграммам и У телеграммы Будет Какой нибудь функционал
Михаил Непряхин: который заставит вас
Михаил Непряхин: а вот У Него появится, какой-то метод еще Один. А Дискороду и вка он не нужен но вам придется и для дискуссии для выка либо заглушки какие-то этого метода, делать либо эээ либо реально какую-то реализацию Придумывать как Там. Сделать короче Появляются лишние Ненужные Методы
Михаил Непряхин: и в конечном итоге все У вас в хлам разъедется
Михаил Непряхин: Поэтому и
Михаил Непряхин: даже на отправку
Михаил Непряхин: смс и ушей
Михаил Непряхин: не надо делать. Один интерфейс Сделайте свои интерфейсы и для отправки смс и для отправки и пушей вот допустим вот она значит
Михаил Непряхин: есть Смс есть
Михаил Непряхин: Рапуш
Михаил Непряхин: Казалось Бы Ну и Там, и Там, будет метод Цен да Условно
Михаил Непряхин: и Там, и Там,
Михаил Непряхин: Но лучше все таки сделать для них разные интерфейсы
Михаил Непряхин: и ну вот здесь же у вас в дискейсе, будет два интерфейса значит у вас здесь будет не трофей смс
Михаил Непряхин: и у Него будет Метод центр
Михаил Непряхин: и у вас здесь Же будет интерфейс пуш
Михаил Непряхин: и смотрите у Него тоже будет Метод
Михаил Непряхин: вы на это смотрите такие черт побери Одинаково
Михаил Непряхин: это Же драй это Же Не повторяйте да, типа это надо их объединить сделать один интерфейс назвать его не знаю. И
Михаил Непряхин: но прикол в том что если ваш сервис будет развиваться они тут по интерфейсам разъедут сто процентов на практике это еще Раз проверено не стоит объединять
Михаил Непряхин: ни базы ни мессенджеры ни какие то пуши эсэмэски.
Михаил Непряхин: Даже если у вас
Михаил Непряхин: кафка рэбит инкью
Михаил Непряхин: и натс
Михаил Непряхин: это все Брокер сообщений
Михаил Непряхин: но у них все равно разные пиар То есть даже у одного и того же Не знаю Там просто Делают форк и там уже появляются изменения
Михаил Непряхин: Поэтому здесь интерфейсы они как бы
Михаил Непряхин: Э это просто Роберт мартин говорил как О них надо думать что, вот смотрите вы взяли там сделали замену но в реальной жизни так не работает в реальной жизни интрофей здесь нужны не для того чтобы когда нибудь взять и поменять дискорд на телеграм
Михаил Непряхин: а они Нужны для того чтобы разделить
Михаил Непряхин: бизнес-логику от Адаптеров воздействует сделать барьер прям физический уж когда вы не трофей используете вы уже импортов вот этих пакетов у себя не имеете
Михаил Непряхин: вы через интернет с ними работаете
Михаил Непряхин: вот и То есть это первая меда разделить свои
Михаил Непряхин: и два это если что протестить и если вдруг захотите замокать вы можете это без Проблем сделать и все и все реально все
Михаил Непряхин: то есть У нас вообще здесь один интерфейс
Михаил Непряхин: и одна, реализация
Михаил Непряхин: и как бы ну вопрос зачем дай интерфейс использовать а вот для этого чтобы разделить свои. И чтобы если что можно было замокать ну Мы еще про это архитектуре дойдем еще поговорим но просто все равно что бы вы поняли назначение интерфейсов
Михаил Непряхин: в архитектуре они играют, Роль именно вот
Михаил Непряхин: вот это вот для гея
Михаил Непряхин: и в библиотеках они Играют вообще другую Роль они Играют Роль для
Михаил Непряхин: создание гибкого и пиая и легких, Наработок библиотек
Михаил Непряхин: и его с библиотеками вы ну вы их не будете писать скорее всего да вы их будете просто использовать а вот
Михаил Непряхин: в архитектурных патронах ну вот как бы тоже здесь какие-то минимальные ну вы их просто будете оккупировать и тоже особо не использовать их по назначению как бы как они есть
Михаил Непряхин: конечно же можно наворотить в гол все патерные опушные потому что ну вот вы возьмете любые оппоненты там, используется полиморфизм вот Именно ну с Помощью интерфейсов он Горелизован
Михаил Непряхин: и тогда вам надо было там уже По другому назначению использовать ну в библиотеках он тоже Так используется очень часто в каких-то хитрых паторных Но в гол не принято Наворачивать эти излишние абстракции вгу принято Делать максимально Просто Прямолинейно в лоб
Михаил Непряхин: Без Замудрения Без абстракции Облегченно
Михаил Непряхин: что бы
Михаил Непряхин: ну потому. Что сервисы и
Михаил Непряхин: ой ну правда просто есть архив значит и вы его
Михаил Непряхин: а хотите, допустим делать Зип и Хотите. Делать ну какие там еще есть форматы не знаю
Михаил Непряхин: а
Михаил Непряхин: вылетело из головы
Михаил Непряхин: и вот мы допустим
Михаил Непряхин: да.
Илиас Эззахид: Аа? Тар я кстати вот Как раз хотел спросить про Рода Патрон стратегия.
Михаил Непряхин: Вот Патрон Стратегия типичный пример Использования интерфейсов
Михаил Непряхин: А Грязип Не знаю Давайте
Михаил Непряхин: как-то Так и
Михаил Непряхин: дело, в том Что и
Михаил Непряхин: опять же Репутация у патрона Стратегии Очень плохая
Михаил Непряхин: потому что люди Начинают лепить патрон Стратегию вообще везде то Есть вот Есть Ли у вас Одна реализация
Михаил Непряхин: вот вообще только вот Сейчас вот дим да ну Не лепите вы Сейчас здесь на трофейс
Михаил Непряхин: потому, что это будет преждевременная оптимизация
Михаил Непряхин: если у вас появилось еще
Михаил Непряхин: а один допустим формат но даже в Этом случае как будто бы Патрон стратегию можно без него обойтись ну если у вас уже третий вариант ну можете если, вы разбираетесь понимаете как писать паную стратегию можете ее сюда затолкать но в целом даже в этом случае ну можно обойтись просто
Михаил Непряхин: а на обычном повторении кода, без без Упорывания в интерфейсе то Есть как бы интерфейсе знать надо как они устроены знать надо Использовать очень ограниченно
Михаил Непряхин: и постепенно ну. Вы увидите как и
Михаил Непряхин: практически не используется в Голову если они появляются Кот сразу усложняется а там Если, начинаешь разбираться, Ради чего почти Всегда да и не Ради чего просто так Можно было Без этого обойтись
Михаил Непряхин: так на Сколько и
Михаил Непряхин: понятно Если Вы попадаете Прав новичковую какую-то важно как бы чтобы У вас синьоры все-таки были какие-то с опытом они вам все-таки Не, дадут вот это вот чего-то делать а если, Вы сразу попадете в команду где вот все такие же как Вы
Михаил Непряхин: ну У вас Не выработается вот это вот Вы Не поймете как делать Поэтому в вайбере с Этой точки зрения и
Михаил Непряхин: и состав Команды уточнять перед Тем как вы работу находите чтобы там Были опытные люди потому что, Без этого к бизнессмотренности вы все равно Не Научитесь как хорошо делать
Михаил Непряхин: Так Вот короче зачем оно нужно понятно,
Михаил Непряхин: ээ дальше значит Есть У нас особенности. Конечно же как, Без этого
Михаил Непряхин: Э для того чтобы с этими особенностями разобраться
Михаил Непряхин: мы
Михаил Непряхин: так ну здесь и
Михаил Непряхин: и оно вот оно все работает
Михаил Непряхин: э и выводит сколько байденеписано записано было разное количество потому что, здесь я передаю хэллоу файл а здесь хелво стыд аут и вот оно вот оно записалось
Михаил Непряхин: это
Михаил Непряхин: м так здесь еще вот о чем я Хотел поговорить
Михаил Непряхин: давайте посмотрим на них да значит вот У нас и стыд аут
Михаил Непряхин: есть структура, райтера,
Михаил Непряхин: есть Конструктор Мы конечно же смотрите полей не Имеем никаких факторов но правила хорошего тона Всегда, создавать структуру с помощью конструктора и
Михаил Непряхин: принято в пушкина называть конструктором и принято называть ее сню начиная с нее
Михаил Непряхин: значит вот у нее есть у этого Райтера есть реализующий интерфейс райтер метод
Михаил Непряхин: и просто Мы пишем в консоль
Михаил Непряхин: есть у нас другой значит другая реализация
Михаил Непряхин: в районе мы пишем файл ну здесь уже нам, нужен файл зачем нужен потому, что мы Его еще должны закрыть
Михаил Непряхин: и здесь Мы в Конструкторе смотрите Мы создаем файл может вернуться Ошибка потому что Не будет Прав, на создание например, а дальше когда мы воссоздали мы вернули эту структуру У райтера
Михаил Непряхин: еще и такая интересная особенность которую надо запомнить Что. Возвращаем мы структуры почти Всегда, возвращаемые структуры
Михаил Непряхин: а принимаем интерфейсы то Есть вот Мы же ведь, здесь Могли бы вернуть интерфейс Гошкам нам бы в Принципе это разрешила ну то есть вот этот метрофейс Мы взяли бы здесь и вернули есть еще сокращенная запись можно Так, сделать
Михаил Непряхин: а если, Мы хотим? Вернуть интерфейс
Михаил Непряхин: анонимный интерфейс такой Так называемый Вот Так Вот можно и
Михаил Непряхин: Вот вы можете здесь Вернуть интерфейс но возвращать интерфейс Не принято принято возвращать друг другу как есть
Михаил Непряхин: а интерфейс уже
Михаил Непряхин: принимать в аргументах Почему потому что. Когда вы возвращаете интерфейс вы обязываете им пользоваться а может быть пользователь не хотел и
Михаил Непряхин: Поэтому как бы но вот авторы библиотек очень часто все равно возвращают интерфейсы
Михаил Непряхин: да да Сейчас это посмотрим
Михаил Непряхин: так Э, дальше вот наш метод который реализует интерфейс здесь мы просто пишем файл возвращается количеством бай которые мы записали и возвращаем их
Михаил Непряхин: и смотрите еще есть метод клоуз потому что Мы должны файл потом закрыть То есть это ресурс который Мы открываем здесь создаем и нам надо его закрыть
Михаил Непряхин: и как видите он есть вот этот еще дополнительный метод но ничего страшного главное что вот этот метод реализует наш интерфейс
Михаил Непряхин: и Поэтому вот здесь когда я создаю файлик видите я здесь диферы его закрываю диффер. Это. Такой деструктор который срабатывает по Выходу, из функции вот в этом случае он по Выходу, из коупа в мэйния выйдет, и закроет наш файл
Михаил Непряхин: дальше значит может возникнуть ситуация, что нам, нужно этот клоуз использовать внутриборкера
Михаил Непряхин: аа вот допустим Мы Не хотим, его здесь в дифференции Так Делать а Мы хотим, вот здесь вот внутри
Михаил Непряхин: блокеры его закрыть
Михаил Непряхин: так
Михаил Непряхин: вот ну видите красненьким подсвечиваться потому что у интерфейса нету метода голос что, делать Окей Давайте мы его Добавим Добавим Метод квос
Михаил Непряхин: он возвращает нас Ошибку
Михаил Непряхин: потому что у нас закрытие Файма Оно возвращает Ошибку
Михаил Непряхин: Ошибку тоже Проверим
Михаил Непряхин: ну если Что, Напишем, что-то ошибка ну когда же здесь Можно панику бросить теку
Михаил Непряхин: так Вот так и сделал
Михаил Непряхин: и пишем и закрываем
Михаил Непряхин: и пистолет, как бы я взял Вот эти Интерфейсы со стандартной библиотеки и
Михаил Непряхин: вот э теперь, мы сталкиваемся с ошибкой
Михаил Непряхин: э файв у нас этот ээ метод реализует ну мы видели да вот он вот Он У Него есть
Михаил Непряхин: а и
Михаил Непряхин: стыд-аут Наш Не реализует ну здесь так и Ошибка будет вот что типа ээ нету консоли вот этого метода
Михаил Непряхин: вот от этого метода к волос иерар его нет
Михаил Непряхин: но Мы хотим и Мы хотим? Писать консоль
Михаил Непряхин: но видите ли для того чтобы писать к концу не надо ничего Закрывать да
Михаил Непряхин: а что же делать в этом случае нам просто надо удовлетворить этот интерфейс
Михаил Непряхин: вот Мы просто берем его и удовлетворяем
Михаил Непряхин: а для того чтобы Отдавать чернокопае вот мне сказал
Михаил Непряхин: ну просто вернем нил и все ничего не делаем просто ничего Не Делаем вот надо Вернуть Ошибку, ошибки тут быть Не может Поэтому Возвращаем ни
Михаил Непряхин: и тем Самым Мы бах все Мы удовлетворили этот интерфейс то есть оба методы Мы удовлетворили все и оно опять работает и
Михаил Непряхин: вот Поэтому если, вы видите перед Собой Какой то интерфейс
Михаил Непряхин: а ну а У вас какого-то Метода Не Хватает Ну Берите Да Ты Пишите его и все будете удовлетворять Этому Интерфейсу
Михаил Непряхин: Таким образом принято вовлекать Игрушками ну Не То что принято у выбора другого Нет
Михаил Непряхин: вариантов и других Нет если вы про очень хотите, вот видите там есть метод клоуз а у вас он ну как бы Не Нужен он вам а Реализовать его обязаны ну делайте за Лягушку,
Михаил Непряхин: а выглядит как острее приходится к звезде
Михаил Непряхин: Ну да пихать не прощай звезде не надо
Михаил Непряхин: так Значит я вам показал вот это вот стандартные интерфейсы из стандартной библиотеки,
Михаил Непряхин: Мы можем вот здесь вот вместо
Михаил Непряхин: в райдером
Михаил Непряхин: использовать айоврайтер
Михаил Непряхин: а его райтер это из пакета, ол, вот он ну выглядит точно так же я его отсюда и взял
Михаил Непряхин: и смотрите что. Еще есть здесь здесь есть интерфейс озер
Михаил Непряхин: то есть Мы можем не писать свой интерфейс а просто использовать еврайт и клоуз но дело в том что, это же разные интерфейсы да то есть как бы вот этот райдер и
Михаил Непряхин: делать интерфейс и Маленькими
Михаил Непряхин: и чаще всего в библиотеках и в стандартной библиотеке интерфейс Состоит, из одного метода. И это, правильно
Михаил Непряхин: если вы Хотите. Их скомбинировать то есть возможность сделать композицию, на трофейсов и они здесь тоже есть
Михаил Непряхин: вот посмотрите у нас в интерфейс есть рит райтер но она Не проходит нам нужен вот этот профессор райд Клозер,
Михаил Непряхин: он состоит из энтрофийцев райдер зениттерфейса лоузером и просто первом варваре Клозер, и
Михаил Непряхин: я здесь использую этот Мы можем уже больше не использовать Бах Опять работает
Михаил Непряхин: потому что
Михаил Непряхин: как видите неважно какой интерфейс я сам его напишу Или я возьму интерфейс из стандартной библиотеки ведь, он просто вот себя Содержит вот эти вот Методы которые Мне нужны проекты голос и все и у меня все поработать
Михаил Непряхин: что, здесь еще есть
Михаил Непряхин: есть шордер
Михаил Непряхин: и в общем-то вот это вот эти интерфейсы ридер то есть он получает слайс
Михаил Непряхин: байт
Михаил Непряхин: и и
Михаил Непряхин: в этот слайс байд
Михаил Непряхин: аа Читает Возвращает Сколько Он в него Прочитал в этот Смс-байт
Михаил Непряхин: байт
Михаил Непряхин: а в райдер
Михаил Непряхин: ведь как, бы, Тоже, такую сигнатуру имеет Он получает этот вай фай и записывает
Михаил Непряхин: куда-то
Михаил Непряхин: и и
Михаил Непряхин: вся. Стандартная Библиотека там вы пишете файл или читаете ис файлы вы пишете в сеть Или читаете из сети оно вот эти вот интерфейс вы можете очень часто увидеть что они используются
Михаил Непряхин: вообще роб, пайк когда роба Пайка спрашивали роп пайка-то Один из писателей за кого,
Михаил Непряхин: робоппай когда спрашивали что ему нравится, больше всего в гол и какое Он считает У Него самое Большое достижение то что он придумал он сказал что он считает Своим достижением самым большим
Михаил Непряхин: что он придумал Вот эти интерфейсы рейдер и Райтер
Михаил Непряхин: и Прикольная штука потому что и
Михаил Непряхин: и грубо говоря когда вот вы чего-то низкого уровня вы там пытаетесь хакать ээ там подменить что-нибудь вот вы вот по Сути просто реализуете свой лидер свой райтер
Михаил Непряхин: и вот делаете что хотите, ну и здесь понятно, что есть еще клоуз что допустим нам ресурс какой-то надо закрыть как тот же файл Или как сроккет когда Мы Читаем и сети
Михаил Непряхин: а ну Сико Действительно сделать какой то сдвиг
Михаил Непряхин: и Комбинация да вот этих и
Михаил Непряхин: вот короче говоря стандартная Библиотека она Пестрит вот Такими Маленькими энтрофииками Это практически Там ничего не возьмите вы везде это встретите и По Сути когда вы что-то с какой-то стандартной Функцией работаете она обычно вам возвращает интерфейс
Михаил Непряхин: а Вы уже у этого интерфейса Там Сразу. Вы можете посмотреть. Что Вы можете с Ним сделать заходите ага. Понятно, могу. Райд развернуть могу к озерку дернуть как бы все ясно
Михаил Непряхин: как бы вот это вот и есть вот эта, простота и прозрачность вы Всегда понимаете Что вы можете сделать с Объектом который вы получили функции и Что вы точно не можете сделать То Есть Если У вас интерфейс в распоряжении ну вот только какие методы там в этом профессии есть вот в общем-то этим вы и работаете
Михаил Непряхин: так здесь пока все понятно, здесь пока Вопросов Нет
Михаил Непряхин: а дальше нужно посмотреть как интерфейс устроена низком уровне аа что такое натрофейс
Михаил Непряхин: дайте ваши предположения что такое интерфейс как Вы думаете, как. Он представлен в памяти
Михаил Непряхин: прошлый, Раз, был вопрос про
Михаил Непряхин: про анонимную Функцию как. Она в памяти представлена
Михаил Непряхин: вот ну короче
Михаил Непряхин: так По Инфраструктуры Ну да, или Прав структура
Михаил Непряхин: и Ну
Михаил Непряхин: как бы это конечно понято Но это все-таки структура короче когда вам такие вопросы? Задают отвечайте что структура вообще не промахнетесь но если, не структура значит интерфейс на низком уровне
Михаил Непряхин: состоит из двух полей это поинтер
Михаил Непряхин: и Еще один поинтер Два пойнтера
Михаил Непряхин: значит первый пойнтер
Михаил Непряхин: поинтерна
Михаил Непряхин: таблицу Виртуальных вызовов
Михаил Непряхин: а второй пойнтер Это на реальное Вэлью
Михаил Непряхин: короче говоря
Михаил Непряхин: и и
Михаил Непряхин: принтерфейс Это два указателя
Михаил Непряхин: Раз Два указателя Один. Указать у нас Восемь батлер указать Восемь бай значит на трофей из шестнадцать бай
Михаил Непряхин: как строка Гастро у нас Тоже, была, Шестнадцать бать
Михаил Непряхин: ну? И
Михаил Непряхин: Мы Же работаем с какими-то структурами да У кого, У чего еще Есть методы ну? Как минимум обычная структура
Михаил Непряхин: ну? Или Там у винтау и сторонники тоже и у было убого может быть методы иначе, здесь будет, вот этот реальный бум и если эта структура с методами воды здесь Будет находиться указатель на реальную структуру
Михаил Непряхин: и таблицы виртуальных
Михаил Непряхин: вызовов
Михаил Непряхин: и Сложная структура Но смысл в том Что там просто перечислены Условно как можно об этом думать у нас Же так Тайпинг, так значит нам надо и
Михаил Непряхин: а то здесь бо Там Райд и сигнатура квоус
Михаил Непряхин: ну Там, сигнатура пауза вот условно они Там,
Михаил Непряхин: и чтобы работать с интерфейсом условно вот Мы проверяем оно вообще удовлетворяет вот То Что Мы Хотим? Запихнуть в интерфейс Оно вот Этому удовлетворяет То удовлетворяет значит Идем дальше и помещаем указатель
Михаил Непряхин: э она реальное значение все а дальше Мы работаем с Этим интерфейсом
Михаил Непряхин: а если Не удовлетворяет вот ошибка
Михаил Непряхин: То есть если Мы хотим Запихнуть что-то У чего Нет вот этих методов а мы там прописали что они должны быть то они а здесь указатели по Сути на реальные тоже методы
Михаил Непряхин: то есть там очень много всяких указателей ну. Просто вы должны. Понимать что как бы и
Михаил Непряхин: но синтрофей состоит Из указателя назначения и Из указателя на таблицу ритуальных. Методов
Михаил Непряхин: Или еще по-другому в Голову. Называют видэйбол
Михаил Непряхин: а когда У нас Функция принимает какой То интрофейс
Михаил Непряхин: То соответственно эта Функция просто берет вызывает вот эти Методы а они ээ
Михаил Непряхин: ну Вернее даже даже не эти Методы оно берет реальной волью и вызывает у него Методы
Михаил Непряхин: а это скорее нужно для проверки что эти методы у этого в илью есть
Михаил Непряхин: значит Ммм Почему реализовано так есть Два вида реализации.
Михаил Непряхин: Значит здесь
Михаил Непряхин: опять же погружаю вас немножечко в
Михаил Непряхин: этот Компьютер сайнс для того чтобы какой-то контекст У вас был чтобы побольше моего контекста вот про Эту тему, здесь и
Михаил Непряхин: довольно все просто но тем не менее важно понимать значит есть у нас полиморфизм да так называемый
Михаил Непряхин: а что такое полиморфизм Это вот свойство
Михаил Непряхин: аа объекта
Михаил Непряхин: ну как бы
Михаил Непряхин: Вызывать
Михаил Непряхин: короче Это Один из тампов Ввп эээ абстракция нужна для того чтобы У
Михаил Непряхин: подставлять разные объекты ну ключевые не думаю знаете что такое полимошизм
Михаил Непряхин: вот есть значит разные способы как его добиться, значит первый это мономорфизация
Михаил Непряхин: и поле марфиза или
Михаил Непряхин: не помню как вот Это вот второй называется короче мономорфизация Это когда У нас
Михаил Непряхин: нету таблицы Виртуальных методов У нас все статичное
Михаил Непряхин: У нас статика
Михаил Непряхин: а в момент компиляции вот это вот все
Михаил Непряхин: не нужно потому что
Михаил Непряхин: Допустим Есть функция которая принимает интерфейс
Михаил Непряхин: и вот
Михаил Непряхин: как Раз, таки монархизация Этой власти в гоме нету монархизации да конврастия короче говоря вот это, вот этот интерфейс Он Подставляется Вместо Него реальное значение То есть там прямо, Реально типа берется там какой-то тип и все и проблемы нет
Михаил Непряхин: и но проблема в том что и
Михаил Непряхин: и все места где у вас интерфейсы используются там нужно подставить реальные типы чтобы у них были эти методы короче раздувается. Бинарник и долго компелируются программы Но зато быстро. Работают
Михаил Непряхин: когда выполняются Вот значит в гол пошли другим путем
Михаил Непряхин: в гугу пошли блин как там Сейчас слово
Михаил Непряхин: мона
Михаил Непряхин: морфизация,
Михаил Непряхин: в с
Михаил Непряхин: час подсказка монет блин в скотт
Михаил Непряхин: мономорфизация
Михаил Непряхин: илииле
Михаил Непряхин: оля марфизация
Михаил Непряхин: параметрический полиморфизм
Михаил Непряхин: короче блин что то как то она даже Не. Гуглится, нормально никому видимо это не надо
Михаил Непряхин: и и
Михаил Непряхин: Ну короче укушки не Так
Михаил Непряхин: У гошки создается Таблица виртуальных методов
Михаил Непряхин: итак на самом деле Вообще У всех остальных языков тоже то Есть все создают эти таблицы виртуальных методов потому что мормона монархизация довольно Сложная штука и Медленная очень вот и по сути накладные расходы у нас перетекают вронтаем
Михаил Непряхин: то есть вы представляете да мы вронтайме вынуждены но во Первых вот по этим вот указателям переходить это оверхет вообще как вот когда Вы по указателям переходите ну это дорого
Михаил Непряхин: если погадателям Не прыгать ну если можно Не прыгать то указать ему лучше не прыгать. Поэтому Есть, указатель как бы сразу же вы имеете верх это Медленнее
Михаил Непряхин: потом Указатели обычно вызывают авокации в куча и Поэтому если Увидеть указатель ну Есть, вероятность суббота Локация, не Всегда Но почти Всегда
Михаил Непряхин: а плюс вот это вот проверка в таблице, когда вы куда-то что принимает функция принимает какой-то интерфейс и вы туда передаете свой тип
Михаил Непряхин: нужно будет вронтайме то есть гошка берет смотрит У этого типа вообще есть вот эти вот методы Которые есть в этом интерфейсе и вот эта вот проверка плюс потом вот это Создание, витейбл,
Михаил Непряхин: в первый Раз оно долго потом конечно то есть при первом использовании оно создается и
Михаил Непряхин: и еще накварные расходы появляются когда у нас дженерики появились
Михаил Непряхин: а вообще в целом можно и
Михаил Непряхин: но мы потом когда будем, в энергии проходить чуть ли не в самом конце потому, что они так до кучи нужны
Михаил Непряхин: а им по большому счету особо не нужны
Михаил Непряхин: то мы там увидим что, дженерики тоже используют все эти же механики
Михаил Непряхин: и по сути дженерики в гоу это интерфейсы и
Михаил Непряхин: вот
Михаил Непряхин: что могут спросить на собесе ну вот грубо говоря что такое интерфейс
Михаил Непряхин: что это не указатель а это два указателя Что это структура с двумя Указателями
Михаил Непряхин: и из чего. Состоит интерфейс и вы должны. Сказать Что интерфейс это указатель на реальный тип на реальное значение
Михаил Непряхин: и это
Михаил Непряхин: указатель на таблицу
Михаил Непряхин: и грубо говоря вы должны еще понимать что у интерфейса под капотом все равно есть какой-то тип и Мы можем узнать какой это тип
Михаил Непряхин: и тоже как бы и есть такая возможность Э этот тип Достать оттуда
Михаил Непряхин: Так
Михаил Непряхин: здесь есть прикол значит что Еще на Собеседование нужно вот есть задача вот как от задачи на свайсы есть есть задача на интерфейс
Михаил Непряхин: так
Михаил Непряхин: чем ниже с кем разработчик, и тем больше грузят задачами вот Поэтому чем как бы вы неопытнее тем больше вероятность на такую задачу нарваться У синьоров Эти Сдачи Не спрашивают опять Же, если Не хотите, нарываться на Эти Задачи проходить с Нервное Собеседование Там этого Не будет и
Михаил Непряхин: есть интерфейс
Михаил Непряхин: он пустой Да Кстати Еще такое явление как пустой интерфейс то Есть интерфейс в Котором Нет никаких методов
Михаил Непряхин: и значит Это значит что он удовлетворяет вообще и
Михаил Непряхин: понять какого он типа
Михаил Непряхин: и вот уже с этим конкретным. Типом Можно что-то делать
Михаил Непряхин: есть Тип
Михаил Непряхин: но тут вэлью какое-то ну какое-то поле есть так и над Кучем
Михаил Непряхин: Могла быть и пустая структура
Михаил Непряхин: и вот У нас есть значит Две функции. Экземплярных зимпов Два
Михаил Непряхин: обе эти функции Возвращают, вот этот наш интерфейс
Михаил Непряхин: ну к слову, не надо Возвращать интерфейсы ну допустим вот Возвращаются интерфейсы с задачками Так выглядит
Михаил Непряхин: в этом случае Мы Возвращаем нил. Просто Нет и все
Михаил Непряхин: а в этом случае Мы Создаем эту структуру нашу
Михаил Непряхин: как указатель
Михаил Непряхин: То есть она будет нил,
Михаил Непряхин: и ее возвращаем
Михаил Непряхин: аа ну вот мы ээ возвратили в первом случае здесь у нас нил и во втором случае не
Михаил Непряхин: дальше Мы проверяем
Михаил Непряхин: значит одинаковы ли Эти структуры
Михаил Непряхин: и
Михаил Непряхин: внезапно
Михаил Непряхин: Нет они Не одинаковы
Михаил Непряхин: то есть структура и один неравна структуры и Два
Михаил Непряхин: а хотя
Михаил Непряхин: и структура и один майнтрофейс и структура и два это Моя энтрофейс то Есть короче говоря и это не трофейс
Михаил Непряхин: Но в этом случае Мы просто Не увернули а в этом случае Мы создали структуру и ее здесь вернули
Михаил Непряхин: Окей
Михаил Непряхин: смотрим что же Там, еще
Михаил Непряхин: аа делаем проверку значит в лоб равно ли и один нил и равно ли едва ни
Михаил Непряхин: смотрим и один нил
Михаил Непряхин: не равно а едва равно
Михаил Непряхин: получается что вот это вот мы проверяем равно нил вот мы вернули него она равно нел а вот здесь когда мы структуру нилого вернули оно неву не равно внезапно
Михаил Непряхин: то есть Мы Проверяем вот Это вот Это реально
Михаил Непряхин: равнонил
Михаил Непряхин: аа а вот Это вот не равно ни
Михаил Непряхин: Это явление называется типизированный нил, то есть здесь у нас нил, просто нил,
Михаил Непряхин: а здесь нил, типизированный ни
Михаил Непряхин: то есть как бы мы создали тип и этот тип он был нел
Михаил Непряхин: и и
Михаил Непряхин: когда вы понимаете что, интерфейс
Михаил Непряхин: структура интерфейса наверное интерфейс это структура
Михаил Непряхин: то конечно становится все проще потому что вы понимаете что оно вот здесь возвращается ведь структура
Михаил Непряхин: и и
Михаил Непряхин: но почему в этом случае она равна не была в этом не равна
Михаил Непряхин: потому Что Давайте смотреть дальше на
Михаил Непряхин: Новелью значит есть У нас возможность вот через проценты Ви посмотреть Что там За Вылью
Михаил Непряхин: а смотрим Что Вэлью в первом случае Нет и во втором случае нил.
Михаил Непряхин: Окей а Что с типом. Еще возможность Заглянуть посмотреть какой там тип через процент большая т
Михаил Непряхин: а в первом случае тип
Михаил Непряхин: мэйн экземппо
Михаил Непряхин: ну, То есть у нас структура вот Это вот экземпал ведь указатель на нее а во втором реально нил.
Михаил Непряхин: И Получается какая тема
Михаил Непряхин: так как у нас интерфейс состоит из двух полей
Михаил Непряхин: то и
Михаил Непряхин: можно думать об этом как о Типе и авелью
Михаил Непряхин: то есть и
Михаил Непряхин: здесь нил
Михаил Непряхин: и здесь вэлью
Михаил Непряхин: тоже нил
Михаил Непряхин: атайп
Михаил Непряхин: у нас здесь
Михаил Непряхин: уже задан он антипизирован тайп У нас здесь Экземпал
Михаил Непряхин: А здесь он Не задал
Михаил Непряхин: и он Будет
Михаил Непряхин: он Год просто нил
Михаил Непряхин: короче говоря правило такое если Вы проверяете интерфейс на ним
Михаил Непряхин: то он нил когда и вэлью и тип нил
Михаил Непряхин: а это бывает только в том случае если вы просто возвращаете на трофей как к нему
Михаил Непряхин: если хотя бы одно, из Полей допустим Тип был бы Не задан но Целью задано Или в Элью короче если хотя бы Одно, не нил то интрофейс уже не нил
Михаил Непряхин: это задачка Именно на понимание
Михаил Непряхин: что такое интерфейс
Михаил Непряхин: эээ что мы сравниваем не просто какой-то поинтер Что Мы не Думаем О интерфейсе как Об обычном указателе потому Что это необычный указатель это толстый указатель он состоит из двух полей и чтобы интерфейс был нил
Михаил Непряхин: и оба этих поля условно должно Быть нил
Михаил Непряхин: если поле уже имеет тип если стукнула интерфейс имитип даже если уэлью ни
Михаил Непряхин: то он все равно не будет равен ни
Михаил Непряхин: вот такая
Михаил Непряхин: задачка с подвохом типа как на Гонку данных свайсах точно докажите ему.
David R: В вопросе к вопросу.
Михаил Непряхин: Давайте.
David R: Прям вот тут ээ Получается, У нас может быть Э Тип нил вэлл нил а может ли быть Наоборот Что вел Ю.
Михаил Непряхин: Человек У нас Не.
David R: Ввел ее нил. А типнил.
Михаил Непряхин: Наверное нет я чего-то начал говорить а потом подумал Блин а Как Мы Это. Можем сделать Мы же.
David R: Ну да вы то что перед ним сказали что если хотя бы один из Этих не нил.
Михаил Непряхин: Да но такой.
David R: Не может Быть Что У нас Всегда получается Тип должен Быть какой-то анил какое-то уже Определенное значение.
Михаил Непряхин: Так Сейчас надо Подумать как нам, сделать так чтобы здесь вэлью все-таки было А типа Не было Не короче Похож такое на такое было невозможно да короче У нас в элью может быть ни У либо ни нил
Михаил Непряхин: ну Тип тоже может быть нем либо нел но не может быть такого чтобы вэлью вот тут что-то было
Михаил Непряхин: аа а здесь был нил
Михаил Непряхин: вот наверное такое просто, невозможно но вот это вот про эту штуку Можно учитать запретить
Михаил Непряхин: но Мне кажется, так нельзя
Михаил Непряхин: а поручиться будет практике это явно возвращать не
Михаил Непряхин: а
Михаил Непряхин: сложный вопрос
Михаил Непряхин: потому что
Михаил Непряхин: но вообще да вообще да то есть если вы хотите вернуть ним вот так не надо делать никогда то есть возвращайте нил
Михаил Непряхин: а и
Михаил Непряхин: потому что но в этом нет смысла типа
Михаил Непряхин: вообще-то ошибка Часто возникает при работе с Ошибками
Михаил Непряхин: что когда вместо Нила допустим у нас тут возвращалась бы ошибка а ошибка это интерфейс
Михаил Непряхин: если мы Посмотрим что такое ошибка это интерфейс
Михаил Непряхин: с методом ира
Михаил Непряхин: вот то надо его возвращать нил. Потому что если. Вы сделаете свою кастную ошибку а сделать ее несложно да то вы просто берете да и реализуете здесь и
Михаил Непряхин: шаспсек
Михаил Непряхин: дружочек ты ни в чем не помогаешь там
Михаил Непряхин: короче вот вы просто реализовываете, вот это, вот интерфейса ира и вместо того чтобы Вернуть ним допустим начинаете возвращать эт и их Зампол ну то есть вот танец, это сделал
Михаил Непряхин: вот витя. Экземппом меня удовлетворяет энтерфейсу ира вы берете так возвращаете будете проверять а там ни нил. Поэтому да короче просто не надо вот так вот делать.
Михаил Непряхин: Но дело в том что не надо это мало все равно надо понимать что такое явление как типизированный ним оно существует это как бы Еще Одна претензия
Михаил Непряхин: гошки То есть вот как бы, их две основных претензий это первое что почему в слайсях возможна гонка данных и почему с власти такие странные вторая претензия вот это вот почему у нас есть типизированный миф вот и факт вообще
Михаил Непряхин: но вот это просто, такая особенность как бы у всех. Языков есть косяки ну вот такие вот косячки особенности есть угошки зато других кучу преимуществ Поэтому как гну
Михаил Непряхин: а надо же на собеседник что-то спрашивать вот Поэтому спрашивают вот такие Всякие штуки подводные камни
Михаил Непряхин: да если еще Весь вопрос Ведь.
David R: Есть Еще вопрос получается если функция принимает и
David R: и как это.
Михаил Непряхин: Актом для этого Есть конструкция да для этого Есть конструкция
Михаил Непряхин: короче говоря м когда вы работаете, с пустым интерфейсом то вы можете Убедиться Что, Там именно То Что, вы нужно в свече а если Нет Тогда открыть Ошибку ну примеры посмотрим Я Еще про это дальше примерчики Есть
Михаил Непряхин: Так Сейчас его ошибки это тоже интерфейс там помню был какой-то труд тоже снял на подзыгу короче Да-да ну вот есть еще подобная ошибка но ой подобная задача но вот здесь вот возвращаются ошибки
Михаил Непряхин: вот ну короче если, вы понимаете что существует такое явление как типизированный немца над профессией если вы понимаете что. Интерфейс это не просто указатель
Михаил Непряхин: вы вы не можете просто взять и проверить на ней вот если бы это был тонкий указатель
Михаил Непряхин: ну, как функция Например, функция это тонкий указатель да это просто указатель или мапа папа тоже тонкий указатель это просто указатель
Михаил Непряхин: и канал канал это тоже, тонкий. Указатель вы просто берете и проверяете на него. И не задумывайтесь если там ну. Там Два варианта Либо Неу Либо волью да как бы Либо ведет куда-то эту указатель Либо он неловый
Михаил Непряхин: То интерфейс нельзя Это как бы толстый указатель он состоит из двух Полей и уже вы его не можете просто взять и проверить на Ним то есть с одной стороны вроде бы претензия к гол. Почему Так а с другой стороны а типизация Строгая
Михаил Непряхин: смотрите Мы Же ведь структуру проверяем они если Там структура как бы она
Михаил Непряхин: ну? Это уже не просто проверка на него и структуры то есть это уже не прямая проверка одного. Указателя а это Прям надо посмотреть и
Михаил Непряхин: но важно понимать что такое интерфейс как у настроя
Михаил Непряхин: м
Михаил Непряхин: и значит последнее на сегодня пропустой интерфейс
Михаил Непряхин: значит
Михаил Непряхин: Есть у нас два синтаксиса Галиасы для пустого интерфейса пустой митрофей словно Так вот Обозначаются либо, энни то же самое
Михаил Непряхин: эни появился из фэнериков потому Что в джунглях активно Юзуют интерфейсы и там вот это просто уродливо выглядит
Михаил Непряхин: а уродливо оно сделано потому что опять, же ро пайк в Интервью говорил что специально Он Так сделал За дизайнером что бы вы видели если, вы Начинаете использовать пустой интерфейс
Михаил Непряхин: видя как Он Ротко выглядит значит вы Делаете Что То Не Так потому Что когда вы Начинаете использовать пустой интерфейс вы Превращаете из гол с эстетической типизацией
Михаил Непряхин: динамический язык
Михаил Непряхин: То есть и
Михаил Непряхин: То есть это такой маркер Что что-то идет, Не так
Михаил Непряхин: да пустые интерфейсы иногда используются супер редко это очень редкое явление только Там где и
Михаил Непряхин: да Если проверить Сколько и
Михаил Непряхин: Тоже Структура из двух полей Так пустой интерфейс Можно Извлекать Что угодно То есть Мы
Михаил Непряхин: Там пом
Михаил Непряхин: а вот ну я сказал Что У меня а это пустой интерфейс и в пустой интерфейс присвоил аа число
Михаил Непряхин: Строку булевый Тип то есть ну пустой если, увидеть функция принимает пустой интерфей значит она может принять что угодно вот
Михаил Непряхин: ну или Сейчас все-таки эни чаще чем пустой энтрофейс
Михаил Непряхин: вот У нас функция с пустым интерфейсом и она принимает смотрите сорок два хлоут ну то есть
Михаил Непряхин: это Там питон джиэс
Михаил Непряхин: хороший язык. Без статистической цивилизации
Михаил Непряхин: получается то есть в Год уж Так можно
Михаил Непряхин: и Мы можем сделать свайс
Михаил Непряхин: из разных элементов разных типов
Михаил Непряхин: и и
Михаил Непряхин: Так ну Можем По Ним дапотироваться
Михаил Непряхин: Так значит как приводить пустой интерфейс к чему-то Понятному эстетическому и
Михаил Непряхин: и чтобы с Этим как-то поработать У Пустого интерфейса ничего нету да вот если Мы Там захотим посмотреть какие есть методы у пустого интерфейса ничего нету ничего нельзя с ним сделать чтобы с ним Можно было что-то сделать надо Вернуть его обратно в строку
Михаил Непряхин: Поэтому есть такой синтакси значит точка и скобки в скобках указывается.
Михаил Непряхин: Тип которого Мы хотим, Сделать Каст
Михаил Непряхин: привести значит Если Каст успешный то в этом случае. Вэс будет строка
Михаил Непряхин: Если Каст не успешный то Ничего не будет, никакой, паники Не произойдет
Михаил Непряхин: вэ будет, пустая строка
Михаил Непряхин: а если бы здесь был указатель здесь был бы пустой указатель
Михаил Непряхин: Иногда как бы это имеет смысл но все-таки это неудобно и хочется убедиться вот Мы смогли скастовать или Нет вот удачное Проведение, типов или Нет Поэтому есть второе значение как У мап тоже вот это булю его значение принято писать ок,
Михаил Непряхин: ну и здесь соответственно если, Не ок, То Мы там что-то делаем значит вот Мы пытаемся провести интерфейс к строке если оно будет успешно то здесь будет тру а здесь будет вэлью если, оно не Успешно то здесь будет фоукс а здесь будет пустая Строка
Михаил Непряхин: это Первый вариант кастинга
Михаил Непряхин: и есть еще кейс когда Мы не понимаем
Михаил Непряхин: вернее как Когда Мы не только со строкой можем работать вот Мы вот принимаем постоинтерфейс Мы не знаю, Там, с режиссером работы например, ан маршельма ну типа энн кодера диконера пишем
Михаил Непряхин: и мы Не понимаем что она может прийти. Что угодно может прийти. И в зависимости От того что пришло мы прописываем Разное Поведение. Значит есть специальный синтез, для этого называется тайпс Вич то есть вот эта конструкция она как бы использует свич
Михаил Непряхин: но Вот здесь у нас происходит Кастинг, Мы пытаемся. Привести наш,
Михаил Непряхин: ношу перемену ай к типу
Михаил Непряхин: аа а какому типу Мы здесь просто пишем тайп ключевое слово
Михаил Непряхин: и вот здесь вот как бы призываем вам в эту перемену этот получившийся тип а дальше мы Проверяем
Михаил Непряхин: Какой это тип это инт если. Это инт то что то делаем соответственно синдром то есть здесь у нас уже оказывается, Ви это уже инт он уже вот здесь внутри, Он приведен, кенту
Михаил Непряхин: Мы понимаем Что Мы работаем синтом Это Стринг, если да то Вот здесь внутри, Мы уже имеем стрингу может быть это ошибка и тогда мы здесь имеем ошибку если, мы никуда, Не попали Дефолт У нас работает вот этот кейс и ну все неизвестный тип ни к чему не смогли провести
Михаил Непряхин: также Еще есть способы через, рефлексию то есть рефлексия можно прямо, там. Спросить какого ты типа друг
Михаил Непряхин: и он конечно ответит но это уже библиотек и рефлексия и
Михаил Непряхин: легко очень Накосячить Поэтому так если вы будете с этим работать просто знаете Что рефлексия если Что Есть
Михаил Непряхин: но ею Занимался рок-пайк про которого я уже два раза сегодня упоминал в контексте Что он интерфейсами Занимался и он занимался
Михаил Непряхин: этими айтрами лидерами то, есть ну в общем он интерфейсом занимался вот и он писал рефлексию пакет рефлекшн гол и когда его спрашивают какое его самое неудачное решение. Он отвечает. Что это вот по Китрафлексия то есть недоволен как вот Так Получилось
Михаил Непряхин: сложно дорого запутано
Михаил Непряхин: выключи
Михаил Непряхин: ну лучше, бы ее было не писать говорит он
Михаил Непряхин: а эта конструкция вне свеча работает
Михаил Непряхин: ну вот эта конструкция вне свеча работает да но если вы ее заталкиваете. В свич то вот здесь вот вы пишете ключевое слово тайп,
Михаил Непряхин: а уже конкретно идти потом уже здесь как бы продвигается это надо несколько раз запускать и рассмотреть короче да.
Konstantin: Я Имею. В виду Именно стайп То есть чтобы получить тип.
Михаил Непряхин: Да да да.
Konstantin: Только.
Михаил Непряхин: Только свечи то есть вот это прямо, вот этот тайп здесь он является
Михаил Непряхин: к частью вот Этой конструкции, просто не стали короче Изобретать велосипед и использовались, вич, вот хотя По большому Счету конечно Могли Бы
Михаил Непряхин: как-нибудь Тайп-свитчи здесь вот так вот Называть да как-нибудь а здесь бы и Не надо Было бы или как-нибудь просто какой-нибудь вэлью ставили сюда ай и дальше проверяли какую-то Валюту ну так Не стали делать и решили вот через такой синтез пойти
Михаил Непряхин: вот это называется Кастинг, ну и вообще как бы вот эта в кубочках у нас тоже потом проказ типов и на следующей лекции, и посмотрим
Михаил Непряхин: вот
Михаил Непряхин: здесь
Михаил Непряхин: давайте. Значит это про интерфейсы базового всего есть еще очень сложная тема, но для нее нужны свежие мозги
Михаил Непряхин: и ее важно понимать и про нее поговорим в следующий Раз, вот ну вот пока на текущий момент про интерфейс базы по интерфейса это все
Михаил Непряхин: так Вопросы, какие нибудь здесь.
Илиас Эззахид: Можно голосом Пожалуйста.
Михаил Непряхин: Да да да.
Илиас Эззахид: Аа вот джовисты ну не обязательно джаба ну люди Которые уже с опытом приходят и У них все архитектура строена на интерфейсах и используют частные интерфейсы ну
Илиас Эззахид: какие они в одном ошибке Делают. Когда переходят на гору Касаемо, интерфейса как там счастье
Илиас Эззахид: ну чистая архитектура оп много интерфейса.
Михаил Непряхин: Ну во-первых джависты Очень длинные Названия пишут да это наверное Основная проблема, ужуристов что они начинают
Михаил Непряхин: здесь Например в Голову. Принято Что ну вот смотрите я вот использую Например, вот Стыд, а вот У Меня да
Михаил Непряхин: Пакеты Стыд, аут
Михаил Непряхин: и и
Михаил Непряхин: Придумывать Короткие Названия, пакетом
Михаил Непряхин: и принято лаконично и пять придумывать чтобы он был емкий короткий и
Михаил Непряхин: патор надо эти использовать может они и знают Вот и они их Используют Поэтому удживистов хорошего получается писать в библиотеке то есть вот есть много библиотек Которые от дживиса написали и сразу видно что ты живисты
Михаил Непряхин: она и
Михаил Непряхин: в целом как бы, ошибка кого, угодно. Из Других Языков, кто переходит что начинают все равно преусложнять как бы,
Михаил Непряхин: Тяжеловесный код начинают делать что типа принято было использовать какие нибудь обязательные гетторы сеттеры а Их Вообще в Голову. Часто не принято делать просто фигарить структуру как есть
Михаил Непряхин: и меняете там просто анимичную, модель делаете и все то есть вот это тоже такая идея что вот если Можно как-нибудь вгу попроще обычно делают попроще а сложно делают только там где вот ну либо это библиотека какая-то и Хотят им Капсулировать все нафиг чтобы там все запретить
Михаил Непряхин: вот а джинджер же не сразу так вот надо Там, приватно все сделать вот только внешние пять но здесь чаще всего Мы в гоу смотрите как бы специфика какая гол
Михаил Непряхин: а сервис в гоу это один дамен
Михаил Непряхин: Поэтому раз у вас весь сервис это один домен
Михаил Непряхин: у вас уже очень сильно все Облегчается вам не надо и
Михаил Непряхин: даже многие вот Эту вот чистую архитектуру считают за
Михаил Непряхин: и Если,
Михаил Непряхин: потому что вот именно стиль у гол,
Михаил Непряхин: Не, думать особо о будущем вот написать здесь и Сейчас, чтобы это было просто читаемо эффективно
Михаил Непряхин: а чистая архитектура она еще и вот если на своей неделе, тогда авторы отделяет, вам как бы Еще становится легче
Михаил Непряхин: и и
Михаил Непряхин: поэтому как будем,
Михаил Непряхин: вот
Михаил Непряхин: тогда Еще вопрос ответь.
Илиас Эззахид: А можно Еще тогда вопрос.
Михаил Непряхин: Да и.
Илиас Эззахид: Надеюсь Не домучилась вы говорили что в альберте плохие паттерны какие-то можете какие-то примеры Давать Не обязательно вольтеры просто примеры Плохих антипатийных го.
Михаил Непряхин: Ну не и
Михаил Непряхин: старых синьоров вот в Этом кругу
Михаил Непряхин: а насчет плохого но и
Михаил Непряхин: если вы не используете чистую архитектуру
Михаил Непряхин: То это уже Плохо потому Что грубо говоря чистая архитектура ну в общем даже пустническая актера любая архитектура Что угодно любая портедактор и экстремизмальная Луковичная там чего угодно любая архитектура она очень сильно облегчает. Поддержку
Михаил Непряхин: и вот самая Главная Ошибка Это Не использовать никакую архитектуру
Михаил Непряхин: придумывать либо, чего-то Свое, что как бы ну прикольно. Конечно но обычно вы не придумаете что-то хорошее
Михаил Непряхин: вы так просто. Экспериментируете для себя и у вас каждый Сервис заново начинается он выглядит По-разному У вас Нет преемственности и короче говоря вот вы в поисках постоянно находитесь и вот это вот
Михаил Непряхин: То Что должны лиды Пресекать, и У вас все равно в команде обычно пять десять сервисов
Михаил Непряхин: и важно чтобы они Были одинаковые одинаковые то Есть чтобы они были похожи чтобы они были шаблонные потому, что, если у вас они будут не шаблонные вы офигеете в голове держать отличие а вот здесь вот так Это У, нас сделано здесь и
Михаил Непряхин: и есть как бы вот профессиональный подход. Когда У вас шаблонное мышление вы один Раз, подумали как это хорошо сделать а потом это переиспользуете ну
Михаил Непряхин: по-моему вообще логично и
Михаил Непряхин: Да в институтах преподавал преподаватель видимо в большинстве своем У них Вправе могут проблемы хорошей архитектуре
Михаил Непряхин: и и
Михаил Непряхин: а хайп чистая архитектура это вообще две, Тысячи пятнадцатый год То есть грубо говоря там какой-то вот популяризации архитектуре ей всего лишь там десять лет
Михаил Непряхин: и то спасибо мартину там про роберта мартина много Еще можно плохого сказать Он Действительно Там очень Противоречивый Человек Но Тем Не менее То Что Он популяризирует паторной Архитектуры Это очень круто потому Что
Михаил Непряхин: вам становятся. Автоматически Не нужно изучать Никакие другие патроны кроме паттерна Архитектурного
Михаил Непряхин: то есть У вас Лоу куплен и Хайка хижин в чистой архитектуре из коробки вам Не. Надо слить знать вам не надо эти Все принципы лебовски и прочее изучать потому что если вы архитектуру делаете по Патерному клина и текча У вас это все есть из коробки и Вот это очень крутое Достижение
Михаил Непряхин: мартина
Михаил Непряхин: и если. Вы не Разобрались с этим до конца Будет. Все равно вообще будет фигня потому что
Михаил Непряхин: и тоже как большая проблема что Люди до конца не разобрались и Лепят те же везде интерфейсы или Делают. Какую-то большую вложенность сложную Делают. Ну. Вот я Там в ролике про Чистую архитектуру это рассказывал в общем-то основные ошибки Поэтому вот тут больше ничего не расскажу
Михаил Непряхин: так
Михаил Непряхин: подтверждаю архитектура в Возрасте восьмидесятых
Михаил Непряхин: а лисков срян не львовский барберлисков
Михаил Непряхин: договорился
Михаил Непряхин: кип это нужно Избошникова да кроме металлвара и чистой Архитектуры По Сути паторной в Голову. Как таковые Не Используются никаких фабрик фабрик и никаких Там стратегий ну конечно вы увидите стратегию неизбежно
Михаил Непряхин: да Особенно, если будете в Вами Будет работать Я Не знаю важна стратегия Мне кажется, То погибли вообще из всех патронов Которые там есть у этих у банды четырех вот
Михаил Непряхин: когда люди приходят в гоу они выдыхают потому что в гол не принято использовать абстракции
Михаил Непряхин: эээ банально гитлер это не принято использовать принято просто анимичные модели меняешь напрямую в Столовую поля и все То есть вот
Михаил Непряхин: плюс гоу что синтаксис реально как бы простой Не надо Имплементировать интерфейсы Супер просто все Автоматически имплементироваться
Михаил Непряхин: То есть Мы по Сути Эти четыре Темы Сложные Разбираем Только Ради Собеседования в первую очередь они конечно да позволяют чуть глубже погрузиться и вы лучше начинаете понимать Философию языка
Михаил Непряхин: вот и
Михаил Непряхин: По большому счету даже если вы Это будете не знать
Михаил Непряхин: То вы сразу можете писать на Голову. И Так более менее будет даже неплохо а если будете знать будете еще и хорошо писать
Михаил Непряхин: Поэтому здесь мы двух зайцев выбиваем чтобы вы философию пропитали философию и пропитались, языка и чтобы себе, смогли пройти ну вот без этих с тем Собой невозможно пройти то Есть как Будто и
Михаил Непряхин: Ран тайм-планировщик обязательно произойдет
Михаил Непряхин: и еще произойдет про Каналы Но вот это вот в следующий Раз, Мы про канала посмотрим
Михаил Непряхин: так
Михаил Непряхин: все вопросов, Нет больше по интерфейсам
Михаил Непряхин: Окей короче говоря ээ у нас тут осталась еще одна каверная тема которую очень важно понимать
Михаил Непряхин: и самое главное вот вот с Этой вот вот штукой поиграйтесь попробуйте здесь интерфейсы свои пописать в другие места и складывать вот этот интерфейс
Михаил Непряхин: а ну вот У меня-то изначально вот так вот было вот и
Михаил Непряхин: ну попытайтесь поломать этот код посмотреть как его можно сломать что будет хуже
Михаил Непряхин: вот и потому что тут Есть тема Одна, еще на ресивера короче говоря важно понимать вот про вот этот указатель в сиверах
Михаил Непряхин: вот он же может быть указатель да мы можем ээ
Михаил Непряхин: обращаться Вызывать метод просиверу по указателю а можем по значению
Михаил Непряхин: и вот это вот такая важная штука которая очень глубокую механику имеет. И важно
Михаил Непряхин: покрутить немножко интерфейсы чтобы понять
Михаил Непряхин: что это такое
Михаил Непряхин: вот и все из Сложных тем Там осталось Только про каналы
Михаил Непряхин: и можем Уже Там это писать
Михаил Непряхин: архитектур.
Михаил Непряхин: Так ладно полтора часа У нас вообще Не получается укладываться
Михаил Непряхин: короче
Михаил Непряхин: тема растягивается к сожалению, вот ну может быть потом немножко, сократятся, занятия с сарян чтобы Было полтора часа как бы объявлено а мы часто часто выходим
Михаил Непряхин: около. Двух даже за два вот ну дальше тема будет чуть попроще и бум он чаще укладывался в полтора часа поступить темы очень сложно
Михаил Непряхин: надо открыть чушь на часа да ну. В интересно ну. Окей ладно Если интересно хорошо
Михаил Непряхин: Возьму два ну вот как было плавающие полтора-два да
Михаил Непряхин: кстати как По Связи учишься стала или сама два арпеза
Михаил Непряхин: но надеюсь что заходит надеюсь что заходит
Михаил Непряхин: шасбом поселок Кстати я Не Знаю чего это Было похоже там рк он чего-то блокировал опять, Время пришло
Михаил Непряхин: вот Реально Темы на самом деле бездонные углубляться можно бесконечно
Михаил Непряхин: э я вам даю чуть глубину чуть больше чем надо чтобы хоть что-то осталось вот
Михаил Непряхин: и идея в этом то что типа я отдаю э там чуть-чуть побольше чем надо
Михаил Непряхин: потому что все равно что-то Забудется а чего-то останется и на собесе разговор главное чтобы вы, с собеседующим вот примерно на одной уровне были чтобы он чего-то сказал а вы, такие а мономорфизм ну чего-то слышу Или там а ну
Михаил Непряхин: и и
Михаил Непряхин: вещи в гоу это как сальсы устроены и вот этот типзированный нил. Что ха-ха-ха чего-то вообще за фигня но на самом деле так Особенно, докопаться до языка больше и негде зато какая какой быстрый ее у баунта
Михаил Непряхин: вот Поэтому он так
Михаил Непряхин: ладно все тогда давайте всем. Пока до, четверга.