Как стать автором
Обновить
3
0

Пирожочек

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

Пошаговый план: как превратить Open Source в продукт — от первых пользователей до стабильного трафика

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

От пет-проекта в продукт: мой гайд по превращению GitHub-репозитория в востребованное решение. Разбираем запуск для русскоязычных проектов на Product Radar — разбором ошибок, которые убивают трафик, и тактиками для первых платящих пользователей.

Запустить и не сгореть

Создание Умной Документации на основе Встраиваний OpenAI (Деление на фрагменты, Индексация и Поиск)

Время на прочтение8 мин
Количество просмотров847

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

Цель этой статьи — **не** создавать очередной туториал по сборке чат-бота с OpenAI. Таких материалов уже достаточно.

Вместо этого я расскажу, как **индексировать документацию**, разделив её на **удобоваримые фрагменты**, создать для них **векторные представления (эмбеддинги)** с помощью OpenAI и выполнять **поиск по схожести**, чтобы находить наиболее релевантную информацию по пользовательскому запросу.

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

---

## Зачем?

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

Такой ассистент может использоваться в разных сценариях:

- **Быстрые ответы на частые вопросы**

- **Поиск по документации как в Algolia**

- **Помощь пользователям в навигации по документации**

- **Анализ пользовательских вопросов и хранение их для анализа**

---

## Краткое содержание

Ниже приведены три основные части решения:

1. Чтение файлов документации

2. Индексация документации (разбиение, перекрытие, эмбеддинги)

3. Поиск по документации и интеграция с чат-ботом

---

## 1. Чтение файлов документации

Вместо того чтобы жестко прописывать текст, вы можете просканировать папку и найти все `.md` файлы с помощью `glob`.

Читать далее

Популярные китайские маркетплейсы: как они создавались и что нужно для торговли на них?

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

В КНР десятки национальных интернет-площадок. Самыми популярными считаются: Taobao.com и Tmall.com (аудитория — более 700 млн человек), Pinduoduo.com (более 540 млн), JD.com (330 млн), 1688.com (70 млн).

Расскажем об этих сайтах подробнее, а также о том, что надо, чтобы на них торговать.

Читать далее

Waterfall или Agile, Scrum или Kanban: что выбрать

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

Waterfall, Agile, Scrum, Kanban — от выбора методологии зависит то, как команда будет справляться с разными типами задач, уложится ли она в сроки и будет ли вносить бесконечные правки. Если вы хотите четко понять, чем отличаются эти подходы, какие у них сильные и слабые стороны, и в какой ситуации каждый из них действительно эффективен — эта статья для вас.  

Читать далее

Взлом зашифрованного pdf-файла. Взлом зашифрованных архивов rar, zip, 7z. Утилиты pdfcrack, rarcrack и не только

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

Всех приветствую, читатели Хабра!

В сегодняшней статье я поделюсь примерами кракинга зашифрованных паролями pdf-файлов и файлов архивов. Я покажу примеры работы с такими программами как pdfcrack, rarcrack, John the Ripper. Естественно данные программы работают в линукс (в моем случае Kali Linux), но под Windows я думаю есть аналоги данных программ. И да, в этой статье я затрону примеры связанные с john, хоть возможно на Хабре и имеются статьи связанные с данной программой (а в русскоязычном сегменте интернет точно есть описания как с ней работать), но в рамках данной статьи мои примеры будут уместны и необходимы. Это своего рода онлайн-шпаргалка по использованию данных утилит

Примечание

Правовая информация:

Данная статья создана исключительно в ознакомительных/образовательных/развивающих целях.
Автор статьи не несет ответственности за ваши действия.
Автор статьи ни к чему не призывает, более того напоминаю о существовании некоторых статей в уголовном кодексе РФ, их никто не отменял:
УК РФ Статья 272. Неправомерный доступ к компьютерной информации
УК РФ Статья 273. Создание, использование и распространение вредоносных компьютерных программ
УК РФ Статья 274. Нарушение правил эксплуатации средств хранения, обработки или передачи компьютерной информации и информационно-телекоммуникационных сетей

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

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

Читать далее

JavaScript. Как сделать невероятно быстрый многопоточный Data Grid на 1 000 000 строк. Часть 2/2: работа с потоками

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

Demo | GitHub

Особенности Fast Data Grid:
— Невероятно быстрый
— Многопоточный
— Всего 523 строчки кода
— Нет зависимостей
— Vanilla JavaScript

Попробуйте скролл и поиск по 1 000 000 строк — Fast Data Grid.

В статье расскажу про работу с потоками.

Читать далее

Проксирование из коробки: сравнительный анализ HAProxy, Envoy, Nginx, Caddy и Traefik

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

Всем привет, меня зовут Стас, я техлид в Mish Product Lab.

Тема возникла не просто так: внутри команды у нас было немало споров и дискуссий о том, какой инструмент для проксирования и терминации SSL лучше использовать в различных ситуациях. Изначально все наши гипотезы были основаны больше на личных предпочтениях, чем на реальных данных. Мы долго спорили, надеясь, что истина будет где-то рядом с нашими любимыми решениями. Но в итоге пришли к выводу, что единственный способ получить действительно объективный ответ — это протестировать и сравнить различные варианты на практике.

Именно так родилась идея провести сравнительный анализ производительности HAProxy, Envoy, Nginx, Caddy и Traefik с поддержкой SSL/TLS. Мы хотели понять, какой из инструментов «из коробки» предоставляет наилучшую производительность и минимальные накладные расходы, особенно при обработке SSL-трафика, который, как известно, требует дополнительных ресурсов из-за шифрования и дешифрования.

