Telegram Web
Forwarded from Яндекс
✔️ Мы выпустили инструмент для Android-разработчиков — библиотека Demeter. Она помогает быстро найти в приложении места, которые замедляют его работу.

↗️ Читайте о том, как она работает и чем отличается от других инструментов для профилирования. И пробуйте библиотеку, которой пользуются в разных командах Яндекса.

Подписывайтесь 〰️ @yandex
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Как я создал персональную систему компонентов для iOS-приложений

Создание множества iOS-приложений привело меня к интересному наблюдению. Несмотря на схожую функциональность между проектами, каждый раз я заново создавал одни и те же элементы интерфейса: кнопки, карточки, списки, модальные окна и прочее. Это приводило к дублированию кода и замедляло разработку. Поэтому я решил создать персональную библиотеку компонентов, которую можно использовать в любом проекте.

Зачем мне понадобилась такая система?

Причины были простыми:
* Повторное использование кода
* Быстрый запуск MVP
* Единый визуальный стиль
* Простота поддержки

Система позволила мне сократить время разработки новых приложений и ускорить прототипирование.


Как я начал
Всё началось с анализа моих предыдущих проектов. Я выписал повторяющиеся элементы и разбил их по категориям:

* Кнопки
* Ячейки таблиц
* Навигационные элементы
* Модальные окна
* Формы

Затем я создал отдельный фреймворк на Swift — MireComponents, который можно подключать к любому проекту через Swift Package Manager.


Архитектура
Я структурировал компоненты следующим образом:

* UIComponents/: визуальные элементы с минимальной логикой
* ViewModels/: логика взаимодействия и состояния
* Themes/: цвета, шрифты и отступы
* Helpers/: утилиты и расширения

Каждый компонент строится по принципу модульности и легко настраивается под нужды проекта.


Пример: Кнопка


public final class MCButton: UIButton {
public init(title: String, style: MCButtonStyle) {
super.init(frame: .zero)
setup(title: title, style: style)
}

private func setup(title: String, style: MCButtonStyle) {
setTitle(title, for: .normal)
backgroundColor = style.backgroundColor
layer.cornerRadius = style.cornerRadius
// Прочие стили...
}
}


Таким образом, я могу создать кнопку всего одной строкой:


let button = MCButton(title: "Продолжить", style: .primary)


Использование
В каждом новом проекте я просто добавляю зависимость на MireComponents и начинаю сборку интерфейса. Это упрощает работу и сохраняет единообразие.


Создание собственной системы компонентов — отличное вложение времени, особенно если вы разрабатываете несколько приложений с нуля. Это снижает количество багов, ускоряет разработку и делает код чище.

https://medium.com/@mireabot/how-i-created-a-personal-component-design-system-for-ios-apps-d3f9be6f426c

#ios

👉 @developer_mobila
👍2
Изучаем основы Android XR

В этом лабораторной работе вы улучшите базовое одноэкранное приложение, чтобы обеспечить захватывающий пользовательский опыт на Android XR.

Кодлаб от Google по разработке для Android XR. В этом лабораторной работе вы улучшите базовое одноэкранное приложение, чтобы обеспечить захватывающий пользовательский опыт на Android XR.

Что вы узнаете:
🔹Уникальные пользовательские возможности, которые дает форм-фактор XR.
🔹Основы адаптации приложений к работе на гарнитуре Android XR с помощью композабл элементов, предоставляемых библиотекой Jetpack Compose XR.
🔹Как использовать элементы пользовательского интерфейса, предоставляемые библиотекой Compose XR.
🔹Где можно узнать больше о создании приложений для Android XR.

https://developer.android.com/codelabs/xr-fundamentals-part-1#0

#Android

👉 @developer_mobila
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3
Управляем зависимостями и lifecycle во Flutter: yx_scope без генерации кода 📢

13 мая в 20:00 МСК в OTUS пройдёт открытый вебинар «DI и жизненный цикл модулей во Flutter на yx_scope».

Что разберём
— yx_scope vs Kiwi, Injector, Auto Injector, Scope — когда и почему выигрывает первое решение
— Безопасное DI на этапе компиляции — без глобальных синглтонов
— Гибкий lifecycle — как избежать утечек памяти при навигации
— Интеграция yx_scope в многомодульный интернет‑магазин (live‑код)

