Pull to refresh
72
0
Владимир Клепов @thoughtspile

Фронтендер

Send message

Когда я приступал к статье, у меня было смутное воспоминание что в приватном режиме сафари localStorage отключен, но к счастью эту фичу убрали еще в сафари 11

Кейс с явным полным отключением localStorage точно нишевый уровня "пользователь отключил js" и покрывается фолбеком аналогично SSR (единственное отличие — в firefox при этом localStorage === null, а не is not defined)

Спасибо, хороший пойнт!

Вряд ли стоит об этом сильно переживать, там очень хорошая поддержка https://caniuse.com/?search=localstorage

Зависит от кейса, но по дефолту скорее нет чем да — там замороченное (и довольно мерзкое) асинхронное апи + технология менее популярная. Для offline-first приложения попробовать стоит, для настроек / баннеров / кеша лучше не надо.

Миграцией я все таки называю преобразование старых форматов в свежий с сохранением данных (возможно, формально я не прав). Так я один раз упарывался, не понравилось, тк нарастает большая борода конвертаций которые умеют кушать все-все исторические форматы.

Раз мы всегда умеем работать с кейсом "в сторадже пусто", то проще свести кейс "кривые данные" к нему небольшой валидацией. Если это попадает в ваш концепт миграции, то можем называть это так =)

Если подойти к вопросу серьезно, то дело уже попахивает миграциями. Но я все таки пришел к выводу что если состояние стораджа нельзя безболезненно выкинуть и пересоздать заново, то в 95% кейсов мы выбрали неправильный инструмент (за исключением всякой offline-first экзотики)

Ну или хотя бы среднего и полезного) Спасибо!

Хмм, на самом деле не думал про BI системы для этой задачи! Тогда сегментируемся так, hippotable:

  • Просто использовать: просто открываешь файл и работаешь, не надо плясать с подключениями, датасетами, чартами.

  • Работает действительно быстро из-за отсутствия клиент-серверности.

  • Простой деплой on-premises.

  • Почти неограниченная нагрузка с низкими операционными костами (S3 по цене грязи).

При этом:

  • Ограниченный размер датасета

  • Меньше источников данных и интеграций

Интерактивности маловато, на датасете in-memory размера хочется поиграться с параметрами и чтобы таблица менялась в реальном времени.

Спасибо за отзыв! С локальным запуском мой косяк, имелся в виду npm ci (без run) — обновил ридми.

Спасибо за багрепорт, исправил! Думаю, перед дальнейшим развитием хорошо бы намазать тестов =)

DuckDB мотивирует SQL-синтаксисом или чем-то еще?

Пока никак =) На слое данных это не проблема, в arquero есть полный комплект джойнов, но много интерфейсной работы (переключение таблиц, мульти-табличные пайплайны и всё такое). Задача в топе на развитие.

В спецификации со времён ES6 есть специальное поручение (12.14.4.1.e.iii) в такой ситуации доставать name функции из имени переменной (и из многих других мест, ищется по SetFunctionName).

И это легко проверить

А в минифицированном коде имена и функций, и переменных, обфусцируются и ориентироваться в любом случае придется по line:column

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

Я обдумаю это предложение, спасибо)

> Там в preset-small-lib используется esbuild

Благая весть! Вот я дед

Спасибо!

Мне второй раз предъявляют за map, но мне нравится это название — отображение же! (возможно, конформные отображения сломали мне мозг) В голом JS под map подразумевается не только то, что вы подумали, но еще и ассоциативный массив Map. В TS есть mapped types, который совсем не про массивы. В rx есть map, и ничего, как-то живут. В общем, если подойти достаточно абстрактно, всё есть map)

size-limit конечно лучше чем жать голый UMD, но мы всё ещё измеряем один бандл, а не разницу с пустым приложением, так что EOCD и непрогретый gzip остаются. К тому же завязка на вебпак, который инжектит свой рантайм — я что-то уже не хочу к нему приближаться вообще

Я ждал этого комментария) "Просто валидация" — растяжимое понятие, хотел дополнительно уточнить что речь не о валидации форм

А я честно скажу, что сделал проект вдогонку к BanditStash — библиотеке для работы с localStorage. Для кейса "проверить, не битые ли данные в сторадже" детальной ошибки не нужно, просто игнорируй битые данные. Для валидации форм или (тем более) параметров АПИ, конечно, нужна библиотека с нормальным фидбеком. Каждой проблеме — своё решение.

Тип literal удалил из двух соображений — во-первых, на практике редко подходит только одно значение (зачем его вообще хранить)? Во-вторых, всегда можно создать пользовательский тип literal = <T extends string>(v: T) => enums([v]);

На бенчмарках banditypes — одна из самых быстрых библиотек без кодогенерации, так что аргумент про оптимизатор не принимается) К тому же валидация — вряд ли невероятно горячий код, так что по перформансу я не заморачивался.

Это правда комплимент, обычно переводы на Хабре пишут программисты и получается не очень связно) обидно, что при переводе потеряли мою великолепную блок-схему и нашли "мягкие навыки"

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

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

Коррелирует ли техническое образование со способностью программировать — вопрос открытый ?

Information

Rating
Does not participate
Location
Санкт-Петербург, Санкт-Петербург и область, Россия
Date of birth
Registered
Activity