• ASP.NET MVC – работаем с MySQL через ADO.NET
    0
    Если начинать изучать, то лучше сразу с ASP.NET Core и Entity Framework Core. Для MySQL лучше использовать MySqlConnector.
  • Еще 9 хитростей для работы с Visual Studio
    0
    Rider хорош, но вот как работать в команде, если у всех только студия? Но как альтернатива покупке Resharper'а может некоторым и зайдёт.
  • Использование мыши и клавиатуры на консолях — это читерство?
    +9

    или диванных оставить в своей песочнице, а клава-мышей кидать к пк-шникам

  • Использование мыши и клавиатуры на консолях — это читерство?
    0

    В Fortnite долгое время был просто зверский L2R2 (прицел-выстрел) auto-aim. И все клава-мышеры писали кипятком от постоянных хедшотов. Поэтому конкретно в Fortnite проблема скорее не в прицеливании, а в недостатке кнопок (привет Scuf). А так многие профессионалы играют только на джойстике.

  • Представлен .NET 5
    0
    С .net 4.7 новых фишек вообще не было последние 2 года, а с выходом 4.8 особо ничего не изменилось.
  • Представлен .NET 5
    0
    А меня наоборот пугают такие веяния. Сейчас .NET Core кажется более независимым от LTS цикла и развивается настолько быстро насколько вообще может. А так получается что новые фишки будут приходить только раз в год. Я больше за то, чтобы .NET Framework 5 был более стабильным подмножеством .NET Core с LTS.
  • Настройка НА-кластера Kubernetes на «голом железе» с kubeadm. Часть 1/3
    +1

    Отличная статья, спасибо. Ещё хотелось бы узнать про dynamic volume provisioning на bare-metal.

  • Пакуем приложения ASP.NET Core с помощью Docker
    0
    Базовые образы уже давно поменялись:
    для сборки: microsoft/dotnet:2.2-sdk
    для публикации: microsoft/dotnet:2.2-aspnetcore-runtime
    и минимальные образы: microsoft/dotnet:2.2-aspnetcore-runtime-alpine
    И уже в альфе 3.0 версия которая будет запускаться исключительно на netcoreapp 3.0.
  • Руководство по Kubernetes, часть 2: создание кластера и работа с ним
    0

    Материал изложен прекрасно. Но к сожалению (а может и к счастью) обходит стороной реальный процесс настройки кластера (kubeadm, kops, terraform) и принцип работы его основных компонентов (kubelet, kube-proxy, kube-apiserver, kube-scheduler, kube-controller-manage и прочие).

  • Рабочее место и 4k@60Hz
    0

    Для работы я бы рекомендовал покупать мониторы с USB Type-C входом, например: Samsung S27H850QFN. У LG есть получше. Монитор + зарядка (Power Delivery) + USB-хаб и всего один провод на столе.

  • Анализ трендов российского YouTube за 2018 год
    0

    Тренд Ютуба. Бессмысленный и беспощадный. Но функционал полезный.

  • Как устроена система видеонаблюдения Ivideon: обзор мобильного приложения
    0
    Внедрение web real-time communications снизило задержку живого видео с камер в 5-7 раз

    Это по сравнению с чем? HLS? Какова вообще реальная задержка real-time видео?
  • Очередная статья о том, как выбрать смартфон
    +1

    Есть ли вообще смартфоны без фронталки с большим дисплеем (свыше 90% площади) и с нормальными характеристиками?

  • «ИТ КРЫМ»: новый технопарк в Севастополе — он начнет работать в конце этого года
    +1
    В цивилизованном мире Крым — это часть Украины, аннексированная Россией.
  • Квест, который никто не может пройти
    0
    Виндузятникам привет от тИШ ЁЯдЦ тИй ЁЯНП
  • Обзор смартфона Neffos N1
    0

    Почитайте про ARM big.LITTLE. В кратце, так проще оптимизировать энергоэффективность.

  • Создаем простой API-шлюз в ASP.NET Core
    +2

    Осталось прикрутить X-Forwarded-*, Load Balancer, кеширование и… тогда легче настроить nginx или HAProxy.

  • Обзор OnePlus 6. Когда китайцы сделали все то же самое, что и в прошлый раз
    0
    — Скорость порта на уровне 2.0
    — Нет поддержки USB Type-C Alt Mode (USB 3.1)
    — Нет поддержки Quick Charge (только свой Dash Charge)
    Говорят, это всё из-за Dash Charge от Oppo, который распиновкой не совместим со стандартом 3.1.
  • Обзор OnePlus 6. Когда китайцы сделали все то же самое, что и в прошлый раз
    0
    Из минусов — это конечно же их USB Type-C порт, с кучей ограничений. Хотя я на своём 3T его использую только для зарядки. Также непонятно почему не добавили беспроводную зарядку, раз задняя стенка сделана из стекла. Габариты всего на пару мм больше 3Т, так что это скорее плюс.
    Из плюсов — топовое железо, отличная прошивка, сборка и поддержка (до сих пор получаю обновления) и переключатель режимов.
    Купил бы шестёрку, если бы не мой 3Т. Пока нет смысла менять. Всё очень нравится.
  • Бизнес комментирует Geektimes веерную блокировку IP-адресов
    0

    Аналогично, из-за блокировки DO деградировали просмотры. Хорошо что только файл-сервер, поэтому скопировали всё на основной. Боюсь уже произносить имя одного лоукост хостера из Германии, а то и его заблокируют.

  • 10 главных огорчений программистов
    0

    Я бы добавил работу со старым (legacy) кодом на старых технологиях.

  • 10 главных огорчений программистов
    0

    А я люблю читать чужой код. Начиная от предыдущих работников и заканчивая декомпилированными библиотеками (.net). Очень часто довольно интересные подходы нахожу и копирую себе.

  • Устройство защиты от искрения УЗИс-С1-40
    0

    Интересно, а оно совместимо с PLC модемами?

  • Как приставка под Android TV изменила наше восприятие контента
    +1
    Печальная тенденция, когда под конец 2017 года большинство телевизоров идёт со 100 Мбитным портом…
  • Жизнь после запрета Google Global Cache: Последствия для провайдеров и клиентов
    0
    Чисто гипотетически, если вместо железяки будет запущена виртуалка, это как-то повлияет на решение РКМ?
  • Skype For Linux перестал поддерживать процессоры AMD старше 5 лет
    +1
    Похожее уже было со Skype для Windows. После версии 6.1.999.130 они добавили поддержку SSE2 и тем самым сломали обратную совместимость с процессорами AMD Athlon (в моём случае 1800+).
  • MVVM: полное понимание (+WPF) Часть 1
    0

    Я вам не могу ничего запрещать ) но на мой лично субъективный взгляд это немного не правильно. В таком случае лучше передавать в DelegateCommand просто object и через внешний Service/Manager связывать переданный ViewModel с соответствующей View, например, как это сделано в Caliburn.Micro:


    ConfirmCommand = new DelegateCommand<object>(owner =>
    {
      var confirmViewModel = new ConfirmViewModel();
      var settings = new Dictionary<string, object>
      {
        { "Owner", owner }
      };
    
      if (WindowManager.ShowDialog(confirmViewModel, null, settings) == true)
      {
        // do some action
      }
    }
  • MVVM: полное понимание (+WPF) Часть 1
    0

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

  • MVVM: полное понимание (+WPF) Часть 1
    0

    В Caliburn Micro есть IWindowManager.ShowDialog(object viewModel). А в Prism это решалось event+behavior. Но однозначно не стоит создавать Window во ViewModel.

  • Adobe случайно опубликовала в блоге свой секретный ключ PGP
    +1

    Шифруют как бы открытым ключём. Иначе какой смысл. Закрытый используют для отпечатка/подписи. Зная закрытый, можно расшифровать все письма к Adobe.

  • Основы CQRS
    –1
    или ещё один пример:
    // contract.dll
    public class ProductData { ... }
    
    public class CreateProduct : ICommand { ... }
    public class ProductCreated : IEvent { ... }
    public class GetProductById : IQuery<ProductData> { ... }
    public class SearchProducts : IQuery<List<ProductData>> { ... }
    
    // api.exe
    public class ProductController
    {
      private IDispatcher _dispatcher;
    
      public void Create(CreateProductModel model)
      {
        _dispatcher.Execute(new CreateProduct { ... });
      }
    
      public ProductModel Get(int id)
      {
        var productData = _dispatcher.Query(new GetProductById { ... });
    
        return new ProductModel { ... };
      }
    
      public List<ProductModel> Search(string query)
      {
        var productsData = _dispatcher.Query(new SearchProducts { ... });
    
        return new List<ProductModel>(...)
      }
    }
    
    // domain.exe
    public class ProductDomainHandler : ICommandHandler<CreateProduct>, IQueryHandler<GetProductById, ProductData>
    {
      private IDispatcher _dispatcher;
      private IProductRepository _repository;
      
      public void Handle(CreateProduct command)
      {
        var product = new Product(...);
    
        _repository.Insert(product);
    
        _dispatcher.Publish(new ProductCreated { ... });
      }
    
      public ProductData Handle(GetProductById query)
      {
        var product  = _repository.GetById(...);
    
        return new ProductData { ... };
      }
    }
    
    // index.exe
    public class ProductIndexHandler : IEventHandler<ProductCreated>, IQueryHandler<SearchProducts, List<ProductData>>
    {
      private IDispatcher _dispatcher;
      private IElasticClient _client;
    
      public void Handle(ProductCreated event)
      {
        var productData = _dispatcher.Query(new GetProductById { ... });
    
        _client.Index(productData);
      }
    
      public List<ProductData> Search(SearchProducts query)
      {
        var data = _client.Search(...);
    
        return data;
      }
    }
    

    И что самое интересное, вам даже не обязательно разносить по разным процессам, просто переименуйте в domain.dll и index.dll и запускайте внутри одного процесса, минуя AMQP.
  • Основы CQRS
    –1
    Приведу пример:
    // contract.dll
    public class RegisterUser : ICommand { ... }
    public class UserRegistered : IEvent { ... }
    public class SendEmail : ICommand { ... }
    
    public class UserData { ... }
    public class GetUserById : IQuery<UserData> { ... }
    
    // api.exe
    public class UserController
    {
      private IDispatcher _dispatcher;
    
      public void Register(RegisterUserModel model)
      {
        _dispatcher.Execute(new RegisterUser { ... });
      }
    }
    
    // domain.exe
    public class User { ... }
    public interface IUserRepository { ... }
    
    public class UserDomainHandler : ICommandHandler<RegisterUser>, IQueryHandler<GetUserById, UserData>
    {
      private IDispatcher _dispatcher;
      private IUserRepository _repository;
    
      public void Handle(RegisterUser command)
      {
        var user = new User(...);
    
        _repository.Insert(user);
    
        _dispatcher.Publish(new UserRegistered { ... });
      }
    
      public UserData Handle(GetUserById query)
      {
        var user = _repository.GetById(...);
    
        return new UserData { ... };
      }
    
    // email.exe
    public interface IEmailService { ... }
    
    public class UserEmailHandler : IEventHandler<UserRegistered>
    {
      private IDispatcher _dispatcher;
    
      public void Handle(UserRegistered event)
      {
        var userData = _dispatcher.Query(new GetUserById { ... });
    
        _dispatcher.Execute(new SendEmail { ... });
      }
    }
    public class CommonEmailHandler : ICommandHandler<SendEmail>
    {
      private IEmailService _emailService;
    
      public void Handle(SendEmail command)
      {
        _emailService.SendEmail(...);
      }
    }
    

    Все три процесса независимы и легко маштабируются. Соединяется всё через AMQP (например RabbitMQ).
  • Основы CQRS
    –1

    Добавьте в систему события (не путать с event-sourcing) и вы получите отличную архитектуру для микросервисов.

  • Mail.ru и «Яндекс» уходят с украинского рынка
    +4
    Когда в Украине на востоке началась война, многие западные и не только компании предлагали релокацию для своих сотрудников. А это в сотни раз больше людей/семей. А сколько людей потеряло работу в Крыму…
  • Опыт использования MassTransit 3.0
    0
    MassTransit изначально проектировался с использованием RabbitMQ в качестве транспорта сообщений. Rebus и NServiceBus не привязаны к определённому транспорту.
  • Опыт использования MassTransit 3.0
    0
    Главным недостатком MassTransit'а является его «логическая» привязка к RabbitMQ. Я предпочитаю использовать Rebus — не такой сложный как NServiceBus и очень гибкий в плане настроек и подключаемых модулей.
  • Мои прохладные истории
    0
    Как-то вскрыли мне съемную хату, в подъезде бабушка-вахтер, поэтому не стали тянуть весь системник, а разобрали на части, оставив дорогущий по тем временам SSD. Небось подумали, что флоппик.
  • Китайцы за полчаса превращают 16-гигабайтный iPhone в 128-гигабайтный
    0
    В своё время пытался увеличить память для своего Sony Ericsson K750i с 32 Мб до 64 Мб. Перепаять микросхемы любой дурак инженер может. А вот софт так и не удалось пропатчить: система видела только 32 Мб. Тут как я понял ОС сама определяет размер.
  • Марсоход Opportunity работает на Марсе уже 12 лет
    +5
    Чёрт. Мы должны спасти этот маленький ровер. Весь мир ждёт его возвращения!
  • Автоматизированное создание NuGet-пакетов
    0
    Добавлю что в рамках одной компании очень удобно использовать TeamCity как приватный Nuget Feed и Symbol Server. Так что после удачной сборки, ваши пакеты будут автоматически обновлены.