Диагональная ориентация как идеал расположения экрана
Свободное вращение нашей планеты происходит с наклонением. Причины этому заложены давно. Вероятно, около 4,5 миллиарда лет назад Земля столкнулась с планетой Тейя. Так у нашей планеты появились спутник Луна и наклон орбиты в 22,44 °.
Поскольку Земля вращается вокруг своей оси с наклонением, это приводит к неравномерности распределения излучения Солнца. Говоря проще, именно из-за наклонения планеты мы испытываем смену времён года.
Если наклонение орбиты важно для жизни на Земле, то нужно ли применить наклонение в 23,44 ° для ориентации монитора?
Разработчик программного обеспечения наивно захочет ответить, что ему лучше подходит портретная ориентация: так легче читать страницы документации. С другой стороны, при более тщательном рассмотрении окажется, что лучшая ориентация дисплея — диагональная: так на экране уместятся даже самые длинные названия классов Java.
Выяснить пользу диагональной ориентации попыталась некто xssfox. Для этого она задействовала различные конфигурации Xorg.
Ынтырпрайзная Windows и прочие ширпотребные операционки уровня macOS не имеют поддержки диагональной ориентации дисплея. Достичь подобного получается только в Linux.
Максимальную эффективность использования пространства xssfox достигла при наклоне в 22 °. Однако xssfox никак не попыталась объяснить конкретную причину, почему это полученное эмпирическим путём значение так похоже на угол наклона оси вращения Земли.
А в остальном размышления логичны. Именно при наклоне в 22 ° на мониторе с разрешением сторон 21:9 получится разместить максимальную длину текстовых данных. С диагональной ориентацией больше не придётся беспокоиться об ограничении в 80 символов на строку.
Приведён лишь один недостаток: при таком наклоне монитора веб-камера норовит съехать вбок.
Работа была проделана неплохая. Как выяснила xssfox, Xorg принимает наклон в виде конфигурации xrandr --output HDMI-3 --transform, за чем должны следовать параметры вида cos(x),-sin(x),shift_left,sin(x),cos(x),shift_up,0,0,1, где x — угол наклона монитора, shift_left и shift_up — сдвиг картинки по осям X и Y.
Если, к примеру, речь идёт про наклон в 23,44 °, нужно задать параметры xrandr --output HDMI-1 --transform 0.91748,-0.39779,0,0.39779,0.91748,0,0,0,1. Сформировать параметры Xorg для работы с диагональной ориентацией поможет калькулятор на странице на сайте xssfox.
Любые другие эксперименты с диагональной ориентацией дисплея имеют малую популярность. К сожалению, это лишь слабо исследованные концепты.
Явные (как составленное по первым буквам абзацев сообщение) или нет, но попытки применить силу диагонали имеют право на жизнь.
Источник
Максимальная длина строки в V8
У меня есть небольшой пет проект, для построения различных графиков для пул реквестов, которые показывают кто кому оставляет комментарии, ставит аппрувы и прочее. Бэкенда там нет, фронт ходит в Gitlab или Gitea, выкачивает информацию за указанный период времени и рисует графики.
Чтобы не гонят лишний раз данные, я добавил возможность импорта/экспорта. Вроде всё хорошо, но вчера я решил выгрузить данные за 4 года и при экспорте словил ошибку:
JSON.stringify Uncaught RangeError: Invalid string length
Немного погуглив, нашёл, что длина строки в V8:
- 268.4 мегабайт на 32-битных платформах
- 538.8 мегабайт на 64-битных платформах (на М1 похоже такая же)
✅ Решил проблему просто: при экспорте разбиваю мой большой массив, на несколько частей и экспортирую несколько файлов.
Аналогично не получится считать файл как текст, получите просто пустую строку. readAsArrayBuffer работает, но попробуй понять как байты преобразовать в строки меньших размеров, да так, чтобы получить валидные JSON объекты.
const reader = new FileReader();
reader.onload = function () {
console.log(reader.result); // result будет пустой строкой
}
reader.readAsText(file);
В Firefox такой проблемы нет, всё работает.
Есть ли какие-нибудь книги, сайт, видеокурс и т.д., с помощью которых можно посмотреть на IT «сверху»?
Я уже являюсь разработчиком. Программирую, изучаю полезные для себя навыки по своему направлению и т.д.
Появилось желание разобраться в том, как работает IT сфера в общем.
К примеру, в таких вопросах, как:
Какие основные направления в ней есть (и, хотя бы поверхностно, покопаться в каждом из них)
На что они подразделяются
Как они связанны между собой
Почему одни направления развиваются, другие же приходят в упадок
Как IT рынок зависит от «реального сектора экономики» и т.д.
Безусловно, я смотрел видео в интернете на эти и похожие темы, но, по большей части, информация, которая там есть, весьма разрозненна и не даёт возможности начать ориентироваться в том, что происходит в IT секторе в целом и в закономерностях, которые в нём существуют.
Куда чаще это видео в стиле «топ 10 способов стать магом после 30-ти» и «почему искусственный интеллект заменит (или не заменит) гребцов через 10 лет».
React 19 — useOptimistic
useOptimistic — новый хук, который позволяет отобразить “оптимистичное” состояние. Оно называется “оптимистичным”, потому что мы “оптимистично” надеемся, что наш запрос не свалится с ошибкой и после выполнения запроса состояние будет выглядеть именно так.
❓Как используется
- В useOptimistic передаётся реальное состояние (cart) и функцию-reducer, для обновления оптимистичного состояния
- Компонент (Cart) использует “оптимистичное” состояние (optimisticCart) для рендера
- Перед выполнением запроса обновляется “оптимистичное” состояние
- Когда запрос завершился, нужно обновить реальное состояние
- Как только реальное состояние обновилось, оптимистичное состояние обновится автоматически, так как оно передано в useOptimistic первым параметром. ⚠️ Поэтому важно следить, чтобы приходило одно и то же состояние.
- Если запрос упал с ошибкой, нужно откатить изменения в оптимистичном состояниb.
ℹ️ Первый вопрос, которым я задался, а в чём отличие от обычного setState, путём экспериментов, вот что удалось найти:
- useOptimistic работает с формами. Работать с обычной кнопкой в Single Page Application мне не удалось, обновление происходило только после завершения запроса
- useOptimistic работает только внутри асинхронного обработчика, что логично. Если убрать async/await, обновление произойдёт только после завершения запроса
- Параметр в useState используется только для инициализации, и игнорируется в последующих рендерах. useOptimistic будет сихронизироваться со значением переданным первым параметром.
🤷♂️ Очень мало полезного удалось найти о useOptimistic. Во всех статьях и видео тривиальные примеры, нигде не рассказывается как обрабатывать более сложные ситуации:
- Как обновлять оптимистичное состояние, если запустить несколько запросов одновременно?
- Как использовать useOptimistic в SPA вне форм?
Поэтому пришлось создать пару ишью: раз и два. В любом случае, пока useOptimistic выглядит каким-то низкоуровневым API. Надеюсь скоро появится больше Best Practices по его применению. Если вам есть что добавить — пишите в комментах.
Ещё по теме:
- Frontend First — Ep 179 - React Deep Dive: useOptimistic
- Официальная документация по useOptimistic
- Код из примера тут
https://t.me/cherkashindev/184
React 19 — use(Promise)
use — новый хук, который позволяет считывать данные из промиса и при этом интегрирован с Suspense и ErrorBoundary.
ℹ️ Основные моменты:
- На этот хук не распространяются правила хуков — его можно использовать внутри циклов и условных операторов.
- Если мы используем хук use(Promise), то где-то в родительском компоненте мы должны положить сам промис (не данные как мы делали раньше) в стейт (useState). Это позволяет избавиться от useEffect’а, который был нужен, чтобы запросить данные при первом рендере.
- Хук интегрирован с Suspense, поэтому пока промис не разрезолвится — будет показан fallback объявленный в ближайшем Suspense.
- Если промис зареджектился, то будет показан fallback объявленный в ближайшем ErrorBoundary
- Песочница тут
- Официальная документация тут
Как фронтенд-разработчики поздравляют своих девушек
Источник: vk.com/wall-119334888_74064