Media is too big
VIEW IN TELEGRAM
🛠️ Применяем шаблон Builder в Kotlin
Шаблон проектирования Builder позволяет создавать сложные объекты в несколько этапов. Но насколько он применим к Kotlin?
Автор видео разбирает традиционную версию шаблона Builder, и рассказывает, как можно улучшить его с помощью языка и библиотечных возможностей Kotlin.
Посмотреть на ютубе📺
🕐 Таймкоды:
00:00 — Начало
00:18 — Пример кода
02:01 — Традиционный вид шаблона
05:02 — Модернизация шаблона в Kotlin
09:15 — Итоги
Шаблон проектирования Builder позволяет создавать сложные объекты в несколько этапов. Но насколько он применим к Kotlin?
Автор видео разбирает традиционную версию шаблона Builder, и рассказывает, как можно улучшить его с помощью языка и библиотечных возможностей Kotlin.
Посмотреть на ютубе
00:00 — Начало
00:18 — Пример кода
02:01 — Традиционный вид шаблона
05:02 — Модернизация шаблона в Kotlin
09:15 — Итоги
Please open Telegram to view this post
VIEW IN TELEGRAM
Делегаты и делегированные свойства в Kotlin
📖 Погрузимся в мир делегатов и делегированных свойств в Kotlin. Эта тема может показаться сложной на первый взгляд, но автор объясняет её максимально понятно и подробно.
В статье также есть примеры использования встроенных делегатов (lazy, observable), а также создание пользовательских делегатов с помощью интерфейсов ReadOnlyProperty и ReadWriteProperty.
📖 Погрузимся в мир делегатов и делегированных свойств в Kotlin. Эта тема может показаться сложной на первый взгляд, но автор объясняет её максимально понятно и подробно.
В статье также есть примеры использования встроенных делегатов (lazy, observable), а также создание пользовательских делегатов с помощью интерфейсов ReadOnlyProperty и ReadWriteProperty.
👍4
Осторожно, Combine!
📖 Разработчик из команды Яндекс Диска поделился опытом, как они Combine добавляли. В статье он разбирает проблемы, с которыми столкнулась команда, и как их исправили, а также к каким выводам после этого пришли.
А ещё поделился библиотекой с фиксами и экстеншенами к Combine 🎁
📖 Разработчик из команды Яндекс Диска поделился опытом, как они Combine добавляли. В статье он разбирает проблемы, с которыми столкнулась команда, и как их исправили, а также к каким выводам после этого пришли.
А ещё поделился библиотекой с фиксами и экстеншенами к Combine 🎁
❤4
Что такое Home-виджеты и как их подружить с вашим приложением на Flutter
Cуществуют нативные инструменты, которые интегрируются с Flutter. Например, создавать виджеты на Android можно с помощью Glance или XML, а на iOS — с WidgetKit. Эти технологии позволяют внедрять так называемые Home Widgets — элементы, с которыми можно взаимодействовать напрямую с домашнего экрана.
📖 В этой статье разбираются основные инструменты, и как их внедрять и использовать во Flutter-приложениях.
Cуществуют нативные инструменты, которые интегрируются с Flutter. Например, создавать виджеты на Android можно с помощью Glance или XML, а на iOS — с WidgetKit. Эти технологии позволяют внедрять так называемые Home Widgets — элементы, с которыми можно взаимодействовать напрямую с домашнего экрана.
📖 В этой статье разбираются основные инструменты, и как их внедрять и использовать во Flutter-приложениях.
Размер приложения часто играет важную роль в восприятии его пользователями и принятии ими решения о скачивании. Исследования показывают, что чем меньше размер APK, тем выше вероятность его установки и тем реже оно оказывается в списке на удаление.
📖 Для внедрения одной из SDK, основанной на Flutter, команда Яндекс Go прибегла к механизму Dynamic Feature Delivery. Т. к. информации в русскоязычном сегменте о DFD крайне мало, они делятся своим опытом интеграции.
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from Библиотека программиста | программирование, кодинг, разработка
📨 Как работают очереди и брокеры сообщений
Очередь сообщений — структура данных, которая хранит сообщения в порядке FIFO. Представьте, что вашему приложению нужно обрабатывать файлы, которые загружают пользователи. Очередь сообщений в этом случае может выступать как очередь задач, обрабатывающая задания асинхронно:
1️⃣ Пользователь загружает большой файл для обработки.
2️⃣ Веб-сервер принимает файл и создает задание.
3️⃣ Задание добавляется в очередь задач, а файл загружается в объектное хранилище.
4️⃣ Позже рабочий процесс забирает задания из очереди одно за другим и обрабатывает их, получая файл из хранилища.
Это самый простой пример. Очереди сообщений можно использовать для:
✔️ Планирования и управления фоновыми задачами.
✔️ Распределения задач между несколькими рабочими процессами.
✔️ Управления сервисами подписки и уведомлений.
✔️ Буферизации данных.
✔️ Повторных попыток обработки платежей и многого другого.
Подробнее читайте в нашем гайде 👇
🔗 Читать статью
🔗 Зеркало
Очередь сообщений — структура данных, которая хранит сообщения в порядке FIFO. Представьте, что вашему приложению нужно обрабатывать файлы, которые загружают пользователи. Очередь сообщений в этом случае может выступать как очередь задач, обрабатывающая задания асинхронно:
1️⃣ Пользователь загружает большой файл для обработки.
2️⃣ Веб-сервер принимает файл и создает задание.
3️⃣ Задание добавляется в очередь задач, а файл загружается в объектное хранилище.
4️⃣ Позже рабочий процесс забирает задания из очереди одно за другим и обрабатывает их, получая файл из хранилища.
Это самый простой пример. Очереди сообщений можно использовать для:
✔️ Планирования и управления фоновыми задачами.
✔️ Распределения задач между несколькими рабочими процессами.
✔️ Управления сервисами подписки и уведомлений.
✔️ Буферизации данных.
✔️ Повторных попыток обработки платежей и многого другого.
Подробнее читайте в нашем гайде 👇
🔗 Читать статью
🔗 Зеркало
🧑💻 Статьи для IT: как объяснять и распространять значимые идеи
Напоминаем, что у нас есть бесплатный курс для всех, кто хочет научиться интересно писать — о программировании и в целом.
Что: семь модулей, посвященных написанию, редактированию, иллюстрированию и распространению публикаций.
Для кого: для авторов, копирайтеров и просто программистов, которые хотят научиться интересно рассказывать о своих проектах.
👉Материалы регулярно дополняются, обновляются и корректируются. А еще мы отвечаем на все учебные вопросы в комментариях курса.
Напоминаем, что у нас есть бесплатный курс для всех, кто хочет научиться интересно писать — о программировании и в целом.
Что: семь модулей, посвященных написанию, редактированию, иллюстрированию и распространению публикаций.
Для кого: для авторов, копирайтеров и просто программистов, которые хотят научиться интересно рассказывать о своих проектах.
👉Материалы регулярно дополняются, обновляются и корректируются. А еще мы отвечаем на все учебные вопросы в комментариях курса.
👍2
❗Вакансии «Библиотеки программиста» — ждем вас в команде!
Мы постоянно растем и развиваемся, поэтому создали отдельную страницу, на которой будут размещены наши актуальные вакансии. Сейчас мы ищем:
👉контент-менеджеров для ведения телеграм-каналов
👉Переводчик и автор оригинальных статей
Подробности тут
Мы предлагаем частичную занятость и полностью удаленный формат работы — можно совмещать с основной и находиться в любом месте🌴
Ждем ваших откликов 👾
Мы постоянно растем и развиваемся, поэтому создали отдельную страницу, на которой будут размещены наши актуальные вакансии. Сейчас мы ищем:
👉контент-менеджеров для ведения телеграм-каналов
👉Переводчик и автор оригинальных статей
Подробности тут
Мы предлагаем частичную занятость и полностью удаленный формат работы — можно совмещать с основной и находиться в любом месте🌴
Ждем ваших откликов 👾
job.proglib.io
Вакансии в медиа «Библиотека программиста»
Количество проектов в редакции постоянно растет, так что нам всегда нужны специалисты
This media is not supported in your browser
VIEW IN TELEGRAM
Это не инструкция по использованию Shortcuts на Mac. Это про то, как легко можно упростить себе жизнь и создать многофункциональный инструмент без глубоких знаний программирования.
📖 Статья даст готовое решение для автоматизации работы с командами ADB, которыми автор делится в конце. Но главное — это идея, которую вы сможете адаптировать к своим ежедневным процессам.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤🔥3👍2😁2🔥1
😭💰⬆️ Shut up and give my money: как просить повышения зарплаты
Рассказываем, когда и как правильно поднимать вопрос о повышении зарплаты. Проверенные тактики, аргументы и советы.
Углубляемся в вопрос и рассказываем, на основании чего просить повышения и какие аргументы использовать, а главное — какие доводы точно не подойдут.
📖 Читать статью
📖 Зеркало
Рассказываем, когда и как правильно поднимать вопрос о повышении зарплаты. Проверенные тактики, аргументы и советы.
Углубляемся в вопрос и рассказываем, на основании чего просить повышения и какие аргументы использовать, а главное — какие доводы точно не подойдут.
📖 Читать статью
📖 Зеркало
❤4
Forwarded from Библиотека нейросетей | ChatGPT, Midjourney, DeepSeek, Sora
⚡️Разыгрываем флагманский смартфон
«Библиотека программиста» разыгрывает один из трех смартфонов на выбор:
🔹Samsung Galaxy S24 Ultra на 1 ТБ
🔹Xiaomi 14 Ultra на 512 ГБ
🔹iPhone 16 Pro Max на 512 ГБ
🔥 А еще 99 участников розыгрыша получат скидку 50% на наш курс Базовые модели ML и приложения!
Промокод будет действителен до 20 ноября.
Условия просты:
→ подписаться на Библиотека нейротекста
→ подписаться на Библиотека нейрозвука
→ подписаться на Библиотека нейрокартинок
→ нажать на кнопку «Участвовать» под этим постом
Итоги появятся 30 октября в 20:00 по московскому времени в нашем канале Библиотека программиста. Затем мы свяжемся с победителем, который сам выберет смартфон. Тем, кто получит промокод, мы вышлем его в течение недели после окончания розыгрыша.
⚠️ Убедитесь, что вам можно написать в личные сообщения или следите за результатами — если мы не сможем с вами связаться, то не сможем и отправить приз. Доставить мы можем только в города России и Беларуси.
«Библиотека программиста» разыгрывает один из трех смартфонов на выбор:
🔹Samsung Galaxy S24 Ultra на 1 ТБ
🔹Xiaomi 14 Ultra на 512 ГБ
🔹iPhone 16 Pro Max на 512 ГБ
🔥 А еще 99 участников розыгрыша получат скидку 50% на наш курс Базовые модели ML и приложения!
Промокод будет действителен до 20 ноября.
Условия просты:
→ подписаться на Библиотека нейротекста
→ подписаться на Библиотека нейрозвука
→ подписаться на Библиотека нейрокартинок
→ нажать на кнопку «Участвовать» под этим постом
Итоги появятся 30 октября в 20:00 по московскому времени в нашем канале Библиотека программиста. Затем мы свяжемся с победителем, который сам выберет смартфон. Тем, кто получит промокод, мы вышлем его в течение недели после окончания розыгрыша.
⚠️ Убедитесь, что вам можно написать в личные сообщения или следите за результатами — если мы не сможем с вами связаться, то не сможем и отправить приз. Доставить мы можем только в города России и Беларуси.
👍2
Objective-C не кусается: как перестать бояться Legacy и стать настоящим iOS-ниндзя
📖 Поговорим про тему, которая волнует многих разработчиков: использование старых технологий в iOS-разработке, таких как Objective-C. Тут возникает очень насущный вопрос, является ли он легаси?
Легаси — это не просто старый код, написанный на устаревших языках или с использованием старых технологий, это любой код, который сложно поддерживать и развивать. Это может быть и относительно новый код, если он плохо структурирован, недостаточно документирован или содержит множество технического долга.
📖 Поговорим про тему, которая волнует многих разработчиков: использование старых технологий в iOS-разработке, таких как Objective-C. Тут возникает очень насущный вопрос, является ли он легаси?
Легаси — это не просто старый код, написанный на устаревших языках или с использованием старых технологий, это любой код, который сложно поддерживать и развивать. Это может быть и относительно новый код, если он плохо структурирован, недостаточно документирован или содержит множество технического долга.
💾 TinyStorage — простая и легкая замена UserDefaults для постоянного хранения данных
TinyStorage — простая и легкая замена UserDefaults (не обертка, а именно замена, лишенная некоторых недостатков нативного фреймворка) с более надежным доступом и встроенной поддержкой типов Codable.
Как и UserDefaults, TinyStorage предназначен для использования с относительно небольшими значениями. Не храните в TinyStorage массивные базы данных, так как он не оптимизирован для этого, но он достаточно быстр для извлечения сохраненных типов Codable. В качестве ориентира, размер хранилища не должен превышать 1 МБ.
Ссылка на GitHub😺
TinyStorage — простая и легкая замена UserDefaults (не обертка, а именно замена, лишенная некоторых недостатков нативного фреймворка) с более надежным доступом и встроенной поддержкой типов Codable.
Как и UserDefaults, TinyStorage предназначен для использования с относительно небольшими значениями. Не храните в TinyStorage массивные базы данных, так как он не оптимизирован для этого, но он достаточно быстр для извлечения сохраненных типов Codable. В качестве ориентира, размер хранилища не должен превышать 1 МБ.
Ссылка на GitHub
Please open Telegram to view this post
VIEW IN TELEGRAM
🥰4
Сегодня компания Apple выложила первые бета-версии грядущих обновлений iOS 18.2, iPadOS 18.2 и macOS Sequoia 15.2 для тестирования разработчиками.
Apple представила новые функции Siri, инструменты для создания изображений и многое другое. Вот что нас ждёт ждёт:
– Image Playground (приложение Apple для создания изображений, которое может создавать с помощью текстовых подсказок).
– Image Wand (Генерация по грубому эскизу с Apple Pencil на iPad).
– Genmoji (это новые кастомные emoji).
– Интеграция Siri с ChatGPT (для выполнения определенных запросов, но только с разрешения пользователя).
– Visual Intelligence (функция, которая позволяет получать информацию о том, что находится вокруг вас).
– Инструменты для письма (Apple улучшает функцию Writing Tools, добавляя возможность вносить изменения по своему усмотрению).
Новые бета-версии включают API для разработчиков, позволяющие добавлять инструменты Writing Tools, Genmoji и Image Playground в приложения сторонних разработчиков.
На данный момент бета-версия доступна только разработчикам, у которых есть устройство с поддержкой Apple Intelligence.
Please open Telegram to view this post
VIEW IN TELEGRAM
😁3
Экономьте время, копируя готовый код в свой проект
Представьте, что вы могли бы скопировать код страницы и вставить его в свой новый или существующий проект. С FlutterLibrary это возможно. На странице можно найти виджеты, готовые шаблоны и отдельные страницы, которые помогут вам создавать приложения еще быстрее.
Всё просто! Выбираете любой элемент, и наведении курсора на любой из экранов вы увидите кнопку «Скопировать код». Нажмите на него, и все готово — вставьте код в свой проект.
Ссылка на проект 👈
Представьте, что вы могли бы скопировать код страницы и вставить его в свой новый или существующий проект. С FlutterLibrary это возможно. На странице можно найти виджеты, готовые шаблоны и отдельные страницы, которые помогут вам создавать приложения еще быстрее.
Всё просто! Выбираете любой элемент, и наведении курсора на любой из экранов вы увидите кнопку «Скопировать код». Нажмите на него, и все готово — вставьте код в свой проект.
Ссылка на проект 👈
👍2
Дизайн приложения теперь похож на AppStore. Пользователи могут видеть подробную информацию о приложении, скриншоты и другие сведения о разработчике и его проекте. Раньше вместо этого на страницу приложения выводилась только короткая заметка со списком последних изменений.
Также добавили опцию Tester Criteria. С её помощью разработчики могут указать список устройств, для которых нужно провести тестирование. Можно выбрать определённую модель iPhone и указать версию iOS. Критерии применяются как к публичным ссылкам на тестирование, так и к частным приглашениям.
Помимо этого появилась статистика. Разработчики теперь могут видеть, сколько пользователей просматривали приложение в TestFlight и сколько из них решили установить бета-версию. Также в отдельном пункте показывается, сколько тестировщиков не соответствует установленным критериям тестирования.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤5👍4🥰1
Встречаем yx_scope: DI-фреймворк для работы со скоупами в открытом доступе
Для больших проектов не всегда хватает одного модуля: иногда надо пошарить какие‑нибудь классы или UI‑элементы. Так со временем проект дробится на много мелких модулей, которые так или иначе связаны разного рода зависимостями. И если за этим не следить, то рано или поздно структура проекта может стать запутанной.
Сложности подтолкнули Яндекс к поиску собственного решения, которое удовлетворяло бы всем требованиям. И теперь они готовы поделиться им с комьюнити: решение — это группа библиотек yx_scope.
📖 Читать статью
😺 Ссылка на GitHub
Для больших проектов не всегда хватает одного модуля: иногда надо пошарить какие‑нибудь классы или UI‑элементы. Так со временем проект дробится на много мелких модулей, которые так или иначе связаны разного рода зависимостями. И если за этим не следить, то рано или поздно структура проекта может стать запутанной.
Сложности подтолкнули Яндекс к поиску собственного решения, которое удовлетворяло бы всем требованиям. И теперь они готовы поделиться им с комьюнити: решение — это группа библиотек yx_scope.
📖 Читать статью
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
iOS 18 для разработчиков: Ключевые изменения в UIKit
Подробное изучение всех нововведений новой версии iOS, чтобы понять, какие новые возможности она предлагает разработчикам.
В этой статье автор делится и показывает самые интересные обновления в UIKit — новый TabBar, анимации, совместимость UIKit/SwiftUI и многое другое.
Подробное изучение всех нововведений новой версии iOS, чтобы понять, какие новые возможности она предлагает разработчикам.
В этой статье автор делится и показывает самые интересные обновления в UIKit — новый TabBar, анимации, совместимость UIKit/SwiftUI и многое другое.
👍3❤1
🔒 Пример взлома покупок в Android-приложении и защита от этого
Встроенные покупки являются основой современных приложений, позволяя пользователям разблокировать премиум-функции или подключать подписку. Однако, когда разработчики не обеспечивают должной безопасности процесса выставления счетов, могут возникнуть уязвимости, позволяющие обойти проверку платежей.
📖 В этой статье автор рассказывает о том, как Frida, может обойти механизмы биллинга в приложениях для Android. Также показывает, как можно взломать небезопасные процессы покупок и что могут сделать разработчики.
Встроенные покупки являются основой современных приложений, позволяя пользователям разблокировать премиум-функции или подключать подписку. Однако, когда разработчики не обеспечивают должной безопасности процесса выставления счетов, могут возникнуть уязвимости, позволяющие обойти проверку платежей.
📖 В этой статье автор рассказывает о том, как Frida, может обойти механизмы биллинга в приложениях для Android. Также показывает, как можно взломать небезопасные процессы покупок и что могут сделать разработчики.
👍2🔥1
#вопросы_с_собеседований
Kotlin
Вопрос: Как создать «статический» метод для перечисления в Kotiln?
В классе enum можно определить объект класса:
enum class CircleType {
FIRST,
SECOND,
THIRD;
companion object {
fun random(): CircleType = FIRST
}
}
Потом вы сможете вызывать эту функцию как CircleType.random().
Kotlin
Вопрос: Как создать «статический» метод для перечисления в Kotiln?
enum class CircleType {
FIRST,
SECOND,
THIRD;
companion object {
fun random(): CircleType = FIRST
}
}
Потом вы сможете вызывать эту функцию как CircleType.random().
🥱9👍3❤2🌚1