В 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 – мгновенные ответы без переключения между окнами.
Мобильный трудоголик
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥6👍3👏1
В 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🔥4❤1👏1
🫣 О чем жалеют опытные айтишники?
Ошибки, которые совершают практически все опыте разработчики, и я не исключение:
1️⃣ Код - это главное
Работа разработчиком заключается не только в написании кода. Вам платят далеко не только за это, вам платят для того, чтобы вы решали бизнес-проблемы. Соответственно вам нужно уметь говорить с заказчиком на языке бизнес-процессов, и уметь донести какую пользу вы приносите. Подробнее писал в этом посте.
2️⃣ Стоять на месте годами, в надежде на стабильность.
Застревание в зоне комфорта мешает развитию. Пока ваши конкуренты растут и нарабатывают новые скиллы, вы отказываетесь назад только, потому что вы не изучаете ничего нового.
3️⃣ Игнорирование своего состояния
Если вы не обращаете внимание на физическое и ментальное состояние, то в скором времени начнутся проблемы со здоровьем, проблемы в семье, а по итогу круг замыкается, и это приводит к проблемам и на работе.
4️⃣ Отсутствие навыков коммуникации.
Разработка - это командная работа, и кто бы что не говорил, в команде важно уметь отстаивать свою позицию. Вы должны уметь доносить ценность ваших решений группе людей, чтобы вас слышали, а не отметали идеи.
5️⃣ Терпеть токсичную компанию.
Страх перемен держит в плохих условиях и снижает мотивацию. А еще интерес к работе, уважение к себе, веру в людей. Если вам не нравится коллектив - ищите другой, лучше не станет поверьте.
➡️ Подписаться на канал
Мобильный трудоголик
Ошибки, которые совершают практически все опыте разработчики, и я не исключение:
Работа разработчиком заключается не только в написании кода. Вам платят далеко не только за это, вам платят для того, чтобы вы решали бизнес-проблемы. Соответственно вам нужно уметь говорить с заказчиком на языке бизнес-процессов, и уметь донести какую пользу вы приносите. Подробнее писал в этом посте.
Застревание в зоне комфорта мешает развитию. Пока ваши конкуренты растут и нарабатывают новые скиллы, вы отказываетесь назад только, потому что вы не изучаете ничего нового.
Если вы не обращаете внимание на физическое и ментальное состояние, то в скором времени начнутся проблемы со здоровьем, проблемы в семье, а по итогу круг замыкается, и это приводит к проблемам и на работе.
Разработка - это командная работа, и кто бы что не говорил, в команде важно уметь отстаивать свою позицию. Вы должны уметь доносить ценность ваших решений группе людей, чтобы вас слышали, а не отметали идеи.
Страх перемен держит в плохих условиях и снижает мотивацию. А еще интерес к работе, уважение к себе, веру в людей. Если вам не нравится коллектив - ищите другой, лучше не станет поверьте.
Мобильный трудоголик
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4🔥4👀1
Обе команды объединяют изменения из одной ветки в другую, но делают это по-разному.
Создаёт новый коммит слияния, сохраняя историю всех веток.
# Переключись на ветку, куда нужно влить изменения (например, main).
git checkout main
# Влить изменения из ветки feature.
git merge feature
🔹 Простота использования.
🔹 Сохраняет полную историю.
🔸 Захламляет историю коммитами слияния.
------------------------------------------------------
«Перемещает» Ваши коммиты в другую ветку, перезаписывая историю другой ветки таким образом, будто вы только что ответвились от этой ветки и добавили новые коммиты. Все прошлые коммиты в истории данной ветки будут после Ваших коммитов.
# Переключись на feature ветку.
git checkout feature
# Перебазировать её на main.
git rebase main
🔹 Чистая, линейная история.
🔹 Нет лишних коммитов слияния.
🔸 Может усложнить работу в команде (переписывает историю).
Если вы уже запушили ветку в удаленный репозиторий, обычный git push без --force не сработает, потому что локальная история и на сервере расходится.
git push --force
------------------------------------------------------
✍️ Когда что использовать?
🔹 Merge – для публичных веток (main, dev).
🔹 Rebase – для локальных feature веток перед мержем.
Мобильный трудоголик
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4🔥4❤1
Условия для этого: урегулирование вопроса с заброшенным оборудованием хостинга, оплата всех штрафов и разблокировка аккаунтов российских СМИ, журналистов и блогеров.
Мобильный трудоголик
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4🔥4🗿1
🔸 Не запускаются с непонятными ошибками.
🔸 Занимают много места на диске.
🔸 Создают дубликаты при добавлении новых устройств.
🔹 Закройте все симуляторы и Xcode (через Cmd+Q), чтобы избежать конфликтов.
🔹 Откройте приложение «Терминал» и выполните следующие команды:
# Удаляем все превью симуляторов (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 столкнулась с массой судебных исков
🔹 Общая сумма претензий к компании превысила 200 млн рублей
🔹 Процесс ликвидации может затянуться, но ясно одно — эпоха Microsoft в России официально подходит к концу.
Мобильный трудоголик
Please open Telegram to view this post
VIEW IN TELEGRAM
👀5🗿3🤯1
В 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
👍5❤3🫡1
💻 Стало известно название следующей версии macOS.
📱 Следующая версия macOS, которая выйдет в 2025 году, получит имя Tahoe — в честь живописного озера на границе Калифорнии и Невады. Это продолжает традицию Apple называть ОС в честь калифорнийских достопримечательностей (Sequoia, Sonoma, Ventura).
🎨 Визуальные изменения.
По данным Марка Гурмана (Bloomberg), вTahoe Apple может переработать интерфейс:
🔹 Усиленная прозрачность — элементы станут больше напоминать стекло.
🔹 Новые анимации — плавные переходы между окнами.
🔹 Обновлённые иконки — более трёхмерный и «акварельный» стиль.
💻 Возможные фичи.
🔹 Интеграция ИИ — улучшенный Spotlight с генеративными ответами.
🔹 Режим «Smart Window» — автоматическая группировка окон по задачам
🔹 Поддержка ARM-only — возможный отказ от Rosetta 2.
🗓 Дата выхода.
🔹 Анонс ожидается 10 июня 2025 на WWDC, а финальная версия выйдет осенью.
➡️ Подписаться на канал
Мобильный трудоголик
🎨 Визуальные изменения.
По данным Марка Гурмана (Bloomberg), в
🔹 Усиленная прозрачность — элементы станут больше напоминать стекло.
🔹 Новые анимации — плавные переходы между окнами.
🔹 Обновлённые иконки — более трёхмерный и «акварельный» стиль.
💻 Возможные фичи.
🔹 Интеграция ИИ — улучшенный Spotlight с генеративными ответами.
🔹 Режим «Smart Window» — автоматическая группировка окон по задачам
🔹 Поддержка ARM-only — возможный отказ от Rosetta 2.
🔹 Анонс ожидается 10 июня 2025 на WWDC, а финальная версия выйдет осенью.
Мобильный трудоголик
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5🔥3👀1
Не успели Fplus презентовать прототип отечественной игровой консоли,
Зато характеристики двойника нам известны, консоль базируюется на мощном процессоре 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🤔3❤1👍1
Работа в IT – это постоянный марафон, который я бегу уже 13 лет. За это время выработал свои правила, как поддерживать общую эффективность. Вот мой топ-5:
Если что-то не получается сразу - это нормально. Главный секрет больших задач? Дробить их на множество мелких подзадач. И самое важное – выполнять задуманное изо дня в день. Даже когда внутри кричит "не хочу" и "не буду". Поверьте, рутинные задачки – это не скучно, это фундамент больших побед.
Мой отдых не всегда вписывается в стандартные рамки. Я спокойно могу выделить 30 минут в рабочее время на книгу, чтобы перезагрузить мозг. Но так же спокойно могу доделывать важную фичу поздно вечером. Для меня приоритет – результат и ощущение завершенности, а не строгое следование часам.
Мое правило – ежедневная зарядка, 30-40 минут. Не нужно марафонов или спортзала каждый день (хотя это круто!). Достаточно базовых упражнений для поддержания организма на жизненно необходимом уровне. Это не прихоть, это обязательство перед собой.
Я сам разработал для себя приложение-планировщик. Кому интересно можете скачать в App Store или Google Play (TaskFocus). Туда летит всё: от рабочих дедлайнов до напоминания заняться зарядкой и практики английского. Благодаря четкой системе голова не болит от множества задач.
То, чем многие жертвуют в первую очередь. Сон – это святое время, когда мой мозг и тело перезагружаются не на 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()
🔹 Простые условия с одним действием в каждой ветке.
🔹 Присвоение значений.
🔹 Возврат значений в функциях.
🔹 Сложные условия с несколькими действиями.
🔹 Ветвление с 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-фигуры.
➡️ Подписаться на канал
Мобильный трудоголик
Canvas — это мощный инструмент для отрисовки кастомной графики в SwiftUI. Он работает эффективнее, чем комбинация отдельных SwiftUI-фигур, особенно при работе с множеством сложных элементов.
🔹 Оптимизированная производительность - эффективно обрабатывает одновременный рендеринг множества графических объектов.
🔹 Гибкий контроль - предоставляет доступ к объекту GraphicsContext для точного управления процессом рисования.
🔹 Низкоуровневые операции - позволяет выполнять сложные графические преобразования и применять различные стили отрисовки.
🔹 Поддержка трансформаций, масок, blend-режимов.
🔹 Анимация через TimelineView.
🔹 Реакция на жесты и данные.
🔸 Сложная графика: диаграммы, кастомные иконки.
🔸 Производительность: 100+ элементов на экране.
🔸 Низкоуровневый контроль: точное управление пикселями.
🔸 Нет встроенной поддержки текста (используйте Text поверх Canvas).
🔸 Сложнее отлаживать, чем стандартные SwiftUI-фигуры.
Мобильный трудоголик
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8👏3🔥2
🇪🇺 ЕС грозит Apple рекордным штрафом до €500 млн.
Компании дали 30 дней на устранение нарушений в работе App Store в соответствии с антимонопольным законом о цифровых рынках (DMA). В случае невыполнения условий штраф станет неизбежным.
➡️ Подписаться на канал
Мобильный трудоголик
Компании дали 30 дней на устранение нарушений в работе App Store в соответствии с антимонопольным законом о цифровых рынках (DMA). В случае невыполнения условий штраф станет неизбежным.
Мобильный трудоголик
Please open Telegram to view this post
VIEW IN TELEGRAM
🫡7👍2🔥1👏1