Дневник Flutter разработчика
211 subscribers
32 photos
1 video
2 files
19 links
Собираю полезности и излагаю мысли обо всей этой движухе.

GitHub: https://github.com/GereyTatarkhanov
Download Telegram
Привет! Чем я сейчас занят:

❗️Все еще пишу ТЗ для дизайнера, который будет рисовать приложение в Figma. К слову, это не так-то просто как казалось изначально и занимает довольно много времени. Похоже придется просыпаться пораньше, чтобы этим позаниматься прежде чем приступать к задачам с основной работы.

Во время описания приложения обнаруживается много дыр и недочетов в изначальной задумке. Но это имеет и обратный эффект: мы это переигрываем в плюсы (Да-да! Это не баг, а фича). А также смотрим похожие приложения и забираем самое лучшее, что в них есть, отсекая все худшее.

❗️Переехал. Вот прямо сегодня. И вместо того, чтобы раскладывать вещи пишу этот пост🤷. Не знаю для чего эта инфа, но пусть будет (многа букаф).

❗️А еще есть ощущение, что в изучении английского языка у меня стагнация. Техническая документация читается легко, а вот с неформальным английским прослеживаются трудности. Раньше учил по Duolingo, но из-за однообразия задач мне стало скучно. Также я смотрю фильмы и сериалы на английском и включаю английские субтитры (однако понимаю где-то 50% того, что говорят, остальное как-то по контексту определяю).

Был бы очень рад, если поделитесь своими способами изучения. Расскажите в комментариях как вы любите это делать и используете ли для этого какие-то приложения или сервисы.
4👍2👏1
Hello🖖. Хочу рассказать про Flock (Спойлер: это тоже самое, что и Flutter).

Я кратко перескажу пост Мэта Кэррола (Директор Flock и по-моему, бывший разработчик в команде Flutter), но это не обойдется без моих комментариев😌

📍Они форкнули Flutter. Зачем?

Основная причина связана с тем, что некогда ранее, а именно в 2023 году, Goggle заморозили себе мозги количество сотрудников команды Flutter (то есть им в голову взбрело не брать новых сотрудников, а не в криокамеры поместить текущих, если вы об этом подумали). А в этом году, как вы уже помните истошные крики паникёров и глупые ухмылки kmp'шников, Google провели ряд сокращений, которые коснулись и официальной команды Flutter. В результате чего, по мнению данного персонажа (Мэта Кэррола) осталось около 50 сотрудников в Flutter Team.

Также утверждается, что в мире больше одного миллиона разработчиков, которые используют Flutter. И в результате несложных подсчётов можно догадаться, что 50 человек не успевают своевременно обслуживать запросы 1 миллиона разработчиков (исправлять баги, смотреть контрибьюты, создавать за них виджеты и вообще приложения целиком по тапу на одну кнопку и т.п.).

И тут на помощь должен прийти Flock - тот же Flutter, но который должен развиваться форсированно посредством быстрого рассмотрения и мерджа контрибьютов от сторонних разработчиков.

📍 Чем полезен Flock?

Так как это тот же Flutter, вы можете поставить его себе на ПК и использовать, возможно там уже будут решены какие-то проблемы, issue на которые висят давно, но которые именно для вашего случая остаются актуальными. Версиями также можно управлять посредством FVM (Flutter version manager - про него я уже рассказывал где-то выше).

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

📍 Как ты можешь быть полезен проекту Flock?

В посте утверждается, что любая помощь в виде контрибьютов с предложениями исправить/добавить/обновить тот или иной функционал будет полезна.

Еще - специалист с большим опытом может занять место лида по какому-нибудь направленияю. К примеру, сам Мэт Кэррол не только директор, но и Framework-lead (хз чем он занимается правда), а Джэсси Эзелл (тоже хз кто такой, наверное важный чел) - engine-lead (движком рулит короче).