Читать далее

Почему Big Tech тихонько уходит от Go

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

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

Читать далее

FastExcelWriter — избавление от проклятия PhpSpreadsheet

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

Наверняка каждый php-разработчик, хоть раз сталкивавшийся с чтением или записью Excel-файлов, знает про библиотеку PhpSpreadsheet (в прошлом - PHPExcel). Это мощная библиотека на чистом php, которая позволяет читать, а, главное, создавать Excel-таблицы. И все с ней хорошо, пока работаешь с небольшим набором данных. Но при работе с большими файлами PhpSpreadsheet начинает чудовищно отжирать память, да и производительность резко падает, и php-скрипт, использующий библиотеку, часто просто отваливается по таймауту. И проблема - в архитектуре библиотеки.

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

И вот однажды, когда ресурсы на генерацию большого Excel-файла превысили все разумные значения, я начал искать альтернативу известной библиотеке. Альтернатива нашлась. В отличие от PhpSpreadsheet, тут все было упаковано в один класс, возможности по форматированию и стилям - скромнее некуда, но зато XLSX-файл создавался в разы быстрее, а потребление памяти было вообще копеечное. А все потому, что тут был реализован совсем иной принцип - данные не накапливались в памяти, а построчно сразу выводились в файл. Вдохновившись этой идеей, я и создал свою библиотеку FastExcelWriter.

Читать далее

Ошибки в Go: Обработка, Обертки и Лучшие Практики

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

Go предлагает уникальный и прямолинейный подход к обработке ошибок, отличающийся от try-catch в других языках. Он основан на явной проверке возвращаемых значений, что требует больших проверок, но ведет к более надежному коду. Рассмотрим основы, современные инструменты пакета errors и лучшие практики.

Читать далее

Go defer: что не сказали в книгах

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

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

Когда вы открываете файл через os.Open() или os.Create(), Go выделяет ресурс операционной системыдескриптор файла.

Читать далее

Низкоуровневое программирование под 8086 для любопытных, часть 1

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

В первой части мы:

посмотрим, как работать с памятью и регистрами 8086

узнаем, как написать простую программу на ассемблере прямо в отладчике

изучим работу механизма прерываний и сделаем демонстрационный пример

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

Примеры в бинарном виде доступны по ссылке

Читать далее

Графика в Linux — как это вообще устроено

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

По мотивам недавних постов, затрагивавших тему графики в Linux — как оно вообще там сделано, и как работает, не углубляясь особо в детали.

Здесь не будет технических подробностей и нюансов настройки — так, чисто обзорно сверху по кочкам.

Зачем? Затем, что, как я вижу, сейчас не все пользователи Linux представляют, что именно скрывается за словами «графическая среда», и чем Gnome отличается от Wayland.

Читать далее

Game Engine 3 — оболочка для визуального программирования игр на Python (от идеи до реализации)

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

Привет, Хабр! Сегодня я хочу рассказать о своём проекте — «Game Engine 3», программной оболочке для создания двумерных игр и приложений.

Game Engine 3 — это инструмент для создания 2D‑игр с физикой и анимацией. С открытым исходным кодом, интуитивным редактором визуального программирования на основе нодов и возможностями работы с графикой, физикой и анимацией, он подходит как для новичков, так и для профессионалов. В этой статье разберем, что делает эту оболочку уникальной.

Читать далее

IPsecHub+. Масштабирование и распределение нагрузки

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

Всем привет! На связи Николай Едомский, руководитель группы сетевых инженеров в ЕДИНОМ ЦУПИС.

Представляю вашему вниманию шестую статью из цикла «IPsecHub+».

После обсуждения отказоустойчивости у нас остался один важный нерешенный вопрос в нашей целепостановке - вопрос масштабирования решения.

Читать далее

Как HTTP(S) используется для DNS: DNS-over-HTTPS на практике

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

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

Читать далее

Реализация простого SSE клиента на Dart

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

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

Мы рассматривали два подхода: WebSocket и Server-Sent Events (SSE). Оба варианта соответствовали нашим требованиям, но в итоге мы остановились на SSE — из-за его простоты реализации и использования стандартного HTTP-протокола.

Читать далее

Хранение 1 ТБ в виртуальной памяти на компьютере с 64 ГБ памяти с использованием Chronicle Queue

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

Java разработчики часто сталкиваются с проблемой обработки очень больших наборов данных в рамках ограничений виртуальной машины Java (JVM). Когда размер кучи значительно увеличивается — часто более чем на 32 ГБ, — время паузы при сборке мусора (GC) может увеличиваться, что приводит к снижению производительности. В этой статье рассматривается, как Chronicle Queue обеспечивает хранение и эффективный доступ к набору данных размером 1 ТБ на компьютере с 64 ГБ оперативной памяти.

Читать далее

Flutter дайджест – Март 2025

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

Привет, Flutter-разработчики! 👋 В этом выпуске вас ждут горячие новости, свежие пакеты и интересные видео.

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

Читать далее

Балансировка нагрузки LLM через Nginx

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

💻 Применение Nginx для балансировки нагрузки LLM чат сессий

В сети много примеров подключения LLM модели к Telegram-боту, но при большом числе пользователей нет руководств по распределению нагрузки между процессами — все туториалы предлагают монолит с одной репликой. Эта статья объясняет, как балансировать нагрузку бота для тысяч пользователей, в том числе, после подключения model context protocol для интеграций

Читать далее
1
23 ...

Информация

В рейтинге
Не участвует
Зарегистрирован
Активность