Search
Write a publication
Pull to refresh
11
0
Pavel Kovalenko @nitrocaster

Software Engineer

Send message

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

Reading time18 min
Views103K

В предыдущей статье мы заглянули внутрь процессора, пусть и гипотетического. Мы выяснили, что для корректного выполнения параллельного кода процессору необходимо подсказывать, до каких пределов ему разрешено проводить свои внутренние оптимизации чтения/записи. Эти подсказки – барьеры памяти. Барьеры памяти позволяют в той или иной мере упорядочить обращения к памяти (точнее, кэшу, — процессор взаимодействует с внешним миром только через кэш). “Тяжесть” такого упорядочения может быть разной, — каждая архитектура может предоставлять целый набор барьеров “на выбор”. Используя те или иные барьеры памяти, мы можем построить разные модели памяти — набор гарантий, которые будут выполняться для наших программ.

В этой статье мы рассмотрим модель памяти C++11.
Читать дальше →

Простыми словами о преобразовании Фурье

Level of difficultyMedium
Reading time14 min
Views1.1M
Я полагаю что все в общих чертах знают о существовании такого замечательного математического инструмента как преобразование Фурье. Однако в ВУЗах его почему-то преподают настолько плохо, что понимают как это преобразование работает и как им правильно следует пользоваться сравнительно немного людей. Между тем математика данного преобразования на удивление красива, проста и изящна. Я предлагаю всем желающим узнать немного больше о преобразовании Фурье и близкой ему теме того как аналоговые сигналы удается эффективно превращать для вычислительной обработки в цифровые.

image (с) xkcd

Без использования сложных формул и матлаба я постараюсь ответить на следующие вопросы:
  • FT, DTF, DTFT — в чем отличия и как совершенно разные казалось бы формулы дают столь концептуально похожие результаты?
  • Как правильно интерпретировать результаты быстрого преобразования Фурье (FFT)
  • Что делать если дан сигнал из 179 сэмплов а БПФ требует на вход последовательность по длине равную степени двойки
  • Почему при попытке получить с помощью Фурье спектр синусоиды вместо ожидаемой одиночной “палки” на графике вылезает странная загогулина и что с этим можно сделать
  • Зачем перед АЦП и после ЦАП ставят аналоговые фильтры
  • Можно ли оцифровать АЦП сигнал с частотой выше половины частоты дискретизации (школьный ответ неверен, правильный ответ — можно)
  • Как по цифровой последовательности восстанавливают исходный сигнал


Я буду исходить из предположения что читатель понимает что такое интеграл, комплексное число (а так же его модуль и аргумент), свертка функций, плюс хотя бы “на пальцах” представляет себе что такое дельта-функция Дирака. Не знаете — не беда, прочитайте вышеприведенные ссылки. Под “произведением функций” в данном тексте я везде буду понимать “поточечное умножение”

Итак, приступим?

Lock-free структуры данных. 1 — Начало

Reading time12 min
Views153K

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

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

Автоматическая очистка старых драйверов, или выжмем немного места из Windows 7

Reading time6 min
Views233K
В один прекрасный (или печальный, кому как) день мне надоело, что у меня периодически заканчивается место на ноутбуке. Да, я в курсе, что жёсткие диски сейчас дешевы, но это для меня не выход, потому что:
  • У меня SSD, а он всё-таки подороже будет, чем обычные HDD (объём моего текущего SSD — 120 гигов)
  • Ноутбук рабочий, соответственно данные на нём тоже, должны быть шифрованы, всё такое, поэтому самопальный и не утверждённое работодателем носитель втыкать не стоит
  • Я жадный :)

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

Доступны исходные коды двух версий КОИБов

Reading time1 min
Views63K
Евгений Федин раскопал где-то на ГосЗакупках техническое задание и автодокументацию на КОИБы (архив «КОИБ 500 шт»...).

КОИБы или комплексы обработки избирательных бюллетеней используются на некоторых избирательных участках России для автоматизации процесса подсчёта голосов на выборах и референдумах.
Читать дальше →

Need For Speed 3 + Cryengine 3 = Cry For Speed

Reading time3 min
Views119K
image
Что это?
Это ремейк классического Need For Speed 3 на движке Cryengine 3.
Для начала планируем перенести все трассы и авто из третьей части в этот движок. Если интерес будет и к нам присоединятся еще добровольцы — мы реализуем все первые четыре части NFS на этом заманчивом движке (кстати модное стерео 3D тут уже есть прямо из коробки).
Читать дальше →

Хабраобзор Highscreen Boost – пять дней без розетки (осторожно — женский взгляд!)

Reading time5 min
Views45K
Cегодня у нас будет строгий женский взгляд :)


Да, неделю назад уже вышел обзор Highscreen Boost товарища tozx Однако мир и прекрасен тем, что есть множество точек зрения и все они имеют место быть. Тем более, что взгляды парней и девушек отличаются ;-) Поэтому хочу поделиться своим женским взглядом на «кирпичик» Highscreen Boost.

