Обновить
24
Лев Рычковский@devlev

web-программист

3
Подписчики
Отправить сообщение

ConfigureAwait: часто задаваемые вопросы

Время на прочтение20 мин
Охват и читатели170K
Привет, Хабр! Представляю вашему вниманию перевод статьи «ConfigureAwait FAQ» автора Стивен Тауб.

image

Async/await добавили в .NET более семи лет назад. Это решение оказало существенное влияние не только на экосистему .NET — оно также находит отражение во многих других языках и фреймворках. На данный момент реализовано множество усовершенствований в .NET с точки зрения дополнительных языковых конструкций, использующих асинхронность, реализованы API-интерфейсы с поддержкой асинхронности, произошли фундаментальные улучшения в инфраструктуре, благодаря которым async/await работает как часы (в особенности, улучшены возможности производительности и диагностики в .NET Core).

ConfigureAwait — один из аспектов async/await, который продолжает вызывать вопросы. Надеюсь, у меня получится ответить на многие из них. Я постараюсь сделать эту статью читаемой от начала до конца, и вместе с тем выполнить ее в стиле ответов на часто задаваемые вопросы (FAQ), чтобы на нее можно было ссылаться в последующем.
Читать дальше →

Улучшаем дизайн React приложения с помощью Compound components

Время на прочтение9 мин
Охват и читатели34K

Сегодня я хочу рассказать про один не очень популярный но очень классный паттерн в написании React приложений - Compound components.

Что это вообще такое

Compound components это подход, в котором вы объединяете несколько компонентов одной общей сущностью и общим состоянием. Отдельно от этой сущности вы их использовать не можете, тк они являются единым целым. Это как в BEM нельзя использовать E - элемент, отдельно от B - блока.

Самый наглядный пример такого подхода, который знают все фронты - это select с его option в обычном HTML.

Читать далее

Про уровни владения иностранным языком

Время на прочтение4 мин
Охват и читатели54K

__1. Давайте подумаем, какой уровень у человека, который читает английскую классику почти без словаря?

Я был таким человеком в 2008 году, когда приехал в частную школу английского языка в Лондоне. В школе были группы семи уровней: Beginner, Elementary, Intermediate (и Pre- и Upper-), Advanced, Advanced+. После тестирования меня определили в группу Advanced+. Наверно, у меня было что-то в районе Proficiency, C2?

Ребята-казахи из группы Pre-Intermediate как-то посмеялись надо мной в пабе, потому что меня официант не понял, а их – без проблем. А ещё я не знал некоторых простых разговорных выражений, которые знали люди из групп Intermediate и даже ниже, поскольку в предыдущие пять лет делал упор на чтение классической литературы. И ещё очень, ОЧЕНЬ плохо понимал живую речь на слух. Похоже на С2?

А какой уровень у человека, которого чуть не застрелила полиция в США потому, что он не смог разобрать на слух простые слова “the police”? Это произошло со мной в 2012 году в городе Чарльстон, Южная Каролина. На тот момент, кстати, я как профессионал вырос на голову по сравнению с 2008 годом и уже успел поработать переводчиком. А ведь реально написали бы потом, что был он иностранец, плохо знал язык. Справедливости ради, “the police” проорал афроамериканец с характерным выговором, в гражданской одежде, из автомобиля без полицейской маркировки (“undercover police” это называется).

В бюро переводов обычно есть отдел редакторов, где сидят довольно серьёзные профессионалы. Ищут ошибки в уже сделанных переводах перед тем, как отдать заказчику. В том бюро, где работал я, в отделе редакторов был мужчина, который спокойно признавался, что очень плохо говорит и почти не воспринимает на слух бытовую английскую речь. Хорошо, что плевать он хотел на то, какой у него «уровень», а то б, наверно, уволился с работы и впал в депрессию.

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

Читать далее

.NET, что с тобой происходило в 2021?

Время на прочтение6 мин
Охват и читатели18K

Конец декабря, многие подводят свои итоги, а мы решили оглянуться и посмотреть, что хорошего (и не очень) случилось в мире .NET-разработки за этот год, и спросили об этом наших разработчиков.

