Как стать автором
Обновить
11
0
Сергей Михайленко @SergeyMi

Разработчик

Отправить сообщение

Пишем поиск семантически похожих текстов (или товаров) за полчаса на Go и Postgres (pgVector)

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


Казалось бы, в посгресе и так есть неплохой полнотекстовый поиск (tsvector/tsquery), и вы из коробки можете проиндексировать ваши тексты, а потом поискать по ним. Но на самом деле это не совсем то, что нужно — такой поиск работает лишь по чётким совпадениям слов. Т.е. postgres не догадается, что "кошка гонится за мышью" — это довольно близко к "котёнок охотится на грызуна". Как же победить такую проблему?


TLDR:


  1. Преобразовываем наши тексты в наборы чисел (векторы) при помощи API openAI.
  2. Сохраняем векторы в базе с помощью pgvector.
  3. Легко ищем близкие друг к другу векторы или ищем их по вектору-запросу.
  4. Ускоряем индексами.
Читать дальше →
Всего голосов 15: ↑17 и ↓-2+19
Комментарии7

Автоматическая документация API Django Rest Framework с помощью DRF Spectacular

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

Целью этой статьи является демонстрация возможностей drf-spectacular для документирования API и основного набора техник, которые покроют большую часть сценариев использования. Мы настроим генерацию документации и рассмотрим все основные способы гибкой настройки отображения.

Читать далее
Всего голосов 9: ↑9 и ↓0+9
Комментарии3

Как мы разрабатывали бота в мессенджере eXpress для 1-й линии поддержки

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

Привет, уважаемые читатели Хабра!

На связи Лаборатория инноваций Московской биржи

Хотим поделиться с вами нашим опытом разработки чат-бота для 1-й линии поддержки на базе корпоративного мессенджера eXpress.

Расскажем о нашем опыте, ошибках, сделанных выводах и поделимся полезными ссылками для желающих заняться разработкой ботов для eXpress.

Итак, приступим
Всего голосов 2: ↑2 и ↓0+2
Комментарии0

Публикация локального сервера из дома в интернет

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

Приветики. Надеюсь, все отошли от новогодних, и можно писать и читать дальше. Как хозяин умного дома, я состою в чатике по Home Assistant, там прекрасное ответчивое комьюнити,
но периодически задаётся вопрос по тому, как собственно выставить свой веб сервис в интернет. И оказывается, что в двух словах тут не ответишь, а вменяемой инструкции на которую можно дать ссылку - нет. Так что теперь она будет здесь.

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

Мы рассмотрим здесь несколько сценариев - статический белый айпи, динамический белый айпи, и серый. Для серого рассмотрим варианты с готовыми сервисами, с помощью Keenetic и с помощью ssh туннеля. Погнали!

Читать далее
Всего голосов 66: ↑64 и ↓2+62
Комментарии95

NeoMutt: обучаем старый почтовый клиент новым трюкам

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

Приятно ли вам работать в консоли? Этот вопрос вполне способен разделить пользователей на два лагеря. Одни будут утверждать, что именно консоль — тру, а всё остальное для лентяев, неспособных вдумчиво заглянуть в man. Другим же «мышиная возня» с кнопками, переключателями и прочими подсказками гораздо милее, чем необходимость ввода длиннющих команд.

Приверженцы первого лагеря стараются максимальное количество действий выполнять с помощью нативных консольных приложений или хотя бы приложений с TUI-интерфейсом. И если заглянуть в эту «кроличью нору», многое встаёт на свои места. Такой подход прекрасно работает, например, если надо проверить электронную почту. В этой статье мы сделаем это, не отрывая глаз от SSH-сессии с Raspberry Pi. Но вначале небольшой экскурс в историю.

Читать далее
Всего голосов 36: ↑32 и ↓4+28
Комментарии0

Создаём HoneyBot в Telegram

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

Всем привет! В этой статье мы рассмотрим, как создать Telegram HoneyBot для идентификации анонимных пользователей «самого безопасного» мессенджера. А на примере такого бота заодно и наглядно покажем, как избегать деанонимизации в Telegram, и напомним о необходимости сохранять бдительность, кликая по подозрительным кнопкам и ссылкам в нём. За подробностями добро пожаловать под кат!

Читать далее
Всего голосов 19: ↑9 и ↓10-1
Комментарии9

Создание простого калькулятора в android studio

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

