Как стать автором
Обновить
22
0

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

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

13 млрд счётчиков и 220 000 RPS на запись: проектируем Key-Value-хранилище для Спамообороны

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

Привет! Меня зовут Тимур Нургалиев, я тимлид в команде Спамообороны. Яндекс Почта обрабатывает миллиарды писем, из них около 20–30% — спам. Технологии, которые мы создаём в команде, блокируют массовые рассылки и отправляют вредоносные письма в соответствующую папку.

В статье я расскажу про архитектуру нашего высоконагруженного сервиса, немного погружу в контекст и расскажу, как мы спроектировали Key‑Value‑хранилище, которое в режиме реального времени хранит и отдаёт признаки массовости письма.

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

PostgreSQL. Устройство карты свободного пространства

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

СУБД PostgreSQL способна бысто работать с огромными массивами данных благодаря множеству различных механизмов, таких как карта свободного пространства, позволяющая за короткий промежуток времени найти страницу из основного слоя с необходимым свободным пространством для вставки новых версий строк.

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

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

Планировщик задач: не замораживаем вкладку при открытии страницы

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

Современные сайты — это сложные проекты, требующие много времени на обработку JavaScript. А современные пользователи — это требовательные люди, готовые убежать к конкуренту при ощущении «что-то сайт подтормаживает». Такое ощущение у пользователя может вызываться большим Total Blocking Time, когда он подолгу не может взаимодействовать со страницей.

Что в такой ситуации делать? На нашей конференции HolyJS Виктор Хомяков из Яндекса рассказал о том, как там делали инициализацию скриптов на странице поиска более дружественной к человеку и не блокирующей UI. А также о том, как и вам уменьшить TBT, не ухудшая другие показатели.

Доклад понравился зрителям, поэтому теперь для Хабра мы сделали текстовую версию. Далее повествование идёт от лица Виктора.

Читать далее
Всего голосов 19: ↑18 и ↓1+21
Комментарии13

Профилирование Node.js. Доклад Яндекса

Время на прочтение18 мин
Количество просмотров8.5K
Полтора года назад я выступил на FrontendConf и посвятил 40 минут профилированию. Перечисленные приемы и инструменты по-прежнему актуальны — сегодня публикую видео с подробным конспектом. Доклад расскажет, что такое профилирование, научит локализовывать потенциальные утечки памяти, а также немного углубит ваше понимание инструмента DevTools.

— Всем привет. Меня зовут Артём Несмиянов, я fullstack-разработчик Яндекс.Практикума. И, как видите, сегодня я хочу рассказать о профилировании Node.js, хотя это не совсем фронтендерская тема. Но сейчас очень много приложений используют фронтбэк, где есть свой server-side rendering, где нужно это все отдавать клиенту, и фронтендеру часто приходится взаимодействовать с Node.js. Иногда происходят вещи, которые могут повлиять на ваш сервер, положить его, перегрузить и так далее. С этим надо бороться. Я хочу показать, какие методы использовали мы. Это скорее введение в профилирование Node.js.
Читать дальше →
Всего голосов 22: ↑21 и ↓1+31
Комментарии0

KODI: собираем удобный и функциональный медиацентр для дома. Часть 1

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

Поговорим о том, как при наличии небольшого количества времени и навыков построить мультимедийный комбайн с дополнительными возможностями домашнего сервера на базе Kubuntu 20.04 и KODI, способного работать 24/7/365.

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

Реверс-инжиниринг домашнего роутера с помощью binwalk. Доверяете софту своего роутера?

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


Несколько дней назад, я решил провести реверс-инжиниринг прошивки своего роутера используя binwalk.


Я купил себе TP-Link Archer C7 home router. Не самый лучший роутер, но для моих нужд вполне хватает.


Каждый раз когда я покупаю новый роутер, я устанавливаю OpenWRT. Зачем? Как правило производители не сильно заботятся о поддержке своих роутеров и со временем софт устаревает, появляются уязвимости и так далее, в общем вы поняли. Поэтому я предпочитаю хорошо поддерживаемую сообществом open-source прошивку OpenWRT.


