Цитата: Языки программирования

Высказывание Бьёрна Страуструпа о языках программирования.

There are only two kinds of languages: the ones people complain about and the ones nobody uses.

Бьёрн Страуструп

bjarne

Видео: Clojure интерактивная разработка

Классный доклад от Николая Рыжикова про язык Closure с демонстрацией.

Доклад Clojure: интерактивная разработка для интерактивного веб.

Цитата: платные программы

Ричард Столлман о платном программном обеспечении.

If the users don’t control the program, the program controls the users. With proprietary software, there is always some entity, the «owner» of the program, that controls the program—and through it, exercises power over its users. A nonfree program is a yoke, an instrument of unjust power.

Ричард Столлман, сайт ОС GNUstallman

 

Видео: Как создавался редактор Visual Studio Code

Очень интересное видео, в котором Александру Дима рассказывает о истории создания Visual Studio Code и о сложностях создания редактора на JavaScript.

Очень интересное видео, в котором Александру Дима рассказывает о истории создания Visual Studio Code и о сложностях создания редактора на JavaScript.

Perfomance testing

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

Однажды я заметил, что godesigner.ru стал тормозить. Открываю страницу, а она не загружается. Правда, через несколько секунд страница отобразилась нормально. Потом через десять минут эта проблема снова повторилась. И ещё раз. Тут я понял, что есть проблема, посмотрел графики New Relic и ужаснулся — значение средней загрузки за двадцать минут возросло до 40 (должно быть не больше единицы)

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

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

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

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

Я до конца не уверен, как правильно создавать и производить тестирование кода на производительность. Вот парочка ссылок, которые я нашёл по теме, когда искал информацию в интернете:
https://testitquickly.com/2008/12/08/essential-about-performance-testing/
https://msdn.microsoft.com/en-us/library/bb924357.aspx

Ещё я нашёл пару книг, которые прочитаю:
https://www.amazon.com/Art-Application-Performance-Testing-Programmers/dp/0596520662
https://www.amazon.com/Performance-Testing-Guidance-Web-Applications/dp/0735625700

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

Цитата: Хоар о тестах

Высказывание Чарльза Хоара о пользе тестов.

The real value of tests is not that they detect bugs in the code, but that they detect inadequacies in the methods, concentration, and skills of those who design and produce the code.

Чарльз Хоар

hoare

Цитата: Программы

Алан Кэй о программной обеспечении.

Most software today is very much like an Egyptian pyramid with millions of bricks piled on top of each other, with no structural integrity, but just done by brute force and thousands of slaves.

Алан Кэй

Alan_Kay