Pull to refresh
24
0
Nikita Tokarchuk @MainNika

software engineer

Send message

Модели памяти C++ и CLR

Reading time16 min
Views36K

Это расшифровка-перевод доклада Саши Гольдштейна, признанного лучшим на конференции DotNext 2016 Piter. С годами этот доклад стал лишь актуальнее прежнего: появление Mac на ARM-процессорах — еще один пример, почему разработчикам сегодня нужно думать не только о x86-архитектуре.



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


То, что подходит процессорам Intel на архитектурах x86 и x86-64, может не подойти другой архитектуре. Как только вы перенесете свой код на другой процессор, например, на ARM для iPhone и Android, есть вероятность, что он перестанет работать как надо. Проблемы могут быть как очевидными (воспроизводиться с первого-второго раза), так и не очень (возникать только раз в миллион итераций). Вполне вероятно, что такие баги могут добраться до продакшна. Сегодня .NET и, конечно, C++ можно использовать не только на Windows и Intel, но и на других платформах, так что доклад будет полезен многим разработчикам.


Дисклеймер: статья предназначена для продвинутых читателей. Смотрите на свой страх и риск. За частое упоминание барьеров памяти и изменения порядка исполнения инструкций она получила возрастное ограничение 18+.
Читать дальше →
Total votes 72: ↑71 and ↓1+70
Comments4

Ломаем и чиним Kubernetes

Reading time6 min
Views24K

Kubernetes отличная платформа как для оркестрации контейнеров так и для всего остального. За последнее время Kubernetes ушёл далеко вперёд как по части функциональности так и по вопросам безопасности и отказоустойчивости. Архитектура Kubernetes позволяет с лёгкостью переживать сбои различного характера и всегда оставаться на плаву.

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

Поехали! (╯°□°)╯︵ ┻━┻
Total votes 28: ↑28 and ↓0+28
Comments20

OpenTelemetry на практике

Reading time11 min
Views55K
Совсем недавно два стандарта – OpenTracing и OpenCensus – окончательно объединились в один. Появился новый стандарт распределенного трейсинга и мониторинга – OpenTelemetry. Но несмотря на то, что разработка библиотек идет полным ходом, реального опыта его использования пока не слишком много.

Илья Казначеев color, который занимается разработкой восемь лет и работает backend-разработчиком в МТС, готов поделиться тем, как применять OpenTelemetry в Golang-проектах. На конференции Golang Live 2020 он рассказал о том, как настроить использование нового стандарта для трейсинга и мониторинга и подружить его с уже существующей в проекте инфраструктурой.
Читать дальше →
Total votes 11: ↑10 and ↓1+9
Comments5

Продвинутое использование объектов в JavaScript

Reading time15 min
Views50K
Этот пост выходит за рамки повседневного использования объектов в JavaScript. Основы работы с объектами по большей части так же просты, как использование JSON-нотации. Тем не менее, JavaScript дает возможность использовать тонкий инструментарий, с помощью которого можно создавать объекты некоторыми интересными и полезными способами и который теперь доступен в последних версиях современных браузеров.
Читать дальше →
Total votes 60: ↑56 and ↓4+52
Comments29

Восстановление роутера CISCO Linksys E2500

Reading time4 min
Views9.9K
На выходных к нам в сервиc принесли убитый неудачной прошивкой роутер CISCO Linksys E2500, сегодня наконец добрался до него. Как я понял не удачно залили альтернативную прошивку dd-wrt, но какую именно и как — врать не буду, заливал не я.

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

Прописав на сетевой карте статический адрес 192.168.1.2 можно было успеть попинговать его и даже попытаться начать заливку по tftp.

Советы по удержанию кнопки reset в течение 30 секунд на включенном, потом 30 на выключенном роутере, и еще 30 на снова включенном, никакого результата не принесли.

Остался вариант посмотреть что у него внутри.
Читать дальше →
Total votes 46: ↑38 and ↓8+30
Comments18

Как работает инжектор?

