Pull to refresh
-2
0.1
Send message

SQL HowTo: один индекс на два диапазона

Level of difficultyMedium
Reading time3 min
Views4.7K

В прошлой статье я показал, как условие с парой однотипных неравенств, плохо поддающееся индексации с помощью btree, можно переделать на эффективно gist-индексируемое в PostgreSQL условие относительно диапазонных типов, а наш сервис анализа планов запросов explain.tensor.ru подскажет, как именно это сделать.

Но что делать, если неравенств у нас не два, а целых четыре, да еще и с разными типами участвующих полей? Например, для целей бизнеса это может быть задачей вроде "найди мне все продажи за декабрь на сумму 10-20K", что на SQL будет выглядеть примерно так:

dt >= '2023-12-01'::date AND dt <= '2023-12-31'::date AND

sum >= 10000::numeric AND sum <= 20000::numeric

Читать далее

Даже муравьи работают слаженнее. Почему ваши сотрудники не создают результаты?

Reading time7 min
Views7.4K

Когда мы создаем бизнес, то представляем его довольно идеализированно. Например, предполагаем, что все сотрудники работают слаженно, как муравьи, строящие муравейник. Или как пчелы – улей. Представляем, что каждый знает свою роль в компании, какой результат он должен принести. А усилия каждого сотрудника сливаются в какой-то единый чудо-поток, который увеличивает выручку от месяца к месяцу.

Но...

Что «НО»?

Как я обработал один миллиард строк в PHP

Level of difficultyMedium
Reading time12 min
Views21K

Вероятно, вы уже слышали о соревновании под названием "The One Billion Row Challenge" (1brc), если же нет, то предлагаю ознакомиться с репозиторием 1brc Гуннара Морлинга.

Моё участие в проекте было мотивировано присутствием в нём двух моих коллег, которые достигли лидирующих позиций.

PHP не известен своими выдающимися скоростными показателями. Тем не менее, учитывая, что я работаю над профайлером PHP, я решил исследовать его производительность на примере этого вызова.

Читать далее

Паттерн Aggregate Outside

Level of difficultyMedium
Reading time5 min
Views7.8K

Руслан Гнатовский aka @Number55 в свой статье Когда ни туда, ни сюда, или в поисках оптимальной границы Domain слоя описал известную проблему протекания бизнес-логики из агрегата, в случае если эта логика зависит от данных которые находятся вне агрегата, и предложил несколько решений этой проблемы, каждое из которых не лишено недостатков. Многие из этих недостатков были описаны в статье а также в комментариях поэтому я не буду здесь дублировать эту информацию а попытаюсь предложить решение которое этих недостатков лишено.

Читать далее

Zustand.js: современный, невесомый, производительный и очень гибкий state manager

Level of difficultyEasy
Reading time9 min
Views24K

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

В статье я расскажу:

о простом интерфейсе Zustand

о его внутреннем устройстве

о производительности без усилий: 3 простых способа оптимизаций

о производительности на максималках: не всегда нужно использовать длинный цикл рендера React, чтобы достичь максимальной производительности - Zustand может быстрее!

о применении на практике: советы и рекомендации по интеграции Zustand в ваши проекты для достижения масштабируемости и удобства поддержки.

Начните активно использовать Zustand в своих проектах - вы будете приятно удивлены простотой и удобством работы с ним.

Читать далее

Разработка производительного распознавателя автономеров для edge-устройств

Level of difficultyMedium
Reading time10 min
Views4.5K

«Мы всего лишь хотели пофиксить баги в своем продукте, а психанули и создали аналог одной из библиотек» — CV-инженеры CodeInside.

Итак, в созданной нами системе мониторинга транспортного потока Smart Traffic System доступен функционал по распознаванию номерных знаков автомобилей.
Для работы этой функции ранее мы использовали библиотеку автоматического определения и распознавания автомобильных номеров — opensource-решение Nomeroff-net.
Однако, во время пользования этой библиотекой, столкнулись с долгим запуском и inference + библиотека занимала большое количество оперативной памяти. Так как мы решали эти проблемы в коммерческом проекте, кода здесь не будет. И вместе с тем, в статье указали репозиторий, конкретные шаги решения, чтобы при возникновении аналогичных проблем, вы смогли адаптировать его под свой проект.

Читать далее

Mubeng — инструмент для ротации прокси-серверов

