Про книгу Майкла Нейгарда «Release it!»

Release it!

На днях дочитал замечательную книгу Майкла Нейгарда, которая в переводе называется «Release it! Проектирование и дизайн ПО для тех, кому не всё равно». В оригинале книга имеет название «Release it! Design and Deploy Production-Ready Software», и знаете, русскоязычный вольный перевод названия лучше отражает суть книги, по крайней мере развертыванию (deploy) приложений на сервере посвящена лишь одна последняя (из 18) глава.

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

Книга рассказывает о том, как уменьшить последствия, после того, как в вашем веб-приложении что-то пойдет не так, а что-то обязательно пойдет не так — это основной посыл книги. Невозможно заранее предусмотреть все, что может случиться с вашим приложением до его выход на рынок (в онлайн). Как бы хорошо не было протестировано приложение, тесты наверняка не учитывают одну вещь — реальную нагрузку. Нагрузочные тесты — это отдельная культура, а программисты в основном занимаются юнит-тестами и интеграционными тестами, которые должны выполняться как можно быстрее, поэтому они по определению оперируют небольшими базами данных (а то и вовсе фиктивными объектами). А что произойдет, если в базе окажется не десяток записей, а миллионы?

Читать далее ‘Про книгу Майкла Нейгарда «Release it!»’ »

Новая статья про оформление графиков в Matplotlib

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

annotate_02

Новая статья «Как рисовать гистограммы в Matplotlib»

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

bar_07

Язык Go. Первые впечатления. Организация исходников

Язык Go. Первые впечатления. Организация исходников

Недавно я писал про книгу о языке Go (он же Golang), а теперь у меня появился первый боевой опыт использования этого языка. Хотя написанная программа и небольшая, но она позволила пощупать некоторые особенности языка. В этом посте хочу рассказать про одну особенность Go, непривычную по сравнению с другими языками — это особенности расположения исходников, поскольку в Go вы должны организовывать по определенной структуре в определенных папках.

Если кому интересно, то программа, которую я писал на Go (и продолжаю ее доводить до ума) предназначена для выковыривания из Википедии списка улиц Москвы с попыткой получить по ним информацию — округов и районов, где эти улицы проходят. Поскольку я периодически участвую в городских ориентированиях, то получение полного списка улиц, включая недавние переименования, для меня больной вопрос. Оказалось, что список улиц Москвы в Википедии достаточно оперативно обновляется, и там уже перечислены улицы, которых еще нет не то что в атласах (с атласами Москвы в последнее время вообще беда), но и на других официальных сайтах со списками улиц. К слову, на OpenStreetMap и Яндекс.Картах улицы тоже появляются достаточно оперативно, но там я не нашел способа получения списка улиц по округам и районам. Если кто подскажет, где можно найти полный такой список, буду благодарен.

Исходники программы streetlist лежат на github, там же есть и подробное описание программы с примерами ее использования.

Но вернемся к Go. Для тех, кто еще не слышал об этом языке, скажу, что это компилируемый язык со статической типизацией. Программы, написанные на языке Go являются полностью самостоятельными и не требуют от пользователя установки каких-то дополнительных библиотек, но при этом среда выполнения Go включает в себя сборщик мусора с подсчетом ссылок. В самом языке есть такое понятие как указатели, но они все обрабатываются сборщиком мусора, а арифметика с указателями не поддерживается. Язык является объектно-ориентированным, но объектная ориентация его несколько непривычная. Одной из особенностей языка являются так называемые горутины (gorutines) — что-то вроде легковесных потоков, которые можно делать в большом количестве, не опасаясь, что при этом просядет производительность, переносить их на реальные потоки будет среда выполнения Go.

Читать далее ‘Язык Go. Первые впечатления. Организация исходников’ »

Новая статья «Основы использования Fabric»

Написал новую статью про библиотеку Fabric для Python, которая позволяет легко автоматизировать рутинные задачи как при работе на локальном компьютере, так и на удаленном сервере. С помощью Fabric можно создавать резервные копии, развертывать веб-приложения и даже использовать его для сборки программ. Преимущество Fabric в том, что эта библиотека не будет требовать от вас изучения нового синтаксиса, все скрипты пишутся на Python.

Ссылка на статью — Основы использования Fabric.

Source 1.13. Новая версия плагина для OutWiker с исправлением интересной ошибки

Source 1.13. Новая версия плагина для OutWiker с исправлением интересной ошибки

Сегодня выложил новую версию плагина Source для OutWiker, который позволяет раскрашивать тексты программ на викистранице. В этой версии была исправлена давняя проблема, которая могла проявляться под Linux в случае, если у вас в системе была установлена библиотека pygments, которая также входит в состав плагина. Ошибка проявлялась в том, что в этом случае из плагина пропадала поддержка синтаксиса языка 1С, могла ли эта ошибка привести к более серьезным проблемам в случае наличия в системе очень старой версии pygments — вопрос открытый.

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

Читать далее ‘Source 1.13. Новая версия плагина для OutWiker с исправлением интересной ошибки’ »

Про язык Go и книгу «Programming in Go»

Талисман языка Go

В последнее время все больше стало появляться статей про язык программирования Go, который разрабатывается в стенах Google. Чтобы посмотреть, что это за зверь, прочитал книгу Марка Саммерфильда (Mark Summerfield) «Programming in Go. Creation Application for the 21th Century» из серии Develorep’s Library. Когда я писал этот пост, узнал, что эта книга в 2013 году была издана и на русском языке, но я читал ее английскую версию.

Прежде чем писать про книгу, расскажу про особенности языка Go. Я не буду давать оценки тому или иному решению, который предлагает язык, поскольку пока не напишешь на каком-нибудь языке серьезную программу, глупо его критиковать — каждый язык программирования требует настройки на «свою волну». Я постараюсь все особенности языка описать на пальцах, используя минимум кода.

Читать далее ‘Про язык Go и книгу «Programming in Go»’ »

Про книгу «Как тестируют в Google»

test_googleДо сих пор книги по тестированию софта (под софтом для простоты я понимаю и десктопные программы, и сайты) меня обходили стороной. Разумеется, тесты я пишу, в основном это юнит-тесты, но после того как в последнее время начал «пописывать» сайты на Django, вопросы тестирования встали более остро.

Поэтому я решил наверстать упущенное в этой области и для начала почитать «Как тестируют в Google», в девичестве «How Google Tests Software». Честно говоря, книга вызвала у меня неоднозначное впечатление. С одной стороны, она читается легко и даже интересно, но с точки зрения пользы примерно половину книги можно было бы выкинуть.

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

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

Читать далее ‘Про книгу «Как тестируют в Google»’ »

Две новые статьи про библиотеку Matplotlib

В серию статей про библиотеку Matplotlib (это библиотека для построения графиков на языке Python) добавил две новые статьи:

Новая статья «Полезные плагины для Vim. Часть 2»