SAST приложений под Android: делаем код безопаснее
Статическое тестирование безопасности приложений (SAST) используется для обеспечения безопасности программного обеспечения путём анализа исходного кода программы с целью выявления источников уязвимостей. Мы будем говорить об инструментах для анализа исходного кода для Android. Здесь мы сразу договоримся, что рассматриваться будут отдельные утилиты, не привязанные к какой‑либо IDE и легко интегрируемые в конвейер CI/CD.
Статья: https://habr.com/ru/companies/otus/articles/881110/
Платформа: Android
Статическое тестирование безопасности приложений (SAST) используется для обеспечения безопасности программного обеспечения путём анализа исходного кода программы с целью выявления источников уязвимостей. Мы будем говорить об инструментах для анализа исходного кода для Android. Здесь мы сразу договоримся, что рассматриваться будут отдельные утилиты, не привязанные к какой‑либо IDE и легко интегрируемые в конвейер CI/CD.
Статья: https://habr.com/ru/companies/otus/articles/881110/
Платформа: Android
❤1
Fluent - это ORM (Object-Relational Mapper) фреймворк для Swift. Он использует преимущества сильной системы типов Swift, чтобы обеспечить простой в использовании интерфейс для вашей базы данных. Использование Fluent сосредоточено на создании типов моделей, которые представляют структуры данных в вашей базе данных. Эти модели затем используются для выполнения операций создания, чтения, обновления и удаления данных вместо написания сырых запросов, что позволяет писать запросы, безопасные для типов и не зависящие от базы данных.
Пример:
Fluent на GitHub: https://github.com/vapor/fluent-kit
Платформа: iOS
⭐️: 223
Пример:
let planets = try await Planet.query(on: database)
.filter(\.$type == .gasGiant)
.sort(\.$name)
.with(\.$star)
.all()
Fluent на GitHub: https://github.com/vapor/fluent-kit
Платформа: iOS
⭐️: 223
👍1
Что такое перерисовка и как с ней бороться
Рендеринг, то есть отрисовка пользовательского интерфейса на экране мобильного устройства, влияет на восприятие качества каждым пользователем приложения. Глаза требуют плавности при выводе изображений и текста на экран. Поэтому лучше избегать медленной отзывчивости и задержек при отрисовке на экране.
В этой статье я расскажу, что такое перерисовки (Overdraw), как они влияют на производительность рендеринга и как можно их исправить. Вперед!
Статья: https://apptractor.ru/info/articles/chto-takoe-pererisovka-i-kak-s-ney-borotsya.html
Платформа: Android
Рендеринг, то есть отрисовка пользовательского интерфейса на экране мобильного устройства, влияет на восприятие качества каждым пользователем приложения. Глаза требуют плавности при выводе изображений и текста на экран. Поэтому лучше избегать медленной отзывчивости и задержек при отрисовке на экране.
В этой статье я расскажу, что такое перерисовки (Overdraw), как они влияют на производительность рендеринга и как можно их исправить. Вперед!
Статья: https://apptractor.ru/info/articles/chto-takoe-pererisovka-i-kak-s-ney-borotsya.html
Платформа: Android
❤1
This media is not supported in your browser
VIEW IN TELEGRAM
Основы SwiftLint: упорядочивание качества кода Swift
В статье автор подробно рассказывает о том, как SwiftLint помогает улучшить качество кода в Swift-проектах. Инструмент автоматически проверяет стиль кода, выявляет потенциальные ошибки и обеспечивает соблюдение стандартов кодирования, что способствует поддержанию чистоты и согласованности кода.
Интеграция SwiftLint в проект позволяет разработчикам автоматизировать процесс проверки кода, снижая количество ошибок и улучшая читаемость. Использование такого инструмента способствует повышению эффективности командной работы и облегчает сопровождение проектов в долгосрочной перспективе.
Статья: https://medium.com/icommunity/swiftlint-101-streamline-your-swift-code-quality-681745bbe38d
Платформа: iOS
В статье автор подробно рассказывает о том, как SwiftLint помогает улучшить качество кода в Swift-проектах. Инструмент автоматически проверяет стиль кода, выявляет потенциальные ошибки и обеспечивает соблюдение стандартов кодирования, что способствует поддержанию чистоты и согласованности кода.
Интеграция SwiftLint в проект позволяет разработчикам автоматизировать процесс проверки кода, снижая количество ошибок и улучшая читаемость. Использование такого инструмента способствует повышению эффективности командной работы и облегчает сопровождение проектов в долгосрочной перспективе.
Статья: https://medium.com/icommunity/swiftlint-101-streamline-your-swift-code-quality-681745bbe38d
Платформа: iOS
👍1
This media is not supported in your browser
VIEW IN TELEGRAM
KMP Liquid Slider - “жидкий” слайдер на Jetpack Compose с широкими возможностями настройки. Оригинал, судя по всему, можно найти тут.
KMP Liquid Slider на GitHub: https://github.com/mejdi14/KMP-Liquid-Slider
Платформа: Android
⭐️: 10
KMP Liquid Slider на GitHub: https://github.com/mejdi14/KMP-Liquid-Slider
Платформа: Android
⭐️: 10
❤2
Как мы сокращали размер JSONʼа в SDUI
Шаблонизация существенно уменьшила объём JSON при работе с однотипными элементами. Результат для нашего примера:
• Сокращение на 5 элементах составило около 45%.
• При 100 элементах — примерно 74% (учитывая количество символов, а не строк).
Но помимо уменьшения объёма, JSON стал более читабельным благодаря четкому разделению данных и статичной разметки. Делаю вывод, что усилия не были напрасны.
Статья: https://habr.com/ru/companies/alfa/articles/882054/
Платформа: разработка
Шаблонизация существенно уменьшила объём JSON при работе с однотипными элементами. Результат для нашего примера:
• Сокращение на 5 элементах составило около 45%.
• При 100 элементах — примерно 74% (учитывая количество символов, а не строк).
Но помимо уменьшения объёма, JSON стал более читабельным благодаря четкому разделению данных и статичной разметки. Делаю вывод, что усилия не были напрасны.
Статья: https://habr.com/ru/companies/alfa/articles/882054/
Платформа: разработка
👎2
Секреты мобильной разработки в логистике: разгоняем MVVM до максимума
Сегодня я хочу поделиться, как с помощью грамотно подобранной архитектуры нам удалось упростить, стандартизировать и даже ускорить разработку мобильных приложений логистики, которых у нас очень много: приложение для курьеров, приложение для пунктов выдачи заказов, приложения для сортировочных центров и так далее.
Статья: https://habr.com/ru/companies/yandex/articles/883202/
Платформа: разработка
Сегодня я хочу поделиться, как с помощью грамотно подобранной архитектуры нам удалось упростить, стандартизировать и даже ускорить разработку мобильных приложений логистики, которых у нас очень много: приложение для курьеров, приложение для пунктов выдачи заказов, приложения для сортировочных центров и так далее.
Статья: https://habr.com/ru/companies/yandex/articles/883202/
Платформа: разработка
Под капотом у пользовательского интерфейса SwiftUI — Детальный разбор: Часть 1 — UIKit
Главная цель этой серии статей — предоставить вам полный обзор того, как UIKit и SwiftUI устроены под капотом. Сначала мы обсудим UIKit, а в следующей части перейдем к SwiftUI.
Статья: https://habr.com/ru/companies/otus/articles/883522/
Платформа: iOS
Главная цель этой серии статей — предоставить вам полный обзор того, как UIKit и SwiftUI устроены под капотом. Сначала мы обсудим UIKit, а в следующей части перейдем к SwiftUI.
Статья: https://habr.com/ru/companies/otus/articles/883522/
Платформа: iOS
This media is not supported in your browser
VIEW IN TELEGRAM
Осваиваем скроллинг в SwiftUI: реализация кастомной прокрутки
Настроив ScrollTargetBehavior, мы не только добились горизонтального пейджинга, но и можем расширить его для поддержки вертикальной прокрутки или более сложной логики прокрутки. Например, комбинируя скорость прокрутки (velocity), можно реализовать многостраничную прокрутку при быстром пролистывании и одностраничную при легком пролистывании.
Кроме того, scrollTargetBehavior может служить инструментом для динамической загрузки данных. По сравнению с использованием onAppear в ленивых представлениях, оно позволяет нам запускать загрузку данных раньше во время прокрутки, тем самым улучшая проблему скачка прокрутки, вызванную динамической загрузкой данных в ленивых контейнерах SwiftUI.
Хотя onScrollGeometryChange позволяет добиться аналогичной функциональности, он доступен только в iOS 18 и более поздних версиях, в то время как ScrollTargetBehavior поддерживается с iOS 17, что делает его более широко применимым.
Статья: https://apptractor.ru/info/articles/osvaivaem-skrolling-v-swiftui.html
Платформа: iOS
Настроив ScrollTargetBehavior, мы не только добились горизонтального пейджинга, но и можем расширить его для поддержки вертикальной прокрутки или более сложной логики прокрутки. Например, комбинируя скорость прокрутки (velocity), можно реализовать многостраничную прокрутку при быстром пролистывании и одностраничную при легком пролистывании.
Кроме того, scrollTargetBehavior может служить инструментом для динамической загрузки данных. По сравнению с использованием onAppear в ленивых представлениях, оно позволяет нам запускать загрузку данных раньше во время прокрутки, тем самым улучшая проблему скачка прокрутки, вызванную динамической загрузкой данных в ленивых контейнерах SwiftUI.
Хотя onScrollGeometryChange позволяет добиться аналогичной функциональности, он доступен только в iOS 18 и более поздних версиях, в то время как ScrollTargetBehavior поддерживается с iOS 17, что делает его более широко применимым.
Статья: https://apptractor.ru/info/articles/osvaivaem-skrolling-v-swiftui.html
Платформа: iOS
Monal - кроссплатформенный современный открытый XMPP-клиент для iOS и macOS. Среди фич - отсутствие рекламы и отслеживания личной информации, зашифрованные чаты, работа с корпоративными XMPP-серверами, требующими VPN, поддержка групповых чатов, аудио/видео звонков.
Monal на GitHub: https://github.com/monal-im/Monal
Платформа: iOS
⭐️: 540
Monal на GitHub: https://github.com/monal-im/Monal
Платформа: iOS
⭐️: 540
Анализ Android-фич на доступность и внедрение accessibility в процесс разработки
Совместная работа с командой дизайнеров помогла сделать функциональность доступнее. Следующим шагом было отдать на проверку наши фичи команде цифровой доступности, которая также оценила проделанный труд.
Эта работа была очень продуктивной, каждый пытался встать на сторону инклюзивности. Оказалось, это не так уж трудно, стоит только проработать детали на этапе дизайна фичи. Буду рада, если эта статья вдохновит и вас внедрять доступность в разработку приложений.
Статья: https://habr.com/ru/companies/vk/articles/881908/
Платформа: Android
Совместная работа с командой дизайнеров помогла сделать функциональность доступнее. Следующим шагом было отдать на проверку наши фичи команде цифровой доступности, которая также оценила проделанный труд.
Эта работа была очень продуктивной, каждый пытался встать на сторону инклюзивности. Оказалось, это не так уж трудно, стоит только проработать детали на этапе дизайна фичи. Буду рада, если эта статья вдохновит и вас внедрять доступность в разработку приложений.
Статья: https://habr.com/ru/companies/vk/articles/881908/
Платформа: Android
Сколько потоков использует ваш сетевой клиент?
Одна из популярных причин использования корутин в Kotlin — ограничение количества потоков, используемых в приложении. Каждый поток — это затраты, особенно на память, но также и на внимание процессора. Мы вводим корутины, чтобы ограничить количество потоков, используемых в наших приложениях. В конце концов, с помощью корутинов мы можем добиться параллелизма без лишних потоков. Однако наши усилия часто срываются из-за используемых библиотек. В этой статье я расскажу, сколько потоков используют самые популярные сетевые клиенты, и как вы можете проверить это сами.
Статья: https://apptractor.ru/info/articles/skolko-potokov-ispolzuet-vash-setevoy-klient.html
Платформа: Android
Одна из популярных причин использования корутин в Kotlin — ограничение количества потоков, используемых в приложении. Каждый поток — это затраты, особенно на память, но также и на внимание процессора. Мы вводим корутины, чтобы ограничить количество потоков, используемых в наших приложениях. В конце концов, с помощью корутинов мы можем добиться параллелизма без лишних потоков. Однако наши усилия часто срываются из-за используемых библиотек. В этой статье я расскажу, сколько потоков используют самые популярные сетевые клиенты, и как вы можете проверить это сами.
Статья: https://apptractor.ru/info/articles/skolko-potokov-ispolzuet-vash-setevoy-klient.html
Платформа: Android
🔥1
SongSync - простое приложение для Android, позволяющее загружать тексты песен (файлы .lrc) для вашей музыкальной библиотеки. Поиск текстов, загрузка текстов песен для всей музыкальной библиотеки одним тапом,
использует различных провайдеров.
SongSync на GitHub: https://github.com/Lambada10/SongSync
Платформа: Android
⭐️: 685
использует различных провайдеров.
SongSync на GitHub: https://github.com/Lambada10/SongSync
Платформа: Android
⭐️: 685
Как мы «рисовали» учет времени на iOS с помощью библиотеки Charts
Недавно мы обновляли наше приложение родительского контроля и мониторинга Kaspersky Safe Kids — и в ходе редизайна пришли к выводу, что «родительские» графики активности детского устройства стали громоздкими и неудобными. Нам же требовался виджет, в котором была бы видна актуальная информация о времени использования устройства, интервалах блокировок и еще ряд полезных деталей.
В статье расскажу, как мы быстро решили эту проблему благодаря open-source-библиотеке Charts: в чем ее особенности и нюансы, как мы ей пользуемся и как смогли локализовать такую систему даже для арабских пользователей.
Статья: https://habr.com/ru/companies/kaspersky/articles/881578/
Платформа: iOS
Недавно мы обновляли наше приложение родительского контроля и мониторинга Kaspersky Safe Kids — и в ходе редизайна пришли к выводу, что «родительские» графики активности детского устройства стали громоздкими и неудобными. Нам же требовался виджет, в котором была бы видна актуальная информация о времени использования устройства, интервалах блокировок и еще ряд полезных деталей.
В статье расскажу, как мы быстро решили эту проблему благодаря open-source-библиотеке Charts: в чем ее особенности и нюансы, как мы ей пользуемся и как смогли локализовать такую систему даже для арабских пользователей.
Статья: https://habr.com/ru/companies/kaspersky/articles/881578/
Платформа: iOS
Kotlin Coroutines под капотом: CoroutineContext и CoroutineScope
Structured Concurrency это одна из главных фишек Kotlin Coroutines, позволяющая оперировать иерархиями корутин через единый интерфейс, благодаря такой организации можно легко отменить сразу все корутины, имея ссылку только на самый высокоуровневый объект. В этой статье я разберу две базовые штуки на основе которых строится Structured Concurrency - CoroutineContext и CoroutineScope. Поехали!
Статья: https://habr.com/ru/articles/883588/
Платформа: Android
Structured Concurrency это одна из главных фишек Kotlin Coroutines, позволяющая оперировать иерархиями корутин через единый интерфейс, благодаря такой организации можно легко отменить сразу все корутины, имея ссылку только на самый высокоуровневый объект. В этой статье я разберу две базовые штуки на основе которых строится Structured Concurrency - CoroutineContext и CoroutineScope. Поехали!
Статья: https://habr.com/ru/articles/883588/
Платформа: Android
•
(iOS En) SwiftUI Maps - iOS 17 - Look Around, User Location, Directions, Markers & Annotations, Map Styles•
(iOS En) Create a Custom SwiftUI Calendar with Dynamic Time and Gestures•
(iOS En) Animation Challenge: Number Pad With Animated Text Effects - SwiftUI•
(iOS En) Enhancing the Custom Help System in SwiftUI Without Breaking Existing Projects•
(And Ru) Погружаемся в мир технологий Яндекс Переводчика•
(And Ru) Мок собеседование Android разработчика в Контур: архитектура и кодинг приложения•
(And En) Compose for TV | Jetpack Compose Tips•
(And En) All Classes In Kotlin Explained•
(And En) 3 Ways How Attackers Can Reverse Engineer Your Android App (+ How You Protect It!)•
(Crs En) Building KMP Libraries: The RevenueCat Story•
(Crs En) Building a Flutter Map App: Handling Location, Permissions & App Lifecycle•
(Dev Ru) Aнтoн Нaзaров и Анастасия Чупова — Кофе и Код•
(Dev Ru) За что тебя могут уволить в IT•
(Dev Ru) Pkl — язык программирования для конфигураций от AppleЧто было год назад:
•
(iOS Ru) Введение в разработку под Apple Vision Pro•
(And Ru) Новостное приложение: с нуля до публикации в Google Play. Часть 1•
(Dev Ru) Публичное собеседование на позицию Head of QA•
(Dev Ru) Обязательные знания для тимлида•
(Dev Ru) Краш-курс по автоматизации тестированияPlease open Telegram to view this post
VIEW IN TELEGRAM
Yams - парсер YAML для Swift (YAML - это удобный для человека язык сериализации данных). В Yams есть три группы API преобразований: одна для использования с типами Codable, другая - для типов стандартной библиотеки Swift, а третья - для нативного представления Yams.
Yams на GitHub: https://github.com/jpsim/Yams
Платформа: iOS
⭐️: 1.1K
Yams на GitHub: https://github.com/jpsim/Yams
Платформа: iOS
⭐️: 1.1K
R8: Шакалья работа (уменьшение apk через правки R8)
Если расширить алфавит который используется в r8 для минификации, то может уменьшиться размер обновлений apk и dex файлов.
Статья: https://habr.com/ru/articles/885006/
Платформа: Android
Если расширить алфавит который используется в r8 для минификации, то может уменьшиться размер обновлений apk и dex файлов.
Статья: https://habr.com/ru/articles/885006/
Платформа: Android
Хабр
R8: Шакалья работа (уменьшение apk через правки R8)
TL;DR Если расширить алфавит который используется в r8 для минификации, то может уменьшиться размер обновлений apk и dex файлов. Дисклеймер Всё что угодно в этом материале, может быть враньём. Не...
Приватный финансовый менеджер inCourse на React Native. Опыт разработки
Идея написать финансовый менеджер в качестве пет‑проекта пришла мне в июле 2022 г. В сфере управления личными финансами у меня уже имелся достаточный опыт (в т.ч. опыт торговли акциями, валютными парами, ПФИ и проч.), и было понимание важности единого учета финансов для их анализа и управления. Учет я вел в Excel, но хотелось создать что‑то более удобное в красивой упаковке. Опыта программирования на RN у меня к тому моменту не было, и я решил изучать его по ходу разработки на конкретных задачах проекта. Изучение документации RN не заняло много времени — в основе своей это тот же React с некоторыми упрощениями.
Статья: https://habr.com/ru/articles/883844/
Платформа: кроссплатформа
Идея написать финансовый менеджер в качестве пет‑проекта пришла мне в июле 2022 г. В сфере управления личными финансами у меня уже имелся достаточный опыт (в т.ч. опыт торговли акциями, валютными парами, ПФИ и проч.), и было понимание важности единого учета финансов для их анализа и управления. Учет я вел в Excel, но хотелось создать что‑то более удобное в красивой упаковке. Опыта программирования на RN у меня к тому моменту не было, и я решил изучать его по ходу разработки на конкретных задачах проекта. Изучение документации RN не заняло много времени — в основе своей это тот же React с некоторыми упрощениями.
Статья: https://habr.com/ru/articles/883844/
Платформа: кроссплатформа
Почему Ollie перешел от SwiftUI к UIKit
Несколько месяцев назад мы приняли решение отказаться от SwiftUI и Swift Concurrency в нашем приложении и перевести ядро приложения на UIKit и Dispatch. Недавно мы перевели все управление экранами и навигацией в нашем приложении на UIKit, и это позволило нам удалить сразу несколько обходных хаков и решить кучу проблем с производительностью и ошибок, которые у нас были.
Многие люди интересовались подробностями того, почему мы приняли такое решение, поэтому эта статья для вас.
Статья: https://apptractor.ru/info/articles/pochemu-ollie-pereshel-ot-swiftui-k-uikit.html
Платформа: iOS
Несколько месяцев назад мы приняли решение отказаться от SwiftUI и Swift Concurrency в нашем приложении и перевести ядро приложения на UIKit и Dispatch. Недавно мы перевели все управление экранами и навигацией в нашем приложении на UIKit, и это позволило нам удалить сразу несколько обходных хаков и решить кучу проблем с производительностью и ошибок, которые у нас были.
Многие люди интересовались подробностями того, почему мы приняли такое решение, поэтому эта статья для вас.
Статья: https://apptractor.ru/info/articles/pochemu-ollie-pereshel-ot-swiftui-k-uikit.html
Платформа: iOS
Разработка5 лет опыта ИЛИ 5 раз по 1 году?
Помню, как после собеседования кто-то сказал мне, что у кандидата, которого мы только что видели, не 5 лет опыта, а 5 раз по 1 году.
Это было очень хорошее замечание. Этот человек постоянно работал над небольшими, очень простыми проектами на одинаковых этапах. Из-за этого он никогда не развивал свои навыки, и большинство лет его опыта не имели значения по сравнению с другими кандидатами, которые сталкивались с более широким кругом проблем и задач.
Конечно, логично, что годы, проведенные в отрасли, не означают напрямую большего стажа, но, как ни странно, часто предполагается, что люди со временем становятся лучше. Фокус в том, что это не так, и существует предел того, чего можно достичь, если оставаться на одной и той же работе и не пытаться выйти из своей зоны комфорта.
Статья: https://apptractor.ru/info/articles/5-let-opyta-ili-5-raz-po-1-godu.html
Платформа: карьера
Помню, как после собеседования кто-то сказал мне, что у кандидата, которого мы только что видели, не 5 лет опыта, а 5 раз по 1 году.
Это было очень хорошее замечание. Этот человек постоянно работал над небольшими, очень простыми проектами на одинаковых этапах. Из-за этого он никогда не развивал свои навыки, и большинство лет его опыта не имели значения по сравнению с другими кандидатами, которые сталкивались с более широким кругом проблем и задач.
Конечно, логично, что годы, проведенные в отрасли, не означают напрямую большего стажа, но, как ни странно, часто предполагается, что люди со временем становятся лучше. Фокус в том, что это не так, и существует предел того, чего можно достичь, если оставаться на одной и той же работе и не пытаться выйти из своей зоны комфорта.
Статья: https://apptractor.ru/info/articles/5-let-opyta-ili-5-raz-po-1-godu.html
Платформа: карьера