Как стать автором
Обновить
23
0
Александр @Readme

Средненький велосипедостроитель C++

Отправить сообщение

Отопление в ИЖС с помощью сплит-кондиционера «на тепло». Так ли это выгодно на самом деле?

Время на прочтение 30 мин
Количество просмотров 14K

Отопление тепловыми насосами

Продолжим обсуждение способов экономичного отопления в ИЖС без использования трубного газа.

Ранее были рассмотрены варианты отопления электричеством и отопления с применением СУГ.

Экономика загородного дома. Как утеплить дом и не разориться?

По желанию читателей решил рассмотреть и вариант отопления с помощью «кондиционеров на тепло».

То есть нужно рассмотреть простую и дешёвую систему получения халявного тепла на отопление от и так уже установленного для лета кондиционера, который простым нажатием кнопки на пульте начнёт выкачивать тепло из воздуха холодной улицы, переправляя его внутрь отапливаемого домика.

Изначально предполагается использовать именно самую дешёвую версию сплит‑кондиционера, у которого компрессорно‑конденсаторный блок (далее ККБ) установлен на улице.

Идея сама по себе увлекательная, но содержит в себе ряд подводных камней, не очень афишируемых в рекламных проспектах.

Рассмотрением этих незаметных или преднамеренно скрываемых препятствий мы и займёмся в этой статье.

Читать далее
Всего голосов 53: ↑50 и ↓3 +47
Комментарии 137

PFGM++: буст генеративных моделей с применением электростатики

Уровень сложности Средний
Время на прочтение 9 мин
Количество просмотров 3.3K

Новая ступень в развитии диффузионных генеративных моделей ИИ, и новая возможность создавать собственные изображения в 10 раз быстрее, чем раньше. Это стало реальным благодаря удачной попытке совместить знания об электростатике и принципу функционирования привычных нам диффузионных моделей. Так, исследователям из MIT CSAIL удалось воплотить в жизнь инновационную модель PFGM ++, которая по последним данным значительно превосходит своих предшественниц.

Какова физическая природа PFGM ++, и как ее использовать на практике – давайте разбираться далее вместе.

Приятного прочтения!

Читать далее
Всего голосов 31: ↑31 и ↓0 +31
Комментарии 0

Жизнь, пульсирующая в черной дыре

Уровень сложности Сложный
Время на прочтение 7 мин
Количество просмотров 53K

На habr ранее активно обсуждалась теория Вселенной, осциллирующей в черной дыре, которая развивается в ряде работ, в том числе моих с соавторами (но не только). Чего стоит дискуссия от 2018 года на 600 комментариев «Жизнь внутри черной дыры» (отмечу, что я не инициировал этот пост, просто меня спросили — не возражаю ли я, а я, конечно, вовсе нет). Там, конечно, много странных заявлений, но я не принимал прямое участие в этой дискуссии, потому что был слишком занят дальнейшим развитием теории. Но в этом году ситуация изменилась: работа над моделью циклической Вселенной с переменной гравитационной массой для меня практически завершена. Она подробно изложена в книге «Осциллирующая Вселенная», которая опубликована в бумажном и электронном варианте издательством Челябинского государственного университета в феврале 2023 года. Книгу (со свежими уточнениями на 25 сентября 2023 года) можно скачать на сайте Пущинской обсерватории.

Читать далее
Всего голосов 112: ↑108 и ↓4 +104
Комментарии 332

Пакуем весь трафик в Ping message, чтобы не платить за интернет | ICMP NAT traversal

Уровень сложности Сложный
Время на прочтение 29 мин
Количество просмотров 83K

Бывало ли у вас такое, что вы подключились к общественной сети или мобильному интернету, но он себя странно ведёт. Надпись «Подключено, без доступа к интернету» отсутствует, устройство думает, что всё нормально. Вы открываете браузер и видите «Пройдите проверку личности в сети нашего кафе» или в случае с мобильным интернетом «Пополнить баланс можно тут, тут и тут».

