Как стать автором
Обновить
12
0
Виталий Оразов @viordash

Программист

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

Переносим Angular проект на ESLint, с Prettier, Husky и lint-staged

Время на прочтение8 мин
Количество просмотров32K
Привет, Хабр! Меня зовут Богдан, я работаю в ПИК Digital Front-End тимлидом. Большую часть проектов мы разрабатываем на Angular и недавно я решил пересмотреть наши стайл гайды, а также добавить новые инструменты для более удобной работы.

В качестве линтера я решил использовать ESLint, так как в скором времени на него планируют перевести Angular. И в этой статье я хочу поделиться инструкцией по переходу с TSLint на ESLint, а заодно рассказать, как запускать Prettier из ESLint, как добавить правила стайл гайда AirBnB, и как сделать линтинг удобным и незаметным с помощью настройки VS Code и Git хуков.
Читать дальше →
Всего голосов 10: ↑10 и ↓0+10
Комментарии5

Сравниваем c# операторы ?: vs if-else vs switch

Время на прочтение4 мин
Количество просмотров9.4K
Сегодня на ревью прилетела очередная фабрика животных:

public static class AnimalsFactory
{
    public static Animal CreateAnimalByTernaryOperator(bool isCat)
    {
        return isCat ? (Animal)new Cat() : new Dog();
    }
}

В который раз расстроился, что C# заставляет делать каст объекта Cat к Animal. Но пусть лучше будет каст, ведь через if-else оператор код получается ещё длиннее:
public static class AnimalsFactory
{
    public static Animal CreateAnimalByIfElseOperator(bool isCat)
    {
        if (isCat)
            return new Cat();

        return new Dog();
    }
}

Отвлечёмся на минуту от ревью и попробуем разобраться:

  • будет ли отличаться IL-код в этих примерах?
  • будет ли один из примеров в выигрыше по производительности?

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

C# 8 и null-допустимость. Как нам с этим жить

Время на прочтение10 мин
Количество просмотров14K
Здравствуйте, коллеги! Пришло время упомянуть, что у нас в планах — выпуск фундаментальной книги Иэна Гриффитса по C#8:


Тем временем, в своем блоге автор опубликовал две взаимосвязанные статьи, в которых рассматривает тонкости таких новых явлений, как «nullability», «null-obliviousness» и «null-awareness». Мы перевели обе статьи под одним заголовком и предлагаем их обсудить.
Читать дальше →
Всего голосов 11: ↑10 и ↓1+13
Комментарии9

Алгоритм распознавания номера на изображении с низкой вероятностью ошибки второго рода

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

В индустрии существует целый ряд кейсов, требующих распознавания номера по фотографии
(scene number recognition). Часто требуемым условием для алгоритма распознавания является низкое значение ошибки второго рода, а именно случаи, когда распознается неверный номер. В качестве примера таких задач можно привести:


  1. Распознавание номера на скидочных, банковских картах, рисунок 1.
  2. Распознавание номера автомобиля, рисунок 2.

image

Рисунок 1 – Карта лояльности
Рисунок 2 – Изображение, содержащее регистрационный номер в низком качестве


Среди проблем, связанных с распознаванием номера, можно выделить:


  • Большое разнообразие шрифтов;
  • Отсутствие зависимости между предыдущими и последующими символами номера (в отличие от задачи распознавания текста);
  • Высокий уровень шумов по причине того, что съемка ведется в различных условиях освещенности, с разного оборудования и т.д.

Задача


Разработать алгоритм распознавания номера на изображении (scene number recognition) при обязательном условии: ошибка второго рода должна быть не больше 0.03.

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

Компания National Instruments выпустила бесплатные LabVIEW 2020 и NXG 5.0 Community Edition

Время на прочтение4 мин
Количество просмотров32K
Здравствуйте, коллеги!

В конце апреля произошло событие, которого так ждали поклонники рисования кода мышкой: компания National Instruments наконец-то выпустила бесплатную редакцию своей системы графического программирования — LabVIEW Community Edition.

