Обновить

Бэкенд

Сначала показывать
Порог рейтинга
Уровень сложности

Как локально и бесплатно распознать текст лекции или совещания и делать это регулярно

Уровень сложностиПростой
Время на прочтение6 мин
Количество просмотров12K

В новостях всё чаще говорят об «ИИ‑диктофонах» — гаджетах, которые записывают каждый ваш разговор в течение дня, отправляют аудио в облако, превращают его в текст и даже готовят краткую сводку по итогам. Звучит футуристично, но такие решения стоят дорого, требуют постоянной подписки и вызывают вопросы о приватности.

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

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

Сердцем решения станет OpenAI Whisper — мощная технология распознавания речи от создателей ChatGPT. Главное её преимущество — она может работать полностью автономно на вашем ПК, не отправляя никуда ваши данные. К тому же Whisper распространяется как open‑source: исходный код и модели доступны бесплатно — вы можете скачать, использовать и при необходимости даже модифицировать.

Мои скрипты выложены на GitHub.

Кто что сказал

Обзор UDTF в PySpark

Уровень сложностиСредний
Время на прочтение8 мин
Количество просмотров1K

Привет, Хабр!

Сегодня разберём фичу из PySpark — UDTF. Если раньше мы писали UDF и UDAF, то UDTF — это про функцию, которая запускается в секции FROM запроса и возвращает как бы несколько строк для каждой входной записи. Звучит круто.

UDTFs пригодятся, когда на один входной объект нужно получить множество выходных строк. Простой пример: у нас есть строка текста и мы хотим разделить её на слова так, чтобы каждое слово вышло отдельной строкой. Со стандартным UDF такое не сделать (он возвращает одно значение, например конкатенацию или длину). Но UDTF может делать цикл yield внутри и выдавать сколько угодно строк. Итак, приступим к делу.

Читать далее

Демистификация unaligned access undefined behavior в C

Уровень сложностиСредний
Время на прочтение7 мин
Количество просмотров2.7K

Неопределённое поведение (Undefined Behavior, UB) в C и C++ — одна из причин, по которым разработчики всё чаще ищут языки с полностью определённой семантикой. Одним из самых коварных UB является unaligned access, с точки зрения стандарта C это, например, когда происходит попытка разыменовать указатель как uint32_t, а значение указателя (адрес) не кратно четырём. Один из частых сценариев использования, приводящих к такому UB - получение данных по сети и их интерпретация как чисел.

Читать далее

Ivory — удобный инструмент для работы с кластерами PostgreSQL

Уровень сложностиСредний
Время на прочтение3 мин
Количество просмотров3.6K

Ivory — это бесплатный open-source инструмент с веб-интерфейсом, созданный для управления кластерами PostgreSQL, которые работают под контролем Patroni. Если раньше для таких задач приходилось использовать командную строку или Patroni API, то с Ivory всё можно делать через удобный браузерный интерфейс.

Цель проекта — упростить жизнь администраторам баз данных (DBA) и разработчикам:

Читать далее

С чего начать изучение ИИ: лучшие языки программирования в 2025 году

Уровень сложностиПростой
Время на прочтение7 мин
Количество просмотров7.9K

Команда AI for Devs подготовила перевод статьи о том, какие языки программирования для ИИ стоит учить в 2025 году. TL;DR: Python остаётся стартовой точкой, C++ берёт на себя критические по производительности задачи, JavaScript и TypeScript открывают путь к ИИ прямо в браузере, Java удерживает корпоративный сектор, а Go обеспечивает лёгкость продакшн-развёртывания.

Читать далее

Generic интерфейсы в Go: просто, но сложно

Уровень сложностиПростой
Время на прочтение12 мин
Количество просмотров5.3K

Команда Go for Devs подготовила перевод статьи Акселя Вагнера о том, как generic интерфейсы в Go открывают новые возможности и новые сложности. В статье разбираются паттерны, ограничения и компромиссы: от self reference интерфейсов до дилеммы с ресивер-указателями.

Читать далее

Scala Digest. Выпуск 32

Уровень сложностиПростой
Время на прочтение5 мин
Количество просмотров804

Привет, Хабр! Мы — Настя, Эвелина и Миша — бэкенд-разработчики Т-Банка, пишем код на Scala и горим желанием его популяризировать. Мы собираем и агрегируем новости из разных источников, включая Scala Times, блог Petr Zapletal и канал Scala Nishtyaki, добавляем дополнительные новости и собственные комментарии. Мотивацию мы черпаем из желания развиваться и делиться полученными знаниями.

Приветствуем любую обратную связь! (づ ◕‿◕ )づ

Читать тридцать второй выпуск

YDB в мире Java: от нативного клиента до ORM’ов за 1 год

Время на прочтение6 мин
Количество просмотров4.8K

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

Меня зовут Кирилл Курдюков, в 2024 году я выступил в Питере на Joker — конференции для Java-разработчиков — с историей о том, как мы с командой делаем СУБД Яндекса удобной для джавистов.

Под катом статья, написанная по мотивам доклада. Это история о том, как маленькими шагами пройти путь от нативного клиента на Java до поддержки Hibernate, Liquibase, jOOQ и других популярных в мире Java-разработки решений.

Читать далее

Разработка на Java без всего

Уровень сложностиСредний
Время на прочтение7 мин
Количество просмотров8.9K

Снова показываю как можно вести разработку «голыми руками» — без IDE, документации и даже интернета. На этот раз с помощью «пользовательской» Ubuntu Linux и OpenJDK.

Читать далее

Эволюция ForeignKey в Django: от наивной модели до продакшена

Уровень сложностиПростой
Время на прочтение27 мин
Количество просмотров2K

