Горячее
Лучшее
Свежее
Подписки
Сообщества
Блоги
Эксперты
Войти
Забыли пароль?
или продолжите с
Создать аккаунт
Я хочу получать рассылки с лучшими постами за неделю
или
Восстановление пароля
Восстановление пароля
Получить код в Telegram
Войти с Яндекс ID Войти через VK ID
Создавая аккаунт, я соглашаюсь с правилами Пикабу и даю согласие на обработку персональных данных.
ПромокодыРаботаКурсыРекламаИгрыПополнение Steam
Пикабу Игры +1000 бесплатных онлайн игр Скайдом - пожалуй, самая красочная и интересная головоломка с действительно уникальными режимами игры!

Скайдом

Три в ряд, Головоломки, Казуальные

Играть

Топ прошлой недели

  • AlexKud AlexKud 38 постов
  • Animalrescueed Animalrescueed 36 постов
  • Oskanov Oskanov 7 постов
Посмотреть весь топ

Лучшие посты недели

Рассылка Пикабу: отправляем самые рейтинговые материалы за 7 дней 🔥

Нажимая кнопку «Подписаться на рассылку», я соглашаюсь с Правилами Пикабу и даю согласие на обработку персональных данных.

Спасибо, что подписались!
Пожалуйста, проверьте почту 😊

Помощь Кодекс Пикабу Команда Пикабу Моб. приложение
Правила соцсети О рекомендациях О компании
Промокоды Биг Гик Промокоды Lamoda Промокоды МВидео Промокоды Яндекс Директ Промокоды Отелло Промокоды Aroma Butik Промокоды Яндекс Путешествия Постила Футбол сегодня
0 просмотренных постов скрыто
4
dexsys
dexsys
2 года назад
Лига программистов
Серия Flutter

Перенести банковское приложение на Flutter в одиночку и сохранить свои нервы: миссия невыполнима?⁠⁠

Дмитрий, Flutter-разработчик DexSys, в кроссплатформенной мобильной разработке уже больше 3х лет. В этой статье расскажем, как он переносил функционал банковского приложения с нативного на кроссплатформу, поделимся проблемами, вставшими на пути, и заглянем внутрь проекта «Мобильный банкир». Передаем слово Диме:)

«Пара слов о продукте:

Мобильный банкир — это система дистанционного обслуживания клиентов. Позволяет отслеживать заявки на доставку банковских продуктов или документации.

МБ работает на двух платформах:

  1. Мобильное приложение для сотрудников или партнёров банка — обеспечивает процесс доставки.

  2. Web-приложение, в котором можно настроить систему и мониторить доставку.

Команда проекта: 1 product owner, 2 системных аналитика, 3 back-разработчика, 1 front-end разработчик, 1 iOS/Android разработчик, 2 тестировщика, 1 flutter-разработчик, 1 собственный специалист поддержки пользователей.

Зачем нужна кроссплатформа?

Бизнес-заказчик дал нашей команде задачу не увеличивая количество человек уменьшить время на реализацию и выпуск идей/обновлений.

Технический лид проекта увидел во Flutter-е возможность для увеличения скорости разработки. Сначала команда проверила эту гипотезу на разработке зарплатного проекта для внешних агентов банка. Далее, с помощью разработчика Flutter начали выравнивать сроки разработки для Web-версии и мобильного приложения.

Так что же такое Flutter, и с чем его едят?

Flutter уверенно занимает ТОП-1 в кроссплатформенных языках. Он сокращает время на разработку, и, соответственно, на доставление продукта конечному пользователю. Если говорить бизнесовым языком, то «скорость выше и платишь меньше».

Едят Flutter вместе с языком Dart. На вкус такой же аппетитный, как и JavaScript.

