Pull to refresh
14
0
Иван Тютюнджи @djika

User

Send message

Экономика бессерверных вычислений

Reading time 19 min
Views 4K

Наша исходная задача заключалась в том, чтобы попытаться ответить на ряд актуальных вопросов, в частности: когда целесообразнее использовать AWS Lambda, а когда сервисы AWS EC2. А самое главное — разобраться, какие параметры играют в данном случае наибольшую роль.

Читать перевод далее
Total votes 17: ↑17 and ↓0 +17
Comments 2
Привет, Хабр! Меня зовут Дмитрий (@pagin), и я специализируюсь на вопросах ускорения и уменьшения свёрточных сетей. Моя основная работа — распознавание автомобилей и классификация транспорта, поэтому я обучаю много небольших CNN и часто пользуюсь облачными сервисами для ML. Раньше я использовал Google Colab и был в меру доволен. Но огорчался каждые 12 часов, когда ноутбук и окружение умирали. Недавно услышал про DataSphere от Yandex. Под катом расскажу про его отличия от Google Colab, опыт запуска обучения, особенности окружения и ценовую политику. Если любишь ресёрчить в ML и хочешь удобное рабочее пространство, то го под кат.
Читать далее
Total votes 26: ↑26 and ↓0 +26
Comments 17

hh и в продакшн: как выпустить новую фичу

Reading time 11 min
Views 21K
HH и в продакшн

Однажды техдепу в HeadHunter сделали толстовки с принтом на спине «hh и в продакшн». Вроде бы и забавно, но меня всё время смущала эта надпись, т.к. в оригинале это не то, чем стоит гордиться. Это натолкнуло меня написать пост, что же на самом деле означают буквы hh.

Я хочу рассказать о том, как рождается фича в HeadHunter на примере команды API, в которой я тружусь. Какой путь ей предстоит пройти от идеи до выхода в продакшн. Затрону как технические, так и менеджерские аспекты.
Читать дальше →
Total votes 41: ↑38 and ↓3 +35
Comments 22

Переход на embedded PostgreSQL в unit-тестах

Reading time 13 min
Views 36K

В приложениях, работающих с базами данных, естественным образом возникает потребность в тестах, которые проверяют корректность результатов выполнения запросов. На помощь приходят различные встроенные (embedded) базы данных. В этой статье я расскажу о том, как мы перевели unit-тесты с HSQLDB на PostgreSQL: зачем это затеяли, с какими трудностями столкнулись и что нам это дало.

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

Как оценить качество системы A/B-тестирования

Reading time 11 min
Views 26K


Вот уже более полугода в компании используется единая система для проведения A/B-экспериментов. Одной из самых важных частей этой системы является процедура проверки качества, которая помогает нам понять, насколько мы можем доверять результатам A/B-тестов. В этой статье мы подробно опишем принцип работы процедуры проверки качества в расчете на тех читателей, которые захотят проверить свою систему A/B-тестирования. Поэтому в статье много технических деталей.
Читать дальше →
Total votes 33: ↑32 and ↓1 +31
Comments 6

Маленькие дизайн-алгоритмы против большого тлена

Reading time 5 min
Views 5.2K


Никогда не поздно пить “Боржоми”. Даже если кажется, что RGB уже никогда не станет ярче, пользователи не начнут понимать тебя с полупикселя, а стену “ВКонтакте” никто возвращать не собирается. Выход есть — надо бежать!
Total votes 32: ↑16 and ↓16 0
Comments 25

Нянчим проект на React-redux с пелёнок

Reading time 20 min
Views 66K
intro
В начале этого года мы в HeadHunter начали проект, нацеленный на автоматизацию различных HR-процессов у компаний-клиентов. Архитектурой этого проекта на фронте выбрали React-Redux стек.

За 9 месяцев он вырос из небольшого приложения для тестирования сотрудников в многомодульный проект, который сегодня называется “Оценка талантов”. По мере его роста мы сталкивались с вопросами:

  • хранения стейта, его нормализации;
  • построения масштабируемой архитектуры проекта, удобной иерархии — как в структуре, так и в бизнес-логике.

Это проявлялось в изменении подхода к построению компонентов, архитектуры редьюсеров.

Давайте поговорим о том, как мы развивали проект и какие решения принимали. Некоторые из них могут оказаться “холиварными”, а другие, напротив, “классикой” в построении большого проекта на redux. Надеюсь, что описанные ниже практики помогут вам при построении react-redux приложений, а живые примеры помогут разобраться, как работает тот или иной подход.
Читать дальше →
Total votes 32: ↑29 and ↓3 +26
Comments 32

Как мы искали компромисс между точностью и полнотой в конкретной задаче ML

Reading time 5 min
Views 7.5K


