Telegram Web
🤔 Деньги или любимое дело?

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

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

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

Библиотека мобильного разработчика #междусобойчик
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

Библиотека мобильного разработчика #буст
2
🧐 Разбираемся: 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
2025/07/13 03:45:09
Back to Top
HTML Embed Code: