Часы без JavaScript

Часы без JavaScript

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

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

Поделиться
Отправить
36 комментариев
dinoel

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

dinoel

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

dinoel

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

Евгений Степанищев (bolknote.ru)

Комментарий для dinoel:

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

Евгений Степанищев (bolknote.ru)

Комментарий для dinoel:

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

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

dinoel

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

Максим Зотов (maxim-zotov.livejournal.com)

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

Максим Зотов (maxim-zotov.livejournal.com)

Комментарий для dinoel:

на сервер браузер ни время, ни таймзону не шлёт.

http://www.maxmind.com/app/locate_my_ip
Шлёт IP, знаем город — знаем таймзону.

Максим Зотов (maxim-zotov.livejournal.com)

Комментарий для Евгения Степанищева:

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

Но если вдруг куда-то выйдет в полезное, то нужно существенно уменьшать размер, записывая в отдельные кадры не полные картинки, а только разницу.

Евгений Степанищев (bolknote.ru)

Комментарий для 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)

Комментарий для maxim-zotov.livejournal.com:

знаем город — знаем таймзону.

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

Евгений Степанищев (bolknote.ru)

Комментарий для maxim-zotov.livejournal.com:

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

agonych (agonych.livejournal.com)

забавно

Максим Зотов (maxim-zotov.livejournal.com)

Комментарий для Евгения Степанищева:

А откуда там ограничение в 32

Да, торможу. Неправильно посчитал, потом еще неправильный эксперимент провел, должно быть 655 секунд (65535/100). А вот Gimp не позволяет ввести больше 65 секунд.

Не, это какая-то плохая ссылка

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

andr24-at-front.ru

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

SiMM (mr-simm.livejournal.com)

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

Евгений Степанищев (bolknote.ru)

Комментарий для mr-simm.livejournal.com:

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

Евгений Степанищев (bolknote.ru)

Комментарий для andr24-at-front.ru:

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

Ну я и не обещал, что это будет работать при помощи магии :)

drucha

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

Максим Зотов (maxim-zotov.livejournal.com)

Комментарий для drucha:

У меня стабильно стартует с 12:00

Агрессивный кеш. Опера, наверное? :)

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

Тима Люмин

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

dinoel

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

andr (andr.mp)

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

Евгений Степанищев (bolk.moikrug.ru)

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

Максим Зотов (maxim-zotov.livejournal.com)

Комментарий для dinoel:

а что делать если у меня кривая таймзона/отстают часы

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

dinoel

Комментарий для maxim-zotov.livejournal.com:

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

Евгений Степанищев (bolk.moikrug.ru)

Комментарий для dinoel:

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

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

Максим Зотов (maxim-zotov.livejournal.com)

Комментарий для dinoel:

прикол именно в том чтобы показать пользователю его время без использования яваскрипта

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

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

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

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

Евгений Степанищев (bolk.moikrug.ru)

Комментарий для maxim-zotov.livejournal.com:

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

Есть, конечно. Показывать в ЖЖ время постов и комментов в часовом поясе пользователя.

dinoel

Комментарий для maxim-zotov.livejournal.com:

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

Евгений Степанищев (bolknote.ru)

Комментарий для dinoel:

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

Евгений Степанищев (bolknote.ru)

Комментарий для dinoel:

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

Максим Зотов (maxim-zotov.livejournal.com)

Комментарий для dinoel:

ну посмотрим мы его таймзону по ип, но это не то.

не понял, почему не то. Мы узнаем точное местное время пользователя.

Задача: получить время которое установлено на компьютере пользователя

Если я могу узнать точное время пользователя, зачем мне знать какие-то фиктивные циферки?

dinoel

Если я могу узнать точное время пользователя, зачем мне знать какие-то фиктивные циферки?

А зачем рисовать часы без javascript? Just for fun! :)

Евгений Степанищев (bolknote.ru)

Комментарий для maxim-zotov.livejournal.com:

не понял, почему не то. Мы узнаем точное местное время пользователя.

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

Максим Зотов (maxim-zotov.livejournal.com)

Комментарий для Евгения Степанищева:

Не совсем.

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

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

Популярное