Pull to refresh
0
0
Cadaver @Cadaver

User

Send message

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

Reading time22 min
Views94K

Как только я заинтересовался lock-free алгоритмами, меня стал мучить вопрос – а откуда взялась необходимость в барьерах памяти, в «наведении порядка» в коде?
Конечно, прочитав несколько тысяч страниц руководств по конкретной архитектуре, мы найдем ответ. Но этот ответ будет годен для этой конкретной архитектуры. Есть ли общий? В конце концов, мы же хотим, чтобы наш код был портабелен. Да и модель памяти C++11 не заточена под конкретный процессор.
Наиболее приемлемый общий ответ дал мне мистер Paul McKenney в своей статье 2010 года Memory Barriers: a Hardware View of Software Hackers. Ценность его статьи – в общности: он построил некоторую упрощенную абстрактную архитектуру, на примере которой и разбирает, что такое барьер памяти и зачем он был введен.
Вообще, Paul McKenney – известная личность. Он является разработчиком и активным пропагандистом технологии RCU, которая активно используется в ядре Linux, а также реализована в последней версии libcds в качестве ещё одного подхода к безопасному освобождению памяти (вообще, о RCU я хотел бы рассказать отдельно). Также принимал участие в работе над моделью памяти C++11.
Статья большая, я даю перевод только первой половины. Я позволил себе добавить некоторые комментарии, [которые выделены в тексте так].
Передаю слово Полу
Total votes 123: ↑117 and ↓6+111
Comments19

Недопонимание про async/await и многопоточность в C#

Reading time4 min
Views80K
Привет, Хабр! Тема async/await в .NET Framework и C# 5.0 не нова и объезженна: все давно знают, что это, как оно работает, все знакомы с тем скромным фактом, что это очень текучая абстракция и поведение зависит от SynchronizationContext. Об этом очень много писали на хабре, ещё чаще этот вопрос размусоливался в блогах различных респектабельных персон .NET-сообщества.

Тем не менее, мне очень часто приходится сталкиваться с тем, что не только новички, но и матёрые тимлиды не совсем понимают, как правильно пользоваться этим инструментом в разработке.
Читать дальше →
Total votes 27: ↑24 and ↓3+21
Comments16

Монада Maybe на стероидах

Reading time4 min
Views22K
Про монады на Хабре было уже столько много публикаций, что, мне кажется, не хватает еще одной.

Я не буду расписывать, что такое монада, я просто покажу одну забавную реализацию монады Maybe (мы же в хабе «Ненормальное программирование»?).
Читать дальше →
Total votes 18: ↑18 and ↓0+18
Comments11

Еще раз про IP-адреса, маски подсетей и вообще

Reading time7 min
Views1.5M
Чуточку ликбеза. Навеяно предшествующими копипастами разной чепухи на данную тему. Уж простите, носинг персонал.

IP-адрес (v4) состоит из 32-бит. Любой уважающий себя админ, да и вообще айтишник (про сетевых инженеров молчу) должен уметь, будучи разбуженным среди ночи или находясь в состоянии сильного алкогольного опьянения, правильно отвечать на вопрос «из скольки бит состоит IP-адрес». Желательно вообще-то и про IPv6 тоже: 128 бит.

Обстоятельство первое. Всего теоретически IPv4-адресов может быть:
232 = 210*210*210*22 = 1024*1024*1024*4 ≈ 1000*1000*1000*4 = 4 млрд.
Ниже мы увидим, что довольно много из них «съедается» под всякую фигню.


Записывают IPv4-адрес, думаю, все знают, как. Четыре октета (то же, что байта, но если вы хотите блеснуть, то говорите «октет» — сразу сойдете за своего) в десятичном представлении без начальных нулей, разделенные точками: «192.168.11.10».

В заголовке IP-пакета есть поля source IP и destination IP: адреса источника (кто посылает) и назначения (кому). Как на почтовом конверте. Внутри пакетов у IP-адресов нет никаких масок. Разделителей между октетами тоже нет. Просто 32-бита на адрес назначения и еще 32 на адрес источника.
Читать дальше →
Total votes 286: ↑261 and ↓25+236
Comments204

