Flutter Developer Talks
🚨 Оптимизируем build_runner Ускоряем выполнение задач build_runner одним простым конфигурационным файлом. 📱 Смотреть на YouTube Материалы из видео: - Конфигурационный файл #flutter 🎵 Слушать подкаст в Apple Podcasts 💬 Слушать подкаст в Telegram 🌐 Читать…
YouTube падает при ответе на ваши комментарии, поэтому соберу их тут.
1️⃣ Зачем вообще нужна оптимизация build_runner? Вы сами себе все усложняете
Если на проект большой, и над ним работает большая команда - неизбежны конфликты при слиянии веток. Это относится как к небольшим классам (типа пользователя или товара, например), так и к DI, где сгенерированный файл может насчитывать тысячи строк кода, которые руками не поправишь при наличии конфликтов. Как итог - нужно запускать билд заново, а это лишнее время. Добавить к этому ситуацию, когда в репозитории слетаю аппрувы при новых коммитах - на небольшое исправление уйдет куча времени, и в лучшем случае за прошедшие десятки минут не придут чьи-то правки, которые сломают ваши текущие.
Мне лично не нравится удаление ген. файлов, но решение порой принимаются либо лидами, либо всей командой, и приходится работать с тем, что есть. А тут уже проще покопаться в настройках и что-то поправить, нежели менять работу и доказывать всем не согласным, что они не правы.
Есть еще раздел в документации build_runner. Там советуют не хранить ничего сгенерированного в репозитории, но это лишь совет, а не правило работы с билдером.
2️⃣ Какие еще есть способы запуска build_runner? Для отдельного файла, пакета, есть возможность билда?
Можно запустить
build_runner
с параметром --build-filter
, который будет работать только с тем скоупом, что вы туда ему передадите.❗️ Все примеры ниже применимы к проекту, которые разбирается в видео. Запуск происходит так же, как в видео (через
fvm
). Для использования на ваших примерех нужно заменить значение --build-filter
на то, что у вас локально.Для файла пример будет такой:
fvm flutter pub run build_runner build --build-filter="lib/cp_one/one/model_gen.g.dart"
Директорию можно обработать следующим образом:
fvm flutter pub run build_runner build --build-filter="lib/cp_one/**/*.g.dart"
Есть вариант попробовать написать скрипт, который соберет список измененный файлах, и только для них сгенерирует нужные файлы. Собственно, что-то подобное мы как-то хотели сделать у себя на проекте, но это показалось уже чем-то не очень нужным.
#post
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11👨💻4❤🔥3
🗓 Январский дамп
Все материалы за январь.
🎧 Подкаст
- Мой опыт работы. Локальная продуктовая компания
- Мой опыт работы. Заказная разработка
- Мой стек на Flutter-проектах 2
- bloc_concurrency
📺 Видео
- bloc_concurrency
- Запись стрима от 26.02.2025
- Оптимизируем build_runner
🔖 Посты
- GitHub 2024 Wrapped
- Блог на Jekyll
- Flutter + Ruby / Rails
- StackOverflow загибается?
#post #dump
🎵 Слушать подкаст в Apple Podcasts
💬 Слушать подкаст в Telegram
🌐 Читать посты в блоге
💬 Навигация по постам
Все материалы за январь.
🎧 Подкаст
- Мой опыт работы. Локальная продуктовая компания
- Мой опыт работы. Заказная разработка
- Мой стек на Flutter-проектах 2
- bloc_concurrency
- bloc_concurrency
- Запись стрима от 26.02.2025
- Оптимизируем build_runner
🔖 Посты
- GitHub 2024 Wrapped
- Блог на Jekyll
- Flutter + Ruby / Rails
- StackOverflow загибается?
#post #dump
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9❤5🔥4❤🔥2🥰2
🗓 Февральский дамп
Все материалы за февраль.
🎧 Подкаст
- Самые часто используемые плагины 1
- Самые часто используемые плагины 2
- Самые часто используемые плагины 3
- Зрелость Flutter'а как технологии
📺 Видео
- Самые часто используемые плагины 1
- Самые часто используемые плагины 2
- Самые часто используемые плагины 3
- make / Makefile для Flutter-проектов
- Запись стрима от 31.01.2025
- coverage: Покрытие кода тестами
- Шиммеры / Скелетоны
- Оптимизация GitHub Actions
👨🏻💻 Codewars
- codewars_dart: Leap Years (7 kyu)
- codewars_dart: Maximum Multiple (7 kyu)
- codewars_dart: Nth Smallest Element (7 kyu)
- codewars_dart: Product Of Maximums Of Array (7 kyu)
- codewars_dart: V A P O R C O D E (7 kyu)
- codewars_dart: Valid Spacing (7 kyu)
🔖 Посты
- Январский дамп
- Новости / Анонсы
#post #dump
🎵 Слушать подкаст в Apple Podcasts
💬 Слушать подкаст в Telegram
🌐 Читать посты в блоге
💬 Навигация по постам
Все материалы за февраль.
🎧 Подкаст
- Самые часто используемые плагины 1
- Самые часто используемые плагины 2
- Самые часто используемые плагины 3
- Зрелость Flutter'а как технологии
- Самые часто используемые плагины 1
- Самые часто используемые плагины 2
- Самые часто используемые плагины 3
- make / Makefile для Flutter-проектов
- Запись стрима от 31.01.2025
- coverage: Покрытие кода тестами
- Шиммеры / Скелетоны
- Оптимизация GitHub Actions
👨🏻💻 Codewars
- codewars_dart: Leap Years (7 kyu)
- codewars_dart: Maximum Multiple (7 kyu)
- codewars_dart: Nth Smallest Element (7 kyu)
- codewars_dart: Product Of Maximums Of Array (7 kyu)
- codewars_dart: V A P O R C O D E (7 kyu)
- codewars_dart: Valid Spacing (7 kyu)
🔖 Посты
- Январский дамп
- Новости / Анонсы
#post #dump
Please open Telegram to view this post
VIEW IN TELEGRAM
❤7🔥5👍4
📚 Пиши, сокращай
Книга про то, как писать любые тексты.
Целью прочтения изначально было желание научиться писать кратко и по-делу, но в итоге получилось даже начать думать как-то иначе. Не сказал бы, что помню все рекомендации из книги, но большую часть материала где-то в голове у себя оставил.
Советы по работе с текстом отличные. Как оказалось, часть из них я уже применял на практике. Было приятно узнать, что во время работы с текстом думаю в правильном направлении при редактуре.
Если сразу пытаться применить все рекомендации на работе - полезный эффект от материала усилится в разы. Главное в первые дни практики не особо тригериться на коллег, которые пишут очень неразборчиво и не по делу. Может быть они потом все от вас подхватят, а может быть это им попросту и не надо.
Следовать рекомендациям из книги уже ваше право. Я бы рекомендовал ее всем без исключения, хотя бы для ознакомления с информационным стилем текста. Для себя же полезность могу оценить на 10 из 10.
👉 Подробнее на сайте издателя
Там нет реферальной ссылки. Просто не знаю, где вам еще книгу показать.
#post #book
🎵 Слушать подкаст в Apple Podcasts
💬 Слушать подкаст в Telegram
🌐 Читать посты в блоге
💬 Навигация по постам
Книга про то, как писать любые тексты.
Целью прочтения изначально было желание научиться писать кратко и по-делу, но в итоге получилось даже начать думать как-то иначе. Не сказал бы, что помню все рекомендации из книги, но большую часть материала где-то в голове у себя оставил.
Советы по работе с текстом отличные. Как оказалось, часть из них я уже применял на практике. Было приятно узнать, что во время работы с текстом думаю в правильном направлении при редактуре.
Если сразу пытаться применить все рекомендации на работе - полезный эффект от материала усилится в разы. Главное в первые дни практики не особо тригериться на коллег, которые пишут очень неразборчиво и не по делу. Может быть они потом все от вас подхватят, а может быть это им попросту и не надо.
Следовать рекомендациям из книги уже ваше право. Я бы рекомендовал ее всем без исключения, хотя бы для ознакомления с информационным стилем текста. Для себя же полезность могу оценить на 10 из 10.
👉 Подробнее на сайте издателя
#post #book
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5✍3❤2👨💻1
🔖 Выбираем самый лучший шрифт для IDE
На CodingFont можно сравнить друг с другом разные шрифты для разработки на любых примерах, от стандартных до вашего текста.
Работает оно очень просто: из двух шрифтов нужно выбрать один, затем он сравнивается со следующим по списку. В арсенале довольно много вариантов на выбор, мой текущий Fira Code там тоже есть.
В довесок к базовой функциональности есть еще список тем, и ссылка на загрузку каждого шрифта. Так же присутствуют дополнительные настройки шрифта типа размера и лигатуры.
👉 Ссылка тут
#post
🎵 Слушать подкаст в Apple Podcasts
💬 Слушать подкаст в Telegram
🌐 Читать посты в блоге
💬 Навигация по постам
На CodingFont можно сравнить друг с другом разные шрифты для разработки на любых примерах, от стандартных до вашего текста.
Работает оно очень просто: из двух шрифтов нужно выбрать один, затем он сравнивается со следующим по списку. В арсенале довольно много вариантов на выбор, мой текущий Fira Code там тоже есть.
В довесок к базовой функциональности есть еще список тем, и ссылка на загрузку каждого шрифта. Так же присутствуют дополнительные настройки шрифта типа размера и лигатуры.
👉 Ссылка тут
#post
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6❤4🔥4
🗓 Мартовский дамп
Все материалы за март.
📺 Видео (YouTube)
- CLI на Dart: от создания проекта до публикации на pub.dev
- Документирование Open Source-проектов
- Обзор нашего GitHub-профиля
- Что еще добавить в репозиторий своего проекта на GitHub?
💬 Видео (Telegram)
- Что еще добавить в репозиторий своего проекта на GitHub?
🤖 Обсуждение AI
- Монолог Игоря Молчанова про нейросети
- Начало истории про Vibe Coding
- Конец истории про Vibe Coding
- Мое мнение по всем материалам выше
👨🏻💻 LeetCode
- [Medium] 1670. Design Front Middle Back Queue
🔖 Посты
- Февральский дамп
- У GitHub'а отвалился squash
- Новости / Анонсы 2
- Пиши, сокращай
- Выбираем самый лучший шрифт для IDE
#post #dump
🎵 Слушать подкаст в Apple Podcasts
💬 Слушать подкаст в Telegram
🌐 Читать посты в блоге
💬 Навигация по постам
Все материалы за март.
- CLI на Dart: от создания проекта до публикации на pub.dev
- Документирование Open Source-проектов
- Обзор нашего GitHub-профиля
- Что еще добавить в репозиторий своего проекта на GitHub?
- Что еще добавить в репозиторий своего проекта на GitHub?
🤖 Обсуждение AI
- Монолог Игоря Молчанова про нейросети
- Начало истории про Vibe Coding
- Конец истории про Vibe Coding
- Мое мнение по всем материалам выше
👨🏻💻 LeetCode
- [Medium] 1670. Design Front Middle Back Queue
🔖 Посты
- Февральский дамп
- У GitHub'а отвалился squash
- Новости / Анонсы 2
- Пиши, сокращай
- Выбираем самый лучший шрифт для IDE
#post #dump
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥7❤3👍2🤗1
🚨 Подработки: что может пойти не так
Не будем касаться тем обязанностей или требований начальных и конечных, расскажу про неочевидные нюансы подработок.
1️⃣ Оформление
Даже если вы уверены в своем подработочном работодателе - оформляйтесь как можно скорее. Компания может попросить сразу начать работать, а оформление перенести на неопределенный срок. Чем дольше вы оттягиваете данный процесс - тем больше геморроя с оформлением может быть потом.
Возможно, для кого-то это станет открытием, но не все компании умеют оформлять самозанятых. С ИП руки набиты, никто не жаловался на моей памяти. Будет неприятно в конце работы решать глупые вопросы с кадровиками, когда так-то уже время оплаты должно быть. Лучше иметь образец договора, даже с прошлых подработок / работ, сэкономит кучу времени в подобной ситуации.
В договоре должно быть прописано только то, на что вы обязуетесь подписаться в плане работы. Если есть какие-то непонятные формулировки - не бойтесь переспросить что-то у кадровика. Да, нужно будет потратить время на обсуждение - но ваши нервы и спокойствие дороже пары сообщений HR'у.
2️⃣ Оплата труда
Заранее уточните, сможет ли работодатель скинуть деньги на счет в вашем банке. Некоторые компании принципиально не переводят средства в другой банк, так как это дополнительная комиссия.
На одной из подработок мне до последнего не хотели переводить деньги с банка А в банк Б, ибо у первого проценты за перевод во второй. На решение проблемы ушла неделя, хотя я у них пару дней всего проработал. Пускай там комиссия почти 2-3 доллара за трансфер - организации будет проще напрячь вас найти друга-ИП с картой банка А, чем оплачивать комиссию самой.
3️⃣ Налоги
Если вы называете ценник в час, например, в 2 000 рублей, то обязательно проговаривайте, что это чистыми. В лучшем случае работодатель сам догадается, что нужно докинуть к ставке в час, но скорее всего налог будете платить вы.
4️⃣ Уведомлять на основной работе о подработках
Явно такое делать не рекомендую.
Из моей практики, даже самые адекватные на первый взгляд руководители, будут на вас рано или поздно косо смотреть. Если спросят, можно сказать, но явно не рекомендую упоминать об этом. Даже в какой-нибудь беседе в баре - лучше промолчать. Пока вы с руководителем работете в одной компании - друзьями вы не будете.
5️⃣ Цель подработок
Денежная мотивация, к сожалению, работает до тех пор, пока вы не начнете уставать. Тут имею ввиду работу без цели, чтобы просто было сверх ЗП что-то. Когда вы точно знаете, зачем подрабатываете, процесс будет идти гораздо лучше, ибо цель дает дополнительную мотивацию.
Если нет времени и сил, то лучше отдохнуть, будет полезнее. Иначе потом придется потратить все заработанные средства на отдых, а еще и в минус можете уйти.
В общем, работайте рационально, и трезво оценивайте свои силы.
#post
🎵 Слушать подкаст в Apple Podcasts
💬 Слушать подкаст в Telegram
🌐 Читать посты в блоге
💬 Навигация по постам
Не будем касаться тем обязанностей или требований начальных и конечных, расскажу про неочевидные нюансы подработок.
1️⃣ Оформление
Даже если вы уверены в своем подработочном работодателе - оформляйтесь как можно скорее. Компания может попросить сразу начать работать, а оформление перенести на неопределенный срок. Чем дольше вы оттягиваете данный процесс - тем больше геморроя с оформлением может быть потом.
Возможно, для кого-то это станет открытием, но не все компании умеют оформлять самозанятых. С ИП руки набиты, никто не жаловался на моей памяти. Будет неприятно в конце работы решать глупые вопросы с кадровиками, когда так-то уже время оплаты должно быть. Лучше иметь образец договора, даже с прошлых подработок / работ, сэкономит кучу времени в подобной ситуации.
В договоре должно быть прописано только то, на что вы обязуетесь подписаться в плане работы. Если есть какие-то непонятные формулировки - не бойтесь переспросить что-то у кадровика. Да, нужно будет потратить время на обсуждение - но ваши нервы и спокойствие дороже пары сообщений HR'у.
2️⃣ Оплата труда
Заранее уточните, сможет ли работодатель скинуть деньги на счет в вашем банке. Некоторые компании принципиально не переводят средства в другой банк, так как это дополнительная комиссия.
На одной из подработок мне до последнего не хотели переводить деньги с банка А в банк Б, ибо у первого проценты за перевод во второй. На решение проблемы ушла неделя, хотя я у них пару дней всего проработал. Пускай там комиссия почти 2-3 доллара за трансфер - организации будет проще напрячь вас найти друга-ИП с картой банка А, чем оплачивать комиссию самой.
3️⃣ Налоги
Если вы называете ценник в час, например, в 2 000 рублей, то обязательно проговаривайте, что это чистыми. В лучшем случае работодатель сам догадается, что нужно докинуть к ставке в час, но скорее всего налог будете платить вы.
4️⃣ Уведомлять на основной работе о подработках
Явно такое делать не рекомендую.
Из моей практики, даже самые адекватные на первый взгляд руководители, будут на вас рано или поздно косо смотреть. Если спросят, можно сказать, но явно не рекомендую упоминать об этом. Даже в какой-нибудь беседе в баре - лучше промолчать. Пока вы с руководителем работете в одной компании - друзьями вы не будете.
5️⃣ Цель подработок
Денежная мотивация, к сожалению, работает до тех пор, пока вы не начнете уставать. Тут имею ввиду работу без цели, чтобы просто было сверх ЗП что-то. Когда вы точно знаете, зачем подрабатываете, процесс будет идти гораздо лучше, ибо цель дает дополнительную мотивацию.
Если нет времени и сил, то лучше отдохнуть, будет полезнее. Иначе потом придется потратить все заработанные средства на отдых, а еще и в минус можете уйти.
В общем, работайте рационально, и трезво оценивайте свои силы.
#post
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥10👍5💯5❤1🤔1
🗓 Апрельский дамп
Все материалы за апрель.
📺 Видео (YouTube)
- Git Hooks / pre-commit
- Вакансии для Flutter-разработчиков 2
- bloc + пагинация = ❤️
- bloc_tools: генерируем блоки из консоли
- hydrated_bloc: сохраняем состояние блоков
- replay_bloc: откатываем состояния блоков и кубитов
💬 Видео (Telegram)
- Вакансии для Flutter-разработчиков 2
- bloc + пагинация = ❤️
- bloc_tools: генерируем блоки из консоли
- hydrated_bloc: сохраняем состояние блоков
- replay_bloc: откатываем состояния блоков и кубитов
🔖 Посты
- Мартовский дамп
- Подработки: что может пойти не так
👨🏻💻 LeetCode
- [Medium] 2150. Find All Lonely Numbers in the Array
#post #dump
🎵 Слушать подкаст в Apple Podcasts
💬 Слушать подкаст в Telegram
🌐 Читать посты в блоге
💬 Навигация по постам
Все материалы за апрель.
- Git Hooks / pre-commit
- Вакансии для Flutter-разработчиков 2
- bloc + пагинация = ❤️
- bloc_tools: генерируем блоки из консоли
- hydrated_bloc: сохраняем состояние блоков
- replay_bloc: откатываем состояния блоков и кубитов
- Вакансии для Flutter-разработчиков 2
- bloc + пагинация = ❤️
- bloc_tools: генерируем блоки из консоли
- hydrated_bloc: сохраняем состояние блоков
- replay_bloc: откатываем состояния блоков и кубитов
🔖 Посты
- Мартовский дамп
- Подработки: что может пойти не так
👨🏻💻 LeetCode
- [Medium] 2150. Find All Lonely Numbers in the Array
#post #dump
Please open Telegram to view this post
VIEW IN TELEGRAM
❤7👍6🔥5🎉1🤓1
У нас тут был большой релиз, и будто бы все отодвинулось на второй-третий план.
Тем временем, вышел мажорный апдейт freezed. Для обновления лучше руководствоваться инструкцией по миграции, так как изменились некоторые ключевые механики плагина.
Ниже список того, что мне больше всего приглянулось. Полный список нововведений тут.
1️⃣ Наследование
Выделил это первым пунктом и отдельно. Боль нашего проекта, из-за которой очень долгое время приходилось (и приходится) использовать built_value, в котором наследование было с давних времен (само решение такое себе, очень много лишнего в процессе работы появляется).
Выглядит наследование во `freezed` следующим образом:
class Base {
Base(String value);
}
@freezed
class Usual extends Base with _$Usual {
Usual({int? a}) a = a ?? 0, super('value');
final int a;
}
Остается только вопрос, что делать с тысячами строк уже написанного кода на
built_value
и обертками для него ;)2️⃣ Mixed Mode
freezed
теперь поддерживает 2 способа создания классов.Первый из них - обычный, уже знакомый нам по предыдущим версиям:
@freezed
sealed class Usual with _$Usual {
factory Usual({int a}) = _Usual;
}
Второй же более простой, удобный для создания небольших сущностей без специфического синтаксиса:
@freezed
class Usual with _$Usual {
Usual({this.a});
final int a;
}
Такая форма так же позволяет использовать все возможности конструкторов, включая вызов
super
у родительского класса.3️⃣ Возможность добавлять не константные значения по умолчанию
Тоже та еще головная боль, в особенности при работе с большими / сложными сущностями.
Конструктор теперь принимает любые значения, можно посмотреть на примере ниже:
@freezed
sealed class Response<T> with _$Response<T> {
// Параметр "time" не константный, раньше такое не сработало бы
Response._({DateTime? time}) : time = time ?? DateTime.now();
factory Response.data(T value, {DateTime? time}) = ResponseData;
factory Response.error(Object error) = ResponseError;
@override
final DateTime time;
}
4️⃣
map/when
больше не генерируютсяЕсли раньше у нас имелись методы по типу
map
или when
, которые позволяли писать код с учетом всех вариаций состояний для блоков, например, то теперь freezed
использует Дартовый паттерн-метчинг.Было:
final model = Model.first('42');
final res = model.map(
first: (String a) => 'first $a',
second: (int b, bool c) => 'second $b $c',
);
Стало:
final model = Model.first('42');
final res = switch (model) {
First(:final a) => 'first $a',
Second(:final b, :final c) => 'second $b $c',
};
Важно! Это - "ломающее" изменение в новой версии
freezed.
После обновления варианта с map
не будет, нужна миграция!#post
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥7👍4❤3🎉1
За почти год с небольшим каким-то образом получилось выпустить материалы по всем популярным темам касательно flutter_bloc.
В этом посте разбил весь контент на категории для более удобной навигации. Так же напоминаю, что весь контент по Блоку можно искать по тегу #bloc.
- Flutter Developer Talks #12 - BLoC
- Flutter Developer Learn #1 - Дополнение к выпуску про базу BLoC
- Flutter Developer Learn #2 - BlocBuilder
- Flutter Developer Learn #3 - Реализация состояний в BLoC
- Flutter Developer Learn #4 - BlocListener
- Flutter Developer Learn #5 - Cubit
- Flutter Developer Learn #8 - Как не нужно выстраивать коммуникацию между блоками
- Flutter Developer Learn #10 - BlocConsumer 2
- Flutter Developer Learn #6 - feature-first и layer-first подходы для организации Flutter-проектов
- bloc_concurrency
- Шиммеры / Скелетоны
- bloc + пагинация = ❤️
- hydrated_bloc: сохраняем состояние блоков
- replay_bloc: откатываем состояния блоков и кубитов
- Flutter Developer Learn #7 - Генерация шаблонного кода / mason
- bloc_tools: генерируем блоки из консоли
- flutter_bloc на собеседованиях
- VS Code для разработки Flutter-приложений
#post #bloc
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥15❤5👍4🎉1
🗓 Майский дамп
Все материалы за май.
🎵 Подкаст
- Проектирование Flutter-приложений [РЕМАСТЕР]
🔖 Посты
- Апрельский дамп
- freezed 3
- Все материалы по BLoC / flutter_bloc
#post #dump
🎵 Слушать подкаст в Apple Podcasts
🎵 Слушать подкаст в Яндекс Музыке
🌐 Читать посты в блоге
💬 Навигация по постам
Все материалы за май.
- Проектирование Flutter-приложений [РЕМАСТЕР]
🔖 Посты
- Апрельский дамп
- freezed 3
- Все материалы по BLoC / flutter_bloc
#post #dump
Please open Telegram to view this post
VIEW IN TELEGRAM
❤6👍3✍1🔥1🥰1
Нашел промпт, по которому DeepSeek и GhatGPT подсветили неявные проблемные моменты в моем резюме, а также дал советы, что с ними делать.
Резюме выгружал с HH. Работал с PDF и DOC-файлами. О разнице форматов расскажу ниже в заметках.
Просто вставляем следующий текст и прикрепляем файл в чат с AI-ассистентом:
Проанализируй моё резюме на основе следующих данных:
— Текст резюме
— Опыт работы (должности, компании, обязанности)
— Образование
— Навыки
— Сертификаты и достижения (если есть)
— Дополнительная информация (если есть)
Мне нужно понять:
— Какие первые впечатления складываются о кандидате?
— В какую профессию/роль я выгляжу наиболее подходящим кандидатом?
— Какие сильные стороны заметны сразу?
— Какие слабые места стоит доработать?
— Что может насторожить или оттолкнуть рекрутера?
— Как бы ты оценил общее впечатление от моего резюме?
Проанализируй текст как опытный HR/рекрутер и дай подробный, честный разбор.
Разницы между DeepSeek и ChatGPT почти нет. Однако, первый если что-то подсвечивает (типа у тебя нет высшего образования, это плохо), то рассказывает более подробно, в каких ситуациях что и кому может не понравится. Рекомендую попробовать несколько вариантов и найти самый подходящий для вас.
👨🏻💻 Итоги по моему резюме
- Возможные недопонимания по части времени работы в разных компаниях:
Я работал в компании Y, и спустя год после ухода оттуда помогал им с наймом как подрядчик. В резюме, если не смотреть на описание, опыт выглядит как
Компания Y -> Текущее место работы -> Компания Y
. Описание по моему опыту мало кто читает, так что лучше убрать это пункт вообще. Тем более, что там 2 месяца всего - будет больше вопросов со стороны HR, чем пользы.- Образование:
У меня нет вуза за плечами, и если вы не хотите видеть советы DeepSeek по вышке, лучше убрать пункт из промта. Он говорит, что на позиции тимлида и выше могут потребовать, но туда я пока не собираюсь. Ну а про высшее образование мы с вами уже говорили.
- Достижения без метрик:
Не везде есть цифры. Нужно указывать конкретные значения во всех ключевых достижениях. Не
сократил время запуска приложения
, а ускорил время запуска приложения в 2 раза
, например. Придется переделать пару пунктов, однако примеры есть в других кейсах, и будет проще на них ориентироваться.- Языки:
У меня Английский - B2. Для международных проектов этого может быть недостаточно. Вообще, давно им не занимался, может быть, там уже и не B2. Однако за подсказку спасибо, есть над чем поработать.
❗️ Заметки
1. После первого прогона понять, что не важно, и убрать из него все лишнее.
2. Использовать можно хоть PDF, хоть DOC. Однако нужно учитывать, что DeepSeek может распарсить файл с ошибками, и весь его последующий вывод будет учитывать и их. Если есть ошибки - это минус к итоговой оценке, хотя тут даже не ваша вина. Помогло скормить ему не DOC, а PDF, однако в другом подобном кейсе сработала обратная ситуация.
3. Не все советы прям действительно могут пригодиться. AI подсвечивает много чего, что зависит от конкретной ситуации. Высшее образование не всегда играет хоть сколь большую роль в трудоустройстве, больше обращают внимание на опыт. А Английский язык выше B2 на СНГ-рынке требуется не часто.
4. AI без конкретики выдаст результат по вашей текущей позиции с типичным планом развития. Это не значит, что обязательно после Middle идет Senior, а дальше только в лидство. Если план развития другой, лучше написать об этом заранее - советы будут ориентированы на конкретный кейс.
#post
Please open Telegram to view this post
VIEW IN TELEGRAM
❤7👍5✍3
🗓 Июньский дамп
Все материалы за июнь.
Напоминаю, что мы разобрали весь flutter_bloc. Ссылки на материалы находятся в этом посте.
🔖 Посты
- Майский дамп
- Новости / Анонсы 3
- Улучшаем резюме при помощи DeepSeek / ChatGPT
#post #dump
📱 Слушать подкаст в Apple Podcasts
📱 Слушать подкаст в Яндекс Музыке
📱 Читать посты в блоге
📱 Читать посты в Телеграме
Все материалы за июнь.
Напоминаю, что мы разобрали весь flutter_bloc. Ссылки на материалы находятся в этом посте.
🔖 Посты
- Майский дамп
- Новости / Анонсы 3
- Улучшаем резюме при помощи DeepSeek / ChatGPT
#post #dump
Please open Telegram to view this post
VIEW IN TELEGRAM
❤4🔥3👍2
Подробнее про теорию разбитых окон можно прочитать тут.
Если коротко, то эффект "разбитых окон" - это психологическая концепция, которая утверждает, что мелкие правонарушения и признаки безразличия к порядку провоцируют рост более серьёзных преступлений.
Касаясь темы разработки можно переформулировать определение и сказать, что "разбитые окна" в программировании - это мелкие недоработки / плохие практики в кодовой базе. Они приводят к ухудшению общей архитектуры проекта и способствуют использованию антипаттернов и спорных решений в проекте.
В видео про то, как не надо выстраивать коммуникации между блоками во flutter_bloc, мы затрагивали тему использования блоков внутри блоков. Это - яркий пример "разбитого окна". Вместо того, чтобы провайдить параметры из одного блока в другой, использования BlocListener'ов или других виджетов для создания коммуникации между ними, мы просто делаем все как можно быстрее. Это дает в свою очередь карт-бланш всем остальным коллегам на подобные технические решения. Особенно если это прошло ревью от лида или других разработчиков, вопросы отпадут само-собой - так точно можно и вам никто ничего не скажет. Даже если и будут вопросы, можно ссылаться на предыдущие реквесты и уже имеющийся код, мол так тут принято.
Порой наши собственные решения порой могут разбиваться нами самими. Например, если в проекте есть UI-Kit, то все компоненты должны быть только в нем. Но бывают ситуации, когда новые элементы интерфейса начинают класть в приложение. После пары-тройки таких ситуаций, у вас исчезнет целостность UI-системы. Получается, зря тратили время на ее построение, а дальнейшая модификация или ее распространение на другие проекты стоит под вопросом.
Описанное выше можно поправить разработкой через официальные рекомендации из документации, либо же хорошим ревью изменений. Вопрос больше в том, если ли время и ресурсы на проработки таких вещей? Вот у нас их не всегда хватает, приходится в рамках других задач делать правки по техническому долгу.
Так же нужно учитывать, что мы не всегда можем определить "разбитое окно". Дело касается больше не технических, а концептуальных решений. Глобальные состояния - это не всегда плохо. Плохо то, что они могут использоваться где попало и без следования регламентам и требованиям проекта. Если сущность должна сохраняться через репозиторий или сервис, делать это в обход (например, из самого класса бизнес-модели) - "разбитие окна".
При росте проекта все болячки рано или поздно вылезут, и будет лучше, если вы заранее позаботетесь о состоянии кодовой базы. Добавить виджет блока или создать визуальный компонент в другом модуле - не самые трудоемкие задачи, а рефакторинг проекта будет дороже и сложнее. Старайтесь думать наперед о таких вещах.
#post
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5⚡2🔥2
Дарт и его тулы в купе с AI дают нам возможность быстро создавать собственные инструменты для работы с техническим долгом.
Один из возможных способов чинить разбитые окна - собственные аннотации и генерация отчетов о состоянии кода по ним.
Сделал небольшой демонстрационный проект, с помощью которого можно помечать технический долг (любой элемент кода в проекте), и генерировать отчет в формате HTML для визуализации имеющихся проблем.
В коде будет выглядеть так:
@TechnicalDebt(
author: 'fluttermiddlepodcast',
description: 'Move to UI-Kit',
severity: Severity.minor,
deadline: '2025-12-12',
)
class BEShimmer extends StatelessWidget {
final double height;
final double width;
const BEShimmer({
super.key,
required this.height,
required this.width,
});
@override
Widget build(BuildContext context) {
return Shimmer.fromColors(
baseColor: Colors.grey.shade300,
highlightColor: Colors.grey.shade50,
child: SizedBox(
height: height,
width: width,
child: const ColoredBox(
color: Colors.white,
),
),
);
}
}
В bloc_example сделал ветку technical_debt, где можно попробовать самим сгенерировать отчет, и посмотреть на сгенерированный результат.
Просто выгружаете проект, и дальше из терминала после `fvm pub get` выполняете:
$ fvm flutter pub run build_runner build --delete-conflicting-outputs
Это - не готовое решение, а лишь небольшой пример, сделанный меньше чем за час при помощи AI. Вы можете доработать его и использовать у себя в проектах (о том, что нужно сделать, написал тут).
Дарт - это не только про бизнес-логику и плагины. На нем можно писать инструменты, помогающие в прикладной разработке. Полученные данные можно интегрировать в ваши CI-системы, строить отчеты о росте проблем в проекте (или их снижении), а так же держать руку на пульсе и не давать разбивать еще больше окон (а так же чинить то, что есть).
#post
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5🔥4❤3
Периодически я работаю под монотонную фоновую музыку (белый шум, либо Lo-Fi). Если раньше просто включал какой-нибудь плейлист на YouTube, то в последнее время приходится искать другие способы прослушивания.
Недавно в рекомендациях Apple Music показал целый раздел с фоновыми звуками. Для тех, кому нужен белый шум (он так же помогает засыпать), вот часть из плейлистов:
🐦 Bird Sounds
⛈ Thunderstorms
🐳 Ocean Sounds
🌧 Rain Sounds
Скорее всего, подобные сборники есть и на других площадках (звуки дождя и грозы в Яндекс Музыке тут). Так что если у вас проблемы с доступом на YouTube, или же просто не хочется ставить отдельные приложения подобного формата, рекомендую найти что-то в уже имеющихся сервисах.
#post
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5🔥2❤1👨💻1
Flutter Developer Talks
🔖 2024 Stack Overflow Developer Survey На StackOverflow появились результаты ежегодного опроса разработчиков про используемые ими технологии и тенденции в плане обучения и используемых сервисов на работе. 👨🏻💻 Из интересного 👉 В опросе приняло участие 65437…
🔖 2025 Stack Overflow Developer Survey
StackOverflow опубликовал результаты ежегодного опроса разработчиков про текущее состояние нашей сферы деятельности.
👨🏻💻 Из интересного
👉 Получено более 49 000 ответов на вопросы. ОТВЕТОВ! Не количество людей, принявших участие в исследовании. В прошлом году было 65 000 человек, видимо популярность площадки все-таки падает.
👉 JavaScript - все еще самый популярный язык программирования у респондентов на платформе. В разделе с языками для обучения его опережает Python, однако в остальных топиках он уступает HTML / SQL.
👉 VS Code все еще самое популярное средство для разработки софта. С большим отрывом ему уступают Visual Studio и IntelliJ IDEA, а где-то между ними расположился NodePad++. Если пройтись по списку и сложить все цифры по IDE на основе IntelliJ (Android Studio, PyCharm, Rider и так далее), то можно будет ровняться с VS Code.
👉 Dart находится на 19 месте в списке самых используемых языков программирования. В прошлом году был на 17. Тут я бы вообще не делал никаких выводов - с учетом падения интереса к SO, не понятно, насколько падение на 2 места действительно идет от популярности, нежели от чего-то еще.
👉 Секции с популярными фреймворками кроме как для Web-разработки нет. Поэтому узнать текущее место Флаттера в этой категории не получится. Ровным счетом как и посмотреть, как дела у конкурентов.
👉 Windows - самая популярная платформа как для персонального, так и для рабочего использования. За ней с небольшим отрывом идут macOS и некоторые дистрибутивы Linux (Debian, Ubuntu, Arch и так далее).
👉 32,4% опрошенных работают удаленно. Офисный формат (только офис, не гибрид) примерно у четверти респондентов.
👉 42,2% работают только в одной компании. Варианты ответа со второй (третьей?) полноценной работой отсутствуют - только парт-тайм с разным количеством часов в неделю.
Есть отдельные темы про AI, но лишний раз обмусоливать это не хочу. Можете познакомиться с ними сами по ссылке в начале поста. Ну и с остальными топиками тоже.
#post
📱 Слушать подкаст в Apple Podcasts
📱 Слушать подкаст в Яндекс Музыке
📱 Читать посты в блоге
📱 Читать посты в Телеграме
StackOverflow опубликовал результаты ежегодного опроса разработчиков про текущее состояние нашей сферы деятельности.
👨🏻💻 Из интересного
👉 Получено более 49 000 ответов на вопросы. ОТВЕТОВ! Не количество людей, принявших участие в исследовании. В прошлом году было 65 000 человек, видимо популярность площадки все-таки падает.
👉 JavaScript - все еще самый популярный язык программирования у респондентов на платформе. В разделе с языками для обучения его опережает Python, однако в остальных топиках он уступает HTML / SQL.
👉 VS Code все еще самое популярное средство для разработки софта. С большим отрывом ему уступают Visual Studio и IntelliJ IDEA, а где-то между ними расположился NodePad++. Если пройтись по списку и сложить все цифры по IDE на основе IntelliJ (Android Studio, PyCharm, Rider и так далее), то можно будет ровняться с VS Code.
👉 Dart находится на 19 месте в списке самых используемых языков программирования. В прошлом году был на 17. Тут я бы вообще не делал никаких выводов - с учетом падения интереса к SO, не понятно, насколько падение на 2 места действительно идет от популярности, нежели от чего-то еще.
👉 Секции с популярными фреймворками кроме как для Web-разработки нет. Поэтому узнать текущее место Флаттера в этой категории не получится. Ровным счетом как и посмотреть, как дела у конкурентов.
👉 Windows - самая популярная платформа как для персонального, так и для рабочего использования. За ней с небольшим отрывом идут macOS и некоторые дистрибутивы Linux (Debian, Ubuntu, Arch и так далее).
👉 32,4% опрошенных работают удаленно. Офисный формат (только офис, не гибрид) примерно у четверти респондентов.
👉 42,2% работают только в одной компании. Варианты ответа со второй (третьей?) полноценной работой отсутствуют - только парт-тайм с разным количеством часов в неделю.
Есть отдельные темы про AI, но лишний раз обмусоливать это не хочу. Можете познакомиться с ними сами по ссылке в начале поста. Ну и с остальными топиками тоже.
#post
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8❤3🔥3👀1
🗓 Июльский дамп
Все материалы за июль.
Напоминаю, что мы разобрали весь flutter_bloc. Ссылки на материалы находятся в этом посте.
🔖 Посты
- Июньский дамп
- Эффект "разбитых окон" в разработке софта
- Кастомные инструменты Дарта как средства работы с техническим долгом
- Фоновые звуки в Apple Music
- 2025 Stack Overflow Developer Survey
#post #dump
📱 Слушать подкаст в Apple Podcasts
📱 Слушать подкаст в Яндекс Музыке
📱 Читать посты в блоге
📱 Читать посты в Телеграме
Все материалы за июль.
Напоминаю, что мы разобрали весь flutter_bloc. Ссылки на материалы находятся в этом посте.
🔖 Посты
- Июньский дамп
- Эффект "разбитых окон" в разработке софта
- Кастомные инструменты Дарта как средства работы с техническим долгом
- Фоновые звуки в Apple Music
- 2025 Stack Overflow Developer Survey
#post #dump
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4🔥2🥰1🤓1
Flutter Developer Talks
Flock - это форк Флаттера. Подробнее о нем рассказывал в этом посте. Там и о причинах создания ответвления, и о том, что я думаю по этому вопросу. В видео-формате есть ролик Станислава Чернышева, тоже рекомендую ознакомиться. В нем больше информации и рассуждений, с конкретными примерами из уже существующих на тот момент репозиториев.
И вот, решил я посмотреть, какой прогресс у команды Флока за 10 месяцев с момента анонса.
Сейчас Flock - это копия Flutter. Разработчики занимаются налаживанием сборки и фундамента для дальнейшей работы с платформой. Это написано на главной странице их сайта. Ниже будут ссылки с ответами на вопросы авторов, там эта информация тоже подтверждается.
Часть разделов сайта как были с
Coming soon
, так и остается с ним. Гайдов по работе с форком тоже нет. Последний пост в блоге - приглашение к дискуссии на GitHub, и датируется он 19 ноября 2024 года.Имеется репозиторий с патчами, но их не много. Есть даже демо, где дефолтный флаттеровский счетчик запускается через Flock. Секция с обсуждениями не пополняется дискуссиями с конца прошлого года - видимо, интерес к проекту очень быстро пропал.
В issues основного репозитория можно найти следующее:
- На вопрос про дальнейшее развитие форка четкого ответа нет
- Из 40 человек, которые хотели контрибьютить в Flock, до реального вклада дошел только 1
- Команда Flock: 3 человека, из которых 2 основателя и 1 сторонний контрибьютор
❓ Что все это значит, и почему так обстоят дела
Когда форк заработает (если вообще заработает) - не понятно. Как и не понятна идея создания форка без предварительной подготовки и наличия единомышленников, которые сразу после анонса будут пилить фичи и развивать форк.
Расчет, как мне кажется, был на гарантированный приток контрибьюторов и отклик у большого числа людей, чего не произошло почти за год существования Flock'а. Явные улучшения, которые предлагались изначально (по-типу включения поддержки Harmony OS и других платформ, отсутствующих во Flutter'е из коробки), почему-то не были реализованы.
Поспевать за всем тем, что добавляется во Flutter, такой маленькой командой невозможно. Авторы Flock жаловались на медленные процессы принятия изменений во Flutter, а получается так, что и у них этот момент тоже может повториться. Как будут подбираться эксперты, которые берут на себя ответственность за влитые правки? Кто будет работать над разрешением конфликтов? Вопросов больше, чем ответов.
В любом случае посмотрим, к чему все это дело приведет. Пока ничего не закрыто и не заархивировано, есть коммиты и небольшие активности, говорить о прекращении существовании Флока не получится.
#post
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4❤2🔥2✍1👏1
Вышла экспериментальная фича для просмотра виджетов в режиме реального времени в Google Chrome.
👨🏻💻 Что и как можно смотреть?
На данный момент возможностей по отображению виджетов не много, и есть ограничения на то, что показывать.
Доступны к просмотру:
- Функции верхнего уровня: методы, возвращающие
Widget
или WidgetBuilder
.- Статические методы внутри класса, возвращающие
Widget
или WidgetBuilder
.- Публичные конструкторы виджетов и фабрики без обязательных аргументов.
Для отображения виджета во Flutter Widget Previewer нужно пометить аннотацией `Preview` элемент кода, который подходит под один из пунктов списка допустимых компонентов:
import 'package:flutter/widget_previews.dart';
import 'package:flutter/material.dart';
@Preview(name: 'My Sample Text')
Widget mySampleText() {
return const Text('Hello, World!');
}
Далее из терминала выполняем следующую команду:
flutter widget-preview start
Google Chrome открывается автомитически после сборки. Можно скопировать ссылку и использовать просмотрщик в других совместимых браузерах. Результат будет такой же (в зависимости от виджетов), как и на скриншоте в посте.
Помимо просмотра виджетов, можно так же менять:
- Зум: увеличение и уменьшение виджета в окне предварительного просмотра.
- Сброс масштаба: откат после изменений зума.
- Переключение между темной и светлой темами.
- Hot restart отдельно взятого виджета, без пересборки всего Flutter Widget Previewer.
🛠 Кастомизация
Аннотация Preview позволяет помимо имени виджета задавать следующие параметры для отображения компонента:
-
size
: размер компонента с использованием класса Size
.-
textScaleFactor
: собственный скейл для текста внутри отображаемого виджета.-
wrapper
: функция, которая врапит ваш виджет в заданное дерево виджетов.-
theme
: функция для установки Material
или Cupertino
темы.-
brightness
: параметр brightness
, который будет использоваться для отображаемого виджета.-
localizations
: локализация для отображаемого виджета.🚫 Ограничения
На данный момент имеем следующее:
- Публичные константы: все аргументы, которые принимает аннотация
Preview
, должны быть публичными и константными. Требуется для нормальной работы генератора кода. В будущем часть ограничений будет смягчена.- Неподдерживаемые API: нативные плагины и любые API из библиотеки
dart:io
не поддерживаются. Поскольку FWP
работает в вэбе, нативные плагины там не работают. Вэб-плагины тоже не получится использовать, так как нет гарантий из работы локально в IDE.- Пути к ресурсам: при использовании API
fromAsset
из dart:ui
для загрузки ресурсов необходимо использовать пути на основе пакетов вместо прямых локальных путей. Это дает гарантированный и корректный импорт зависимостей.- Поддержка браузеров: сейчас доступно только в Chrome, поскольку для FWP требуется поддержка горячей перезагрузки. Поддержку IDE обещают в скором времени.
-
Unconstrained
-виджеты: на данный момент отображаются только на половину экрана. В будущем поведение изменится.#post
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥6👍5❤3✍2