❗️Ну вот, теперь у вас, как и у меня, есть представление о том, что такое Flock и зачем он нужен.
Если знаете больше или я где-то ошибся - непременно пишите в комментах.
Спасибо за внимание!
🔥61🥴1
Твоя трудовая книжка глазами HR, когда ты "вкатываешься" в it из другой профессии
😁7
На прошедшем FlutterInProduction показали вот такие участки кода. На мой взгляд нуу такое себе...😐
Описание класса с указанием аргументов прямо после названия норм (но пока еще не понятно какой там синтаксис дальше), а вот декораторы (первый скриншот с описанием MyButton) как будто вообще не то.
Вы что думаете?🤔
🔥5🥴3
Друзья, вас уже чуть больше 200! Это не огромное количество, конечно, но и не скажешь, что мало🥹
Спасибо, что подписываетесь, читаете, оставляете комментарии и реакции. Директ вообще завален вашими восторженными комментариями и просьбами отправить автограф, не успеваю отвечать всем. Хоть я и не часто выкладываю посты (думаю если это было бы иначе, вас было бы еще больше). Благодарен вам за это!

2024 год заканчивается и пора подводить итоги. В этом году произошло не мало изменений в моей жизни:
Я успел много раз переехать, устроился на крутейшую работу flutter разработчкиком в крупную компанию с офигенным коллективом, попробовал себя в роли ментора, запустил этот канал, познакомился с интересными и умными людьми, купил частный самолет, подружился с Илоном Маском, слетал на Венеру... Ладно, переборщил, переезжал я не так часто, а всего несколько раз😌

А следующий год планирую провести еще интереснее, о чем расскажу ниже👇

Сейчас новогодние праздники и пока у меня есть время, я хочу добить техническое задание для дизайнера своего проекта. Я почти дописал для клиентского приложения и необходимо будет написать для партнерского. Я обещал вам раскрыть идею проекта и думаю настало время!

Идея невероятно банальна и совершенно ординарна - это агрегатор ресторанов!🍕🍣
Хоть таких приложений очень много, но не в моем маленьком городке. И хотелось бы занять эту нишу здесь, где заказывать необходимо через whatsapp, телегу или даже инсту. И кто знает - может быть оно распространится и далеко за пределы моего города и станет мировым брендом №1 и все мишленовские рестораны захотят со мной работать. Да, именно так оно и будет.

В общем и целом, как докончу писать ТЗ - расскажу вам более подробно о том, какие фичи в планах (думаю, что особенно интересным будет партнерское приложение, я планирую гибкий инструмент для настройки меню, акций и всяких прочих "ресторанских" дел). Буду делиться с вами о трудностях разработки и о проделанной работе.

Поздравляю вас с наступающим новым годом, и пусть он у всех будет успешным и продуктивным!🎉🎊

А как прошел ваш год? И какие цели поставили себе на следующий? 🎯🤔

P.S.: опять много букаф от меня...
👍6👏3🏆1🎅1
Если у вас, как и у меня, возникла необходимость закрыть экран macbook так, чтобы он не перешел в режим сна, и при этом вы не хотите ставить ноут на зарядку (а только так можно этого добиться с помощью стандартных настроек, ну или я слепой и не нашел) - то вы можете юзать в терминале такие команды:

sudo pmset disablesleep 1 - Отключить засыпание
sudo pmset disablesleep 0 - Включить засыпание
Ну а я пошел чуть дальше и чтоб не возиться с терминалом написал App для MacOS.
Важный момент: в app используются те же команды, а они выполняются через суперюзера (sudo который), и чтобы у вас Аntisleep работал корректно необходимо добавить в файл sudoers несколько строк (которые отключат запрашивание пароля именно для этих двух команд) и вот как это сделать:
❗️В терминале выполните команду: sudo visudo.
❗️Добавьте следующие 2 строки в конец файла:
ваш_пользователь ALL=(ALL) NOPASSWD: /usr/bin/pmset disablesleep 0
ваш_пользователь ALL=(ALL) NOPASSWD: /usr/bin/pmset disablesleep 1
("ваш_пользователь" поменяйте на имя вашего пользователя).
❗️Сохранить изменения (Нажать Esc и выполнить :w)
❗️Выйти (Выполнить :x).

Готово!
🔥5👍3
Меня давно не было, но сейчас я врываюсь с новостями❗️👇