Я расскажу о практическом примере того, как мы формулировали требования к задаче машинного обучения и выбирали точку на кривой точность/полнота. Разрабатывая систему автоматической модерации контента, мы столкнулись с проблемой выбора компромисса между точностью и полнотой, и решили ее с помощью несложного, но крайне полезного эксперимента по сбору асессорских оценок и вычисления их согласованности.
Читать дальше →
Total votes 25: ↑21 and ↓4 +17
Comments 10

Школа программистов HeadHunter — открываем седьмой набор

Reading time 4 min
Views 21K
Технический департамент компании HeadHunter

На дворе сентябрь, а это значит, что мы в очередной раз объявляем набор в Школу программистов HeadHunter. В седьмой раз Школа открывает свои двери — в этом году мы снова будем готовить full-stack разработчиков.

Обучение будет проходить в московском офисе компании HeadHunter по вечерам два раза в неделю. Первый этап отбора можно пройти прямо на сайте школы, заполнив анкету и решив предложенные задачи. Справившихся с ними ждут задания посложнее, а затем и очное интервью.

Четверть нашего техдепа — это выпускники Школы. Мы любим разработчиков, потому что умеем их готовить!
Что же это за Школа такая?
Total votes 36: ↑33 and ↓3 +30
Comments 28

Не важно, большие у тебя или маленькие. Главное, чтоб не маленькие. Фаршируем Material Design

Reading time 4 min
Views 38K
image

Как в условиях дизайн-тирании Гугла и лояльных ему разработчиков обходить правила во благо пользователей.

В HeadHunter дизайн, прежде чем уйти в инпрогресс, проходит множество инстанций. Для начала необходимо доказать команде разработки, что решения взяты не с потолка, а ты не «художник, я так вижу». И иногда пользоваться защитой Рексоны 24/7 приходится в самом неожиданном месте.
Читать дальше →
Total votes 91: ↑87 and ↓4 +83
Comments 59

Приложение на API hh.ru. Рекомендуем вакансии по вашему резюме

Reading time 6 min
Views 25K

Недавно я опубликовал пост, рассказывающий, как можно просто начать использовать наше API. Мне самому захотелось поиграться с данными, которые можно из него получить, и я решил написать приложение, рекомендующее актуальные вакансии на основе информации из резюме. В конце статьи будет ссылка на результат, где каждый сможет получить список рекомендаций по своему резюме.
Читать дальше →
Total votes 18: ↑16 and ↓2 +14
Comments 14

Как мы забили на асинхронность при походах на бэкенды

Reading time 6 min
Views 26K
threads

Под напором появления новых асинхронных неблокирующихся фреймворков может показаться, что блокирующиеся вызовы — это пережиток прошлого, и все новые сервисы нужно писать на полностью асинхронной архитектуре. В этом посте я расскажу, как мы решили отказаться от неблокирующих асинхронных вызовов бэкендов в пользу обычных блокирующих.
Читать дальше →
Total votes 40: ↑30 and ↓10 +20
Comments 46

ScribeJava — даже ваша бабушка сможет работать с OAuth

Reading time 10 min
Views 29K
image

