Как стать автором
Обновить
24
0
Nikita Tokarchuk @MainNika

software engineer

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

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

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

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



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


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


Дисклеймер: статья предназначена для продвинутых читателей. Смотрите на свой страх и риск. За частое упоминание барьеров памяти и изменения порядка исполнения инструкций она получила возрастное ограничение 18+.
Читать дальше →
Всего голосов 53: ↑52 и ↓1+70
Комментарии4

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

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

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

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

Поехали! (╯°□°)╯︵ ┻━┻
Всего голосов 28: ↑28 и ↓0+28
Комментарии20

OpenTelemetry на практике

Время на прочтение11 мин
Количество просмотров59K
Совсем недавно два стандарта – OpenTracing и OpenCensus – окончательно объединились в один. Появился новый стандарт распределенного трейсинга и мониторинга – OpenTelemetry. Но несмотря на то, что разработка библиотек идет полным ходом, реального опыта его использования пока не слишком много.

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

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

Время на прочтение15 мин
Количество просмотров50K
Этот пост выходит за рамки повседневного использования объектов в JavaScript. Основы работы с объектами по большей части так же просты, как использование JSON-нотации. Тем не менее, JavaScript дает возможность использовать тонкий инструментарий, с помощью которого можно создавать объекты некоторыми интересными и полезными способами и который теперь доступен в последних версиях современных браузеров.
Читать дальше →
Всего голосов 60: ↑56 и ↓4+52
Комментарии29

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

image
Читать дальше →
Всего голосов 100: ↑83 и ↓17+66
Комментарии81

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

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

Как по полученным данным определить характеристики кэша?
Всего голосов 33: ↑33 и ↓0+33
Комментарии10

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

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


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


Как же это происходит?
Читать дальше →
Всего голосов 271: ↑246 и ↓25+221
Комментарии120

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

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

Про то, почему отключение pagefile-а скорее вредно, чем полезно — как нибудь в другой раз, а пока…
Под катом много однообразных картинок и немножко унылого текста
Всего голосов 533: ↑517 и ↓16+501
Комментарии365

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

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

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

И что же них такого деформированного?
Всего голосов 461: ↑436 и ↓25+411
Комментарии558

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

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

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

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

Задача


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

Читать дальше →
Всего голосов 18: ↑14 и ↓4+10
Комментарии21

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

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


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

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

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

Расследование внутри
Всего голосов 112: ↑110 и ↓2+108
Комментарии24

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

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

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

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

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



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

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

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

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

Микро-тренинг #1
Всего голосов 88: ↑68 и ↓20+48
Комментарии45

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

Время на прочтение7 мин
Количество просмотров130K
Disclaimer. Монолог ниже является стенограммой выступления одного из докладчиков на одной из айтишных конференций. Автор поста всего лишь публикует его здесь с разрешения докладчика.

Всем привет!

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

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

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

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

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

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

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

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

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

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

Информация

В рейтинге
Не участвует
Откуда
Amsterdam, Noord-Holland, Нидерланды
Зарегистрирован
Активность

Специализация

Backend Developer, System Software Engineer
Senior