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

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

Почему Python?

Python programming

С некоторого времени в голове крутилась мысль о том, а не написать ли мне небольшую заметку на тему почему язык программирования Python стоит изучать, и более того, создавать на нём программные проекты.

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

Что такое Python?

Python это язык программирования общего назначения, нацеленный в первую очередь начитать ещё

Структура и Интерпретация Компьютерных Программ. Начало.

Структура и интерпретация компьютерных программ

Книга под названием "Структура и Интерпретация Компьютерных Программ" была выпущена в далёком 1979 году. Раньше по ней преподавали вводный курс в программирование среди студентов MIT. Сейчас книга находится в свободном доступе в Интернете, и любой желающий может скачать и изучать её в своё удовольствие. Помимо книги, в сети также есть цикл видео-лекций от авторов, они расположены на ресурсе MIT OpenCourseware, мне кажется они могут неплохо дополнять друг друга по ходу изучения материала.

Чем же примечательна эта книга? Да хотя бы отзывами на Amazon :) Среди рецензентов есть такие личности как Peter Norvig и Paul Graham. К слову, сейчас у книги рейтинг 3.8 из 5, отчего некоторые известные личности недоумевают. А если серьёзно, то это фундаментальный классический труд в области программирования (ничем не хуже небезызвестной книги The Art of Programming от Д. Кнута, которую никто не читал). Единственным непонятным моментом для меня является факт преподавания курса программирования для новичков по этой книге. Представляю как можно напугать новоиспечённых студентов её содержимым. Интересно, есть ли в сети статистика по которой можно узнать много ли людей, посещавших этот "адский" курс, предпочли в дальнейшем поменять свой major :) Если бы организаторы Code.org пропагандировали программирование по этой книге, получился бы знатный epic fail.

Итак, по-моему мнению, книга явно не для новичков в программировании, так как концепции в ней сложны для восприятия людьми "не нюхавшими пороху", более того, понадобится недюжинный запас мотивации и терпения, так как упражнения после каждой секции сложны и требуют от читателя изрядно "попотеть". Но награда стоит того. Я прочитал лишь первую главу этой книги (их всего 5), проработал часть упражнений и, признаюсь, почувствовал как стал лучше разбираться в некоторых вещах (обрёл какой-никакой фундамент).

В общем, к чему я всё это пишу в блоге? А к тому, что собираюсь прочитать всю книгу и проработать как можно больше упражнений (в частности сложных).

План таков:

  • Прочитать книгу.
  • По ходу чтения также просматривать лекции, так как в книге порой не всегда можно понять материал с 1-го и даже с 10-го раза.
  • Выполнять упражнения в каждой секции. Читать конечно хорошо, но лучше всего материал усваивается только на практике.

Читать я буду русское издание ("Добросвет"), у меня имеется бумажный вариант. В случае проблем с переводом, обращаться к оригиналу никто не запрещал. По ходу моего эксперимента, буду писать заметки в этот блог. Надеюсь публичность даст свою толику мотивации (в день блог посещает в среднем 120 человек).

p.s. В книге используется язык программирования Lisp, в частности его диалект Scheme. Для проработки материала собираюсь использовать Racket. Почитать и посмотреть лекции можно по этой ссылке.

Подписывайтесь на блог, будет интересно!

читать ещё

Поездка на PyCon US 2016 в Портленд

PyCon US 2016 @ Portland, OR

Совсем недавно закончилась самая масштабная конференция в мире Python - PyCon US 2016 в городе Портленд. В этом году мне посчастливилось быть среди её участников. В этой заметке расскажу о своих впечатлениях о поездке, о самой конференции и немного о докладах, прочитанных там.

Портленд небольшой городок на западе США. Он носит неофициальное название Rose City (Город Роз). И это не просто так, там действительно очень много цветов, деревьев да и зелени в целом; глаз радуется одним словом. Каждый год в городе проходит фестиваль роз.

читать ещё

Первый выпуск: рецензии на прочитанные книги

В последнее время я очень много читаю. С начала этого года я прочитал десяток книг, поэтому в этом блоге на регулярной основе (раз в 2-3 месяца) буду публиковать небольшие рецензии одним постом. Жанр книг небольшой, в основном я читаю профессиональную литературу (программирование, computer science и так далее) и люблю научно-популярную литературу (издательства МИФ, Альпина Паблишер, а также оригинальные издания).

Итак, поехали...

читать ещё

Windows 10 Ubuntu: запускаем Django приложение

На прошедшей конференции Build 2016 от Microsoft, стало известно, что грядущий релиз с обновлениями для Windows 10 принесёт нам массу новинок. Одной из killer фич будет присутствие нативной ОС Ubuntu внутри Windows 10. Уже сейчас участники программы Windows Insider могут получить ранний доступ к самому "горячему" функционалу.

Я в свою очередь подписался на ранние обновления и решил попробовать каково это пользоваться Ubuntu внутри Windows 10. 27 апреля 2016 году вышла новая сборка Windows Preview 14332. Именно данный релиз я поставил себе на компьютер. Как отмечает changelog от Microsoft, в новой версии была исправления проблема с подключением к сети Интернет, возникающая у многих пользователей, использующих Ubuntu под виндой.

В качестве теста я решил продемонстрировать запуск полноценного Django приложения внутри Ubuntu на Windows 10. Стоит отметить, что с виндой поставляется Ubuntu 14.04 LTS 64 бита.

Установка

Чтобы получить обновление с вочитать ещё

Python-RQ: очередь задач на базе Redis

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

В этой заметке я расскажу об инструменте под названием Python RQ. Аббревиатура RQ обозначает Redis Queue. Из названия можно догадаться, что инструмент создан вокруг системы Redis. Она в данном случае выступает в качестве брокера и бэкэнда. RQ следует философии UNIX, то есть является маленьким инструментом, решающим одну задачу очень хорошо.

Установка

Тут всё просто и обыденно. Устанавливаем читать ещё

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.

читать ещё