Юрий Петров | ai engineering
Открыть в Telegram
Привет! 👋 Я руководитель отдела разработки. Здесь мы изучаем LLM, автоматизацию с n8n, делаем крутые приложения на Flutter и учим их думать с помощью ИИ. Новости, лайфхаки, интересные кейсы, присоединяйся. #flutter #dart #llm #ai #ollama #n8n #agent #go
Больше1 574
Подписчики
-224 часа
-187 дней
-13230 дней
Архив постов
Интересно, какой логикой руководствуются люди, которые ставят задачу создать полностью готовое приложение (клиент + бэкенд) за месяц? Откуда такой «крутой» менеджмент? Из курсов, где за две недели готовят IT-специалистов? Могли бы еще добавить в требования, чтобы код был идеальным, несмотря на сжатые сроки, и готовность работать 24/7. 😁 Я боюсь даже представить, каким будет качество кода и архитектуры. Разработчиков-то понять можно: они сдадут проект, получат деньги и уйдут в закат. Но почему собственники не задумываются о последствиях? Вот простая аналогия: вы хотите сделать ремонт в ванной, мастер говорит, что нужно неделю, а вы ему: «Нет, давай за три дня». Так никто не поступает, согласитесь. Потому что это своё, родное, и все понимают, что качество требует времени. Почему же в IT эти простые истины не понимают? Или считают, что это «не своё, не родное»? Странно конечно, и грустно.
Дорогие и прелестные наши девушки, поздравляю вас с 8 Марта 🎉, желаю счастья, радости, благополучия. Не переставайте радовать нас и будьте счастливы 💐
Repost from Flutter Friendly
Привет, это Анна, Friflex Flutter Team Lead.
Признавайтесь, кому приходилось хотя бы раз писать расширения для строк, чисел и даже списков, чтобы выполнить какие-то простые преобразования или проверки, которых нет среди стандартных функций? Уверена, почти всем! Сегодня я расскажу, как перестать это делать.
Вам нужна всего одна библиотека — dartx.
Пакет дает доступ к дополнительным расширениям классов String, int, num, Iterable, DateTime, File и других, которые используются буквально в каждом проекте. Разберем самые интересные функции.
🔸String
1️⃣
capitalize() и decapitalize() — изменят регистр только первой буквы предложения
2️⃣ isNotNullOrBlank и isNullOrBlank — проверят, есть ли читаемое содержимое, при этом не учитывая специальные символы по типу \n и пробелов
3️⃣ urlEncode и urlDecode — в строке преобразуют ссылку в формат application/x-www-form-urlencoded или обратно
final capitalizedText = 'пример заглавной буквы'.capitalize(); // Пример заглавной буквы
final isBlank = ' \n'.isNullOrBlank; // true
final decodedText = 'Пример%20декодирования'.urlDecode; // Пример декодирования
🔸Iterable
1️⃣ sortedBy() и thenBy() — позволят вам выполнить сортировку по нескольким признакам
2️⃣ chunkWhile() и splitWhen() — объединит в подсписки при выполнении или невыполнении условия
final dogs = [
Dog(name: "Charlie", age: 1),
Dog(name: "Bark", age: 3),
Dog(name: "Charlie", age: 6),
];
final sorted = dogs.sortedBy((dog) => dog.name).thenByDescending((dog) => dog.age); // Bark, Charlie (6), Charlie (3)
final chunckedList =[1, 2, 4, 9, 10, 11].chunkWhile((a, b) => a + 1 == b); // [[1, 2], [4], [9, 10, 11]]
🔸DateTime/Duration (эти функции можно подключить отдельно через пакет time)
1️⃣isAtSameYearAs(date) — проверит, находится ли текущая дата в рамках одного и того же года даты date в параметре (есть аналогичные проверки по месяцу и дню)
2️⃣ minutes.fromNow и minutes.ago — высчитает DateTime по указанной длительности в будущем и прошлом
3️⃣ hours — создаст Duration объект из целого числа
final tenMinutes = 10.minutes; // Duration(minutes: 10)
final isAtSameYear = DateTime(2025, 01, 01).isAtSameYearAs(DateTime(2020, 10, 05)); // false
final timeInFuture = 5.minutes.fromNow; // DatiTime.now() + 5 минут
Это только малая часть того, что умеет dartx!
❤️ — если уже пользуетесь пакетом
🔥 — если только сейчас открыли для себя его чудесные функцииТут Стас решил поделиться инфой, сколько он заработал на своем приложении. Интересное видео, рекомендую 😎
https://youtu.be/kDabZ5HohGQ?si=Flii4Ve15epZYtad
Repost from MADTeacher | Станислав Чернышев
Всем привет!
У меня для вас хорошие новости по книге "Основы Flutter" 👀
Глава по тестированию отредактирована и утверждена, а значит, на курсе "Основы Flutter" на степике большое обновление ^_^
Если есть предложения по функциям, которые вы бы хотели видеть в боте @FlutterObserver_bot, или есть вопросы, или нашли баги. Пишите сюда, обсудим. Специально для этого создал отдельную тему в Хижине программиста. 😎
https://t.me/FlutterObserver_bot
+1
Всем привет, @FlutterObserver_bot научился отслеживать новые статьи на Medium в разделах Flutter и Dart. Бот уведомит вас, когда на Medium появится новая статья.
Также можно всегда в разделе «Сводка» запросить три последние статьи.
Будьте в курсе новостей по Flutter с FlutterObserver_bot.
Repost from MADTeacher | Станислав Чернышев
Рубеж в 700 страниц электронной версии книги "Основы Flutter" пройден 🥳🥳
Скорей всего на следующей неделе, после утверждения, курс на степике пополнится главой "Тестирование" 🤬
🎉 Exciting news! Dart new version is out. Stay updated!
✅ Dart: 3.7.1
✅ Release date: 2025-02-25
✅ hash: dcddfaba8d0a77a30afceae5958c2d20fa365c71
🔗 Breaking changes
🔗 Changelog
🔗 Commit
🔗 Tag
🎉 Exciting news! Dart new version is out. Stay updated!
✅ Dart: 3.7.1
✅ Release date: 2025-02-25
✅ hash: dcddfaba8d0a77a30afceae5958c2d20fa365c71
🔗 Breaking changes
🔗 Changelog
🔗 Commit
🔗 Tag
Всем привет, по просьбам подписчиков добавил в курс «Dart 3 в действии» раздел про Dart FFI.
Где разберем:
1. Что это такое, для чего нужно, как использовать.
2. Сами создадим простую библиотеку на C и вызовем ее из Dart.
3. Освобождение памяти — функция malloc.
4. Сигнатуры типов, которые используются в Dart.
5. Маркерные типы.
6. ABI-специфичных типов в Dart FFI.
+ 8 проверочных заданий по теме.
Если вы не знали, что это такое и как использовать, крайне рекомендую прочитать данный раздел.
https://stepik.org/a/120892
Repost from Flutter Friendly
Привет! Это Роза, Flutter Dev Friflex! 👋
Открывая любое приложение, скорее всего вы там увидите одну или 2 иконки. Но откуда они и как добавить свои кастомные иконки? В Flutter вы можете работать с иконками, используя три основных подхода:
1️⃣ Иконки из шрифтов (Icon Fonts) — встроенные иконки, такие как Material Icons.
2️⃣ SVG-иконки — обработка с помощью пакета flutter_svg
3️⃣ Векторная графика — использование vector_graphics для более быстрого рендеринга.
Предлагаю сравнить эти варианты и рассмотреть, когда и где использовать каждый из них.
🔸Иконки из шрифтов (Icon Fonts)
Иконки из шрифтов — это символы в формате шрифтов, например, Material Icons:
Icon(Icons.home, size: 32, color: Colors.blue)
Можно использовать кастомные шрифты с иконками. Например, с помощью IcoMoon:
1. Генерируем файл .ttf с иконками.
2. Подключаем в pubspec.yaml:
flutter: fonts: - family: CustomIcons fonts: - asset: assets/fonts/CustomIcons.ttf3. Используем:
const Text(
'\uE900',
style: TextStyle(fontFamily: 'CustomIcons', fontSize: 32),
),
🔸SVG-иконки с flutter_svg:
Для кастомных иконок в векторном формате используем пакет flutter_svg:
import 'package:flutter_svg/flutter_svg.dart';
SvgPicture.asset(
'assets/icons/home.svg',
width: 32,
height: 32,
colorFilter: ColorFilter.mode(Colors.blue, BlendMode.srcIn),
)
🔸Векторная графика (Vector Graphics)
Для повышения производительности конвертируем SVG в формат vector_graphics. Он рендерится быстрее.
import 'package:vector_graphics/vector_graphics.dart';
VectorGraphic(
assetName: 'assets/icons/home.vec',
width: 32,
height: 32,
)
Что выбрать?
✅Icon Fonts — для стандартных иконок с высокой производительностью.
✅Flutter SVG — для кастомных и анимированных иконок.
✅Vector Graphics — для максимальной скорости рендеринга.
Какой метод используете вы? Делитесь в комментариях! 🚀Repost from MADTeacher | Станислав Чернышев
+3
😎 Команда Dart SDK стартовала внутренний эксперимент по фиче "Shared Memory Multithreading" и молчат как партизаны, но не на того напали 🤬
Добавлена новая встроенная библиотека - concurrent с несколькими примитивами синхронизации:
Mutex и ConditionVariable 😍А также тесты для проверки их работоспособности и возможности изменения экземпляров примитивных типов данных (int, double и т.д.) и классов из разных изолятов.
Логичный шаг, т.к. такие типы данных интернируются при текущей модели памяти Dart и представлены одним экземпляром в куче изоляционной группы, т.е. a = 4 во всех изолятах одной группы ссылается на один объект в памяти.
Для того, чтобы пощупать текущее состояние фичи необходимо перейти на dev или main ветку, использовать над общим ресурсом аннотацию @pragma('vm:shared') и не забыть указать при запуске приложения экспериментальный флаг —-experimental-shared-data
Ждете?🫠
👍 - О, да, детка
👌 - ну выйдет фича и выйдет
👎 - не вижу пользы от этой фичиМы с Аней отправляемся на потрясающую конференцию.
Где выступим с докладом «Router во Flutter. Когда думал, что всё легко».
В своем докладе расскажем про концепцию декларативного роутера.
Присоединяйся – будут все свои!
Программа, спикеры и билеты на сайте.
Присоединяйся – будут все свои!
А вот здесь можно купить со скидкой 30%.
Всем привет, FlutterObserver_bot обновился до версии 0.1.2 😎
- Теперь бот знает телеграм-каналы про Flutter и умеет отслеживать появление новых.
Полный список изменений можно глянуть здесь.
Ну вот так красивее)
https://petrovyuri.github.io/flutter_observer/
Создал репозиторий, куда буду собирать все ресурсы по Flutter.
Важно то, что за этими ресурсами будет следить @FlutterObserver_bot, и вы всегда сможете оперативно получить свежую подборку прямо из бота.
Пока только добавлены Телеграм-каналы, чаты для Русского сегмента и для Английского. В дальнейшем буду собирать туда каналы на YouTube, X и так далее. Оформлю как красивый сайт на GitHub. Будет круто))).
Канал добавить очень просто, форкайте. Добавляете в нужный json свой канал или чат, делаете пул реквест, Readme сгенерится в таблицу автоматически.
Большая просьба всем подписчикам, если вы знаете хороший канал или чат, не важно на каком языке, можете сделать пул реквест или написать мне, я сам добавлю.
