Forwarded from Код найма
👎3
Forwarded from Представляешь,
создатели TikTok выкатили БЕСПЛАТНЫЙ аналог Cursor, еще и OPEN-SOURCE
ByteDance (да-да, те самые) выложили на GitHub исходники Trae Agent — ИИ-ассистента для программистов, который умеет писать код, править баги, задавать сам себе вопросы и даже запускать команды в терминале.
То есть буквально как Cursor, но с открытым кодом и без подписки на $60.
Что умеет:
- редактирует файлы и пишет коммиты,
- сам решает, что делать: рефакторить, тестить или гуглить,
- работает с GPT-4, Claude, OpenRouter и даже Doubao (внезапно),
- сохраняет «траекторию» своих действий — можно проверить, что он натворил.
Ссылка на GitHub: тык
@your_tech
ByteDance (да-да, те самые) выложили на GitHub исходники Trae Agent — ИИ-ассистента для программистов, который умеет писать код, править баги, задавать сам себе вопросы и даже запускать команды в терминале.
То есть буквально как Cursor, но с открытым кодом и без подписки на $60.
Что умеет:
- редактирует файлы и пишет коммиты,
- сам решает, что делать: рефакторить, тестить или гуглить,
- работает с GPT-4, Claude, OpenRouter и даже Doubao (внезапно),
- сохраняет «траекторию» своих действий — можно проверить, что он натворил.
Ссылка на GitHub: тык
@your_tech
❤2🙈2
__init__.py
в Python: зачем он нужен и как с ним работатьФайл
__init__.py
играет ключевую роль в функционировании модулей и пакетов. В этой посте разберём, зачем нужен этот файл, как его использовать, и какие трюки можно с ним провернуть.__init__.py
используется для обозначения директории как пакета Python. Пакет — это просто каталог, содержащий код, который можно импортировать. До Python 3.3 файл __init__.py
был обязателен для того, чтобы Python распознавал директорию как пакет. Начиная с Python 3.3, это уже не строго обязательно благодаря PEP 420, который ввёл поддержку 'implicit namespace packages'.Тем не менее,
__init__.py
всё ещё активно используется, потому что он позволяет:— Настроить импорты, переменные окружения и т.д.;
— Реализовать алиасы и проксировать импорты;
— Управлять логикой и поведением при импорте.
Пример: простой пакет с
__init__.py
my_package/
├── __init__.py
├── module1.py
└── module2.py
В
__init__.py
можно явно указать, какие модули экспортируются:
from .module1 import func1
from .module2 import func2
__all__ = ['func1', 'func2']
Теперь из внешнего кода можно написать:
from my_package import func1, func2
И это сработает — благодаря тому, что
__init__.py
делает интерфейс «плоским».Что можно писать в
__init__.py
Всё, что угодно — это обычный Python-скрипт. Вот что часто в нём делают:
1. Инициализация логики:
import logging
logging.getLogger(__name__).addHandler(logging.NullHandler())
2. Упрощение структуры:
# Вместо длинного:
from my_package.module1.submodule import ClassA
# можно:
from my_package import ClassA
И в
__init__.py
:
from .module1.submodule import ClassA
3. Версионирование:
__version__ = "1.0.0"
4. Работа с абсолютными и относительными импортами:
Python различает абсолютные и относительные импорты. Благодаря
__init__.py
, относительные импорты типа from . import module1
работают корректно.Когда
__init__.py
не нуженPEP 420 ввёл концепцию namespace packages — это директории без
__init__.py
, которые Python всё равно распознаёт как пакеты. Это удобно, когда вы хотите:— Распределить один пакет между несколькими каталогами (например, для плагинной архитектуры);
— Избежать необходимости в поддержке пустых
__init__.py
.Пример:
project/
├── pkg/
│ └── subpkg1/
│ └── a.py
└── other/
└── pkg/
└── subpkg2/
└── b.py
Если в
pkg/
нет __init__.py
, Python объединит содержимое в один namespace package. Когда
__init__.py
обязателен— При тестировании и использовании
pytest
(некоторые тест-раннеры не обнаруживают модули без `__init__.py`);— При работе с устаревшими инструментами;
— При построении плоского интерфейса пакета;
— Для поддержки специфичных путей и логики импорта.
#основы
Python Enhancement Proposals (PEPs)
PEP 420 – Implicit Namespace Packages | peps.python.org
Namespace packages are a mechanism for splitting a single Python package across multiple directories on disk. In current Python versions, an algorithm to compute the packages __path__ must be formulated. With the enhancement proposed here, the import ...
✍9❤4👍1
Django 20 лет!
Если вы сегодня выпьете, ваша женщина не имеет право осудить вас: такие юбилеи бывают нечасто. Соавтор фреймворка Саймон Виллисон поделился историей проекта в своем блоге. Он также признался, что совсем не умеет доводить идеи до ума. Их накопилось так много, что даже пришлось выуживать из Internet Archive.
Теперь можно проводить тест на возраст «А ты помнишь первую версию фреймворка?"
#факт
@zen_of_python
🍾 — Если за такое не грех и бутылочку откупорить
Если вы сегодня выпьете, ваша женщина не имеет право осудить вас: такие юбилеи бывают нечасто. Соавтор фреймворка Саймон Виллисон поделился историей проекта в своем блоге. Он также признался, что совсем не умеет доводить идеи до ума. Их накопилось так много, что даже пришлось выуживать из Internet Archive.
Теперь можно проводить тест на возраст «А ты помнишь первую версию фреймворка?"
#факт
@zen_of_python
🍾 — Если за такое не грех и бутылочку откупорить
🍾20❤1
Событие, которое точно стоит твоего внимания — PyCon Russia 2025 уже через неделю!
Это крупнейшая конференция по Python в России, где за два дня ты:
— узнаешь, как другие решают задачи, которые тебе тоже знакомы;
— услышишь доклады уровня middle+ и выше — без воды и маркетинга;
— пообщаешься с теми, кто пишет читаемый код, думает о проде и уважает import this.
Москва, 25–26 июля
2 трека (Python и Data), 3 воркшопа, живая программа, афтепати в первый день.
Вся программа и билеты на сайте, а общение в чате PyCon.
Реклама. ООО "Душевные конференции", ИНН 6671291133
Это крупнейшая конференция по Python в России, где за два дня ты:
— узнаешь, как другие решают задачи, которые тебе тоже знакомы;
— услышишь доклады уровня middle+ и выше — без воды и маркетинга;
— пообщаешься с теми, кто пишет читаемый код, думает о проде и уважает import this.
Москва, 25–26 июля
2 трека (Python и Data), 3 воркшопа, живая программа, афтепати в первый день.
Вся программа и билеты на сайте, а общение в чате PyCon.
Реклама. ООО "Душевные конференции", ИНН 6671291133
🔥2✍1
pyleak | Контроль утечек памяти
Минималистичная библиотека для поиска утечек памяти умеет группировать утекшие объекты по типу, упрощая диагностику. Основной интерфейс — контекстный менеджер
Репозиторий проекта
#инструмент
@zen_of_python
Минималистичная библиотека для поиска утечек памяти умеет группировать утекшие объекты по типу, упрощая диагностику. Основной интерфейс — контекстный менеджер
leak_checker()
, который можно легко встроить в тесты или отладочные блоки. Отличный выбор для тех, кто хочет контролировать потребление памяти без тяжёлых инструментов.Репозиторий проекта
#инструмент
@zen_of_python
👍3🌚1
Построчная безопасность (Row-Level Security) в SQL
RLS — одна из ключевых функций SQL, позволяющая реализовать контроль доступа на уровне отдельных строк таблицы. Вместо того чтобы писать сложные фильтры в каждом запросе, вы можете централизованно задать политику безопасности, которая будет автоматически применяться при чтении или изменении данных. Это упрощает архитектуру приложений и делает защиту данных более надежной.
Зачем это нужно
Обычно контроль доступа к данным реализуется в коде приложения. Например, чтобы пользователи видели только свои записи, вы добавляете фильтр
С помощью RLS вы перекладываете этот контроль внутрь базы данных. БД сама будет фильтровать строки в зависимости от настроек безопасности — даже если разработчик забудет что-то учесть в запросе.
Как работает RLS
Механизм реализуется через два ключевых механизма:
— Функция фильтрации определяет, какие строки доступны пользователю;
— Политика безопасности (Security Policy) привязывает эту функцию к конкретной таблице и операциям (SELECT, INSERT, UPDATE, DELETE).
Когда вы выполняете запрос к таблице с активной политикой RLS, SQL неявно вызывает фильтрующую функцию для каждой строки и исключает те, доступ к которым запрещён.
Пример
Шаг 1: Подготовка таблицы
Шаг 2: Создание функции фильтрации
Эта функция возвращает строку только в том случае, если регион совпадает с регионом, записанным в сессии.
Шаг 3: Создание политики безопасности
Теперь каждый запрос к таблице
Шаг 4: Установка параметра в сессии
Advanced RLS: Безопасность
Можно создать отдельную блокирующую политику (Block Predicate), чтобы запретить изменения недопустимых строк:
Теперь пользователь не сможет вставить или изменить строку, если не имеет на это права.
#основы
RLS — одна из ключевых функций SQL, позволяющая реализовать контроль доступа на уровне отдельных строк таблицы. Вместо того чтобы писать сложные фильтры в каждом запросе, вы можете централизованно задать политику безопасности, которая будет автоматически применяться при чтении или изменении данных. Это упрощает архитектуру приложений и делает защиту данных более надежной.
Зачем это нужно
Обычно контроль доступа к данным реализуется в коде приложения. Например, чтобы пользователи видели только свои записи, вы добавляете фильтр
WHERE user_id = @current_user
. Но что, если по какой-то причине фильтр не применится? Чувствительные данные могут стать «достоянием общественности».С помощью RLS вы перекладываете этот контроль внутрь базы данных. БД сама будет фильтровать строки в зависимости от настроек безопасности — даже если разработчик забудет что-то учесть в запросе.
Как работает RLS
Механизм реализуется через два ключевых механизма:
— Функция фильтрации определяет, какие строки доступны пользователю;
— Политика безопасности (Security Policy) привязывает эту функцию к конкретной таблице и операциям (SELECT, INSERT, UPDATE, DELETE).
Когда вы выполняете запрос к таблице с активной политикой RLS, SQL неявно вызывает фильтрующую функцию для каждой строки и исключает те, доступ к которым запрещён.
Пример
Шаг 1: Подготовка таблицы
CREATE TABLE Sales (
Id INT,
Amount MONEY,
Region NVARCHAR(50)
);
Шаг 2: Создание функции фильтрации
CREATE FUNCTION fn_securitypredicate(@Region AS NVARCHAR(50))
RETURNS TABLE
WITH SCHEMABINDING
AS
RETURN SELECT 1 AS result WHERE @Region = SESSION_CONTEXT(N'region');
Эта функция возвращает строку только в том случае, если регион совпадает с регионом, записанным в сессии.
Шаг 3: Создание политики безопасности
CREATE SECURITY POLICY SalesFilter
ADD FILTER PREDICATE dbo.fn_securitypredicate(Region) ON dbo.Sales
WITH (STATE = ON);
Теперь каждый запрос к таблице
Sales
автоматически фильтруется.Шаг 4: Установка параметра в сессии
EXEC sp_set_session_context 'region', 'West';
SELECT * FROM Sales; -- покажет только строки с Region = 'West'
Advanced RLS: Безопасность
Можно создать отдельную блокирующую политику (Block Predicate), чтобы запретить изменения недопустимых строк:
CREATE FUNCTION fn_blockpredicate(@Region AS NVARCHAR(50))
RETURNS TABLE
WITH SCHEMABINDING
AS
RETURN SELECT 1 AS result WHERE @Region = SESSION_CONTEXT(N'region');
CREATE SECURITY POLICY SalesBlocker
ADD BLOCK PREDICATE dbo.fn_blockpredicate(Region) ON dbo.Sales
AFTER INSERT, UPDATE
WITH (STATE = ON);
Теперь пользователь не сможет вставить или изменить строку, если не имеет на это права.
#основы
🔥5❤1✍1
Вопросы подписчиков
Zen of Python поддерживает новоприбывших (и не только) в особой рубрике. Как это работает:
— Спрашивайте что угодно (в комментариях под этим постом), связанное с Python. Здесь нет плохих вопросов!
— Сообщество вас поддержит. Самые интересные вопросы мы разберём в отдельном посте;
#вопросы_новичков
@zen_of_python
Zen of Python поддерживает новоприбывших (и не только) в особой рубрике. Как это работает:
— Спрашивайте что угодно (в комментариях под этим постом), связанное с Python. Здесь нет плохих вопросов!
— Сообщество вас поддержит. Самые интересные вопросы мы разберём в отдельном посте;
#вопросы_новичков
@zen_of_python
В сети мельтешит мини-тренд «Алфавиты от ChatGPT», и админы заморочились на питоническую версию такого, со встроенными модулями, фреймворками, библиотеками и прочими технологиями. Что бы такого поставить на букву Y?
#кек
@zen_of_python
#кек
@zen_of_python
👍4
@pyainter_bot | ИИ-тренер по Python
Разработчики, которые доводят свои пет-проекты до ума, существуют... Один из них создал питонического тренера в Telegram для собеседований. Среди фичей:
— Система начисления очков;
— Множество разделов (Основы Python, ООП, Базы данных, Тестирование и проч.);
— Режим «злого учителя»: бот гоняет вас на слабые темы;
Проект опенсорсный. Если вам захотелось выставить свою LLM и задать ей свои промты, дерзайте.
Репозиторий проекта
#инструмент #собеседование
@zen_of_python
Разработчики, которые доводят свои пет-проекты до ума, существуют... Один из них создал питонического тренера в Telegram для собеседований. Среди фичей:
— Система начисления очков;
— Множество разделов (Основы Python, ООП, Базы данных, Тестирование и проч.);
— Режим «злого учителя»: бот гоняет вас на слабые темы;
Проект опенсорсный. Если вам захотелось выставить свою LLM и задать ей свои промты, дерзайте.
Репозиторий проекта
#инструмент #собеседование
@zen_of_python
❤🔥4👎2
10 библиотек Python, которые меняют карьеру
В топе по версии Tproger оказались не новинки, а самая настоящая база. Даже в рамках Python-специальностей (Fullstack Python Developer, Data Scientist, Data Engineer и проч.) есть общий для всех знаменатель — pandas, FastAPI, Django. Взгляните, кто еще попал в подборку, там найдутся и новые «убийцы» привычных технологий.
#инструмент
@zen_of_python
В топе по версии Tproger оказались не новинки, а самая настоящая база. Даже в рамках Python-специальностей (Fullstack Python Developer, Data Scientist, Data Engineer и проч.) есть общий для всех знаменатель — pandas, FastAPI, Django. Взгляните, кто еще попал в подборку, там найдутся и новые «убийцы» привычных технологий.
#инструмент
@zen_of_python
👍2❤1🤔1
Forwarded from Типичный программист
Goalkicker: сайт с бесплатными папирами по программированию
Ресурс объединяет сотни PDF-книг по языкам и технологиям: Python, Go, JavaScript, C#, SQL, Docker и десятки других тем. Книги созданы на основе самых полезных ответов Stack Overflow, регулярно обновляются и доступны абсолютно бесплатно.
Так что если нужен быстрый чеклист, подсказка или мини-учебник — вот оно.
Ресурс объединяет сотни PDF-книг по языкам и технологиям: Python, Go, JavaScript, C#, SQL, Docker и десятки других тем. Книги созданы на основе самых полезных ответов Stack Overflow, регулярно обновляются и доступны абсолютно бесплатно.
Так что если нужен быстрый чеклист, подсказка или мини-учебник — вот оно.
🔥1