Pull to refresh
4
0
Андрей @AndrewFoma

User

Send message

System Design 101

Level of difficultyMedium
Reading time42 min
Views72K



О сложных системах простыми словами.


В шпаргалке на высоком уровне рассматриваются такие вещи, как протоколы коммуникации, DevOps, CI/CD, архитектурные паттерны, базы данных, кэширование, микросервисы (и монолиты), платежные системы, Git, облачные сервисы etc. Особую ценность представляют диаграммы — рекомендую уделить им пристальное внимание. Полагаю, шпаргалка будет интересна всем, кто хоть как-то связан с разработкой программного обеспечения и, прежде всего, веб-приложений. Буду признателен за помощь в уточнении/исправлении понятий, терминологии, логики/алгоритмов работы систем (в рамках того, что по этому поводу содержится в оригинале), а также в обнаружении очепяток.


Выражаю благодарность Анне Неустроевой за помощь в редактировании материала.


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


System Design (сборник на английском языке).

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

Нейросети в качестве художника: всё лучше и лучше. Подборка инструментов для создания изображений

Reading time3 min
Views13K

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

Читать далее
Total votes 32: ↑25 and ↓7+18
Comments9

FAQ по Shadowsocks/XRay/XTLS/Reality/Nekobox/etc. для обхода блокировок

Level of difficultyEasy
Reading time21 min
Views108K

Эта статья - сборник разных вопросов и ответов на них, которые звучали в комментариях к моим предыдущим статьям (Современные технологии обхода блокировок: V2Ray, XRay, XTLS, Hysteria, Cloak и все-все-всеBleeding-edge обход блокировок с полной маскировкой: настраиваем сервер и клиент XRay с XTLS-Reality быстро и просто и других из той же серии) и в личных сообщениях.

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

Графовый анализ: как вычислить первый фрод или увольняющегося сотрудника (первые шаги)

Level of difficultyEasy
Reading time13 min
Views24K
image

Любая организация в значительной степени зависит от действий людей: клиентов, партнёров, своих сотрудников. И все люди — разные: одни — добросовестные и честные, другие — хитрые и не прочь обмануть, третьи — слабовольные и зависят от чужого влияния.

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

Сейчас расскажу, что это, как работает и что с этим можно делать.
Читать дальше →
Total votes 56: ↑35 and ↓21+14
Comments17

Traefikация сервера

Level of difficultyMedium
Reading time17 min
Views13K

Статья предназначена для тех, кто подбирает себе reverse proxy или load balancer и хочет приглядеться к Traefik v2 в этом качестве. Рассмотрена установка в Docker и взаимодействие с его контейнерами, организация как собственного HTTPS шифрования, так и проброс TCP трафика на HTTPS сервер. Без Kubernetes, без SWARM.

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

Основы полнотекстового поиска в ElasticSearch. Часть вторая

Level of difficultyMedium
Reading time9 min
Views12K

Это вторая статья из цикла. В первой части я рассказывал про самые базовые понятия Elasticsearch. В этом же посте разберем устройство анализа текста и немного пощупаем полнотекстовый поиск.

Несколько слов про анализ текста

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

Мы уже познакомились с некоторыми типами Elasticsearch, но в этом разделе будем рассматривать только два — keyword и text. Тип text анализируется для полнотекстового поиска. Тип keyword преимущественно остается без изменений для точного поиска, сортировки и агрегации.

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

Вам в хранилище или к озеру? Чем занимаются специалисты по работе с данными и как стать Data-инженером

Reading time7 min
Views11K

Привет, Хабр! Сегодня рассказываем, чем отличаются подходы к построению распределённых хранилищ данных Data Warehouse (DWH) и Data Lake и в чём специфика задач специалистов, работающих с данными.

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

P.S. На картинке спрятаны 6 инструментов для работы с данными. Узнали их?

Читать далее
Total votes 17: ↑15 and ↓2+13
Comments0

Расширение возможностей веб-приложений с помощью WebAssembly и Python

Level of difficultyMedium
Reading time9 min
Views2.6K

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

Пару месяцев назад мы добавили Python в Wasm Language Runtimes. Мы опубликовали собранный двоичный файл python.wasm, который можно использовать для выполнения скриптов на Python при помощи WebAssembly, чтобы обеспечить повышенную защиту и портируемость.

После этого релиза мы получили много отзывов о том, как сделать его ещё более полезным для разработчиков. Одной из часто упоминаемых тем стала необходимость двунаправленной связи между хостом на Wasm и кодом на Python, выполняемым в python.wasm.