Так вот, переходя ближе к теме. Вы можете воспроизвести подобное поведение очень просто прямо сейчас при помощи вашего мобильного телефона и ноутбука. Я в своём конкретном кейсе буду пользоваться услугами оператора красного цвета, однако проблема актуальна для всех текущих 4 монополистов рынка сотовой связи. Как вам, скорее всего, уже известно, они около года меняют свою политику, внедряя одно интересное нововведение — с вас требуют дополнительной платы за раздачу интернета поверх основного пакета. То есть вы не можете взять и использовать свои 7 гигов на месяц как ресурс для раздачи при помощи точки доступа. Для точки доступа вам предлагают отдельный, зачастую совсем невыгодный тариф. Конечно, можно сменить основной тариф на специальный «тариф для раздачи» и платить втридорога, но, как вы понимаете, сегодня мы в потребителя будем играть совсем недолго. Сейчас по пунктам нужно доказать нечестность подобной политики и с чувством завершённого введения перейдём к непосредственно технотексту.

Подобные условия пользования, само собой, порождают внутреннее недовольство пользователей:

За интернет они платят? — Да.

Раздача как-либо использует ресурсы провайдера сверх нормы? — Нет.
Читать дальше →
Всего голосов 298: ↑296 и ↓2 +294
Комментарии 91

Первые новинки C++26: итоги летней встречи ISO

Время на прочтение 11 мин
Количество просмотров 20K

На недавней встрече комитет C++ активно взялся за C++26. Уже есть первые новинки, которые нас будут ждать в готовящемся стандарте C++:

  • улучшенный static_assert,
  • переменная _,
  • оптимизация и улучшение для std::to_string,
  • Hazard Pointer,
  • Read-Copy-Update (так же известное как RCU),
  • native_handle(),
  • целая вереница классов *function*,
  • множество доработок по constexpr,
  • std::submdspan,
  • и прочие приятные мелочи.

Рассмотрим новинки на примерах
Всего голосов 66: ↑64 и ↓2 +62
Комментарии 119

Алгоритмы быстрого умножения чисел: от столбика до Шенхаге-Штрассена

Уровень сложности Средний
Время на прочтение 26 мин
Количество просмотров 37K

При написании высокоуровневого кода мы редко задумываемся о том, как реализованы те или иные инструменты, которые мы используем. Ради этого и строится каскад абстракций: находясь на одном его уровне, мы можем уместить задачу в голове целиком и сконцентрироваться на её решении.

И уж конечно, никогда при написании a * b мы не задумываемся о том, как реализовано умножение чисел a и b в нашем языке. Какие вообще есть алгоритмы умножения? Это какая-то нетривиальная задача?

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

Скорее к формулам!
Всего голосов 173: ↑173 и ↓0 +173
Комментарии 28

C++23 — финал, C++26 — начало

Время на прочтение 8 мин
Количество просмотров 35K

С момента моей прошлой публикации состоялось уже две встречи международного комитета по стандартизации C++.

Комитет занимался полировкой C++23:
  • static operator[];
  • static constexpr в constexpr-функциях;
  • безопасный range-based for;
  • взаимодействие std::print с другими консольными выводами;
  • монадический интерфейс для std::expected;
  • static_assert(false) и прочее.

И прорабатывал новые фичи C++26:
  • std::get и std::tuple_size для агрегатов;
  • #embed;
  • получение std::stacktrace из исключений;
  • stackful-корутины.

Подробности
Всего голосов 54: ↑53 и ↓1 +52
Комментарии 34

GPT-2 в картинках (визуализация языковых моделей Трансформера)

Время на прочтение 18 мин
Количество просмотров 28K

openAI-GPT-2-3


