Обновить
4
0,1
Рейтинг
2
Подписчики
Отправить сообщение

У css-modules есть досадный минус: из коробки они плохо типизированы. Если написать import styles from './Comp.module.css'; , то styles оказывается просто Record<string, string>. Есть какие-то дополнительные нашлепки, которые генерят *.d.ts, но это так себе.

На текущем проекте используем vanilla-extract, вполне устраивает.

ТСО не добавляют в js, потому что смысла в этом нет. Если функция подходит для ТСО, то её проще и правильнее переписать на цикл. Тот же "хвостовой" факториал выглядит искусственно в сравнении с обычным: "технический" второй параметр, запутанная логика.

Человек не может объективно оценивать период, в который он был молод, ностальгия неизменно измажет всё яркими красками.

Странно конечно, что canvas всё равно выигрывает. Возможно потому, что там не "честные" глифы рисуют.

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

А если держать на странице отдельный iframe с минимумом верстки, и измерять текст внутри него - это тоже будет долгий layout рефлоу?

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

По разному бывает. На моей прошлой работе, например, схему (в дополнение к ТЗ) составляли аналитики, натурально записывая файлы вручную.

Видимо у всех замыканий внутри функции общее окружение

Так я об этом и написал )

Ну не совсем всё, arr не попал в копилку. А вот дальше разбираться не стали. Но возможно (хотя и нельзя сказать наверняка), что оптимизирующий компилятор v8 более аккуратно отследит все ссылки и таки выкинет data на мороз, тут не знаю.

Хотя конкретно в этом примере компилятор может не знать дальнейшую судьбу функции, переданной в arr.find, но эффект воспроизводится даже в таком случае, где всё очевидно:

function make(arr, data) {
    const cb = () => data;

    return () => {}
}

Поддерживать TS-типы как источник правды намного проще (они все равно нужны в приложении), чем описывать схемы в Zod-стиле.

Но схемы умеют делать дополнительные проверки, например по регексу.

А вообще, имхо, источником правды должен быть сваггер/openApi, из которого на фронте генерятся типы и (при необходимости) валидаторы.

Уже где-то писал, что в бинарном поиске (который "обычный") среднее количество итераций будет почти как как максимальное, log(n). То есть lowerBound и upperBound требуют в среднем в два раза меньше сравнений, поэтому обычный поиск лучше сделать через один из них, а не писать отдельно.

В v8 (и наверно не только) всё ещё интереснее:

function make(arr, data) {
    console.log(arr.find((item) => item === data));

    return () => {}
}

const func = make([], {x: 1});

console.dir(func); // разворачиваем, смотрим [[Scopes]]

В замыкание попала data. Это потому, что все упоминаемые во внутренних функциях объекты садятся в одну "лодку", на которую все эти внутренние функции будут ссылаться. И неважно, что (item) => item === data в мусорке, общий объект продолжает жить - на него ссылается func

Интересный пример one-person компании - Photopea, веб-аналог фотошопа. Чел за несколько лет без всякого ИИ запилил весь код в одно лицо, неплохо поднимает на рекламе и платных подписках

из‑за большого количества вызовов функций, у нас постоянно пересоздаются строки из‑за substring.

В движках JS для такого кейса давно реализованы т.н. sliced-строки, переиспользующие буфер.

Идея с отображением точек очень крутая!

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

Этот интерфейс будет служить «реестром» доступных типов

Тут ещё стоит упомянуть, что реестр не зафиксирован, в него можно потом добавить свои варианты с помощью declaration merging

В крайнем случае всегда можно научиться класть плитку

Это проще, чем научиться стабильно находить заказы на плиточные работы, особенно если нет опыта фрилансерства.

Паззл с точками и окружностью любопытный. Навскидку, там сначала надо построить наименьшую окружность для внутренних точек. Если не фартануло, то с одного края в эту окружность залезли внешние точки (рис. 1), и надо будет построить окружность, жестко зафиксированную между двумя красными выпуклыми оболочками (рис. 2) - это и будет минимальная возможная окружность.

Экономический, медийный и внутриполитический ущерб от происходящего

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

Информация

В рейтинге
3 390-й
Откуда
Москва, Москва и Московская обл., Россия
Зарегистрирован
Активность

Специализация

Фронтенд разработчик
Старший
JavaScript
TypeScript
React
HTML
CSS
Веб-разработка
Redux
MobX
Webpack