🔐 Вы только что подарили хакерам доступ. Где НЕЛЬЗЯ хранить ключи Классическая история: вы пишете пет-проект, используете API (например, ChatGPT или Firebase), и пишете прямо в коде: val apiKey = "sk-proj-12345..." Потом git push, и вы идете спать. А утром ваш ключ заблокирован, или с карты списали деньги за чужой трафик. 🤖 Реальность: Боты сканируют публичные репозитории GitHub на наличие строк, похожих на ключи, за секунды после публикации. Удалить коммит не поможет, он уже в кеше у злоумышл...
Мобильная разработка #1
Всё о создании приложений под Android и iOS в одном месте. 🔹 Инструменты, библиотеки и ресурсы для ускорения работы. 🔹 Статьи и гайды для разработчиков любого уровня. 🔹 Тренды мобильной разработки и новости индустрии. Реклама @evgenycarter
Графики
📊 Средний охват постов
📉 ERR % по дням
📋 Публикации по дням
📎 Типы контента
Лучшие публикации
20 из 20🗣 «У меня не работает»: Почему сеньоры игнорируют ваши сообщения Классическая ситуация: Джун пишет в командный чат: «Парни, тут 500-я ошибка при логине, что делать?» и прикладывает скриншот логов. В ответ - тишина. Или сухое: «Смотри бэкенд». Почему так? Потому что вопрос сформулирован как «Решите проблему за меня». Это раздражает. Опытного разработчика отличает умение ценить чужое время. Если вы хотите быстрый и качественный ответ, используйте алгоритм идеального вопроса: 1. Контекст: Что имен...
🎨 Почему простой список лагает: Скрытый враг FPS (Overdraw) Бывало такое? Вы сверстали красивый экран, но при скролле он идет рывками, а телефон в руках начинает нагреваться. Вы смотрите в код адаптера, там всё чисто. Проблема не в коде. Проблема в Overdraw (Перерисовке). Это когда система вынуждена закрашивать один и тот же пиксель на экране 3-4 раза за один кадр. Пример: У вас есть белый фон у Activity -> сверху белый фон у Fragment -> сверху белый фон у карточки товара -> сверху картинка. GP...
🧟♂️ Зомби в вашем коде: Почему приложение «пухнет» со временем Бывало такое? Вы открыли экран, закрыли его, а память не освободилась. Сделали так 10 раз и приложение упало. Поздравляю, у вас Memory Leak (Утечка памяти). Это происходит, когда объект (например, тяжелая Activity или ViewController) уже не нужен пользователю, но сборщик мусора (GC) не может его удалить, потому что кто-то другой всё еще держит на него ссылку. Главные причины утечек (Checklist): 🛑 Android: 1. Static Context: Никогд...
💉 Dependency Injection: Зачем усложнять, если можно просто написать new? Когда новичок видит код с кучей аннотаций @Inject или модулей, у него возникает вопрос: "Зачем всё это? Я же могу просто создать объект внутри класса!" ❌ Код Джуна (Hard dependency): class UserRepository { // Мы "приварили" конкретную базу данных к репозиторию private val database = SQLiteDatabase() fun getUser() { ... } } В чем проблема? Представьте, что вы строите дом. Этот код как если бы вы вмуровали кофемашину прямо в...
🏎 Гонка потоков: Баг, который исчезает, когда вы пытаетесь его найти Представьте ситуацию: у вас на банковском счете 100$. Вы и ваша жена одновременно (в одну миллисекунду) пытаетесь снять 10$ через разные банкоматы. В теории должно остаться 80$. На практике, из-за Race Condition, может остаться 90$. Банк потерял деньги. 💸 Почему так происходит? Даже простая операция count++ (увеличение счетчика) для процессора - это три действия: 1. Считать текущее значение (100). 2. Приба...
🤖 Хватит быть «человеком-компилятором» на Code Review Вам знакомо это чувство, когда вы открываете Pull Request коллеги, и вместо того, чтобы проверять логику, пишете: 🔵«Тут лишний пробел» 🔵«Название функции с большой буквы?» 🔵«Удали неиспользуемый импорт» Это трата дорогого времени разработчика. Эти споры (Tab vs Space, где ставить фигурную скобку) должны решать роботы, а не люди. В 2026 году стыдно не иметь настроенный Linter (Линтер) в проекте. 🛠 Что подключить прямо сейчас: 🤖 Android (...
🚀 Хватит собирать билды руками: Введение в CI/CD Знакомая боль: вы закончили крутую фичу, и QA просит тестовую сборку. Вы переключаете ветку, жмете "Build APK" (или "Archive" в Xcode) и... идете гулять на 20 минут. Ноутбук гудит как турбина самолета, интерфейс тормозит, работать невозможно. А потом тестировщик пишет: "Слушай, а ты версию (versionCode) забыл поднять, оно не ставится поверх старого". 🤦♂️ Сборка релизов руками со своего компьютера - это огромная трата времени и источник человече...
Холодный старт (Cold Start) и как не заставлять пользователя ждать. 🕓 Правило 3 секунд: Почему ваше приложение удаляют сразу после установки Знаете ли вы, что 53% пользователей закрывают и удаляют приложение, если оно грузится дольше 3 секунд? Новички часто совершают одну и ту же ошибку: «Напихаю-ка я инициализацию всей аналитики, рекламы, базы данных и сетевых клиентов в самый старт, чтобы потом всё было готово». В итоге пользователь видит белый экран или зависшее лого на 5 секунд. Это Холодны...
📶 Что видит пользователь, когда заходит в лифт? (Или почему ваш лоадер всех бесит) Представьте: пользователь едет в метро. Интернет то появляется, то пропадает. Он открывает ваше приложение, чтобы почитать ленту. ❌ Подход Джуна (Прямая труба): Запрос в сеть -> Показ лоадера на весь экран -> Ошибка тайм-аута -> Пустой белый экран. А если пользователь случайно повернет телефон (сменит ориентацию) - лоадер появится снова, потому что Activity пересоздалась и запрос полетел заново. Это боль. ✅ Подхо...