Перейти к содержимому


Фотография

API для определения времени в lua

API Время Lua Интернет

  • Авторизуйтесь для ответа в теме
Сообщений в теме: 24

#1 Оффлайн   Laine_prikol

Laine_prikol
  • Пользователи
  • Сообщений: 133
  • Уровень сигнала: 0,54%
  • В игре: 4 час. 6 мин.

Награды

           

Отправлено 20 Декабрь 2017 - 13:40

Где можно найти сайт который при отправке запроса вернёт реальное московское время? В формате: часы:минуты


Сообщение отредактировал Laine_prikol: 20 Декабрь 2017 - 21:19


#2 Оффлайн   Doob

Doob
  • Пользователи
  • Сообщений: 814
  • Уровень сигнала: 19,35%
  • В игре: 146 час. 10 мин.

Награды

                                   

Отправлено 20 Декабрь 2017 - 15:45

В интернете.
  • NEO это нравится

#3 Оффлайн   NEO

NEO
  • Пользователи
  • Сообщений: 1 748
  • Уровень сигнала: 4,82%
  • В игре: 36 час. 25 мин.
  • ГородСолнце

Награды

   3                        

Отправлено 20 Декабрь 2017 - 16:57

Где можно найти сайт который при отправке запроса вернёт реальное московское время?

тебя в ирк зовут.


  • FelixBanan это нравится

#4 Оффлайн   Laine_prikol

Laine_prikol
  • Автор темы
  • Пользователи
  • Сообщений: 133
  • Уровень сигнала: 0,54%
  • В игре: 4 час. 6 мин.

Награды

           

Отправлено 20 Декабрь 2017 - 20:56

В интернете.

Где, гуглил там хрень всякая либо без апи, есть 1 но он платный



#5 Оффлайн   Laine_prikol

Laine_prikol
  • Автор темы
  • Пользователи
  • Сообщений: 133
  • Уровень сигнала: 0,54%
  • В игре: 4 час. 6 мин.

Награды

           

Отправлено 20 Декабрь 2017 - 21:20

тебя в ирк зовут.

И как это относится к вопросу выше?


Сообщение отредактировал Laine_prikol: 20 Декабрь 2017 - 21:20


#6 Оффлайн   NEO

NEO
  • Пользователи
  • Сообщений: 1 748
  • Уровень сигнала: 4,82%
  • В игре: 36 час. 25 мин.
  • ГородСолнце

Награды

   3                        

Отправлено 20 Декабрь 2017 - 21:39

И как это относится к вопросу выше?

тебе обещали дать ответ, но только в ирк.



#7 Оффлайн   Totoro

Totoro
  • Хранители Кода
  • Сообщений: 1 735
  • Уровень сигнала: 0,29%
  • В игре: 2 час. 13 мин.

Награды

                                      

Отправлено 21 Декабрь 2017 - 01:44

Есть вот такая апишка: https://www.amdoren.com/time-zone-api/

Написано что бесплатная, но надо регаться чтобы ключ получить. Не пробовал сам.



#8 Оффлайн   Doob

Doob
  • Пользователи
  • Сообщений: 814
  • Уровень сигнала: 19,35%
  • В игре: 146 час. 10 мин.

Награды

                                   

Отправлено 21 Декабрь 2017 - 05:51

Ну да, если не искать, то много не найдешь. Даже на форуме.


  • Totoro, Fingercomp и eu_tomat это нравится

#9 Оффлайн   ECS

ECS
  • Гуру
  • Сообщений: 203
  • Уровень сигнала: 0,55%
  • В игре: 4 час. 10 мин.
  • ГородСанкт-Петербург

Награды

   10                  

Отправлено 21 Декабрь 2017 - 19:10

