Pull to refresh
14
0

Пользователь

Send message

Практическое руководство по разработке бэкенд-сервиса на Python

Reading time57 min
Views173K
Привет, меня зовут Александр Васин, я бэкенд-разработчик в Едадиле. Идея этого материала началась с того, что я хотел разобрать вступительное задание (Я.Диск) в Школу бэкенд-разработки Яндекса. Я начал описывать все тонкости выбора тех или иных технологий, методику тестирования… Получался совсем не разбор, а очень подробный гайд по тому, как писать бэкенды на Python. От первоначальной идеи остались только требования к сервису, на примере которых удобно разбирать инструменты и технологии. В итоге я очнулся на сотне тысяч символов. Ровно столько потребовалось, чтобы рассмотреть всё в мельчайших подробностях. Итак, программа на следующие 100 килобайт: как строить бэкенд сервиса, начиная от выбора инструментов и заканчивая деплоем.



TL;DR: Вот репка на GitHub с приложением, а кто любит (настоящие) лонгриды — прошу под кат.
Читать дальше →
Total votes 70: ↑68 and ↓2+66
Comments48

Как научиться разработке на Python: новый видеокурс Яндекса

Reading time6 min
Views244K
Осенью прошлого года в московском офисе Яндекса прошла первая Школа бэкенд-разработки. Мы сняли занятия на видео и сегодня рады поделиться на Хабре полным видеокурсом Школы. Он позволит вам научиться промышленной разработке на Python. Авторы лекций — опытные разработчики в Яндексе. К каждому видео приложены ссылки на примеры и полезные материалы.

Для изучения курса нужно знать основы Python и понимать, как приложения развёртываются на серверах. Мы ждём, что вы умеете делать запросы к базам данных и знаете, как создаются веб‑приложения, — хотя бы на начальном уровне.
Читать дальше →
Total votes 70: ↑70 and ↓0+70
Comments41

Полезные советы по Python, которых вы ещё не встречали

Reading time7 min
Views35K
Написано очень много статей, посвящённых интересным возможностям Python. В них идёт речь о распаковке списков и кортежей в переменные, о частичном применении функций, о работе с итерируемыми объектами. Но в Python есть гораздо больше всего интересного. Автор статьи, перевод которой мы сегодня публикуем, говорит, что хочет рассказать о некоторых возможностях Python, которыми он пользуется. При этом описания этих возможностей, подобного тому, которое приведено здесь, ему пока не встречалось. Возможно, что и вы о них тоже ещё нигде не читали.


Читать дальше →
Total votes 62: ↑61 and ↓1+60
Comments7

Дайджест новостей из мира PostgreSQL. Выпуск №17

Reading time10 min
Views6.8K


Мы продолжаем знакомить вас с самыми интересными новостями по PostgreSQL.

Главные новости


Релиз-кандидат PostgreSQL 12

В релизе-кандидате вся функциональность идентична грядущему официальному релизу. Если вновь выявленные и недоисправленные баги будут закрыты в срок, то официальный релиз выйдет 3 октября. По сравнению с PG 12 beta 4 исправлено несколько багов, в основном связанных с ECPG — SQL, встраиваемом в C. Релиз-кандидат доступен.

Читать дальше →
Total votes 20: ↑19 and ↓1+18
Comments2

Принципы построения REST JSON API

Reading time8 min
Views337K

Эта памятка писалась для внутренних нужд (открыть глаза менее опытным в вебе коллегам). Но, т.к. я насмотрелся велосипедов от довольно уважаемых, казалось бы, контор, — выкладываю на хабр. Мне кажется, многим будет полезно.


Зачем