Мы поработали над этом вместе с командой Suborbital и реализовали приложение, демонстрирующее двунаправленную связь благодаря реализации SE2 Plugin ABI. Эту работу позже внедрили в Suborbital SE2.

Пример приложения можно найти в WLR/python/examples/bindings/se2-bindings. Его легко запустить и оно позволит вам разобраться, как встраивать Python в приложение на Wasm и реализовывать привязки для двунаправленной связи.
Читать дальше →
Total votes 17: ↑17 and ↓0+17
Comments2

Деплой приложения с nginx как по нодам

Reading time10 min
Views13K

Привет, Хабр! В этом материале мы разберем деплой приложения на React, арендуем облачный сервер и настроим nginx. Здесь будет необходимый минимум для фронтенд-разработчика:

  • Заливка проекта на GitHub.
  • Аренда и настройка облачного сервера по SSH.
  • Настройка nginx для раздачи статических файлов.
  • Сжатие бандла.
  • Подключение домена.
  • Настройка HTTPS.
  • Настройка Docker.

Для этого материала также доступна видеоверсия.
Читать дальше →
Total votes 45: ↑41 and ↓4+37
Comments12

Полное руководство по эффективному обучению

Reading time9 min
Views16K

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

Читать далее
Total votes 21: ↑13 and ↓8+5
Comments12

Обработка больших и очень больших графов

Level of difficultyMedium
Reading time18 min
Views3.8K

Однажды ко мне обратилась одна крупная фруктовая телефонная компания с просьбой подготовить для них курс по Apache Spark продвинутого уровня, и в нем обязательно должен быть раздел про обработку графов (Neo4j не предлагать). На тот момент я знал про классические алгоритмы обработки графов на базе DFS (поиск в глубину) и BFS (поиск в ширину). При этом неотъемлемым условием применения того или иного подхода является локальная поддержка стека (DFS) или очереди (BFS). Следовательно, классические алгоритмы можно применять для обработки графов, которые умещаются в память одной машины.

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

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

Kubernetes: продолжаем говорить о контейнерах и архитектуре

Level of difficultyMedium
Reading time18 min
Views5.3K

Каждый раз залипаю на анимацию работы Raft-протокола

В прошлый раз мы говорили о контейнерах, механизмах Namespace и о том, как это всё работает.

Сегодня мы пойдём дальше — к системам оркестрации, так как нам мало просто иметь контейнер. Нам нужно управлять сетью, распределять нагрузку и вовремя поднимать упавшие контейнеры и свои собственные компоненты.

Попробуем немного отойти от классического «yaml-программирования» и заглянуть под капот.

Коснёмся CAP-теоремы, важности ETCD и причинах его устойчивости к split-brain-проблеме. А ещё посмотрим, почему Kubernetes API можно распределить на кучу инстансов, работающих одновременно, а Controller Manager может работать только в одном экземпляре за раз.

Вот о том, как всё это работает в Kubernetes, кто и зачем тыкает в API, мы сегодня и поговорим.
Читать дальше →
Total votes 18: ↑18 and ↓0+18
Comments0

Python декораторы на максималках. Универсальный рецепт по написанию и аннотированию от мала до велика

Level of difficultyMedium
Reading time13 min
Views28K

Декорирование функций - это, наверное, самая сложная среди базовых и самая простая среди продвинутых фич языка Python. С декораторами, наверное, знакомы все джуны (хотя бы в рамках подготовки к собеседованиям). Однако, крайне мало разработчиков пишут их правильно. Особенно принимая во внимания тенденции последних нескольких лет к аннотированию всего и вся. Даже популярные open-source проекты (если основная часть их кода была написана до 2018 года) вряд ли дадут вам примеры декораторов, отвечающих всем современным требованиям к коду.

Так давайте разбираться!

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

В рамках статьи мы разберемся с декорированием функций в Python от простого к самому сложному. Рассмотрим, как их правильно писать и аннотировать, чтобы другие потребители вашего кода не страдали от близкого знакомства с ним. Уверен, что даже если вы чрезвычайно опытный разработчик, вы найдете для себя полезные советы (хотя и можете пропустить солидную часть материала).

Давайте разбираться
Total votes 43: ↑43 and ↓0+43
Comments9

Напишем и поймем Decision Tree на Python с нуля! Часть 4. Структуры данных

Reading time5 min
Views9.8K
Данная статья — четвертая в серии. Ссылки на предыдущие статьи: первая, вторая, третья

4.1 Структуры данных


Структура данных — это представление того, как организованы отдельные данные.

Массив


image
Читать дальше →
Total votes 5: ↑4 and ↓1+3
Comments2

ТОП-9 YouTube-каналов для изучения английского языка