Дизайн нашего мобильного приложения ВсяЕда для клиентов уже готов🎊🍕🍣

И на мой взгляд получился очень красивым! А отдельный primary color для каждой категории (кулинария/кондитерские изделия/кофейни) и карта с отмеченными на ней заведениями, которые будут в приложении должны сделать приложение еще круче 😎

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

Если вдруг увидите, что где-то что-то не то, не стесняйтесь написать об этом, буду рад вас послать критике, ведь с ней проект может стать еще лучше⚡️

Еще на листочке записаны несколько крутых идей, которые не войдут в MVP, но обязательно будут реализованы в будущем!

Буду и дальше делиться с вами новостями. ТЗ для партнерского приложения еще не готово, но для партнеров ожидается очень гибкая и настраиваемая бомба!💥
👍6🔥3😁1
Давно отечественные боты с низкой социальной ответственностью начали заглядывать в зарубежные Flutter паблики?😁 Их и в наших-то не мало
😁3🤣1
На днях словил очень мерзкий баг связанный с пушами🚫
Мерзкий тем, что пуши не отображались на Android.

Сначала выяснял почему у меня на Android эмуляторе все работает как часы, а у моих коллег-тестеров, которым я скидываю APK все работает не как часы, вернее вообще не работает.

Мысль о том, что для других я собираю release apk, а для себя debug пришла не сразу, я думаю вы уже догадались, что причина была в этом (Ну половина причины🤷).
На stackoverflow нашел решение: якобы надо sha-1 ключ, которым подписываю релизный APK загрузить в firebase. Но хрен там... Не помогло. Не знаю почему все про это говорили - и без этого ключа все пуши ходили, просто не отображались в release (это я выяснил позже по логам в graylog).

Найти проблему помог скайнет из алиэкспресс под названием deepseek 🈵
Оказалось, что во время сборки release версий стирались (и/или обфусцировались) важные данные связанные с пушами. А занимался этим "шовинизмом" по отношению к пушам ProGuard. Да. Вот так.

Проблему можно решить отключив беспредельщика в файле android/app/build.gradle вот так:
    buildTypes {
        release {
            shrinkResources false
            signingConfig signingConfigs.release
        }
    }

Или написать правила, чтоб он обходил пуши.
Кстати, в документации к flutter_local_notifications есть часть этому посвященная.

Может кому пригодится🙃
👍7
А это варианты иконок для нашего проекта.
Интересно узнать ваше мнение о них, какой вариант лучше
1🔥1
Какой выриант лучше?
Anonymous Poll
47%
icon 1
9%
icon 2
22%
icon 3
22%
icon 4
Хочу поделиться довольно полезными правилами📝

Недавно начал читать "Чистый код" Роберта Мартина (да-да заезженная тема и все, кому не лень ее читали, я знаю, заткнись). И в самом начале говорится о правилах 5S - это японские правила соблюдения порядка, которые применимы и в кодинге. Давайте продублирую, лишним не будет:

1) Seiri (Сортировка) 🗂
Сортируем нужное и ненужное: ветки в git'е, зависимости и код, который "когда-нибудь пригодится" (он не пригодится, поверьте). Оставляем все, что нужно для конкретного проекта или конкретной задачи. Не надо складывать все приколюхи в utils.

2) Seiton (Соблюдение порядка) 📂
Чёткая структура: ui компоненты — в widgets/, dto — в models/, газировку — в кружку (а не на клавиатуру, как я. Сейчас придется новую покупать).

3) Seiso (Содержание в чистоте) 🧼
Удаляем мусор: print'ы для дебага с текстом "тут ашыбка", закомментированные куски и прочее.

4) Seiketsu (Стандартизация) 📜
Один кодстайл на всех. Форматируем, используем запятые по договоренности, схожий нейминг для схожих элементов и т.д.

5) Shitsuke (Совершенствование) 🚀
Автоматизируем рутину, рефакторим код и учимся на ошибках (желательно на чужих).
👍8
Уже слышали про Model Context Protocol (MCP)?
Если коротко и простыми словами - это стандартизированный способ обмена информацией с ИИ (и вроде как между ИИ) 🛠

