Pull to refresh
25
6
Send message

Как дорожные знаки попадают на карты Яндекса: применяем ML в картографии

Reading time11 min
Views21K

Важное свойство любых карт — их актуальность. Чтобы Яндекс Карты максимально точно отражали дорожную обстановку, мы постоянно мониторим изменения в реальном мире. Один из факторов, который необходимо отслеживать, — это установка или демонтаж знаков дорожного движения.

Меня зовут Владимир Быстрицкий, я руковожу группой AI-картографирования. В этой статье расскажу о процессе детектирования дорожных знаков в картопроизводстве Яндекса: с чего всё началось, как развивалось, какие технологии использовались. Ну и попробую ответить на самый, на мой взгляд, главный вопрос в любой ML-задаче: как собрать датасет и не разориться?

Читать далее

Логирование (аудит) сессий в PostgreSQL

Level of difficultyMedium
Reading time10 min
Views3K

В статье рассматривается логирование соединений с базами данных кластера PostgreSQL. Системы мониторинга создают сессии для сбора метрик и проверки доступности экземпляра. Это создаёт большое число записей в диагностическом журнале кластера, затрудняя его анализ. Администраторы ищут возможность отключения логирования для сессий мониторинга. Такая возможность есть только у параметра log_disconnections. Приводится пример, как с его помощью отключить логирование при создании сессии. Также рассматриваются особенности использования расширений pgaudit и pgaudittofile, которые позволяют выводить логирование соединений в отдельный файл аудита.

Читать далее

Superset deep-linking: как Rison и Jinja превращают сводный дашборд в инструмент фокус-анализа

Level of difficultyMedium
Reading time15 min
Views2.1K

За один клик из сводного дашборда — на «дочерний» с уже выставленными фильтрами. Разберём, как в Apache Superset прокидывать выбранные значения через URL-параметр native_filters в формате Rison и собирать ссылку Jinja-макросами.

Читать далее

Умное зеркало на Raspberry Pi: пошаговое руководство

Level of difficultyEasy
Reading time4 min
Views16K

А давайте соберем умное зеркало на базе одноплатного компьютера Raspberry Pi и программной экосистемы MagicMirror! Оно нам будет показывать погоду, время, записи из календаря и любую другую информацию — для платформы доступны сотни бесплатных модулей с открытым исходным кодом.

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

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

Читать далее

С новым годом: GPT в 500 строках на SQL

Reading time42 min
Views42K

В минувшем году все только и говорили об ИИ и о том, как он может всё за вас сделать.

Мне нравится, когда кто-то или что-то работает за меня. Поэтому решил: попрошу-ка ChatGPT написать за меня новогодний пост:

«Эй, ChatGPT. А ты можешь реализовать большую языковую модель на SQL?»
«Нет, SQL не подходит для реализации больших языковых моделей. Язык SQL предназначен для выполнения запросов к данным, хранящимся в РСУБД и для управления этими запросами. Для реализации большой языковой модели требуются сложные алгоритмы, обширные датасеты, а зачастую — и фреймворки для глубокого обучения. SQL всеми этими возможностями не обладает.»

Что ж, лишний раз убеждаешься, что, если хочешь что‑то сделать хорошо – сделай это сам.

Давайте же воодушевимся этим оптимистическим планом и реализуем большую языковую модель на языке SQL.

Читать далее

Работает даже на парковке: как развернуть свой узел связи на базе Matrix Synapse, Coturn и Element

Reading time8 min
Views21K

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

Этот текст — не про аренду. Он о том, как выковать ключи, возвести стены и поднять флаг над своей собственной, неприступной цифровой цитаделью. Мы развернем на сервере Selectel полноценный узел связи: Matrix Synapse, сервер звонков Coturn и веб-клиент Element. Никаких контейнеров, никакой магии. Только чистая система, командная строка и стопроцентный контроль.

Читать далее

Поднимаем свой Jabber/XMPP сервер в 2025 году

Level of difficultyMedium
Reading time8 min
Views29K

WhatsApp в России депутаты обещают заблокировать уже в очень скором времени. Доверие к Telegram у многих довольно сильно было подорвано после публикации расследования одного издания об особенностях их протокола вкупе с подробностями о том, кто владеет их сетевой инфраструктурой и с кем он связан, да и недавнее появление Telegram в реестре РКН тоже оптимизма в их отношении не добавляет. Max - оставим для сумасшедших и безвыходных, учитывая, кто и зачем его создал. Signal - отличный мессенджер и всем хорош, но в России его тоже периодически пытаются заблокировать.

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

