Мобильный трудоголик
1.33K subscribers
61 photos
9 videos
265 links
👨‍💻 Пишу простым языком об iOS разработке на Swift и мобильной разработке в целом.
🔹 Вошел в IT задолго до того как это стало мейнстримом.
---
‍Обо мне: https://t.me/hardworkerIT/3
Чат: @hardworkerChatIT
Канал про разработку и жизнь в ИТ: @itDenisov
Download Telegram
💻 Почему джуны 2025 года учатся в 2 раза быстрее, чем мы?

Если вы, как я, начинали карьеру в IT до 2020-х, наверняка замечали: как быстро новое поколение джунов осваивает Swift, Kotlin, Java, Python, C# и т.д.. В чём секрет?


1️⃣ Информация
Джуны 2025 не тратят время на поиск знаний — они тратят его на практику. Раньше, чтобы изучить iOS-разработку, нужно было покупать книги на английском, искать наставника в офлайне и разгадывать ошибки по форумам. Сейчас действительно много бесплатной информации: YouTube-туториалы разбирают SwiftUI за 15 минут , интерактивные платформы вроде LeetCode позволяют решать задачи, а бесплатные курсы уже с полноценной структурой, по которой можно научиться базе.

2️⃣ ChatGPT
Сегодняшние новички генерируют шаблоны через ChatGPT, исправляют ошибки с GitHub Copilot. Это как учить математику с калькулятором: меньше рутины — больше фокуса на логике. Но есть риск: некоторые джуны не понимают, как работает их код. Зато они умеют задавать правильные вопросы ИИ.

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

4️⃣ Микрообучение + геймификация
Раньше обучение строилось на месяцах теории и сложных проектах, которые убивали мотивацию и развивали дисциплину. Сейчас джуны учатся через 5-минутные уроки и челленджи - и получают быстрый результат. Прогресс виден сразу — мозг регулярно вырабатывает дофамин и стимулирует работать дальше.

5️⃣ Вайбкодинг.
Джунам не нужно биться над чистотой кода, они описывают ИИ, что хотят от нее получить, и она пишет код за них. Если возникают баги — фиксит их за разработчиков. Они могут не иметь навыка кодинга, но сможешь создать веб-приложения, автоматизировать процессы, делать CRM и даже запускать MVP стартапов.

➡️ Подписаться на канал
Мобильный трудоголик
Please open Telegram to view this post
VIEW IN TELEGRAM
🗿5🤔4👀2
🔢 Протокол Equatable: как сравнивать пользовательские типы в Swift.

В Swift протокол Equatable позволяет сравнивать объекты между собой с помощью оператора ==. Многие стандартные типы (например, String, Int, Float) уже соответствуют этому протоколу. Но если вы создаёте собственный тип, его нужно явно подписать под Equatable, чтобы включить сравнение.

Как добавить поддержку Equatable для своего типа?
Достаточно указать протокол после имени типа:

struct MyStruct: Equatable {
let title: String
let count: Int
}


Swift может автоматически сгенерировать реализацию ==, если все свойства типа тоже поддерживают Equatable (как в примере выше).

Но если логика сравнения сложнее, можно реализовать метод вручную:

struct MyStruct: Equatable {
let title: String
let count: Int

static func == (lhs: MyStruct, rhs: MyStruct) -> Bool {
return lhs.title == rhs.title && lhs.count == rhs.count
}
}


Пример использования:

let firstStruct = MyStruct(title: "first", count: 1)
let secondStruct = MyStruct(title: "second", count: 2)

if firstStruct == secondStruct {
print("Равно")
} else {
print("Не равно")
}


После выполнения данного кода мы увидим следующий результат:
Не равно


➡️ Подписаться на канал
Мобильный трудоголик
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6👏3🔥1
Media is too big
VIEW IN TELEGRAM
📱 К нам подъехала коллаборция года!

