All streams
Search
Write a publication
Pull to refresh
11
0
Дмитрий Разумихин @radium

Разработчик

Send message
Это видео будет в тему (разлом ледника в Гренландии).
www.youtube.com/watch?v=hC3VTgIPoGU

Масштабы просто поражают.
Можно дать название «Расставание».
Разные причины ошибок.

То о чём вы говорите, похоже, решено в этом фиксе: diff/1/src/date.h. И конкретно это — ошибка разработчиков браузера (в DaylightSavingsOffsetInMs нужно передавать локальное время, а они передали UTC).

Однако обратите внимание на функцию GetLocalOffsetFromOS — она берёт смещение локального времени у ОС.

virtual int GetLocalOffsetFromOS() {
double offset = base::OS::LocalTimeOffset(tz_cache_);
DCHECK(offset < kInvalidLocalOffsetInMs);
return static_cast(offset);
}

Т.е. хром использует базу часовых поясов операционки и это является причиной обсуждаемой проблемы с KB2998527.

<лирика>
Если у вас есть подвесной мост, то он может упасть по различным причинам — отвалится либо один конец, либо второй (или оба) — тут аналогичный случай.
</лирика>
Думаю, что некоторые реализации опираются на иные источники данных о часовых поясах (например на tz database). Но даже в этом случае не факт, что всё хорошо — как минимум текущая дата/время предоставляется операционкой. Принцип GIGO никто не отменял.
Хотя строго говоря, это не проблема браузера(-ов).
Браузеры опираются на API OS и просто транслируют все чудеса, которые были принесены кривым обновлением.
Только ли в хроме дело?
Буквально вчера в FireFox наблюдал занятный эффект в календаре на главной странице одного сайта — смещение дат на 1 день назад. Эффект действует до 7-го января включительно.
image
Загрузку серверов относительно максимума за прошлый день. Обновление данных один раз в секунду. (Displays server load relative to previous day’s maximum updating every second).
"предоставленные неудобства" — сервис, однако.
Несостыковочка:
mamba.ru: 70 % (Финам) + 31.34 % (Mail.ru) = 146% 101.34 %
Но если радиус уже максимален для наших условий, то и укладывать рядами нет необходимости.
Это сделано чтобы использовать GeoPointSerializer на манер хэлпера — через статические методы.

Можно написать так:
public abstract class SerializerBase<TSerializer, TItem> where TSerializer : SerializerBase<TSerializer, TItem>, new()
{
    public abstract void WriteAsBinary(TItem item, BinaryWriter writer);
    
    public void Save(TItem item, BinaryWriter writer)
    {
        WriteAsBinary(item, writer);
    }

    public void Save(IList<TItem> items, BinaryWriter writer)
    {
        writer.Write(items.Count);
        foreach (var item in items)
            WriteAsBinary(item, writer);
    }

    public void Save(string name, TItem item, BinaryWriter writer)
    {
        writer.Write(name);
        WriteAsBinary(item, writer);
    }
}

И использовать через создание объекта:
var gps = new GeoPointSerializer();
gps.Save("Mount Kilimanjaro", gp, writer);
gps.Save(region, writer);

Information

Rating
Does not participate
Location
Москва, Москва и Московская обл., Россия
Date of birth
Registered
Activity