image

Название перекликается с Visual Studio Community, но в отличие от Студии среда разработки LabVIEW абсолютно бесплатна лишь для некоммерческих проектов, и для обучения в школах (для ВУЗов потребуется Academic Site License).

Ну а теперь все желающие могут приобщиться к увлекательному миру графического программирования, скачать LabVIEW и играть с ней так долго, насколько хватит желания (и терпения).
Читать дальше →
Всего голосов 20: ↑20 и ↓0+20
Комментарии25

Из чего собрать умный дом в 2020 году: от хаба и до лампочки

Время на прочтение9 мин
Количество просмотров362K
ZigBee, Z-Wave, Wi-Fi, Bluetooth — на какую технологию делать ставку? Кто из брендов выпускает наиболее практичные решения? Какие выбрать шлюз, датчики и на что смотреть тем, кто хочет все упростить?


Мы попросили Вадима Ерёмина, руководителя департамента «Гаджеты и инновации», рассказать о его опыте построения умного дома. Под катом только то, что было проверено на собственном опыте.
Читать дальше →
Всего голосов 12: ↑3 и ↓9-3
Комментарии54

Entity Framework Core

Время на прочтение3 мин
Количество просмотров20K
Привет, друзья. В этот чудесный майский день мы продолжаем трудиться и сегодня хотим рассказать о том, что в мае OTUS запускает полюбившийся всем курс «Разработчик С#», а также отдельный курс по С# ASP. NET Core. Традиционно, в преддверии старта курсов начинаем публиковать полезный материал. Поехали.




Вступление


В большинстве современных ASP NET Core приложений используется Entity Framework Core. Entity Framework Core – это технология для доступа к базам данных от Microsoft. Оно позволяет взаимодействовать с СУБД с помощью сущностей (entity), то есть классов и объектов NET, а не таблиц базы данных. Это самый известный и функциональный ORM – инструмент в C#. ORM — это object-relational mapping — отображение данных на реальные объекты.

Например, если разработчик напрямую работает с базами данных, программист должен думать о подключении, подготовке SQL и параметров SQL, как отправлять запросы и о транзакциях. А с помощью Entity Framework Core все это делается автоматически — разработчик работает непосредственно с классами NET.
Читать дальше →
Всего голосов 16: ↑7 и ↓9+3
Комментарии17

Десятка лучших докладов DotNext 2019 Moscow

Время на прочтение3 мин
Количество просмотров7.2K
В начале ноября прошел DotNext 2019 Moscow, и пока мы ждем следующий DotNext, самое время посмотреть десятку лучших докладов московской конференции. Хардкор, низкоуровневые подробности, максимальный перформанс, best practices, архитектура и многое другое — все детали собрали для вас с помощью golodnyj под катом.

Всего голосов 30: ↑30 и ↓0+30
Комментарии2

Разница между веб-сокетами и Socket.IO

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


Доброго времени суток, друзья!

Веб-сокеты и Socket.IO, вероятно, являются двумя наиболее распространенными средствами коммуникации в режиме реального времени (далее — живое общение). Но чем они отличаются?

При построении приложения для живого общения наступает момент, когда необходимо выбрать средство для обмена данными между клиентом и сервером. Веб-сокеты и Socket.IO являются самыми популярными средствами живого общения в современном вебе. Какое из них выбрать? В чем разница между этими технологиями? Давайте выясним.
Читать дальше →
Всего голосов 20: ↑11 и ↓9+8
Комментарии22

Реализация WebRTC в медиа сервере – практика и политика

Время на прочтение11 мин
Количество просмотров14K
1. Стриминг в браузеры в реальном времени – решения нет. Или есть?