А чего париться-то, API всякие искать... гуглим что-то наподобие "unix time", выбираем первый попавшийся сайт (к примеру, https://www.unixtimestamp.com/), отсылаем обычный запрос на получение контента веб-страницы, парсим результат через регулярку и наслаждаемся:

-- Получаем содержимое веб-страницы через дефолтную internet-либу
local data = ""
for chunk in require("internet").request("https://www.unixtimestamp.com/") do
  data = data .. chunk
end

-- Извлекаем время и корректируем часовой пояс
local timezone = 3
local timestamp = tonumber(data:match("(%d+)[^%d]+seconds since Jan")) + 3600 * timezone
print(os.date("%c", timestamp))

Сообщение отредактировал ECS: 21 Декабрь 2017 - 19:19


#10 Оффлайн   NEO

NEO
  • Пользователи
  • Сообщений: 1 748
  • Уровень сигнала: 4,82%
  • В игре: 36 час. 25 мин.
  • ГородСолнце

Награды

   3                        

Отправлено 21 Декабрь 2017 - 19:46

 

А чего париться-то, API всякие искать... гуглим что-то наподобие "unix time", выбираем первый попавшийся сайт (к примеру, https://www.unixtimestamp.com/), отсылаем обычный запрос на получение контента веб-страницы, парсим результат через регулярку и наслаждаемся:

-- Получаем содержимое веб-страницы через дефолтную internet-либу
local data = ""
for chunk in require("internet").request("https://www.unixtimestamp.com/") do
  data = data .. chunk
end

-- Извлекаем время и корректируем часовой пояс
local timezone = 3
local timestamp = tonumber(data:match("(%d+)[^%d]+seconds since Jan")) + 3600 * timezone
print(os.date("%c", timestamp))

А если нужно постоянно получать время? Парсинг не подойдёт.



#11 Оффлайн   Doob

Doob
  • Пользователи
  • Сообщений: 814
  • Уровень сигнала: 19,35%
  • В игре: 146 час. 10 мин.

Награды

                                   

Отправлено 21 Декабрь 2017 - 19:51

Отнять аптайм компутера при запуске проги и добавлять его каждый раз перед выводом. Собственно, по ссылке оно и есть.


  • ECS это нравится

#12 Оффлайн   ivan52945

ivan52945
  • Пользователи
  • Сообщений: 150
  • Уровень сигнала: 61,4%
  • В игре: 463 час. 53 мин.

Награды

                       

Отправлено 22 Декабрь 2017 - 01:21

Отнять аптайм компутера при запуске проги и добавлять его каждый раз перед выводом. Собственно, по ссылке оно и есть.

а там периодически корректировать ошибки не надо при таком раскладе?
или всё норм



#13 Онлайн   eu_tomat

eu_tomat
  • Хранители Кода
  • Сообщений: 880
  • Уровень сигнала: 6,36%
  • В игре: 48 час. 1 мин.

Награды

                          

Отправлено 22 Декабрь 2017 - 01:48

а там периодически корректировать ошибки не надо при таком раскладе? или всё норм

Надо корректировать после каждого рестарта сервера. Как отследить этот момент, не ясно, поэтому надо корректировать периодически. А вот, как часто надо корректировать, зависит от условий задачи. Слишком частые обращения к сервису чреваты баном по IP, а редкие коррекции лишают такие часы смысла. Заходишь такой после рестарта сервера, а часы отстают на минуту-две. Зачем они тогда вообще нужны? Да и вообще, хороший вопрос, зачем наблюдать реальное время именно в Майнкрафте, когда есть более удобные инструменты. Сделать более-менее правдоподобные часики реально, но админ сервера не будет рад использованным методам.

#14 Оффлайн   ivan52945

ivan52945
  • Пользователи
  • Сообщений: 150
  • Уровень сигнала: 61,4%
  • В игре: 463 час. 53 мин.

Награды

                       

Отправлено 22 Декабрь 2017 - 16:19

Надо корректировать после каждого рестарта сервера. Как отследить этот момент, не ясно, поэтому надо корректировать периодически. А вот, как часто надо корректировать, зависит от условий задачи. Слишком частые обращения к сервису чреваты баном по IP, а редкие коррекции лишают такие часы смысла. Заходишь такой после рестарта сервера, а часы отстают на минуту-две. Зачем они тогда вообще нужны? Да и вообще, хороший вопрос, зачем наблюдать реальное время именно в Майнкрафте, когда есть более удобные инструменты. Сделать более-менее правдоподобные часики реально, но админ сервера не будет рад использованным методам.

компуктеркрафт мог бы это отследить, ибо там проги зависят от релода сервака



#15 Онлайн   eu_tomat

eu_tomat
  • Хранители Кода
  • Сообщений: 880
  • Уровень сигнала: 6,36%
  • В игре: 48 час. 1 мин.

Награды

                          

Отправлено 22 Декабрь 2017 - 18:38

компуктеркрафт мог бы это отследить, ибо там проги зависят от релода сервака

Какова ирония! То, что всегда считалось недостатком ComputerCraft, в определённой ситуации стало достоинством.
  • Quant и mrlobaker это нравится

#16 Оффлайн   Totoro

Totoro
  • Хранители Кода
  • Сообщений: 1 735
  • Уровень сигнала: 0,29%
  • В игре: 2 час. 13 мин.

Награды

                                      

Отправлено 22 Декабрь 2017 - 21:11

Какова ирония! То, что всегда считалось недостатком ComputerCraft, в определённой ситуации стало достоинством.

 

Ну, у всего на этом свете есть две стороны. =)



#17 Оффлайн   Asior

Asior
  • Пользователи
  • Сообщений: 147
  • Уровень сигнала: 67,68%
  • В игре: 511 час. 16 мин.

Награды

                          

Отправлено 23 Декабрь 2017 - 00:11

Уже не помню где и как я находил нормальную страницу интернет откуда можно было брать время. Почитай код http://computercraft...binarnye-chasy/ там есть одна из ссылок что возвращает время.

#18 Оффлайн   HixOff

HixOff
  • Пользователи
  • Сообщений: 162
  • Уровень сигнала: 0%
  • В игре: 0 час. 0 мин.

Награды

     

Отправлено 06 Январь 2018 - 12:24

http://computercraft...ealnogo-vremeni
а вот этого мало? в крайнем случае, если нет файловой системы(например, какой-нибудь микроконтроллер), можно поставить ПК, который будет тебе это время по беспроводной сети пересылать



#19 Онлайн   eu_tomat

eu_tomat
  • Хранители Кода
  • Сообщений: 880
  • Уровень сигнала: 6,36%
  • В игре: 48 час. 1 мин.

Награды

                          

Отправлено 06 Январь 2018 - 13:17

http://computercraft...ealnogo-vremeni
а вот этого мало? в крайнем случае, если нет файловой системы(например, какой-нибудь микроконтроллер), можно поставить ПК, который будет тебе это время по беспроводной сети пересылать

Маловато. Во-первых, возвращается локальное время сервера, зависящее исключительно от предпочтений админа. Во-вторых, каждую секунду дёргать файловую систему ради получения точного времени — тоже сомнительная идея, которая при массовом использовании вряд ли будет одобрена админом.

Самый правильный способ, на мой взгляд, как уже предложил ivan52945, использовать ComputerCraft для отслеживания рестарта сервера. А время корректировать сразу после рестрата и каждые 15 минут, например.

Интересно было бы рассмотреть возможность использования каких-либо схем на красной пыли, но единственное, что я смог сразу вспомнить — это сенсор робота-рыбака, сбивающийся при выгрузке чанка. Вряд ли кто-то захочет использовать такую схему в часах.

Возможно, кто-то найдёт более удачный способ отслеживания момента перезагрузки чанка без использования ComputerCraft.

#20 Оффлайн   Alex

Alex
  • Администраторы
  • Сообщений: 3 743
  • Уровень сигнала: 52%
  • В игре: 392 час. 51 мин.

Награды

                 

Отправлено 23 Январь 2018 - 12:23

Маловато. Во-первых, возвращается локальное время сервера, зависящее исключительно от предпочтений админа. Во-вторых, каждую секунду дёргать файловую систему ради получения точного времени — тоже сомнительная идея, которая при массовом использовании вряд ли будет одобрена админом.

 

ну это сильно драматизированный взгляд на суть вопроса. Не все так там страшно, как оно кажется. Нет никаких предпочтений админов :)

