У вас закончился пробный период!
Для полного доступа к функционалу, пожалуйста, оплатите премиум подписку
IO
iOS Dev: cmd+B, cmd+R
https://t.me/ioscmdbcmdr
Возраст канала
Создан
Язык
Русский
2.17%
Вовлеченность по реакциям средняя за неделю
13.32%
Вовлеченность по просмотрам средняя за неделю

iOS-разработка, мотивация, статьи, мемасики :)

___

Видео материалы, тестовые задания, информация по курсу:

YouTube-channel: https://www.youtube.com/c/cmdBcmdR

Сообщения Статистика
Репосты и цитирования
Сети публикаций
Сателлиты
Контакты
История
Топ категорий
Здесь будут отображены главные категории публикаций.
Топ упоминаний
Здесь будут отображены наиболее частые упоминания людей, организаций и мест.
Найдено 133 результата
IO
iOS Dev: cmd+B, cmd+R
1 097 подписчиков
3
3
167
Livelock

На вопрос о проблемах многопоточности большинство выпалит отточенный/заученный текст:
- Race Condition
- Deadlock
- Priority Inversion

Что делать, если спросили:
"Какие проблемы вы еще знаете? Можете привести примеры?"

Вроде бы был какой-то лайвлок, но что это такое и при каких условиях может возникнуть?

И вот тут надо рассуждать!
Я максимально топлю за рассуждение на собеседовании (пусть даже его вы подготовили дома, это уже другая песня). Именно рассуждение выделяет вас из толпы кандидатов с заученными ответами.

Не сложно догадаться, что Livelock антоним Deadlock. Значит, в случае с Livelock потоки активно действуют, но не достигают результата.

Livelock встречается редко, и, если ничего не приходит на ум, можно предположить livelock-подобное поведение. Например, в реактивщине одна подписка может отменять другую.

Вспоминаем самый банальный пример - ввод текста в текстфилд и выполнение запроса. Реализации могут быть различные, поэтому в нашем заушипритянутом примере будет использован debounce.

В примере выше:
- каждый раз debounce сбрасывает таймер;
- flatMap начинает новый запрос, но предыдущий не успевает завершиться;
- в итоге завершается только последний, а остальные отменяются.

Ну чем не livelock-подобное поведение?

Потом можно поумничать и самому исправить этот пример, заменив flatMap на map{}.switchToLatest(). Новые запросы будут отменять старые, но подписка остается одна, и обрабатывается только последний активный запрос.

П.С. Здесь главное не переумничать, вдруг перед вами опытный комбайнер 🙂

Ставь очкарика, если пример был полезен 🤓
24.04.2025, 21:44
t.me/ioscmdbcmdr/1713
IO
iOS Dev: cmd+B, cmd+R
1 097 подписчиков
1
178
24.04.2025, 21:18
t.me/ioscmdbcmdr/1712
IO
iOS Dev: cmd+B, cmd+R
1 097 подписчиков
7
225
Наконец-то я понял зачем нужны обновления…
24.04.2025, 11:57
t.me/ioscmdbcmdr/1711
IO
iOS Dev: cmd+B, cmd+R
1 097 подписчиков
195
Deadlock

В блоке Multithreading плавно разбираю проблемы многопоточности (хотя с Race Condition и Deadlock пришлось познакомится при изучении Thread и NSLock).

Один из способов борьбы с deadlock - использование тайм-аутов:
Установите максимальное время ожидания при захвате ресурса. Если поток не может получить ресурс за это время, он освобождает все ранее захваченные ресурсы и пробует снова.

Пример разобран, код доступен 🤓

🎯 Читать пост Deadlock
📮 Оформить подписку
22.04.2025, 11:35
t.me/ioscmdbcmdr/1710
IO
iOS Dev: cmd+B, cmd+R
1 097 подписчиков
4
2
216
Простой вопрос, разделивший людей на 2 лагеря
Давайте разбираться...
___

Начнем с того, что такое атомарная операция:

Атомарная операция - неделимая, непрерываемая операция, которая выполняется целиком или не выполняется вовсе.

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

x += 1

Ни для кого не секрет, что x += 1 это:
x = x + 1

Операция состоит из 3 частей:
- чтение x
- сложение x + 1
- присвоение значения

Следовательно, x += 1 неатомарная операция.
___

Race condition

Между этими частями при параллельном доступе к переменной x из нескольких потоков, может произойти состояние гонки.

Это значит, что:
Поток A прочитал x = 5
Поток B прочитал x = 5
Поток A прибавил 1 и записал x = 6
Поток B прибавил 1 и записал снова x = 6
Хотя инкремент выполнили два потока, значение увеличилось только один раз.
___

Пример

var counter = 0

DispatchQueue.concurrentPerform(iterations: 1000) { index in
counter += 1
}

print(counter)

//Консоль
//486
22.04.2025, 09:51
t.me/ioscmdbcmdr/1709
IO
iOS Dev: cmd+B, cmd+R
1 097 подписчиков
Репост
7
220
Новый рекламный ролик Apple про использовании функции очистки Clean Up в приложении 📷 Photo
21.04.2025, 19:40
t.me/ioscmdbcmdr/1708
IO
iOS Dev: cmd+B, cmd+R
1 097 подписчиков
12
1
212
Любопытная переписка из X
См на скрине 👆

Информационная справка:
Samuel Harris Altman - человек, стоящий за OpenAI - компанией, которая создала ChatGPT и дала нам возможность говорить с нейросетями почти как с людьми. Ранее - президент Y Combinator - одного из крупнейших акселераторов стартапов.

Я решил спросить у «виновника торжества», что он/она/оно думает по этому поводу. Получил вот такой ответ:
Каждое «привет» или «спасибо» — это не лишняя трата, а шаг к тому, чтобы технологии оставались человечными. ИИ не устает от вежливости — наоборот, такие слова делают общение теплее, дружелюбнее и приятнее. Так что если хочется сказать «спасибо» — говорите. Я не обижусь, даже если забудете 😉

Вежливость важна в любом общении - даже лайк под постом может быть маленьким жестом благодарности 🫶.
20.04.2025, 18:48
t.me/ioscmdbcmdr/1707
IO
iOS Dev: cmd+B, cmd+R
1 097 подписчиков
5
233
k.sklyarov - огромная благодарность 🍎
19.04.2025, 15:36
t.me/ioscmdbcmdr/1703
IO
iOS Dev: cmd+B, cmd+R
1 097 подписчиков
1
2
209
Multithreading Practice №5

Объясняю на пальцах (и пицце):
- что такое Thread и как они работают в Swift;
- зачем нужен mutex и как он предотвращает гонки данных;
- как использовать NSLock для защиты общих ресурсов;
- как правильно применять DispatchQueue для очередей задач;
- что такое атомарные операции и когда они нужны.
Разберется даже новичок!