В наше время как self-hosted альтернативу популярным мессенджерам часто упоминают Matrix, например, с клиентом Element. На Хабре есть подробные инструкции, например вот эта: https://habr.com/ru/articles/837904/. Я попробовал, и мне не понравилось. Клиенты тормозные, через нестабильный интернет-канал все работает просто отвратительно, а сам сервер просто неповоротливый и укладывает не слишком богатый на процессор и память VPS даже всего с парой клиентов.

И тут мне вспомнилось про XMPP, он же Jabber. Он родом еще из тех времен, когда люди пользовались процессорами на 200-300 мегагерц и подключались к интернету через dial-up модемы - то есть он изначально очень нетребовательный к ресурсам. Между тем, развитие его не замерло на месте, а на сегодняшний день он умеет почти все то что требуется от современного мессенджера: хранение истории, передача файлов, аудио-видео звонки, end-to-end шифрование, и другое.

Читать далее

Звонки через Jabber в докер-контейнере за 5 минут

Level of difficultyEasy
Reading time6 min
Views41K

В свете сами знаете чего, свой приватный мессенджер и возможность звонков на XMPP стали как никогда актуальны.

Есть быстрый и простой способ: за несколько минут вы поднимаете собственный Jabber-сервер. Дальше — дело техники: рассылаете приглашения маме, бабушке, теще, жене и соседке Даше. После этого можно спокойно звонить и переписываться в защищённом мессенджере, который полностью под вашим контролем.

Звонки идут в зашифрованном режиме, работают p2p. А если у собеседника хитрый NAT, то на помощь автоматически приходит встроенный STUN-сервер.

Клиенты есть под все платформы: Android, iOS, Windows, macOS и Linux.

Читать далее

Как я замену MAX'у искал, или «Matrix и XMPP на своем сервере для самых маленьких»

Level of difficultyEasy
Reading time15 min
Views52K

В свете небезызвестных событий в законотворческой области, столкнулся с необходимостью организовать канал для звонков внутри семьи, т.к. пользоваться звонками в популярных мессенджерах – значит быть подверженным угрозам со стороны мошенников и спонсировать терроризм, а звонить по мобильной сети с ее ужасным качеством связи (несмотря на все потуги операторов в VoLTE и прочие VoiceHD)  в 2025 году – какой-то моветон. А MAX на мои устройства устанавливаться отказался, не знаю почему, я даже не пробовал. Может быть потому что я слишком мало времени провожу в лифте и на парковке?

Что из этого получилось и как повторить — готов поделиться.

Читать далее

HistoryHelper — плагин для DBeaver, который генерирует history-таблицы и триггеры за пару кликов

Level of difficultyEasy
Reading time4 min
Views7.4K

HistoryHelper - плагин для DBeaver

Зачем и почему?

Работая с БД часто приходится вручную писать SQL для создания history-таблиц, которые хранят "историю" о каждой записи из таблицы. То есть, если запись создана/изменена/удалена, для неё создается новая запись в таблице с окончанием "_hist" или "_history".

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

Поэтому, я решил сделать небольшой плагин для DBeaver, который предоставляет удобное меню выбора колонок и событий.

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

В данный момент реализован самый простой функционал.

Читать далее

Мониторинг и анализ производительности бэкенда с помощью ClickHouse и Grafana. Часть 2

Level of difficultyMedium
Reading time14 min
Views4.5K

Всем привет! Я Артём Седых, ведущий разработчик и тимлид проекта банковского сопровождения. Наш сервис — 8-летний монолит на PHP с командой из 39 человек. В цикле статей рассказываю об опыте разработки и внедрения альтернативы pinba: гибкого инструмента мониторинга, который позволяет увидеть живую систему как на ладони и понять, из‑за чего именно проседают определенные экшены. Сегодня, в продолжение первой статьи, закрываем архитектурную часть — поговорим об отправке и хранении метрик. А главное, перейдём к самому интересному: получившимся дашбордам Grafana. На конкретных примерах покажу, какие проблемы удалось обнаружить и какие рекомендации по оптимизации можно извлечь из каждого элемента.

Читать далее

Недооценённые фичи SQL: PIVOT/UNPIVOT, CROSS APPLY/LATERAL и частичные индексы

Level of difficultyEasy
Reading time5 min
Views6.2K

В большинстве материалов по SQL обсуждаются знакомые всем конструкции — SELECT, JOIN, WHERE, группировки, простые индексы. Но когда вы обрабатываете сложные данные, оптимизируете производительность или строите аналитические отчёты, ограничиваться только базовыми операторами — значит добровольно усложнять себе жизнь. В SQL есть мощные, но редко упоминаемые функции, которые помогают решить задачи элегантно и эффективно.

