Достоинства функционального программирования (ФП) и объектно-ориентированного программирования (ООП) — предмет нескончаемых дебатов на любом техническом онлайн форуме.
Хоть и трудно однозначно сказать, какое программирование лучше, их всегда можно сравнить и понять, который из двух больше подходит для разработки ваших приложений.
Объектно-ориентированное программирование и функциональное программирование преследуют одну и ту же цель — разработка программ, которые просты для понимания и не содержат ошибок. Однако в их основе лежит разный подход.
Что предпочитаете вы? Голосуйте и пишите своё мнение в комментариях
❤️ — ФП
👍 — ООП
🤝 — ФП + ООП
#междусобойчик
Please open Telegram to view this post
VIEW IN TELEGRAM
🤝26👍4❤3
В карточках рассказали, как увеличить вашу видимость и привлекательность для потенциальных работодателей, тем самым сокращая время поиска работы и увеличивая вероятность успешного трудоустройства.
#свежак
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2🔥1
Приготовили для вас дайджест по актуальному из мира iOS, Android и кроссплатформы.
#свежак
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2
Please open Telegram to view this post
VIEW IN TELEGRAM
❤4
🔥 Вы ещё можете застать старый добрый Proglib — с вечным доступом к курсам.
С 1 августа всё меняется: навсегда — останутся только те, кто успел купить сейчас.
-40% на все курсы. Включая обновлённый Python (кроме курса по AI-агентам)
Это не просто распродажа. Это — последняя точка входа в Proglib Academy по старым правилам.
📚 Выбрать и забрать свой курс навсегда → https://clc.to/TBtqYA
С 1 августа всё меняется: навсегда — останутся только те, кто успел купить сейчас.
-40% на все курсы. Включая обновлённый Python (кроме курса по AI-агентам)
Это не просто распродажа. Это — последняя точка входа в Proglib Academy по старым правилам.
📚 Выбрать и забрать свой курс навсегда → https://clc.to/TBtqYA
Senior Java/Kotlin Developer — от 4 000 до 5 000 $, удалёнка
Flutter Developer — от 100 000 до 300 000₽, удалёнка
Разработчик программного обеспечения (iOS) — гибрид (Москва)
iOS Developer — от 4 000 до 5 500 $, гибрид (Москва)
Junior iOS Developer — удалёнка
#свежак
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1
Torrent Search — современное приложение для Android с дизайном Material 3 для поиска и загрузки торрентов с нескольких трекеров.
Фичи: дизайн Material 3, разные категории поиска, управление скачиванием (самого торрент-клиента нет, направляет к другим приложениям), включение или выключение NSFW контента.
#буст
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2
👾 Переходишь на Compose? Не спеши!
Вас влечет мир Jetpack Compose или вы уже на пороге перехода с View на этот фреймворк? Может, вы уже в процессе миграции или просто исследуете новые горизонты Android? Если да, то доклад Максима о переходе проекта с View на Compose сможет вас заинтересовать.
Спикер поделился тремя ключевыми кейсами-вызовами, с которыми столкнулись в процессе перехода:
• Работа с вложенными скроллами и свайпами.
• Использование Compose в RecyclerView.
• И наиболее значимая задача — решение проблемы медленного первого запуска, вызванной особенностью Compose как unbundled library.
👀 Смотреть доклад
🐸 Библиотека мобильного разработчика
#свежак
Вас влечет мир Jetpack Compose или вы уже на пороге перехода с View на этот фреймворк? Может, вы уже в процессе миграции или просто исследуете новые горизонты Android? Если да, то доклад Максима о переходе проекта с View на Compose сможет вас заинтересовать.
Спикер поделился тремя ключевыми кейсами-вызовами, с которыми столкнулись в процессе перехода:
• Работа с вложенными скроллами и свайпами.
• Использование Compose в RecyclerView.
• И наиболее значимая задача — решение проблемы медленного первого запуска, вызванной особенностью Compose как unbundled library.
#свежак
Please open Telegram to view this post
VIEW IN TELEGRAM
❤4
Запутались в подходах внедрения зависимостей? Этот промпт поможет разобраться с DI раз и навсегда.
Промпт:
Сравни подходы Dependency Injection (Dagger/Hilt, Koin, Swinject) для мобильной разработки:
1. Плюсы и минусы каждого решения
2. Кривая обучения для новичков
3. Производительность в runtime
4. Поддержка мультимодульности
5. Интеграция с ViewModel и Compose/SwiftUI
Приведи примеры настройки для типового приложения на Kotlin/Swift
•
Как мигрировать с ручного DI на Hilt/Koin?
•
Лучшие практики тестирования с DI
•
DI для кроссплатформенной разработки (KMM)
•
Оптимизация времени сборки с DI
Show common mistakes and how to avoid them
для разбора типовых ошибокПример запроса:
// Нужно:
// - Простое приложение с 2 экранами
// - Сетевой слой и локальная БД
// - Легкая замена зависимостей в тестах
// - Поддержка мультимодульности
Какой DI-фреймворк вы предпочитаете и почему?
#буст
Please open Telegram to view this post
VIEW IN TELEGRAM
❤3
1. Приживаемость мотива
Если следили, то знаете, что 3 этих месяца рынку ASO было несладко. В среднем сервисе мотивированного трафика процент засчитываемого коннектом трафика не превышал 50%. Те, кто работает с китайцами, считал нормой для этих времен — 30%. Но есть и рекордсмены, кому удавалось удержать высокие планки в 80—90%, тот же @Fourasobot
2. Стоимость трафика
Схема бизнеса на рынке известная — создаешь утилитные мобильные приложения, и с помощью мотивированного трафика поднимаешь их в сторе. Появляясь в органическом поиске, приложение привлекает уже пользователей, оформляющих подписки.
Математика примерно такая:
Краеугольным камнем является цена мотивированного трафика. По 20 центов 100k установок обойдутся в $20k, по 10 центов — $10k, а по 5 центов - $5k.
В результате, если вы сделали приложение за $5k и потратили на трафик $20k, собрав MRR в $2k — выглядит так себе. Если же общий кост — $10k , а MRR $2k, то уже лучше.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
😁14
Пользователи ожидают:
• Плавных переходов из писем/сообщений в приложение
• Сохранения контекста при открытии ссылок
• Рабочих ссылок даже когда приложение не установлено
Базовые концепции:
• Deep Links - открывают конкретный экран в приложении
• Deferred Deep Links - работают даже без установленного приложения
• App Links (Android) / Universal Links (iOS) - веб-ссылки, открывающие приложение
Реализация на Android
1. Добавьте intent-filter в манифест:
<intent-filter android:autoVerify="true">
<action android:name="android.intent.action.VIEW"/>
<category android:name="android.intent.category.DEFAULT"/>
<category android:name="android.intent.category.BROWSABLE"/>
<data android:scheme="https" android:host="yourdomain.com"/>
</intent-filter>
2. Обработка ссылки в Activity:
override fun onCreate(savedInstanceState: Bundle?) {
if (intent?.action == Intent.ACTION_VIEW) {
val data = intent.data
// Анализ URL и навигация
}
}
Реализация на iOS
1. Настройка Associated Domains:
<key>com.apple.developer.associated-domains</key>
<array>
<string>applinks:yourdomain.com</string>
</array>
2. Обработка в AppDelegate:
func application(_ application: UIApplication,
continue userActivity: NSUserActivity,
restorationHandler: @escaping ([UIUserActivityRestoring]?) -> Void) -> Bool {
guard userActivity.activityType == NSUserActivityTypeBrowsingWeb,
let url = userActivity.webpageURL else {
return false
}
// Обработка URL
return true
}
Продвинутые сценарии
1. Аналитика переходов:
• Добавьте UTM-метки к ссылкам
• Отслеживайте источник установки
2. Совместная работа с бэкендом:
{
"url": "https://app.com/product/123",
"ios_store_id": "123456789",
"android_package": "com.yourapp"
}
3. Тестирование:
# Android
adb shell am start -W -a android.intent.action.VIEW -d "https://yourdomain.com/product/123"
# iOS
xcrun simctl openurl booted "https://yourdomain.com/product/123"
Лучшие практики:
• Используйте Firebase Dynamic Links для кроссплатформенного решения
• Поддерживайте веб-версии всех deep link-страниц
• Документируйте все схемы URL для команды
Какие библиотеки для deep links вы используете? Делитесь опытом в комментариях
#буст
Please open Telegram to view this post
VIEW IN TELEGRAM
❤3
Замыкания по умолчанию захватывают self. Если вы не используете [weak self], вы можете получить цикл удержания и утечку памяти.
class ProfileViewModel {
var onUpdate: (() -> Void)?
func setup() {
onUpdate = {
self.doSomething() // ⚠️ This captures self strongly
}
}
}
Исправление:
onUpdate = { [weak self] in
self?.doSomething()
}
Это очевидно, но все еще часто встречается это в коде:
let name: String? = getName()
print(name!) // Crashes if nil
Даже «безопасные» места могут подвести вас — например, повторное использование ячеек в
UITableView
.Вместо этого используйте
guard let
или if let
. Никогда не доверяйте данным слепо.Они кажутся удобными. Но они вызывают сбой, как и
!
, если не настроены правильно.var token: String!
print(token.count) // If token is nil, boom.
По умолчанию используется
?
. Используйте !
только в том случае, если вы абсолютно уверены, что он инициализирован перед использованием (например, инжектирован через сториборд).По умолчанию каждый класс в Swift может быть подклассом. Это может привести к снижению производительности из-за динамической диспетчеризации.
Используйте
final
, когда подклассы не нужны. Компилятор будет оптимизировать код лучше.final class UserManager {
// Now faster method calls, no subclassing allowed
}
Классическая ошибка в конфигурациях MVC или MVVM.
protocol MyDelegate: AnyObject {
func didUpdate()
}
class MyController {
var delegate: MyDelegate? // Should be weak
}
Всегда объявляйте свойства делегатов как weak, чтобы избежать циклов удержания:
weak var delegate: MyDelegate?
Какие ошибки чаще вам встречаются? Пишите в комментариях
#буст
Please open Telegram to view this post
VIEW IN TELEGRAM
❤5👍3🔥1😁1
Конкурентоспособность банков и финтех-компаний все больше зависит от скорости и надежности платежей. Сегодня интеграция с национальными системами быстрых платежей вроде SEPA Instant — необходимость для выживания, а не просто полезная надстройка.
Зачастую подключение к таким системам — сложный технологический проект, который требует глубокого понимания как банковской инфраструктуры, так и современных подходов к разработке высоконагруженных систем.
#свежак
Please open Telegram to view this post
VIEW IN TELEGRAM
❤3