Как стать автором
Обновить
4
0
Андрей @AndrewFoma

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

Отправить сообщение

System Design 101

Уровень сложности Средний
Время на прочтение 42 мин
Количество просмотров 66K



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


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


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


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


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

Читать дальше →
Всего голосов 79: ↑79 и ↓0 +79
Комментарии 17

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

Время на прочтение 3 мин
Количество просмотров 12K

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

Читать далее
Всего голосов 32: ↑25 и ↓7 +18
Комментарии 9

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

Уровень сложности Простой
Время на прочтение 21 мин
Количество просмотров 98K

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

Читать далее
Всего голосов 62: ↑62 и ↓0 +62
Комментарии 172

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

Уровень сложности Простой
Время на прочтение 13 мин
Количество просмотров 23K
image

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

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

Сейчас расскажу, что это, как работает и что с этим можно делать.
Читать дальше →
Всего голосов 56: ↑35 и ↓21 +14
Комментарии 17

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

Уровень сложности Средний
Время на прочтение 17 мин
Количество просмотров 11K

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

Читать далее
Всего голосов 3: ↑3 и ↓0 +3
Комментарии 14

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

Уровень сложности Средний
Время на прочтение 9 мин
Количество просмотров 11K

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

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

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

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

Читать далее
Всего голосов 26: ↑26 и ↓0 +26
Комментарии 0

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

Время на прочтение 7 мин
Количество просмотров 9.9K

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

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

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

Читать далее
Всего голосов 17: ↑15 и ↓2 +13
Комментарии 0

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

Уровень сложности Средний
Время на прочтение 9 мин
Количество просмотров 2.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 и реализовывать привязки для двунаправленной связи.
Читать дальше →
Всего голосов 17: ↑17 и ↓0 +17
Комментарии 2

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

Время на прочтение 10 мин
Количество просмотров 12K

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

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

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

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

Время на прочтение 9 мин
Количество просмотров 16K

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

Читать далее
Всего голосов 21: ↑13 и ↓8 +5
Комментарии 12

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

Уровень сложности Средний
Время на прочтение 18 мин
Количество просмотров 3.7K

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

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

Читать далее
Всего голосов 12: ↑12 и ↓0 +12
Комментарии 2

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

Уровень сложности Средний
Время на прочтение 18 мин
Количество просмотров 5K

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

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

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

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

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

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

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

Уровень сложности Средний
Время на прочтение 13 мин
Количество просмотров 25K

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

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

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

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

Давайте разбираться
Всего голосов 43: ↑43 и ↓0 +43
Комментарии 9

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

Время на прочтение 5 мин
Количество просмотров 9.6K
Данная статья — четвертая в серии. Ссылки на предыдущие статьи: первая, вторая, третья

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


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

Массив


image
Читать дальше →
Всего голосов 5: ↑4 и ↓1 +3
Комментарии 2

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

Время на прочтение 3 мин
Количество просмотров 127K
Впереди пора отпусков и каникул, поэтому мы просто поделимся с вами полезными YouTube-каналами на случай, если у вас будет пара свободных минут и желание немного заняться английским.

// "Enjoy the Content" — from author with Love 
Читать дальше →
Всего голосов 49: ↑35 и ↓14 +21
Комментарии 14

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

Время на прочтение 4 мин
Количество просмотров 9.7K


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

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

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

Время на прочтение 16 мин
Количество просмотров 15K

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


image


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


Читать дальше →
Всего голосов 22: ↑22 и ↓0 +22
Комментарии 1

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

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

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

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

Время на прочтение 3 мин
Количество просмотров 56K


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

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

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

Читать дальше →
Всего голосов 30: ↑26 и ↓4 +22
Комментарии 11

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

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

image

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


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

Читать дальше →
Всего голосов 17: ↑16 и ↓1 +15
Комментарии 7

Информация

В рейтинге
Не участвует
Откуда
Россия
Зарегистрирован
Активность