Вот уже примерно как 20 лет пропускная способность сетей и вычислительные возможности компьютеров позволяют сжатие и транслирование звука и видео по IP протоколу в режиме, близком к реальному времени. За это время центральными стандартизирующими организациями, такими как W3C и IETF, а также множеством больших и малых компаний, разработаны сотни стандартов и протоколов для эффективного сжатия, упаковывания, пересылки, синхронизации и проигрывания аудио-видео контента на компьютерах и мобильных устройствах. Видеозахвату, сжатию и трансляции по IP в реальном времени было уделено особое внимание, так как, во-первых, именно IP наиболее дёшев и общедоступен на всех уровнях, а во-вторых, технологии видеоконференций и видеонаблюдения жизненно необходимы и пользуются огромным спросом.
Читать дальше →
Всего голосов 9: ↑5 и ↓4+4
Комментарии4

Про фразовые глаголы-3 (on/off)

Время на прочтение4 мин
Количество просмотров25K
Перед этой статьёй рекомендуется прочитать две предыдущие части:
1. habr.com/ru/post/495794
2. habr.com/ru/post/496190
On и Off обычно имеют противоположный смысл, поэтому мне показалось хорошей идеей совместить обзоры этих частиц.

И предлог, и частица on соответствуют русскому «на». Тут логика вполне очевидная: «на» – это и предлог (говорим о поверхностях: «на стене/столе»), и приставка – НА-сыпать (сыпать на поверхность).

Put – класть, put on – «на-кладывать». Например, put on makeup – «на-кладывать» грим. Любой предмет одежды, обуви, головной убор носители английского языка тоже накладывают, а не надевают, как у нас: put on a hat – надеть шляпу. У них даже вес тела накладывают: put on weight по-английски «набрать вес».

Часто ON соответствует русской приставке «про-». «Про-» обычно означает «двигаться вперёд»: про-двигаться, про-лезать, про-двигать. Возьмём фразовый глагол (ФГ) get on. Get означает «двигаться, перемещаться», get on буквально «про-двигаться». Или в пространстве, или, метафорически, в жизни или карьере: Young people try to get on in life – Молодые люди стараются продвигаться в жизни.
Читать дальше →
Всего голосов 33: ↑30 и ↓3+41
Комментарии23

Сим-сим откройся или реверс инжиниринг умного домофона

Время на прочтение3 мин
Количество просмотров9.4K
После прочтения поста Krupnikas возникла мысль разобраться с mitmproxy и посмотреть как устроен бэкенд ежедневно используемых мобильных приложений. Выбор пал на приложение домофон. После авторизации оно позволяет открывать двери и отвечать на видеозвонки. Что из этого вышло и какие дырки мне удалось найти расскажу под катом.


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

Коронавирус: опасная иллюзия смертности

Время на прочтение12 мин
Количество просмотров1M
Безответственная пресса начинает заполнять наше информационное поле новостями о погибших от коронавируса, хотя таких сведений не озвучивает ни лечащий врач, ни ВОЗ. Из-за своей невнимательности журналисты де-факто самостоятельно называют причины смерти. И эта маленькая неточность в формулировке имеет колоссальное значение для общества. Сегодня крайне важно не путать общую смертность людей с подтверждённым коронавирусом и смертность непосредственно от коронавируса.

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

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

В своей предыдущей статье «Коронавирус: как мы себя обманываем» я уже демонстрировал разницу между смертностями на примере демографических данных Италии по одной возрастной группе. А сейчас я хочу поделиться свежим графиком Дэвида Шпигельхальтера, именитого статистика из Университета Кембриджа. В его распоряжении был полный объём данных по Великобритании от Имперского колледжа Лондона.

Таблица с данными + те же значения на логарифмической шкале
Читать дальше →
Всего голосов 418: ↑190 и ↓228+18
Комментарии2163

После удаления Telegram входит в учетную запись без верификации даже после смены пароля

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


После удаления приложения Telegram с Вашего macOS-устройства стандартным путем (переносом из папки Applications в корзину) — в нем остаются файлы.

Скриншот файлов

