Адиль Хаштамов

Привет! Меня зовут Адиль. Всю свою сознательную жизнь я занимаюсь разработкой программного обеспечения. Этот блог моя записная книжка, где я стараюсь почаще делать заметки на тему программирования, разработки и проектирования ПО. Сейчас особенно заинтересован в современных веб приложениях, машинном обучении и анализе данных.

Django Channels: работа с WebSocket и не только

Эпоха перемен

За последнее время благодаря активному развитию технологий, веб значительно преобразился. Буквально один десяток лет назад, всё что у нас было это несложные динамические веб-страницы с перезагрузкой при каждом запросе к серверу. Позже пришел Ajax, принёсший немало головной боли для программистов и пользователей (в основном из-за слабого канала, разных браузеров и кривых рук самих программистов). Идут годы, а тем временем запросы пользователей растут, инструменты находятся в постоянном режиме совершенствования с целью удовлетворения растущих потребностей конечных пользователей. Сейчас диву даёшься - веб-сайты превращаются в полноценные интерактивные приложения, способные практически полностью заменять своих настольных собратьев (Microsoft Word против Google Docs, например), появляются 3D-игры, мощности браузерных движков растут как на дрожжах. Современный браузер способен определять геолокацию, работать со  звуком, камерой, 3D изображением и многое-многое другое. Не за горами время, когда единственным полезным приложением внутри операционной системы будет браузер.

Фреймворк Django появился в далёком 2003 году, то есть 13 лет назад. За эти годы многое изменилось. Сейчас Django является самым читать ещё

Разворачиваем Django приложение в production на примере Telegram бота

Данная заметка это продолжение статьи про написание telegram бота, в ней я постараюсь максимально подробно осветить тему разворачивания (deploy) полноценного, хотя и маленького, Django приложения в production среде на ОС Linux, Ubuntu 14.04 LTS. К концу статьи у нас будет полноценный telegram бот, крутящийся в вебе и принимающий команды от пользователей этого мессенджера.

Чему вы научитесь после прочтения заметки:

читать ещё

Как написать Telegram бота: практическое руководство

TelegramВ последнее время Telegram у всех на слуху. Нужно отдать должное отделу маркетинга этого приложения, шумиху подняли на славу. Одной из основных "фишек" Telegram является его якобы защищённость - по словам Павла Дурова вся переписка между пользователями шифруется. Более того, ни одна спец.служба мира не будет иметь доступ к вашим сообщениям. Но в данной статье речь не об этом. Сегодня хотелось бы поговорить о не менее крутой фишке в Telegram, а именно о ботах. Помимо того, что в сети уже полно информации о различного рода Telegram ботах (github бот, например), мессенджер открыл своё API для разработчиков, и теперь каждый может создать своего собственного бота с блэкджеком и плюшками.

В статье я приведу пример написания онлайн бота с использованием Python и Django фреймворка. То есть мы "запилим" полноценное веб-приложение, которое будет крутиться на удалённом хосте и принимать команды от пользователей. Весь исходный текст доступен в моём github репозитории.

читать ещё

Celery: начинаем правильно

Python Celery
В этой статье мне хотелось бы поделиться с читателями своим опытом работы с таким замечательным инструментом в Python как Celery. Celery это ничто иное как распределённая очередь заданий, реализованная на языке Python. На момент написания этой статьи, самой последней версией является 3.1.20. Неосведомлённый читатель может не знать для чего вообще нужна система очередей задач наподобие Celery, поэтому кратко поясню этот момент.

Что такое Celery и зачем оно нам?

Часто ли вам приходилось сталкиваться с типовыми задачами в веб-приложениях вроде отправки электронного письма посетителю или обработки загруженных данных. Чаще всего такого рода манипуляции не требуют участия конечного пользователя вашего проекта, то есть их можно выполнять в фоновом режиме. Те из нас, кто реализует выполнение этих задач в одном из процессов веб-сервера, "тормозят" тем самым его работу, увеличивая время отклика и ухудшают user experience.

читать ещё

Инструкция по работе с DoubleClick

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

Что такое DoubleClick?

DoubleClick это рекламная сеть Google, позволяющая веб-мастерам встраивать в свои веб-проекты рекламные объявления (баннеры, Adsense), используя возможности этого сервиса. Проще говоря, в определённые места своего сайта вы встраиваете специальный JavaScript код, отвечающий за показ объявлений. Рекламные же кампании ведёте через этот самый DoubleClick. Тем самым нет необходимости создавать свой велосипед в виде баннерной системы для сайта (хотя в некоторых случаях такой подход оправдан).

Вот как выглядит интерфейс сервиса:

читать ещё

Участие в подкасте TalkPython

12 января вышел очередной выпуск подкаста TalkPython в котором мне посчастливилось принять участие. Тема дискуссии была посвящена найму людей на работу без опыта на должность программиста (речь в частности шла о Python). Среди участников были специалисты из таких компаний как Netflix и Paypal. По большей части речь шла о навыках, необходимых новичку-программисту для того, чтобы получить своё первое приглашение на работу. Гости делились собственным опытом и взглядами на то, чем же должен выделяться кандидат.

Я принимал участие во втором выпуске. В первой же части шоу участники рассказывали о своём первом опыте программирования на Python, а также ощущениями после получения первого job offer.

Послушать обе части подкаста можно по следующим ссылка:

читать ещё

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

Я долго думал как бы перевести на русский язык термин 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 приложением внутри.

читать ещё