Forwarded from Mobile Tech (Michael Lazebny)
This release, specially planned for Google I/O, includes numerous amazing features, key highlights below!
Dart
🔥🔥🔥 Enhancements in WebAssembly, aimed at full WASM support in pure Dart apps.
🔥🔥🔥 @JsonCodable macros are in preview (in master), adding toJson and fromJson functionality. The team continues to invest in the macro system, allowing developers to create their own macros.
🔥 Analyzer completion improvements - closed over 50% of bugs.
Flutter
🚀🚀🚀 Full support for WebAssembly in Flutter apps! Rendering time is improved by 2-3x. Web apps became more performant.
🚀 Engine improvements - Impeller is feature-complete on Android. Improved performance for blurs and complex paths like SVG or Lottie animations.
🚀 Transformation of assets using Dart packages - users can now configure Dart packages to transform their app’s assets as they are bundled (see https://docs.flutter.dev/ui/assets/asset-transformation).
🚀 Platform Views became more reliable and performant on Android and iOS.
Android now supports predictive back.
🚀 DevTools now provides tool to validate deep links.
Material design updates include new surface colors, the removal of background, onBackground, and surfaceVariant, and adjustments to ColorScheme.fromSeed to align with Material 3 guidelines. Additionally, Material 2 text styles and colors are being phased out.
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from 🅵🅾️🆇
This media is not supported in your browser
VIEW IN TELEGRAM
Шиммер реализованный через шейдер, без всяких левых либ.
Набираем 20 лайкосов и делюсь сорцами.
Набираем 20 лайкосов и делюсь сорцами.
Forwarded from 🅵🅾️🆇
flutter compose up
Шиммер реализованный через шейдер, без всяких левых либ. Набираем 20 лайкосов и делюсь сорцами.
#chicken #shimmer #skeleton #shader
Держите, малятки:
https://gist.github.com/PlugFox/7cb6362f020363d1544495fa262aa6a1
Держите, малятки:
https://gist.github.com/PlugFox/7cb6362f020363d1544495fa262aa6a1
Gist
Flutter Shimmer & Skeleton
Flutter Shimmer & Skeleton. GitHub Gist: instantly share code, notes, and snippets.
# Задача 001
Даны две бесконечных возрастающих последовательности чисел A и B. i-ый член последовательности A равен i^2. i-ый последовательности B равен i^3.
Требуется найти C_x, где C — возрастающая последовательность, полученная при объединении последовательностей A и B. Если существует некоторое число, которое встречается и в последовательности A и в последовательности B, то в последовательность C это число попадает в единственном экземпляре.
# Формат ввода
В единственной строке входного файла дано натуральное число x (1 <= x <= 10^7).
# Формат вывода
В выходной файл выведите C_x.
# Решение
#algorithm
Даны две бесконечных возрастающих последовательности чисел A и B. i-ый член последовательности A равен i^2. i-ый последовательности B равен i^3.
Требуется найти C_x, где C — возрастающая последовательность, полученная при объединении последовательностей A и B. Если существует некоторое число, которое встречается и в последовательности A и в последовательности B, то в последовательность C это число попадает в единственном экземпляре.
# Формат ввода
В единственной строке входного файла дано натуральное число x (1 <= x <= 10^7).
# Формат вывода
В выходной файл выведите C_x.
# Решение
int findCx(int x) {
int i = 1, j = 1; // Начальные индексы для квадратов и кубов
int count = 0; // Счетчик найденных элементов
int current = 0; // Текущий элемент последовательности C
while (count < x) {
int square = i * i;
int cube = j * j * j;
if (square < cube) {
current = square;
i += 1;
} else if (square > cube) {
current = cube;
j += 1;
} else {
current = square; // или current = cube, значения равны
i += 1;
j += 1;
}
count += 1;
}
return current;
}#algorithm
Forwarded from Surf Flutter Team
Каркас фичи за 7 секунд. Чем может быть полезен mason?
В какой-то момент у всех появляются лучшие подходы к написанию кода, которые кочуют из проекта в проект. Они превращаются в шаблонный код, который мы привыкли называть бойлерплейт.
Никто не любит бойлерплейт: для старта проектов появляются шаблоны, как, например, Surf Flutter App Template, для небольших кусков кода существуют Snippets (VSCode) и Live Templates (IntelliJ IDEA, Android Studio).
Но что, если этих инструментов недостаточно? Если есть потребность в более гибком инструменте для генерации шаблонного кода?
Мы во Flutter-команде Surf задались этими вопросами, и пришли к mason — мощному и гибкому генератору кода по шаблонам. И сейчас покажем, как его использовать.
Ссылки из карточек:
🔵 mustache
🔵 mason_cli
🔵 BrickHub
🔵 Синтаксис brick
#surf_flutter
В какой-то момент у всех появляются лучшие подходы к написанию кода, которые кочуют из проекта в проект. Они превращаются в шаблонный код, который мы привыкли называть бойлерплейт.
Никто не любит бойлерплейт: для старта проектов появляются шаблоны, как, например, Surf Flutter App Template, для небольших кусков кода существуют Snippets (VSCode) и Live Templates (IntelliJ IDEA, Android Studio).
Но что, если этих инструментов недостаточно? Если есть потребность в более гибком инструменте для генерации шаблонного кода?
Мы во Flutter-команде Surf задались этими вопросами, и пришли к mason — мощному и гибкому генератору кода по шаблонам. И сейчас покажем, как его использовать.
Ссылки из карточек:
#surf_flutter
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
Если у вас VS Code тормозит из-за каких-то расширений, то есть такое:
F1 -> Developer: Open Process Explorer
F1 -> Developer: Show Running Extensions
и вообще:
F1 -> Developer: ...
#vscode
F1 -> Developer: Open Process Explorer
F1 -> Developer: Show Running Extensions
и вообще:
F1 -> Developer: ...
#vscode
Одна из лучших лекций про асинхронку от профессионального преподавателя
2 часа полезных знаний
https://www.youtube.com/live/Fux9LhX2ODA
2 часа полезных знаний
https://www.youtube.com/live/Fux9LhX2ODA
YouTube
Асинхронка — ШМР 2024
Асинхронное программирование в дарте. Future, FutureOr, Stream, async, await, yield, Zone... Как это всё работает? Копаем вглубь, ломаем стереотипы, убираем магию.
👍1
Forwarded from Дневник Flutter-разработчика (Dmitry Lyovochkin)
Команда Яндекса делится опытом в разработке на Flutter:)
Все вышедшие на сегодняшний день лекции:
Для чего Flutter используют в Яндекс Драйве и Яндекс Маркете? Как Flutter показал себя в Практикуме? Есть ли будущее у Flutter в Такси?
Асинхронное программирование в дарте. Future, FutureOr, Stream, async, await, yield, Zone... Как это всё работает? Копаем вглубь, ломаем стереотипы, убираем магию.
Лекция в широком смысле рассказывает об архитектуре как явлении и указывает, о чём важно помнить при проектировании приложения
На лекции мы обсудим идею state management в целом, ее архитектурные особенности при работе с состоянием. Обсудим популярные подходы к state management и самые популярные реализации. Сравним их по критериям, важным для масштабируемого приложения. Наконец, обсудим, какие решения лучше подходят для конкретных кейсов.
Как виджеты превращаются в пиксели на экране? Почему Flutter еще не переписали на Kotlin? Что круче — Skia или Impeller?
Спикер: Глеб Осотов, Flutter-разработчик Яндекс Про
На лекции мы рассмотрим, зачем нужны анимации в приложениях, как они устроены во Flutter. Вы узнаете не только какие виды анимаций можно использовать во Flutter, но и как они устроены внутри.
Спикер: Даниил Артамонов, руководитель группы мобильной разработки Яндекс Лавки
В рамках лекции мы познакомимся с пакетами, плагинами и другими способами делиться кодом между проектами на Dart. Познаем семантическое версионирование и научимся управлять зависимостями в больших проектах; Для этого погрузимся в инструментарий Dart и Flutter cli.
Научимся публиковать свои пакеты для общего и не очень доступа и изучим pub.dev.
Спикер: Константин Федуров, Flutter-разработчик Яндекс Про
В лекции рассмотрим, как работают и как использовать пакеты для кодогенерации, научимся исследовать код и покажем это на демо. Вместе с этим мы узанем как работает анализатор, и как мы можем писать свои правила для увеличения качества кода нашего проекта.
Спикер: Дмитрий Золотов, Flutter-разработчик Яндекс Доставки
На лекции мы научимся использовать навигацию на основе Router, разберем какие бывают диплинки и как их правильно обрабатывать, а также посмотрим на особенности Flutter Web в обработке ссылок и настройки стратегии навигации.
Спикер: Андрей Смирнов, Flutter-разработчик Яндекс Про
В этой лекции мы научимся писать Unit-тесты, UI-тесты, интеграционные тесты и узнаем, что такое golden тесты. А также разберем, что такое code coverage и научимся его собирать.
Спикер: Евгений Седанов, руководитель группы мобильной разработки Яндекс Про
Пуши и уведомления - это одно и то же? Может ли быть пуш без нотификации и нотификация без пуша? Что такое TTL пуша и почему пуши могут потеряться? Какие есть различия в пуш уведомлениях на Android и iOS? Можно ли выполнить Dart код по пушу или даже запустить приложение? Что такое VOIP пуши и чем они отличаются от обычных? Всё это и многое другое вы узнаете на этой лекции.
Спикер: Никита Березовский, Flutter-разработчик Яндекс Про
На лекции мы разберёмся с CI/CD и настроим пайплайн для github actions. Разберем что нужно знать чтобы довести приложение до релиза в сторы. Узнаем как наш код превращается в приложение: начиная с вызова flutter build и до запуска конечного артефакта.
Весь список лекций ШМР 2024: https://www.youtube.com/playlist?list=PLXtiZNKIobF4R3g_CCVkXgaMDg4E4pxeH
Please open Telegram to view this post
VIEW IN TELEGRAM
YouTube
Флаттер-мастерская: опыт команд Яндекса в разработке на Flutter — ШМР 2024
Для чего Flutter используют в Яндекс Драйве и Яндекс Маркете? Как Flutter показал себя в Практикуме? Есть ли будущее у Flutter в Такси?
В рамках дискуссии представители разных сервисов Яндекса расскажут, как и зачем в стеке технологий их продуктов появился…
В рамках дискуссии представители разных сервисов Яндекса расскажут, как и зачем в стеке технологий их продуктов появился…
👍1
Forwarded from Николай Хитров | Блог
Валидация названий commit-ов
Недавно затащили к себе в проект gitlint. Оказалась прям годной штукой. Довольно шустро работает, подробная дока. Ему можно скормить названия через пайпы обычным текстом, а можно подтягивать имена коммитов через
Но самое клевое, что можно писать свои плагины. Мы у себя в проекте сделали проверку названий контекстов - тупо на питончике проходимся по определенным папкам в проекте и используем их названия как список допустимых значений. Больше никаких тыканий на ревью, что и как нужно называть. Чистый кайф🤤🤤🤤
#git #python #gitlint
Недавно затащили к себе в проект gitlint. Оказалась прям годной штукой. Довольно шустро работает, подробная дока. Ему можно скормить названия через пайпы обычным текстом, а можно подтягивать имена коммитов через
git. Есть встроенные проверки по типу длины строки, conventional commits и т.д.Но самое клевое, что можно писать свои плагины. Мы у себя в проекте сделали проверку названий контекстов - тупо на питончике проходимся по определенным папкам в проекте и используем их названия как список допустимых значений. Больше никаких тыканий на ревью, что и как нужно называть. Чистый кайф🤤🤤🤤
#git #python #gitlint
Jorisroovers
Introduction - Gitlint
Linting for your git commit messages
Forwarded from Flutter на Русском 🇷🇺
Media is too big
VIEW IN TELEGRAM
Мега крутое выступление Вячеслава Егорова про то как работает среда выполнения Dart.
Из выступления вы узнаете:
✔️ Как работает компилятор в Dart
✔️ Что такое IRHydra 2
✔️ Как вызывать Dart код из Swift
✔️ Как в Swift реализовать горячую перезагрузку c помощью Dart кода
✔️ Как в Jetpack compose реализовать горячую перезагрузку ч помощью Dart кода
✔️ Некоторые умопомрачительные новые функции которые знает только команда Dart
📌 Смотреть на VK:
https://vk.com/flutter_na_ruskom
📌 Оригинал:
https://www.youtube.com/watch?v=jV2Zx3hjHPc
#dart #mraleph
Из выступления вы узнаете:
📌 Смотреть на VK:
https://vk.com/flutter_na_ruskom
📌 Оригинал:
https://www.youtube.com/watch?v=jV2Zx3hjHPc
#dart #mraleph
Please open Telegram to view this post
VIEW IN TELEGRAM
# Задача 002
На входе предоставляется список целых чисел. Необходимо сжать список в строку, объединив последовательные числа в диапазон. Если в списке есть числа, которые не являются последовательными, они должны быть выведены отдельно. Если в списке есть только одно число, оно должно быть выведено отдельно.
# Формат ввода:
Список целых чисел, разделенных запятыми или пробелами. Список может быть пустым.
## Примеры ввода:
[1, 4, 5, 2, 3, 9, 8, 11, 0]
[1, 4, 3, 2]
[1, 4]
[]
# Формат вывода:
Строка, содержащая сжатые диапазоны чисел, разделенные запятыми. Если в списке есть только одно число, оно должно быть выведено отдельно. Если в списке нет чисел, должна быть выведена пустая строка.
## Примеры вывода:
"0-5,8-9,11"
"1-4"
"1,4"
""
#algorithm
На входе предоставляется список целых чисел. Необходимо сжать список в строку, объединив последовательные числа в диапазон. Если в списке есть числа, которые не являются последовательными, они должны быть выведены отдельно. Если в списке есть только одно число, оно должно быть выведено отдельно.
# Формат ввода:
Список целых чисел, разделенных запятыми или пробелами. Список может быть пустым.
## Примеры ввода:
[1, 4, 5, 2, 3, 9, 8, 11, 0]
[1, 4, 3, 2]
[1, 4]
[]
# Формат вывода:
Строка, содержащая сжатые диапазоны чисел, разделенные запятыми. Если в списке есть только одно число, оно должно быть выведено отдельно. Если в списке нет чисел, должна быть выведена пустая строка.
## Примеры вывода:
"0-5,8-9,11"
"1-4"
"1,4"
""
String compressRanges(List<int> nums) {
// Если список пустой, сразу возвращаем пустую строку
if (nums.isEmpty) {
return "";
}
// Сортируем числа
nums.sort((a, b) => a.compareTo(b));
List<String> result = [];
int start = nums[0];
int end = nums[0];
for (int i = 1; i < nums.length; i++) {
if (nums[i] == end + 1) {
// Если текущее число продолжает диапазон
end = nums[i];
} else {
// Если диапазон прерывается, добавляем его в результат
if (start == end) {
result.add(start.toString());
} else {
result.add("$start-$end");
}
start = nums[i];
end = nums[i];
}
}
// Добавляем последний диапазон
if (start == end) {
result.add(start.toString());
} else {
result.add("$start-$end");
}
// Объединяем диапазоны в строку
return result.join(",");
}#algorithm
Forwarded from Vue-FAQ
Как выяснилось, за последний год в мире
Вышел в open source
По функционалу с большим отрывом лидирует
Мир устал от жирного, жадного и неповоротливого online-only
#hoppscotch #yaak #bruno #api #tauri #postman
API клиентов случилась почти что революцияВышел в open source
Yaak (React, Tauri), релизнулся и активно развивается вполне достойный Bruno (Next.js, Tauri) и наконец-то появилась десктопная версия Hoppscotch (Vue 3, Tauri). Hoppscotch пока в альфа версии, но вполне хорошо работает и решены проблемы с прокси для запросов. Дистрибутив занимает всего 10Мб (у Yaak 120Mb, у Bruno - 40Mb). На скриншоте, сколько они отъедают памяти в холостом режиме. Ну и просто какой-то бенефис Tauri.Yaak и Bruno полностью оффлайновые, поэтому их UI работает очень быстро, Hoppscotch синхронизирует данные в облаке, поэтому есть небольшая задержка, но в целом хорошо.По функционалу с большим отрывом лидирует
Hoppscotch, за ним - BrunoМир устал от жирного, жадного и неповоротливого online-only
Postman-a. Попробуйте эти клиенты и забудьте Postman как страшный сон.#hoppscotch #yaak #bruno #api #tauri #postman