[Перевод] Невызванная функция замедляет программу в 5 раз

Замедляем Windows, часть 3: завершение процессов

Автор занимается оптимизацией производительности Chrome в компании Google — прим. пер.

Летом 2017 года я боролся с проблемой производительности Windows. Завершение процессов происходило медленно, сериализованно и блокировало системную очередь ввода, что приводило к многократным подвисаниям курсора мыши при сборке Chrome. Основная причина заключалась в том, что при завершении процессов Windows тратила много времени на поиск объектов GDI, удерживая при этом критический раздел system-global user32. Я рассказывал об этом в статье «24-ядерный процессор, а я не могу сдвинуть курсор».

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

Но на самом деле баг не вернулся. Причина оказалась в изменении нашего кода.
Читать дальше →
[Перевод] Невызванная функция замедляет программу в 5 раз
Source: habrahabr

«Ты крутой разраб, иди и попроси больше денег» — расскажем менеджерам, как устроен мир

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

Знаете что? Пусть катятся к черту.

Читать дальше →
«Ты крутой разраб, иди и попроси больше денег» — расскажем менеджерам, как устроен мир
Source: habrahabr

Прямой эфир: инфраструктура фронтенда

Всем привет! Меня зовут Роман Дворнов, я Lead Engineer в команде Frontend Architecture в Авито. Мы занимаемся созданием и развитием технической платформы фронтенда, чтобы другие команды могли быстрее создавать интерфейсы и продукты. Мы с коллегами запланировали серию онлайнов, в которых будем обсуждать актуальные вопросы разработки клиентской части.

11 декабря на нашем ютуб-канале пройдёт первый прямой эфир. Обсудим инфраструктуру фронтенда. В дискуссии будут участвовать эксперты из Яндекса, Tinkoff.ru, Mail.ru и Авито. Под катом — примерные вопросы, которые планируем обсуждать (дополняйте список), и ссылка на предстоящую трансляцию. Добавляйте пост в закладки: после встречи обновим его и выложим видео.

Читать дальше →
Прямой эфир: инфраструктура фронтенда
Source: habrahabr

Граали соревнования Telecom Data Cup. Самое жаркое впереди

В начале ноября стартовал чемпионат по машинному обучению и анализу данных под кодовым названием Telecom Data Cup, организаторами которого являются Mail.Ru Group и МегаФон.

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

На текущее соревнование зарегистрировалось свыше 2500 пользователей, 1700 человек скачали датасет, загружено 7800 различных решений, а сообщество в чате перешагнуло отметку в 1600 участников. Завершится соревнование 16 декабря, поэтому пора уже вступать в бойцовский клуб, если вы еще не в нем. Приветствуем и помогаем всем. Кофе или что-то свое собственное и бодрящее вам в помощь 🙂

В футере статьи вы найдете полезные ссылки и материалы по этому и предыдущим соревнованиям. Главное, что уже сейчас вы погрузитесь в мир задачи Telecom Data Cup, что позволит вам быстро втянуться в процесс и получить удовольствие от настоящих исследований.
Читать дальше →
Граали соревнования Telecom Data Cup. Самое жаркое впереди
Source: habrahabr

Validators + Aspects: кастомизируем валидацию

Доброго времени суток, Хабр!

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

Проблема

Итак, суть приложения примерно такова: есть gateway — api, который принимает запрос, а в дальнейшем модифицирует и перенаправляет его соответствующему банку. Вот только запрос для каждого из банков отличался — как и параметры валидации. Поэтому валидировать изначальный запрос не представлялось возможным. Тут было два пути — использовать аннотации из javax.validation, либо писать свой отдельный слой валидации. В первом случае была загвоздка — по умолчанию объекты можно валидировать только в контроллере. Во втором случае так-же были минусы — это лишний слой, большое количество кода, да и в случае изменения моделей, пришлось бы менять и валидаторы.

Поэтому было принято решение найти способ дергать стандартные валидаторы там где это было необходимо, а не только в контроллере.

Дергаем валидаторы

Спустя пару часов копания в гугле были найдены пару решений, самое адекватное из которых было заавтовайрить javax.validation.Validator и вызвать у него метод validate, которому в качестве параметра нужно передать валидируемый объект.

Казалось бы, решение найдено, но автовайрить везде валидатор не казалось хорошей идеей, хотелось более элегантного решения.

Добавляем АОП

Недолго думая я решил попробовать адаптировать под это решение мною всеми любимые аспекты.

Логика была примерно следующей: создаём аннотацию, и вешаем её над методом который преобразует один объект в другой. Дальше в аспекте перехватываем все методы помеченные этой аннотацией и вызываем метод validate для возвращаемого ими значения. Профит.
Читать дальше →
Validators + Aspects: кастомизируем валидацию
Source: habrahabr

Heisenbug 2018 Moscow: бесплатная онлайн-трансляция, вечеринка и многое другое

Меньше недели осталось до конференции Heisenbug 2018 Moscow: она пройдет в «Славянской Рэдиссон» 6-7 декабря.

По традиции прямо на YouTube будет открыта бесплатная онлайн-трансляция первого зала (ссылка спрятана под катом). Между докладами будут вестись интервью с ключевыми спикерами конференции.

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

Читать дальше →
Heisenbug 2018 Moscow: бесплатная онлайн-трансляция, вечеринка и многое другое
Source: habrahabr

Gradle 5.0 — что нового

В процессе разработки CUBA мы применяли все три основных инструмента сборки — начали с Ant, потом перешли на Maven на короткое время, а сейчас используем Gradle и, похоже, что в ближайшее время останемся с ним.

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

image

Читать дальше →
Gradle 5.0 — что нового
Source: habrahabr

Форкни это: 8 проектов на Go, в исходном коде которых интересно покопаться

Мы в Binary District проводим интенсивы по Go. За два дня можно научиться понимать идеологию и внутренности Go, писать чистый тестируемый код. Но это первый шаг, а дальше — практика, практика, практика: читать чужой код, писать и править свой.

Для этого идеально подходит open source:

  • Open source повышает насмотренность. Можно невозбранно изучать исходники.
  • Open source дает стимул писать максимально чистый код и документировать логику.
  • Вклад в open source движение улучшает карму.

Вместе с выпускником нашего Go-курса Сергеем Tolsi мы составили список открытых проектов разного уровня и направленности, которые подходят, чтобы учиться писать хороший код и заодно делать мир лучше.
Читать дальше →
Форкни это: 8 проектов на Go, в исходном коде которых интересно покопаться
Source: habrahabr

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

От переводчика: Сицзян Ян, программист из Нью-Йорка, рассказывает о том, как искусство помогает ему практиковаться в кодинге.

Программирование сродни искусству. При этом другие виды искусства, в частности, музыка и рисование, могут многому научить программиста. Я надеюсь, что они помогут вам так же, как помогли в свое время мне.
Читать дальше →
Как музыка и рисование научили меня программировать
Source: habrahabr

Kali Linux для начинающих

14 декабря будет запущена новая «Test lab» — лаборатория тестирования на проникновение, имитирующая работу реальной корпоративной сети, в которой каждый желающий сможет проверить свои навыки тестирования на проникновение. Поскольку порог вхождения для выполнения всех заданий лаборатории достаточно высокий, мы решили выпустить небольшой гайд для начинающих по работе с Kali Linux 2018.4 — одним из самых популярных пентест-дистрибутивов, разработанного как преемник BackTrack и основного на Debian.
Читать дальше →
Kali Linux для начинающих
Source: habrahabr