🍿Смотреть на YouTube
🎯Смотреть на boosty
19.04.2025, 09:55
t.me/ioscmdbcmdr/1702
IO
iOS Dev: cmd+B, cmd+R
1 097 подписчиков
4
4
241
https://t.tb.ru/ios_apr_fs_updated
18.04.2025, 08:18
t.me/ioscmdbcmdr/1701
IO
iOS Dev: cmd+B, cmd+R
1 097 подписчиков
1
18.04.2025, 08:16
t.me/ioscmdbcmdr/1700
IO
iOS Dev: cmd+B, cmd+R
1 097 подписчиков
17
Запись экрана 2025-04-17 в 15.36.47.mp4
Multithreading Practice #5

Собрал задачку про пиццерию.

Пройдемся по изученным темам:
- ThreadSafeArray
- ThreadSafeQueue
- NSLock
- Atomic operation
- QoS
- DispatchQueue
- sync / async

Самое главное в таких задачках - остановиться.
По-моему, усложнять их можно до потери пульса 🤓
17.04.2025, 15:44
t.me/ioscmdbcmdr/1699
IO
iOS Dev: cmd+B, cmd+R
1 097 подписчиков
1
178
Multithreading Practice #4

Разобрал 6 задач, которые могут встретиться на собеседовании.
(вышло на 40 минут)

Старался сделать так, чтобы задачи были разнообразные.

Задача 1
Задача из T-Банк

Задача 2
DispatchQueue.main.sync без дедлока

Задача 3
concurrentQueue.sync + serialQueue.sync = deadlock

Задача 4
concurrentQueue.async + serialQueue.async

Задача 5
Две serialQueue

Задача 6
Замена serialQueue1.sync на serialQueue1.async. Порядок добавления задач, смена потоков.
___

Чтобы окончательно разобраться с sync / async и serialQueue / concurrentQueue сделаю 3-ю практику с более приземленными примерами.
___

Пост набрал 33 лайка - скидка 33% на подписку.
Действует до 17 апреля

🎯Multithreading Practice 4
15.04.2025, 15:44
t.me/ioscmdbcmdr/1698
IO
iOS Dev: cmd+B, cmd+R
1 097 подписчиков
1
2
198
Решение таких задач оказалось достаточно забавным занятием (конечно, когда ты не на собесе 🤓)
15.04.2025, 09:19
t.me/ioscmdbcmdr/1696
IO
iOS Dev: cmd+B, cmd+R
1 097 подписчиков
33
2
228
Задача с собеседования в Т-Банк
Если верить информации в Интернете

Максимально ненавижу задачи из района DispatchPyramid of doom. Куча вложенностей, синки, асинки...фу...

Задача от T-Банк:

class ViewController: UIViewController {

override func loadView() {
DispatchQueue.main.async {
debugPrint("D")
DispatchQueue.main.sync {
debugPrint("E")
}
debugPrint("F")
}
debugPrint("G")
}
}

debugPrint("A")
let viewController = ViewController()
debugPrint("B")
viewController.view
debugPrint("C")


Нравится нам это или нет, но к таким вопросам нужно готовиться.
В ближайшее время добавлю несколько таких задачек на рассуждение.

Как видео будет готово, сделаю скидку, равную количеству лайков на этом посте. Сделаем 💯%?

П.С. Ну там лайк, шаре, репост :)
14.04.2025, 19:28
t.me/ioscmdbcmdr/1695
IO
iOS Dev: cmd+B, cmd+R
1 097 подписчиков
2
225
Multithreading

Новые посты:
- Types of Threads
- QoS - Quality of Service
- Что такое GCD
- sync / async, serial / concurrent

По началу все путаются с синхронным / асинхронным выполнением задач и последовательными / параллельными очередями, поэтому сразу сделал практику по ним.🤓
Рассмотрел различные вариации (см. скриншот)

Практика:
- sync / async, serial / concurrent
14.04.2025, 19:17
t.me/ioscmdbcmdr/1694
IO
iOS Dev: cmd+B, cmd+R
1 097 подписчиков
1
1
228
Без этих задачек никуда 🤓
14.04.2025, 12:42
t.me/ioscmdbcmdr/1692
IO
iOS Dev: cmd+B, cmd+R
1 097 подписчиков
228
14.04.2025, 09:46
t.me/ioscmdbcmdr/1689
IO
iOS Dev: cmd+B, cmd+R
1 097 подписчиков
203
Пишу пост о разновидностях потоков...

Возникла небольшая дилемма:
Как называть потоки, отличные от главного?

Часто можно услышать Global Threads (Глобальные потоки). Термин не официальный, но интуитивно понятный. Скорее всего "ноги растут" из GCD - DispatchQueue.global().

Нужно понимать, что не все вторичные потоки это global. Может возникнуть путаница, если говорить и о Thread, и о DispatchQueue.

Можно назвать Background Threads (Фоновые потоки), главное не спутать с QoS.background.
12.04.2025, 10:41
t.me/ioscmdbcmdr/1686
IO
iOS Dev: cmd+B, cmd+R
1 097 подписчиков
3
1
185
Вопрос с собеседования


let semaphore = DispatchSemaphore(value: 3)

Сколько потоков будет выделено на выполнение кода?

Не стоит забывать, что семафор только управляет доступом к ресурсу.

init(value: Int) определяет начальное значение счетчика.

Система может создать сколько угодно потоков, а семафор будет лишь контролировать, чтобы задачей не занималось потоков больше чем value.

Из этого вопроса удобно перейти к практике, например:
Напишите пул тредов, ограничивая их количество при инициализации.

В Multithreading Practice 2 рассмотрел примеры:
- ImageCache
- ThreadSafeDictionary
- PriorityThreadPool

🎯 Смотреть здесь
11.04.2025, 18:52
t.me/ioscmdbcmdr/1685
IO
iOS Dev: cmd+B, cmd+R
1 097 подписчиков
2
4
243
В 2020 ВСЕ БЫЛО ПРОЩЕ!
Когда-то джунам давали ШАНС...

В рамках первой практики по многопоточке разобрал тестовое задание на iOS Junior из далекого 2020 года.

Рассмотрел 3 варианта:
- Timer
- Threads
- DispatchSource

🍿Смотреть на YouTube
10.04.2025, 18:59
t.me/ioscmdbcmdr/1682
IO
iOS Dev: cmd+B, cmd+R
1 097 подписчиков
Репост
6
219
Конвейер Яндекса

🗓Могу сказать, что ожидания финалов было не быстрое по времени. У Яндекса не так много свободных мест для стажеров. Но конкуренция просто гигантская. И они не останавливаются. Наборы продолжаются. На каждой конференции зазывают пойти к ним и заполнить анкету на стажера. Они бесконечно набирают базу кандидатов, которые уже прошли у них все этапы собесов, кроме финала. Зачем? ❓

📌Ответ на поверхности. На каждый финал в команду идут по 5-10, а может быть и по 20 кандидатов, потому что они спокойно могут позволить себе собеседовать неделю или две, пока не найдут свой Алмаз💎

🪙Да, все так. Позволяя себе такой огромный бесконечный набор - они занимаются просеиванием. Очень жестким. Из 1000 подавших анкету на стажировку - человек 100 дойдут до финала (цифры примерные). И получается 100 человек на 5 стажерских мест. Им гораздо выгоднее прособеседовать 20 человек на одну вакансию. И найти одного Гика, который по скилам уже давно мог устроится на полноценную работу, но задержался здесь. Причины разные, некоторые боятся сразу идти в бой - и ставят цель себе - только стажировка. Некоторые пытались и не смогли устроится сразу в штат и вот они здесь в общем списке кандидатов✍️