Спикер — Дмитрий Золотов, Flutter + Kotlin Developer в Yandex. 23 года опыта: full‑stack (Flutter/Python/Kotlin/Go/C++), DevOps, системное администрирование. Контрибьютор ReOpenLDAP, автор серий вебинаров по Kubernetes и кроссплатформенной разработке, приглашённый преподаватель в ИТМО.

Кому будет полезно
— Flutter‑инженерам, которые ищут чистую архитектуру без лишнего codegen
— Разработчикам, поддерживающим проекты с десятками экранов и активной навигацией
— Тем, кто хочет ускорить релизы, сохраняя контроль над памятью и зависимостями

После вебинара вы сможете
— Внедрять зависимости без шаблонов и ловить ошибки до запуска
— Управлять жизненным циклом компонентов так, чтобы память оставалась под контролем
— Масштабировать фичи, не переписывая DI‑слой

Участие бесплатное. Мест ограничено — бронируйте прямо сейчас.

Регистрируйтесь

Реклама. ООО «Отус онлайн‑образование», ОГРН 1177746618576
👍5
Поддержка webextensions под Андроид

Сегодня я хочу представить очередную свою работу, точнее рабочий черновик. Да, я в курсе — дураку полработы не показывают, но так и на хабре то не дураки сидят. Итак, сегодня я расскажу как перенес поддержку webextensions в chromium под Андроид, что работает а что не работает, как пользоваться тем что работает и когда будет работать то что не работает.

https://habr.com/ru/articles/882640/

#Android

👉 @developer_mobila
👍1😁1
🚀 Подборка Telegram каналов для программистов

Системное администрирование, DevOps 📌

https://www.tgoop.com/bash_srv Bash Советы
https://www.tgoop.com/win_sysadmin Системный Администратор Windows
https://www.tgoop.com/sysadmin_girl Девочка Сисадмин
https://www.tgoop.com/srv_admin_linux Админские угодья
https://www.tgoop.com/linux_srv Типичный Сисадмин
https://www.tgoop.com/devopslib Библиотека девопса | DevOps, SRE, Sysadmin
https://www.tgoop.com/linux_odmin Linux: Системный администратор
https://www.tgoop.com/devops_star DevOps Star (Звезда Девопса)
https://www.tgoop.com/i_linux Системный администратор
https://www.tgoop.com/linuxchmod Linux
https://www.tgoop.com/sys_adminos Системный Администратор
https://www.tgoop.com/tipsysdmin Типичный Сисадмин (фото железа, было/стало)
https://www.tgoop.com/sysadminof Книги для админов, полезные материалы
https://www.tgoop.com/i_odmin Все для системного администратора
https://www.tgoop.com/i_odmin_book Библиотека Системного Администратора
https://www.tgoop.com/i_odmin_chat Чат системных администраторов
https://www.tgoop.com/i_DevOps DevOps: Пишем о Docker, Kubernetes и др.
https://www.tgoop.com/sysadminoff Новости Линукс Linux

1C разработка 📌
https://www.tgoop.com/odin1C_rus Cтатьи, курсы, советы, шаблоны кода 1С
https://www.tgoop.com/DevLab1C 1С:Предприятие 8
https://www.tgoop.com/razrab_1C 1C Разработчик
https://www.tgoop.com/buh1C_prog 1C Программист | Бухгалтерия и Учёт
https://www.tgoop.com/rabota1C_rus Вакансии для программистов 1С

Программирование C++📌
https://www.tgoop.com/cpp_lib Библиотека C/C++ разработчика
https://www.tgoop.com/cpp_knigi Книги для программистов C/C++
https://www.tgoop.com/cpp_geek Учим C/C++ на примерах

Программирование Python 📌
https://www.tgoop.com/pythonofff Python академия.
https://www.tgoop.com/BookPython Библиотека Python разработчика
https://www.tgoop.com/python_real Python подборки на русском и английском
https://www.tgoop.com/python_360 Книги по Python

Java разработка 📌
https://www.tgoop.com/BookJava Библиотека Java разработчика
https://www.tgoop.com/java_360 Книги по Java Rus
https://www.tgoop.com/java_geek Учим Java на примерах

GitHub Сообщество 📌
https://www.tgoop.com/Githublib Интересное из GitHub

Базы данных (Data Base) 📌
https://www.tgoop.com/database_info Все про базы данных

Мобильная разработка: iOS, Android 📌
https://www.tgoop.com/developer_mobila Мобильная разработка
https://www.tgoop.com/kotlin_lib Подборки полезного материала по Kotlin

