Всем привет! Меня зовут Михаил, и я актуализирую базы клиентов beeline cloud. Сложность тут в том, что наша компания использует множество различных систем как собственной, так и сторонней разработки. А у каждого сервиса своя база данных. Когда появилась необходимость собрать всё это воедино, началось самое интересное.
Оказалось, в разных местах один и тот же клиент может называться по-разному: где-то с опечатками, где-то заглавными буквами, а где-то может быть псевдоним вместо официального названия из ЕГРЮЛ. Чтобы привести всё к единому виду, мы решили собрать всех клиентов вместе и организовать полнотекстовый поиск по «эталонной» базе. Так любой сервис может узнать актуальные данные по клиенту даже с неточным запросом.
Теме поиска посвящено множество статей и даже отдельный хаб. Но мы хотели реализовать поиск здесь и сейчас, поэтому вместо Elasticsearch или Sphinx организовали полнотекстовый поиск средствами PostgreSQL через SQLAlchemy, о чём я подробно рассказал в своей статье. Если хотите полноценно погрузиться в тему, посмотрите ниже — собрал полезное с Хабра из моего «Избранного».
— Как мы внедряли полнотекстовый поиск
Автор делится опытом реализации поиска. Сравнивает разные технологии и даёт общее представление о проблематике. В комментариях — активный дискус, что лучше: сторонний сервис или поиск напрямую в базе.
— PostgreSQL Antipatterns: сказ об итеративной доработке поиска по названию, или «Оптимизация туда и обратно»
Хороший разбор того, как работает нечёткий поиск в Postgres и почему это может быть удобнее, чем сторонний поисковик.
— Ищем имена с опечатками в PostgreSQL
И ещё один пример.
— Готовим полнотекстовый поиск в Postgres. Часть 1 и часть 2
Подробная статья о том, как писать запросы и строить индексы на чистом SQL. Много внимания уделено оптимизации и выборе нужного индекса. Материал оказался очень полезным для реализации FTS в нашем проекте.
— Индексы в PostgreSQL — 7
Очень глубокий анализ работы индексов в PostgreSQL. Будет полезно для общего развития. В этой части разбирается работа индекса GIN, который используется также для индексирования pg_trgm.
Если интересуетесь темой, как и я, подписывайтесь на наш блог. Ещё будем рассказывать об IaaS, Private Platform, VDI, DRaaS, BaaS, S3-хранилище, colocation, DBaaS, Kubernetes, Cloud NGFW, SSL VPN, Secure Email Gateway, MFA, WAF, защите от DDoS, Cloud 152 и многом другом.
Подводные камни С++: решаем загадки неопределённого поведения
Изучение и понимание неопределённого поведения — важный шаг для разработчика C++, поскольку undefined behavior бывает источником серьёзных ошибок и проблем в программах. UB может проявляться в разных аспектах языка, включая операции с памятью, многопоточность, арифметические вычисления, работу с указателями и так далее.
Погрузимся в мир неопределённого поведения в C++ и рассмотрим некоторые примеры ситуаций, в которых оно может возникать
Какими платёжными системами пользуются в мире помимо Visa и Mastercard: чем они отличаются и как работают
В России есть МИР, в Китае — UnionPay, а Mastercard и Visa — почти везде. А какие ещё популярные платёжные системы есть на Земле? Разберёмся в этой статье. Вас ждут сюрпризы — например, индийские карты с необычным цифровым сервисом, исламские «некредитные кредитки», а также самая старая платёжная система в мире.
Движок для игры от первого лица в 265 строках JavaScript
Сегодня окунёмся в мир, который можно потрогать. В этой статье мы исследуем, как с нуля, быстро и без особо сложной математики написать движок для игры от первого лица. Для этого мы воспользуемся приёмом под названием «бросание лучей» (raycasting). Возможно, вы видели примеры такой техники в играх Daggerfall и Duke Nukem 3D, а из более свежего — в статьях из «ludum dare» от Нотча Перссона.
Вакансии для джунов на Хабр Карьере:
Специалист техподдержки в Kokoc Group. Можно удаленно. Полный рабочий день. От 40 000 до 50 000 ₽.
Инженер техподдержки в ЛАНИТ. Санкт-Петербург. Полный рабочий день. От 60 000 ₽.
С# developer в Монополию. Санкт-Петербург. Полный рабочий день. До 87 000 ₽.
Разработчик JavaScript/TypeScript в Advers Inc. Можно удаленно. Полный рабочий день. От 80 000 до 140 000 ₽.
Системный аналитик в 4People. Санкт-Петербург. Можно удаленно. От 140 000 до 170 000 ₽.
Больше вакансий
#junior
⚡️ Новости к этому часу
🗞 Новости из «Дзена» интегрировали в мобильные приложения «ВКонтакте» и «Одноклассников»
🎮 AMD стала эксклюзивным партнёром Bethesda в работе над оптимизацией игры Starfield
🚀 Орбитальный сервер RUVDS доставлен на орбиту (ФОТО)
🛰 Первый спутник, созданный Чеченским государственным университетом, «Ахмат-1», был выведен на орбиту
✊ Забастовка сообществ Reddit отразилась на поисковике Google
👓 Apple ограничила зону работы Vision Pro в режиме VR площадкой 3 х 3 метра
🚤 Инженеры спустили на воду самодвижущуюся лодку, способную составлять карту подводного рельефа
🔜 НАСА планирует запустить «Евклид» 1 июля
🔭 Обсерватория ESO получила новое изображение туманности «Кошачья улыбка»
💪 Алисса Розенцвейг начала помогать Valve в качестве подрядчика улучшать графические драйверы для игр в Linux
⏱ Ускорители H100 от NVIDIA поставили новые рекорды в ИИ-бенчмарке MLPerf Training v3.0
#новости
Грохот в джунглях: как снимали первого «Хищника»
Первый «Хищник» с Арнольдом Шварценеггером — один из классических боевиков 1980-х, от которых сводит олдскулы и наворачивается скупая слеза. Из простого и незамысловатого сюжета про небольшую группу наёмников, отправившихся на задание в джунгли Южной Америки и вступивших в нелёгкую схватку с инопланетным охотником, съёмочной команде удалось сотворить культовый фильм, который с годами становится только лучше, как хороший коньяк.
Давайте вспомним, как создавался образ любителя межгалактического сафари, какие технические ухищрения использовались на съёмках и какой след фильм оставил в настоящей науке
«Представляю вашему вниманию мою конструкцию такого экстремально нишевого убер-гиковского гаджета, как портативный аппаратный проигрыватель чиптюновой музыки для звукового чипа AY-3-8910. В этой статье вы получите краткую историческую справку об истории компьютерной музыки, узнаете о довольно занимательном факте существовании класса подобных устройств, а также кому и для чего таковые могли понадобиться»
Портативный аппаратный проигрыватель музыки для AY-3-8910 — hway
CI/CD в Data Science, MLOps в финтехе и тенденции в потоковой передаче данных
Это уже четвёртый выпуск дайджеста по ML и работе с данными для тех, кто тащит эти направления в своих компаниях. Сегодня в программе — антисоветы для работы с ML-экспериментами, обзор библиотеки для Pandas с примесью ChatGPT, очень сложная статья про Ray и многое другое.
Странная история подростков, создавших ботнет Mirai
Студенты-первокурсники колледжа вполне обоснованно могут быть раздражены тем, что им не удаётся выбрать популярные факультативные дисциплины. Но обычно они лишь ворчат. Парас Джа стал исключением. Разгневанный тем, что старшекурсникам отдаётся приоритет при выборе курса computer science в Ратгерского университета, Парас решил обвалить веб-сайт регистрации, чтобы записаться не смог никто.
Миссия выполнима: собрать и настроить супергетеродин
Многие из нас, особенно те, кто постарше, до сих пор называют электронные компоненты «радиодеталями». Потому что любительская электроника берёт своё начало с первой половины прошлого века, и собирали тогда почти исключительно радиоприёмники и радиограммофоны, то есть проигрыватели грампластинок с ламповым усилителем.
Высшим пилотажем для любителя электроники десятилетиями была постройка супергетеродина, то есть приёмника с преобразованием частоты. Не только потому, что у супергетеродина обычно больше деталей, а главным образом потому, что его гораздо сложнее настроить.
Поговорим о том, как собрать супергетеродин, как его настроить и что такое преобразование частоты
Вероятностные структуры данных и где они обитают
Вероятностные структуры данных — это такие структуры или алгоритмы, результатом которых является не детерминированное «да» или «нет», а вероятностные ответы, например, «точно нет» и «возможно». Как правило, такие структуры позволяют существенно сэкономить вычислительные ресурсы в задачах, где допустимо получить примерный ответ.
В этой статье даётся обзор таких структур данных и рассказывается, какую пользу они могут принести на практике
Оживляем скоростемер от ушедшего в историю метропоезда
Те, кто долго жил в Москве, наверняка вспомнят метропоезда типа «Яуза». Хоть они и вызывали самые противоречивые мнения что у пассажиров, что у работников метрополитена, можно с уверенностью сказать, что для своего времени в нашей стране они были уникальными.
Итак, в сегодняшней статье попробуем запустить часть приборной панели от теперь уже навсегда исчезнувшей модели поезда метро и узнаем, как всё это устроено и работает
⚡️ Новости к этому часу
🆕 Вышла стабильная версия iVentoy 1.0, которая позволяет устанавливать на ПК ОС Windows и Linux по сети
🔐 Некоторые пользователи LastPass оказались заблокированы после сброса MFA по просьбе разработчиков
💦 НАСА заявило о переработке 98% мочи и пота астронавтов на МКС в питьевую воду
⚖️ Глава Xbox поклялся в суде, что Call of Duty после сделки Microsoft и Activision Blizzard останется на PlayStation
🤖 Вышла рабочая версия клиента ChatGPT для Windows 3.1 с поддержкой TLS 1.3 под названием WinGPT
🧑🏻🚀 НАСА запускает эксперимент «Один год на Марсе»
💠 Самый мощный суперкомпьютер Intel Aurora готов к работе (ФОТО)
🛰 НАСА работает над аналогом ChatGPT для астронавтов
#новости
Восстановление криптоключей по яркости LED-индикатора питания
Известный эксперт в области криптоанализа Бен Насси с коллегами из университета им. Бен-Гуриона опубликовали результаты уникальных экспериментов по восстановлению криптографических ключей с помощью видеозаписи светодиода питания устройства, на котором хранится/используется этот ключ.
Для извлечения секретного ключа достаточно нескольких секунд видеозаписи с камеры наблюдения (издали) или со смартфона (вблизи, с роллинг-шаттером)
Искусство «Мераки»: как привить человеку желание работать
Если вы сидите в социальных сетях, то со временем можете заметить, что там есть совершенно безумные люди. И речь не о теориях заговора или тех, кто пытается переспорить собеседника в Интернете. Есть гораздо более странный вид сумасшедших. Это те, кто во время отпуска постит: «Не могу дождаться, когда вернусь на работу». Или пишет: «Я работаю не ради денег, мне просто это доставляет удовольствие».
Что это, попытки выслужиться перед боссом? Тот самый появившийся недавно новый термин токсичная позитивность? Расстройство психики? Невозможно же «любить» свою работу, правильно? Современное общество учит нас, что нужно внимательно поддерживать баланс между трудом и личной жизнью, а чуть что не получится — выгорать. Любой, кто наслаждается работой больше, чем своим свободным временем, немного неадекватен. Так?
На самом деле, действительно есть категория людей, для которых работа является страстью. Им нравится приходить и браться за задачу, они получают удовольствие от проблем, которые каждый день доставляет им труд. Эти люди сделали из работы своё личное призвание. И у греков с древних времён для этого есть специальное слово: мераки (μεράκι).
Linux 6.4: новые возможности ядра — что изменилось в релизе
Новая версия ядра Linux 6.4 появилась спустя всего два месяца после Linux 6.3. Несмотря на относительно небольшой временной интервал, изменений достаточно много. Всего принято 16012 исправлений от 2080 разработчиков, причём изменения затронули 14220 файлов, добавлено 1006924 строк кода, удалено 597615 строк. Размер патча составил 81 МБ.
Больше всего изменений, которые связаны с драйверами устройств. Это около 43% от общего объёма. Ещё около 14% изменений относятся к обновлению кода, актуального для аппаратных архитектур, 10% — сетевой стек, всего 4% — файловые системы и еще 3% — внутренние подсистемы ядра.
⚡️ Новости к этому часу
⚙️ В России появится первое контрактное производство отечественных марок смартфонов, ноутбуков и планшетов
🔥 Представлен рабочий прототип «огнеупорного» квадрокоптера FireDrone (ФОТО)
🤝 Компании «Флант» и «Экспресс 42» объединяются
🙅🏻♂️ Apple выступила против британского закона об обязательном сканировании сообщений iMessage
📲 «Тинькофф» и «Альфа-банк» запустили сервисы для платежей смартфонами на базе Android
🔢 Математики нашли десятое дедекиндово число после 32 лет поисков
🇰🇷 Жители Южной Кореи стали «младше» на год-два из-за перехода на международный стандарт подсчёта возраста
#новости
«Здравствуйте, уважаемые читатели Хабра! Сегодня я хочу поделиться с вами информацией о XSS-уязвимости, которую я обнаружил в Telegram около двух недель назад. Также статья коснётся некоторых особенностей работы программы поиска уязвимостей от Telegram. Моя цель — не только продемонстрировать вам интересный и относительно простой пример XSS, но и обозначить причины, по которым, возможно, не стоит тратить свои усилия на участие в багбаунти-программе Telegram»
История одной XSS в Telegram
«Для меня тёмная тема неприемлема, но мне стало интересно систематизировать, как мода на тёмную тему сочетается с удобочитаемостью и восприятием текста, какие аспекты при выборе шрифта и фона здесь действуют, какова история опытов с тёмной темой»
Тексты и надписи: что не так с тёмной темой
Подойдёт ли PostgreSQL вообще всем проектам или нужны альтернативы?
В Интернете только и разговоров, что про PostgreSQL и MySQL, но выбор СУБД много шире. В этом материале мы рассмотрим несколько популярных баз данных, разберёмся с их спецификацией и сценариями использования, чтобы выйти за рамки привычных решений.
Известный необычными веб-играми разработчик из США добавил на свой сайт страницу The Password Game. На странице без каких-либо объяснений открывается текстовое поле с предложением задать пароль. По мере набора пароля одно за другим выясняются требования к нему.
Всего к паролю предъявляется 36 различных требований. Их можно разбить на группы:
▪️ Значения, которые зависят от текущей даты или удачи: сегодняшнее решение Wordle, капча, локация из Geoguessr.
▪️ Внешне простые требования, которые удовлетворить легко. На деле они будут преследовать игрока. К примеру, на шаге 5 попросят сделать так, чтобы сумма цифр в пароле составляла 25. В будущем цифры добавить ещё придётся. В частности, требование 15 обязывает включить в пароль високосный год, а в требовании 16 нужно добавить шахматный ход в алгебраической нотации. Цифры могут быть в капче, а на шаге 35 нужно записать в пароль текущее время, поэтому игру проходить удобнее в определённое время суток.
▪️ Некоторые заглавные буквы распознаются как римские цифры. Требование 9 указывает, что произведение римских цифр должно быть равно 35. Это сильно осложняет решение задачи.
▪️ Иногда важна скорость реакции. В определённый момент пароль загорится. Его нужно потушить, удалив эмодзи огня.
▪️ По ходу игры появляются обязанности. На шаге 17 в пароль подбросят яйцо по имени Пол. Когда на требовании 23 цыплёнок вылупится, раз в минуту Пола нужно подкармливать тремя эмодзи гусеницы (🐛) в минуту, не перекармливая.
▪️ Иногда из пароля придётся что-то убрать. В одном из шагов предлагается пожертвовать буквой, которая в пароле встречаться не будет.
▪️ Настройка шрифта и размера букв в зависимости от разнообразных правил: номер кегля у цифры должен составлять квадрат её значения, все римские цифры должны быть в Times New Roman, число символов курсивом должно быть в два раза больше, чем полужирным, и так далее.
Игра заключается в поиске строки, которая удовлетворит всем требованиям. Часто фрагменты для одного из правил влияют на другие, осложняя или вовсе делая решение невозможным.
⚡️ Новости к этому часу
🪐 Учёные обнаружили 69 новых экзопланет с помощью ИИ
▶️ Google тестирует функцию видео YouTube с расширенным битрейтом в Windows 11
🙀 У Google есть секретный браузер, спрятанный в настройках
📄 «Яндекс» научил YandexGPT тезисно пересказывать текст и открыл доступ к сервису 300.ya.ru
🛠 У российских производителей электроники возник дефицит сотрудников среднего звена на фоне роста их зарплат
🎮 Mundfish выпустила трейлер первого дополнения для Atomic Heart, оно выйдет 2 августа
🔭 «Джеймс Уэбб» впервые обнаружил в космосе метил-катион (ФОТО)
🤖 DeepMind разработали нового самообучающегося робота RoboCat
💰 Разработчики Flipper Zero в 2022 году продали гаджетов на $25 млн
🚛 «Сберавтотех» и Globaltruck запустили коммерческие беспилотные грузоперевозки на трассе М-11 «Нева»
#новости
«Программирование текстовых редакторов может быть очень интересной и сложной задачей. Типы задач, которые должны решать текстовые редакторы, варьируются от тривиальных до невероятно трудных. Недавно я занимался переработкой внутренних структур данных редактора, над которым я работаю. В частности, самой фундаментальной для любого текстового редактора структуры данных: текста»
Выбор структур данных для самописного текстового редактора
⚡️ Новости к этому часу
🚑 В США туристку со сломанной ногой спасли благодаря экстренному вызову с iPhone через спутник (ФОТО)
🎖 Киберспортсмены в дисциплине «Тактический трёхмерный бой» смогут получать спортивные разряды и звания
👩🔬 Учёные установили, что микропластик едят даже морские одноклеточные
🤷♂️ Стартап IRL, оценивавшийся в $1,2 млрд, закрывается, так как 95% его пользователей оказались ботами
🛩 НАСА закрывает проект электросамолёта X-57 Maxwell без лётных испытаний прототипа
🤳 Павел Дуров анонсировал Stories в Telegram
🇩🇪 Немцы строят вездеход для изучения Фобоса
📖 В общий доступ открыт ресурс «Рувики» — аналог русскоязычной «Википедии»
🔐 В Windows 11 появился встроенный менеджер паролей для Windows Hello
🙅🏻 Сотрудникам офисов Конгресса США ограничили использование ChatGPT
#новости
Стажировки на Хабр Карьере:
Преподаватель в IT-КУБ. Арамиль. Неполный рабочий день. От 36 000 до 50 000 ₽.
Quant researcher в MICARE TECH. Можно удаленно. Неполный рабочий день. От 3000 до 6000 $.
Fullstack Junior PHP Developer в Smapse Education. Можно удаленно. Полный рабочий день. От 40 000 до 65 000 ₽.
Аналитик 1С в НЭП. Краснодар. Полный рабочий день. От 35 000 до 40 000 ₽.
Стажер-аналитик ИБ в Банк России. Москва. Неполный рабочий день.
Больше вакансий
#junior
1 марта этого года межпланетная станция «Юнона» завершила 49-й близкий пролёт Юпитера, в рамках которого прошла вблизи облачных вершин газового гиганта — на расстоянии около 8,2 тысяч км. Во время прохождения прибор JunoCam аппарата запечатлел полосы дымки, появляющиеся над циклонами в районе Jet N7.
Необработанные изображения с JunoCam публикуются в свободном доступе на сайте проекта. Любой желающий может скачать переданные «Юноной» данные и создать свой снимок на их основе.
«Самое главное, пожалуй, что бы я хотел донести, — в комментариях к первому посту было очень много советов, что можно сделать, чтобы избежать такой же аварии. Но большинство из этого мы делать не будем. Потому что это ошибка выжившего: защищаться надо от вероятных рисков, а не от крайне маловероятных, где совпадает сразу пять факторов. Точнее, можно и от них, но есть критерий экономической обоснованности»
По следам самого длинного простоя за историю RUVDS: ответы на вопросы
Помните, как на высоких уровнях в игре «Ну, погоди» яйца катились практически непрерывным потоком? В какой-то момент внимание и ловкость подводили и звучал характерный сигнал: всё, жизни закончились. А при включении можно было увидеть двух четырёхруких (шестилапых?) волков, пытающихся поймать все яйца. Казалось бы — игрушка, которая осталась в прошлом, но её образ нет-нет, да всплывает в голове.
Это случается в минуты полной перегрузки делами, когда пытаешься поймать все яйца, закрыть задачи и планы, а все шесть лап опускаются. Приходит усталость: то ли от сделанного, то ли от хронического неуспевания, то ли от переживаний за всё сразу. От этого состояния до выгорания рукой подать. А вокруг все такие эффективные, скоростные, продвинутые или… нет?
«Я ничего не успеваю»
«Я начала пользоваться ClickHouse до того, как это стало мэйнстримом: первый раз я столкнулась c этой базой данных лет 8 назад. <...> В этой статье я расскажу, что такое ClickHouse и почему я считаю его идеально подходящим мощным инструментом для аналитики»
ClickHouse: полезные лайфхаки