iOS Makes Me Hate
3.93K subscribers
1.18K photos
168 videos
15 files
1.34K links
Авторский канал про iOS разработку. Путь продуктовых самураев в MAANG.

Самое больше iOS сообщество практиков: https://boosty.to/lionbond/

Автор: @lvbond Senior iOS Yandex, ex-Avito, VK
Download Telegram
Кстати, заметил как в сети снова набирает мода на литкод. Все новое - это старое по спирали.

Возобновляем задачи на канале снова?
15
Кстати, еще кину 💩 на 💨

Я вообще не понимаю этого прикола с фичей оплаты по карте из сбера

Зачем вообще нужно что-то? Телефон, карта, приложение?

Есть же офигенная штука как Сбер улыбка. Оплачиваю ей все. Можно даже не улыбаться.
3
How I use LLMs

Вот вам двухчасовой гайд, от первого лица всех промт-инженеров Андрея Карпатова, который пробустит ваш скилл с LLMками.

Как я уже писал, что нейросети — это тоже инструмент. Не нужно выключать голову и скармливать глупо любой контент, не помогая ей разобраться и не настраивая её.

А теперь контекста. Я не думал, что нужно писать такой пост. Но иногда натыкаюсь на разные статьи и посты со сравнениями моделей от коллег. Вот недавно один ios лид какой-то компании в линкедине написал пост, где сравнил Claude vs ChatGPT. Вывод был в стиле "чатгпт пишет код лучше" 🫣 На вопрсы "А какую модель он юзал и там и там?" или "А ты юзал Claude AI или Claude Code?" он ответить не смог и сказал "ушел разбираться" :).

Также я слышал коммент "нейросетки не умеют в шейдеры". Тут сразу куча вопросов:
- а какую модель ты юзал?
- ты писал ленивый zero-shot promt?
- Наполнил свой запрос примерами? Какими?
- Использовал техники сэмплирования?
и другие вопросы

Работать с нейронкой это как с тренером в спортзале. Если ты пришёл и сказал: "Сделай меня красивым", он тебе не поможет. Нужно конкретизировать цель, программу, подходы. И только тогда будет прогресс.

Если ответы на эти вопросы вы не находите, то перед вами поверхностный вайбкодер, а не проженный промт-инженер. Более подробно поговорим про это и многое другое в нашем созвоне комьюнити

Полезные статьи:
- Claude Code: The AI Developer’s Secret Weapon
- Comparing Chatgpt and Claude for coding tasks
- Cursor VS Claude Code: The Winner
Please open Telegram to view this post
VIEW IN TELEGRAM
742
Forwarded from XOR
This media is not supported in your browser
VIEW IN TELEGRAM
Нашли LeetCode для написания шейдеров — Shader Academy

Это интерактивная платформа с сотней заданий разной сложности, подсказками, полезными развернутыми учебными материалами и рейтинговой таблицей.

Самое приятное, что это все бесплатно. А еще можно создавать свои челленджи.

Такое мы сохраняем. 👍

@xor_journal
Please open Telegram to view this post
VIEW IN TELEGRAM
3135
This media is not supported in your browser
VIEW IN TELEGRAM
У Swift 6.2 Testing вышла прикольная фича.

Кстати, у меня есть большая статья про юнит-тесты, но я так и не трогал Swift Testing. Слышал там были проблемы с перфомансом.

Поделитесь опытом использования в комментах
10
готовим подборки задач и решений для тренировки с АИшками. Промежуточный результат.

Над какими задачами у вас ломаются аишки? Какие модели юзаете? Где наоборот помогает?
7
🌿 Swift Concurrency Tips: Task cancellation

В сентябре мы немного переключимся от Swift Concurrency к AI агентам и llm-кам. Но потом вернемся, чтобы лучше структурировать контент. Пока буду делать новую рубрику Swift Concurrency Tips. Начнем с самого популярного.

Многие думают, что вызов Task.cancel() моментально останавливает выполнение. Но это не так: таска лишь помечается как отмененная, а продолжит работать, пока сама не проверит свой статус.

Таска сама должна проверить свой статус и для этого у нас есть:
🟣Task.checkCancellation() — этот метод проверят была ли задача отменена через cancel(). И если да, то кидает ошибку CancellationError. Тут главное не писать try? у Task.checkCancellation. Он "проглатывает" ошибку и не отменяет таску

🟣Task.isCancelled подходит в случае если нам не нужна ошибка

Вывод: Swift сам вашу задачу не остановит — добавляйте проверки.

Полезные ссылки:
- How to cancel a Task
- Task Cancellation in Swift Concurrency
- How does Task.checkCancellation knows task?

🧬 А в ноушене я собираю расширенный сборник самых полезных советов. Получить доступ можно 💰тут или ⭐️ тут
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
9
Мифы разработки и Reference Promotion

Есть тема управления памятью и в ней много заблуждений. Часто это связанно с формулировками и дефинициями. А также, что многое нельзя проверить практикой.

Например, один из вопросов для споров: "когда value type хранится в куче?". Этот вопрос далеко не всегда практический, но часто его задают, чтобы оценить эрудицию и начитанность кандидата статьями и опытом. Это неплохая оценка, ведь показывает насколько глубоко любит копать кандидат чисто на интересе. Его задали сегодня в нашем чате.

Тут обычно вспоминают Boxing.

Boxing — это когда значение value type (структуры или enum) кладут в специальный объект в куче. Внутри box хранится само значение, а переменные получают ссылку на него.


Когда происходит Boxing? (Вспоминая великий фильм Seven хочется пошутить What's in the box????). Компилятор прибегает к этому в нескольких случаях:
- когда value type нужно хранить в Any или протоколе
- когда переменную захватывает замыкание и она должна пережить стековый фрейм
- внутри инициализаторов структур, чтобы мутировать self, пока он ещё не до конца сконструирован

Одно из заблуждений, которое встречал на собесах, это ожидаемый ответ "когда структура хранит в себе классы". Но это не совсем правда.

В "куче" структура только "бывает" при инициализации. После выхода из инициализатора box уничтожается, и структура может снова жить как value.

В итоге, как правильно отвечать на вопрос "живет ли структура в куче"?

Обычно структура — это value type, и она хранится в стеке или inline в другом объекте. Но во время инициализации или в особых случаях (замыкания, протоколы, Any) компилятор делает boxing — временно помещает структуру в кучу.
111