Павел Дуров объявил о заключении эксклюзивного годового партнерства с Илоном Маском и его компанией xAI. Уже этим летом ожидаем в Telegram появится доступ к чат-боту Grok

⚠️ Что это значит?

💻 фактчекинг постов: Grok сможет проверять достоверность информации прямо в ленте или чатах, помогая пользователям отделять факты от вымысла.
✍️ анализ и сокращение текста. Grok сделает выжимку или, наоборот, детально распишет любой текст по вашему запросу.
🛡 умный модератор: Назначьте Grok модератором ваших чатов или каналов! Он сможет автоматически чистить спам и "ненавистных ботов", поддерживая порядок.
🔍ИИ в поиске: задавайте сложные вопросы самому "умному" ИИ напрямую через поисковую строку Telegram – мгновенные ответы без переключения между окнами.

Телеграм получит аж $300 млн в качестве инвестиций. Как тебе такое, Илон Маск?

➡️ Подписаться на канал
Мобильный трудоголик
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥6👍3👏1
Тем временем TON взлетел на 20%📈💪
👍4🔥3👏1
🔢 Протокол Comparable: как сравнивать объекты в Swift (<, >, <=, >=).

В Swift протокол Comparable позволяет сравнивать объекты с помощью операторов <, >, <= и >=. Это полезно для сортировки, поиска минимального / максимального значения и других операций.

Многие стандартные типы (Int, Float, String и др.) уже поддерживают Comparable. Но если вы работаете со своими типами, их можно сделать сравниваемыми вручную.

Как добавить поддержку Comparable для своего типа?

struct MyStruct: Comparable {
let title: String
let count: Int
}


Но в отличие от Equatable, Swift не всегда может автоматически сгенерировать реализацию. Если свойства неоднозначны для сравнения (например, несколько полей), нужно реализовать методы сравнения вручную:

struct MyStruct: Equatable {
let title: String
let count: Int

static func < (lhs: MyStruct, rhs: MyStruct) -> Bool {
return lhs.count < rhs.count
}

static func > (lhs: MyStruct, rhs: MyStruct) -> Bool {
return lhs.count > rhs.count
}

static func <= (lhs: MyStruct, rhs: MyStruct) -> Bool {
return lhs.count <= rhs.count
}

static func >= (lhs: MyStruct, rhs: MyStruct) -> Bool {
return lhs.count >= rhs.count
}
}


Пример использования:

let firstStruct = MyStruct(title: "first", count: 1)
let secondStruct = MyStruct(title: "second", count: 2)

if firstStruct >= secondStruct {
print("firstStruct больше или равен")
} else {
print("firstStruct меньше")
}


После выполнения данного кода мы увидим следующий результат:
firstStruct меньше


➡️ Подписаться на канал
Мобильный трудоголик
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4🔥41👏1
🫣 О чем жалеют опытные айтишники?

Ошибки, которые совершают практически все опыте разработчики, и я не исключение:

1️⃣ Код - это главное
Работа разработчиком заключается не только в написании кода. Вам платят далеко не только за это, вам платят для того, чтобы вы решали бизнес-проблемы. Соответственно вам нужно уметь говорить с заказчиком на языке бизнес-процессов, и уметь донести какую пользу вы приносите. Подробнее писал в этом посте.

2️⃣ Стоять на месте годами, в надежде на стабильность.
Застревание в зоне комфорта мешает развитию. Пока ваши конкуренты растут и нарабатывают новые скиллы, вы отказываетесь назад только, потому что вы не изучаете ничего нового.

3️⃣ Игнорирование своего состояния
Если вы не обращаете внимание на физическое и ментальное состояние, то в скором времени начнутся проблемы со здоровьем, проблемы в семье, а по итогу круг замыкается, и это приводит к проблемам и на работе.

