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

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

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

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

РКН: https://gosuslugi.ru/snet/67a4adec1b17b35b6c0d8389
Download Telegram
💵💻🌍 Как выйти на валютную удаленку и зарабатывать больше

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

Но реально ли получить такую работу, если ты живешь в другой стране и какие подводные камни мы разобрали в первой части статьи.

Что вы узнаете:

🔘 Плюсы и минусы работы на иностранные компании

🔘 Ключевые требования к кандидатам

🔘 Сложности, с которыми можно столкнуться

Если давно задумывались о переходе на валютную удаленку, но не знали, с чего начать — этот гайд для вас 🔗
Please open Telegram to view this post
VIEW IN TELEGRAM
😁1
Команды дня: cброс коммитов

Предположим, вы сделали коммит в своём проекте. Однако после проверки вы понимаете, что вам нужно скорректировать или полностью отменить последний коммит. Для таких случаев Git предоставляет следующие команды:

🔹 Soft reset

git reset --soft HEAD^


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

🔹 Mixed reset

git reset --mixed HEAD^


Это поведение по умолчанию, когда вы используете git reset HEAD^ без указания --soft или --hard. Он сбрасывает последний коммит и удаляет изменения из области подготовки. Однако эти изменения остаются в рабочей директории. Это полезно, когда вы хотите отменить последий коммит и внести изменения с нуля, сохранив изменения в рабочей директории перед повторным коммитом.

🔹 Hard reset

git reset --hard HEAD^


Напоследок давайте поговорим о команде git reset --hard HEAD^. Она полностью стирает последний коммит вместе со всеми связанными с ним изменениями из вашей истории Git. Когда вы используете флаг --hard, пути назад уже не будет. Поэтому используйте его с особой осторожностью, только если хотите навсегда удалить последний коммит и все его изменения.

Библиотека мобильного разработчика #буст
1
🦊 Альтернативы Firefox: обзор 4 лучших форков для тех, кто разочаровался в Mozilla

Приватность, скорость, расширенные функции — что выбрать? Разбираем популярные форки браузеров и их преимущества.

Что в статье:

✔️ Обзор самых популярных форков браузеров

✔️ Их ключевые фишки, плюсы и минусы

✔️ Как выбрать оптимальный вариант под ваши задачи

Браузер — это не просто окно в интернет, а инструмент, который должен соответствовать вашим требованиям. Делитесь своим опытом в комментариях! 🚀

Прочитать подробнее статью 🔗

🐸 Библиотека тестировщика
Please open Telegram to view this post
VIEW IN TELEGRAM
2👍2
🤔 Деньги или любимое дело?

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

Что важнее для вас: финансовая стабильность или удовлетворение от работы. Какой путь выберете вы? Голосуйте и пишите своё мнение в комментариях 💬

❤️ — работать не нелюбимой работе и много зарабатывать
🤝 — на любимой работе за маленькую зп

Библиотека мобильного разработчика #междусобойчик
15🤝14
📝 Шпаргалка: автозамыкание (autoclosure) в Swift

Автозамыкание оборачивает аргумент функции в замыкание.

Когда вызывается autoclosure, оно возвращает значение выражения, завернутого внутрь.

Автозамыкание — это не что иное, как синтаксическое удобство для написания более чистого кода.

Иногда синтаксически удобно использовать autoclosure при работе с функцией, которая принимает аргумент замыкания.

Это происходит потому, что autoclosure позволяет не использовать фигурные скобки {}.

Это может сделать код более читабельным.

Однако помните, что Apple говорит об использовании автозамыканий :

Обычно принято вызывать функции, которые принимают autoclosure, но не принято реализовывать такого рода функции.


Вот пример того, как autoclosure упрощает код. В первом фрагменте используется обычное замыкание, а во втором — autoclosure. Посмотрите, как вызов функции I_will стал более читабельным во втором фрагменте:


func I_will(_ perform_action: () -> Void) {
perform_action()
}
I_will({
print(«Hello, world!»)
})



func I_will(_ perform_action: @autoclosure () -> Void) {
perform_action()
}
I_will(print(«Hello, world»))


Как видите, вызов функции I_will больше не требует использования фигурных скобок.

Библиотека мобильного разработчика #буст
3😁1
🚰 Топ-7 утечек памяти Android

Утечки памяти — тихие убийцы производительности приложений. Даже в 2025 году, когда Jetpack Compose доминирует в разработке пользовательских интерфейсов и появляются новые модные инструменты, эти ошибки все еще преследуют разработчиков.

Автор статьи разберет 7 наиболее распространенных виновников и вооружит вас проверенными в бою решениями.

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

Библиотека мобильного разработчика #свежак
👍5🥱21
🗓️ Апрель будет насыщен конференциями и профильными тусовками разного масштаба.

🔹 Gamedev CityFest