Reading time3 min
Views127K
Впереди пора отпусков и каникул, поэтому мы просто поделимся с вами полезными YouTube-каналами на случай, если у вас будет пара свободных минут и желание немного заняться английским.

// "Enjoy the Content" — from author with Love 
Читать дальше →
Total votes 49: ↑35 and ↓14+21
Comments14

Обучаем ребенка робототехнике, играя: роботы BQ Zowi

Reading time4 min
Views9.7K


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

В принципе, детских обучающих конструкторов разного рода немало, о некоторых мы писали в своем блоге. Теперь хотим рассказать об интересной альтернативе скучным занятиям — это роботы семейства BQ Zowi. Большой плюс роботов заключается в возможности кастомизации, написания собственных управляющих программ, синхронизации действий нескольких роботов. Давайте посмотрим, как это все работает.
Total votes 13: ↑12 and ↓1+11
Comments6

Кибергруппа RTM специализируется на краже средств у российских компаний

Reading time16 min
Views15K

Известно несколько кибергрупп, специализирующихся на краже средств у российских компаний. Мы наблюдали атаки с применением лазеек в системах безопасности, открывающих доступ в сети целевых объектов. Получив доступ, атакующие изучают структуру сети организации и развертывают собственные инструменты для кражи средств. Классический пример этого тренда – хакерские группировки Buhtrap, Cobalt и Corkow.


image


Группа RTM, которой посвящен этот отчет, является частью данного тренда. Она использует специально разработанные вредоносные программы, написанные на Delphi, которые мы рассмотрим подробнее в следующих разделах. Первые следы этих инструментов в системе телеметрии ESET обнаружены в конце 2015 года. По мере необходимости группа загружает в зараженные системы различные новые модули. Атаки нацелены на пользователей систем ДБО в России и некоторых соседних странах.


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

Как я парсил всю базу данных игр Metacritic-а

Reading time6 min
Views20K
Metacritic — англоязычный сайт-агрегатор, собирающий отзывы о музыкальных альбомах, играх, фильмах, телевизионных шоу и DVD-дисках. (с википедии).

Использованные библиотеки: lxml, asyncio, aiohttp (lxml — библиотека разбора HTML страниц с помощью Python, asyncio и aiohttp будем использовать для асинхронности и быстрого извлечения данных). Также будем активно использовать XPath. Кто не знает, что это такое, отличный туториал.
Читать дальше →
Total votes 31: ↑20 and ↓11+9
Comments23

Гарвардский курс CS50 «Основы компьютерных наук и искусства программирования»

Reading time3 min
Views56K


Вот уже несколько месяцев специально для JavaRush мы переводим и озвучиваем самый популярный в мире университетский курс о CS50 — «Основы компьютерных наук и искусства программирования» (трейлер). Его уже много лет очно читают для студентов Гарварда и для воспитанников Йельского университета, а в последнее время ещё и заочно для многомиллионной аудитории интернета.
Это перевод самой новой версии курса, который стартовал осенью 2015 года. В курсе 24 лекции и постепенно мы переведём их все. Намедни мы перевели 15-ю лекцию, её вы найдёте под катом в списке всех переведённых на сегодняшний день лекций.

Что вы узнаете, прослушав этот курс:

  • Основы компьютерных наук и программирования;
  • Концепции алгоритмов и алгоритмичности мышления. Какие задачи можно решать с помощью программирования и каким образом;
  • Концепции абстракции, структуры данных, инкапсуляции, управления памятью. Основы компьютерной безопасности. Процесс разработки ПО и веб-разработка;
  • Основы языка программирования C и Scratch;
  • Основы баз данных и SQL;
  • Веб-разработка: основы CSS, HTML, JavaScript и PHP;
  • Основы подготовки презентации проектов по программированию.

Читать дальше →
Total votes 30: ↑26 and ↓4+22
Comments11

Лекции по биоинформатике

Reading time7 min
Views16K
Каждый год в конце июля Институт биоинформатики совместно с СПбАУ РАН проводит летнюю школу по биоинформатике. В этой небольшой статье собраны лекции (видео и слайды) за два последних года проведения летних школ.

image

Вводные слова о школе


Каждый год на школу приезжает 100 студентов и аспирантов со всей России, СНГ и других стран. В основном это биологи, медики, программисты, математики и физики. В течение недели участники погружаются в мир биоинформатики: просыпают посещают лекции и семинары, много общаются друг с другом и работают над научными проектами.

Читать дальше →
Total votes 17: ↑16 and ↓1+15
Comments7

Information

Rating
Does not participate
Location
Россия
Registered
Activity