Горячие клавиши Unreal Engine, которые сделают жизнь левел-дизайнера проще

Reading time6 min
Views62K
Горячие клавиши используют все. Банальные Ctrl+C и Ctrl+V, а сколько раз выручал Ctrl+Z? Ну а Alt+F4? А если вспомнить количество негативных отзывов, когда в новых MacBook Pro добавили тачбар и вырезали ряд командных клавиш?

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


Читать дальше →
Total votes 35: ↑35 and ↓0+35
Comments0

Разбор перформансных задач с JBreak (часть 1)

Reading time35 min
Views12K
Первая часть — разбор самой холиварной задачи из четырёх:

    void forEach(List<Integer> values, PrintStream ps) {
        values.forEach(ps::println);
    }

    void forEach(List<Integer> values, PrintStream ps) {
        values.stream().forEach(ps::println);
    }

    void forEach(List<Integer> values, PrintStream ps) {
        values.parallelStream().forEach(ps::println);
    }

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

Другие публикации серии: Часть 2, Часть 3, Часть 4.
Читать дальше →
Total votes 26: ↑25 and ↓1+24
Comments10

10 основных ошибок при разработке на Node.js

Reading time9 min
Views72K


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

Но, как и любая платформа, Node.js не застрахован от ошибок самих разработчиков. В одних случаях падает производительность, в других — система становится практически непригодной к использованию. И в этом посте я хотел бы рассмотреть 10 наиболее частых ошибок, которые делают разработчики с недостаточным опытом работы с Node.js.
Читать дальше →
Total votes 85: ↑74 and ↓11+63
Comments45

Сахарные инжекции в C#

Reading time5 min
Views42K
C# — продуманный и развитый язык программирования, в котором предусмотрено немало синтаксического сахара, упрощающего написание рутинного кода. Но всё-таки существует ряд сценариев, где нужно проявить некоторую смекалку и изобретательность, чтобы сохранить стройность и красоту.

В статье мы рассмотрим некоторые такие случаи, как широкоизвестные, так и не очень.

Читать дальше →
Total votes 36: ↑29 and ↓7+22
Comments96

Как купить акции IT-компаний на зарубежных биржах? (часть 2)

Reading time18 min
Views136K
Stock Investing for Dummies (theory)В первой части этой статьи мы рассмотрели теоретические основы торговли акциями на американских фондовых рынках (NASDAQ, NYSE, AMEX). Ознакомились с основными понятиями, определениями и принципами. Если во второй части что-то будет непонятно, то, возможно, вы не слишком внимательно ознакомились с первой частью. Всегда можете вернуться туда и что-то уточнить.

Во второй части я хотел сформулировать и изложить пошаговое практическое руководство, т.е. некий HowTo о том, как купить какие-то конкретные акции на бирже NASDAQ или NYSE. Допустим, вы захотели купить акции какой-то конкретной компании, например, Google, Apple, Microsoft, Yandex, Intel или Tesla Motors с целью инвестиций (в расчёте на рост стоимости этих акций в будущем).

Что для этого нужно, и с чего вообще начать?
Читать дальше →
Total votes 34: ↑33 and ↓1+32
Comments20

Как купить акции IT-компаний на зарубежных биржах? (часть 1)

Reading time45 min
Views265K
Stock Investing for Dummies (theory)Многие из вас, читая на Хабре статьи об успешных IT-фирмах и быстро развивающихся высокотехнологичных компаниях, наверняка, задумывались о том, чтобы инвестировать свои деньги в их акции с целью получения прибыли, когда через несколько месяцев или даже лет рыночная стоимость этих акций заметно вырастет.

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

Но в итоге я всё же сделал усилие над собой: сначала немного вник в азы торговли акциями, а потом наконец решился и начал торговать акциями на фондовых рынках США (NYSE, NASDAQ, AMEX). И, самое главное, я понял, что купить акции — это не так уж и сложно, как казалось раньше, и даже не так затратно (в плане накладных расходов), как я предполагал. И в этой статье я хочу поделиться исключительно своим опытом в данной области в виде общих теоретических сведений и практического руководства (HOWTO) для новичков.

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

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

