Вышел uvloop — продвинутая реализация цикла событий для asyncio в Python

Автор: admin от Сегодня, 20:06, посмотрело: 11

В стандартной библиотеке Python 3.4 в своё время появился модуль asyncio, позволивший удобно и быстро писать асинхронный код. А уже к Python 3.5 в синтаксис были добавлены конструкции async/await, окончательно оформившие асинхронность «из коробки» как красивую и гармоничную часть языка.

Вышел uvloop — продвинутая реализация цикла событий для asyncio в Python


Хотя asyncio сам по себе и позволяет писать высоконагруженные веб-приложения, оптимизация производительности не была приоритетом при создании модуля.

Один из авторов упомянутого PEP-492 (async/await) Юрий Селиванов взялся за разработку альтернативной реализации цикла событий для asyncio — uvloop. Вчера вышла первая альфа-версия модуля, о чём автор написал развёрнутый пост.

Если вкратце, то uvloop работает примерно в 2 раза быстрее Node.js и практически не уступает программам на Go. Под катом небольшая выжимка из записи в блоге

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

 

Приводим данные и код в порядок: оптимизация и память, часть 1

Автор: admin от Сегодня, 16:30, посмотрело: 11

В этой серии из двух статей говорится о том, как структура данных и памяти влияет на производительность. Предлагаются определенные действия для повышения производительности программного обеспечения. Даже простейшие действия, показанные в этих статьях, позволят добиться существенного прироста производительности. Многие статьи, посвященные оптимизации производительности программ, рассматривают распараллеливание нагрузки в следующих областях: распределенная память (например, MPI), общая память или набор команд SIMD (векторизация), но на самом деле распараллеливание необходимо применять во всех трех областях. Эти элементы очень важны, но память также важна, а про нее часто забывают. Изменения архитектуры программ и применение параллельной обработки влияют на память и на производительность.

Приводим данные и код в порядок: оптимизация и память, часть 1

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

 

5 достойных изучения проектов с открытым исходным кодом на React Native

Автор: admin от Сегодня, 15:24, посмотрело: 10

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

Я хочу представить 5 проектов с открытым исходным кодом, которые я изучаю сам и советую остальным.
5 достойных изучения проектов с открытым исходным кодом на React Native

Категория: Программирование, Веб-разработка, Game Development, iOS

 

Entity “фреймворк” для PHP из одного класса

Автор: admin от Сегодня, 13:57, посмотрело: 9

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

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

Перейдем к конкретной «ходовой» задаче — объектная прослойка для работы с базами данных в PHP. Решений великое множество, начиная от PDO и заканчивая многоуровневыми (и, на мой взгляд, не совсем уместными в PHP) ORM движками.

Категория: Программирование, Веб-разработка

 

Как написать монаду IO на C# (не) без помощи параллельной вселенной и машины времени

Автор: admin от Сегодня, 13:41, посмотрело: 13

В жизни нередко бывают ситуации когда нужно просто сесть и сделать какое-то дело, не забивая себе голову вопросами вроде "а что это даст?", "а кому это нужно?" и т. п. Написание монады IO — безусловно именно такой случай. Поэтому под катом находится рассказ о том как написать монаду IO на C#, без малейших попыток объяснить зачем это делать.

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

 

Драйверы умного или виртуального железа

Автор: admin от Сегодня, 13:26, посмотрело: 11

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

Для начала введём определение bus master: устройство, способное быть не только ведомым, но и ведущим на шине компьютера. То есть — не только отвечать на транзакции ввода-вывода, инициированные процессором, но и самостоятельно их инициировать — по собственной инициативе «ходить» в память.

История таких устройств уходит корнями в понятие DMA: ещё во времена прародителя микропроцессоров, микропроцессора 8080 (КР5080ИК80), появилось понимание, что процессор хорошо бы разгрузить от рутинной операции перетаскивания байтиков между устройствами в-в и памятью.

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

 

Easy Hack: Java application

Автор: admin от Сегодня, 13:08, посмотрело: 12