Фронтенд разработка 📌
https://www.tgoop.com/frontend_1 Подборки для frontend разработчиков
https://www.tgoop.com/frontend_sovet Frontend советы, примеры и практика!
https://www.tgoop.com/React_lib Подборки по React js и все что с ним связано

Разработка игр 📌
https://www.tgoop.com/game_devv Все о разработке игр

Библиотеки 📌
https://www.tgoop.com/book_for_dev Книги для программистов Rus
https://www.tgoop.com/programmist_of Книги по программированию
https://www.tgoop.com/proglb Библиотека программиста
https://www.tgoop.com/bfbook Книги для программистов

БигДата, машинное обучение 📌
https://www.tgoop.com/bigdata_1 Big Data, Machine Learning

Программирование 📌
https://www.tgoop.com/bookflow Лекции, видеоуроки, доклады с IT конференций
https://www.tgoop.com/rust_lib Полезный контент по программированию на Rust
https://www.tgoop.com/golang_lib Библиотека Go (Golang) разработчика
https://www.tgoop.com/itmozg Программисты, дизайнеры, новости из мира IT
https://www.tgoop.com/php_lib Библиотека PHP программиста 👨🏼‍💻👩‍💻
https://www.tgoop.com/nodejs_lib Подборки по Node js и все что с ним связано
https://www.tgoop.com/ruby_lib Библиотека Ruby программиста
https://www.tgoop.com/lifeproger Жизнь программиста. Авторский канал.

QA, тестирование 📌
https://www.tgoop.com/testlab_qa Библиотека тестировщика

Шутки программистов 📌
https://www.tgoop.com/itumor Шутки программистов

Защита, взлом, безопасность 📌
https://www.tgoop.com/thehaking Канал о кибербезопасности
https://www.tgoop.com/xakep_2 Хакер Free

Книги, статьи для дизайнеров 📌
https://www.tgoop.com/ux_web Статьи, книги для дизайнеров

Математика 📌
https://www.tgoop.com/Pomatematike Канал по математике
https://www.tgoop.com/phis_mat Обучающие видео, книги по Физике и Математике
https://www.tgoop.com/matgeoru Математика | Геометрия | Логика

Excel лайфхак📌
https://www.tgoop.com/Excel_lifehack

https://www.tgoop.com/mir_teh Мир технологий (Technology World)

Вакансии 📌
https://www.tgoop.com/sysadmin_rabota Системный Администратор
https://www.tgoop.com/progjob Вакансии в IT
👍2
Дивный мир мобильной разработки и трудности Open Source

Когда я впервые решил создать свой open-source проект, мне казалось, что главное – это хорошая идея и рабочий код. Я взялся за разработку библиотеки для сетевых клиентов и UI-компонентов, вложил в неё два года работы и, наконец, выложил на GitHub. Но вместо успеха меня ждал холодный душ – библиотека получила всего 10 звёздочек.
Тогда я осознал ключевую проблему open-source: одна только идея не работает. Если проект плохо оформлен – его никто не найдёт. Документация и описание –  не менее важны, чем сам код. В следующем проекте я учёл ошибки. Когда правильно оформил проект, он начал находить аудиторию, получать звёзды и фидбек от разработчиков.

https://habr.com/ru/companies/oleg-bunin/articles/906952/

#ios

👉 @developer_mobila
👍1
Автообновление через GitHub releases с помощью Hilt и Retrofit в Android

Вдохновившись обновлением Telegram без маркета приложений я захотел сделать на одном из своих пет-проектов что-то подобное. Первой мыслью было - найти этот код в исходниках Telegram, но т.к. скорее всего у них обновление скачивается с серверов, я решил не играть в лотерею и не тратить время на раскопки в Java-коде, потому что я хотел сделать так, чтобы можно было скачивать с GitHub-releases.

https://habr.com/ru/articles/839008/

#Android

👉 @developer_mobila
👍4
Осталось 2 дня до вебинара! Успейте зарегистрироваться ⌛️

Управляем зависимостями и lifecycle во Flutter: yx_scope без генерации кода

🗓 13 мая, 20:00 МСК — открытый вебинар OTUS

Коротко о программе
— yx_scope vs Kiwi / Injector / Auto Injector / Scope — покажем, где выигрывает yx_scope
— Безопасное DI на этапе компиляции, никаких глобальных синглтонов
— Гибкий lifecycle: как избежать утечек памяти при навигации
— Live-код: интегрируем yx_scope в многомодульный интернет-магазин