Мой первый взгляд на этот смартфон был полон недоумения. Это ведь странно: при моде на большие, тонкие, легкие телефоны выпускать большой, толстый (14,2 мм) и тяжелый (185 г). Это ж целый кирпич, как древняя Nokia 9300! Но с каждым новым взглядом градус недоумения снижался, а удивление нарастало.

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

Чёрный список 2.0, теперь с уголовными наказаниями

Reading time5 min
Views102K
Великий китайский файрвол — сидит 10 миллионов китайцев и фильтруют пакеты.
Великий русский файрвол — сидит 10 миллионов русских.
Именно эту мрачную шутку, которую огласили на Linux.org.Ru 16 декабря 2010 года, приходится вспомнить нынешнею весною. Из-за длинных праздников в начале мая сообществом Хабрахабра совершенно была проигнорирована статья «Кремль введёт уголовное наказание за "вредоносный" контент в Интернете», появившаяся 29 апреля в «Известиях». Меж тем статья эта, несомненно, заслуживает обсуждения: в ней сообщают, что администрация Президента прямо сейчас деятельно готовится ко внесению в Госдуму пакета поправок в законодательство, так что к существующей возможности блокировки сайтов за пропаганду «экстремизма», «детской порнографии», «наркотиков» и «самоубийств» будут добавлены новые меры — крупные штрафы и лишение свободы (тюремное заключение).

Термины «экстремизм», «детская порнография», «наркотики» и «самоубийства» приходится брать в кавычки. Все мы поневоле стали живыми свидетелями того, как за «наркотики» закрыли сайт про игру EVE Online (где описывалось применение вымышленных химических веществ к вымышленным персонажам), за «самоубийство» — безобидный юмор наподобие статьи из Абсурдопедии или творчества Каганова (а в так называемом реальном мире под предлогом детского самоубийства изымают из продажи мангу «Death Note» в Свердловской области, хотя там вся область названа в честь одного из организаторов убийства детей Императора, но это никого не волнует), за «экстремизм» — национально-таргетированную антиалкогольную пропаганду (№1568 в федеральном Списке экстремистских материалов). Что же касается «детской порнографии» (на самом деле предназначенной для вполне взрослых педофилов), то необходимость борьбы с её потреблением в Интернете (вместо борьбы с её производством в реальном мире, неизбежно связанным с реальным растлением реальных детей, для которого нелицензионные раздачи в Интернете как раз представляют собою прямую экономическую угрозу, лишают финансирования) является не совершенно очевидною — а вопрос, заданный об этом министру, оказался проигнорированным.

Истошные вопли негодования, вызванные закрытием нескольких сайтов по небесспорным основаниям, остались без ответа. Раскрутка маховика репрессий продолжается — теперь закрывать станут не только сайты, но и людей. К чему это приведёт? Думаю, что продолжится преследование вымышленных произведений, подобных вышеперечисленным случаям фантастической «наркомании» и нарисованного «суицида». Об этом можно успешно догадываться не только посредством экстраполяции совершившихся событий, но также и через проведение аналогии с зарубежьем. Старожилы Хабрахабра наверняка припомнят, что последствия произвольного и непубличного пополнения чёрного списка (содержимое которого скрывают от общества под предлогом непропагандирования) я обсуждал на Хабрахабре ещё летом 2009 года на примере Австралии. И сбылось, хотя и не в полном объёме. А теперь о том, как может выглядеть подобный произвол, когда он начинает прибегать к реальным тюремным срокам, предлагаю поглядеть на примере другой страны Южного полушария — Новой Зеландии. Там лишь недавно вышел из тюрьмы (но всё ещё находится под угрозой десяти лет условного срока) гражданин, выложивший в Интернете всего-навсего аниме о половой жизни вымышленных (и лишь частично человекоподобных) персонажей — эльфов и фей, которые благодаря особенностям японской анимации (крупные глаза, крупные головы и проч.) и особенностям японской озвучки (тонкие голоса, яркие эмоции) показались экспертам «похожими на детей».

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

Проверка open-source игры Multi Theft Auto

Reading time9 min
Views42K
MTA & PVS-Studio
Мы давно не проверяли игры с помощью PVS-Studio. Решили это исправить и выбрали проект MTA. Multi Theft Auto (MTA) является модификацией для PC версий игры Grand Theft Auto: San Andreas от Rockstar North. MTA позволяет игрокам со всего мира играть друг против друга в режиме онлайн. Как написано в Wikipedia, особенностью игры является «оптимизированный код с наименьшим количеством сбоев». Что же, давайте посмотрим, что скажет анализатор кода.
Читать дальше →

Десять вещей, которые я терпеть не могу в ООП

Reading time8 min
Views110K
Боже, временами я просто ненавижу объектно-ориентированное программирование.

Наверное, я не один такой. Бессмертные слова Эдсгера Дейкстры гласят:
«Объектно-ориентрованное программирование — это исключительно плохая идея, которую могли придумать только в Калифорнии.”

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