Время от времени пентестерам приходится сталкиваться с Java-приложениями. Это могут быть различные серверы, клиенты или просто десктопные программы. И иногда возникает необходимость «пропатчить» такое приложение. Зачем это нужно? Каждый случай возникновения такой необходимости уникален. К примеру:


  • Сложный протокол общения между сервером и клиентом. Чтобы отправлять произвольные запросы – патчим;

  • Захардкожены настройки. Чтобы поменять – патчим;

  • Для демонстрации последствий проблем типа «race condition» – патчим.


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

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

 

Пол Грэм, «Хакеры и художники», глава 10: «Programming Languages Explained»

Автор: admin от Сегодня, 12:56, посмотрело: 15

Пол Грэм, «Хакеры и художники», глава 10: «Programming Languages Explained» Книга «Хакеры и Художники», глава 10.

Эта глава есть только в книге, на сайте Пола Грэма она отсутствует.
Кстати, осталось совсем чуть-чуть и будет готова последняя глава книги, тем самым будет полный русский хабраперевод «Хакеров и художников». (Предыдущий перевод — Пол Грэм: «The Other Road Ahead».)

За помощь с переводом спасибо Щекотовой Яне.

Языки программирования «в разрезе»


У любой машины есть набор действий, которые на ней можно выполнить.
Иногда этот набор сильно ограничен. Со своим электрическим чайником я могу совершать только два действия: включать и выключать его. Мой CD проигрыватель будет уже посложнее. Помимо включения и выключения, я могу повышать и убавлять на нем громкость звука, воспроизводить и приостанавливать песни, перейти к следующей или предыдущей композиции, а также воспроизводить все это в случайном порядке.

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

Машинный язык


Когда были изобретены компьютеры, все программы приходилось писать как последовательность машинных инструкций. Вскоре, их начали писать в несколько более удобной форме под названием язык ассемблера. В языке ассемблера список команд тот же самый, только используются более удобные для программистов имена. Вместо обращения к инструкции сложения как 11001101, хотя именно так машина ее и вызывает, вам нужно написать add.

Проблема с машинным языком/языком ассемблера состоит в том, что большинство компьютеров могут выполнять только очень простые вещи. Например, предположим, что вам нужно, чтобы компьютер воспроизвел короткий звуковой сигнал 10 раз. Сомневаюсь, что у компьютера есть инструкция для осуществления какого-либо действия n раз. Поэтому, если бы вам понадобилось, чтобы компьютер что-то сделал 10 раз, используя настоящие машинные инструкции, вам бы пришлось написать нечто похожее на:

put the number 10 in memory location 0
a if location 0 is negative, go to line b
beep
subtract 1 from the number in location 0
go to line a
b ...rest of program…

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

И, кстати, взгляните еще раз на программу. Она и вправду воспроизведет короткий звуковой сигнал 10 раз? Неа, 11. В первой строке мне надо было указать 9 а не 10. Я намеренно поместил в наш пример ошибку, чтобы продемонстрировать важный аспект по поводу языков. Чем больше вам приходится писать для выполнения тех или иных действий, тем сложнее разглядеть ошибки.

Категория: Программирование, Веб-разработка

 

Тестируй плагины для Gradle правильно

Автор: admin от Сегодня, 12:56, посмотрело: 12

Как-то при подготовке одного из докладов про разработку плагинов для Gradle встала задача — как свои поделия потестировать. Без тестов вообще жить плохо, а когда твой код реально запускается в отдельном процессе и подавно, потому что хочется дебага, хочется быстрого запуска и не хочется писать миллион example-ов, чтобы протестировать все возможные кейсы. Под катом сравнение нескольких способов тестирования, которые мы успели попробовать.

Категория: Программирование, Веб-разработка

 

Работа с WAV-файлами с использованием PHP

Автор: admin от Сегодня, 11:56, посмотрело: 9

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

И тут Остапа понесло И тут в голову пришла светлая мысль о том, что было бы прикольно не просто отображать информацию о файле, но и иметь возможность генерировать такой файл «на лету». Думаю, все видели в сети всевозможные «онлайн-пианино» и прочее, верно?

Итак, что мне удалось сделать за 2 вечера — под катом.

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

 
Назад Вперед