Обновить
33
0.7
Даниил Солопов@dan_sw

Software Engineer, Bachelor of Computer Science

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

Чистим строку от лишних/повторяющихся пробелов (и пробельных символов) в строковых значениях компактно. RegExp

Уровень сложностиПростой
Время на прочтение3 мин
Охват и читатели9.2K

Хочу поделиться компактной функцией для очищения лишних, повторяющихся пробелов и пробельных символов в строках. Не считайте это призывом, но если можно привести строковые данные в красивый вид без лишних хлопот, то почему бы и не воспользоваться. Те, кто не знаком с регулярными выражениями (regular expressions, RegExp, regex), может приоткроет форточку в этот славный и замороченный мир (Регулярные выражения (regexp) — основы)

Читать далее

Вкусы и предпочтения больших языковых моделей

Уровень сложностиПростой
Время на прочтение29 мин
Охват и читатели6.5K

У больших языковых моделей есть системы ценностей. БЯМ по-разному отзываются о чужих текстах или даже человеческой жизни, а их оценочные суждения и качество ответов отличаются в зависимости от упоминаемой расы, пола и национальности человека. Не вызывает никаких сомнений, что подобную предвзятость систем на искусственном интеллекте нужно искоренять.

Однако также у моделей есть предпочтения. Разные БЯМ называют любимыми разные песни, кино и книги. ИИ одного провайдера предпочитает одну разновидность мороженого, у конкурентов языковая модель любит десерты другого вкуса. Ответы на подобные вопросы глубоко субъективны, одного морально правильного нет.

Можно даже сказать, что вкусы — это частный случай систем ценностей. Разница в том, что явных угроз подобные артефакты выравнивания не несут. Какая разница, предпочитает ли БЯМ джаз или рок?

Читать далее

Руководство по Кросс-Платформенному Системному Программированию для UNIX и Windows: Уровень 1

Время на прочтение68 мин
Охват и читатели16K

С помощью этого учебного материала мы научимся писать кросс-платформенный код на Си, используя системные функции популярных ОС (Windows, Linux/Android, macOS и FreeBSD): управление файлами и файловый I/O, консольный I/O, пайпы (неименованные), запуск новых процессов. Мы напишем свои небольшие вспомогательные функции поверх низкоуровневого системного АПИ (API), для того чтобы наш основной код, используя эти функции, мог работать на любой ОС без изменений. Этот учебный материал — начального уровня. Я делю сложные вещи на части, чтобы примеры кода здесь не были слишком заумными для тех, кто только что начал программировать на Си. Мы обсудим различия между системными АПИ и разберёмся, как создать кросс-платформенный программный интерфейс, который скрывает все эти различия от пользователя этого интерфейса.

Читать далее

Генерация синтетических данных для LLM. Часть 3: случайные матрицы

Уровень сложностиСредний
Время на прочтение4 мин
Охват и читатели4.1K

Добрый день, уважаемые Хабровчане :) Продолжаем наши научные изыскания в области определения «синтетических» данных. В этой статье я рассмотрю тему анализа графов с позиции анализа спектров матрицы смежности для случайных матриц. То есть мы зайдём со стороны оптимизации знаний из прошлых двух статей (раз и два) и посмотрим, как применить теорию случайных матриц к нашей исходной задаче. Основная цель — расширение диапазона исследуемых значений. 

Итак, погнали, значицо ;)

Читать далее

gRPC-сервер на C++

Уровень сложностиСредний
Время на прочтение8 мин
Охват и читатели7.3K

Всем привет. На Хабре есть довольно большое количество примеров реализации gRPC‑серверов на GO, чуть в меньшей степени на python, еще меньше — на других языках. Поиск примеров данного проекта для C++ дал мне не так много информации, как хотелось бы. К счастью, очень крутое решение-экземпляр есть на официальном сайте (ссылка). Если вам не хочется читать код и комментарии на английском языке, добро пожаловать под кат.

Читать далее

Наша Вселенная — симуляция на основе большого клеточного автомата?

Уровень сложностиСредний
Время на прочтение17 мин
Охват и читатели54K

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

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

Читать далее

Создаём собственный системный вызов в Linux 6.8

