Почему, зачем и когда нужно использовать ValueTask

Автор: admin от 4-07-2019, 19:45, посмотрело: 112

Этот перевод появился благодаря хорошему комментарию 0x1000000.

Почему, зачем и когда нужно использовать ValueTask



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

Категория: Программирование

 

MotionLayout: анимации лучше, кода — меньше

Автор: admin от 4-07-2019, 19:40, посмотрело: 90

MotionLayout: анимации лучше, кода — меньше
Google продолжает улучшать нашу жизнь, выпуская новые удобные библиотеки и API. Среди которых оказался и новый MotionLayout. Учитывая обилие анимаций в наших приложениях, мой коллега Cedric Holtz сразу же реализовал важнейшую анимацию нашего приложения — голосование в знакомствах — с использованием нового API, сэкономив при этом огромное количество кода. Делюсь переводом его статьи. 



Недавно закончилась конференция Google I/O 2019, на которой анонсировали обновления и самые свежие улучшения нашего любимого SDK. Лично мне особенно интересна была презентация Николаса Роарда и Джона Хофорда о будущей функциональности ConstraintLayout. А точнее, о его расширении в виде MotionLayout. 



После выпуска бета-версии мне захотелось реализовать анимацию знакомств на основе этой библиотеки.

Категория: Game Development, Android

 

Выпуск Rust 1.36.0: Трейт Future, стабилизация alloc и MaybeUninit

Автор: admin от 4-07-2019, 19:05, посмотрело: 83

Представляю вашему вниманию перевод публикации о новой версии всеми любимого языка программирования Rust.



Введение



Команда по разработке языка программирования Rust рада анонсировать новую версию, 1.36.0. Rust — это язык программирования, позволяющий каждому разрабатывать надёжное и быстрое ПО.



Если предыдущую версию Rust вы установили средствами rustup, получение текущей версии не составит особого труда:



$ rustup update stable


Если у Вас всё ещё нет rustup, Вы можете получить его с соответствующей страницы на нашем сайте. Детальный обзор данного релиза доступен на GitHub.

Категория: Программирование, Системное администрирование

 

Подборка @pythonetc, июнь 2019

Автор: admin от 4-07-2019, 13:25, посмотрело: 17

Подборка @pythonetc, июнь 2019

Это одиннадцатая подборка советов про Python и программирование из моего авторского канала @pythonetc.



<- Предыдущие подборки



Подборка @pythonetc, июнь 2019

Символ в обычной строке имеет особое значение. t — это символ табуляции, r — разрыв строки, и так далее.



Чтобы отключить такое поведение, вы можете использовать raw-строки. Тогда r't' превратится всего лишь в обратный слэш и t.



Очевидно, что нельзя использовать ' внутри r'...'. И хотя это ограничение можно обойти с помощью , однако в строке всё равно останется:

Категория: Программирование

 

Tic Tac Toe, часть 1

Автор: admin от 4-07-2019, 12:50, посмотрело: 15

В статье "Сравнение: Svelte и React" я попробовал повторить разработку игры Tic Tac Toe. Там я выполнил только первую часть исходного туториала для React'а без поддержки истории ходов. В этой статье мы начнем разработку этой игры с применением фреймворка Svelte с поддержкой истории ходов. История ходов на самом деле представляет собой систему Undo/Redo. В исходном туториале на React'e реализована система Undo/Redo с хранением состояний с произвольным доступом к любому состоянию. При реализации системы Undo/Redo обычно используется паттерн Command, и в списке команд хранятся команды Undo/Redo. Такой подход мы попробуем реализовать позже, сейчас выполним систему Undo/Redo с хранением состояний.



В разработке применено архитектурное решение Flux с использованием хранилища. Об этом отдельный раздел в статье.

Категория: Программирование

 

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

Автор: admin от 4-07-2019, 12:35, посмотрело: 18

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



Пользователи очень не любят, когда нужный им онлайн-ресурс «тормозит». Данные опросов
говорят о том, что 57% пользователей покинут веб-страницу, если она грузится дольше трех секунд, при этом 47% готовы ждать лишь две секунды. Задержка в одну секунду может стоить 7% конверсии и 16% снижении удовлетворенности пользователей.



Поэтому к росту нагрузки и всплескам трафика нужно готовиться. И сегодня мы поговорим о том, как это сделать.

Категория: Linux

 

От High Ceph Latency к Kernel Patch с помощью eBPF/BCC

Автор: admin от 4-07-2019, 12:35, посмотрело: 17

От High Ceph Latency к Kernel Patch с помощью eBPF/BCC



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

Категория: Linux

 

Практические рекомендации по разработке крупномасштабных React-приложений. Планирование, действия, источники данных

Автор: admin от 4-07-2019, 12:35, посмотрело: 17

Сегодня мы представляем вашему вниманию первую часть перевода материала, который посвящён разработке крупномасштабных React-приложений. При создании одностраничного приложения с помощью React очень легко привести его кодовую базу в беспорядок. Это усложняет отладку приложения, затрудняет обновление или расширение кода проекта.



Практические рекомендации по разработке крупномасштабных React-приложений. Планирование, действия, источники данных



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

Категория: Веб-разработка

 

IronPython на стороне зла: как мы раскрыли кибератаку на госслужбы европейской страны

Автор: admin от 4-07-2019, 12:30, посмотрело: 25

IronPython на стороне зла: как мы раскрыли кибератаку на госслужбы европейской страны




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

Категория: Информационная безопасность

 

Как сэкономить на психотерапевте используя test-driven development

Автор: admin от 4-07-2019, 10:00, посмотрело: 24

У вас когда-нибудь было такое состояние?



Как сэкономить на психотерапевте используя test-driven development


Хочу показать вам, как TDD может улучшить качество кода на конкретном примере.

Потому что всё то, что я встречал при изучении вопроса, было довольно-таки теоретическим.

Так получилось, что мне довелось написать два практически идентичных приложения: одно писалось в классическом стиле, так как я ещё не знал тогда TDD, в второе — как раз с использованием TDD.



Ниже я покажу, где были самые большие различия.



Лично мне это было важно потому, что каждый раз, когда кто-то находил баг в моём коде, я ловил увесистый минус на самооценку. Да, я понимал, что баги — это нормально, их пишут все, но ощущение неполноценности никуда не уходило. Также, в процессе эволюции сервиса, я иногда понимал, что сам понаписал такого, что чешутся руки всё выкинуть и переписать заново. И как это получилось — непонятно. Как-то всё было хорошо в начале, но вот пару фич и через некоторое время уже на архитектуру без слёз не взглянешь. Хотя вроде каждый шаг изменения был логичный. Ощущение того, что мне не нравится продукт собственного труда плавно перетекал в ощущение, что программист из меня, простите, как из говна пуля.



Оказалось, я не один такой и схожие ощущения возникают у многих моих коллег. И тогда я решил, что либо научусь писать нормально, либо пора менять профессию. Я попробовал test-driven development, в попытке что-то изменить в своём подходе к программированию.



Забегая вперёд, по результату нескольких проектов, могу сказать, что TDD даёт более чистую архитектуру, но при этом замедляет разработку. И подходит не всегда и не всем.

Категория: Game Development

 
Назад Вперед