В карточках разобрали, как работают блокировки и какая из них лучше подойдет вашему приложению
#свежак
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2❤1
Please open Telegram to view this post
VIEW IN TELEGRAM
😢5😁4👍1
Все мы знаем, что в мире технологий баз данных существует два основных направления: SQL и NoSQL, реляционные и нереляционные базы данных. Различия между ними заключаются в том, как они спроектированы, какие типы данных поддерживают, как хранят информацию.
Реляционные БД хранят структурированные данные, которые обычно представляют объекты реального мира. Скажем, это могут быть сведения о человеке, или о содержимом корзины для товаров в магазине, сгруппированные в таблицах, формат которых задан на этапе проектирования хранилища.
Нереляционные БД устроены иначе. Например, документо-ориентированные базы хранят информацию в виде иерархических структур данных. Речь может идти об объектах с произвольным набором атрибутов. То, что в реляционной БД будет разбито на несколько взаимосвязанных таблиц, в нереляционной может храниться в виде целостной сущности.
Приходилось ли вам выбирать системы управления базами данных для собственных проектов? Голосуйте и пишите, что и почему вы в итоге выбрали
❤️ — SQL
👍 — NoSQL
🤝 — использую оба подхода
#междусобойчик
Please open Telegram to view this post
VIEW IN TELEGRAM
❤6🤝3👍1
Приготовили для вас дайджест по актуальному из мира iOS, Android и кроссплатформы.
В этой статье автор разберёт, как они работают и почему без них невозможно представить современный Swift.
Создавайте свои приложения и игры, используя Xcode 26 Release Candidate и последние SDK, тестируйте с помощью TestFlight и отправляйте на рассмотрение в App Store.
Автор делится опытом развития архитектуры приложения на Jetpack Compose: с какими ограничениями столкнулись, как укротили навигацию от Google и какими молитвами всё это подружили с Koin. В начале затронет структуру модулей, затем обсудит скоупы в Koin для многомодульных проектов, и завершит это все библиотекой Jetpack Navigation.
Автор покажет, как написать ваш первый Swift код для Android. Это будет увлекательное приключение, так что налейте чашечку чая и давайте начнём.
CherryPick — лёгкий и модульный DI-фреймворк для Dart и Flutter, который решает задачу через строгую типизацию, кодогенерацию и контроль за зависимостями. Недавно вышла версия 3.x, где появились заметные улучшения.
#свежак
Please open Telegram to view this post
VIEW IN TELEGRAM
❤4👍1
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2
Senior IOS/Teamlead mobile developer Kotlin Multiplatform — удалёнка
Android-разработчик приложений — от 180 000 до 350 000 ₽, удалёнка
Разработчик iOS — от 200 000 ₽, удалёнка
Senior/Lead Mobile Developer — от 400 000 до 560 000 ₽, удалёнка
iOS-разработчик — от 350 000 ₽, удалёнка
#свежак
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2❤1
Apple Docs MCP дает доступ к официальной документации Apple для разработчиков по языку Swift, фреймворкам, API, SwiftUI, UIKit и видеоматериалам WWDC через Model Context Protocol. Это позволяет реализовать, например, поиск документации по iOS, macOS, watchOS, tvOS и visionOS с помощью ИИ-запросов на естественном языке.
Получайте мгновенный доступ к примерам кода на Swift/Objective-C, справочникам по API и техническим руководствам прямо в Claude, Cursor или любом другом совместимом с MCP ИИ-помощнике.
#буст
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2
Знаешь, что общего у всех крутых девелоперов в 2025? Они не пишут код руками — они управляют AI-агентами. От автодополнения до генерации целых модулей: показываю, какие инструменты реально ускоряют разработку и почему без них ты уже отстаешь.
#свежак
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2
Хотите удерживать пользователей с помощью своевременных уведомлений, но не знаете, с чего начать? Этот промпт поможет настроить отправку пушей быстро и эффективно.
Implement push notifications for a mobile app that includes:
— Set up Firebase Cloud Messaging (FCM) for Android and APNS for iOS
— Configure notification channels and categories
— Handle notification permissions and user opt-in flow
— Implement deep linking from notifications
— Manage notification grouping and summary
— Add analytics for notification engagement
— Handle foreground/background notification delivery
— Добавьте
Implement rich notifications with images and actions
для интерактивных уведомлений— Добавьте
Set up geofencing and trigger-based notifications
для персонализированных сообщений— Добавьте
Create notification scheduling system
для отложенных уведомлений#буст
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3❤2
Please open Telegram to view this post
VIEW IN TELEGRAM
😁10
Используемые приёмы не только способствуют более оперативному выявлению ошибок, но и помогают разработчикам глубже понимать код, создавать более надежные приложения и, что немаловажно, получать больше удовлетворения от процесса разработки.
func calculateScore() {
print("Начало расчета") // ← Лишний шум
// Код...
print("Результат: \(score)") // ← Забудете удалить
}
1. Умные точки останова
• Условные: срабатывают только при
user.age < 18
• С действиями: логируют без остановки выполнения
• Символьные: ловят все вызовы
viewDidLoad
в проекте2. Команды LLDB (в консоли Xcode):
(lldb) po user.name // Вывести значение
(lldb) expr user.age = 25 // Изменить переменную на лету
(lldb) thread backtrace // Показать весь стек вызовов
3. 3D-отладка интерфейса
Кнопка «Debug View Hierarchy» показывает слои UI в 3D — находите незаметные баги за секунды.
4. Логирование через OSLog (вместо print):
import os.log
let log = Logger(subsystem: "com.youapp", category: "network")
log.debug("Загрузка данных...") // Автоматически скрывается в продакшене
5. Instruments — для сложных багов:
• Allocations: ищет утечки памяти
• Time Profiler: находит тормозящие методы
Настройте условную компиляцию для отладочного кода:
#if DEBUG
// Этот код исчезнет в продакшене
validateData()
#endif
Итог: Забудьте о print(). Используйте точки останова + LLDB + Instruments. Это в 10 раз быстрее и не засоряет код.
Какой ваш главный инструмент отладки? Делитесь в комментариях
#буст
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3❤2
This media is not supported in your browser
VIEW IN TELEGRAM
📅 24 сентября в 19:00 МСК — бесплатный вебинар с Максимом Шаланкиным.
Тема: «ИИ-агенты: новая фаза развития искусственного интеллекта».
🔹 Почему все говорят про ИИ-агентов и куда вливаются миллиарды инвестиций.
🔹 Чем они отличаются от ChatGPT и обычных ботов.
🔹 Как работает цикл агента: восприятие → планирование → действие → обучение.
🔹 Живое демо простого агента.
🔹 Потенциал для бизнеса: автоматизация процессов и ROI до 80%.
Не придёшь — будешь потом рассказывать, что «агенты — это как чат-боты», и ловить косые взгляды от коллег 😏
👉 Регистрируйтесь через форму на лендинге
Тема: «ИИ-агенты: новая фаза развития искусственного интеллекта».
🔹 Почему все говорят про ИИ-агентов и куда вливаются миллиарды инвестиций.
🔹 Чем они отличаются от ChatGPT и обычных ботов.
🔹 Как работает цикл агента: восприятие → планирование → действие → обучение.
🔹 Живое демо простого агента.
🔹 Потенциал для бизнеса: автоматизация процессов и ROI до 80%.
Не придёшь — будешь потом рассказывать, что «агенты — это как чат-боты», и ловить косые взгляды от коллег 😏
👉 Регистрируйтесь через форму на лендинге
😁1
Выбор между локальной разработкой и облачной средой зависит от характера проекта, бюджета на оборудование и личных предпочтений. Оба подхода имеют свои преимущества и недостатки, и выбор зависит от задач, для которых используется среда.
Что предпочитаете вы? Голосуйте и пишите своё мнение в комментариях
❤️ — локально
👍 — в облаке
🤝 — гибрид
#междусобойчик
Please open Telegram to view this post
VIEW IN TELEGRAM
❤11🤝4👍2
Вот пять небольших трюков, которые незаметно избавят вас от ненужных элементов, придав коду вашего приложения элегантный вид.
Вместо бесконечных операторов
if let
создайте простое расширение, которое сделает обработку опциональных параметров естественной:extension View {
@ViewBuilder
func ifLet<T, Content: View>(_ value: T?, content: (T) -> Content) -> some View {
if let value {
content(value)
} else {
self
}
}
}
Теперь вы можете просто писать:
Text("Hello")
.ifLet(username) { Text("Welcome, \($0)") }
Мы все пишем
.padding()
или .opacity()
с условиями. Вместо того, чтобы заключать целые представления в блоки if, используйте это:extension View {
@ViewBuilder
func apply(_ condition: Bool, modifier: (Self) -> some View) -> some View {
if condition {
modifier(self)
} else {
self
}
}
}
Использование:
Text("Premium")
.apply(isPro) { $0.foregroundColor(.yellow) }
Одна строка, ничего лишнего.
Загрузка изображений — обычное дело, но повторение одной и той же логики плейсхолдера утомляет. Сделайте один раз:
struct RemoteImage: View {
let url: URL
var body: some View {
AsyncImage(url: url) { phase in
switch phase {
case .success(let image): image.resizable().scaledToFit()
case .failure(_): Color.gray
case .empty: ProgressView()
@unknown default: EmptyView()
}
}
}
}
Теперь вам больше не придётся переписывать загрузчики изображений.
Вместо того, чтобы создавать DateFormatter везде, добавьте расширение:
extension Date {
func formatted(_ style: DateFormatter.Style = .medium) -> String {
let formatter = DateFormatter()
formatter.dateStyle = style
return formatter.string(from: self)
}
}
Использование:
Text(Date().formatted(.long))
Легко читаемый и многоразовый код.
Не любите бороться с
.ignoresSafeArea()
? Добавьте небольшой вспомогательный метод:extension View {
func fillScreen() -> some View {
self.frame(maxWidth: .infinity, maxHeight: .infinity)
.ignoresSafeArea()
}
}
Теперь для каждого полноэкранного представления требуется всего один модификатор.
#буст
Please open Telegram to view this post
VIEW IN TELEGRAM
❤4🥱3👍2👏1🤔1