Search
Write a publication
Pull to refresh
-29
@svr_91read⁠-⁠only

Пользователь

Send message

Недоступная роскошь от Intel: Core i9-9990XE с 14 ядрами на частоте 5,0 ГГц (1 часть)

Reading time15 min
Views54K


Intel выпустил свой самый быстрый потребительский процессор для настольных ПК: Core i9-9900KS, у которого все восемь ядер работают на частоте 5,0 ГГц. Вокруг нового процессора много шума, но не всем известно, что у компании уже есть процессор с тактовой частотой 5,0 ГГц, к тому же с 14 ядрами: Core i9-9990XE. Эта крайне редкая вещь не доступна для обычных потребителей: Intel продает ее только избранным партнерам, и только через аукцион, один раз в квартал, и без каких-либо гарантий со своей стороны. Сколько бы вы заплатили за такую роскошь? Ну что ж, нам удалось раздобыть один из этих монстров, чтобы проверить насколько он хорош.
Читать дальше →

Как спутниковая система «Галилео» отключилась из-за организационной неразберихи и прочих проблем

Reading time5 min
Views12K

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




Начинают проявляться ключевые детали касательно отказа европейской спутниковой навигационной системы "Галилео", произошедшего этим летом, — и они оказываются достаточно неприглядными.

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

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

Rust для веб-разработчика — быстрый старт и стремительный полет

Reading time21 min
Views30K
Всем привет! Сегодня хочу поделиться опытом изучения языка и быстрой реализации высоконагруженного сетевого проекта, использующего так популярные и востребованные сейчас неблокирующие асинхронные сетевые соединения, на новом, красивом, элегантном и очень эффективном языке Rust.
Особый упор в посте сделаю на быстрое и ясное объяснение возможностей языка и платформы специалистам, имеющим большой опыт в веб-разработке, ибо сам таким и являюсь. Существует заблуждение, что кривая вхождения в Rust — очень-очень крутая. Но я покажу, что это далеко не так. Наливаем кофе и погнали!
Читать дальше →

Тесты Ryzen Threadripper 3960X и 3970X показали, что это действительно революционные CPU

Reading time6 min
Views90K


За последние два десятилетия не так часто появлялись CPU, которые можно назвать «революционными». Но компании AMD в ноябре 2019 года удалось сделать это. Первые тесты процессоров Ryzen Threadripper 3960X и 3970X (24 и 32 ядра, 7 нм, Zen 2) показывают, что это совершенно новый уровень производительности практически во всех приложениях, см. тесты Phoronix, тесты ExtremeTech, бенчмарки AnandTech, тесты Hot Hardware и др.

В тот же день 25 ноября Intel выпустила 18-ядерный Core i9 10980XE (Cascade Lake, минус тысяча долларов к цене). Впервые в истории Intel и AMD выпустили процессоры в один день.

С результатами тестов у нас теперь есть полная картина, и можно сделать вывод: Intel и AMD поменялись местами на рынке. Теперь уже AMD выпускает самые быстрые и дорогие процессоры. Intel не может сравниться с ними по производительности, поэтому вынуждена конкурировать со вторым эшелоном процессоров от AMD. Вот почему Intel пришлось кардинально снижать цены.
Читать дальше →

Intel oneAPI — один за всех, теперь — и для вас

Reading time3 min
Views12K
Итак, случилось то, о чем еще с июля месяца говорила компания Intel — вышла бета-версия Intel oneAPI Toolkits, набора инструментов для разработки, с которыми жизнь больше не будет прежней. В состав набора, как и обещалось, вошел компилятор нового языка Data Parallel C++, набор библиотек для API-программирования и комплект средств для анализа и отладки приложений. Под катом — обо всем этом более подробно.

И да, тулкит уже можно скачивать, ставить и пробовать — ссылки в конце статьи. А можно пробовать, но не скачивать — есть и такой вариант, о нем тоже расскажу.


Читать дальше →

