fa
Feedback

فریب کلاهبرداران را نخورید! تل‌متریو این کانال‌ها را شناسایی و برچسب‌گذاری می‌کند 👉 برای مشاهده برچسب، اشتراک تهیه کنید

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

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

کانال بسته

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

نمایش بیشتر
5 791
مشترکین
-624 ساعت
+157 روز
-4130 روز
آرشیو پست ها
Забудь про ChatGPT. Это как просить калькулятор нарисовать картину. Пока массы гоняют одни и те же скучные запросы в зацензур
Забудь про ChatGPT. Это как просить калькулятор нарисовать картину. Пока массы гоняют одни и те же скучные запросы в зацензуренные боты, реальная революция ИИ в канале «Техноразум»: — Нейросети, которые не боятся запретных тем ( 🔞) — Скрытые функции, которые другие ИИ прячут за платную подписку или цензурой — Настоящие инструкции и промты для взлома творческих шаблонов Переходи к настоящим возможностям, забудь про детский сад нейросетей: https://t.me/+7dOPAyODQ6

👩‍💻 Переменные в 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

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

😒 Подборка каналов по информационной безопасности Проверенные каналы по безопасности, которые реально помогают расти. 👍 Zer
😒 Подборка каналов по информационной безопасности Проверенные каналы по безопасности, которые реально помогают расти. 👍 ZeroDay — Уроки, эксплуатация уязвимостей с нуля 👍 Белый Хакер — Свежие новости из мира ИБ 😎 Бункер Хакера — Статьи, книги, шпаргалки и хакинг 👨‍💻 Серверная Админа — Настройка и уроки по компьютерным сетям 📂 Подписывайся

Переменные, функции, типы данных... Сразу хочется закрыть вкладку 🥲 Первый шаг в Python - самый страшный. Открываешь урок, а там термины сыплются один за другим. Кажется, что это какая-то сложная система для посвященных. И ты сидишь и думаешь: "Может, программирование - это вообще не мое?" ⁉️ На самом деле проблема не в тебе, а в подаче. Когда теория висит в воздухе без практики - мозг ее просто не принимает. ❇️ Ребята из Merion Academy (того самого YouTube-канала про IT) на бесплатных вводных уроках по Python сделали иначе. Сначала - воркшоп с ментором. Ты просто пишешь код руками и сразу видишь результат. А уже потом - термины и теория, когда есть понимание, зачем это нужно. Что еще внутри: ✔️ Основы Python (переменные, типы, функции) - не скучно, а с примерами ✔️ Твоя первая программа - воркшоп с ментором ✔️ Тест - проверишь, правда ли понял ➡️ Запишись на бесплатные вводные уроки Сначала напишешь код, потом разберешься с терминами.

Как финский гик ВЫНЕС Майкрософт
📱 Первоисточник
Linux Administration ||#Видеоt

💻 8 ключевых концепций в DDD(предметно-ориентированное проектирование) ⬇️ Наглядная шпаргалка на русском. Сохраняем, пригоди
💻 8 ключевых концепций в DDD(предметно-ориентированное проектирование) ⬇️ Наглядная шпаргалка на русском. Сохраняем, пригодится!

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

🔍 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)
Программистика|| #article

Хакеры слили бесплатные версии дорогих нейросетей Пока одни платят свою зарплату на подписки, другие уже пользуются этими нейросетями бесплатно
• Trends.Vc — находит схемы заработка и реализовывает всё за тебя 💸 • Youper — ии психолог помогает понять себя и избавляет от апатии 🧠 • DeepFaceLab — создаёт фейкового персонажа любого пола, повторяя твои эмоция и движения 🤭 • Socratic — решает за вас экзамены, курсовые, по фотке вашего задания 🎓
 Лазейку скоро закроют. Успей скачать, пока доступ открыт: https://t.me/+Zbu9UqdaU7g4M2Ji

⏳ tqdm: Прогресс-бары для тех, кто устал ждать и гадать Запустил долгий цикл, ушёл пить кофе, вернулся — а он всё ещё работае
⏳ 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 превращает скучное ожидание в контролируемый процесс. Перестань гадать — начни видеть прогресс. 🐱 Ссылка на репозиторий Программистика|| #Library