4️⃣ Отсутствие навыков коммуникации.
Разработка - это командная работа, и кто бы что не говорил, в команде важно уметь отстаивать свою позицию. Вы должны уметь доносить ценность ваших решений группе людей, чтобы вас слышали, а не отметали идеи.

5️⃣ Терпеть токсичную компанию.
Страх перемен держит в плохих условиях и снижает мотивацию. А еще интерес к работе, уважение к себе, веру в людей. Если вам не нравится коллектив - ищите другой, лучше не станет поверьте.

➡️ Подписаться на канал
Мобильный трудоголик
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4🔥4👀1
📱 Git Merge vs Rebase: В чём разница?

Обе команды объединяют изменения из одной ветки в другую, но делают это по-разному.

1️⃣ Git Merge.
Создаёт новый коммит слияния, сохраняя историю всех веток.


# Переключись на ветку, куда нужно влить изменения (например, main).
git checkout main

# Влить изменения из ветки feature.
git merge feature


Плюсы:
🔹 Простота использования.
🔹 Сохраняет полную историю.

Минусы:
🔸 Захламляет историю коммитами слияния.

------------------------------------------------------

2️⃣ Git Rebase.
«Перемещает» Ваши коммиты в другую ветку, перезаписывая историю другой ветки таким образом, будто вы только что ответвились от этой ветки и добавили новые коммиты. Все прошлые коммиты в истории данной ветки будут после Ваших коммитов.


# Переключись на feature ветку.
git checkout feature

# Перебазировать её на main.
git rebase main


Плюсы:
🔹 Чистая, линейная история.
🔹 Нет лишних коммитов слияния.

Минусы:
🔸 Может усложнить работу в команде (переписывает историю).

‼️ Когда вы делаете rebase, Git фактически переписывает историю коммитов – создает новые коммиты с тем же содержимым, но другим хешем.
Если вы уже запушили ветку в удаленный репозиторий, обычный git push без --force не сработает, потому что локальная история и на сервере расходится.


git push --force


------------------------------------------------------

✍️ Когда что использовать?
🔹 Merge – для публичных веток (main, dev).
🔹 Rebase – для локальных feature веток перед мержем.

➡️ Подписаться на канал
Мобильный трудоголик
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4🔥41
📱 Возможна разблокировка YouTube в России.

Условия для этого: урегулирование вопроса с заброшенным оборудованием хостинга, оплата всех штрафов и разблокировка аккаунтов российских СМИ, журналистов и блогеров.

🔗 Источник

➡️ Подписаться на канал
Мобильный трудоголик
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4🔥4🗿1
📱 Как правильно очистить симуляторы Xcode.

Иногда, если забьётся кеш или после обновления Xcode или macOS симуляторы начинают работать некорректно:
🔸 Не запускаются с непонятными ошибками.
🔸 Занимают много места на диске.
🔸 Создают дубликаты при добавлении новых устройств.

Есть решение: полная очистка симуляторов.

1️⃣ Подготовка.
🔹 Закройте все симуляторы и Xcode (через Cmd+Q), чтобы избежать конфликтов.

2️⃣ Очистка.
🔹 Откройте приложение «Терминал» и выполните следующие команды:


# Удаляем все превью симуляторов (Snapshot'ы).
xcrun simctl --set previews delete all

# Выключаем все запущенные симуляторы и сбрасываем их до заводских настроек.
xcrun simctl shutdown all && xcrun simctl erase all


‼️ В некоторых случаях может потребоваться полное удаление всех симуляторов:


# Полное удаление всех симуляторов.
xcrun simctl delete all


➡️ Подписаться на канал
Мобильный трудоголик
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5🔥3👏1
📱 Microsoft в России все.

Основное российское подразделение корпорации — ООО «Майкрософт Рус» планирует начать процедуру банкротства.

⚠️ Почему так вышло?
🔹 После ухода Microsoft столкнулась с массой судебных исков
🔹 Общая сумма претензий к компании превысила 200 млн рублей