Из хорошего называли появление рекордов в С# 9, и выход С# 10, а в топе, конечно же, релиз .NET 6 с долгосрочной поддержкой. До выхода шестой версии у нас уже много веб-сервисов работало на .NET 5, в том числе и в монолите. Теперь ко всем «фишкам» пятой версии добавляются преимущества новой.

Платформа становится всё кросплатформеннее и кросплатформеннее (возможно, благодаря этому в последнее время наблюдается рост интереса к C#). В .NET 6 сильно улучшилась производительность, появилась поддержка Apple Silicon (мы недавно писали, почему так рады этому), новые API и много других полезностей.

Что ещё запомнилось

Как вести переговоры с террористами… партнерами, детьми и вообще с кем угодно

Время на прочтение11 мин
Охват и читатели97K

Есть настоящие профи по управлению проектами или те гении, которые придумывают изящные решения для заказчика. Однако почти в каждом, даже самом многообещающем проекте рано или поздно возникают проблемы. Иногда эти проблемы принимают монструозные масштабы, и команда проекта уже не может справиться с ними самостоятельно. И я тот самый человек, который их решает. Как я это делаю - тема отдельной статьи. Почему практически  каждый раз получается? Ответ прост: всегда  полезен взгляд со стороны. Однако наступил момент, когда этого оказалось мало. Я вляпался в настоящий факап, и единственным выходом из него были переговоры. 

Читать далее

Представляем онлайн-самоучитель по Kubernetes и деплою с werf для разработчиков

Время на прочтение3 мин
Охват и читатели13K

Рады представить новую версию онлайн-самоучителя по werf, нашей CI/CD-утилите с открытым кодом!

Общая идея самоучителя — познакомить разработчиков с Kubernetes, показав на простых приложениях (готовы примеры для Ruby on Rails, Node.js и Laravel), как можно развертывать приложения в K8s с помощью werf. Это отличная возможность быстро освоить практические основы K8s без погружения в его объемную теоретическую базу. Если вы еще не решили, как провести новогодние каникулы с пользой, — вот вам идея.

Читать далее

Statoscope: курс интенсивной терапии для вашего бандла

Время на прочтение17 мин
Охват и читатели9.6K

Statoscope — это инструмент для анализа webpack-бандлов, а я его автор и мейнтейнер. Он зародился в далеком 2016 году как эксперимент, а теперь это полноценный тулкит для просмотра, анализа и валидации сборки.



В ноябре на конференции HolyJS я выступил с докладом о Statoscope и провёл воркшоп по его использованию. Зрителям понравилось, так что мы с организаторами HolyJS решили, что доклад может пригодиться и читателям Хабра — поэтому сделали текстовую версию. Видеозапись тоже прилагаем.

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

GraphQL: как сделать бэкенд приложения экономнее и быстрее

Время на прочтение10 мин
Охват и читатели19K

Самый распространённый стандарт для обмена информацией внутри приложений — это REST API. Его все любят, но знают, что он не идеален. В этой статье обсудим его альтернативу — GraphQL. Мы расскажем, в чём преимущество GraphQL, как выглядят запросы и с чего начать.

Читать далее

Разработка, сборка, деплой и мониторинг сервисов: от общего к частному и обратно

Время на прочтение8 мин
Охват и читатели8.5K

Привет, Хабр! Меня зовут Андрей Перепелкин. Я руководитель группы бэкенд-разработчиков, вошел в IT более 15 лет назад, 10 лет занимаюсь Java и около 4 плотно работаю с микросервисами. 

В этой статье я расскажу, как:

— мы организовали разработку микросервисов так, чтобы вынести инфраструктуру из продуктового проекта и управлять ей отдельно;

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

— встраиваем микросервисы в инфраструктуру и собираем метрики и логи, не загружая этим разработчиков.

Читать далее

JavaScript: разрабатываем приложение для записи экрана

Время на прочтение12 мин
Охват и читатели16K


Привет, друзья!


Хочу поделиться с вами решением интересной задачи: записать экран компьютера пользователя.


Общие требования к реализации:


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

Если вам это интересно, прошу следовать за мной.


→ Исходный код проекта


Скриншот:





К слову, здесь можно почитать о том, как разработать приложение для записи звука.

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

SFTP под root-ом в WinSCP для удаленной отладки(PyCharm)

Время на прочтение3 мин
Охват и читатели6.7K

Этот пост предназначен в первую очередь для новичков в разработке, впервые столкнувшихся с необходимостью запуска скриптов из-под root-а, взаимодействующих с ресурсами/устройствами, доступ до которых возможен только с сервера приложений, находящимся за NAT-ом. Частая ситуация в телекоме.

Читать далее

Подробное описание операторов RxJS — Часть 1

Время на прочтение6 мин
Охват и читатели15K

Первое, что нужно понять об операторах, - это почему они существуют. Они существуют, потому что observables как тип позволяют нам обрабатывать события (или значения во времени) как множества или набор вещей.

Говоря более просто, любое четко определенное множество будет иметь операции, которые могут быть выполнены с ним, которые могут преобразовать его в новое множество того же типа. Например, предположим, что у нас есть грузовик с яблоками. Мы могли бы превратить его в грузовик с нарезанными яблоками с помощью машины для нарезки яблок. Та же самая машина для нарезки яблок затем может быть использована на любом грузовике с яблоками, чтобы превратить их в грузовик, загруженный нарезанными яблоками. В этом случае машина для нарезки яблок будет считаться «оператором», который сопоставляет яблоки с ломтиками яблок. Точно так же мы могли бы иметь грузовик с сахаром, мукой, яйцами и т. д. И объединить их с грузовиком с ломтиками яблока, чтобы сделать грузовик с яблочными пирогами, используя какую-то машину для производства пирогов. Итак, в этом примере грузовик - это тип множества, машина для нарезки яблок или машина для изготовления пирогов будут «операторами», а сахар, яблоки, ломтики яблок, яйца и т. д. Будут просто значениями, переносимыми нашим типом множества.

Читать далее

Контролируем scroll полностью или реализация события React: onRenderChildrenComplete

Время на прочтение10 мин
Охват и читатели55K

Бывало так, что после загрузки страницы, вам нужно сделать прокрутку экрана к заданному месту? Все ли всегда получалось с первого раза? И что делать если скролл все равно дергается в процессе загрузки страницы?

Если вам интересны ответы на эти вопросы, то прошу под кат (осторожно, много gif трафика!)

Читать далее

Turbo Intruder и потерянное руководство пользователя

Время на прочтение14 мин
Охват и читатели14K

Практически каждый, кто хоть немного пользовался Burp Suite, знает про Intruder – инструмент внутри Burp, который позволяет автоматизировать атаки на веб-приложения, такие как брутфорс, фаззинг, майнинг параметров.

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

К счастью, существует более изящный инструмент с желаемой функциональностью - расширение Turbo Intruder. Инструмент отличный, но у него отсутствует нормальная документация. Скорее всего многие про него слышали и даже пытались разобраться. Для тех, кто разобраться не смог – предназначена эта статья.

Читать далее

Заметки о дельта-роботе. Часть 5. Крутящие моменты и угловые ускорения в приводных звеньях. Точность. Выбор приводов

Время на прочтение31 мин
Охват и читатели7.2K

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

Читать далее

19 команд ffmpeg для любых нужд

Время на прочтение3 мин
Охват и читатели606K
От переводчика:
Многие знают, что ffmpeg — это сила, но не все знают, какая именно. Он многогранен и безграничен, а его man объёмен и местами малопонятен, лишь немногие постигли дао профессиональной работы с ним. И тем не менее, этот инструмент может быть полезен почти всем, кто хоть иногда работает с видео и звуком, даже на бытовом уровне. О некоторых полезных консольных командах ffmpeg и пойдёт речь в статье. В некоторых местах я взял на себя смелость вставить ссылки на поясняющие статьи.


ffmpeg — это кроссплатформенная open-source библиотека для обработки видео- и аудиофайлов. Я собрал 19 полезных и удивительных команд, покрывающих почти все нужды: конвертация видео, извлечение звуковой дорожки, конвертирование для iPod или PSP, и многое другое.

1. Получение информации о видеофайле

ffmpeg -i video.avi

2. Превратить набор картинок в видео

ffmpeg -f image2 -i image%d.jpg video.mpg

Эта команда преобразует все картинки из текущей директории (названные image1.jpg, image2.jpg и т.д.) в видеофайл video.mpg

(примечание переводчика: мне больше нравится такой формат:
ffmpeg -r 12 -y -i "image_%010d.png" output.mpg

здесь задаётся frame rate (12) для видео, формат «image_%010d.png» означает, что картинки будут искаться в виде image_0000000001.png, image_0000000002.png и тд, то есть, в формате printf)
Читать дальше →

Новый мультфильм от Blender Studio

Время на прочтение2 мин
Охват и читатели19K

В пятницу, 29 октября Blender Studio представила новый мультфильм сделанный в свободной программе для 3d-моделирования Blender.

Если первые их мультфильмы были какими-то незамысловатые короткометражками типа Big Bug Bunny или Elephant Dreams, которые можно было назвать "3D-демо", то в последние годы студия стала делать "творения", в которых кроме красивой картинки есть и интересный сюжет, и смысл и эмоции. Например, те же Синтел или Космическая прачечная.

Около четырех месяцев назад на официальном канале Blender Studio начали проводится стримы с демонстрацией работы над новым мультфильмом - Sprite Fright.

(Как я дословно перевел - "Эльфийские устрашения". Один из переводов слова Sprite, оказывается, не только спрайт в анимации, графике, но и эльф, фея. Хотя странно, что не использовали слово elf или pixie.)

Читать далее

Что будет с C#, и при чём здесь Страуструп?

Время на прочтение11 мин
Охват и читатели27K

Я люблю C#. После университета моим первым настоящим проектом по программированию была игра, написанная на Unity. И я сразу же влюбился в этот язык: он казался таким свежим. И был похож на Java… если бы в Oracle по-настоящему заботились о Java, это вернуло бы короткий золотой век Java. Слышал, что с тех пор они перешли на цикл ещё быстрее, так что всё могло измениться.

Я по-прежнему люблю этот язык. Может, он и не самый модный, но всё равно способен делать что угодно. Пример — многопоточность. Думаете, это сложно? Тогда попробуйте в Dart поиграть с Isolate и поймёте, как хорошо иметь C#.

В последние несколько лет меня стала очень беспокоить судьба языка. Я поделился своими мыслями в комментарии здесь. И раз уж комментарий привлёк так много внимания — решил конкретизировать его идеи.

Читать далее

Книга «C# 9 и .NET 5. Разработка и оптимизация»

Время на прочтение11 мин
Охват и читатели17K
image Привет, Хаброжители! В этой книге опытный преподаватель Марк Прайс дает все необходимое для разработки приложений на C#. В пятом издании для работы со всеми основными операционными системами используется популярный редактор кода Visual Studio Code. Издание полностью обновлено и дополнено новой главой, касающейся Microsoft Blazor.

В первой части книги рассмотрены основы C#, включая объектно-ориентированное программирование и новые возможности C# 9, такие как создание экземпляров новых объектов с целевым типом и работа с неизменяемыми типами с использованием ключевого слова record. Во второй части рассматриваются API .NET для выполнения таких задач, как управление данными и запросы к ним, мониторинг и повышение производительности, а также работа с файловой системой, асинхронными потоками, сериализацией и шифрованием. В третьей части на примерах кросс-платформенных приложений вы сможете собрать и развернуть собственные: например, веб-приложения с использованием ASP.NET Core или мобильные приложения на Xamarin Forms.
К концу книги вы приобретете знания и навыки, необходимые для использования C# 9 и .NET 5 для разработки сервисов, веб- и мобильных приложений.
Читать дальше →

Английский язык Джеки Чана: почему он пропускает звуки или добавляет лишние

Время на прочтение6 мин
Охват и читатели15K

Уже давно не было статей в рубрике про акценты известных людей. Мы решили это исправить — сегодня у нас в номере Джеки Чан. Большинство из Хабровчан выросло на его фильмах.

Сам Джеки Чан долгое время он стеснялся своего акцента, когда говорил на английском. И вплоть до 1998 года его персонажей попросту переозвучивали.

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

Читать далее

Информация

В рейтинге
Не участвует
Откуда
Тула, Тульская обл., Россия
Зарегистрирован
Активность