Оптимизации в JIT-компляторе для .NET 5

Автор: admin от 23-03-2020, 10:55, посмотрело: 64

Некоторое время назад я начал удивительное путешествие в мир JIT-компилятора с целью найти места, куда можно засунуть свои руки и что-нибудь ускорить, т.к. по ходу основной работы накопился небольшой багаж знаний в LLVM и его оптимизаций. В этой статье я хотел бы поделиться списком моих улучшений в JIT (в .NET он называется RyuJIT в честь какого-то дракона или аниме — я не разобрался), большая часть которых уже попала в master и будет доступна в .NET (Core) 5. Мои оптимизации затрагивают разные фазы JIT, которые очень схематично можно показать следующим образом:



Оптимизации в JIT-компляторе для .NET 5


Как видно из схемы, JIT — это отдельный модуль, связанный с рантаймом узким Jit-Interface, по которому JIT консультируется по некоторым вещам, например, можно ли скастить один класс к другому. Чем позже JIT компилирует метод в слой Tier1, тем больше информации может предоставить рантайм, например, что codev_0 поля можно заменить константой, т.к. класс уже статически проинициализирован.

Категория: Программирование

 

PHP-Дайджест № 176 (11 – 23 марта 2020)

Автор: admin от 23-03-2020, 04:40, посмотрело: 49

PHP-Дайджест № 176 (11 – 23 марта 2020)


Свежая подборка со ссылками на новости и материалы. В выпуске: обновления PHP и Composer 1.10, переносы конференций, 3 новых RFC предложения из PHP Internals, порция полезных инструментов, видео, подкасты и многое другое.



Приятного чтения!

Категория: Программирование

 

Реализуем преобразования кода на Python

Автор: admin от 22-03-2020, 23:30, посмотрело: 147

Привет, Хабр.



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

Категория: Программирование

 

Конспект по методам прогнозирования

Автор: admin от 22-03-2020, 23:30, посмотрело: 161

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

Категория: Программирование

 

Julia и квантовые вычисления

Автор: admin от 22-03-2020, 23:30, посмотрело: 170

Julia и квантовые вычисления

Мы представляем Yao (статья), пакет с открытым исходным кодом Julia для решения практических задач в исследованиях квантовых вычислений. Имя Yao происходит от первого китайского иероглифа, означающего унитарность (??).

Категория: Программирование

 

Размытие фонового изображения в Unity

Автор: admin от 22-03-2020, 23:30, посмотрело: 159

Размытие фонового изображения в Unity



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

Категория: Программирование

 

Организация кода в микросервисах и мой подход применения гексагональной архитектуры и DDD

Автор: admin от 22-03-2020, 23:30, посмотрело: 105

Организация кода в микросервисах и мой подход применения гексагональной архитектуры и DDD

Привет, Хабр! В Монолите весь код должен быть в едином стиле, a в разных микросервисах можно использовать разные подходы, языки программирования и фреймворки. Для простых микросервисов с 1 — 2 контроллерами и 1 — 10 действиями особо смысла городить слои абстракций нет. Для сложных микросервисов с различными состояниями и логикой перехода между ними наоборот лучше изначально не лениться. Я хочу рассказать о моем опыте организации кода и использования подходов DDD, Портов и Адаптеров для обоих случаев. Есть кратко суть статьи: Джун — пишет код в контроллере. Мидл — пишет кучу абстракций. Сеньор — знает когда нужно писать код в контроллере, а когда нужны абстракции.

Категория: Программирование

 

Как выучить английский самостоятельно, если нет времени

Автор: admin от 22-03-2020, 17:15, посмотрело: 108

Привет, читатель! Предлагаю тебе хотя бы на 5 минут ни на что не отвлекаясь прочитать начало статьи дабы полностью ощутить главное правило, которое поможет тебе достичь любого уровня в английском.



Как выучить английский самостоятельно, если нет времени



Когда-то задумывался над тем почему у тебя не хватает времени и сил на то чтобы уделить время чему-то новому (изучению языка, как в нашем случае). Нужно постараться, чтобы разглядеть истинную причину за всеми этими фразами: "я слишком занят", "у меня полно других дел", "я и так не высыпаюсь, где мне найти еще время?". Приготовься, потому что как только ты усвоишь главное правило изучения чего угодно, ты не только найдешь время, но и начнешь правильно использовать те инструменты, о которых мы поговорим позже. Так что отнесись к этому со всей серьезностью.

Категория: Программирование

 

Использование токенов (шорткодов) для строк в Laravel

Автор: admin от 22-03-2020, 17:15, посмотрело: 126

Введение



При разработки веб-сайтов и приложений, довольно часто возникает необходимость динамического формирование строк контента. Решается это по разному, кто то использует str_replace(), кто то делает поиск и замену с помощью регулярок, а кто то использует другие способы.



Использование токенов (шорткодов) для строк в Laravel

Вот, например, несколько таких задач:




  • Генерация названий сущностей на сайте при их сохранении в БД (имя статьи, название категории)

  • Генерация и вывод СЕО метатегов на страницах

  • Шаблоны email писем и других типов уведомлений

  • Генерация url-путей, слагов

  • Динамическая генерация и вывод другого контента по заданному шаблону



В известных CMS, эти задачи решаются с использованиям так называемых токенов (Drupal) или шорткодов (WordPress) или "жетонов".

Категория: Программирование

 

Hack The Box — прохождение Forest. AS-REP Roasting, атаки DCSync и Pass-The-Hash

Автор: admin от 22-03-2020, 09:50, посмотрело: 119

Hack The Box — прохождение Forest. AS-REP Roasting, атаки DCSync и Pass-The-Hash

Продолжаю публикацию решений отправленных на дорешивание машин с площадки HackTheBox. Надеюсь, что это поможет хоть кому-то развиваться в области ИБ. В данной статье разберемся с AS-REP Roasting в схеме аутентификации Kerberos, используем BloodHound для разведки в домене, выполняем атаку DCSync PrivExchange и атаку Pass-The-Hash.



Подключение к лаборатории осуществляется через VPN. Рекомендуется не подключаться с рабочего компьютера или с хоста, где имеются важные для вас данные, так как Вы попадаете в частную сеть с людьми, которые что-то да умеют в области ИБ :)



Категория: Информационная безопасность