⚠️ Что дальше?
🔹 Процесс ликвидации может затянуться, но ясно одно — эпоха Microsoft в России официально подходит к концу.

Не ясно одно, кто придет на замену.

➡️ Подписаться на канал
Мобильный трудоголик
Please open Telegram to view this post
VIEW IN TELEGRAM
👀5🗿3🤯1
📱 Как вернуть старый стиль UITabBar в iPadOS 18+ (UIKit).

В iPadOS 18 Apple добавила новый системный таббар в верхней части экрана, что может вызвать конфликты с кастомными таббарами в нижней части.

При желании, можно вернуть прежний стиль TabBar таким образом:
if #available(iOS 18.0, *), UIDevice.current.userInterfaceIdiom == .pad {
tabBarController?.traitOverrides.horizontalSizeClass = .compact
}


‼️ Важные нюансы:
🔸 Работает только на iPad (userInterfaceIdiom == .pad)
🔸 Требует iOS 18+ (проверка через @available)

Альтернатива для SwiftUI:
.toolbar(.hidden, for: .topBar)


➡️ Подписаться на канал
Мобильный трудоголик
Please open Telegram to view this post
VIEW IN TELEGRAM
👍53🫡1
💻 Стало известно название следующей версии macOS.

📱 Следующая версия macOS, которая выйдет в 2025 году, получит имя Tahoe — в честь живописного озера на границе Калифорнии и Невады. Это продолжает традицию Apple называть ОС в честь калифорнийских достопримечательностей (Sequoia, Sonoma, Ventura).

🎨 Визуальные изменения.
По данным Марка Гурмана (Bloomberg), в Tahoe Apple может переработать интерфейс:
🔹 Усиленная прозрачность — элементы станут больше напоминать стекло.
🔹 Новые анимации — плавные переходы между окнами.
🔹 Обновлённые иконки — более трёхмерный и «акварельный» стиль.

💻 Возможные фичи.
🔹 Интеграция ИИ — улучшенный Spotlight с генеративными ответами.
🔹 Режим «Smart Window» — автоматическая группировка окон по задачам
🔹 Поддержка ARM-only — возможный отказ от Rosetta 2.

🗓 Дата выхода.
🔹 Анонс ожидается 10 июня 2025 на WWDC, а финальная версия выйдет осенью.

➡️ Подписаться на канал
Мобильный трудоголик
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5🔥3👀1
🎮 Спиши, но только не точь в точь..

Не успели Fplus презентовать прототип отечественной игровой консоли, как в интернете уже успели найти ее двойника на AliExpress. Устройство российской компании, пока предназначено только для разработчиков и в продажу не поступит.

Зато характеристики двойника нам известны, консоль базируюется на мощном процессоре AMD Ryzen 7840HS, цена около тысячи долларов. Какими параметрами будет обладать оригинальный гаджет от Fplus, компания пока держит в секрете.

➡️ Подписаться на канал
Мобильный трудоголик
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🗿5🤔31👍1
👨‍💻 Мой топ-5 правил продуктивности.

Работа в IT – это постоянный марафон, который я бегу уже 13 лет. За это время выработал свои правила, как поддерживать общую эффективность. Вот мой топ-5:

1️⃣ Дисциплина: Маленькие Шаги > Большие Скачки.
Если что-то не получается сразу - это нормально. Главный секрет больших задач? Дробить их на множество мелких подзадач. И самое важное – выполнять задуманное изо дня в день. Даже когда внутри кричит "не хочу" и "не буду". Поверьте, рутинные задачки – это не скучно, это фундамент больших побед.

2️⃣ Отдых по часам VS Гибкость распорядка дня.
Мой отдых не всегда вписывается в стандартные рамки. Я спокойно могу выделить 30 минут в рабочее время на книгу, чтобы перезагрузить мозг. Но так же спокойно могу доделывать важную фичу поздно вечером. Для меня приоритет – результат и ощущение завершенности, а не строгое следование часам.