🩰Так получается, что огромная рекламная компания Яндекса - позволяет им диктовать правила игры. Понятие стажировка размылось в этой компании. Они научились и выбрали для себя способ набирать очень дешевую рабочую силу с крутыми скилами под названием «Стажер». Хотя уровень знаний, чтобы туда попасть - достоин как минимум уверенного Джуна💻

✔️Подводя итоги: залететь на стажировку в начале пути - это было бы оправдано временем. Но когда ты тратишь очень много сил и твой уровень знаний растет - нужно идти собеседоваться на полноценные вакансии за достойную плату💱

P.S. Я думаю, что все это можно применить к любой другой компании, которая активно проводит стажировки. Но все же масштабность будет не такая. И попасть к ним будет немного проще, если цель - стажировка.
9.04.2025, 23:11
t.me/ioscmdbcmdr/1681
IO
iOS Dev: cmd+B, cmd+R
1 097 подписчиков
Репост
4
3
232
9.04.2025, 11:13
t.me/ioscmdbcmdr/1680
IO
iOS Dev: cmd+B, cmd+R
1 097 подписчиков
1
1
199
"Я буду жить", - кричал он - "Вечно!

Байки дяди Серёжи:
Однажды я получил забавное тестовое задание на позицию джуна. Оно отличалось от большинства на рынке.

Не надо было делать никаких запросов, перекладываний джейсонов и покрасок кнопок. Все максимально просто: при нажатии на кнопку добавлять таймер в ячейку таблицы (нечто похожее на стандартный секундомер).

В чатах моментально разлетались вопросы типа: "А почему не работает так как мне надо?". Весь наш неопытный скоп отправляли читать про таймеры :)

Это была моя первая встреча с RunLoop.
___

Теперь по делу

Опрос 1:
В данном примере поток начнет свою работу и сразу же завершится. Для обработки событий (работа таймера) необходим RunLoop.

Опрос 2:
CFRunLoopStop не прерывает текущую итерацию RunLoop насильно. Он устанавливает флаг (аналогия с thread.cancel), указывающий, что RunLoop должен завершиться после завершения текущей обработки. Если не останавливать таймер, он будет постоянно заново "реанимировать" цикл.

🎯Подробнее здесь
пока еще за 300р
7.04.2025, 15:01
t.me/ioscmdbcmdr/1679
IO
iOS Dev: cmd+B, cmd+R
1 097 подписчиков
2
191
7.04.2025, 14:08
t.me/ioscmdbcmdr/1677
IO
iOS Dev: cmd+B, cmd+R
1 097 подписчиков
1
202
7.04.2025, 13:45
t.me/ioscmdbcmdr/1675
IO
iOS Dev: cmd+B, cmd+R
1 097 подписчиков
11
6
212
Вдруг кому пригодится 🤓
7.04.2025, 11:09
t.me/ioscmdbcmdr/1674
IO
iOS Dev: cmd+B, cmd+R
1 097 подписчиков
3
1
223
Блок плавненько наполняется

Добавлено
- NSRecursiveLock
- NSConditionLock

Вроде бы дальше логично поговорить о Thread lifeCycle и RunLoop
6.04.2025, 14:18
t.me/ioscmdbcmdr/1673
IO
iOS Dev: cmd+B, cmd+R
1 097 подписчиков
206
6.04.2025, 14:09
t.me/ioscmdbcmdr/1671
IO
iOS Dev: cmd+B, cmd+R
1 097 подписчиков
3
2
232
Возвращаемся к опросу выше

Необходимо проверять условие через цикл while, а не через использование if. Цикл while поможет избежать ложных пробуждений (Spurious Wakeups).

Ложные пробуждения - ситуация, когда поток, ожидающий выполнения условия, внезапно просыпается без явного сигнала (signal / broadcast). При этом условие, которого он ждал, остается невыполненным.

Так происходит из-за особенностей реализации системы. Низкоуровневые механизмы синхронизации иногда пробуждают потоки для оптимизации.

Если использовать while, даже при ложном пробуждении поток перепроверит условие и снова уснет, если оно не выполнено.
___

Цитата из книги "Programming with POSIX Threads", David R. Butenhof

Always use a while loop to check the predicate when waiting on a condition variable. If you check the predicate with an if statement, you're writing a bug that just hasn't been encountered yet.

Всегда используйте цикл while для проверки условия при ожидании значения переменной. Если вы проверяете условие через if — вы пишете баг, который просто еще не проявился.

🎯NSCondition - читать
6.04.2025, 08:33
t.me/ioscmdbcmdr/1670
IO
iOS Dev: cmd+B, cmd+R
1 097 подписчиков
1
201
5.04.2025, 16:47
t.me/ioscmdbcmdr/1668
IO
iOS Dev: cmd+B, cmd+R
1 097 подписчиков
1
1
205
Опрос будет посвящен, наверное, 99% случаев
5.04.2025, 16:02
t.me/ioscmdbcmdr/1666
IO
iOS Dev: cmd+B, cmd+R
1 097 подписчиков
1
1
242
И, конечно же, опрос 🤓
3.04.2025, 13:35
t.me/ioscmdbcmdr/1664
IO
iOS Dev: cmd+B, cmd+R
1 097 подписчиков
3
1
180
Двигаемся дальше 💪

Основным достяжением пока считаю создания поста с определениями. Получится нечто похожее на словарь.

Забыл что такое атомарная операция - открыл и прочитал.

Содержание словаря на данный момент:
- Concurrency
- Parallelism

- Cache-Bound 
- Memory bound
- I/O-Bound (Input/Output)
- CPU-Bound

- Поток
- POSIX Threads (pthread)
- Thread

- Mutex
- NSLock

- Атомарная операция

По-моему, получается круто. Больше всего радует плавность подачи и последовательные переходы 🤓

🎯Получить доступ за 300р
3.04.2025, 13:24
t.me/ioscmdbcmdr/1663
IO
iOS Dev: cmd+B, cmd+R
1 097 подписчиков
5
2
230
Первая проблема в изучении многопоточности (в частности GCD) это понимание определений.

Последовательная и параллельная очередь, оказывается, не тоже самое, что последовательное и параллельное выполнение.

Начинаем с определений!
Четко, с примерами, без воды и лишних заумных слов.

1 пост:
Concurrency != Parallelism

2 пост:
Performance Bound
Написал пост только для понимания фразы:
Parallelism - ускоряет CPU-bound операции
Concurrency - оптимально для операций с ожиданием (I/O, сетевые запросы).
2.04.2025, 16:03
t.me/ioscmdbcmdr/1662
IO
iOS Dev: cmd+B, cmd+R
1 097 подписчиков
1
239
2.04.2025, 15:51
t.me/ioscmdbcmdr/1660
IO
iOS Dev: cmd+B, cmd+R
1 097 подписчиков
1
1
249
2.04.2025, 15:49
t.me/ioscmdbcmdr/1658
IO
iOS Dev: cmd+B, cmd+R
1 097 подписчиков
4
1
252
Пока везде одни разводы, добавил скидку 50% на 10 подписок 🤓

