Выбор между IDE и текстовым редактором - один из важных вопросов, на который должен ответить каждый разработчик.
IDE, как правило, включает в себя инструменты отладки, системы контроля версий и инструменты управления проектами, установленные в единой среде, помимо инструментов редактирования текста.
В то время как текстовый редактор сравнительно меньше по размеру и имеет специальные инструменты только для текста.
Что же лучше для программирования: текстовый редактор или IDE? Голосуйте и пишите своё мнение в комментариях
❤️ — текстовый редактор
👍 — IDE
#междусобойчик
Please open Telegram to view this post
VIEW IN TELEGRAM
👍22❤4😁2
iOS Developer — от 200 000 до 350 000 ₽, удалёнка
Junior Android Developer — удалёнка
Android-разработчик — от 200 000 ₽, удалёнка
IOS разработчик (Middle) — удалёнка
Android Developer (Middle+/Senior, Kotlin Multiplatform) — до 350 000 ₽, удалёнка
#свежак
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2👍1
Анонимный класс — это класс, которые явно не объявлен с помощью
class
, наследуется от заданного класса или реализует заданный интерфейс. Анонимный класс не всегда является синглтоном. Анонимный класс создается каждый раз при вызове соответствующего конструктора и используется только в контексте, где был создан.
При этом каждый экземпляр анонимного класса имеет свое уникальное состояние и может отличаться от других экземпляров того же анонимного класса. В Kotlin анонимный класс создается следующим образом:
val obj = object : SuperClassOrInterface() {
// implementation here
}
Объекты анонимных классов полезны для одноразового использования.Экземпляры анонимных классов называют анонимными объектами, потому что они объявляются выражением, а не именем.
Анонимный объект начинается с ключевого слова
object
.• можно задавать свойства, функции, блоки инициализации;
• можно наследоваться от других классов и реализовывать интерфейсы;
• нельзя создавать конструкторы (как основные, так и вторичные).
Ключевое слово
object
позволяет одновременно объявить класс и создать его экземпляр (т.е. объект). При этом применять его можно по-разному:•
object Name
— это объявление объекта(оbject declaration), реализация паттерна Singleton;•
companion object
— это объект-компаньон внутри класса (также Singleton);•
object
— это объект-выражение (анонимный объект/object expression), не Singleton.#буст
Please open Telegram to view this post
VIEW IN TELEGRAM
❤3👍1🌚1
Да кто такой этот ваш 2D-скролл? Зачем он нужен, если не делать аналог excel? На самом деле, двумерный скролл нужен в огромном количестве сценариев использования мобильных приложений.
В этой статье автор рассмотрит, как на Flutter можно реализовать двумерный скролл с помощью решений из коробки, почему они могут не подойти и что тогда делать.
Подробно разберёт, как сделать собственную производительную реализацию 2D-скролла, и оценит влияние на производительность на примере видеоредактора Yappy — приложения вертикальных видео.
👉 Читать статью
#свежак
Please open Telegram to view this post
VIEW IN TELEGRAM
❤4
🔌 Реализация оффлайн-режима
Пользователи часто остаются без интернета, но хотят продолжать работать с приложением. Разберём, как грамотно реализовать оффлайн-режим.
⚙️ Техники реализации
1. Локальное кэширование данных
• Android (Room):
• iOS (Core Data):
2. Очередь запросов
Сохраняйте действия пользователя при отсутствии сети:
3. Умная синхронизация
Используйте WorkManager (Android) или Background Tasks (iOS) для фоновой синхронизации.
🚫 Чего избегать
1. Хранения конфиденциальных данных без шифрования
2. Бесконечного накопления несинхронизированных данных
3. Игнорирования конфликтов данных при синхронизации
💡 Продвинутые техники
1. Дельта-синхронизация – передавайте только изменения
2. Конфликт-менеджмент – стратегии разрешения противоречий
3. Прогрессивная загрузка – сначала кэш, потом обновления
Как вы реализуете оффлайн-режим? Делитесь решениями в комментариях💬
🐸 Библиотека мобильного разработчика
#буст
Пользователи часто остаются без интернета, но хотят продолжать работать с приложением. Разберём, как грамотно реализовать оффлайн-режим.
1. Локальное кэширование данных
• Android (Room):
@Entity
data class CachedData(@PrimaryKey val id: String, val content: String)
@Dao
interface CacheDao {
@Insert(onConflict = OnConflictStrategy.REPLACE)
suspend fun insert(data: CachedData)
}
• iOS (Core Data):
let context = persistentContainer.viewContext
let entity = NSEntityDescription.insertNewObject(forEntityName: "CachedData", into: context)
entity.setValue(content, forKey: "content")
try? context.save()
2. Очередь запросов
Сохраняйте действия пользователя при отсутствии сети:
class OfflineQueue {
private val queue = ConcurrentLinkedQueue<() -> Unit>()
fun addToQueue(action: () -> Unit) {
queue.add(action)
}
fun processQueue() {
while (queue.isNotEmpty()) {
queue.poll()?.invoke()
}
}
}
3. Умная синхронизация
Используйте WorkManager (Android) или Background Tasks (iOS) для фоновой синхронизации.
1. Хранения конфиденциальных данных без шифрования
2. Бесконечного накопления несинхронизированных данных
3. Игнорирования конфликтов данных при синхронизации
1. Дельта-синхронизация – передавайте только изменения
2. Конфликт-менеджмент – стратегии разрешения противоречий
3. Прогрессивная загрузка – сначала кэш, потом обновления
Как вы реализуете оффлайн-режим? Делитесь решениями в комментариях
#буст
Please open Telegram to view this post
VIEW IN TELEGRAM
❤8
🔌 Реализация оффлайн-режима
Пользователи часто остаются без интернета, но хотят продолжать работать с приложением. Разберём, как грамотно реализовать оффлайн-режим.
⚙️ Техники реализации
1. Локальное кэширование данных
Android (Room):
iOS (Core Data):
2. Очередь запросов
Сохраняйте действия пользователя при отсутствии сети:
3. Умная синхронизация
Используйте WorkManager (Android) или Background Tasks (iOS) для фоновой синхронизации.
🚫 Чего избегать
1. Хранения конфиденциальных данных без шифрования
2. Бесконечного накопления несинхронизированных данных
3. Игнорирования конфликтов данных при синхронизации
💡 Продвинутые техники
1. Дельта-синхронизация – передавайте только изменения
2. Конфликт-менеджмент – стратегии разрешения противоречий
3. Прогрессивная загрузка – сначала кэш, потом обновления
Как вы реализуете оффлайн-режим? Делитесь решениями в комментариях💬
🐸 Библиотека мобильного разработчика
#буст
Пользователи часто остаются без интернета, но хотят продолжать работать с приложением. Разберём, как грамотно реализовать оффлайн-режим.
1. Локальное кэширование данных
Android (Room):
@Entity
data class CachedData(@PrimaryKey val id: String, val content: String)
@Dao
interface CacheDao {
@Insert(onConflict = OnConflictStrategy.REPLACE)
suspend fun insert(data: CachedData)
}
iOS (Core Data):
let context = persistentContainer.viewContext
let entity = NSEntityDescription.insertNewObject(forEntityName: "CachedData", into: context)
entity.setValue(content, forKey: "content")
try? context.save()
2. Очередь запросов
Сохраняйте действия пользователя при отсутствии сети:
class OfflineQueue {
private val queue = ConcurrentLinkedQueue<() -> Unit>()
fun addToQueue(action: () -> Unit) {
queue.add(action)
}
fun processQueue() {
while (queue.isNotEmpty()) {
queue.poll()?.invoke()
}
}
}
3. Умная синхронизация
Используйте WorkManager (Android) или Background Tasks (iOS) для фоновой синхронизации.
1. Хранения конфиденциальных данных без шифрования
2. Бесконечного накопления несинхронизированных данных
3. Игнорирования конфликтов данных при синхронизации
1. Дельта-синхронизация – передавайте только изменения
2. Конфликт-менеджмент – стратегии разрешения противоречий
3. Прогрессивная загрузка – сначала кэш, потом обновления
Как вы реализуете оффлайн-режим? Делитесь решениями в комментариях
#буст
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8❤🔥3
Please open Telegram to view this post
VIEW IN TELEGRAM
😁19❤3
Путаетесь в настройке пайплайнов? Этот промпт поможет автоматизировать сборку и публикацию приложений.
Промпт:
Create a complete CI/CD setup for mobile apps using GitHub Actions/Fastlane with:
1. Automated build and testing workflow
2. Code signing best practices
3. Beta distribution (Firebase/TestFlight)
4. Production release automation
5. Version bumping strategies
Provide YAML configuration samples and troubleshooting tips for common issues.
Варианты уточнений:
Add multi-module build optimization
Implement automatic changelog generation
Compare different CI services (Jenkins vs CircleCI vs GitHub Actions)
Add App Store Connect API integration
Cовет:
Укажите "For [Android/iOS/Cross-platform]" для таргетированных решений
Пример запроса:
# Нужно:
# - Автосборку по тегам
# - Публикацию в Firebase App Distribution
# - Проверку качества кода
# - Уведомления в Slack
#буст
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2
Опыт внедрения Kotlin Multiplatform
В этом материале автор расскажет, почему выбрал KMP, как погружался в iOS c опытом в Android и как прошло внедрение этого фреймворка.
👉 Читать статью
🐸 Библиотека мобильного разработчика
#свежак
В этом материале автор расскажет, почему выбрал KMP, как погружался в iOS c опытом в Android и как прошло внедрение этого фреймворка.
#свежак
Please open Telegram to view this post
VIEW IN TELEGRAM
❤4🌚3
🧗 Как продвинуть резюме в ТОП на HeadHunter
Представим ситуацию: вы обновили резюме, а просмотров ноль. В такие моменты нужно понимать, что проблема не в вас — а в том, как вы «продаете» себя системе.
👉 Читать статью
🐸 Библиотека мобильного разработчика
#свежак
Представим ситуацию: вы обновили резюме, а просмотров ноль. В такие моменты нужно понимать, что проблема не в вас — а в том, как вы «продаете» себя системе.
#свежак
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2
Please open Telegram to view this post
VIEW IN TELEGRAM
❤7😁6
Приготовили для вас дайджест по актуальному из мира iOS, Android и кроссплатформы.
#свежак
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2👍1
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2
☝️ Последний шанс купить курсы Proglib Academy с доступом навсегда!
Это не просто летняя распродажа, это финал эпохи. Мы дарим скидку 40% на все курсы, включая полностью обновлённый курс по Python (предложение НЕ ДЕЙСТВУЕТ только на курс по AI-агентам для DS-специалистов).
Но главное: с 1 августа доступ ко всем новым курсам станет ограниченным. Успейте инвестировать в свои знания на самых выгодных условиях!
👉 Выбрать курс
Это не просто летняя распродажа, это финал эпохи. Мы дарим скидку 40% на все курсы, включая полностью обновлённый курс по Python (предложение НЕ ДЕЙСТВУЕТ только на курс по AI-агентам для DS-специалистов).
Но главное: с 1 августа доступ ко всем новым курсам станет ограниченным. Успейте инвестировать в свои знания на самых выгодных условиях!
👉 Выбрать курс
Android-разработчик приложений — от 180 000 до 350 000 ₽, гибрид
Flutter Developer — от 100 000 до 300 000₽, удалёнка
Senior Kotlin Developer — от 300 000 ₽, удалёнка
Android-разработчик — от 300 000 до 350 000 ₽, гибрид (Санкт-Петербург, Пермь, Белград)
Разработчик мобильных бизнес-приложений на базе Unity/Unity3D — от 4000 до 5000 $, удалёнка
#свежак
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2
Раздутые размеры сборок:
• Увеличивают время загрузки приложения
• Отталкивают пользователей с ограниченным хранилищем
• Ухудшают конверсию установок
👾 Техники уменьшения размера (Android)
1. Включение R8/ProGuard
android {
buildTypes {
release {
minifyEnabled true
shrinkResources true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
2. Оптимизация ресурсов
Конвертируйте PNG в WebP:
find . -name "*.png" | xargs -I {} cwebp {} -o {}.webp
Удаляйте неиспользуемые локализации:
resConfigs "en", "ru"
3. Разделение по ABI
splits {
abi {
enable true
reset()
include "armeabi-v7a", "arm64-v8a"
universalApk false
}
}
🍏 Техники уменьшения размера (iOS)
1. Настройка компиляции
Включите оптимизацию кода:
Optimization Level = -Os
Strip Debug Symbols = YES
2. Использование Asset Catalogs
• Конвертируйте изображения в PDF (для векторных assets)
• Оптимизируйте цветовые профили
3. Bitcode и App Thinning
ENABLE_BITCODE = YES
📊 Анализ размера
• Android Studio → Build → Analyze APK
• Xcode → Window → Organizer → Size Report Tool
• Третьи-party инструменты: AppChecker, APK Explorer
🚫 Частые ошибки
• Включение ненужных библиотек
• Дублирование ресурсов
• Отсутствие очистки debug-символов
Проверьте свой проект! Какой размер вашего APK/IPA? Делитесь результатами оптимизации
#буст
Please open Telegram to view this post
VIEW IN TELEGRAM
❤3
Многие думают, что функциональный стиль это просто когда ты используешь map, filter, reduce и чувствуешь себя умным. Типа, "я же не пишу for, значит я уже в functional game". И это…правда. Но только частично.
Функции высшего порядка - лишь вершина айсберга. На деле функциональный стиль это про мышление. Про то, как ты подходишь к задаче, а не просто какими методами бросаешься.
#свежак
Please open Telegram to view this post
VIEW IN TELEGRAM
❤4
FluidAudio — Swift Speaker Diarization на CoreML. Это высокопроизводительный фреймворк Swift для диаризации на устройстве и обработки звука, разработанный для соответствия самым высоким стандартам.
Цель — максимизировать производительность, используя исключительно модели CoreML. Все модели были вручную преобразованы командой разработчиков из вариантов с открытым исходным кодом и доступны на Hugging Face.
#буст
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2
Please open Telegram to view this post
VIEW IN TELEGRAM
😁4❤3