Что нового появилось в Django Channels?

С момента последнего поста про Django Channels прошло много времени, проект развивается и потихоньку идёт к стабильному релизу. В новых версиях пакета появляются интересные фишки о которых я сегодня расскажу вкратце:

Generic Consumers

Generic Consumers чем то напоминают Class Based Views в Django. Их задача сократить количество кода при написании обработчиков каналов, а также улучшить их структуру и внешний вид.

Базовым классом является BaseConsumer.

from channels.generic import BaseConsumer

class MyConsumer(BaseConsumer):

    method_mapping = {
        "your.channel.name": "method_name",
    }

    def method_name(self, message, **kwargs):
        pass

У класса есть атрибут-словарь method_mapping, где ключом является наименование канала, а значением — функция, обрабатывающая данный канал. В случае использования т.н. Class Based Consumers Читать далее «Что нового появилось в Django Channels?»

Какие книги читать начинающему программисту?

У меня есть книга, которую я уже пытаюсь раза с третьего осилить, но всё никак не дойду до последней страницы. Называется она «Человеческий фактор. Успешные проекты и компании«, в простонародье «Peopleware» и является хрестоматией по разработке программного обеспечения наряду с классическим трудом под названием «Мифический человеко-месяц» от Фредерика Брукса. Так вот, там есть интересное выражение, которое гласит следующее:

«Статистика по чтению литературы обескураживает особенно сильно: средний разработчик программного обеспечения, к примеру, не имеет ни единой книги по предмету собственной работы и не может похвастать тем, что читал такую книгу»

Мой опыт работы с программистами лишь доказывает слова ДеМарко и Листера. Современная разработка ПО сводится к постоянному «гуглению» и чтению ответов на StackOverflow. В этом нет ничего плохого, все мы ежедневно сталкиваемся с проблемами решения которых не знаем, и порой «прогуглить» ответ получается куда быстрее  нежели самостоятельно разбираться почему наш код не работает. Но серьёзная проблема кроется в ситуациях, когда у человека отсутствуют фундаментальные знания о предмете своей работы.

Софтостроение специфическая отрасль, где специалисту необходимо обладать рядом навыков и знаний. Возьмём самый простой пример: веб-разработка. Современному веб-разработчику нужно иметь представление о множестве тем: веб-программирование, веб-дизайн, основы безопасности веб-приложений, навыки системного администрирования (чаще всего unix-подобных систем), навыки работы с СУБД, паттерны проектирования веб-приложений, хотя бы поверхностно понимать методологии разработки ПО, их плюсы и минусы, не говоря уже о множестве инструментов, используемых ежедневно (VCS, IDE, ОС, пакетные менеджеры и так далее). Веб-разработчик, не знающий основ безопасности веб-приложений, может ненамеренно оставить серьёзную брешь в системе, которая в будущем обернётся серьёзными финансовыми потерями, а может и вовсе иметь катастрофические последствия. Порой «гугля» очередное решение проблемы, мы не задумываясь копируем код или используем сомнительную библиотеку, даже не заглянув внутрь. Главное работает 🙂 А ведь за всем этим могут скрываться серьёзные проблемы… Читать далее «Какие книги читать начинающему программисту?»

Шпаргалка по PostgreSQL

PostgreSQL это кроссплатформенная полнофункциональная объектно-реляционная база данных. Эта небольшая заметка написана с целью собрать в одном месте небольшой туториал по установке и настройке этой СУБД. Действие происходит в ОС Ubuntu 16.04.

Установка PostgreSQL

По умолчанию PostgreSQL входит в пакет Ubuntu. Систему можно установить следующей командой:

sudo apt-get install postgresql-9.4

Для установки самой последней версии СУБД, необходимо выполнить следующие шаги: Читать далее «Шпаргалка по PostgreSQL»

Как обучать детей программированию

Программирование для детей

Те из вас, кто следит за моей страницей Чем я занят сейчас, наверняка заметили, что в последнее время я занимался обучением детей программированию. Удивительно как мысли материализуются. После посещения PyCon US 2016 в Портленде, у меня в голове крутилась мысль попробовать себя в роли наставника в мир компьютерного программирования для детей. И к счастью, такая возможность появилась очень быстро. Меня пригласили в качестве преподавателя в детский лагерь, в программе которого был урок программирования два раза в неделю для двух разных групп. Первая группа состояла из деток постарше (от 8 до 12 лет), во второй преимущественно были дети в возрасте от 6 до 8 лет.