Уровень сложностиСредний
Время на прочтение4 мин
Охват и читатели10K

Вам когда-нибудь хотелось создать собственный системный вызов? Может быть, вы получали такое домашнее задание, пытались сделать это из интереса или просто для того, чтобы узнать что-то новое о ядре. В любом случае, системные вызовы – крутая штука, чтобы подробнее разобраться в Linux.

Читать далее

Использование std::optional в С++17

Время на прочтение11 мин
Охват и читатели111K


Давайте возьмём пару от двух типов <YourType, bool> — что вы можете сделать с композицией подобного рода?


В этой статье я расскажу вам про std::optional — новый вспомогательный тип, добавленный в C++17. Это обёртка для вашего типа и флаг показывает, инициализировано ваше значение или нет. Давайте посмотрим, где это может быть полезно.


Вступление


Добавлением логических флагов к другим типам вы можете достичь то, что называется "Nullable типы". Как было сказано ранее, флаг используется для обозначения того, доступно значение или нет. Такая обёртка выразительно представляет объект, который может быть пустым (не через комментарии :).

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

Эти пугающие производные, градиенты, матрицы Якоби и Гессе

Уровень сложностиСредний
Время на прочтение6 мин
Охват и читатели19K

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

Читать далее

Создание своего ядра на C

Уровень сложностиСложный
Время на прочтение25 мин
Охват и читатели25K

В этой статье мы пройдём путь создания простого, но функционального ядра операционной системы на языке C.

Читать далее

Революция вайб-кодинга отменяется

Время на прочтение6 мин
Охват и читатели54K

