Обновить
59
0
Vladislav Khorev@Mephi1984

Developer

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

Lock-free структуры данных. Основы: Атомарность и атомарные примитивы

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

Построение lock-free структур данных зиждется на двух китах – атомарных операциях и способах упорядочения доступа к памяти. В этой статье речь пойдет об атомарности и атомарных примитивах.

Анонс. Спасибо за теплый прием Начал! Вижу, что тема lock-free интересна хабрасообществу, это меня радует. Я планировал построить цикл по академическому принципу, плавно переходя от основ к алгоритмам, попутно иллюстрируя текст кодом из libcds. Но часть читателей требует зрелищ не мешкая показать, как пользоваться библиотекой, особо не рассусоливая. Я согласен, в этом есть свой резон. В конечном счете, и мне не так интересно, что там внутри boost, — опишите, как его применять! Поэтому свой эпический цикл я разделю на три части: Основы, Внутри и Извне. Каждая статья эпопеи будет относится к одной из частей. В Основах будет рассказываться о низкоуровневых вещах, вплоть до строения современных процессоров; это часть для почемучек вроде меня. Внутри будет освещать интересные алгоритмы и подходы в мире lock-free, — это скорее теория о том, как реализовать lock-free структуру данных, libcds будет неисчерпаемым источником C++ кода. В Извне будут статьи о практике применения libcds, — программные решения, советы и FAQ. Извне будет питаться вашими вопросами/замечаниями/предложениями, дорогие хабражители.

А пока я судорожно готовлю начало Извне, — первая часть Основ. Статья во многом не о C++ (хотя и о нем тоже) и даже не о lock-free (хотя без atomic lock-free алгоритмы неработоспособны), а о реализации атомарных примитивов в современных процессорах и о базовых проблемах, возникающих при использовании таких примитивов.
Атомарность — это первый круг ада низкий уровень из двух.
Читать дальше →

Почему Starlink от Маска — это скам

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


В тоннелях Boring Company, построенных, чтобы не было пробок, теперь пробки. Cybertruck не поедет до 2023 года Но все это мелкие проблемы по сравнению с тем, чем обещает стать Starlink. Это главный проект Илона Маска, который должен спонсировать SpaceX, и собрать достаточно денег, чтобы обеспечить полет на Марс. Но он может стать и самой большой ошибкой.


1500 спутников уже запущены и работают, 145 000 пользователей в США и Канаде уже довольны своим интернетом. Тем не менее верить в успех этого проекта, скорее всего, преждевременно. И даже более того: возможно, нам будет лучше, чтобы это будущее никогда не наступило.


Осторожно, в тексте много цифр. И, если вы продолжаете верить в Starlink, он может вас сильно разочаровать.

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

Ещё один пример генеративных изображений

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

Все любят генеративное искусство и всё что с ним связано (вот оно слева направо, в конце есть прикольные ссылочки).

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

Читать далее

Анатомия асинхронных фреймворков в С++ и других языках

Время на прочтение20 мин
Охват и читатели50K
Привет! В этой статье я расскажу об устройстве асинхронных движков с корутинами и без них. Для начала сосредоточимся не на конкретном движке, а на том, почему во всех популярных языках программирования появились корутины и чем они так хороши. Это может быть интересно не только C++-разработчикам, но и всем, кто занимается разработкой сетевых приложений или интересуется архитектурой современных фреймворков.

Пройдёмся по разным архитектурам построения серверов — от самой простой синхронной к более интересным, посмотрим на типичную архитектуру корутинового движка, а после окунёмся в дебри C++ и взглянем на самое страшное на примере нашего фреймворка userver.

Пишем синхронный сервер


Представьте, что у вашего сервиса очень маленькая нагрузка — 100 rps, и вам дали задачу написать простой сервер, понятный каждому второму школьнику. У вас получится что-то наподобие следующего:

void naive_accept() {
  for (;;) {
    auto new_socket = accept(listener);

    std::thread thrd([socket = std::move(new_socket)] {
      auto data = socket.receive();
      process(data);
      socket.send(data);
    });

    thrd.detach();
  }
}
Читать дальше →

Бесплатный левел-дизайн, или как строить ландшафт в реальном времени на UE4

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

Всем привет! Меня зовут Влад Маркелов, и сегодня я расскажу, как можно бесплатно и быстро создавать огромные игровые уровни и как в реальном времени строить ландшафт по информации из Интернета.

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

Читать далее

Географический Арбитраж: лучшие страны для удалённой работы + мой топ локаций

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

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

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

В конце статьи делюсь своим личный рейтингом городов для релокации!

Завести трактор!

[Личный опыт] Почему Латвия — неплохой старт для переезда в Европу, но оставаться здесь не стоит

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

Латвия определенно не находится в топе стран для релокейта: зарплаты и условия жизни тут не конкурируют с немецкими, нидерландскими или испанскими. Но вакансий в IT здесь немало, в том числе для русскоязычных специалистов, у которых пока мало опыта. Мы поговорили с frontend-разработчиком, который два года назад перебрался в столицу Латвии, Ригу. Он расскажет, откуда здесь вообще спрос на IT-инженеров, как в стране живется и стоит ли оставаться тут надолго.

Читать далее

Объяснение фильтра Калмана в картинках

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

Я обязан рассказать вам о фильтре Калмана, потому что он выполняет просто потрясающую задачу.

