Как стать автором
Обновить
0
0

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

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

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

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


За последние два десятилетия не так часто появлялись 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 пришлось кардинально снижать цены.
Читать дальше →
Всего голосов 70: ↑69 и ↓1+68
Комментарии295

Вышел Windows Terminal Preview 0.7

Время на прочтение3 мин
Количество просмотров16K
Представляем новый релиз Windows Terminal preview! Это выпуск v0.7. Как и всегда вы можете скачать Terminal из Microsoft Store или со страницы релиза на GitHub. А вот и новинки:

Обновления Windows Terminal


Панели (panes)


Теперь вы можете разделить окно терминала на несколько панелей! Это позволяет одновременно открывать несколько командных строк на одной вкладке.

Заметка: В настоящее время вы можете открыть свой профиль по умолчанию только на новой панели. Открытие профиля по вашему выбору — это опция, которую мы планируем включить в будущий выпуск.



Читайте подробнее об остальных новинках под катом.
Читать дальше →
Всего голосов 20: ↑19 и ↓1+23
Комментарии20

Redis — главное хранилище? Что за хрень?!

Время на прочтение8 мин
Количество просмотров295K
Redis это размещаемое в памяти хранилище ключ-значение, обычно используемое для кэшей и подобных механизмов ускорения сетевых приложений. Мы, тем не менее, храним все наши данные в Redis — в нашей главной базе данных.

Сеть полна предупреждений и предостерегающих повествований об использовании подобного подхода. Есть ужасающие истории о потере данных, исчерпании памяти или людях неспособных эффективно управлять данными в Redis, вы, возможно, интересуетесь «О чём вы вообще думаете?». Так вот, наш рассказ, почему мы всё же решили использовать Redis и как мы преодолели все эти проблемы.
Читать дальше →
Всего голосов 64: ↑59 и ↓5+54
Комментарии31

Высокий CRI по-китайски

Время на прочтение2 мин
Количество просмотров43K
На Aliexpress начали появляться светодиодные лампы, в описании которых продавцы указывают высокий индекс цветопередачи CRI 90. Я протестировал две такие лампы и как вы думаете, какой там CRI?

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

Podman и Buildah для пользователей Docker

Время на прочтение10 мин
Количество просмотров59K
Хотя есть много хороших блогов и учебников по Podman и Buildah, пользователям Docker явно не хватает ясных и четких разъяснений на тему, как им перейти на Podman, зачем нужен Buildah и в других вопросах подобного рода.



Постараемся ответить на эти вопросы и рассказать, как безболезненно мигрировать с Docker на Podman.
Читать дальше: Podman и Buildah для пользователей Docker
Всего голосов 18: ↑15 и ↓3+12
Комментарии49

Почему никто не может «побить» пробег Теслы

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

Изображение: Audi AG

На этой неделе я совершил ошибку. Я твитнул. Я твитнул что, мол, мне, конечно, нравится Porche Taycan, но я немного разочарован тем, что он, спустя столько лет после выхода оригинальной Tesla Model S так и не смог превзойти ее пробег. И пока я придерживался мнения, что Taycan фундаментально вообще ничего не изменил, Audi нашли время и объяснили что конкретно принесли на рынок электромобили не от Tesla.
Читать дальше →
Всего голосов 74: ↑65 и ↓9+56
Комментарии348

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

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

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


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

Архив олимпиадных задач по физике для школьников

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

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

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

Как работает конфигурация в .NET Core

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

Давайте отложим разговоры о DDD и рефлексии на время. Предлагаю поговорить о простом, об организации настроек приложения.


После того как мы с коллегами решили перейти на .NET Core, возник вопрос, как организовать файлы конфигурации, как выполнять трансформации и пр. в новой среде. Во многих примерах встречается следующий код, и многие его успешно используют.


public IConfiguration Configuration { get; set; }
public IHostingEnvironment Environment { get; set; }

public Startup(IConfiguration configuration, IHostingEnvironment environment)
{
   Environment = environment;
   Configuration = new ConfigurationBuilder()
            .AddJsonFile("appsettings.json")
            .AddJsonFile($"appsettings.{Environment.EnvironmentName}.json")
            .Build();
}

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

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

.NET зоопарк под призмой NET Core

Время на прочтение3 мин
Количество просмотров15K
Всем привет! Сегодня мы рассмотрим разные фишки и изменения, которые появились в .NET Core платформе и сравним их с Framework. Я разбил статью на модули для более лучшего понимания. Эта статья будет интересна тем кто собирается переходить на .NET Core или уже использует его.

Stack technology


В данный момент у нас есть три платформы: .NET Framework, Mono и .NET Core. Каждая платформа включает в себя следующие технологии:

NET Framework — WPF, WinForms, ASP.NET (DNX реализация), WCF
NET Core — UWP, ASP.NET Core, WA, Xamarin (.NET Standard), Avalonia and other
Mono — Xamarin (PCL, Share project), Unity, ASP.NET, WinForms (cross platform)
NET Core (3.0) — Всё тоже самое, что и у .NET Core выше + WPF и WinForms, ML.NET

NET Standard


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

Cross Platform


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

Логирование всех запросов к Базе данных в Asp.Net Boilerplate 4.3 .Net Core 2.1

Время на прочтение4 мин
Количество просмотров5.5K
Часто в проекте возникает непонятная ошибка для которой необходимо максимальное логирование всех запросов к Базе данных. Статья поможет тем, кто пишет (развертывает на сервере) один из своих первых проектов на Asp.Net Boilerplate.
Читать дальше →
Всего голосов 11: ↑9 и ↓2+7
Комментарии0

Так все-таки RAML или OAS (Swagger)?

Время на прочтение7 мин
Количество просмотров13K
В динамичном мире микросервисов измениться может все что угодно — любой компонент можно переписать на другом языке, используя иные фреймворки и архитектуру. Неизменными должны оставаться лишь контракты, для того, чтобы с микросервисом можно было взаимодействовать извне на некой постоянной основе, вне зависимости от внутренних метаморфоз. И сегодня мы расскажем о нашей проблеме выбора формата описания контрактов и поделимся найденными артефактами.


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

CLRium #6: Парный доклад про Lock-Free, много теории и практически-полезных знаний

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

Совсем скоро, 29-30 ноября в Санкт-Петербурге и 06-07 декабря — в Москве мы запустим шестой семинар по .NET. На этот раз — по теме многопоточки и конкурентности. Мы уже писали об этом пару раз на Хабре, но сегодня — День Программиста и есть отличный повод дать вам всем комплимент: скидку на его посещение.


У меня для вас есть новость: мы с Андреем Гончаровым, моим хорошим другом и соратником решили сделать для вас доклады по lock-free, выступая вместе. Мне показалось, это должно сильно оживить атмосферу выступления. Андрей сейчас закапывается в эту тему так, что иногда его приходится даже останавливать: доклады будут очень интересными и полезными.


Юрий Власов, мой второй коллега нашёл библиотеку Microsoft.VisualStudio.Threading, которую с удовольствием использует в проектах. Он решил поведать вам о её богатых возможностях и применимости в различных задачах. Этот доклад отлично завершит тему lock-free, закрыв вопросы теории, оценки сложностей, анализа существующих алгоритмов и построения собственных вопросом хорошей реализации в виде промышленной библиотеки.


В честь Дня Программиста мы ввели промокод: CLRiumDevDay. Он действует всего-лишь два дня, когда можно забронировать билеты. Далее — вы имеете 5 дней на оплату билетов.
Первый день — скидка = 25%, второй = 15%

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

Мониторинг .NET приложений

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

.NET – управляемая среда выполнения. Это означает, что в ней представлены высокоуровневые функции, которые управляют вашей программой за вас (из Introduction to the Common Language Runtime (CLR), 2007 г.):


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

  1. Основные функции, которые влияют на устройство других. К ним относятся:
    1. сборка мусора;
    2. обеспечение безопасности доступа к памяти и безопасности системы типов;
    3. высокоуровневая поддержка языков программирования.
  2. Дополнительные функции– работают на базе основных. Многие полезные программы обходятся без них. К таким функциям относятся:
    1. изолирование приложений с помощью AppDomains;
    2. защита приложений и изолирование в песочнице.
  3. Другие функции – нужны всем средам выполнения, но при этом они не используют основные функции CLR. Такие функции отражают стремление создать полноценную среду программирования. К ним относятся:
    1. управление версиями;
    2. отладка/профилирование;
    3. обеспечение взаимодействия.

Видно, что хотя отладка и профилирование не являются основными или дополнительными функциями, они находятся в списке из-за ‘стремления создать полноценную среду программирования’.


Всего голосов 21: ↑20 и ↓1+19
Комментарии2

ValueTask<TResult> — почему, зачем и как?

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

Предисловие к переводу


В отличие от научных статей, статьи данного типа сложно переводить "близко к тексту", приходится проводить довольно сильную адаптацию. По этой причине приношу свои извинения, за некоторую вольность, с моей стороны, в обращении с текстом исходной статьи. Я руководствуюсь лишь одной целью — сделать перевод понятным, даже если он, местами, сильно отклоняется от исходной статьи. Буду благодарен за конструктивную критику и правки / дополнения к переводу.


Введение


Пространство имен System.Threading.Tasks и класс Task впервые были представлены в .NET Framework 4. С тех пор, этот тип, и его производный класс Task<TResult>, прочно вошли в практику программирования на .NET, стали ключевыми аспектами асинхронной модели, реализованной в C# 5, с его async/await. В этой статье я расскажу о новых типах ValueTask/ValueTask<TResult>, которые были введены с целью повышения производительность асинхронного кода, в тех случаях, когда ключевую роль играют накладные расходов при работе с памятью.


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