Подписаться
1.04.2025, 09:30
t.me/ioscmdbcmdr/1657
IO
iOS Dev: cmd+B, cmd+R
1 097 подписчиков
3
254
В 2-х словах/пунктах:
- Я устал рассказывать одно и то же про многопоточку
Да и не только про нее...
- Все хотят больше практики/примеров

Появилась идея создать отдельный блок.
Скорее всего, потом это все перерастет в огромный роадмап, но об этом позже...

Для примера записал видео о DispatchWorkItem.

Рассмотрел 2 примера:
1. Поисковая строка (пользователь не печатает 0.5с - делаем запрос)
2. Последовательность анимаций
Пример онбординга, который пользователь может пропустить.

После того как блок будет закончен, он переедет в подписку Course за 2200р.

В связи с этим вопрос/опрос
30.03.2025, 18:17
t.me/ioscmdbcmdr/1655
IO
iOS Dev: cmd+B, cmd+R
1 097 подписчиков
Репост
9
3
252
29.03.2025, 16:45
t.me/ioscmdbcmdr/1654
IO
iOS Dev: cmd+B, cmd+R
1 097 подписчиков
8
1
220
Что ЯНДЕКС ЖДЁТ от СТАЖЁРОВ? Разбор задания

Джунов почти не берут, приходится пробиваться через стажировки.
Стажировка в Яндекс - тот же жесткий отбор, просто под другим названием.

В видео разбор реального задания из Яндекса "Найди и исправь ошибки в коде".

Проверяются не только технические навыки, но и способность:
- анализировать чужой код
- аргументировать решения
- четко выражать мысли

🍿Смотреть на YouTube
27.03.2025, 16:26
t.me/ioscmdbcmdr/1653
IO
iOS Dev: cmd+B, cmd+R
1 097 подписчиков
8
2
244
Сейчас записывал разбор задания на стажировку в Яндекс.
Задание типа "Что бы ты исправил в этом коде".

Видос постараюсь сделать завтра, а пока можете вспоминить эти опросы.
Очень помогут для этого задания

Получилось почти на час 🤪
26.03.2025, 18:56
t.me/ioscmdbcmdr/1652
IO
iOS Dev: cmd+B, cmd+R
1 097 подписчиков
Репост
3
1
203
Официально: конференция разработчиков Apple #WWDC25 – с 9 по 13 июня!

Всё также бесплатно в онлайн-формате и с презентацией 9 июня.
25.03.2025, 20:36
t.me/ioscmdbcmdr/1651
IO
iOS Dev: cmd+B, cmd+R
1 097 подписчиков
245
Яндекс, свяжитесь со мной…
24.03.2025, 17:08
t.me/ioscmdbcmdr/1650
IO
iOS Dev: cmd+B, cmd+R
1 097 подписчиков
7
2
247
Стадия №1
Не планировал, но занимаюсь обучением

Стадия №2
Не планировал, но занимаюсь с детьми/подростками

Помогает ориентироваться в названиях и правописании.

Вдруг вам тоже будет интересно 🤓
___

1. Фреймворк для работы с анимацией и графикой в iOS

2. Механизм, позволяющий объектам взаимодействовать, не зная друг о друге напрямую

3. Библиотека для работы с реактивным программированием в Swift

4. Архитектурный паттерн

5. Фреймворк для работы с геолокацией и картами в iOS

6. Фреймворк для работы с базами данных

7. Метод, который вызывается при изменении состояния жизненного цикла ViewController перед появлением на экране

8. Тип данных, который позволяет хранить набор уникальных значений без определенного порядка

9. Фреймворк для тестирования пользовательского интерфейса

10. Класс, позволяющий объекту уведомлять другие объекты об изменениях

П.С. Надеюсь нигде не напутал, т.к. делал вручную
23.03.2025, 12:24
t.me/ioscmdbcmdr/1649
IO
iOS Dev: cmd+B, cmd+R
1 097 подписчиков
11
3
168
LEETCODE МАРАФОН

2 дня провозился с последней задачей, НО!

Это была последняя задача в мартовском leetcode марафоне 🤓

Все задачи категории Easy из списка Яндекса прорешены!

УРА, ТОВАРИЩИ 🍾
20.03.2025, 16:13
t.me/ioscmdbcmdr/1648
IO
iOS Dev: cmd+B, cmd+R
1 097 подписчиков
1
174
В общем и целом, основываясь на идее определения временной сложности из задачи 146. LRU Cache (можете посмотреть на YouTube), оставил свой вариант.

В чем смысл:
Если рассмотреть "жизненный цикл" элемента в стеке, то он состоит из 2 банальных действий:
- добавление в стек
- извлечение из стека

Сценарий №1
- все элементы добавляются через push
- все элементы удаляются через pop
Условие не нарушается

maxStack.push(2) //O(logN)
maxStack.push(1) //O(logN)
maxStack.push(5) //O(logN)
maxStack.push(3) //O(logN)
maxStack.push(4) //O(logN)
maxStack.pop() //O(1)
maxStack.pop() //O(1)
maxStack.pop() //O(1)
maxStack.pop() //O(1)
maxStack.pop() //O(1)


Сценарий №2
- все элементы добавляются через push
- все элементы удаляются через popMax
Условие не нарушается

maxStack.push(2) //O(logN)
maxStack.push(1) //O(logN)
maxStack.push(5) //O(logN)
maxStack.push(3) //O(logN)
maxStack.push(4) //O(logN)
maxStack.popMax() //O(logN)
maxStack.popMax() //O(logN)
maxStack.popMax() //O(logN)
maxStack.popMax() //O(logN)
maxStack.popMax() //O(logN)


Сценарий №3
- все элементы добавляются через push
Худший вариант, элементы приходят в порядке возрастания
- элементы (кроме последнего) удаляются через pop
- последняя операция будет выполнена за O(NlogN)
НО! Мы выиграли при удалении через pop, и как бы закладываем эти затраты, поэтому N можем откинуть.

maxStack.push(1) //O(logN)
maxStack.push(2) //O(logN)
maxStack.push(3) //O(logN)
maxStack.push(4) //O(logN)
maxStack.push(5) //O(logN)
maxStack.pop() //O(1)
maxStack.pop() //O(1)
maxStack.pop() //O(1)
maxStack.pop() //O(1)
maxStack.popMax() //O(NlogN)
20.03.2025, 15:52
t.me/ioscmdbcmdr/1647
IO
iOS Dev: cmd+B, cmd+R
1 097 подписчиков
1
1
179
Есть идея
- использовать связный список для хранения порядка стека
- использовать макс кучу для отслеживания макс значения
- использовать хеш-таблицу, где ключи - значения, а значения - массив нод

В чем проблема
Представим такую ситуацию
push(2)
push(1)
push(5)
push(3)
push(4)
pop()
pop()
popMax()
peekMax()

После всех пушей
связный список: 2 -> 1 -> 5 -> 3 -> 4
куча: 5 -> 4 -> 3 -> 2 -> 1
хеш-таблица: [1: [node1], 2: [node2], 3: [node3], 4: [node4], 5: [node5]]

