Node.js: Клонирование ключей. Is eval() evil?

На примере простой задачи клонирования ключей объекта посмотрим, есть ли реальные альтернативы по производительности столь презираемой JavaScript-разработчиками функции eval().Подобная задача возникает, если оригинальное значение ключа надо оставить у …

PostgreSQL Antipatterns: Индиана Джонс и максимальное значение ключа, или В поисках «последних» записей

Сегодняшняя задача вполне традиционна для любых учетных систем — поиск записей, содержащих максимальное значение по каждому из ключей. Что-то вроде «покажи мне последний заказ по каждому из клиентов», если переводить в прикладную область.Кажется, что т…

PostgreSQL в «Тензоре» — публикации за год (#3)

Под занавес уходящего года предлагаю традиционно вспомнить, про какие интересные возможности и особенности работы с PostgreSQL мы рассказали в нашем блоге.Если не видели дайджест за прошлый год — время наверстать упущенное! Читать далее…

Создаем кибер-разведку в компании на основе OSINT

Привет ХАБР. Тема, которой посвящена эта статья с одной стороны важна, ведь в кибер-пространстве «неспокойно». Каждый день приходят новости, что ту или иную компанию взломали хакеры, получили дампы или зашифровали данные. Защищаться от кибер-угроз, вы…

DBA: хранение списков — таблица, массив, строка?

Достаточно часто при проектировании схемы БД возникает задача сохранить по основной сущности некоторый набор простых второстепенных данных.Например, это могут быть ФИО сотрудников, принимающих участие во встрече, список приложенных к сообщению файлов …

PostgreSQL Antipatterns: простой(?) INSERT… VALUES

Представим, что у вас есть некоторая табличка статистики, куда вы периодически скидываете таймстамп последнего «текущего» состояния в паре координат — например, (ID организации, ID сотрудника).Как больно наступить на грабли в совсем простом, казалось б…

Как найти утекшие объекты в дампах памяти Chrome DevTools

Утечки памяти в WEB приложениях могут сильно подпортить представление пользователей о ваших продуктах. О том, как тестировать на утечки памяти есть много туториалов. Однако, мало диагностировать наличие утечки — надо ее суметь отладить и исправить. В с…

PostgreSQL, что в логе твоем?

Наверняка, многие из вас пользуются explain.tensor.ru — нашим сервисом визуализации PostgreSQL-планов или уже даже развернули его на своей площадке. Но визуализация конкретного плана — это лишь небольшая помощь разработчику, поэтому в «Тензоре» мы созд…

Приручаем многопоточность в Node.js (часть 5: автомасштабирование под нагрузку)

В прошлых частях цикла мы:- рассмотрели базовые концепты работы с многопоточностью в JavaScript на примере среды Node.js;- научились формировать общую очередь и каналы обмена данными и сигналами, чтобы более эффективно управлять загрузкой потоков;- исп…

Приручаем многопоточность в Node.js (часть 4: координатор против синхронного кода)

В предыдущей части мы научились эффективно передавать данные вспомогательным потокам из основного через разделяемую память, используя Atomics-операции и блокировки.Но мы рассматривали все-таки идеальную ситуацию, когда основной поток больше н…