Библиотека мобильного разработчика | 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
🧐 Разбираемся: 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
⚔️ Микросервисы vs. Монолит

В мире разработки программного обеспечения выбор архитектурного подхода — это один из самых важных и стратегических шагов.

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

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

❤️ — Микросервисы
🤝 — Монолит

Библиотека мобильного разработчика #междусобойчик
🤝86🥱4
⛓️ Распутываем легаси-код на Android проекте

Попадая на новый проект с долгой историей, вас неизбежно ждёт легаси-код. Возможно, проект прошёл через несколько команд, и теперь он в ваших руках. Бывает, что на проекте уже нет контекст-овнера, а на любой вопрос тимлид отвечает: «Так исторически сложилось».

Приложение может тормозить, состояние определяться десятками мутабельных переменных. Фризы, утечки памяти, файлы на сотни, а то и тысячи строк кода. Год-обжекты. Знакомо?

Автор даёт несколько советов, которые помогут разобраться в происходящем и распутать спагетти-код.

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

Библиотека мобильного разработчика #свежак
2😢1
17 формул, которые изменили мир

Математика в действии — как уравнения, придуманные века назад, сегодня управляют интернетом, медициной, космосом и вашими финансами.

➡️ Что внутри статьи:
— Как египтяне строили пирамиды с помощью математики
— Почему Wi-Fi и JPEG невозможны без преобразования Фурье
— Что объединяет кота Шредингера и квантовые компьютеры
— Как формула Гаусса управляет фондовыми рынками
— И при чём тут Джеймс Гарфилд и i² = –1

🔗 Читайте статью

🔵 Начинайте свой путь в программировании и прокачивайте свои навыки с нашим курсом «Основы программирования на Python»

Proglib Academy
Please open Telegram to view this post
VIEW IN TELEGRAM
1
😎 «Вайб-кодинг»: почему доверить свой проект ИИ – это кринж

Новый тренд среди разработчиков — «вайб-кодинг». Это когда ты не продумываешь архитектуру, не пишешь руками, а просто даёшь задание ИИ и ждёшь, что он всё сам сделает. Быстро, магически… и с кучей подводных камней.

Что в статье:

😗 Как «вайб-кодинг» реально работает (или не работает);

😗 Какие ошибки делают даже самые продвинутые модели;

😗 Почему проект, собранный ИИ, чаще всего выглядит как полуфабрикат.

Это не нытьё про «машины нас заменят», а здравый взгляд на технологии без розовых очков.

👉 Читайте статью, обсуждайте, спорьте
Please open Telegram to view this post
VIEW IN TELEGRAM
2🥱2🤝1
🔥 Мобильные разработчики, нужен ваш совет!

Пилим крутую подборку ноутов для кодеров в 2025-м и хотим собрать реальный фидбек от тех, кто в теме!

Какой ноут спасает вас в кодинге и почему?

Расскажите все:

▪️ Что за зверь (модель, начинка)

▪️ Где жмет и где радует в ежедневной работе

▪️ На какие фишки смотреть при выборе

▪️Как вам с ним живется

Топовые советы попадут в нашу статью!

Делитесь в комментах 👇 Сделаем годный гайд, который реально поможет коллегам!

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

#междусобойчик
1
💻 Конкатенация против интерполяции текста в SwiftUI

SwiftUI позволяет нам объединять несколько представлений текста в одно представление с помощью оператора плюс (+). Это позволяет нам применять разные стили к отдельным частям текста.

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

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

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

#свежак
2🥱1
🧱⛏️ Чекни свой крафт: 8 признаков, что разработчик слишком залип в Minecraft

Думаешь, что твоя продуктивность падает из-за багов в коде? А может, все дело в том, что ты мысленно фармишь крипперов, пока твой PM объясняет задачу? Пройди наш тест и узнай, насколько глубоко ты провалился в пиксельную кроличью нору!

Пройти тест

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

#междусобойчик
🤩4🥱1
💻 How to: Mutating

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

Например:

struct Fruit {
var type: Stringmutating func convertToBanana() {
self.type = «Banana»
}}
var fruit = Fruit(type: «Apple»)
fruit.convertToBanana()
print(fruit.type)
// prints «Banana»


По умолчанию это невозможно для типов значений (структур и перечислений), но возможно для ссылочных типов (классов).

Библиотека мобильного разработчика #буст
😁1🥱1
Мобильные разработчики!

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

➡️Поддержать канал: https://t.iss.one/boost/mobileproglib
Please open Telegram to view this post
VIEW IN TELEGRAM
2👍5👾1
💭 Облачная среда разработки с AI-ассистентом: обзор GigaIDE Cloud в деталях

СберТех представил GigaIDE Cloud — первую российскую облачную среду разработки с ИИ, встроенную в GitVerse.

Что в статье:

🔜 Кому и зачем стоит попробовать GigaIDE Cloud

🔜 Как запускать проекты с шаблонов и работать с репозиториями

🔜 Как настраивается среда под себя (да, с расширениями от VS Code)

🔜 Как работает AI-ассистент GigaCode и в чём он реально помогает

Забудьте про настройку окружения и тяжёлый ноутбук — GigaIDE Cloud запускает проекты за секунды прямо в браузере.

Читай обзор, как это работает на практике 🔗
Please open Telegram to view this post
VIEW IN TELEGRAM
🥱3👏1
Команда дня: find + xargs

Хотите быстро найти и обработать все файлы определенного типа?
Вот однострочник, который поможет:

find . -name «*.js» -type f | xargs grep «TODO»


🎯 Что делает:
— Ищет все .js файлы в текущей директории и поддиректориях
— Находит все строки с «TODO» в этих файлах
— Выводит результаты с именами файлов

Добавьте -1 к grep, чтобы видеть только имена файлов:
find . -name «*.js» -type f | xargs grep -l «TODO»

👀 Не забудьте:
— Команда работает в терминале Unix-подобных систем
— Для Windows используйте Git Bash или WSL
— У PowerShell другой синтаксис для подобных операций

Библиотека мобильного разработчика #буст
👍2
👨‍💻 Как правильно организовать проект c модульной архитектурой

В iOS-приложениях модульная архитектура становится все более популярной, обеспечивая гибкость и масштабируемость проектов. Этот подход упрощает сопровождение и развитие приложений, особенно при увеличении кодовой базы и функциональности.

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

В этом материале автор расскажет про ключевые моменты модульной архитектуры в iOS-приложениях, инструментах для её внедрения и применения в проектах.

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

Библиотека мобильного разработчика #буст
👍2
🤔 Задача по Kotlin lists

Есть задание — лист элементов. Ваша задача вставить один оператор, чтобы получилось значение в комментариях, которое стоит после знака =.

listOf(1, 3, 3, 2, 4, 1)
//missed operator
.sum()
.let
{ println(it) }
//=15


Ответ:

В этой задаче нужно сложить сумму индексов.

.indices

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

#междусобойчик
4🥱2🔥1🌚1