Reading time10 min
Views185K
В заметке пойдет речь о работе «мозгов», управляющих двигателем вашего автомобиля или мотоцикла. Попытаюсь на пальцах и в общем объяснить что же и как происходит.

Чем занимаются те самые «мозги» и для чего они нужны? Электроника — альтернатива другим системам, выполняющим те же функции. Дозированием топлива занимался карбюратор, зажиганием управлял механический или вакуумный корректор угла опережения зажигания. В общем не электроникой единой возможно реализовать все это и достаточно продолжительное время именно так и было. На автомобилях, мотоциклах, бензопилах, бензогенераторах и во многих многих других местах работали и продолжают работать те самые системы, которые призван заменить инжектор.
Зачем же понадобилось что-то менять? Зачем сносить существующие проверенные и весьма надежные системы? Все просто — гонка за экономичностью, экологичностью и мощностью. Точность работы описанных выше систем недостаточна для обеспечения желаемого уровня экологичности и мощности, а сами по себе электронные системы управления двигателем начали появляться достаточно давно.
Читать дальше →
Total votes 200: ↑184 and ↓16+168
Comments101

Психологические аспекты человеко-машинного взаимодействия

Reading time12 min
Views6.9K


Предлагаю вашему вниманию перевод и адаптацию статьи Сьюзан Вайншенк — «The Psychologist’s View of UX Design».
Предупреждаю, что статья может содержать много «банальных» утверждений. Однако, считаю, что это ничуть не умаляет её общеобразовательной ценности.

… Все вы, наверное, слышали притчу о слепцах и слоне:
Читать дальше →
Total votes 79: ↑76 and ↓3+73
Comments43

Установка Fedora 16 в качестве полнофункциональной PV-guest системы в XenServer

Reading time2 min
Views925
В этой заметке хотелось бы рассказать, как можно установить Fedora 16 в качестве PV-гостевой машины в XenServer/Xen Cloud Platform. В принципе, описанный ниже способ установки не поддерживаемых напрямую дистрибутивов хорошо известен, однако при установке Fedora 16 возник ряд затруднений, с которыми пришлось немного повозиться. Готовое решение под катом.
Читать дальше →
Total votes 8: ↑6 and ↓2+4
Comments0

Оформить правильно

Reading time3 min
Views6.2K
Проблема большинства сегодняшних программ, таких как Excel или Numbers – они дают отвратительный набор типовых графиков, из которых пользователю необходимо выбрать подходящий. Но как можно выбрать подходящий и хороший, если для его получения нужно совершить с десяток непростых телодвижений, с каждым из которых вообще можно разбираться по 5-10 минут…
Поэтому сегодняшняя статья будет посвящена тому, как правильно и понятно нужно оформлять графики в презентациях.

Начнем с начала.
Вот, самый обычный график, который создается за секунду, нажатием 2-х кнопок в Экселе. Да, красота неописуемая, что глаз не оторвать. Но так ли важна эта красота, когда вам нужно дать четкое и понятное представление для всех собравшихся о том, что происходит с бюджетом компании? Кто-то сможет однозначно сказать, что происходит, например, в июне месяце? Компания в убытках? Или, может, наоборот уже все не так уж и плохо? Для ответа на этот вопрос нужно подключить неплохое пространственное воображение и удачу. И тогда кто-то сможет ответить: «В июне бюджет наконец-то превысил наши расходы!».

image
Читать дальше →
Total votes 100: ↑83 and ↓17+66
Comments81

Экспериментальное определение характеристик кэш-памяти

Reading time6 min
Views5K
В ряде случаев (например, для тонкой оптимизации программы под конкретный компьютер) полезно знать характеристики кэш-подсистемы: количество уровней, время доступа к каждому уровню, их размер и ассоциативность, и т.п.
Для одноразовой оптимизации необходимые значения можно посмотреть в спецификации на компьютер, но когда требуется автоматическая оптимизация (например, во время сборки и установки программы), характеристики приходится определять косвенно, по результатам прогона специального набора тестов.
Удобная тестовая программа для Linux — lat_mem_rd из пакета тестов lmbench. Её работа заключается в том, что она выделяет в памяти массив и читает его элементы с заданным шагом, циклически проходя по массиву снова и снова. Затем выделяется массив большего размера, и т.д. Для каждого значения шага и размера массива подсчитывается среднее время доступа.
Пример графика, который был получен этой программой на реальной системе:

Как по полученным данным определить характеристики кэша?
Total votes 33: ↑33 and ↓0+33
Comments10

«Намертво прибитая к ядру» графическая подсистема

Reading time6 min
Views16K


То, что принято называть «графикой в ядре» обычно относится к win32k. Win32k.sys представляет собой ядерную часть графической подсистемы. Загружается пользовательским процессом smss.exe в процессе инициализации всех остальных подсистем. Путь к исполняемому образу для «kmode» подсистемы прописан здесь:


Как же это происходит?
Читать дальше →
Total votes 271: ↑246 and ↓25+221
Comments120

Ускорение загрузки Windows for fun and profit

Reading time4 min
Views803K
image Пожалуй, начну с того, что если перегружаться 15 раз в год, то любой «тюнинг» процесса загрузки отнимает больше времени, чем будет выиграно на перезагрузках за все время жизни системы. Однако, спортивный интерес берет свое, тем более, что люди интересуется процессом оптимизации быстродействия. А загрузка оказалась самым очевидным кандидатом в примеры того, как на мой взгляд должен выглядеть этот самый процесс. Сразу скажу, что грузиться будем с 5400 rpm винта, грузиться будем в «рабочую» систему: помимо недобитой вендорской крапвари там стоит еще куча всякого типа вижуал студии, антивируса, скайпа, стима, гуглапдейтера и пр…

Про то, почему отключение pagefile-а скорее вредно, чем полезно — как нибудь в другой раз, а пока…
Под катом много однообразных картинок и немножко унылого текста
Total votes 532: ↑516 and ↓16+500
Comments365

Психологическая деформация программистов. Взгляд с обеих сторон баррикад

Reading time6 min
Views136K
Само наличие психологической деформации у какой-либо профессии, как правило, достаточно спорный момент ввиду того, что у разных людей она проявляется по-разному. Однако общую тенденцию можно выделить и, пожалуй, настало то время когда можно достаточно смело говорить, что программисты всё же имеют свой особенный психологический портрет который обусловлен их профессиональной деятельностью.

Я достаточно часто сталкивался с подобным мнением и не придавал ему особого значения, но когда женский коллектив нашей организации поздравил программистов с 23-м февраля по доброму назвав их «космическими войсками», решил всё же расставить определенные акценты в данном вопросе, т.к. одна из моих профессий связана напрямую с психоанализом. Да и баш уже не молчит.

И что же них такого деформированного?
Total votes 461: ↑436 and ↓25+411
Comments558

Эмоциональный компьютер

Reading time8 min
Views4.4K
Начнем издалека. Представим себе, что ученые девятнадцатого века неким волшебным образом получили современный компьютер. Они стали бы изучать его работу, создали бы целую науку, описывающую свойства операционной системы и установленных программ. Затем они вскрыли бы этот компьютер и попытались описать его основные узлы, понять их назначение. Потом они стали бы измерять напряжение в различных точках. Возникли бы различные теории о циркулирующих внутри компьютера потоках информации. Возникло бы учение о его кремниевой основе. Кто-нибудь получил бы Нобелевскую премию за открытие принципов работы полупроводникового вентиля. Но самое главное, что сложность устройства современного компьютера затруднила бы тем ученым, путь к пониманию достаточно простых принципов лежащих в основе любой вычислительной техники. Эти принципы были сформулированы в «машине Тьюринга» и не изменились по сей день, и неважно собран ли компьютер на лампах, транзисторах или микросхемах. Любой компьютер имеет память, систему команд, процессор, который умеет эти команды выполнять, программы, состоящие из последовательности команд и устройства ввода вывода, позволяющие взаимодействовать с внешним миром. Остальное «навороты», возникшие в результате эволюции вычислительной техники, хотя и многократно увеличивают возможности компьютера, не отменяют эти принципы.
Читать дальше →
Total votes 41: ↑32 and ↓9+23
Comments41