В данной статье находится лабораторная работа, направленная на создание приложения калькулятора с базовыми функциями в android studio.

Читать далее
Всего голосов 21: ↑18 и ↓3+15
Комментарии9

KSocrat живее всех живых

Время на прочтение2 мин
Количество просмотров599
Люблю я эту программку — KSocrat.
Маленькая, сидит в трее, никаких излишеств, использует библиотеки Qt.
И вот обнаружился в ней досадный глюк — при переводе некоторых слов прокрутка уходит в конец файла и весь «релевантный» перевод остается далеко позади.

Последний релиз сего чуда был аж 6 лет назад- 17.07.2004, почему забросил ее автор — не понятно.
Да, не умеет она переводить фразы как stardict, да переводит только между eng и rus, но мне больше ничего и не надо, главное — быстро и адекватно перевести незнакомое слово:

Читать дальше →
Всего голосов 10: ↑7 и ↓3+4
Комментарии0

По заветам кота Вжуха: превращаем веб-приложение в сервис на платформе VK Mini Apps

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

VK Mini Apps — это платформа для создания мини-приложений, работающих внутри ВКонтакте. На ней можно создать продукт любого масштаба — от лендинга до сложного сервиса с множеством функций. А ещё вы можете портировать на площадку ваше веб-приложение, чтобы получить доступ к огромной аудитории VK Mini Apps и новым возможностям монетизации. В этой статье поделюсь пошаговой инструкцией, как превратить в сервис любое веб-приложение — на примере планировщика задач.

Всем хабропривет. Я Леонид Шевчук, старший разработчик. Четыре года создаю мини-приложения. Руковожу командой фронтенд-разработки VK Знакомств. Наш сервис разработан как мини-приложение ВКонтакте. Это яркий пример того, что на платформе VK Mini Apps можно делать продукты с очень развитой функциональностью.

Эта статья пригодится тем, кто ещё не работал с нашей платформой, поэтому я буду рассказывать очевидные для опытных разработчиков вещи. Сначала мы освежим в памяти, на каких технологиях делаются современные веб-приложения. Затем научимся портировать в VK Mini Apps — на примере приложения для планирования дел, написанного на React. И сделаем это так, чтобы оно выглядело органично для платформы. А для чего это всё нужно? Сейчас объясню.

Читать далее
Всего голосов 35: ↑33 и ↓2+31
Комментарии11

Как я за месяц написал интерпретируемый язык программирования на Python

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

Привет, Хабр! В этой статье я хотел бы поделиться опытом создания своего языка программирования.

Предыстория

Мне 14. Обучаясь на втором году Яндекс Лицея, нужно было написать несколько проектов. Первым из них стал проект на PyQT5. Я долго думал над идеей и вспомнил, что летом я хотел создать свой язык, но у меня этого не получилось (Тогда я не понимал как работает парсер и абстрактное синтаксическое дерево, поэтому забросил). И вот, мне пришла идея - сделать свой язык программирования и написать для него IDLE (т.к. тема проекта все таки QT). Ещё полгода назад я изучал асинхронность и многопоточность, поэтому именно одну из этих идей я хотел воплотить в своём языке. В данной статье я хотел рассказать устройство интерпретируемых языков и как их создать.

Читать далее
Всего голосов 41: ↑35 и ↓6+29
Комментарии44

Исследование режима Copy-on-Write в pandas. Часть 2

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

В первом материале из этой серии была объяснена работа механизма Copy‑on‑Write (CoW, копирование при записи). Там были упомянуты некоторые ситуации, в которых при выполнении кода осуществляется копирование данных. В этой статье речь пойдёт об оптимизации, направленной на то, чтобы копирование не ухудшило бы средних показателей скорости работы кода.

Мы используем подход, применяемый внутри pandas для того, чтобы избежать копирования всего объекта DataFrame в тех случаях, когда это не нужно. Этот подход позволяет повысить производительность системы.

Читать далее
Всего голосов 17: ↑17 и ↓0+17
Комментарии1

Разбор светодиодной лампы CTORCH

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

В продолжение темы про светодиодные лампы. Это самые простые, маломощные лампы. Что у них внутри? К чему сейчас сводится их разработка и производство?

Читать далее
Всего голосов 8: ↑8 и ↓0+8
Комментарии12

ENTRYPOINT vs CMD: назад к основам

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

Construction


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

Читать дальше →
Всего голосов 28: ↑27 и ↓1+26
Комментарии17

