fa
Feedback
Программистика

Программистика

کانال بسته

Лучший канал про python Ссылка для друга: https://t.me/+Ai6ughKtf5g2ZmFi Купить рекламу: https://telega.in/c/+Ai6ughKtf5g2ZmFi Админ: @JeyRahol По рекламе: @ReivuManager

نمایش بیشتر
5 574
مشترکین
-324 ساعت
+67 روز
+4930 روز
آرشیو پست ها
🤩 Admin Books —электронные книги о компьютерных технологиях. Изучай новые технологии или закрой пробелы в знаниях по своему
🤩 Admin Books —электронные книги о компьютерных технологиях. Изучай новые технологии или закрой пробелы в знаниях по своему стеку. Стань экспертом в следующих направлениях: Системное администрирование Информационная безопасность Сетевое администрирование Этичный хакинг Ссылка для своих: https://t.me/admbooks

Как устроен PYTHON
📱 Первоисточник
Программистика|| #video

Python для профи. Интерпретаторы, эмуляторы, графика и машинное обучение Благодаря семи проектам на Python, представленным в
Python для профи. Интерпретаторы, эмуляторы, графика и машинное обучение
Благодаря семи проектам на Python, представленным в этой книге, вы сможете получить представление о некоторых фундаментальных принципах в области информатики. В каждой главе автор пошагово описывает завершенный проект, раскрывающий один из конкретных аспектов программирования, не прибегая к сложной математике и запутанному коду. Издание адресовано программистам на языке Python среднего и продвинутого уровней, желающим закрепить знания и заполнить возможные пробелы в образовании.
Программистика||#doc

Программисты, это вам 👇 Держите 5 каналов, которые реально помогают изучать программирование и IT с полного нуля: 🖥 Easy Co
Программисты, это вам 👇 Держите 5 каналов, которые реально помогают изучать программирование и IT с полного нуля: 🖥 Easy Coder — все направления IT. 👩‍💻 Easy Python — всё о Python. 🌐 Easy WebDev — Frontend, Backend. 🔠 Easy InfoSec — ИБ, Хакинг. 🖥 Easy GitHub — лучшее с GitHub. Тонны бесплатной инфы для любого уровня подготовки ✔️

🤖 AI Commits: пусть нейросеть пишет осмысленные коммиты за тебя Ты 100-й раз пишешь git commit -m "fix", а потом коллеги и ты сам через месяц не понимаете, что именно было исправлено. Гуглить вклад — слишком лень, писать грамотные сообщения — времени жалко. А что, если это сделает нейросеть? Скрипт смотрит на изменения в коде, анализирует их и предлагает понятное сообщение коммита в стиле Conventional Commits. 👉 Скрипт `ai_commit.py`:
#!/usr/bin/env python3
"""
AI Commit — автоматически генерирует сообщение коммита по изменениям в коде.
Требует установленный и запущенный ollama (или можно заменить на API GPT).
"""

import subprocess
import sys
import argparse
import json

# Настройки: выбери модель из ollama
MODEL = "codellama:7b-instruct"  # или "llama3.2", "mistral", "qwen2.5-coder"
# Если хочешь использовать OpenAI, раскомментируй и укажи ключ
# USE_OPENAI = False
# OPENAI_API_KEY = "sk-..."

def get_git_diff():
    """Возвращает diff текущих изменений"""
    try:
        diff = subprocess.check_output(
            ["git", "diff", "--cached", "--no-color"],
            stderr=subprocess.DEVNULL,
            text=True
        )
        if not diff.strip():
            # Если нет изменений в staged, берём unstaged
            diff = subprocess.check_output(
                ["git", "diff", "--no-color"],
                stderr=subprocess.DEVNULL,
                text=True
            )
        return diff
    except subprocess.CalledProcessError:
        print("❌ Не удалось получить diff. Вы в git-репозитории?")
        sys.exit(1)