Когда: 5 апреля
Где: Новосибирск
Формат: офлайн
Участие: платное

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

🔹 HolyJS 2025 Spring

Когда: 7-8 апреля
Где: Москва
Формат: онлайн и офлайн
Участие: платное

Спикеры на конференции разберут JS-разработку с разных ракурсов: веб-технологии, Node.js, графика и анимации, web3, блокчейн. Будут разобраны реальные кейсы и подняты вопросы безопасности. Участники обменяются опытом, обсудят обновление языка JavaScript, поговорят о фреймворках и инструментах, а также поучаствуют в дискуссиях со спикерами.

👉 Читать полностью

Библиотека мобильного разработчика #свежак
2
🎭 Dev Memes: 1 апреля, а баги всё те же

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

👉 Всё это — из нашего мемного канала «Библиотека IT-мемов»

Библиотека мобильного разработчика
😁7
🎰 Инструмент недели: SDK для скретч-карт

Scratchify — это легкий и настраиваемый SDK для скретч-карт, созданный с использованием Jetpack Compose Multiplatform (поддерживает Android и iOS). Он позволяет создавать интерактивные скретч-поверхности, на которых пользователи могут соскрести верхний слой, чтобы открыть скрытый под ней контент. Идеально подходит для поощрений, скидок, сюрпризов и элементов геймификации в вашем приложении.

⚙️ Scratchify на GitHub

Библиотека мобильного разработчика #буст
3
🧐 Разбираемся: FAANG — не мечта, а капкан

Раньше работа в Google или Meta казалась вершиной айтишной карьеры. Сейчас — всё чаще звучат слова «стресс», «сокращения», «выгорание».

➡️ В статье разбираем

— Почему бывшие сотрудники бегут из FAANG
— Как изменилась культура внутри Big Tech
— Где теперь искать стабильность и уважение
— Реальные комментарии от действующих инженеров
— И что на самом деле стоит за блестящей обёрткой FAANG

Если вы всё ещё решаете LeetCode ради «заветной должности» — обязательно прочитайте нашу статью.

📎 Ссылка

🔵 Включайся в обучение и устраивайся куда хочешь, тебя ждет продвинутый этап нашего курса «Алгоритмы и структуры данных»
Please open Telegram to view this post
VIEW IN TELEGRAM
1🤔1
📝 Промпт для идеального код ревью

Чтобы облегчить код ревью, используйте этот промпт для ChatGPT:

1. Проанализируй приведенный [язык] код на предмет признаков проблемного кода и предложи улучшения: [фрагмент кода].

2. Проверь [язык] код на предмет правильности логирования и мониторинга: [фрагмент кода].

3. Проанализируй [язык] код на предмет потенциальных проблем масштабируемости: [фрагмент кода].

4. Оцени тестовое покрытие этого [язык] кода: [фрагмент кода].

5. Оцени [язык] код на совместимость с [платформой или технологией]: [фрагмент кода].


Как вы обычно проводите код ревью? Делитесь в комментариях!

Библиотека мобильного разработчика #буст
🤩2
💻 How to: реализовать кастомный делегат

Чтобы написать кастомный делегат, нужно определить класс, который реализует интерфейс ReadOnlyProperty для делегата val или ReadWriteProperty для делегата var.

Классы, реализующие ReadOnlyProperty и ReadWriteProperty, содержат два метода:

getValue(thisRef: T, property: KProperty<*>): R, который должен возвращать значение свойства.

setValue(thisRef: T, property: KProperty<*>, value: R), который должен устанавливать значение свойства.

Например, рассмотрим создание кастомного делегата для логирования изменения значения свойства:

class LoggingDelegate(private var value: T) : ReadWriteProperty {override fun getValue(thisRef: Any?, property: KProperty): T {println(«Getting value of ${property.name}: $value»)return value}override fun setValue(thisRef: Any?, property: KProperty, value: T) {println(«Setting value of ${property.name} to $value»)this.value = value}}


Здесь мы определяем класс LoggingDelegate, который реализует интерфейс ReadWriteProperty. Метод getValue выводит в консоль текущее значение свойства и возвращает его, а метод setValue выводит новое значение свойства в консоль и сохраняет его в переменной value.

Затем мы можем использовать наш кастомный делегат следующим образом:

class MyClass {var myProperty: Int by LoggingDelegate(0)}fun main() {val obj = MyClass()obj.myProperty = 42 // Setting value of myProperty to 42println(obj.myProperty) // Getting value of myProperty: 42}


Здесь мы создаем экземпляр класса MyClass, который содержит свойство myProperty, использующее наш кастомный делегат LoggingDelegate. При установке значения свойства или получении его значения будут вызываться соответствующие методы нашего делегата, и мы увидим соответствующие сообщения в консоли.

👉 Подробнее в статье

Библиотека мобильного разработчика #буст
🤩2👍1