Pull to refresh
18
0
Валерий @rookie_cruekie

Программист

Send message

Создание инициализатора Flutter-проектов. Чисто и SOLIDно

Reading time 9 min
Views 4K

Pet-проект или самописный инструмент помогают решить проблемы, которые возникают в разработке. На примере инициализатора Flutter-проектов рассказываем, как следует подходить к разработке собственной «тулзы» правильно: с SOLID и чистой архитектурой.

Читать далее
Total votes 5: ↑5 and ↓0 +5
Comments 8

Как я научился не волноваться и полюбил управление состояниями Flutter. MVI и Clean Code в комплекте

Reading time 13 min
Views 10K

Цель статьи — показать, как сделать ваш проект на Flutter более понятным для усовершенствования и удобным в сопровождении. Текст может быть полезным как для тех, кто только начинает изучать Flutter, так и более продвинутых пользователей, так как здесь мы рассмотрим актуальные подходы к разработке.

Если вы читали мою прошлую статью, или позапрошлую, то, наверное, уже знаете что я nerd vulgaris увлекаюсь программированием всякого. В комментариях к одной из прошлых статей было высказана идея провести параллель между приложением на Flutter и нативным приложения для Android на Kotlin c использованием view model, live data, view binding и найти аналоги привычным по Kotlin языковым средствам.

Читать далее
Total votes 6: ↑6 and ↓0 +6
Comments 5

gRPC + Dart, Сервис + Клиент, напишем? Часть 4: подключаем мобильное Flutter приложение

Reading time 5 min
Views 3.7K

В этой части мы сделаем рефакторинг проекта и подключим клиентское мобильное Flutter приложение к сервису Umka.

В статье даны ссылки на исходный код, а в конце приведён пример команд, которыми проект можно запустить на своём локальном компьютере и "поиграться" с приложением.

Читать далее
Total votes 3: ↑2 and ↓1 +1
Comments 4

Flutter: о разработке плагинов с интерфейсом ActivityAware

Reading time 6 min
Views 4.8K


В былые времена клиенты присылали цветные изображения документов со сканера по емейлу. Кто ленился или не мог — отправлял свой загранник по почте. С этим неплохо справлялось решение от ABBYY. Потом появились телефоны и люди стали присылать фотографии паспортов. ABBYY сломался. Перешли на решение от Smart Engines и даже с фотографиями, посланными через WhatsApp особых проблем не было. Но потом пошли умные мобилки с включенными по умолчанию водяными знаками типа «Xiaomi 9T» часто перекрывающими важнейшую часть паспорта. Вдобавок к этому наличие в кадре на фотографии пальцев и бликов тормозило общение с клиентом.

Примеры паспортов, непригодных к распознаванию

Когда паспорт распознается в видеопотоке на телефоне клиента, то этой проблемы так остро не стоит. Почему?

  1. Мобильное ядро отображает рамку документа в процессе распознавания, не просто маску поверх видео, а именно рамку документа, находящегося в руках. По моим ощущениям, это дает человеку понимание, где не должно быть его пальцев. Вообще, это интересная тема для отдельного исследования.
  2. Система использует механизм сатурации данными и готова выдать результат только после определенной уверенности в них.
Читать дальше →
Total votes 7: ↑6 and ↓1 +5
Comments 7

UML умер, а никто и не заметил?

Reading time 4 min
Views 68K

UML, нам будет тебя не хватать

Unified Modelling Language (UML), разработанный Rational Software и принятый в качестве стандарта Object Management Group (OMG) в 1997 году, призван был стандартизировать множество различных типов графических нотаций, принятых в отрасли разработки ПО.

Моя история отношений с UML началась почти десяток лет назад, когда я стал евангелистом этого языка как моста между ИТ и бизнесом. Я никогда не был полностью убеждён в ценности UML как нотации для моделирования конкретных программных продуктов; моя цель заключалась в использовании UML для описания требуемых структурных и поведенческих свойств, ожидаемых от проектируемой системы.
Читать дальше →
Total votes 79: ↑72 and ↓7 +65
Comments 185

Flutter Flavoring in a breeze

Reading time 8 min
Views 6.8K

Хотелось ли вам иметь несколько версий одного приложения?

Чтобы одной командой вы могли собрать приложение под определенное окружение?

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

Всем привет!

Меня зовут Андрей!

