Деструктуризация в Kotlin с примерами
Деструктуризация в Kotlin — это функция, позволяющая легко распаковывать объекты в несколько переменных. Это делает ваш код чище и легче для чтения.
📖 Вот простое руководство по пониманию и использованию деструктуризации в Kotlin.
Деструктуризация в Kotlin — это функция, позволяющая легко распаковывать объекты в несколько переменных. Это делает ваш код чище и легче для чтения.
📖 Вот простое руководство по пониманию и использованию деструктуризации в Kotlin.
👍2
🔒 Используем библиотеку Android Security Lints для Android
Если вы используете последнюю версию Android Studio (Giraffe+), в ней уже есть несколько проверок безопасности, которые помогут вам выявить проблемы безопасности в коде. Эти проверки сопровождаются информативными описаниями и предложениями.
Однако если вы хотите внедрить проверки в линтере в свою кодовую базу как часть разработки, или если вам нужны самые последние рекомендации и проверки для дальнейшей защиты вашего приложения, вам стоит воспользоваться открытой библиотекой Google Android Security Lints.
Если вы используете последнюю версию Android Studio (Giraffe+), в ней уже есть несколько проверок безопасности, которые помогут вам выявить проблемы безопасности в коде. Эти проверки сопровождаются информативными описаниями и предложениями.
Однако если вы хотите внедрить проверки в линтере в свою кодовую базу как часть разработки, или если вам нужны самые последние рекомендации и проверки для дальнейшей защиты вашего приложения, вам стоит воспользоваться открытой библиотекой Google Android Security Lints.
👍2
Disk — хранение структур, изображений и данных
Disk — это простая, но мощная библиотека управления файлами, созданная с учетом рекомендаций Apple по хранению данных в iOS. Disk максимально эффективно использует новый протокол Codable, представленный в Swift 4, и дает вам возможность сохранять структуры, не заботясь о кодировании/декодировании. Disk также помогает сохранять изображения и другие типы данных на диск всего одной строкой кода.
Github
Disk — это простая, но мощная библиотека управления файлами, созданная с учетом рекомендаций Apple по хранению данных в iOS. Disk максимально эффективно использует новый протокол Codable, представленный в Swift 4, и дает вам возможность сохранять структуры, не заботясь о кодировании/декодировании. Disk также помогает сохранять изображения и другие типы данных на диск всего одной строкой кода.
Github
👍2
🌀 Вышел релиз Skip 1.0
Skip — это инструмент, который позволяет разрабатывать нативные приложения для обеих основных мобильных платформ с использованием единой кодовой базы. В своей основе он использует технологии, рекомендованные производителями для каждой ОС: Swift и Swift UI для iOS, Kotlin и Compose для Android.
Сам по себе Skip платный, но с релизом стабильной версии появился новый бесплатный тариф для инди.
Знакомство с инструментом
Skip — это инструмент, который позволяет разрабатывать нативные приложения для обеих основных мобильных платформ с использованием единой кодовой базы. В своей основе он использует технологии, рекомендованные производителями для каждой ОС: Swift и Swift UI для iOS, Kotlin и Compose для Android.
Сам по себе Skip платный, но с релизом стабильной версии появился новый бесплатный тариф для инди.
Знакомство с инструментом
❤4👍2
На каком этапе стоит обсуждать зарплату?
Anonymous Poll
29%
В описании вакансии
19%
Перед приглашением на собес
20%
На первом собеседовании
32%
По итогам собеседований?
В анонсе релиза Flutter 3.24 был представлен новый низкоуровневый графический API — Flutter GPU (до стабилизации API будет доступен в качестве пакета flutter_gpu), а также высокоуровневая библиотека для 3D-рендеринга — Flutter Scene (пакет: flutter_scene).
Flutter GPU — встроенный низкоуровневый графический API Flutter. Он позволяет создавать и интегрировать пользовательские рендеры в Flutter путем их написания на Dart и GLSL. При этом нет необходимости погружаться в омут платформозависимого нативного кода!
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4❤2
Вредные советы, как приходить с вопросами к техлиду
Давай представим, что мы с тобой работаем в компании Y техническим лидером, и к нам иногда приходят с разного рода вопросами (не только разработчики).
Посмотрим, как расплывчатые или неподготовленные запросы могут тратить время и вызывать раздражение.
Основная идея — призвать разработчиков быть более четкими, лаконичными и показывать, что они пытались решить проблему самостоятельно, прежде чем обращаться за помощью.
Давай представим, что мы с тобой работаем в компании Y техническим лидером, и к нам иногда приходят с разного рода вопросами (не только разработчики).
Посмотрим, как расплывчатые или неподготовленные запросы могут тратить время и вызывать раздражение.
Основная идея — призвать разработчиков быть более четкими, лаконичными и показывать, что они пытались решить проблему самостоятельно, прежде чем обращаться за помощью.
🥰1
Приглашенный спикер: Павел Запольский – Senior Quantitative Researcher at Exness и Co-founder GrowLytics. Запустивший более 10 проектов по машинному обучению и анализу данных для ведущих компаний.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1🌚1👾1
Enums с рекурсией в Swift
Как можно создавать перечисления, которые содержат ссылку на себя внутри. Это полезно для моделирования структур данных с иерархией. Чтобы реализовать такую рекурсию, используется ключевое слово indirect.
📖 В статье приводится пример, где описывается структура файловой системы и создается функция для подсчета элементов в ней.
Как можно создавать перечисления, которые содержат ссылку на себя внутри. Это полезно для моделирования структур данных с иерархией. Чтобы реализовать такую рекурсию, используется ключевое слово indirect.
📖 В статье приводится пример, где описывается структура файловой системы и создается функция для подсчета элементов в ней.
Задача с LeetCode по Swift
Описание: Дана строка s. Вернуть длину самой длинной подстроки, которая содержит не более двух различных символов.
Пример:
Алгоритм:
1. Вернуть N, если длина строки N меньше 3.
2. Установить оба указателя в начало строки: left = 0 и right = 0, и инициализировать максимальную длину подстроки max_len = 2.
3. Пока указатель right меньше N: Если хеш-таблица содержит менее 3 различных символов, добавить текущий символ s[right] в хеш-таблицу и сдвинуть указатель right вправо.
Если хеш-таблица содержит 3 различных символа, удалить самый левый символ из хеш-таблицы и сдвинуть указатель left так, чтобы скользящее окно содержало только 2 различных символа. Обновить max_len.
Решение:
Описание: Дана строка s. Вернуть длину самой длинной подстроки, которая содержит не более двух различных символов.
Пример:
Input: s = «eceba»
Output: 3
Explanation: The substring is «ece» which its length is 3.
Алгоритм:
1. Вернуть N, если длина строки N меньше 3.
2. Установить оба указателя в начало строки: left = 0 и right = 0, и инициализировать максимальную длину подстроки max_len = 2.
3. Пока указатель right меньше N: Если хеш-таблица содержит менее 3 различных символов, добавить текущий символ s[right] в хеш-таблицу и сдвинуть указатель right вправо.
Если хеш-таблица содержит 3 различных символа, удалить самый левый символ из хеш-таблицы и сдвинуть указатель left так, чтобы скользящее окно содержало только 2 различных символа. Обновить max_len.
Решение:
func lengthOfLongestSubstringTwoDistinct(_ s: String) -> Int {
let n = s.count
if n < 3 { return n }
let chars = Array(s)
var left = 0
var right = 0
var hashmap = [Character: Int]()
var max_len = 2
while right < n {
hashmap[chars[right]] = right
right += 1
if hashmap.count == 3 {
let del_idx = hashmap.values.min()!
hashmap.removeValue(forKey: chars[del_idx])
left = del_idx + 1
}
max_len = max(max_len, right - left)
}
return max_len
}
👍5
❗Вакансии «Библиотеки программиста» — ждем вас в команде!
Мы постоянно растем и развиваемся, поэтому создали отдельную страницу, на которой будут размещены наши актуальные вакансии. Сейчас мы ищем:
👉авторов в наше медиа proglib.io
👉контент-менеджеров для ведения телеграм-каналов
Подробности тут
Мы предлагаем частичную занятость и полностью удаленный формат работы — можно совмещать с основной и находиться в любом месте🌴
Ждем ваших откликов 👾
Мы постоянно растем и развиваемся, поэтому создали отдельную страницу, на которой будут размещены наши актуальные вакансии. Сейчас мы ищем:
👉авторов в наше медиа proglib.io
👉контент-менеджеров для ведения телеграм-каналов
Подробности тут
Мы предлагаем частичную занятость и полностью удаленный формат работы — можно совмещать с основной и находиться в любом месте🌴
Ждем ваших откликов 👾
ad.proglib.io
Вакансии в медиа «Библиотека программиста»
Количество проектов в редакции постоянно растет, так что нам всегда нужны специалисты
🚀 Продвинутая шпаргалка по Kotlin Flow
Шпаргалка, которая поможет вам глубже разобраться в работе с Kotlin Flow в Android-разработке. Если уже знакомы с базой Kotlin Flow, но хотите узнать больше о каналах, комбинировании потоков и разнице между SharedFlow и StateFlow — эта находка для вас.
Начинается статья с пояснения различий между холодными и горячими потоками. Далее рассматриваются каналы — мощный инструмент, позволяющий управлять потоками данных между корутинами.
📖 Целиком статья c примерами доступна по ссылке.
Шпаргалка, которая поможет вам глубже разобраться в работе с Kotlin Flow в Android-разработке. Если уже знакомы с базой Kotlin Flow, но хотите узнать больше о каналах, комбинировании потоков и разнице между SharedFlow и StateFlow — эта находка для вас.
Начинается статья с пояснения различий между холодными и горячими потоками. Далее рассматриваются каналы — мощный инструмент, позволяющий управлять потоками данных между корутинами.
📖 Целиком статья c примерами доступна по ссылке.
👍1
⚔️ Flutter против React Native — тест производительности
Когда речь заходит о разработке мобильных приложений, выбор между Flutter и React Native часто упирается в соображения производительности. Хотя у обоих фреймворков есть свои сторонники, для многих из нас важны реальные результаты бенчмарков.
Очень мало сравнительных бенчмарков для Flutter и React Native, да и те что есть, довольно старые.
Поэтому, тщательное сравнение текущих версий Flutter и React Native с точки зрения размера приложений, использования памяти и процессора в текущих версиях.
Когда речь заходит о разработке мобильных приложений, выбор между Flutter и React Native часто упирается в соображения производительности. Хотя у обоих фреймворков есть свои сторонники, для многих из нас важны реальные результаты бенчмарков.
Очень мало сравнительных бенчмарков для Flutter и React Native, да и те что есть, довольно старые.
Поэтому, тщательное сравнение текущих версий Flutter и React Native с точки зрения размера приложений, использования памяти и процессора в текущих версиях.
🥱2🔥1
Forwarded from Библиотека программиста | программирование, кодинг, разработка
🐘🧠 Оптимизация использования памяти в PostgreSQL: секреты профессионалов
Сложные (и многочисленные) операции в базе данных требуют солидного объема оперативной памяти — например, для создания набора результатов PostgreSQL обычно приходится:
🔹 Выполнить поиск по индексу.
🔹 Извлечь связанные строки из одной или нескольких таблиц.
🔹 Объединить, отфильтровать, агрегировать и отсортировать кортежи в пригодный для использования результат.
Каждый из этих шагов требует памяти, и PostgreSQL может обрабатывать тысячи таких запросов одновременно. Так что рано или поздно перед разработчиками любого серьезного проекта встает необходимость решения нескольких сложных вопросов:
🔹 Как грамотно оптимизировать использование доступной памяти?
🔹 В каком соотношении распределить ОЗУ между несколькими типами памяти, которые необходимы PostgreSQL для эффективной работы?
🔹 Как предотвратить защитное завершение операционной системой процесса PostgreSQL, который использует слишком много памяти?
Для ответов на все эти вопросы нужно определить, сколько именно памяти использует PostgreSQL для основных процессов — а это сама по себе нетривиальная задача. Советы по настройке памяти так многочисленны и разнообразны, что в них сложно сориентироваться.
Поэтому в этой статье мы сведем всю мудрость экспертов к конкретным шагам, которые помогут максимально эффективно распорядиться доступной памятью.
🔗 Читать статью
🔗 Зеркало
Сложные (и многочисленные) операции в базе данных требуют солидного объема оперативной памяти — например, для создания набора результатов PostgreSQL обычно приходится:
🔹 Выполнить поиск по индексу.
🔹 Извлечь связанные строки из одной или нескольких таблиц.
🔹 Объединить, отфильтровать, агрегировать и отсортировать кортежи в пригодный для использования результат.
Каждый из этих шагов требует памяти, и PostgreSQL может обрабатывать тысячи таких запросов одновременно. Так что рано или поздно перед разработчиками любого серьезного проекта встает необходимость решения нескольких сложных вопросов:
🔹 Как грамотно оптимизировать использование доступной памяти?
🔹 В каком соотношении распределить ОЗУ между несколькими типами памяти, которые необходимы PostgreSQL для эффективной работы?
🔹 Как предотвратить защитное завершение операционной системой процесса PostgreSQL, который использует слишком много памяти?
Для ответов на все эти вопросы нужно определить, сколько именно памяти использует PostgreSQL для основных процессов — а это сама по себе нетривиальная задача. Советы по настройке памяти так многочисленны и разнообразны, что в них сложно сориентироваться.
Поэтому в этой статье мы сведем всю мудрость экспертов к конкретным шагам, которые помогут максимально эффективно распорядиться доступной памятью.
🔗 Читать статью
🔗 Зеркало
📊 Топ быстрорастущих приложений в России в августе
На первой фотографии топ роста по загрузкам. На второй топ самых быстрорастущих по выручке приложений.
#аналитика #новость
На первой фотографии топ роста по загрузкам. На второй топ самых быстрорастущих по выручке приложений.
#аналитика #новость
OTP Helper — автоматическое получение кодов из уведомлений
Приложение с открытым исходным кодом, которое позволяет автоматически копировать OTP и коды из SMS и уведомлений, читая все ваши уведомления. Приложение работает полностью автономно и без доступа к интернету. Поэтому, по идее, ваши данные не покидают устройство.
Ссылка на GitHub 🔗
#библиотека #github
Приложение с открытым исходным кодом, которое позволяет автоматически копировать OTP и коды из SMS и уведомлений, читая все ваши уведомления. Приложение работает полностью автономно и без доступа к интернету. Поэтому, по идее, ваши данные не покидают устройство.
Ссылка на GitHub 🔗
#библиотека #github
🔥3👍2
🔎 Отслеживание утечек памяти в iOS-приложении со SwiftUI в Runtime
Рано или поздно каждый проект сталкивается с проблемой утечек памяти: растёт её использование, в отдельных сценариях приложение ведёт себя странно или вовсе аварийно завершается. Начинается долгий и мучительный поиск причин утечки и отладка кода.
SwiftUI затрудняет решение задачи: из-за декларативности подхода и отсутствия явно выраженного жизненного цикла в UI, обнаружить причину утечки памяти сложнее.
Рано или поздно каждый проект сталкивается с проблемой утечек памяти: растёт её использование, в отдельных сценариях приложение ведёт себя странно или вовсе аварийно завершается. Начинается долгий и мучительный поиск причин утечки и отладка кода.
SwiftUI затрудняет решение задачи: из-за декларативности подхода и отсутствия явно выраженного жизненного цикла в UI, обнаружить причину утечки памяти сложнее.
👍1
Forwarded from Библиотека разработчика игр | Gamedev, Unity, Unreal Engine
🎮📖 Библиотека геймдизайнера: 10 must-read книг 2024 года
От концепции до реализации, от баланса до монетизации – представляем вашему вниманию 10 ключевых книг 2024 года, которые помогут вам достичь новых высот в геймдеве.
👉 Статья
От концепции до реализации, от баланса до монетизации – представляем вашему вниманию 10 ключевых книг 2024 года, которые помогут вам достичь новых высот в геймдеве.
👉 Статья
👏2😁2