Программирование - интерес жизни
Программирование - интерес жизни
  • Видео 127
  • Просмотров 37 371
Swift. Metal. Compute pass setup
Теперь посмотрим как самим настроить отрисовку фигур с помощью шейдеров.
#swift #swiftui #metal #xcode #shaders
Просмотров: 167

Видео

Swift. Metal. Basics
Просмотров 353Месяц назад
Что такое шейдеры? Как они появились в программировании? Пара простых шейдеров в SwiftUI #swift #swiftui #metal #xcode #shaders
Combine. AsyncStreams.
Просмотров 1192 месяца назад
Рассмотрели: - как из Combine паблишера получить AsyncStream - как использовать async функции в Combine операторах (тут я потупил маленько) - сравнили жизненные циклы Combine и AsyncStream #swift #combine #asyncawait
Swift. Async/Await. AsyncStreams
Просмотров 1762 месяца назад
Рассмотрели: - Зачем нужны AsyncStreams, AsyncSequence - Как работают и устроены - Где использовать #swift #async #asyncawait #streams
Combine. UIKit. User Input
Просмотров 1392 месяца назад
Рассмотрели как с помощью Combine инструментов можно работать с пользовательским вводом #swift #uikit #combine #operator #combinelatest #zip #merge
Combine. UIKit Controls Publisher
Просмотров 1732 месяца назад
Написали небольшой publisher для удобства работы с компонентами UIKit #swift #combine #uikit
Работа в IT за границей. Разговор с Сергеем Масловым
Просмотров 4982 месяца назад
Созвонились с моим давним товарищем Сергеем Масловым, который работает в IT, в Эстонии. Поговорили в целом о том, как там все устроено. В целом получилась беседа в несколько неформальном, местами, ключе. Но без отклонений от основной темы разговора. 00:00-01:31 - О себе 01:31-10:00 - Градации разработчиков 10:00-12:12 - Про реализацию идей 12:12-13:38 - Тех.стэк 14:33-25:58 - Процесс планирован...
Combine. UIKit. Model + Subjects
Просмотров 2342 месяца назад
Рассмотрели как с помощью Combine инструментов можно передавать изменения из ViewModel во View #swift #uikit #combine #passthroughsubject #currentvaluesubject
Swift. Async/Await. Actors
Просмотров 3863 месяца назад
Рассмотрели: - Зачем нужны акторы - Как работают и устроены - ReEntrancy - Protocols #swift #async #asyncawait #actors
Swift. Async/Await. Sendable
Просмотров 2823 месяца назад
Рассмотрели: - Sendable концепция - Sendable value types - Sendable reference types - Sendable closures, functions 00:00 - 9:07 - Sendable концепция 9:07 - 18:04 - Sendable value types 18:04 - 23:04 - Sendable reference types 23:04 - 31:02 - Sendable closures, functions 31:02 - 36:50 - Николай тупит 36:50 - Sendable closures, functions #swift #async #asyncawait #sendable
Разговор про Swift с Михаилом
Просмотров 5213 месяца назад
Изначально это планировалось как mock интервью, но получилось совсем не формально, больше похоже просто на беседу с вопросами и ответами. Более того, некоторые вопросы ни разу на интервью мне не встречались, это моя отсебятина. И, для интервьюера, я слишком много разговаривал. Обычно на собеседовании нужно больше давать говорить кандидату. Плюс оформление окон и вообще визуально - все будет улу...
Swift. Async/Await. TaskGroups
Просмотров 2534 месяца назад
Рассмотрели: - TaskGroups (throwing) - DiscardingTaskGroup Способы добавления в группу: - addTask - addTaskUnlessCancelled #swift #async #asyncawait #taskgroups
Swift. Async/Await. Task. Часть 2
Просмотров 3424 месяца назад
Рассмотрели: - Отмена задач - Unstructured/Structured concurrency - async let #swift #async #asyncawait #asynclet
Swift. Async/Await. Task. Часть 1
Просмотров 5054 месяца назад
Рассмотрели: - Есть ли предел потоков - Как понять где выполнится задача - Жизненный цикл - Обработка ошибок #swift #async #asyncawait
Swift. Async/Await. Basics
Просмотров 9605 месяцев назад
Звук получился тихим, сделайте в этом видео погромче. Остальные видео будут лучше. Самые, самые основы async/await. Получилось довольно много слов и теории: - Немного о предыдущих подходах - Про использование async/await - Task.yeild, Continuation Следующий ролик будет про Task, будет больше кода и практики. 00:00-2:50 - Вступление 2:51-8:50 - Что было раньше 8:51-30:04 - Основы работы 30:05 - ...
Swift. Pose Detection App - 49.
Просмотров 1345 месяцев назад
Swift. Pose Detection App - 49.
Swift. Pose Detection App - 48.
Просмотров 725 месяцев назад
Swift. Pose Detection App - 48.
Swift. Pose Detection App - 47.
Просмотров 815 месяцев назад
Swift. Pose Detection App - 47.
Swift. Pose Detection App - 46.
Просмотров 795 месяцев назад
Swift. Pose Detection App - 46.
День разработчика. Работа с задачами
Просмотров 4115 месяцев назад
День разработчика. Работа с задачами
День разработчика. Созвоны, распорядок, требования
Просмотров 8446 месяцев назад
День разработчика. Созвоны, распорядок, требования
Swift. Pose Detection App - 45
Просмотров 856 месяцев назад
Swift. Pose Detection App - 45
Swift. Pose Detection App - 44
Просмотров 626 месяцев назад
Swift. Pose Detection App - 44
Есть ли у вас вопросы
Просмотров 1736 месяцев назад
Есть ли у вас вопросы
Swift. Dependencies. Пример
Просмотров 4077 месяцев назад
Swift. Dependencies. Пример
Swift. Pose Detection App - 42
Просмотров 437 месяцев назад
Swift. Pose Detection App - 42
Swift. Dependency Injection Новый подход
Просмотров 4927 месяцев назад
Swift. Dependency Injection Новый подход
Swift. Dependency Injection Основы
Просмотров 7607 месяцев назад
Swift. Dependency Injection Основы