И в этой статье я расскажу, как настроить сборку приложения для разных окружений.

Читать далее
Total votes 9: ↑7 and ↓2 +5
Comments 1

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

Reading time 9 min
Views 15K

Сегодняшний пост (что не вполне обычно для моего блога) не претендует на научную достоверность и во многом является попыткой резюмировать мысли на тему, обозначенную в заголовке. Основным материалом, побудившим меня к написанию этого поста, стал текст уважаемого Дмитрия Тюлина «Старение и бессмертие: взгляд биолога», а также дискуссия под ним. Также меня заинтересовала статья Николая Мушкамбарова о биологии мейоза, на которую ссылается Дмитрий Тюлин. Этот материал натолкнул меня на две линии размышлений и выводов, которыми я хочу здесь поделиться.

Читать далее
Total votes 40: ↑35 and ↓5 +30
Comments 96

5 фразовых глаголов с get и 33 их значения, или Почему студенты не любят английский

Reading time 7 min
Views 83K

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

Мы решили запустить новую рубрику и рассказывать про фразовые глаголы весело. Чтобы не зубрить их, а нормально запоминать на примерах из фильмов и сериалов.

И начнем со слова «get». По нашему опыту, студенты делают во фразовых глаголах с ним огромное количество ошибок. Так что не будем затягивать, поехали!

Читать далее
Total votes 32: ↑22 and ↓10 +12
Comments 20

Лучшие оптические иллюзии 2020

Reading time 3 min
Views 24K
image


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

Канал в телеграм Cognitive Illusions, где я буду делиться самыми вырвиглазными находками, как хакнуть мозг через восприятие.
Total votes 52: ↑41 and ↓11 +30
Comments 17

1 год с Flutter в продакшне

Reading time 13 min
Views 19K

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

Читать далее
Total votes 25: ↑25 and ↓0 +25
Comments 45

Все, что вам нужно знать о маршрутизации между страницами Flutter

Reading time 5 min
Views 7.2K

В Winkl, когда мы начали играть с анимацией, мы поняли, что переход на страницу может действительно сделать ваш пользовательский интерфейс красивым. Если вы хотите иметь слайд-переход, как IOS вы используете CupertinoPageRoute. Вот и все, ничего больше.

Но для пользовательского перехода Flutter предоставляет различные виджеты перехода. Давайте посмотрим, как мы можем их использовать.

Читать далее
Total votes 14: ↑11 and ↓3 +8
Comments 5

Всего лишь меняем модель эмулятора Android устройства

Reading time 5 min
Views 25K

Казалось бы, на первый взгляд весьма простая задача. Некоторые читатели могли еще в те бородатые времена лазить по всяким 4пда, рутить свой сенсорный самсунг, менять содержимое файла build.prop и показывать наивным ламерам свой iPhone 15+ Max Pro. Однако, как оказалось, и как оно часто бывает, не все так просто и здесь есть свои подводные камни. Статья призвана помочь простым работягам избежать все кочки да ямы на пути к своей цели!

Поменять модель эмулятора
Total votes 13: ↑10 and ↓3 +7
Comments 0

Используйте парсинг вместо контроля типов

Reading time 5 min
Views 9.7K


В 2019 году была написана потрясающая статья Parse, don’t validate. Я крайне рекомендую изучить её всем программистам (а также недавнее дополнение к ней Names are not type safety). Её основная идея заключается в том, что существует два способа проверки валидности входящих данных функции:

  • Валидатор проверяет входящие данные на правильность и в случае их неправильности выдаёт ошибку. Он ничего не возвращает. Например, он может проверять, не пуст ли список.
  • Парсер делает то же самое, что и валидатор, но возвращает более конкретное представление входящих данных, обеспечивающее соответствие требуемого свойства. Например, он проверяет, не пуст ли список, и возвращает тип NonEmptyList.

Главное утверждение, сделанное в этой статье — что парсеры предпочтительнее, чем валидаторы. Её основной посыл — нужно сделать недопустимые состояния непредставимыми (unrepresentable). В статье это реализовано с помощью использования системы типов. Я полностью согласен с такой философией, но хотел бы выделить и более подробно обсудить один из ироничных аспектов аргументации:

Инструмент контроля типов является хрестоматийным примером валидатора!