Работаете с СУБД? Присоединяйтесь к сообществу Pangolin! Телеграм-канал для разработчиков и администраторов баз данных. Pango
Работаете с СУБД? Присоединяйтесь к сообществу Pangolin! Телеграм-канал для разработчиков и администраторов баз данных. Pangolin — это PostgreSQL с 80+ доработками, и мы открыто рассказываем о его разработке. У нас вы найдете: • Технические детали и архитектурные решения • Разборы доработок PostgreSQL • Ответы на вопросы по эксплуатации и коду • Кейсы внедрения и оптимизации • Вакансии для тех, кто хочет работать с нами • Вебинары и встречи с экспертами • Знакомство с командой: хобби, книги и интересы Присоединяйтесь к сообществу, где говорят на языке баз данных Подписаться #реклама 16+ О рекламодателе

🗝 Секрет 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 сделает код проще и быстрее. Программистика|| #tips

Изоляция рунета ближе, чем ты думаешь Loading … ██████████████] 99% Роскомнадзору дали карт-бланш на блокировки, а «белые спи
Изоляция рунета ближе, чем ты думаешь
Loading … ██████████████] 99%
Роскомнадзору дали карт-бланш на блокировки, а «белые списки» сайтов тестируют уже в десятках регионов. И гайки будут закручиваться только сильнее. Чтобы в одночасье не лишиться доступа к свободному Интернету, просто сохрани Only Hack. Тут профессиональный хакер делится фишками, с которыми доступ к глобальной сети у тебя будет даже в случае ядерного апокалипсиса. Не жди момента «Х». Перестрахуйся подпиской.

На Stepik запустили курс «От новичка к уверенности в коде на Python» Курс создан для новичков, которым важно не заучить коман
На Stepik запустили курс «От новичка к уверенности в коде на Python» Курс создан для новичков, которым важно не заучить команды, а понять логику. Наглядные схемы и визуальные разборы показывают, что происходит внутри программы и как она работает Много практики, понятные объяснения решений не дадут застрять на теории. Материал предлагает вам не иллюзию знаний, а ощущение контроля: вы ясно видите как из нескольких строк кода рождается работающая программа Что внутри: ✅переменные и типы данных ✅условия и логика программ ✅циклы и рекурсия ✅функции и работа с вводом данных ✅списки, словари и множества ✅базовое ООП ✅работа с библиотеками Python ✅десятки задач и упражнений Эти знания фундамент для написания простых ботов и автоматизации задач Скидка 25%, действует 48 часов 🔗Пройти курс на Stepik

Все библиотеки и модули Python объясняются за 13 минут
🎥 Первоисточник
Программистика|| #video

Как разработчик решил параллельно найму пилить свои бизнес-проекты с нулевым опытом: дневник с передовой Меня зовут Александр Торбек, И я попал в день сурка: код писать умею, зарплата стабильная. Но в заднице зудит ощущение катастрофического застоя. Поэтому я сделал глупейшую вещь — начал разрабатывать продукты. Без связей, плана и стратегии. В блоге буду фиксировать: — идеи (и почему 90% из них — говно собаки) — что сделал, сколько заработал — мысли айтишника, который впервые думает как продакт, а не как тупой исполнитель Я хочу пройти весь путь от основателя продукта до продажника. И выяснить, смогу ли без бизнес-бэкграунда выйти на уровень дядек в элитных пиджаках. Если тоже хотите создавать свои продукты — посмотрите, как я набиваю шишки первым: @atorbek_it

Бесплатная конференция по PostgreSQL Регистрируйся на бесплатную конференцию по PostgreSQL — 19.03.2026.📅 Эксперты расскажут
Бесплатная конференция по PostgreSQL Регистрируйся на бесплатную конференцию по PostgreSQL — 19.03.2026.📅 Эксперты расскажут о разработке, администрировании и новинках мира Postgres. ✅ Бесплатное участие ✅ Опытные спикеры ✅ 25+ тематических докладов ✅ Рабочие кейсы Каждый участник получает именной Сертификат участника мероприятия. Одни из немногих спикеров конференции: — Андрей Бородин PostgreSQL Major contributor, руководитель подразделения разработки РСУБД с открытым исходным кодом Yandex Cloud — Родион Хабибов DevOps-инженер «СберСервис» — Андрей Овчаренко Руководитель отдела Java-разработки Московской биржи ... и многие другие. Регистрируйся, будет интересно! И бесплатно! Зарегистрироваться #реклама 16+ pgbootcamp.ru О рекламодателе