Команда Python for Devs подготовила перевод статьи о том, как легко «сломать» внешние ключи в Django и что с этим делать. Если кратко, то unique_together больше не нужен, индексы на ForeignKey работают не так, как вы думаете, миграции могут блокировать продакшен, а правильный порядок операций и частичные индексы экономят гигабайты и спасают нервы.

Читать далее

Bitrix, Magento и Ensi: как выбрать платформу для eCom, чтобы не пожалеть через год

Время на прочтение9 мин
Количество просмотров1.5K

Magento — дорого, Ensi — сложно, Bitrix — просто. Или не так?

Всем привет! Я Роман, тимлид e-commerce агентства KISLOROD.

Платформа для интернет-магазина — стратегическое решение. Выбор между Bitrix, Magento и Ensi определит, насколько быстро вы запуститесь, сколько потратите на поддержку и сможете ли масштабироваться без боли. Разбираемся, что подойдет малому бизнесу, а что потянет высоконагруженный проект.

Читать далее

Ещё раз о генераторах (и немного о генеративных моделях)

Время на прочтение7 мин
Количество просмотров3.9K

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

Читать далее

Контрактные тесты CDC на Pact

Уровень сложностиПростой
Время на прочтение8 мин
Количество просмотров398

Привет, Хабр!

Сегодня рассмотрим контрактные тесты потребитель-управляемого формата на Pact.

Consumer-Driven Contracts фиксируют минимальный набор ожиданий клиента к API сервиса. Контракт рождается из автотеста на стороне потребителя. Потом провайдер прогоняет этот контракт против своей реализации и публикует результат в Broker. Выигрыш понятный: проверяем не всё API, а только то, что использует потребитель, и фиксируем совместимость версий до выката. Это основная идея Pact и базовая модель его работы.

Сам по себе CDC закрывает разрыв между быстрыми юнитами и медленными e2e. Контракт не заменяет e2e, но даёт дешёвую гарантию «не сломаем потребителя» на каждом изменении провайдера. CDC эффективнее всего на сетях сервисов с явными границами и стабильными интеграциями.

Читать далее

Ближайшие события

Как замедлить программу и почему это может быть полезно?

Уровень сложностиПростой
Время на прочтение6 мин
Количество просмотров5.5K

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

Тогда почему нас может интересовать, как замедлять программы?

Читать далее

JIRA: Как мы сделали многоэтапное согласование в одном статусе (Groovy + Assets)

Время на прочтение5 мин
Количество просмотров2.1K

В этой статье расскажу, как мы реализовали гибкое многоэтапное согласование в Jira. Особенность подхода — все согласование зациклено в одном статусе, без громоздких схем workflow. Вся логика задается в Assets и управляется через Groovy‑скрипт.

Читать далее

Мой удивительно быстрый видеокодек для стриминга

Уровень сложностиСредний
Время на прочтение10 мин
Количество просмотров12K

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

• Отправляем ввод контроллера с машины А на машину Б по сети

• Б рендерит кадр на GPU

• Б кодирует кадр в битовый поток

• Б отправляет результат по сети машине А

• A декодирует битовый поток

• A отображает изображение на экране

• В мозге цели высвобождается дофамин

Каждый этап в этой цепочке повышает задержки, а нам нужно их как можно сильнее минимизировать. Обычно в качестве решения используется ускоренное GPU сжатие видео при помощи какого-нибудь кодека, обычно H.264, HEVC или, если хотите заморочиться, AV1. В идеале весь процесс должен выполняться примерно за 20 мс.

Читать далее

Обратная совместимость в Java-мире

Уровень сложностиСредний
Время на прочтение23 мин
Количество просмотров5.5K

Это текстовая версия доклада с Java Rock Star Meetup, с которым выступал Владимир Ситников (@vladimirsitnikov) — performance engineer, PgJDBC и JMeter committer, а также член программных комитетов JPoint, Joker, Heisenbug, DevOops и SmartDara. Если вы больше любите смотреть видео, то смотрите запись доклада на YouTube или VK Видео.

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

Однако 30 лет Java прожила. Давайте посмотрим, как это всё было и что было в начале.

Читать далее

Парсинг Телеграм каналов, групп и чатов с обработкой в LLM

Уровень сложностиСредний
Время на прочтение10 мин
Количество просмотров17K

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

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

Читать далее

Уровни изоляции транзакций для собеседования и работы

Уровень сложностиСредний
Время на прочтение10 мин
Количество просмотров3.4K

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

Читать далее

Ваш GitHub — ваш личный бренд

Уровень сложностиПростой
Время на прочтение5 мин
Количество просмотров5.3K

Закодили очередную фичу для продукта, который увидят пара тысяч пользователей вашей компании? Написали скрипт, который сэкономил кучу времени, но всем плевать? Чувствуете, что ваше имя как инженера теряется где-то между Jira-тасками и код-ревью?

Да-да, что-то такое я знаю: это примерно каждый первый программист. Оу, вам много платят? Вы настоящий-пренастоящий сеньор? Извините, ни разу о вас не слышал и вряд ли услышу.

А теперь прочтите имена этих людей:
Линус Торвальдс. Ричард Столлман. Гвидо ван Россум. Брэм Моленаар. Джеймс Гослинг.

Они вам о чём-то говорят? Вы слышите их не первый раз? Ещё бы. Ведь это люди, изменившие, без сомнения, целый мир.

Что их всех объединяет? Они не стали знаменитыми, потому что удачно устроились в FAANG (ну или Съелбанк, Тындекс) и вовремя закрыли квартальный OKR. Нет. Они создали проекты с открытым исходным кодом, которые стали фундаментом всего, что мы используем сегодня. Вы бы узнали имя Линуса, если бы он просто тихо перекладывал JSON'ы для какой-нибудь корпорации? Вопрос риторический.

Погрузиться в мир Open Source!🐧🐧🐧