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

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

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

Без А/B результат XЗ, или Как построить высоконагруженную платформу А/B-тестов

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

Один из важных вопросов как в нашей жизни, так и в бизнесе, и в IT — вопрос эффективности. Эффективно ли мы планируем наше время, те ли задачи решает бизнес, тот ли код мы оптимизируем? Чтобы ответить на эти вопросы, результат должен обладать главным критерием измеримостью. Измеримость результата новых фич для бизнеса и IT обеспечивает платформа А/B-тестов. О том, как её можно построить, выдерживать большой RPS и при этом не облажаться уронить прод, я расскажу в этой статье. 

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

Читать далее
Всего голосов 108: ↑107 и ↓1+106
Комментарии7

Вливаемся в Data Science: подробный roadmap что и где изучать

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

Привет, Хабр!

В этой статье рассмотрим план становления начинающим дата-сайнтистом. Рассмотрим, что и где изучать, чтобы преисполниться в своём познании. А там и до оффера недалеко

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

Архитектура на «микросервисах» в монолите: проект из практики

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

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

На старте было просто: связаться с нами можно было только через почту. Входящим ящиком был IMAP, исходящим — SaaS сервис по отправке почты, забрать письма с которого было то еще приключение. Мы смотрели на заголовки и соединяли письма в цепочки, как в любом почтовике: Gmail, Outlook. В таком виде передавали операторам. 

Но оказалось, что с теми метаданными, которые мы предоставляли операторам, им было неудобно работать — много времени отнимал поиск пользователей в базе по адресу почты и теме сообщений.

Так появился проект линковка.

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

Организация памяти процесса

Время на прочтение8 мин
Количество просмотров136K
image
Управление памятью – центральный аспект в работе операционных систем. Он оказывает основополагающее влияние на сферу программирования и системного администрирования. В нескольких последующих постах я коснусь вопросов, связанных с работой памяти. Упор будет сделан на практические аспекты, однако и детали внутреннего устройства игнорировать не будем. Рассматриваемые концепции являются достаточно общими, но проиллюстрированы в основном на примере Linux и Windows, выполняющихся на x86-32 компьютере. Первый пост описывает организацию памяти пользовательских процессов.
Читать дальше →
Всего голосов 28: ↑25 и ↓3+22
Комментарии12

Необычные модели Playboy, или про обнаружение выбросов в данных c помощью Scikit-learn

Время на прочтение7 мин
Количество просмотров127K
Мотивированный статьей пользователя BubaVV про предсказание веса модели Playboy по ее формам и росту, автор решил углубиться if you know what I mean в эту будоражащую кровь тему исследования и в тех же данных найти выбросы, то есть особо сисястые модели, выделяющиеся на фоне других своими формами, ростом или весом. А на фоне этой разминки чувства юмора заодно немного рассказать начинающим исследователям данных про обнаружение выбросов (outlier detection) и аномалий (anomaly detection) в данных с помощью реализации одноклассовой машины опорных векторов (One-class Support Vector Machine) в библиотеке Scikit-learn, написанной на языке Python.
Читать дальше →
Всего голосов 84: ↑77 и ↓7+70
Комментарии36

Arduino & Modbus

Время на прочтение6 мин
Количество просмотров207K
В предыдущей статье мы соединили открытую платформу домашней автоматизации OpenHAB с контроллером Arduino использовав очень простой, текстовый протокол. Но это решение поставит нас в тупик, если мы захотим подключить наш контроллер к другой системе, что же делать?

Modbus — самый известный и распространенный стандарт в промышленной автоматизации, его поддерживают миллионы устройств по всему миру, эти устройства легко интегрируется в единую сеть и стыкуются с огромным количеством готового программного обеспечения. Попробуем использовать его в нашем проекте?

Что нам необходимо знать об этом стандарте?
Протокол Modbus использует последовательные линии связи (например, RS232, RS485), а протокол Modbus TCP рассчитан на передачу данных по сетям TCP/IP.
Протокол Modbus имеет два режима передачи RTU и ASCII, в режиме ASCII каждый байт передается как два ASCII символа его шестнадцатеричного представления.
В сети Modbus есть только один ведущий, который с заданным интервалом опрашивает несколько ведомых устройств, каждое из которых имеет свой уникальный адрес от 1 до 254, адрес 0 широковещательный и на него отвечают все устройства, так как ведущий в сети один у него нет своего адреса.
В спецификации Modbus определено два типа данных, один бит и 16 битное слово. Данные организованны в четыре таблицы с 16 битной адресацией ячеек, адресация в таблицах начинается с 0. Для доступа к данным из разных таблиц предназначены отдельные команды.
Discrete Inputs 1 бит только чтение
Coils 1 бит чтение и запись
Input Registers 16 бит только чтение
Holding Registers 16 бит чтение и запись

Как нам подключить Modbus устройство к OpenHAB?
Читать дальше →
Всего голосов 19: ↑19 и ↓0+19
Комментарии49

Сервис push-уведомлений Pushover для Android и iOS в связке с PHP

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

Вкратце, push-уведомления — это небольшие по объему важные сообщения от программы или сервиса, отображаемые операционной системой тогда, когда вы непосредственно не работаете с указанным приложением или сервисом. Преимущество таких уведомлений в отсутствии необходимости держать программу вечно в памяти, тратя на нее процессорные мощности и память.
Не буду здесь расписывать всю технологию доставки удаленного уведомления, ибо это уже сделано до меня. Выглядит примерно так: периодически демон опрашивает сервер и в случае появления сообщения, показывает его нам.
Для iOS придумали APNS, для Android-а — C2DM-GCM, я же хочу рассказать про кроссплатформенный (громко) сервис Pushover и связке его с php-сайтом.
Читать дальше →
Всего голосов 20: ↑16 и ↓4+12
Комментарии26

Анализ дружеских связей VK с помощью Python

Время на прочтение6 мин
Количество просмотров78K
Совсем недавно на Хабре появилась статья о реализации дружеских связей в ВКонтакте с помощью Wolfram Mathematica. Идея мне понравилась, и, естественно, захотелось сделать такой же граф, используя Python и d3. Вот, что из этого получилось.
Читать дальше →
Всего голосов 32: ↑29 и ↓3+26
Комментарии41

Анализ дружеских связей VK с помощью Python. Продолжение

Время на прочтение14 мин
Количество просмотров68K
В предыдущей статье мы на основе общих друзей ВКонтакте строили граф, а сегодня поговорим о том, как получить список друзей, друзей друзей и так далее. Предполагается, что вы уже прочли предыдущую статью, и я не буду описывать все заново. Под хабракатом большие картинки и много текста.
Читать дальше →
Всего голосов 33: ↑31 и ↓2+29
Комментарии21

Анализ дружеских связей VK с помощью Wolfram Mathematica

Время на прочтение6 мин
Количество просмотров44K
Не так давно, в Москве прошел семинар Wolfram Research Эра технологий Wolfram, на котором рассказывали много интересного про одну из самых мощных и определенно самую удобную систему компьютерных исследований Wolfram Mathematica. В частности, были представлены результаты исследования данных социальной сети facebook научно-исследовательской группой «Конструктивная Кибернетика». А чуть ранее, я наткнулся на новые возможности Wolfram|Alpha по всестороннему анализу странички в facebook. И после всего этого, у меня засела в голове безумная идея: «Я хочу узреть граф дружеских связей той соцсети, в которой живу (а именно, ВКонтакте)». И я все-таки нашел время на то чтобы ее реализовать. Добро пожаловать под кат.
Читать дальше →
Всего голосов 33: ↑31 и ↓2+29
Комментарии32

Как работает микроэлектронное производство и что нам стоит дом построить?

Время на прочтение8 мин
Количество просмотров179K
Многие наверняка не раз задавались вопросом, почему процессоры, видеокарты и материнские платы которые мы покупаем в магазинах — разработаны и сделаны где угодно, только не в России? Почему так получается, неужели мы только нефть качать можем?

Сколько стоит запуск производства микросхемы, и почему при наличии 22нм фабрик, бОльшая часть микросхем по всему миру до сих пор делается на «устаревшем» 180нм-500нм оборудовании?

Ответы на эти и многие другие вопросы под катом.
Читать дальше →
Всего голосов 228: ↑222 и ↓6+216
Комментарии147

Визуализация «В Контакте»: Скажи мне, кто твой друг?

Время на прочтение2 мин
Количество просмотров145K
Привет, Хабралюди!

У меня есть хобби. Я ночами (в нерабочее время) пишу библиотеку укладки графов: vivagraph.js. Хотел поделиться с вами, узнать что думаете. Визуализировал я сеть друзей своих на «В Контакте» с использованием WebGL. Но лучше один раз увидеть, чем читать, верно?



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

Как построить свою сеть?
Всего голосов 314: ↑302 и ↓12+290
Комментарии256

Управляемость сложных сетей — перевод статьи Controllability of complex networks

Время на прочтение21 мин
Количество просмотров11K
Данная статья представляет собой перевод статьи Альберта Барабаши и его соавторов, под названием «Controllability of complex networks». Оригинал которой в формате PDF можно скачать здесь.

Кстати сказать, некоторые считают, что Эйнштейна XXI века будут тоже звать Альберт. А именно Альберт Барабаши.

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

В переводе, жирным шрифтом будут выделены важные заключения и основные понятия, приведенные в статье, выделенные автором перевода. Курсивом будут выделены комментарии автора перевода и ссылки на определения и дополнительную информацию по некоторым понятиям и методам, приведенным в статье.
Читать дальше →
Всего голосов 4: ↑4 и ↓0+4
Комментарии5

3D-принтеры: еще бюджетнее, еще оригинальнее

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


3D-принтеров печатающих пластиком ABS и/или PLA все больше и больше. Хотя основных конструкций, по большому счету, всего 2-3. Поэтому создатели новых принтеров стараются реализовать в конструкции некоторую изюминку или просто сделать еще дешевле.
Читать дальше →
Всего голосов 73: ↑73 и ↓0+73
Комментарии78

Австрия

Время на прочтение5 мин
Количество просмотров4.6K
Статья в первую очередь будет интересна тому, кто в данный момент хочет уехать жить и работать за границу, или точнее — в Европу, но ему не хватает смелости и решительности. Советов и примеров по уезду уже существует много, поэтому и я на своём реальном примере хочу описать как мне удалось добиться этой цели, дабы развеять сомнения о том, что это на столько сложно, что не нужно даже браться за это. О том почему я выбрал Австрию, как добивался своей цели и доволен ли я, вы и узнаете из моего рассказа.
Читать дальше →
Всего голосов 80: ↑75 и ↓5+70
Комментарии46

Android UI. Делаем кнопки в стиле Twitter Bootstrap

Время на прочтение4 мин
Количество просмотров63K
Ниже рассказывается как создать кнопки в стиле Twitter Bootstrap для Android приложения. Данный стиль взят для примера что бы разобраться в концпеции создания собственных стилей. Пример кода выложен на github. Репозиторий будет попoлняться примерами для других элементов. Так что можно подписываться.


Android SDK предлагает несколько вариантов для создания собственных стилей.

Начнём с самого простого. Создададим кнопку на основе нескольких графических файлов отображающих отдельные состояни кнопок. (default, selected, focused, pressed и т.д.) Поддерживаются форматы .png, .jpg, или .gif.

Читать дальше →
Всего голосов 38: ↑23 и ↓15+8
Комментарии18

Парсим на Python: Pyparsing для новичков

Время на прочтение6 мин
Количество просмотров185K
Парсинг (синтаксический анализ) представляет собой процесс сопоставления последовательности слов или символов — так называемой формальной грамматике. Например, для строчки кода:

import matplotlib.pyplot  as plt

имеет место следующая грамматика: сначала идёт ключевое слово import, потом название модуля или цепочка имён модулей, разделённых точкой, потом ключевое слово as, а за ним — наше название импортируемому модулю.

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

{ 'import': [ 'matplotlib', 'pyplot' ], 'as': 'plt' }

Данное выражение представляет собой словарь Python, который имеет два ключа: 'import' и 'as'. Значением для ключа 'import' является список, в котором по порядку перечислены названия импортируемых модулей.

Для парсинга как правило используют регулярные выражения. Для этого имеется модуль Python под названием re (regular expression — регулярное выражение). Если вам не доводилось работать с регулярными выражениями, их вид может вас испугать. Например, для строки кода 'import matplotlib.pyplot as plt' оно будет иметь вид:

r'^[ \t]*import +\D+\.\D+ +as \D+'

К счастью, есть удобный и гибкий инструмент для парсинга, который называется Pyparsing. Главное его достоинство — он делает код более читаемым, а также позволяет проводить дополнительную обработку анализируемого текста.

В данной статье мы установим Pyparsing и создадим на нём наш первый парсер.

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

Создание печатных плат для мелкосерийного производства

Время на прочтение9 мин
Количество просмотров70K
На Хабре много статей по настройке и сопровождению IP телефонии и сопутствующего оборудования. Встречаются статьи и по разработке печатных плат. Есть статьи и о том, как самому сделать печатную плату при помощи ЛУТ технологии. Например, «ЛУТ на виниле или домашняя Arduino Mini». Есть описание разных систем проектирования печатных плат: Cadence, Eagle , DipTrace или описание отдельных процессов при разработке печатных плат, таких как передача информаци из Altium в AutoCAD.

Хочу представить статью о том, как происходит постановка на производство печатной платы на основе опыта фирмы и собственного опыта по другим работам. Моей задачей является модернизация существующей платы для усовершенствования существующих качеств и, возможно, открытия новых, доселе не виданных для нее горизонтов.
Читать дальше →
Всего голосов 59: ↑57 и ↓2+55
Комментарии12
1

Информация

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