Pull to refresh
1
0
Andrew @20912

Flutter developer

Send message

Если ты в Риме, то веди себя как римлянин :)

https://github.com/mebjas/html5-qrcode

Демо https://blog.minhazav.dev/research/html5-qrcode.html

На этапе 1 данные "грязные". Полученные незаконным путем с помощью провокации. Их ценность для оперативной работы, в качестве материалов расследования, в суде, стремится к нулю. Еще и самому подставиться можно. Гораздо лучше нанять фрилансера за $500, чтобы нигде не светиться.
После этапа 2 данные фактически легализованы с, условно, формулировкой: "собраны неустановленными третьими лицами, опубликованы в результате неисправности технических средств третьих лиц, изъяты в рамках борьбы с нарушением ФЗ о ПДн". Даже эта публикация, может в итоге стать одним из подтверждений "неисправности технических средств".
PPS Если у вас паранойя, это не значит что за вами в самом деле не следят...

Я старый и у меня паранойя, поэтому со стороны этот категорически наивный "слив" выглядит (ИМХО) как двухэтапная провокация:
1. Рекламируем УГ*. Делаем рассылку на предполагаемых "борцунов с рыжимом".
2. Открываем доступ в админку с доступом к логам и индексирируем поисковиками.
Результат: на руках организаторов фактически легализованная табличка с данными "борцунов". При том количестве дампов этих данных, которое сейчас появится в продаже, сделать их "белыми" (например в ходе изъятия) станет совсем несложно.
PS ИМХО конечно. Хочу ошибаться в целях организаторов.

Вы будете смеяться, но современный тепловоз тоже с электроприводом :) Как и карьерный самосвал, например. Стоит большой дизель- электрический генератор на 1...5МВт и двигатели приводов (в карьерных самосвалах двигатели прямо внутри колес стоят). По сути получается тот же электровоз.

Не стану говорить за всех врачей (и особенно за младший мед персонал, где с ЗП действительно беда), но опытный хирург, даже в регионе (Нижний Новгород, как пример) - человек с достойной оплатой труда. Порядок цифр сравним с IT: от 150 т.р. Про Мск скажем так: выше чем в IT (ИМХО конечно). Есть "синьоры хирурги" с белой ЗП в государственной клинике 1kk+.

Есть, разумеется, и нюансы профессии: переработки (представьте себе, без всяких частных клиник, халтуры после работы и PET project), дежурства (это когда работаешь по 12 или по 24 часа на экстренном "канале", ждёшь когда тебе привезут очередной "конструктор"), очень напряжённый "дебаг в прод окружении" и т.д.

ИМХО: современный коммерческий фронт — достаточно сложный. Часто в нем есть и оптимизация производительности и многопоточность и "толстая" бизнес-логика. Мы в той точке, когда и "формошлепство" перестало быть совсем простым :)

Точно не отвечу: мне сказали что разработчик ЭТОГО не работает уже. Но теоретически — слабенький способ защититься от DDOS ботов подбора пар номер/СМСкод (лоялка — это какие-никакие деньги).

