Как стать автором
Поиск
Написать публикацию
Обновить
388.96

Open source *

Открытое программное обеспечение

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

Как «взломать» сайт Мосбиржи и получать лучшие BID и OFFER в Excel — без подписок, с помощью Python и API брокера

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

Excel - главный рабочий инструмент многих частных инвесторов. Здесь ведут портфели, стратегии и мониторинг котировок. Но получить от Московской биржи лучшие цены на покупку (BID) и продажу (OFFER) из стакана прямо в таблицу - задача не из простых. Даже платная подписка на сайт биржи не даёт получать котировки в Excel напрямую.

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

Идея проста: создать локальный сервер-прокладку, который Excel сможет опрашивать через веб-запросы. Сервер будет обращаться к API брокера, получать данные стакана и возвращать их в понятном для себя XML формате прямо в вашу таблицу, в ячейке которой будет отображена нужная цифра.

Фактически по такой схеме можно получать любые параметры с биржи и видеть их в своём локальном Microsoft Excel или его свободном аналоге LibreOffice Calc.

Весь код представлен на GitHub.

Читать далее

А был ли патчик? Как долго живут уязвимости в Рунете

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

Привет, Хабр! Меня зовут Максим Пушкин, я работаю в компании СайберОК. В этой статье речь пойдет о простом вопросе, который мы исследовали в течение года: сколько дней/недель/месяцев в среднем живёт уязвимость в реальном мире? Посмотрим живые цифры и обсудим, какие категории ПО остаются наиболее уязвимыми.

Читать далее

200 тысяч единиц уже готовы, еще миллион — на подходе: разворачиваем контуры в один клик

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

Представьте, что вас каждый день просят «быстренько развернуть стенд» — с OpenSearch, PPO и десятком доработанных инструментов, «ну чтобы все работало». Сначала вы автоматизируете то, что делали руками. Потом автоматизируете автоматизацию. А потом в какой-то момент понимаете: нужно не писать скрипты, а строить полноценный продукт. Так у нас в Orion soft появился HyperDrive — наш способ развернуть Kubernetes-контуры по-настоящему по кнопке. И в этой статье я расскажу, как мы это сделали: от боли и хаоса — к параллелизму, GitOps и здравой инженерной оркестрации.

Привет, Хабр! меня зовут Даниил Рахновский, я — ведущий архитектор в Orion soft. В индустрии DevOps — шесть лет, три из которых веду проекты по HighLoad-инфраструктуре. Основную часть этого времени работал на стороне заказчика, потом перешёл на «тёмную сторону» и теперь работаю на стороне вендора. Занимаюсь сложным проектированием в направлении Professional Services.

Orion soft — это вендор. Мы разрабатываем инфраструктурное программное обеспечение, в портфель которого входит целая экосистема продуктов, а именно zVirt, Nova и другие. В Professional Services мы занимаемся аудитом ИТ-процессов, построением программно-определяемых ЦОДов на собственных технологиях. А еще предоставляем экспертизу вендора и поддержку для пользователей, чтобы наши продукты и технологии правильно и эффективно использовались.

В этой статье по мотивам моего доклада для DevOpsConf 2025 расскажу, как мы решали задачи массового деплоя сложных K8s-окружений. Для этого собрали лучшие практики и применили Open-Source-инструменты, а что-то — дописали с командой самостоятельно. Благодаря этой истории вы убедитесь, что DevOps-инструменты при правильном подходе и оркестрации помогают решать задачи по клику на единственную кнопку.

Читать далее

Пеликаны, сарказм и логические игры — забавные LLM-бенчмарки

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

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

Читать далее

Как я пришёл в open source в 2025-м (с утилитой для бекапа PostgreSQL), чуть не потеряв проект на ~$1500\мес в 2023-м

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

Однажды я столкнулся с проблемой, когда почти потерял коммерчески успешный пет-проект из-за устаревших резервных копий БД (ещё до того, как он стал коммерчески неуспешным). При этом, даже после частичного восстановления, все-таки потерял ~30% прибыли от проекта, много нервов и времени.

