Библиотека мобильного разработчика | Android, iOS, Swift, Retrofit, Moshi, Chuck
9.81K subscribers
1.47K photos
72 videos
52 files
4.24K links
Все самое полезное для мобильного разработчика в одном канале.

По рекламе: @proglib_adv

Учиться у нас: https://proglib.io/w/b60af5a4

Для обратной связи: @proglibrary_feeedback_bot

РКН: https://gosuslugi.ru/snet/67a4adec1b17b35b6c0d8389
Download Telegram
Disk — хранение структур, изображений и данных

Disk — это простая, но мощная библиотека управления файлами, созданная с учетом рекомендаций Apple по хранению данных в iOS. Disk максимально эффективно использует новый протокол Codable, представленный в Swift 4, и дает вам возможность сохранять структуры, не заботясь о кодировании/декодировании. Disk также помогает сохранять изображения и другие типы данных на диск всего одной строкой кода.

Github
👍2
🌀 Вышел релиз Skip 1.0

Skip — это инструмент, который позволяет разрабатывать нативные приложения для обеих основных мобильных платформ с использованием единой кодовой базы. В своей основе он использует технологии, рекомендованные производителями для каждой ОС: Swift и Swift UI для iOS, Kotlin и Compose для Android.

Сам по себе Skip платный, но с релизом стабильной версии появился новый бесплатный тариф для инди.

Знакомство с инструментом
4👍2
👁️‍🗨 Знакомимся с Flutter GPU

В анонсе релиза 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
👍42
Вредные советы, как приходить с вопросами к техлиду

Давай представим, что мы с тобой работаем в компании Y техническим лидером, и к нам иногда приходят с разного рода вопросами (не только разработчики).

Посмотрим, как расплывчатые или неподготовленные запросы могут тратить время и вызывать раздражение.

Основная идея — призвать разработчиков быть более четкими, лаконичными и показывать, что они пытались решить проблему самостоятельно, прежде чем обращаться за помощью.
🥰1
🤔 Как меняется математика в разных индустриях: от мобильных игр к фондовым рынкам

🗓 22 августа в прямом эфире разберем как математика применяется в разных отраслях бизнеса. И какие математические навыки необходимы для успешной работы в каждой из них.

Приглашенный спикер: Павел Запольский – Senior Quantitative Researcher at Exness и Co-founder GrowLytics. Запустивший более 10 проектов по машинному обучению и анализу данных для ведущих компаний.

😮 На вебинаре узнаете:

🔵 Математика в бизнесе: Чем отличаются разные сферы друг от друга. Почему стоит понимать специфику сферы
🔵 ML и продуктовое IT: Чем различается математическая сложность от индустрии к индустрии. Какие к ним необходимы уровни подготовки
🔵 Баевская математика в GameDev. Баевская математика как альтернатива AB тестированию. Как математические методы применяются в разработке игр
🔵 Finance: Что такое количественные финансы и математическое моделирование. Обсудим текущие индустриальные тренды в отрасли
🔵 Backtest: Как знания математики делают ваши активы более надежными
🔵 На практике подробно разберем два математических кейса по GameDev и Backtest.

➡️ Зарегистрироваться: https://proglib.io/w/99bd4c1f
Please open Telegram to view this post
VIEW IN TELEGRAM
1🌚1👾1
Enums с рекурсией в Swift

Как можно создавать перечисления, которые содержат ссылку на себя внутри. Это полезно для моделирования структур данных с иерархией. Чтобы реализовать такую рекурсию, используется ключевое слово indirect.

📖 В статье приводится пример, где описывается структура файловой системы и создается функция для подсчета элементов в ней.
Задача с LeetCode по Swift

Описание:
Дана строка 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
👉контент-менеджеров для ведения телеграм-каналов

Подробности тут

Мы предлагаем частичную занятость и полностью удаленный формат работы — можно совмещать с основной и находиться в любом месте🌴

Ждем ваших откликов 👾
🚀 Продвинутая шпаргалка по Kotlin Flow

