Программистика
Canal cerrado
Лучший канал про python Ссылка для друга: https://t.me/+Ai6ughKtf5g2ZmFi Купить рекламу: https://telega.in/c/+Ai6ughKtf5g2ZmFi Админ: @JeyRahol По рекламе: @ReivuManager
Mostrar más5 791
Suscriptores
-624 horas
+157 días
-4130 días
Archivo de publicaciones
5 791
Забудь про ChatGPT. Это как просить калькулятор нарисовать картину.
Пока массы гоняют одни и те же скучные запросы в зацензуренные боты, реальная революция ИИ в канале «Техноразум»:
— Нейросети, которые не боятся запретных тем ( 🔞)
— Скрытые функции, которые другие ИИ прячут за платную подписку или цензурой
— Настоящие инструкции и промты для взлома творческих шаблонов
Переходи к настоящим возможностям, забудь про детский сад нейросетей: https://t.me/+7dOPAyODQ6
5 791
👩💻 Переменные в Python: это не коробки, а ярлыки
Новички часто представляют переменную как коробку, в которую можно положить значение. Идут дальше:
a = 5, b = a — и думают, что теперь в двух коробках лежат одинаковые числа. А потом меняют b и удивляются, почему a не изменилось. Или наоборот — меняют список через одну переменную, а вторая тоже меняется. Пора разобраться, как всё на самом деле.
🧱 Переменная — это имя, а не место хранения
В Python переменная — это просто имя (ярлык), которое прикрепляется к объекту в памяти. У объекта есть тип и значение, а переменная только ссылается на него.
a = 5
b = a
Что происходит:
1. Создаётся объект int со значением 5.
2. Ярлык a вешается на этот объект.
3. b = a — берём объект, на который указывает a, и вешаем на него ещё один ярлык b.
Теперь два имени указывают на один и тот же объект.
Проверим через id() — адрес в памяти:
print(id(a)) # 12345678 (условно)
print(id(b)) # 12345678 — тот же объект!
🧱 Неизменяемые типы: числа, строки, кортежи
Когда мы «меняем» неизменяемый объект, на самом деле создаётся новый объект, а старый ярлык перевешивается.
a = 5
b = a
a = a + 1
print(a) # 6
print(b) # 5 — b всё ещё смотрит на старый объект!
❌ Частая ошибка: думать, что b должно было тоже измениться.
✔️ Правильно: a теперь ссылается на новый объект 6, а b остался на старом 5.
🧱 Изменяемые типы: списки, словари, множества
Здесь объект можно изменить, не создавая нового. Тогда все ярлыки, ведущие на этот объект, увидят изменения.
list_a = [1, 2, 3]
list_b = list_a # оба ярлыка на один список
list_a.append(4)
print(list_a) # [1, 2, 3, 4]
print(list_b) # [1, 2, 3, 4] — потому что это тот же список!
❌ Ловушка: новички думают, что list_b — независимая копия.
✔️ Как создать реальную копию: list_b = list_a.copy() или list_b = list_a[:].
🧱 Проверка: изменяемый или нет?
x = 10
y = x
print(x is y) # True — один объект
x = 20
print(x is y) # False — x перевесили на новый объект
lst1 = [1, 2]
lst2 = lst1
print(lst1 is lst2) # True
lst1.append(3)
print(lst1 is lst2) # True — объект тот же
🧱 Аргументы функций — тоже ярлыки
При передаче в функцию копируется ссылка, а не объект. Поэтому:
def add_one(x):
x += 1
return x
a = 5
add_one(a)
print(a) # 5 — число неизменяемо, x был локальной копией ссылки
def add_to_list(lst):
lst.append(100)
my_list = [1, 2, 3]
add_to_list(my_list)
print(my_list) # [1, 2, 3, 100] — список изменился!
💡 Запомни:
🟢 Переменные в Python — это ярлыки на объекты, а не ячейки памяти.
🟢 Присваивание b = a не копирует данные, а вешает ещё один ярлык.
🟢 Неизменяемые типы (int, float, str, tuple) при попытке изменения создают новый объект.
🟢 Изменяемые типы (list, dict, set) можно менять, и все ярлыки увидят изменения.
🟢 Для создания независимой копии изменяемого объекта используй .copy() или deepcopy() (для вложенных структур).
Понимание этой разницы убережёт тебя от часов отладки и неожиданных багов. Помни: в Python всё — объект, а переменные — просто имена.Программистика|| #article
5 791
⏰ Библиотека Python: Arrow
Arrow — это интуитивная библиотека для работы с датами и временем, предлагающая простой API для создания, форматирования и манипуляции датами. Она поддерживает часовые пояса, человекочитаемые интервалы и значительно упрощает код по сравнению со стандартным datetime.
✔️ Установка:
pip install arrow
🐱 Ссылка на репозиторий
Программистика|| #Library5 791
😒 Подборка каналов по информационной безопасности
Проверенные каналы по безопасности, которые реально помогают расти.
👍 ZeroDay — Уроки, эксплуатация уязвимостей с нуля
👍 Белый Хакер — Свежие новости из мира ИБ
😎 Бункер Хакера — Статьи, книги, шпаргалки и хакинг
👨💻 Серверная Админа — Настройка и уроки по компьютерным сетям
📂 Подписывайся
5 791
Переменные, функции, типы данных... Сразу хочется закрыть вкладку 🥲
Первый шаг в Python - самый страшный. Открываешь урок, а там термины сыплются один за другим. Кажется, что это какая-то сложная система для посвященных. И ты сидишь и думаешь: "Может, программирование - это вообще не мое?" ⁉️
На самом деле проблема не в тебе, а в подаче. Когда теория висит в воздухе без практики - мозг ее просто не принимает.
❇️ Ребята из Merion Academy (того самого YouTube-канала про IT) на бесплатных вводных уроках по Python сделали иначе.
Сначала - воркшоп с ментором. Ты просто пишешь код руками и сразу видишь результат. А уже потом - термины и теория, когда есть понимание, зачем это нужно.
Что еще внутри:
✔️ Основы Python (переменные, типы, функции) - не скучно, а с примерами
✔️ Твоя первая программа - воркшоп с ментором
✔️ Тест - проверишь, правда ли понял
➡️ Запишись на бесплатные вводные уроки
Сначала напишешь код, потом разберешься с терминами.
5 791
💻 8 ключевых концепций в DDD(предметно-ориентированное проектирование)
⬇️ Наглядная шпаргалка на русском. Сохраняем, пригодится!
5 791
Программисты, это вам 👇
Держите 5 каналов, которые реально помогают изучать программирование и IT с полного нуля:
🖥 Easy Coder — все направления IT.
👩💻 Easy Python — всё о Python.
🌐 Easy WebDev — Frontend, Backend.
🔠 Easy InfoSec — ИБ, Хакинг.
🖥 Easy GitHub — лучшее с GitHub.
Тонны бесплатной инфы для любого уровня подготовки ✔️
5 791
🔍 Duplicate Finder: Найди и уничтожь файлы-клоны (и освободи место)
У каждого на диске валяются копии фоток, документов, музыки — случайные дубликаты, старые версии, одинаковые файлы в разных папках. Руками искать — себя не уважать. Этот скрипт просканирует папку, найдёт все файлы-дубликаты по содержимому и покажет, что можно смело удалить.
👉 Скрипт `find_duplicates.py`:
#!/usr/bin/env python3
"""
Duplicate Finder — ищет дубликаты файлов по содержимому (хеш SHA256).
Использование: python find_duplicates.py /путь/к/папке [--delete]
"""
import os
import sys
import argparse
import hashlib
from collections import defaultdict
from pathlib import Path
def get_file_hash(filepath, chunk_size=8192):
"""Вычисляет SHA256 хеш файла"""
hash_obj = hashlib.sha256()
with open(filepath, 'rb') as f:
for chunk in iter(lambda: f.read(chunk_size), b''):
hash_obj.update(chunk)
return hash_obj.hexdigest()
def find_duplicates(root_dir, exclude_dirs=None):
"""Сканирует root_dir и возвращает словарь {хеш: [список путей]}"""
if exclude_dirs is None:
exclude_dirs = {'.git', '__pycache__', 'venv', 'node_modules'}
files_by_hash = defaultdict(list)
root = Path(root_dir).resolve()
for filepath in root.rglob('*'):
if not filepath.is_file():
continue
# Пропускаем исключённые директории
if any(part in exclude_dirs for part in filepath.parts):
continue
try:
file_hash = get_file_hash(filepath)
files_by_hash[file_hash].append(str(filepath))
except (PermissionError, OSError):
continue
return {h: paths for h, paths in files_by_hash.items() if len(paths) > 1}
def print_duplicates(duplicates):
"""Выводит найденные дубликаты в читаемом виде"""
if not duplicates:
print("✅ Дубликатов не найдено.")
return
total_size = 0
print(f"\n🔁 Найдено групп дубликатов: {len(duplicates)}\n")
for hash_val, paths in duplicates.items():
size = os.path.getsize(paths[0])
total_size += size * (len(paths) - 1)
print(f"📄 Хеш: {hash_val[:8]}... ({size} байт)")
for i, path in enumerate(paths):
marker = "🗑 (можно удалить)" if i > 0 else "📌 (оригинал)"
print(f" {i+1}. {path} {marker}")
print()
print(f"💾 Потенциально можно освободить: {total_size / (1024*1024):.2f} МБ")
def delete_duplicates(duplicates, dry_run=True):
"""Удаляет дубликаты (все, кроме первого)"""
deleted = 0
for paths in duplicates.values():
for path in paths[1:]: # первый оставляем
if dry_run:
print(f"[dry-run] Удалил бы: {path}")
else:
try:
os.remove(path)
print(f"✅ Удалён: {path}")
deleted += 1
except OSError as e:
print(f"❌ Ошибка удаления {path}: {e}")
if dry_run:
print("🔸 Это был пробный запуск. Добавьте --delete для реального удаления.")
else:
print(f"🗑 Удалено {deleted} файлов.")
if __name__ == "__main__":
parser = argparse.ArgumentParser(description="Поиск дубликатов файлов")
parser.add_argument('directory', help='Корневая папка для поиска')
parser.add_argument('--delete', action='store_true', help='Удалить дубликаты (без этого только показ)')
args = parser.parse_args()
if not os.path.isdir(args.directory):
print(f"❌ Папка {args.directory} не существует")
sys.exit(1)
print(f"🔍 Сканирую {args.directory} ...")
duplicates = find_duplicates(args.directory)
print_duplicates(duplicates)
if args.delete and duplicates:
confirm = input("\n⚠️ Точно удалить все дубликаты? (yes/no): ")
if confirm.lower() == 'yes':
delete_duplicates(duplicates, dry_run=False)
else:
print("❌ Удаление отменено.")
elif duplicates and not args.delete:
delete_duplicates(duplicates, dry_run=True)
Программистика|| #article5 791
Хакеры слили бесплатные версии дорогих нейросетей
Пока одни платят свою зарплату на подписки, другие уже пользуются этими нейросетями бесплатно
• Trends.Vc — находит схемы заработка и реализовывает всё за тебя 💸 • Youper — ии психолог помогает понять себя и избавляет от апатии 🧠 • DeepFaceLab — создаёт фейкового персонажа любого пола, повторяя твои эмоция и движения 🤭 • Socratic — решает за вас экзамены, курсовые, по фотке вашего задания 🎓 Лазейку скоро закроют. Успей скачать, пока доступ открыт: https://t.me/+Zbu9UqdaU7g4M2Ji
5 791
⏳ tqdm: Прогресс-бары для тех, кто устал ждать и гадать
Запустил долгий цикл, ушёл пить кофе, вернулся — а он всё ещё работает. Сколько осталось? Непонятно. Успеешь ли сходить в магазин? Тоже непонятно. Пора добавить визуальную обратную связь в свои скрипты.
tqdm — это самая популярная библиотека для создания прогресс-баров в Python. Она оборачивает любой итерируемый объект и мгновенно показывает красивый индикатор выполнения с оценкой времени.
❌ Было (скучно и непонятно):
import time
for i in range(100):
time.sleep(0.1) # какая-то работа
# и никакой информации о прогрессе
✔️ Стало (красиво и информативно):
from tqdm import tqdm
import time
for i in tqdm(range(100)):
time.sleep(0.1) # теперь видно: 45% | ████▌ | 45/100 [00:04<00:05]
➕ Почему tqdm — это маст-хэв:
🟢 Одна строка кода: Просто оберни свой итерируемый объект в tqdm().
🟢 Автоматика: Сам определяет общее количество, частоту обновления, оставшееся время.
🟢 Настраиваемость: Можно менять описание, формат, цвет (в Jupyter), добавлять вложенные бары.
🟢 Универсальность: Работает с циклами, pandas (.progress_apply), запросами, файлами.
➖ Особенности:
➖ В некоторых терминалах может мигать, если обновлять слишком часто.
➖ При параллельных процессах нужно использовать tqdm аккуратно (есть tqdm.contrib.concurrent).
🧪 Продвинутые примеры:
1. Ручное обновление (для своих итераций):
pbar = tqdm(total=100)
for i in range(10):
# делаем что-то, что даёт 10 единиц прогресса за раз
pbar.update(10)
pbar.close()
2. Описание и вложенность:
from tqdm import trange
for i in trange(5, desc="Внешний цикл"):
for j in trange(10, desc="Внутренний", leave=False):
time.sleep(0.05)
3. В Jupyter Notebook:
from tqdm.notebook import tqdm
for i in tqdm(range(1000)):
# красивые цветные бары прямо в ноутбуке
4. Для pandas:
import pandas as pd
from tqdm import tqdm
tqdm.pandas() # включает поддержку progress_apply
df.progress_apply(lambda row: heavy_func(row), axis=1)
📦 Установка:
pip install tqdm
# Для Jupyter: pip install "tqdm[notebook]"
tqdm превращает скучное ожидание в контролируемый процесс. Перестань гадать — начни видеть прогресс.
🐱 Ссылка на репозиторий
Программистика|| #Library5 791
Работаете с СУБД? Присоединяйтесь к сообществу Pangolin!
Телеграм-канал для разработчиков и администраторов баз данных.
Pangolin — это PostgreSQL с 80+ доработками, и мы открыто рассказываем о его разработке.
У нас вы найдете:
• Технические детали и архитектурные решения
• Разборы доработок PostgreSQL
• Ответы на вопросы по эксплуатации и коду
• Кейсы внедрения и оптимизации
• Вакансии для тех, кто хочет работать с нами
• Вебинары и встречи с экспертами
• Знакомство с командой: хобби, книги и интересы
Присоединяйтесь к сообществу, где говорят на языке баз данных
Подписаться
#реклама 16+
О рекламодателе
5 791
🗝 Секрет defaultdict: забудь про `if key in dict`
Устал писать
if key in dict: dict[key].append(x) else: dict[key] = [x] каждый раз, когда нужно собрать значения по ключам? В Python есть элегантный способ — defaultdict из модуля collections. Он сам создаёт значение по умолчанию для отсутствующего ключа.
❌ Было (муторно и длинно):
data = [('a', 1), ('b', 2), ('a', 3)]
result = {}
for key, val in data:
if key in result:
result[key].append(val)
else:
result[key] = [val]
✔️ Стало (чисто и понятно):
from collections import defaultdict
result = defaultdict(list)
for key, val in data:
result[key].append(val) # список создаётся автоматически
🟢 Почему это круто:
- Кода меньше в 2–3 раза.
- Читается как обычная фраза: «для ключа добавить значение».
- Работает с любыми типами: defaultdict(int) для счётчиков, defaultdict(set) для уникальных значений.
Любой тип можно подставить:
counter = defaultdict(int)
for word in text.split():
counter[word] += 1 # вместо counter[word] = counter.get(word, 0) + 1
Забудь про ручные проверки — defaultdict сделает код проще и быстрее.
Программистика|| #tips5 791
Изоляция рунета ближе, чем ты думаешь
Loading … ██████████████] 99%Роскомнадзору дали карт-бланш на блокировки, а «белые списки» сайтов тестируют уже в десятках регионов. И гайки будут закручиваться только сильнее. Чтобы в одночасье не лишиться доступа к свободному Интернету, просто сохрани Only Hack. Тут профессиональный хакер делится фишками, с которыми доступ к глобальной сети у тебя будет даже в случае ядерного апокалипсиса. Не жди момента «Х». Перестрахуйся подпиской.
5 791
На Stepik запустили курс «От новичка к уверенности в коде на Python»
Курс создан для новичков, которым важно не заучить команды, а понять логику. Наглядные схемы и визуальные разборы показывают, что происходит внутри программы и как она работает
Много практики, понятные объяснения решений не дадут застрять на теории. Материал предлагает вам не иллюзию знаний, а ощущение контроля: вы ясно видите как из нескольких строк кода рождается работающая программа
Что внутри:
✅переменные и типы данных
✅условия и логика программ
✅циклы и рекурсия
✅функции и работа с вводом данных
✅списки, словари и множества
✅базовое ООП
✅работа с библиотеками Python
✅десятки задач и упражнений
Эти знания фундамент для написания простых ботов и автоматизации задач
Скидка 25%, действует 48 часов
🔗Пройти курс на Stepik
5 791
Как разработчик решил параллельно найму пилить свои бизнес-проекты с нулевым опытом: дневник с передовой
Меня зовут Александр Торбек, И я попал в день сурка: код писать умею, зарплата стабильная. Но в заднице зудит ощущение катастрофического застоя.
Поэтому я сделал глупейшую вещь — начал разрабатывать продукты. Без связей, плана и стратегии. В блоге буду фиксировать:
— идеи (и почему 90% из них — говно собаки)
— что сделал, сколько заработал
— мысли айтишника, который впервые думает как продакт, а не как тупой исполнитель
Я хочу пройти весь путь от основателя продукта до продажника. И выяснить, смогу ли без бизнес-бэкграунда выйти на уровень дядек в элитных пиджаках.
Если тоже хотите создавать свои продукты — посмотрите, как я набиваю шишки первым: @atorbek_it
5 791
Бесплатная конференция по PostgreSQL
Регистрируйся на бесплатную конференцию по PostgreSQL — 19.03.2026.📅
Эксперты расскажут о разработке, администрировании и новинках мира Postgres.
✅ Бесплатное участие
✅ Опытные спикеры
✅ 25+ тематических докладов
✅ Рабочие кейсы
Каждый участник получает именной Сертификат участника мероприятия.
Одни из немногих спикеров конференции:
— Андрей Бородин
PostgreSQL Major contributor, руководитель подразделения разработки РСУБД с открытым исходным кодом Yandex Cloud
— Родион Хабибов
DevOps-инженер «СберСервис»
— Андрей Овчаренко
Руководитель отдела Java-разработки Московской биржи
... и многие другие.
Регистрируйся, будет интересно!
И бесплатно!
Зарегистрироваться
#реклама 16+
pgbootcamp.ru
О рекламодателе