JSON-RPC? Возьмите хитрый REST

Reading time6 min
Views34K


Уверен, что заголовок вызвал здоровую реакцию — “ну опять началось…” Но позвольте завладеть вашим вниманием на 5-10 минут, и я постараюсь не обмануть ожидания.


Структура статьи будет такова: берется стереотипное утверждение и раскрывается “природа” возникновения этого стереотипа. Надеюсь, это позволит взглянуть на выбор парадигмы обмена данными в ваших проектах под новым углом.


Для того, чтобы была ясность в том, что такое RPC, предлагаю рассматривать стандарт JSON-RPC 2.0. C REST ясности нет. И не должно быть. Все, что нужно знать о REST — он неотличим от HTTP.

Читать дальше →

Выявляем процессы с дисковой активностью в Linux

Reading time13 min
Views85K
TL;DR: статья рассказывает об удобном, быстром и надежном способе определения Linux-программ, записывающих данные на диск, что помогает в выявлении большой или аномально частой нагрузки на дисковую подсистему, а также позволяет оценить накладные расходы файловой системы. Это особенно актуально для SSD в ПК, EMMC и Flash-памяти в одноплатных компьютерах.
В ходе написания статьи обнаружилось, что запись нескольких килобайт данных на файловую систему BTRFS приводит к записи 3 мегабайт реальных данных на диск.

Введение

«Ой, ерунда, ячейки памяти на современных SSD выйдут из строя через десятки лет обычного использования, не стоит об этом беспокоиться, и уж тем более переносить swap, виртуальные машины и папку профиля браузера на HDD» — типичный ответ на вопрос о надежности твердотельных накопителей c гарантированными ≈150 TBW. Если прикинуть, сколько типичное ПО может писать данных, то кажется, что 10-20 ГБ в сутки — уже большая цифра, пусть будет максимум 40 ГБ, куда уж больше. При таких цифрах ответ вполне разумен — нужно 10 лет, чтобы достичь гарантированных значений по количеству перезаписи ячеек, при 40 ГБ записанных данных ежедневно.
Однако за 6 лет я пользуюсь уже третьим SSD: у первого вышел из строя контроллер, а второй начал перемещать данные между ячейками несколько раз в день, что оборачивалось 30-секундными задержками в обслуживании записи.

После 7 месяцев использования нового SSD я решил проверить количество записанных данных, как их сообщает сам диск через SMART.
19.7 ТБ.
Всего за 7 месяцев я использовал 13% от гарантированного количества записанных данных, притом, что он настроен в соответствии с рекомендациями по выравниваю разделов и настройке ФС, swap у меня почти не используется, диски виртуальных машин размещены на HDD!
Читать дальше →

Как мы внедряли WebAssembly в Яндекс.Картах и почему оставили JavaScript

Reading time7 min
Views31K
Меня зовут Валерий Шавель, я из команды разработки векторного движка Яндекс.Карт. Недавно мы внедряли в движок технологию WebAssembly. Ниже я расскажу, почему мы её выбрали, какие результаты получили и как вы можете использовать эту технологию в своём проекте.


Читать дальше →

Возвращение «Эпохи империй»: всё, что известно про Age of Empires IV

Reading time15 min
Views63K

На прошедшей неделе в ночь с четверга на пятницу на конференции X019 в Лондоне произошло долгожданное событие — компания Microsoft показала геймплей продолжения знаменитой стратегической серии Age of Empires IV. На первый взгляд проект, окруженный «туманом войны» на протяжении вот уже нескольких лет, напоминает выполненный в 3D ремейк Age of Empires II — самой популярной части серии, в которую до сих пор играют миллионы любителей RTS и истории. Предупреждаем: «кидать деньги в монитор» пока ещё рано — игровые издания называют ориентировочной датой релиза 2020 2021 год.

Под катом вас ждет рассказ о том, почему выхода новой Age of Empires пришлось ждать целых 15 лет, максимум известных подробностей про четвертую часть легендарной стратегической серии, а также обзор закрытого показа игры, основанный на показаниях свидетелей и игровой прессы.

