172 похожих чатов

Ребят, у меня есть таймер на 2 дня, в течение

2 дня действует 40% скидка, когда таймер искает, то появляется новый таймер на 2 дня со скидкой 60%. Я этот таймер реализовал через клиента, тоесть, клиент может поменять в настройках дату, допустим поставит 7 сентября, и у него сразу будет 60%(это баг), как можно обойти это?

3 ответов

10 просмотров

ну прям сходу (глупо но как вариант) сходи в гугл спроси: «какой сегодня день»

Aidar- Автор вопроса

я прошу варианты для решения этого бага

Aidar
я прошу варианты для решения этого бага

Как уже написали, вернее способа, нежели через интернет, скажем через NTP удостовериться в пройденном промежутке времени нет, но можно что-то придумать с оговорками: - Wall time(NSDate like) у нас зависят от текущих настроек и не подходят; - Monotonic time собственно монотонно увеличивают некий счётчик и не зависят от настроек, но не все из них могут делать это во время сна, а айфон любит поспать. Из монотонных у нас есть: - mach_absolute_time/CACurrentMediaTime/ProcessInfo.processInfo.systemUptime не подходят, ибо они не считают во время сна; - kern.boottime дают отсчёт от загрузки и считают во время сна, нам частично подходят, но они к сожалению выдают значение отностильно текущих настроек; Но их всего этого добра есть clock_gettime c флагом CLOCK_MONOTONIC, которые умеют считать во сне, как и kern.boottime, но при этом независят от текущих настроек. Единственный минус clock_gettime это то, что отсчёт сбросится после перезагрузки устройства. То есть вариант, когда юзер выключил устройство и прождал не отсчитываются. Но с этим наверное можно смириться. Осталось узнать факт перезагрузки устройства. Это можно сделать через семафор sem_open c флагом O_EXCL который живёт ровно до перезагрузки. Итого имеем: clock_gettime + CLOCK_MONOTONIC sem_open + O_EXCL Большая часть из этого системный уровень, нужно ли оно тебе я хз )

Похожие вопросы

Обсуждают сегодня

Какой-то там пердун в 90-х решил, что есть какая-то разная типизация. Кого вообще это волнует?
КТ315
49
void terminal_scroll() { memmove(terminal_buffer, terminal_buffer + VGA_WIDTH, buffer_size - VGA_WIDTH); memset(terminal_buffer + buffer_size - VGA_WIDTH, 0, VGA_WIDTH); ...
Егор
47
Всем привет! Подскажите, пожалуйста, в чем ошибка? Настраиваю подключение к MySQL. Либы лежат рядом с exe. Все как по "учебнику"
Евгений
16
А можете как-то проверить меня по знаниям по ассемблеру?
A A
132
Здравствуйте! У меня появилась возможность купить книгу "Изучай Haskell во имя добра!". Но я где-то слышал, что эта книга устарела. Насколько это правда??
E
22
Здравствуйте! Я вот на stepic решаю задачи на хаскеле https://stepik.org/lesson/8443/step/8?unit=1578 мой код import Data.List (isInfixOf) removing :: String -> [String] ->...
E
10
Камрады, кто тесно работал с vtv, хотел уточнить. Ширина column задаётся жёстко на этапе создания дерева или можно в рантайме ее менять программно (не мышкой)?
Ed Doc
10
да ладно ... что там неочевидного ? глянуть в исх-ки датасета и/или кверика чтобы понять в каком месте и как выполняется обращения к св-вам blablaSQL - минутное дело, даже е...
Сергей
7
Здесь для arm кто-нибудь кодит ?
Nothing
52
Всем привет, у меня есть сервер принимающий входящие HTTP подключения, как проверить, что подключение было через прокси или нет, есть какие то поля в заголовках по которым мо...
Кибер Бомж
8
Карта сайта