Pull to refresh
1
0
Send message

Юнит-тесты на Python: Быстрый старт

Reading time4 min
Views118K
Перевод статьи подготовлен специально для студентов курса «Python QA Engineer».




Юнит-тестирование кода является неотъемлемой частью жизненного цикла разработки программного обеспечения. Юнит-тесты также формируют основу для проведения регрессионного тестирования, то есть они гарантируют, что система будет вести себя согласно сценарию, когда добавятся новые функциональные возможности или изменятся существующие.

В этой статье я продемонстрирую основную идею юнит-тестирования на одном классе. На практике вам придется писать множество тестовых случаев, добавлять их в тестовый набор и запускать все вместе. Управление тест-кейсами мы рассмотрим в следующей статье.
Читать дальше →
Total votes 11: ↑9 and ↓2+10
Comments5

Запуск Django сайта на nginx + Gunicorn + SSL

Reading time4 min
Views55K

Для написания этой статьи ушло очень много сил и времени. Я натыкался на множество инструкций, как на английском, так и на русском языках, но как я понял, - они все были клонами оригинальной статьи на Digital Ocean. Спросите вы, почему я так считаю, а все потому, что все ошибки и неточности передаются с одного ресурса на другой без всяких изменений.

Читать далее
Total votes 13: ↑7 and ↓6+7
Comments40

Визуализация данных с помощью веб-фреймворка Dash

Reading time4 min
Views11K

Dash является довольно интересным Веб-фреймворком для визуализации данных и имеет в семе довольно много полезных функций в сочетании с простотой их применения.

Читать далее
Total votes 3: ↑3 and ↓0+3
Comments10

Записки архитектора. Чек-лист

Reading time11 min
Views16K

- Составь, пожалуйста, руководство по тому, как делать архитектуру.

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

Что касается "зачем", то здесь все было понятно. Цель у менеджеров была благая. Проектов в компании обычно больше, чем могут осилить штатные архитекторы. Идея была в том, чтобы архитектуру для небольших проектов делали либо сами менеджеры по разработке, либо старшие разработчики, а архитектор только проверял, направлял и помогал где нужно.

Цель хорошая, запрос хороший. Оставалось только понять, как оказать им конструктивную помощь, а не отправить читать книжки или не засесть писать свою.

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

Собственно, этот список я здесь и публикую.

Далее...
Total votes 22: ↑21 and ↓1+30
Comments10

Памятка и туториал по HTTP-заголовкам, связанным с безопасностью веб-приложений

Reading time27 min
Views34K


Доброго времени суток, друзья!


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


Сначала мы с вами кратко разберем основные виды уязвимостей веб-приложений, а также основные виды атак, основанные на этих уязвимостях. Далее мы рассмотрим все современные заголовки, каждый — по отдельности. Это в теоретической части статьи.


В практической части мы реализуем простое Express-приложение, развернем его на Heroku и оценим безопасность с помощью WebPageTest и Security Headers. Также, учитывая большую популярность сервисов для генерации статических сайтов, мы настроим и развернем приложение с аналогичным функционалом на Netlify.


Исходный код приложений находится здесь.


Демо Heroku-приложения можно посмотреть здесь, а Netlify-приложения — здесь.


Основными источниками истины при подготовке настоящей статьи для меня послужили следующие ресурсы:


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

Регулярные выражения в Python от простого к сложному. Подробности, примеры, картинки, упражнения

Reading time25 min
Views1.5M

Регулярные выражения в Python от простого к сложному




Решил я давеча моим школьникам дать задачек на регулярные выражения для изучения. А к задачкам нужна какая-нибудь теория. И стал я искать хорошие тексты на русском. Пяток сносных нашёл, но всё не то. Что-то смято, что-то упущено. У этих текстов был не только фатальный недостаток. Мало картинок, мало примеров. И почти нет разумных задач. Ну неужели поиск IP-адреса — это самая частая задача для регулярных выражений? Вот и я думаю, что нет.
Про разницу (?:...) / (...) фиг найдёшь, а без этого знания в некоторых случаях можно только страдать.

