Сообщество - Программирование на python

Программирование на python

928 постов 11 940 подписчиков

Популярные теги в сообществе:

4

Как создавать и распознавать штрихкоды с помощью Java

В современном бизнесе и IT-технологиях штрихкоды встречаются повсеместно. От упаковки товаров и логистики до систем доступа и проверки билетов — они обеспечивают быструю и точную передачу информации.

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

В этой статье представлен эффективный инструмент — Free Spire.Barcode for Java. Это профессиональная Java-библиотека для генерации и распознавания штрихкодов, упрощающая разработку. Мы покажем, как легко реализовать генерацию и считывание штрихкодов в вашем Java-проекте.


1. Обзор Free Spire.Barcode и настройка окружения

Free Spire.Barcode for Java — функциональная Java-библиотека для создания, чтения и сканирования различных одномерных и двумерных штрихкодов. Она поддерживает популярные форматы, включая Code 128, QR Code, EAN-13, UPC-A, Data Matrix, PDF417 и многие другие. API библиотеки гибкий и позволяет тонко настраивать внешний вид штрихкода.

Преимущества

  • Широкая поддержка типов штрихкодов — почти все распространённые стандарты.

  • Простая интеграция — совместимость с Maven, Gradle и другими инструментами сборки.

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

  • Гибкая настройка — размеры, цвет, шрифт и расположение текста штрихкода.

  • Чистая реализация на Java — не требует дополнительных зависимостей, работает кроссплатформенно.

Настройка окружения

Наиболее удобный способ подключения — через Maven:

<repositories>

<repository>

<id>com.e-iceblue</id>

<name>e-iceblue</name>

<url>https://repo.e-iceblue.com/nexus/content/groups/public/&lt;/...

</repository>

</repositories>

<dependency>

<groupId>e-iceblue</groupId>

<artifactId>spire.barcode.free</artifactId>

<version>5.2.1</version>

</dependency>

2. Генерация штрихкодов с использованием Spire.Barcode for Java

Библиотека предоставляет интуитивный API для создания различных типов штрихкодов. Рассмотрим примеры генерации QR Code и PZN.

Генерация QR Code с логотипом

QR Code широко используется для мобильных платежей и обмена информацией. Spire.Barcode позволяет вставлять логотип в QR Code для повышения узнаваемости бренда.

import com.spire.barcode.BarCodeGenerator;

import com.spire.barcode.BarcodeSettings;

import com.spire.barcode.BarCodeType;

import javax.imageio.ImageIO;

import java.awt.image.BufferedImage;

import java.io.File;

import java.io.IOException;

public class GenerateQRCodeWithLogo {

public static void main(String[] args) throws IOException {

BarcodeSettings settings = new BarcodeSettings();

settings.set2DData("Hello World"); // Данные для QR Code

settings.setType(BarCodeType.QR_Code); // Тип штрихкода

settings.setShowText(false); // Не отображать текст

settings.hasBorder(true); // Добавить рамку

BufferedImage logoImage = ImageIO.read(new File("data/Logo.png")); // Чтение логотипа

settings.setQRCodeLogoImage(logoImage); // Вставка логотипа

BarCodeGenerator generator = new BarCodeGenerator(settings);

BufferedImage image = generator.generateImage(); // Генерация изображения

ImageIO.write(image, "PNG", new File("QR_CODE_With_Logo.png"));

System.out.println("QR Code с логотипом успешно создан!");

}

}

Примечания:

  • BarcodeSettings — настройки параметров штрихкода.

  • set2DData() — содержимое QR Code.

  • setQRCodeLogoImage() — вставка логотипа.

  • generateImage() — создание изображения.

  • ImageIO.write() — сохранение изображения.


Генерация PZN штрихкода

PZN (Pharmazentralnummer) — стандарт штрихкода для фармацевтической продукции в Германии.

import com.spire.barcode.BarCodeGenerator;

import com.spire.barcode.BarcodeSettings;

import com.spire.barcode.BarCodeType;

import javax.imageio.ImageIO;

import java.awt.image.BufferedImage;

import java.io.File;

import java.io.IOException;

public class GeneratePZNBarcode {

public static void main(String[] args) throws IOException {

BarcodeSettings settings = new BarcodeSettings();

settings.setData("123456"); // Данные для PZN

settings.setType(BarCodeType.PZN); // Тип штрихкода

settings.setShowTextOnBottom(true); // Отображать текст под штрихкодом

settings.hasBorder(true); // Добавить рамку

BarCodeGenerator generator = new BarCodeGenerator(settings);

BufferedImage image = generator.generateImage();

ImageIO.write(image, "PNG", new File("PZN_Barcode.png"));

System.out.println("PZN штрихкод успешно создан!");

}

}

Библиотека позволяет настраивать ширину, высоту, отступы и цвет штрихкода.


3. Распознавание штрихкодов с помощью Spire.Barcode for Java

Помимо генерации, Spire.Barcode эффективно распознаёт штрихкоды с изображений.

Распознавание из изображения

