en
Feedback

Don't get caught by a cheater! Telemetrio finds and tags such channels 👉 If you want to see the tag, subscribe

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

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

Closed channel

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

Show more
5 791
Subscribers
-624 hours
+157 days
-4130 days
Posts Archive
Хороший айтишник ≠ хороший руководитель И это причина, почему большинство застревают в своем развитии. 📊 Управление — это от
Хороший айтишник ≠ хороший руководитель И это причина, почему большинство застревают в своем развитии. 📊 Управление — это отдельный навык. В канале Апазиди АйТи показывают, как его развить в реальном IT. ▪️управленческие ошибки, которые тихо ломают карьеру ▪️почему созвоны — признак слабой системы ▪️как строить команды без постоянного контроля Читай тут: 👉 https://t.me/+F_6p7j93h8QxZWVi

👩‍💻 Шпаргалка по конвертированию CSV to JSON с помощью Python Программистика|| #doc
👩‍💻 Шпаргалка по конвертированию CSV to JSON с помощью Python Программистика|| #doc

Ухватил ОФФЕР с ЗП более чем 500к🤑 Несколько раз в месяц Топовые IT компании выкладывают вакансии с огромной зарплатой даже
Ухватил ОФФЕР с ЗП более чем 500к🤑 Несколько раз в месяц Топовые IT компании выкладывают вакансии с огромной зарплатой даже у джунов, а я расскажу как попасть на ТимЛида‼️ Я — Артем и в своём телеграм канале рассказываю: 🔴 Как максимально быстро вырасти до Тим Лида в IT компаний с нуля — [Инструкция] 🔴 Как собрать лучшую команду на удалёнке — [Пояснение] 🔴Подсказки и фишечки от ТимЛида с 13 летним опытом — [Список] Подписаться можно тут: https://t.me/+dbAZSx8rR1swMTky

Сетевое программирование на Python Книга посвящена разработке серверных приложений и клиент-серверных архитектур на Python. Р
Сетевое программирование на Python
Книга посвящена разработке серверных приложений и клиент-серверных архитектур на Python. Рассказано о поддержке SSL в Python 3, представлены примеры работы с протоколами TCP, UDP, HTTP, SMTP, IMAP, FTP, RPC, взаимодействия c сервисами DNS. Освещена работа с электронной почтой в приложениях. Описаны цели протокола TLS и методы их достижения на Python. Подробно описаны возможности модуля asyncio, входящего в состав Python 3.4, даны рекомендации по разработке сетевых приложений с использованием веб-фреймворков Flask и Django. Для программистов.
Программистика|| #doc

👩‍💻 Ctypes Python – Огромная скорость и БЕЗОПАСНОСТЬ компонентов
🎥 Первоисточник
Программистика|| #video

Сеньор за полгода? 📈 Эта девушка получила оффер в IT-компанию, хотя весь её опыт — пара курсов с ютуба 😱 Она воспользовалас
Сеньор за полгода? 📈 Эта девушка получила оффер в IT-компанию, хотя весь её опыт — пара курсов с ютуба 😱 Она воспользовалась ИИ-помощником и легко скрыла все свои пробелы в знаниях. Теперь впереди: ⤵️ удалёнка, стартовое обучение и ставка 55$ в час. Проходи собеседования вместе с Interview Ninja 🥷 Проверь успех на себе — есть 100 бесплатных запросов на день. 👉 @interview_ninja

НАЧАЛО. Премиальные квартиры в Доме-Вселенной на Пресне НАЧАЛО - новый дом в центре столицы, рядом с Москва-Сити. Проект по-н
НАЧАЛО. Премиальные квартиры в Доме-Вселенной на Пресне НАЧАЛО - новый дом в центре столицы, рядом с Москва-Сити. Проект по-настоящему космического масштаба, где есть все, чтобы раскрыть себя и свои возможности. - Три двора: детский, спортивный, двор для медитаций - Террасный променад с зонами для спорта, отдыха, детских игр - Детский клуб, репетиторские, коворкинги, переговорные, библиотека, кинотеатр - Фитнес-центр с бассейном - Образовательный центр - «Улица ресторанов» Квартиры - от однокомнатных до просторных резиденций и пентхаусов. С потолками до 4 м и панорамными окнами в пол, за которыми - великолепные виды на Сити, центр Москвы, набережные, Воробьевы горы, Лужники. Сегодня вы можете купить квартиры в доме НАЧАЛО с рассрочкой 0% на 3 года. Узнать больше Проектная декларация на сайте https://наш.дом.рф/. Застройщик: "СЗ "НАЧАЛО". #реклама nachalo-na-presne.ru О рекламодателе

Простые способы сэкономить память в Python Если код разрастается, память летит в трубу. Вот как её прижать. 1️⃣ Что экономить в первую очередь? Данные. Именно они - главные пожиратели ОЗУ, а не сам код. 2️⃣ Пример: кортеж vs. класс
# Фигня, которая жрёт память
class Point:
    def __init__(self, x, y):
        self.x = x
        self.y = y

# Более плотное хранение
from collections import namedtuple
Point = namedtuple('Point', ['x', 'y'])

# Или просто кортеж (x, y)
3️⃣ Почему это работает? Структуры без __dict__ (кортежи, namedtuple, dataclass с frozen=True) занимают меньше места, чем обычные классы. Для миллиона объектов разница - десятки мегабайт. 4️⃣ Ещё один лайфхак: sys.intern() для строк
import sys
massive_list_of_names = [sys.intern(name) for name in raw_data]
Это чертовски полезно, если в данных много повторяющихся строк (теги, статусы, имена). Экономит кучу места. 5️⃣ А что насчет массивов? Используй array.array или numpy для чисел. Хранение миллиона int'ов в списке - это долго и дорого. В специальном массиве - в разы компактнее. Программистика ||#article

🤔 Asyncio 🆚 Threading vs Multiprocessing: Гонка за производительностью в Python Когда нужно ускорить код, новички часто соз
🤔 Asyncio 🆚 Threading vs Multiprocessing: Гонка за производительностью в Python Когда нужно ускорить код, новички часто создают потоки для всего подряд ("многопоточность же быстрее!"), а потом удивляются, почему Python с GIL не летает. Сеньоры спорят между asyncio, threading и multiprocessing, забывая, что у каждого инструмента своя работа. Разбираемся, когда что запускать. 🧱 Когда `asyncio` — это хорошо (I/O-bound задачи с многочисленными операциями): Asyncio идеален, когда программа много времени ждёт ввода-вывода: сетевые запросы, работа с базами данных, взаимодействие с API. 1️⃣. Веб-скрейпинг и API-запросы:
import aiohttp
import asyncio

async def fetch_page(session, url):
    async with session.get(url) as response:
        return await response.text()

async def main():
    async with aiohttp.ClientSession() as session:
        urls = ["http://site1.com", "http://site2.com"]
        tasks = [fetch_page(session, url) for url in urls]
        pages = await asyncio.gather(*tasks)  # Все запросы параллельно!
2️⃣. Веб-серверы (FastAPI, aiohttp):
# FastAPI сам использует asyncio
from fastapi import FastAPI
import asyncio

app = FastAPI()

@app.get("/")
async def read_root():
    await asyncio.sleep(0.1)  # Не блокирует другие запросы
    return {"Hello": "World"}
3️⃣. Работа с несколькими сокетами/соединениями:
# Чат-сервер, прокси, бот для мессенджера
🧱 Когда `asyncio` — это ПЛОХО (антипаттерны): 1. CPU-интенсивные задачи:
❌ Бесполезно:
async def calculate_primes(limit):
    primes = []
    for num in range(2, limit):
        # Тяжелые вычисления БЛОКИРУЮТ event loop!
        if all(num % i != 0 for i in range(2, int(num**0.5) + 1)):
            primes.append(num)
    return primes
2. Блокирующие вызовы без специальной обёртки:
❌ Заблокирует весь event loop:
async def read_large_file():
    with open("huge.csv", "r") as f:
        data = f.read()  # Синхронный I/O!
    return data
🧱 Когда `threading` — это хорошо (I/O-bound с блокирующими библиотеками): Threading спасает, когда нужно работать с библиотеками, которые не поддерживают asyncio, но много ждут. 1️⃣. GUI-приложения (Tkinter, PyQt):
# Отдельный поток для долгой операции, чтобы интерфейс не зависал
import threading
import tkinter as tk

