Как стать автором
Обновить
3
0
Tony Skorik @TCapS

Software Engineer @ AliExpress Russia

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

Поддержка аппаратно-специфичных инструкций в .NET Core (теперь не только SIMD)

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

Введение


Несколько лет назад, мы решили, что настало время поддержать SIMD код в .NET. Мы представили пространство имен System.Numerics с типами Vector2, Vector3,Vector4 и Vector<T>. Эти типы представляют API общего назначения для создания, доступа и оперирования векторными инструкциями, когда это возможно. Они, так же, обеспечивают программную совместимость для тех случаев, где аппаратное обеспечение не поддерживает подходящих инструкций. Это позволило, с минимальным рефакторингом, векторизовать ряд алгоритмов. Как бы там ни было, общность такого подхода делает его сложным в применении с целью получения полного преимущество от всех доступных, на современном аппаратном обеспечении, векторных инструкций. В дополнении, современное аппаратное обеспечение предоставляет ряд специализированных, не векторных, инструкций, которые могут значительно улучшать производительность. В этой статье я расскажу, как мы обошли эти ограничения в .NET Core 3.0.



Примечание: пока ещё нет устоявшегося термина для перевода Intrisics. В конце статьи есть голосовалка за вариант перевода. Если выберем хороший вариант, статью изменим

Читать дальше →
Всего голосов 29: ↑28 и ↓1+27
Комментарии14

GIT изнутри: введение (перевод)

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

Привет, Хабр! Представляю вашему вниманию перевод статьи "Git for Computer Scientists" автора Tommi Virtanen.


GIT изнутри: введение


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


Кому будет интересно и, возможно, полезно: людям, ежедневно работающим с Git (т.е. каждому второму, если не первому разработчику ПО), и желающим лучше понять механизм его работы.


Примечание: для лучшего понимания статьи следует иметь представление о таком звере, как направленный ациклический граф (directed acyclic graph, DAG).

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

Назад в будущее? Квантовый ластик с отложенным выбором

Время на прочтение8 мин
Количество просмотров36K
На Хабре периодически появляются статьи и комментарии о чудесах квантовой физики: квантовом ластике и слабых измерениях. К сожалению, слишком часто о них говорят как о загадочных и непонятных явлениях, позволяющих творить чуть ли не магию, хотя на самом деле нет в них ровным счетом ничего удивительного. В этом посте я перевожу статью Шона Кэрролла о квантовом ластике с отложенным выбором. Пусть он будет отправной точкой для обсуждения в комментариях всяких хитростей квантовой механики.

Всего голосов 39: ↑38 и ↓1+37
Комментарии129

Анонс веб-интерфейса Kubernetes Web View (и краткий обзор других web UI для Kubernetes)

Время на прочтение7 мин
Количество просмотров17K
Прим. перев.: Автор оригинального материала — Henning Jacobs из компании Zalando. Он создал новый веб-интерфейс для работы с Kubernetes, который позиционируется как «kubectl для веба». Почему новый Open Source-проект появился и каким критериям не удовлетворили уже существующие решения — читайте в его статье.



В этой публикации я рассматриваю различные веб-интерфейсы Kubernetes с открытым исходным кодом, предъявляю свои требования к универсальному UI и рассказываю, почему разработал Kubernetes Web View — интерфейс, призванный облегчить поддержку и устранение неполадок сразу во множестве кластеров.

Сценарии использования


В Zalando мы обслуживаем большое количество пользователей Kubernetes (900+) и кластеров (100+). Есть пара типичных случаев использования, в которых бы очень пригодилась помощь специализированного веб-инструмента:

  1. общение с коллегами в рамках поддержки;
  2. реагирование на инциденты и расследование их причин.
Читать дальше →
Всего голосов 34: ↑33 и ↓1+32
Комментарии6

Kubernetes 1.16: обзор основных новшеств

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


Сегодня, в среду, состоится очередной релиз Kubernetes — 1.16. По сложившейся для нашего блога традиции, вот уже в юбилейный — десятый — раз мы рассказываем о наиболее значимых изменениях в новой версии.

Информация, использованная для подготовки этого материала, взята из таблицы Kubernetes enhancements tracking, CHANGELOG-1.16 и соответствующих issues, pull requests, а также Kubernetes Enhancement Proposals (KEP). Итак, поехали!..
Читать дальше →
Всего голосов 39: ↑37 и ↓2+35
Комментарии0