Плюс в питоне есть немало регулярных плюшек. Например, re.split может добавлять тот кусок текста, по которому был разрез, в список частей. А в re.sub можно вместо шаблона для замены передать функцию. Это — реальные вещи, которые прямо очень нужны, но никто про это не пишет.
Так и родился этот достаточно многобуквенный материал с подробностями, тонкостями, картинками и задачами.

Надеюсь, вам удастся из него извлечь что-нибудь новое и полезное, даже если вы уже в ладах с регулярками.
Читать дальше →
Total votes 99: ↑98 and ↓1+97
Comments66

Регулярные выражения, пособие для новичков. Часть 1

Reading time14 min
Views914K
Регулярные выражения (РВ) это, по существу, крошечный язык программирования, встроенный в Python и доступный при помощи модуля re. Используя его, вы указывается правила для множества возможных строк, которые вы хотите проверить; это множество может содержать английские фразы, или адреса электронной почты, или TeX команды, или все что угодно. С помощью РВ вы можете задавать вопросы, такие как «Соответствует ли эта строка шаблону?», или «Совпадает ли шаблон где-нибудь с этой строкой?». Вы можете также использовать регулярные выражения, чтобы изменить строку или разбить ее на части различными способами.
Читать дальше →
Total votes 105: ↑99 and ↓6+93
Comments32

Парсим мемы в питоне: как обойти серверную блокировку

Reading time26 min
Views103K

Новогодние праздники — прекрасный повод попрокрастинировать в уютной домашней обстановке и вспомнить дорогие сердцу мемы из 2k17, уходящие навсегда, как совесть Electronic Arts.



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

Читать дальше →
Total votes 76: ↑70 and ↓6+64
Comments42

Частые ошибки в настройках Nginx, из-за которых веб-сервер становится уязвимым

Reading time8 min
Views64K

Nginx — это веб-сервер, на котором работает треть всех сайтов в мире. Но если забыть или проигнорировать некоторые ошибки в настройках, можно стать отличной мишенью для злоумышленников. Detectify Crowdsource подготовил список наиболее часто встречающихся ошибок, делающих сайт уязвимым для атак.

Nginx — один из наиболее часто используемых веб-серверов в Интернете, поскольку он модульный, отзывчивый под нагрузкой и может масштабироваться на минимальном железе. Компания Detectify регулярно сканирует Nginx на предмет неправильных настроек и уязвимостей, из-за которых могут пострадать пользователи. Найденные уязвимости потом внедряются в качестве теста безопасности в сканер веб-приложений.

Мы проанализировали почти 50 000 уникальных файлов конфигурации Nginx, загруженных с GitHub с помощью Google BigQuery. С помощью собранных данных нам удалось выяснить,  какие ошибки в конфигурациях встречаются чаще всего.

Читать далее
Total votes 49: ↑48 and ↓1+66
Comments23

Липкие сессии для самых маленьких [Часть 1]

Reading time4 min
Views26K

Липкие сессии (Sticky-session) — это особый вид балансировки нагрузки, при которой трафик поступает на один определенный сервер группы. Как правило, перед группой серверов находится балансировщик нагрузки (Nginx, HAProxy), который и устанавливает правила распределения трафика на доступные сервера.

В первой части цикла мы посмотрим как создавать липкие сессии с помощью Nginx. Во второй же части разберем создание подобной балансировки средствами Kubernetes.

Вляпаться
Total votes 29: ↑29 and ↓0+29
Comments10

Функции XPath для динамических XPath в Selenium

Reading time6 min
Views54K

В данной статье рассматриваются примеры использования функций XPath для идентификации элементов.

Автоматизация взаимодействия с любым сайтом начинается с корректной идентификации объекта, над которым будет выполняться какая-либо операция. Как нам известно, легче всего идентифицировать элемент по таким атрибутам, как ID, Name, Link, Class, или любому другому уникальному атрибуту, доступному в теге, в котором находится элемент.