В 2019 году мы стали свидетелями блистательного использования машинного обучения. Модель GPT-2 от OpenAI продемонстрировала впечатляющую способность писать связные и эмоциональные тексты, превосходящие наши представления о том, что могут генерировать современные языковые модели. GPT-2 не является какой-то особенно новой архитектурой – она очень напоминает Трансформер-Декодер (decoder-only Transformer). Отличие GPT-2 в том, что это поистине громадная языковая модель на основе Трансформера, обученная на внушительном наборе данных. В этой статье мы посмотрим на архитектуру модели, позволяющую добиться таких результатов: подробно рассмотрим слой внутреннего внимания (self-attention layer) и применение декодирующего Трансформера для задач, выходящих за рамки языкового моделирования.

Читать дальше →
Всего голосов 9: ↑9 и ↓0 +9
Комментарии 2

Пишем GPT в 60 строк NumPy (часть 1 из 2)

Уровень сложности Средний
Время на прочтение 16 мин
Количество просмотров 70K

В этом посте мы начнём реализацию с нуля GPT всего в 60 строках numpy. Во второй части статьи мы загрузим в нашу реализацию опубликованные OpenAI веса обученной модели GPT-2 и сгенерируем текст.
Читать дальше →
Всего голосов 96: ↑94 и ↓2 +92
Комментарии 33

Задача коммивояжера (TSP) точное решение — метод целочисленного линейного программирования (Integer programming)

Время на прочтение 20 мин
Количество просмотров 22K

Дочитав эту статью до конца, вы сможете решать точно задачу коммивояжёра на сотню элементов за считанные секунды!

Заинтригованы? Тогда, добро пожаловать под кат.

Читать далее
Всего голосов 124: ↑124 и ↓0 +124
Комментарии 40

Алгоритм HyperLogLog, или Оцениваем мощность множества за O(1)

Время на прочтение 10 мин
Количество просмотров 10K


Привет, Хабр! Меня зовут Максим, я учусь на третьем курсе МФТИ. Этим летом я участвовал в студенческой программе, которую проводила команда Tarantool. Если кратко, суть программы в том, чтобы самостоятельно или в команде решить исследовательскую задачу в определенный срок. 

Моей задачей была реализация алгоритма HyperLogLog. Во время работы я не обнаружил русскоязычных материалов о практической реализации алгоритма, поэтому решил, что полученный мною опыт может быть полезен сообществу. Статья будет интересна людям, интересующимся алгоритмами и практическим программированием. Для понимания темы не потребуется ни специальных математических знаний, ни предварительного знакомства с алгоритмом. 
Читать дальше →
Всего голосов 62: ↑62 и ↓0 +62
Комментарии 40

Кодогенератор Waffle++ для C++

Время на прочтение 17 мин
Количество просмотров 8.2K

Кодогенератор это программа, которая на основе исходного кода или какого-нибудь файла настроек генерирует вспомогательный код, который потом компилируется вместе с исходным кодом. Это нужно, чтобы не писать boilerplate-код, а также для получения дополнительных возможностей языка.

Я делаю расширяемый кодогенератор для C++, в котором можно реализовать много полезного. Примеры модулей: перевод значений enum в строку и обратно, перевод структуры в JSON и обратно, декларативный веб-сервер, система слотов и сигналов, свой динамический полиморфизм, генератор кода для тестов...

В этом обзоре будет showcase, сравнение с другими кодогенераторами, как работают модули, как сделать свой модуль, и как подключить кодогенератор в свои проекты.

Читать далее
Всего голосов 22: ↑22 и ↓0 +22
Комментарии 12

Генерируем музыку с помощью Stable Diffusion

Время на прочтение 3 мин
Количество просмотров 9.5K

Многие уже слышали, а может и пробовали модель Stable Diffusion для генерации картинок из текста. Но знаете ли вы, как с помощью той же модели можно генерировать аудио?

Читать далее
Всего голосов 17: ↑17 и ↓0 +17
Комментарии 13

Сверхлёгкие частицы размером с галактику

Время на прочтение 41 мин
Количество просмотров 36K

