С тех пор, как в C# 5.0 завезли механизм async/await, нас постоянно во всех статьях и доках учат, что использовать асинхронный код в синхронном очень плохо. И призывают бояться как огня конструкции GetAwaiter().GetResult(). Однако есть один случай, когда сами программисты Microsoft не гнушаются этой конструкцией.
Рубрика «Программирование» - 135
Асинхронный код в Startup ASP.NET Core: 4 способа обхода GetAwaiter().GetResult()
2020-04-09 в 13:43, admin, рубрики: .net, andrewlock, ASP, asp.net core, C#, GetAwaiter, GetResult, health check, jwt, kubernetes, Startup ASP.NET, Блог компании Dodo Pizza Engineering, Программирование, Эндрю ЛокПокажите мне решение, из-за которого разработчики не будут спорить, и я поставлю вам пиво
2020-04-09 в 12:15, admin, рубрики: F#, Карьера в IT-индустрии, Программирование, Совершенный код, управление персоналом
Есть два непримиримых лагеря. Одни говорят: ты должен качественно и грамотно описывать свои коммиты. Каждый коммит — это законченный, осмысленный кусочек работы. Если ты не можешь сделать понятное и простое описания коммита, значит у тебя неправильные коммиты.
Другие считают — ты делаешь коммиты как хочешь, это часть твоего личного рабочего процесса. А вот пул реквесты описываются детально: что сделано, как сделано, зачем сделано. Как протестировано, какую проблему решает, на что стоит обратить внимание.
Я убежденный сторонник второго подхода — мне неудобно бить свою работу на микрокусочки. Я беру небольшую задачу и хаотично мечусь по кодовой базе, экспериментируя и внося изменения в том порядке, в котором получается. Если бы я мог нажать на кнопку, и моя работа переструктурировалась бы на хорошие коммиты — я бы на неё нажал. Но кнопки нет, а ломать себя мне не хочется. В то же время я достиг определенного мастерства в описании пул реквестов. Мне довелось фигачить код в майкрософт (через аутстаф, не считается), и там я почерпнул топовые стандарты оформления пул реквестов. С годами работы я только развивал эту практику. Обычно мне удавалось убеждать команду использовать именно такой подход.
Но на последней работе мне достался девлид — убежденный сторонник детальных коммитов. О, мы долго спорили. Моё подчиненное положение сыграло свою роль, совковскую привычку соглашаться с главным нелегко заткнуть. Я не был так категоричен, как обычно бываю, и был уложен на обе лопатки. Уложен, но не убежден. Читать полностью »
Онлайн-холивар: новый формат обмена опытом. В эту субботу
2020-04-08 в 10:20, admin, рубрики: tdd, Блог компании Skyeng, интеграционные тесты, Программирование, Разработка веб-сайтов, Тестирование IT-систем, юнит-тестыЧасто самое интересное на митапах начиналось, когда несколько человек увлеченно спорили вокруг какой-то темы, а ты мог включиться с вопросом или добавить свои “пять копеек” опыта.
Мы с Алексеем anzem Землянским и Григорием eyeofhell Петровым подумали перенести эту механику в онлайн. Хотим попробовать 11 апреля в 11 часов по Москве — в формате интерактивной ютуб-трансляции и открытых дискуссий в зуме* за эфиром. Надеемся, у вас найдется полтора часа на протестировать формат с нами.
В качестве темы для первого холивара взяли TDD.
Читать полностью »
Как JIT инлайнит наш C# код (эвристики)
2020-04-08 в 6:27, admin, рубрики: .net, .net core, C#, CoreCLR, inlining, jit, ryujit, Компиляторы, оптимизации, ПрограммированиеИнлайнинг — одна из самых важных оптимизаций в компиляторах. Она не только убирает оверхед от вызова, но и открывает много возможностей для других оптимизаций, например, constant folding, dead code elimination и т.д. Более того, иногда инлайнинг приводит к уменьшению размера вызывающей ф-ции! Я опросил несколько человек на предмет знают ли они по каким правилам инлайнятся ф-ции в C# и большинство ответили, что JIT смотрит на размер IL кода и инлайнит только маленькие ф-ции размером, скажем, до 32 байт. Поэтому я решил написать этот пост, чтобы раскрыть детали реализации при помощи вот такого примера, который покажет сразу несколько эвристик в деле:
9 лучших опенсорс находок за март 2020
2020-04-06 в 9:44, admin, рубрики: github, Go, javascript, opensource, python, Rust, TypeScript, Программирование, Разработка веб-сайтов, СофтДоброго карантинного апреля, дамы и господа. Подготовил для вас подборку самых интересных находок из опенсорса за март 2020.
За полным списком новых полезных инструментов, статей и докладов можно обратиться в мой телеграм канал @OpensourceFindings (по ссылке зеркало, если не открывается оригинал).
В сегодняшнем выпуске.
Технологии внутри: Rust, TypeScript, JavaScript, Go, Python.
Тематика: веб разработка, тестирование, инструменты разработчика, администрирование и документирование.
Прошлый выпуск (аж ноябрь 2019!).
Пишем Pixel Art Maker на чистом JavaScript
2020-04-06 в 6:17, admin, рубрики: canvas, javascript, pixel, pixel-art, pixelart, Программирование, разработка, Разработка веб-сайтов, холст
Доброго времени суток, друзья!
Предисловие
Однажды веб серфинг привел меня к этому.
Позже обнаружил статью про то, как это работает.
Казалось бы, ничего особенного — Пикачу, нарисованный средствами CSS. Данная техника называется Pixel Art (пиксельное искусство?). Что меня поразило, так это трудоемкость процесса. Каждая клеточка раскрашивается вручную (ну, почти; благо существуют препроцессоры; Sass в данном случае). Конечно, красота требует жертв. Однако разработчик — существо ленивое. Посему я задумался об автоматизации. Так появилось то, что я назвал Pixel Art Maker.
Читать полностью »
Сим-сим откройся или реверс инжиниринг умного домофона
2020-04-05 в 11:44, admin, рубрики: информационная безопасность, Программирование, реверс-инжинирингПосле прочтения поста Krupnikas возникла мысль разобраться с mitmproxy и посмотреть как устроен бэкенд ежедневно используемых мобильных приложений. Выбор пал на приложение домофон. После авторизации оно позволяет открывать двери и отвечать на видеозвонки. Что из этого вышло и какие дырки мне удалось найти расскажу под катом.
Концепции, лежащие в основе Web Audio API
2020-04-05 в 8:25, admin, рубрики: Audio API, fundamentals, javascript, music, Web Audio, web audio api, основы, Программирование, разработка, Разработка веб-сайтов
Доброго времени суток, друзья!
В этой статье объясняются некоторые концепции из теории музыки, на основе которых работает Web Audio API (WAA). Зная эти концепции, вы сможете принимать взвешенные решения при проектировании аудио в приложении. Статья не сделает вас опытным инженером по звуку, но поможет понять, почему WAA работает так, как работает.
Читать полностью »
Где взять аудио для машинного обучения: подборка открытых библиотек с лицензией Creative Commons
2020-04-04 в 10:29, admin, рубрики: Creative Commons, open source, Аудиомания, библиотеки звуков, Блог компании Аудиомания, звук, машинное обучение, ПрограммированиеНебольшой дайджест для тех, кто разрабатывает модели машинного обучения.
Под катом — своды данных с речью, музыкой и шумом промышленных агрегатов.
Оцениваем опционы на Clojure методом Монте-Карло
2020-04-03 в 10:46, admin, рубрики: clojure, jvm, Блог компании Exness, опционы, Программирование, финансы, финансы в IT, ФП, функциональное программированиеПривет! Меня зовут Рома, я работаю iOS-разработчиком в Exness. А кроме того, пишу на Clojure и инвестирую.
Сегодня я расскажу о том, как оценивать опционы. Это вводная статья и заработать миллион, используя предложенный способ, вряд ли получится. Тем не менее, это хорошая основа для понимания более сложных методов оценки.