def generate_commit_message(diff, use_ollama=True):
    """Отправляет diff модели и получает сообщение коммита"""
    prompt = (
        "Ты — эксперт по Git. Напиши краткое сообщение коммита (одной строкой) в стиле Conventional Commits, "
        "которое описывает следующие изменения в коде. Не добавляй лишних комментариев, только само сообщение.\n\n"
        f"Изменения:\n{diff}"
    )

    if use_ollama:
        try:
            import ollama
            response = ollama.chat(model=MODEL, messages=[{"role": "user", "content": prompt}])
            return response['message']['content'].strip()
        except Exception as e:
            print(f"❌ Ошибка при обращении к ollama: {e}")
            print("Убедитесь, что ollama запущен (ollama serve) и модель загружена.")
            sys.exit(1)
    else:
        # Вариант с OpenAI API (раскомментируй при необходимости)
        import openai
        openai.api_key = OPENAI_API_KEY
        response = openai.ChatCompletion.create(
            model="gpt-3.5-turbo",
            messages=[{"role": "user", "content": prompt}],
            max_tokens=50
        )
        return response.choices[0].message.content.strip()

def main():
    parser = argparse.ArgumentParser(description="Генератор сообщений коммита через AI")
    parser.add_argument("-m", "--model", default=MODEL, help="Модель ollama")
    parser.add_argument("--openai", action="store_true", help="Использовать OpenAI API вместо ollama")
    args = parser.parse_args()

    diff = get_git_diff()
    if not diff.strip():
        print("⚠️ Нет изменений для коммита. Добавьте файлы через git add.")
        return

    print("🤖 Генерирую сообщение коммита...")
    msg = generate_commit_message(diff, use_ollama=not args.openai)
    print("\n💡 Предлагаемое сообщение:\n")
    print(msg)
    print("\n✅ Если подходит, выполните:")
    print(f'   git commit -m "{msg}"')
    print("   Или скопируйте сообщение и отредактируйте.")

if __name__ == "__main__":
    main()
🛠 Установка и настройка: 1. Установи скрипт:
   pip install ollama  # или openai, если будешь использовать API
   
2. Установи и запусти ollama (бесплатно, локально):
   # macOS/Linux
   curl -fsSL https://ollama.com/install.sh | sh
   # Windows — скачай с сайта
   ollama serve &
   ollama pull codellama:7b-instruct   # или другую модель
   
3. Сделай скрипт исполняемым и добавь в PATH (опционально):
   chmod +x ai_commit.py
   sudo ln -s $(pwd)/ai_commit.py /usr/local/bin/ai-commit
   
Программистика || #scripts

🔁 Почему нельзя менять список во время итерации (и как это обойти) Многие новички пишут цикл
for item in my_list
и внутри пытаются удалять или добавлять элементы. Кажется логичным: «нашёл ненужное — удали». Но Python так не работает. Изменяя список во время итерации, вы ломаете внутренний механизм итератора. Результат — пропущенные элементы, исключения или странное поведение. 🧱 Проблема: что происходит под капотом Когда вы пишете
for x in lst:
, Python создаёт итератор, который запоминает текущую позицию по индексу. Если внутри цикла вы удаляете элемент, все последующие элементы сдвигаются влево, а итератор продолжает двигаться вперёд. В итоге часть элементов пропускается.
lst = [1, 2, 3, 4, 5]
for x in lst:
    if x % 2 == 0:
        lst.remove(x)
print(lst)  # [1, 3, 5] — может показаться, что работает
Но попробуйте другой список:
lst = [2, 4, 6, 8, 10]
for x in lst:
    if x % 2 == 0:
        lst.remove(x)
print(lst)  # [4, 8] — где остальные?
Потому что после удаления 2, список сдвинулся, итератор перешёл к следующему индексу, где оказалось 6 (изначальное 4 было пропущено). Аналогично с добавлением — можно уйти в бесконечный цикл.
lst = [1, 2, 3]
for x in lst:
    lst.append(x)  # бесконечный цикл
