Используем KVM для создания виртуальных машин на сервере

Эту заметку я пишу для того, чтобы продемонстрировать пошаговую установку и настройку виртуальной машины в Linux на базе KVM. Ранее я уже писал про виртуализацию, где использовал замечательный инструмент Vagrant.

Сейчас передо мной встал вопрос аренды хорошего сервера с большим объёмом оперативной памяти и объёмным жестким диском. Но запускать проекты прямо на хост-машине не хочется, поэтому буду разграничивать их по отдельным небольшим виртуальным серверам с ОС Linux или docker-контейнерам (о них расскажу в другой статье).

Все современные облачные хостинги работают по такому же принципу, т.е. хостер на хорошем железе поднимает кучу виртуальных серверов, которые мы привыкли называть VPS/VDS, и раздаёт их пользователям, либо автоматизирует этот процесс (привет, DigitalOcean).

KVM (kernel-based virtual machine) это программное обеспечения для Linux, использующее аппаратные средства x86-совместимых процессоров для работы с технологией виртуализации Intel VT/AMD SVM. Читать далее «Используем KVM для создания виртуальных машин на сервере»

Блог на английском языке

Английская версия блога

Начал потихоньку исполнять свой план на 2017 год с перевода статьи про работу с Celery на английский язык — Celery Best Practices: practical approach. В планах у меня начать английскую версию блога с перевода топа самых популярных статей, будут появляться по мере сил.

В последнее время стал замечать, что мой блог регулярно стали посещать пользователи из США и других англоговорящих стран, мне пока непонятно откуда они на него переходят (если кто знает как посмотреть отчёт в разрезе страна-источник в Я.Метрике, напишите, пожалуйста), но тенденция радует. Сейчас, конечно,  процент отказов среди таких пользователей высокий, но постараюсь его снизить путем интересного контента.

Сегодня английский язык это не только lingua franca для коммуникации между людьми с разных стран, но и язык науки. Язык на котором в первую очередь появляется самая актуальная информация практически во всех сферах нашей жизни, проще говоря, больше всего уникального контента создаётся именно на английском. Попробую внести вклад и в эту часть Интернета, думаю это того стоит. Помимо очевидных плюсов в дополнительной аудитории и новых знакомствах, это ещё и неплохая возможность развивать дальше навык письма на неродном тебе языке.

На английскую версию блога можно перейти из верхнего меню либо по ссылке — English version.

Блогу исполнился 1 год!

Ровно 1 год назад появился самый первый пост в этом блоге. Удивительно, но я всё таки не забросил его. Прошлый опыт говорил об обратном. Что произошло за это время?

За этот год:

  • Я написал 30 постов, включая этот. Изначально я планировал чаще писать, но ввиду некоторых обстоятельств и лени этого добиться не удалось.
  • На момент написания этого поста блог посетило 41 123 уникальных посетителя. Хороший показатель для узкоспециализированного блога с небольшим количеством контента.
  • Ежедневная аудитория увеличилась с 0 до 350 уникальных посетителей.

  • Более 60% аудитории проживает в России

Топ-5 самых популярных постов

Суммарно эти 5 статей принесли блогу 57% всех уникальных посетителей. Помните правило 80/20 ? 🙂 Читать далее «Блогу исполнился 1 год!»

Теория разбитых окон в программировании

Теория разбитых окон в программированииВ криминалистике существует интересная теория под названием «Теория разбитых окон» (ТРО). Суть её в том, что разбитое окно, при несвоевременной замене, влечёт за собой целую серию разбитых окон. Более того, серия разбитых окон может быть индикатором повышающегося уровня преступности в заданном регионе. На ум сразу приходит известная всем фраза «Чисто не там, где убирают, а там где не сорят». Согласно этой теории, чисто именно там, где убирают, стимулируя тем самым людей не сорить в будущем. Стоит заметить, что это применимо не только к окнам 🙂 Автолюбителям наверняка знакома эта теория на дорогах, хотя они могут и не догадываться о её существовании. Я не раз замечал большое скопление автомобилей, припаркованных под знаком «Остановка запрещена». Стоит лишь одному остановиться под ним, остальные водители не заставят себя долго ждать. Удивительно как мало внимания дорожная полиция уделяет этому факту. Правонарушения должны своевременно пресекаться.