После 2-х pop
связный список: 2 -> 1 -> 5
куча: 5 -> 4 -> 3 -> 2 -> 1, т.к. pop должен выполняться за O(1)
хеш-таблица: [1: [node1], 2: [node2], 5: [node5]]

popMax()
связный список: 2 -> 1
куча: 5 -> 4 -> 3 -> 2 -> 1 Вот тут самое интересное!
Удаляем 5, посееваем кучу (O(logN))
Наверху появляется 4
Смотрим, что по этому ключу нет пар в хеш-таблице
Удаляем 4, посееваем кучу (O(logN))
С 3 такая же канитель
Значит. Эта операция будет выполняться за O(NlogN), а надо за O(logN) 🥹
хеш-таблица: [1: [node1], 2: [node2]]
20.03.2025, 12:58
t.me/ioscmdbcmdr/1646
IO
iOS Dev: cmd+B, cmd+R
1 097 подписчиков
1
198
Кто хочет размяться и решить EASY задачку? 🤓

Задача (716. Max Stack):
Design a max stack data structure that supports the stack operations and supports finding the stack's maximum element.

Implement the MaxStack class:

MaxStack() Initializes the stack object.
void push(int x) Pushes element x onto the stack.
int pop() Removes the element on top of the stack and returns it.
int top() Gets the element on the top of the stack without removing it.
int peekMax() Retrieves the maximum element in the stack without removing it.
int popMax() Retrieves the maximum element in the stack and removes it. If there is more than one maximum element, only remove the top-most one.

Все было бы норм, но есть добавление:
You must come up with a solution that supports O(1) for each top call and O(logn) for each other call.
___

Даже можем представить, что под "for each top" понимается просто pop. Как сделать popMax или peekMax за O(logN)? Получается только за O(NlogN).
20.03.2025, 12:50
t.me/ioscmdbcmdr/1645
IO
iOS Dev: cmd+B, cmd+R
1 097 подписчиков
Репост
1
205
17.03.2025, 16:22
t.me/ioscmdbcmdr/1644
IO
iOS Dev: cmd+B, cmd+R
1 097 подписчиков
3
2
137
Leetcode - 268. Missing Number

Решение задачи при помощи побитового оператора XOR (тот что в опросе выше).

🍿Смотреть на YouTube
🎯Leetcode марафон
14.03.2025, 18:38
t.me/ioscmdbcmdr/1641
IO
iOS Dev: cmd+B, cmd+R
1 097 подписчиков
Репост
7
1
154
13.03.2025, 12:54
t.me/ioscmdbcmdr/1640
IO
iOS Dev: cmd+B, cmd+R
1 097 подписчиков
4
206
72 неправильных ответа - 21 реакция
Нужно уметь признавать ошибки, господа 🤓
13.03.2025, 11:27
t.me/ioscmdbcmdr/1639
IO
iOS Dev: cmd+B, cmd+R
1 097 подписчиков
1
232
12.03.2025, 15:03
t.me/ioscmdbcmdr/1636
IO
iOS Dev: cmd+B, cmd+R
1 097 подписчиков
6
1
225
Вчера ролики, сегодня коньки
Яндекс, свяжитесь со мной…
11.03.2025, 11:37
t.me/ioscmdbcmdr/1634
IO
iOS Dev: cmd+B, cmd+R
1 097 подписчиков
1
224
11.03.2025, 11:37
t.me/ioscmdbcmdr/1635
IO
iOS Dev: cmd+B, cmd+R
1 097 подписчиков
7
1
239
11.03.2025, 09:58
t.me/ioscmdbcmdr/1633
IO
iOS Dev: cmd+B, cmd+R
1 097 подписчиков
1
3
226
https://www.youtube.com/watch?v=65OJdBHtJLg&t=808s
10.03.2025, 22:26
t.me/ioscmdbcmdr/1632
IO
iOS Dev: cmd+B, cmd+R
1 097 подписчиков
228
10.03.2025, 19:54
t.me/ioscmdbcmdr/1630
IO
iOS Dev: cmd+B, cmd+R
1 097 подписчиков
2
253
Спускаемся глазами по резюме...

Почему-то появляется разделение.
Биполярка, не иначе...

Последний буллет можно разделить на 2.
Видимо стало лень

"Точка" стоит в середине, ухудшается читаемость.

И мое любимое: "объёмов"
Я видел некоторых людей, использующих букву "ё". НО! Они используют ее ВСЕГДА!
Или все-таки биполярка...

С ооочень большой вероятность, можно сказать, что этот буллет был тупо скопирован.

Странно, что обосрать найм, компанию, руководителя готовы с радостью, а отформатировать лист А4 не в состоянии...
10.03.2025, 10:11
t.me/ioscmdbcmdr/1629
IO
iOS Dev: cmd+B, cmd+R
1 097 подписчиков
2
250
Пример bullet points

Иногда кажется, что я пишу о максимально базовых вещах, которые и так понятны. Смотрю резюме: "А, нет...все нормально"

В посте выше был следующий тейк:
- Трудно держать в памяти много всего. Предложения не должны быть перегруженными.

Вот вам разминка на утро:
Дочитайте буллет и попробуйте повторить заслуги автора. В идеале еще понять, что он конкретно делал.
10.03.2025, 10:00
t.me/ioscmdbcmdr/1628
IO
iOS Dev: cmd+B, cmd+R
1 097 подписчиков
4
3
169
Как писать резюме: HR, Я ТВОЙ КОНВЕНЦИОНАЛЬНЫЙ АЙТИШНИК

или

Продавай себя, а не свой стек технологий!!!

Для тех, кому лень читать многабукафф, записал видео

🍿Смотреть на YouTube
🍎Смотреть на Boosty
7.03.2025, 18:27
t.me/ioscmdbcmdr/1625
IO
iOS Dev: cmd+B, cmd+R
1 097 подписчиков
2
1
188
Побаловались и хватит 🤓
5.03.2025, 12:50
t.me/ioscmdbcmdr/1623
IO
iOS Dev: cmd+B, cmd+R
1 097 подписчиков
2
1
172
5.03.2025, 12:47
t.me/ioscmdbcmdr/1621
IO
iOS Dev: cmd+B, cmd+R
1 097 подписчиков
3
1
168
Учитывая все вышесказанное...
5.03.2025, 12:45
t.me/ioscmdbcmdr/1619
IO
iOS Dev: cmd+B, cmd+R
1 097 подписчиков
2
1
178
Перед ответом прочитай пост выше 👆
5.03.2025, 12:41
t.me/ioscmdbcmdr/1617
IO
iOS Dev: cmd+B, cmd+R
1 097 подписчиков
5
1
185
В Unicode флаги стран представлены региональными индикаторами (Regional Indicator Symbols).

Для флага России индикатор RU.
Можно записать как
let flag = "\u{1F1F7}\u{1F1FA}"