import com.spire.barcode.BarcodeScanner;

public class ReadBarcodeFromImage {

public static void main(String[] args) {

String imagePath = "CODABAR.png"; // Путь к изображению штрихкода

String[] barcodes = BarcodeScanner.scan(imagePath);

if (barcodes != null && barcodes.length > 0) {

System.out.println("Распознанные штрихкоды:");

for (String barcode : barcodes) {

System.out.println("- " + barcode);

}

} else {

System.out.println("Штрихкод не распознан.");

}

}

}

Советы для повышения точности распознавания:

  • Качество изображения — использовать четкие и высокоразрешённые картинки.

  • Угол наклона штрихкода — по возможности горизонтальный или вертикальный.

  • Контраст с фоном — штрихкод должен быть хорошо виден на фоне.

  • Четкость границ — избегать размытия или зазубрин.

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


Заключение

В этом руководстве показано, как использовать Free Spire.Barcode для:

  1. Настройки окружения;

  2. Генерации различных штрихкодов (QR Code, PZN и др.) с возможностью кастомизации;

  3. Распознавания штрихкодов с изображений.

Благодаря широкой поддержке форматов, высокой производительности, простоте интеграции и гибкости настройки, Free Spire.Barcode for Java является идеальным решением для Java-разработчиков, работающих с штрихкодами. Он упрощает процесс разработки и позволяет сосредоточиться на бизнес-логике приложения.

Показать полностью
8

Logistics_Analyzer виджет панель и как она работает

В прошлом посте я рассказывал, что занимаюсь разработкой программы для логистической инфраструктуры в одиночку. (Ознакомиться тут: Разработка своей программы, суровые реальности и как такое продавать? )

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

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



Рассмотрим следующую ситуацию:

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

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

Как упростить эту модель? Программа не является WebView, она десктопная, не имеет серверов и хранит данные локально. "Решение есть!" — скажу я вам. Виджет панель с сохранением состояний в JSON. Получаем универсальную настройку программа у каждого пользователя, но работающего с одной системой.


Элемент включения правого окна панели управления

Элемент включения правого окна панели управления

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

Панель виджетов.

Панель виджетов.

Что бы добавить новый виджет или выключить существующий необходимо просто прожать чекбокс.

А состояние мы просто сохраним в JSON формате.

Нажатие на "Добавить ссылку на дашборд" запускает процесс получения данных из системы. Получается компонент опрашивает БД через отдельное ядро "Есть ли у нас созданные дашборды? Да? Верни название страницы, я создам список для пользователя"

Окно выбора страницы для создания виджета

Окно выбора страницы для создания виджета

Код ответил "Да, у нас есть страница с названием (Тестовый шаблон)", далее дроп окно нам показывает название и имеет возможность выбора из нескольких вариантов.
Для удобства настройки - предоставлена возможность выбор иконки для виджета и создания названия виджета.

Окно выбора иконки. При наведении на иконку, если она GIF - запускается анимация и происходит выделение цветом.

Окно выбора иконки. При наведении на иконку, если она GIF - запускается анимация и происходит выделение цветом.

Вот мы добавили новый тип виджета "Ссылка на дашборды".

Мы добавили новый виджет

Мы добавили новый виджет

При нажатии на элемент виджета программа перенаправит нас на страницу с настроенными графиками и информацией, которые так же настроил пользователь.

Открытая страница дашборда.

Открытая страница дашборда.

Если сравнить с предыдущим постом, видно, что окно с графиком изменилось. Это правильно, ведь для настройки через аналитический куб доступно меню редактирования. В этом режиме пользователь может добавить страницу, новый график или фильтр. Также можно настроить DAX-поле и провести расчеты по нему.

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

Структура панели.

Структура панели.


Ах, да. Говоря о возможностях правой панели, я потерял нить: "Как же это улучшит работу?".

Программа использует переменную, позволяющую выбрать между локальным хранилищем SQLite3 и сетевым. Это обеспечивает совместную работу всех пользователей с одними данными и возможность добавления новых. Человек ИКС настроил скрипты для получения данных, подходящих под программу. Другие пользователи могут не только просматривать наборы кириллицы и латиницы, но и визуализировать данные на карте с интерактивным просмотром. Они также могут создавать свои собственные графики и дашборды.

Хотя я не претендую на замену BI-систем, я понимаю, что не у всех есть средства для внедрения полноценных аналитических систем. JSON структура позволяет настроить уникальный формат панели в соответствии с предпочтениями пользователя.


Чрезмерно благодарен за уделенное время прочтения статьи. Впереди третья часть в следующую среду)

P.S. Местами есть разногласия в теме дизайна, активно перевожу на централизованный QSS стиль темы. Это позволит изменять один файл и менять тему везде. Сейчас частично стили интегрированы в код

Показать полностью 10
15

Алгоритмы против людей: как умники с Уолл-стрит превратили биржу в казино с кодом