Спикер — Дмитрий Золотов, Flutter + Kotlin Developer в Yandex, 23 года опыта full-stack и DevOps.

Кому зайдёт
— Flutter-инженерам, ищущим чистую архитектуру без лишнего codegen
— Разработчикам, поддерживающим большие проекты с активной навигацией
— Всем, кто хочет ускорить релизы и держать память под контролем

После вебинара вы сможете
— Внедрять зависимости без шаблонов и ловить ошибки до запуска
— Управлять жизненным циклом компонентов без утечек
— Масштабировать фичи без переписывания DI-слоя

Участие бесплатное, мест всё меньше.

Регистрируйтесь сейчас

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
Автоматизация сборки и релиза Android-приложений через GitHub Actions

Полный разбор GitHub Actions Workflow для сборки, подписи и релиза Android-приложений.

В продолжение моей статье про обновление Android-приложений через Github releases, я решил автоматизировать еще одну часть этого рутинного процесса, а именно, сборку и релиз. При написании статьи руководствовался этой статьей, но немного поменял подход, а именно: не включаю в данный процесс файлы проекта, потому что, я думаю, это является более гибким подходом, позволяющим переносить workflow между проектами без изменений файлов самого проекта.

https://habr.com/ru/articles/881196/

#Android

👉 @developer_mobila
Media is too big
VIEW IN TELEGRAM
Опасности в Android: уязвимости и защитные меры

Увлекательное путешествие в мир безопасности Android! Разобрали самые интересные и коварные уязвимости, такие как Path Traversal, SQL-инъекции и Tapjacking. Но основное внимание уделили WebView: неправильной валидации данных, уязвимостям в библиотеке для парсинга URL, JavaScript Interface и загрузке диплинков.

Безопасность — это не только важно, но и захватывающе! Она необходима в каждом приложении, чтобы обеспечить уверенность пользователей в безопасности их данных. Не стоит перекладывать эту ответственность на безопасников.

В докладе нет скучных терминов и монотонных объяснений. Вместо этого — захватывающая история поиска уязвимостей и их устранения, основанная на личном опыте при разработке приложений.

Будет полезно всем тем, кто интересуется безопасностью Android-приложений.

источник

#Android

👉 @developer_mobila
👍1
Интеллект внутри: делаем умные Flutter‑приложения с ML и AI 🤖

20 мая в 20:00 МСК OTUS проведёт открытый вебинар для мобильных разработчиков, которые хотят вывести свои приложения на новый уровень: жесты, эмоции, LLM‑подсказки — всё прямо на устройстве.

Что будет:
— TensorFlow Lite и ONNXRuntime — запускаем модели офлайн;
— MediaPipe — работаем с камерой, жестами и лицами;
— Интеграция OpenAI / Google AI / Hugging Face — подключаем LLM за 15 минут;
— Живой код: интернет‑магазин, в который добавляем ML‑функции шаг за шагом.

Спикер: Дмитрий Золотов, Flutter + Kotlin Developer в Yandex, 23 года опыта, контрибьютор ReOpenLDAP, приглашённый преподаватель ИТМО.

Участие бесплатное, места ограничены. Забронируйте прямо сейчас и добавьте AI‑магию в своё портфолио.

Зарегистрироваться

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
Media is too big
VIEW IN TELEGRAM
Apple Invites App OnBoarding UI - Infinite ScrollView - Text Renderer - Animations - SwiftUI

источник

#ios

👉 @developer_mobila
2👍2
Очумелые ручки: как я превратил старый смартфон в игровую консоль с возможностью звонить

Осторожно: эта статья точно будет хабратортной, ведь в ней мы смоделируем, спроектируем и запрограммируем своё видение N-Gage 2! Я очень старался сделать статью интересной даже для тех читателей, кто не разбирается в теме 3D-печати и программирования микроконтроллеров :-)

Я очень люблю ретро-игры и игровые консоли. Иногда я люблю позалипать в какую-нибудь классику с NES, Sega Mega Drive или, например, PSP. Однако особое место в моём сердечке занимает игровой телефон Nokia N-Gage, который, к сожалению, не получил продолжения, как и его более современный собрат — Sony Ericsson Xperia Play. Недавно я пересматривал свою коллекцию девайсов и обнаружил на полочке Galaxy S4 Mini. И тут я подумал: а что если...