Как научить ребенка программированию

Дело в том, что будучи в США, мне посчастливилось приобрести книгу под названием Teach Your Kids To Code с хорошей скидкой. В ней все примеры приводятся в игровой форме с использованием языка программирования Python. Возможно в будущем я посвящу ей отдельный пост, а сейчас вернёмся к теме моего опыта преподавания. Так вот, изначально мне казалось разумным строить образовательный процесс, черпая информацию из этой книги, но позже я понял как глубоко ошибался 🙂 Почему? Читать далее «Как обучать детей программированию»

Выпуск № 2: рецензии на прочитанные книги

Голая статистика: самая интересная книга о самой скучной науке

Книга действительно интересная. Она не похожа на те «сухие» книги по статистике к которым мы привыкли со времён учебы в университете. Несмотря на то, что у меня есть неплохой багаж знаний в этой области, я нашел эту книгу полезной и увлекательной. Её нескучно читать. Отмечу правда то, что в ней речь идёт о совсем о базовых понятиях: медиана и среднее значение, закон больших чисел, тестирование гипотез и начальный ввод в курс теории вероятностей. Нужно отдать должное автору, с задачей заинтересовать читателя он справился на пять. Главным конкурентным преимуществом книги являются её интереснейшие истории, подкреплённые статистическим анализом. Благодаря им у читателя неплохо развивается интуиция по отношению к статистике. Отдельно стоит отметить подробный анализ задачи Монти Холла (кто смотрел фильм «Двадцать одно», тот знает о чём речь).

Two Scoops of Django 1.8

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

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

  • Лучшие практики работы с Django Models
  • Django Forms
  • Профилирование и оптимизация узких мест
  • Вопросы безопасности  и развертывания Django проекта
  • Тестирование Django
  • Анализ сторонних приложений (django reusable apps)
  • Работы с шаблонизаторами (Django templates, Jinja2)
  • Реализация REST API (на примерах django-rest-framework)
  • Расширение стандартной User модели фреймворка

И многое многое другое. Книга получилась в виде справочника, поэтому может быть использована в качестве настольного руководства к действию. В связи с этим читать можно выборочно, а по ходу работы возвращаться к ней снова. Авторами книги выступили небезызвестные PyDanny (Daniel Greenfeld) и Audrey Roy Greenfeld, значимые люди в Python сообществе. Советую!

Новая большая книга CSS

Обновлённое издание книги CSS3: The Missing Manual от издательства «Питер», переведённое на русский язык. Первую версию я читал в далёком 2010 году, когда только-только собирался вникнуть в тему каскадных стилей, и, скажу честно, это лучший труд на тему CSS для новичков (а может даже и для бывалых). Рейтинг Amazon: 4.6, Goodreads: 4.05. В новом издании автор уделяет внимание CSS3, HTML5, теме адаптивного дизайна, а также более сложным инструментам вроде flex и Sass. Большая часть книги всё тот же старый материал: форматирование текста, изображений, работы с таблицами и формами, базовые понятия в CSS, «div»ная вёрстка и так далее. Главное преимущество этой книги в пошаговых практических примера. Как говорится, прочитал — забыл, сделал — запомнил. Но если у вас имеется старое издание книги, не торопитесь покупать новое, в нём вы найдёте не так много информации (для меня, например, наиболее полезной главой была лишь тема адаптивной вёрстки). Вердикт: ИМХО, эта книга должна быть у каждого уважающего себя веб-разработчика 🙂

Алгоритмы. Вводный курс

Эта тоненькая книга написана гуру компьютерных наук Томасом Корменом. Для тех, кто не в курсе, Кормен также является автором классического труда по алгоритмам под названием «Алгоритмы. Построение и анализ» в соавторстве ещё с 3-мя людьми среди которых есть Рональд Риверст (автор RSA алгоритма). Сей труд ни коей мере не претендует на справочник, это скорее закуска перед главным блюдом. Основная цель книги состоит в том, чтобы заинтересовать читателя темой алгоритмов, поверхностно познакомить с классическими алгоритмами сортировки, поиска и обхода графов. Для меня интересной главой оказалась тема криптографии.