Это подтолкнуло меня на разработку своего открытого инструмента для бекапа PostgreSQL. С разными хранилищами, уведомлениями при сбоях и health check'ом. Собственно, о том, как я потерял деньги и затем разработал проект — хочу рассказать в статье ниже.

Читать далее

Шифрование на основе хешей

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

Пишем свой алгоритм шифрования с помощью хеш-функции xxHash со скоростью 6.4 Гбит/с и обгоняем AES и DES (почти).

Читать далее

Без(д)воз(д)мездно, то есть даром

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

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

Читать далее

Маленькое приключение в поиске ошибок. The Battle for Wesnoth

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

В этой статье мы расскажем вам о том, как путешествовали по землям Ирдии. Нас ждали приключения, полные славных сражений, побед и редких наград в виде могущественных артефактов! "Что же это за артефакты такие?" — спросите вы. Конечно же, это ошибки, найденные в коде довольно известной и крайне увлекательной игры "The Battle for Wesnoth".

Читать далее

Профилирование php приложений с помощью Excimer

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

Привет, Хабр. Хочу рассказать историю, как я некоторое время назад занялся профилированием php приложения и как из этого получился мой первый open source пакет.

Читать далее

CoreBus: Часть 5 — попытка использования Native AOT

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

CoreBus (старое название «Терминальная программа») — кроссплатформенный терминал для работы с COM-портами и TCP-сокетами с поддержкой протоколов Modbus TCP / RTU / ASCII.

Ребрендинг, новые фичи и Native AOT (+ боль и разочарование).

Читать далее

Миграция с Firebird на PostgreSQL. Что может пойти не так? Часть 3

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

Третья часть статьи посвященной трудностям миграции с Firebird на PostgreSQL. (1ая часть, 2я часть).

Читать далее

Explyt Spring Plugin: поддержка Quarkus

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

Всем привет! На связи команда Explyt Spring. На этот раз как следует из названия будем говорить о поддержке Quarkus. На первый взгляд может показаться странным, причем тут Spring плагин и Quarkus. Но если разобраться более детально, то Spring также имеет поддержку Java EE аннотаций и к тому же поддержка Dependency Injection является одной из сильной сторон нашего плагина. Да и логика DI в Quarkus сильно проще чем в Spring, можно убедиться в этом прочитав официальную документацию, поэтому можно легко переиспользовать все наши текущие наработки и добавить поддержку Quarkus DI в наш плагин. И это также позволило переиспользовать для него многие другие наши «фичи», о чем будет рассказано ниже.

Читать далее

Веб-агенты, которые действительно понимают веб-сайты: как слой восприятия Notte решает проблему DOM

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

Фундаментальная проблема веб-агентов заключается не в автоматизации — а в восприятии. Как позволить LLM навигировать и действовать на веб-сайтах, погребённых в слоях HTML?

Читать далее

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

QapGen: Создаём мощные парсеры на C++

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

QapDSLv2 — это язык который транслируется в обычный C++ код. Он позволяет удобно и компактно задавать грамматики/правила разбора кода программ, значительно упрощая разработку компиляторов/анализаторов/трансляторов.

QapGen — это генератор дерева_лексеров/парсеров описанных на QapDSLv2. Сама грамматика QapDSLv2 описана на QapDSLv2 на 100%. Поэтому QapGen как основной читатель этой грамматики сам генерирует часть своего кода(весь парсер QapDSLv2).

Основные фишки QapDSLv2 + QapGen — это:

1) Отсутствие этапа токенизации — дерево лексеров разбивает входной поток на лексемы и сохраняет их в строго типизированных древовидных С++ структурах пропуская этап токенизации.

2) Генерация оптимизированного кода полиморфных лексеров.

3) Полное сохранение всех лексем(даже разделители сохраняются, такие как пробелы/переходы на новую строку и комментарии) в результирующем дереве.

4) Возможность сохранить как оригинальное дерево, так и модифицированное обратно в код/текст без потери разделителей/комментариев.

5) Автоматическая генерация кода посетителей(это такой паттерн проектирования).

А теперь пример самой сочной части(рекурсивно самоописывающийся код):

