Search
Write a publication
Pull to refresh
145
11.3
Александр Рябиков @rsashka

Системный архитектор

Send message

Как написать хороший генератор

Level of difficultyEasy
Reading time6 min
Views4.4K

В интернете невероятное количество статей о том "как написать свой генератор на С++20", но почти все они сводятся к новичковым хело вордам и почти ни одной статьи о том как написать хороший генератор. Что ж, это нужно исправлять!

next

Как доказать теорию относительности Эйнштейна за 10 000 рублей

Level of difficultyMedium
Reading time11 min
Views18K

Когда вы стоите на поверхности Земли, вы испытываете столкновения окружающих атомов и молекул атмосферы с вашим телом. То же делают и фотоны, частицы света. Некоторые из этих частиц особенно энергичны и могут отбрасывать электроны от атомов и молекул, с которыми они обычно связаны, создавая свободные электроны и ионы, которые тоже могут столкнуться с вами. Через ваше тело проходят призрачные нейтрино и антинейтрино, хотя они редко взаимодействуют с вами. Но с вашим телом происходит гораздо больше, чем думаете.

По всей Вселенной, от звёзд, чёрных дыр, галактик и т. д. испускаются космические лучи — частицы, несущиеся через Вселенную с высокими энергиями. Они попадают в атмосферу Земли и вызывают ливни как стабильных, так и нестабильных частиц. Те из них, которые живут достаточно долго, прежде чем распасться, в конечном итоге попадают на поверхность Земли. Каждую секунду через ваше тело проходит от 10 до 100 мюонов — нестабильных, тяжёлых кузенов электрона. При среднем времени жизни в 2,2 микросекунды можно подумать, что они не могли бы пройти всю толщину атмосферы, ~100 с лишним километров, от космоса до вашей руки. Тем не менее, теория относительности утверждает, что это происходит, и тот факт, что эти мюоны проходят через ваше тело, более чем достаточен для доказательства её правоты.

Читать далее

Реализация подписчиков в c++ — пляшем от печки чуть дальше

Level of difficultyMedium
Reading time8 min
Views3.2K

В прошлой статье, отбросив всё, что нам было известно из мира «кровавого энтерпрайз IT», и опустошив чашу, мы «написали на коленке» простейший оповещатель (notifier). Объект, вызывающий по цепочке заранее зарегистрировавшихся клиентов (подписчиков) при наступлении какого-то события.

Настало время сделать его чуть удобнее для пользователей — добавить поддержку аргументов и позволить отписываться от событий прямо из кода подписчика.

Читать далее

Obsidian+Github вместо Notion: синхронизация, бекап и версионность (3-в-1)

Level of difficultyEasy
Reading time9 min
Views105K

О том, как сделать прозрачную синхронизацию заметок Obsidian между устройствами (Desktop, Android, iOS) через GitHub:

1. Без сторонних приложений (вроде iCloud, SyncThing, Termux и пр)
2. Бесплатно
3. Бонусом — резервная копия: как самих заметок, так и истории изменений.

В результате получается полноценная замена Notion: структурированные заметки с автоматической синхронизацией между устройствами.

Инструкция:

Почему я предпочитаю исключения, а не значения ошибок

Level of difficultyMedium
Reading time11 min
Views26K

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

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

Давайте рассмотрим пример, в котором применено защищённое от ошибок целочисленное деление:

int safeDiv(int a, int b) {
   if (b == 0)
      throw Div0(); // Исключения передаются особым образом
   return a / b; // Теперь-то всё абсолютно безопасно, ведь так?
}

Новые языки программирования склонны применять сообщения об ошибках в функциональном стиле и кодировать ошибки в возвращаемый тип. Например, Go кодирует ошибку в возвращаемый тип при помощи кортежа (res, err), а Rust возвращает Result<T, E> — тип-сумму результата и ошибки.
Читать дальше →

Профессиональная разработка на Brainfuck

Level of difficultyMedium
Reading time11 min
Views10K

Хотите довести до дурки любимого преподавателя компьютерных наук или навсегда прослыть «особенным» среди коллег сразу после (немедленного) увольнения?

Читайте про патентованный метод.

Читать далее

Тысяча и одна библиотека С++

Reading time65 min
Views47K

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