Потокобезопасная очередь без блокировок

Reading time3 min
Views9.2K

Задача


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

Читать дальше →
Total votes 18: ↑14 and ↓4+10
Comments21

GMABooster? Разгоняем?

Reading time4 min
Views27K


Решился опубликовать результаты моего исследования программы GMABooster, которая была представлена хабражителям буквально вчера. Сразу скажу, анализ не был бы проведен столь быстро, если бы не совершенно незнакомый хабраюзер Werat, который удаленно тестировал из под админа мой код на своем Acer Aspire One a150 (отважился же человек).

Своим топиком мне хотелось бы подчеркнуть важность открытых продуктов, свободы обмена информации между людьми [а еще напомнить всем жалующимся и плачущим, что Хабр — торт!].

Disclaimer: Анализ приведен исключительно в обучающих и мирных целях, меньше всего мне хотелось бы снизить размер пожертвований в сторону автора программы. В любом случае им проведена работа, которая заслуживает уважения. Также, я вынужден рассмотреть «альтернативное» решение для некоторых платформ, в силу того, что GMABooster не удобен по ряду критериев, особенно для пользователей Linux и Mac.

Расследование внутри
Total votes 112: ↑110 and ↓2+108
Comments24

Использование нейронной сети Хопфилда для решения простейшей задачи

Reading time9 min
Views12K
image В настоящее время достаточно интересной областью программирования является использование нейронных сетей. Не смотря на всю перспективность этой идеи, большинство реализаций которые я встречал были связаны с различным анализом статистических выборок и предсказанием возможного значения какого-либо параметра.

Разговоры об искусственном интеллекте и громоздких экспертных системах — это конечно все хорошо, но как всю эту теорию приблизить к жизни, к нашим приклодным задачам?
Читать дальше →
Total votes 72: ↑59 and ↓13+46
Comments29

Быть Чубаккой, или невербальная коммуникация. Немножко практики

Reading time5 min
Views1.6K
Лавра Федотовича это затруднение наконец утомило, и, прервавши оратора, он произнес только одно слово:
— Неубедительно.
Раздался тяжелый удар. Большая Круглая Печать впилась в мою заявку.
А. и Б. Стругацкие. «Сказка о Тройке»



Доброе утро, Хабр.

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

Вопрос, зачем коммуницировать, вроде бы уже отпал, но две строчки напишу о том, зачем нужна невербальная составляющая, и что это за зверь. Причем заранее прошу прощения у тех, кто и так прекрасно этот термин понимает.
В каждом сообщении есть две части: собственно текст и… все остальное. Имеющее свойство, в отличие от текста, воздействовать прямиком на подсознание слушателя, оставляя в нем надежные следы. Все, что кладется в подсознание, будучи правильно положенным, твердо поддерживает сообщение, передаваемое сознанию. Неправильное сообщение, передаваемое на подсознательном (читай: невербальном) уровне, может войти в жестокое противоречие с произносимым текстом и тем самым нанести ему, тексту, тяжелый урон в головах аудитории. Для иллюстрации, — ну не знаю, — вообразите, что робот Марвин из HHTTG сказал вам, как он искренне счастлив вас видеть.

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

Микро-тренинг #1
Total votes 88: ↑68 and ↓20+48
Comments45

Монолог инкогнито с одной айтишной конференции

Reading time7 min
Views130K
Disclaimer. Монолог ниже является стенограммой выступления одного из докладчиков на одной из айтишных конференций. Автор поста всего лишь публикует его здесь с разрешения докладчика.

Всем привет!

В программе мероприятий вам обещали инкогнито долларового миллионера. Увы, он отбыл на воды в Баден-Баден лечить переговорную печень и пришлось затыкать дыру кем попало.

