Основная компетенция специалиста по Data Science – способность анализировать и интерпретировать данные, а математика является фундаментом для начала работы.
В карточках мы разбираем основные разделы математики, с которых стоит начать изучение специалисту по анализу данных.
Хотите подготовиться к офферу или подтянуть знания? Оставляйте заявку на наш курс по математике для Data Science 💙
P.S. Только до 31 мая на курс (и вообще на все программы Академии) действует
А как у вас дела с высшей математикой?
❤️ — Помню всё
🔥 — Знаю основы
🌚 — Ничего не знаю
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👾4
Команда Flutter представила версию 3.44, которая включает ряд значительных обновлений. Среди ключевых изменений — Hybrid Composition++ для Android, переход на Swift Package Manager в качестве стандартного менеджера пакетов для iOS/macOS и улучшенная поддержка Vulkan для Impeller.
Также представлена предварительная версия поддержки многооконного режима для настольных платформ. Canonical становится ведущим разработчиком проекта.
В рамках масштабной архитектурной эволюции Material и Cupertino отделяются от основного фреймворка. Внедряются новые подходы к UX для агентного взаимодействия с пользователями (GenUI) и инструменты для разработчиков: Agentic Hot Reload, Dart & Flutter Agent Skills.
Flutter 3.44 уже используется в мультимедийной системе Toyota RAV4 2026, а также готовится SDK для webOS от LG.
#свежак #Flutter
Please open Telegram to view this post
VIEW IN TELEGRAM
Разработка — это не только код, но и постоянный приток новых идей и экспертного мнения. Давайте узнаем, кто из коллег по цеху составляет ваш личный информационный рацион.
Скидывайте в комменты авторов с YouTube, Теlegram, Хабр
#междусобойчик
Please open Telegram to view this post
VIEW IN TELEGRAM
Приготовили для вас дайджест по актуальному из мира iOS, Android и кроссплатформы.
Автор подробно разбирает, что такое Swift Plugins и какие они бывают.
Google добавил новые навыки и открыла AI-агентам доступ к мощным возможностям Android Studio, чтобы агенты могли эффективнее помогать в разработке приложений.
В этом году на конференции Google I/O 2026 команды Flutter и Dart отмечают важную тему: «Везде, каждый день, создано всеми, для всех».
#свежак
Please open Telegram to view this post
VIEW IN TELEGRAM
Конструкция switch/case похожа на конструкцию
if/else, так как позволяет обработать сразу несколько условий:var num: Int = 22
switch num {
case 0:
print("Переменная равна 0")
case 10:
print("Переменная равна 10")
case 22:
print("Переменная равна 22")
default:
print("не удалось распознать число")
}
После ключевого слова switch идет сравниваемое выражение. Это может быть переменная или константа. Значение этого выражения последовательно сравнивается со значениями, помещенными после оператора сase. И если совпадение будет найдено, то будет выполняться определенный блок сase.
Если совпадение не будет найдено, то выполняется оператор default.
В данном случае так как переменная
num равна 22, будет выполняться следующий блок case:case 22:
print("Переменная равна 22")
В других языках программирования, в которых также есть конструкция
switch/case, обычно в конце блока case ставится оператор break для прерывания выполнения и выхода из блока switch/case. В Swift использовать оператор break в подобных случаях необязательно.Однако бывают случаи, когда мы не хотим обрабатывать какие-то определенные значения и просто хотим выйти из конструкции switch. В этом случае после оператора case или default можно указать оператор break:
var num: Int = 0
switch num {
case 0:
print("Переменная равна 0")
case 10:
break
case 22:
print("Переменная равна 22")
default:
break
}
В данном случае если num равно 10 или другому числу, отличному от 0 или 22, просто произойдет выход из switch.
С помощью знака подчеркивания _ можно задать соответствие всем остальным значениям:
let number = 5
switch number {
case 1:
print("Number = 1")
case 2:
print("Number = 2")
case _:
print("Number не равно ни 1, ни 2, но это не точно")
}
Также мы можем сравнивать выражение не с одним значением, а с группой значений:
var num: Int = 20
switch num {
case 0, 10: // если num равно 0 или 10
print("Переменная равна 0 или 10")
case 11..<20: // если num в диапазоне от 11 до 20, не включая 20
print("Переменная находится в диапазоне от 11 до 20")
case 20...30: // если num в диапазоне от 20 до 30
print("Переменная находится в диапазоне от 20 до 30")
default:
print("не удалось распознать число")
}
Оператор
case 0, 10 задает два сравниваемых значения 0 и 10 и срабатывает, если выражение равно одному из этих значений.Оператор
case 11..<20 определяет целый диапазон значений от 11 до 20 (не включая 20) и срабатывает, если выражение равно значению из этого диапазона.Оператор
case 20...30 определяет целый диапазон значений от 20 до 30 (включая оба числа) и срабатывает, если выражение равно значению из этого диапазона.В версии Swift 4 мы можем опускать одну границу диапазона:
let i = 8
switch i {
case ...<0:
print("i - отрицательное число")
case 1...:
print("i - положительное число")
case 0:
print("i равно 0")
default:break
}
#буст #Swift
Please open Telegram to view this post
VIEW IN TELEGRAM
До 31 мая можно забрать любой курс Proglib Academy со скидкой 40%
Если давно хотели прокачаться в Python, ML, алгоритмах или AI-агентах, сейчас самое время выбрать программу и начать обучение по сниженной цене.
🎁 Разработка AI-агентов — от 49.000 ₽ (вместо 69.000 ₽)
Практический курс по разработке AI-агентов для автоматизации задач, работы и собственных проектов
🎁 Курс AgentOps — 129.000 ₽ (вместо 149.000 ₽)
Для разработчиков и LLM-инженеров, которые хотят внедрять AI-логику в бэкенд и сохранять стабильность сервиса.
🎁 Математика для разработки AI-моделей — 23.990 ₽ (вместо 31.990 ₽)
Практическая база по математике для анализа данных, ML и дальнейшего развития в AI.
🎁 Математика для Data Science — от 29.990 ₽ (вместо 39.990 ₽)
Курс для тех, кто хочет решать задачи, которые дают на собеседованиях на позицию дата-сайентиста в бигтехе.
🎁 ML для старта в Data Science — 28.990 ₽ (вместо 38.990 ₽)
Разберётесь в машинном обучении: от базовых понятий и линейных моделей до ансамблей, бустинга и рекомендательных систем.
🎁 Основы IT для непрограммистов — 16.990 ₽ (вместо 28.990 ₽)
Курс для IT-рекрутеров, маркетологов, проджектов, продактов и всех, кто работает с IT, но не пишет код.
🎁 Архитектуры и шаблоны проектирования — 27.990 ₽ (вместо 37.900 ₽)
Освоите основные паттерны проектирования и прокачаете навыки архитектора программного обеспечения.
🎁 Специалист по ИИ — 89.000 ₽ (вместо 113.900 ₽)
Курс для тех, кто хочет получить профессию в сфере ИИ, собрать портфолио из 5 проектов и научиться разрабатывать сложных AI-агентов.
🎁 Алгоритмы и структуры данных — 33.990 ₽ (вместо 57.990 ₽)
Подготовитесь к алгоритмическим собеседованиям, разберёте структуры данных и научитесь писать более эффективный код.
🎁 Программирование на языке Python — 27.990 ₽ (вместо 47.390 ₽)
Освоите Python на практике: без сухой теории, с пошаговой прокачкой навыков и итоговым проектом в портфолио.
🙌 Выбирайте курс по ссылке, оставляйте заявку, и менеджер поможет подобрать программу под ваши цели — https://clc.to/OdsnEQ
Если давно хотели прокачаться в Python, ML, алгоритмах или AI-агентах, сейчас самое время выбрать программу и начать обучение по сниженной цене.
🎁 Разработка AI-агентов — от 49.000 ₽ (вместо 69.000 ₽)
Практический курс по разработке AI-агентов для автоматизации задач, работы и собственных проектов
🎁 Курс AgentOps — 129.000 ₽ (вместо 149.000 ₽)
Для разработчиков и LLM-инженеров, которые хотят внедрять AI-логику в бэкенд и сохранять стабильность сервиса.
🎁 Математика для разработки AI-моделей — 23.990 ₽ (вместо 31.990 ₽)
Практическая база по математике для анализа данных, ML и дальнейшего развития в AI.
🎁 Математика для Data Science — от 29.990 ₽ (вместо 39.990 ₽)
Курс для тех, кто хочет решать задачи, которые дают на собеседованиях на позицию дата-сайентиста в бигтехе.
🎁 ML для старта в Data Science — 28.990 ₽ (вместо 38.990 ₽)
Разберётесь в машинном обучении: от базовых понятий и линейных моделей до ансамблей, бустинга и рекомендательных систем.
🎁 Основы IT для непрограммистов — 16.990 ₽ (вместо 28.990 ₽)
Курс для IT-рекрутеров, маркетологов, проджектов, продактов и всех, кто работает с IT, но не пишет код.
🎁 Архитектуры и шаблоны проектирования — 27.990 ₽ (вместо 37.900 ₽)
Освоите основные паттерны проектирования и прокачаете навыки архитектора программного обеспечения.
🎁 Специалист по ИИ — 89.000 ₽ (вместо 113.900 ₽)
Курс для тех, кто хочет получить профессию в сфере ИИ, собрать портфолио из 5 проектов и научиться разрабатывать сложных AI-агентов.
🎁 Алгоритмы и структуры данных — 33.990 ₽ (вместо 57.990 ₽)
Подготовитесь к алгоритмическим собеседованиям, разберёте структуры данных и научитесь писать более эффективный код.
🎁 Программирование на языке Python — 27.990 ₽ (вместо 47.390 ₽)
Освоите Python на практике: без сухой теории, с пошаговой прокачкой навыков и итоговым проектом в портфолио.
🙌 Выбирайте курс по ссылке, оставляйте заявку, и менеджер поможет подобрать программу под ваши цели — https://clc.to/OdsnEQ
При разработке приложений для iOS нам часто приходится сохранять конфиденциальные пользовательские данные, такие как пароли, токены аутентификации или криптографические ключи.
Для такого типа данных хранение значений в обычных файлах или UserDefaults обычно не подходит. Вместо этого в iOS предусмотрен API Keychain Services, который хранит конфиденциальные данные в зашифрованной базе данных, управляемой системой.
В этом посте мы рассмотрим, как работает API Keychain и как сохранять элементы связки ключей в Swift.
🔹 Примечание о структуре API
API Keychain Services — это API на основе языка C, из-за чего он кажется менее современным по сравнению со многими API на Swift.
На практике многие приложения оборачивают API в небольшую абстракцию на Swift или используют стороннюю библиотеку для упрощения стандартных операций.
Тем не менее понимание базовой структуры запросов по-прежнему важно, поскольку большинство абстракций в конечном счёте строятся на основе одного и того же API.
🔹 Понимание запросов к связке ключей
API сервисов связки ключей основано на запросах.
Запрос к связке ключей представляет собой словарь пар «ключ-значение», который описывает:
Для сохранения, чтения, обновления и удаления элементов используется одна и та же структура запроса.
🔹 Сохранение элементов связки ключей
Например, чтобы сохранить пароль в связке ключей, мы сначала создаем запрос, описывающий элемент, который хотим сохранить:
let query: [CFString: Any] = [
kSecClass: kSecClassGenericPassword,
kSecAttrService: "com.app.service",
kSecAttrAccount: username,
kSecValueData: passwordData]
Давайте разберем это по частям.
kSecClass:
kSecClassGenericPasswordkSecClass определяет тип элемента связки ключей, который мы хотим сохранить. В этом случае для хранения пароля мы используем kSecClassGenericPassword. Среди других доступных типов:kSecClassInternetPassword для хранения интернет-паролей.kSecClassCertificate для хранения сертификатов.kSecClassKey для хранения криптографических ключей.kSecClassIdentity для хранения идентификационных данных.Тип элемента определяет, какие атрибуты доступны для запроса.
kSecAttrService: "com.app.service"Строка, определяющая пространство имен для элементов связки ключей, обычно это идентификатор пакета приложения или конкретное имя сервиса. Это важно для предотвращения конфликтов, когда у нескольких элементов одно и то же имя учетной записи.
kSecAttrAccount: usernameАтрибуты используются для идентификации элемента и предоставления дополнительных метаданных.
В этом примере
kSecAttrAccount хранит имя пользователя, связанное с паролем.Мы можем дополнительно указать дополнительные аргументы запроса, чтобы настроить поведение элемента связки ключей. Например,
kSecAttrAccessible: kSecAttrAccessibleWhenUnlocked, который определяет, когда можно получить доступ к элементу. kSecAttrAccessibleWhenUnlocked гарантирует, что элемент будет доступен только при разблокированном устройстве.kSecValueData: passwordDataСамо конфиденциальное значение сохраняется с помощью
kSecValueData. Значение должно быть указано как
Data.#АрхитектурныйКод #MiddlePath #Swift
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1
Actomaton — это фреймворк для управления состоянием с использованием асинхронного подхода
async/await и Actor на Swift, вдохновленный Elm и swift-composable-architecture.Actomaton обеспечивает предсказуемый и потокобезопасный подход к управлению состоянием приложения и побочными эффектами в приложениях Swift.
#буст #iOS
Please open Telegram to view this post
VIEW IN TELEGRAM
В Jetpack Compose незаметно появлялись всё новые и новые фичи, которые снова делают разработку Android UI увлекательной. И знание этих возможностей превращает хорошее приложение в отличное.
Представляем 5 новых вещей, которые стоит внедрить в ваш рабочий процесс уже сегодня, первые 5 разобрали в прошлом посте.
Наконец-то. Нативные переходы между общими элементами между компонуемыми элементами без старых процедур системы View.
SharedTransitionLayout {
AnimatedContent(targetState = selected) { isSelected ->
if (isSelected) {
DetailCard(
modifier = Modifier.sharedElement(
rememberSharedContentState("card"),
animatedVisibilityScope = this
)
)
}
}
}Shared Element Transitions — лучший визуальный способ прокачать сценарий перехода “список → детали”.
HorizontalPager переехал из библиотеки Accompanist в foundation. Эта штука действительно хороша: декларативная, удобная и практически без проблем в использовании. Снэппинг работает именно так, как ожидаешь.val pagerState = rememberPagerState(pageCount = { tabs.size })
HorizontalPager(state = pagerState) { page ->
TabContent(tab = tabs[page])
}Не нужно протаскивать цвет темы или пользовательскую сессию через 6 уровней composable-функций. Просто определите
CompositionLocal, и сможете читать эти данные где угодно в дереве Compose.val LocalUserSession = compositionLocalOf<UserSession> { error("No session") }
// Provide at the top
CompositionLocalProvider(LocalUserSession provides session) {
AppContent()
}
// Read anywhere below
val session = LocalUserSession.currentКастомные жесты — двойной тап, долгое нажатие, отслеживание перетаскивания — всё это доступно через
pointerInput и API на основе корутин, который действительно, чёрт возьми, нормально работает.Modifier.pointerInput(Unit) {
detectTapGestures(
onDoubleTap = { viewModel.toggleFavorite() },
onLongPress = { showContextMenu = true }
)
}Compose построен вокруг реактивной системы, похожей по подходу на React.
Напрямую вы с этим обычно не работаете — но понимание системы делает вас более сильным Compose-разработчиком. Каждый
mutableStateOf существует внутри snapshot-системы. Именно поэтому UI остаётся отзывчивым даже тогда, когда изменение состояния сопровождается сложными вычислениями: Compose выполняет чтение и запись состояния пакетно (batch updates), обрабатывая всё за один проход.
#буст #MiddlePath #Kotlin
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1
Please open Telegram to view this post
VIEW IN TELEGRAM
😁6❤3🔥3👏2🎉1
IOS-разработчик — удалёнка
Tech Lead iOS — от 350 000 ₽, удалёнка
Senior Android Security —
от 380 000 до 500 000 ₽, удалёнка
IOS разработчик (Swift) — гибрид (Москва)
Android developer — гибрид (Москва)
#свежак
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1
⚡️ Знакомьтесь с экспертом Proglib Academy: AI-архитектор Антон Будняк
Антон — мастер превращения сырых AI-идей в отказоустойчивые системы. Он знает, как запустить MVP за неделю и масштабировать его так, чтобы архитектура не рассыпалась под нагрузкой в сотни тысяч юзеров.
За что его ценит IT-комьюнити:
🟣 Опыт в финтехе и крупном бизнесе
🟣 Запуск продуктов на 6.000+ пользователей
🟣 Ускоряет разработку
📚 Где Антон черпает знания (рекомендации эксперта):
- X* — главный источник новостей. Рекомендую блог Бориса Черни (создателя Claude Code) — там база про использование ИИ в разработке.
- Нетворкинг в ТГ: чаты LLM под капотом и AI-чат — здесь можно найти ответ почти на любой технический вопрос.
- Новости AI: каналы Сиолошная и Denis Sexy IT.
На курсе Agentops Антон учит строить «неубиваемый» бэкенд: работать с очередями, таймаутами и балансировкой нагрузки, чтобы ваши агенты работали стабильно 24/7.
🎁 Майские СКИДКИ в Proglib Academy!
До конца мая на все курсы академии (включая AgentOps и разработку ИИ-агентов) действует скидка -40%. Это лучший момент, чтобы войти в AI-разработку под присмотром практиков.
Узнать больше о программе и обучении у Антона:
👉 Курс о том, как внедрять AI-логику в бэкенд и сохранять стабильность сервиса
Продолжаем знакомить вас с командой?
👍 — Да, ждем новых лиц
🔥 — Пойду подпишусь на каналы из списка Антона
🏃♀️ Proglib Academy
* - запрещен в рф
Антон — мастер превращения сырых AI-идей в отказоустойчивые системы. Он знает, как запустить MVP за неделю и масштабировать его так, чтобы архитектура не рассыпалась под нагрузкой в сотни тысяч юзеров.
За что его ценит IT-комьюнити:
Руководил разработкой ML-моделей в финтехе с экономическим эффектом более 100 млн ₽
Антон строит сервисы, которыми пользуются тысячи людей в реальном проде.
Оптимизировал ML-пайплайны и кратно сократил время от начала разработки до релиза
📚 Где Антон черпает знания (рекомендации эксперта):
- X* — главный источник новостей. Рекомендую блог Бориса Черни (создателя Claude Code) — там база про использование ИИ в разработке.
- Нетворкинг в ТГ: чаты LLM под капотом и AI-чат — здесь можно найти ответ почти на любой технический вопрос.
- Новости AI: каналы Сиолошная и Denis Sexy IT.
На курсе Agentops Антон учит строить «неубиваемый» бэкенд: работать с очередями, таймаутами и балансировкой нагрузки, чтобы ваши агенты работали стабильно 24/7.
🎁 Майские СКИДКИ в Proglib Academy!
До конца мая на все курсы академии (включая AgentOps и разработку ИИ-агентов) действует скидка -40%. Это лучший момент, чтобы войти в AI-разработку под присмотром практиков.
Узнать больше о программе и обучении у Антона:
👉 Курс о том, как внедрять AI-логику в бэкенд и сохранять стабильность сервиса
Продолжаем знакомить вас с командой?
👍 — Да, ждем новых лиц
🔥 — Пойду подпишусь на каналы из списка Антона
* - запрещен в рф
Please open Telegram to view this post
VIEW IN TELEGRAM
👏2❤1👍1
Разбираем инструмент, который мы все запускаем по сто раз на дню, но часто воспринимаем как черный ящик. Без него мы бы до сих пор собирали проекты руками, писали скрипты на bash и страдали от вечного «у меня собирается, а у тебя нет».
Gradle дает нам единый источник правды, повторяемые сборки и масштабируемость: от пет-проекта до огромных многомодульных монорепозиториев. Автор разберет его по косточкам, чтобы настройка билдов больше не была болью.
#свежак #Kotlin
Please open Telegram to view this post
VIEW IN TELEGRAM
👏2❤1🔥1
adb shell screencap – быстрый скриншот экрана устройстваДелать скриншоты прямо из терминала для автоматической фиксации багов, документирования или сравнения UI.
# Сохранить скриншот на устройстве
adb shell screencap /sdcard/screenshot.png
# Сразу скопировать на компьютер
adb exec-out screencap -p > screenshot.png
# Короткая версия (без exec-out)
adb shell screencap -p | sed 's/\r$//' > screenshot.png
Скриншот с временной меткой:
adb exec-out screencap -p > "screenshot_$(date +%Y%m%d_%H%M%S).png"
Автоматизация при падении:
#!/bin/bash
# При краше приложения сразу делаем скриншот
adb logcat -d | grep -q "FATAL EXCEPTION"
if [ $? -eq 0 ]; then
adb exec-out screencap -p > crash_screenshot.png
echo "Краш! Скриншот сохранён"
fi
Сравнение скриншотов для тестов:
# 1. Эталонный скриншот
adb exec-out screencap -p > baseline.png
# 2. После изменений
adb exec-out screencap -p > current.png
# 3. Сравнить
compare baseline.png current.png diff.png
Пакетное создание скриншотов:
for screen in "Меню" "Настройки" "Профиль"; do
adb shell am start -n com.yourapp/.${screen}Activity
sleep 2
adb exec-out screencap -p > "${screen}.png"
done
#буст #MiddlePath
Please open Telegram to view this post
VIEW IN TELEGRAM
❤3👏1
Please open Telegram to view this post
VIEW IN TELEGRAM
Почему возникает CancellationException при быстром переключении экранов?
Anonymous Quiz
25%
Корутина не отменяется при уничтожении ViewModel
13%
Попытка обновить LiveData после очистки
16%
Проблема с viewModelScope
18%
Неправильная обработка исключений
28%
Посмотреть ответ
👀 Практический курс «Разработка AI-агентов для автоматизации задач, работы и собственных проектов» со скидкой 40% до конца мая!
Мы поговорили с десятками разработчиков, учли главные боли индустрии и запускаем полностью обновленный курс «ИИ-агенты 5.0». 🎉
Что вы узнаете?
- Как радикально оптимизировать траты на токены.
- Как на практике оценивать качество и точность работы агента.
- Как «докручивать» RAG-системы без потери качества.
- Как обеспечить устойчивость агента к сбоям внешних сервисов без падения всей системы, и про многое-многое другое.
Спикеры — практики с опытом в AI и Data Science в крупных IT-компаниях, таких как Яндекс, Сбер, Raft и Газпромбанк др.
Длительность: 6–12 недель в зависимости от тарифа.
👉 Занимайте место на главном агентском интенсиве по лучшей цене
Мы поговорили с десятками разработчиков, учли главные боли индустрии и запускаем полностью обновленный курс «ИИ-агенты 5.0». 🎉
Что вы узнаете?
- Как радикально оптимизировать траты на токены.
- Как на практике оценивать качество и точность работы агента.
- Как «докручивать» RAG-системы без потери качества.
- Как обеспечить устойчивость агента к сбоям внешних сервисов без падения всей системы, и про многое-многое другое.
Спикеры — практики с опытом в AI и Data Science в крупных IT-компаниях, таких как Яндекс, Сбер, Raft и Газпромбанк др.
Длительность: 6–12 недель в зависимости от тарифа.
👉 Занимайте место на главном агентском интенсиве по лучшей цене