Столкнувшись много раз подряд с тем, что найти что-то толковое довольно непросто, я решил попробовать распутать это узел и предложить для русскоязычных читателей свой справочник классных библиотек на С++. Я исходил из этого источника. Это очень многогранный и объемный список библиотек языка С++, но, скажем так, у меня были к нему вопросы. Потому я сделал перевод, затем значительно улучшил его в плане содержания (далее объясню, как, почему и зачем). На выходе получилось около 1000 библиотек. Как в сказке). Они, конечно, не покрывают все возможные задачи и предметные области, но поверьте, они затрагивают действительно многое.

Прикоснуться к сокровищнице языка С++

Нормализуем собственное рабочее время или «очумелые ручки» в борьбе с прокрастинацией

Level of difficultyEasy
Reading time3 min
Views4.2K


После перехода на удаленку у меня в полный рост встала проблема с прокрастинацией задач. Все как по написаному:


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


Сразу хочу написать, что это решение, что называется "зашло", и даже сейчас я пишу статью под контролем таймера. Но сама статья не о самоорганизации работы, а об устройстве для этого (непосредственно самом таймере). Точнее о том, как я его дорабатывал под собственные нужды в надежде, что вдруг кому-то пригодится мой опыт.

Читать дальше →

Как вернуть энергию и интерес

Reading time34 min
Views40K

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

Мне 48 лет, сидячий образ жизни, интеллектуальные задачи. С одной стороны вредных привычек нет, с другой, — спорта тоже явно не хватает. Похожая ситуация с питанием: не хожу в фастфуд, но и не сижу на ПП (полезное питание). Самый большой стресс для меня — это общение с людьми, которые мне не рады и выполнение задач, которые не интересны. Мне нравится глубоко изучать вопрос, так что, если статья покажется затянутой, не обессудьте.

Читать далее

Учимся летать: симуляция эволюции на Rust. 5/5

Level of difficultyMedium
Reading time34 min
Views4.3K



Это заключительная часть серии статей по разработке симуляции эволюции с помощью нейронной сети и генетического алгоритма.





Читать дальше →

What's wrong with the term «Artificial Intelligence»?

Level of difficultyEasy
Reading time4 min
Views687


Recently, there has been a lot of talk about the success of artificial intelligence (AI), although this usually means another achievement in the field of generative neural networks.


And few people, speaking about AI, try to explain what they themselves understand by the term “artificial intelligence.” After all, it’s one thing to write about “AI problems,” and quite another to endow an ordinary computer algorithm with at least the rudiments of intelligence.


After all, the etymology of the established phrase “artificial intelligence” is not unambiguous and can take on different meanings depending on what meaning the author is trying to put into it.

Read more →

Неоднозначный термин «искусственный интеллект»

Level of difficultyEasy
Reading time5 min
Views3.1K


Последнее время кто только не говорит про успехи искусственного интеллекта (ИИ), часто подразумевая под этим очередное достижение в области генеративных нейросетей. И как обычно, одни делают деньги на хайпе, другие жаждут появления Сары Коннор настоящего сильного ИИ (который в будущем захватит мир), а кто-то просто в очередной раз насилует журналиста.


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


Давно хотел написать, что сама этимология устоявшегося словосочетания "искусственный интеллект" не однозначна и может принимать разные значения из контекста, так как обозначает понятие, которое может отличаться от того, которое в него пытается вложить автор. И чтобы понять, что же в словосочетании "искусственный интеллект" не так, давайте разложим его на составляющие:

Читать дальше →

Учимся летать: симуляция эволюции на Rust. 3/5

Level of difficultyMedium
Reading time30 min
Views3.8K



Это третья часть серии статей по разработке симуляции эволюции с помощью нейронной сети и генетического алгоритма.






В предыдущей статье мы реализовали простую FFNN (feedforward neural network — нейронная сеть прямого распространения), которая может передавать числа через рандомизированные слои — это первый шаг на пути создания мозга.


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


Но как мы можем обучить группу чисел с плавающей точкой (запятой, если угодно)?

Читать дальше →

Моя б̶е̶з̶умная колонка: часть вторая // программная

Level of difficultyEasy
Reading time16 min
Views16K

Привет, Хабр!

В прошлой статье я описал аппаратную реализацию своего голосового ассистента на базе бюджетного одноплатника Orange Pi Zero 2W с 4Гб оперативной памяти. Эту же статью хочу посвятить программной реализации данного устройства. Если стало интересно, то добро пожаловать под кат.
Читать дальше →

Простые способы ускорения обучения PyTorch-моделей

Level of difficultyMedium
Reading time13 min
Views9.3K