Скачав себе OpenWRT, я так же скачал последний образ прошивки под мой новый Archer C7 с официального сайта и решил проанализировать его. Чисто ради фана и рассказать о binwalk.

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

OpenCV в Python. Часть 1

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

Привет, Хабр! Запускаю цикл статей по библиотеке OpenCV в Python. Кому интересно, добро пожаловать под кат!


my_logo

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

Трудности перевода: уязвимости шлюзов промышленных протоколов

Время на прочтение8 мин
Количество просмотров5.4K
Языковой барьер существует не только между айтишниками и пользователями. «Умные» производства и компьютеры, управляющие ими, также не способны общаться между собой без переводчиков — специализированных шлюзов промышленных протоколов. В этом посте мы расскажем о слабых местах шлюзов протоколов и о том, как злоумышленники могут использовать их, чтобы нанести вред предприятиям.

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

Continuous Integration как практика, а не Jenkins. Андрей Александров

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


Обсудим почему CI-инструменты и CI – это совсем про разное.


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

Всего голосов 12: ↑10 и ↓2+9
Комментарии9

Создаём библиотеку по последнему слову техники

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

Привет, Хабр. Это статья о том как написать Hello world по последнему слову техники.


В конце мы получим hello world библиотеку которая:


  • Использует typescript
  • Заботится о codestyle
  • Генерирует доку
  • Проводит тесты
Читать дальше →
Всего голосов 18: ↑14 и ↓4+10
Комментарии8

Феномен XY: как избежать «неправильных» проблем

Время на прочтение3 мин
Количество просмотров22K
Задумывались ли вы когда-нибудь о том, как много часов, месяцев и даже жизней было впустую потрачено на решение «неправильных» проблем?


Читать дальше →
Всего голосов 33: ↑27 и ↓6+21
Комментарии36

Разбираемся в основах Blockchain: Задача Византийских Генералов. Часть 1

Время на прочтение6 мин
Количество просмотров29K
Перевод статьи подготовлен специально для студентов курса «Архитектор высоких нагрузок», который стартует уже в этом месяце.




Блокчейн – это децентрализованная система, состоящая из различных субъектов, которые действуют в зависимости от своих стимулов и имеющейся у них информации.

Всякий раз, когда новая транзакция транслируется по сети, узлы могут включить эту транзакцию в копию своего леджера или проигнорировать ее. Когда большинство участников сети принимают решение о принятии определенного состояния, достигается консенсус.
Читать дальше →
Всего голосов 19: ↑16 и ↓3+13
Комментарии8

О сетевой модели в играх для начинающих

Время на прочтение11 мин
Количество просмотров39K
image

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

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

В целом существует два основных типа сетевых архитектур: peer-to-peer и клиент-серверная. В архитектуре peer-to-peer (p2p) данные передаются между любыми парами подключенных игроков, а в клиент-серверной архитектуре данные передаются только между игроками и сервером.

Хотя архитектура peer-to-peer по-прежнему используется в некоторых играх, стандартом является клиент-серверная: она проще в реализации, требует канал меньшей ширины и облегчает защиту от читерства. Поэтому в этом руководстве мы сосредоточимся на клиент-серверной архитектуре.
Читать дальше →
Всего голосов 20: ↑19 и ↓1+18
Комментарии6

Лучшие методики тестирования в JavaScript и Node.js

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

Это исчерпывающее руководство по обеспечению надёжности в JavaScript и Node.js. Здесь собраны десятки лучших постов, книг и инструментов.

Сначала разберитесь с общепринятыми методиками тестирования, которые лежат в основе любого приложения. А затем можно углубиться в интересующую вас сферу: фронтенд и интерфейсы, бэкенд, CI или всё перечисленное.
Всего голосов 47: ↑46 и ↓1+45
Комментарии3

