Как писать повторяемый код

Я долго думал как бы перевести на русский язык термин reusable code. Ничего лучше не придумал как использовать банальное выражение - повторяемый код. В конце концов ведь он действительно повторяемый, например, библиотека ничто иное как набор кода, который повторно используется во многих проектах.

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

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

читать дальше

Рецензия на книгу Проект Феникс. Роман о том, как DevOps меняет бизнес к лучшему

Проект Феникс

Около двух месяцев назад в книжном магазине мне случайно на глаза попалась книга под интригующим названием Проект Феникс. Роман о том, как DevOps меняет бизнес к лучшему. Не скрою, я попался на модное нынче слово DevOps. Немного почитав предисловие к книге, я понял что она меня заинтересовала, тем более что цена на неё была "смешной". Всё это время после покупки я даже не притрагивался к книге. 1 января 2016 года я всё же решил её начать читать. И знаете, не мог оторваться от чтения всё это время. Совокупно, мне потребовалось 2 дня, чтобы осилить эту книгу. Хорошее начало года.

Вкратце, "Проект Феникс" это художественный роман о том как парень по имени Билл Палмер, получив должность вице-президента по информационным технологиям, принимается за реструктуризацию IT и бизнес процессов внутри огромной корпорации. Первоначально следуя своей интуиции, Билл понимает, что прежний подход к работе ошибочен и ведет только к одному - к краху всей компании, так как IT это краеугольный камень всего бизнеса.

читать дальше

Pyenv: удобный менеджер версий python

Появлялась ли у вас хоть когда-нибудь надобность в разделении версий python на одной машине? Думаю ответ вероятнее всего будет положительным. В своей практике программирования я нередко сталкиваюсь с ситуациями, когда мне необходимо иметь под рукой сразу несколько версий Питона, да желательно ещё и самых последних. Обычно в Windows среде с этим никогда не возникает проблем, основная сложность для неподготовленного разработчика появляется при работе в unix-like операционных системах, где собственно и разворачивается большинство python-приложений (будь то веб-приложение или новомодный скрипт, автоматизирующий рутинную работу).

Сегодня я хочу кратко рассказать и показать возможности работы такого замечательного инструмента как pyenv. Данный скрипт ни что иное как удобный менеджер версий для языка программирования Python. Лучше всего сразу всё увидеть на конкретных примерах.

читать дальше

Введение в Vagrant

Vagrant

За последнее время обилие инструментов для разработчиков неуклонно растёт: Ansible, Otto, Vagrant, Nomad, Consul, Puppet, Chef... Что это всё? Дабы немного прояснить ситуацию, сегодня я бы хотел рассказать о таком замечательном инструменте как Vagrant, который сам использую практически каждый день.

Что такое Vagrant?

Vagrant это инструмент, позволяющий унифицировать среду разработки и среду в которой этот код будет разворачиваться, используя технологию виртуализации. Проще говоря, если вы как и я любитель делать проекты в среде Windows, но в будущем разворачивать их на *nix машинах, то Vagrant вам в помощь :-) Очень часто возникают проблемы на фоне того, что среда разработки значительно отличается от среды, где будет крутиться конечное приложение. Например, в Windows название папки с Заглавной буквы и со строчной это одно и то же, хотя в unix системах это две разные папки.

С высоты птичьего полёта, Vagrant ничто иное как CLI (интерфейс командной строки) для VirtualBox с блекджеком и Vagrantfile.

В качестве демонстрационного примера мы создадим изолированную операционную систему на базе Ubuntu 14.04.3 LTS с виртуальным окружением Python + работающим Django приложением внутри.

читать дальше

Бесплатные SSL сертификаты от Let's Encrypt

В прошлом году Google явно дал всем понять, что пора бы уже подключать SSL сертификаты к своим сайтам. Теперь же по-умолчанию предпочтение будет отдаваться сайтам, использующим защищенное соединение. В связи с этим с недавних пор появилась шумиха вокруг бесплатных SSL сертификатов (давно уже пора). При поддержке Linux Foundation, а также Mozilla, Facebook, Akamai, Cisco и многих других именитых гигантов IT индустрии, свет увидел проект под названием Let's Encrypt.

Проект в первую очередь призван обезопасить веб, а также облегчить жизнь рядовым веб-разработчикам (всю эту возню с генераций приватных ключей, CSR, подтверждением прав на домен, настройкой веб-сервера и так далее свести на нет). Более того, SSL сертификаты, выдаваемые Let's Encrypt, полностью бесплатные. Есть в них правда одно но, они являются базовыми и срок действия ограничен до 3-х месяцев (но это вовсе не проблема, так как продление можно настроить автоматически).

читать дальше

Итоги первой встречи Python программистов в Алматы

Almaty Python

В середине сентября 2015 года мы в Алматы провели первую встречу Питонистов - ALA Py.

На этой встрече было порядка 120 человек (успех). Встреча была организована нашей компанией Aviata.kz. Было прочитано 3 доклада:

Видео с митапа можно посмотреть ниже

Полный фотоотчет доступен здесь.

читать дальше

Руководство по работе с HTTP в Python. Библиотека requests

Стандартная библиотека Python имеет ряд готовых модулей по работе с HTTP.

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

Во-первых, большое обилие классов и функций. Во-вторых, код получается вовсе не pythonic. Многие программисты любят Python за его элегантность и простоту, поэтому и был создан модуль, призванный решать проблему существующих и имя ему requests или HTTP For Humans. На момент написания данной заметки, последняя версия библиотеки - 2.9.1. С момента выхода Python версии 3.5 я дал себе негласное обещание писать новый код только на Py >= 3.5. Пора бы уже полностью перебираться на 3-ю ветку змеюки, поэтому в моих примерах print отныне является функцией, а не оператором :-)

читать дальше

Ещё одна попытка начать писать в блог

Приветствую, уважаемый читатель!

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

Тематика блога узконаправленная, в основном тут будут записки на тему софтостроения и смежные области.

Контактную информацию можно посмотреть на странице Обо мне.

читать дальше