Самые позорные ошибки в моей карьере программиста (на текущий момент)

Reading time8 min
Views125K

Как говорится, если тебе не стыдно за свой старый код, значит, ты не растешь как программист — и я согласна с таким мнением. Я начала программировать для развлечения более 40 лет назад, а 30 лет назад и профессионально, так что ошибок у меня набралось очень много. Будучи профессором информатики, я учу своих студентов извлекать уроки из ошибок — своих, моих, чужих. Думаю, пришло время рассказать о моих ошибках, чтобы не растерять скромность. Надеюсь, кому-то они окажутся полезны.
Читать дальше →

Баги C++20. Итоги встречи в городе Белфаст

Reading time5 min
Views13K
На днях прошла встреча комитета по стандартизации языка программирования C++ в городе Белфасте. От представителей стран в комитет прилетело около 400 замечаний к C++20, с половиной из них успели расправиться.

Под катом вас ждут результаты обсуждений замечаний России (да-да, ВАШИХ замечаний к C++20), некоторые замечания других стран, ну и подходящие новинки C++23 (Executors!).
Читать дальше →

Инкремент элементов вектора

Reading time13 min
Views17K
В каком случае инкремент элементов вектора std::vector будет быстрее – если они имеют тип uint8_t или uint32_t?

Чтобы не рассуждать отвлечённо, рассмотрим две конкретные реализации:

void vector8_inc(std::vector<uint8_t>& v)
{
  for (size_t i = 0; i < v.size(); i++)
  {
    v[i]++;
  }
}

void vector32_inc(std::vector<uint32_t>& v)
{
  for (size_t i = 0; i < v.size(); i++)
  {
    v[i]++;
  }
}
Попробуем угадать

Необычные системные вызовы на Linux

Reading time17 min
Views25K

ls /usr/share/man/man2/


Что видит программист, начиная работать с языком C? Он видит fopen, printf, scanf и ещё много других функций. Видит он и всякие open и mmap — казалось бы, зачем их выделять? Но, в отличие от первой группы, эти две функции при выполнении на ядре Linux являются системными вызовами (на самом деле нет, почти никогда системный вызов нельзя просто вызвать как функцию, и поэтому libc содержит обёртки, перепаковывающие аргументы и иногда, как в случае с тем же open, заменяющие старые системные вызовы более общими новыми). Вообще, в отличие от тысяч библиотечных функций, доступных на типичной GNU/Linux системе, интерфейс ядра имеет довольно ограниченное количество точек входа — порядка нескольких сотен, зато то, что для user space — crash (например, обращение к отсутствующей странице), для ядра — default mode of operation.


В этой статье я расскажу некоторые интересные на мой взгляд факты. В ней не будет futex-ов и прочих скучных (наверное) деталей реализации. Будет преимущественно то, что вызывало у меня реакцию «А что, так можно было?!?».

Читать дальше →

Сказ об опасном std::enable_shared_from_this, или антипаттерн «Зомби»

Reading time26 min
Views31K
В статье приводится опасный антипаттерн «Зомби», в некоторых ситуациях естественным образом возникающий при использовании std::enable_shared_from_this. Материал — где-то на стыке техники современного C++ и архитектуры.
Читать дальше →

Советские супергерои, чешские козявки и австралийский клон

Reading time7 min
Views18K
В статье «Как фантаст Артур Кларк чуть не закрыл журнал «Техника — молодежи»» я пообещал как-нибудь в пятницу рассказать о том, как главный редактор «Веселых картинок» чуть не погорел на букашках — в самом прямом смысле слова.

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

image

У журнала есть четко фиксированный день рождения — 24 сентября 1956 года. В этот день увидел свет первый номер журнала «Веселые картинки» — первого советского журнала для дошкольников.

