Не нужно заучивать SQL наизусть. Нужно понимать концепции. Вот пример, что дает именно понимание концепций: «Мне нужна общая сумма продаж по каждому клиенту. Значит, начинать надо с таблицы продаж (FROM). Скорее всего, нужно соединить ее с таблицей клиентов, чтобы получить имена. Дальше нужно сгруппировать все строки продаж по каждому клиенту (GROUP BY customer_id). Для каждой такой группы выбрать имя клиента и сум…

Channel
Грокаем паттерны программирования
@jstutors
On this record: Topic · Growth · Engagement · Posts · Telegram's recommendations · Cite this entry
816subscribers
-4 since we began measuring on 1 September 2026
Risers and fallers across the register · movement among entries of Under 1,000.
Register entry
| Telegram ID | -1001708744628 |
|---|---|
| Type | Channel |
| Username | @jstutors |
| Created | Between 1 December 2021 and 30 April 2023 — estimated from Telegram’s id allocation, not measured. How this range is calculated. |
| First recorded | 1 September 2026 |
| Last confirmed live | 19 September 2026 |
| Measurements held | 5 |
| Confirmed unchanged | 1 time, most recently 19 September 2026 |
| On Telegram | t.me/jstutors |
Topic
Technology — a classification, not a measurement. An on-box language model (Qwen3.6-35B-A3B-FP8, prompt version 1) read this channel’s own recent posts on 20 September 2026 and assigned it the closest of 31 fixed categories, at 82% confidence. This is a model’s judgement about what the channel is likely to be about, not a fact this register measured the way a subscriber count or a view count is measured — it can be revised on a later pass, and it carries no weight anywhere else on this page. How this classification works, and why it has no browse page of its own yet.
Growth
| Measured (UTC) | Subscribers | Change |
|---|---|---|
| 19 Sept 2026, 18:01 | 816 | -2 |
| 10 Sept 2026, 17:17 | 818 | -1 |
| 2 Sept 2026, 00:34 | 819 | -1 |
| 1 Sept 2026, 10:15 | 820 | no change |
| 1 Sept 2026, 10:01 | 820 | first reading |
Engagement
20 posts held, back to 28 October 2024 — the reader has not yet reached the start of this channel’s public history, so older posts may sit further back, unread. Read across 1 page of Telegram’s post history, 20 posts per page.
Nothing published in the last 30 days. ERR and ER are rolling 30-day measures, so there is nothing to compute — we hold 20 posts for this entry, the most recent from 22 December 2025. An engagement rate over an empty window would be a number about nothing.
Recent posts
Postgres 18 получил поддержку виртуальных вычисляемых колонок. Вычисляемые STORED-колонки в Postgres уже были несколько версий подряд. Вычисляемые колонки позволяют: • создавать колонку на основе других данных • ссылаться на значения из других колонок • заранее считать колляции или любые вычисления в базе, а не в приложении Синтаксис GENERATED ALWAYS AS открывает выражение, а в конце указывается режим VIRTUAL или S…
Работаешь с массивами? Оператор ANY позволяет проверить список и увидеть, совпадает ли хоть один элемент. SELECT * FROM products WHERE 'Red' = ANY(colors); color = 'red' срабатывает только для одиночного значения 'Red' = ANY(...) работает, когда у тебя колонка со списком вроде ['red', 'blue', 'green'] А если хочешь лучше прокачать себя перед собеседованием по SQL, то можешь пройти наш курс: "Грокаем паттерны SQL-…
Зимняя уборка в Postgres: Проверь, сколько места реально занимают базы и каков физический размер диска. Убедись, что запаса хватит на 2026 год. Посмотреть список всех БД на сервере и их размеры, отсортированные по убыванию: SELECT datname AS database_name, pg_size_pretty(pg_database_size(datname)) AS size FROM pg_database ORDER BY pg_database_size(datname) DESC; А если хочешь лучше прокачать себя …
Дженерики TypeScript и Indexed Access Types для строгой привязки типов аргументов друг к другу.
Наконец-то! Можно начинать прощаться с new Date() в JS. Temporal API доехал до Google Chrome 144. Это новый способ работать с датами и временем. Там куча утилит и улучшений: // 1) Разница между датами - без миллисекунд и без головняка const start = Temporal.PlainDate.from('2026-01-10') const end = Temporal.PlainDate.from('2026-01-30') console.log(`Длительность: ${start.until(end).days} дней`) // Длительность: 20…
По мне, это самый удобный вариант монорепы без отдельного шага сборки: • pnpm workspaces и установка через workspace:* • внутренние пакеты, которые экспортируют *.ts файлы • опционально: pnpm publishConfig, чтобы при публикации подменять экспорты на *.js { "name": "@internal/foo", "version": "1.0.0", // Экспорт исходников TypeScript "main": "./src/index.ts", "types": "./src/index.ts", "exports": { "…
Chainable async API Меня всегда интересовало, как DrizzleORM удаётся чейнить async-функции вроде await delete() и await delete().where(). Они реализовали свой кастомный Promise, от которого наследуются все операции с БД, например PgDelete для delete в Postgres. Чейнящиеся методы типа delete() и where() просто изменяют внутреннее состояние и всегда возвращают this (тот же самый инстанс промиса). Поэтому, когда ты …
Просто небольшое напоминание: для описания ограниченного набора возможных состояний лучше использовать union type. А не жонглировать кучей boolean-полей и потенциально невалидными состояниями.
Используй стандартное поле Node.js imports вместо алиасов TypeScript.
TypeScript: использование NoInfer для строгих зависимостей между аргументами дженерик-функций class WorkflowManager<Stage extends string> { private currentStage: Stage; constructor( public readonly allowedStages: readonly Stage[], initialStage: NoInfer<Stage>, ) { this.currentStage = initialStage; } transition(nextStage: Stage) { this.currentStage = nextStage; console.log(`Transitione…
Intl.ListFormat это удобный способ собрать список в строку с учетом локали, без самописных костылей. onst getMessage = (users) => { const formatter = new Intl.ListFormat("en-US", { style: "long", // long (по умолчанию), short, narrow type: "conjunction" // conjunction (and), disjunction (or), unit }); return `Hello ${formatter.format(users)}!`; }; // Автоматически подстраивает грамматику conso…
Showing the 12 most recent of 20 posts we hold for @jstutors. 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.
Appears in Telegram’s recommendations for other channels
The reverse of the list above, and a different kind of signal. This does not require this channel to have ever been asked about directly — each row below is a channel we DID ask Telegram about, whose Telegram-generated list happened to include this one. A channel can appear here with an empty list above it, because being named by someone else’s query is independent of having been queried itself.
@vibecoding_tg · 63,075
Telegram ranks this channel #27 of 85 here — alongside 84 others — read 1 September 2026
@ITUkraineNow · 22,916
Telegram ranks this channel #73 of 75 here — alongside 74 others — read 19 September 2026
This channel appears in 2 seed channels' Telegram-generated recommendation lists in total. Each is Telegram’s list for THAT channel, not this one — see how this is measured.
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 19 September 2026 — this entry's latest reading, not the date you are reading this.
“Грокаем паттерны программирования” (@jstutors), 816 subscribers as measured 19 September 2026. Telegram Register, tgregister.com/channel/jstutors.
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.