Обновить
1024K+

Open source *

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

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

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

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

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

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

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

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

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

Читать далее

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

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

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

Читать далее

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

Время на прочтение20 мин
Охват и читатели8K

Представьте, что вас каждый день просят «быстренько развернуть стенд» — с 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 мин
Охват и читатели2.2K

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

Читать далее

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

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

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

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

Читать далее

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

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

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

Читать далее

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

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

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

Читать далее

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

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

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

Читать далее

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

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

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

Читать далее

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

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

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

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

Читать далее

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

Время на прочтение10 мин
Охват и читатели4.2K

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

Читать далее

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

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

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

Читать далее

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

Время на прочтение6 мин
Охват и читатели1.4K

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

Читать далее

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

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

Время на прочтение36 мин
Охват и читатели8K

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 мин
Охват и читатели17K

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

Читать далее

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

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

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

Читать далее

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

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

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

Читать далее

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

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

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

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

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

Читать далее

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

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

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

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

Читать далее

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

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

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

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

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

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

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

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

Читать далее