ConfigureAwait, кто виноват и что делать?

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

В своей практике я часто встречаю, в различном окружении, код вроде того, что приведен ниже:


[1] var x = FooWithResultAsync(/*...*/).Result;

//или
[2] FooAsync(/*...*/).Wait();

//или
[3] FooAsync(/*...*/).GetAwaiter().GetResult();

//или
[4] FooAsync(/*...*/)
    .ConfigureAwait(false)
    .GetAwaiter()
    .GetResult();

//или
[5] await FooAsync(/*...*/).ConfigureAwait(false)

//или просто
[6] await FooAsync(/*...*/)

Из общения с авторами таких строк, стало ясно, что все они делятся на три группы:


  • Первая группа, это те, кому ничего не известно о возможных проблемах с вызовом Result/Wait/GetResult. Примеры (1-3) и, иногда, (6), типичны для программистов из этой группы;
  • Ко второй группе относятся программисты, которым известно о возможных проблемах, но они не знают причин их возникновения. Разработчики из этой группы, с одной стороны, стараются избегать строк вроде (1-3 и 6), но, с другой, злоупотребляют кодом вроде (4-5);
  • Третья группа, по моему опыту самая малочисленная, это те программисты, которые знают о том, как код (1-6) работает, и, поэтому, могут сделать осознанный выбор.

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


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

Как перепрограммировать режим сна: 30 дней каждое утро я светил ярким зеленым светом себе в глаза

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

Как я себя чувствовал во время испытаний.

Исходные условия: засыпаю перед рассветом, просыпаюсь в обед.
Желаемый результат: просыпаться в 7-9 утра без будильника.
Способ: 1 месяц тестировать очки «для просыпания».

И вот что из этого вышло.
Читать дальше →
Всего голосов 58: ↑47 и ↓11+36
Комментарии201

Как выстроить процессы и перестать издеваться над командой

Время на прочтение10 мин
Количество просмотров57K
Всем привет! Сегодня хотел поговорить о процессах разработки. По мере роста компании не только развивается сам бизнес, но и копятся проблемы внутри, в частности в процессе разработки. Часто их пытаются решить внедрением каких-то практик и новомодных методологий. Увы, это насильное перестраивание процесса по книжкам и тренингам нередко это приводит к ещё большим проблемам — издевательству над людьми.

Недавно я выступал на конференции Saint TeamLead Conf 2019, в докладе я рассказал о том, как смог найти ряд проблем в рабочем процессе и потом постепенно поборол их. Здесь я постараюсь описать наиболее ценные практики, которые мне помогли не только наладить рабочий процесс, но и перестать издеваться над разработчиками. У сотрудников изменилось отношение к компании в целом и рабочему процессу.
Всего голосов 48: ↑46 и ↓2+44
Комментарии34

Разворачиваем и демонизируем ASP.NET Core приложение под Linux в виде фонового сервиса

Время на прочтение5 мин
Количество просмотров76K
Доброго дня, господа. Сегодня мы затронем тему, за обсуждение которой ещё два года назад сожгли бы на костре — запуск ASP.NET приложения под linux. В данной статье будет использоваться Ubuntu 16.04
Читать дальше →
Всего голосов 24: ↑21 и ↓3+18
Комментарии26

Использование Identity Server 4 в Net Core 3.0

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

Введение


На одном из моих поддерживаемых проектов недавно встала задача проанализировать возможность миграции с .NET фреймворка 4.5 на .Net Core по случаю необходимости рефакторинга и разгребания большого количества накопившегося технического долга. Выбор пал на целевую платформу .NET Core 3.0, так как, судя по утверждению разработчиков от Microsoft, с появлением релиза версии 3.0, необходимые шаги при миграции legacy кода уменьшатся в несколько раз. Особенно нас в нем привлекли планы выхода EntityFramework 6.3 для .Net Core т.е. большую часть кода, основанную на EF 6.2, можно будет оставить «как есть» в мигрированном проекте на net core.


С уровнем данных, вроде, стало понятно, однако, еще одной большой частью по переносу кода остался уровень безопасности, который, к сожалению, после беглых выводов аудита придется почти полностью выкинуть и переписать с нуля. Благо, на проекте уже использовалась часть ASP NET Identity, в виде хранения пользователей и других приделанных сбоку «велосипедов».


Тут возникает логичный вопрос: если в security часть придется вносить много изменений, почему бы сразу же не внедрить подходы, рекомендуемые в виде промышленных стандартов, а именно: подвести приложение под использование Open Id connect и OAuth посредством фреймворка IdentityServer4.

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

Информация

В рейтинге
Не участвует
Зарегистрирован
Активность