правок было овер много и провайдерские и с той стороны запреты, сейчас можно просто правой тыкнуть, копировать url вставить, либо, если одно видео на страничке вообще вставить url странички, там , где адресная строка правой тык, скопировать и в проге тык ЛЕВОЙ сначала, потом вставить. код максимально чистый, исходник не буду высылать, его уже пытаются использовать в коммерческих целях )) в обшем создаём папку без кириллицы, закидываем туда файлик, yt-dlp он проверит и скачает последнюю версию сам, если не нужно выше 1080 в принципе всё, если нужно 2-4-8к, скачиваем ffbpeg + ffprobe, ложим рядышком. тупо екзешник, тем кто ставил рандомные патчи для майнкрафта можно вообще не отвечать, как я думаю. прога не обходит замедленные сайты, это качалка контента.
Экспорт данных из базы данных в Excel — это общая задача для разработчиков, которым необходимо анализировать или составлять отчеты о данных. В этой статье мы продемонстрируем, как использовать Free Spire.XLS для Python, библиотеку, которая позволяет создавать и манипулировать файлами Excel без необходимости установки Microsoft Excel. Мы рассмотрим настройку вашей среды, подключение к базе данных MySQL и экспорт данных в файл Excel.
Что такое Free Spire.XLS для Python
Spire.XLS для Python — это мощная библиотека, позволяющая разработчикам создавать, читать и манипулировать файлами Excel в различных форматах без необходимости установки Microsoft Excel. Библиотека поддерживает операции, такие как чтение и запись данных ячеек, форматирование и создание диаграмм.
Настройка вашей среды
Перед тем как погрузиться в код, необходимо правильно настроить вашу среду разработки. Вот шаги, чтобы начать:
1. Установите Python: Убедитесь, что Python установлен на вашем компьютере. Вы можете скачать его с официального сайта Python.
2. Установите необходимые библиотеки: Вам нужно установить библиотеку Spire.XLS и соединитель MySQL. Используйте следующие команды в терминале или командной строке:
3. Настройте MySQL: Если вы еще не сделали этого, установите MySQL на вашем компьютере. Вы можете скачать его с официального сайта MySQL. После установки создайте базу данных для работы. Вы можете сделать это с помощью клиента MySQL, такого как MySQL Workbench, или через командную строку:
CREATEDATABASE excel_db;
Теперь, когда ваша среда настроена, мы можем перейти к подключению к базе данных MySQL.
Подключение к базе данных MySQL
Чтобы взаимодействовать с базой данных MySQL, вам необходимо установить соединение. Следующий код показывает, как это сделать:
import mysql.connector
# Установите соединение с базой данных MySQL
connection = mysql.connector.connect(
host="localhost",
user="your_username", # Замените на ваше имя пользователя MySQL
password="your_password", # Замените на ваш пароль MySQL
database="your_database"# Замените на имя вашей базы данных
)
cursor = connection.cursor()
Экспорт данных из базы данных в Excel
Шаг 1. Извлечение данных из базы данных
Чтобы экспортировать данные из MySQL в Excel, вам сначала нужно извлечь их. Вот как получить имена столбцов и данные конкретной таблицы в вашей базе данных:
# Получите имена столбцов
cursor.execute("SHOW COLUMNS FROM table_name")
column_names = [column[0] for column in cursor.fetchall()]
# Получите данные
cursor.execute("SELECT * FROM table_name")
data = cursor.fetchall()
Шаг 2. Запись данных в Excel
Далее вы запишите извлеченные данные в файл Excel с помощью Spire.XLS. Вот как это сделать:
Вы можете дополнительно настроить вывод в Excel, применяя стили, форматирование или добавляя диаграммы, улучшая визуальную привлекательность вашего файла Excel. Например, вы можете сделать заголовок жирным, настроить ширину столбцов и высоту строк:
# Сделайте заголовок жирным
worksheet.Rows[0].Style.Font.IsBold = True
# Установите ширину столбцов и высоту строк
worksheet.AllocatedRange.ColumnWidth = 10
worksheet.AllocatedRange.RowHeight = 15
Полный код для экспорта данных из базы данных в Excel с помощью Python выглядит следующим образом:
from spire.xls import *
from spire.xls.common import *
import mysql.connector
# Установите соединение с базой данных MySQL
connection = mysql.connector.connect(
host="localhost",
user="root",
password="admin",
database="excel_db"
)
# Создайте объект курсора
cursor = connection.cursor()
# Получите имена столбцов
cursor.execute("SHOW COLUMNS FROM office_cost")
column_names = [column[0] for column in cursor.fetchall()]
В этой статье мы прошли процесс экспорта данных из базы данных MySQL в файл Excel с помощью Spire.XLS для Python. Мы начали с настройки среды, включая установку Python, необходимых библиотек и MySQL. Затем мы рассмотрели подключение к базе данных, извлечение данных и запись их в рабочую книгу Excel. Наконец, мы обсудили настройку вывода для улучшения читаемости. Следуя этим шагам, вы можете упростить процесс экспорта данных с помощью Python.
Всем привет! Я разработчик/маркетолог, и я зае... устал.
Устал от того, что к концу недели кажется, будто я ничего полезного не сделал. Знакомо чувство, когда в пятницу вечером сидишь такой: «Вроде пахал как лошадь, а по факту пустота»?
Это классический синдром самозванца. Баг мышления, когда ты списываешь свои успехи на удачу («просто повезло», «клиент добрый попался»), а любые косяки считаешь доказательством своей профнепригодности.
В какой-то момент мне надоело кормить психологов и ныть друзьям (у них своих проблем хватает). Я решил: я ж программист! Если мозг не хочет запоминать хорошее, я заставлю его это делать с помощью кода.
Так родился «Бадди» - мой карманный цифровой бро, который не дает мне скатиться в депрессию. Рассказываю, как это работает и что там под капотом.
В чем, собственно, проблема?
Проблема в памяти. Самозванец (тот самый внутренний голос) работает как фильтр: он пропускает весь негатив, а позитив отбрасывает. Попытка рассказать друзьям о работе обычно заканчивается ничем. Для них твой сложный деплой или хитрая рекламная кампания выглядят как магия. Они кивают: «Ну, молодец», и разговор уходит в другую сторону.
А начальник, который хвалит просто так - это вообще зверь из Красной книги.
В итоге:
Работа сделана.
Дофамина нет.
Самооценка падает.
Повторить.
Как я это решил (Функционал)
Я не хотел делать очередного «успешного бота» с цитатами Джейсона Стэтхема. Мне нужен был инструмент, который работает с фактами.
1. Принудительный сбор побед Память у меня как у рыбки. Поэтому бот каждый вечер в 21:00 деликатно стучится в личку: "Эй, бро, запиши хоть одну мелочь, которую ты сегодня сделал". Не обязательно "спас мир". Достаточно "пофиксил баг, который бесил неделю" или "не убил заказчика, который просил поиграть со шрифтами".
2. Еженедельный отчет (чтобы офигеть) В воскресенье бот присылает AI-саммари за неделю. И вот тут случается магия. Ты читаешь и думаешь: "Ого, я реально столько всего разгреб?". Это лучшее лекарство от ощущения бесполезности.
По факту
3. Режим «Вентилятор» (или «Поорать в ведро») Иногда советы не нужны. Нужно просто выплеснуть яд. Я сделал режим, где можно материться, жаловаться на тупых клиентов, на погоду, на код. Бот всё это слушает (как бармен), поддакивает, а потом предлагает ритуал сожжения. Ты нажимаешь кнопку, и бот пишет: "Я всё услышал, я всё понял. Давай это уничтожим". И удаляет переписку. Психологически работает на ура как будто реально выговорился и смыл негатив.
Накидываем на вентилятор
4. Киллер-фича: RAG (или «Я помню всё») Обычный ChatGPT забывает контекст. Мой бот - нет. Я прикрутил RAG (Retrieval-Augmented Generation). Бот лезет в базу твоих же записанных побед.
Как это выглядит: — Я:Всё тлен, я плохой специалист, ничего не умею. — Бот:Так, стоп. Ты же во вторник сам писал, что снизил цену лида в два раза через A/B тест. И в четверг закрыл сложный таск по API. Плохие спецы так не умеют. Вот факты, не ной.
Он бьет самозванца его же оружием - фактами, про которые ты сам забыл.
Иногда притворяется пиратом, если попросить
Немного про технику
Никакого рокет-саенса, всё по классике, чтобы работало быстро и бесплатно (пока):
Мозги: Google Gemini (Flash модель - быстрая, дешевая и на удивление адекватная в поддержке диалога).
База: SQLite + aiosqlite (для пет-проекта хватает за глаза).
Векторный поиск: простая реализация, чтобы искать матчи по контексту прошлых записей.
Итог
Пользуюсь сам, подсадил пару знакомых фрилансеров. Эффект есть: уровень тревожности снизился, а синдром самозванца теперь душит не каждый день, а только по праздникам.
Главный инсайт: если ты сам себя не похвалишь - никто не похвалит. А если забываешь хвалить - делегируй это нейронке.
Если кому-то тоже нужен такой цифровой бро, чтобы не сойти с ума в дедлайнах - велкам. Денег не прошу, рекламу не показываю, просто делюсь инструментом.
Ссылка на бота:Тык (Если ссылка не открывается, ищите в поиске ТГ: @noneimposter_bot)
Пишите в комменты, какие фичи еще добавить, чтобы окончательно добить депрессию? 👇
Я уже немного рассказал о процессе разработки и функциях программы. Теперь покажу, что удалось улучшить за неделю, и расскажу об отдельной функции "Что если?".
Рассмотрим развитую розничную сеть: в каждом регионе — 10 магазинов и 1 склад. Ключевые особенности текущей операционной модели:
Доставка до клиента организована на уровне магазинов (не склада).
Товарная матрица жёстко фиксирована: перемещение ассортимента между точками возможно только в рамках допустимых категорий (например, нельзя заменить «Телефоны» на «Хлеб» при перераспределении).
Доступны фактические данные по:
продажам (с доставкой / без),
остаткам на точках,
SKU-уровню заказов с доставкой (включая адреса и объёмы).
На основе этих данных можно реализовать следующие аналитические и управленческие модули:
Определение зон покрытия магазинов По адресам доставок (без привязки к квартирам) и частоте заказов за период (например, за год) строится геопространственная область — зоны ответственности каждого магазина. Границы определяются экстремальными точками доставок.
ABC-анализ по SKU на уровне точки На основе фактических продаж формируется структура ассортимента: приоритетные, средние и низколиквидные SKU — с учётом оборачиваемости и вклада в выручку.
Моделирование альтернативного размещения при закрытии точки Сопоставление товарных матриц, зон покрытия и ABC-профилей позволяет идентифицировать подходящие точки-реципиенты для перераспределения остатков — с минимальными логистическими и коммерческими потерями.
Планирование перераспределения Комбинируя:
текущие остатки (на отправляющей точке),
лимиты хранения и нормативы по категориям (на принимающих точках),
совместимость товарных матриц,
пересечения зон покрытия и клиентской базы, формируется оптимальный план перемещения запасов — как при частичной реорганизации сети, так и при полном закрытии объекта.
Пример конфигурации: Объект А характеризуется своей зоной покрытия и текущими остатками. Объекты Б, В, Г и др. — собственными остатками, ограничениями хранения по категориям, продажной динамикой и клиентскими зонами. Система оценивает все взаимодействия и предлагает планы по перераспределению товаров (Зон ожидается в будущем)
Пример созданный вручную по зонам доставки и расположению объектов.
Компания Х решила закрыть объект А. Теперь нужно оценить, как это повлияет на:
- остатки товаров в других магазинах и на складе;
- зоны доставки других магазинов;
- среднее время доставки клиентам и стоимость перераспределения товарных остатков.
На основе этого анализа мы составим техническое задание для программы. Вот его основные пункты:
1. Определить регион, в котором находится объект А.
2. Выяснить фактические остатки товаров на этом объекте.
3. Найти ближайшие объекты с аналогичной товарной матрицей.
4. Провести ABC-анализ товаров на всех объектах за последний год.
5. Разработать план перераспределения товаров. Учитывать информацию из пунктов 1–3, а также средние затраты на перевозку одного кубического метра (задается при создании региона). Рассчитать оптимальное перераспределение.
Предложенная логика в целом корректна, однако в текущей реализации не учитывается стоимость доставки как функция пройденного расстояния или объёма груза.
Например, можно оперировать не стоимостью за километр, а средней себестоимостью перевозки на единицу объёма — скажем, при известных затратах в 1,5 млн ₽ на перевозку 160 м³ получаем удельную стоимость ~9,4 тыс. ₽/м³. (Цифра условная и приведена для иллюстрации.)
Более гибкий и масштабируемый подход — задать набор типов транспорта («траков») с атрибутами: тип маршрута, грузоподъёмность, объём и соответствующая средняя стоимость перевозки. Это позволит учитывать различия в логистике более точно.
С учётом этого, скорректирую модель и вернусь к дальнейшей проработке.
Программа, следуя установленным правилам, рассчитывает оптимальное размещение товаров. Если отключить АВС-анализ, она будет учитывать только остатки, местоположение и матрицу.
Ниже приведу пример работы данного функционала, данные заглушка и программа не может правильно разместить товары, поэтому все = 0.
P.S. Сейчас создание достоверных данных не является приоритетом.
Окно фактических остатков
Окно ближайших объектов в регионе состоящий из магазинов с доступным хранением.
План перераспределения остатков.
Да, так как и писал - данные тестовые и в самом деле в регионе нет аналогичных матриц
Аналогично скрину выше, не нашли куда перевозить, доставка = 0.
И теперь основной вопрос "А что будет с доставкой? Как сильно закрытие повлияет на SLA по скорости?". Данный расчет сейчас является приоритетной доработкой которой я занимаюсь. Логика которая мною вкладывает в анализ - следующая:
Смотреть на расстояние различных точек на карте
Делить действующую зону на кластеры
Определить оптимальные объекты по времени которые находятся рядом
Сделать ренден всех 3-ех пунктов и показывать изменения в зонировании доставки с отчетом об изменении среднего времени и какие районы слишком далеко.
Для инфраструктуры это очень важный фактор, от которого зависит многое. Так же этот фактор должен работать и при открытии нового объекта. Но сейчас такой функционал не реализован
Функция выбора источника данных для программы и совместная работа с одним исполняемым файлом.
В параллели с влиянием на регион, мне удалось внести не большую доработку в систему. Теперь пользователи могут выбирать исполняемый файл.
Окно выбора исполняемой БД на SQLite 3
2 пользователя работают с одним исполняемым файлом, вносят корректировки, строят дашборды, удаляют или дополняют данными программу. Но как копии приложения узнать что внесены изменения в хранилище? Для этого было реализовано metadata таблица. исполняемое приложение запускается, запоминает метаданные времени БД и проверяет обновления, в случае изменения метаданных моментально сигнализирует о том что необходимо обновить данные.
Если выбрать "Позже" то обновление данных будет отложено на 30 секунд.
В рамках подготовки программы к первому тестированию на живых данных в нашей компании была реализована функция "Отправить отчет об ошибке".
Окно ввода сообщения для описания проблемы
После отправки - логи приходят ко мне в ТГ через бота. Все логи запаковываются в zip архив, параллельно запускает процесс удаления логов из папки.
Информирования о проблеме у определенного пользователя.
Почему я быстрее реализовал совместный доступ и отправку логов, вместо того что бы наполнить данными и показать на примере где все логично? Наверное потому что лень тратить много времени на создание данных, а потом их дополнять и править. Программа не окончательная, система хранения меняется. Например сейчас я понял что стоимость доставки и распределения товара можно завязать на типы траков - буду реализовывать и менять хранение. Менее затратно по времени дописать скрипт, чем создавать новую логику в 1000 строк данных.
Всем спасибо за то что дочитали.
Если есть желание предоставить тестовые данные с логикой - буду очень рад, поможет при тестировании. Шаблон данных могу предоставить.
Понимаю, что пикабушечка не стэковерфлоу, но может тут я быстрее получу совет. Заранее извиняюсь, если мой пост окажется глупым или раздражающим. Я не профессиональный программист, пишу больше для себя. Поиск по гуглу и общение с ИИ не дал результатов.
Собственно в чём проблема. Данный кусок скрипта крутился на сервере с февраля 2025 года. Выполняется пару раз в день. Всё работало исправно. Но неделю назад при чтении метаданных:
я стал получать ошибку: 'Connection broken: IncompleteRead(6429 bytes read, 3811 more expected)'. Число байт в ошибке меняется, но примерно остаётся таким же
Этот же самый скрипт с моих локальных компьютеров выполняется без ошибки. Есть ещё факторы, которые меня ставят в тупик. На этом же сервере есть второй модуль программы, который обращается к этой же таблице раз в несколько часов. Вызов функций ровно такой же, окружение то же самое и таблица открывается без проблем.
В основном скрипте множество таблиц и все они открываются без ошибок, проблема только с конкретно этой. Так же мы пробовали сделать полную копию таблицы "Рентабельность", и она снова не открылась, сделали промежуточную (надёргали нужные столбцы и проставили зависимости) и она открывается. Даже не представляю что можно сделать.
Мне недавно порекомендовали книгу Гэри Нордена «Технический анализ и активный трейдер» (Gary Norden - Technical Analysis & The Active Trader) которая разносит в пух и прах идею теханализа. На русском эта книга никогда не издавалась, но мне попал в руки автоперевод. Мысли в книге мне показались необычными. В этой заметке хочу рассказать о них.
Индустрия иллюзий вместо науки
Одна из главных претензий книги к инфобизнесу или к инфоцыганству, построенному вокруг технического анализа. По мнению автора, популярность линий поддержки, «головы и плеч» и скользящих средних объясняется не их эффективностью, а простотой продажи такой идеи. Это визуально красиво и понятно даже новичку. Курсы продают иллюзию контроля и науки там, где в реальности — маркетинг и манипуляция ожиданиями.
Автор особенно критикует бэктесты и результаты на истории. В реальности их уничтожают комиссии, проскальзывания и изменившаяся структура рынка. То, что выглядит как стройная система, на практике превращается в путь к серии маленьких убытков и редких, но разрушительных ошибок.
Психология важнее графиков
Автор опирается на поведенческие финансы и работы Канемана и Талеба. Его тезис прост: технический анализ работает не потому, что он описывает рынок, а потому что он описывает психологию трейдеров.
Мы видим паттерны из‑за иллюзии контроля. Мы подтверждаем свои идеи из‑за когнитивных искажений. И верим в уровни — и поэтому цена иногда действительно от них «отскакивает». Но это не закон рынка, а эффект толпы. И он краткосрочен.
Важный вывод автора: чтобы торговать лучше, нужно не заучивать фигуры, а уметь распознавать собственные психологические ловушки — неприятие потерь, якорение, предвзятость подтверждения.
Как торгуют «умные деньги»
Любопытно в книге и описание разницы между розничным и институциональным подходом. Банки и маркет‑мейкеры не ищут поддержку или сопротивления. Они работают с потоком ордеров, ликвидностью, волатильностью и фундаментальными причинами движения цены.
Норден сравнивает их с казино или букмекерами. Они не угадывают направление — они зарабатывают на спреде и обороте, снижая риск, а не увеличивая его. Это принципиально другой взгляд на торговлю: не «ставка на исход», а математика вероятностей и управление потоком.
Миф о надёжности паттернов
Автор ссылается на академические исследования, показывающие, что классические фигуры работают на уровне случайности — а иногда хуже. Более того, рынок по‑разному ведёт себя на росте и на падении, и применение одинаковых инструментов в обе стороны — методологическая ошибка.
График — это лишь тень прошлого. Он не показывает главное: кто покупал и почему. Без этого любая линия — самообман.
Вместо индикаторов — контекст и вероятности
Однако во второй части книги автор Гэри Норден не просто критикует, а даёт альтернативу.
Он предлагает смотреть не на то, что было, а на то, что уже заложено в цену. Ожидания рынка важнее новостей. Если все ждут хорошего отчёта, цена растёт заранее. Даже хорошие новости потом дают слабый рост — или падение при малейшем разочаровании.
Автор учит мыслить в терминах сценариев и математического ожидания: оценивать вероятности, потенциальную прибыль и риск. Это не угадывание направления, а поиск асимметрии — ситуаций, где возможный выигрыш значительно больше возможного убытка.
Межрыночная логика против «туннельного зрения»
Отдельно автор подчёркивает важность рынка облигаций. По его мнению, игнорировать их доходности и кривые — это слепота. Если акции растут на эйфории, а облигации сигналят о рисках, — «умные деньги» уже настороже.
Книга постоянно возвращает читателя к одной мысли: рынок — это система взаимосвязанных сигналов, а не картинка со свечами.
Риск-менеджмент без самообмана
Норден критикует и стандартные методы постановки стопов «по волатильности» или индикаторам. Прошлое не даёт гарантии будущего.
Он предлагает обратную логику: стоп‑лосс настраивается от цели по прибыли. Если потенциальная прибыль 7%, стоп в 5% — абсурд. Это отрицательная математика. Управление риском — это не защита эго, а защита капитала.
Итог
«Технический анализ и активный трейдер» — это не книга про быстрые деньги. А ещё книга разочарует тех, кто ищет простой рецепт. Но составит задуматься тех, кто устал терять деньги по «проверенным стратегиям» и готов увидеть рынок без розовых очков.
Книга для трейдеров, которые готовы отказаться от магии линий и начать думать как аналитик, а не как игрок.