tgoop.com »
United States »
Библиотека мобильного разработчика | Android, iOS, Swift, Retrofit, Moshi, Chuck » Telegram Web
⏳ Последние часы со скидкой!
Мы уже закрыли вебинар «ИИ-агенты: новая фаза развития AI», но запись всё ещё доступна.
А дальше остаётся только практика. На курсе «ИИ-агенты для DS-специалистов» ты научишься разрабатывать агентов, собирать RAG-системы и адаптировать LLM под бизнес.
⏰ Сегодня цена ещё 57.000 ₽ с промокодом datarascals.
Завтра — 69.000 ₽.
👉 Успеть оплатить до полуночи
Мы уже закрыли вебинар «ИИ-агенты: новая фаза развития AI», но запись всё ещё доступна.
А дальше остаётся только практика. На курсе «ИИ-агенты для DS-специалистов» ты научишься разрабатывать агентов, собирать RAG-системы и адаптировать LLM под бизнес.
⏰ Сегодня цена ещё 57.000 ₽ с промокодом datarascals.
Завтра — 69.000 ₽.
👉 Успеть оплатить до полуночи
❤1
Приготовили для вас дайджест по актуальному из мира iOS, Android и кроссплатформы.
С большими кодовыми базами Swift трудно работать — медленная сборка, нестабильное тестирование, сложные графы. Автор подробно разберёт, почему инструментарий Apple испытывает трудности при масштабировании и как команды могут преодолеть эти трудности без React Native или Bazel.
Тестирование на Swift долгие годы держалось на трех китах: XCTest, сторонние библиотеки и собственная смекалка. Но на WWDC 24 Apple представила новый, современный фреймворк — Swift Testing, который предлагает концептуально новый подход к тестированию.
Многие команды QA инженеров сталкиваются с выбором: остаться на привычном Java‑стеке или перейти на Kotlin. В этой статье мы рассмотрим некоторые ключевые различия, преимущества и практические аспекты перехода на Kotlin в контексте автоматизации тестирования.
Google сообщил, что вносит ряд изменений во внешний вид и функциональность Play Store, чтобы лучше персонализировать магазин для своих пользователей и повысить его вовлеченность.
Исправил ли React Native все свои проблемы? Кто его использует? А главное стал ли RN лучше, чем Flutter и Kotlin Multiplatform?
#свежак
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2❤1🔥1
Большинство iOS-разработчиков используют Xcode Debugger только для банальных
breakpoint
и просмотра переменных. Но в нём есть куда больше фишек, которые реально экономят время.🔹 Conditional breakpoints
Можно остановить выполнение не всегда, а только при выполнении условия.
Например, поставить брейкпоинт на метод и задать условие
userId == 42
. Тогда дебаггер не будет дёргать вас на каждом вызове.🔹 Exception Breakpoint
Очень полезно для поиска падений — Xcode сразу остановит выполнение в момент выброса исключения, до того как приложение упадёт. Настраивается через вкладку Breakpoints Navigator → + Exception Breakpoint.
🔹 Symbolic breakpoints
Позволяют ловить вызовы по имени метода или функции, даже если кода у вас нет (например, методы UIKit). Можно отследить момент, когда система вызывает
viewDidAppear:
или layoutSubviews
.🔹 Debug view hierarchy
Через кнопку "Debug View Hierarchy" можно визуально исследовать всю иерархию вьюх, включая невидимые и перекрытые элементы. Отличный способ поймать «невидимую кнопку», которая блокирует тап.
🔹 LLDB команды прямо в консоли
po object
— печатает объект с вызовом description
.expr
— позволяет выполнять произвольный Swift/ObjC код прямо во время остановки.watchpoint set variable foo
— можно следить за изменением конкретной переменной.🔹 Runtime Issues
Xcode сам подсказывает баги вроде «UI update вне main thread» или «дважды добавили constraint». Не игнорируйте эти подсказки — они часто спасают кучу времени.
Что из этого вы используете?
#буст #MiddlePath #iOS
Please open Telegram to view this post
VIEW IN TELEGRAM
❤3
👾 Шаблон архитектуры MVP
MVP (Model - View - Presenter) появился как альтернатива традиционному архитектурному паттерну MVC (Model - View - Controller). Используя MVC в качестве архитектуры приложения, разработчики сталкиваются со следующими трудностями:
🔘 Большая часть основной бизнес-логики находится в Controller. В течение жизненного цикла приложения этот файл становится всё больше и его становится сложно поддерживать.
🔘 Из-за тесной связки пользовательского интерфейса и механизмов доступа к данным, и Controller, и View оказываются в одной Activity или Fragment. Это создаёт проблемы при внесении изменений в функциональность приложения.
🔘 Становится трудно проводить модульное тестирование разных слоёв, так как большинство тестируемых частей зависят от компонентов Android SDK.
Паттерн MVP решает эти проблемы MVC и предоставляет простой способ структурировать код проекта. Причина, по которой MVP широко применяется, заключается в том, что он обеспечивает модульность, тестируемость и более чистую и удобную в сопровождении кодовую базу. Он состоит из следующих трёх компонентов:
🔹 Model: слой для хранения данных. Отвечает за обработку предметной логики (реальных бизнес-правил) и взаимодействие с базой данных и сетевым уровнем.
🔹 View: слой пользовательского интерфейса (UI). Он отвечает за визуализацию данных и отслеживает действия пользователя, чтобы уведомлять Presenter.
🔹 Presenter: получает данные из модели и применяет UI-логику, чтобы решить, что отображать. Он управляет состоянием View и выполняет действия в соответствии с уведомлениями о действиях пользователя.
🐸 Библиотека мобильного разработчика
#буст #SeniorView #Android
MVP (Model - View - Presenter) появился как альтернатива традиционному архитектурному паттерну MVC (Model - View - Controller). Используя MVC в качестве архитектуры приложения, разработчики сталкиваются со следующими трудностями:
Паттерн MVP решает эти проблемы MVC и предоставляет простой способ структурировать код проекта. Причина, по которой MVP широко применяется, заключается в том, что он обеспечивает модульность, тестируемость и более чистую и удобную в сопровождении кодовую базу. Он состоит из следующих трёх компонентов:
🔹 Model: слой для хранения данных. Отвечает за обработку предметной логики (реальных бизнес-правил) и взаимодействие с базой данных и сетевым уровнем.
🔹 View: слой пользовательского интерфейса (UI). Он отвечает за визуализацию данных и отслеживает действия пользователя, чтобы уведомлять Presenter.
🔹 Presenter: получает данные из модели и применяет UI-логику, чтобы решить, что отображать. Он управляет состоянием View и выполняет действия в соответствии с уведомлениями о действиях пользователя.
#буст #SeniorView #Android
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2🥱2😁1
On-premise, private cloud, и public cloud — это три основные модели развертывания IT-инфраструктуры, каждая из которых предлагает различные уровни контроля, управления и масштабируемости.
Выбор между этими моделями часто ставит в тупик. Как выбрать подходящую платформу?
Что предпочитаете вы? Голосуйте и пишите своё мнение в комментариях
❤️ — оn-premise
👍 — private cloud
🤝 — public cloud
#междусобойчик
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2👍2🤝1
iOS-разработчик — офис/удаленно (Москва, Зеленоград, Солнечногорск)
Android-разработчик — офис/удаленно/гибрид
Flutter-разработчик — до 200 000 ₽, офис/удаленно/гибрид
iOS-разработчик — от 200 000 ₽, офис/удаленно/гибрид
Flutter-разработчик — гибрид (4 дня офис/1 день удаленно) Москва
#свежак
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2
Обрезка — это удаление частей контента за пределами заданной формы. Представьте, что вы используете формочки для печенья: всё, что находится внутри формочки, остаётся, а всё, что снаружи, удаляется.
В Compose это делается с помощью
Modifier.clip
функции:Image(
painter = painterResource(R.drawable.avatar),
contentDescription = null,
modifier = Modifier
.size(72.dp)
.clip(CircleShape)
)
Здесь изображение обрезается по кругу, независимо от фактических границ растрового изображения.
Если встроенных фигур (
CircleShape
, RoundedCornerShape
и т. д.) недостаточно, вы можете создать собственную Shape
и нарисовать свой собственный контур. Например:class SquishedOvalShape : Shape {
override fun createOutline(
size: Size,
layoutDirection: LayoutDirection,
density: Density
): Outline {
return Outline.Generic(
Path().apply {
addOval(Rect(0f, size.height / 4f, size.width, size.height))
}
)
}
}
Примените его, как и любую другую форму:
Modifier.clip(SquishedOvalShape())
#PixelPerfect #MiddlePath #Android
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2
🤖 Курс «ИИ-агенты для DS-специалистов»
Последняя возможность в этом году освоить ИИ-агентов с Proglib— старт живых вебинаров на курсе уже 3 октября!
Уже 24 студента изучают 5 лонгридов подготовительного модуля, чтобы сформировать базу к старту живых вебинаров с Никитой Зелинским.
📚 Бонус: при оплате до 30 сентября вы получите дополнительный лонгрид для подготовки к курсу. Это отличный способ подойти к занятиям уже с базой.
🔥 А ещё после прохождения курса у вас будет достаточно знаний, чтобы участвовать в хакатоне с призовым фондом 1 125 000 ₽.
🔗 Записаться на курс и узнать подробности
Последняя возможность в этом году освоить ИИ-агентов с Proglib— старт живых вебинаров на курсе уже 3 октября!
Уже 24 студента изучают 5 лонгридов подготовительного модуля, чтобы сформировать базу к старту живых вебинаров с Никитой Зелинским.
📚 Бонус: при оплате до 30 сентября вы получите дополнительный лонгрид для подготовки к курсу. Это отличный способ подойти к занятиям уже с базой.
🔥 А ещё после прохождения курса у вас будет достаточно знаний, чтобы участвовать в хакатоне с призовым фондом 1 125 000 ₽.
🔗 Записаться на курс и узнать подробности
Please open Telegram to view this post
VIEW IN TELEGRAM
😁12
adb shell dumpsys package
– детальная информация об установленном приложенииПолучайте полную техническую информацию о любом установленном приложении на Android-устройстве – от версий и разрешений до активности процессов.
1. Информация о версиях:
adb shell dumpsys package com.yourapp.package | grep -E "versionName|versionCode"
2. Проверка разрешений:
adb shell dumpsys package com.yourapp.package | grep -A 20 "requested permissions"
3. Информация о активностях и сервисах:
adb shell dumpsys package com.yourapp.package | grep -E "Activity|Service|Receiver"
4. Детали установки APK:
adb shell dumpsys package com.yourapp.package | grep -A 10 "Installation"
1. Только основные данные:
adb shell dumpsys package com.yourapp.package | head -50
2. Поиск конкретной активности:
adb shell dumpsys package com.yourapp.package | grep -B 5 -A 5 "MainActivity"
3. Информация о подписантах:
adb shell dumpsys package com.yourapp.package | grep -A 15 "Signatures"
dumpsys
для отладки? Какие еще параметры dumpsys
вам полезны?#буст #JuniorKit #Android
Please open Telegram to view this post
VIEW IN TELEGRAM
❤3
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2
Из-за чего возможна некорректная работа в рантайме?
Anonymous Quiz
15%
Неправильная проверка типов в equals()
32%
Поле name не учитывается в equals()
33%
Отсутствует переопределение hashCode()
7%
Класс должен быть помечен как open
13%
Посмотреть ответ
👍4
При создании интерфейса важно проверить, как он реально выглядит. Часто это проверяют все участники процесса — от разработчиков до менеджеров. И для автоматизации и упрощения процесса визуального тестирования приложения есть специальный инструмент — golden‑тесты.
Это методология тестирования, в которой текущий UI сравнивается с предварительно сгенерированным «золотым» эталоном. Если вы уже слышали про скриншот‑тесты — это примерно то же самое, но есть нюансы.
flutter_test
.flutter_test
.#свежак #Flutter
Please open Telegram to view this post
VIEW IN TELEGRAM
❤3👍2
Объекты можно объявлять внутри класса, при этом нет каких-либо ограничений по их количеству. Но только один объект можно пометить ключевым словом companion object в рамках одного класса.
Синглтон-свойство
companion object
достигается за счет того, что он создается внутри класса в качестве статического поля. Он будет инициализирован при первом обращении к нему или при создании первого экземпляра класса, в котором он объявлен.Важно отметить, что
companion object
будет инициализирован первым, а затем уже будет создан экземпляр класса:class MyClass {
init {
// Выполняется всегда после инициализации companion object
}
companion object {
init {
// Выполняется всегда перед блоком init содержащего класса
}
}
}
val myClass = MyClass()
Такому объекту можно не указывать свое имя, и обращаться к методам и свойствам объекта через имя содержащего его класса без явного указания имени объекта.
class SomeClass {
companion object {
fun create()
}
}
val someClass = SomeClass.create()
Компилируется в
public static final class
на Java. Работает подобно ключевому слову static
в Java.#буст #MiddlePath #Kotlin
Please open Telegram to view this post
VIEW IN TELEGRAM
👏3
Топ-10 нейросетей для создания уникального контента. Обзор Arcy, ChatGPT, YandexGPT и других сервисов с ценами, функциями и советами по повышению оригинальности текстов.
#MadeInProglib
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2
👾 AI-агенты — настоящее, о котором все говорят!
Уже 3 октября стартует второй поток нашего нового курса «AI-агенты для DS-специалистов».
Это продвинутая программа для тех, кто хочет получить прикладной опыт с LLM и решать сложные задачи.
На обучении вы соберёте полноценные LLM-системы с учётом особенностей доменных областей, получите hands-on навыки RAG, Crew-AI / Autogen / LangGraph и агентов.
🎓 В рамках курса вы научитесь:
1️⃣ адаптировать LLM под разные предметные области и данные
2️⃣ собирать свою RAG-систему: от ретривера и реранкера до генератора и оценки качества
3️⃣ строить AI-агентов с нуля — на основе сценариев, функций и взаимодействия с внешней средой
Научитесь применять похожие подходы в разных доменных областях, получите фундамент для уверенного прохождения NLP system design интервью и перехода на следующий грейд.
🗓️ Завтра первый вебинар, успевайте залететь в ряды ИИ-первопроходцев 👈🏻
Уже 3 октября стартует второй поток нашего нового курса «AI-агенты для DS-специалистов».
Это продвинутая программа для тех, кто хочет получить прикладной опыт с LLM и решать сложные задачи.
На обучении вы соберёте полноценные LLM-системы с учётом особенностей доменных областей, получите hands-on навыки RAG, Crew-AI / Autogen / LangGraph и агентов.
🎓 В рамках курса вы научитесь:
1️⃣ адаптировать LLM под разные предметные области и данные
2️⃣ собирать свою RAG-систему: от ретривера и реранкера до генератора и оценки качества
3️⃣ строить AI-агентов с нуля — на основе сценариев, функций и взаимодействия с внешней средой
Научитесь применять похожие подходы в разных доменных областях, получите фундамент для уверенного прохождения NLP system design интервью и перехода на следующий грейд.
🗓️ Завтра первый вебинар, успевайте залететь в ряды ИИ-первопроходцев 👈🏻
Мобильное приложение кажется достаточно безопасным: оно исполняется и хранит данные независимо от других приложений. Бизнес-логика реализована на сервере, а перед публикацией на маркетплейсе приложений его тестируют.
Но эти меры не защитят от злоумышленника, который изучит логику работы приложения и использует полученные данные для атаки. Различные модификации Android, такие как root-права и кастомная прошивка, позволяют злоумышленнику быстрее и детальнее исследовать приложение.
Таисия рассказала об опыте решения проблемы по обнаружению эмуляторов, устройств с root-правами или кастомными прошивками. А еще познакомила нас с набором инструментов Frida, позволяющих внедрять код в другие приложения буквально на лету. Рассмотрела возможности и принцип работы этого тулкита и описала метод по его обнаружению, который можно использовать в проекте.
Доклад будет полезен тем, кто хочет максимально защитить свое мобильное приложение от различных угроз.
#свежак
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2❤1😁1
Заметили, что ваше приложение долго запускается? Этот промпт поможет найти и устранить узкие места в процессе старта.
Analyze and optimize mobile app startup time that includes:
— Measure cold/warm/hot start durations
— Identify main thread blockers during launch
— Optimize application class initialization
— Reduce dynamic feature module loading time
— Implement lazy loading for heavy components
— Optimize dependency injection setup
— Improve splash screen and initial UI rendering
— Добавьте
Implement asynchronous resource loading
для параллельной загрузки ресурсов— Добавьте
Add startup tracing and performance monitoring
для постоянного отслеживания— Добавьте
Optimize pre-dexing and multidex configuration
для больших приложений#буст #MiddlePath
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3
📅 Когда: 17 октября 2025
📍 Где: Москва
🌐 Официальный сайт: crossconf.ru
CrossConf — крупнейшая конференция в России и СНГ, посвящённая кроссплатформенным технологиям.
В фокусе:
#МитапПоинт
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
Please open Telegram to view this post
VIEW IN TELEGRAM
😁8