Разделил статью на две части:
  1. В первой части рассмотрим теоретические основы торговли акциями.
  2. Во второй части будет практическое руководство для новичков по покупке и продаже акций.
Кто заинтересовался, добро пожаловать под кат.
Total votes 42: ↑41 and ↓1+40
Comments59

Cимвол з̶а̶ч̶е̶р̶к̶и̶в̶а̶н̶и̶я

Reading time1 min
Views6.7K
Недавно нашел интересный символ, который позволяет делать зачеркнутый текст практически в любом месте. Без использования тегов.
В̶о̶т̶ ̶п̶р̶и̶м̶е̶р̶ ̶т̶а̶к̶о̶г̶о̶ ̶и̶с̶п̶о̶л̶ь̶з̶о̶в̶а̶н̶и̶я.

Подумал что хабрапользователям бывает трудно на некоторых сайтах, где нельзя использовать коды, вот и решил предложить альтернативный вариант =)
Сам символ просто так не получается вставить, зато можно его вытащить из примера.
Вставлять его нужно после каждой буквы, кроме последней.
Total votes 133: ↑95 and ↓38+57
Comments150

Удобный интерфейс Need for Speed World Online

Reading time1 min
Views882
Видимо, популярным становится создание MMOG без ежемесячной оплаты и свободных для скачивания. На такой тотальной бесплатности разработчики небезосновательно пытаются повысить к игре интерес и увеличить количество пользователей, а для заработка используют назойливую внутриигровую рекламу и микротранзакции. Сходу могу вспомнить еще не вышедший Battlefield Heroes (релиз предположительно в середине года) и недавно анонсированный Need for Speed World Online.

Ну это так, не по теме. Теперь новость: в отличие от традиционной консольной реализации интерфейсов гоночных симуляторов, у PC-версии NFS World Online наличествует специальный настраиваемый интерфейс: весь экран построен из удобных виджетов, которые можно удалять и перемещать в любое удобное для игрока место, даже за пределы основного экрана. Пример на скриншоте ниже:
Читать дальше →
Total votes 79: ↑72 and ↓7+65
Comments36

Легенда о восстановлении Unix

Reading time5 min
Views1.4K
Сейчас много мыслей о том, что ждёт нас в будущем, в 2009 году, да и после. Но почему бы на мгновение не вернутсья в прошлое и не восхититься тем, как хардкорные юниксоиды того времени выкручивались, восстанавливая систему?

Это — перевод статьи Mario Wolczko, опубликованной в Usenet в 1986.

Читать дальше →
Total votes 119: ↑112 and ↓7+105
Comments102

Uinux: фреймовые оконные менеджеры

Reading time4 min
Views3.6K
Сегодня хочу предложить повосхищаться такой темой, как фреймовые
оконные менеджеры. Фреймовые они потому, что распологают окна, если
их несколько так, чтобы они не перекрывались, а кроме того занимали
максимально полезную площадь рабочего стола.

Читать дальше →
Total votes 38: ↑36 and ↓2+34
Comments24

Скан-код: Ремаппинг клавиш на клавиатуре

Reading time3 min
Views107K

Предыстория


Всю свою жизнь был фанатом бесшумных, тонких, и красивых клавиатур и к моему удивлению обнаружил что таковых не так уж и много, из доступных в свободной продаже, — их единицы. Пришлось пользоваться «Genius SlimStar Pro», и все равно она меня угнетала, как и мысль о том, что я никогда не найду клавиатуру которая бы удовлетворяла меня на все 100%. Я такую нашел и по рекомендации товарища Boomburum, приобрел "Illuminated Keyboard", которая стала достойной подругой моей "MX Revolution", и я окончательно порвал отношения с Genius, а последние рассказы о поддержке пользователей со стороны Logitech, убедили меня, что вложенные (не малые деньги) себя оправдают за 3 гарантийных года.
image
Но есть небольшая беда в клавиатурах этой компании, — "Не стандартные, не удобные, или не нужные расположения некоторых кнопок". В случае с Illuminated, это две одинаковые кнопки "\", левая из которых пошла в ущерб клавише «LShift», Кстати на картинке вы можете заметить что раньше эти клавиатуры имели стандартный размер «LShift». Под катом, я расскажу как вернуть «стандартную длину» этой кнопки, так как в слепой печати и в силу привычки, я нажимаю именно / вместо шифта. А заодно расскажу как без дополнительного установленного ПО, на примере, вы сможете менять назначения любых клавиш ваших клавиатур (в том числе и функциональных/медийных) при помощи Реестра и Скан-кода клавиш.
Читать дальше →
Total votes 85: ↑71 and ↓14+57
Comments81