Архитектура микросервисов

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


К сожалению, у меня нет опыта работы с микросервисами, но около года назад я очень активно интересовался этой темой и изучил все источники информации, какие смог найти. Я просмотрел несколько выступлений на конференциях, прочитал несколько статей очень авторитетных и опытных специалистов вроде Мартина Фаулера, Фреда Джорджа, Эдриана Кокрофта и Криса Ричардсона, чтобы как можно больше узнать о микросервисах. Эта статья — результат моих изысканий.
Всего голосов 79: ↑75 и ↓4+71
Комментарии269

Разработка под WebAssembly: реальные грабли и примеры

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


Анонс WebAssembly состоялся в 2015-м — но сейчас, спустя годы, всё ещё немногие могут похвастаться им в продакшне. Тем ценнее материалы о подобном опыте: информация из первых рук о том, каково с этим жить на практике, пока что в дефиците.

На конференции HolyJS доклад об опыте использования WebAssembly получил высокие оценки зрителей, и теперь специально для Хабра подготовлена текстовая версия этого доклада (видеозапись также приложена).
Читать дальше →
Всего голосов 73: ↑72 и ↓1+71
Комментарии59

Построение микросервисной архитектуры на Golang и gRPC, часть 1

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

Введение в микросервисную архитектуру


Часть 1 из 10


Адаптация статей Ewan Valentine.


Это серия из десяти частей, я постараюсь раз в месяц писать про построение микросервисов на Golang. Я буду использовать protobuf и gRPC в качестве основного транспортного протокола.


Стек, который я использовал: golang, mongodb, grpc, docker, Google Cloud, Kubernetes, NATS, CircleCI, Terraform и go-micro.


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


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


  • грузы
  • инвентарь
  • суда
  • пользователи
  • роли
  • аутентификация
Читать дальше →
Всего голосов 25: ↑17 и ↓8+9
Комментарии8

Laravel 5.3: Подготовка к разработке (для новичков)

Время на прочтение11 мин
Количество просмотров123K
Приветствую тебя, Хабра-сообщество и новички в мире Laravel!

Данная статья написана для новичков в сфере Лары и призвана помочь им в начальной стадии освоения фреймворка.

В статье будут рассмотрены, так сказать, «базовые» пакеты, без которых лично мне трудно работать над каким-либо проектом.

Итак, если Вам интересна тема, прошу под кат.

Laravel 5.3

Читать дальше →
Всего голосов 25: ↑20 и ↓5+15
Комментарии96

Путеводитель по JavaScript Promise для новичков

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

Этот материал мы подготовили для JavaScript-программистов, которые только начинают разбираться с «Promise». Обещания (promises) в JavaScript – это новый инструмент для работы с отложенными или асинхронными вычислениями, добавленный в ECMAScript 2015 (6-я версия ECMA-262).
Читать дальше →
Всего голосов 14: ↑14 и ↓0+14
Комментарии61

Небольшой обзор исходного кода трояна zeus

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

Введение


image
Как нам подсказывает англо-русский словарь, zeus переводится как Зевс, Громовержец, главный бог древне-греческого пантиона. Назвав свое творение zeus в далеком уже 2007 году, неизвестный автор трояна взял на себя определенные обязательства, обязывающие быть если не главным, то как минимум в числе первых, и надо признать, он выполнил, и даже перевыполнил эти обязательства.
Zeus-троян стал уже легендарным на просторах Интернета и даже за его пределами за последние несколько лет. Ни один из троянов не зацвел таким буйным цветом, не распространился так широко, как этот, а по широте охвата zeus ненамного отстает от печально знаменитого червя Kido/Conficker.
Читать дальше →
Всего голосов 48: ↑44 и ↓4+40
Комментарии34
1
23 ...

Информация

В рейтинге
Не участвует
Откуда
Бобруйск, Могилевская обл., Беларусь
Дата рождения
Зарегистрирован
Активность