Расправившись со статьёй про «волны-убийцы», я ещё некоторое время по инерции запускал описанную там модель с различными начальными условиями. На каком-то этапе пришла мысль обобщить код на большие измерения и произвести расчёт для поля, заполненного случайными возмущениями. Результат крайне озадачил и увёл меня в совсем другое направление, заставив на несколько месяцев погрузиться в космологию и физику тёмной материи.
Читать дальше →
Всего голосов 137: ↑136 и ↓1 +135
Комментарии 34

Согласованное хеширование: не самые очевидные вещи

Время на прочтение 13 мин
Количество просмотров 6.1K
image

Классический алгоритм согласованного хеширования решает проблемы, присущие алгоритму модульного хеширования, где хеш-функция (позиция ключа K) привязана к числу элементов хранилища – и, соответственно, при масштабировании как вверх, так и вниз, требуется перераспределение всех этих ключей.

# модульное хеширование
hash = key % N of nodes


В свою очередь, при согласованном хешировании хеширующая функция не зависит от количества узлов хранения. Поэтому можно динамически секционировать данные по мере добавления или удаления узлов, тем самым масштабируясь поступательно.
Читать дальше →
Всего голосов 24: ↑22 и ↓2 +20
Комментарии 2

Эмуляция видеоигр нейросетью

Время на прочтение 12 мин
Количество просмотров 19K
Я создал играбельный верхний мир Pokémon. Он очень похож на обычную видеоигру, можете попробовать сыграть в него в браузере здесь:


Хотя он похож на видеоигру, я не писал код игры. На самом деле это нейросеть, подражающая видеоигре.
Читать дальше →
Всего голосов 31: ↑31 и ↓0 +31
Комментарии 51

Гайд по межсетевому экранированию (nftables)

Время на прочтение 32 мин
Количество просмотров 45K


Все говорят, что для защиты сети нужно применять межсетевые экраны, но никто не говорит, как это нужно делать. Что ж, исправим ситуацию, рассмотрим типовые сценарии применения межсетевых экранов и то, как их при этом настраивать.

В качестве межсетевого экрана будем использовать nftables, функционирующий под управлением ОС Debian GNU Linux.
Читать дальше →
Всего голосов 30: ↑29 и ↓1 +28
Комментарии 15

Руководство по CMake для разработчиков C++ библиотек

Время на прочтение 18 мин
Количество просмотров 74K

Данное руководство позволит читателю составить полную картину того, как организовать сборку C++ библиотек с использованием современных возможностей CMake. Предполагается, что читатель имеет представление о базовых понятиях из мира CMake и динамических/статических C++ библиотек, так как в руководстве они могут не объясняться.

Читать далее
Всего голосов 71: ↑71 и ↓0 +71
Комментарии 49

Как это устроено: атомные часы

Время на прочтение 22 мин
Количество просмотров 65K

Привет Хабр! Сегодня у нас выходит статья в Nature Physics, в которой мы рассказываем про один интересный апгрейд для атомных часов. А нашу предыдущую работу по этой теме — в тот раз в самом Nature — даже упоминали пару раз на Хабре. Но то ли наш пресс-релиз оказался слишком сложным, то ли тема слишком специфичной, короче говоря, я из тех заметок вряд ли бы что-либо понял. Поэтому сегодня попробую простым языком рассказать про то, как устроены атомные часы и что интересного нас ждет в ближайшем будущем.



Оптические атомные часы в университете Токио. Credit: H. Katori

Читать дальше →
Всего голосов 262: ↑261 и ↓1 +260
Комментарии 48

JIT-компилятор Python в 300 строк

Время на прочтение 11 мин
Количество просмотров 29K

Может ли студент второго курса написать JIT - компилятор Питона, конкурирующий по производительности с промышленным решением? С учётом того, что он это сделает за две недели за зачёт по программированию.

Как оказалось, может, но с нюансами.

Читать далее
Всего голосов 138: ↑137 и ↓1 +136
Комментарии 37

Информация

В рейтинге
Не участвует
Зарегистрирован
Активность