Pet-проект или самописный инструмент помогают решить проблемы, которые возникают в разработке. На примере инициализатора Flutter-проектов рассказываем, как следует подходить к разработке собственной «тулзы» правильно: с SOLID и чистой архитектурой.
Программист
Как я научился не волноваться и полюбил управление состояниями Flutter. MVI и Clean Code в комплекте
Цель статьи — показать, как сделать ваш проект на Flutter более понятным для усовершенствования и удобным в сопровождении. Текст может быть полезным как для тех, кто только начинает изучать Flutter, так и более продвинутых пользователей, так как здесь мы рассмотрим актуальные подходы к разработке.
Если вы читали мою прошлую статью, или позапрошлую, то, наверное, уже знаете что я nerd vulgaris увлекаюсь программированием всякого. В комментариях к одной из прошлых статей было высказана идея провести параллель между приложением на Flutter и нативным приложения для Android на Kotlin c использованием view model, live data, view binding и найти аналоги привычным по Kotlin языковым средствам.
gRPC + Dart, Сервис + Клиент, напишем? Часть 4: подключаем мобильное Flutter приложение
В этой части мы сделаем рефакторинг проекта и подключим клиентское мобильное Flutter приложение к сервису Umka.
В статье даны ссылки на исходный код, а в конце приведён пример команд, которыми проект можно запустить на своём локальном компьютере и "поиграться" с приложением.
Flutter: о разработке плагинов с интерфейсом ActivityAware
В былые времена клиенты присылали цветные изображения документов со сканера по емейлу. Кто ленился или не мог — отправлял свой загранник по почте. С этим неплохо справлялось решение от ABBYY. Потом появились телефоны и люди стали присылать фотографии паспортов. ABBYY сломался. Перешли на решение от Smart Engines и даже с фотографиями, посланными через WhatsApp особых проблем не было. Но потом пошли умные мобилки с включенными по умолчанию водяными знаками типа «Xiaomi 9T» часто перекрывающими важнейшую часть паспорта. Вдобавок к этому наличие в кадре на фотографии пальцев и бликов тормозило общение с клиентом.
Когда паспорт распознается в видеопотоке на телефоне клиента, то этой проблемы так остро не стоит. Почему?
- Мобильное ядро отображает рамку документа в процессе распознавания, не просто маску поверх видео, а именно рамку документа, находящегося в руках. По моим ощущениям, это дает человеку понимание, где не должно быть его пальцев. Вообще, это интересная тема для отдельного исследования.
- Система использует механизм сатурации данными и готова выдать результат только после определенной уверенности в них.
Пуленепробиваемый кофе: напиток, который раскачает мозг и тело
История про кофе, масло и гамма-аминомасляную кислоту.
UML умер, а никто и не заметил?
UML, нам будет тебя не хватать
Unified Modelling Language (UML), разработанный Rational Software и принятый в качестве стандарта Object Management Group (OMG) в 1997 году, призван был стандартизировать множество различных типов графических нотаций, принятых в отрасли разработки ПО.
Моя история отношений с UML началась почти десяток лет назад, когда я стал евангелистом этого языка как моста между ИТ и бизнесом. Я никогда не был полностью убеждён в ценности UML как нотации для моделирования конкретных программных продуктов; моя цель заключалась в использовании UML для описания требуемых структурных и поведенческих свойств, ожидаемых от проектируемой системы.
Flutter Flavoring in a breeze
Хотелось ли вам иметь несколько версий одного приложения?
Чтобы одной командой вы могли собрать приложение под определенное окружение?
Сталкивались ли вы с тем, что одновременно нельзя было установить несколько версий одного приложения на одном устройстве?
Всем привет!
Меня зовут Андрей!
И в этой статье я расскажу, как настроить сборку приложения для разных окружений.
Не умереть, а именно уснуть. Что меня озадачивает в современных работах по продлению жизни
Сегодняшний пост (что не вполне обычно для моего блога) не претендует на научную достоверность и во многом является попыткой резюмировать мысли на тему, обозначенную в заголовке. Основным материалом, побудившим меня к написанию этого поста, стал текст уважаемого Дмитрия Тюлина «Старение и бессмертие: взгляд биолога», а также дискуссия под ним. Также меня заинтересовала статья Николая Мушкамбарова о биологии мейоза, на которую ссылается Дмитрий Тюлин. Этот материал натолкнул меня на две линии размышлений и выводов, которыми я хочу здесь поделиться.
5 фразовых глаголов с get и 33 их значения, или Почему студенты не любят английский
Фразовые глаголы — это отдельная боль для студента, который изучает английский как второй. Мало того, что каждый отдельный предлог меняет значение глагола полностью, так и еще их просто целая куча.
Мы решили запустить новую рубрику и рассказывать про фразовые глаголы весело. Чтобы не зубрить их, а нормально запоминать на примерах из фильмов и сериалов.
И начнем со слова «get». По нашему опыту, студенты делают во фразовых глаголах с ним огромное количество ошибок. Так что не будем затягивать, поехали!
Лучшие оптические иллюзии 2020
Предлагаю всем ознакомиться с десятью финалистами ежегодного конкурса оптических иллюзий 2020: нож и вилка, советский пенал (тактильная иллюзия), зеркало для вампиров, божьи коровки, двоякая лестница, выворачивающаяся сетка, ненастоящие солнечные лучики, рентген на коленке, выпуклые субтитры.
Канал в телеграм Cognitive Illusions, где я буду делиться самыми вырвиглазными находками, как хакнуть мозг через восприятие.
1 год с Flutter в продакшне
Это текстовая версия моей презентации на DartUp 2020 (на английском). В ней я делюсь проблемами, с которыми мы столкнулись, обсуждаю наш архитектурный подход, рассказываю о полезных библиотеках, ну и отвечаю на вопрос, удачной ли была эта идея – взять и всё переписать.
Все, что вам нужно знать о маршрутизации между страницами Flutter
В Winkl, когда мы начали играть с анимацией, мы поняли, что переход на страницу может действительно сделать ваш пользовательский интерфейс красивым. Если вы хотите иметь слайд-переход, как IOS вы используете CupertinoPageRoute. Вот и все, ничего больше.
Но для пользовательского перехода Flutter предоставляет различные виджеты перехода. Давайте посмотрим, как мы можем их использовать.
Всего лишь меняем модель эмулятора Android устройства
Казалось бы, на первый взгляд весьма простая задача. Некоторые читатели могли еще в те бородатые времена лазить по всяким 4пда, рутить свой сенсорный самсунг, менять содержимое файла build.prop и показывать наивным ламерам свой iPhone 15+ Max Pro. Однако, как оказалось, и как оно часто бывает, не все так просто и здесь есть свои подводные камни. Статья призвана помочь простым работягам избежать все кочки да ямы на пути к своей цели!
Используйте парсинг вместо контроля типов
В 2019 году была написана потрясающая статья Parse, don’t validate. Я крайне рекомендую изучить её всем программистам (а также недавнее дополнение к ней Names are not type safety). Её основная идея заключается в том, что существует два способа проверки валидности входящих данных функции:
- Валидатор проверяет входящие данные на правильность и в случае их неправильности выдаёт ошибку. Он ничего не возвращает. Например, он может проверять, не пуст ли список.
- Парсер делает то же самое, что и валидатор, но возвращает более конкретное представление входящих данных, обеспечивающее соответствие требуемого свойства. Например, он проверяет, не пуст ли список, и возвращает тип NonEmptyList.
Главное утверждение, сделанное в этой статье — что парсеры предпочтительнее, чем валидаторы. Её основной посыл — нужно сделать недопустимые состояния непредставимыми (unrepresentable). В статье это реализовано с помощью использования системы типов. Я полностью согласен с такой философией, но хотел бы выделить и более подробно обсудить один из ироничных аспектов аргументации:
Инструмент контроля типов является хрестоматийным примером валидатора!
Ведь в конечном итоге инструмент контроля типов получает на входе уже подвергнутое парсингу представление программы и «бракует» его, если не удаётся выполнить контроль типов. Он не возвращает более конкретного представления программы. (Не стоит путать это с выводом типа, который возвращает больше информации, но только касательно типов).
Какой же может быть альтернатива инструменту контроля типов в виде парсера для языка программирования?
Constraint Programming или как решить задачу коммивояжёра, просто описав её
Пожалуй, наиболее популярной парадигмой программирования является императивное программирование, но это не единственный вид программирования, широки известны функциональное и логическое программирование. Constraint Programming (Программирование в ограничениях/Ограниченное программирование) не так популярно. Но это очень мощный инструмент для решения комбинаторных задач. Вместо реализации алгоритма, который решает задачу, с последующей тратой кучи времени на его отладку, рефакторинг и оптимизацию, программирование с ограничениями позволяет вам просто описать модель в специальном синтаксисе, а особая программа (решатель) найдет решение для вас (или скажет, если их нет). Впечатляет не правда ли? Мне кажется, каждый программист должен знать о такой возможности.
Учимся писать информативные комментарии к GIT-коммитам используя общепринятую семантику
Когда я только знакомился с системами контроля версий (особенно с git), я рассматривал их только как приложения, которые помогают мне хранить историю изменений моего кода. Т.е. когда случается что-то нехорошее, я могу просмотреть историю коммитов и вернуться к последнему «хорошему» состоянию кода в моем репозитории.
Но когда я начал более плотно использовать их в своей работе, я понял, что их функция шире, чем просто контроль версий, это также инструмент совместной работы, где вы описываете свою историю взаимодействия с репозиторием и делитесь ею с другими разработчиками. Именно тогда я узнал, что хорошие комментарии к коммитам (commit message) могут значительно улучшить ваше взаимодействие с другими членами команды (и не только).
В этой статье я расскажу о том, как хороший стиль написания комментариев к коммитам может помочь вам стать лучшим разработчиком, и как общепринятые коммиты (conventional commits - соглашение о семантике комментариев к коммитам, которое я использую и рекомендую вам) упростят и улучшат ваш процесс написания комментариев к коммитам.
MarkedText — маркдаун здорового человека
Здравствуйте, меня зовут Дмитрий Карловский и все свои статьи (и презентации) пишу я в MarkDown разметке. И знаете что? Она уже порядочно меня подзаелозила! Тексты я пишу на русском, но большая часть спецсимволов есть только в английской раскладке клавиатуры. А редактирование таблиц - это вечная пизанская башня из вертикальных линий. Короче, есть у него проблемы как с удобством редактирования, так и с наглядностью представления. Так что давайте попробуем спроектировать его с нуля, не таща за собой килотонны головоломных конструкций.
Мама, я хакер: пробуем вскрыть приложение на Flutter
Hacker - человек, наслаждающийся доскональным пониманием внутреннего устройства систем, компьютеров и компьютерных сетей, в частности.
Написание Dockerfile. Лучшие практики
Публикуем новый перевод и надеемся, что рекомендации автора помогут вам оптимизировать образ Docker.
С момента своего создания Docker произвел революцию в том, как мы используем контейнеры. В основном это связано с простотой, которую обеспечивает Docker. Его можно использовать, даже не разбираясь в каких-либо сложных темах, связанных с контейнерами.
Если вы новичок в Docker, можете выбрать шаблон (базовый образ) и определить свои инструкции (команды Dockerfile), чтобы разместить свой код внутри образа и запустить его.
Простота Docker будем помогать вам в работе с самого начала его использования, а навык его оптимизации приходит с опытом и обычно требует времени.
Оптимизация сборок Android приложений: ProGuard, D8, R8. Тайны обфускации
Оптимизация сборки — вишенка на торте мобильного приложения. К счастью, существуют инструменты, проверенные временем и заслужившие доверие сообщества. К сожалению, ее не всегда воспринимают всерьез и не уделяют ей должного внимания. Почему в оптимизации должны быть заинтересованы все? Как выжать максимум из мобильного приложения? Как работают инструменты, которыми мы привыкли пользоваться в паре строк? И что нам продают под словом «обфускация»?
Information
- Rating
- Does not participate
- Location
- Екатеринбург, Свердловская обл., Россия
- Date of birth
- Registered
- Activity