Начав писать на Flutter, можно прочувствовать на себе следующие моменты:

  • Нервные клетки исчезают гораздо реже;

  • Появляется больше свободного времени;

  • Повышается самооценка:)

    Чуть больше деталей:

  • Под капотом свой графический движок Skia и рантайм Dart VM. Написано на C/C++. Соответственно, запускать код ты можешь прямо из консоли, без всяких IDE`шек;

  • Очень хорошо поддерживаются 2 платформы – iOS/Android, чуть меньше – WEB, и потихоньку встает на ноги поддержка MacOS/Windows/Linux.

Как переводил? С чего начинал?

Я пришел на проект, когда нативные версии были в проде уже более 5-ти лет. А flutter-копия только училась ходить — был написан функционал одной роли. Всего в приложении их три:

  • Курьеры: доставляют банковские продукты

  • Кредитные специалисты на административных пунктах и сотрудники в банковских отделениях - осуществляют выдачу дистанционно одобренных продуктов

Архитектура:

Изначально я хотел переписать всё на BLoC, так как это чистая и всеспособная архитектура. Но любовь к трудностям победила — я решил оставить текущую реализацию, MobX.

Для начала я отрефакторил структуру папок, переписал некоторый код для лучшей производительности и приступил к двухфакторке. Она необходима для верификации пользователя и для нее используются стандартные http запросы.

И тут случился первый фейл - когда двухфакторная верификация уже была переписана, разработчики в команде решили перейти на gRPC.

Перенести банковское приложение на Flutter в одиночку и сохранить свои нервы: миссия невыполнима? Программирование, IT, Разработка, Flutter, Кроссплатформенность, Длиннопост

Привести мысли в порядок помогли размышления о том, что у Flutter большое растущее комьюнити и наверняка для grpc-запросов уже есть готовые библиотеки. И я не ошибся! Мои нервные клетки сохранились:)

Но ненадолго… Вскоре после переписывания функционала, в связи с безопасностью тестовых сред, grpc-запросы отменили. Пришлось откатывать все обратно до http-запросов.

Перенести банковское приложение на Flutter в одиночку и сохранить свои нервы: миссия невыполнима? Программирование, IT, Разработка, Flutter, Кроссплатформенность, Длиннопост

Функционал ролей

Если вам когда-либо потребуется работать с распределением ролей, рекомендую использовать абстракцию. Благодаря ей:

  • сильно сокращается время багофиксов и изменений;

  • один элемент может использоваться в 5-ти местах, не нарушая функциональность каждого из них


    Но продумать такую абстракцию за раз невозможно, поэтому лучше привести виджеты к универсальному виду, так как они могут понадобиться в новых ролях. А если это невозможно, то поделить на разные виджеты. Ведь универсальность — это, конечно, хорошо, но и чистоту кода нужно сохранять.

    Решением стал MobX. На нём можно сделать «обозреваемый геттер», который будет смотреть и следить за заданными условиями. Если условие поменялось – геттер сразу его подхватит и обновит информацию. Так мы оставляем чистый код и не переносим все условия на UI.

Перенос функционала курьеров:

В приложении курьеру нужно иметь карту с пакетами и список пакетов и договоров на доставку. По каждому договору нужны:

  • Детальная информация

  • Договоренности

  • Реквизиты новой карты

  • Печатные документы

  • Фото клиента

  • Фото залога и чек-листа

  • Фото основного пакета документов

    Расскажу подробнее о некоторых пунктах:

    Реквизиты:
    На этом этапе реализовали для курьеров возможность ввести банковский счет, где мы используем overlay.

    Печатные материалы:
    У dart’а есть возможность запускать ссылки. Просто вставляешь в метод (launchUrl) диплинк для почты и вуаля: для того, чтобы отправить печатные материалы на почту, нужно нажать всего одну большую кнопку по центру экрана – трудно промахнуться.

    Фото клиента/залога/документов:
    Этот функционал используется для идентификации клиента. Основная задача заключалась в том, чтобы сделать единую, но при этом адаптивную схему фотографирования, так как UI и техническая часть не везде одинаковые. Также у самих фотопакетов могли различаться состояния.

    Решение: Разграничили state на следующие части: у каждого фотопакета есть своя view model с одинаковой структурой, у каждого сегмента/формы — отдельный state, в котором хранится основная информация по сегменту/форме + специфическое взаимодействие с сервером.

    Таким образом, мы получаем примерно такую структуру:
    PackageDetails -> ClientPhotoSegment -> ClientPhotoStore -> ClientPhotoVM.

    Также, в приложении «Мобильного банкира» есть функционал обращений. Каждый из пользователей приложения может задать любой интересующий вопрос тех. поддержке, скорость ответа на который особенно важна для выездных курьеров. В переписке должна быть реализована возможность выбрать готовые темплейты, помогающие быстрее получить ответ, и, для того чтобы UI не выглядел деревянно,— нужно была анимация.

    Решение: за ним далеко идти было не нужно, т.к. из коробки Flutter у нас уже есть подходящий SliverAnimatedListView

Что в итоге?

Убедившись в положительном результате, за 11 месяцев мы переписали все функциональные блоки приложения, которые команда писала на нативных приложениях с 2016 года, и, несмотря на сложности в процессе переноса, скорость разработки оказалась в 2 раза выше чем у нативных версий, а нервные клетки команды стали исчезать гораздо реже.

Таким образом, мы освободили еще и ресурс тестировщика — теперь не нужно тестировать две платформы. Появилось время на автотестирование и улучшение процессов.

Быть единственным разработчиком на проекте, конечно, классно, но порой мне не хватало еще одного разраба, на которого можно было скинуть пару задачек и спокойно пойти изучать что-то новое. Благо, сейчас время есть, и, в скором времени, проект «Мобильный Банкир» в очередной раз улучшится.

Рекомендации всем, кто хотел бы вникнуть во Flutter:
1) Очень советую пробежаться по официальной документации, ибо она написана какими-то невероятными гениями.
2) Можно глянуть ютуб канал разработчиков.
3) Ну и напоследок: чистая архитектура + BLoC понятным языком»

Автор статьи: Дмитрий, Flutter-разработчик DexSys.

Показать полностью 2
[моё] Программирование IT Разработка Flutter Кроссплатформенность Длиннопост
12
4
Krikotik
2 года назад

Как сделать нормальное форматирование в VS Code в Dart?⁠⁠

Люди добрые, помогите. Мой форматировщик не хочет работать адекватно и после разных методов/виджетов flutter ставить разные отступы (2 или 4 пробела). Но самое главное то, как он переносит вообще строки. Можете заметить, что свойства виджета Text вообще форматируются и кидаются вот виджет Material App, а в одной строке может помещаться 3 закрывающихся скобки.

Как сделать так, чтобы при форматировании строки привычно шли "лесенкой" с отступами в 4 пробела и закрывающие скобки были на разных строках? VS Code уже переустанавливал и заново скачивал плагины, которые на это влиять не могут.

Огромное спасибо!!!

Как сделать нормальное форматирование в VS Code в Dart? Dart, Flutter, Visual Studio, Visual studio Code, Разработка
[моё] Dart Flutter Visual Studio Visual studio Code Разработка
2
7
KonungzRage
KonungzRage
3 года назад
Лига Геймеров

Обновление 1.0.5 мультиплеерной стратегии MakeWorld⁠⁠

Всем привет, сегодня хотел бы презентовать вам обновление 1.0.5 и его новые фишки:

1. Добавлены миссии

Обновление 1.0.5 мультиплеерной стратегии MakeWorld Инди игра, Gamedev, Видеоигра, Игры, Пошаговая стратегия, Онлайн-игры, Мультиплеер, Flutter, Видео, Gameplay, Мобильные игры, Разработка, Инди, Стратегия, YouTube, Длиннопост

2. Улучшен скроллинг и различные правки UI

3. Правки по балансу


Больше о миссиях в видео:

Что в планах далее? В ближайшие несколько патчей планируется большая переработка UI, добавление новых строений и адекватного чата с уведомлениями всего сервера (как это сделано в некоторых ММО)


Ну и небольшой FAQ по игре в конце:


- Где можно попробовать?

- Android: https://play.google.com/store/apps/details?id=ru.dvmatyun.ma...

- В браузере (оптимизирована хуже, рекомендую Google Chrome с ВКЛЮЧЕННЫМ аппаратным ускорением):

https://make-world-strategy.web.app/

- Обязательно ли регаться?

- Пока да, почту подтверждать необязательно, так что можете вбить рандомный, если не планируете сохранять аккаунт за собой. В будущем планирую добавить быстрый вход без регистрации (соответственно аккаунт голый будет)

- Победное условие в игре?

- Сейчас пока 2 режима игры:

1. Новый (зарелизил буквально неделю назад). Там цель указана в правом верхнем углу. Например в данном случае успеть построить 6 ферм до 100 ходов (спойлер: это гига легко) Так же можно выбирать уровень сложности

2. Классика. Построить первым чудо света - пирамиду хеопса. Для этого необходимо изучить необходимые научные техи и культурные ачивки + скопить какое то количество ресурсов.

Кто первый соответственно, тот и победил

- Клетки слишком крупные, можно ли уменьшить?

- Да, можно кликнуть в левом нижнем углу и снять галку с пункта "increase performance" (влияет на производительность)

- Как подсоединиться к созданной кем либо игре или создать свою карту?

- 3я кнопка в меню "Custom game"

Интерфейс в игре:

- Правый нижний угол - кнопка пропуска хода (все игроки должны нажать кнопку, если играете в соло - то ход перейдет сразу на следующий)

- левый верхний угол - выделены иконки научных исследований и культурных ачивок. Клики по ним откроют меню прокачки

- Когда построено больше одного города (ваших) переключаться между ними нужно кликами. В дальнейшем поправлю эту ситуацию чтоб происходило авто-переключение, в зависимости от того, к какому городу принадлежит клетка.

Показать полностью 1 1
[моё] Инди игра Gamedev Видеоигра Игры Пошаговая стратегия Онлайн-игры Мультиплеер Flutter Видео Gameplay Мобильные игры Разработка Инди Стратегия YouTube Длиннопост
8
14
cheiser
cheiser
3 года назад
Лига фрилансеров

Как войти в IT. Flutter⁠⁠

Данным постом я хочу рассказать входящим в IT после какой планки знаний реально получить оффер. Сам я получил первый оффер буквально на днях, поэтому могу чётко сказать что я знал к этому моменту. Так, читатель может получить представление о том, сколько надо знать.


И так.


HARD SKILLS


#фреймворк

1) Я знаю как устроены [Element] и его наследники. Я оттрассировал все методы ключевых классов фреймворка и знаю что происходит под капотом.

2) Знаю начинку многих виджетов. Начинку некоторых уже зазубрил. Особенно, связанных с темами.

3) Имею широкий арсенал виджетов. Включая анимацию. Давно не встречал виджеты, которых я не знаю.

4) Имею представление о том, что происходит на Render уровне => понимаю как и где вставить [Flexible]. Но сами Render объекты не разбирал.


#Теоретичекие знания

Структуры и алгоритмы. Поверхностно.

Всевозможные архитектуры.

Паттерны. Ознакомился со всеми. Не зазубривал.


#стейт менеджмент

Provider, Bloc. Есть пет-проекты и с тем, и с другим.


#data слой

SQL, floor, firestore, shared prefs,

Кодогенераторы (да, да, это должно быть в domain сущностях, не душните)


#продвинутое

Isolate, плагины, чуток rxdart.

Плагины писать не пришлось, но я изучал их внутрянку, что где как зачем.

Kotlin. Часов 100. Без мультитрединга. Но его основные достоинства \ недостатки знаю.


#серверное

http, REST API, OSI, Облака, MQTT


#дополнительно

-Знаю всякие интересные нюансы Flutter, которые не описаны в документации.

-Имел опыт с C++ => Знал что происходит на низком уровне. И что под капотом высокоуровневых языков


SOFT SKILLS


Имел несколько шабашек. Прочувствовал, что ТЗ заказчика != тому, что он хочет.


Работал в командах, где я был единственный разработчик. Остальные - дизайнеры, железячники.


Пизжу как господь (всмысле умею связать два слова и хоть как-то это интересно подать).


ПРАКТИЧЕСКИЙ ОПЫТ


2 года программирования.

Несколько соревнований\хакатонов.

Пятак репозиториев. Половина - фулстечные.

Пара расширенных библиотек.

Работа по макетам из Figma.

Flutter реализовал некоторые предложенные мною API


СТЕК (вообще, у меня IoT стек)


Flutter - Dart - клиент

NodeJS - Typescript - облака, CMS

Jupyter - Python - ML

PlatformIO - C++ - контроллер


КАК ИЗУЧАЛ


StackOverflow, Medium (Столько раз меня спасал. Жаль, из-за санкций нельзя подписаться), Habr, иссью в репе флаттера часто содержат полезные комментария от разрабов. Доки, ясен хер.


===========


Некоторые моменты настолько обязательны, что я их даже не упоминаю. Вроде git, injection, хотя бы macos виртуалки.


===========


Как искал - откликался на все jun jun+ вакансии.

Где - На habr карьере, в телеге, на hh. 

Абсолютно все, кроме прокнувшей вакансии - отказы или игнор.

Одно единственное собеседование

Один единственный оффер.


===========


Итого. Войти в IT - Чистое везение. Я уже хотел бросать Flutter и уходить в нативку. Не знаю почему именно меня выбрали. Пеняю на знание низкоуровневых деталек. Командного опыта у меня не было. Коммерческого тоже.


Спасибо опытным знакомым, которые рассказали как выложиться на собесе по максимуму. Мне выпал один единственный шанс. И я его не упустил.

Как войти в IT. Flutter IT, Flutter, Мат, Длиннопост
Показать полностью 1
[моё] IT Flutter Мат Длиннопост
16
0
antson
antson
3 года назад
ИТ-проекты пикабушников

Изучаю flutter. Успехи в открытом репозитории GitHub⁠⁠

Изучаю flutter. Успехи в открытом репозитории GitHub Flutter, Программирование, Самозанятость, Приложение на Android, Android разработка

У меня есть бесплатное андроид приложение, опубликованное в Google Play. Учить любой язык проще на решении реальной задачи.

На платформе флатера за первый день сделал боковой дайвер, экран о том как пользоваться программой (статическая верстка инструкций). Разобрался с навигацией и локализацией.


Все пункты бокового меню уже работают (дополнительно там открываются внешние страницы в броузере и действие поделиться)


Далее  Экран настроек

Работа с базой данных через floor

Импорт данных из внешнего API (json)

Интеграция со службой

Первый комит получился - "Как нарисовать сову". В дальнейшем буду каждую бизнес фичу делать в отдельном комите.


https://github.com/Muraveiko/npd_receipt

Код открытый и доступен по ссылке выше

Просьба к пикабушникам  самозанятым предоставить ссылки на реальные чеки в демонстрационных целях и публичной публикации.

Показать полностью
[моё] Flutter Программирование Самозанятость Приложение на Android Android разработка
5
KonungzRage
KonungzRage
3 года назад

Make World как играть [Часть 1]⁠⁠

Видео о том, как развиваться и что строить в начале.

Бесплатная мобильная версия (play market): https://play.google.com/store/apps/details?id=ru.dvmatyun.ma...

web версия (для бразуера, производительность неважная): https://make-world-strategy.web.app/#/

Дискорд сообщество: https://discord.gg/gAgTQNZPVh

Показать полностью
[моё] Игры Пошаговая стратегия Стратегия Flutter Мобильные игры Инди игра Видеоигра Видео Gamedev Инди
2
1
KonungzRage
KonungzRage
3 года назад
Лига Геймеров

[Devblog Make World] Обновление цвета тайлов (опрос)⁠⁠

Новые цвета:

[Devblog Make World] Обновление цвета тайлов (опрос) Игры, Пошаговая стратегия, Стратегия, Flutter, Мобильные игры, Инди игра, Видеоигра, Видео, Gamedev, Инди

Старые цвета:

[Devblog Make World] Обновление цвета тайлов (опрос) Игры, Пошаговая стратегия, Стратегия, Flutter, Мобильные игры, Инди игра, Видеоигра, Видео, Gamedev, Инди

Какие больше нравятся вам?

discord community: https://discord.gg/gAgTQNZPVh

Показать полностью 1
[моё] Игры Пошаговая стратегия Стратегия Flutter Мобильные игры Инди игра Видеоигра Видео Gamedev Инди
12
7
KonungzRage
KonungzRage
3 года назад
Лига Разработчиков Видеоигр

Разрабатываю свою многопользовательскую стратегию - Make World⁠⁠

Всем привет, потихоньку разрабатываю свою онлайн стратегию на Flutter, решил тут поделиться результатом) Кому интересно - подключаемся, задаём интересующие вопросы и конечно же критикуем.

Первая версия уже доступна в google play market: https://play.google.com/store/apps/details?id=ru.dvmatyun.ma...

[моё] Игры Пошаговая стратегия Стратегия Flutter Мобильные игры Инди игра Видеоигра Видео Gamedev
6
Посты не найдены
О нас
О Пикабу Контакты Реклама Сообщить об ошибке Сообщить о нарушении законодательства Отзывы и предложения Новости Пикабу Мобильное приложение RSS
Информация
Помощь Кодекс Пикабу Команда Пикабу Конфиденциальность Правила соцсети О рекомендациях О компании
Наши проекты
Блоги Работа Промокоды Игры Курсы
Партнёры
Промокоды Биг Гик Промокоды Lamoda Промокоды Мвидео Промокоды Яндекс Директ Промокоды Отелло Промокоды Aroma Butik Промокоды Яндекс Путешествия Постила Футбол сегодня
На информационном ресурсе Pikabu.ru применяются рекомендательные технологии