Не торопитесь пролистывать эту статью. Я не собираюсь, подобно множеству других статей на Хабре, рассказывать о плюсах или минусах вайб-кодинга и сравнивать это с плюсами и минусами традиционного программирования. Потому что сравнивать нечего, ведь не случилось ничего такого, что бы как-то значительно изменило ситуацию. По сути, я буду говорить о том же, о чём говорил в предыдущей статье ( https://habr.com/ru/articles/938028/ -Михаил Елисейкин «IT-лягушка и новая нормальность» ) - о том, что мир меняется, а наши о нём представления от этих изменений отстают.

Читать далее

Девиртуализация в C++, компиляторах и вашей программе

Уровень сложностиСложный
Время на прочтение16 мин
Охват и читатели12K

Привет, Хабр! Меня зовут Илья Андреев, я старший программист в компании Syntacore. Вы, наверно, слышали, что виртуальные функции в C++ пользуются дурной славой — а может, и сами придерживаетесь о них не самого лучшего мнения. В этой статье, подготовленной совместно с Константином Владимировым, я в некоторой степени выступлю адвокатом виртуализации.

Мы начнем с вводной части о статическом и динамическом полиморфизме, рассмотрим факторы, влияющие на девиртуализацию, и ее примеры разной сложности — в том числе те, что мы используем в реальной разработке. А напоследок познакомим вас со спекулятивной девиртуализацией и дадим рекомендации, как подходить к виртуальным функциям в разработке на C++.

Читать далее

I-CON: Периодическая таблица машинного обучения

Уровень сложностиСредний
Время на прочтение14 мин
Охват и читатели2K

Исследователи из МiT, Microsoft и Goggle создали фреймворк, который может изменить подход к разработке алгоритмов машинного обучения - I-Con (Information Contrastive Learning).

Он объединил и систематизировал более 20 классических методов ML — от кластеризации до контрастивного обучения в единую структуру, напоминающую периодическую таблицу. Как и ее химический прародитель, эта таблица не только упорядочивает известные алгоритмы, но и указывает на пробелы, где могут существовать еще не открытые методы.

Читать далее

Три слагаемых AGI

Уровень сложностиПростой
Время на прочтение6 мин
Охват и читатели6.6K

Как-то часто стали встречаться статьи нейро-скептиков: людей, которые всю эту движуху вокруг ИИ считают хайпом, пузырем и чем-то явно переоцененным. Скептицизм - это естественно, полезно, и эволюционно-оправдано для человека. Более того, я и сам большой скептик: на все смотрю через призму инженерного снобизма, проф-деформаций и врожденной недоверчивости. И мне, также, трудно самому себе признаться, что весь мой, более чем 20-ти летний опыт в IT - скоро можно будет выбросить на помойку. Я тоже цепляюсь за те логические соломинки, которые мне позволяют надеяться на то, что я останусь в строю.

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

Читать далее

CUDA: Как работает GPU

Время на прочтение9 мин
Охват и читатели148K
Внутренняя модель nVidia GPU – ключевой момент в понимании GPGPU с использованием CUDA. В этот раз я постараюсь наиболее детально рассказать о программном устройстве GPUs.
Читать далее...

CUDA: Работа с памятью. Часть I.

Время на прочтение12 мин
Охват и читатели75K
В процессе работы с CUDA я практически не касался вопросов об использовании памяти видеокарты. Настало время убрать этот пробел.
Читать далее...

Что ты такое, dhclient?

Время на прочтение19 мин
Охват и читатели63K

Сетевой стек Linux не прост даже на первый взгляд: приложение — в юзерспейсе, а всё, что после сокета, — в ядре операционки. И там тысяча реализаций TCP. Любое взаимодействие с сетью — системный вызов с переключением контекста в ядре.

Чтобы лишний раз не дёргать ядро прерываниями, придумали DMA — Direct Memory Access. И это дало жизнь классу софта с режимом работы kernel bypass: например при DPDK (Intel Data Plane Development Kit). Потом был BPF. А за ним — eBPF. 

Но даже помимо хаков работы с ядром есть такие штуки, как sk_buff, в которой хранятся метаданные всех миллионов протоколов. Есть NAPI (New API), которая призвана уменьшить число прерываний. Есть 100500 вариантов разных tables.

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

Начать погружение

Как настроить библиотеку SFML в Visual Studio динамическая компоновка

Время на прочтение2 мин
Охват и читатели74K

Следующая тема

В этой статье объясняется, как настроить ваши проекты SFML с динамической компоновкой, если Вы используете интегрированную среду разработки программного обеспечения Visual Studio (компилятор Visual Studio С++).

Читать далее

Обратные вызовы и исключения С++

Время на прочтение7 мин
Охват и читатели8.4K

Введение


Как известно, многие С-библиотеки используют обратные вызовы для обеспечения какого-либо функционала. Так поступает, например, библиотека expat для реализации SAX модели. Обратный вызов или callback используется для возможности выполнить пользовательский код на стороне библиотеки. Пока такой код не несет побочных эффектов — все нормально, но как только на арене появляется С++, все, как всегда, становится нетривиальным.

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

Книга: «Создаем игры и изучаем C++»

Время на прочтение9 мин
Охват и читатели12K

Привет, Хаброжители! Мечтаете создавать игры, но не знаете, с чего начать? Книга «Создаем игры и изучаем C++» станет вашим проводником в мире игровой разработки!

Это издание было адаптировано под Visual Studio 2022, C++20 и библиотеку SFML, оно предлагает уникальный подход: вы не только освоите язык C++ с нуля, но и примените знания на практике, создав четыре игры в разных жанрах.

Вы начнете с изучения основ программирования, познакомитесь с ключевыми темами C++: объектно-ориентированное программирование (ООП), указатели и стандартная библиотека шаблонов (STL). Разберетесь с методами обнаружения коллизий и столкновений в игровой физике на примере игры Pong. Создавая игры, вы познакомитесь с массивами вершин, направленным звуком, шейдерами OpenGL, порождением объектов и многим другим. Вы погрузитесь в игровую механику и реализуете обработку ввода, повышение уровня персонажа и даже «вражеский» ИИ. Наконец, вы изучите паттерны проектирования игр, чтобы усовершенствовать навыки программирования на C++.

К концу книги вы сможете разрабатывать собственные игры, публиковать их и удивлять аудиторию.

Читать далее

Информация

В рейтинге
1 954-й
Откуда
Иркутск, Иркутская обл., Россия
Дата рождения
Зарегистрирован
Активность

Специализация

Software Engineer, ML разработчик
Средний
C++
Python
TensorFlow
PyTorch
Cmake
Linux
Deep Learning
Cuda
Computer Science
Keras