Pull to refresh
2
0.1
Сергей @gres_84

C++ Developer

Send message

Во что вам обойдется конкурентная обработка. Иерархия проблем

Reading time47 min
Views5.9K

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

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

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

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

Читать далее
Total votes 22: ↑20 and ↓2+26
Comments5

Пишем обобщённую хеш-таблицу с открытой адресацией на чистом C

Reading time28 min
Views19K

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

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

К разработке этой библиотеки и написанию статьи меня натолкнуло отсутствие незаброшенной библиотеки эффективных хеш-таблицы для C.

Читать далее
Total votes 24: ↑20 and ↓4+22
Comments38

Знакомство с межпроцессным взаимодействием на Linux

Reading time11 min
Views210K
Межпроцессное взаимодействие (Inter-process communication (IPC)) — это набор методов для обмена данными между потоками процессов. Процессы могут быть запущены как на одном и том же компьютере, так и на разных, соединенных сетью. IPC бывают нескольких типов: «сигнал», «сокет», «семафор», «файл», «сообщение»…

В данной статье я хочу рассмотреть всего 3 типа IPC:
  1. именованный канал
  2. разделенная память
  3. семафор
Отступление: данная статья является учебной и расчитана на людей, только еще вступающих на путь системного программирования. Ее главный замысел — познакомиться с различными способами взаимодействия между процессами на POSIX-совместимой ОС.
Читать дальше →
Total votes 79: ↑78 and ↓1+77
Comments22

Bash-скрипты, часть 2: циклы

Reading time8 min
Views730K
Bash-скрипты: начало
Bash-скрипты, часть 2: циклы
Bash-скрипты, часть 3: параметры и ключи командной строки
Bash-скрипты, часть 4: ввод и вывод
Bash-скрипты, часть 5: сигналы, фоновые задачи, управление сценариями
Bash-скрипты, часть 6: функции и разработка библиотек
Bash-скрипты, часть 7: sed и обработка текстов
Bash-скрипты, часть 8: язык обработки данных awk
Bash-скрипты, часть 9: регулярные выражения
Bash-скрипты, часть 10: практические примеры
Bash-скрипты, часть 11: expect и автоматизация интерактивных утилит

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

image

Внимание: в посте спрятана выгода!
Читать дальше →
Total votes 59: ↑41 and ↓18+23
Comments35

Как войти в IT?

Reading time8 min
Views120K

Цель статьи помочь желающим войти в IT, либо показать, что оно им не нужно.

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

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

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

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

Читать далее
Total votes 46: ↑35 and ↓11+35
Comments149

Как ИТ-специалисту развить навыки коммуникации. 20+ полезных материалов

Reading time10 min
Views24K


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

Конечно, можно не выступать вообще, тогда проблема будет «решена». Но если вы хотите повышать авторитет в команде, убедительно доказывать свою точку зрения и продвигать собственные идеи, придется прокачивать коммуникативные навыки, в которые по многим типологиям входит в том числе и презентационное мастерство. В этой статье максимально конкретно рассмотрим, как это сделать.
Читать дальше →
Total votes 18: ↑17 and ↓1+18
Comments3

Играйте в хакера безопасно: 20+ игр, чтобы почувствовать себя хацкером и не призвать ФСБ

Reading time9 min
Views50K
Пока кто-то играл в «REvil», кто-то играл в безобидные «симуляторы хакерства». Хакер — очень популярный сеттинг в играх. Во многих играх, к примеру, Watch Dogs 2, System Shock 2, Deus Ex: Human Revolution, Cyberpunk 2077, есть тематика хакерства. Но эти игры дают искаженное представление: кто загадочный и что-то тыкает в компьютере, тот и хакер.



Ниже моя подборка с разными играми про хакерство, я разделяю их на:

  • те, которые реально прокачивают какие-то скиллы в сфере информационной безопасности, включают какой-то образовательный контент для начинающих (5 игр);
  • те, которые симулируют атмосферу хакерства и какие-то процессы в упрощенном виде (9 игр);
  • те, которые просто симулируют атмосферу хакерства и загадочности (5 игр);
  • фан на тему около хакерства (3 игры).


Еще я веду канал в Telegram: GameDEVils, делюсь там клевыми материалами (про геймдизайн, разработку и историю игр).
Читать дальше →
Total votes 30: ↑23 and ↓7+24
Comments26
12 ...
8

Information

Rating
3,623-rd
Location
Москва, Москва и Московская обл., Россия
Date of birth
Registered
Activity