https://habr.com/ru/companies/timeweb/articles/883068/

#Android

👉 @developer_mobila
🎮 Как заработать на играх?
Игры уже давно не просто развлечение — это перспективная индустрия, где геймдизайнеры задают тренды и создают новые миры.

Хотите узнать, как из идеи рождается хит, который покоряет игроков?
Что делает игру по-настоящему увлекательной?
Можно ли войти в геймдев без опыта? (Спойлер — можно!)

Если вам всегда было интересно заглянуть за кулисы геймдева, то есть отличная возможность погрузиться в эту сферу и профессию бесплатно — на мини-курсе Skillbox по геймдизайну: https://epic.st/5t1_V?erid=2VtzqwmJGaG


Вы разберётесь:
✔️ Как создаются игровые механики и уровни
✔️ Как придумать игру, в которую хочется играть часами
✔️ Какие навыки нужны геймдизайнеру и где их применить
✔️ Сколько зарабатывают специалисты и как начать карьеру в геймдеве

💡 Обучение будет на реальном кейсе: разберёте лучшие решения из игры «Возмездие: Тени Антары». Смотрите видео в удобное время, выполняйте практические задания и закрепляйте полученные навыки.

🎁 Бонус: получите персональную консультацию по карьере и тестовый доступ к профессии — попробуете себя в реальной среде.
Переходим на SwiftUI

Приглашённый эксперт — Максим Гришутин, iOS Team Lead приложения Ozon для продавцов.

В этом эпизоде расскажем про модный и молодёжный SwiftUI. Не забудем обсудить его связку с Combine и async/await. Как же они помогают создавать более эффективные и инновационные проекты?

Приглашённый эксперт — Максим Гришутин, iOS Team Lead приложения Ozon для продавцов. Он поделится своим опытом внедрения SwiftUI с самой первой версии. С какими трудностями столкнулись, как их решали и к чему в итоге пришли. Зададим все самые острые вопросы.

Вспомним зарождение декларативной вёрстки на iOS — библотеку Carbon. И плавно перейдём к SwiftUI от первой до последней версии, которые так активно продвигает Apple уже несколько лет.

А также узнаем, что делать, когда Stack Overflow пуст, а на твои вопросы отвечают только на китайском.

https://www.youtube.com/watch?v=7SnqJ7H8Cxs

#ios

👉 @developer_mobila
👍1
Остерегайтесь READ_MEDIA_IMAGES

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

Если вы являетесь Android-разработчиком, то, возможно, знаете о недавнем изменении политики Google Play в отношении разрешения READ_MEDIA_IMAGES. К сожалению, мы не знали. В этом посте поделимся опытом того, как добавление этого разрешения в манифест заблокировало нам возможность выпустить приложение в альфа-канал, и почему вы должны быть осторожны, прежде чем добавлять это разрешение в свой проект.

https://medium.com/@astamato/beware-of-read-media-images-not-just-a-feeling-of-rejection-aa1ddacaff5d

#ios

👉 @developer_mobila
Через два дня — живой разбор AI в Flutter

20 мая, 20:00 МСК. Бесплатный вебинар «Интеллект внутри: делаем умные Flutter‑приложения с ML и AI».

Почему стоит подключиться:
— увидите, как запустить нейросети офлайн без серверных счетов;
— разберётесь, чем MediaPipe лучше готовых SDK для жестов;
— научитесь подключать LLM‑подсказки к любому экрану приложения;
— получите скидку на курс «Flutter Mobile Developer».

Код пишем в прямом эфире вместе с Дмитрием Золотовым (Yandex).

Не откладывайте — регистрация закроется при наборе группы.

Забронировать место

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
Руководство по использованию unsafe в Swift

В этой статье мы рассматрим различные подходы для работы с небезопасными операциями в языке программирования Swift. Swift предоставляет несколько способов для работы с указателями и низкоуровневой памятью:

🔹Прямое использование указателей без обёрток,

🔹Применение встроенных обёрток (например, UnsafePointer, UnsafeMutablePointer, UnsafeRawPointer, с их вариациями)

🔹Дополнительные механизмы вроде withUnsafePointer, withUnsafeMutablePointer, Unmanaged и OpaquePointer.

https://habr.com/ru/articles/887914/

#ios

👉 @developer_mobila
👍1
2025/10/21 23:24:23
Back to Top
HTML Embed Code: