Pull to refresh
13
0
Alex Kadinsky @detsl

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

Send message

Тестирование микросервисов: разумный подход

Reading time 49 min
Views 64K


Движущая сила микросервисов


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

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

Однако, когда дело доходит до тестирования (или, чего похуже, разработки) микросервисов, выясняется, что большинство компаний по-прежнему испытывает привязанность к допотопному способу тестирования всех компонентов вместе. Создание сложной инфраструктуры считается обязательным условием для проведения сквозного (end-to-end) тестирования, при котором набор тестов для каждого сервиса обязательно должен быть выполнен — делается это для того, чтобы убедиться, что в сервисах не появилось регрессий или несовместимых изменений.
Total votes 36: ↑35 and ↓1 +34
Comments 13

Типичные распределения вероятности: шпаргалка data scientist-а

Reading time 11 min
Views 124K

У data scientist-ов сотни распределений вероятности на любой вкус. С чего начать?


Data science, чем бы она там не была – та ещё штука. От какого-нибудь гуру на ваших сходках или хакатонах можно услышать:«Data scientist разбирается в статистике лучше, чем любой программист». Прикладные математики так мстят за то, что статистика уже не так на слуху, как в золотые 20е. У них даже по этому поводу есть своя несмешная диаграмма Венна. И вот, значит, внезапно вы, программист, оказываетесь совершенно не у дел в беседе о доверительных интервалах, вместо того, чтобы привычно ворчать на аналитиков, которые никогда не слышали о проекте Apache Bikeshed, чтобы распределённо форматировать комментарии. Для такой ситуации, чтобы быть в струе и снова стать душой компании – вам нужен экспресс-курс по статистике. Может, не достаточно глубокий, чтобы вы всё понимали, но вполне достаточный, чтобы так могло показаться на первый взгляд.
Читать дальше →
Total votes 86: ↑85 and ↓1 +84
Comments 28

Машинное обучение — это легко

Reading time 7 min
Views 344K
В данной статье речь пойдёт о машинном обучении в целом и взаимодействии с датасетами. Если вы начинающий, не знаете с чего начать изучение и вам интересно узнать, что такое «датасет», а также зачем вообще нужен Machine Learning и почему в последнее время он набирает все большую популярность, прошу под кат. Мы будем использовать Python 3, так это как достаточно простой инструмент для изучения машинного обучения.
Читать дальше →
Total votes 51: ↑44 and ↓7 +37
Comments 20

В ядре Linux обнаружена опасная 0-day уязвимость Dirty COW (CVE-2016-5195)

Reading time 2 min
Views 43K


В ядре Linux обнаружена опасная уязвимость, которая связана с обработкой подсистемой памяти ядра механизма copy-on-write (COW). Эксплуатируя баг можно спровоцировать так называемое состояние гонки (race condition). При эксплуатации уязвимости неавторизованный локальный пользователь сможет получить доступ к memory mappings с правом записи, хотя доступ должен быть ограничивать только чтением (read-only). Уязвимость относится к privilege escalation.
Читать дальше →
Total votes 68: ↑67 and ↓1 +66
Comments 51

Блокчейн как «волшебная таблетка»?

Reading time 6 min
Views 18K
Про блокчейн сегодня говорят все вокруг. На фоне общего хайпа вокруг блокчейна, его воспринимают в качестве «волшебной таблетки», с помощью которой можно решить все проблемы. Как это часто бывает, на деле все немного сложнее. Вице-президент по блокчейн Виктор Лысенко рассказал о том, как технология блокчейн перестала ассоциироваться с Bitcoin, захватила «сердца и умы» банковского сектора и в каких случаях стоит применять решения на ее основе, а в каких нет.


Total votes 37: ↑28 and ↓9 +19
Comments 24

Структуры данных для самых маленьких

Reading time 22 min
Views 336K
James Kyle как-то раз взял и написал пост про структуры данных, добавив их реализацию на JavaScript. А я взял и перевёл.

Дисклеймер: в посте много ascii-графики. Не стоит его читать с мобильного устройства — вас разочарует форматирование текста.


Читать дальше →
Total votes 91: ↑87 and ↓4 +83
Comments 51

Декодирование типа данных JSON MySQL

Reading time 3 min
Views 40K
В этом посте мы собираемся исследовать тип данных JSON в MySQL 5.7 и во время погружения будем использовать фреймворк Laravel для построения запросов.

image
Читать дальше →
Total votes 16: ↑12 and ↓4 +8
Comments 22

Server-less API на AWS за 15 минут

Reading time 6 min
Views 18K
Amazon Web Services позволяют очень быстро производить прототипирование простых веб-приложений, и написать API, допустим, для простого мобильного приложения можно за считанные минуты. Мы будем использовать связку DynamoDB и API Gateway (без Lambda-функций!) для настройки GET и POST запросов к базе с возможностью чтения, записи и изменения данных в ней.


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

Почему, ну почему, эти #?@! придурки используют vi?

Reading time 12 min
Views 119K

Предлагаю читателям "Хабрахабра" перевод статьи "Why, oh WHY, do those #?@! nutheads use vi?" за авторством John Beltran de Heredia.


Да, даже если вы не можете в это поверить, у редактора vi, увидевшего свет более тридцати лет назад (и его более молодого, всего-то пятнадцатилетнего лучшего клона & большого улучшения — vim) очень много фанатов.


Нет, они не динозавры, которые не хотят идти в ногу со временем — сообщество пользователей vi продолжает увеличиваться: я, который начал только два года назад (после десяти лет работы программистом). Мои друзья переходят на vi сейчас. Черт, большинство пользователей vi даже еще не были рождены, когда он был написан!


Да, есть конкретные причины, почему модель редактирования vi/vim превосходит любую другую. Вам не надо быть экспертом в Unix, чтобы использовать vi — он доступен бесплатно практически для любой существующей платформы; для большинства IDE существуют плагины, позволяющие использовать его возможности. Давайте же развеем некоторые заблуждения и рассмотрим пару примеров, демонстрирующих его превосходство.

Читать дальше →
Total votes 172: ↑143 and ↓29 +114
Comments 769

Несколько полезных приемов для разработки на Yii 2

Reading time 17 min
Views 57K
Собрал несколько классов и сниппетов из серии «tips & tricks», которые могут оказаться кому-нибудь полезными.
Содержание:
Несколько атрибутов в одной колонке грида
Исправление навигации для активных пунктов меню
Маппинг таблиц на другие названия
Почему TimestampBehavior обновляет свойство updated_at, если ничего не изменено
Bootstrap DateTimePicker — 2 разных формата для показа в интерфейсе и для отправки значения на сервер
Учет временной зоны пользователя для полей с DateTimePicker
Читать дальше →
Total votes 17: ↑14 and ↓3 +11
Comments 6

Как нельзя делать рекомендации контента

Reading time 9 min
Views 23K

Во время общения с медиа мы в Relap.io часто сталкиваемся с массой заблуждений, в которые все верят, потому что так сложилось исторически. На сайте есть блоки типа «Читать также» или «Самое горячее» и т.п. Словом, всё то, что составляет обвязку статьи и стремится дополнить UX дорогого читателя. Мы расскажем, какие заблуждения есть у СМИ, которые делают контентные рекомендации, и развеем их цифрами.
 
HAbr1
 
 
Читать дальше →
Total votes 50: ↑41 and ↓9 +32
Comments 29

Доломать Windows, чтобы починить: «Было предпринято несколько попыток, но причину проблемы определить не удалось»

Reading time 4 min
Views 60K
Время от времени случается, что ко мне обращаются пользователи с заглючившим Windows 7 или 8 (наверняка так же и с «десяткой» будут жертвы), у кого постоянно запускается «Восстановление системы» вместо нормальной загрузки, и автоматический механизм поиска и устранения проблем не справляется.



Мне удалось разобраться, почему возникает сообщение «Было предпринято несколько попыток, но причину проблемы определить не удалось» и как вернуть жизнь операционке без радикальной переустановки.
Читать дальше →
Total votes 40: ↑35 and ↓5 +30
Comments 17

Решение задачи кредитного скоринга в студии Microsoft Azure Machine Learning

Reading time 5 min
Views 11K

Резюме


Предсказать, выплатит клиент банка кредит или нет. Задача была предложена на интернет-турнире, устроенном одним банком. Один из примеров ее решения можно найти здесь. Наша цель состоит в построении решения на платформе Microsoft Azure.
Читать дальше →
Total votes 10: ↑9 and ↓1 +8
Comments 2

Масштабное исследование сбоев Flash накопителей (обзор статьи)

Reading time 8 min
Views 26K
Не так давно было опубликовано интереснейшее исследование «A Large-Scale Study of Flash Memory Failures in the Field” за авторством Qiang Wu и Sanjev Kumar из Facebook, а также Justin Meza и Onur Mutlu из Университета Карнеги-Меллон. Ниже основные выводы из статьи с небольшими комментариями.

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

Авторами была собрана обширная статистика за четыре года эксплуатации флэш-накопителей в дата-центрах Facebook.

Как многие наверняка знают, Facebook долгое время была лучшим (и основным) клиентом компании Fusuion-IO (сейчас куплена SANdisk), которая одной из первых начала выпускать PCI-e флэш-накопители.
image

В результате проведенного анализа собранных данных, был сделан ряд интересных выводов:
Читать дальше →
Total votes 15: ↑15 and ↓0 +15
Comments 14

Захват пакетов в Linux на скорости десятки миллионов пакетов в секунду без использования сторонних библиотек

Reading time 8 min
Views 85K
Моя статья расскажет Вам как принять 10 миллионов пакетов в секунду без использования таких библиотек как Netmap, PF_RING, DPDK и прочие. Делать мы это будем силами обычного Линукс ядра версии 3.16 и некоторого количества кода на С и С++.



Сначала я хотел бы поделиться парой слов о том, как работает pcap — общеизвестный способ захвата пакетов. Он используется в таких популярных утилитах как iftop, tcpdump, arpwatch. Кроме этого, он отличается очень высокой нагрузкой на процессор.