«Упрости и вырежь необходимое»: интервью с Джоном Ромеро, создателем Doom

Время на прочтение12 мин
Количество просмотров24K
На прошедшем IT-фестивале Tech Train мы встретились с легендарным Джоном Ромеро, который приложил руку к дизайну и разработке культовых Wolfenstein 3D, Doom и Quake. Мы поговорили о том, нужны ли игровым разработчикам софт-скиллы, на какие рабочие инструменты стоит обратить внимание, и какие у сооснователя Id Software любимые игрушки. Вопросы задавал Никита Цаплин — основатель RUVDS.


→ Англоязычная версия текста и видео здесь
Всего голосов 58: ↑55 и ↓3+52
Комментарии13

Только что вышла Java 13. ZGC начал делиться памятью, CDS сам запоминает классы, и другие чудеса техники

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


Сегодня вышла новая версия джавы — Java/JDK 13. Гонка началась с весеннего выпуска JDK 12, состоявшегося 19 марта, а форк от основной ветки произошел 13 июня. Кого-то мы там по пути потеряли вроде JEP 343: Packaging Tool, но в целом всё норм, и пора пожинать плоды.


Скачать новый релиз можно по ссылке. Под катом будет небольшой обзор свежих JEP-ов, вошедших в этот выпуск.

Читать дальше →
Всего голосов 68: ↑62 и ↓6+56
Комментарии64

Заложники COBOL и математика. Часть 1

Время на прочтение8 мин
Количество просмотров22K
Посмотрим правде в глаза: никто не любит дробные числа — даже компьютеры.

Когда речь заходит о языке программирования COBOL — первый вопрос, который всплывает у всех в голове, всегда выглядит так: «Почему человечество всё ещё использует этот язык во множестве жизненно важных областей?». Банки всё ещё пользуются COBOL. Около 7% ВВП США зависит от COBOL в деле обработки платежей от CMS. Налоговая служба США (IRS), как всем хорошо известно, всё ещё использует COBOL. В авиации тоже используется этот язык (отсюда я узнала одну интересную вещь на эту тему: номер бронирования на авиабилетах раньше был обычным указателем). Можно сказать, что множество весьма серьёзных организаций, идёт ли речь о частном или государственном секторе, всё ещё используют COBOL.



Вторая часть

Автор материала, первую часть перевода которого мы сегодня публикуем, собирается найти ответ на вопрос о том, почему COBOL, язык, который появился в 1959 году, всё ещё настолько распространён.
Читать дальше →
Всего голосов 79: ↑73 и ↓6+67
Комментарии41

Возвращаем Thread.Abort() в .NET Core. Поставка приложения со своей версией CoreCLR и CoreFX

Время на прочтение5 мин
Количество просмотров7K
В процессе миграции с .NET Framework на .NET Core могут всплыть некоторые неприятные моменты. Например, если ваше приложение использует домены — логику придется переписывать. Аналогичная ситуация с Thread.Abort(): Microsoft настолько не любит эту практику (и справедливо), что сначала они объявили этот метод deprecated, а затем полностью выпилили его из фреймворка и теперь он вероломно выбрасывает PlatformNotSupportedException.

Но что делать, если ваше приложение использует Thread.Abort(), а вы очень хотите перевести его на .NET Core, ничего не переписывая? Ну, мы-то прекрасно знаем, что платформа очень даже поддерживает этот функционал, так что могу вас обрадовать: выход есть, нужно всего лишь собрать свою собственную версию CLR.

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


Читать дальше →
Всего голосов 8: ↑7 и ↓1+6
Комментарии12

Полное руководство по Flexbox

Время на прочтение11 мин
Количество просмотров617K
Полное руководство по CSS flexbox. Это полное руководство объясняет все о flexbox, сосредотачиваясь на всех возможных свойствах для родительского элемента (контейнер flex) и дочерних элементов (элементы flex). Оно также включает в себя историю, демонстрации, шаблоны и таблицу поддержки браузеров.
Читать дальше →
Всего голосов 23: ↑17 и ↓6+11
Комментарии5

Подборка психологических и нетипичных технических вопросов с собеседований Java-разработчика

Время на прочтение6 мин
Количество просмотров36K
Как и у всех разработчиков, у меня настал период затишья. Проект подходил к концу, задач практически не было, хотелось выше зарплату, ну и пошла получать свой заветный job offer.