🧠 Как правильно: 3 безопасных способа 1. Итерируйтесь по копии     Самый простой способ — создать копию списка и итерироваться по ней, а изменения вносить в оригинал.
   lst = [1, 2, 3, 4, 5]
   for x in lst[:]:  # копия
       if x % 2 == 0:
           lst.remove(x)
   print(lst)  # [1, 3, 5]
Или через
list(lst)
или
.copy()
. 2. Создавайте новый список     Часто проще собрать новый список из нужных элементов, чем мутировать старый.
   lst = [1, 2, 3, 4, 5]
   lst = [x for x in lst if x % 2 != 0]
   print(lst)  # [1, 3, 5]
      Это самый идиоматичный способ. 3. Итерируйтесь в обратном порядке     Если нужно удалять элементы, можно идти с конца. Тогда сдвиги не влияют на ещё не пройденные элементы.
   lst = [1, 2, 3, 4, 5]
   for i in range(len(lst)-1, -1, -1):
       if lst[i] % 2 == 0:
           del lst[i]
   print(lst)  # [1, 3, 5]
   🧪 Что насчёт словарей? Со словарями ещё строже: изменение размера во время итерации вызывает
RuntimeError
.
d = {'a': 1, 'b': 2}
for k in d:
    d['c'] = 3  # RuntimeError: dictionary changed size during iteration
Решение — итерироваться по копии ключей:
for k in list(d):
. Программистика|| #article

NVIDIA представила NOOA: фреймворк для разработки ИИ-агентов в рамках одного Python-класса Компания NVIDIA выпустила открытый
NVIDIA представила NOOA: фреймворк для разработки ИИ-агентов в рамках одного Python-класса Компания NVIDIA выпустила открытый фреймворк NOOA (Object-Oriented Agents), который призван решить проблему фрагментации в разработке ИИ-агентов. Платформа объединяет разрозненные элементы инфраструктуры — шаблоны промптов, схемы инструментов, функции обратного вызова (callbacks) и графы рабочих процессов — в единый класс Python. Проект передан в консорциум Open Secure AI Alliance для совместного развития открытых стандартов безопасности в сфере искусственного интеллекта. ➡️ Читать полностью Программистика || #article

NVIDIA представила NOOA: фреймворк для разработки ИИ-агентов в рамках одного Python-класса Компания NVIDIA выпустила открытый
NVIDIA представила NOOA: фреймворк для разработки ИИ-агентов в рамках одного Python-класса Компания NVIDIA выпустила открытый фреймворк NOOA (Object-Oriented Agents), который призван решить проблему фрагментации в разработке ИИ-агентов. Платформа объединяет разрозненные элементы инфраструктуры — шаблоны промптов, схемы инструментов, функции обратного вызова (callbacks) и графы рабочих процессов — в единый класс Python. Проект передан в консорциум Open Secure AI Alliance для совместного развития открытых стандартов безопасности в сфере искусственного интеллекта. ➡️ Читать полностью Программистика || #article

Все о структурах данных в Python для начинающих Структуры данных — это фундамент Python и основа любой эффективной программы.
Все о структурах данных в Python для начинающих
Структуры данных — это фундамент Python и основа любой эффективной программы. Без понимания списков, кортежей, множеств и словарей невозможно писать чистый, логичный и производительный код. В курсе вы разберёте все основные структуры данных в Python, их разновидности и назначение, научитесь использовать методы, операторы и генераторы.
🌐 Ссылка
Программистика || #Course

⏰ Библиотека Python: Arrow Arrow — это интуитивная библиотека для работы с датами и временем, предлагающая простой API для со
Библиотека Python: Arrow Arrow — это интуитивная библиотека для работы с датами и временем, предлагающая простой API для создания, форматирования и манипуляции датами. Она поддерживает часовые пояса, человекочитаемые интервалы и значительно упрощает код по сравнению со стандартным datetime. ✔️ Установка:
pip install arrow
🐱 Ссылка на репозиторий Программистика|| #Library

