Рубрика «ruvds_перевод» - 17

5 антипаттернов при написании кода на функциональном ЯП - 1


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

Откройте для себя весь потенциал побитовых операторов. Без математики - 1


При изучении нового языка программирования в его документации мы обычно находим таблицу, где перечислены различные операторы, которые можно использовать с числами. Помимо хорошо знакомых нам +, -, * и /, в ней всегда присутствует раздел, который многие пропускают. Я имею ввиду раздел с побитовыми операторами: <<, >>, &, ^ и |.

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

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

FET: замышляем новую шалость - 1


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

Почему работать с OAuth сложно даже сегодня? - 1


OAuth — это стандартный протокол. Ведь так? И для OAuth 2.0 есть клиентские библиотеки практически на всех языках программирования, которые можно представить.

Вероятно, вы подумаете, что имея клиентскую библиотеку, можно реализовать OAuth для любого API буквально за десять минут. Или хотя бы за час.

Если вам это удастся, то, пожалуйста, сообщите об этом нам — мы угостим вас изысканным ужином и послушаем, как у вас это получилось.
Читать полностью »

Ошибки, которые я совершил, будучи молодым менеджером - 1


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

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

Эй, Google, это твой баг - 1


Это история о том, как мы обнаружили баг в приложении для Android и упорно пытались доказать, что это баг Google, а потом ещё упорнее пытались заставить компанию его устранить.

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

▍ Да, это заняло больше четырёх месяцев!

Почему так долго? Позвольте мне объяснить природу бага и хронологические этапы его устранения.
Читать полностью »

Я пытался зарабатывать по $5 в день пассивного дохода, но вместо этого научился чему-то новому - 1


Что такое пассивный доход?

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

Лично для меня это всегда было связано с использованием преимуществ умения нешаблонно мыслить и зарабатывать деньги. Смогу ли я, разработчик ПО, могу зарабатывать деньги на том, чему уже научился (предпочтительно без необходимости что-либо делать)?

Заманчиво, не так ли?
Читать полностью »

Алгоритмы балансировки нагрузок - 1


Рано или поздно веб-приложения перерастают среду одного сервера. Компаниям требуется увеличить или их доступность, или масштабируемость, или и то, и другое. Чтобы сделать это, они развёртывают своё приложение на нескольких серверах и ставят перед ним балансировщик нагрузок для распределения входящих запросов. Чтобы справляться с нагрузками, большим компаниям могут потребоваться тысячи серверов, на которых запущено веб-приложение.

В этом посте мы рассмотрим способы, которыми один балансировщик нагрузок может распределять HTTP-запросы на множество серверов. Мы начнём снизу и проделаем весь путь вверх до современных алгоритмов балансировки нагрузок.
Читать полностью »

Ускоряем Python в сто раз при помощи менее чем ста строк на Rust - 1


Однажды на работе у нас возникла проблема с производительностью одной из наших основных Python-библиотек.

Эта библиотека формирует фундамент нашего конвейера 3D-обработки. Это довольно большая и сложная библиотека, использующая NumPy и другие научные пакеты Python для выполнения широкого спектра математических и геометрических операций.

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

Мы пришли к выводу, что для работы с увеличившейся нагрузкой нужно сделать систему, по крайней мере, в пятьдесят раз быстрее, и решили, что помочь в этом нам может Rust.

Так как проблемы производительности, с которыми мы столкнулись, встречаются довольно часто, мы можем воссоздать и решить их прямо здесь, в (не такой уж короткой) статье.

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

Если вы хотите сразу перейти к получившемуся коду, то читайте раздел «Подведение итогов».
Читать полностью »

FET: (F)дружелюбный (E)эффективный (T)транзистор - 1


Работая со схемой, управляющей приличной силой тока, вы зачастую сталкиваетесь с полевыми транзисторами (FET, Field-Effect Transistor). Независимо от того, хотите ли вы управлять парой мощных светодиодов, двигателем или включать/отключать USB-устройство, в схеме обычно присутствует полевой транзистор, выполняющий часть ответственной работы. Вы можете не знать, как именно он функционирует, как его использовать и какие нюансы при этом учитывать — поэтому начнём с основ.Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js