Так вышло, что некоторые собеседования занимали 2-3 этапа, и я накопила парад вопросов, которыми спешу с Вами поделиться.

Психологические вопросы




Представители отдела кадров и не IT-руководители качественно выполняют свою работу и тоже хотят тебя о чем-нибудь спросить, но некоторые из них удивляют меня все больше и больше. Руководитель одной из контор устроил мне даже блиц-опрос с таймером. Если раньше обходились двумя вопросами: “Кем Вы видите себя через 5 лет?” и “Что Вас не устраивает на старом месте работы? Сейчас же, все вокруг только и говорят, что о психологии, вот и появляются подобные вопросы.

Мои любимые, простенькие короткие вопросики:
— “Вы конфликтный человек?”
— “Допустим у Вас конфликт, как вы будете его решать?”
— “Если в pull-request вы не согласны с коллегой, какие Ваши действия?”
— “Как часто вы пьете чай на рабочем месте?”
— “Как вы решаете споры в команде?”
— “Опишите работу вашей мечты”
— “Опишите рабочее место Вашей мечты”
— “Если бы вы выиграли в лотерею кругосветное путешествие длиной в год. Какова вероятность, что после приезда вы пойдете на прежнее место работы?”

Однажды мне прислали психологический тест, состоящий из 2 частей в общей сложности на 300 вопросов, потому что: «Данная вакансия предполагает конкурсный отбор в 3 этапа — 2 тестирования по электронной почте (психологическое и профессиональное) и собеседование (очное или скайп, как вам удобно)»
Читать дальше →
Всего голосов 30: ↑24 и ↓6+18
Комментарии78

C, C++ и DotNet decompile — основы реверса. Решение задач на реверсинг с r0от-мi. Часть 1

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

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

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

  • PWN;
  • криптография (Crypto);
  • cетевые технологии (Network);
  • реверс (Reverse Engineering);
  • стеганография (Stegano);
  • поиск и эксплуатация WEB-уязвимостей.

Вдобавок к этому я поделюсь своим опытом в компьютерной криминалистике, анализе малвари и прошивок, атаках на беспроводные сети и локальные вычислительные сети, проведении пентестов и написании эксплоитов.
Читать дальше →
Всего голосов 11: ↑10 и ↓1+9
Комментарии6

Тестирование API с использованием Postman и Excel

Время на прочтение4 мин
Количество просмотров50K
Всем привет, я руководитель отдела тестирования, и недавно по работе появилась задача на тестирование API. Для ее решения освоил новый для меня инструмент Postman и JavaScript.

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

Для решения этих проблем я написал макрос для Excel и коллекцию в Postman. Теперь в Postman у меня одна коллекция на все API и стандартный набор функций для обработки входящих данных и валидации возвращаемых результатов. Мне удалось перенести управление тестовыми данными и последовательность выполнения запросов в Excel.

Что было


1. JSON с данными


Раньше тестовый набор хранился в таком виде
Читать дальше →
Всего голосов 13: ↑11 и ↓2+9
Комментарии37

Samsung Compiler Bootcamp: научим создавать «программирующие программы»

Время на прочтение3 мин
Количество просмотров3.6K
Каждый уважающий себя программист хотя бы раз в жизни хотел придумать свой язык программирования – и сделать для него компилятор.

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

А если хочется конструировать компиляторы в своей профессиональной деятельности? Надо сказать, это действительно редкая профессия, можно даже сказать, элита программистского сообщества. Чтобы «с нуля» разработать компилятор хотя бы для весьма компактного и простого языка программирования, требуется знакомство с внушительным пластом математических оснований – теорией формальных грамматик, алгоритмами над деревьями и графами, механизмами оптимизационных преобразований – а также освоение богатого практического опыта реализации компиляторов, накопленного за несколько десятков лет.

Кому требуются специалисты этой редкой профессии? Основные работодатели – это крупные международные компании, производители вычислительной техники. И современные теоретические и практические знания по созданию компиляторов сосредоточены именно там.
Исследовательский Центр Samsung в Москве одно из таких редких мест, и мы предлагаем осуществить мечту о собственном работающем компиляторе, поступив на программу Samsung Compiler Bootcamp.



Подробности читайте под катом.
Читать дальше →
Всего голосов 13: ↑13 и ↓0+13
Комментарии8

22 компьютерных музея: путеводитель для путешествующих по Европе инженеров

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


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

***

