Информация
- В рейтинге
- Не участвует
- Откуда
- Санкт-Петербург, Санкт-Петербург и область, Россия
- Дата рождения
- Зарегистрирован
- Активность
Специализация
Десктоп разработчик, Бэкенд разработчик
Старший
C#
.NET
ASP.NET
WPF
SQL
Git
ООП
Английский язык
Разработка программного обеспечения
.NET Core
В некоторых фреймворках, например Angular, изменение модели на вид никак не влияет, фреймворк сам решает, когда перечитать модель, и такие оптимизации не понадобятся.
В примере 1, если одно действие пользователя вызовет добавление десятков строк в лог, а сама модель за лог не отвечает, задержка будет неплохим вариантом. Если лог генерируется в UI-потоке, можно поставить задержку в 1 мс, что по факту приведёт к 1 перерисовке сразу после завершения вычислений и освобождения UI-потока. Задержки по полсекунды нужны для других случаев, например, когда ввод текста пользователем вызывает отправку запросов на сервер (поисковые подсказки и т.д.).
В примере 2, результатом расчётов, видимо, является одно значение, вот пусть модель его и считает, а результат передаёт в модель вида, только когда он готов. Разделение на M и VM нужно, в том числе, и для этого.
Для целей статьи не очень подходит.
ymaps.js
main.js
Неудобством является необходимость всегда указывать загрузчик перед именем модуля, впрочем это можно обойти костылями с маппингом.
В итоге код выглядит как-то так. Пишу по памяти после недавних экспериментов, возможно, прямо так и не заработает, у меня цели были немного другие.
loader.js
asyncModule.js
Использовать можно так:
main.js
Или так, если упоминать загрузчик везде не хочется:
myModule.js
main.js
В университете всё уже было реализовано как полагается — с веб-интерфейсом, тонкими клиентами и слежением за шпаргалками. Оставалось только составлять таблицы соответствия варианты ответов -> итоговый балл, и угадывать из этих данных то, что не удалось ответить самостоятельно или найти в учебнике. По гуманитарным дисциплинам также был вариант скопировать учебник в буфер обмена и при возможности вставлять его в поля для ввода ответа и искать там. В технических учебниках формулы были картинками и толку от такого способа было гораздо меньше.
Если в библиотеке бага — стоит форкнуть её, поправить багу и отправить pull-request. Если нужна новая функциональность, с которой не согласен автор — напишите плагин или сделайте свой форк и разрешайте конфликты средствами системы контроля версий.
Если бага в сторонней библиотеке мешает продолжению разработки, а автор не спешит с выпуском новой версии — соберите свою версию пакета, дописав суффикс вроде -patch1 к полю Version. C NuGet Package Explorer это делается в пару кликов. Публиковать такой пакет необязательно, можно подключить локальную или сетевую папку как репозиторий.
В случае с CSS можно завести в проекте файлик вроде theme.patch.css и уже в нём переопределять желаемый кусочек, подключая этот файл на страницы после оригинала. С некоторыми JS-библиотеками тоже может прокатить.
Первые 2 решения нашлись за секунду, но уже на третей задаче потребовалось более 4 часов, чтобы убедиться, что решений короче 6 символов у неё нет. Наверняка можно оптимизировать алгоритм и перебирать 6- или даже 7-символьные решения за то же время, но решить задачу это не поможет.
Можно спать спокойно, в ближайшие несколько лет нас компьютерами не заменят :)
Если кому-то интересно, готовый скрипт на C#, реализованный в виде LINQ-выражения, можно посмотреть здесь. Писалось в LINQPad, требует HtmlAgilityPack и Newtonsoft.Json.
В некоторых случаях можно получить изображение без объектива, например, прислонив матрицу к дисплею (пиксели будут размытыми из-за зазора от защитного стекла) или послав на неё узконаправленный пучок (мы так на лабах форму и координаты лазерного луча определяли).
Вообще, такое поведение блока питания чем-то напоминает старый раздолбаный автобус, где всё ходит ходуном при остановке, но после начала движения тряска прекращается.
Вообще видов аберраций довольно много, поэтому реальные объективы содержат множество линз (минимум 3), чтобы всё это компенсировать.
Одну сферическую линзу в вакууме можно рассчитать и без всякого софта по простой формуле, но ещё одна особенность в том, что технология производства предполагает использование стандартных радиусов кривизны, поэтому и фокус получается неточным, и часто проще изменить другие части системы (в данном случае можно допустить, что изображение немного вылезет за границы матрицы), чем изготавливать сильно нестандартные линзы.
Кстати, когда я в ИТМО учился, у нас Zemax не преподавали, все сидели в DOS-приложении собственного производства ОПАЛ.
Приходится по-прежнему 2.4 ГГц с 15 соседями делить.