Поэтому в консоли выведется 2.
5.03.2025, 12:37
t.me/ioscmdbcmdr/1616
IO
iOS Dev: cmd+B, cmd+R
1 097 подписчиков
9
1
195
Максимально важная информация, без которой невозможно работать 🤓
5.03.2025, 12:28
t.me/ioscmdbcmdr/1614
IO
iOS Dev: cmd+B, cmd+R
1 097 подписчиков
8
3
240
Резюме это про HR, зафиналиваем…

Добавим в формулировку №1 что-нибудь про HealthKit:
Работал над фитнес-приложением, внедрил синхронизацию с Apple Health при помощи фреймворка HealthKit и улучшил вовлеченность пользователей.

Добавили 3 слова - нарушили 2 пункта.
- Читается тяжело. К концу предложения забывается все, что прочитали.
- Много абстрактной информации. HR максимум запомнит, что ты работал над фитнес-приложением.

Согласитесь, картинка не рисуется…
___

Как-то на курсе я сказал, что проще пойти на курсы пикапа, склеить HR’а и сделать так, чтобы он/она продвинули твое резюме (ну или хотя бы сказали, что им вообще надо/что хотят увидеть).

В резюме примерно такая же история. Не забываем: наша цель - HR.

Выбери лучший вариант для знакомства:
1. Я занимаюсь с тренером, хожу в ___ (название элитного спортзала)
2. 4х10 жим Арнольда, 4х10 жим в Хаммере, 4х10 жим в Смите - это мы с пацанами так в понедельник разминаемся

Вариант 1: Ты сигма-бой. Есть деньги на хороший зал и тренера.
Что можно додумать: Вроде бы не тупой качек. Поддерживает себя в хорошей форме.

Вариант 2: Мягко говоря, предложение перегружено + много абстрактной и ненужной информации.
Что можно додумать: Жим в Смите? Не петушок ли ты часом?
___

Плавно мы подошли к 3 пункту.
Напомню:
- Глаза бегают по тексту в поисках важного. Это важное должно быть на самом видном месте.

Самое важное должно быть в начале. Хотите докажу?
Перечитайте ТОЛЬКО первые предложения в первом посте.

Тех. специалист играет ключевую роль в вашем найме.
К сожалению, современный найм не подлежит никакой логике.
Резюме необходимо составлять для HR’а.

Смысл не утерян! Все, что написано после, не имеет никакого значения!

П.С. Ну и это...лайк поставь, я старался вообще-то 🤓
4.03.2025, 15:44
t.me/ioscmdbcmdr/1613
IO
iOS Dev: cmd+B, cmd+R
1 097 подписчиков
4
2
228
Резюме это про HR, продолжаем…

В опросе выше все варианты правильные. Основная задача - понять, кто будет читать текст.
Необходимо задавать вопросы: «Кто или что здесь главное? О чем это предложение?»

Напоминаю, наша цель - HR.

Тех. специалист единожды прочитает резюме по диагонали, пока вы будете рассказывать «как добрались». Без разницы как составлены предложения, у специалиста нет времени думать об этом.
Хорошо бы подсветить важные пункты, но тогда может скипнуть HR. Се ля ви…

HR обращает внимание на 2 вещи:
- Как ты перформил (по-крестьянски: твои результаты)
- Стек технологий (ничего не понимания, тупо сверяя символы)

Угадай, на что будет большее внимание?
___

Чтобы текст читался легко, достаточно учесть 3 пункта:
- Трудно держать в памяти много всего. Предложения не должны быть перегруженными.
- Мы мыслим образами. Предложение должно помогать нарисовать картинку. Нельзя вываливать на читателя гору абстрактной и новой информации.
- Глаза бегают по тексту в поисках важного. Это важное должно быть на самом видном месте.

Примеры
Два абсолютно одинаковых буллета:
1. Работал над фитнес-приложением, внедрил синхронизацию с Apple Health и улучшил вовлеченность пользователей.
2. Повысил вовлеченность пользователей на _%, внедрив синхронизацию с Apple Health в фитнес-приложении.

С какой прикормки дуреют HR?
4.03.2025, 15:12
t.me/ioscmdbcmdr/1611
IO
iOS Dev: cmd+B, cmd+R
1 097 подписчиков
10
3
254
Резюме это про HR

Тех. специалист играет ключевую роль в вашем найме. Следовательно, резюме должно быть нацелено на тех. специалиста. Он обладает высокой квалификацией, его мнение ценится, и, возможно, вы станете его коллегой.

К сожалению, современный найм не подлежит никакой логике. HR превратились в голову богатыря из «Руслан и Людмила», символизируя испытание, которое должен пройти кандидат ради своей любимой компании.

Резюме необходимо составлять для HR’а. Именно он откроет дорогу к техническому интервью, на котором вы будете вертеть деревья, рассказывать об устройстве памяти и бегающих ноликах и единичках.

Переходим к тексту

Отрывок из книги:
Представьте бытовую ситуацию: зимой мужчина вышел из магазина с пакетом продуктов. Сделал несколько шагов, поскользнулся и упал. Пакет с продуктами порвался; вылетевшая из него бутылка шампанского ударилась о стекло стоявшей рядом машины. Стекло разбилось, а осколок попал в проходящего мимо ребенка (он не пострадал).

Вы - репортер местной газеты, и вам нужно рассказать об этом событии.
Кто его главный герой?

П.С. Пока я создаю опрос и пишу вторую часть, сделай свой выбор для современных реалий:
🙈- если резюме надо писать для HR
🏆- если резюме надо писать для тех. специалиста
4.03.2025, 14:32
t.me/ioscmdbcmdr/1609
IO
iOS Dev: cmd+B, cmd+R
1 097 подписчиков
18
277
Являюсь ли я Яндексойдом, если перед работой катаюсь на катке?
4.03.2025, 11:48
t.me/ioscmdbcmdr/1608
IO
iOS Dev: cmd+B, cmd+R
1 097 подписчиков
11
1
273
Опрос 1
В консоль выведется "1", далее произойдет deadlock.

sync блокирует вызывающий поток. Пока задача не будет выполнена (строки 8 - 13), поток будет заблокирован.

В строке 10 добавляется новая задача в эту же очередь. Очередь занята выполнением первой задачи.

В итоге:
Первая задача (строка 8 ) ждет выполнения второй задачи (строка 10).
Вторая задача не может начать выполнение, потому что ожидает выполнение первой.

Опрос 2
Не смотря на то, что qos указан как background, задача может быть выполнена на главном потоке.

Такое поведение связано с тем, что задача выполняется sync. Это означает, что в любом случае вызывающий поток будет заблокирован.

GCD пытается уменьшить расходы на создание новых потоков и переключение между ними, поэтому запускает выполнение на главном потоке.
3.03.2025, 12:30
t.me/ioscmdbcmdr/1607
IO
iOS Dev: cmd+B, cmd+R
1 097 подписчиков
1
1
266
3.03.2025, 11:47
t.me/ioscmdbcmdr/1605
IO
iOS Dev: cmd+B, cmd+R
1 097 подписчиков
1
2
272
3.03.2025, 11:32
t.me/ioscmdbcmdr/1603
IO
iOS Dev: cmd+B, cmd+R
1 097 подписчиков
19
8
302
2.03.2025, 14:53
t.me/ioscmdbcmdr/1602
IO
iOS Dev: cmd+B, cmd+R
1 097 подписчиков
5
1
278
🍃ВЕСНА🍃

