Библиотека мобильного разработчика | Android, iOS, Swift, Retrofit, Moshi, Chuck – Telegram
Библиотека мобильного разработчика | Android, iOS, Swift, Retrofit, Moshi, Chuck
9.52K subscribers
1.71K photos
84 videos
52 files
4.53K links
Все самое полезное для мобильного разработчика в одном канале.

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

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

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

РКН: https://gosuslugi.ru/snet/67a4adec1b17b35b6c0d8389
Download Telegram
⚙️ git bisect – бинарный поиск коммита, который сломал ваш код

Встроенный в Git инструмент для автоматического поиска коммита, который внёс баг или регрессию. Работает по принципу бинарного поиска — находит проблемный коммит за O(log n) шагов.

📌 Как это работает:

• Вы указываете «хороший» коммит (где всё работало)
• Указываете «плохой» коммит (где баг появился)
• Git автоматически перемещает вас по истории
• Вы проверяете каждый коммит и говорите «хорошо» или «плохо»
• Git находит точный коммит с ошибкой

✏️ Базовое использование:

Запуск бинарного поиска:

# Начать поиск
git bisect start

# Указать плохой коммит (обычно текущий)
git bisect bad HEAD

# Указать хороший коммит (например, тег релиза)
git bisect good v1.2.0

# Или по хешу
git bisect good abc123def|


Автоматический поиск:


# Git будет автоматически переключаться между коммитами
# После каждого переключения проверяйте наличие бага:

# Если баг ЕСТЬ в текущем коммите:
git bisect bad

# Если бага НЕТ в текущем коммите:
git bisect good

# Git продолжит поиск, пока не найдёт проблемный коммит


⚡️ Автоматизация:

Скрипт для автоматической проверки:

# Создайте скрипт test.sh, который возвращает 0 если тесты проходят, 1 если падают
git bisect start HEAD v1.2.0
git bisect run ./test.sh # Git сам запустит скрипт на каждом коммите


Для мобильной разработки:

#!/bin/bash
# bisect-test.sh для iOS
xcodebuild test -scheme MyApp -destination 'platform=iOS Simulator,name=iPhone 15'
if [ $? -eq 0 ]; then
exit 0 # good
else
exit 1 # bad
fi


📊 Полезные команды:

Прервать поиск:

git bisect reset


Показать текущий статус:

git bisect status


Пометить все коммиты как проверенные:

git bisect replay


📌 Лучшие вакансии для мобильных разработчиков

🐸 Библиотека мобильного разработчика

#буст #JuniorKit
Please open Telegram to view this post
VIEW IN TELEGRAM
🤩2🥱2
🎮 Transferable в Swift: как ваши данные могут путешествовать между приложениями

Протокол Transferable в Swift — это мощный инструмент, который позволяет вашим пользовательским типам данных легко участвовать в системных операциях, таких как перетаскивание (Drag & Drop), копирование-вставка и общий доступ. По сути, он «учит» систему, как преобразовать вашу модель в данные для передачи и как восстановить её на другом конце.

🔹 Зачем это нужно?

🔘 Совместное использование данных: Пользователи могут копировать ваши объекты, перетаскивать их и делиться ими с другими приложениями.

🔘 Работа с системными элементами UI: Ваши типы автоматически становятся совместимыми с PasteButton, ShareLink и модификаторами для Drag & Drop.

🔘 Универсальность: Один и тот же объект может быть представлен по-разному (например, как полные данные для Drop и как текст для вставки в текстовое поле).

🔹 Как это работает?

Суть в реализации вычисляемого свойства transferRepresentation. Вам нужно описать, как ваш тип «экспортируется» в данные и «импортируется» обратно.

Основные способы представления:

🔘 CodableRepresentation: Самый простой способ, если ваш тип уже соответствует Codable.
🔘 DataRepresentation: Для преобразования объекта в бинарные данные (например, Data).
🔘 FileRepresentation: Если ваш тип представляет собой файл (изображение, PDF).
🔘 ProxyRepresentation: Позволяет использовать другой Transferable-тип (например, String) для представления вашего объекта в определённых контекстах.

🔹 Практический пример

Допустим, у нас есть структура Post, и мы хотим, чтобы её можно было копировать как текст.

import SwiftUI
import UniformTypeIdentifiers

struct Post: Codable, Transferable {
var text: String

static var transferRepresentation: some TransferRepresentation {
DataRepresentation(contentType: .plainText) { post in
// Экспорт: Post -> Data
post.text.data(using: .utf8) ?? Data()
} importing: { data in
// Импорт: Data -> Post
let content = String(decoding: data, as: UTF8.self)
return Post(text: content)
}
// Дополнительно: можно добавить текстовое представление
ProxyRepresentation(exporting: \.noscript)
}
}