Надеюсь, читающий уже понимает, зачем ему вообще нужен именно REST api, а не какой-нибудь монстр типа SOAP. Вопрос в том, зачем соблюдать какие-то стандарты и практики, если браузеры вроде бы позволяют делать что хочешь.


  • Стандарт HTTP это стандарт. Его несоблюдение вредно для кармы и ведёт к постоянным проблемам с безопасностью, кэшированием и прочими "закидонами" браузеров, которые совсем не закидоны, а просто следование стандарту.
  • Велосипеды со всякими {error: "message","result":...} невозможно нормально тестировать и отлаживать
  • Поддержка большим количеством готовых клиентских библиотек на все случаи жизни. Те, кто будет вашим api пользоваться, скажут большое человеческое спасибо.
  • Поддержка автоматизированного интеграционного тестирования. Когда сервер на любые запросы отдаёт 200 ОК — ну, это такое себе развлечение.
Читать дальше →
Total votes 71: ↑55 and ↓16+39
Comments207

Лаборатория хакера: Ч1. LibSSH auth bypass

Reading time4 min
Views12K
Я начинаю цикл статей, посвященных разбору задач сервиса pentesterlab. К сожалению, у меня нет Про-версии курса, поэтому я ограничен только списком свободных задач. Каждый кейс — система, содержащая уязвимость, которой необходимо воспользоваться для достижения определенной цели.

Читать дальше →
Total votes 20: ↑17 and ↓3+14
Comments6

Опыт разработки свободного приложения для коллекционеров OpenNumismat

Reading time5 min
Views14K
Хочу поделиться своим опытом разработки настольного приложения для коллекционеров с открытым исходным кодом.

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

image
Читать дальше →
Total votes 80: ↑77 and ↓3+74
Comments27

Из Пензы в Берлин: История переезда автоматизатора тестов

Reading time4 min
Views7.9K
Пять лет назад Илья П. перебрался в Берлин с женой и восьмимесячной дочкой по программе Blue Card. На сегодняшний день он сменил уже три должности. Илья рассказал мне о подробностях поиска работы и переезда.
Total votes 28: ↑21 and ↓7+14
Comments12

Эксплуатация кроликов (RabbitMQ) в режиме «Выжить любой ценой»

Reading time16 min
Views30K
«Компания» — оператор связи ПАО «Мегафон»
«Нода» — сервер RabbitMQ.
«Кластер» — совокупность, в нашем случае трех, нод RabbitMQ работающих как единое целое.
«Контур» — совокупность кластеров RabbitMQ, правила работы с которыми определяются на стоящем перед ними балансировщике.
«Балансировщик», «хап» — Haproxy – балансировщик, выполняющий функции переключения нагрузки на кластеры в рамках контура. Для каждого контура используется пара серверов Haproxy, работающих параллельно.
«Подсистема» — публикатор и/или потребитель сообщений, передаваемых через кролика
«СИСТЕМА» — совокупность Подсистем, являющая собой единое программно-аппаратное решение, используемое в Компании, характеризующееся распределённостью по всей территории России, но обладающее несколькими центрами, куда стекается вся информация и где происходят основные расчёты и вычисления.
СИСТЕМА – географически распределённая система – от Хабаровска и Владивостока до Санкт-Петербурга и Краснодара. Архитектурно это несколько центральных Контуров, разделенных по особенностям подсистем, к ним подключённым.
Читать дальше →
Total votes 31: ↑29 and ↓2+27
Comments30

Мониторинг Elasticsearch без боли и страданий

Reading time10 min
Views39K
«А оно там делает магию»
кто-то из тех, кого я удалённо консультировал по Эластику.

Я всегда говорю, что верю в три вещи: мониторинг, логи и бэкапы.

Тема про то, как мы собираем и храним логи, достаточно полно была раскрыта в предыдущих статьях, тема про бэкапы в Elasticsearch — совсем отдельная история, поэтому в этой, возможно заключительной, статье цикла я расскажу как происходит мониторинг моего любимого кластера. Это не очень сложно (и не требует использования дополнительных плагинов и сторонних сервисов) — ибо REST API, предоставляемое самим Elasticsearch простое, понятное и удобное в использовании. Всего-то надо немного углубиться в его внутреннее устройство, понять, что означают все эти метрики, пулы тредов, веса распределения шардов по нодам, настройки очередей — и не останется никаких вопросов о том, что же за «магию» эластик делает прямо сейчас.



