Forwarded from Swift Tips
Stanford CS193P 2025 - Developing Apps for iOS
Вышел обновленный курс Стэнфордского университета CS193P по основам разработки приложений для iOS. Уже опубликовано 12 лекций, в скором времени ожидается ещё 4.
🟢 Getting Started with SwiftUI
🟢 More SwiftUI Basics
🟢 Model and UI / Swift Type System
🟢 Building CodeBreaker's Model
🟢 Layout / Data Flow
🟢 Data Flow Demonstration
🟢 Generics and Views / Animation
🟢 Animation Demonstration
🟢 Elapsed Time / Protocols
🟢 List and Navigation
🟢 iPad / Sheets
🟢 CodeBreaker Editor
Читать (En) | Смотреть (En)
Вышел обновленный курс Стэнфордского университета CS193P по основам разработки приложений для iOS. Уже опубликовано 12 лекций, в скором времени ожидается ещё 4.
Читать (En) | Смотреть (En)
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6❤4🔥4
Создание кастомного Toolbar с Jetpack Compose. Подробный разбор всех попыток и решений
Автор статьи рассказывает как делал кастомный компонент Toolbar в Jetpack Compose, с какими ограничениями столкнулся и какую в итоге реализацию выбрал, чтоб компонент был гибким, контролируемым и оптимизированным с точки зрения рекомпозиций.
Читать (Ru)
Автор статьи рассказывает как делал кастомный компонент Toolbar в Jetpack Compose, с какими ограничениями столкнулся и какую в итоге реализацию выбрал, чтоб компонент был гибким, контролируемым и оптимизированным с точки зрения рекомпозиций.
Читать (Ru)
👍9❤3🔥3
This media is not supported in your browser
VIEW IN TELEGRAM
Create animated stripes in Jetpack Compose
Ещё один материал про UI, с примером реализации анимированных полос с помощью градиента в Jetpack Compose.
👉 Manipulating Color Stops
👉 Drawing The Stripes
👉 Animating The Stripes
👉 A Little Helper Function
Читать (En)
Ещё один материал про UI, с примером реализации анимированных полос с помощью градиента в Jetpack Compose.
👉 Manipulating Color Stops
👉 Drawing The Stripes
👉 Animating The Stripes
👉 A Little Helper Function
Читать (En)
👍4❤3🔥3
Джедайские техники Kotlin: inline-функции и reified-типы
Свежая статья с примерами и детальным разбором inline-функций и reified-типов: зачем это нужно, как работают внутри и как использовать.
Читать (Ru)
Свежая статья с примерами и детальным разбором inline-функций и reified-типов: зачем это нужно, как работают внутри и как использовать.
Читать (Ru)
1🔥5👍4❤3
Гид по Git — глазами бывшего джуна
Отличная статья-шпаргалка, в которой разбирается базовый минимум и чуть больше команд для ежедневной работы с Git`ом.
Читать (Ru)
Отличная статья-шпаргалка, в которой разбирается базовый минимум и чуть больше команд для ежедневной работы с Git`ом.
Читать (Ru)
🔥9❤3👍3👎2
Реверс-инжиниринг приложений на Android: знакомство с Frida
Полезная статья как для разработчиков, так и для QA, в которой рассказывается про инструмент для динамического реверс-инжиниринга — Frida: как с ним работать, как исследовать приложения на телефоне без root-доступа и создавать свои моды.
Читать (Ru)
Полезная статья как для разработчиков, так и для QA, в которой рассказывается про инструмент для динамического реверс-инжиниринга — Frida: как с ним работать, как исследовать приложения на телефоне без root-доступа и создавать свои моды.
Frida — это инструмент, который позволяет вживлять небольшой кусок JavaScript-кода прямо в запущенное приложение и менять его поведение.
Читать (Ru)
👍9❤4🔥3
Performance Spotlight Week
В ноябре Гугл проводили неделю Performance Spotlight Week, в рамках которой рассказывали про лучшие практики и инструменты для повышения перформанса Android-приложений. Собрал все ссылки в один пост.
🟢 Use R8 to shrink, optimize, and fast-track your app
🟢 How Reddit used the R8 optimizer for high impact performance improvements
🟢 Configure and troubleshoot R8 Keep Rules
🟢 Deeper Performance Considerations
🟢 Leveling Guide for your Performance Journey
🟢 Fully Optimized: Wrapping up Performance Spotlight Week
Читать (En)
В ноябре Гугл проводили неделю Performance Spotlight Week, в рамках которой рассказывали про лучшие практики и инструменты для повышения перформанса Android-приложений. Собрал все ссылки в один пост.
Читать (En)
Please open Telegram to view this post
VIEW IN TELEGRAM
❤7👍7🔥4
This media is not supported in your browser
VIEW IN TELEGRAM
Big O notation
Статья с интерактивными примерами и разбором Big O нотаций.
🟢 O(1) – constant time (best!)
🟢 O(log n) – logarithmic time
🟢 O(n) – linear time
🟢 O(n^2) – quadratic time
Читать (En)
Статья с интерактивными примерами и разбором Big O нотаций.
Читать (En)
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥15👍6❤3
С наступающим Новым Годом!!! ❤️🎄 🥂
Дорогие друзья и коллеги! Хочу начать этот пост со слов благодарности. От чистого сердца говорю вам спасибо за то, что этот год были со мной, с каналом, поддерживали, ставили реакции и писали комменты – вы крутые ❤️
Также поздравляю Вас всех с наступающим Новым Годом! Желаю в Новом Году покорить новые вершины, профессиональных успехов, достойной зарплаты, интересных проектов и чистого кода.
Для канала год выдался непростым, где-то я подвыгорел, где-то погряз в работе из-за чего в этом году было относительно мало публикаций. Но и справедливости ради стоит сказать, что достойных материалов в последнее время становится меньше, а публиковать что-то ради публикации не очень хочется. В следующем году постараюсь собраться, войти в привычное русло и постараюсь найти возможности для развития каналов.
Отдельное спасибо хочу выразить тем, кто поддерживает в ЛС и предлагает материалы для публикации ❤️. Многие сообщения видел, но не успел ответить из-за нехватки времени. Если вдруг я вам не ответил и вам важно именно моё мнение по какому-то вопросу, триггерните ещё раз в ЛС – обещаю посмотреть и ответить.
P.S. Спасибо всем за поддержку и с наступающим Новым Годом!!! ❤️🎄 🥂
Дорогие друзья и коллеги! Хочу начать этот пост со слов благодарности. От чистого сердца говорю вам спасибо за то, что этот год были со мной, с каналом, поддерживали, ставили реакции и писали комменты – вы крутые ❤️
Также поздравляю Вас всех с наступающим Новым Годом! Желаю в Новом Году покорить новые вершины, профессиональных успехов, достойной зарплаты, интересных проектов и чистого кода.
Для канала год выдался непростым, где-то я подвыгорел, где-то погряз в работе из-за чего в этом году было относительно мало публикаций. Но и справедливости ради стоит сказать, что достойных материалов в последнее время становится меньше, а публиковать что-то ради публикации не очень хочется. В следующем году постараюсь собраться, войти в привычное русло и постараюсь найти возможности для развития каналов.
Отдельное спасибо хочу выразить тем, кто поддерживает в ЛС и предлагает материалы для публикации ❤️. Многие сообщения видел, но не успел ответить из-за нехватки времени. Если вдруг я вам не ответил и вам важно именно моё мнение по какому-то вопросу, триггерните ещё раз в ЛС – обещаю посмотреть и ответить.
P.S. Спасибо всем за поддержку и с наступающим Новым Годом!!! ❤️
Please open Telegram to view this post
VIEW IN TELEGRAM
❤17🍾9🎉5🎄3☃1
Ахиллесова пята SharedPreferences и стоит ли внедрять Datastore как альтернативу
Всем привет! Ну что, как вы? Телегу обещают в скором времени заблочить, поэтому считаю это лучшим временем вернуться к публикациям 😃
На канале 2 месяца не было постов, пошёл я значится разгребать отложенные материалы, смотреть новые и знаете что я увидел? Правильно, ничего принципиально интересного 😃
Поэтому вот вам из свежего – полезная и интересная статья с исследованием производительности SharedPreferences и Datastore, графиками и сравнением обоих подходов.
P.S. Странно, что такая, казалось бы технологичная компания и до сих пор не внедрила Datastore🤔
Читать (Ru)
Всем привет! Ну что, как вы? Телегу обещают в скором времени заблочить, поэтому считаю это лучшим временем вернуться к публикациям 😃
На канале 2 месяца не было постов, пошёл я значится разгребать отложенные материалы, смотреть новые и знаете что я увидел? Правильно, ничего принципиально интересного 😃
Поэтому вот вам из свежего – полезная и интересная статья с исследованием производительности SharedPreferences и Datastore, графиками и сравнением обоих подходов.
P.S. Странно, что такая, казалось бы технологичная компания и до сих пор не внедрила Datastore
Читать (Ru)
Please open Telegram to view this post
VIEW IN TELEGRAM
👍18❤5🔥3
Безопасный обмен данными между приложениями на Android: intents, URI schemes, shared preferences
А вот небольшая, но полезная статья про межпроцессное взаимодействия в Android, в которой рассматриваются различные способы обмена данными между приложениями и как это делать безопасно.
👉 Intents: стандартный способ что-то сломать
👉 URI schemes: когда браузер становится посредником
👉 Shared Preferences: когда приватное становится публичным
👉 Content Providers для межпроцессного обмена
Читать (Ru)
А вот небольшая, но полезная статья про межпроцессное взаимодействия в Android, в которой рассматриваются различные способы обмена данными между приложениями и как это делать безопасно.
👉 Intents: стандартный способ что-то сломать
👉 URI schemes: когда браузер становится посредником
👉 Shared Preferences: когда приватное становится публичным
👉 Content Providers для межпроцессного обмена
Читать (Ru)
👍10🔥3👏3❤2
Forwarded from Swift Tips
WWDC26 A week of technology, creativity, and community
В этом году WWDC26 пройдёт с 8 по 12 июня. Посмотреть видео можно будет:
На Youtube: AppleDeveloper
На сайте: developer.apple.com
В приложении для разработчиков: AppleDeveloper
В этом году WWDC26 пройдёт с 8 по 12 июня. Посмотреть видео можно будет:
На Youtube: AppleDeveloper
На сайте: developer.apple.com
В приложении для разработчиков: AppleDeveloper
❤5👍3🔥3
Как заставить Android Studio ругаться на код по вашим правилам: создаем пользовательские Lint и Detekt
Объемная и полезная статья про статические анализаторы кода Android Lint и Detekt. Как с их помощью упростить себе жизнь, заставив Android Studio ругаться на код по вашим правилам.
В качестве примера показывается как создать практические правила для обоих инструментов и как их внедрить в проект. На примере Lint рассматривается контроль архитектуры пакетов и обязательную документацию с QuickFix, а на примере Detekt – проверка неизменяемого состояния представления без Android-зависимостей и миграцию с RxJava на Coroutines.
P.S. Шёл 2026 год – RxJava 😳
Читать (Ru)
Объемная и полезная статья про статические анализаторы кода Android Lint и Detekt. Как с их помощью упростить себе жизнь, заставив Android Studio ругаться на код по вашим правилам.
В качестве примера показывается как создать практические правила для обоих инструментов и как их внедрить в проект. На примере Lint рассматривается контроль архитектуры пакетов и обязательную документацию с QuickFix, а на примере Detekt – проверка неизменяемого состояния представления без Android-зависимостей и миграцию с RxJava на Coroutines.
P.S. Шёл 2026 год – RxJava 😳
Читать (Ru)
❤4🔥4👍3
Как безопасно хранить и открывать пользовательские файлы локально в Android
Статья про безопасное хранение и открытие пользовательских файлов локально в Android.
👉 Получаем файл от пользователя
👉 Сохранение в зашифрованном формате
👉 Как стороннее приложение может безопасно прочитать ваш зашифрованный файл
👉 Создание ParcelFileDescriptor
👉 Создание корректного URI для FileDecryptionContentProvider
👉 Рефлексия шифрования
Читать (Ru)
Статья про безопасное хранение и открытие пользовательских файлов локально в Android.
👉 Получаем файл от пользователя
👉 Сохранение в зашифрованном формате
👉 Как стороннее приложение может безопасно прочитать ваш зашифрованный файл
👉 Создание ParcelFileDescriptor
👉 Создание корректного URI для FileDecryptionContentProvider
👉 Рефлексия шифрования
Читать (Ru)
❤7👍6🔥6
How Compose Preview Works Under the Hood
Интересная статья, в которой подробно разбирается процесс отрисовки Compose Preview в Android Studio.
👉 The fundamental problem: Rendering the uncallable
👉 The
👉 From annotation to XML: How Studio discovers previews
👉 ComposeViewAdapter: The orchestrator
👉 ComposableInvoker: Calling the uncallable
👉 Inspectable: Enabling the tooling bridge
👉 From composition to ViewInfo: Mapping pixels to source code
👉 Running previews on device: PreviewActivity
Читать (En)
Интересная статья, в которой подробно разбирается процесс отрисовки Compose Preview в Android Studio.
👉 The fundamental problem: Rendering the uncallable
👉 The
@Preview annotation: Metadata, not behavior👉 From annotation to XML: How Studio discovers previews
👉 ComposeViewAdapter: The orchestrator
👉 ComposableInvoker: Calling the uncallable
👉 Inspectable: Enabling the tooling bridge
👉 From composition to ViewInfo: Mapping pixels to source code
👉 Running previews on device: PreviewActivity
Читать (En)
🔥5❤3👍2👏1
Как я пытался чинить анимацию в Jetpack Compose LazyColumn
Интересная статья от разработчика из ТБанка про то, как они решали проблему рассинхронизации анимаций айтемов в
В статье разбирается, почему возникает рассинхрон, как устроен механизм анимаций внутри
Читать (Ru)
Интересная статья от разработчика из ТБанка про то, как они решали проблему рассинхронизации анимаций айтемов в
LazyColumn – когда один из айтемов меняет свои размеры, анимация второго айтема происходит с временным лагом.В статье разбирается, почему возникает рассинхрон, как устроен механизм анимаций внутри
LazyColumn, почему кастомный animateItem обречен с самого начала и к какому решению в итоге пришли.Читать (Ru)
👍13🔥3❤2👎1
Разбираем Remote Compose: как Google предлагает строить BDUI
Обзорная статья от ребят из Альфа-Банк про недавно анонсированный Remote Compose от Гугла.
👉 Что делает Remote Compose особенным
👉 Как устроен Remote Compose
👉 Практическое использование
👉 Плюсы / Минусы
Читать (Ru)
Обзорная статья от ребят из Альфа-Банк про недавно анонсированный Remote Compose от Гугла.
👉 Что делает Remote Compose особенным
👉 Как устроен Remote Compose
👉 Практическое использование
👉 Плюсы / Минусы
Читать (Ru)
👍10🔥4❤3
Маяк в пустыне: Kotlin DSL для Android-шейдеров
В статье автор рассказывает про сложности и неудобства работы с шейдерами в Android, из-за чего он заморочился и написал библиотеку, которая оборачивает всё это добро в типизированный Kotlin DSL.
👉 почему голый AGSL в Android-коде быстро начинает утомлять
👉 как выглядит тот же шейдер в RedByteFX
👉 четыре учебных примера - от простого к сложным эффектам
👉 как устроен DSL: координаты, uniform-ы, let(...), fn(...), sample(), sampleUv(), стандартная библиотека и интеграция с Compose;
👉 где библиотека реально выигрывает, а где у неё есть честные ограничения.
Библиотека на GitHub → RedByteFX
Читать (Ru)
В статье автор рассказывает про сложности и неудобства работы с шейдерами в Android, из-за чего он заморочился и написал библиотеку, которая оборачивает всё это добро в типизированный Kotlin DSL.
👉 почему голый AGSL в Android-коде быстро начинает утомлять
👉 как выглядит тот же шейдер в RedByteFX
👉 четыре учебных примера - от простого к сложным эффектам
👉 как устроен DSL: координаты, uniform-ы, let(...), fn(...), sample(), sampleUv(), стандартная библиотека и интеграция с Compose;
👉 где библиотека реально выигрывает, а где у неё есть честные ограничения.
Библиотека не подменяет исполнение, нативный AGSL по-прежнему исполняется на устройстве и работает по принципу Kotlin DSL → сгенерированный AGSL → RuntimeShader / RenderEffect.
Библиотека на GitHub → RedByteFX
Читать (Ru)
❤7👍7🔥3
Kotlin Coroutine bridges: converting any callback-based Android API to suspend functions
Полезная статья, в которой показывается, как можно преобразовывать любые коллбэк-ориентированные Android API в suspend-функции используя suspendCoroutine.
👉 The fundamental problem: Callbacks do not compose
👉 The core bridge: suspendCoroutine
👉 Success and error callbacks: The two-path bridge
👉 The callback factory: Abstracting interface boilerplate
👉 Multi-value callbacks: Wrapper classes
👉 Exception hierarchies: Preserving error semantics
👉 The Result<T> variant: Exceptions are not always what you want
👉 The lambda convenience layer: Bridging before the bridge
👉 Real-world application: Bridging Google Play Billing directly
👉 suspendCoroutine versus suspendCancellableCoroutine
👉 Applying the pattern beyond billing
👉 Common mistakes to avoid
Читать (En)
Полезная статья, в которой показывается, как можно преобразовывать любые коллбэк-ориентированные Android API в suspend-функции используя suspendCoroutine.
👉 The fundamental problem: Callbacks do not compose
👉 The core bridge: suspendCoroutine
👉 Success and error callbacks: The two-path bridge
👉 The callback factory: Abstracting interface boilerplate
👉 Multi-value callbacks: Wrapper classes
👉 Exception hierarchies: Preserving error semantics
👉 The Result<T> variant: Exceptions are not always what you want
👉 The lambda convenience layer: Bridging before the bridge
👉 Real-world application: Bridging Google Play Billing directly
👉 suspendCoroutine versus suspendCancellableCoroutine
👉 Applying the pattern beyond billing
👉 Common mistakes to avoid
Читать (En)
👍8❤4🔥2
Mobile Runtime от Яндекса — 7 июня говорим про AI, архитектуру и Senior-скиллы
Если вы занимаетесь мобильной разработкой или бэкендом, 7 июня стоит освободить вечер. В программе два трека с упором на реальные кейсы и инженерную практику.
Что будем копать в AI-треке:
• Внедрение AI: Как перестроить процессы и инфраструктуру, двигаться к AI-first командам и автономности работы агентов. Артур Василов (Яндекс Браузер) разберёт истории успеха и интересные подходы к эффективному использованию AI.
• Агенты и инструменты: Воркшоп с Тамимом Аттафи (Яндекс Карты). Соберём с нуля ассистента в кросс-платформенном KMP-приложении с картой, который умеет вызывать инструменты для поиска мест и взаимодействия с картой.
Что в Not so AI треке:
• Performance & Media: Детальный разбор медиаленты Яндекс Еды от Льва Бондаренко. Подводные камни при работе со скоростью, памятью и производительностью в высоконагруженном приложении.
• Career Path: Дискуссия о будущем мобильного инженера. Как качать T-shape, строить личный бренд и адаптироваться к изменениям рынка. Спикеры — Эдуард Оболенский (Яндекс), Артур Василов (Яндекс Браузер), Василий Усов (Райффайзенбанк) и Вероника Макаровская (Сбер). Также обсудим BDUI, кроссплатформу и натив.
Москва + онлайн. Программа в процессе наполнения, но регистрация уже открыта.
Если вы занимаетесь мобильной разработкой или бэкендом, 7 июня стоит освободить вечер. В программе два трека с упором на реальные кейсы и инженерную практику.
Что будем копать в AI-треке:
• Внедрение AI: Как перестроить процессы и инфраструктуру, двигаться к AI-first командам и автономности работы агентов. Артур Василов (Яндекс Браузер) разберёт истории успеха и интересные подходы к эффективному использованию AI.
• Агенты и инструменты: Воркшоп с Тамимом Аттафи (Яндекс Карты). Соберём с нуля ассистента в кросс-платформенном KMP-приложении с картой, который умеет вызывать инструменты для поиска мест и взаимодействия с картой.
Что в Not so AI треке:
• Performance & Media: Детальный разбор медиаленты Яндекс Еды от Льва Бондаренко. Подводные камни при работе со скоростью, памятью и производительностью в высоконагруженном приложении.
• Career Path: Дискуссия о будущем мобильного инженера. Как качать T-shape, строить личный бренд и адаптироваться к изменениям рынка. Спикеры — Эдуард Оболенский (Яндекс), Артур Василов (Яндекс Браузер), Василий Усов (Райффайзенбанк) и Вероника Макаровская (Сбер). Также обсудим BDUI, кроссплатформу и натив.
Москва + онлайн. Программа в процессе наполнения, но регистрация уже открыта.
👍6👎4❤3🔥3👌1