Не знаю — нужно ли вступление к статье, посвящённой ускорению машинного обучения (Machine Learning, ML)?

Ускорение обучения моделей — это именно то, в чём нуждаются все ML‑инженеры. Более быстрое обучение модели означает ускорение экспериментов, что, в свою очередь, ведёт к ускорению выпуска новых версий программных продуктов. Кроме того — чем выше скорость обучения — тем меньше ресурсов нужно на каждую итерацию обучения модели. Поэтому предлагаю перейти сразу к делу.

Читать далее

Plane-based геометрическая алгебра для описания движения тел

Level of difficultyHard
Reading time20 min
Views6.4K

Этот текст логически состоит из трёх частей. Сначала кратко расскажу про геометрическую алгебру с точки зрения математики. Потом расскажу как можно взять одну конкретную алгебру и использовать её для описания вращения и перемещения тел. И вишенка на торте - покажу, как будут выражаться физические сущности типа силы и момента, импульса, момента инерции и уравнений движения тел.

Читать далее

ИТ — сам себе профсоюз

Level of difficultyEasy
Reading time2 min
Views4.5K


Как-то меня зацепила статья Зачем вам нужен профсоюз? в которой от лица работников ИТ-отрасли стран СНГ пропагандируется организованная форма саботажа воздействия на работодателя, как единственный способ решения проблем между работниками и собственниками бизнеса.


Зацепила в первую очередь тем, что я успел побывать на каждой из сторон подобного противостояния и неоднократно приходилось вмешиваться и разруливать различные проблемы. Причем "разруливать", это не только объяснить сотруднику в чем он был не прав, но и показать руководству, что так делать не стоит и давайте попробуем вот-так, чуть по другому.


И ни одном случае ни разу не было ситуации, когда забастовка помогла бы в разрешении кризисной ситуации. Потому что забастовка, это "Ultima ratio", последний довод, и он хорош только в виде аргумента, до использования которого дело не дойдет. Но если уж дошло, то можно со 100% уверенностью готовить заявление на увольнение, потому что у работодателя достаточно способов не нарушая закон избавиться от подобных неадекватных сотрудников.

Читать дальше →

Ventoy — мультизагрузка образов OS с преферансом и куртизанками

Reading time23 min
Views260K
Привет Хабр!

Существует несколько программ с графическим интерфейсом, предназначенных для создания Live USB-дисков.

Так начиналась переводная статья, комментарии к которой стали вторым толчком (а был ещё и первый) для написания обзора возможностей, системы для создания мультизагрузочных флешек ventoy.


Проект начатый китайским разработчиком longpanda примерно полтора года назад, в марте 2020-го, успел набрать популярность и уже включён в состав репозиториев некоторых дистрибутивов linux. И неспроста.

Давайте посмотрим почему...

Storybook — генератор сказок с ИИ на Raspberry Pi 5 и 7-цветном дисплее E-Ink

Level of difficultyEasy
Reading time3 min
Views5.3K

Последнее время только ленивый не пишет о великом прорыве человечества в области разработки искусственного интеллекта под общим названием "большая языковая модель" (LLM, large language model). И хотя у них остается еще много возможностей для совершенствования, но за последние несколько лет подобные приложения стали действительно востребованными. Большие языковые модели привлекают своей сверхъестественной способностью резюмировать текст, понимать естественный язык и создавать контент (и судя качеству некоторых статей, в том числе и тут на Хабре).


Правда подобные инструменты иногда сбоят и выдают некорректную информацию т.е. "галлюцинируют", которую выдают за правду. Генераторы изображений могут нарисовать лошадей с пятью ногами или кисть руки с семью пальцами. Однако подобные "фантазии" не всегда плохо. Например, когда творчество ценится выше точности, генерация не существующего контента, но похожего на правду, может оказаться полезной.


Томас Валадес (Thomas Valadez) воспользовался этим творческим потенциалом, чтобы создать интересное устройство под названием «Storybook». Его проект с открытым исходным кодом превращает Raspberry Pi в рассказчика на базе искусственного интеллекта, способного создавать иллюстрированные сказки. Это устройство использует LLM и генератор изображений для создания одной страницы книги из никогда не существовавшего сборника рассказов и выводит их на E-Ink дисплей.


Читать дальше →

Information

Rating
1,078-th
Location
Россия
Date of birth
Registered
Activity

Specialization

Embedded Software Engineer, Software Architect
Lead
C++
OOP
Linux
Programming microcontrollers
Embedded system
C
Qt
Software development