Работа для программиста в США: 5 простых шагов

Reading time5 min
Views291K
image Статья про то, что делать тем, кто хочет переехать работать в США. Я предполагаю инженерные позиции, на которые проще всего получить визы, но, возможно, статья окажется полезна и другим специалистам.

Мой опыт несколько отличается от нижеописанного (я попала на работу в США после стажировки). Но за 4 года в США пообщалась с людьми, которые попали сюда разными путями и набрала кое-какой опыт. Так что если бы я очень хотела найти работу в США сегодня, то я бы действовала примерно так, как описано ниже.

Заранее извиняюсь, если мой тон кому-то покажется наставническим — я не имею амбиций учить других жизни, просто иногда у меня получается такой стиль.
Читать дальше →
Total votes 166: ↑152 and ↓14+138
Comments138

Оригинальные идеи в геймплее

Reading time2 min
Views2.8K
Тем временем, как большинство более-менее крупных компаний делают однообразные игры, независимые разработчики ищут, придумывают, пробуют новые возможности.
Под катом небольшая подборка игр, в которых есть свежие идеи.
14 видео и несколько ссылок
Total votes 85: ↑79 and ↓6+73
Comments66

Super Mario на разных инструментах

Reading time1 min
Views860
Любимая многими мелодия Супер Марио многим до сих пор не дает покоя. Находятся народные умельцы, снова и снова исполняющие мелодию на множестве разнообразных инструментов, причем не всегда стандартных. Вашему вниманию — подборка видео таких «выступлений». Приятного просмотра :)

Читать дальше →
Total votes 80: ↑54 and ↓26+28
Comments26

50 действительно хороших инди игр

Reading time1 min
Views30K
Некоторое время назад здесь находился замечательный пост-перевод о 50 инди-играх, в которые действительно стоит сыграть. В настоящий момент он устарел, но ему на замену пришёл целый цикл постов об инди-играх — «Великолепная подборка инди-игр»:

Читать дальше →
Total votes 95: ↑90 and ↓5+85
Comments121

XP vs Vista: что быстрее на топовом железе?

Reading time1 min
Views1.6K
Сегодня проскочил занимательный топик, в комментариях к которому появлялись утверждения, что на топовых конфигурациях Vista работает быстрее XP.
Пару месяцев назад я задавался тем же вопросом — быстрее ли? Был проведён эксперимент, сравнивались XP с последними на тот момент обновлениями, и Vista с только что вышедшим SP1.
Конфигурация, на которой это всё работало: Gygabyte P35-DS3P/Intel Core2 Quad Q6600@3000/4Gb DDR2 800/2xST3500630AS/GF 8600GT. Драйвера на момент тестирования также были самые свежие.
Тест публиковался в моём ЖЖ, так вышло, что он разбит на три с половиной части:
Часть первая: тесты одно- и многопоточных приложений.
Часть вторая: скорость копирования.
Часть третья: синтетический бенчмарк, влияние Aero на производительность.
Часть третья с половиной. Работа с flash-накопителем.
Результаты получились неожиданные, если не сказать — слегка шокирующие. Их реальность, по возможности, проиллюстрирована.
Если кратко — в приложениях, производящих вычисления, Vista показала худшие результаты. Где-то — в пределах погрешности измерения, где-то — на вполне ощутимый процент. Но работа с данными в Vista проходила быстрее, и быстрее настолько, что меня это порядком удивило. Видимо, Vista эффективнее использует память… впрочем, интересно ознакомиться и с другими мнениями.
Total votes 49: ↑41 and ↓8+33
Comments84

Information

Rating
Does not participate
Location
Россия
Date of birth
Registered
Activity