Недавно купил книгу «Кванты. Как волшебники от математики заработали миллиарды и чуть не обрушили фондовый рынок», которую её автор Скотт Паттерсон написал ещё в 2010 году. Книга издана на русском языке в 2014, но я познакомился с ней только недавно и понял что в книге очень хорошо расписана хронология развития алгоритмической торговли и чем она заканчивалась. Спойлер: ничем хорошим в итоге, но в моменте очень выгодно для участников.

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

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

Моя книга

Моя книга

Ниже первая часть, которая написана на основе этой книги.

Эволюция алгоритмов: как математика захватила Уолл-стрит

История современной финансовой инженерии — это история про то, как математика постепенно вытеснила интуицию. За полвека Уолл‑стрит превратилась в гигантский вычислительный аппарат: биржу, где решения принимают не люди, а алгоритмы. Скотт Паттерсон в книге «Кванты» подробно исследовал этот путь — от простейшего статистического анализа до сложнейших моделей корреляций и высокочастотного трейдинга.

1960-е: от казино к рынку капитала — математический прорыв

Эд Торп

Эд Торп

Эд Торп - первый квант

Профессор MIT Эдвард Торп стал первым, кто доказал: случайная система подчиняется математике, а значит — её можно обыграть.

Метод: подсчёт карт + критерий Келли (функция максимизации log‑utility)

Критерий Келли решает оптимизационную задачу:

[ \max f(x) = E[\log(1 + xR)] ]

где x — доля капитала в ставке, R — доходность.

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

Переход в финансы: дельта-хеджирование варрантов (1967)

Торп перенёс идеи динамического хеджа в торговлю опционами ещё до публикации формулы Блэка‑Шоулза. Суть алгоритма:

  1. Купить недооценённый варрант.

  2. Продать соответствующую акцию в объёме, равном дельте варранта.

  3. Регулярно обновлять хедж → «реплицировать» поведение опциона.

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

1970-е: формулы приходят на Уолл-стрит

Слева направо - Ф. Блэк, М. Шоулз и Р. Мертон

Слева направо - Ф. Блэк, М. Шоулз и Р. Мертон

Метод Блэка‑Шоулза (1973) базируется на предположении:

[ dS_t = \mu S_t dt + \sigma S_t dW_t ]

и отсутствии арбитража.

Формула позволила впервые «правильно» оценивать опционы.

Портфельное страхование (Dynamic Hedging)

Алгоритм превратил репликацию пут‑опциона в массовый продукт. При падении рынка позиции автоматически хеджировались продажей фьючерсов S&P 500.
В реальности дискретная аппроксимация в условиях высокой волатильности привела к положительной обратной связи, что стало катализатором краха 1987 года.

1980-е: статистический арбитраж и рождение машинного подхода

Метод: парный трейдинг

Был основан на утверждении, что разница между двумя «синхронными» акциями — стационарный процесс.

Математическая форма этого:
[ spread_t = y_t — \beta x_t \approx OU\text{‑процесс} ]

Метод: статистический арбитраж

Это масштабирование парной идеи на сотни и тысячи бумаг:

  • кросс‑секционные регрессии,

  • ранний PCA,

  • ранние ML‑подходы (кластеризация).

Группы APT (Morgan Stanley), Renaissance и D.E. Shaw создали первые полноценные алгоритмические машины извлечения альфы.

1990-е: факторные модели и первые элементы машинного обучения

Юджин Фама (слева) и Кеннет Френч (справа)

Юджин Фама (слева) и Кеннет Френч (справа)

Факторные модели Фама‑Френча

Каждая акция рассматривается как вектор факторных экспозиций.
Цель — построить market‑neutral портфель с экспозицией:

  • long Value,

  • long Momentum,

  • long Size,

  • short всё остальное.

Клифф Эснесс из AQR превратил это в масштабируемый продукт.

Метод: распознавание образов в ценах (фонд Medallion)

Renaissance применяли методы:

  • HMM (скрытые марковские модели),

  • сигнальную обработку,

  • Kalman Filtering,

  • wavelet‑декомпозицию,

  • регрессионные ансамбли.

Это были первые «ML‑прототипы» в торговле.

2000-е: корреляционный риск и кризис

Дэвид X. Ли

Дэвид X. Ли

Метод: Gaussian Copula (Дэвид Ли)

Фактором роста CDO было предложение Дэвида Ли использовать статистическую модель «гауссовой копулы» для расчета цен на CDO. В конце 2005 года исследовательская компания Celent оценила размер глобального рынка CDO в $1,5 трлн и прогнозировала, что рынок вырастет ориентировочно до $2 трлн к концу 2006 года.

Модель:

[ C(u, v) = \Phi_\rho(\Phi^{-1}(u), \Phi^{-1}(v)) ]

Главные упрощения этого:

  • корреляции считаются стабильными,

  • хвостовые риски срезаются нормальным распределением.

Ошибки копулы стали одной из фундаментальных причин кризиса 2008.

Метод: Credit Arbitrage (Боаз Вайнштейн)