Micro REPL 💻 Micro-REPL обладает следующими функциями: ✅Терминал для доступа к интерактивной оболочке MicroPython. ✅Файловый
+1
Micro REPL 💻 Micro-REPL обладает следующими функциями:
✅Терминал для доступа к интерактивной оболочке MicroPython. ✅Файловый менеджер для хранения файлов MicroPython. ✅Интеллектуальный редактор кода с поддержкой синтаксиса Python и автодополнением.
🌐 Ссылка
Программистика || #Ресурсы

Совместимы ли python 2 и три?
Anonymous voting

👩‍💻 Python-библиотеки для сисадмина Если ты автоматизируешь серверы, сети и рутину, вот набор библиотек, который реально пр
👩‍💻 Python-библиотеки для сисадмина Если ты автоматизируешь серверы, сети и рутину, вот набор библиотек, который реально пригодится:
🔴paramiko — SSH, удалённые команды, копирование файлов. 🔵psutil — нагрузка CPU, RAM, диски, процессы. 🔴requests / httpx — работа с API и веб-сервисами. 🔵pyyaml — удобные конфиги в YAML. 🔴pydantic — валидация конфигов и входных данных. 🔵rich — красивый вывод в терминале. 🔴loguru — простые и удобные логи. 🔵fabric — выполнение команд на нескольких серверах. 🔴dnspython — DNS-проверки. 🔵watchdog — слежение за файлами и директориями.
Что поставить первым:
pip install paramiko psutil requests rich pydantic pyyaml loguru
Этого набора уже хватает для большинства админских скриптов: мониторинг, бэкапы, SSH-автоматизация, обработка конфигов и API-интеграции. Программистика || #Library

Вопрос от подписчика: Почему Python 2 и 3 несовместимы? Потому что Python 3 — это не “чуть обновили”, а почти пересобрали язы
Вопрос от подписчика: Почему Python 2 и 3 несовместимы? Потому что Python 3 — это не “чуть обновили”, а почти пересобрали язык заново. В нём поменяли вещи, на которых держался старый код: строки стали вести себя по-другому, Unicode сделали нормой, print превратился в функцию, а часть старого синтаксиса просто выкинули. P.S // Если у вас тоже есть вопросы, не стесняйтесь задавать их комменратиях Программистика || #вопрос_ответ

⚠️ Внимание: Опубликована слитая недавно База из 1000+ топовых курсов и материалов для айтишников Отсортировали их для вашего удобства и выложили в телеграм-каналы по категориям: 🤖 Нейросети – 855+ материалов 🖥 Python — 1558+ материалов 👩‍💻 Frontend — 1241+ материалов 👩‍💻 Backend — 1095+ материалов ⚙️ Программы — 978+ материалов 📚 Книги по IT — 779+ материалов ⌛️ Ссылки будут активны 48 часов, сохрани себе, чтобы не потерять!

Программирование на Python с нуля за 8 часов
📱 Первоисточник
Программистика|| #video

Хитрости которые экономят время ⌨️ В программировании важны не только знания языка, но и привычки, которые помогают писать ко
Хитрости которые экономят время ⌨️ В программировании важны не только знания языка, но и привычки, которые помогают писать код быстрее и аккуратнее. Хороший разработчик думает не только о том, как код написать, но и о том, как потом его читать, тестировать и дорабатывать. Один из самых полезных приёмов, это не повторять один и тот же код. Если фрагмент используется несколько раз, его лучше вынести в функцию, модуль или компонент. Так код становится чище и проще в поддержке. Ещё один важный подход, это быстро проверять идеи на практике. Иногда лучше сначала собрать простой рабочий вариант, а уже потом улучшать его. Это помогает не тратить время на лишнюю сложность. Очень помогает и грамотная отладка. Когда что то идёт не так, полезно смотреть логи, значения переменных и стек вызовов. Часто это быстрее, чем пытаться угадать причину ошибки. И, пожалуй, главный секрет в том, чтобы писать код проще. Чем понятнее структура, имена и логика, тем легче с ним работать потом. Программистика|| #article