Level of difficultyEasy
Reading time2 min
Views3.6K

Очень часто для минимизации риска детектирования средствами защиты информации возникает потребность отправки большого количества запросов с множества IP-адресов.

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

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

Читать далее

Нейронная сеть, имеющая способность к самообучению

Level of difficultyMedium
Reading time13 min
Views11K

Всем привет! Недавно, когда я размышлял над работой памяти в мозге человека, мне пришла идея того, как можно сделать нейронную сеть, которая будет обладать способностью самообучаться. В этой статье я бы хотел представить свои размышления и идею, к которой я пришёл.

Читать далее

Настоящее предназначение OpenAI SORA: как и зачем симулировать «Матрицу» для ChatGPT

Level of difficultyMedium
Reading time41 min
Views108K

Ну что, уже успели прочитать восхищения небывалым качеством видео от нейросетки SORA у всех блогеров и новостных изданий? А теперь мы вам расскажем то, о чем не написал никто: чего на самом деле пытается добиться OpenAI с помощью этой модели, как связана генерация видео с самоездящими машинами и AGI, а также при чем здесь культовая «Матрица».

Войти в симуляцию →

PostgreSQL: обеспечение уникальности записи с проверкой даты валидности

Reading time2 min
Views4.8K

Как бы вы решали такую задачу? Предположим, есть таблица с купонами, и у купонов есть некая дата устаревания valid_until. Вам надо обеспечить такое ограничение (constraint) на уровне БД, чтобы у одного человека мог быть только один действующий купон.


Т.е., таблица изначально выглядит так:


CREATE TABLE coupons (
    id  bigint primary key generated by default as identity,
    user_id bigint not null,
    created_at timestamp not null,
    valid_until timestamp not null
)
Читать дальше →

Настоящая магия: возможности необычного ПК с внешним PCIe сокетом и кое-что еще

Reading time3 min
Views12K

Производители самых разных устройств, в особенности, ноутбуков, смартфонов и мини-ПК, изо всех сил стараются удивить пользователя. Понятно, что с целью увеличить продажи — причем некоторым вендорам это удается, и неплохо. Сегодня поговорим о девайсе от китайского производителя CWWK, выпустившего мини-ПК с необычным названием Magic Computer. Подробности — под катом.
Читать дальше →

Интерактивная диаграмма Ганта для тысяч работ

Level of difficultyMedium
Reading time5 min
Views17K

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

Читать далее

Модификация JSON респонсов в Laravel

Level of difficultyMedium
Reading time7 min
Views6.1K

Вчера я опубликовал перевод статьи на тему оптимизации использования респонсов в Laravel с "простейшими" данными. То есть когда в ответ нужно отдать какое-то число, строку, массив или объект. Но что делать если приложение построено на использовании Json Resource? Или ещё больше - нужно изменить уровень вложенности данных, возвращаемых коллекцией? Давайте разбираться!

Читать далее

YOLO-World: распознавание произвольного числа объектов с высокой точностью и скоростью

Level of difficultyMedium
Reading time5 min
Views15K

Всем привет! Буквально несколько дней назад была представлена новая модель семейства Yolo. Ее основная фишка заключается в том, что в отличие от своих старших братьев, она способна распознавать на изображении фактически любые объекты (которые интересуют человека) без предварительного обучения и делает все это в real-time режиме! Звучит неплохо, не так ли?

В этой статье мы попробуем разобраться, что же за магия скрывается внутри новой архитектуры.

Читать далее

Бесплатные векторные карты на своём хостинге

Level of difficultyMedium
Reading time6 min
Views24K

Векторные карты Protomaps на базе OSM

Каждый веб-разработчик знает о OpenStreetMap (OSM), свободной альтернативе Google Maps. Несмотря на всеобщую известность OSM, у некоторых всё-таки возникают вопросы: как сделать веб-карту с открытыми данными OSM, как самостоятельно публиковать карты?

На эту тему есть популярные руководства, в том числе по работе с базами PostGIS и запуску тайлсерверов для реализации бесшовных карт OSM. Но есть принципиально иной подход — векторные карты Protomaps, которые обеспечивают более высокое разрешение, настройку внешнего вида и наложение произвольных меток. Они изначально предполагают максимальную простоту в создании своих карт. А главное, что разместить тайлы можно на своём хостинге или в облаке.
Читать дальше →