Связь «акций ↔ облигаций ↔ CDS» создаёт сеть относительных цен.
Несогласованности приводят к арбитражу структуры капитала.

Итоги книги

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

В книге подчёркивается не злой умысел, а слепая вера в модели. Например, Мэтью Ротман (Goldman) не хотел разрушить рынок — он искренне верил в эффективность рынка и гауссовы распределения, пока реальность не опровергла это.

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

Продолжение: квантовая эволюция уже после выхода книги (с 2010 по 2025)

Я немного дописал на основе открытых источников.

2010-е: Big Data и машинное обучение

ML в квантовых фондах. Фонды Two Sigma, D.E. Shaw, Jane Street внедряют:

  • Random Forest

  • Gradient Boosting

  • k-NN

  • нелинейные факторные модели

Для того чтобы:

  • обнаруживать микро-паттерны,

  • классификацировать ордера,

  • прогнозировать микро-волатильности.

2015–2020: NLP, RL и альтернативные данные

Обработка естественного языка (Natural Language Processing) приходит на рынок. Использование:

  • Word2Vec

  • BERT

  • FinBERT

  • GPT-like моделей

для оценки тональности новостей, отчётов.

Reinforcement Learning в торговле

Оптимизация инструментов маркет-мейкера и риск-менеджмента через RL:

  • DQN

  • PPO

  • Actor–Critic

Альтернативные данные

Используются даже изображения со спутников, квитанции, поисковые запросы, трафик в торговых центрах.

2020-е: предсказание стакана, трансформеры и микро-структура рынка

Алгоритмические модели микро-структуры (LOB). Для этого используются модели:

  • LSTM

  • TCN

  • Transformer-based time series

Которые решают задачи:

  • предсказания перехода между состояниями order book,

  • определения вероятности немедленного движения цены.

Low-latency и FPGA революция

Квантовые фирмы работают на:

  • FPGA-ускорителях,

  • специализированных NIC-картах,

  • colocated-серверах с задержками ~100 нс.

2025+: LLM-Quant эра

Использование LLM в анализе документов. LLM обрабатывают:

  • отчёты SEC,

  • корпоративные публикации,

  • патентные тексты,

  • судебные материалы.

Роль программиста меняется: создание quant-pipeline, где:

LLM → фичи → ML-модель → торговая стратегия.

Итог

Алготрейдинг уже давно не набор формул. Это инженерная дисциплина, на стыке:

  • стохастики,

  • статистики,

  • ML,

  • распределённых систем,

  • сетевой инженерии,

  • оптимизации под архитектуру (CPU/GPU/FPGA),

  • больших данных,

  • системного моделирования.

А рынок — это распределённая вычислительная система, где соревнуются программы.

Автор: Михаил Шардин
🔗 Моя онлайн‑визитка
📢 Telegram «Умный Дом Инвестора»

2 декабря 2025

Показать полностью 5
4

Как конвертировать Excel в JPG с помощью Python (3 практических метода)

Конвертация листов Excel в форматы изображений, такие как JPG, является распространенной задачей в отчетах, панелях управления, визуализации данных и рабочих процессах документов. Хотите ли вы встроить содержимое таблицы в отчет, создать миниатюры, опубликовать данные в вебе или просто поделиться содержимым листа без раскрытия формул, конвертация Excel в изображения на Python предоставляет быстрое и автоматизированное решение. В этом руководстве вы узнаете несколько способов конвертации файлов Excel в изображения JPG с использованием Python и Free Spire.XLS для Python, включая:

  • Конвертацию целого листа в JPG

  • Применение пользовательских полей

  • Создание высококачественных JPG с использованием масштабирования DPI

  • Экспорт только определенного диапазона ячеек

Давайте начнем.

Зачем конвертировать Excel в JPG?

Вот самые распространенные случаи использования:

  • Делитесь содержимым Excel без раскрытия формул: превращайте листы в статические изображения для отчетов, статей и электронных писем.

  • Встраивание в веб: веб-страницы обрабатывают JPG/PNG гораздо лучше, чем файлы Excel.

  • Автоматизированная генерация отчетов: полезно при создании панелей управления или пакетном экспорте содержимого Excel.

  • Графика высокого разрешения: превращайте таблицы в чистые, масштабируемые визуализации для печати.

  • Предотвращение редактирования: изображения гарантируют, что данные не могут быть легко изменены.

Установка необходимых библиотек

Установите Free Spire.XLS для Python:

pip install spire.xls.free

Опционально: установите Pillow для масштабирования DPI:

pip install Pillow

Метод 1: Конвертация листа в файл JPG с пользовательскими полями

При конвертации таблиц в изображения поля иногда могут добавлять нежелательные отступы. Spire.XLS позволяет установить пользовательские поля страницы перед экспортом.

using Spire.Doc;

using Spire.Doc.Documents;

class Program

{

static void Main(string[] args)

{

// Create a Document object

Document document = new Document();

// Load the RTF file

document.LoadFromFile("input.rtf");

// Save as a PDF file

document.SaveToFile("output.pdf", FileFormat.PDF);

// Output success message

Console.WriteLine("RTF file successfully converted to PDF!");

}

}

Метод 2: Конвертация листа в файл JPG с пользовательским DPI (высокое качество)

Spire.XLS поддерживает экспорт векторных EMF-изображений, которые можно увеличить до любого DPI с помощью Pillow. Это идеально подходит для печати или презентаций высокого разрешения.

Этапы

  1. Экспортируйте лист в EMF (векторное изображение).

  2. Загрузите EMF с помощью Pillow.

  3. Увеличьте до пользовательского DPI (например, 300 DPI).

  4. Сохраните как JPG/PNG.

Пример кода

sheet.SaveToImage(

stream,

sheet.FirstRow,

sheet.FirstColumn,

sheet.LastRow,

sheet.LastColumn,

ImageType.Metafile, # Это выход EMF

EmfType.EmfPlusDual

)

workbook.Dispose()

# --- 2. Загрузите EMF из потока с помощью Pillow ---

emf_bytes = stream.ToArray()

img = Image.open(io.BytesIO(emf_bytes))

# --- 3. Увеличьте до 300 DPI ---

target_dpi = 300

scale = target_dpi / 96# Pillow рендерит EMF при ~96 dpi

new_size = (int(img.width * scale), int(img.height * scale))

img = img.resize(new_size, Image.LANCZOS)

# --- 4. Сохраните изображение высокого разрешения ---

img.save("sheet_300dpi.jpg", dpi=(target_dpi, target_dpi))

Почему этот метод мощный

  • Выходное изображение кристально четкое

  • Отлично подходит для печати, встраивания в PDF, графики пользовательского интерфейса и многое другое

  • EMF гарантирует, что текст остается четким даже после масштабирования

Метод 3: Конвертация определенного диапазона ячеек в файл JPG

Иногда нужно только часть листа — например, график, таблицу или область панели управления.

from spire.xls import *

from spire.xls.common import *

# Создание объекта Workbook

workbook = Workbook()

# Загрузка файла Excel

workbook.LoadFromFile("C:/Users/Administrator/Desktop/input.xlsx")

# Получение первого листа

sheet = workbook.Worksheets[0]

# Укажите диапазон ячеек для конвертации

startRow = 1

startCol = 1

endRow = 11

endCol = 5

# Конвертация диапазона ячеек листа в изображение

image = sheet.ToImage(startRow, startCol, endRow, endCol)

# Сохранение изображения в файл PNG

image.Save("CellRangeToImage.jpg")

workbook.Dispose()

Резюме

С помощью Python и Spire.XLS вы можете легко конвертировать листы Excel в изображения JPG с полным контролем над макетом и разрешением. В этом руководстве вы узнали, как:

  • Конвертировать лист в JPG с пользовательскими полями

  • Генерировать высококачественные JPG с использованием EMF + масштабирования DPI

  • Экспортировать определенный диапазон ячеек как изображение

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

Показать полностью
11

Привет обитателям сообщества пикабу!

Это мой первый пост, так что прошу не кидаться помидорами. Мне 23. Я учусь в институте на цифрового инженера горного дела и дополнительно в другом институте прохожу переквалификацию по аналитике данных. Специальность в институте не очень похожа на что-то связанное с программированием, да и базу не дают. Проходили курс по программированию в прошлом году и наелись говна, пытаясь изучить С++ без какой либо базы и понимания что это вообще такое. В начала обучения говорили, что профессия связана с АСУТП, фотограмметрией у маркшейдеров, внедрением ии в производство. Но проучившись 2 года я поняла, что кроме геологии, горного дела и обогащения ничего нам не дадут. Вот теперь с глазами полными ужаса и психотравмой от с++ я хочу попробовать двинуться в сторону самостоятельного изучения программирования. Я себе представляю что программирование это очень доходная штука, но в сфере добычи золота мы очень далеко от внедрения каких-то технологий. Подскажите пожалуйста, насколько актуальна аналитика данных и работа с sql, python, power bi и big data? Возможно ли начать переходить в сферу программирования с таким набором знаний или надо изучать еще кучу всего? Я очень боюсь обосраться с выбором направления, боюсь что пропаду в жизни, так как выбрала неверный путь и буду всю жизнь пилить ноготочки в задроченом салоне красоты.


Апдейт: Сегодня в институт поступил запрос на аналитика от одного из местных ГОКов. Хотят пробовать цифровизироваться. Всем спасибо за комменты!

Показать полностью

Девушка в конфе парней-программистов или очень не-дружелюбное python-комьюнити тупых самцов

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

Итак, по порядку. Начну с того, что одно время (теперь я так уже не делаю, слава богам) я заходила в разные чаты по питону. Прошлась по всем самым крупным, наверное. И везде, вот буквально в каждом из них, повторялась одна и та же грустная история с небольшими вариациями и печальным финалом.

Часть 1. Приход в чатик python-программистов.

Итак, прихожу в очередной пайтон-чатик. Пишу: «привет, меня зовут Кристина, я хочу общаться не темы, связанные с программированием на языке Python…лалала» И сразу набегает куча существ противоположного пола с предложениями типа: «давай код, поправлю», «покажи ошибку, решу» и тому подобное. Честно, всегда меня с души воротило от этой их лицемерной заботы, под которой на самом деле скрывается махровое собственничество и удушливый авторитарный самцовый эгоцентризм. Один из главных аспектов патриархального воспитания, что поделать. Была бы я такой тупой самкой, о каких писала в своём предыдущем посте — кинула бы код в саблайме написанный, в котором внутри вайл тру вавилонская башня из кучи ненужных никому переменных и однотипных ифов, а по земле растекается мутной жижей страшный и непонятный(для неё) еррор, возникший по причине того, что один из этих ифов что-то там поломал. Ну и просто чтобы показать, что я не такая от слова совсем, кидаю им что-то вроде такого вот:

Девушка в конфе парней-программистов или очень не-дружелюбное python-комьюнити тупых самцов

Некоторое время они усиленно скрипят мозгами, переваривая увиденное. Потом бывали дебильные вопросы по типу «аа чо??? а чо это вапще такое там?» или «откуда там взялись self.name и self.family, если нет даже конструктора и их в нём?» , «почему этот странный непонятный метод не вызывается через точку, а при этом всё равно выполняется», «зачем там две черточки с обеих сторон такие» и т. д. Ну понятно, что все эти вопросики исходили от ребят, которые потусовались на всяких степиках, начитались укуса-питона, насмотрелись гайдов от хауди-хо и решили в итоге, что обладают достаточным уровнем познаний, чтобы помогать глупым тян, решать их ошибки в коде, а в возможной перспективе и «познакомиться поближе». И общее отношение очень быстро трансформируется из добродушно-снисходительной заботливости сначала в холодную настороженность а потом уже и в агрессивную враждебность. Ну правильно, я же сломала им один из их главных подсознательных патриархальных стереотипов, согласно которому они априори обладают монополией на глубокие знания и крутые навыки в чем бы то ни было.

Часть 2. Травля, троллинг и харасмент.

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

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

Второе — пытаюсь хоть как-то им отвечать. Но тут бац! Мне выдают пред(варн). То есть им можно, а мне нельзя. Ухожу в режим молчания и ридонли.

Часть 3. Как доказать что ты не верблюд. Точнее, что ты — девушка.

Точнее доказать, что ты биологическая женщина. Зачем? А затем, что от оскорблений они быстро переходили сначала к коллективному созданию теории, что коды, которые я кидала в чат, на самом деле не мои, а их написал какой-то парень «нормальный программист», а потом появлялись предположения о том, что я сама — какой-то «парень» и заявленный изначально мной гендер якобы не соответствует действительности. Если я вдруг начинала что-то после этого писать, то мне отвечали, обращаясь ко мне в мужском роде обязательно и т. д. Меня начинали усиленно именовать «братан», «чувак», «мужик» и т д. Что, опять же, делать бедной девушке в этой ситуации? Да да да, поначалу я была такой наивной, что (по большей части ради эксперимента, но и с небольшой надеждой что-то изменить) начинала реально пытаться им как-то доказать их неправоту в этом плане. Но не тут то было. Являясь девушкой, не так то просто доказать, что ты девушка. Отправка голосовых сообщений не помогала. Фоткаться рядом с монитором, на котором открыт этот чат или мой аккаунт в вк — тоже ни к чему это не приводило(хорошему во всяком случае). Буквально, чем больше я предпринимала таких попыток — там сильнее они начинали верещать, что я «мужик». Ну, или в лучшем случае, трансгендерное существо. Ну конечно, ведь лишь «трёхногим» дано от рождения великое право писать хороший код. На предложения-требования пойти в голосовой чат я всегда отвечала отказом, потому что слышать их я не в состоянии просто физически (мои индивидуальные особенности). Я и чужие голосовые сообщения в чатах не слушаю никогда. И в итоге они окончательно навешивали на меня ярлык «ненастоящей девушки», «гея под женским аккаунтом» и тому подобные бредовые идиотизмы. Сей горький опыт научил меня многому. Теперь я даже в своем личном чате больше не отправляю никакие голосовые сообщения и не кидаю фотки, из которых несомненно видно, к какому полу я отношусь. А в чужие чаты больше не хожу. Только на аву ставлю свой реальный фейс, сильно обработанный нейросеткой в приложении. Однако внешнее сходство с оригиналом и при этом крайне велико. Считаю, что этого более чем достаточно. Если какие-то дауны хотят думать про меня что-то другое — то это их святое право (быть клиническими идиотами).

Часть 4. Эпилог.

Чем всё это всегда заканчивалось? Как правило, я сама покидала эти помойки (ведь из всего вышесказанного становится ясно, что никак иначе эти «юзерфрендли пайтон-комьюнити чаты» назвать нельзя) и шла в новые(пока все они не кончились). Но бывали интересные случаи, когда я не успевала уйти и меня исключали. За что же, спросите вы? Ну, однажды мне админ написал: извини, из-за тебя начался «срач», потому я вынужден тебя исключить из беседы. Но такое было пару раз всего. И то потому, что в чате находилась парочка более менее разумных существ, которые вставали на мою сторону и тоже сразу начинали подвергаться коллективной обструкции и откровенной травле, как "подсосы", куколды и "п-лизы". А так обычно просто кикали из злобы и личной неприязни. Это меня не удивляло. Было удивительно другое. Опять же ради эксперимента и в рамках социологического исследования я тихо заходила в те же чаты с другого неприметного акка и тихо сидела, читая, что про меня они там пишут. И поначалу выпадала в осадок от того, что там было. Что же такого там было, спросите вы? О, это было нечто. Просто верх приматского слабоумия я бы сказала. Что самое любопытное, постфактум они почему-то начинали всё же признавать то, что я действительно скорее всего тян а не кун. Но при этом про меня начинали различные слагаться мифы и легенды. Какого бреда там только не было. В программировании я по большей части занимаюсь написанием вк-ботов и эти … даунлоады начинали на полном серьёзе писать что:

1. Мои боты — хрень полная, таких любой школьник напишет на коленке в туалете во время перемены. (вряд ли, на несколько тысяч строк кода времени тупо не хватит)

2 Боты норм, но они «не мои». Варианты — скачаны мной с гитхаба, написаны для меня кем-то другим(разумеется, кем-то мужского пола).

3 Я «не умею писать код»!(тут особое хаха)

4 Я «не знаю python вообще»!!(тут просто ржунимагу)

5 Некий сгенерированный ими искусственный образ меня - «жирная, прыщавая уродина. парня нет — вот и бесится», «шлюха, шалава, прошмандовка». Причем первое прекрасно сочетается со вторым. Ну и «мужик» тоже никуда не исчез и так же гармонично вписывается в картину первых двух утверждений. Там ещё «школьница 12 лет» и т. д. Короче если джоин сделать, то «жирная уродливая шлюха школьница мужик», как-то так. Ах, ещё забыла слово «тупая», да. Я — тупая (тут даже комментарии излишни, стоит просто почитать некоторые мои посты здесь даже). В плане интеллекта и умственного развития я на много порядков превосхожу их всех, вместе взятых - это должно быть очевидно любому, даже не очень далекому индивиду, кто их читал.

И вот после всего этого они, «трёхногие» хозяева планеты, продолжают себя считать «вершиной эволюции», а нас, милых и прекрасных нежных "двуногих" созданий — существами второго(или даже третьего) сорта.

Если подытожить, то всё это — и правда «вершина». Просто верх человеческой(не только самцовой) глупости, мелочности, тотальной умственной ограниченности и эгоцентризма. Самки тоже виноваты в том, что всё так сложилось. Но не буду углубляться в фем-дискурс, это не к данному разделу относится. К тому же я не феминистка в обычном представлении, даже близко нет.

И не стану напоминать о том, что так называемый «риаллайф», физический мир, реальность — совсем не так реальны на самом деле, как это почти всем людям кажется. Это тоже относится к моей общей тематике, а не к данному разделу. И потому в качестве послесловия скажу так, как говорят «нормальные» люди — в реале (физическом мире) я вот прям полнейшая диаметральная противоположность всего того бреда, который про меня сочинили и до сих пор сочиняют разные умственно-отсталые существа в интернете.

По порядку:

1 «Жирная(толстая) прыщавая уродина» - я очень худая, буквально соответствую выражению «кожа да кости», прыщей нет и даже в подростковом возрасте не водилось. И не уродина, даже близко нет. Даже далеко. Напротив, когда накрашусь, сделаю причесон, оденусь по моде и выползу в большой город (что бывает примерно пару раз в году) — то приматы постоянно жрут своими потными похотливыми глазёнками моё прекрасное стройное тело и моё милое личико.

2 «Бесится, что парня нет». Тут они правы кое в чем. Парня и правда нет, но не бешусь. А радуюсь. Ну и нет его не потому, что на меня внимания они не обращают — обращают даже слишком, если видят. А просто потому что я их не воспринимаю в качестве объекта для чувств и возможных отношений. А механический секс с ними ради ощущений меня давно уже не интересует.

3 «Боты не мои» - нет, они мои. Я даже написала микролибу для создания ботов, что наглядно доказала, выложив скрины кода одного из моих ботов на ней (методов с такими названиями и общей архитектурной специфики нет ни в одной общеизвестной библиотеке для создания вк-ботов на питоне). Много раз у себя в чате я в рантайме фиксила некоторые баги в своих ботах, многие( в том числе и некоторые участники вышеозначенных пайтон-помоек ) это видели своими собственными глазами.
Боты приватные("заточены" под мои чаты), выполняют только мои команды и тех участников, которым в этих ботах я даю повышенные права. Следовательно я имею прямой доступ к их базе данных, а не использую чьи-то чужие ресурсы. Какие ещё нужны тут доказательства?

4 «Плохо знаю язык Python или не знаю его вообще» - ну тут даже говорить нечего особо. Мой старый аккаунт вконтакте весь облеплен примерами моего кода, из которых очевидно, что знаю я его распрекрасно. Просто ради развлечения легко и непринужденно юзаю такие вещи, как сложные декораторы, множественное наследование, метаклассы и дескрипторы. А об этих вещах вообще мало кто даже из так называемых «миддлов» знает. Прочитала наиболее серьёзные книги по питону, в том числе М. Лутца и Б. Любановича. В ООП питона разбираюсь на академическом уровне.

5 «Не являюсь биологической женщиной» - нет, являюсь. Более чем. В самой полной мере плоть до соответствующего набора хромосом и всяких мелких женских проблемок и больших(правда не всем доступных) радостей, чем весьма довольна. Близкие друзья меня видели, слышали, общались даже некоторые вживую. А всяким мимокрокодилам и мамкиным школотроллям я доказывать сей факт даже не обязана от слова совсем. И не собираюсь больше этого делать.

Не верите? Считаете иначе? Да пожалуйста, ради всех богов Асгарда! Ваше право думать что угодно. Больше ничего никому доказывать я не собираюсь. А уж тем более в чем-то оправдываться перед вами. На этом всё. Надеюсь, вам понравилось(а если нет, то ваши проблемы, опять же). Не вступаю в полемику и какие-либо дискуссии в комментариях.

Пообщаться со мной и получить ответы на вопросы можно там:

чат в вк: https://vk.me/join/AZQ1dxyBWxOm9k0RMt1hwxdk

чат в тг: https://t.me/+FbDIvoJceAJjZjEy

Показать полностью 1

Оффлайн переводчик на Android

Переводчик работает за счёт предустановленного(прописанного) словаря в код. Словарь можно пополнять новыми словами.

5

Как удалить пустые строки и столбцы в Excel с помощью Python

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

Установка необходимой библиотеки

Мы используем Free Spire.XLS для Python для работы с файлами Excel (XLS, XLSX, XLSB и т. д.) без необходимости в Microsoft Excel. Эта библиотека предоставляет широкий спектр возможностей, включая:

  • Создание, чтение и редактирование файлов Excel

  • Форматирование ячеек, строк и столбцов

  • Извлечение данных из таблиц

  • Конвертация файлов Excel в другие форматы

Чтобы начать, вы можете установить библиотеку из PyPI с помощью следующей команды pip:

pip install spire.xls.free

Удаление пустых строк и столбцов в Python

Следующий скрипт на Python демонстрирует, как эффективно удалить пустые строки и столбцы из файла Excel.

Пошаговое объяснение:

  1. Загрузите файл Excel: Скрипт начинается с загрузки входного файла Excel с помощью Workbook.LoadFromFile().

  2. Получите таблицу: Первая таблица извлекается для обработки.

  3. Удалите пустые строки: Код проходит по строкам в обратном порядке (чтобы избежать проблем с сдвигом индексов) и удаляет любые пустые строки с помощью IsBlank.

  4. Удалите пустые столбцы: Аналогично, он проверяет каждый столбец на наличие пустых ячеек и удаляет их, если они пустые.

  5. Сохраните измененный файл: Очищенный файл сохраняется в указанном выходном каталоге.

Вот полный код:

from spire.xls import *

from spire.xls.common import *


# Загрузить файл Excel

workbook = Workbook()

workbook.LoadFromFile("Input.xlsx")


# Получить первую таблицу

sheet = workbook.Worksheets.get_Item(0)


# Проход по строкам, начиная с последней к первой

for i in range(sheet.Rows.Length - 1, -1, -1):


# Проверка, является ли строка пустой

if sheet.Rows.get_Item(i).IsBlank:


# Удалить пустые строки

sheet.DeleteRow(i + 1)


# Проход по столбцам, начиная с последнего к первому

for j in range(sheet.Columns.Length - 1, -1, -1):


# Проверка, является ли столбец пустым

if sheet.Columns.get_Item(j).IsBlank:


# Удалить пустые столбцы

sheet.DeleteColumn(j + 1)


# Сохранить измененный файл

workbook.SaveToFile("output/DeleteBlankRowsAndColumns.xlsx", FileFormat.Version2016)


# Освободить ресурсы

workbook.Dispose()

Как удалить пустые строки и столбцы в Excel с помощью Python

Примечания:

  • Цикл выполняется в обратном порядке (range(…, -1, -1)), чтобы предотвратить несоответствие после удаления.

  • IsBlank проверяет, является ли вся строка или столбец пустым.

  • Выход сохраняется в формате Excel 2016, но поддерживаются и другие форматы (например, XLS, CSV).

Заключение

В этой статье мы рассмотрели, как определить и удалить пустые строки и столбцы в таблице с помощью Free Spire.XLS для Python. Надеюсь, это будет полезно!

Показать полностью 1
Отличная работа, все прочитано!