Прогер
Программирование и айти Сотрудничество: @bogdan_lapenko Пригласительный линк: @umnyiprogrammist Ресурс в перечне: https://tinyurl.com/umnyiprg Биржа: https://telega.in/c/+IohX2XS6sOhhZDRi ЗАЯВКИ ПРИНИМАЮТСЯ МОМЕНТАЛЬНО
Show more📈 Analytical overview of Telegram channel Прогер
Channel Прогер in the Russian language segment is an active participant. Currently, the community unites 93 168 subscribers, ranking 1 378 in the Technologies & Applications category and 6 031 in the Russia region.
📊 Audience metrics and dynamics
Since its creation on невідомо, the project has demonstrated rapid growth, gathering an audience of 93 168 subscribers.
According to the latest data from 21 June, 2026, the channel demonstrates stable activity. Although there has been a change in the number of participants by -1 516 over the last 30 days and by -56 over the last 24 hours, overall reach remains high.
- Verification status: Not verified
- Engagement rate (ER): The average audience engagement rate is 12.89%. Within the first 24 hours after publication, content typically collects 5.78% reactions from the total number of subscribers.
- Post reach: On average, each post receives 12 008 views. Within the first day, a publication typically gains 5 384 views.
- Reactions and interaction: The audience actively supports content: the average number of reactions per post is 72.
- Thematic interests: Content is focused on key topics such as github, rust, microsoft, linux, c++.
📝 Description and content policy
The author describes the resource as a platform for expressing subjective opinions:
“Программирование и айти
Сотрудничество: @bogdan_lapenko
Пригласительный линк: @umnyiprogrammist
Ресурс в перечне: https://tinyurl.com/umnyiprg
Биржа: https://telega.in/c/+IohX2XS6sOhhZDRi
ЗАЯВКИ ПРИНИМАЮТСЯ МОМЕНТАЛЬНО”
Thanks to the high frequency of updates (latest data received on 22 June, 2026), the channel maintains relevance and a high level of publication reach. Analytics show that the audience actively interacts with content, making it an important point of influence in the Technologies & Applications category.
NTPPool.org — это проект, который в представлении не нуждается, тем не менее, для тех, кто никогда о нём не слышал — во многом благодаря ему все ваши компьютеры, смартфоны, серверы и прочие гаджеты имеют точное время
Из-за ошибки, допущенной при разработке обновления прошивки для умных колонок «Яндекс Станция», образовалась аномально высокая загрузка на NTP-серверы (Network Time Protocol) в российском сегменте интернета — эти ресурсы используются для синхронизации времени. Компания обнаружила ошибку далеко не сразу, но перечислила меры, которые не допустят её повторения
В середине октября один из добровольцев, который организовал NTP-сервер на своём домашнем маршрутизаторе, обнаружил, что канал устройства забит запросами. Обновление прошивки и перезагрузка проблемы не решили, но она исчезла после отключения NTP. Далее выяснилось, что с середины октября прекратили работу 120 из 140 российских NTP-серверов. Доброволец призвал сообщество «Хабра» в качестве временной меры запустить у отечественных провайдеров NTP-серверы на виртуальных машинах за минимальную плату — помимо рядовых пользователей, откликнулся крупный облачный оператор, который выделил сразу 30 виртуальных машин
Виновником оказалась компания «Яндекс», которая в середине октября начала развёртывать новую прошивку для умных колонок серии «Станция». Прошивка этих устройств содержит стандартный клиент синхронизации времени. В штатном режиме она производится каждые пять часов, но в случае неудачной попытки повторная предпринимается через пять секунд. Из-за ошибки в одном из связанных с клиентом модулей все устройства с обновлённой прошивкой начали вне зависимости от результата предыдущей попытки синхронизировать время каждые пять секунд — напомним, только за первые девять месяцев 2024 года было продано, по оценкам, около 3 млн «Яндекс Станций»
На начальном этапе «Яндекс» развернул прошивку на 10% устройств — это стандартная мера для того, чтобы выявлять ошибки на ранних стадиях. Но в стандартной схеме обнаружения ошибок на тот момент отсутствовала метрика NTP-запросов, и к 24 октября прошивка распространилась на 100% устройств. Первые жалобы на избыточное число NTP-запросов начали поступать 10 ноября — обычно этот симптом объясняется проблемами на стороне пользователя, и из-за небольшого объёма жалоб приоритет у проблемы был невысоким. Ошибку удалось обнаружить лишь 20 ноября — к этому моменту её исправили и начали готовить новый выход прошивки
Но тянуть время уже было нельзя, потому что к выходным 23 и 24 ноября в Сети оставалось всего четыре сервера. Поэтому в качестве временной меры «Яндекс» выпустил хотфикс — экстренное обновление, которое увеличивало период обращения с 5 до 600 секунд. Нагрузка на NTP-серверы, таким образом, снижалась в 120 раз, но если какая-то из «Яндекс Станций» после включения не могла синхронизировать время с первой попытки, то в последующие 10 минут её связанные со временем функции оказывались недоступными. Это помогло стабилизировать ситуацию — к тому моменту начали запускать NTP-серверы члены сообщества «Хабра»
✅ Умный программист | #новостьimport { PNG } from 'pngjs';
import fs from 'node:fs';
function writeData(imageBinary, dataBinary) {
for (let i = 0, dataBitIndex = 0; i < imageBinary.length; i += 4) {
for (let j = 0; j < 3; j++, dataBitIndex++) {
if (dataBitIndex >= dataBinary.length * 8) {
return imageBinary;
}
/
* Получаем текущий бит данных
/
let bit = (dataBinary[Math.floor(dataBitIndex / 8)] >> (7 - (dataBitIndex % 8))) & 1;
/
* Смещаем цвет
/
imageBinary[i + j] = (imageBinary[i + j] & 0xFE) | bit;
}
}
return imageBinary;
}
function async encode(inputPath, outputPath, message) {
let binaryMessage = Buffer.from(message, 'utf-8');
return new Promise(resolve => {
/
* Открываем изображение и получаем его пиксели
/
fs.createReadStream(inputPath)
.pipe(new PNG())
.on('parsed', function() {
//this - Объект PNG
//this.data - Объект Buffer, по сути [R, G, B, A, R, G, B, A...]
/
* Запишем длинну сообщения в первые 4 байта
/
let length = Buffer.alloc(4);
length.writeUInt32BE(binaryMessage.length, 0);
let binaryTotalData = Buffer.concat([
length,
binaryTotalData
]);
/
* Заменяем пиксели
/
writeData(this.data, binaryTotalData);
/
* Сохраняем в файл
/
let stream = fs.createWriteStream(outputPath);
stream.on('finish', resolve);
this.png.pack().pipe(stream);
});
});
}
Получаем сообщение из PNG:
function readMessage(dataBinary) {
let bytes: number[] = [];
for (let i = 0, dataBitIndex = 0, currentByte = 0; i < pixels.length; i += 4) {
for (let j = 0; j < 3; j++) {
let bit = pixels[i + j] & 1;
currentByte = (currentByte << 1) | bit;
dataBitIndex++;
if (dataBitIndex % 8 === 0) {
bytes.push(currentByte);
currentByte = 0;
}
}
}
return Buffer.from(bytes);
}
function async decode(targetPath) {
return new Promise(resolve => {
/
* Открываем изображение и получаем его пиксели
/
fs.createReadStream(targetPath)
.pipe(new PNG())
.on('parsed', function() {
//this - Объект PNG
//this.data - Объект Buffer, по сути [R, G, B, A, R, G, B, A...]
/
* Читаем данные
/
let binaryTotalData = = readData(this.data);
/
* Узнаем длинну исходного сообщения и обрезаем
/
let length = binaryTotalData.readUInt32BE();
let binaryMessage = binaryTotalData.slice(4, 4 + length);
resolve(binaryMessage);
});
});
}
Далее всё зависит от вашей фантазии. Вы можете записать внутрь PNG другой файл, зашифровать данные с помощью AES или даже спрятать все свои пароли в фотографии любимого кота (скриншот №4)
Можно, например, выбирать пиксели не в хаотичном порядке и добавить случайный шум, чтобы усложнить процесс обнаружения скрытых данных
Подробный код решения доступен на GitHub (включая аспекты использования AES и скрытия файлов в изображениях)
✅ Умный программист | #руководство
Available now! Telegram Research 2025 — the year's key insights 