3️⃣ Спорт: обязательный минимум для сидячего образа жизни.
Мое правило – ежедневная зарядка, 30-40 минут. Не нужно марафонов или спортзала каждый день (хотя это круто!). Достаточно базовых упражнений для поддержания организма на жизненно необходимом уровне. Это не прихоть, это обязательство перед собой.

4️⃣ Приложение-планировщик.
Я сам разработал для себя приложение-планировщик. Кому интересно можете скачать в App Store или Google Play (TaskFocus). Туда летит всё: от рабочих дедлайнов до напоминания заняться зарядкой и практики английского. Благодаря четкой системе голова не болит от множества задач.

5️⃣ Сон: Неприкосновенный Must Have.
То, чем многие жертвуют в первую очередь. Сон – это святое время, когда мой мозг и тело перезагружаются не на 100%, а на все 120%! Поэтому 8 часов сна – это база. Неважно, лег я в 10 вечера или в 2 ночи из-за горящего дедлайна – следующие 8 часов принадлежат восстановлению. Это инвестиция в завтрашнюю продуктивность.

➡️ Подписаться на канал
Мобильный трудоголик
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7👏3🔥1
🔢 Улучшение читаемости кода и сокращение количества строк.

Этот код хорошо работает, но его можно немного упростить.

if userAge >= 18 {
driveCar()
} else {
driveBike()
}


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

userAge >= 18 ? driveCar() : driveBike()


⚠️ Когда применять тернарный оператор?
🔹 Простые условия с одним действием в каждой ветке.
🔹 Присвоение значений.
🔹 Возврат значений в функциях.

⚠️ Когда лучше использовать if/else?
🔹 Сложные условия с несколькими действиями.
🔹 Ветвление с else if.
🔹 Когда нужны дополнительные проверки в теле условия.

➡️ Подписаться на канал
Мобильный трудоголик
Please open Telegram to view this post
VIEW IN TELEGRAM
6👍3🫡2
Планы Apple по обновлению дизайна лицевой стороны iPhone.

Верим? 🤔

➡️ Подписаться на канал
Мобильный трудоголик
Please open Telegram to view this post
VIEW IN TELEGRAM
🤔6👀2🔥1🗿1
📱 Первые "живые" фото Pixel 10 Pro просочились в сеть.

По инсайдерским данным, Google может анонсировать Pixel 10 уже 13 августа. Утечка, предположительно, касается модели для рынка Японии.

➡️ Подписаться на канал
Мобильный трудоголик
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8👀2🔥1
🎨 Рисование в SwiftUI с помощью Canvas.

Canvas — это мощный инструмент для отрисовки кастомной графики в SwiftUI. Он работает эффективнее, чем комбинация отдельных SwiftUI-фигур, особенно при работе с множеством сложных элементов.

Основные возможности Canvas:
🔹 Оптимизированная производительность - эффективно обрабатывает одновременный рендеринг множества графических объектов.
🔹 Гибкий контроль - предоставляет доступ к объекту GraphicsContext для точного управления процессом рисования.
🔹 Низкоуровневые операции - позволяет выполнять сложные графические преобразования и применять различные стили отрисовки.
🔹 Поддержка трансформаций, масок, blend-режимов.
🔹 Анимация через TimelineView.
🔹 Реакция на жесты и данные.

⚠️ Когда выбирать Canvas вместо стандартных фигур SwiftUI?
🔸 Сложная графика: диаграммы, кастомные иконки.
🔸 Производительность: 100+ элементов на экране.
🔸 Низкоуровневый контроль: точное управление пикселями.

Ограничения:
🔸 Нет встроенной поддержки текста (используйте Text поверх Canvas).
🔸 Сложнее отлаживать, чем стандартные SwiftUI-фигуры.

➡️ Подписаться на канал
Мобильный трудоголик
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8👏3🔥2