Часы без JavaScript

Часы без JavaScript
Сделал крошечные аналоговые часы, которые работают без JavaScript. Кто первый догадается как они работают, тот молодец.

Правда я их ускорил в 60 раз (а то очень уж скучно смотреть), поэтому это скорее секундомер, но стартуют они с текущего времени.
28 июня 2011 01:19

dinoel (инкогнито)
28 июня 2011, 02:00

Хе-хе, косяк в том что часы показывают серверное, а не клиентское время :) Дальше всё понятно =)

dinoel (инкогнито)
28 июня 2011, 02:01

Точнее, стартуют они с текущего сервернеого времени.

dinoel (инкогнито)
28 июня 2011, 02:05

А можно узнать, зачем такой изврат нужен? Видимо побочный продукт чего-то полезного?

bolk (bolknote.ru)
28 июня 2011, 02:05, ответ предназначен dinoel

Не, ну можно сделать старт и с клиентского. Правда без JS это на порядок сложнее. Вот я и не стал заморачиваться :)

bolk (bolknote.ru)
28 июня 2011, 02:08, ответ предназначен dinoel

А можно узнать, зачем такой изврат нужен? Видимо побочный продукт чего-то полезного?
Неа, этот изврат — побочный эффект того, что мне хочется развлечься :)

dinoel (инкогнито)
28 июня 2011, 02:22

=) а как с клиентского времени без js? Сразу как-то не придумывается. на сервер браузер ни время, ни таймзону не шлёт.

Максим Зотов (maxim-zotov.livejournal.com)
28 июня 2011, 02:22

На пути к счастью лежит ограничение на 32 секунды задержки между двумя кадрами, придется делать фиктивные кадры :)

Максим Зотов (maxim-zotov.livejournal.com)
28 июня 2011, 02:26, ответ предназначен dinoel

на сервер браузер ни время, ни таймзону не шлёт.
http://www.maxmind.com/app/locate_my_ip
Шлёт IP, знаем город - знаем таймзону.

Максим Зотов (maxim-zotov.livejournal.com)
28 июня 2011, 02:31, ответ предназначен bolk (bolknote.ru):

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

bolk (bolknote.ru)
28 июня 2011, 02:33, ответ предназначен Максим Зотов (maxim-zotov.livejournal.com):

На пути к счастью лежит ограничение на 32 секунды задержки между двумя кадрами, придется делать фиктивные кадры :)
А откуда там ограничение в 32? По описанию (http://www.w3.org/Graphics/GIF/spec-gif89a.txt) там одна сотая секунды и Delay Time в unsigned int. То есть максимальное значение будет 65535 / 100 = 65,5 секунд, нет?

Хотя, конечно, вопрос в том не забывают ли авторы декодеров указать unsigned в нужном месте…\

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

Максим Зотов (maxim-zotov.livejournal.com)
28 июня 2011, 02:33

знаем город - знаем таймзону.
Еще одну ссылку упустил на список таймзон по городам:
http://www.maxmind.com/timezone.txt

bolk (bolknote.ru)
28 июня 2011, 02:35, ответ предназначен Максим Зотов (maxim-zotov.livejournal.com):

Не, это какая-то плохая ссылка. Правильная вот: http://www.twinsun.com/tz/tz-link.htm

agonych (agonych.livejournal.com)
28 июня 2011, 02:43

забавно

Максим Зотов (maxim-zotov.livejournal.com)
28 июня 2011, 02:47, ответ предназначен bolk (bolknote.ru):

А откуда там ограничение в 32
Да, торможу. Неправильно посчитал, потом еще неправильный эксперимент провел, должно быть 655 секунд (65535/100). А вот Gimp не позволяет ввести больше 65 секунд.
Не, это какая-то плохая ссылка
В ней соответствия регионов по MaxMind обозначениям таймзон, а вот описания таймзон брать уже по "правильной" ссылке, но обычно их брать не нужно, если в операционке уже есть функция получения смещения по обозначению таймзоны.

andr24-at-front.ru (инкогнито)
28 июня 2011, 06:21

Это просто анимированный gif

SiMM (mr-simm.livejournal.com)
28 июня 2011, 07:29

Хорошо, что секундной стрелки нет (или в данном случае, скорее, чаосовй) - грузить 12 мегабайт ради часиков - не комильфо :)

bolk (bolknote.ru)
28 июня 2011, 09:07, ответ предназначен SiMM (mr-simm.livejournal.com):

Это всего лишь 12 страниц сайта «Хабрахабр» :) И всего в 12 раз медленнее :)

bolk (bolknote.ru)
28 июня 2011, 09:15, ответ предназначен andr24-at-front.ru

Это просто анимированный gif
Ну я и не обещал, что это будет работать при помощи магии :)

drucha (инкогнито)
28 июня 2011, 12:47

У меня стабильно стартует с 12:00. Сейчас 13:47, Москва :)

Максим Зотов (maxim-zotov.livejournal.com)
28 июня 2011, 13:31, ответ предназначен drucha

У меня стабильно стартует с 12:00
Агрессивный кеш. Опера, наверное? :)

