Хоть статья и вышла еще в среду, только сегодня она была опубликована на Хабре
Читайте, ставьте лайки и т. д. - https://habr.com/ru/articles/829904/
Читайте, ставьте лайки и т. д. - https://habr.com/ru/articles/829904/
Хабр
Полный гайд по тестированию на Flutter. Часть 1: Знакомство с методами тестирования
Hola, Amigos! На связи Павел Гершевич, Mobile Team Lead агентства продуктовой разработки Amiga. Мы с командой подготовили для вас перевод статьи о тестировании во Flutter. Рассмотрим...
👍5
Кстати, в эту среду в Красноярске прошел митап от Т-Банка. Тема была - секция программирования на собеседованиях.
Мы с моим коллегой Михаилом, который вместе со мной перешел из Аспирити в Amiga, посетили это мероприятие. Пообщались с людьми, позадавали вопросы спикерам (к слову, я с 2 из них уже был знаком, так как пересекались на конференциях и не только).
Было очень круто! Уровень с прошлого раза сильно поднялся, как по качеству докладов, так и по организации в целом.
Мы с моим коллегой Михаилом, который вместе со мной перешел из Аспирити в Amiga, посетили это мероприятие. Пообщались с людьми, позадавали вопросы спикерам (к слову, я с 2 из них уже был знаком, так как пересекались на конференциях и не только).
Было очень круто! Уровень с прошлого раза сильно поднялся, как по качеству докладов, так и по организации в целом.
👍4
Forwarded from Flutter. Много
Hola, Amigos! На связи Павел Гершевич, Flutter Team Lead в Amiga. Продолжаем раскрывать тему тестирования в Flutter и сегодня поговорим о модульном (Unit) тестировании.
В данной статье описан простой Unit-тест и использование функций expect и Matcher. Скорее переходите на Habr, чтобы узнать подробности!⬅️
Еще несколько выпусков будут посвящены Unit-тестам, разберем более сложные случаи с использованием продвинутых техник: Mock, Fake и Stub.
Ставьте реакцию, если ждете продолжения!🙂
В данной статье описан простой Unit-тест и использование функций expect и Matcher. Скорее переходите на Habr, чтобы узнать подробности!
Еще несколько выпусков будут посвящены Unit-тестам, разберем более сложные случаи с использованием продвинутых техник: Mock, Fake и Stub.
Ставьте реакцию, если ждете продолжения!
Please open Telegram to view this post
VIEW IN TELEGRAM
Только что завершил перевод 6 части "Полный гайд по тестированию на Flutter" (они будут постепенно выходить в ближайшее время).
Я думал, что это последняя часть, но это оказалось не так. На самом деле, это последняя часть на английском языке, а остальные 3 есть только на вьетнамском. Пожелайте мне удачи с этими переводами
Я думал, что это последняя часть, но это оказалось не так. На самом деле, это последняя часть на английском языке, а остальные 3 есть только на вьетнамском. Пожелайте мне удачи с этими переводами
😁5👍2😱2
Forwarded from Flutter. Много
Hola, Amigos! На связи Павел Гершевич, Flutter Team Lead в Amiga. Вот и третья часть перевода подъехала⚙️
В предыдущих статьях мы научились писать модульные тесты для статичных функций, верхнеуровневых функций и расширений. На этот раз напишем Unit-тестыдля методов класса.
Читайте по ссылке на Habr. Пишите комментарии и ставьте реакции, если тема вам интересна!⚙️
В предыдущих статьях мы научились писать модульные тесты для статичных функций, верхнеуровневых функций и расширений. На этот раз напишем Unit-тесты
Читайте по ссылке на Habr. Пишите комментарии и ставьте реакции, если тема вам интересна!
Please open Telegram to view this post
VIEW IN TELEGRAM
А вот и второй сюрприз подъехал.
Я обещал после Mobius, что их будет 2. Первым была книга.
Теперь еще один - вчера я сходил на Flutter Dev Podcast, где мы поговорили про очень интересную тему. Но так как процесс монтажа занимает какое-то время, он выйдет не очень скоро, так что ждите)
Я обещал после Mobius, что их будет 2. Первым была книга.
Теперь еще один - вчера я сходил на Flutter Dev Podcast, где мы поговорили про очень интересную тему. Но так как процесс монтажа занимает какое-то время, он выйдет не очень скоро, так что ждите)
Telegram
Flutter Dev Podcast — анонсы выпусков
Всё что вы хотели узнать про Flutter, но боялись спросить. Обсуждаем новости индустрии, делимся продакшн-опытом внедрения и интересными наблюдениями, приглашаем ярких представителей Flutter-сообщества.
🔥4
Итак. Поступают плохие новости. YouTube все-таки замедляют. У меня это началось где-то неделю назад, может чуть больше. Немного хронологии:
- Начали подтупливать видео раз в несколько минут. "Ну и пофиг"
- Грузит только 720p. "Ок, не страшно"
- Ростелеком заявили о серверах (что оказалось ложью) "Явно врут, не может 1-2 сервера из примерно 1000 влиять на всех в стране"
- Грузит только 480p. "Ну, вспомним 2010"
- Еле грузит 320p. и почти сразу выходит заявление о замедлении "Я же говорил, но что делать то?"
В итоге чисто для просмотра роликов перехожу на Google Chrome, так как там есть метод обхода, надеюсь постоянный. Это экспериментальный протокол QUIC. И это действительно работает.
Чтобы включить у себя в Chrome или любом другом браузере на базе Chromium (Edge, Яндекс.Браузер и т. д.) - перейдите на chrome://flags/#enable-quic и первым в списке будет он. Нужно, чтобы он был Enabled.
- Начали подтупливать видео раз в несколько минут. "Ну и пофиг"
- Грузит только 720p. "Ок, не страшно"
- Ростелеком заявили о серверах (что оказалось ложью) "Явно врут, не может 1-2 сервера из примерно 1000 влиять на всех в стране"
- Грузит только 480p. "Ну, вспомним 2010"
- Еле грузит 320p. и почти сразу выходит заявление о замедлении "Я же говорил, но что делать то?"
В итоге чисто для просмотра роликов перехожу на Google Chrome, так как там есть метод обхода, надеюсь постоянный. Это экспериментальный протокол QUIC. И это действительно работает.
Чтобы включить у себя в Chrome или любом другом браузере на базе Chromium (Edge, Яндекс.Браузер и т. д.) - перейдите на chrome://flags/#enable-quic и первым в списке будет он. Нужно, чтобы он был Enabled.
👍6
Экосистема Apple спасает в самом необычном случае.
Сейчас телега работает еле-еле, но мне нужно было отправить файл. 10 минут ожидания на 0% означают, что нужно искать обходные пути. И им для меня стал AirDrop, так как с телефона в телегу хоть медленно, но заливается.
А как у вас обстоят дела с доступом в телегу?
Сейчас телега работает еле-еле, но мне нужно было отправить файл. 10 минут ожидания на 0% означают, что нужно искать обходные пути. И им для меня стал AirDrop, так как с телефона в телегу хоть медленно, но заливается.
А как у вас обстоят дела с доступом в телегу?
🤯3
На проекте, который сейчас делаю на работе встретился интересный баг.
У нас используется flutter_html, и если мы передадим ему список внутри абзаца (например <p><ul>...</ul></p>), то снизу появится отступ размером с сам список.
В итоге, оказалось, что это баг самой библиотеки, поэтому решение было достаточно быстрым - меняем. Поменял на flutter_widget_from_html. Она, как мне показалось, чуть более удобная даже.
У нас используется flutter_html, и если мы передадим ему список внутри абзаца (например <p><ul>...</ul></p>), то снизу появится отступ размером с сам список.
В итоге, оказалось, что это баг самой библиотеки, поэтому решение было достаточно быстрым - меняем. Поменял на flutter_widget_from_html. Она, как мне показалось, чуть более удобная даже.
👍1
Flutter Tech-Lead Notes
На проекте, который сейчас делаю на работе встретился интересный баг. У нас используется flutter_html, и если мы передадим ему список внутри абзаца (например <p><ul>...</ul></p>), то снизу появится отступ размером с сам список. В итоге, оказалось, что это…
Все стало еще интереснее. Сборка приложения после смены библиотеки не дошла до Test Flight. В чем проблема? В том, что эта библиотека объединяет несколько и ей нужно разрешение микрофона. Поэтому нужно использовать flutter_widget_from_html_core
Forwarded from Flutter. Много
Hola, Amigos! На связи Павел Гершевич, Flutter Team Lead в Amiga. Делимся с вами 4 частью полного гайда по тестированию в Flutter, которая посвящена продвинутому модульному тестированию.
Мы уже рассмотрели:
⚙️ Unit-тестирование, Widget-тестирование, Golden-тесты и интеграционное тестирование
⚙️ Простые модульные (Unit) тесты
⚙️ Использование техник Mocking и Stubbing для тестирования классов
В новой статье еще больше усложнен класс LoginViewModel при помощи создания переменной _cache для кеширования результата, полученного от SharedPreferences. Продолжение читайте по ссылке.
Fun fact:думали, что гайд состоит из 6 статей, а оказалось, что есть еще 3, только уже не на английском, а на вьетнамском языке. Пожелайте нам удачи!
Мы уже рассмотрели:
В новой статье еще больше усложнен класс LoginViewModel при помощи создания переменной _cache для кеширования результата, полученного от SharedPreferences. Продолжение читайте по ссылке.
Fun fact:
Please open Telegram to view this post
VIEW IN TELEGRAM
Flutter Tech-Lead Notes
Итак. Поступают плохие новости. YouTube все-таки замедляют. У меня это началось где-то неделю назад, может чуть больше. Немного хронологии: - Начали подтупливать видео раз в несколько минут. "Ну и пофиг" - Грузит только 720p. "Ок, не страшно" - Ростелеком…
Вчера убили YouTube, вернее замедлили так, что невозможно стало пользоваться. Даже включенный QUIC не помогает. Значит, нужно искать способ работы с DPI на macOS (для Windows уже давно все используют GoodbyeDPI). В итоге я его нашел на просторах интернета:
Для этого нам потребуется терминал. Сначала установим программу нужную:
Добавим ее в переменную PATH (нужно для запуска из консоли)
И запустим
Но не всегда срабатывает (у меня не сработало). Поэтому запускаем еще раз, но с настройками:
И вы получите на выходе работающий YouTube в любом браузере на macOS
Для этого нам потребуется терминал. Сначала установим программу нужную:
curl -fsSL https://raw.githubusercontent.com/xvzc/SpoofDPI/main/install.sh | bash -s darwin-amd64
Добавим ее в переменную PATH (нужно для запуска из консоли)
export PATH=$PATH:~/.spoof-dpi/bin
И запустим
spoof-dpi
Но не всегда срабатывает (у меня не сработало). Поэтому запускаем еще раз, но с настройками:
spoof-dpi --enable-doh --window-size 0
И вы получите на выходе работающий YouTube в любом браузере на macOS
👍4❤1
Forwarded from Flutter. Много
Flutter 3.24
Hola, Amigos! Срочное включение! Вышла новая версия Flutter 3.24. В режиме турбо перевели статью для вас и делимся по ссылке⚙️
В этом релизе представлена предварительная версия Flutter GPU, которая позволяет использовать продвинутую графику и 3D-сцены прямо из Flutter.
Web-приложения теперь могут встраивать несколько Flutter View, что улучшает их гибкость.
А ещё добавлена монетизация с видео рекламой, чтобы получать максимальную выгоду.
⚙️ Читать здесь
⚙️ Ставить лайки тут и там
⚙️ Обсуждать сюда
Всем хорошего кода!🙂
Hola, Amigos! Срочное включение! Вышла новая версия Flutter 3.24. В режиме турбо перевели статью для вас и делимся по ссылке
В этом релизе представлена предварительная версия Flutter GPU, которая позволяет использовать продвинутую графику и 3D-сцены прямо из Flutter.
Web-приложения теперь могут встраивать несколько Flutter View, что улучшает их гибкость.
А ещё добавлена монетизация с видео рекламой, чтобы получать максимальную выгоду.
Всем хорошего кода!
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
А вот и видео с весны начали подезжать. Первым стал Mobius - https://www.youtube.com/watch?v=ZwXCEo3Cduw
YouTube
Павел Гершевич — Создание indoor-карты здания во Flutter
Подробнее о конференции Mobius: https://jrg.su/ojGU3B
— —
Скачать презентацию с сайта Mobius — https://jrg.su/vig3XM
При разработке мобильных приложений может возникнуть одна очень интересная задача — размещение на одном или нескольких экранах внутренней…
— —
Скачать презентацию с сайта Mobius — https://jrg.su/vig3XM
При разработке мобильных приложений может возникнуть одна очень интересная задача — размещение на одном или нескольких экранах внутренней…
Как проще всего поучаствовать в улучшении Flutter?
Самый простой способ - не самому что-то поправить, а найти баг. В одном из наших приложений такой нашелся, причем на старой версии. Разработчик буквально только что закончил оформление issue на этот баг - https://github.com/flutter/flutter/issues/153426
Самый простой способ - не самому что-то поправить, а найти баг. В одном из наших приложений такой нашелся, причем на старой версии. Разработчик буквально только что закончил оформление issue на этот баг - https://github.com/flutter/flutter/issues/153426
👎2🤔1
Пришло время первых анонсов осеннего сезона. Это будет интересно и увлекательно, так как я подготовил для вас серию докладов.
7 сентября мы встретимся на DevFest в третьем по населению городе Сибири - Омске (я недавно смотрел, мой родной Красноярск уже больше). Там я расскажу, зачем нам нужно логирование, какое оно бывает и что с этим всем делать.
Что? DevFest Omsk
Когда? 5-8 сентября 2024
Спикер: Павел Гершевич
Тема: Логирование на Flutter или какие метрики помогут в оптимизации
https://www.devfestomsk.ru/schedule
7 сентября мы встретимся на DevFest в третьем по населению городе Сибири - Омске (я недавно смотрел, мой родной Красноярск уже больше). Там я расскажу, зачем нам нужно логирование, какое оно бывает и что с этим всем делать.
Что? DevFest Omsk
Когда? 5-8 сентября 2024
Спикер: Павел Гершевич
Тема: Логирование на Flutter или какие метрики помогут в оптимизации
https://www.devfestomsk.ru/schedule
👍4🔥1
Обновление Flutter 3.24 принесло старый баг (его фиксили, но он вернулся), который я еще не встречал. Воспроизводится не на всех приложениях.
Что произошло:
При сборке релизного Android, если у зависимостей compileSdkVersion не 34 (Android 14), то может произойти ошибка при объединении ресурсов (на дебажной не воспроизводится). На одном из пет-проектов упало прямо на гуловской библиотеке (сначала упало на CI/CD, потом я смог воспроизвести).
Решаем так (скорее всего решение костыльное, но оно работает):
В файл
Вот и все) Приложение начнет собираться
Что произошло:
При сборке релизного Android, если у зависимостей compileSdkVersion не 34 (Android 14), то может произойти ошибка при объединении ресурсов (на дебажной не воспроизводится). На одном из пет-проектов упало прямо на гуловской библиотеке (сначала упало на CI/CD, потом я смог воспроизвести).
* What went wrong:
Execution failed for task ':google_mlkit_commons:verifyReleaseResources'.
> A failure occurred while executing com.android.build.gradle.tasks.VerifyLibraryResourcesTask$Action
> Android resource linking failed
ERROR:/Users/user/build/**/intermediates/merged_res/release/values/values.xml:221: AAPT: error: resource android:attr/lStar not found.
Решаем так (скорее всего решение костыльное, но оно работает):
В файл
android/build.gradle
нужно добавить такой код:subprojects {
project.buildDir = "${rootProject.buildDir}/${project.name}"
}
subprojects {
afterEvaluate { project ->
if (project.plugins.hasPlugin("com.android.application") ||
project.plugins.hasPlugin("com.android.library")) {
project.android {
compileSdkVersion 34
buildToolsVersion "34.0.0"
}
}
}
}
subprojects {
project.evaluationDependsOn(':app')
}
Вот и все) Приложение начнет собираться
👍2😁2
И еще один анонс на сентябрь.
В этот раз я буду выступать в своем любимом Санкт-Петербурге. Там мы поговорим про безопасность мобильных приложений, а именно про шифрование данных и доступ к ним только у пользователя.
Что? Стачка
Когда? 27-28 сентября
Спикер: Павел Гершевич
Тема: Это больше, чем биометрия. Или как сделать локальную аутентификацию в мобильном приложении.
https://spb24.nastachku.ru/
В этот раз я буду выступать в своем любимом Санкт-Петербурге. Там мы поговорим про безопасность мобильных приложений, а именно про шифрование данных и доступ к ним только у пользователя.
Что? Стачка
Когда? 27-28 сентября
Спикер: Павел Гершевич
Тема: Это больше, чем биометрия. Или как сделать локальную аутентификацию в мобильном приложении.
https://spb24.nastachku.ru/
❤1