И так, твой первый вопрос - "Зачем это нужно?". Представь себе, что тебе нужно быстро переключаться между ИИ в рамках одной системы и одного инструмента или подключать ИИ модель к внешним ресурам. Без стандартного подхода придется делать интеграцию с каждой моделью по отдельности с нуля, а MCP предлагает быстрый способ создания подобных "мостов" 🌉 между клиентом и искусственной думалкой.

🎬 Резкая смена кадра, тусклый флешбек и переносимся к редактору кода - Cursor 💻
Для тех, кто пропустил - это редактор кода с встроенными ai функциями. У тебя возникает второй вопрос "И что тут такого?" 🤨
Ну да, он умеет "интегрироваться" в проект (изучать и делать правки в файлах, а не в тупую кидать код в чат, чтобы ты его скопировал). Вон Copilot так умеет тоже.
Ответ: еще одной фишкой редактора является быстрое создание так называемых MCP серверов 🚀

Твой следующий вопрос "Что это за очередная хрень?" 🤷‍♂️
Я объясню примером из своих недавних действий. Я связал с помощью такого сервера Cursor с Figma и "попросил" сверстать экран, который там нарисован. Получилось, кстати, плохо. Ужасный код и верстка похожа на дизайн из макета не сильно (хотя он даже svg скачал и вставлял в код).
А потом я сделал наоборот 🔄
Я сказал чат-боту нарисовать новый скрин в Figma и при этом использовать уже готовые компоненты из других нарисованных дизайнером экранов. Получилось еще хуже 😅 ИИ создал новый скрин, но тупо не попал элементами на созданный фрейм.

В целом опыт считаю удачным
Полагаю, что код и дизайн получились ужасными (а могли быть просто средними) потому, что у меня использовалась бесплатная версия Cursor, где доступны только подобные модели со сбитым прицелом, которые скорее всего обучались на skillbox и подобных курсах.

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

Материалы:
🔹 Figma to code - смотрел здесь. У него, кстати, очень неплохо вышло.
🔹Text to Figma design - с помощью плагина Сursor Talk to Figma
👍3🔥3🤝1
Что там по проекту "ВсяЕда" ?
- Дизайн основного приложения - готов
- Дизайн для партнерского приложения - в процессе (Отдал ТЗ дизайнеру, обговорено)☑️

Какая архитектура проекта планируется📝
1️⃣ Отдельный репозиторий (плагин) с общими свойствами для двух проектов (ВсяЕда, ВсяЕда Партнер), который будет включать в себя:
🔹 функции расширения;
🔹 код для http запросов (скорее всего будет обертка над dio с базовыми url и интерцепторами для подхвата jwt токена и т.п.);
🔹 код для обработки ошибок при сетевых запросах;
🔹 transitions (переходы);
🔹 и всякого рода сахар, который отупляет мозг облегчает разработку.

2️⃣ Отдельный плагин с дизайн-системой:
🔹кнопки;
🔹лоадеры;
🔹инпуты для ввода текста;
🔹шрифты;
🔹иконки;
🔹цвета;
🔹прочий ui;
Дизайн-систему уже начал пилить. Проделана работа с цветами, шрифтами и добавил иконки. Иконки зилил как шрифты (У меня есть пост, где я рассказал зачем это и как это)

3️⃣ Приложение ВсяЕда
4️⃣ Приложения ВсяЕда Партнер

Что планирую делать в самих приложениях:
основные зависимости:
🔹bloc для state management'а
🔹json_serializable для генерации DTO моделей;
🔹go_router для навигации;
🔹dio для http запросов;
Дальше перечислять не буду, но планирую на сколько это возможно избегать большого их количества. Особенно не хочется юзать freezed, injectable, retrofit и другие либы, где надо генерить код (кстати, поэтому и go_router, а не auto_route). Пока что единственным исключением является json_serializable, к нему я просто привык.

Ну и придерживаться Clean architecture на сколько это возможно, а также соблюдать принципы DRY и KISS и то, что лучше всего получается помню из SOLID. (Я прям как будто собес прошел😅).
Как-то так 💁‍♂️
👍2
Channel name was changed to «Дневник разработчика»