Ведь в конечном итоге инструмент контроля типов получает на входе уже подвергнутое парсингу представление программы и «бракует» его, если не удаётся выполнить контроль типов. Он не возвращает более конкретного представления программы. (Не стоит путать это с выводом типа, который возвращает больше информации, но только касательно типов).

Какой же может быть альтернатива инструменту контроля типов в виде парсера для языка программирования?
Читать дальше →
Total votes 39: ↑35 and ↓4 +31
Comments 4

Constraint Programming или как решить задачу коммивояжёра, просто описав её

Reading time 7 min
Views 11K

Пожалуй, наиболее популярной парадигмой программирования является императивное программирование, но это не единственный вид программирования, широки известны функциональное и логическое программирование. Constraint Programming (Программирование в ограничениях/Ограниченное программирование) не так популярно. Но это очень мощный инструмент для решения комбинаторных задач. Вместо реализации алгоритма, который решает задачу, с последующей тратой кучи времени на его отладку, рефакторинг и оптимизацию, программирование с ограничениями позволяет вам просто описать модель в специальном синтаксисе, а особая программа (решатель) найдет решение для вас (или скажет, если их нет). Впечатляет не правда ли? Мне кажется, каждый программист должен знать о такой возможности.

Read more
Total votes 14: ↑14 and ↓0 +14
Comments 7

Учимся писать информативные комментарии к GIT-коммитам используя общепринятую семантику

Reading time 5 min
Views 35K

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

Но когда я начал более плотно использовать их в своей работе, я понял, что их функция шире, чем просто контроль версий, это также инструмент совместной работы, где вы описываете свою историю взаимодействия с репозиторием и делитесь ею с другими разработчиками. Именно тогда я узнал, что хорошие комментарии к коммитам (commit message) могут значительно улучшить ваше взаимодействие с другими членами команды (и не только).

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

Читать далее
Total votes 23: ↑20 and ↓3 +17
Comments 35

MarkedText — маркдаун здорового человека

Reading time 10 min
Views 38K

Здравствуйте, меня зовут Дмитрий Карловский и все свои статьи (и презентации) пишу я в MarkDown разметке. И знаете что? Она уже порядочно меня подзаелозила! Тексты я пишу на русском, но большая часть спецсимволов есть только в английской раскладке клавиатуры. А редактирование таблиц - это вечная пизанская башня из вертикальных линий. Короче, есть у него проблемы как с удобством редактирования, так и с наглядностью представления. Так что давайте попробуем спроектировать его с нуля, не таща за собой килотонны головоломных конструкций.

Поехали..
Total votes 91: ↑72 and ↓19 +53
Comments 155

Мама, я хакер: пробуем вскрыть приложение на Flutter

Reading time 11 min
Views 15K

RFC 1983

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

Читать далее
Total votes 18: ↑17 and ↓1 +16
Comments 3

Написание Dockerfile. Лучшие практики

Reading time 4 min
Views 13K
Публикуем новый перевод и надеемся, что рекомендации автора помогут вам оптимизировать образ Docker.

С момента своего создания Docker произвел революцию в том, как мы используем контейнеры. В основном это связано с простотой, которую обеспечивает Docker. Его можно использовать, даже не разбираясь в каких-либо сложных темах, связанных с контейнерами.



Если вы новичок в Docker, можете выбрать шаблон (базовый образ) и определить свои инструкции (команды Dockerfile), чтобы разместить свой код внутри образа и запустить его.

Простота Docker будем помогать вам в работе с самого начала его использования, а навык его оптимизации приходит с опытом и обычно требует времени.
Читать дальше →
Total votes 14: ↑11 and ↓3 +8
Comments 10

Оптимизация сборок Android приложений: ProGuard, D8, R8. Тайны обфускации

Reading time 17 min
Views 23K

Оптимизация сборки — вишенка на торте мобильного приложения. К счастью, существуют инструменты, проверенные временем и заслужившие доверие сообщества. К сожалению, ее не всегда воспринимают всерьез и не уделяют ей должного внимания. Почему в оптимизации должны быть заинтересованы все? Как выжать максимум из мобильного приложения? Как работают инструменты, которыми мы привыкли пользоваться в паре строк? И что нам продают под словом «обфускация»?

Читать далее
Total votes 17: ↑16 and ↓1 +15
Comments 2

Information

Rating
Does not participate
Location
Екатеринбург, Свердловская обл., Россия
Date of birth
Registered
Activity