Telegram RegisterThe public register of Telegram
Telegram profile photo for Python Заметки

Channel

Python Заметки

@pythonotes

On this record: Growth · Engagement · Reactions · Posts · Citations · Handles named that no longer answer · Cite this entry

2,213subscribers

-4 since we began measuring on 6 August 2026

Risers and fallers across the register · movement among entries of 1,000–3,162.

Register entry

Telegram ID-1001409156021
TypeChannel
Username@pythonotes
CreatedBetween 1 April 2019 and 31 October 2021— estimated from Telegram’s id allocation, not measured. How this range is calculated.
First recorded6 August 2026
Last confirmed live17 August 2026
Measurements held3
Confirmed unchanged1 time, most recently 17 August 2026
On Telegramt.me/pythonotes

Growth

2,2132,2172,2156 August 2026 — 2,217 subscribers6 August 2026 — 2,217 subscribers17 August 2026 — 2,213 subscribers6 August 202617 August 2026
3 measurements spanning 11 days, net -4. Dots are measurements; the straight line between them is drawn to join them, not to claim we know the path taken in between — snapshots are recorded only when a count changes, so gaps mean “no change observed”, never “interpolated”. The vertical axis spans 2,212–2,218 and does not start at zero.
Measurement log — every subscribers count we have recorded
Measured (UTC)SubscribersChange
17 Aug 2026, 11:042,213-4
6 Aug 2026, 20:312,217no change
6 Aug 2026, 20:232,217first reading

Engagement

20 posts held, back to 8 March 2026the reader has not yet reached the start of this channel’s public history, so older posts may sit further back, unread. Read across 2 pagesof Telegram’s post history, 20 posts per page.

ERR · 30 days
15.7%
avg views ÷ 2,213 subscribers
Avg views / post
348
1 post measured
Reaction rate
2.59%
reactions ÷ views · ER floor
Posts in window
1
of 20 held

ERR is average views per post over the last 30 days divided by subscribers, the definition TGStat uses, so this figure is comparable with the one you will see elsewhere. It falls structurally as a channel grows: a high ERR on a small channel and a low one on a large channel describe reach mathematics, not quality. We publish the figure and the sample it came from and pass no verdict on it.

ER is defined industry-wide as (forwards + reactions + comments) ÷ views— note the denominator is views, not subscribers. Telegram’s public web preview carries views and reactions but not forward or comment counts, so the reaction rate above is the reactions term only and is therefore a floor: the true ER for this channel is higher by an amount we have not measured and will not estimate.

What these figures were computed from
WindowRolling 30 days · latest post in window 20 July 2026
Posts held20 (8 March 202620 July 2026)
Views total348
Reactions total9
Forwards / commentsnot exposed by the public surface — not measured, not estimated
Readings taken7 Aug 2026, 16:50 UTC

Views are a single reading per post, taken at the time above. A post published in the last day or two is still accumulating views, which pulls the 30-day average down slightly. That is a property of the standard definition rather than a fault in it, so we keep the definition rather than “correcting” the number into something nobody can reproduce.

Precision. Telegram publishes view counts on its public widget in short form — 8.12K, 3.7M — so any reading at or above 1,000 reaches us rounded to three significant figures, and only counts below 1,000 are exact. Averages and rates derived from them are shown to the same precision rather than to the unit: a figure like 3,701,250 would assert digits nobody measured.

Reaction counts are published per emoji and rounded the same way, so a total below 1,000 is exact and a larger one is a sum that may carry a rounded component from each emoji above 1,000. Because it is a sum, it does not look rounded — read a large reaction total as three significant figures per contributing emoji rather than as the figure it prints.

Reaction mix

194 reactions across 20 posts, in 8 distinct kinds. The most used accounts for 29.9% of them.

Every reaction kind recorded on the sample, most used first
ReactionCountShareShare, drawn
5829.9%
😁4422.7%
🔥4020.6%
👍3920.1%
👏84.12%
👎21.03%
🤔21.03%
😱10.515%

No sentiment is inferred, and none should be read in. This table is ordered by count and by nothing else. Emoji do not carry stable meaning across languages or communities — 🙏 is thanks in one channel and mourning in another — so we publish which ones were pressed and how often, and pass no judgement on what an audience meant by them.

