Как стать автором
Обновить
12
0
Иван @IPri

инженер-программист

Отправить сообщение
Пример из https://en.wikipedia.org/wiki/Inversion_of_control

public class ServerFacade {
    public <K, V> V respondToRequest(K request, DAO dao) {
        return dao.getData(request);
    }
}


Из статьи
class Component {

    constructor(name = 'Component') {

        inject(this, name);
    }


Зависимость, управляет пользовательским кодом.
Так я вроде и написал что затенение это плохо)))
container.get — это чистой воды Service Locator, который кстати многие считают плохой практикой и анти-паттерном.
По поводу очевидности частично согласен. За респект спасибо))
А вот по поводу паттерна factory непонятно. Там кода получиться не меньше, вы же должны писать кучу классов под каждый случай ConcreteCreator.create() -> ConcreteProduct. О каком DI тут речь непонятно. Либо же вы расширяете этот паттерн и в фабричный метод передаете конфиги с описанием имен и классов зависимостей.
Хотелось бы увидеть реализацию, просто я пока не понимаю что вы имели в виду.
Спасибо, отличный вариант! Буфер и указатель — супер!
Судя по описанию, у вас то, как раз, позаковыристее получается — массивы, указатели :) Ни могли бы показать реализацию в коде.
И что такое 60000? Вы предлагаете среднее за минуту? Я писал, что получать метрику даже 1 раз в секунду слишком медленно.
Я вовсе, не ставил перед собой задачи в 60 FPS. Иначе я вовсе не использовал бы анимацию и минимум JS кода. Задача состояла в притормаживании слишком «прожорливого» кода, чтобы у пользователя оставался запас на скролл и тыкания мышкой.
Спасибо, за предложение. Веб-воркер — хорошая идея.
Но у меня есть статистика по используемым машинам, и я могу запустить виртуалки со всеми самыми распространенными конфигурациями.


О чем и речь, это каждому разработчику/группе разработчиков нужен такой стенд. И для чего, а для того чтобы просто узнать как исполняет код браузер. А не проще было бы, если бы разработчики браузеров, предоставляли подобную информацию о своих детищах. И не надо было сотен тысяч виртуалок.

Для случаев, когда пользователь жалуется на слабую производительность...

Они никому не жалуются, они просто закрывают сайт и ищут альтернативу.
Это интересный вариант. Но это же надо, чем то занять пользователя, пока бенчмарк издевается над его браузером. :)
Я пилю фронтенд :)
В данной реализации, да. Но вообще, если парсинг ресурсоемкий, какой смысл в это время что-то анимировать — это как добивать уже и так мертвого. Скорее всего напишу еще одну статью, где будет учитываться время исполнения функции, и будут разные асинхронные очереди.
Вместо буфера у меня используется «точный счетчик», как раз чтобы не реагировать на возможные провалы 'быстрого счетчика'. Так что мерцание будет в самом критическом случае, когда либо совсем мертвый интефейс, либо хоть какой, но живой. Лично я за живой.
Повторил ваш опыт, с множеством вкладок и открытым стендом. Увеличения нагрузки CPU не наблюдаю.
… полностью вырезаем все свои тесты и отдаем пользователю нормальную и быструю программу


Как вы определите, что ваша программа быстрая во всех случаях? Для конкретной машины, пускай даже 5 машин, на которых вы сможете протестить программу — да. А в остальных случая вы уверены?

Но вот пользователям генерировать эти отчеты нет ну никакого смысла...

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

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

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

Видите — пишите что не так, оч интересно глянуть как вы считаете.
Так ваша считалка и будет составлять основную нагрузку.

Какой именно участок кода, по вашему мнению будет давать нагрузку? Если жмакните по ссылке на 'стенд', то увидите, что при запущенном счетчике и вашем бездействие, FPS будет 60. Так что о какой нагрузке речь, я не понимаю.
А зачем на них «смотреть» из JS?

Вот, в потом то и печаль, что разработчики даже не понимают зачем это нужно. Используя штатные средства, вы можете оценить производительность на конкретной машине с конкретной конфигурацией и конкретным js-движком. А что делать с остальными миллионами пользователей с их разнообразием железа, ОС и д.т.? Есть два варианта либо вы зайдете к каждому и запустите на его машине средства разработки в браузере, либо всем пользователям нужно иметь такую же конфигурацию аппаратно-программных средств как у вас.
В статье же все сказано —
с июля 2014 года, когда вышло постановление правительства №758...
Вот можете сами почитать постановление №758
Суть такова что помимо идентификации устройства (MAC), нужно еще идентифицировать пользователя путем установления ФИО. Строго говоря в этом постановлении нет ничего про SMS и номера телефонов. Но видимо предполагается, что по номеру мобильного телефона можно потом однозначно идентифицировать пользователя.
Для кафешек ( hotspot ) отлично подойдет такой набор:
  1. raspberry
  2. coova-chilli
  3. MySQL
  4. RADIUS
  5. Простейшие точки доступа

В coova есть встроенный DHCP, ограничитель трафика и простейший web-портал. Поддержки SMS авторизации 'из коробки', нет. Но дописывается элементарно под какое-нибудь http-API для отправки SMS.
Wi-Fi точки можно самые дешевые, весь функционал на сервере (raspberry). На точках прописываем единый SSID, разносим соседние точки по разным каналам и всё — 'бесшовный роуминг' готов :).
Актуальные версии всех основных браузеров (кроме Safari) уже поддерживают — caniuse fetch
Мне кажется пример с «fetch» с небольшим описанием был бы «изюминкой» вашей статьи. Про «fetch» всего одна статья на Хабре, в отличие от промисов.
1

Информация

В рейтинге
Не участвует
Откуда
Санкт-Петербург, Санкт-Петербург и область, Россия
Зарегистрирован
Активность