
Spring JPA + большие данные = OOM? Hibernate скрывает коварную ловушку, которая может перегрузить память и обрушить приложение. Разбираем причины, а главное – 5 эффективных способов избежать OOM, чтобы работать с миллионами записей без проблем! 🚀
Делаем сайты удобнее и приятнее
Spring JPA + большие данные = OOM? Hibernate скрывает коварную ловушку, которая может перегрузить память и обрушить приложение. Разбираем причины, а главное – 5 эффективных способов избежать OOM, чтобы работать с миллионами записей без проблем! 🚀
Сегодня я хочу поделиться с вами советами по использованию Udim, текстурных сетов, texel density, padding, mipmapping и других техник в различных ситуациях и при возникновении ошибок.
Этот материал создан автором самостоятельно, однако в него также включена информация, полученная из других источников.
Редактор и создатель идеи: Daniil Lipin (lipa_l1).
Благодарю за помощь в написании статьи замечательных художников высокого уровня: _Shelest_, Titan_Fair, Alexey Yarmola, nikiost, trasnik.
Отдельное спасибо:
Dmitriy Bogumil — за предоставление файлов/скринов модели монстра.
gRen — за предоставление скринов с ошибками запекания карт id на оружии.
Сайты, откуда была взята маленькая часть информации:
1) https://www.youtube.com/watch?v=55sGQLX7iho
2) https://www.artstation.com/artwork/Xg3reL
3) http://wiki.polycount.com/wiki/Edge_padding
4) https://dtf.ru/gamedev/202100-kak-uluchshit-kachestvo-tekstur-razbor-metodov-optimizacii-uv
5) https://en.wikipedia.org/wiki/File:Mipmap_Aliasing_Comparison.png
6) https://gtaforums.com/topic/750681-skygfx-ps2-xbox-and-mobile-graphics-for-pc/page/287/
7) https://vk.com/@anatolii994-teksel-prostoi-universalnyi-metod
8) https://www.artstation.com/artwork/x3B5YX
Буду признателен, если вы поможете мне исправить опечатки, а ещё, если есть вопросы, пишите, пожалуйста, на почту: lipindan2003@gmail.com, в телеграмм — @lipa_l1, в дискорд — @lipa_l1.
«Все материалы данного сайта являются объектами авторского права (в том числе дизайн). Запрещается копирование, распространение или любое иное использование информации и объектов без предварительного согласия правообладателя»
Сорванные дедлайны, работа в выходные, недовольный клиент — знакомо? Если да, то вы, вероятно, сталкивались с некорректной оценкой проекта. В прошлой статье я рассказывал о риск-факторах в задачах разметки и сбора данных:
Итак, теперь у нас есть первая приблизительная оценка видимости листьев из порталов, хранящаяся в массиве mightsee каждого портала. Вычислять, что именно видно через последовательность порталов, сложно, поэтому мы вместо этих вычислений используем «консервативную» оценку. Она ни за что не скроет лист, который должен оставаться видимым.
«Это просто задача отсечения»
Свет внезапно выключается. Вы сидите в огромном конференц-зале. Кто-то включает проектор. На экране сам Майкл Абраш! Похоже, это знаменитый доклад Quake Postmortem с GDC 1997.
Он говорит о порталах.
Мы берём плоскости отсечения, ограничивающие максимальный объём видимого, и отсекаем их по всё более дальним порталам, пока они не пропадут.
Я занимаюсь фронтенд разработкой на React последние 6 лет (в роли full-stack разработчика). Я знал и слышал, что существуют хуки useCallback
и useMemo
, которые нужны для оптимизации рендеринга. При этом про их использование я слышал только в теории или на собеседованиях.
И вот мы в проекте столкнулись с задачей, когда приложение начинает тормозить и его нужно оптимизировать. В решении нашей проблемы эти два хука дали необходимый эффект, который действительно помог ускорить рендеринг. Об этом расскажу ниже.
За годы работы с клиентами я видела разное. Когда-то, на своей прошлой работе в госструктуре, была на стороне заказчика. Казалось бы, где ещё прокачать диктаторский талант, как не там? Но, знаете, у меня всё было как-то по-человечески: я уважала экспертов, была открыта к диалогу, решала задачи, а не играла в «кто тут главный». Но потом я стала предпринимателем и окунулась в мир, где адекватность — это что-то вроде редкой валюты. И вот тут я осознала, что не только исполнители бывают всратые, но и заказчики далеко не святые.
Так что, предприниматели, давайте называть вещи своими именами: говорить «нет» клиентам не только можно, но и нужно. Вот мой личный список ред флагов, которые я с годами чую за версту. Кстати, в комментах можно поговниться на исполнителей (ну или меня) и написать свои ред флаги, го!
Хочу поведать свою историю, как большая нагрузка, множество рутинной работы и постоянное отвлечение меня от основной работы, разработки архитектуры софта, толкнули меня на создание системы, которая бы автоматизировала ряд процессов в пресейле новых проектов. Что позволило мне сэкономить в итоге много времени и сил.
Узнайте, почему большие TypeScript-проекты начинают "захлёбываться" от рекурсивных типов и обилия импортов, и как с помощью правильной структуры монорепы, настройки tsconfig и диагностики ускорить время компиляции и работу IDE. Рассматриваем инструменты, параллельную сборку, оптимизацию рекурсивных типов и прочие техники, которые помогут сохранить ваш проект быстрым и удобным.
Оптимизация производительности React приложений — важная часть разработки, особенно когда речь идет о сложных интерфейсах. В основном разработчики лишь краем уха слышат о необходимости использования хуков useMemo, useCallback и React.memo для оптимизации кода. Но если бездумно использовать их, то можно даже навредить вашему приложению
В этой статье я попытаюсь разобрать, когда действительно стоит использовать useMemo, useCallback и React.memo, а когда их использование излишне. Мы изучим каждый из хуков, их влияние на рендеринг компонентов в React, а также рассмотрим практические примеры с подробными объяснениями работы каждого из хуков.
Сделайте интерфейс React-приложения более отзывчивым и плавным с помощью хуков useTransition
, useDeferredValue
и useOptimistic
. Управляйте приоритетами рендеринга, избегайте подвисаний при работе с большими данными и реализуйте оптимистичные обновления для мгновенной реакции интерфейса. Практические примеры и полезные советы ждут вас! 🚀
Деление — достаточно затратная операция. Например, на CPU Cannon Lake задержки 32-битного деления находятся в интервале 10-15 тактов, а на Zen4 — 9-14 тактов. Задержки 32-битного умножения на обоих CPU составляют 3-4 такта.
Ни в одном из популярных ISA SIMD (SSE, AVX, AVX-512, ARM Neon, ARM SVE) нет целочисленного деления, оно есть только в RISC-V Vector Extension. Однако во всех этих ISA есть деление с плавающей запятой.
В этой статье мы представим два подхода к реализации SIMD-деления 8-битных беззнаковых чисел.
Медицинские компании, помимо приёма пациентов, должны качественно и безопасно хранить все данные, связанные с лечением, осмотрами и процедурами. От этого зависит не только имидж, но и лицензия организации.
Запуск нового сайта — момент ответственный. Надо сделать 1000 и 1 дело. Чтобы вы не потерялись в дедлайнах и задачах, вот вам чек-лист. Подрядчикам он поможет структурировать все действия, а заказчикам — понять и проверить, все ли пожелания учла команда разработки.
Уже стало традицией, что выход очередной версии .NET становится поводом для выпуска новой версии WebMarkupMin. Обычно подобные выпуски WebMarkupMin сопровождаются обновлением расширений для ASP.NET Core и этот раз не стал исключением. Многие ожидали, что с появлением .NET 9 появится новый модуль WebMarkupMin.AspNetCore9, но этого не произошло. В этой статье я расскажу о причинах такого решения. Кроме того, в этот раз в ASP.NET Core-расширениях довольно много изменений, а поскольку для большинства разработчиков основным источником информации об этих расширениях является уже немного устаревшая статья Эндрю Лока «HTML minification using WebMarkupMin in ASP.NET Core», то я постараюсь разъяснить некоторые неочевидные моменты.
Клиент заказал разработку сайта.
Ожидание: все готово еще вчера.
Реальность: составление ТЗ, прототипирование, доработки, конфликты, снова доработки, и только потом результат.
Привет, Хабр! Это Глеб Михеев — член ПК, отвечающий за программу широко известной в узких фронтендерских кругах конференции FrontendConf, автор канала «Уставший техдир» и знатный амбассадор работы с джунами. Эту статью я написал по мотивам выпуска моего подкаста Фичи Катятся, где мы с Серёжей Паращенко, автором канала Product Cult, обсудили продуктовый подход. Предлагаю разобраться в теме разочарования. Что именно разочаровывает пользователей, и как это можно изменить. Поехали!
Привет, Хабр! В этой статье расскажу, зачем приложению по поиску работы понадобился видеоконтент, как нам с командой удалось его реализовать и с какими сложностями мы столкнулись.
Для начала расскажу о нашей платформе. Идея ее создания возникла из наблюдений за знакомыми, работающими в различных сферах. Мы заметили, что есть потребность в сервисе, который помогал бы индивидуальным предпринимателям и малому бизнесу находить не только постоянных, но и сменных сотрудников. Основная цель заключалась в том, чтобы упростить поиск временной работы для тех, кто не стремится работать на постоянной основе, и предоставить возможность находить подработку людям с различными навыками и профессиями.
При этом поиском подработки мы не ограничились. Мы ввели на платформу механики check-in и check-out, подобные тем, что есть у таксистов Яндекса. С их помощью человек мог регистрировать время выхода на работу, различные паузы, а также время завершения смены.
Постепенно мы расширили функционал нашей HR-платформы, добавив возможность поиска постоянных сотрудников. Это решение стало естественным этапом в развитии сервиса, позволяя не только находить временные вакансии, но и удовлетворять потребности бизнеса в постоянном найме. Но и здесь мы не остановились, решив, что пора сделать платформу более медийной.
Всем привет. В этом материале я расскажу как создавал беспслатный сервис оптимизации изображений FlashImg.ru
Современное оборудование невероятно быстрое. M1 Max, на котором я пишу эту статью, работает с частотой 3,2 ГГц. То есть 3,2 МИЛЛИАРДА тактов в секунду. Однако Microsoft Teams требуется 3 секунды, чтобы открыть ссылку, и я отказываюсь верить, что для открытия ссылки требуется 9,6 МИЛЛИАРДА тактов. Очевидно, я упрощаю, но смысл остаётся прежним: как так получается, что оборудование становится быстрее, а приложения — только медленнее?
«Потому, что мы выполняем гораздо больше задач». Так считает любитель позднего капитализма. Позвольте объяснить.
Превосходный пример мощи современного «железа» — это видеоигры. Я могу симулировать огромные 3D-среды с физикой и освещением, полученным трассировкой лучей, при этом играть в реальном времени с друзьями из других штатов и даже стран; вполне доступный компьютер потребительского уровня выдаёт 124 миллионов пикселей в секунду1.
[1. 1080p при 60 FPS = 1920 × 1080 × 60 = 124416000]
Можно посмотреть и в обратном направлении: людям удаётся запускать DOOM на почти любом устройстве с процессором: на калькуляторах, iPod, фотокамерах. Невероятно маломощные, зачастую одноразовые устройства обладают достаточными вычислительными ресурсами, чтобы выполнять сверхсовременную на 1993 год игру. Это не особо удивляет, ведь прошло три десятка лет, но показывает, какой путь мы проделали.