def long_operation():
    # Имитация долгой операции
    time.sleep(5)
    print("Готово!")

def start_in_thread():
    thread = threading.Thread(target=long_operation)
    thread.start()  # GUI остаётся отзывчивым
2️⃣. Параллельные HTTP-запросы с requests (синхронной):
import threading
import requests

def fetch_url(url):
    response = requests.get(url)  # Синхронная библиотека
    return response.text

threads = []
for url in urls:
    thread = threading.Thread(target=fetch_url, args=(url,))
    thread.start()
    threads.append(thread)
3️⃣. Чтение/запись файлов на медленных дисках:
# Пока один поток ждёт диск, другой может работать
🧱 Когда `threading` — это ПЛОХО (опасно и бесполезно): 1. CPU-задачи в Python (из-за GIL):
❌ Не ускорит, а замедлит:
def calculate():
    result = 0
    for i in range(10_000_000):
        result += i
    return result

# 4 потока будут работать МЕДЛЕННЕЕ, чем 1 поток из-за GIL и переключений
2. Общие изменяемые данные без блокировок:
❌ Состояние гонки (race condition):
counter = 0

def increment():
    global counter
    for _ in range(1000000):
        counter += 1  # Неатомарная операция!

# Результат непредсказуем, будет меньше 2_000_000
Скорость приходит не от слепого использования потоков, а от правильного сопоставления задачи и инструмента. 🔗 Подробнее в статье Программистика|| #doc

Самые дорогие ошибки в IT выглядят так же, как обычный рабочий день. Один деплой — и минус прод. Вот как это было на самом де
Самые дорогие ошибки в IT выглядят так же, как обычный рабочий день. Один деплой — и минус прод. Вот как это было на самом деле: 🔥 GitLab — стерли базу 🔥 Knight Capital — минус 440 млн за 30 минут 🔥 Facebook — 6 часов тишины Если работаешь с продом — тебе сюда.

👀 Causal Inference на Python. Причинно-следственные связи в IT-разработке Сколько покупателей привлечет дополнительный долла
👀 Causal Inference на Python. Причинно-следственные связи в IT-разработке Сколько покупателей привлечет дополнительный доллар, вложенный в онлайн-рекламу? Какие клиенты будут покупать только по скидочному купону? Как разработать оптимальную стратегию ценообразования? Причинно-следственный анализ (casual inference) — лучший способ разобраться, как влиять на бизнес-метрики, которыми вы хотите управлять. И для этого понадобится всего пара строк кода на Python. Матеуш Факур рассказывает про малоизвестные применения причинно-следственного анализа, с помощью которых можно оценить влияние воздействия на результат. Программистика|| #doc

Создание приложения на Python и Flask Flask — один из самых популярных веб-фреймворков для Python. Его используют как новички
Создание приложения на Python и Flask Flask — один из самых популярных веб-фреймворков для Python. Его используют как новички, так и профессиональные разработчики. В этой инструкции мы покажем, как с ним работать, создав простое приложение. ➡️ Читать статью Программистика || #article

🖥 ​Prefect - это оркестрации рабочих процессов с открытым исходным кодом, предназначенный для создания надежных конвейеров о
🖥 ​Prefect - это оркестрации рабочих процессов с открытым исходным кодом, предназначенный для создания надежных конвейеров обработки данных на Python!
👍 Он позволяет превращать Python-скрипты в производственные рабочие процессы с минимальными усилиями, обеспечивая автоматическое отслеживание состояния, обработку ошибок, планирование задач и мониторинг в реальном времени. С помощью Prefect вы можете строить динамические и устойчивые конвейеры данных, которые адаптируются к изменениям и восстанавливаются после сбоев.
🐱 Ссылка на GitHub Программистика || #Library

НЕ ПОКУПАЙ КУРСЫ В ИНТЕРЕНЕТ И НЕ ИДИ В ВУЗ! ❌ Курсы — СКАМ чистой воды, ❌ В ВУЗ'е тебя учат 60 летние бабки программировать
НЕ ПОКУПАЙ КУРСЫ В ИНТЕРЕНЕТ И НЕ ИДИ В ВУЗ! ❌ Курсы — СКАМ чистой воды, ❌ В ВУЗ'е тебя учат 60 летние бабки программировать в 1С Самый лучший вариант — канал Влада Все знания в IT, которые он получил за 11+ лет коммерческого опыта он рассказывает в своём канале абсолютно бесплатно. Всего 10 минут в день в канале Влада и ты поймешь, как нужно правльно учиться и искать работу👇 https://t.me/+Nrnh4uEZr7szY2Yy