Project Logan: новое поколение графики для мобильных устройств от NVIDIA

Reading time1 min
Views25K


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

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

Диалоги на английском — знакомьтесь, общайтесь и повышайте уровень языка!

Reading time2 min
Views53K


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

С сегодняшнего дня выражения «языковой барьер» больше не существует. У обитателей «Саванны» на LinguaLeo.ru появилась возможность общения в формате диалогов. Вся переписка — исключительно на английском, с интересными собеседниками и только на любимые темы. Уровень языка значения не имеет.

Готовы обсудить последние новости? Тогда вперед!
Читать дальше →

Окрашивание изображений

Reading time2 min
Views57K

Здравствуй, Хабрахабр. Сегодня мы будем раскрашивать.
Что здесь будет? Будет поиск цветного изображения со схожими цветами по черно-белому и метод переноса цвета с первого на второе.
Читать дальше →

Путешествие через вычислительный конвейер процессора

Reading time16 min
Views138K
Так как карьера программиста тесно связана с процессором, неплохо бы знать как он работает.

Что происходит внутри процессора? Сколько времени уходит на исполнение одной инструкции? Что значит, когда новый процессор имеет 12, или 18, или даже 31-уровневый конвейер?

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

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

Эта статья рассказывает, как устроен вычислительный конвейер x86 процессора.
Читать дальше →

Как хвост виляет собакой. Азбука пропаганды

Reading time4 min
Views210K
Чем доступнее информация, тем больше её вокруг. Чем быстрее она распространяется, тем меньше остаётся времени на то, чтобы её проверить. Постепенно информационная среда превращается в некое подобие «белого шума». Всё труднее строить внутри себя новые информационные фильтры, чтобы отсеять лишнее: убрать в сторону лозунги, агитацию, пропаганду, а оставить только то, что на самом деле кроется за ними. А манипулировать нашими мыслями пытаются постоянно, и я говорю не о 25-ом кадре (он не работает), а о более земных вещах — приёмах пропаганды, которые так умело (а зачастую — очень топорно) используют политики, рекламщики и вообще, все, кому не лень. Об этих приёмах и пойдёт речь в статье.

Хвост виляет собакой. ("Wag the dog") — чтобы избежать большого скандала или «замять», оставить незамеченным какое-нибудь важное, но неприятное событие, часто используется простой, но хитрый и ловкий приём, который англоязычные политтехнологи называют «Wag the dog», а русскоязычные — «Хвост виляет собакой». Он заключается в том, чтобы вовремя поднять волну обсуждения вокруг вопроса второстепенной важности, на фоне которой другое, более важное событие или действие пройдёт незаметно.
Примеры таких вопросов: Отмена перехода на зимнее время, российское гражданство Депардье, поездка Путина или Саши Грей на Ладе Калине по России, полёты со стерхами и т.д.
Своё название этот приём получил в честь английского выражения tail wagging the dog, который, в свою очередь, появился из следующего народного пассажа:
— Почему собака виляет хвостом?
— Потому, что собака умнее, чем хвост. Если бы хвост был умнее, он вилял бы собакой.

Ещё 7 приёмов - под катом

А давайте я вам расскажу про градиенты!

Reading time8 min
Views41K

скрин финального результата

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

Зачем?


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

Unbiased DirectX Рендеринг на GPU, CPU и в облаке

Reading time9 min
Views44K
Как создать рендерер, который бы работал даже на компьютере вашей бабушки? Изначально перед нами стояла немного другая задача — создать unbiased рендер для всех моделей GPU: NVidia, ATI, Intel.
Хотя идея такого рендера для всех видеокарт витала в воздухе давно, до качественной реализации, тем более на Direct3D, дело не доходило. В своей работе мы пришли к весьма дикой связке и дальше расскажем, что нас к ней привело и как она работает.

renderbro resource combined
Читать дальше →

Shodan – самый страшный поисковик Интернета

Reading time3 min
Views703K


«Если люди не могут найти что-то в Google, они думают, что это не сможет найти никто. Это не так», – утверждает Джон Мэзерли, создатель Shodan, самого страшного поискового движка Интернета.

В отличие от Google, который ищет в Сети простые сайты, Shodan работает с теневыми каналами Интернета. Это своего рода «черный» Google, позволяющий искать серверы, веб-камеры, принтеры, роутеры и самую разную технику, которая подключена к Интернету и составляет его часть.

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

Элегантные строки

Reading time4 min
Views16K
Представим, что нам нужно что-нибудь сделать со строками в .net. Что-то не очень сложное, но и не совсем простое. Например, для правильного форматирования, расставить пробелы после запятых в тексте. Что же предлагает .net из коробки?
Что-то такое:

string str = "...";
str.Replace(",", ", ");


Постойте, но мы же хотели расставлять пробелы, а не заменять запятые!..
Хорошо, пойдем дальше.

Information

Rating
Does not participate
Location
Yerevan, Армения
Registered
Activity