Программистика
Закритий канал
Лучший канал про python Ссылка для друга: https://t.me/+Ai6ughKtf5g2ZmFi Купить рекламу: https://telega.in/c/+Ai6ughKtf5g2ZmFi Админ: @JeyRahol По рекламе: @ReivuManager
Показати більше5 574
Підписники
-324 години
+67 днів
+4930 день
Архів дописів
5 572
🤩 Admin Books —электронные книги о компьютерных технологиях.
Изучай новые технологии или закрой пробелы в знаниях по своему стеку.
Стань экспертом в следующих направлениях:
• Системное администрирование
• Информационная безопасность
• Сетевое администрирование
• Этичный хакинг
Ссылка для своих: https://t.me/admbooks
5 572
Python для профи. Интерпретаторы, эмуляторы, графика и машинное обучение
Благодаря семи проектам на Python, представленным в этой книге, вы сможете получить представление о некоторых фундаментальных принципах в области информатики. В каждой главе автор пошагово описывает завершенный проект, раскрывающий один из конкретных аспектов программирования, не прибегая к сложной математике и запутанному коду. Издание адресовано программистам на языке Python среднего и продвинутого уровней, желающим закрепить знания и заполнить возможные пробелы в образовании.Программистика||#doc
5 572
Программисты, это вам 👇
Держите 5 каналов, которые реально помогают изучать программирование и IT с полного нуля:
🖥 Easy Coder — все направления IT.
👩💻 Easy Python — всё о Python.
🌐 Easy WebDev — Frontend, Backend.
🔠 Easy InfoSec — ИБ, Хакинг.
🖥 Easy GitHub — лучшее с GitHub.
Тонны бесплатной инфы для любого уровня подготовки ✔️
5 572
🤖 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
Программистика || #scripts5 572
🔁 Почему нельзя менять список во время итерации (и как это обойти)
Многие новички пишут цикл
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
5 572
NVIDIA представила NOOA: фреймворк для разработки ИИ-агентов в рамках одного Python-класса
Компания NVIDIA выпустила открытый фреймворк NOOA (Object-Oriented Agents), который призван решить проблему фрагментации в разработке ИИ-агентов. Платформа объединяет разрозненные элементы инфраструктуры — шаблоны промптов, схемы инструментов, функции обратного вызова (callbacks) и графы рабочих процессов — в единый класс Python.
Проект передан в консорциум Open Secure AI Alliance для совместного развития открытых стандартов безопасности в сфере искусственного интеллекта.
➡️ Читать полностью
Программистика || #article
5 572
NVIDIA представила NOOA: фреймворк для разработки ИИ-агентов в рамках одного Python-класса
Компания NVIDIA выпустила открытый фреймворк NOOA (Object-Oriented Agents), который призван решить проблему фрагментации в разработке ИИ-агентов. Платформа объединяет разрозненные элементы инфраструктуры — шаблоны промптов, схемы инструментов, функции обратного вызова (callbacks) и графы рабочих процессов — в единый класс Python.
Проект передан в консорциум Open Secure AI Alliance для совместного развития открытых стандартов безопасности в сфере искусственного интеллекта.
➡️ Читать полностью
Программистика || #article
5 572
Все о структурах данных в Python для начинающих
Структуры данных — это фундамент Python и основа любой эффективной программы. Без понимания списков, кортежей, множеств и словарей невозможно писать чистый, логичный и производительный код. В курсе вы разберёте все основные структуры данных в Python, их разновидности и назначение, научитесь использовать методы, операторы и генераторы.
🌐 СсылкаПрограммистика || #Course
5 572
⏰ Библиотека Python: Arrow
Arrow — это интуитивная библиотека для работы с датами и временем, предлагающая простой API для создания, форматирования и манипуляции датами. Она поддерживает часовые пояса, человекочитаемые интервалы и значительно упрощает код по сравнению со стандартным datetime.
✔️ Установка:
pip install arrow
🐱 Ссылка на репозиторий
Программистика|| #Library5 572
Micro REPL 💻
Micro-REPL обладает следующими функциями:
✅Терминал для доступа к интерактивной оболочке MicroPython. ✅Файловый менеджер для хранения файлов MicroPython. ✅Интеллектуальный редактор кода с поддержкой синтаксиса Python и автодополнением.
🌐 СсылкаПрограммистика || #Ресурсы
5 572
👩💻 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-интеграции.
Программистика || #Library5 572
Вопрос от подписчика: Почему Python 2 и 3 несовместимы?
Потому что Python 3 — это не “чуть обновили”, а почти пересобрали язык заново.
В нём поменяли вещи, на которых держался старый код: строки стали вести себя по-другому, Unicode сделали нормой, print превратился в функцию, а часть старого синтаксиса просто выкинули.
P.S // Если у вас тоже есть вопросы, не стесняйтесь задавать их комменратиях
Программистика || #вопрос_ответ
5 572
⚠️ Внимание: Опубликована слитая недавно База из 1000+ топовых курсов и материалов для айтишников
Отсортировали их для вашего удобства и выложили в телеграм-каналы по категориям:
🤖 Нейросети – 855+ материалов
🖥 Python — 1558+ материалов
👩💻 Frontend — 1241+ материалов
👩💻 Backend — 1095+ материалов
⚙️ Программы — 978+ материалов
📚 Книги по IT — 779+ материалов
⌛️ Ссылки будут активны 48 часов, сохрани себе, чтобы не потерять!
5 572
Хитрости которые экономят время ⌨️
В программировании важны не только знания языка, но и привычки, которые помогают писать код быстрее и аккуратнее. Хороший разработчик думает не только о том, как код написать, но и о том, как потом его читать, тестировать и дорабатывать.
Один из самых полезных приёмов, это не повторять один и тот же код. Если фрагмент используется несколько раз, его лучше вынести в функцию, модуль или компонент. Так код становится чище и проще в поддержке.
Ещё один важный подход, это быстро проверять идеи на практике. Иногда лучше сначала собрать простой рабочий вариант, а уже потом улучшать его. Это помогает не тратить время на лишнюю сложность.
Очень помогает и грамотная отладка. Когда что то идёт не так, полезно смотреть логи, значения переменных и стек вызовов. Часто это быстрее, чем пытаться угадать причину ошибки.
И, пожалуй, главный секрет в том, чтобы писать код проще. Чем понятнее структура, имена и логика, тем легче с ним работать потом.
Программистика|| #article
