+22620.23
Рейтинг
61736.74
Сила

Браслет Phyode W/Me. Персональный анализатор жизни

Продолжая знакомить вас с интересными гаджетами, сегодня я добрался до устройства W/Me. В прошлый раз был браслет Polar Loop, который выполнял довольно стандартные функции: шагомер, пульсометр, подсчёт потраченных калорий. В W/ME всё не так, поэтому его и нельзя назвать фитнес-трекером в обычном понимании этого слова. Скажем так, самое обычное из того, что он умеет — это измерение пульса. А вот остальных функций я в браслетах вообще не встречал. Ну что ж, начинаем разбираться?




Читать дальше →

1 января 1904, 1970, Youtube, международный конфликт и кривые руки

К сожалению, давно пропали топики-ссылки, но иногда бывают крайне занимательные вещи из первых рук. Рекомендую пост Анатолия Воробея (работает разработчиком в «Гугле»).

В видеоформате MP4 (стандарт MPEG-4) есть возможность записать «время создания» любого потока данных, с помощью специальной метки. Значение этой метки в стандарте: количество секунд, прошедших с 1 января 1904 года, или так называемое «время по эпохе макинтоша», потому что маки первыми стали использовать такой отсчет времени. Меж тем, в современных серверах намного проще иметь дело с «временем по эпохе Юникса», а именно количеством секунд, прошедших с 1 января 1970 года. В результате этого, во множестве программ, которые работают на Линуксе или других юниксовских операционных системах, есть кусок кода, который выглядит примерно так:
  • получить «время сейчас по юниксу»;
  • добавить разницу между временем по юниксу и временем по макинтошу — это некая константа;
  • полученное «время сейчас по макинтошу» записать в файл MP4, который мы создаем.
Чему равна константа «разница между временем по юниксу и временем по макинтошу»? Она равна в точности числу секунд, прошедших между 1 января 1904 и 1 января 1970. Это 66 лет, из которых 17 были високосными (проверьте, если не доверяете мне). Всего дней получается: 66 * 365 + 17 = 24 107, а секунд, учитывая 86 400 секунд в сутках: 24 107 * 86 400 = 2 082 844 800. Это правильное значение константы.

Но есть маленькая крохотная незаметная проблемка. Часть стандарта MPEG-4 — исходники библиотек, которые умеют читать и писать mp4-файлы, так reference software на C++, которым все могут пользоваться, чтобы позаимствовать или сравнить со своим кодом. Полное название этой части стандарта: ISO/IEC 14496-5. Если вам интересно, вы можете скачать эту часть стандарта бесплатно с официального сайта. И если вы посмотрите на исходники, то увидите, что там используется другое значение этой константы, а именно 2 082 758 400. Это ровно на 86 400 секунд, то есть на одни сутки, меньше правильного значения.

Как случилось, что создатели MPEG-4 неправильно посчитали разницу между двумя датами? Может, кто-то вручную считал високосные годы и ошибся? Не знаю. Так или иначе, неправильное значение из-за его присутствия в стандарте попало во множество библиотек для чтения и записи видеоформатов. Постепенно в последние годы правильное значение начинает его сменять; если вы поищете в гугле оба числа, то увидите несколько точных описаний проблемы в исходниках нескольких проектов: «Стандарт предлагает использовать 2 082 758 400, но правильное значение 2 082 844 800». В других проектах правильное значение стоит просто потому, что они сами посчитали, исходя из определений эпох, а не пользовались исходниками из стандарта.

Если в библиотеке, которая создает для вас MP4-файл, записано неправильное значение, то что произойдет, когда она захочет записать время «сейчас»? Она возьмет правильное число секунд по юниксу, добавит константу на сутки меньше, чем надо, и получит тем самым число секунд, согласно эпохе макинтоша, которое соответствует времени на сутки раньше. Я послал описание проблемы и решения разработчикам Ютьюба, и надеюсь, что вскоре этот баг исчезнет.

Все в этом мире взаимосвязано. Кривые руки авторов стандарта MPEG-4 приводят к конспиративным теориям в украинском конфликте. Так и живем.

Источник: habrahabr.ru/post/230571/

Книга про Венеру

(ДИСКЛЕЙМЕР: Данный пост не является агитацией на сбор средств. Цель поста — вдохновить читателей на создание собственных краудсорсинговых проектов)

Можно надеяться, что в этом благородном, исполинском деле будет все более расширяться международное сотрудничество
ученых, проникнутых желанием трудиться на благо всего человечества, во имя мира и прогресса. К. Сергеев (псевдоним Сергея Королева)



Читать дальше →