Это какая-то часть переписки, информация об аккаунте и т.д. Вещи на первый взгляд не страшные — все, что есть, похоже, зашифровано. Честно говоря, я сильно не изучал [UPD: была статья о том, что данные хранятся в незашифрованном виде].

Но меня удивило другое.
Читать дальше →
Всего голосов 77: ↑50 и ↓27+45
Комментарии115

Обновления конструктора .NET Core Windows Forms

Время на прочтение1 мин
Количество просмотров5.8K
Мы выпустили предварительную версию Visual Studio 16.6 — Visual Studio 2019 версии 16.6 Preview 1 и вместе с ней новую версию .NET Core конструктора Windows Forms.



Этот релиз включает в себя


  • Поддержку следующих элементов управления:

    Раскрыть
    • FlowLayoutPanel,
    • GroupBox,
    • ImageList,
    • MenuStrip (через PropertyBrowser и контекстное меню),
    • Panel,
    • SplitContainer,
    • Splitter,
    • TabControl,
    • TableLayoutPanel,
    • ToolStrip (через PropertyBrowser, контекстное меню и designer actions).

  • Локальные ресурсы и локализованные формы были включены в конструкторе.
  • Поддержка настроек LayoutMode и ShowGrid/SnapToGrid через Сервис -> Параметры.
  • Надежность и улучшение производительности.
  • Другие мелкие исправления и твики.
Читать дальше →
Всего голосов 8: ↑7 и ↓1+9
Комментарии9

Представляем .NET 5 Preview 1

Время на прочтение5 мин
Количество просмотров22K
В конце прошлого года мы выпустили .NET Core 3.0 и 3.1. В этих версиях добавлены модели настольных приложений Windows Forms (WinForms) и WPF, ASP.NET Blazor для создания одностраничных приложений и gRPC для кроссплатформенного обмена сообщениями на основе контрактов. Мы также добавили шаблоны для создания сервисов, крутое генерирование клиентского кода для общения с gRPC, сервисы REST API и многое другое. Мы рады, что .NET Core 3 стала самой быстро-принятой версией .NET, и за последний год у нас появился еще миллион пользователей.

Мы также работали над этими выпусками, чтобы завершить перенос моделей приложений из .NET Framework. В .NET Core 3 мы перенесли все наиболее используемые модели приложений, а также представили новые кроссплатформенные инфраструктуры вместо тех, которые не были портированы.

В ожидании следующего основного выпуска .NET 5 мы продолжим объединять .NET в единую платформу, включив нашу модель приложения для мобильных устройств .NET (Xamarin) в .NET 5. .NET 5 будет включать ASP.NET Core, Entity Framework Core, WinForms, WPF, Xamarin и ML.NET. Впервые вся платформа будет использовать унифицированный BCL (библиотеки базовых классов) для всех моделей приложений. Наличие версии 5, которая выше, чем у .NET Core и .NET Framework, также дает понять, что .NET 5 — это будущее .NET, единой унифицированной платформы для создания приложений любого типа.

Мы говорили это много раз, но мы еще раз повторим; .NET Core, а затем .NET 5 — это .NET, с помощью которого вам стоит создавать все свои новые приложения. .NET Framework будет поддерживаться до тех пор, пока поддерживается сама Windows. Мы будем продолжать обеспечивать безопасность и исправлять ошибки, а также обновлять сетевые и крипто API. Он будет оставаться безопасным и поддерживаться для работы ваших старых приложений на .NET Framework.

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

Ваш C# уже «функциональный», просто позвольте ему это

Время на прочтение4 мин
Количество просмотров19K
Привет, Хабр! Представляю вашему вниманию перевод оригинальной статьи «Your C# is already functional, but only if you let it» автора Igal Tabachnik.

Несколько дней назад я написал в Твиттере фрагмент кода C#, реализующий FizzBuzz, используя некоторые из новых «фичи» в C# 8.0 . Твит “стал вирусным”, несколько человек восхищались его лаконичностью и функциональностью, в то время как другие спрашивали меня, почему я не написал его на F#?