На недавней конференции Highload++ 2017 я рассказал о том, как строил кластер своей мечты, и говорил, что недостаточно просто построить сервис. Критически важно в любой момент знать, в каком он состоянии, причём контроль обязательно должен быть многоуровневым. Разбудите меня посреди ночи (отделу мониторинга привет!) — и через две минуты я буду знать, в каком состоянии находится кластер. Причём одна минута из двух уйдёт на подключение к корпоративному VPN и логин в Zabbix.
Так как же мы это делаем?
Total votes 28: ↑27 and ↓1+26
Comments7

Big Data resistance 1 или неуловимый Джо. Интернет анонимность, антидетект, антитрекинг для анти-вас и анти-нас

Reading time28 min
Views20K
Доброго времени прочтения, уважаемые читатели Хабра.

Прочитал за последнее время ряд статей, в том числе на Хабре, по цифровым отпечаткам браузеров и слежке за пользователями в Интернете. Например, статья Анонимная идентификация браузеров и Ловушка в интернете журнал Forbes, раздел «технологии» — «Big Data».

А может я не хочу, чтоб меня учитывали! Только, боюсь, ирония в том, что это тоже отпечаток, да, к тому же, видимо, и основная причина появления отпечатков. ИМХО, способ только один. Применительно к FireFox — если все лисицы хором и каждая в отдельности начнут тявкать, что они обыкновенные стандартные лисицы, а не тор, не хром и не макось.

Но, из академического интереса, для сохранения индивидуальности лисиц и в ответ на очередные происки дикого капитализма, хочу предложить на суд уважаемого Хабрасообщества, следующий хитрый план.
Читать дальше →
Total votes 32: ↑28 and ↓4+24
Comments16

Epic fail resistance 1 или Лисец подкрался незаметно. Тестирование анонимности и безопасности + VPN для пользователя

Reading time17 min
Views9.6K
Доброго времени прочтения, уважаемые читатели Хабра.

В продолжение темы Big Data resistance 1. Прочитав комментарии к статье от dartraiden и YourChief, задумался на тему, а впрямь ли все хорошо и достаточно ли тестов анонимности и безопасности на 2ip и Whoer или раз все хорошо, значит что-то не заметил. К тому же, ряд проблем находил по интернету или сталкивался с ними сам в момент написания статьи.

Хочу предложить на суд уважаемого Хабрасообщества подборку найденных недоразумений и предложения по их решению, а так же ряд способ тестирования браузеров и уязвимостей.

Так же, в данной статье, предлагаю рассмотреть простую и бесплатную настройку VPN и защищенного DNS на уровне пользователя.
Читать дальше →
Total votes 13: ↑12 and ↓1+11
Comments10

Разворачиваем хранилище LINSTOR для Proxmox

Reading time5 min
Views18K

image


Недавно LINBIT выпустили свое новое решение для оркестрации и управления множеством DRBD-массивов.


К примеру у вас может быть несколько нод и у каждой будет собственный LVM или ZFS пул в котором LINSTOR будет автоматически создавать новые тома и реплицировать их между нодами используя DRBD-протокол.


LINSTOR поддерживает thin-provisioning, снапшоты и много других интересных штук.
Это решение хорошо подойдет для виртуальных машин и контейнеров.

Читать дальше →
Total votes 6: ↑6 and ↓0+6
Comments12

Python и DataScience: изучаем возможности универсальной библиотеки Numpy

Reading time4 min
Views9.5K


От переводчика: это перевод материала Ракшита Васудева, давно и плотно изучающего DataScience и применение в ней языка Python. Автор рассказывает о мощной библиотеке Numpy, который позволяет реализовать многие возможности машинного обучения и работы с большими данными.

Numpy — математическая библиотека для Python. Она позволяет выполнять разного рода вычисления эффективно и быстро. Она значительно расширяет функциональность Python благодаря специальным решениям, которые в ней применяются. В этой статье рассказывается о базовых возможностях Numpy, и это только первая часть; чуть позже будут опубликованы и другие. Статья для тех, кто только начинает изучать Numpy, вступая в дивный мир математики в Python.
Total votes 14: ↑12 and ↓2+10
Comments6

