fa
Feedback

فریب کلاهبرداران را نخورید! تل‌متریو این کانال‌ها را شناسایی و برچسب‌گذاری می‌کند 👉 برای مشاهده برچسب، اشتراک تهیه کنید

C++ Academy

C++ Academy

رفتن به کانال در Telegram

По всем вопросам- @workakkk РКН: clck.ru/3FmxJF #VRHSZ

نمایش بیشتر

📈 تحلیل کانال تلگرام C++ Academy

کانال C++ Academy (@cpluspluc) در بخش زبانی روسی بازیگری فعال است. در حال حاضر جامعه شامل 15 522 مشترک است و جایگاه 8 268 را در دسته فناوری و برنامه‌ها و رتبه 42 183 را در منطقه روسيا دارد.

📊 شاخص‌های مخاطب و پویایی

از زمان ایجاد در невідомо، پروژه رشد سریعی داشته و 15 522 مشترک جذب کرده است.

بر اساس آخرین داده‌ها در تاریخ 25 اکتبر, 2026، کانال فعالیت پایداری دارد. در ۳۰ روز گذشته تغییر اعضا برابر 14 و در ۲۴ ساعت گذشته برابر -4 بوده و همچنان دسترسی گسترده‌ای حفظ شده است.

  • وضعیت تأیید: تأیید نشده
  • نرخ تعامل (ER): میانگین تعامل مخاطب 16.26% است و در ۲۴ ساعت نخست پس از انتشار، محتوا معمولاً 6.85% واکنش نسبت به کل مشترکان کسب می‌کند.
  • دسترسی پست‌ها: هر پست به طور میانگین 2 524 بازدید دریافت می‌کند. در اولین روز معمولاً 1 063 بازدید جمع‌آوری می‌شود.
  • واکنش‌ها و تعامل: مخاطبان به‌طور فعال حمایت می‌کنند؛ میانگین واکنش به هر پست 27 است.
  • علایق موضوعی: محتوا بر موضوعات کلیدی مانند c++, github, linux, api, архитектура تمرکز دارد.

📝 توضیح و سیاست محتوایی

نویسنده این فضا را محل بیان دیدگاه‌های شخصی توصیف می‌کند:
“По всем вопросам- @workakkk РКН: clck.ru/3FmxJF #VRHSZ”

به لطف به‌روزرسانی‌های پرتکرار (آخرین داده در تاریخ 26 اکتبر, 2026)، کانال همواره به‌روز و دارای دسترسی بالاست. تحلیل‌ها نشان می‌دهد مخاطبان به‌طور فعال با محتوا تعامل دارند و آن را به نقطه اثرگذاری مهم در دسته فناوری و برنامه‌ها تبدیل کرده‌اند.

15 522
مشترکین
-424 ساعت
-147 روز
+1430 روز
جذب مشترکین
اکتبر '26
اکتبر '26
+112
در 37 کانال‌ها
سپتامبر '26
+112
در 31 کانال‌ها
Get PRO
اوت '26
+118
در 40 کانال‌ها
Get PRO
ژوئیه '26
+82
در 42 کانال‌ها
Get PRO
ژوئن '26
+56
در 1 کانال‌ها
Get PRO
مه '26
+130
در 3 کانال‌ها
Get PRO
آوریل '26
+49
در 0 کانال‌ها
Get PRO
مارس '26
+92
در 21 کانال‌ها
Get PRO
فوریه '26
+93
در 44 کانال‌ها
Get PRO
ژانویه '26
+437
در 110 کانال‌ها
Get PRO
دسامبر '25
+66
در 2 کانال‌ها
Get PRO
نوامبر '25
+217
در 44 کانال‌ها
Get PRO
اکتبر '25
+81
در 15 کانال‌ها
Get PRO
سپتامبر '25
+116
در 38 کانال‌ها
Get PRO
اوت '25
+291
در 9 کانال‌ها
Get PRO
ژوئیه '25
+518
در 77 کانال‌ها
Get PRO
ژوئن '25
+347
در 73 کانال‌ها
Get PRO
مه '25
+82
در 5 کانال‌ها
Get PRO
آوریل '25
+105
در 27 کانال‌ها
Get PRO
مارس '25
+120
در 1 کانال‌ها
Get PRO
فوریه '25
+175
در 40 کانال‌ها
Get PRO
ژانویه '25
+175
در 47 کانال‌ها
Get PRO
دسامبر '24
+585
در 58 کانال‌ها
Get PRO
نوامبر '24
+1 337
در 186 کانال‌ها
Get PRO
اکتبر '24
+2 234
در 75 کانال‌ها
Get PRO
سپتامبر '24
+848
در 203 کانال‌ها
Get PRO
اوت '24
+580
در 42 کانال‌ها
Get PRO
ژوئیه '24
+837
در 52 کانال‌ها
Get PRO
ژوئن '24
+2 266
در 64 کانال‌ها
Get PRO
مه '24
+498
در 39 کانال‌ها
Get PRO
آوریل '24
+571
در 47 کانال‌ها
Get PRO
مارس '24
+653
در 20 کانال‌ها
Get PRO
فوریه '24
+907
در 5 کانال‌ها
Get PRO
ژانویه '24
+705
در 42 کانال‌ها
Get PRO
دسامبر '23
+447
در 39 کانال‌ها
Get PRO
نوامبر '23
+162
در 31 کانال‌ها
Get PRO
اکتبر '23
+224
در 0 کانال‌ها
Get PRO
سپتامبر '23
+385
در 0 کانال‌ها
Get PRO
اوت '23
+2 329
در 0 کانال‌ها
Get PRO
ژوئیه '23
+498
در 1 کانال‌ها
Get PRO
ژوئن '23
+565
در 0 کانال‌ها
Get PRO
مه '23
+5 320
در 0 کانال‌ها
Get PRO
آوریل '23
+126
در 0 کانال‌ها
Get PRO
مارس '23
+422
در 0 کانال‌ها
Get PRO
فوریه '23
+707
در 0 کانال‌ها
تاریخ
رشد مشترکین
اشارات
کانال‌ها
26 اکتبر+4
25 اکتبر+1
24 اکتبر0
23 اکتبر+3
22 اکتبر+6
21 اکتبر+2
20 اکتبر0
19 اکتبر+6
18 اکتبر+19
17 اکتبر+18
16 اکتبر+2
15 اکتبر+4
14 اکتبر+7
13 اکتبر0
12 اکتبر+5
11 اکتبر+5
10 اکتبر+3
09 اکتبر+1
08 اکتبر+3
07 اکتبر+4
06 اکتبر+7
05 اکتبر+8
04 اکتبر+3
03 اکتبر0
02 اکتبر0
01 اکتبر+1
پست‌های کانال
«what the fu**?»: самый странный комментарий в игровом коде Одна строка из Quake III заменяет деление и корень сдвигом битов и магическим числом 0x5f3759df. Покажу на примере, как это работает, и посчитаю погрешность: 3.44% до уточнения и 0.175% после одного шага Ньютона. А кто на самом деле придумал трюк, вы вряд ли угадаете. https://youtube.com/shorts/oIpqqzNNCHo