Меня зовут Сергей. Чтобы сказать про себя «я плохой докладчик», нужно хотя бы им, докладчиком, быть. Я вообще не оно. Свою первую и одну из последних презентаций я провел в 18 лет в Испании, перед аудиторией человек в 100. Мой весьма средний на тот момент английский синхронно переводили на испанский, народ зевал и почесывал репы, ожидая когда ЭТО недоразумение закончит блеять и объявится кофебрейк.

Сказать что мне было стыдно — это ничего не сказать, красный как рак, я свалил вторым выходом, забился в свой номер и боялся показаться на глаза. Всякие public professionals типа Карнеги сказали бы «позор!» и «never again!». Для себя я решил — все что угодно, хоть жигулевское пиво по пятницам, только не публичные экзекуции

К чему это я? Многие, глядя на ИТшников, путают скромность со стеснительностью. Да и фиг с ними. Главное — чтобы мы сами не путали. Я — стеснительный, поэтому буду смотреть в пол и читать по бумажке. Я бы выпил, конечно, для смелости, граммчиков сто (а лучше сто пятьдесят), но организаторы запретили. Ну что, пусть фигово, зато честно!

Я владелец компании П, в которой мы уже лет 13 или 14 занимаемся разработкой всякой фигни, про которую никто не слышал. Не имея таланта делать что-то красивое и эстетичное, мы довольствуемся подводной частью айсберга: софт-свитчи и клиенты для IP-телефонии, аппаратно-программные решения для высоконагруженных систем обработки контента, системы имперсонализации web и e-mail для виртуального присутствия, облачное видеонаблюдение, несколько справочных и торговых интернет-порталов, ну и еще пара проектов в стадии стартапа, говорить о которых рано, потому что стыдно

Все о чем собираюсь сказать, основано исключительно на личном опыте, относится к маленьким компаниям и совершенно не обязано работать в больших, хотя иногда бывает. За 25 лет, отданных айти-бизнесу, я умудрился побывать в разных шкурах, от техника, подносящего кофе джуниор девелоперам, до владельца компаний, которому не надо вставать в 8. Посредине между этими сомнительными гранями было, наверное, два главных увлечения — язык Си и темное ирландское пиво. Увы, и то и другое со временем пришлось сильно урезать.
Читать дальше →
Total votes 208: ↑172 and ↓36+136
Comments125

Беспроводной звук. Часть 1. Препарируем Bluetooth

Reading time20 min
Views316K
Иногда, бывает, натыкаешься на какой-то баг впервые, списываешь все на обстоятельства и забываешь о нем. Затем он повторяется снова и снова, вынуждая тебя приступить к поиску проблем и, по возможности, их устранению. И вот когда ты обнаруживаешь себя в глубокой ночи за анализом дампом/дебагом/чтением_мануалов, то становится понятно, дело на полпути бросать уже нельзя и дело принципа — довести его до конца.

Такая история со мной приключилась в момент обзора с коллегой r3s потребительской беспроводной Bluetooth-акустики Klipsch KMC 3. Я столкнулся с ситуацией, когда «беспроводной» аудиопоток начинал безбожно прерываться, стоило лишь мне расположить источник звука у себя за спиной. Пищи для размышлений мне подкинула другая Bluetooth-аудиосистема, которая в тех же условиях вела себя куда лучше. Такая простая проблема выродилась в нырок с головой во внутренности протокола Bluetooth и детали передачи аудио с его помощью.

Под катом первой части цикла статей мы в легкой и непринужденной форме познакомимся с основными протоколами стека Bluetooth, покопаемся в дампе соединения источника и приемника звука, разберемся в причинах конфликта Bluetooth и Wi-Fi и обнаружим корень моей проблемы — прерывающегося звука.
Читать дальше →
Total votes 113: ↑112 and ↓1+111
Comments38
1
23 ...

Information

Rating
Does not participate
Location
Amsterdam, Noord-Holland, Нидерланды
Registered
Activity

Specialization

Backend Developer, System Software Engineer
Senior