Юрий Петров | ai engineering
Ir al canal en Telegram
Привет! 👋 Я руководитель отдела разработки. Здесь мы изучаем LLM, автоматизацию с n8n, делаем крутые приложения на Flutter и учим их думать с помощью ИИ. Новости, лайфхаки, интересные кейсы, присоединяйся. #flutter #dart #llm #ai #ollama #n8n #agent #go
Mostrar más1 774
Suscriptores
-224 horas
-127 días
-6030 días
Archivo de publicaciones
От Flutter Observer:
🎉 Потрясающие новости! Вышла новая версия Dart!
✅ Dart: 3.7.3
✅ Release date: 2025-04-16
✅ hash: 633eb6b87ec3c524c9f315e5dd15f82dc659cd88
🔗 Changelog
🔗 Breaking changes
🔗 Commit
🔗 Tag
Основное изменение: регресс производительности анализатора.
Repost from Основы Flutter
🚨Обновление "Основы Flutter (в разработке)" 🥳
Добавлен сквозной проект для 5-й главы (Проект: Игра «Тетрис» v.5. Работа с сетью) 😎 В ходе него запилим работу с сетью, погрузимся в рефакторинг структуры проекта, а в качестве дополнительного челленджа – откажемся от использования сторонних библиотек и будем использовать исключительно инструменты от команды Flutter 🤬
p.s. Это самый объемный раздел посвященный сквозному проекту 🫠
Свершилось, Аврора СДК работает на м-процессорах мак. Значит, и Flutter-разработчики смогут очень скоро разрабатывать на макбуках с процессорами М.
Repost from Flutter Friendly
Привет, это Юра Петров, руководитель отдела разработки Friflex👋
Хочу лично пригласить вас на конференцию по кроссплатформенной мобильной разработке, которая пройдет 11 апреля в Москве @omp_ru.
Поговорим про Flutter, PWA и KMP — обо всем, что нужно знать, если вы в теме или хотите в нее влиться. Я расскажу, как мы портировали Flutter-приложения на ОС Аврора: покажу кейсы «Дикси», ЭНЕРГОГАРАНТ, idChess и «Мобильный агент». Продемонстрирую, как делить приложение на отдельные сервисы.
Если вам интересно, как запускать приложения на ОС Аврора с помощью привычных инструментов — приходите!
Где: Москва, пр-т Вернадского, 41, БЦ Академик, 4 этаж
Когда: 11 апреля 2025
Регистрация: timepad
Увидимся🙌
Repost from Основы Flutter
🚨Обновление курса "Основы Flutter (в разработке)" 🥳
Мы наконец-то закончили последний раздел второй главы - "Скроллируемые виджеты" и он из книги перекочевала на степик 🫠
Последняя неделя выдалась для команды очень продуктивно и о том, что же мы такого наворотили - постепенно будем постепенно делиться с вами в этом канале 😎
+1
В Qwen появилась возможность объединять модели), очень мощная штука стала. При этом, в отличии от GPT полностью бесплатная сетка.
Repost from Product Friendly
Запомним этот день! Сегодня запускаем Friflex Club🚀
Теперь у нашего пространства есть два измерения:
Product Friendly — медиасреда, где идеи оформляются в тексты и слова.
Friflex Club — среда людей, где эти идеи рождаются, переживаются и проверяются на практике.
Кто в клубе?
Эксперты, CTO, CEO, CMO, основатели бизнесов — все, кто верит в силу технологий и ценит знания.
Что нас объединяет?
Стремление осмысленно работать с технологиями. Ценности, на которых держится доверие: сотрудничество, креативность, честный интерес.
Что будет происходить?
Будем встречаться, обсуждать тренды, генерить идеи и вместе двигать индустрию вперед. А всеми инсайтами — делиться в нашем канале.
Первая встреча уже сегодня — в неформальной атмосфере поговорим о перспективных каналах дистрибуции цифровых сервисов. Среди спикеров — эксперты из Спортмастера, Gulliver Group, Flowwow, Винлаба и Friflex. Обязательно поделимся всем, что узнаем.
Следите за новостями — будет🔥
Были найдены новые статьи на Medium про Flutter ⭐️
- Flutter 2025 roadmap update
@FlutterObserver_bot
Каждый день в pub dev добавляются много новых пакетов. Когда бот присылает список, проходишься по всем, пытаешся понять. Бывают и интересные экземпляры.
Но бывают и такие пакеты. )))
@FlutterObserver_bot
Ух, зашел в репозиторий по ресурсам Flutter и увидел, что ребята из Mad Brains сделали пулреквесты на оптимизацию и добавления чата Комьюнити Flutter-разработчиков от Mad Brains.
Прошу меня простить, что сразу не увидел. В дальнейшем буду периодически заходить смотреть пулреквесты )
В итоге:
- в список чатов на русском языке добавлен чат Комьюнити Flutter-разработчиков от Mad Brains;
- в список чатов на английском языке добавлен чат Комьюнити Flutter Guys.
- в список чатов на английском языке добавлен чат Flutter developers community.
Если кто-то еще знает интересные ресурсы по Flutter, пишите мне или сделайте пулреквест.
Отслеживать обновления в репозитории можно в боте @FlutterObserver_bot
Обновил ботика FlutterObserver_bot до версии 0.2.1
- Обновление Telegram API до 8.3
- Теперь changelog отображается первым для быстрого перехода
- Оптимизация сервиса для отправки сообщений пользователем
- Исправление минорных ошибок
https://telegra.ph/Flutter-Observer-02-17
Repost from Flutter Friendly
Привет, с вами Роза, Flutter Dev Friflex!
Когда только начинаешь разрабатывать на Flutter, многие возможности языка остаются незамеченными. А с опытом начинаешь глубже разбираться в деталях и повышать свою экспертность. С модификаторами классов у меня было так же: изначально в моем арсенале был лишь abstract... и все, наверное. А со временем я узнала и про sealed, и про base. Делюсь этим и с вами!
Зачем нужны модификаторы?
Модификаторы в Dart помогают управлять наследованием и доступностью классов. Они задают ограничения, предотвращают нежелательное расширение или, наоборот, определяют четкие правила для будущих реализаций.
Основные модификаторы:
🔸abstract
Если вам не нужна реализация всех методов, а вы хотите создать класс-шаблон, используйте abstract.
🔴Запрещает создавать экземпляры этого класса напрямую (new AbstractClass() не сработает).
🔴Часто используется как базовый класс, определяющий интерфейс и частичное поведение для наследников.
🔸base
Разрешает наследование (extends) и реализацию (implements), но только в пределах текущего пакета.
🔴За пределами пакета base-класс нельзя реализовать (implements).
🔴Полезно, если нужно предотвратить реализацию, но оставить возможность наследования.
🔸interface
Принуждает использовать класс только через implements, запрещая наследование (extends).
Полезно, если хотите создать чистый контракт, без возможности переиспользовать реализацию.
🔸final
Запрещает любое наследование (extends) или реализацию (implements) класса за пределами текущей библиотеки.
Гарантирует, что класс — конечная точка в иерархии. Его нельзя расширить или изменить поведение через подклассы вне вашего контроля.
🔸mixin
Позволяет переиспользовать код без наследования.
🔴Класс с mixin можно добавлять к другим классам через with.
🔴Миксины не могут иметь конструкторов и не могут быть инстанцированы напрямую.
🔸sealed
Позволяет создавать закрытый набор подтипов.
🔴Все подклассы должны быть в той же библиотеке, что и sealed-класс.
🔴Полезно для switch, так как компилятор проверяет, что все случаи учтены (exhaustiveness).
🔴Отлично подходит для описания состояний (Loading, Success, Error), событий и других строго определенных иерархий.
Как использовать модификаторы?
Добавьте перед классом нужное ключевое слово. Например:
sealed class GameState {
// ...
}
🔖Важно! Модификаторы можно комбинировать (abstract base class), создавая тонкие правила для классов. Подробнее — в таблице в комментариях.
📎 Официальная документация по модификаторам
А какие модификаторы используете чаще всего? Делитесь в комментариях! 👀Repost from Ringov
Где в Яндексе есть Flutter?
Недавно прошедший внутренний митап ознаменовал новую веху — в Яндексе появилось Flutter-комьюнити!
На митапе отлично повеселились, а заодно провели инвентаризацию команд, использующих Flutter — записывайте 😯
1. Про — iOS | Android
2. Драйв — iOS | Android
3. Практикум — iOS | Android
4. Маршрутизация — iOS | Android
5. Афиша — iOS | Android
6. Авто.ру Бизнес — iOS | Android
7. Заправки — iOS | Android
8. Смена — iOS | Android
9. Маркет ПВЗ — iOS | Android
Ещё есть несколько мест, где Flutter встроен в Яндекс Go. Ну и на десерт. В десктопном Яндекс Браузере многие части UI — на Flutter 😎
Ну чисто чтобы у вас не было сомнений по поводу количества продуктовых Flutter-команд в Яндексе ☕️
В Medium были найдены новые статьи о Dart ⭐️
- Dart in Google Summer of Code 2025
Информация от FlutterObserver_bot
У бота Flutter Observer количество активных пользователей превысило планку в 300 человек. Неплохо, неплохо. ☺️
Напоминаю, что есть тема в группе, где можно предлагать добавить функции, которые, вы считаете, были бы полезны сообществу. Также это сделать можно написать прямо в боте командой /send.
Repost from Flutter Friendly
Привет, это Катя, Flutter Dev Friflex. Сегодня поговорим о фреймворке gRPC и его реализации.
Что это?
gRPC — это фреймворк для удаленного вызова процедур (RPC), разработанный Google. Он использует HTTP/2 для транспорта и Protocol Buffers (protobuf) в качестве языка описания интерфейсов и формата сериализации данных.
Настройка и использование gRPC
1️⃣ Добавляем в pubspec.yaml:
dependencies:
grpc: ^4.1.0
protobuf: ^3.1.0
dev_dependencies:
protoc_plugin: ^21.1.2
2️⃣ Создаем файл .proto
Сделаем на примере создания чата. Определяем сервис в файле .proto. Например, lib/protos/chat.proto:
syntax = "proto3";
package chat;
service ChatService {
rpc SendMessage (Message) returns (MessageResponse);
rpc ReceiveMessages (Empty) returns (stream Message);
}
message Message {
string text = 1;
string sender = 2;
int64 timestamp = 3;
}
message MessageResponse {
bool success = 1;
string error = 2;
}
3️⃣ Генерируем код
Запускаем команду для генерации Dart-кода:
bash
protoc --dart_out=grpc:lib/generated -Ilib/protos lib/protos/chat.proto
4️⃣ Создаем клиента
class GrpcClient {
late ChatServiceClient client;
/// Инициализация канала соединения
GrpcClient() {
final channel = ClientChannel(
'http://localhost',
port: 50051,
options: const ChannelOptions(
credentials: ChannelCredentials.insecure(),
),
);
client = ChatServiceClient(channel);
}
/// Отправка сообщения
Future<MessageResponse> sendMessage(String text, String sender) async {
final message = Message()
..text = text
..sender = sender
..timestamp = DateTime.now().millisecondsSinceEpoch;
try {
return await client.sendMessage(message);
} catch (e) {
print('Error sending message: $e');
return MessageResponse()..success = false..error = e.toString();
}
}
/// Получение сообщений
Stream<Message> receiveMessages() {
return client.receiveMessages(Empty());
}
}
5️⃣ Используем клиента в приложении
На что следует обратить внимание:
🔸gRPC клиент:
➡️инициализируется один раз при создании состояния
➡️обеспечивает двустороннюю коммуникацию
➡️управляет подпиской на поток сообщений
🔸Потоковая передача:
➡️receiveMessages() возвращает Stream<Message>
➡️listen() подписывается на новые сообщения
🔸Управление ресурсами:
➡️gRPC соединение должно закрываться
➡️Отмена подписок происходит автоматически при dispose()
Продолжение — в комментариях📌