Precision. Telegram publishes reaction counts per emoji and short-forms each one — 4.34K, 1.2M — so any single kind at or above 1,000 reaches us at three significant figures, and only counts below 1,000 are exact. The shares above are ratios of those figures and carry the same error. This is also why the total here can differ slightly from a reaction total printed elsewhere on the page: both are sums of the same rounded parts, taken over samples with different edges.

Coverage. Reactions were read on 20 of the 20 sampled posts in this sample. Summed by Telegram’s own count on each post — not by adding up the per-emoji breakdown above — those same posts carry 194reactions in total: the kind of figure the paragraph above means by “a reaction total printed elsewhere on the page”.

Measured over the 20 most recent posts we hold, published 8 March 2026 to 20 July 2026, using the newest reading held for each. Telegram Stars are excluded: they are a payment, not a reaction, and they have their own section.

Recent posts

20 Jul 2026, 08:59 UTC348 views9 reactionsread 7 August 2026

У меня основная ОС это Linux. Но нередко требуется делать сборку клиента под Windows. Собираю обычно через Pynstaller/Nuitka. И вот этапы борьбы поиска удобного решения. ▫️ Dual Boot Пока был дуалбут, я перезагружался в Windows, копировал исходники и запускал сборку. Рабочий вариант, но времени занимает слишком уж много. К тому же дуалбута давно нет. ▫️ VirtualBox Если нет дуалбута, то выручает VirtualBox. Тут стал

👍52🔥1🤔1

13 Jul 2026, 08:59 UTC492 views1 reactionsread 7 August 2026

В прошлый раз был пример с понижением привелегий процесса. Проблема в том, что обратно поднять привилегии нельзя. Чтобы не потерять уровень доступа текущего процесса, нужно выполнять понижение в дочернем процессе. Для этого можно использовать os.fork(). # example.py from pathlib import Path import os import sys import pwd def example(username): # получаем pwd юзера по имени try: pw_record = pwd.getp

👍1

6 Jul 2026, 08:59 UTC544 views4 reactionsread 7 August 2026

Модуль pwd может использоваться для считывания информации о пользователях из базы данных паролей Unix (обычно /etc/passwd ). Получить объект текущего юзера можно так: import pwd user_pwd = pwd.getpwnam(username) Теперь нам доступны основные данные из файла passwd print('ID:', f'{user_pwd.pw_uid}:{user_pwd.pw_gid}') print('HOME:', user_pwd.pw_dir) print('Shell:', user_pwd.pw_shell) Когда это может быть полезно? ▫

👍4

22 Jun 2026, 09:04 UTC661 views3 reactionsread 7 August 2026

Недавно я реализовал Multi Tenancy систему на FastAPI + SQLAlchemy и пересобрал её в небольшой демо проект. Ключевые особенности: ▫️ Основной всего является сущность Компании. Юзеры могут подключаться к разным компаниям, но в один момент времени могут находиться только в одной (по условиям ТЗ). ▫️ Разделение данных через FK-ссылку всех ключевых бизнес-сущностей на ID компании. ▫️ ID компании задаётся при логине и хр

👍2🔥1

15 Jun 2026, 08:59 UTC629 views4 reactionsread 7 August 2026

Multi Tenancy - это архитектурный подход в разработке, при котором один экземпляр приложения обслуживает множество разных клиентов так, что они имеют доступ только строго к своим данным. Например, сервис для обслуживания компании, ведения проектов, изолированных воркспейсов и тд. Наверняка вы использовали такие в работе. От простого почтового сервера до CMS. Зайдя в одно окружение, юзер уверен что, увидит только сво

🔥3👏1

1 Jun 2026, 09:01 UTC786 views11 reactionsread 7 August 2026

В Python 3.6 был полностью переработан стандартный dict. Вместо разреженной таблицы данные стали храниться в плотных массивах. Это дало буст к скорости и экономию памяти. И, как сайд эффект, ключи стали упорядочены. В каком порядке добавляешь ключи, в таком можно и забрать. Но при этом OrderedDict никуда не делся. Это сделано для совместимости? Нет, между dict и OrderedDict всё ещё большая разница. ▫️ При сравнени

👍65

25 May 2026, 09:05 UTC688 views13 reactionsread 7 August 2026

