готовим подборки задач и решений для тренировки с АИшками. Промежуточный результат.
Над какими задачами у вас ломаются аишки? Какие модели юзаете? Где наоборот помогает?
Над какими задачами у вас ломаются аишки? Какие модели юзаете? Где наоборот помогает?
В сентябре мы немного переключимся от Swift Concurrency к AI агентам и llm-кам. Но потом вернемся, чтобы лучше структурировать контент. Пока буду делать новую рубрику Swift Concurrency Tips. Начнем с самого популярного.
Многие думают, что вызов Task.cancel() моментально останавливает выполнение. Но это не так: таска лишь помечается как отмененная, а продолжит работать, пока сама не проверит свой статус.
Таска сама должна проверить свой статус и для этого у нас есть:
Вывод: 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
Мифы разработки и Reference Promotion
Есть тема управления памятью и в ней много заблуждений. Часто это связанно с формулировками и дефинициями. А также, что многое нельзя проверить практикой.
Например, один из вопросов для споров: "когда value type хранится в куче?". Этот вопрос далеко не всегда практический, но часто его задают, чтобы оценить эрудицию и начитанность кандидата статьями и опытом. Это неплохая оценка, ведь показывает насколько глубоко любит копать кандидат чисто на интересе. Его задали сегодня в нашем чате.
Тут обычно вспоминают Boxing.
Когда происходит Boxing? (Вспоминая великий фильм Seven хочется пошутить What's in the box????). Компилятор прибегает к этому в нескольких случаях:
- когда value type нужно хранить в Any или протоколе
- когда переменную захватывает замыкание и она должна пережить стековый фрейм
- внутри инициализаторов структур, чтобы мутировать self, пока он ещё не до конца сконструирован
Одно из заблуждений, которое встречал на собесах, это ожидаемый ответ "когда структура хранит в себе классы". Но это не совсем правда.
В "куче" структура только "бывает" при инициализации. После выхода из инициализатора box уничтожается, и структура может снова жить как value.
В итоге, как правильно отвечать на вопрос "живет ли структура в куче"?
Есть тема управления памятью и в ней много заблуждений. Часто это связанно с формулировками и дефинициями. А также, что многое нельзя проверить практикой.
Например, один из вопросов для споров: "когда 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 — временно помещает структуру в кучу.
В закрытой базе собрал детальный разбор самых полезных советов. Есть и очевидные, но также и не совсем.
Я напомнию, что действует последние дни акции. Потом не говорите, что не предупреждал.
Впереди месяц вайбкодинга и промт-инженеринга. Удивительно даже для меня, но там много интересного можно обсудить и пощупать, что меняет привычки. Там будет много живых общений и разборов. А также кое-какие интересные сюрпризы.
Please open Telegram to view this post
VIEW IN TELEGRAM
Overeducated & underexperienced
Недавно в комментариях на одном канале тимлидов наткнулся на классный фидбэк про систему образования.
Там сравнивали подходы вузов, отмечая СНГшную систему как ту, что даёт много теории и базы, но мало практики. Приведу цитату::
Вы можете со мной не согласиться, но как сын учителей и педагогов, я часто слышал от своих родственников похожие споры.
Сейчас я собеседования не провожу, но раньше активно участвовал в них. Мне нравилось придумывать секции для iOS-разработчиков и добавлять туда элемент справедливости. Я воспринимал это как баланс в игре: если его не поддерживать, система уходит в хаос.
О дизайне собеседований и о том, почему всё не так просто, как советуют ютуб-блогеры, можно будет поговорить отдельно. Давайте про реальные вещи, а не пересказы пересказов тех, кто давно не работает и работает только с искаженной призмой.
В одной из прошлых компаний действовало правило "Если кандидат говорит слишком много теории, но не справляется с простыми практическими задачами — это красный флаг".
Что это значит? Не нужно путать эрудицию и практику. Бывают кандидаты, кто идеально рассказал управление памятью: компилятор, сайд таблицы, стэк и куча, isa поинтеры и всё всё всё. Но только ему даешь изи задачу на утечку памяти, то он сыпится. Что делать с такими кандидатами?
В команде тогда спорили долго, но сошлись на том, что нанимают не участников "Что? Где? Когда?", а людей, которые будут решать реальные задачи. В итоге правило было простым: нерешенная практическая задача обнуляет даже самые блестящие теоретические ответы.
Знать как делать идеально != делать идеально. Именно поэтому в этом канале и закрытой базе я делаю акценты на задачники, а не теорию. Её отлично может упаковать уже нейронки, а руку набить до идеальности могут только многократные неидеальные повторения. Нужно найти границу между overeducated и underexperienced.
Недавно в комментариях на одном канале тимлидов наткнулся на классный фидбэк про систему образования.
Там сравнивали подходы вузов, отмечая СНГшную систему как ту, что даёт много теории и базы, но мало практики. Приведу цитату::
>Так обучают в традиционной российской школе и вузах:
В своё время от канадца услышал тот же фидбэк о выпускнике МГУ: overeducated & underexperienced.
Вы можете со мной не согласиться, но как сын учителей и педагогов, я часто слышал от своих родственников похожие споры.
Сейчас я собеседования не провожу, но раньше активно участвовал в них. Мне нравилось придумывать секции для iOS-разработчиков и добавлять туда элемент справедливости. Я воспринимал это как баланс в игре: если его не поддерживать, система уходит в хаос.
О дизайне собеседований и о том, почему всё не так просто, как советуют ютуб-блогеры, можно будет поговорить отдельно. Давайте про реальные вещи, а не пересказы пересказов тех, кто давно не работает и работает только с искаженной призмой.
В одной из прошлых компаний действовало правило "Если кандидат говорит слишком много теории, но не справляется с простыми практическими задачами — это красный флаг".
Что это значит? Не нужно путать эрудицию и практику. Бывают кандидаты, кто идеально рассказал управление памятью: компилятор, сайд таблицы, стэк и куча, isa поинтеры и всё всё всё. Но только ему даешь изи задачу на утечку памяти, то он сыпится. Что делать с такими кандидатами?
В команде тогда спорили долго, но сошлись на том, что нанимают не участников "Что? Где? Когда?", а людей, которые будут решать реальные задачи. В итоге правило было простым: нерешенная практическая задача обнуляет даже самые блестящие теоретические ответы.
Знать как делать идеально != делать идеально. Именно поэтому в этом канале и закрытой базе я делаю акценты на задачники, а не теорию. Её отлично может упаковать уже нейронки, а руку набить до идеальности могут только многократные неидеальные повторения. Нужно найти границу между overeducated и underexperienced.
Forwarded from CodeCamp
Оп-оп, теперь готовиться к собесам с ChatGPT стало проще — в нейронку завезли интерактивные тесты по любой теме.
Пишем промпт с темой и в конце добавляем😊
Пишем промпт с темой и в конце добавляем
«используй quizgpt»
— на выходе получаем мини-тест, который проверит ваши знания Please open Telegram to view this post
VIEW IN TELEGRAM
Выводы лета и планы на осень
ЛЕТО ВСЁ! Давайте сделаем краткие выводы.
Главное событие — я переехал в Москву. Переезд, ремонты и приемка квартиры заняли много времени и сил. Не получилось поработать над всем, но все же вот выводы:
🟣 Воркшоп SwiftUI System Design Interview
🟣 Сделали воркшоп с призерам телеграма по созданию сложных коллекций в UIKit
🟣 Обсудили почему самые большие зп у MobDevOps и что они делают
🟣 Сделали много контента в закрытой базе по SwiftUI и Swift Councurrency
🟣 Я выступил на митапе с темой архитектуры
🟣 Объявил о начале разработки уникального проекта
Какие планы на осень? Они более насыщенные
🟡 наконец нашел нужную структуру ведения контекта. Это будет тема месяца с обязательным созвоном комьюнити, приглашенным гостем и регулярными задачами. Состояние потока и структуры 80 lvl.
🟡 Мы уже закомитились с крутыми экспертами по топовым воркшопам/подкастам. Возможно, даже за пределы этого канала.
🟡 Сайт тренажер в закрытой/открытой бете
🟡 Видео контент. Сейчас я много работаю с социальными сетями и начинаю лучше понимать что нравится людям. Больше емких, но полезных материалов
🟡 Лонгридов на канале будет меньше. Больше сухости и пользы. Лонгриды переедут в ноушен и бусти)
🟡 Попробуем собраться в оффлайне. Пока это сложно, но может порешаем на онлайн встречах. Их будет больше (как минимум раз в месяц 😂 ).
💎 Ну и я напоминаю, что 06.09.2025 будет созвон комьюнити по важной теме "AI инструменты в iOS разработке". Мы там в свободной форме поделимся опытом использования. Не стесняйтесь готовить любой вопрос по теме или нет.
ЛЕТО ВСЁ! Давайте сделаем краткие выводы.
Главное событие — я переехал в Москву. Переезд, ремонты и приемка квартиры заняли много времени и сил. Не получилось поработать над всем, но все же вот выводы:
Какие планы на осень? Они более насыщенные
Please open Telegram to view this post
VIEW IN TELEGRAM
Ну что, сентябрь начался. Все вышли на линейку нового периода учебы. В наших планах за сентябрь сделать самую мощную базу для внедрения АИ в iOS. Выжать все соки из неё.
Начнем с подборки самых полезных видео о настройке Cursor/ChatGPT/Claude:
Все гайды дают много общих советов, но они полезны чтобы своими руками пощупать. Тут главное помнить, что АИ — это не сеньор, а джун, которого нужно менторить и обучать. В будущих постах мы подробнее поговорим о самых полезных фишках и советах.
Please open Telegram to view this post
VIEW IN TELEGRAM
Мы тут подумали и решили сделать очень щедрую скидку. Вы можете получить все материалы дешевле х2
Самая большая база материалов от практиков почти бесплатно:
- почти тысяча вопросов и задач для подготовки к собесам и регулярным тренировкам
- Около сотни статей
- Открытое комьюнити из ~400 инженеров в чате
- Два десятка уникальных видео-интервью и воркшопов
Успевай по очень щедрым условиям. Давай развиваться вместе.
Вступай в самое большое закрытое iOS сообщество практиков.
Please open Telegram to view this post
VIEW IN TELEGRAM
Мы уже много раз говорили, что каждый новый инструмент дает новые проблемы. Облечая одни проблемы он приносит новые: SwiftUI, AI, теперь и Swift Concurrency.
Автор статьи сравнивает SC с GCD, NSOperation и реактивщиной (?). Тут подмечает, что раньше понимал как и на каком потоке вызывается код, а в SC — такого интуитивного понимания нет
Тут он дает три свежих примера на практике:
Используя этот инструмент нельзя просто брать набор готовых решений, а не выключать критическое мышление и эксперименты.
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Увидел в большом канале как ругают apple разрабов за то, что не сделали бесконечный список в UIDatePicker'е. В стиле "хаха, вот лохи, решают там свой литкод, но сделать фичу нормально не могут"…
но тут есть два момент:
1) компания ЯБЛОКО почти не дает литкод задачи и алгосы. Это мы узнали от Симы, у которой я брал интервью, и которая взлетела до космоса в карьере выступив на WWDC в Купертино.
2) уверен, что это даже не баг, а минорный хак для перфоманса и есть оправдания в работе некоторых условий". А если даже и есть, то чаще это тонет в ZBT, который юзают все ФААНГ компании.
Для вас это реально проблема или админы каналов делают выстрел в ногу такой критикой?
но тут есть два момент:
1) компания ЯБЛОКО почти не дает литкод задачи и алгосы. Это мы узнали от Симы, у которой я брал интервью, и которая взлетела до космоса в карьере выступив на WWDC в Купертино.
2) уверен, что это даже не баг, а минорный хак для перфоманса и есть оправдания в работе некоторых условий". А если даже и есть, то чаще это тонет в ZBT, который юзают все ФААНГ компании.
Для вас это реально проблема или админы каналов делают выстрел в ногу такой критикой?