Первые индустриальные музеи появились еще во второй половине XIX века. Основу их коллекций составляли механизмы, приборы и материалы, ранее выставлявшиеся на всемирных выставках, которые с 1851 года вызывали повышенный интерес во всем мире. Тогда же начали формироваться и собрания, ставшие основой научно-технических музеев ХХ века. А специальный метод повествования, характерный для такого рода экспозиций, сложился уже в 1960-70-е годы, когда даже самые старые ЭВМ в музеи еще никто списывать не собирался.
Читать дальше →
Всего голосов 21: ↑19 и ↓2+17
Комментарии23

Posit-арифметика: победа над floating point на его собственном поле. Часть 2

Время на прочтение12 мин
Количество просмотров8.3K
Часть 1

4. Количественное сравнение числовых систем


4.1. Определение десятичной точности




Точность обратна ошибке. Если у нас есть пара чисел x и y (ненулевых и одного знака), расстояние между ними в порядках величин составляет $\mid log_{10}( x / y )\mid$ десятичных порядков, это та же самая мера, которая определяет динамический диапазон между самым маленьким и самым большим представимым положительным числом x и y. Идеальным распределением десяти чисел между 1 и 10 в вещественной системе счисления было бы не равномерное распределение чисел по порядку от 1 до 10, а экспоненциальное: $1, 10^{1/10}, 10^{2/10},..., 10^{9/10}, 10$. Это шкала децибел, долгое время используемая инженерами для выражения отношений, например, 10 децибел — это десятикратное отношение. 30db означает коэффициент $10^3=1000$. Отношение 1db — это коэффициент около 1,26, если вы знаете значение с точностью 1db, вы имеете точность 1 десятичный знак. Если вы знаете величину с точностью 0,1 db, это означает 2 знака точности, и т.п. Формула десятичной точности$log_{10}(1/\mid log_{10}(x/y)\mid)=-log_{10}(\mid log_{10}(x/y)\mid )$, где x и y — либо корректные значения, вычисленные с использованием систем округления, таких, какие используются в форматах float и posit, либо верхние и нижние границы, если используются строгие системы, использующие интервалы, или значения valid.
Читать дальше →
Всего голосов 30: ↑30 и ↓0+30
Комментарии16

Подробно о dynamic: подковерные игры компилятора, утечка памяти, нюансы производительности

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

Прелюдия



Рассмотрим следующий код:

//Any native COM object
var comType = Type.GetTypeFromCLSID(new Guid("E13B6688-3F39-11D0-96F6-00A0C9191601"));

while (true)
{
    dynamic com = Activator.CreateInstance(comType);

    //do some work

    Marshal.FinalReleaseComObject(com);
}


Сигнатура метода Marshal.FinalReleaseComObject выглядит следующим образом:

public static int FinalReleaseComObject(Object o)


Создаем простой COM-объект, выполняем какую-то работу и тут же его освобождаем. Казалось бы, что может пойти не так? Да, создание объекта внутри бесконечного цикла — не очень хорошая практика, но GC возьмет на себя всю грязную работу. Реальность оказывается несколько иной:



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

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

Как проводить код-ревью

Время на прочтение18 мин
Количество просмотров53K
Из документации Google's Engineering Practices

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


См. также Руководство автора CL, в котором даются подробные советы разработчикам, чьи коммиты проходят ревью.
Читать дальше →
Всего голосов 27: ↑26 и ↓1+25
Комментарии17

Обратное собеседование: какие вопросы задавать компании?

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

Этот текст — перевод репозитория viraptor. Вы можете предложить свои вопросы на английском, в оригинальном репозитории, или на русском — в моём форке, а я постараюсь перевести их и передать автору


Обратное собеседование


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


Если вы задавали вопросы, которых нет в этом списке, отправьте пожалуйста пулл-реквест!

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

Разбор задачи с собеседования Google: поиск соотношения

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


Добро пожаловать в очередную из серии статей с разбором задачек, которые я задавал на собеседованиях в Google, прежде чем их запретили после утечки. С тех пор я оставил работу инженера-программиста в Google и перешёл на должность менеджера по разработке в Reddit, но у меня всё ещё осталось несколько замечательных тем. К настоящему моменту мы разобрали динамическое программирование, возведение матриц в степень и синонимичность запросов. На этот раз совершенно новый вопрос.
Читать дальше →
Всего голосов 47: ↑41 и ↓6+35
Комментарии73

Информация

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