Как-то давно писал трансфер файлов по сети. В этом проекте требовалось создавать файл, который сразу существует на диске, имеет нужный размер но еще не содержит данных. Вот примеры как создать такой файл: length = 1024 * 1024 * 1024 * 100 with open(file_path, "wb") as out: out.seek(length-1) out.write(b"\0") with open(file_path, "wb") as out: out.truncate(1024 * 1024 * 1024 * 120) truncate -s 100M test

🔥83👍2

18 May 2026, 08:59 UTC642 views5 reactionsread 7 August 2026

Мы рассмотрели два способа управления конеткстом переменных. Если вам показалось, что это выглядит излишне и можно было бы оставить один, то вам не показалось. Способ с threading.local придуман для разделения переменных между потоками. CоntextVar был добавлен как новый метод для асинхронного кода, но оказался настолько универсальным, что его можно использовать и с потоками. После появления ContextVar в PEP567 его рек

3👍1👏1

11 May 2026, 09:01 UTC698 views3 reactionsread 7 August 2026

Теперь аналогичная история с тредами. Для тредов используется объект threading.local. Он позволяет создать локальный динамический атрибут (да, вот так костыльно) для треда. Вот базовый пример: import threading import time import random # глобальная переменная thread_data = threading.local() def execute(): # поулчаем локальное значение для текущего треда current_user_id = getattr(thread_data, "user_id", -1

2👍1

4 May 2026, 09:01 UTC891 views7 reactionsread 7 August 2026

В асинхронных приложениях есть один не всегда очевидный момент, который приводит к неявным багам - это общие глобальные объекты. Да, это в целом антипаттерн, но иногда такие объекты действительно нужны и вполне уместны. Например, когда вы завязаны на уже существующем коде и не можете его поменять, но переменную подставлять надо, при этом явно пробросить её не получится. Для этого используется ContexctVar. Случаи быва

👍52

27 Apr 2026, 09:03 UTC951 views13 reactionsread 7 August 2026
Photo

Nuitka 4.0 Библиотека для компиляции python-кода в исполняемые файлы получила мажорный апдейт. Ключевые изменения: - ускорение сборки бинарника в 15 раз - экспериментальная поддержка компилятора Zig - возможность выбранные функции оставлять как есть, в виде байт кода через декоратор @nuitka_ignore - бинарники работают до 30% быстрей (CPU-bound задачи) - теперь можно вместо отдельного скрипта сборки использовать pyp

9👍2👏1😱1

20 Apr 2026, 09:01 UTC977 views9 reactionsread 7 August 2026

Недавно делал быстрый прототип асинхронного приложения в котором требовалось вызывать много синхронного кода. Да, я знаю, что это не лучший дизайн, но нужно было быстрое решение на один процесс и без очередей. Поэтому я выполнял код в потоках. Выглядело это примерно так: from fastapi.concurrency import run_in_threadpool async def execute(data: DataRequest) -> DataResponse: try: result = await run_in_thr

5👍3🔥1

Showing the 12 most recent of 20 posts we hold for @pythonotes. View and reaction counts are the latest single reading for each post, not a live figure, and a recent post is still accumulating both. A view count marked was rounded by Telegram before we ever saw it — t.me prints views in full below 1,000 and to three significant figures above, so ≈1,200,000 means somewhere between 1,150,000 and 1,249,999. Unmarked counts are exact. Text is reproduced from the public post preview and truncated for length.

Mentions

Names

Channels on the register whose handles appear in this channel's posts.

A mention is a weaker signal than a forward and is counted separately for that reason — naming a channel is not republishing it, and a handle in a post body is easy to place deliberately. The post counts beside each row below are distinct posts in which the handle appeared, from posts we have read on both sides — the “Named by N registered channels” figure above is a different count, of distinct NAMING CHANNELS rather than posts, and is not the sum of the rows under it.

Cite this entry

A live page changes as we take new readings, so a citation should name the measurement it is based on, not just the URL. The line below cites the subscriber count as measured 17 August 2026 — this entry's latest reading, not the date you are reading this.

“Python Заметки” (@pythonotes), 2,213 subscribers as measured 17 August 2026. Telegram Register, tgregister.com/channel/pythonotes.

Full measurement history, CC BY 4.0. Every reading this register holds for this entry, not just the latest one, as a dated, downloadable record: CSV · JSON. Free to use with attribution to tgregister.com. Each file carries its own generation timestamp, which is the figure to cite for exactly when the data was retrieved.