🔹 Итог и совет

🔘 Результат: После добавления соответствия протоколу Transferable ваш тип можно использовать с ShareLink(post), PasteButton(payload: post), а также сделать его перетаскиваемым с модификатором .draggable(post).

🔘 Ключевой выбор: Основная задача — правильно выбрать тип Representation, который лучше всего подходит для вашей модели данных (Codable, Data, File или Proxy).

🔘 Для собственных форматов: Если вы создаёте уникальный формат данных, не забудьте объявить для него Uniform Type Identifier (UTI) в настройках проекта.

Этот протокол открывает двери к гораздо более глубокой и естественной интеграции вашего приложения в экосистему iOS, iPadOS и macOS, делая взаимодействие с данными плавным и интуитивно понятным для пользователя.

📌 Лучшие вакансии для мобильных разработчиков

🐸 Библиотека мобильного разработчика

#АрхитектурныйКод #MiddlePath #Swift
Please open Telegram to view this post
VIEW IN TELEGRAM
1
🤖 5 профессий в IT, которые появились благодаря ИИ

Искусственный интеллект не только автоматизирует рутинные задачи, но и создает новые профессии, о которых еще несколько лет назад никто не слышал. Какие именно — рассказываем в этой статье.

👉 Читать статью

📌 Лучшие вакансии для мобильных разработчиков

🐸 Библиотека мобильного разработчика

#MadeInProglib
Please open Telegram to view this post
VIEW IN TELEGRAM
❤️❤️❤️❤️❤️❤️❤️❤️

Атмосфера Нового года по-айтишному 🎄

Это когда гирлянды не на окне, а за монитором, а настроение приходит с Новогодним Git Quest от SourceCraft 🎅

Что ждёт внутри:

🤩 Новогодние задания для тех, кто хочет узнать что-то новое про Git.
🤩 Пасхалки и секретные части заданий.
🤩 Соревновательная часть с рейтингом — получай очки за активность.
🤩 Дополнительные баллы за скорость выполнения.

Задания открываются по одному каждые два дня в 00:00 МСК — с 10 по 30 декабря.
Ищите их на странице квеста. Кстати, там уже доступно первое тренировочное задание.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1🔥1
⌨️ Топ вакансий для мобильных разработчиков за неделю

IOS-разработчик — удалёнка

Senior Android Developer — гибрид (Санкт-Петербург)

iOS Developer (Part-Time) — от 1 000 $, удалёнка

Android-разработчик Middle+ — до 300 000 ₽, удалёнка

Middle iOS Developer — от 300 000 ₽, удалёнка

➡️ Еще больше топовых вакансий —‍ в нашем канале Mobile jobs

🐸 Библиотека мобильного разработчика

#свежак
Please open Telegram to view this post
VIEW IN TELEGRAM
🎨 MaterialKolor — динамическая цветовая схема Material3 из исходного цвета

MaterialKolor — библиотека Compose Multiplatform для создания динамических цветовых палитр Material Design 3 из любого цвета. Доступные платформы: Android, iOS, JVM (Desktop) и JavaScript/wasm (браузер). Основу этой библиотеки составляет репозиторий material-color-utilities. ||

В настоящее время это библиотека доступна только на Java, и автор хотел сделать её доступной для проектов Kotlin Multiplatform. Исходный код был взят и преобразован в библиотеку Kotlin Multiplatform.

💻 MaterialKolor на GitHub

📌 Лучшие вакансии для мобильных разработчиков

🐸 Библиотека мобильного разработчика

#буст #Android
Please open Telegram to view this post
VIEW IN TELEGRAM
1
🆕 Опенсорс-библиотека Implicits от Яндекс Браузера

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

Эту проблему решают в разных языках: Scala, Kotlin, Android. В Swift же встроенного решения нет. Поэтому команда Яндекс Браузере сделала open-source библиотеку Implicits — механизм неявной передачи зависимостей с проверкой на этапе компиляции.

В статье автор расскажет о поиске собственного подхода. Внедрение Implicits сокращает boilerplate, ускоряет рефакторинг и улучшает читаемость кода — зависимости объявляются локально там, где реально используются. Также покажет примеры из продакшен-кода Яндекс Браузера.

👉 Читать статью

📌 Лучшие вакансии для мобильных разработчиков

🐸 Библиотека мобильного разработчика

#свежак #iOS
Please open Telegram to view this post
VIEW IN TELEGRAM