📦 Мемоизация: магия @lru_cache или свой велосипед? Нужно считать тяжёлые функции быстро? Запомни результат - не считай по 100 раз. 1️⃣ В чём суть Мемоизация - это кеширование возвращаемых значений функции для уже обработанных аргументов. 2️⃣ Стандартный путь: @lru_cache
from functools import lru_cache

@lru_cache(maxsize=128)
def fibonacci(n: int) -> int:
    if n < 2:
        return n
    return fibonacci(n - 1) + fibonacci(n - 2)

# Всё. Работает. Не надо думать.
3️⃣ Свой велосипед: замыкания
def manual_memoize(func):
    cache = {}  # Вот и весь секрет - словарь в замыкании

    def wrapper(*args):
        if args not in cache:
            cache[args] = func(*args)
        return cache[args]
    return wrapper

@manual_memoize
def heavy_calculation(x):
    # Какая-то долгая хрень
    return x * x
4️⃣ Зачем это надо?
🔴 @lru_cache - готово, проверено, есть TTL и статистика. 🔴 Свой кеш - полный контроль, микрооптимизации, нестандартные ключи. 🔴 Не надо тащить либы для одной фичи. 🔴 Понять, как работает магия внутри.
5️⃣ Нюансы
🔴 @lru_cache не работает с unhashable аргументами (списки, словари) без костылей. 🔴 Ручной кеш - твоя ответственность за очистку и утечки памяти. 🔴 Для 99% случаев встроенного декоратора хватает за глаза.
Программистика ||#article

📦 Мемоизация: магия @lru_cache или свой велосипед? Нужно считать тяжёлые функции быстро? Запомни результат - не считай по 100 раз. 1️⃣ В чём суть Мемоизация - это кеширование возвращаемых значений функции для уже обработанных аргументов. 2️⃣ Стандартный путь: @lru_cache
from functools import lru_cache

@lru_cache(maxsize=128)
def fibonacci(n: int) -> int:
    if n < 2:
        return n
    return fibonacci(n - 1) + fibonacci(n - 2)

# Всё. Работает. Не надо думать.
3️⃣ Свой велосипед: замыкания
def manual_memoize(func):
    cache = {}  # Вот и весь секрет - словарь в замыкании

    def wrapper(*args):
        if args not in cache:
            cache[args] = func(*args)
        return cache[args]
    return wrapper

@manual_memoize
def heavy_calculation(x):
    # Какая-то долгая хрень
    return x * x
4️⃣ Зачем это надо?
🔴 @lru_cache - готово, проверено, есть TTL и статистика. 🔴 Свой кеш - полный контроль, микрооптимизации, нестандартные ключи. 🔴 Не надо тащить либы для одной фичи. 🔴 Понять, как работает магия внутри.
5️⃣ Нюансы
🔴 @lru_cache не работает с unhashable аргументами (списки, словари) без костылей. 🔴 Ручной кеш - твоя ответственность за очистку и утечки памяти. 🔴 Для 99% случаев встроенного декоратора хватает за глаза.
Программистика ||#article

Лицо Udemy представили? — тут слили кучу курсов по IT от онлайн школ Материала почти на пол-терабайта, мы загрузили всё на ка
Лицо Udemy представили? — тут слили кучу курсов по IT от онлайн школ Материала почти на пол-терабайта, мы загрузили всё на канал, там есть: 🐍 Python и нейросети (28 полных курсов + библиотеки) 📈 Data Analysis + машинное обучение (15 курсов) 👨🏻‍💻 Frontend (от JS до React) — (20 курсов + библиотеки) 🤖 Backend + базы Данных (30 курсов) 🛡 Информационная безопасность (Защита+Атака) — (14 курсов) 🎮 Разработка игр (11 курсов) Всё можно забрать бесплатно и смотреть без скачивания ➡️ @IT_SLIV