Но вернёмся всё же в мир разработки программного обеспечения. Удивительно, но и здесь ТРО находит свой отклик. Современный процесс создания ПО находится под жестким прессингом сроков. Бизнесу очень важно как можно раньше поставить продукт на рынок по ряду причин. Отсюда рождаются различные методологии управления вроде Agile, Lean, формируются концепции MVP (Minimum Viable Product). Как следствие, страдает качество кода, он начинает «протухать». С «вонючим кодом» можно жить, более того, практически всегда он есть в той или иной степени, это нормально. Но его нарастающая доля служит одним из первых индикаторов того, что пора «бить во все колокола». Почему? Основываясь на собственном опыте скажу, что программист охотнее «говнокодит» там, где этого «говнокода» предостаточно. И наоборот, человек несколько раз подумает, прежде чем отправлять свой шедевр на код ревью, если в проекте стараются соблюдать чистоту кода. Помимо прочего, «разбитое окно» в коде создаёт ощущение наплевательского отношения к проекту, тем самым порождая чувство безразличности к нему. Зачем пытаться что-то изменить, если всем наплевать?

Чините «разбитые окна» в коде как можно чаще.

Вам может быть интересно почитать также:

Progressive Web Apps: начало новой эры веб-приложений

Начало перемен в Web

В последнее время я всё чаще начинаю задумываться о судьбе современного Web. Привычный для нас веб потихоньку трансформируется во что-то грандиозное. Сейчас мы живём в эпоху стремительных перемен, за этим очень интересно наблюдать. Шумиха вокруг мобильных приложений, которая началась с появление iPhone и Android, потихоньку спадает. Количество приложений на смартфонах пользователей не растёт. У рядового юзера образовался определённый костяк приложений, которые он чаще всего использует: YouTube, Instagram, WhatsApp/Viber/Telegram, Facebook, VK, браузер (Chrome, Safari, Opera, Mozilla Firefox). В остальном нет необходимости. Если хочется почитать новости или развлекательный контент, всегда можно зайти на мобильную версию сайта, используя любимый браузер.

Мобильный вебсайт

Web 1.0

Когда я был маленьким, веб был примитивным. Читать далее «Progressive Web Apps: начало новой эры веб-приложений»

Telegram канал для разработчиков

Telegram канал для разработчиков
Telegram канал для разработчиков @DevBrain

В последнее время Telegram начал стремительно развиваться и вводить новые плюшки для пользователей и разработчиков (например, я недавно писал о том как создать игру в Telegram). Из обычного мессенджера, коих пруд пруди, он превратился в полноценное средство продвижения информации, в простонародье, СМИ. Ведущие газеты, журналы и просто новостные сайты начали заводить в Telegram свои группы и каналы. Формат каналов в Telegram очень удобен для потребления информации, всё чинно, благородно. Более того, благодаря ботам Telegram, появилась возможность на этих самых каналах проводить опрос, а также использовать другие инструменты маркетингового анализа. Что позволяет эффективно продвигать нужный материал целевой аудитории группы или канала.

Кто бы что ни говорил, но для меня Telegram из обычного мессенджера также превратился в помойку ссылок. Что я имею в виду? А то, что благодаря кросс-платформенной архитектуре, а в Telegram всё таки есть отличный desktop-клиент, мне стало проще копить ссылки на интересные статьи, видео и новости про разработку, экономику, предпринимательство и так далее. Всё это я попросту сбрасываю самому себе в Telegram и имею возможность просматривать со всех своих устройств (ноутбук, настольный компьютер, смартфон, планшет, микроволновка 🙂

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

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

За сим, приглашаю вас подписаться на мой Telegram канал @DevBrain для разработчиков.

Как создавать игры в Telegram

Игры в Telegram

Игры в телеграм

Буквально на днях, а именно 3 октября, разработчики Telegram анонсировали новость о том, что на их платформе теперь можно создавать игры. Доступны для игры как многопользовательский режим, так и игры одиночного уровня.

Ребята не стали изобретать велосипед в виде отдельного игрового движка или чего то в этом роде. Игры в Telegram можно создавать, используя знакомую всем связку HTML5 + JavaScript. На платформе уже доступно небольшое количество игр, включая полюбившуюся мне игрушку под названием Lumberjack, где задачей является срубить как можно больше веток у дерева. Читать далее «Как создавать игры в Telegram»

Что нового появилось в 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»