Я никогда не видел хоста и тем более админа, который бы установил время и календарь майя  на своем сервере, или вообще от балды дату там засетил. Даже если это вдруг и так, то, на минуточку, где гарантия, что на сайтах точного времени админ тамошний без предпочтений))) Это первое.

Второе. Как правило, в ОС включена опция

    # Whether persistent file systems such as disk drives should be
    # 'buffered', and only written to disk when the world is saved. This
    # applies to all hard drives. The advantage of having this enabled is that
    # data will never go 'out of sync' with the computer's state if the game
    # crashes. The price is slightly higher memory consumption, since all
    # loaded files have to be kept in memory (loaded as in when the hard drive
    # is in a computer).
    
    bufferChanges=true

а это значит, что вся файловая система забуферизирована в ОЗУ и никакого лишнего "дергания" жесткого диска хоста не происходит. ОС глобально сохраняет изменения на диск не чаще, чем раз в 30 сек, а может и реже. Так что можно смело отслеживать fs.lastModified

 

Ну и самое главное. В детском майнкрафте сложно представить ситуацию, где требуется супер точное астрономическое время вплоть до иоктосекунд, а также высокая частота его получения. Это же не полет Вояджера какой-то. Что там в майне? Как правило, нужно залогинить ивент, когда именно Mishutka12 купил алмазики в админшопе за UU, чтобы отчетность была, или, например, поймайть точное время и дату, когда Квертик нарисовался в радиусе радаров и его засекли сенсоры охранной системы, когда он шастал возле чужого домика и вынюхивал, что можно грифануть, или, например, время записать, когда 2-й энергоблок реактора выработал урановые стержни и стопнулся. Вот тогда-то и пригодится получение времени. Вот и все. Даже если делать детские ссаные бесполезные часики на каком-то экране, как многие любят это делать в своих домиках, то не обязательно там получать и принтить секунды, минут, я думаю, будет достаточно, но можно и ежесекундно проверять, хоть это и дичь, конечно :)

 