Но правильно идентифицировать объект можно только в том случае, если такие атрибуты присутствуют и (или) являются уникальными.

Читать далее
Total votes 8: ↑5 and ↓3+4
Comments2

Как бы я изучал Data Science, если бы начал пару лет назад, или Руководство по эффективному изучению науки о данных

Reading time5 min
Views30K
Когда я только начал своё путешествие к науке о данных, я потратил много времени на то, чтобы понять, с чего начать, что я должен узнать в первую очередь и какие ресурсы должен использовать. За последние два года я узнал несколько вещей, о которых хотел знать раньше, например о том, стоит ли сначала сосредоточиться на программировании или статистике, какие ресурсы я должен использовать для изучения новых навыков, как я должен подходить к изучению этих навыков и так далее. Таким образом, эта статья написана, чтобы дать направления и идеи для тех, кто изучает Data Science.

Приятного чтения!
Total votes 30: ↑29 and ↓1+35
Comments3

57 отборных репозиториев для всех разработчиков Python

Reading time8 min
Views26K
Специально к старту нового потока курса «Python для веб-разработки» представляем подборку из 57 репозиториев, которые будут полезны как начинающему, так и опытному разработчику: это репозитории с ответами на вопросы собеседований, репозитории с книгами, небольшие, но полезные консольные инструменты и проекты, которые вдохновят вас написать красивый, работающий и полезный код.


Приятного чтения!
Total votes 20: ↑17 and ↓3+16
Comments15

Формат таблиц в pandas

Reading time4 min
Views66K

Если вы пока ещё не знаете как транслировать данные напрямую заказчику в подсознание или, на худой конец, текст сообщения в slack, вам пригодится информация о том, как сделать процесс интерпретации таблиц более быстрым и комфортным.


Например, в excel для этого используется условное форматирование и спарклайны. А в этой статье мы посмотрим как визуализировать данные с помощью Python и библиотеки pandas: будем использовать свойства DataFrame.style и Options and settings.

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

Выбор CSS макета — Grid или Flexbox?

Reading time9 min
Views83K


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

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

Языки программирования помогают сделать сайты «живыми», но в основе каждой страницы по-прежнему лежит старый добрый HTML. При рассмотрении макетов необходимо учитывать факторы, определяющие их качество, а именно отзывчивость, порты просмотра, устройства отображения, браузеры и размеры экранов пользователей. Грамотный макет не только здорово смотрится, но также может сохранять задуманную структуру, вписываясь в экраны с любым возможным соотношением сторон. Как раз за эту подстройку и отвечает CSS. В текущей статье мы в общих чертах рассмотрим два его мощнейших инструмента: Flexbox и Grid.
Читать дальше →
Total votes 35: ↑35 and ↓0+35
Comments8

Не лайтхаусом единым: как проверить свой сайт со всех сторон

Reading time3 min
Views19K


Когда мы говорим о веб-валидаторах и оптимизации сайта под них, мы чаще всего имеем ввиду Lighthouse/Pagespeed Insights от Google, который давно стал де-факто стандартом для оценки производительности сайта. Кто-то стремится к заветным 100 баллам даже на прототипах и шаблонных приложениях в две кнопки, кто-то в шутку создает абсолютно недоступный сайт с идеальным рейтингом, но для всех фронтендеров лайтхаус предоставляет вменяемую, хоть и довольно поверхностную, аналитику производительности сайта и поиск бутылочных горлышек. Однако скорость загрузки — лишь один из множества параметров, которые стоит проверять на своём сайте, и для большинства других есть свои валидаторы и скоринговые алгоритмы. Мы рассмотрим инструменты для каждого из значимых направлений и составим список, по которому стоит прогонять свой сайт, чтобы в дальнейшем не отлавливать проблемы вручную.
Читать дальше →
Total votes 24: ↑22 and ↓2+31
Comments4

24 датасета для ритейла и ecommerce

Reading time4 min
Views16K
image