Как ни удивительно, о нём, похоже, знают немногие разработчики ПО и учёные, и это печалит меня, потому что это очень обобщённый и мощный инструмент для объединения информации в условиях присутствия неопределённости. Иногда его способность извлечения точной информации кажется почти магической, а если вы думаете, что я слишком много болтаю, то взгляните на это видео, в котором я показываю, как фильтр Калмана определяет ориентацию свободно плавающего тела, посмотрев на его вектор скорости. Потрясающе!
Читать дальше →

В продаже появился Linux-телефон PinePhone Pro: что он умеет?

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

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

Исключения есть, хотя и мало. Но даже среди исключений особняком стоит телефон, который называется PinePhone Pro. Это своего рода усиленная версия Linux-смартфона PinePhone, который можно назвать «PinePhone на стероидах». О его возможностях и характеристиках — ниже. Единственное, что еще стоит добавить — новая модель также может использоваться в качестве рабочей станции, то есть десктопа.
Читать дальше →

Дорожная карта по изучению C++

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

Привет!

Представляем вашему вниманию дорожную карту для изучения языка программирования C++. Идея дорожной карты возникла после проведения десятков собеседований молодых разработчиков, которые претендовали на роль Junior Developer C++, но обладали довольно слабой подготовкой по различным причинам.

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

Читать далее

Воссоздаем Minecraft-подобную генерацию мира на Python

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

Minecraft, самая продаваемая игра в мире, наиболее известная своими пикселизированными блоками и бесконечными мирами, содержит потрясающий процедурный генератор ландшафта — с пещерами, водоёмами, и даже различными биомами.

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

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

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

Прим. переводчика. Осторожно, в статье много иллюстраций (в том числе анимированных)

Читать далее

Модные видео гличи на C++

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

В этой статье рассказывается о способах создания видео фильтров на C++ для разных программ, а так же тут рекламируется моя опенсорс программа SEZE II с интересными эффектами на подобии пиксельной сортировки, эмулятора аналогового ТВ, случайного 3-битного дизеринга и прочим

Читать далее

Способ передачи информации по сильно зашумленному каналу связи

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

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

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

Читать далее

Кто реализовал обмен данными по WebRTC с помощью звука

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

Всем знаком тот шипящий и скрипящий звук, которым обменивались модемы dial-up во время коннекта. Сегодня эти устройства до сих пор используют в удаленных регионах планеты, однако идея подключения с помощью звука находит разве что нишевые применения. Одно из них — установка соединения по WebRTC.

Читать далее

Делаем OpenVPN клиент для iOS

Время на прочтение5 мин
Охват и читатели20K
Привет всем!
Давайте рассмотрим как создать собственное приложение, поддерживающее OpenVPN-протокол. Для тех, кто об этом слышит впервые ссылки на обзорные материалы, помимо Википедии, приведены ниже.

С чего начать?


Начнем с фреймворка OpenVPNAdapter — написан на Objective-C, ставится с помощью Pods, Carthage, SPM. Минимальная поддерживаемая версия ОС — 9.0.
После установки необходимо будет добавить Network Extensions для таргета основного приложения, в данном случае нам понадобится пока Packet tunnel опция.

image

Network Extension


Затем добавляем новый таргет — Network Extension.
Сгенерированный после этого класс PacketTunnelProvider приведем к следующему виду:
Читать дальше →

Как поживает PHP сообщество в Дагестане?

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

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

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

Сборка Open Source GTA VC и GTA III в Linux

Время на прочтение4 мин
Охват и читатели35K
image

Скорее всего нет тут такого человека, который бы не играл в GTA (или хотя бы не слышал о ней). Первая 3D версия серии вышла около 20 лет назад. Это была GTA III. Через год вышла GTA: Vice City. Несмотря на это, в эти игры до сих пор не только играют, но и создают моды. Эти игры портированы на множество платформ, но к сожалению, Linux (до недавнего времени) обошли стороной. Единственный вариант поиграть в Linux — был wine. Но недавно все изменилось.
Читать дальше →

Мой первый экзистенциальный кризис случился из-за игры The Sims

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

Богатство и известность не делают людей счастливыми. Девочки, мечтавшие в детстве стать звездами, превращаются в старлеток, не выходящих из глубокой депрессии, или умирают от передозировки наркотиков. Богатые пары, обустроившие семейное гнездышко в собственном особняке на берегу океана, расходятся после нескольких лет непрекращающихся ссор. Американский рэпер Канье Уэст в остром маниакальном состоянии мочится на свою статуэтку «Грэмми»…

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

Обо всём этом я узнала из игры The Sims.

Читать далее

Как прийти в небо и стать пилотом

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


Привет! Сегодня я расскажу о том, как можно прийти в небо, что нужно для этого сделать, сколько оно все стоит. Также поделюсь своим опытом обучения на частного пилота в Великобритании и развею некоторые мифы, связанные с авиацией. Под катом много текста и фоточек :)

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

Процедурная генерация деревьев методом транспорта питательных веществ

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

Примечание: код для этой статьи выложен на мой Github [здесь].

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

Когда любая ветвь дерева разделяется, сумма площадей поперечного сечения сохраняется.

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

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

При помощи этой методики можно генерировать высококачественные меши деревьев на разных этапах роста в реальном времени и с незначительной тратой вычислительных ресурсов!

Информация

В рейтинге
Не участвует
Откуда
Бишкек, Кыргызстан, Кыргызстан
Дата рождения
Зарегистрирован
Активность

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

Фулстек разработчик, Разработчик игр
Ведущий
От 550 000 ₽