Так что, скорее всего, способ получения времени из даты модификации файла - самый менее ресурсозатратный, мгновенный и безотказный, уж тем более в случае, если кому-то вдруг взбрендит в голову слать ежесекундно get запросы куда-то в какую-то удаленную попку или что-то на редстоуне городить)


  • eu_tomat, ECS и Litvinov это нравится

#21 Оффлайн   Totoro

Totoro
  • Хранители Кода
  • Сообщений: 1 735
  • Уровень сигнала: 0,29%
  • В игре: 2 час. 13 мин.

Награды

                                      

Отправлено 23 Январь 2018 - 20:49

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

 

Мне кажется, для часиков там достаточно при старте (и потом где-нибудь раз в час) синхронизировать состояние. А потом просто слипами отсчитывать секунды / минуты.
Минимум нагрузки, приемлемая точность.



#22 Онлайн   eu_tomat

eu_tomat
  • Хранители Кода
  • Сообщений: 880
  • Уровень сигнала: 6,36%
  • В игре: 48 час. 1 мин.

Награды

                          

Отправлено 24 Январь 2018 - 09:12

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

Представить сложно, но ТС хочет получить (цитата) "реальное московское время", не уточнив, правда, насколько оно должно быть близким к реальному.

Одного игрока устроит погрешность и в одну-две минуты, а какой-то маньяк будет пытаться довести ее до хотя бы 200ms. Это первый нюанс, создающий почву для дискуссии о методах получения времени и создаваемой при этом нагрузки.