Счастливым (и многодетным) отцом было постановление партии и правительства «О развитии детской литературы и детской периодики», вышедшее в начале 1956 года. Через несколько месяцев после его появления количество детских журналов в стране удвоилось — уже в сентябре в компанию к «Мурзилке», «Пионеру» и «Костру» добавились «Юный техник», «Юный натуралист» и «Веселые картинки», выпустившие свои первые номера.
Читать дальше →

Город засыпает, просыпаются хабровчане

Reading time4 min
Views24K
Если количество комментариев под статьёй стремительным домкратом приближается к 1000, будьте уверены — независимо от заявленной автором темы внутри бушует срач: очаги возгорания политоты, окружённые диванными экспертами по всем вопросам, психиатрические диагнозы на расстоянии по аватарке и никнейму, переходы на личности, саркастические выпады, едкость которых превышает таковую у крови ксеноморфов, и, конечно же, обязательное в таких случаях блюдо — взаимные обвинения в том, что ваш визави с вами дискутирует исключительно за вознаграждение и\или по долгу службы. Которая, видимо, и опасна и трудна, и на первый взгляд как будто не видна, а тридцать серебренников на дороге не валяются.

Самое забавное в такой ситуации это то,
Читать дальше →

Сколько зарабатывали разработчики разных квалификаций в первом полугодии 2019

Reading time5 min
Views34K
image

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

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

Как всегда, для исследования мы берем данные из калькулятора зарплат «Моего круга», в котором пользователи указывают зарплаты, получаемые ими на руки после вычета всех налогов, и могут также смотреть любые другие зарплаты в ИТ.
Читать дальше →

Просто и на C++. Основы userver — фреймворка для написания асинхронных микросервисов

Reading time6 min
Views44K
В Яндекс.Такси придерживаются микросервисной архитектуры. С ростом количества микросервисов мы заметили, что разработчики много времени тратят на boilerplate и типичные проблемы, при этом решения не всегда получаются оптимальные.

Мы решили сделать свой фреймворк, с C++17 и корутинами. Вот так теперь выглядит типичный код микросервиса:

Response View::Handle(Request&& request, const Dependencies& dependencies) {
  auto cluster = dependencies.pg->GetCluster();
  auto trx = cluster->Begin(storages::postgres::ClusterHostType::kMaster);

  const char* statement = "SELECT ok, baz FROM some WHERE id = $1 LIMIT 1";
  auto row = psql::Execute(trx, statement, request.id)[0];
  if (!row["ok"].As<bool>()) {
    LOG_DEBUG() << request.id << " is not OK of " << GetSomeInfoFromDb();
    return Response400();
  }

  psql::Execute(trx, queries::kUpdateRules, request.foo, request.bar);
  trx.Commit();

  return Response200{row["baz"].As<std::string>()};
}

А вот почему это крайне эффективно и быстро — мы расскажем под катом.
Читать дальше →

Что не так с std::visit в современном C++

Reading time6 min
Views44K

Сигма-тип и вы


Давайте поговорим о простой, но мощной концепции в программировании — сигма-типах.

Сигма-тип (тип-сумма, меченное объединение) может содержать значения одного и только одного из нескольких типов. Например, рассмотрим настройки в INI-подобном файле конфигурации. Пусть каждая настройка может быть строкой, целым или булевым значением. Если бы мы хотели сделать свою библиотеку на C++, мы бы написали что-то вроде этого:
Читать дальше →

Бинарная совместимость: сейчас или никогда

Reading time6 min
Views11K

Перевод публикации Тита Винтерса в рабочей группе 21 (WG21) — комитета по стандартизации языка C++. Автор обсуждает важный вопрос: поддержку обратной бинарной совместимости или ABI (application binary interface).

В течение последних лет в WG21 я активно пропагандировал то, что прогресс важнее обратной совместимости. Но я сам перестаю в это верить, особенно в отношении поддержания бинарной совместимости (ABI).

Читать дальше →

Information

Rating
Does not participate
Registered
Activity