Пилил я как-то фронт (мобилку) для одной программы лояльности… Доки никакой нет, естесс-но(!), но есть сайт, который вполне себе можно задебажить. Хм… но в логах все запросы возвращают 400. В результате: все эндпойнты на все запросы отвечают 400 (Bad request), но если заглянуть в сообщение ошибки внутри лежит себе int код состояния (которых, оказывается, десяток разных придуман) и мессадж на вполне себе человеческом языке.
Открыли тикет, конечно, по этому поводу бэкендерам, но фичу сделали (делов-то кастомный ResponseConverter) — весь функционал работает.
PS тикет на бэке делать не стали :(
PSS ИМХО статья про то, как перфекционист с пофигистом встретились.

В реальном Flutter приложении очень "далеко" от константы строки (wrong pass например) до логики условия, а именно:


  1. строки ассетятся через делегат локализации, который в свою очередь инициируется также в рантайме по данным о локалях устройства, которые в свою очередь получаются из нативного канала (ещё одна неприятная для дизассемблирования фича)
  2. Flutter сильно реактивный фреймворк, проброс этой строки в вёрстку будет выполнен через стрим pub/sub, что усложняет анализ дерева переходов.
  3. Как правило продовые приложения имеют несколько дополнительных логических проверок (наличие соединения, валидация, санитайзинг, спам) которые тоже вполне себе неприятные для анализа стримы.

Предположу, что в реальном приложении найти машинное слово в бинарнике для != можно будет только на отладчике с брекпойнтами, который ещё не разработан(?).

ИМХО: курсы бывают очень разные. В том числе и онлайн. Смотрел курс лекций по алгоритмической сложности от Школы анализа данных Яндекс. Свободно лежат на YouTube. Считаю, что при доступе к таким материалам, нужный профиль высшего образования можно собрать для себя не поступая в ВУЗ. Вопрос только, где взять интерьвьюера, который сможет это проверить на собеседовании?

Фидбек принят:
  • листинг скриншотами сделан только по причине слабой подсветки синтаксиса dart при публикации и «странной» верстке при просмотре на мобильном устройстве
  • весь код доступен по ссылке в github
  • начиная со следующей статьи весь листинг кода сделан «кликабельным» на соответствующие классы в репозитории результат
  • цветовая схема листингов изменена также по отзывам читателей данной статьи
А версия aqueduct какая? Может на beta канале попробовать?
1. «Движок» SPA flutter в JS сам по себе «весит» 1МБ. Angular, если мне не изменяет память 0,3МБ — 0,4МБ. С этим трудно что-то поделать.
2. Disable cache — такой себе режим для прода. Можно попробовать выкинуть прозрачность и анимацию, поскольку именно их наложение пересчитывает рендер фактически непрерывно, но смысл этого демо — потрогать как там с производительностью у flutterWeb. Я посмотрел утилизацию оперативки 10-12МБ (для 4к экрана). Как посмотреть нагрузку на CPU/GPU, честно говоря не нашел (профилировщик показывает в каких-то условных единицах график). Запустил на самом древнем телефоне (iPhone6 c iOS10) вроде работает хорошо, ререндер страницы (при перевороте экрана) с заменой ассетов быстрый. Для понимания, что это за телефон/браузер: в нем даже форматы изображений не все поддерживаются (тот же *.webm).
Проверил также PageSpeed Insights:
Yandex — 80%
Google страница поисковой выдачи — Insights упал с ошибкой 429 (привет, Google)
Dartservice — 73%
По-моему приемлемо.
Спасибо за хороший вопрос (первый содержательный комментарий), отвечу максимально развернуто:
  1. Производительность 78%.


    Основные проблемы:
    • Большое время до первого рендера. Мы исправим эту проблему когда будем готовиться к релизу. Сделаем нативный CSS сплеш
    • Необходимо настроить политики кеширования статики на сервере. Это элементарный кейс для NGINX. Но сделаем мы его только перед релизом, сейчас кеширование будет только мешать.
  2. Доступность 80%

    Проблемы:
    • Масштабирование (этот вопрос мы решаем сами, Lighthouse просто не умеет пока измерять Flutter приложения)
    • Локализация. Этот вопрос тоже будем решать по мере поступления :)
  3. Best practices 85%
    • Изображение неподходящего разрешения. Согласен косяк, сделал background без учета элементов управления в браузере. Нужно обрезать высоту картинки.
    • Логирование ошибок в консоль. Даже не знаю где он это нашел. Там ровно одна ошибка (не нашел service_worker)
  4. Остальные пункты по 100%

Итого: минимальный балл 78%. Для сравнения главная Яндекс (с поисковой строкой и новостями) — 81%. Страница поисковой выдачи Google — 70%.
Резюме: вполне себе производительный билд получился. Возможно вы измеряете отладочную dev сборку. Это не совсем верно, она, если обратите внимание даже «весит» 25+МБ против 1+МБ продовой.
За что мне нравится Хабр, это комментарии под статьями. Под этой конкретно уже два полезных: Traefik и caddy.
Можно и все сразу. Но:
  • потом не интересно будет тратить время на оформление статьи. Работает и хорошо
  • публикации идут строго по порядку разработки. Часто бывает, что траблы возникают именно на стыке стейджей. Очень хочу надеяться, что мое описание работы того же certbot станет одним из самых простых для первого знакомства
  • карма? Для буста кармы в Хабр лучше писать что-нибудь лирическое или теплое ламповое. Скриншоты из CLI — это неправильный путь в Топ авторов
Еще хуже. У меня в профиле написано «Flutter dev», а это даже не кодер, а фронтендер. :)
Есть такой вариант. Это кстати один из немногих провайдеров, предлагающий Дарт рантайм на своих инстансах. Здесь инструкция по деплою Aqueduct приложения на Heroku. Но мы пойдем другим путем по следующим причинам:
  • Теоретическая. Это интереснее. Потрогав руками все технологии, которые находятся под капотом нашего сервиса, переезд потом в любое облако не составит никакого труда
  • Психологическая. Я бы предпочел, чтобы весь сервис (в виде образов, бекапов БД и скрипта развертывания) лежал в заначке так
  • Лирическая. Как-то раз в начале лета 2018 года я летел на работу с пересадкой и сменой аэропорта в Москве. Мне нравятся аэроэкспрессы и метро. Ничто не предвещало… Однако на Курском вокзале выяснилось, попасть на аэроэкспресс никак не получится по причине невозможности приобретения билета. Я уже слышал о том, что Телеграм договорился с AWS о ротации IP блокируемых Роскомнадзором, но никак не предполагал, что они будут возвращаться в пул выдаваемых другим сервисам… У меня был запас времени и я задержался на 2 часа понаблюдать, как команда сервиса борется за живучесть. Как их усилиями изредка то одна то другая касса оживали, как к ней бросались пассажиры, как она снова «повисала» от перегрузки открывшегося инстанса. Как пришла кассир с ручным аппаратом, подключенным к чему-то, наверное, не совсем облачному. Тогда я подумал, что глобальные облачные провайдеры это не только высокий SLA, но еще и хороший шанс сыграть в чью-то игру не по своей воле.
1

Information

Rating
Does not participate
Location
Нижний Новгород, Нижегородская обл., Россия
Works in
Registered
Activity