👩‍💻 Модули vs Классы: Когда функции достаточно, а когда без ООП не обойтись В Python есть два подхода к организации кода: п
👩‍💻 Модули vs Классы: Когда функции достаточно, а когда без ООП не обойтись В Python есть два подхода к организации кода: процедурный (модули с функциями) и объектно-ориентированный (классы). Новички часто создают классы там, где хватит функций ("это же круче!"), а сеньоры ругают избыточные иерархии. Разбираемся, где что использовать. 🧱 Когда `модули с функциями` — это достаточно и правильно: Простой модуль с функциями идеален, когда у вас нет состояния или оно минимально, а логика представляет собой набор операций. 1️⃣. Утилитарные функции (pure functions):
# math_utils.py — идеальный модуль
def clamp(value, min_val, max_val):
    return max(min_val, min(value, max_val))

def lerp(start, end, factor):
    return start + (end - start) * factor

# Никакого состояния, только преобразования
2️⃣. Конфигурация и константы:
# config.py — лучше модуля, чем класса-синглтона
DATABASE_URL = "postgresql://localhost/db"
API_TIMEOUT = 30
LOG_LEVEL = "INFO"
3️⃣. Скрипты и одноразовые задачи:
# data_cleaner.py — запустили, отработали, завершили
import pandas as pd

def load_data(path):
    return pd.read_csv(path)

def clean_data(df):
    return df.dropna()

if __name__ == "__main__":
    df = load_data("data.csv")
    cleaned = clean_data(df)
    # Всё, классы не нужны
🧱 Когда `классы` — это необходимость, а не прихоть: 1. Когда есть состояние (stateful объекты):
❌ Слабое решение на функциях:
balance = 1000

def withdraw(amount):
    global balance  # Опасно! Глобальное состояние
    balance -= amount
    return balance

✅ Чистый ООП-подход:
class BankAccount:
    def __init__(self, initial_balance):
        self._balance = initial_balance  # Инкапсуляция
    
    def withdraw(self, amount):
        if amount <= self._balance:
            self._balance -= amount
        return self._balance
2. Когда нужен полиморфизм:
class Notification:
    def send(self, message):
        raise NotImplementedError

class EmailNotification(Notification):
    def send(self, message):
        # Логика отправки email
        pass

class SMSNotification(Notification):
    def send(self, message):
        # Логика отправки SMS
        pass

# Одна функция работает с разными типами
def notify_users(users, notification: Notification):
    for user in users:
        notification.send(f"Hello, {user.name}!")
3. Когда объект имеет жизненный цикл:
class DatabaseConnection:
    def __init__(self, connection_string):
        self.conn = None
        self.connection_string = connection_string
    
    def __enter__(self):
        self.conn = connect(self.connection_string)
        return self
    
    def __exit__(self, *args):
        self.conn.close()
    
    def execute(self, query):
        return self.conn.execute(query)

# Контекстный менеджер управляет жизненным циклом
🧱 Антипаттерны (что делать НЕ НАДО): 1. Класс как namespace для функций:
❌ Бессмысленный класс:
class MathOperations:
    @staticmethod
    def add(a, b):
        return a + b
    
    @staticmethod
    def multiply(a, b):
        return a * b

# Используем: MathOperations.add(2, 3) — избыточно!

✅ Просто модуль:
# math_ops.py
def add(a, b):
    return a + b

def multiply(a, b):
    return a * b
2. Функции там, где нужно состояние:
❌ Функции с кучей параметров:
def process_user_data(user_id, db_conn, cache, logger, config):
    # 5 параметров — явный признак, что нужен класс
    pass

✅ Класс, инкапсулирующий зависимости:
class UserProcessor:
    def __init__(self, db_conn, cache, logger, config):
        self.db = db_conn
        self.cache = cache
        self.logger = logger
        self.config = config
    
    def process(self, user_id):
        # Все зависимости уже есть в self
        pass
💡 Практическое правило выбора: Выбирай модуль с функциями, если:
🟢 Операции не имеют состояния (pure functions) 🟢 Данные преобразуются, а не хранятся 🟢 Нужен набор утилит или констант 🟢 Код будет использоваться как библиотека
🔗 Подробнее в статье Программистика ||#article