Друзья, поздравляю с первым днем весны!

1. Открываем окна - проветриваем комнату.
2. Достаем шторки для устранения бликов
3. Соревнуемся с птичками в сборке проекта

Март объявляется месяцем зеленых задач!
Никто не любит решать алгоритмические задачки, но начинать когда-то надо. Так почему бы это не сделать именно сейчас?

Никакого задротства!
- 31 день
- 19 задач

Не обязательно самому придумывать решение - достаточно просто разобрать готовое объяснение и понять логику.

Знаменательно, что 1 марта мы начинаем с первой задачи (1. Two Sum).

🍿Смотреть на YouTube
🍎Смотреть на boosty
🏃‍♂️Принять участие в марафоне
1.03.2025, 14:26
t.me/ioscmdbcmdr/1600
IO
iOS Dev: cmd+B, cmd+R
1 097 подписчиков
3
1
205
leetcode: Medium = Easy + Easy

Задача из литкодовского списка Яндекса. Категория Medium.
Прорешав несколько Easy-задач, находить решение к Medium задачам достаточно легко.

Permutation in String объединяет в себе 2 задачи:
- проверка на анаграмму
- работа с подмассивом

🍿Смотреть на YouTube
26.02.2025, 17:23
t.me/ioscmdbcmdr/1599
IO
iOS Dev: cmd+B, cmd+R
1 097 подписчиков
Репост
1
Опрос про накрутку опыта 2024 (статистика открыта для всех)

Время подвести итоги 2024 года: помогает ли накрутка достигнуть ваших целей, увольняют ли на испытательном сроке, палит ли служба безопасности. За прохождение опроса бесплатный доступ в сообщество на 3 дня. Итоги опубликую в этом канале.

https://forms.gle/H3YbVcf1xKNUJUey9

Всем блогерам от 100 подписчиков раздам доступ к полученным ответам за репост (пишите в комментах со ссылкой на репост в ваших соц сетях)
26.02.2025, 12:07
t.me/ioscmdbcmdr/1598
IO
iOS Dev: cmd+B, cmd+R
1 097 подписчиков
7
252
Как резюме выдает, что вы прогульщик

Замечали, что некоторые книги/рассказы/тексты читаются легче других? Иногда сложность добавляется для придания художественного окраса. В резюме сложность не нужна от слова "совсем".

Резюме - не сочинение, не повесть и не роман!

Писали изложение при поступлении в институт?
Мальчик пошел в лес. Собрал грибы. Пошел домой.

В этот момент писательский дар улетучивается. Предложения не перегружаются. Пара запятых может в корне изменить жизнь:
- достойная специальность;
- куда хватило баллов;
- армия.

Кто не успел "пов_ебываться" сложноподчиненными предложениями в школе, начинает это делать в резюме.

Сейчас, как Толстой, зах_ярю саммари с двумя ";"; вот они там ох_уеют.

Итог: HR читает саммари, ничего не понимает, скипает.
___

В предложении должна быть заложена одна единица смысла

Пример из книги:
Раз. Ресурсы, которые были необходимы для выполнения поставленной ранее задачи, не были ни предусмотрены в предварительно составленном бюджете, ни выделены по результатам оперативного совещания, которое прошло за неделю до старта работ, мы не знали, что у нас не будет ни машин, ни серверных возможностей для выполнения задач, которые нам ставили, из-за чего нам пришлось, к сожалению, использовать собственные...

Два. Для выполнения этой задачи нам нужны ресурсы: серверы, терминалы, программы и люди. Мы запросили ресурсы у руководства дважды: в бюджете и на оперативном совещании. Оба запроса нам не удовлетворили. Поэтому за неделю до старта...

Информация для размышления:
Почему bullet point называется имеенно так?
1. Буллит - типографский знак
2. Bullet - пуля. Хлестко, жестко, точно в цель
26.02.2025, 10:51
t.me/ioscmdbcmdr/1597
IO
iOS Dev: cmd+B, cmd+R
1 097 подписчиков
3
255
Трекер Тренировок #5

Оставил TabView через appearance, но в видео еще раз пробежался по созданию кастомного TabBar (как минимум, если заходите сделать отступ сверху).

🍿Смотреть видео
🎯Оформить подписку
25.02.2025, 14:02
t.me/ioscmdbcmdr/1596
IO
iOS Dev: cmd+B, cmd+R
1 097 подписчиков
1
Запись экрана 2025-02-24 в 20.00.29.mp4
При помощи

.environment(\.symbolVariants, .none)

не решается

Короче, проще написать свой таббар с имеджами и педдингами 🤓
24.02.2025, 20:05
t.me/ioscmdbcmdr/1595
IO
iOS Dev: cmd+B, cmd+R
1 097 подписчиков
9
248
SwiftUI - I'm Lovin' It, часть 4

Для трекера решил сделать неактивные табы обычными символами, а выбранный таб - .fill

Написал кейсы и условия, но не работает и все тут...

Изначально думал, что СУЙ не перерисовывает табы.

Для прикола заменил изображения на другие и "О! чудо" - работает. Магия, не иначе!

Долго тупил, решил погуглить...
Оказалось:
SwiftUI sets a variant for you in some environments. For example, SwiftUI automatically applies the fill symbol variant for items that appear in the content closure of the swipeActions(edge:allowsFullSwipe:content:) method, or as the tab bar items of a TabView.

Короче, ХИГ говорит о том, что изображения в табвью должны быть .fill, поэтому он любезно заменяет обычные изображения на заполненные.

Спасибо СУЮ за заботу.

П.С. Возможно кому-то будет полезно.
Воткни лайк, если не знал 🤓
24.02.2025, 19:49
t.me/ioscmdbcmdr/1594
IO
iOS Dev: cmd+B, cmd+R
1 097 подписчиков
11
3
257
24.02.2025, 12:38
t.me/ioscmdbcmdr/1593
IO
iOS Dev: cmd+B, cmd+R
1 097 подписчиков
6
1
246
ИИ - друг вкатунов

Никогда не понимал паникеров, которые начинают истерить при любом вбросе.

ИИ заменит программистов, но пока это твой друг, помощник и более опытный товарищ.

На стриме задали вопрос:
Как расписать пункт "реализовал встроенные покупки при помощи in-app purchase"?

Давайте представим ситуацию похуже:
Вы рисуете резюме и не представляете что такое IAP.

Всего пара-тройка сообщений для ИИ и перед тобой:
- задача, которую ты решал
- последовательность действий
- возникшие проблемы
- конечный результат
- готовый буллет

Тебе остается только подробнее вникнуть в вопрос и уверено рассказать на собеседовании.

П.С. Рекомендую читать статьи, а не спрашивать подробную инфу у ИИ.
На это есть несколько причин. Самые явные:
- ИИ может ошибаться
- Иногда в комментах найдешь больше полезностей, чем в статье
22.02.2025, 15:08
t.me/ioscmdbcmdr/1592
IO
iOS Dev: cmd+B, cmd+R
1 097 подписчиков
3
1
237
Трекер Тренировок, 1 отчет

