Коллекции с слабыми ссылками
По умолчанию все базовые (Array, Set, Dictionary) коллекции Swift'а хранят элементы как сильные ссылки. И если мы хотим использовать слабые ссылки, то обычно применяли обертки Weak<T>.
Для каких задач это полезно? Например, года два назад я писал фичу с мультипрофилем. Где у наблюдателя (observer'а) есть множество подписчиков (subscriber'ов). Похожую задачу мы разбирали, когда писали свой NotificationCenter.
Но можно не писать дополнительную обертку и использовать готовые коллекции:
🟣 NSPointerArray. Позволяет создавать массивы, которые хранят элементы как слабые ссылки (например, с помощью NSPointerArray.weakObjects()).
🟣 NSHashTable. Эта коллекция представляет собой хэш-таблицу, которая может быть настроена на хранение слабых (или неуправляемых) ссылок. В отличие от NSPointerArray, NSHashTable не гарантирует порядок элементов
🟣 NSMapTable. Словарь, позволяет использовать слабые ссылки как для ключей, так и для значений. Он полезен, когда нужно создавать ассоциативные структуры данных с особым управлением памятью (например, кеши или реализации обратных связей между объектами).
Разберем примеры в картинка.
По умолчанию все базовые (Array, Set, Dictionary) коллекции Swift'а хранят элементы как сильные ссылки. И если мы хотим использовать слабые ссылки, то обычно применяли обертки Weak<T>.
Для каких задач это полезно? Например, года два назад я писал фичу с мультипрофилем. Где у наблюдателя (observer'а) есть множество подписчиков (subscriber'ов). Похожую задачу мы разбирали, когда писали свой NotificationCenter.
Но можно не писать дополнительную обертку и использовать готовые коллекции:
Разберем примеры в картинка.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Можно ли запилить свой Xcode?
На днях Apple открыла исходный код swift-build. Движка, используемого для билда Xcode.
Многие каналы побежали дезинформировать людей, что теперь ЛЮБОЙ может написать свой Xcode.
Забавно, что эти каналы называют себя практиками… на деле же 99% их контента просто копипасты или редиректы чужих статей.
Наш любимый БРАТ Астемир сделал углубленный ресерч и прочитал исходники.
И спойлер, нет. Вы не можете сделать свой Xcode.
Как там говорится, формируйте свое мнение?
На днях Apple открыла исходный код swift-build. Движка, используемого для билда Xcode.
Многие каналы побежали дезинформировать людей, что теперь ЛЮБОЙ может написать свой Xcode.
Забавно, что эти каналы называют себя практиками… на деле же 99% их контента просто копипасты или редиректы чужих статей.
Наш любимый БРАТ Астемир сделал углубленный ресерч и прочитал исходники.
И спойлер, нет. Вы не можете сделать свой Xcode.
Как там говорится, формируйте свое мнение?
GitHub
GitHub - swiftlang/swift-build: A high-level build system based on llbuild, used by Xcode, Swift Playground, and the Swift Package…
A high-level build system based on llbuild, used by Xcode, Swift Playground, and the Swift Package Manager - swiftlang/swift-build
334 16 4
Модульная архитектура с SPM
Доклад Либранера Сантоса, автора популярных книг, рассказал:
🟣 Какие проблемы они решали
🟣 Как модульная архитектура помогла с тестированием и переиспользованием
🟣 Почему выбрали SPM
Отдельный кайф про упоминание выбранных принципов и критериев "хорошой модуляризации". А также, что не стали избирать избыточных UI архитектурных паттернов как VIPER/TCA.
Доклад Либранера Сантоса, автора популярных книг, рассказал:
Отдельный кайф про упоминание выбранных принципов и критериев "хорошой модуляризации". А также, что не стали избирать избыточных UI архитектурных паттернов как VIPER/TCA.
Please open Telegram to view this post
VIEW IN TELEGRAM
YouTube
A Tale of Modular Architecture with SPM Swift Package Manager | Swift Heroes 2024 Talk
🎟️ 2025 Edition 8-9 April, Turin: https://swiftheroes.com/2025/tickets/
⏩ Chapter:
00:00 Intro
02:54 Initial Effort
05:32 Visibility
06:04 Standarization
08:52 Swift Package manager
15:16 Modular Architecture
16:56 things to consider from DAY ONE
19:52 Modules…
⏩ Chapter:
00:00 Intro
02:54 Initial Effort
05:32 Visibility
06:04 Standarization
08:52 Swift Package manager
15:16 Modular Architecture
16:56 things to consider from DAY ONE
19:52 Modules…
BDUI-инженеры
Помните я проводил опрос на канале по первому авторскому ролику в ютубе? Там выиграла тема роадмапа для iOS 2025.
Я даже начал делать видос, но почти забросил по двум причинам:
- слишком большой объем для первого ролика
- мой звук и голос заговнили в чате, когда я скинул демку
Но я напишу статью. Надеюсь скоро. И в ней не будет тупых сравнений SUI vs UIKit, GCD vs SC. Забудьте сразу что коммерческий иос инженер это просто кнопкокрас.
Мы разберем множество ветвей развития.
Одна из них — это будущая новая профессия. И называется она BDUI-разработчик.
Уже во многих компаниях открываются такие вакансии. А некоторые даже полностью переобучили своих инженеров.
Они почти не трогают нативный код и верстают с помощью других абстракций для всех платформа сразу. А также растут в изучения бэка.
Берут полный цикл разработки фичи. Собственно поэтому ору когда какой-то канал пишет «решайте сложные задачи» и учит как делать анимашки на SUI. Ща бы анимашки поделать в 2к25🙂 🙂 🙂
Инженер будет оцениваться не по анимашкам. А по импакту.
Мобильный инженер это не тот, кто знает только одну платформу.
Помните я проводил опрос на канале по первому авторскому ролику в ютубе? Там выиграла тема роадмапа для iOS 2025.
Я даже начал делать видос, но почти забросил по двум причинам:
- слишком большой объем для первого ролика
- мой звук и голос заговнили в чате, когда я скинул демку
Но я напишу статью. Надеюсь скоро. И в ней не будет тупых сравнений SUI vs UIKit, GCD vs SC. Забудьте сразу что коммерческий иос инженер это просто кнопкокрас.
Мы разберем множество ветвей развития.
Одна из них — это будущая новая профессия. И называется она BDUI-разработчик.
Уже во многих компаниях открываются такие вакансии. А некоторые даже полностью переобучили своих инженеров.
Они почти не трогают нативный код и верстают с помощью других абстракций для всех платформа сразу. А также растут в изучения бэка.
Берут полный цикл разработки фичи. Собственно поэтому ору когда какой-то канал пишет «решайте сложные задачи» и учит как делать анимашки на SUI. Ща бы анимашки поделать в 2к25
Инженер будет оцениваться не по анимашкам. А по импакту.
Мобильный инженер это не тот, кто знает только одну платформу.
Please open Telegram to view this post
VIEW IN TELEGRAM
Как реализовать потокобезопасную коллекцию с слабыми ссылками
В прошлом посте мы разобрали коллекции, которые позволяют удерживать объект по слабым ссылкам. Но в них есть недостатки:
🟣 отсутствие потокобезопасности
🟣 нельзя ограничить тип с помощью дженериков
🟣 Если объект освобождается (deinit), то его указатель в NSPointerArray не удаляется автоматически
🟣 Нет поддержки индексации (subscript)
Сейчас же мы сделаем свой кастомную потокобезопасную коллекцию, которая решаетвсе проблемы.
В прошлом посте мы разобрали коллекции, которые позволяют удерживать объект по слабым ссылкам. Но в них есть недостатки:
Сейчас же мы сделаем свой кастомную потокобезопасную коллекцию, которая решает
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
iOS Makes Me Hate
Как реализовать потокобезопасную коллекцию с слабыми ссылками В прошлом посте мы разобрали коллекции, которые позволяют удерживать объект по слабым ссылкам. Но в них есть недостатки: 🟣 отсутствие потокобезопасности 🟣 нельзя ограничить тип с помощью дженериков…
Как реализовать потокобезопасную коллекцию с слабыми ссылками 2
Недостатки прошлой коллекции понятны:
🟣 1. Барьеры и отдельные конкурентные очереди — зло. Это хорошо разбирают здесь, но мы еще пройдемся отдельным постом.
🟣 2. Здесь есть корнер-кейс, который мы разбирали тут. При чтении и последующей записи будет гонка.
Улучшим наше решение и сделаем его более качественным.
Комментируйте, чего мог еще упустить?
UPD: в общем, будет третья и четвертая версия. Тут Астемир накинул какой должна быть сеньорская коллекция и есть че разобрать ни на один пост
Недостатки прошлой коллекции понятны:
Улучшим наше решение и сделаем его более качественным.
Комментируйте, чего мог еще упустить?
UPD: в общем, будет третья и четвертая версия. Тут Астемир накинул какой должна быть сеньорская коллекция и есть че разобрать ни на один пост
Please open Telegram to view this post
VIEW IN TELEGRAM
Делаем разбор на систему госпроверки айтишников?
Anonymous Poll
45%
да
3%
нет
20%
похер
32%
там разве есть иос?
iOS Makes Me Hate
Как реализовать потокобезопасную коллекцию с слабыми ссылками 2 Недостатки прошлой коллекции понятны: 🟣 1. Барьеры и отдельные конкурентные очереди — зло. Это хорошо разбирают здесь, но мы еще пройдемся отдельным постом. 🟣 2. Здесь есть корнер-кейс, который…
Реализация кастомной коллекции: добавление Sequence
Решил, что все же будет цикл постов, где мы иттеративно пишем хорошую коллекцию. Такое упражнение поможет лучше понять многие вещи и мне, и вам.
В прошлом посте мы добавили потокобезопасность, сделали subscript и научились очищать дырявые ссылки.
В этом мы чуть улучшим unfair_lock и добавим Sequence. Этот протокол помогает использовать нашу коллекцию в циклах в формате:
В Swift Sequence и IteratorProtocol используются для создания и работы с последовательностями элементов.
Предлагайте свои улучшения.
Решил, что все же будет цикл постов, где мы иттеративно пишем хорошую коллекцию. Такое упражнение поможет лучше понять многие вещи и мне, и вам.
В прошлом посте мы добавили потокобезопасность, сделали subscript и научились очищать дырявые ссылки.
В этом мы чуть улучшим unfair_lock и добавим Sequence. Этот протокол помогает использовать нашу коллекцию в циклах в формате:
let oneTwoThree = 1...3
for number in oneTwoThree {
print(number)
}
В Swift Sequence и IteratorProtocol используются для создания и работы с последовательностями элементов.
Предлагайте свои улучшения.
C днем всех влюбленных 🖤
Этот год я не просто так объявил годом любви.
Любовь к себе. Делу. Близким. Без неё всё остальное не имеет смысл.
Она дает уникальную ценность времени, материи и делу. Богатство, красота или ум не дадут удовлетворения, если это все нелюбимое. Твой продукт будет бездушным и коммерческим. Жизнь пресной и пустой.
Даже в iOS приходят по любви. Бабки вы здесь не найдете...
Даже сообщество было создано за месяц до дня любви. И традиционно, 14 числа, я выкладываю прогресс книги. А сегодня еще 10 задач из общего сборника про память.
Получить кусочек любви по скидке вы можете💰 тут или ⭐️ тут
Любите и будьте любимыми.
Этот год я не просто так объявил годом любви.
Любовь к себе. Делу. Близким. Без неё всё остальное не имеет смысл.
Она дает уникальную ценность времени, материи и делу. Богатство, красота или ум не дадут удовлетворения, если это все нелюбимое. Твой продукт будет бездушным и коммерческим. Жизнь пресной и пустой.
Даже в iOS приходят по любви. Бабки вы здесь не найдете...
Даже сообщество было создано за месяц до дня любви. И традиционно, 14 числа, я выкладываю прогресс книги. А сегодня еще 10 задач из общего сборника про память.
Если человек не знает, что любое дело требует определенного времени, и захочет форсировать события, то ему наверняка не удастся сосредоточиться – как и овладеть искусством любить. Чтобы понять, что такое терпение, достаточно понаблюдать за ребенком, который учится ходить. Он падает и все равно снова и снова продолжает
Получить кусочек любви по скидке вы можете
Любите и будьте любимыми.
Please open Telegram to view this post
VIEW IN TELEGRAM
Подборка контента про любовь
Ну раз мы сегодня все такие сладкие и милые, то поделимся контентом про любовь. Это будут книги и фильмы.
1. «Искусство любить» Эриха Фромма. Эту книгу я читал лет 10 назад, когда пытался сформулировать себе что это чувство значит и как применять в творчестве и жизни.
Отличная книга. Нужно перечитать.
2. «Она» 2013. Один из моих любимых фильмов, который спустя 10 лет уже кажется реальным.
Музыка, сюжет, режиссура. Все отлично передает чувства. Определенно, когда буду записывать ролики, отпечатки в моем стиле будут видны из этого фильма.
3. «Анна Каренина» Л. Толстой. Тема русских классиков мне очень близка, тк моя бабушка была учителем литературы и назвала меня в честь сами знаете кого.
Мне не нравился Толстой и я всегда фанател по Достоевскому. Бабушке он не нравился. Но спустя годы ты понимаешь что взгляды, фабула и миры совсем разные у авторов. И многое зависит от их стиля жизни.
Достоевский показывает маргинальный и жестокий мир. Собирая разные осколки, лежащие в грязи. Когда же Толстой показывает возвышенное общество и возвышенные темы.
4. «Пять языков любви». Одна из лучших книг которая разделяет на критерии тему разных форм любви.
Делитесь своими рекомендациями
Ну раз мы сегодня все такие сладкие и милые, то поделимся контентом про любовь. Это будут книги и фильмы.
1. «Искусство любить» Эриха Фромма. Эту книгу я читал лет 10 назад, когда пытался сформулировать себе что это чувство значит и как применять в творчестве и жизни.
Отличная книга. Нужно перечитать.
2. «Она» 2013. Один из моих любимых фильмов, который спустя 10 лет уже кажется реальным.
Музыка, сюжет, режиссура. Все отлично передает чувства. Определенно, когда буду записывать ролики, отпечатки в моем стиле будут видны из этого фильма.
3. «Анна Каренина» Л. Толстой. Тема русских классиков мне очень близка, тк моя бабушка была учителем литературы и назвала меня в честь сами знаете кого.
Мне не нравился Толстой и я всегда фанател по Достоевскому. Бабушке он не нравился. Но спустя годы ты понимаешь что взгляды, фабула и миры совсем разные у авторов. И многое зависит от их стиля жизни.
Достоевский показывает маргинальный и жестокий мир. Собирая разные осколки, лежащие в грязи. Когда же Толстой показывает возвышенное общество и возвышенные темы.
4. «Пять языков любви». Одна из лучших книг которая разделяет на критерии тему разных форм любви.
Делитесь своими рекомендациями
Литрес
Искусство любить — Эрих Фромм | Литрес
Одна из самых известных работ Эриха Фромма – «Искусство любить» – посвящена непростым психологическим аспектам возникновения и сохранения человеком такого, казалось бы, простого чувства, как любовь.Д…
Ваша первая работа
Мне часто говорят, что имея такую аудиторию я должен нести какую-то ответственность и учить чему-то молодых. Я с этим не согласен, у меня свой путь и я всегда говорил, что мой контент не сильно дружелюбный к новичкам. Но я все же выскажусь. Давайте поговорим о медиабулщите.
Сейчас мода не любить свою работу и я считаю это полнейшей тупостью.
Люди ошибочно разделяют любовь к себе и деньгам и любовь к своей работе. Будто это два разных несовместимых типа любви. Забавно, но чаще я слышу это от тех, кто не в найме и обижен на работу. Им не дали сеньора, не дали повышение, они не смогли пройти алгособесы. Обиженные ушли стримить на ютуб, создавая свои эхо-комнаты. Не сделав вклад в образование. Кто-то даже сидит на шее у жены.
Пахнет ресентиментами. И наговариванием на бросившую тебя бывшую.
Ничего не мешает любить себя, деньги и свою работу. Более того, я скажу, что если вы молодой студент, то впервую очередь должны думать не о бабках, а о качестве опыта первой работы.
Потому что первая работа определит вас и ваш путь. Если вы выбираете легкий путь и гонку только за бабками, то легко можете наткнуться на очень спорное место и разочароваться. Это как стать женоненавистником и теперь думать только о пенисах (забавно, но эта черта в людях выше тоже встречается).
Именно поэтому конкуренция на стажировки такая высокая. Она не дает бабки. Первая работа в лучших компаниях открывает возможности в будущем. Создает нетворк из талантливых и умных людей. Учит творить, а не быть обиженным паразитом. Менять мир и создавать решения, а не ныть и хакать.
Первая работа определит вашу жизнь и может быть даже личность. Не ищите легкие пути на старте. Бросайте вызовы, держите удар и отвечайте.
Если я и несу какую-то ответственность, то только сказать, что все мы ее несем сами с 18 лет и нужно думать своей головой.
Мне часто говорят, что имея такую аудиторию я должен нести какую-то ответственность и учить чему-то молодых. Я с этим не согласен, у меня свой путь и я всегда говорил, что мой контент не сильно дружелюбный к новичкам. Но я все же выскажусь. Давайте поговорим о медиабулщите.
Сейчас мода не любить свою работу и я считаю это полнейшей тупостью.
Люди ошибочно разделяют любовь к себе и деньгам и любовь к своей работе. Будто это два разных несовместимых типа любви. Забавно, но чаще я слышу это от тех, кто не в найме и обижен на работу. Им не дали сеньора, не дали повышение, они не смогли пройти алгособесы. Обиженные ушли стримить на ютуб, создавая свои эхо-комнаты. Не сделав вклад в образование. Кто-то даже сидит на шее у жены.
Пахнет ресентиментами. И наговариванием на бросившую тебя бывшую.
Ничего не мешает любить себя, деньги и свою работу. Более того, я скажу, что если вы молодой студент, то впервую очередь должны думать не о бабках, а о качестве опыта первой работы.
Потому что первая работа определит вас и ваш путь. Если вы выбираете легкий путь и гонку только за бабками, то легко можете наткнуться на очень спорное место и разочароваться. Это как стать женоненавистником и теперь думать только о пенисах (забавно, но эта черта в людях выше тоже встречается).
Именно поэтому конкуренция на стажировки такая высокая. Она не дает бабки. Первая работа в лучших компаниях открывает возможности в будущем. Создает нетворк из талантливых и умных людей. Учит творить, а не быть обиженным паразитом. Менять мир и создавать решения, а не ныть и хакать.
Первая работа определит вашу жизнь и может быть даже личность. Не ищите легкие пути на старте. Бросайте вызовы, держите удар и отвечайте.
Если я и несу какую-то ответственность, то только сказать, что все мы ее несем сами с 18 лет и нужно думать своей головой.
Рекомендация на выхи
Кстати, начал все же качать свою речь. Чтобы быть более дружелюбным к новым читателям 🙂🙂🙂
Пока эта лучшая и современная книга как речь влияет на коммуникацию и зачем все это нужно. Вопросы новой действительности, стилях, поколений, блогерах, правом свободы, моды, противоречий.
Мне кажется, я даже промты буду по-другому для чатгпт писать
Много глубоких мыслей, где останавливаюсь перечитывать/переслушивать.
Кстати, начал все же качать свою речь. Чтобы быть более дружелюбным к новым читателям 🙂🙂🙂
Пока эта лучшая и современная книга как речь влияет на коммуникацию и зачем все это нужно. Вопросы новой действительности, стилях, поколений, блогерах, правом свободы, моды, противоречий.
Мне кажется, я даже промты буду по-другому для чатгпт писать
Много глубоких мыслей, где останавливаюсь перечитывать/переслушивать.
Как используют LLM Стафф-инженеры
В этом году контента про использование AI на работе будет много на канале. Мы углубимся в эту тему и наберем экспертизу. Вся суть современного образования поменялась или поменяется.
Игра изменена. Многие мои знакомые уже испытывают дикий дискомфорт от программирования без AIшек.
Автор статьи пишет, как разные LLM помогают ему в работе и обучении: от написания кода и рефакторинга до быстрых заметок, идей и планирования. Он подчёркивает, что LLM становятся чем-то вроде «умного помощника», ускоряя рутинные задачи и творческие процессы.
🟣 Сила «правильных» запросов
Большое внимание уделяется умению сформулировать чёткий запрос (prompt), поскольку итоговый ответ модели напрямую зависит от полноты и точности запроса.
Автор упоминает, что порой лучшая стратегия — сначала дать модели контекст (какую задачу решаем), а затем задать конкретные вопросы.
🟣 Подход к сложным задачам
Автор рекомендует делить задачу на более мелкие части (decomposition): сначала с помощью LLM уточнять суть проблемы, а потом использовать модель для решения каждой небольшой подзадачи.
Таким образом, LLM как бы «ведёт» пользователя пошагово, помогая не терять общий фокус.
🟣 Проверка фактов и итогового качества
Важно критически оценивать ответы модели, не полагаясь на них слепо. Модели склонны к «галлюцинациям», поэтому стоит перепроверять факты и логику.
Автор всегда проверяет выдаваемые ссылки, код и формулы.
🟣 Баланс автоматизации и творчества
Несмотря на то, что LLM помогают генерировать идеи и контент, автор подчёркивает роль человека как «главного редактора» и куратора.
Он использует машину для черновиков, а итоговую структуру и качество доводит сам.
В этом году контента про использование AI на работе будет много на канале. Мы углубимся в эту тему и наберем экспертизу. Вся суть современного образования поменялась или поменяется.
Игра изменена. Многие мои знакомые уже испытывают дикий дискомфорт от программирования без AIшек.
Автор статьи пишет, как разные LLM помогают ему в работе и обучении: от написания кода и рефакторинга до быстрых заметок, идей и планирования. Он подчёркивает, что LLM становятся чем-то вроде «умного помощника», ускоряя рутинные задачи и творческие процессы.
Большое внимание уделяется умению сформулировать чёткий запрос (prompt), поскольку итоговый ответ модели напрямую зависит от полноты и точности запроса.
Автор упоминает, что порой лучшая стратегия — сначала дать модели контекст (какую задачу решаем), а затем задать конкретные вопросы.
Автор рекомендует делить задачу на более мелкие части (decomposition): сначала с помощью LLM уточнять суть проблемы, а потом использовать модель для решения каждой небольшой подзадачи.
Таким образом, LLM как бы «ведёт» пользователя пошагово, помогая не терять общий фокус.
Важно критически оценивать ответы модели, не полагаясь на них слепо. Модели склонны к «галлюцинациям», поэтому стоит перепроверять факты и логику.
Автор всегда проверяет выдаваемые ссылки, код и формулы.
Несмотря на то, что LLM помогают генерировать идеи и контент, автор подчёркивает роль человека как «главного редактора» и куратора.
Он использует машину для черновиков, а итоговую структуру и качество доводит сам.
Please open Telegram to view this post
VIEW IN TELEGRAM
Seangoedecke
How I use LLMs as a staff engineer
What I use them for and what I don't
Реализация кастомной коллекции: пишем свой Copy-on-Write
Продолжаю серию постов. В прошлых мы разобрали:
🟣 зачем нам нужна коллекция со слабыми ссылками
🟣 потокобезопасность коллекции и плюсы и минусы разных инструментов
🟣 добавили subscript и Sequence
В этом посте мы напишем свой Copy-on-Write. Как мы помним, CoW — это инструмент оптимизации, который помогает отложить копирование коллекции до первого изменения.
Конечно, можно обойтись и не писать CoW. Изменив некоторые типы на struct или добавив NSMutableArray. Но давайте разберем почему это не всегда хорошо.
Детально разберем на слайдах.
Продолжаю серию постов. В прошлых мы разобрали:
В этом посте мы напишем свой Copy-on-Write. Как мы помним, CoW — это инструмент оптимизации, который помогает отложить копирование коллекции до первого изменения.
Конечно, можно обойтись и не писать CoW. Изменив некоторые типы на struct или добавив NSMutableArray. Но давайте разберем почему это не всегда хорошо.
Детально разберем на слайдах.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM