Search
Write a publication
Pull to refresh
-2
0.1
Send message

Почему PostgreSQL тормозит: индексы и корреляция данных

Reading time12 min
Views40K

"Хочешь ускорить запросы, построй индекс" – классический первый шаг по увеличению производительности в PostgreSQL. Вот только на практике можно встретить ситуацию, когда индексы в PostgreSQL есть, но тормоза никуда не делись. Не все индексы являются эффективными. Одна из возможных причин тормозов индексов – это отсутствие корреляции данных. Давайте поговорим о пенальти на производительность, которое дает расположение данных: почему это происходит и как это можно предотвратить.

Ускорить свой PostgreSQL

Оптимизация доступа к элементам слайса в Go

Level of difficultyMedium
Reading time4 min
Views7K

Привет Хабр!

В своей предыдущей статье про разбор кода победившего в VK Cup'22/23 я описывал как мне удалось ускорить копирование одной картинки в другую в 30 раз с помощью чёрной магии unsafe. Однако я не переставал задаваться вопросом, можно ли увеличить скорость еще больше. Я даже привлёк OpenAI в поисках решения, но он мне помог только с картинкой для обложки статьи. В итоге я нашел способ улучшить код еще в 2 раза. Чем и хочу поделиться.

Читать далее

Структуры данных: связный список

Level of difficultyMedium
Reading time4 min
Views39K

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

Связный список

Как мы используем модель Хаффа для открытия новых магазинов

Reading time9 min
Views11K

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

Читать далее

Что нового в Lighthouse 10

Level of difficultyEasy
Reading time3 min
Views3.4K

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

Lighthouse 10 доступен в командной строке через npm и в Chrome Canary. В ближайшие недели он появится в стабильном Chrome в Chrome 112 и в PageSpeed Insights.

Читать далее

Как в Северной Америке с дорогами и плотностью застройки? Работаем с 100Гб OSM данных в PostgreSQL

Level of difficultyMedium
Reading time16 min
Views3.5K

Сегодня открою вам Америку на основе данных OpenStreetMap в PostgreSQL15/PostGIS и моего проекта openstreetmap_h3. Запустим запрос и сравним время его выполнения на колоночном хранилище Citus в PostgreSQL и на стандартном в секционированной по H3 геоиндексу базе данных объемом 100GB.

Найдем top15 мест по застройке а Северной Америке и общую протяженность дорог, а также их тип и покрытие. Не буду перегружать публикацию логами программ, сфокусируемся на данных! Вы можете легко повторить все запросы самостоятельно на своем компьютере или ноутбуке.

Читать далее

20 уроков, которые я вынес из 20 лет работы программистом

Level of difficultyEasy
Reading time9 min
Views118K
Вы приступаете к чтению статьи с высокой концентрацией советов. Учиться у предшественников – хороший способ добиться успеха, но здесь мы часто забываем о важной оговорке. Практически любой совет работает только в определенном контексте, но дается обычно без каких-либо указаний на него.

«Да просто повысьте цены!» — говорит компания, которая уже двадцать лет на рынке и первые годы продавала продукт за копейки, чтобы привлечь клиентов и прийти к успеху. «Нужно всё реализовать в микросервисах», — говорит компания, которая по-быстрому сколотила монолит, набрала несколько тысяч пользователей и метнулась к микросервисам, когда начались проблемы с масштабированием.

Без понимания контекста советы теряют смысл или, хуже того, приносят вред. Если бы люди из примеров выше последовали своим собственным советам в начале пути, то, вероятно, пожалели бы этом. Этой ловушки сложно избежать. Мы представляем собой кульминацию своего опыта, но при этом смотрим на него через призму настоящего.
Читать дальше →

Как найти похожие картинки

Level of difficultyEasy
Reading time9 min
Views5.9K

Веб 2.0 — отличная штука. Сайты на самообслуживании. Пользователи наполняют их сами («постят контент», как сейчас выражаются). Сами напостили, сами посмеялись. А владелец сайта только платит за хостинг и стрижет купоны на рекламе. Удобно же.

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

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

Что же делать? Конечно, призвать на помощью железную машину — пусть она сама ищет баяны.

Читать далее

Делай нейминг как сеньор

Reading time13 min
Views124K

Это объект Pizza, там хранится инфа о латте, а заказали его в Restaurant или в Pizzeria? Неудобно? Максимально. Мы читаем код существенно больше, чем пишем. И хочется сразу понимать, что происходит, не играя в квесты «что имел в виду автор», «да как это работает» и «я снова ничего не понял». Без навыка давать хороший нейминг невозможно писать качественный и поддерживаемый код. Про нейминг говорят заодно, в рамках архитектуры и общих инженерных практик. В статье поговорим про него отдельно.

Как получается, что код становится мало понятным даже для его авторов? Почему нейминг так важен? Как придумывать названия, не применяя целые теории нейминга? Как лёгким процессом организовать работу с неймингом в команде? На все эти вопросы мы ответим в статье.

Читать далее

Почему Chat GPT говорит по-русски с нейронным акцентом?  Специфика токенизации кириллицы нейронной сетью от Open AI

Level of difficultyEasy
Reading time4 min
Views37K

Увидев очередную статью об утомившем всех Chat GPT от Open AI, рука невольно тянется в пистолету минусатору. Ну, в самом деле, сколько можно? Уже, кажется, все успели поиграть с чатом во всевозможных сценариях.

Однако один аспект, почему‑то, почти не затронут как на Хабре, так и в Рунете. Почему же все‑таки Chat GPT говорит по‑русски с весьма специфическим акцентом, который условно можно назвать «нейронным говорком»?

Чтобы понять суть вопроса, обратимся к теории. Чем занимается генеративная нейронная сеть такого типа?

Говоря просто и коротко она получает на вход набор токенов, пропускает их через некий «черный ящик» и выдает другой набор токенов. Вероятность выбора конкретного токена для ответа зависит от набора входящих токенов и конкретных настроек.

Но что же такое «токен»? Интересный факт заключается в том, что для английского языка токеном обычно выступают сочетания символов, зачастую совпадающие с короткими словами или часто встречающимися частями слов.

Возьмем, например, английскую панграмму:

“The quick brown fox jumps over the lazy dog”

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

Официальный токенизатор Open AI.

Показывает, что в этом предложении всего 9 токенов, содержащих 43 символа.

Читать далее

Chrome Headless против cloudflare JS challenge

Level of difficultyMedium
Reading time41 min
Views28K

Автоматизация сбора информации с различных ресурсов - обычная задача для людей разных сфер деятельности. Жаль, что не всегда бывает достаточно сделать простой GET запрос и разобрать полученный html. Веб-сайты, с которых собираются данные, принимают защитные меры для предотвращения автоматизированных запросов. Одной из таких мер является использование cloudflare. Сегодня мы посмотрим, как cloudflare выявляет ботов через javascript и коснёмся темы деобфускации скриптов.

Читать далее

Не надо ждать когда bing запустит chatGPT — уже есть ИИ, который отвечает исходя из результатов поиска

Level of difficultyEasy
Reading time1 min
Views7.6K

И кстати, он даже не требует регистрации.

Как можно заметить, сейчас системы а-ля chatGPT начали расти как грибы после дождя. И мне попался такой сайт как perplexity.ai

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

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

Читать далее

Борьба за человекочитаемость кода: опыт Хабра

Level of difficultyEasy
Reading time8 min
Views15K

Код Хабра день за днём впитывает в себя время, мысли и чаяния многих людей. Этому коду более 10 лет: он оброс множеством знаний, в том числе и тайных. Места c bus factor = 1 — не эка невидаль, а вполне конкретные люди с ответами на часто задаваемые вопросы.

Меня зовут Антон Каракулов, я тимлид команды бэкенд-разработки Хабра. Хабр стартовал в 2006 году, и за всё время здесь поработало, наверное, команд пять. Мне посчастливилось быть в двух из них, забегал в третью.

Эту статью я написал в рамках проекта Хабра «IT-гид», где разработчики рассказывают про свои направления. Постарался собрать в ней главные практические выводы и интересные грабли, которые нам попадались в процессе превращения старого хабракода в чистый, масштабируемый и понятный для всех — то есть человекочитаемый.

Все события утрированы, а совпадения — беспочвенны.

Читать далее

19,6 млн рублей за 2022 год. Парсинг сайтов. 25 советов желающим заняться

Level of difficultyMedium
Reading time5 min
Views14K