Шпаргалка, которая поможет вам глубже разобраться в работе с Kotlin Flow в Android-разработке. Если уже знакомы с базой Kotlin Flow, но хотите узнать больше о каналах, комбинировании потоков и разнице между SharedFlow и StateFlow — эта находка для вас.

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

📖 Целиком статья c примерами доступна по ссылке.
👍1
⚔️ Flutter против React Native — тест производительности

Когда речь заходит о разработке мобильных приложений, выбор между Flutter и React Native часто упирается в соображения производительности. Хотя у обоих фреймворков есть свои сторонники, для многих из нас важны реальные результаты бенчмарков.

Очень мало сравнительных бенчмарков для Flutter и React Native, да и те что есть, довольно старые.

Поэтому, тщательное сравнение текущих версий Flutter и React Native с точки зрения размера приложений, использования памяти и процессора в текущих версиях.
🥱2🔥1
Forwarded from Библиотека программиста | программирование, кодинг, разработка
🐘🧠 Оптимизация использования памяти в PostgreSQL: секреты профессионалов

Сложные (и многочисленные) операции в базе данных требуют солидного объема оперативной памяти — например, для создания набора результатов PostgreSQL обычно приходится:

🔹 Выполнить поиск по индексу.
🔹 Извлечь связанные строки из одной или нескольких таблиц.
🔹 Объединить, отфильтровать, агрегировать и отсортировать кортежи в пригодный для использования результат.

Каждый из этих шагов требует памяти, и PostgreSQL может обрабатывать тысячи таких запросов одновременно. Так что рано или поздно перед разработчиками любого серьезного проекта встает необходимость решения нескольких сложных вопросов:

🔹 Как грамотно оптимизировать использование доступной памяти?
🔹 В каком соотношении распределить ОЗУ между несколькими типами памяти, которые необходимы PostgreSQL для эффективной работы?
🔹 Как предотвратить защитное завершение операционной системой процесса PostgreSQL, который использует слишком много памяти?

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

Поэтому в этой статье мы сведем всю мудрость экспертов к конкретным шагам, которые помогут максимально эффективно распорядиться доступной памятью.

🔗 Читать статью
🔗 Зеркало
📊 Топ быстрорастущих приложений в России в августе

На первой фотографии топ роста по загрузкам. На второй топ самых быстрорастущих по выручке приложений.

#аналитика #новость
OTP Helper — автоматическое получение кодов из уведомлений

Приложение с открытым исходным кодом, которое позволяет автоматически копировать OTP и коды из SMS и уведомлений, читая все ваши уведомления. Приложение работает полностью автономно и без доступа к интернету. Поэтому, по идее, ваши данные не покидают устройство.

Ссылка на GitHub 🔗

#библиотека #github
🔥3👍2
🔎 Отслеживание утечек памяти в iOS-приложении со SwiftUI в Runtime

Рано или поздно каждый проект сталкивается с проблемой утечек памяти: растёт её использование, в отдельных сценариях приложение ведёт себя странно или вовсе аварийно завершается. Начинается долгий и мучительный поиск причин утечки и отладка кода.

SwiftUI затрудняет решение задачи: из-за декларативности подхода и отсутствия явно выраженного жизненного цикла в UI, обнаружить причину утечки памяти сложнее.
👍1
Forwarded from Библиотека разработчика игр | Gamedev, Unity, Unreal Engine
🎮📖 Библиотека геймдизайнера: 10 must-read книг 2024 года

От концепции до реализации, от баланса до монетизации – представляем вашему вниманию 10 ключевых книг 2024 года, которые помогут вам достичь новых высот в геймдеве.

👉 Статья
👏2😁2
🧑‍💻 Статьи для IT: как объяснять и распространять значимые идеи

Напоминаем, что у нас есть бесплатный курс для всех, кто хочет научиться интересно писать — о программировании и в целом.

Что: семь модулей, посвященных написанию, редактированию, иллюстрированию и распространению публикаций.

Для кого: для авторов, копирайтеров и просто программистов, которые хотят научиться интересно рассказывать о своих проектах.

👉Материалы регулярно дополняются, обновляются и корректируются. А еще мы отвечаем на все учебные вопросы в комментариях курса.