Второй нюанс в том, что игровые сервера бывают разные, и на каких-то из них ход часов может быть пущен на самотек, вынуждая игроков обращаться к внешним серверам и писать своё подобие ntpd. Если при этом серверное время еще иногда и корректируется рывками, то тут остаётся лишь постоянно долбить внешние сервера, пока те не забанят. Или придется снизить требования точности.
 

Мне кажется, для часиков там достаточно при старте (и потом где-нибудь раз в час) синхронизировать состояние. А потом просто слипами отсчитывать секунды / минуты. Минимум нагрузки, приемлемая точность.

Вычисление времени через разницу computer.uptimeочень эффективно, но, к сожалению, чувствительно к рестартам игрового сервера и выгрузке чанков. Время от времени придётся сверяться с другими источниками. Интервал сверки определяется точностью, на которую игрок нацелен.
 

вся файловая система забуферизирована в ОЗУ и никакого лишнего "дергания" жесткого диска хоста не происходит. ОС глобально сохраняет изменения на диск не чаще, чем раз в 30 сек, а может и реже.

Интересная информация. Надо будет как-нибудь стресс-тест прогнать.
 

Так что, скорее всего, способ получения времени из даты модификации файла - самый менее ресурсозатратный, мгновенный и безотказный, уж тем более в случае, если кому-то вдруг взбрендит в голову слать ежесекундно get запросы куда-то в какую-то удаленную попку или что-то на редстоуне городить)

Согласен, трудно найти что-то лучше. Для логирования событий на сервере Майнкрафта этот способ вне конкуренции. А если на сервере уже есть вменяемая синхронизация времени, то и для остальных целей тоже – лучший способ. Но, как говорилось, дьявол кроется в деталях. Игроки и сервера бывают разные. Рядовой игрок Майнкрафта не знает, какой способ синхронизации часов сервера выбрал админ, как сильно часы будут отставать или убегать и какие рывки они совершат в будущем. Как и админ не знает заранее, насколько часто любителей точного времени будут дёргать файловую систему, и сколько их окажется на сервере в одном интервале времени.

#23 Оффлайн   Laine_prikol

Laine_prikol
  • Автор темы
  • Пользователи
  • Сообщений: 133
  • Уровень сигнала: 0,54%
  • В игре: 4 час. 6 мин.

Награды

           

Отправлено 24 Январь 2018 - 10:49

Чё вы так все, я вообще не для OpenComputers. Я просто хочу сделать луа скрипт который бы синкал время мск, и выставлял дату в винде



#24 Онлайн   eu_tomat

eu_tomat
  • Хранители Кода
  • Сообщений: 880
  • Уровень сигнала: 6,36%
  • В игре: 48 час. 1 мин.

Награды

                          

Отправлено 24 Январь 2018 - 10:58

Чё вы так все, я вообще не для OpenComputers. Я просто хочу сделать луа скрипт который бы синкал время мск, и выставлял дату в винде

Пфхахаха! Действительно, а что это мы. Нам лишь бы про Lua, да OpenComputers флудить. Да еще и про ComputerCraft иногда.

Для выставления времени в винде не нужен скрипт. Находишь в интернете какой-нибудь NTP-сервер, да прописываешь его в настройках. Да и наверняка какой-нибудь time.windows.com уже прописан, осталось только галочку поставить для синхронизации.

#25 Оффлайн   ivan52945

ivan52945
  • Пользователи
  • Сообщений: 150
  • Уровень сигнала: 61,4%
  • В игре: 463 час. 53 мин.

Награды

                       

Отправлено 24 Январь 2018 - 12:32

Пфхахаха! Действительно, а что это мы. Нам лишь бы про Lua, да OpenComputers флудить. Да еще и про ComputerCraft иногда.

Для выставления времени в винде не нужен скрипт. Находишь в интернете какой-нибудь NTP-сервер, да прописываешь его в настройках. Да и наверняка какой-нибудь time.windows.com уже прописан, осталось только галочку поставить для синхронизации.

аля время сети и дата сети(если 10-ка)







Темы с аналогичным тегами API, Время, Lua, Интернет

Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных