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

Python *

Высокоуровневый язык программирования

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

Добавляем подписку с Telegram Stars в свой апп

Я очень радовался 14.08.2024 из‑за выхода очередного релиза Телеграм, в котором они анонсировали подписки за звезды, потому что это сильно облегчало мое взаимодействие с клиентами: они один раз подписываются и далее не имеют проблем с повторными платежами, вместо этого звезды тихонько списываются у них с счетов. В этом посте я расскажу, как прикрутил подписку в звездах к своей Telegram Mini App (TMA).

Вот как выглядит глазами клиентов списание звезд в пользу вашей аппы. Заметьте, никаких предупреждающих писем, как у Stripe, например.

При каждом снятии звезд клиент получает подобное сообщение
При каждом снятии звезд клиент получает подобное сообщение

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

https://storage.googleapis.com/memes-repo/tutorial/100000998111.png

Отменить подписку можно, если вы зайдете в ее детали.

https://storage.googleapis.com/memes-repo/tutorial/1000009980.png

Теперь, когда вы представляете все визуально, то опишу последовательность вызовов, которые вы должны выполнить.

  1. Создать счет на подписку.

  2. Подтвердить оплату.

  3. Принять первое и последующие сообщения об оплате.

### Создание счета

Для создания счета вызываем метод createInvoiceLink.

    def create_invoice(admin_chat_id: str, 
                       channel_id: str, 
                       title: str, 
                       description: str,
                       tariff_id: int, 
                       tariff_price: int,
                       ) -> dict:

        data = {
            "chat_id": admin_chat_id,
            "title": title,
            "description": description,
            "payload": json.dumps({"t": tariff_id}), 
            "provider_token": "",  # Empty
            "currency": "XTR", # required
            "prices": [{'amount': tariff_price, 'label': title}],
            "subscription_period": 2592000,
        }

        r = requests.post(f"{TG_API_URL}{TG_OP_SEND_INVOICE}", json=data)

Вещи, на которые обращаем внимание:

  1. provider_token пустая строка

  2. currency обязательно строка XTR

  3. subscription_period обязательно 2 592 000

  4. prices содержит только один элемент

### Подтверждение оплаты

Для получения подтверждения оплаты счета вам нужно добавить в ваш webhook (allowed_updates) подписку на pre_checkout_query. После этого вы начнете получать update c данным полем и структурой.

Когда вы получаете такой апдейт, вам нужно отреагировать на него в течение 10 секунд: принимаете или отклоняете (например, если этот счет уже был оплачен и другие краевые условия).

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

        pre_checkout_data: PreCheckoutData = {
            "id": packet["pre_checkout_query"]["id"],
            "currency": packet["pre_checkout_query"]["currency"],
            "total_amount": packet["pre_checkout_query"]["total_amount"],
            "invoice_payload": json.loads(packet["pre_checkout_query"]["invoice_payload"])
        }

Для подтверждения или отклонения оплаты счета используйте метод answerPreCheckoutQuery.

### Принять сообщения об оплате

На мое удивление сообщение об оплате встроено в существующий объект Message, так что не нужно дополнительно подписываться на новые источники данных. Вместо этого, мы просматриваем все message в поисках поля successful_payment или refunded_payment и записываем в статистику (для возможного возврата в том числе).

Обратите внимание! В структуре SuccessfulPayment есть параметр is_first_recurring, и я думал, что он True для первого платежа подписки и False для последующих, но! в последующих его просто нет (это допустимо, так как это необязательный параметр).

На этом все, как только вы начали получать successful_payment, вам не нужно больше делать ничего, чтобы клиент продлил подписку.

P.S. Вы всегда можете обновлять срок подписки при получении данного сообщения, читая поле subscription_expiration_date. Если successful_payment перестал приходить, то и подписка не обновится.

Ваш Дима из TG Defender, защита вашего Telegram канала от наплыва ботов на стиле.

Теги:
0
Комментарии0

Лучше всего LLM подходят для работы с структурированными данными: CSV, JSON, XML и так далее. Сетевой трафик отлично подходит для анализа и трансформации с помощью AI.

Для этого понадобится установить зависимости и скачать модельку:

pip install ollama graphviz
ollama run qwen2.5-coder:7b

Ollama это очень популярный проект для работы с AI моделями локально, предоставляет не только CLI но и отличную библиотеку на Python. Например ее можно использовать для анализа и трабшутинга сетей.

Необходимо сделать снимок сетевого трафика с помощью tcpdump:

tcpdump -i en0 -w capture.pcap -c 100000

Скрипт распарсит pcap файл и передаст содержимое в qwen2.5 – одну из лучших моделек в своей весовой категории:

Traffic Analyzer
Traffic Analyzer

В рамках парадигмы AI PC\AI Workstation ассистенты ИИ – это не какой-то облачный сервис, а это обычная программа, которая «живет» в IDE, Браузере, офисном пакете или терминале.

Скрипт:

#!/usr/bin/env python3
import subprocess
import ollama
import argparse
import re
import logging
from graphviz import Source
from typing import Optional, List

logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s')

PROMPT_TEMPLATE = """[INST] <<SYS>>
You are a network analysis expert. Analyze this tcpdump output and:

1. List top 3 connections
2. Identify protocol patterns
3. Generate a Graphviz DOT representation of the following network traffic

Format response with:
- Markdown analysis
- Graphviz diagram in ```graphviz block
- Security recommendations
- Find anomalies
<</SYS>>

PCAP Data:
{data}
[/INST]"""

def extract_code_block(response: str, language: str) -> Optional[str]:
    pattern = fr'```{language}\n(.*?)```'
    match = re.search(pattern, response, re.DOTALL)
    return match.group(1).strip() if match else None

def validate_dot_code(dot_code: str) -> bool:
    try:
        Source(dot_code)
        return True
    except Exception as e:
        logging.error(f"Invalid DOT code: {e}")
        return False

def analyze_pcap(pcap_file: str, graphviz_output: str, context_size: Optional[int] = None) -> str:
    try:
        logging.info(f"Reading PCAP file: {pcap_file}")
        result = subprocess.run(
            ['tcpdump', '-r', pcap_file, '-n', '-q', '-t'],
            capture_output=True, text=True, check=True
        )
        pcap_text = result.stdout[:3000]
        logging.info(f"Extracted PCAP text: {pcap_text[:100]}...")

        options = {}
        if context_size:
            options['max_tokens'] = context_size

        logging.info("Sending data to Ollama model...")
        response = ollama.chat(
            model='qwen2.5-coder:7b',
            messages=[{'role': 'user', 'content': PROMPT_TEMPLATE.format(data=pcap_text)}],
            options=options
        )['message']['content']
        logging.info("Received response from Ollama model")

        dot_code = extract_code_block(response, 'graphviz')
        if dot_code and validate_dot_code(dot_code):
            with open(graphviz_output, 'w') as f:
                f.write(f"# Generated from {pcap_file}\n")
                f.write(dot_code)
            logging.info(f"Graphviz DOT code saved to {graphviz_output}")
        else:
            logging.warning("No valid Graphviz DOT code found in response")

        return response

    except subprocess.CalledProcessError as e:
        logging.error(f"tcpdump command failed: {e}")
        raise
    except Exception as e:
        logging.error(f"An error occurred: {e}")
        raise

if __name__ == "__main__":
    parser = argparse.ArgumentParser(description='PCAP AI Analyzer with Code Generation')
    parser.add_argument('pcap_file', help='Input PCAP file')
    parser.add_argument('--graphviz', help='Output file for Graphviz diagram')
    parser.add_argument('--context-size', type=int, help='Optional context size (max tokens) for the Ollama model')
    args = parser.parse_args()

    try:
        report = analyze_
Теги:
+4
Комментарии0

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

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

Так вот, в качестве решения этой проблемы разрабатываю приложение для Android с небольшим сервером на PC (начало только под Windows).

Основной фишкой станет регулировка яркости экранов, удаленное отключение ПК, переключение треков в плеере.

Телефонное приложение будет максимально чистым: без рекламы, подписок или дополнительных платежей.

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

Все будет сделано в меру моих умений и возможностей. Благодарен за внимание! По мере продвижения работы буду дополнять этот пост новыми деталями.

А какого функционала не хватает вам ?

Пока все в стиле демо
Пока все в стиле демо

Теги:
+1
Комментарии11

Коммерческие LLM и Agentic AI захватили внимание широкой публики. Но за всем этим шумом, незаслуженно забытым оказался Openvino. Это лучшая точка вхождения в увлекательный мир AI.

Устанавливаем зависимости:

pip3 install jupyter

Клонируем repo:

git clone https://github.com/openvinotoolkit/openvino_notebooks.git

Запускаем коллекцию Jupiter notebooks с моделями:

cd openvino_notebooks
jupyter lab notebooks/README.md
Openvino notebooks
Openvino notebooks
Теги:
+2
Комментарии0

Я периодически просматриваю, рекомендации GitHub — там попадаются интересные библиотеки и люди. И вот после написания статьи Что не так с cProfile в Python GitHub через некоторое время подкинул ссылку на репозиторий tuna: Python profile viewer.

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

Теги:
+1
Комментарии0

Как создавать веб-приложение на Django с нуля?

Внутри — четыре инструкции по веб-разработке на Django. Начинаем с создания и настройки простых проектов: блога и канбан-доски. Затем переходим к подключению автоматических бэкапов. Изучение займет не более часа.

После прохождения вы научитесь:

  • работать с бэкендом и API,

  • создавать веб-приложение по шаблону от Django,

  • настраивать Nginx для обработки запросов,  

  • развертывать Django-приложение с помощью Gunicorn.

Переходите в Академию Selectel и изучайте курс.

Теги:
+15
Комментарии0

Сбор семнтики из Гугла (Гугл Вордстат существует)!

В общем такая ситуация - я писал не так давно пост, про парсинг семантики для Гугла, вот он - https://habr.com/ru/articles/867876/

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

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

Но оно того реально стоит, за 5 дней я обработал 50000 входящих ключевых слов и вытащил около 70к ключей для дальнейшей обработки.

Да, абсолютно бесплатно! Вот в эти моменты становится хорошо!!!

Не превышайте лимиты!!!

Теги:
-1
Комментарии0

По просьбам трудящихся запилил новую версию скрипта для автоматического получения наград в telegram mini app BLUM

Функционал пока такой:

  • играет на билеты

  • получает ежедневную награду

Тестил мало, поэтому приглашаю присоединиться. Но вроде бы всё работает, по крайней мере до следующей обновы приложения.

GitHub: https://github.com/Bednyakov/BLUM-autoplay

Теги:
+1
Комментарии1

Праздничный unixporn: python vim ide в контейнере

В разработке на python, особенно в DS/ML проектах, мы все сталкиваемся со сложной схемой зависимостей на специфичной аппаратной платформе. Зачастую, вести разработку удобно в том окружении, в котором в последствии запускается приложение.

Если вы вдруг vim user, то можно просто доставить редактор в контейнер с окружением и разрабатывать прямо там. Такая схема достаточно лекговесна, позволяет относительно просто держать актуальными завистимости при разработке, переиспользовать существующие сборочные конвейеры с небольшим наборов слоёв для самого редактора. Так же это может быть удобно, если вам нужно работать где то на удалённом кластере по ssh.

У меня был некоторый шаблон Dockerfile с добавкой vim с плагинами который кочует из проекта в проект и я решил поделиться с вами этой наработкой.

С Новым годом!

Теги:
+2
Комментарии0

Обновления января 2025 года в Amvera Cloud

Многие ждали, писали, но нет, мы цены повышать не будем!)

Зато сразу после 1 января праздников, ориентировочно 13—17 января

  1. Выкатим новый фронт. Надеемся, все станет понятнее.

  2. Появятся преднастроенные RabbitMQ и Memcached.

  3. Расширенные алерты и пробы. Можно будет настроить алерты на падение проекта, превышение заданного потребления ОЗУ и CPU и появления определенных ошибок в логах. Дополнительно появятся liveness и readiness пробы.

  4. Мы вводим SLA. Осенью 2024 были инциденты с падением сервисов. Мы готовы нести ответственность за безотказность работы сервиса. Начиная с января 2025, если наша надежность окажется ниже 99,5% в месяц, можно будет претендовать на компенсации с нашей стороны.

SLA действует с 1 января 2025

Amvera Cloud  это облако для простого деплоя приложений через git push. Встроенный CI/CD, бэкапы и мониторинг позволяют развернуть проект тремя командами в IDE и не думать о настойке инфраструктуры. Amvera проще, чем использование VPS или Kubernetes-кластера.

Теги:
0
Комментарии0

Пет-проект на 2025: модель кровообращение человека для спортивной физиологии

Эта идея пришла мне в голову совсем недавно. Беглое изучение научных работ показало востребованность данной тематики и отсутствие реальных публичных наглядных интерактивных моделей на python. Ниже очень примерный рисунок как бы могла бы выглядеть визуально такая модель.

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

  • OpenModelica — это открытая платформа для моделирования и симуляции, поддерживающая язык Modelica. OpenModelica Connection Editor (OMEdit) позволяет создавать и симулировать модели гидравлических систем.

  • PyFMI — это библиотека Python для работы с моделями, созданными в Modelica. Она позволяет загружать и симулировать модели, созданные в OpenModelica, непосредственно из Python.

  • PySMO — (Python Simulation Modeling): Это библиотека Python для моделирования и симуляции различных физических систем, включая гидравлические.

  • PyDSTool — (Python Dynamical Systems Toolkit): Это инструмент для моделирования и анализа динамических систем.

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

Теги:
Рейтинг0
Комментарии0

Новогодняя задача: помогите Тирексу поставить и нарядить елочку

Условие

Сисадмин Тирекс засиделся допоздна и не успел не то что нарядить елку, но даже купить ее! У него нет главного символа праздника, но есть лапки, компьютер, IDE, технический склад ума и знание Python.

Задача

Помоги Тирексу вывести в консоли наряженную елку на любимом языке программирования. Педантичный Тирекс предъявляет следующие требования:

  • на вход программа получает два числа: rows отвечает за высоту елки в строчках (не менее трех), freq — за частоту появления украшений.

  • ветки елки — символ *.

  • игрушки — символы о, О, @ и 0.

  • елка имеет ствол из трех символов | и стоит на полу из символов _.

  • ветви елки расположены «ступенями»: первая состоит из трех строк, каждая следующая ниже — на одну больше.

  • первая строка следующей ниже «ступени» должна иметь на два символа меньше, чем последняя строка предыдущей.

  • елка должна иметь границы в виде символов /  и  \.

  • между двумя украшениями по горизонтали должна быть минимум одна ветка.

  • украшения не должны висеть на границе елки (они же упадут!).

Бонусная задача

  • вывести снег символом . (точка).

  • раскрасить елку зеленым, фон — синим, игрушки — разными цветами (кроме зеленого и синего), снег — белым.

Попробуйте решить задачу самостоятельно и делитесь своими идеями в комментариях. А вариант ответа Тирекса ищите в Академии Selectel.

Теги:
Всего голосов 12: ↑12 и ↓0+16
Комментарии1

WebTransport: будущее потокового вещания и коммуникаций.

В сети появились интересное, как по мне, видео с конференции rubyconf2024. В нем рассказывается об эволюции веб-протоколов передачи данных, от веб-сокетов до веб-транспорта, а также грядущую спецификацию HTTP 3. Из видео можно узнать о двунаправленной потоковой передаче, дейтаграммах и потенциале веб-кодеков для потоковой передачи видео. 

Всем кому любопытно, то рекомендую к просмотру: https://youtu.be/WqYExpMWIUU?si=p4gSGHXkhHAS4LK_

Для питонистов и тем кому интересно хочу перекомендовать к прочтению статью о webtransport и библиотеке на python aioquic [habr].

Что такое веб-транспорт?

Web Transport — это новый веб-протокол, разработанный для улучшения существующих решений, таких как WebSockets и события, отправляемые сервером (SSE). Хотя Web Transport часто называют «WebSocket 2.0» из-за его расширенных возможностей, он предлагает более тонкие функции, такие как однонаправленная и двунаправленная потоковая передача, дейтаграммы и улучшенная обработка частичной надёжности. В настоящее время этот протокол поддерживается в виде черновика основными браузерами, такими как Firefox и Chrome, а вскоре его поддержка появится и в Safari.

Ключевые особенности

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

  • Дейтаграммы: в отличие от более ресурсоёмких веб-сокетов, дейтаграммы требуют меньше ресурсов и допускают потерю пакетов, что может быть преимуществом в сценариях, где надёжность не является критически важной.

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

Теги:
Всего голосов 3: ↑3 и ↓0+3
Комментарии0

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

27 марта
Deckhouse Conf 2025
Москва
25 – 26 апреля
IT-конференция Merge Tatarstan 2025
Казань

MATPLOTLib: технологическое превосходство

Альтернатива для crop+zoom - растягивание осей inplace
Альтернатива для crop+zoom - растягивание осей inplace

Мы все, конечно, знаем, что старый добрый Matplotlib является одной из самых популярных библиотек для визуализации данных в Python, и он предлагает широкий спектр функций и методов для создания разнообразных графиков. Однако есть еще и Plotly, Bokeh и D3.js, которые также являются мощными инструментами для визуализации. Мое мнение, что Matplotlib предоставляет более гибкие и детализированные возможности для настройки графиков. Matplotlib хорошо работает с осями координат, что позволяет пользователям легко изменять масштабы, деления и метки осей. Кроме того, Matplotlib поддерживает встроенные афинные преобразования, такие как поворот, масштабирование и сдвиг. Пример на графике выше. Толстая линия на графике не сплошная, она сгенерирована из случайных точек. Это становится видно при увеличении, что сделано афинными преобразованиями, причем не предобработкой данных, а прямо сама matplotlib это делает без программирования.

Теги:
Всего голосов 1: ↑1 и ↓0+1
Комментарии4

Pre-commit — must have утилита любого проекта

Бывает, смотришь на код и сразу видно, что код плохой. Признаков может быть множество:
— разные куски кода по-разному отформатированы;
— импорты в файлах никак не структурированы;
— используются вперемешку синтаксис старых и новых версий питона;
— где-то видны зачатки использования типов, но не везде;
— где-то docstring есть, где-то нет;
Всё это характеризуется так: нет единого стиля в написании кода. Проблема становится особенно актуальной, когда над проектом трудится несколько разработчиков.

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

Для решения всех обозначенных проблем есть замечательная утилита — pre-commit. Один раз в конфиге прописываете, какие анализаторы кода нужно запускать, и далее при любом коммите они будут запускаться автоматически. С этого момента код будет опрятным и шелковистым. Вы просто не сможете сделать коммит, если у анализатора есть вопросики к коду.

В DevFM пишу о полезном для разработчика.

Теги:
Всего голосов 3: ↑3 и ↓0+4
Комментарии1

Простой скрипт на Python для генерации крипто-кошельков по маске (с определенными символами вначале и конце)

На настоящий момент присутствуют генераторы для BTC, ETH и TRON, постепенно добавлю еще.
Генерация происходит на всех доступных ядрях CPU, что ускоряет нахождение нужного адреса. Но всё равно это слишком медленно, нежели использовать GPU, который содержит тысячи небольших и менее мощных ядер, работающих параллельно. Что позволяет обрабатывать действительно большие массивы данных одновременно.

В Python есть библиотеки, с помощью которых можно передавать некоторые вычисления на GPU, но они несовместимы с криптографическими операциями на Python, так как GPU не имеет доступа к Python-объектам и библиотекам. Соответственно, Python просто не подходит для таких задач.

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

>>> GitHub проекта.

Теги:
Всего голосов 2: ↑2 и ↓0+3
Комментарии0

🤒 Оптимизация электропотребления в Linux

Как известно, на линухе работа с питанием хуже, чем на Windows. Особенно это критично для людей с ноутбуком, желающих продлить время жизни от батареи.

Рассмотрим 3 инструмента:

  1. Один из самых популярных — TLP

TLP (The Linux Power Management). Мощный инструмент, много гибких настроек для процессора, дисков, сетевых интерфейсов и т.д. Хорошая документация. TLP работает в фоновом режиме, после настройки все будет работать само. Существует удобный TLPUI, чтобы не менять конфиги руками. Автоматически переходит в режим экономии при подключении зарядки.

+ Много гибких параметров

+ Автоматическое адаптивное управление

+ Разные типы устройств

- Возможно, надо будет доп настраивать для некоторых систем (на моем Lenovo Ideapad например пришлось читать вот это, благо дока хорошая)

- Необходимость обновления (сомнительно)

  1. Самый эффективный — auto-cpufreq

Автоматически управляет частотой процессора исходя из нагрузки и состояния батареи. Якобы сильно эффективнее и лучше TLP. Может работать вместе с ним, хотя и не рекомендуется.

+ Простота использования — достаточно запустить и забыть

+ Интеграция с другими инструментами

+ Постоянное обновление частоты процессора в зависимости от нагрузки

- Может потребовать доп настройки

- Требует админских прав для работы (сомнительно)

  1. От корпорации зла — Power Profiles Daemon (ppd)

Power Profiles Daemon — три режима работы (производительность, сбалансированный, экономия), между которыми можно переключаться. По умолчанию во всех DE именно он находится в виджете "батарея". Сделан Red Hat.

+ Интеграция с системой

+ Поддержка различных профилей питания

+ Легкость использования через графический интерфейс

— Менее гибок, чем перечисленные выше

Я по итогу выбрал auto-cpufreq и tlp (только потому, что ограничивает заряд батареи)
Если вам есть что сказать, с удовольствием пообщаемся в комментах :)

Теги:
Всего голосов 10: ↑10 и ↓0+12
Комментарии1

ЕВРАЗ доверил ревизию кода искусственному интеллекту

Третий Хакатон ЕВРАЗа  привлек более 600 IT-специалистов со всей страны, а всего о нем  узнали около 500 тыс. человек. В мероприятии участвовали как опытные специалисты, так и студенты топовых технических вузов (МФТИ, МИСиС, ВШЭ, МИРЭА и др.). По итогу было сформировано 130 команд.

Артем Натрусов, вице-президент ЕВРАЗа по информационным технологиям
Артем Натрусов, вице-президент ЕВРАЗа по информационным технологиям

Хакатон прошел в смешанном формате: работа над проектами велась полностью в онлайне, а финалисты из Москвы собрались в студии на церемонии закрытия.

Участники в течение 40 часов разрабатывали решение на основе ИИ, которое позволит автоматизировать один из важнейших этапов разработки — code review. Этот этап традиционно требует значительных временных ресурсов старших программистов и автоматизация данного процесса позволит существенно увеличить эффективность разработки в компании.

Для обучения ИИ участникам были предложены реальные проекты компании по 3-м стекам — TypeScript, C# и Python. Работу команд курировали эксперты ЕВРАЗа, которые делились своими опытом и советами. Это помогло командам погрузиться в реальные проекты компании и предложить идеи решений, которые затем могут быть внедрены в реальные процессы.

Многим командам действительно удалось показать выдающиеся решения:

  • 3-е место заняла команда «Крутые Бобры», чье решение было отмечено за удобный и легкий UI-интерфейс, интеграцию с Telegram и информативность отчета, что особенно важно для быстрого анализа.

  • 2-е место решение команды «overbuffed» жюри оценило за высокую функциональность, конкретику в отчетах и глубокое погружение в проблематику поставленной задачи.

  • Победителем стала команда «Мастер на GPT-унами», представившая нестандартный подход к решению задачи. Их проект отличался качественной проработкой мультиагентной архитектуры и общей логики решения.

Призеры разделили между собой призовой фонд в 500 000 рублей. А победители специальных номинаций получили фирменный мерч компании.

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

Артем Натрусов, вице-президент ЕВРАЗа по информационным технологиям, также подчеркнул стратегическую значимость темы:

«Мы ценим технологичные решения, способные изменить образ металлургии, делая отрасль более эффективной и безопасной. Code review — это важнейший элемент разработки, в котором участвуют наши старшие программисты. Это гарантия качества кода. А что, если освободить время опытных специалистов для работы над прорывными проектами, а рутинные задачи — передать ИИ?»

Теги:
Всего голосов 2: ↑2 и ↓0+4
Комментарии0

Обновление и ускорение моего GA для FlappyBird!

Теперь все птицы запускаются одновременно, поэтому обучение ускорилось с ~3-5 часов до 5-10 минут при запуске на CPU, то есть в 50 раз!

https://github.com/LanskoyKirill/GenNumPy.git

Теги:
Всего голосов 2: ↑1 и ↓10
Комментарии0

Python 3.13 на iMac 2011 High Sierra и VScode

Изучал Python на Anaconda/JupyterLab/Notebook/Spider под Windows 11. Возникла потребность все запускать на старом, но прикольном iMac 2011 32 ГБ ОЗУ, 1 ТБ disk, FulHD экран. Оказалось последняя Anaconda для него 2019 года с Python 3.6. Случайно узнал, что есть для Python отличные PyCharm и VScode. Оказалось VScode предпоследней версии работает на этом iMac, причем в ней есть microsoft Python практически новейший версии 3.13 и отладчик работает и pip есть сразу из коробки. Все работает с достойной скоростью. А ведь куплен iMac был за 10 тыс. руб. Добавлю еще, что он тихий даже под рендерингом анимации 3D в VTK и расчетах pandas. Добавлю еще, что с самого офицального python.org на этот iMac смог поставить только Python 3.11, a Jupyter/Spyder отказались работать.

Теги:
Всего голосов 1: ↑1 и ↓0+1
Комментарии5

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

На самом деле, большинство пунктов так же применимо и к другим языкам. Большая их часть универсальна, так же проста (js, php или ruby не сильно отличаются на этом уровне) и в целом универсально подходит для всего (php конечно тут выпадает). Реальная же причина популярности кроется в неожиданном аспекте. Питон уже давно основной язык изучения Computer Science в университетах по всему миру. Я не скажу сколько точно это добавляет пунктов, но если посмотреть использование питона в разрезе конкретных направлений, то видно что разрыв резко уменьшается. Та же django, внезапно, проигрывает rails в веб разработке. А это довольно серьезная часть проектов на Python. И даже лидерство в аналитике достигается скорее за счет числа людей, которые с питоном соприкасаются, но надо понимать, что реального программирования там мало и объемы кода в аналитике не идут ни в какое сравнение с веб-разработкой.

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

p.s. Делюсь опытом программирования и предпринимательства в своем телеграм-канале организованное программирование

Теги:
Всего голосов 2: ↑1 и ↓1+2
Комментарии6

Раз в год-два мне приходится вспоминать, что Python — не C++.

В этот раз я наткнулся на случай, когда отформатировать и склеить колонки результата запроса на стороне PostgreSQL и распарсить Python-ом оказалось эффективнее, чем запрашивать колонки как отдельные значения.

Конкретнее, при переходе от этого запроса:

SELECT * FROM o_relations ORDER BY id DESC LIMIT %(limit)s

к этому:

SELECT CONCAT(entry_id::text, '|', tag_id::text) AS ids FROM o_relations ORDER BY id DESC LIMIT %(limit)s

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

Причиной тому тяжёлая конвертация данных из формата С в формат Python внутри Psycopg.

За подробностями можно сходить ко мне в блог: https://tiendil.org/ru/posts/fun-case-of-speeding-up-data-retrieval-with-psycopg

Теги:
Всего голосов 14: ↑4 и ↓10-6
Комментарии4

Привет! Я — Ося, разработчик в Инновационном Центре «Безопасный транспорт», ваш виртуальный проводник в мир технологий и разработки. В блоге рассказываю, как решаю сложные задачи и делюсь знаниями. Здесь мы будем разбираться в коде, обсуждать подходы к проектам и актуальные тренды в IT. Пишу о разработке, больших данных и инновационных технологиях.

Я — робот-осьминог и талисман ИЦ, который иллюстрирует разносторонность и многозадачность нашей команды. Мои 8 щупалец представляют различные направления работы, а 3 сердца обеспечивают высокую эффективность. Отсутствие скелета позволяет гибко адаптироваться к изменениям, а более 1000 рецепторов на щупальцах помогают мне воспринимать малейшие колебания в окружении.

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

Теги:
Всего голосов 4: ↑2 и ↓2+3
Комментарии0

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

Теги:
Всего голосов 4: ↑3 и ↓1+2
Комментарии0

Держите задачу на Python от Кирилла Быкова, наставника на курсе «Python-разработчик».

Дана отсортированная последовательность целых чисел и число k. Необходимо найти в этой последовательности число, максимально приближённое к k и вернуть его индекс.

Размер последовательности: 1 <= N <= 10^6

Число k: 0 <= k <= N

Индекс элемента: 0 <= index < N

Примеры:

[1, 3, 4, 7, 9, 12] k = 5
Ответ: 2 (число 4)
[1, 3, 4, 12, 15, 15, 18] k = 14
Ответ: 4 (первое число 15)

Решение не должно превышать по временно́й асимптотике O(log(N)), где N — длина массива. Если задача кажется легкой, попробуйте выполнить её без bisect.

Ждём ваших ответов в комментариях к посту.

Теги:
Всего голосов 5: ↑3 и ↓2+3
Комментарии9

Автоматический майнер Not Pixel

Написал простенького бота для майнинга Not Pixel, пока еще не поздно. Это очередное web3 крипто-приложение в telegram, но хотя бы от создателей Notcoin. И если кто не знает, автоматизация подобных проектов- моё хобби.

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

💾 GitHub: https://github.com/Bednyakov/NotPixelMiner

Теги:
Всего голосов 4: ↑3 и ↓1+4
Комментарии0

Официально вышел Python 3.13.0

Если при инсталляции в Windows поставить соответствующую галочку в инсталляторе, установится и experimental free-threading build python3.13t.exe, который, кстати, станет запускаемым по умолчанию при использовании py.exe.

User-директории для двух интерпретаторов теперь раздельныe:

  • AppData/Roaming/Python/Python313 и

  • AppData/Roaming/Python/Python313t.

Учитывая, что AppData/Roaming/Python/PythonXYZ/Scripts желательно иметь в пути, переключение между разными интерпретаторами несколько геморройно.

Про пакеты: numpy для experimental free-threading build успешно собирается из исходников, а вот scipy уже не хочет :(

Теги:
Всего голосов 1: ↑1 и ↓0+3
Комментарии0

Проблемы обучения программизьму — Тогда и Сейчас. В том числе про Python.

Наткнулся на огромную статью о том как полезно учить детей программированию на Python. А у меня есть парочка наблюдений — во многом по работе новичков с Питоном на CodeAbbey (мой бесплатный и опенсорсный сайт — задачи там идут с оооочень плавным нарастанием сложности — аж скучно порой).

Обращение и Вращение Строки

Развернуть строку или сдвинуть её на K символов. Сложность эти задачи представляют только в языке вроде Pascal / C — т.к. операцию нужно осуществить «на месте» — в «мутабельной» строке. А на Питоне строки иммутабельны и «решение» сводится к конструированию новой строки. В жизни такие операции редко нужны — но детям‑то важно логику в голове развивать!

Округление

А здесь наоборот. Питон — язык профессиональный и операция round ведёт себя статистически корректно, но не так как учат в школе: round(1.5) = 2, round(2.5) = 2, round(3.5) = 4 — это настраивается — но новички не читают доки — и могут биться над задачей часами.

Бесконечные целые

Цель задачки «Modular Calculator» — показать принцип модульной арифметики. В обычных языках пока этот принцип не уяснишь — задача не решается из‑за переполнения целых. На Питоне же её пишут «втупую» даже не поняв в чем задача‑то. Пришлось добавить «продвинутую» версию — там «втупую» не дождёшься окончания расчета.

Какие же выводы?

  1. Идеального языка для обучения пока нет. Быть может стоит изучать парочку разных!

  2. Курсы стремятся показать результат а не развивать мышление.

Теги:
Всего голосов 4: ↑3 и ↓1+5
Комментарии7

В иконках сайта обновление!

Теперь можно генерировать изображения иконок для сайта самостоятельно (все-таки он теперь генератор).

Работает на GigaChat API - генерирует так себе, так что это скорее для галочки.

Но если будет пользоваться популярностью может куплю токенов по-лучше

Теги:
Всего голосов 3: ↑2 и ↓1+5
Комментарии0
Сгенерированно при помощи DALL-E

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

ruMorpheme вдохновлён и является портом с TensorFlow (0.12) на PyTorch (2.4) проекта NeuralMorphemeSegmentation, реализованного в рамках публикации "Deep Convolutional Networks for Supervised Morpheme Segmentation of Russian Language" авторства Алексея Сорокина и Анастасии Кравцовой.

Обученная модель способна сегментировать слова, выделяя в них следующие морфемы:

  • Приставки (PREF)

  • Корни (ROOT)

  • Соединительные гласные (LINK)

  • Дефисы (HYPH)

  • Суффиксы (SUFF)

  • Постфиксы (POSTFIX)

  • Окончания (END)

Попробовать модель можно через Telegram-бот: @ruMorphemeBot, его можно добавить в группу и отправлять текст через упоминание @ruMorphemeBot.

Ссылки:

Как пользоваться:

git clone https://github.com/EvilFreelancer/ruMorpheme.git
cd ruMorpheme
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt

Для выполнения инференса:

python predict.py input_text.txt --model-path=evilfreelancer/ruMorpheme-v0.1

Скрипт автоматически скачает веса модели и выполнит анализ.

Пример вывода:

{"word": "родословие", "morphemes": [{"text": "род", "type": "ROOT"}, {"text": "о", "type": "LINK"}, {"text": "слов", "type": "ROOT"}, {"text": "и", "type": "SUFF"}, {"text": "е", "type": "END"}]}

Спасибо за внимание!

Теги:
Всего голосов 9: ↑8 и ↓1+10
Комментарии3

Пример того, почему стоит обратить внимание на Julia. Если, конечно, занятные люди делающие (полу)безумные вещи - это для Вас в плюс.

Работает, но для продакшена не рекомендуется. С друой стороны, то, с тем, что делается just for fun, бывало всякое.

Теги:
Всего голосов 2: ↑2 и ↓0+6
Комментарии0


Вот почему так?

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

Но попробуем.
Мы с коллегой написали тестовый бот в телеге (на Python, бесплатный и без рекламы).
Это новостной бот (тех новости) с возможностью персонализированной настройки по темам. Новости берутся на английском и пересказываются на русский, дается ссылка на первоисточник, ставятся теги, новости классифицируются: https://t.me/summix_test1_bot

Просьба.
Если у вас есть время и желание, будем очень признательны за ваш отзыв по боту здесь или в нашем чате разработчиков: https://t.me/techmixdev

Как мы пришли к идеи бота?
Сначала сделали канал https://t.me/techmixru и даже написали об этом статью на Хабре. Но на канале слишком много новостей, там нет тегов. Хотя есть один плюс - все новости имеют еще аудио трансляцию. Удобно для машины.

Но мы поняли, "большая несортированная свалка" не нужна. И сделали тестовый канал с сортированной/тегированной "свалкой". Канал пока закрытый, но если кому-то интересно, то вот ссылка приглашение: https://t.me/+r4RQ7mDo7PtkZDZi

Для тестирования применения бота я использую некоторые новости от него в своем блоге: https://t.me/lanchev_pro_ai

Это все хорошо. Но очень хочется откликов коллег с конструктивной критикой и предложениями по нашему тестовому техно новостному боту с персонализацией.
Заранее большое спасибо!

Теги:
Всего голосов 3: ↑2 и ↓1+3
Комментарии9

Последний день регистрации на хакатон по интерфейсам «мозг-компьютер»

Хотите круто воплотить технологии будущего в реальность? Научить компьютер взаимодействовать с мозгом напрямую? Зажигать силой мысли лампочки и управлять компьютерными играми? Регистрируйтесь на BCI Hack Moscow.

Мы — компания Neiry. Наше  BCI-устройство Headband Pro и ПО Capsule считывают и записывают мозговую активность, и другие физиологические сигналы пользователя. А Capsule API позволяет использовать эти данные в других приложениях. На Хабре мы уже рассказывали про крутые кейсы, в которых задействованы наши разработки, про особенности Capsule и API

На хакатоне мы дадим участникам возможность создать прототипы продуктов на базе нейроинтерфейсов для Neiry Headband Pro и открытого API Neiry. Приглашаем разработчиков всех грейдов, студентов, нейроэнтузиастов. Язык нашего API — С, пригодятся знания в Python, SQL, аналитические навыки, опыт обращения с BCI. Если вам интересно поработать с нейроинтерфейсом, присоединяйтесь — оборудование выдадим бесплатно! Участвуйте самостоятельно или командой до 4 человек.

Регистрируйтесь сегодня: опишите в заявке свою крутую идею для нейроинтерфейсов. 20 сентября бесплатно выдадим участникам Neiry Headband Pro, для этого кто-то из команды должен быть в Москве. И всё, больше никаких блоков. Регистрируйтесь на BCI Hack Moscow и помогите сделать будущее — настоящим.

Теги:
Всего голосов 2: ↑2 и ↓0+6
Комментарии0

Roadmap, который я себе чертила, когда изучала Python для аналитики данных.

Простая схема использования Python для начинающего аналитика данных тут.

5 бесплатных сервисов для практики SQL и Python тут.

Теги:
Всего голосов 8: ↑5 и ↓3+2
Комментарии0

Всем привет!

У нас есть два стула…Python и Go. Хоть немного зная один из этих языков, девопс может делать в Kubernetes разную магию.

Завтра встретимся с Виталием Лихачевым, SRE в Bооking.сom,ex-Avito Senior Software Engineer, на вебинаре, чтобы разобрать:

• Как использовать k8s как API, даже не зная его устройства? 
• Как создать при этом симбиоз между кодом и целым кластером?
• Как в k8s объединять бизнес-логику и инфраструктуру с помощью миллионов строк кода?

Всё это — на примерах Python и Go.

А ещё можно:

• Контролировать соответствие манифестов архитектуры стандартам — и при этом не ходить по репозиториям и не править манифесты руками 
• Подключать различные sidecar контейнеры для сбора логов и метрик —  и не мешать этим разработчикам
• Делать это всё на лету.

И мы постараемся показать, как. А уж на какой из стульев садиться — выбор за вами)

Дата и время — 21 августа, 19:00 мск 
Занять место на вебинаре — по ссылке.

Теги:
Всего голосов 5: ↑5 и ↓0+7
Комментарии1

Как применять бинарный поиск для решения задач с LeetCode

Привет, давно не виделись! Мы не просто так отсутствовали какое-то время с «Алгоритмической качалкой», а все пытались записать ролик, на который договорились с аудиторией. То Казань превращались в Венецию, то больное горло давало о себе знать.

Но наконец-то мы справились и смогли записаться в парке Черное озеро с мороженым на перевес.

Теги:
Всего голосов 1: ↑1 и ↓0+3
Комментарии0

В сети вышло видео FastHTML за 100 секунд.

FastHTML — это новый веб-фреймворк Python, который позволяет легко создавать интерактивные веб-приложения без необходимости изучать фреймворк JavaScript, такой как React или Angular. Проект использует HTMX под капотом для включения динамических обновлений контента без полной перезагрузки страницы.

Теги:
Всего голосов 3: ↑3 и ↓0+3
Комментарии0

Простой способ конвертации файлов JSON в CSV через Python

Для конвертации файлов JSON в CSV через Python существует удобный способ с использованием библиотеки pandas.

Если у вас еще не установлена библиотека pandas, установите ее с помощью pip:

pip install pandas

Далее напишем функцию, которая будет принимать на вход путь к JSON файлу и имя выходного CSV файла. Эта функция выполнит преобразование с помощью pandas.

import pandas as pd


def json_to_csv(input_file, output_file):
    try:
        # Прочитайте JSON файл в DataFrame
        df = pd.read_json(input_file)
        
        # Сохраните DataFrame в CSV файл с кодировкой UTF-8
        df.to_csv(output_file, index=False, encoding='utf-8')
        print(f"JSON файл успешно преобразован в CSV и сохранен как {output_file}")
    except Exception as e:
        print(f"Произошла ошибка при преобразовании: {e}")

        
# Пример использования функции
json_to_csv('input.json', 'output.csv')

Теперь, вызвав функцию json_to_csv с нужными параметрами, вы сможете легко преобразовать JSON файл в CSV файл.

Если вам была полезна эта информация, подписывайтесь, ставьте лайки и оставляйте комментарии!

Теги:
Всего голосов 1: ↑1 и ↓0+3
Комментарии1

Представлен открытый проект Hyperscript. Это гибкий скрипт для обработки сложных конфигураций и запросов. Проект поддерживает различные методы HTTP, включая GET, POST, PUT и DELETE, и предоставляет обширные возможности для проверки ответов на соответствие указанным условиям.

Hyperscript поддерживает нескольких методов HTTP, включая опции простой настройки и тестирование запросов GET, POST, PUT и DELETE.

В Hyperscript есть редим гибкой проверки и проверки ответов на основе кодов состояния, типов содержимого и определённого содержимого.

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

Проект написан на языке Python и опубликован под лицензией MIT.

Теги:
Всего голосов 5: ↑2 и ↓3+1
Комментарии0

Готов пример приложения для https://pypi.org/project/targeting-platform/ (библиотека с общим интерфейсом к разным DSP (те которые "A demand-side platform")).

Это в продолжение https://habr.com/ru/posts/829114/

Пример тут: https://gitlab.com/dsp6802915/targeting_platform_example_simple - в реадми описано все что есть сказать - не буду здесь повторяться.

Теги:
Всего голосов 1: ↑1 и ↓0+3
Комментарии0

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

Работа

Data Scientist
56 вакансий