Как стать автором
Обновить

Хабр, не делай больно писателям

Время на прочтение2 мин
Количество просмотров5.8K

Хабр! Добро пожаловать снова. 

Сегодня я расскажу о том как писатели Хабра теряют свои статьи из за ошибок в работе редактора Хабра. Если вы хоть раз сталкивались с тем чтобы опубликовать накопленные знания то вам должна быть известна эта проблема. Мне бы очень хотелось чтобы разработчики Habr и Chromium услышали меня и исправили эту проблему как можно скорее.

localStorage

Эта проблема существует с 2018 года именно тогда я впервые публиковался на Хабре и точно помню что все написаное как тогда так и сейчас хранилось в localStorage — локальное хранилище данных в браузере в виде объекта содержащего строки. Очень просто очищается внезапным сбоем в системе, также неправильным закрытием браузера или любым другим непредсказуемым событием. В целом localStorage это классный инструмент, для хранения мелких и незначительных данных в браузере.

Я считаю что это не правильно, нельзя так разнузданно хранить данные в которые вложены часы. Редактирование и организация которых может продолжаться ни одну неделю или месяц. Бывает так что ты возвращаешься к написанию через несколько дней или недель чтобы дополнить статью, а ее просто нет, ее нельзя восстановить из автосохранения. Каждый раз это лотерея и я лично уже несколько раз попался на эту историю, честно сказать я даже сохранял localStorage в JSON файл чтобы вдруг что-то не потерять и восстановить через консоль браузера, а сейчас и вовсе пишу эту статью в заметках но это не так удобно, потому что потом мне придется пойти еще на Хабр и там все отредактировать и расставить по своим местам. 

P.S. Буквально неделю я готовил вторую часть статьи о разработке и публикации расширения для браузера, решил дописать её этим вечером, не дописал.

P.P.S. В комментариях поднялась бурная дискурсия на тему работы localStorage и самого редактора, пришлось придумать как воссоздать баг по крайней мере в Mac OS он получается таким образом:

  1. Заходим в редактор пишем что-то

  2. Переходим в какой-нибудь раздел

  3. Возвращаемся в редактор

  4. Восстанавливаем из автосохранения

  5. Принудительно закрываем браузер (я ничего не трогаю в браузере)

  6. Открываем снова

  7. Переходим в редактор

  8. Автосохранения нет

  9. ???

Принудительно закрытый браузер — это имитация любой проблемы с операционной системой, отключения электричества, синий экран, ошибка ядра. То есть можем точно подтвердить что если во время редактирования статьи у нас что-то случилось с браузером скорее всего мы ее потеряем. Обычно когда я выключаю компьютер, у меня все программы закрывают сами, в том числе и браузер где может быть открыта статья.

P.P.P.S. Пришлось провести дополнительное расследование, чтобы понять в чем истинная проблема, сразу скажу что дело не в localStorage и не в периодичности обновления localStorage, а в способе хранения, дело в том что после восстановления статьи из автосохранения ее там больше нет, она вычищается, а по-хорошему её нужно не удалять, а заменять новыми данными если они есть.

С помощью не хитрого кода можно отследить что редактор обновляет localStorage каждый раз после изменения через 3 секунды.

Код
let oldLS = JSON.stringify(localStorage)

setInterval(() => {
 const newLS = JSON.stringify(localStorage) 
 if (newLS !== oldLS) {
   oldLS = JSON.stringify(localStorage)
   console.log('update localStorage')
 }
})

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

Хабр, не удаляй автосохранения из localStorage после восстановления статьи.

Теги:
Хабы:
Всего голосов 35: ↑31 и ↓4+37
Комментарии25

Публикации

Истории

Работа

Ближайшие события