Telegram Django Bot за пару строк

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

На Хабре много статей про разработку Телеграм ботов на Python, в том числе при помощи Django. Однако, большинство из них направлено на первичное ознакомление с API Телеграм.

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

Читать далее
Всего голосов 8: ↑7 и ↓1+6
Комментарии5

Что для меня значит быть программистом

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

Как-то мне написали с Хабра и сказали: Саня, хочешь написать статью про программистов?

Разумеется, я отнёсся к этому скептически. Ладно там девопсины или вайтхэты какие - почитать про них было бы интересно, но вот жизнь программиста... Я сразу вспомнил эти мемы как на КДПВ, которые на самом деле не мемы, а правда.

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

Чтобы получать 300кк/c, нужно всего лишь..
Всего голосов 179: ↑164 и ↓15+149
Комментарии71

Настройка Flutter/Dart на Linux

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

Простая пошаговая инструкция для начинающих в программистов Flutter/Dart.

Flutter прекрасный фреймворк для создания кроссплатформенных приложений. Тем не менее в нашем сегменте интернета всё ещё нет пошаговой инструкции его установки для Linux систем. Данная статья это исправляет. Она рассказывает как настроить Flutter/Dart на Linux легко, почему не стоить использовать некоторые сторонние пакетные менеджеры и чего избегать.

Читать далее
Всего голосов 3: ↑3 и ↓0+3
Комментарии2

Создание надстроек для офисного пакета «МойОфис». Часть 3. Автозаполнение для API и знакомимся с контролами

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

Поскольку, худо ли - бедно, я добился удалённой отладки для надстроек (напомню, так почему-то  назвали разработчики «МойОфис» макросы с возможностью использовать пусть и примитивный, но набор контролов и форм), то зачем останавливаться на достигнутом?

Теперь передо мной встал вопрос об отсутствии банальной в XXI веке «фишке», к которой я привык, как программист о-о-очень избалованный современными IDE, и без наличия которой программирование меня быстро приводит в ярость, а именно – автодополнением кода. Как упоминал в первой ещё статье цикла, его нет даже во «встроенном редакторе» «МойОФис» (в кавычках, ибо на редактор это тянет слабо) для того, что там назвали макросами. То есть, хочешь писать макросы, открывай справочник по Lua API для макросов, и ищи там! Бесит, честно говоря. Но поскольку речь не о нём, то что же  мне предлагает  LuaRT (тоже самое есть и в ZeroBrane Studio, поэтому описанное далее подойдёт как родное и туда)?

Итак - погнали!
Всего голосов 7: ↑6 и ↓1+5
Комментарии0

Создаем блог на Django с опросами и тестами. Краткая инструкция. Часть 2

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

В предыдущей части мы частично разобрали шаблон для нашего блога, выбрали виртуальную машину и запустили на ней нативный веб-сервер Django. Однако он предназначен только для тестирования и запуска приложений во время разработки. Для обработки запросов в продакшене нужно настроить Nginx и WSGI Gunicorn. В этой статье показываем, как это сделать.
Читать дальше →
Всего голосов 45: ↑45 и ↓0+45
Комментарии6

Что нам стоит диаграмму в Python построить: 5 вариантов привлекающей внимание визуализации данных и кое-что ещё

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

Диаграммы помогают визуализировать как простые, так и самые сложные наборы данных. При этом диаграмм — множество видов, у каждого есть свои достоинства и недостатки. О наиболее эффектных и эффективных, реализуемых с Python, мы решили рассказать в сегодняшней подборке. Если вам интересна эта тема – просим под кат. А если у вас есть собственные предпочтения среди графиков (или вы используете что-то ещё), то пишите в комментариях, обсудим. Что же – поехали!

Читать далее
Всего голосов 24: ↑24 и ↓0+24
Комментарии5

Полезные Snippets для Flutter-разработчика

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

Всем привет! На связи Глеб Гусаров, flutter-разработчик в команде aim digital. Мы занимаемся разработкой цифровых продуктов и сервисов и автоматизацией процессов для бизнеса. В статье рассказываю, как создать файл конфигурации сниппетов и делюсь своей подборкой полезных сниппетов.

Читать далее
Всего голосов 3: ↑3 и ↓0+3
Комментарии0
1
23 ...

Информация

В рейтинге
Не участвует
Откуда
Москва, Москва и Московская обл., Россия
Дата рождения
Зарегистрирован
Активность