Хотя в скрипте тоже не мешало бы явный запрет на кеширование выдавать (expires, no-cache).

Тима Люмин (инкогнито)
28 июня 2011, 13:45

Стартует с 12:00. Firefox.

dinoel (инкогнито)
28 июня 2011, 14:12

У меня теперь тоже с 12.00 кстати.
Получить таймзону по ип конечно может, а что делать если у меня кривая таймзона/отстают часы ?
Первое что приходит в голову для получения времени клиента на сервере без яваскрипта - какой нить хитрый изврат с куками и expires. ну типа, поставить 24 куки с expires от 0 до 24 , и посмотреть что придёт на сервер )

andr (andr.mp)
28 июня 2011, 14:22

Андроид, старт с 12.

Евгений Степанищев (bolk.moikrug.ru)
28 июня 2011, 14:23

Это была бага, поправил.

Максим Зотов (maxim-zotov.livejournal.com)
28 июня 2011, 15:24, ответ предназначен dinoel

а что делать если у меня кривая таймзона/отстают часы
Так это как раз хорошо, что на сайте пользователю показывается *правильное* время, независимо от кривости установок на компе пользователя. Разумеется, если предположить, что точность определения таймзоны по IP 100%, что, конечно, не так.

dinoel (инкогнито)
28 июня 2011, 17:15, ответ предназначен Максим Зотов (maxim-zotov.livejournal.com):

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

Евгений Степанищев (bolk.moikrug.ru)
28 июня 2011, 17:31, ответ предназначен dinoel

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

Хранить всю базу geoip и апдейтить её для обычной игрушки мне не хочется.

Максим Зотов (maxim-zotov.livejournal.com)
28 июня 2011, 18:46, ответ предназначен dinoel

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

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

Проблема в том, что времени, установленном на компьютере пользователя, доверять нельзя, времени, полученному из JavaScript. У пользователя на компе не то что часовой пояс может быть кривым, год может стоять другой.

Я сейчас не могу придумать какого-нибудь серьезного примера веб-приложения, когда требуется знать время пользователя. Серьезней часиков на страничке. Но допустим, что такие задачи есть :)

Евгений Степанищев (bolk.moikrug.ru)
28 июня 2011, 19:04, ответ предназначен Максим Зотов (maxim-zotov.livejournal.com):

Я сейчас не могу придумать какого-нибудь серьезного примера веб-приложения, когда требуется знать время пользователя. Серьезней часиков на страничке. Но допустим, что такие задачи есть :)
Есть, конечно. Показывать в ЖЖ время постов и комментов в часовом поясе пользователя.

dinoel (инкогнито)
28 июня 2011, 19:06, ответ предназначен Максим Зотов (maxim-zotov.livejournal.com):

:) Я думаю что если у пользователя время неправильное, то получить правильное время пользователя на сервере это что-то из области фантастики :) ну посмотрим мы его таймзону по ип, но это не то.
Задача: получить время которое установлено на компьютере пользователя (даже если оно неправильное) на сервере, без использования яваскрипта.

bolk (bolknote.ru)
28 июня 2011, 19:13, ответ предназначен dinoel

Первое, что приходит в голову, соединиться с IP, с которого пришёл запрос и попробовать найти там какой-нибудь time-сервис. Ненадёжно и человек может быть за прокси.

bolk (bolknote.ru)
28 июня 2011, 19:18, ответ предназначен dinoel

Под time-сервисом я имею ввиду NTP или Daytime (RFC 867), впрочем ещё есть несколько серверов времени, просто они встречаются реже.

Максим Зотов (maxim-zotov.livejournal.com)
28 июня 2011, 19:40, ответ предназначен dinoel

ну посмотрим мы его таймзону по ип, но это не то.
не понял, почему не то. Мы узнаем точное местное время пользователя.
Задача: получить время которое установлено на компьютере пользователя
Если я могу узнать точное время пользователя, зачем мне знать какие-то фиктивные циферки?

dinoel (инкогнито)
28 июня 2011, 19:46

Если я могу узнать точное время пользователя, зачем мне знать какие-то фиктивные циферки?
А зачем рисовать часы без javascript? Just for fun! :)

bolk (bolknote.ru)
28 июня 2011, 19:50, ответ предназначен Максим Зотов (maxim-zotov.livejournal.com):

не понял, почему не то. Мы узнаем точное местное время пользователя.
Не совсем. IP, бывает, не соответствуют фактическому расположению пользователя, когда провайдеры не очень-то аккуратны. Кроме этого, есть прокси. Так что точность относительная.

Максим Зотов (maxim-zotov.livejournal.com)
28 июня 2011, 20:04, ответ предназначен bolk (bolknote.ru):

Не совсем.
Да, само собой. Вопрос лишь в сравнении недостоверности времени из JavaScript и по IP. Вдруг получится так, что по IP процент ошибок меньше :)

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

Ваше имя или адрес блога (можно OpenID):

Текст вашего комментария, не HTML:

Кому бы вы хотели ответить (или кликните на его аватару)