structt_target_struct:i_target_item{
structt_keyword{
stringkw=any_str_from_vec(split("struct,class",","));
" "? // optional separator
};
structt_body_semicolon:i_struct_impl{";"};
structt_body_impl:i_struct_impl{
"{" // жрём скобочку
vector<TAutoPtr<i_target_item>>nested?; //рекурсия!
" "?
vector<TAutoPtr<i_struct_field>>arr?; // парсим поля
" "?
TAutoPtr<t_cpp_code>c?; // остальной С++ код
" "?
"}"
};
structt_parent{
stringa_or_c=any_str_from_vec(split("=>,:",","));
" "?
t_namename;
};
//точка входа в парсер:
TAutoPtr<t_keyword>kw?; //парсимstruct/class
t_namename; //парсим имя
" "?
TAutoPtr<t_parent>parent?;
" "?
TAutoPtr<i_struct_impl>body;
};

Читать далее

Разворачивая свой WAF: открытые инструменты

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

Ранее в блоге beeline cloud мы рассказывали про веб-приложения компаний: почему они часто становятся целями злоумышленников и что способны им противопоставить решения WAF — Web Application Firewall. Сегодня рассмотрим несколько инструментов такого класса от разработчиков из Китая, Франции и Италии.

Читать далее

Миграция с Firebird на PostgreSQL. Что может пойти не так? Часть 2

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

В первой части обсуждалось как отличие реализации MVCC в Firebird и PostgreSQL может привести к сложностям при миграции информационной системы. Напоминаю девиз этой серии статей – "Ваши ожидания – это Ваши проблемы". Рассмотрим еще некоторые моменты, которые позволят Вам не находится в состоянии "обманутых ожиданий" при миграции с Firebird на PostgreSQL.

Читать далее

Как работает база данных Firebird, часть 1

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

В этой серии статей я залезу внутрь реляционной базы данных Firebird. Я не буду рисовать архитектуру в виде прямоугольников, соединённых стрелками. Вместо этого я буду показывать куски кода, описывать, что они делают и как вызывают друг друга, чтобы выполнить конкретную работу.

Читать далее

Миграция с Firebird на PostgreSQL. Что может пойти не так? Часть 1

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

Не секрет, что в последние годы различные компании достаточно часто принимают решение о миграции работающей информационной системы с Firebird на PostgreSQL.

Типичная ситуация выглядит так:

Проект работает несколько лет. Заказчик «верит», что проблема не в проекте, а в СУБД. Firebird — «плохая» СУБД.

Читать далее

Как я встроил Telegram API в EXE и сделал плагин‑платформу с доступом для незрячих

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

После релиза первой версии стало ясно: Telegram порой ограничивает размер и скорость передачи файлов, а ещё появляется зависимость от внешнего API. Чтобы обойти эти ограничения, я решил встроить официальный сервер Telegram Bot API прямо в своё приложение.

Это позволило:

Читать далее

Сделал простое сравнение Excel и CSV Онлайн без загрузки — MaksPilot

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

Здравствуйте! Меня зовут Максим — я Senior Data Engineer, и мне нравится максимально автоматизировать все в своей работе. Последние несколько лет я активно перевожу проекты с устаревшей системы SAS на Databricks. Мне часто приходится сравнивать разные таблицы, и у меня уже есть многочисленные наработки для этого.

Однако недавно возникла необходимость сравнить данные в двух файлах Excel или файле Excel и CSV. Поскольку результатом работы скрипта в SAS был Excel, а по умолчанию таблица из Databricks может быть выгружена в CSV. Прототип был на Databricks, с помощью Python можно загружать Excel в таблицы и также сравнивать.

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

Меня вдохновил продукт с открытым исходным кодом PondPilot, который может легко открывать различные файлы таблиц в браузере, но мне не хватало функциональности, и к тому же нужно было понимать синтаксис Duck SQL.

Так родился мой довольно простой, но удобный проект MaksPilot, который на данный момент решает следующие задачи:

Можно сравнивать Excel и Excel или Excel и CSV. Есть поддержка Excel с вкладками.

Читать далее

Вклад авторов