2
Алгоритм is_partitioned Алгоритм is_partitioned — это алгоритм из стандартной библиотеки algorithm, который проверяет, разбит
Алгоритм is_partitioned Алгоритм is_partitioned — это алгоритм из стандартной библиотеки algorithm, который проверяет, разбит ли диапазон элементов определенным образом. Принимает три параметра: — Два итератора, задающих проверяемый диапазон. — Предикат (функцию или функтор), определяющий разбиение. Возвращает bool значение — true если диапазон разбит согласно предикату и false в противном случае. Этот алгоритм предпочтительнее цикла, т. к. проще в использовании и читабельнее, ведь он эффективно проверяет условие за один проход по последовательности. В примере мы определяем предикат isEven для проверки четности числа, передаем его в is_partitioned вместе с вектором v и выводим результат. #это_база
1 333
3
✔️ В C++26 появились контракты. Но проверка условия ещё не гарантирует оптимизацию Контракты позволяют задавать предусловия и
✔️ В C++26 появились контракты. Но проверка условия ещё не гарантирует оптимизацию Контракты позволяют задавать предусловия и постусловия функции. Например, потребовать, чтобы делитель был ненулевой степенью двойки: uint32_t ring_index(uint32_t i, uint32_t n) pre(n && (n & (n - 1)) == 0) { return i % n; } Для таких беззнаковых чисел i % n можно заменить на более дешёвое i & (n - 1). Однако в примере автора GCC 16 не выполняет эту оптимизацию автоматически. Поддержка контрактов включается через -fcontracts. В режиме enforce нарушение вызывает обработчик и завершение программы. Поведение зависит от выбранного режима проверки. Документация GCC -https://gcc.gnu.org/onlinedocs/gcc/C_002b_002b-Dialect-Options.html . Атрибут C++23 [[assume(условие)]] даёт оптимизатору дополнительную информацию, но не проверяет условие. Если оно ложно, поведение программы не определено.
1 760
4
🌟 SonicBoom: движок инференса без Python HardenedVault, которая специализируется на безопасности Linux и компиляторов, вылож+2
🌟 SonicBoom: движок инференса без Python HardenedVault, которая специализируется на безопасности Linux и компиляторов, выложила среду исполнения SonicBoom, написанной с нуля на C++ и CUDA. Python ей не нужен ни для работы, ни для сборки. Цель проекта – локальный запуск языковых моделей на потребительских видеокартах. Всё упаковано в одну библиотеку libsonicboom.so, которую можно подключить из любого языка через стандартный интерфейс C, основным языком для работы с ней авторы выбрали Scheme в реализации GNU Guile. SonicBoom загружает модели в GGUF, генерирует текст на процессоре или видеокарте и поднимает локальный сервер, совместимый с API OpenAI. Если новый запрос начинается с того же текста, что и предыдущий, заново обрабатывается только добавленная часть, и результат до токена совпадает с полным пересчётом. 🟡Механика Скорость вывода дают уровни над вычислительными ядрами, а не сами ядра. Умножение квантованных матриц и токенизаторы частично перенесены из llama.cpp. Над ними работает планировщик, который до запуска переписывает граф модели целиком, сливает соседние операции и записывает весь шаг генерации токена в один CUDA Graph, т. е. в готовую последовательность команд для видеокарты. Ещё выше стоит компилятор на базе MLIR. Он сам генерирует часть ядер для GPU, в том числе для механизма внимания, и при первом запуске подбирает самый быстрый вариант под конкретную карту. 🟡Тесты На RTX 3050 с 8 ГБ памяти сравнили SonicBoom и llama.cpp на одних и тех же моделях. Gemma 4 E4B через SonicBoom дала генерацию в 53 токена в секунду против 44,8 у llama.cpp. У Qwen2.5-0.5B вышло 344,7 токена в секунду против 307,6. Когда контекст дорастает до 512 токенов, SonicBoom на Qwen уже чуть отстаёт. Единственный сторонний результат на RTX 4060 Ti оказался хуже llama.cpp, 73,6 токена в секунду против 78, но его получили на сборке, ещё не настроенной под эту видеокарту. Пока проверены только две модели, Gemma 4 E4B-it и Qwen2.5-0.5B-Instruct, и только видеокарты серии RTX 30. Модель всегда выбирает самый вероятный токен, температуру и другие настройки случайности задать нельзя. Следующими в планах стоят модели Llama и Mistral, работа через Vulkan, генерация ядер для видеокарт других производителей и диффузионные модели. Дальше SonicBoom планирует вырасти в фреймворк в духе PyTorch, где модель пишут на Scheme и компилируют в граф вычислений. Прототип этого режима уже обучает небольшой трансформер. 📌Лицензирование: GPL-3.0 🖥Github @ai_machinelearning_big_data #AI #ML #LLM #InferenceEngine #SonicBoom
1 535
5
🎮 Оказывается, Wolfenstein 3D-подобный raycaster можно собрать примерно в 250 строках C++. Принцип довольно элегантный: для+1
🎮 Оказывается, Wolfenstein 3D-подобный raycaster можно собрать примерно в 250 строках C++. Принцип довольно элегантный: для каждого вертикального столбца экрана выпускается один луч через карту, а пересечения со стенами ищутся через DDA - Digital Differential Analysis. Ключевой трюк: deltaDist = abs(1 / rayDir) После попадания в стену используется не обычная длина луча, а перпендикулярное расстояние до стены — это убирает характерное fish-eye искажение. Дальше всё почти классически: * рассчитывается высота стены на экране; * выбирается текстура; * вычисляется точка попадания; * рисуется вертикальная полоса пикселей. Минимум кода и уже получается полноценная псевдо-3D графика в стиле первых Wolfenstein/Doom-подобных движков. Отличный проект, чтобы реально понять raycasting, DDA и основы старой 3D-графики.
1 763
6
Виртуальных агентов обсудят на митапе «Русское техно 2» от MWS 23 октября. ⚡ Успейте зарегистрироваться. В программе доклады
Виртуальных агентов обсудят на митапе «Русское техно 2» от MWS 23 октября. ⚡ Успейте зарегистрироваться. В программе доклады и дискуссии по темам: — Как построить control plane для персональных ИИ-агентов на Kubernetes. — Как построить агентный производственный процесс в связке с Harness. — Подходы к управлению командами с ИИ-агентами. Как меняются метпроцессы внутри команды? — Когда ИИ-агент становится экономически оправданным. А также участников ждет битва промптов и нетворкинг. Когда: 23 октября Формат: офлайн в Москве и онлайн Зарегистрироваться
1 148
7
🎮 Оказывается, Wolfenstein 3D-подобный raycaster можно собрать примерно в 250 строках C++. Принцип довольно элегантный: для+1
🎮 Оказывается, Wolfenstein 3D-подобный raycaster можно собрать примерно в 250 строках C++. Принцип довольно элегантный: для каждого вертикального столбца экрана выпускается один луч через карту, а пересечения со стенами ищутся через DDA - Digital Differential Analysis. Ключевой трюк: deltaDist = abs(1 / rayDir) После попадания в стену используется не обычная длина луча, а перпендикулярное расстояние до стены — это убирает характерное fish-eye искажение. Дальше всё почти классически: * рассчитывается высота стены на экране; * выбирается текстура; * вычисляется точка попадания; * рисуется вертикальная полоса пикселей. Минимум кода и уже получается полноценная псевдо-3D графика в стиле первых Wolfenstein/Doom-подобных движков. Отличный проект, чтобы реально понять raycasting, DDA и основы старой 3D-графики.
109
8
🧠 TIL: SQLite превращает числа в текст сразу по две цифры Обычно integer → string делают циклом: / 10 → берём цифру % 10 → о
🧠 TIL: SQLite превращает числа в текст сразу по две цифры Обычно integer → string делают циклом: / 10 → берём цифру % 10 → остаток и повторяем снова. SQLite идёт хитрее. В исходниках есть строка на 200 символов, содержащая все пары от 00 до 99: 000102030405...979899 При преобразовании числа SQLite обрабатывает его по две цифры за раз и просто берёт нужную пару символов по индексу. То есть вместо множества операций /10 и %10: делим на 100 → получаем две цифры → копируем готовую пару. Маленькая оптимизация, но именно из таких деталей и состоит быстрый системный код. Исходник: sqlite/src/util.c
2 221
9
🔥 Хочешь быстрее расти в IT? Хватит учиться в одиночку Окружение решает больше, чем кажется. Собрал папки и каналы, где можн
🔥 Хочешь быстрее расти в IT? Хватит учиться в одиночку Окружение решает больше, чем кажется. Собрал папки и каналы, где можно быстрее влиться в нужное направление, следить за трендами и не вариться в своём пузыре. AI: t.me/ai_machinelearning_big_data Python: t.me/pythonl Linux: t.me/linuxacademiya Хакинг: t.me/linuxkalii DevOps: t.me/DevOPSitsec Docker: https://t.me/+90Z5TAyfuNU5YmRi Golang: t.me/Golang_google Rust: t.me/rust_code C++: t.me/cpluspluc C#: t.me/csharp_ci Java: t.me/javatg JavaScript: t.me/javascriptv React: t.me/react_tg Frontend: t.me/front PHP: t.me/phpshka Android: t.me/android_its Мобильная разработка: t.me/mobdevelop Базы данных: t.me/sqlhub Data Science: t.me/data_analysis_ml Big Data: t.me/bigdatai Математика: t.me/data_math Физика: t.me/fizmat Kubernetes: t.me/kubernetc GameDev: https://t.me/gamedev Haskell: t.me/haskell_tg Собеседования и карьера: DS собеседования: t.me/machinelearning_interview Python собеседования: t.me/python_job_interview Папка с вакансиями: t.me/addlist/_zyy_jQ_QUsyM2Vi Папка Go разработчика: t.me/addlist/MUtJEeJSxeY2YTFi Папка Python разработчика: t.me/addlist/eEPya-HF6mkxMGIy Папка ML: https://t.me/addlist/2Ls-snqEeytkMDgy Папка Frontend: https://t.me/addlist/mzMMG3RPZhY2M2Iy Полезное сверху: ИТ-мемы: t.me/memes_prog Английский для программистов: t.me/english_forprogrammers ИИ и технологии: t.me/vistehno 954 ГБ open-source курсов: https://t.me/+rKBQEMccAA01MTcy ИТ-книги бесплатно: https://t.me/addlist/BkskQciUW_FhNjEy Max Ai: https://max.ru/ai_machinelearning_big_data Max python: https://max.ru/pythonl ТЕХНО: https://max.ru/vistehno Max Go: https://max.ru/Golang_google Max Linux: https://max.ru/linuxkalii Devops: https://max.ru/DevOPSitsec C#: https://max.ru/csharp_ci C++: https://max.ru/cpluspluc SQL: https://max.ru/sqlhub Java: https://max.ru/javatg Подписывайся на нужные направления и собирай себе ленту, которая реально двигает вперёд.
1 925
10
بدون متن...
2 594
11
🛋 C++ реалистично симулирует взрослую жизнь: решил сэкономить на переезде, а всё равно заплатил за копию. const Sofa mySofa;
🛋 C++ реалистично симулирует взрослую жизнь: решил сэкономить на переезде, а всё равно заплатил за копию. const Sofa mySofa; Sofa newApartment = std::move(mySofa); Кажется, диван должен «переехать». Но вызывается конструктор копирования 🤡 Подвох: `std::move` не перемещает объект и не снимает `const`. Здесь он даёт const Sofa&&, а конструктору перемещения Sofa(Sofa&&) нужна ссылка без const. Зато конструктор копирования Sofa(const Sofa&) подходит. Даже компилятор знает: переезд без неожиданных расходов не бывает.
2 176
12
Для работы с ИИ полезно иметь несколько моделей под рукой. Но держать ради этого несколько подписок удобно не всем. Особенно когда сегодня нужен Claude для кода, завтра GPT для другой задачи, а команде ещё нужны общий баланс и понятные расходы. Для такого сценария есть RouterAI, российская альтернатива OpenRouter. ChatGPT, Claude, Gemini, Grok и сотни других моделей доступны через один веб-чат и OpenAI-совместимый API. Сервис работает без VPN, есть Telegram-бот. Для разработки предусмотрены инструкции по подключению Claude Code, Codex, Cline и Cursor. Если провайдер модели недоступен, запрос автоматически направляется резервному. Оплата за использование, без обязательной подписки. Пополнить баланс можно в рублях российской картой или через СБП. Для бизнеса есть оплата по счёту, договор и закрывающие документы. Командам доступны роли, лимиты и статистика расходов. По данным RouterAI, платформой пользуются десятки тысяч пользователей, включая разработчиков и компании. На сторонних площадках сотни положительных отзывов с оценками около 4,9–5 из 5: например, на Startpack сейчас 372 отзыва и рейтинг 4,9. Практичный способ попробовать разные модели на своих задачах и платить за фактическую работу. https://routerai.ru/l/c #реклама О рекламодателе erid: 2W5zFJoafmB
1 965
13
🎲 Генератор случайных чисел всего в три строки В 2003 году George Marsaglia предложил семейство генераторов Xorshift — один
🎲 Генератор случайных чисел всего в три строки В 2003 году George Marsaglia предложил семейство генераторов Xorshift — один из самых простых и быстрых PRNG. Для xorshift32 достаточно буквально трёх операций: state ^= state << 13; state ^= state >> 17; state ^= state << 5; Новое значение state становится следующим псевдослучайным числом. Почему это интересно: - почти нет вычислительных затрат; - используются только битовые сдвиги и XOR; - период для ненулевого state — до 2³² − 1; - отлично подходит для игр, симуляций и других задач, где важна скорость. Но есть важный нюанс: Xorshift не криптографически стойкий. Для токенов, паролей и security-задач его использовать нельзя. Красивый пример того, как всего несколько битовых операций превращаются в полноценный генератор псевдослучайных чисел.
2 432
14
🔥Приглашаем на бесплатный открытый вебинар курса «Электроника и электротехника»: «Беспроводные STM32. Разрабатываем плату дл
🔥Приглашаем на бесплатный открытый вебинар курса «Электроника и электротехника»: «Беспроводные STM32. Разрабатываем плату для микроконтроллеров с радиоинтерфейсом» 📆Когда: 21 октября 2026, 20:00 (мск) Многие разработчики сталкиваются с ситуацией: плата с Bluetooth «работает, но не летает» — дальность связи в разы меньше заявленной в даташите. Что будет на вебинаре: • Почему плата с Bluetooth работает на 5 метров, хотя в даташите обещают 50? • Что такое согласование антенны и почему без него теряется половина мощности? • Можно ли соединять вывод RF микроконтроллера напрямую с антенной или нужна обвязка? • Практические рекомендации по трассировке радиочастотных трактов. • Как адаптировать референс-дизайн под свой стек печатной платы. Зарегистрируйтесь https://otus.pw/5jPS/?erid=2W5zFGxaSRP Бесплатное занятие приурочено к курсу «Электроника и электротехника» Реклама. ООО "ОТУС ОНЛАЙН-ОБРАЗОВАНИЕ". ИНН 9705100963.
1 047
15
🖥 C++: объект уничтожен, а 16 МиБ всё ещё заняты std::weak_ptr может удерживать память даже при expired() == true. Причина в
🖥 C++: объект уничтожен, а 16 МиБ всё ещё заняты std::weak_ptr может удерживать память даже при expired() == true. Причина в std::make_shared: обычно он размещает объект и управляющий блок в одной аллокации. В примере на скриншоте массив на 16 МиБ находится прямо внутри Blob. После удаления последнего shared_ptr: * деструктор объекта вызывается; * expired() возвращает true; * общий блок памяти остаётся выделенным, пока существует хотя бы один weak_ptr. После сброса последней слабой ссылки блок можно освободить. Что делать: удалять протухшие ссылки из долгоживущих кешей. Для крупных объектов также можно рассмотреть отдельную аллокацию через std::shared_ptr<Blob>(new Blob()). Нюанс касается размера самого объекта. Если данные хранятся в обычном std::vector, его отдельный буфер освобождается при вызове деструктора. [Разбор от Microsoft](https://devblogs.microsoft.com/oldnewthing/20230815-00/?p=108602)
2 797
16
🦀 Что удивляет в C, если первым языком был Rust? Обычно разработчики переходят от C к Rust. Автор C for Rust Programmers пош
🦀 Что удивляет в C, если первым языком был Rust? Обычно разработчики переходят от C к Rust. Автор C for Rust Programmers пошёл в обратную сторону и собрал нюансы, которые легко пропустить. Например, такая функция выглядит как принимающая массив из трёх элементов: void inspect(char data[3]) { printf("%zu\n", sizeof(data)); } Но параметр здесь становится указателем. На платформе с 64-битными указателями увидите 8, а не 3. Длина массива в функцию не передаётся. Ещё несколько сюрпризов: • C-строки заканчиваются \0, а strlen() ищет этот байт, проходя по памяти. • long обычно занимает 64 бита в 64-битных Unix-системах и 32 бита в Windows. • malloc() может вернуть NULL, а язык не заставит проверить результат. • Вместо ссылок с проверкой заимствований работают сырые указатели. Полезное чтение для тех, кто пишет FFI или хочет понять, какие гарантии привычно получает от Rust. https://bd103.dev/blog/2026-10-07-c-for-rust-programmers/ @rust_code
2 625
17
UTF-8-декодер на C: таблица и несколько строк кода Бьёрн Хёрманн реализовал декодирование UTF-8 через конечный автомат (DFA).
UTF-8-декодер на C: таблица и несколько строк кода Бьёрн Хёрманн реализовал декодирование UTF-8 через конечный автомат (DFA). Он обрабатывает байты по одному, собирает кодовую точку Unicode и проверяет корректность последовательности. Таблица utf8d выполняет две задачи: * определяет класс очередного байта; * выбирает следующее состояние автомата. `ACCEPT` означает, что кодовая точка полностью прочитана. `REJECT` - обнаружена ошибка. Остальные состояния означают, что нужны дополнительные байты. Подход удобен для потоковой обработки: если символ разорван между двумя сетевыми пакетами, достаточно сохранить состояние и накопленное значение. Нюанс: после последнего байта тоже нужно проверить состояние. Если оно не ACCEPT, строка некорректна - например, оборвалась посреди символа.
2 463
18
🖥 Создатель C++ раскритиковал программирование через промпты Бьярне Страуструп считает естественный язык слишком неоднозначн
🖥 Создатель C++ раскритиковал программирование через промпты Бьярне Страуструп считает естественный язык слишком неоднозначным для точного описания программ. В интервью Райану Петерману он заявил, что ИИ часто создаёт раздутый код с ошибками и уязвимостями, который сложно проверять. По его словам, изменение промпта может существенно менять реализацию, заставляя опытных разработчиков заново разбираться в результате. Страуструп рассказал, что знает специалистов, которые предпочитают уйти на пенсию, чем заниматься такой проверкой. Особенно скептически он оценивает ИИ в системах, где критичны безопасность и производительность. При этом признаёт: большая часть мирового кода не относится к этой категории.
3 436
19
Яндекс выложил в опенсорс YTsaurus Flow YTsaurus Flow - фреймворк потоковой обработки данных с сохранением состояния между со
Яндекс выложил в опенсорс YTsaurus Flow YTsaurus Flow - фреймворк потоковой обработки данных с сохранением состояния между событиями, альтернатива зарубежным Spark Structured Streaming и Kafka Streams. Технологию совместно разработали команды Yandex Infrastructure и Яндекс Рекламы для работы с большими потоками данных. Flow изначально создавался для высоконагруженных real-time систем, прежде всего рекомендательных. Позволяет обрабатывать большие потоки событий с сохранением состояния, гарантией exactly-once и автоматическим распределением нагрузки. Это важно для сервисов, где задержка или потеря данных напрямую влияют на качество рекомендаций, антифрода и других ML-систем: свежие события быстрее доходят до моделей, а инфраструктура продолжает работать при сбоях и изменении нагрузки. https://github.com/ytsaurus/ytsaurus/tree/main/yt/yt/flow
3 279
20
🎮 Строка из Quake III, которая выглядит как колдовство i = 0x5f3759df - (i >> 1); // what the fuck? Комментарий настоящий. Э
🎮 Строка из Quake III, которая выглядит как колдовство i = 0x5f3759df - (i >> 1); // what the fuck? Комментарий настоящий. Эта строка помогает вычислить 1/√x, не извлекая квадратный корень. В графике такая операция нужна для нормализации векторов: привести их длину к единице, сохранив направление. Как работает трюк? У float внутри есть показатель степени и дробная часть. Если прочитать биты положительного нормализованного числа как целое, получится величина, которая примерно соответствует его логарифму с масштабом и смещением. А дальше используется свойство: log₂(1/√x) = −½ × log₂(x) Сдвиг >> 1 делит целое число на два. Вычитание из подобранной константы меняет знак и компенсирует смещение. Полученные биты снова читаются как float: это уже приближение к ответу. Один шаг метода Ньютона доводит относительную погрешность примерно до 0,18%. В историческом тесте Криса Ломонта функция работала примерно в четыре раза быстрее прямого вычисления 1.0 / sqrt(x). А закомментированная строка на картинке? Это второй шаг Ньютона: ещё больше точности за дополнительные вычисления. 💡 Красота алгоритма в том, что само представление числа в памяти становится частью вычисления. https://github.com/id-Software/Quake-III-Arena/blob/master/code/game/q_math.c
3 733