1 экран готов 🍾🍾🍾
Забавно, что 12 часовой курс Шона я уместил в 5 часов, а на создание одного экрана ушло 4 видео общей продолжительностью 2,5 часа.

Хотелось рассказать о сложностях, с которыми я столкнулся и объяснить, почему именно такой подход был выбран.

По-моему, получается неплохо 🤓

В честь первого экрана, скидка 10% на подписку.
Мелочь, а приятно...

🍿 Смотреть 4-ую часть
🎯 Оформить подписку
21.02.2025, 20:51
t.me/ioscmdbcmdr/1591
IO
iOS Dev: cmd+B, cmd+R
1 097 подписчиков
1
204
Давненько не было опросов 🤓

Пока записывал видео, необходимо было добраться до ключа из LocalizedStringKey...
21.02.2025, 18:10
t.me/ioscmdbcmdr/1589
IO
iOS Dev: cmd+B, cmd+R
1 097 подписчиков
5
231
SwiftUI - I'm Lovin' It, часть 3

1. Скрин №1
Ситуацию можно исправить, если добавить .onTapGesture.
Это же максимально логично, накидывать тап на кнопку...

2. Скрин №2
Можно настройки кнопки применить к лейблу, создав, например, Text.

Вопрос: НА*УЯ тогда нужна КНОПКА???

Крик души произошел, пошел записывать видео 🤓
21.02.2025, 14:01
t.me/ioscmdbcmdr/1587
IO
iOS Dev: cmd+B, cmd+R
1 097 подписчиков
231
21.02.2025, 14:01
t.me/ioscmdbcmdr/1588
IO
iOS Dev: cmd+B, cmd+R
1 097 подписчиков
230
SwiftUI - I'm Lovin' It, часть 2

Следующими на сношение с моим мозгом выстроились кнопки...

Кнопка START отображается верно, но область нажатия - текст.

В Интернетах говорят, что надо использовать

.contentShape(.rect)

Это не спасает ситуацию.

На скрине специально задал .buttonStyle(.bordered), чтобы видеть область, в которой кнопка реагирует на нажатие.

У меня возникает, как мне кажется, вполне логичный вопрос:
НАХ.. МНЕ ФРЕЙМ КНОПКИ, КОТОРЫЙ НЕ РЕАГИРУЕТ НА НАЖАТИЯ? КНОПКИ, _УКА!!!

Успокоился...видимо, я что-то не понимаю, лезу в документацию:
Вы создаете кнопку, предоставляя действие и лейбл. Действие это либо метод, либо замыкание, которое что-то делает, когда пользователь нажимает или касается кнопки.

Черным по белому написано:
замыкание, которое что-то делает, когда пользователь нажимает или касается кнопки.
Касается КНОПКИ! не ЛЕЙБЛА!
21.02.2025, 13:54
t.me/ioscmdbcmdr/1586
IO
iOS Dev: cmd+B, cmd+R
1 097 подписчиков
2
1
242
SwiftUI - I'm Lovin' It, часть 1

Собирал простую таблицу с тренировками.
В данном случае bounces вааааааще не в тему.

Пошел простым путем и хотел обернул List в китовский ScrollView без bounces (назовем его NoBouncesScrollView), но так низя (видимо скроллы конфликтуют).

Вместо List внутри NoBouncesScrollView использовал LazyVStack и все работало.

Восторг, победа, радость!

Спустя минуту, вспоминаю, что у меня ячеейки удаляются по свайпу.
Ячейки из ScrollView можно удалять с iOS17 (я же выставил в проекте 16).

Грусть, печаль, разочарование...

В итоге:
Чтобы отключить bounces тащил китовскую таблицу (+80 строк кода).
21.02.2025, 13:44
t.me/ioscmdbcmdr/1585
IO
iOS Dev: cmd+B, cmd+R
1 097 подписчиков
Репост
3
172
Дорогие авторы Boosty,

Мы видим ваши обращения и понимаем, что отсутствие продлений подписок может вызывать волнение.

Сейчас, в рамках технических работ с платёжной системой, автоматическое списание временно приостановлено.

Доступ к вашему контенту для подписчиков сохраняется на всё время работ. Как только процесс будет завершён, оплата спишется автоматически, а следующий платёж сдвинется на месяц вперёд.

Спасибо за ваше понимание и поддержку!
19.02.2025, 12:11
t.me/ioscmdbcmdr/1584
IO
iOS Dev: cmd+B, cmd+R
1 097 подписчиков
1
Ну наконец-то гоууу )))
16.02.2025, 21:40
t.me/ioscmdbcmdr/1583
IO
iOS Dev: cmd+B, cmd+R
1 097 подписчиков
1
24
Ахахахха ) Я забыл, что у меня канал на другую почту )))) Сорян
16.02.2025, 21:33
t.me/ioscmdbcmdr/1582
IO
iOS Dev: cmd+B, cmd+R
1 097 подписчиков
1
Да что за анлучка, _лять...Теперь ОБС решил повыеживаться (
16.02.2025, 21:29
t.me/ioscmdbcmdr/1581
IO
iOS Dev: cmd+B, cmd+R
1 097 подписчиков
225
Что-то ВПН делает мозги...надеюсь не отрубится
https://youtube.com/live/SlbSkHsUsz0?feature=share

Старт в 21:15
16.02.2025, 21:03
t.me/ioscmdbcmdr/1580
IO
iOS Dev: cmd+B, cmd+R
1 097 подписчиков
17
243
Устрой дестрой?

Хотите покажу резюме из которого надо все удалить?

Где: YouTube
Когда: Сегодня, 16 февраля
Время: 21:00 по мск

Лень рисовать обложку, поэтому трансляцию сделаю по ссылке, ссылку скину сюда.

Хочу и буду - 🔥
16.02.2025, 17:46
t.me/ioscmdbcmdr/1579
IO
iOS Dev: cmd+B, cmd+R
1 097 подписчиков
12
1
276
Резюме - не просто "бумажка"

Разбирая резюме, все чаще убеждаюсь в том, что люди не понимают его предназначение.

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

Перечивая "Пиши, сокращай", стал обращать внимание на тезисы, подходящие для резюме. Решил поделиться с вами...

Если убрать раздел "Для кого?", то уже на второй странице:

Порядок начинается с ответа на вопросы «Для кого я пишу?», «Что этим людям нужно?» и «Чем я могу
им помочь?». Заметьте, что это не вопрос «Что я хочу сказать?»,
скорее «Зачем люди будут читать?».

Дайте огня и тезисы будут периодически появляться 🔥
15.02.2025, 23:44
t.me/ioscmdbcmdr/1578
Результаты поиска ограничены до 100 публикаций.
Некоторые возможности доступны только премиум пользователям.
Необходимо оплатить подписку, чтобы пользоваться этим функционалом.
Фильтр
Тип публикаций
Хронология похожих публикаций:
Сначала новые
Похожие публикации не найдены
Сообщения
Найти похожие аватары
Каналы 0
Высокий
Название
Подписчики
По вашему запросу ничего не подошло