Именно этой фразой нас приветствует библиотека для работы с OAuth — ScribeJava (https://github.com/scribejava/scribejava). Если быть точнее, то фраза звучит так: “Who said OAuth/OAuth2 was difficult? Configuring ScribeJava is so easy your grandma can do it! check it out:”.

И это действительно похоже на правду:
OAuth20Service service = new ServiceBuilder().apiKey(clientId).apiSecret(clientSecret)
    .callback("http://your.site.com/callback").grantType("authorization_code").build(HHApi.instance());
String authorizationUrl = service.getAuthorizationUrl();
OAuth2AccessToken accessToken = service.getAccessToken(code);

Готово! Этих трех строчек достаточно, чтобы начать делать OAuth запросы. А сам OAuth запрос можно будет сделать так:
OAuthRequest request = new OAuthRequest(Verb.GET, "https://api.hh.ru/me", service);
service.signRequest(accessToken, request);
String response = request.send().getBody();

Данные о пользователе у нас в руках (в переменной response). И ни капли понимания, как в деталях работает OAuth. Хотим асинхронные http-запросы? Нам хватит тех же трех строчек. Ниже рассмотрим это на примере.
Читать дальше →
Total votes 31: ↑29 and ↓2 +27
Comments 2

Онлайн-конференция на Ярмарке вакансий для ИТшников

Reading time 5 min
Views 10K


Сегодня, 25-го февраля, HeadHunter устраивает «Ярмарку вакансий онлайн» специально для IT-специалистов. Программа получилась обширная: кроме вакансий с онлайн-собеседованиями, мы подготовили вебинары, которые покрывают разные сферы из ИТшной и софтверной области. Сегодня нон-стоп один за другим пройдут 9 вебинаров. Специально для “Хабра” я попросил авторов вебинаров рассказать о своих темах, подробности под катом.
Читать дальше →
Total votes 14: ↑12 and ↓2 +10
Comments 2

Как покрыть мониторингом все слои инфраструктуры

Reading time 9 min
Views 31K
image

Как-то я посчитал, что 1 минута простоя hh.ru в будни днем затрагивает около 30 000 пользователей. Мы постоянно решаем задачу снижения количества инцидентов и их длительности. Снизить количество проблем мы можем правильной инфраструктурой, архитектурой приложения — это отдельная тема, ее мы пока не будем брать во внимание. Поговорим лучше о том, как быстро понять, что происходит в нашей инфраструктуре. Тут как раз нам и помогает мониторинг.

В этой статье на примере hh.ru я расскажу и покажу, как покрыть мониторингом все слои инфраструктуры:
  • client-side метрики
  • метрики с фронтендов (логи nginx)
  • сеть (что можно добыть из TCP)
  • приложение (логи)
  • метрики базы данных (postgresql в нашем случае)
  • операционная система (cpu usage тоже может пригодиться)

Читать дальше →
Total votes 45: ↑41 and ↓4 +37
Comments 15

Как мы победили сумрак между тестированием и эксплуатацией

Reading time 6 min
Views 7.5K
Некоторое время назад мы в HeadHunter обнаружили “сумеречную зону” при передаче новой версии сайта из тестирования в эксплуатацию. Недостаточное внимание к разнице между тестовой и боевой инфраструктурой периодически приводило к падению сайта.

Выйти из сумрака

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

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

Эта статья продолжает мой доклад на SQA Days-18.
Читать дальше →
Total votes 19: ↑17 and ↓2 +15
Comments 3

Как сделать тестовое окружение максимально похожим на боевое

Reading time 7 min
Views 22K
image

Одной из возможностей повышения качества выпускаемого продукта является соответствие окружений на боевых серверах и в среде тестирования. Мы постарались минимизировать количество ошибок, связанных с различием конфигураций, путем перехода от нашего старого тестового окружения, где настройки сервисов сильно отличались от боевых, к новому окружению, где конфигурация практически соответствует боевой. Сделали мы это с помощью docker и ansible, получили много профита, но и не избежали различных проблем. Об этом переходе и интересных подробностях я постараюсь рассказать в данной статье.
Читать дальше →
Total votes 20: ↑18 and ↓2 +16
Comments 2

Две задачи HeadHunter на Data Science Week: попробуйте решить сами

Reading time 5 min
Views 33K
В конце августа после серии бесплатных лекций на Data Science Week 2015, организаторы решили провести двухдневный дататон (datathon) – соревнование, где команды программистов и аналитиков решали бизнес-задачи из области Data Science.

На дататоне было три задачи, две из которых подготовила команда HeadHunter и одну компания OZON. Это было, сразу скажу, не самым простым заданием, потому как большая часть наших данных конфиденциальна. Никто не захочет, чтобы программисты и аналитики упражнялись на реальных резюме или закрытых данных по вакансиям. Но кое-что мы все же собрали. Для проверки результатов организаторы придумали метрики и написали чекеры. А победили на дататоне эти ребята:



Прямо здесь и сейчас я предлагаю вам испытать свои силы и решить три задачи, с которыми ребята бились на дататоне. Чекеры для проверки и все файлы прилагаю.
Читать дальше →
Total votes 35: ↑32 and ↓3 +29
Comments 3

Школа программистов HeadHunter — открываем набор 2015/16

Reading time 5 min
Views 22K
Школа программистов

Сентябрь — начало учебного года не только в школах и университетах. HeadHunter в очередной (уже шестой!) раз объявляет набор в Школу программистов. В этом году, как и в предыдущем, мы будем готовить full-stack разработчиков, готовых ко всем вызовам современной web-разработки.

Обучение будет проходить два раза в неделю в вечернее время в московском офисе HeadHunter рядом с метро Алексеевская. Для поступления в школу необходимо заполнить анкету на сайте и пройти небольшое тестирование. Прошедшим этот этап кандидатам мы вышлем дополнительные задания, по результатам которых пригласим вас на собеседование.
Что мне даст школа программистов HeadHunter?
Total votes 39: ↑22 and ↓17 +5
Comments 18

Введение в анализ социальных сетей на примере VK API

Reading time 5 min
Views 50K

Данные социальных сетей — неисчерпаемый источник исследовательских и бизнес-возможностей. На примере Вконтакте API и языка Python мы сегодня разберем пару практических примеров, которы помогут узнать:
  • азы работы с библиотекой Python — networkx;
  • как обращаться к Вконтакте API из языка Python посредством стандартных библиотек, в частности, получать список друзей и членов групп;
  • некоторые возможности программы Gephi.

Disclaimer: данная статья не претендует на какую-либо новизну, а лишь преследует цель помочь интересующимся собраться с силами и начать претворять свои идеи в жизнь.

(волосяной шар для привлечения внимания)
Читать дальше →
Total votes 29: ↑26 and ↓3 +23
Comments 9

Information

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