Фотограмметрия для создания датасета систем распознавания лиц

Level of difficultyEasy
Reading time6 min
Views3.2K

Качество и объем датасетов играют решающее значение для обучения нейросетей. Разметка данных для датасетов это очень трудоемкая работа, для которой необходим ручной труд тысяч человек. Когда пользоватьель вводит капчу типа «укажите светофоры» на сайтах, он помогает ИТ‑компаниям размечать данные для датасетов. 20 лет назад считалось, что роботы не могут играть в шахматы, писать симфонии и рассказы. Сегодня в 2024 оказалось, что роботы могут писать симфонии, но не могут указать на каких картинках изображены светофоры. Поэтому для разметки датасетов используется люди. Для определения наличия на картинке светофора или пожарного гидранта используется низкоквалифицированная рабочая сила. Для определения признаков заболевания на рентгеновском снимке используются высококвалифицированные врачи. В любом случае используются люди. Поэтому данные для обучения нейросетей получаются очень дорогими. Есть даже поговорка: «Данные‑это новая нефть». Я бы уточнил, что «Размеченные данные‑это новая нефть».

Под катом будет описана методика добычи (или, как говорят нефтянники, дОбычи) относительно недорогих, но объемных датасетов для систем распознавания лиц.

Читать далее

Готовим Telegram Mini App без туннеля и с Hot Module Reload на React, TypeScript

Level of difficultyMedium
Reading time4 min
Views25K

В этой статье разберем как собрать комфортную девелопмент среду для разработки Telegram Mini App. Под комфортом я понимаю ситуацию когда тебе не нужно выгружать свое приложение в облако, чтобы увидеть результат работы в телеге, или запускать туннель типа ngrock, который после каждого перезапуска меняет ссылку. И я не уверен, что HMR можно получить через туннель. Поэтому я сделал свое решение, и хочу оставить его тут себе и потомкам.

Читать далее

Как мы с помощью ML вылечили проблему, не дававшую перейти на автомаршрутизацию курьеров

Level of difficultyEasy
Reading time11 min
Views6.2K

Привет, Хабр! Меня зовут Наталья Макарова, я ведущий разработчик команды геоданных в CDEK. В этой статье расскажу, как мы с помощью ML решили проблему, не дававшую нашей компании перейти на автоматическую маршрутизацию курьеров.

Мы умеем отслеживать прохождение грузом всей транспортной цепочки, включая промежуточные склады. Но посылку нужно ставить на конкретный маршрут до того, как весь груз придет на склад доставки. И даже до того, как он попадет в ERP‑систему СDEK (посылки оформят в офисах). То есть задача такая: определить, на какой маршрут поставить конкретный заказ до того, как появился сам маршрут!

Читать далее

Personal (jesus) стенд — решаем проблему тестовых контуров в компании

Level of difficultyMedium
Reading time9 min
Views2.8K

Всем привет, меня зовут Захаров Антон, и я DevOps-инженер в компании Bimeister! Весь свой опыт  я получил в этой компании, за 5 лет прошел путь от эникея до того, кем я работаю сейчас (большое спасибо коллегам!). Я расскажу, как на базе своих серверов и внутренних ресурсов мы создаем персональные стенды для разработки и тестирования нашего приложения.

Читать далее

Добрый, плохой, злой… невыспавшийся?

Reading time8 min
Views4.2K
image

Нужна помощь по работе? Посмотрите в офисе на поведение коллег. Тот, зевающий, с красными глазами — его лучше не спрашивать. Обратитесь к тому, кто явно выглядит выспавшимся.

Уезжаете на выходные и не с кем оставить кота? Прежде чем попросить друга, поинтересуйтесь, как он спал. Если товарищ гулял всю ночь — приходите завтра.

Ну и в ваших интересах давать родным высыпаться — они станут гораздо дружелюбнее. Наука подтверждает.

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

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

Это работает на нескольких уровнях: межличностном, групповом и национальном. Если засунуть невыспавшегося человека в МРТ, то окажется, что части мозга, которые отвечают за просоциальное поведение, дезактивируются. А когда стрелки часов туда-обратно переводят, то оно дезактивируется в масштабах стран.

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

Получается, что качество вашего сна — это залог не только индивидуального здоровья, но и коллективного. И альтруизма опять же.
Читать дальше →

Information

Rating
5,500-th
Registered
Activity