Как стать автором
Обновить
0
0
Cadaver @Cadaver

Пользователь

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

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

Время на прочтение22 мин
Количество просмотров96K

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

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

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

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

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

Время на прочтение4 мин
Количество просмотров22K
Про монады на Хабре было уже столько много публикаций, что, мне кажется, не хватает еще одной.

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

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

Время на прочтение7 мин
Количество просмотров1.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 на адрес источника.
Читать дальше →
Всего голосов 286: ↑261 и ↓25+236
Комментарии204

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

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

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


Читать дальше →
Всего голосов 35: ↑35 и ↓0+35
Комментарии0

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

Время на прочтение35 мин
Количество просмотров12K
Первая часть — разбор самой холиварной задачи из четырёх:

    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.
Читать дальше →
Всего голосов 26: ↑25 и ↓1+24
Комментарии10

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

Время на прочтение9 мин
Количество просмотров72K


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

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

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

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

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

Читать дальше →
Всего голосов 36: ↑29 и ↓7+22
Комментарии96

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

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

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

Что для этого нужно, и с чего вообще начать?
Читать дальше →
Всего голосов 34: ↑33 и ↓1+32
Комментарии20

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Время на прочтение5 мин
Количество просмотров1.4K
Сейчас много мыслей о том, что ждёт нас в будущем, в 2009 году, да и после. Но почему бы на мгновение не вернутсья в прошлое и не восхититься тем, как хардкорные юниксоиды того времени выкручивались, восстанавливая систему?

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

Читать дальше →
Всего голосов 119: ↑112 и ↓7+105
Комментарии102

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

Время на прочтение4 мин
Количество просмотров3.7K
Сегодня хочу предложить повосхищаться такой темой, как фреймовые
оконные менеджеры. Фреймовые они потому, что распологают окна, если
их несколько так, чтобы они не перекрывались, а кроме того занимали
максимально полезную площадь рабочего стола.

Читать дальше →
Всего голосов 38: ↑36 и ↓2+34
Комментарии24

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

Время на прочтение3 мин
Количество просмотров107K

Предыстория


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

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

Время на прочтение5 мин
Количество просмотров292K
image Статья про то, что делать тем, кто хочет переехать работать в США. Я предполагаю инженерные позиции, на которые проще всего получить визы, но, возможно, статья окажется полезна и другим специалистам.

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

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

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

Время на прочтение2 мин
Количество просмотров2.9K
Тем временем, как большинство более-менее крупных компаний делают однообразные игры, независимые разработчики ищут, придумывают, пробуют новые возможности.
Под катом небольшая подборка игр, в которых есть свежие идеи.
14 видео и несколько ссылок
Всего голосов 85: ↑79 и ↓6+73
Комментарии66

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

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

Читать дальше →
Всего голосов 80: ↑54 и ↓26+28
Комментарии26

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

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

Читать дальше →
Всего голосов 95: ↑90 и ↓5+85
Комментарии121

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

Время на прочтение1 мин
Количество просмотров1.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 эффективнее использует память… впрочем, интересно ознакомиться и с другими мнениями.
Всего голосов 49: ↑41 и ↓8+33
Комментарии84

Информация

В рейтинге
Не участвует
Откуда
Россия
Дата рождения
Зарегистрирован
Активность