В этой статье, основанной на личных экспериментах и наблюдениях, мы рассмотрим три таких инструмента: PIVOT/UNPIVOT, CROSS APPLY/LATERAL и частичные (filtered) индексы.

Читать далее

Почему Text-to-SQL до сих пор ломается и как это исправить

Reading time3 min
Views3.5K

Если вы когда-нибудь пытались получить нужный отчет из базы данных с помощью ИИ — скорее всего, столкнулись с забавной загадкой: почему-то даже продвинутые языковые модели то спотыкаются на связях между таблицами, то забывают ключевую фильтрацию, то просто возвращают не тот ответ. Формально запрос работает, а по сути — совсем не то. Почему так происходит? И можно ли научить ИИ писать правильный SQL, а не гадать до бесконечности?

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

Читать далее

SQL для всех: от новичка до профи. Полный гид по тренажерам, курсам и песочницам

Level of difficultyEasy
Reading time14 min
Views31K

Привет, Хабр! Часто ли вам приходилось часами смотреть на сложный JOIN, пытаясь понять, почему он работает не так, как надо? Или, может, вы только начинаете свой путь в IT и слышите со всех сторон, что без SQL никуда? Вы правы, так и есть. SQL – это не просто строчки кода, это ваш ключ к данным, настоящий швейцарский нож для любого тестировщика, аналитика или разработчика.

Все мы знаем, что можно прочитать тонну теории, но без реальной практики она быстро выветривается из головы. Именно поэтому я решил поделиться своей коллекцией проверенных тренажеров и ресурсов. Здесь есть все, чтобы вы могли уверенно «заговорить» на языке данных: от уютных песочниц для новичков до хардкорных задачек с реальных собеседований в ведущих IT-компаниях. Так что устраивайтесь поудобнее, добавляйте в закладки и поехали тренироваться!

Читать далее

Дилемма, которая привела к краху Kodak

Level of difficultyEasy
Reading time25 min
Views11K

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

Читать далее

Почти ультимативный гайд по Criteria API с продвинутыми возможностями Hibernate

Level of difficultyMedium
Reading time16 min
Views3.8K

Вам нужно создать сложный запрос к реляционной БД с изменяющимися параметрами?

В этой статье рассмотрим основные возможности Criteria API. Также рассмотрим более продвинутые вещи, например создание CTE и оконных функций, которые есть у Hibernate Criteria API. В статье много примеров, которые смогут помочь при написании запросов Criteria API на практике.

Читать далее

Подсветка колес велосипеда лазерным лучом (или Светопреставление)

Level of difficultyEasy
Reading time4 min
Views11K

В этом тексте вы узнаете зачем велосипедисту нужна квантовая механика.

Те кто катаются на велосипеде не раз ездили в темноте. В таких случаях надо как-то предупреждать окружающих пешеходов о приближении велосипеда. Ставить фары - классическое решение. Но фары быстро сажают батарею.

Я решил пойти другим путем. Как-то раз я обратил внимание на фотолюминесцентные наклейки. Фотолюминесцентные вещества - это такие вещества, которые заряжаются светом, а затем источают свет в темноте. У меня была рядом фиолетовая лазерная указка и я заметил, что лазер охотно заряжает такие наклейки.

Читать далее

Геоданные в PostgreSQL: зачем нужен PostGIS и как он работает

Reading time11 min
Views7.1K

PostgreSQL известна как надежная и универсальная СУБД. Но если нужно хранить координаты, строить маршруты или анализировать границы районов, ее базовых возможностей уже не хватает. Здесь на помощь приходит PostGIS. Под катом разберемся, что умеет расширение и как его использовать.

Читать далее

Java Agent как инструмент обхода лицензий: этичный анализ и защита

Level of difficultyMedium
Reading time34 min
Views3.5K

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

Но сегодня мы исследуем приложение Java‑агент, которое модифицирует код другого Java‑приложения «на лету» и создано для обхода лицензионных ограничений. Называть его мы будем «агент», «вредоносный агент» и т. п.

Меня зовут Сергей Капустин, тимлид бэкэнд-команды продукта Data Ocean Cluster Manager вендора Data Sapience.

Код в нашем примере будет максимально обезличен.

Эта тема рассматривается исключительно в целях исследования вопросов безопасности приложений и этичного использования инструментов изменения кода во время компиляции.

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

Читать далее

Information

Rating
901-st
Works in
Registered
Activity