Pull to refresh
-25
0

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

Send message

1M HTTP rps на 1 cpu core. DPDK вместо nginx+linux kernel TCP/IP

Reading time15 min
Views14K
Я хочу рассказать о такой штуке как DPDK — это фреймворк для работы с сетью в обход ядра. Т.е. можно прямо из userland писать\читать в очереди сетевой карты, без необходимости в каких либо системных вызовах. Это позволяет экономить много накладных расходов на копирования и прочее. В качестве примера я напишу приложение, отдающее по http тестовую страницу и сравню по скорости с nginx.
Читать дальше →
Total votes 20: ↑20 and ↓0+20
Comments17

Alpine собирает Docker билды под Python в 50 раз медленней, а образы в 2 раза тяжелей

Reading time4 min
Views65K


Alpine Linux — часто рекомендованный как базовый образ для Docker`а. Вам говорят, что использование Alpine сделает ваши билды меньше, а процесс сборки быстрей.

Но если вы используете Alpine Linux для Python приложений, то он:

  • Делает ваши билды намного медленней
  • Делает ваши образы больше
  • Тратит ваше время
  • И в итоге может стать причиной ошибок в рантайме
Читать дальше →
Total votes 48: ↑36 and ↓12+37
Comments30

Имитируем сетевые проблемы в Linux

Reading time15 min
Views32K
Всем привет, меня зовут Саша, я руковожу тестированием бэкенда. У нас, как и у многих, реализована сервис-ориентированная архитектура. С одной стороны, это упрощает работу, т.к. каждый сервис проще тестировать по отдельности, но с другой — появляется необходимость тестировать взаимодействие сервисов между собой, которое часто происходит по сети.

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


Читать дальше →
Total votes 55: ↑54 and ↓1+66
Comments17

Делаем универсальный RFID-ключ для домофонов

Reading time6 min
Views205K
Приветствую всех, кого интересует тема электронных ключей-вездеходов. Сам я, по правде сказать, давно не слежу за новостями в этой области. Но свою разработку трёхлетней давности хочу опубликовать, так как она проста в повторении и может быть кому-то интересна. Суть: вместо десятка ключей с кодами-вездеходами и просто кодами, все ключи можно носить в одном небольшом устройстве.


Читать дальше →
Total votes 42: ↑41 and ↓1+55
Comments48

Подделка серверных запросов, эксплуатация Blind SSRF

Reading time7 min
Views9.5K
Есть такая штука, называется SSRF. Про нее написано немало, но все же, я расскажу тебе вкратце.

Допустим, ты заходишь на сайт, заполняешь профиль и доходишь до пункта “загрузить аватарку”. А у тебя выбор — загрузить файл или указать ссылку.
Читать дальше →
Total votes 35: ↑35 and ↓0+35
Comments2

Реализуем визуальный эффект из фильма «Матрица»

Reading time2 min
Views32K


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

На днях пересмотрел «Матрицу». Слушайте, до чего же классный фильм (это касается только первой части). В очередной раз обратил внимание на «падающие» строчки с иероглифами на ихних экранах (намеренно использовал слово «ихних» забавы ради). Задумался о том, как это можно реализовать… максимально простым способом (ибо лень). Вот что у меня получилось.
Читать дальше →
Total votes 27: ↑18 and ↓9+14
Comments40

Шпаргалка для сисадмина по SELinux: 42 ответа на важные вопросы

Reading time6 min
Views29K
Перевод статьи подготовлен специально для студентов курса «Администратор Linux».




Здесь вы получите ответы на важные вопросы о жизни, вселенной и всем таком в Linux с улучшенной безопасностью.

«Важная истина, что вещи не всегда являются тем, чем кажутся, общеизвестна…»

―Дуглас Адамс, Автостопом по Галактике

Безопасность. Повышение надежности. Соответствие. Политика. Четыре Всадника Апокалипсиса сисадмина. В дополнение к нашим ежедневным задачам — мониторингу, резервному копированию, внедрению, настройке, обновлению и т. д. — мы также отвечаем за безопасность наших систем. Даже тех систем, где сторонний провайдер рекомендует нам отключить усиленную безопасность. Это похоже на работу Этана Ханта из “Миссия невыполнима”.
Читать дальше →
Total votes 18: ↑17 and ↓1+23
Comments4

Как ханипоты деанонимизируют хакеров и онлайн-мошенников

Reading time5 min
Views10K


Ханипот – это утилита, которая служит в качестве приманки, и представляет с виду соблазнительную цель для атакующего и искушает его к раскрытию самого себя. В то время как продвинутые ханипоты спроектированы для более простого обнаружения и изучения типов атак, используемых хакерами в естественных условиях, современные ханипоты на основе URL-отслеживания развились до гибкого и удобного для пользователя инструмента, который часто используют обычные люди для выявления онлайн-мошенников.
Читать дальше →
Total votes 10: ↑8 and ↓2+7
Comments0

Zero Downtime Deployment и базы данных

Reading time18 min
Views15K

image


В этой статье подробно объясняется, как решать проблемы, связанные с совместимостью баз данных при деплое. Мы расскажем, что может произойти с вашими приложениями на проде, если вы попытаетесь выполнить деплой без предварительной подготовки. Затем мы пройдемся по этапам жизненного цикла приложения, которые необходимы, чтобы иметь нулевое время простоя (прим. пер.: далее — zero downtime). Результатом наших операций будет применение обратно несовместимого изменения базы данных обратно совместимым способом.

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

[Nginx] Как победить response_status = 0

Reading time2 min
Views7.3K
Статья из разряда «заметки на полях».

TL:DR:
http2_max_field_size 8k; # всех спасет!


На одном из проектов, после изменения некоторой внутренней логики бекенда, начал наблюдать странный response_code в логах, а именно — 0. В логах выглядит примерно так:

{
  "timestamp": "2020-01-17T08:41:51+00:00",
  "remote_addr": "zzz.zzz.zzz.zzz",
  "request_time": 0,
  "upstream_response_time": "",
  "upstream_header_time": "",
  "http_accept_language": "-language",
  "response_status": 0,
  "request": "",
  "host": "example.com",
  "upstream_addr": "",
  "http_referrer": "",
  "request_length": 5854,
  "bytes_sent": 0,
  "http_user_agent": ""
}
Читать дальше →
Total votes 25: ↑25 and ↓0+25
Comments4

Мониторинг распределённых систем — опыт Google (перевод главы книги Google SRE)

Reading time18 min
Views7K


SRE (Site Reliability Engineering) — подход к обеспечению доступности веб-проектов. Считается фреймворком для DevOps и говорит как добиться успеха в применение DevOps-практик. В этой статье перевод Главы 6 Monitoring Distributed Systems книги Site Reliability Engineering от Google. Этот перевод я готовил самостоятельно и полагался на собственный опыт понимания процессов мониторинга. В телеграм-канале @monitorim_it и блоге на Медиуме я публиковал также ссылку на перевод 4 главы этой же книги о целях уровня обслуживания.

Перевод по катом. Приятного чтения!
Читать дальше →
Total votes 15: ↑15 and ↓0+15
Comments3

Python (+numba) быстрее Си — серьёзно?! Часть 2. Практика

Reading time4 min
Views20K

Это вторая часть статьи про numba. В первой было историческое введение и краткая инструкция по эксплуатации numba. Здесь я привожу слегка модифицированный код задачи из статьи про хаскелл «Быстрее, чем C++; медленнее, чем PHP» (там сравнивается производительность реализаций одного алгоритма на разных языках/компиляторах) с более детальными бенчмарками, графиками и пояснениями. Сразу оговорюсь, что я видел статью Ох уж этот медленный C/C++ и, скорее всего, если внести в код на си эти правки, картина несколько изменится, но даже в этом случае то, что питон способен превысить скорость си хотя бы в таком варианте, само по себе является примечательным.


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

Python (+numba) быстрее Си — серьёзно?! Часть 1. Теория

Reading time7 min
Views79K

Давно собирался написать статью о numba и о сравнении её быстродействия с си. Статья про хаскелл «Быстрее, чем C++; медленнее, чем PHP» подтолкнула к действию. В комментариях к этой статье упомянули о библиотеке numba и о том, что она магическим образом может приблизить скорость выполнения кода на питоне к скорости на си. В данной статье после небольшого обзора по numba (часть 1) чуть более подробный разбор этой ситуации (часть 2).


Читать дальше →
Total votes 26: ↑24 and ↓2+30
Comments7

Разработка идеального pypi пакета с поддержкой разных версий python

Reading time15 min
Views21K

Это небольшой мануал/история о том, как создать "идеальный" pypi пакет для python, который каждый желающий сможет установить заветной командой:


pip install my-perfect-package

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

Читать дальше →
Total votes 23: ↑22 and ↓1+35
Comments16

Мениски в коленном суставе — что это, зачем это, как это лечится если повредилось?

Reading time7 min
Views76K
Решил сегодня поделиться с сообществом небольшой статьей, продолжающей знакомство с ортопедией и биомеханикой. Тема разговора – мениски коленного сустава. Что это такое, зачем они нужны, почему они такие важные и какие современные тенденции в лечении повреждений менисков.



Цель данной статьи – информированность людей.

Кому интересно – заходим под кат.
Total votes 33: ↑30 and ↓3+41
Comments108

Введение в ASGI: становление асинхронной веб-экосистемы Python

Reading time8 min
Views56K

Привет, Хабр! Представляю вашему вниманию перевод статьи "Introduction to ASGI: Emergence of an Async Python Web Ecosystem" автора Florimond Manca.



"Черепахи рядом с водоемом", Ricard Baraham на unsplash.com


Python не замыкается только на Data Science, веб-разработка на Python вернулась с новым асинхронным витком в развитии языка!


Сейчас происходит много важных событий в экосистеме веб-разработки на Python. Одним из основных драйверов этих изменений является ASGI — Asynchronous Standard Gateway Interface.


Я уже несколько раз упоминал ASGI в моем блоге, в частности, когда анонсировал Bocadillo (асинхронный open-source веб-фреймворк на Python — прим.пер.) и tartiflette-starlette (библиотека для построения GraphQL API поверх HTTP через ASGI — прим.пер.), но я никогда не писал подробное введение о нем. Теперь я это сделаю.


Эта статья нацелена на людей, интересующихся последними трендами в веб-разработке на Python. Я хочу пригласить вас на экскурсию, из которой вы узнаете, что такое ASGI, и что он означает для современной веб-разработки в мире Python.


Прежде чем мы начнем, я хотел бы рассказать, что недавно создал awesome-asgi — отличный список для отслеживания постоянно расширяющейся экосистемы ASGI.

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

5 возможностей Python, о которых я не знал — а зря

Reading time5 min
Views35K
Python можно без сомнений называть языком, испытавшим в последнее десятилетие значительный рост, языком, который доказал свою мощь. Я создал множество Python-приложений — от интерактивных карт до блокчейнов. Python обладает огромным количеством возможностей. Начинающим очень сложно сходу всё это ухватить.



Даже если вы — программист, который переходит на Python с другого языка, вроде C, или если вы — учёный, который раньше работал в MATLAB, Python-программирование с использованием высокоуровневых абстракций — это, определённо, совершенно особый опыт. Я хочу рассказать о пяти очень важных, на мой взгляд, возможностях Python, о которых я раньше, к сожалению, не знал.
Читать дальше →
Total votes 47: ↑24 and ↓23+17
Comments13

Прионы — страх и ужас будущего

Reading time16 min
Views87K

Введение


«Предрассветная дымка нехотя отступала по оврагам, проступали стебли ржи, переливающиеся под взмахами ветра. Птицы уже успели обрадоваться утру и ненавязчиво щебетали над ухом. Последние капли сна упали в чашку ароматного кофе. Приятно встречать диск солнца, растягивая заиндевевшие суставы и вглядываясь в даль. Кто это? Застыла мысль, когда взгляд скользнул на тропинку, бегущую из леса. Широкая улыбка озарила лицо. С первых движений он узнал ее. Только она могла двигаться с такой грацией и изяществом лани. Рука замерла на полпути к столу. Продолжая улыбаться, он вдруг резко повернулся и зашагал на кухню. Появились на столе еще одна чашка и поднос с ягодами. Аромат лавандового сиропа заполонил веранду. Хороший будет день, подумалось ему, приятный завтрак – уж точно.
Ознакомиться
Total votes 71: ↑67 and ↓4+90
Comments146

Введение в язык запросов Cypher

Reading time8 min
Views16K

Язык запросов Cypher изначально разработан специально для графовой СУБД Neo4j. Целью Cypher является предоставить человеко-читаемый язык запросов к графовым базам данных похожий на SQL. На сегодня Cypher поддерживается несколькими графовыми СУБД. Для стандартизации Cypher была создана организация openCypher.


Основы работы с СУБД Neo4j описаны в статье Основы работы с Neo4j в браузере.


Для знакомства с Cypher рассмотрим пример генеалогического дерева заимствованный из классического учебника по Прологу за авторством И. Братко. На этом примере будет показано как добавлять узлы и связи в граф, как им назначать метки и атрибуты и как задавать вопросы.


Генеалогическое дерево в Neo4j, отредактированный вид

Читать дальше →
Total votes 9: ↑8 and ↓1+11
Comments16

Реализация строкового типа в CPython

Reading time9 min
Views9.2K
Продолжу неспешный разбор реализации базовых типов в CPython, ранее были рассмотрены словари и целые числа. Тем, кто думает, что в их реализации не может быть ничего интересного и хитрого, рекомендуется приобщиться к данным статьям. Те, же, кто уже их прочёл, знают, что CPython хранит в себе множество интересностей и особенностей реализации. Их может быть полезно знать при написании своих скриптов, так и в качестве пособия по архитектурным и алгоритмическим решениям. Не являются исключением здесь и строки.


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

Information

Rating
Does not participate
Location
Днепр, Днепропетровская обл., Украина
Date of birth
Registered
Activity