Комментарии

  • @darkhan8713
    @darkhan8713 6 дней назад

    Спасибо за контент, который пилишь. Посмотрел многие твой видео. Но, в данном видео, на вопрос "нафига (some vs any)", ответ был очень сумбурным. Насколько я знаю в свифте, когда конформишься под протокол, то создается экзистеншиал контейнер (ну для value types точно), и его размер 40 байт (в зависимости от системы), если я тебя правильно понял, то ты имеешь ввиду, что если объявить var a: some SomeProtocol = SomethingProtocolConfirmed() то для "а" не будет создан экзистеншиал контейнер?

  • @sovrinfo
    @sovrinfo 10 дней назад

    Спасибо за видео!

  • @nikolai.developer
    @nikolai.developer 16 дней назад

    Благодаря подписчикам в телеграмме нашли ошибку в коде видео при вычислении threadsPerGroupCount. width и height параметры нужно дополнительно разделить на переменные width и height.

  • @artemaj9
    @artemaj9 20 дней назад

    Материал крутой! 🔥Сейчас немного подлагивают анимации тоже, хотя из предыдущего видео на SUI они не тормозили и ранее существенно более сложные затягивались по всему приложению вообще без лагов. Почему именно kernel шейдеры решили здесь использовать, а не через фрагментные и вершинные? Еще обычно через CADisplayLink я обновлял время каждый кадр и триггерил перерисовку, возможно это и оверхед, надо поисследовать. Спасибо за видео, тема не простая, но ваша подача отлично воспринимается!

    • @nikolai.developer
      @nikolai.developer 20 дней назад

      @@artemaj9 спасибо за отзыв. Если про подлагивающее анимации в видео - то это из-за нагрузки на комп. Там obs в высоком разрешении записывает и ноут не тянет все сразу. Про kernel и остальное - напишу чуть позже, сам пока разбираюсь до конца. CADisplayLink хорошая практика, мы их для Лотти даже использовали. Именно в видео просто задача была показать настройку pipeline. Чтобы лишнего не накидывать.

  • @КонстантинИсаченко-е3б

    Спасибо за урок! Прекрасно объясняете, всё понятно.

  • @oxyeighto6622
    @oxyeighto6622 29 дней назад

    Спасибо огромное!

  • @alyonaKisha
    @alyonaKisha Месяц назад

    Спасибо!

  • @alyonaKisha
    @alyonaKisha Месяц назад

    Спасибо за очень полезное видео!

  • @КонстантинИсаченко-е3б

    Спасибо за урок! К сожалению в первом примере нет кода файла ContentView. На GitHub его тоже нет.

  • @ARedkozubov
    @ARedkozubov Месяц назад

    Спасибо!

  • @alyonaKisha
    @alyonaKisha Месяц назад

    Спасибо за полезное видео!

  • @MrTestmachine
    @MrTestmachine Месяц назад

    спасибо за видосы, только поправьте порядок видео в плейлисте, пожалуйста

  • @TheMrPifagor
    @TheMrPifagor Месяц назад

    По идее [weak self] в конце решило бы проблему с захватом. То что дальше шел бы guard self влияет только на проверку на nil, эта проверка никак не связана с захватом ссылок.

    • @nikolai.developer
      @nikolai.developer Месяц назад

      Попробую посмотреть и напишу.

  • @ROCKY35638
    @ROCKY35638 Месяц назад

    спасибо огромное за твои ролики! очень много интересных тем

  • @DimaMcr
    @DimaMcr Месяц назад

    Супер❤

  • @ivankholod_str
    @ivankholod_str Месяц назад

    может вам сделать телеграм канал? там обсудим метал

    • @nikolai.developer
      @nikolai.developer Месяц назад

      Канал есть. t.me/developer_philosophy Он, в основном, чтобы не пропустить обновления. Но в комментариях можно вопросы задать, обсудить.

  • @majorcat
    @majorcat Месяц назад

    потрясающий материал! спасибо

  • @yrashkaaa
    @yrashkaaa Месяц назад

    18:48 Тут опечатка? Потому что throwing функция требует withThrowingTaskGroup в любом случае, она не требует только try перед вызовом withThrowingTaskGroup Invalid conversion from throwing function of type '() async throws -> ()' to non-throwing function type '@isolated(any) () async -> Void'

    • @nikolai.developer
      @nikolai.developer Месяц назад

      Да, здесь я запутался в try и throwing

  • @Xname00
    @Xname00 Месяц назад

    Николай, вопрос: заметил что вы часто используете struct, а не class для того, чтобы показать какую-либо работу, почему? Вы всегда предпочитаете struct классам? Например, в данном случае функция mutating

    • @nikolai.developer
      @nikolai.developer Месяц назад

      Есть такое. Если есть возможность обойтись структурой - старюсь использовать ее. Меньше рисков в многопоточной среде. Быстрее диспетчирезция (по умолчанию).

  • @neyasbit
    @neyasbit Месяц назад

    хотелось бы еще про BackgroundTasks, максимально не понятные вещи в нем, относительно организации фонового режима работы в Android.

  • @neyasbit
    @neyasbit Месяц назад

    каеф 💣

  • @allaalla-w6n
    @allaalla-w6n Месяц назад

    Реализация паблишера Future на swift 6 вызывает ошибку "Capture of 'promise' with non-sendable type '(Result<Data, CombineError>) -> Void' in a `@Sendable` closure" на каждом вызове promise, надо переключиться обратно на 5ый, ошибка превратится просто в варнинг. Долго искала как решить эту ошибку, в итоге в одном из чатов посоветовали просто проигнорировать. Потихоньку учусь и прохожу ваши материалы по Combine, спасибо большое за такие качественные видео!

    • @nikolai.developer
      @nikolai.developer Месяц назад

      @@allaalla-w6n спасибо за отзыв! Еще можно попробовать в build settings сменить strict concurrency checking.

  • @mineguffter
    @mineguffter 2 месяца назад

    Спасибо вам огромное. Супер обьясняете у вас Талант ! Не понимаю почему так мало подписчиков. Лучший ! Хотелось бы еще увидеть от вас обьяснение Clean Swift пожалуйста 🙏🏼 Успехов вам ❤

    • @nikolai.developer
      @nikolai.developer 2 месяца назад

      Спасибо. Про архитектуры подумаю.

    • @yrashkaaa
      @yrashkaaa Месяц назад

      @@nikolai.developer про архитектуры кстати поддерживаю, было бы супер!

  • @yegorsk97
    @yegorsk97 2 месяца назад

    Похоже на логику с оператором yield из других языков

  • @yrashkaaa
    @yrashkaaa 2 месяца назад

    Возможно это есть где-то дальше в видео или в следующих роликах, но уу меня вопрос по примеру, с 47:00, а зачем вообще использовать тут комбайн и паблишеры, почему нельзя просто асинхронно загрузить картинку через, например async/await? То есть в каком случае на практике может пригодиться паблишер?

    • @nikolai.developer
      @nikolai.developer 2 месяца назад

      Это для демонстрации работы паблишера. Как он работает и какие особенности есть. Плюс иногда бывают ситуации, когда у вас весь код написан и заточен под паблишеры. Т.е вы все приложение написали на Combine. Тогда удобнее придерживаться его.

  • @john_karpov
    @john_karpov 2 месяца назад

    Вы смотрю одержимы async/await темой. Это уже седьмое видео на канале

    • @maksimbezdrobnij2988
      @maksimbezdrobnij2988 2 месяца назад

      новый тренд в Swift разработке как никак)

    • @nikolai.developer
      @nikolai.developer 2 месяца назад

      Мне нравится новая технология. Это правда. Но, помимо этого, она много где встречается\востребована. Поэтому,. ее разбираю, освещаю.

    • @john_karpov
      @john_karpov 2 месяца назад

      @@nikolai.developer я никогда не пользовался async/await. Вы правы это новая технология. Но для меня - слишком новая.

  • @МасудГаджиев-ж3й
    @МасудГаджиев-ж3й 2 месяца назад

    Ваш канал стал для меня открытием, странно что раньше не попадался❤

  • @shaamee86
    @shaamee86 2 месяца назад

    Спасибо, супер видео! Много полезного материала. На 27:22 эксперимент не до конца чистый, так как функция осталась помеченной nonisolated ))

    • @nikolai.developer
      @nikolai.developer Месяц назад

      Да, если смотреть до конца объективно, согласен.

  • @oxyeighto6622
    @oxyeighto6622 2 месяца назад

    Будет очень интересно посмотреть видео с сетью, спасибо за видео

  • @WaK39c
    @WaK39c 2 месяца назад

    Потрясающе объяснено! Спасибо огромное! Помню Вас на обучении на Отусе)

  • @yrashkaaa
    @yrashkaaa 2 месяца назад

    Ого, честно говоря не ожидал чего-то настолько качественного когда тыкал по рекомендации в ютубе

  • @d0bss-on
    @d0bss-on 2 месяца назад

    Лучший лектор✊🔥

  • @d0bss-on
    @d0bss-on 2 месяца назад

    Полезный контент!

  • @Kolobashkav
    @Kolobashkav 2 месяца назад

    Блин круто, как раз на комбайне в UIKit мне нужно было работать)

  • @dmitriyf1
    @dmitriyf1 2 месяца назад

    10 мин скучновато.. пошел дальше

  • @АлександрГригоренко-в4с

    Огонь!

  • @АлександрГригоренко-в4с

    Отличная подача. Спасибо за труд

  • @АллаЕрохина-й1э
    @АллаЕрохина-й1э 2 месяца назад

    👍👍👍

  • @АллаЕрохина-й1э
    @АллаЕрохина-й1э 2 месяца назад

    💪💪💪

  • @АллаЕрохина-й1э
    @АллаЕрохина-й1э 2 месяца назад

    Однажды Эрнест Хемингуэй поспорил... Это самое грустное видео, которое я видела. Желаю Сергею получать много денег, занимаясь любимым делом🙌

  • @АллаЕрохина-й1э
    @АллаЕрохина-й1э 2 месяца назад

    Ну блин человек в Европе хочет больше безопасности и свободы выразить своё мнение? Не верю своим ушам!

  • @АллаЕрохина-й1э
    @АллаЕрохина-й1э 2 месяца назад

    Сергея ещё не уволили?

    • @nikolai.developer
      @nikolai.developer 2 месяца назад

      Увы, еще нет.

    • @АллаЕрохина-й1э
      @АллаЕрохина-й1э 2 месяца назад

      @@nikolai.developer тогда нужен ещё выпуск. С ещё более провокационными вопросами)))

  • @АллаЕрохина-й1э
    @АллаЕрохина-й1э 2 месяца назад

    Я требую вторую часть!!!

    • @nikolai.developer
      @nikolai.developer 2 месяца назад

      Есть разговоры на эту тему.

  • @АллаЕрохина-й1э
    @АллаЕрохина-й1э 2 месяца назад

    Переменные дожны быть запоминающиеся💯 Желаю чтобы Сергею как можно реже звонил робот, который в контактах записан "Ааааааа Жопа!!!!"

  • @АллаЕрохина-й1э
    @АллаЕрохина-й1э 2 месяца назад

    Поездатые разработчики😂😂😂 Несомненно 🔥🔥🔥

  • @АллаЕрохина-й1э
    @АллаЕрохина-й1э 2 месяца назад

    Внимание, Вы читаете восторженный коммент.

  • @alexandrf2428
    @alexandrf2428 2 месяца назад

    Как стать таким прошареным чуваком хотя бы за год, кто знает? 😅

    • @nikolai.developer
      @nikolai.developer 2 месяца назад

      За год вряд ли получится)

    • @Xrist1An
      @Xrist1An 2 месяца назад

      Хотя бы за год... 🥲 Сергей наверняка большую часть жизни в этой сфере работает. Так что ответ на твой вопрос - "никак!"))

  • @alexandrf2428
    @alexandrf2428 2 месяца назад

    Офигенно, куча интересной инфы изнутри . 👍

  • @ROCKY35638
    @ROCKY35638 3 месяца назад

    Спасибо за видео! Интересно смотреть именно про детали реализации. Классно объясняешь. Идеи для видосов: Было бы круто увидеть демо проект где объединяется навигация + работа со сторонними зависимостями. Например Firebase. Условно добавить firebase через @Dependencies, и смену экраноа после авторизации. Так же интересно как выстроить навигацию с таббаром + реализация popToRoot по нажатию на таб или кнопку из конечного экрана в стеке