Продуктовые датасеты


  • Fashion-MNIST: Идеально подходит для продуктовой категоризации. MNIST содержит почти 60 000 обучающих изображений и 10 000 тестовых изображений продуктов фэшн-индустрии в 10 классах.
  • Innerwear Data from Victoria’s Secret and Others: Данные с 600 000+ товаров нижнего белья, извлеченного из популярных торговых объектов. Включает в себя описание продукта, цену, категорию, рейтинг и многое другое.
  • Electronic Products and Pricing Data: Содержит список из более чем 7000 электронных продуктов.
  • Men’s Shoe Prices: Список содержащий 10 000 мужских ботинок и цен.
  • Women’s Shoe Prices: Список содержащий 10 000 женских туфель и цены.
  • eCommerce Item Data: Подходит для рекомендательных систем. Этот набор данных содержит артикулы и связанные с ними описания продуктов из каталога продукции бренда наружной одежды.
  • Fashion Products on Amazon.com: Это pre-crawled набор данных, созданный путем извлечения данных из Amazon. Он состоит примерно из 22 000 фэшн-товаров на Amazon.
  • E-commerce Tagging for Clothing: Содержит изображения с сайтов ecommerce с ограничивающими рамками, нарисованными вокруг рубашек, пиджаков, солнцезащитных очков и т. д. Он содержит 907 наименований, из которых 504 наименования были помечены вручную.

Читать дальше →
Total votes 7: ↑5 and ↓2+5
Comments0

Безопасность REST API от А до ПИ

Reading time17 min
Views130K

Введение


Умение реализовать грамотное REST API — полезный навык в наше время, т.к. все больше сервисов предоставляют свои возможности с помощью API. Но разработка REST API не ограничивается реализацией HTTP запросов в определенном стиле и формированием ответов в соответствии со спецификацией. Задача обеспечения безопасности REST API не так очевидна, как, например, обеспечение безопасности баз данных, но ее необходимость не менее важна.
В настоящее время многие онлайн системы с помощью API передают приватные данные пользователей, такие как медицинские или финансовые. Текущая же ситуация с безопасностью в веб-приложениях весьма печальна: по данным Comnews порядка 70% содержат кри­тичес­кие уязвимости. Поэтому всем, кто участвует в проектировании, реализации и тестировании онлайн систем, важно иметь общую картину по существующим угрозам и способам обеспечения безопасности как всей системы, так и используемого REST API.

В статье я попытался обобщить информацию о существующих уязвимостях REST API, чтобы у читателей сложилась общая картина. На схемах представлена современная архитектура клиент-сервер и обобщенный REST API запрос с потенциальными угрозами безопасности. Далее я подробнее расскажу об этих угрозах, и как технически реализовать защиту от них.

image
Читать дальше →
Total votes 52: ↑52 and ↓0+52
Comments22

Как проанализировать рынок фотостудий с помощью Python (3/3). Аналитика

Reading time14 min
Views10K
Каждый, кто открывает свой бизнес, хочет угадать идеальный момент открытия, найти идеальное место и выполнить точные, эффективные действия для того, чтобы бизнес выжил и приумножился. Найти идеальные параметры невозможно, но оценить наилучшие возможности помогают инструменты статистического анализа.

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

Группа молодых предпринимателей рассматривала вариант открытия своей фотостудии в Москве. Им необходимо было узнать:

  • какое общее состояние рынка фотостудий: растет, стабильный или падает?
  • какова сезонность рынка?
  • сколько они смогут заработать?
  • где лучше открывать залы?
  • какую сумму вкладывать в проект?
  • на сколько сильная конкуренция на рынке?

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


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

Попытка решить проблему выбора авиабилетов перед отпуском

Reading time3 min
Views9K

Привет всем! Хочу немного рассказать про то, как я делал, сделал и буду делать (наверное) в свободное время очередной travel-сервис для поиска авиабилетов.


Скриншот одной из страниц:


image

Читать дальше →
Total votes 9: ↑7 and ↓2+9
Comments22
1

Information

Rating
Does not participate
Registered
Activity