Меня зовут Максим Кульгин, моя компания xmldatafeed занимается парсингом сайтов в России порядка четырёх лет. По итогам прошедшего 2022 года поделюсь советами для тех, кто думает о подобном бизнесе. Бизнес очень интересный, но наполнен нюансами, которые и расскажу в статье.

Я ранее рассказывал про наш опыт развития бизнеса на парсинге сайтов в двух статьях (часть 1 и часть 2). Теперь хочу подвести итоги 2022 года и дать некоторые советы командам, которые хотят составить нам конкуренцию (не вижу, кстати, в этом ничего страшного, т. к. рынок довольно большой и скорее всего у вас будет свой путь, отличный от нашего). Никого, разумеется, не учу, пишу только наш опыт, с ним можно согласиться или нет — но у нас именно так… Всегда рад комментариям, которые заставляют задуматься и взглянуть на то, что делаем с другого ракурса.

Читать далее

Микроразметка сайта для Яндекс и Google с примерами

Level of difficultyEasy
Reading time20 min
Views34K

Микроразметка сайта для поисковых систем Яндекс и Google в формате Schema.org, JSON-LD и Open Graph. Разметку старался делать без js, т.к. Яндекс ее не учитывает. Микроформат Schema.org подходит для Яндекс/Google. Преимущество данного метода - не нужно ждать бота, который придет, просканирует страницу с включенным js и поймет что там находится. Ускоряет обработку данных в микроданных.

Читать далее

Импорт полной базы ФИАС за 9 часов, How To

Reading time12 min
Views8.8K

Год назад ФНС прекратила выкладывать базу ФИАС в формате DBF, теперь база доступна только в формате XML. Данные из DBF можно было вставлять в базу как есть, с XML так не получается, перед вставкой в базу, XML надо парсить, и это занимает время. Полная база ФИАС занимает 290 GB, парсинг такого объёма занимает значительное время.

Это время можно сократить, если парсинг распараллелить. Для этого надо разделить файлы на группы и каждую группу обрабатывать отдельно, но одновременно (процессоры давно многоядерные, надо не забывать этим пользоваться). Кроме того, конечно, надо использовать потоковый парсер, что бы не ждать полной загрузки файла в оперативную память.

Я разработал несколько скриптов для создания и импорта базы. Эта статья будет о том как с помощью этих скриптов развернуть базу ФИАС за 9 часов на 6-ти ядерном процессоре.

Читать далее

Двухуровневый CI-процесс PHP-проекта

Reading time5 min
Views4.8K

Непрерывная интеграция (CI, англ. Continuous Integration) — это практика разработки программного обеспечения, которая заключается в выполнении частых автоматизированных сборок проекта для скорейшего выявления и решения интеграционных проблем. Целей у непрерывной интеграции две:

Читать далее

Как мы уместили распознавание 7 типов документов в одну модель, и что из этого вышло

Reading time13 min
Views7.1K

Привет, Хабр! Сегодня поговорим о документообороте и привлечении нейросетей к автоматизации этого процесса. HR-отдел Сбера ежемесячно обрабатывает тысячи кадровых документов. Так, например, помимо приёма на работу необходимо поддерживать данные всех сотрудников в актуальном состоянии. Такую возможность предоставляет собственная HR-платформа «Пульс».

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

Узнать больше о нейросетях

MIDV-2020: как мы создали крупнейший датасет  документов, удостоверяющих личность

Reading time8 min
Views5.2K

В этой статье мы хотим рассказать как мы создали крупнейший на данный момент набор искусственно созданных документов с большим разнообразием типов документов, их содержания и условий съемки. Каждый из документов имеет уникальные (хоть и выдуманные) значения текстовых полей, уникальную подпись и уникальные искусственно созданные лица.

Читать далее

Обучите YOLOv8 на пользовательском наборе данных

Reading time10 min
Views65K

Ultralytics недавно выпустила семейство моделей обнаружения объектов YOLOv8. Эти модели превосходят предыдущие версии моделей YOLO как по скорости, так и по точности в наборе данных COCO. Но как насчет производительности на пользовательских наборах данных? Чтобы ответить на этот вопрос, мы будем обучать модели YOLOv8 на пользовательском наборе данных. В частности, мы будем обучать его на крупномасштабном наборе данных для обнаружения выбоин.

Читать далее

Information

Rating
5,751-st
Registered
Activity