Теория и практика бэкапов с Borg

Reading time11 min
Views58K


К нашему огромному удивлению на хабре не оказалось ни одного материала про замечательный Open Source-инструмент для резервного копирования данных ­— Borg (не путать с одноимённым прародителем Kubernetes!). Поскольку уже более года мы с удовольствием используем его в production, в этой статье я поделюсь накопленными у нас «впечатлениями» о Borg.
Читать дальше →
Total votes 39: ↑38 and ↓1+37
Comments46

Установка Kubernetes на Hetzner Cloud

Reading time6 min
Views11K
Обновлено 21/08/2020. С момента написания статьи прошло чуть больше года и ряд примеров перестали работать — технологии развиваются, поэтому немного дополнил и переделал примеры.

В данной статье я хотел бы рассказать об установке Kubernetes на Hetzner Cloud.

На моем рабочем компьютере установлен Ubuntu Linux 18.04 и все примеры будут подразумевать использование данной операционной системы.

Для работы с Hetzner Cloud и построения кластера Kubernetes мы будем использовать утилиту hetzner-kube. Установим ее на свой локальный компьютер.
Читать дальше →
Total votes 12: ↑11 and ↓1+10
Comments8

Rancher: Kubernetes за 5 минут на голом железе

Reading time7 min
Views45K
На переправе оркестратор не меняют.

После того как мне окончательно надоел Docker Swarm из-за своей псевдопростоты и постоянного допиливания, не очень удобной работой с распределенными файловыми системами, немного сыроватым web-интерфейсом и узкой функциональностью, а также отсутствие поддержки «из коробки» GitLab интеграции, было принято решение развернуть свой Kubernetes cluster на собственном железе, а именно, путем развертывания Rancher Management Server 2.0.

Опыт установки, схема отказоустойчивости, работа с haProxy и два dashboard под катом:
Читать дальше →
Total votes 13: ↑13 and ↓0+13
Comments17

Небольшие трюки с Elasticsearch

Reading time7 min
Views15K
Небольшая заметка, скорее для себя, о мелких трюках по восстановлению данных в Elasticsearch. Как починить красный индекс если нет бэкапа, что делать если удалил документы, а копии не осталось — к сожалению в официальной документации об этих возможностях умалчивают.
Читать дальше →
Total votes 15: ↑14 and ↓1+13
Comments5

Миграция данных ElasticSearch без потерь

Reading time5 min
Views12K


Академическое проектирование хранилища данных рекомендует держать все в нормализованной форме, со связями между. Тогда накат изменений по реляционной математике даст надежное хранилище с поддержкой транзакций. Atomicity, Consistency, Isolation, Durability — вот это все. Иначе говоря, хранилище специально строится для безопасного обновления данных. Но оно вовсе не оптимально для поиска, особенно широким жестом по таблицам и полям. Нужны индексы, много индексов. Объемы разрастаются, запись замедляется. SQL LIKE не индексируется, а JOIN GROUP BY отправляет медитировать в планировщик запросов.

Читать дальше →
Total votes 22: ↑19 and ↓3+16
Comments2

Туннели и VPN, устойчивые к DPI

Reading time10 min
Views154K
Мы живем в интересное время. Я бы даже сказал, в удивительное. По одну сторону мы видим неких лиц, которые очень хотят знать, о чем между собой разговаривают другие люди, и очень хотят указывать им, что можно читать, а что нельзя. С другой стороны граждане, которые хотят отстоять свои права тайны личной переписки и свободного получения информации, и не хотят, чтобы факты этой самой переписки и получения этой самой информации были использованы против них. Бонусом страдает огромное количество сторонних сайтов, сервисов и бизнесов, которых задевает «ковровыми блокировками».

Но нет, эта статья не об обществе, а о технологиях.

image
Читать дальше →
Total votes 104: ↑100 and ↓4+96
Comments175
1
23 ...

Information

Rating
Does not participate
Location
Химки, Москва и Московская обл., Россия
Date of birth
Registered
Activity