Прошло уже более 4 лет с тех пор, как я в последний раз писал на C#, и то, что я обычно использую функциональное программирование, явно повлияло на то, как я пишу код сегодня. Фрагмент, который я написал, кажется очень аккуратным и естественным, однако некоторые люди выразили опасения, что он не похож на код на C#.
«Он выглядит слишком функциональным.» – писали мне они.
В зависимости от того, кого вы спрашиваете, «функциональное программирование» означает разные вещи для разных людей. Но вместо того, чтобы обсуждать семантику, я хотел бы предложить объяснение того, почему эта реализация FizzBuzz кажется функциональной.
Всего голосов 17: ↑15 и ↓2+20
Комментарии127

Async programming in .NET: Best practices

Время на прочтение24 мин
Количество просмотров36K
Появление async/await в C# привело к пересмотру того, как писать простой и корректный параллельный код. Зачастую, используя асинхронное программирование, программисты не только не решают проблемы, которые были с потоками, но и привносят новые. Дедлоки и рейсы никуда не пропадают — их просто становится труднее диагностировать.



Дмитрий Иванов — Software Analysis TeamLead в Huawei, в прошлом техлид JetBrains Rider и разработчик ядра ReSharper: структур данных, кэшей, многопоточности, регулярный спикер конференции DotNext.

Под катом — видеозапись и текстовая расшифровка доклада Дмитрия с конференции DotNext 2019 Piter.
Всего голосов 30: ↑30 и ↓0+30
Комментарии6

Intel х86 Root of Trust: утрата доверия

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


Изображение: shutterstock

Вот и настал момент, которого, возможно, больше всего боялись системные архитекторы, инженеры и специалисты по безопасности компании Intel: была найдена ошибка в неперезаписываемой области памяти (ROM) подсистемы Intel Converged Security and Management Engine, и эта ошибка ставит под сомнение все усилия компании по созданию корня доверия и фундамента безопасности на ее платформах.

И дело здесь даже не в том, что ошибки микропрограммного обеспечения (firmware), которое «зашито» в бортовой памяти Mask ROM микропроцессоров и чипсетов, уже невозможно исправить, а скорее в том, что найденная ошибка разрушает цепочку доверия всей платформы в целом, позволяя скомпрометировать ее аппаратную основу.
Читать дальше →
Всего голосов 70: ↑69 и ↓1+68
Комментарии217

Прозрачная аутентификация в ASP.Net Core на Linux

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

Аутентификация в ASP.Net (Core) — тема довольно избитая, казалось бы, о чем тут еще можно писать. Но по какой-то причине за бортом остается небольшой кусочек — сквозная доменная аутентификация (ntlm, kerberos). Да, когда мы свое приложение хостим на IIS, все понятно — он за нас делает всю работу, а мы просто получаем пользователя из контекста. А что делать, если приложение написано под .Net Core, хостится на Linux машине за Nginx, а заказчик при этом предъявляет требования к прозрачной аутентификации для доменных пользователей? Очевидно, что IIS нам тут сильно не поможет. Ниже я расскажу, как можно данную задачу решить c минимальными трудозатратами. Написанное актуально для .Net Core версии 2.0-2.2. Скорее всего, будет работать на версии 3 и с той же вероятностью не будет работать на версии 1. Делаю оговорку на версионность, поскольку .Net Core довольно активно развивается, и частенько методы, сервисы, зависимости могут менять имена, местоположение, сигнатуры или вообще пропадать.


Что такое Kerberos, и как это работает, кратко можно прочитать в Wiki. В нашей задаче Kerberos в паре с keytab файлом дает возможность приложению на Linux сервере (на Windows, само собой, тоже), который не требуется включать в домен, пропускать сквозной аутентификацией пользователей на windows-клиентах.

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

Информация

В рейтинге
5 437-й
Зарегистрирован
Активность