Итак, Вы открыли им интерфейс и ждете пакетов от него используя обычный подход — bind/recv. Ядро в свою очередь получает данные из сетевой карты и сохраняет в пространстве ядра, после этого оно обнаруживает, что пользователь хочет получить его в юзер спейсе и передает через аргумент команды recv, адрес буфера куда эти данные положить. Ядро покорно копирует данные (уже второй раз!). Выходит довольно сложно, но это не все проблемы pcap.

Кроме этого, вспомним, что recv — это системный вызов и вызываем мы его на каждый пакет приходящий на интерфейс, системные вызовы обычно очень быстры, но скорости современных 10GE интерфейсов (до 14.6 миллионов вызовов секунду) приводят к тому, что даже легкий вызов становится очень затратным для системы исключительно по причине частоты вызовов.

Также стоит отметить, что у нас на сервере обычно более 2х логических ядер. И данные могут прилететь на любое их них! А приложение, которое принимает данные силами pcap использует одно ядро. Вот тут у нас включаются блокировки на стороне ядра и кардинально замедляют процесс захвата — теперь мы занимаемся не только копированием памяти/обработкой пакетов, а ждем освобождения блокировок, занятых другими ядрами. Поверьте, на блокировки может зачастую уйти до 90% процессорных ресурсов всего сервера.

Хороший списочек проблем? Итак, мы их все геройски попробуем решить!
Читать дальше →
Total votes 113: ↑112 and ↓1 +111
Comments 77

PHP-Дайджест № 61 – интересные новости, материалы и инструменты (13 – 26 апреля 2015)

Reading time 3 min
Views 21K


Предлагаем вашему вниманию очередную подборку со ссылками на новости и материалы.

Приятного чтения!
Читать дальше →
Total votes 41: ↑36 and ↓5 +31
Comments 11

Архитектура системы машинного обучения защиты от рисков

Reading time 9 min
Views 12K


Бизнес нашей во многом строится на взаимном доверии между Airbnb, владельцами жилья и путешественниками. Поэтому мы стараемся создать одно из самых доверенных сообществ. Одним из инструментов построение такого сообщества стала система обзоров, которая помогает пользователям найти участников, заслуживших высокую репутацию.
Читать дальше →
Total votes 15: ↑12 and ↓3 +9
Comments 2

Мигрируем на HTTPS

Reading time 5 min
Views 124K
В переводе этого документа описываются шаги, которые необходимо предпринять для перевода вашего сайта с HTTP на HTTPS. Шаги можно выполнять с любой скоростью – либо всё за день, либо один шаг за месяц. Главное, делать это последовательно.

Каждый шаг улучшает ваш сервер и важен сам по себе. Однако, сделать их все – обязательно для того, чтобы гарантировать безопасность вашим посетителям.
Читать дальше →
Total votes 57: ↑49 and ↓8 +41
Comments 16

Видео докладов Badoo с конференции Highload 2014

Reading time 2 min
Views 20K
Осенью мы выступали с докладами на одной из лучших технических конференций Highload 2014 и сейчас с удовольствием делимся с вами видео докладов. Вы можете задавать вопросы в комменариях и наши спикеры и остальные эксперты обязательно на них ответят.

1. «Sharding — patterns & antipatterns».
Доклад Алексея Рыбака (Badoo) и Константина kostja Осипова (Mail.ru).



Еще 5 отличных докладов
Total votes 41: ↑37 and ↓4 +33
Comments 13

Буфер вывода в PHP

Reading time 8 min
Views 51K
В этой статье я хочу рассказать о том, как реализован слой «буферизации вывода» в PHP, как работает и как с ним взаимодействовать из PHP. В этом слое нет ничего сложного, но многие разработчики либо совсем не понимают, как с ним обращаться, либо не имеют полной ясности. Всё, о чём я буду писать, относится к PHP версии 5.4 и выше. Именно начиная с неё изменились многие вещи, связанные с буфером вывода (БВ). По сути, этот функционал был полностью переписан, поэтому совместимость с версией 5.3 сохранилась лишь частично.

Что такое буфер вывода?


Поток вывода в PHP содержит байты, обычно в виде текста, которые разработчику надо вывести на экран. Чаще всего для этого используется конструкция echo или printf(). Во-первых, нужно понимать, что любая функция, которая что-то выводит, будет использовать БВ из области PHP. Если говорить о расширениях для PHP, то можно получить доступ к функциям, пишущим в SAPI напрямую, в обход любого вышерасположенного БВ. API C задокументировано в lxr.php.net/xref/PHP_5_5/main/php_output.h, отсюда можно почерпнуть немало информации, например, о размере буфера по умолчанию.

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

И третье: в зависимости от SAPI, который вы используете (веб или cli), слой БВ может вести себя по-разному.

Ниже представлена схема, которая поможет понять всё вышесказанное:

Читать дальше →
Total votes 59: ↑52 and ↓7 +45
Comments 10

Information

Rating
Does not participate
Location
Томск, Томская обл., Россия
Date of birth
Registered
Activity