Магазин — купонщики. Им два года сейчас уже. Не мой собственный, одна из работ. Я его писал с нуля, подключал сначала к Робокассе, потом часть методов оплаты (кредитки и эл. деньги) перевёл на Ассист — комиссия ниже, надёжность выше. Сейчас вот будем переводить на эти непонятные ДеньгиОнлайн. Типа, они работают уже с Выгода.ру и с WeClever. Более быстрый вывод (раз в 3 дня на р/с), более полная интеграция с магазином — у пользователя нет ощущения, что он ушёл с сайта, как в случае с Робокассой или Ассистом.
Сергей Соколов
@sergiks Автор вопроса, куратор тега Алгоритмы
Сейчас так и сделано, плюс зачатки паттерна «State Machine»: надо дождаться определённого ответа от нескольких сервисов, прежде, чем делать дальше что-то.
Callback'и не панацея например в случае, если пользователь инициировал загрузку картинки на сервис, а потом передумал, решив, что медленно, и решил исключить картинку из поста. Нажал удалить. А по коллбэку, через минуту, когда картинка, наконец, догрузилась в фоне, она таки вставляется в пост.
Можно напридумывать в Синглтоне Приложения кучу переменных для каждого из таких моментов, и в каждом коллбэке проверять, не накосячили ли другие асинхронные ответы? Но это такая каша будет!
Возьмём для примера grayscale изображение: только один канал со значениями от 0 до 255. Его «середина» 128.
Вы тыкнули серой пипеткой на картинке в точку со значением 100.
Выходная картинка пересчитается так, что ее бывшие 128 станут 100, а промежуточные значения также изменятся в соотв. с неким алгоритмом, чтобы равномерно заполнить искажённое «пространство» значений.
Это я назвал «мапится» от оператора map() в Processing.
Для Levels это линейная зависимость: две прямые, от чёрного до середины и второе плечо от середины до белого.
Для Curves это интерполяция кривой, может, Безье, по проприетарному неизвестному мне алгоритму. Придумайте свой, условий три: «средняя» точка может занимать любое положение в квадрате; ни одна точка кривой не вылезает за квадрат; в «средней» точке кривая не «ломается»: касательная входа = касательной выхода, но может, разные радиусы кривизны. Вполне может быть, что в математических терминах эта задача выглядит проще и решение проще: )