Pull to refresh
4
0
Игорь Скирневский @IgorSkir

User

Send message

Процесс Code Review с Atlassian Stash

Reading time4 min
Views32K
Всем привет! Вот и наша компания решила завести блог на Хабре (в конце концов, не вечно же читать чужие статьи). В профиле компании вы можете посмотреть, чем мы занимаемся. В ближайшее время мы предложим вашему вниманию цикл статей по широкому спектру тем: от сервисов дистрибуции и поддержки тестовых сборок iOS приложений до программного управления IIS. А первая наша публикация посвящена Atlassian Stash.



На текущий день на хабре практически отсутствует какая бы то ни было информация об Atlassian Stash (всего один анонс и одна статья на тему установки). Хотя инструмент, на самом деле, прекрасный, и определенно стоящий рассмотрения в случае использования всего стэка Atlassian. Я хочу рассказать что это такое и как эту штуку можно добавить в процесс разработки.
Читать дальше →
Total votes 15: ↑12 and ↓3+9
Comments33

Сколько зарабатывает Хабр + инструкция как узнать сколько зарабатывают другие компании

Reading time3 min
Views75K
Предыстория: после того, как мы с командой в прошлом году закрыли компанию и еще не начали работу над новой, мы решили обновить наш старый, но довольно большой сайт с кулинарными рецептами. Чтобы понять насколько серьезно стоит углубляться в работу над ним, я проанализировал данные по выручке сайтов, которые тоже зарабатывают на рекламе.

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

image
Читать дальше →
Total votes 103: ↑100 and ↓3+97
Comments66

Pediatric Bone Age Challenge. Deep Learning и много, много костей

Reading time7 min
Views14K

Cоревнование по определению костного возраста. Заметки участника


6-го октября на радары Володи Игловикова попал очень интересный конкурс, организованный американскими рентгенологами из The Radiological Society of North America (RSNA) и Radiology Informatics Committee (RIC), и он бросил клич в сообществе ODS.ai



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

Задача


Костный возраст (bone age) — это условный возраст, которому соответствует уровень развития костей детей и подростков. Формирование скелета происходит в несколько стадий. Это используется в педиатрии для сравнения костного возраста с хронологическим, что позволяет вовремя заметить нарушения в работе эндокринной системы и системы обмена веществ.

Для определения костного возраста в основном используются две методики — GP Грейлиха и Пайла (Greulich and Pyle) и TW2 Таннера, Уайтхауза и Хили (Tanner, Whitehouse, Healy), разработанные во второй половине XX века. Обе методики основаны на рентгенограмме кисти и лучезапястного сустава. Благодаря большому количеству участков растущей ткани в костях и ядер окостенения,
Читать дальше →
Total votes 57: ↑57 and ↓0+57
Comments2

Подсчет себестоимости часа разработки программного обеспечения

Reading time4 min
Views148K
Сегодня я расскажу о больной теме как для покупателей программного обеспечения, так и для провайдера этой услуги – себестоимости разработки. Понятно, что сейчас не самое лучшее время для того, чтобы разбрасываться бюджетами. Только это не значит, что производители должны работать себе в убыток. Многие говорят о жадности предпринимателей, но я вам вот что скажу: нет ничего постыдного в том, чтобы делать честный бизнес и адекватно считать свои косты.

image
Читать дальше →
Total votes 47: ↑42 and ↓5+37
Comments79

Сегментация спутниковых снимков на примере распознавания деревьев

Reading time6 min
Views18K
image

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

Недавно у меня появилась возможность применить теоретические навыки и попробовать себя в области машинного обучения на реальном проекте сегментации изображений. Цель проекта — распознавание лесных насаждений, а именно крон деревьев на спутниковых снимках высокого разрешения. Под катом я поделюсь полученным опытом и результатами.
Читать дальше →
Total votes 27: ↑25 and ↓2+23
Comments10

Обратная сторона Agile

Reading time5 min
Views80K
imageХочу поделиться историей, ну и заодно услышать мнения других участников хабрасообщества. Это небольшая история о том, как агрессивное внедрение методологии разработки Agile (Scrum) в отдельно взятой российской IT компании послужило началом исхода из компании лучших разработчиков. Обычно в статьях про Agile рассказывают, какая это классная и полезная методология, и вообще — это лучшее, что было придумано в этом направлении. Возможно, эта статья поможет взглянуть на Agile с другой стороны, ведь у любой монеты, как оказалось, есть две стороны.

В общем, в 2010-м году была основана одна российская компания (что-за компания конкретизировать смысла нет), работала она в сфере IT-разработки (ПО для банковских продуктов).
Читать дальше →
Total votes 146: ↑132 and ↓14+118
Comments580

История первого места на ML Boot Camp VI

Reading time4 min
Views8.5K
Mail.ru уже не первый год проводит чемпионаты по машинному обучению, каждый раз задача по-своему интересна и по-своему сложна. Я участвую в соревнованиях четвертый раз, мне очень нравится платформа и организация, и именно с буткемпов начался мой путь в соревновательный machine learning, но первое место удалось занять впервые. В статье я расскажу как показать стабильный результат, не переобучившись ни на публичный лидерборд, ни на отложенные выборки, если тестовая часть существенно отлична от тренировочной части данных.

Задача


Полный текст задачи доступен по → ссылке. Вкратце: есть 10 гб данных, где каждая строка содержит три json'а вида «ключ: счетчик», некая категория, некая временная метка и идентификатор пользователя. Одному пользователю может соответствовать множество записей. Требуется определить к какому классу относится пользователь, первому или второму. Метрикой качества для модели является ROC-AUC, о ней отлично написано в блоге Александра Дьяконова[1].

Пример записи в файле

00000d2994b6df9239901389031acaac	5 {"809001":2,"848545":2,"565828":1,"490363":1} 
{"85789":1,"238490":1,"32285":1,"103987":1,"16507":2,"6477":1,"92797":2}	{}	39
Читать дальше →
Total votes 29: ↑28 and ↓1+27
Comments13

Колыбель для AI

Reading time8 min
Views17K


Есть одна тема в современном Computer Vision, которая часто остаётся за кадром. В ней нет сложной математики и глубокой логики. Но то что её никак не освещают — вгоняет в ступор многих новичков. А тема не проста: имеет множество граблей, про которые не узнаешь, пока не наступишь.

Тема — называется так: подготовка базы изображений для дальнейшего обучения.
В статье:

  1. Как можно отличить хорошую базу
  2. Примеры хороших баз
  3. Примеры программ, которыми удобно размечать базы

Читать дальше →
Total votes 39: ↑38 and ↓1+37
Comments7

Из физиков в Data Science (Из двигателей науки в офисный планктон)

Reading time14 min
Views67K

Вступление


Не так давно, а именно двенадцать месяцев назад, начался мой последний год аспирантуры на физическом факультете ВУЗа под названием University of California, Davis. Вставал законный вопрос — что делать дальше? За преподаванием, движением науки и прочими развлечениями год пройдёт очень быстро. Решать надо было заранее. Основной план был найти позицию постдока, причем где-нибудь в Токио, Рио де Жанейро или Сингапуре, так что вроде как и путешествуешь, а вроде как и работаешь. И по идее под это дело у меня всё было подготовлено: и статьи, и знакомые, и знаний в определённых областях физики конденсированных сред — на троих. Я начал активно гуглить сайты разных вузов, в интересующих меня географически частях мира, написал научно ориентированный CV, подписался на рассылки где публикуются вакансии постдоков, намекнул всем знакомым, что если что — то мне надо сказать в первую очередь. Я даже по скайпу с какими то профессорами общался на тему работы в их научных группах. В общем всё куда-то катилось.

Примерно в то же время к нам в городок заехал один мой знакомый, который в свое время тоже выпустился с нашего доблестного факультета, но на пару лет раньше. Последние пару лет он мыкался и тыкался в разные конторы и вот наконец нашёл работу на позицию под названием Data Scientist. Посидели в баре, потрепались — то, чем он занимается, особенно не зацепило (когда каждый день пытаешься разобраться что и куда квантовать, чтобы описать свойства наноматериалов, рассказы о том, как в некой базе данных что-то куда-то аггрегируется и почему это важно для каких-то продаж офисных принадлежностей, вообще не цепляет), но зацепила зарплата. Для справки, в США грязными, то есть до вычета налогов:

  1. Аспирант — $27k
  2. Постдок — $45k
  3. Профессор — $117k

Читать дальше →
Total votes 23: ↑21 and ↓2+19
Comments16

ТОП-100 Аджайл книг всех времен (на конец 2013 года)

Reading time9 min
Views66K
В преддверии крупнейшей восточноевропейской конференции по гибким методологиям AgileDays’14, мы решили составить рейтинг лучших книг которые влияют на нашу индустрию.

Методику составления рейтинга мы позаимствовали у Jurgen Appelo. Алгоритм подсчёта базируется на пяти различных критериях: количество отзывов Amazon, число отзывов GoodReads, средняя оценка Amazon, средняя оценка GoodReads, а количество дней, прошедших с первой публикации. Это означает, что этот список показывает вам смесь из самых популярных, лучших по оценкам, и (относительно) новейший книги в этой категории.

Данный список книг мы попросили прокомментировать двух экспертов:

Борис Вольфсон. Технический директор компании HeadHunter.

Андрей Ребров. Agile Engineering Coach компании ScrumTrek.

Полетели. Топ-100 книг по Аджайл
Total votes 31: ↑17 and ↓14+3
Comments9

«Scrum. Революционный метод управления проектами». Книга за 15 минут

Reading time16 min
Views409K
image

Недавно мы в MakeRight.ru с удовольствием прочитали книгу «Scrum. Революционный метод управления проектами» Джеффа Сазерленда. О чем она? В двух словах — о том, как организовать слаженную командную работу.
Начав внедрять элементы скрама на практике, мы пришли к выводу, что идеи книги действительно работают.

Революционный ли это метод, как указано в названии? Не знаем. Но, возможно, те, кто не читал книгу и не знаком с методикой, почерпнут для себя ряд полезных идей из нашего саммари (краткого изложения). Итак…
Читать дальше →
Total votes 11: ↑11 and ↓0+11
Comments30

Интересные алгоритмы кластеризации, часть первая: Affinity propagation

Reading time11 min
Views50K
Часть первая — Affinity Propagation
Часть вторая — DBSCAN
Часть третья — кластеризация временных рядов
Часть четвёртая — Self-Organizing Maps (SOM)
Часть пятая — Growing Neural Gas (GNG)

Если вы спросите начинающего аналитика данных, какие он знает методы классификации, вам наверняка перечислят довольно приличный список: статистика, деревья, SVM, нейронные сети… Но если спросить про методы кластеризации, в ответ вы скорее всего получите уверенное «k-means же!» Именно этот золотой молоток рассматривают на всех курсах машинного обучения. Часто дело даже не доходит до его модификаций (k-medians) или связно-графовых методов.

Не то чтобы k-means так уж плох, но его результат почти всегда дёшев и сердит. Есть более совершенные способы кластеризации, но не все знают, какой когда следует применять, и очень немногие понимают, как они работают. Я бы хотел приоткрыть завесу тайны над некоторыми алгоритмами. Начнём с Affinity propagation.

image

Читать дальше →
Total votes 23: ↑23 and ↓0+23
Comments11

Kaggle и Titanic — еще одно решение задачи с помощью Python

Reading time23 min
Views78K
Хочу поделиться опытом работы с задачей известного конкурса по машинному обучению от Kaggle. Этот конкурс позиционируется как конкурс для начинающих, а у меня как раз не было почти никакого практического опыта в этой области. Я немного знал теорию, но с реальными данными дела почти не имел и с питоном плотно не работал. В итоге, потратив пару предновогодних вечеров, набрал 0.80383 (первая четверть рейтинга).



Читать дальше →
Total votes 31: ↑30 and ↓1+29
Comments6

Отслеживаем Millenium Falcon с помощью TensorFlow

Reading time7 min
Views7.6K


На момент написания этой статьи большинство крупных технологических компаний (вроде IBM, Google, Microsoft и Amazon) предлагают простые в использовании API визуального распознавания. Аналогичные инструменты предлагают и более мелкие компании, например, Clarifai. Но никто из них не предлагает средств по обнаружению объектов (object detection).
Total votes 26: ↑23 and ↓3+20
Comments6

Qt + QML на простом примере

Reading time13 min
Views106K
Qt является удобным и гибким средством для создания кросс-платформенного программного обеспечения. Входящий в его состав QML предоставляет полную свободу действий при создании пользовательского интерфейса.
Об удобстве использования связки Qt и QML уже говорилось не раз, поэтому не буду дальше распространяться о плюсах, минусах, а приведу, шаг за шагом, пример простого Qt приложения.
Читать дальше →
Total votes 127: ↑120 and ↓7+113
Comments14

Биороботы нашего времени — избавляемся от рутины вместе с Telegram. Реальный кейс без фантазий

Reading time5 min
Views28K
В интернетах не прекращается хайп вокруг чат-ботов (в частности, Telegram) благодаря шуму в СМИ, неоспоримых достоинствах платформы, политике продвижения, средствам разработки и т.д.

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

Но давайте положим руку на сердце: когда последний раз вы что-то заказывали в интернет-магазине через чат-бот?

Кто все эти люди, которые заказывают разработку ботов для своих магазинов?


Типичный чат-бот магазина Vasya Limited:
>> автоматизирует поток водопад заявок из 5 человек в день,
>> сливает 4 из 5 заявок, кровью добытых через Яндекс-Директ,
>> если повезет, человек найдет номер телефона и позвонит,
>> но, вероятней всего, «Эээ, куда жать?», а потом закроет и уйдет гуглить дальше.

Чем занят владелец, когда продажи «автоматизированы»:
>> вносит заказы в excel-таблицу
>> заполняет почтовые бланки на посылках
>> стоит в очереди на почте с кучей посылок (каждый день!)
>> вносит трек номера в excel-таблицу, затем рассылает клиентам

Может, хватит на ровном месте встраивать «технологии» туда, где действительно нужен человек, в то время как люди загружены рутиной для роботов?
Читать дальше →
Total votes 80: ↑73 and ↓7+66
Comments29

Стандарты и шаблоны для ТЗ на разработку ПО

Reading time7 min
Views750K

Введение


Недавно ко мне обратились, чтобы я посоветовал стандарты для написания технического задания (ТЗ) на разработку автоматизированных систем (АС) и программного обеспечения (ПО). Вот думаю, сейчас зайду в Яндекс, найду подходящую статейку и отправлю её. Но не тут-то было! Одной статьи, где перечисляются стандарты для ТЗ, включая шаблоны и примеры готовых документов, я не нашел. Придется сделать такую статейку самому…

И так, основные стандарты, методологии и своды знаний, где упоминается ТЗ или SRS (Software (or System) Requirements Specification):

• ГОСТ 34
• ГОСТ 19
• IEEE STD 830-1998
• ISO/IEC/ IEEE 29148-2011
• RUP
• SWEBOK, BABOK и пр.
Читать дальше →
Total votes 36: ↑34 and ↓2+32
Comments22

Удачная модель ветвления для Git

Reading time10 min
Views978K
Перевод статьи Vincent Driessen: A successful Git branching model

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



В качестве инструмента управления версиями всего исходного кода она использует Git.

Читать дальше →
Total votes 180: ↑171 and ↓9+162
Comments105

Качественное уменьшение изображений за константное время

Reading time8 min
Views28K

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


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



Уменьшение изображения 4928×3280 до 256×170 ближайшим соседом.


Рекомендую смотреть примеры из статьи в браузере в масштабе 100% и без ретины. То есть по максимуму исключить ресайз при просмотре.

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



Точки, которые попадут в конечное изображение размером 20×13.
Читать дальше →
Total votes 80: ↑78 and ↓2+76
Comments46

Интерполяция данных: соединяем точки так, чтобы было красиво

Reading time7 min
Views158K
Как построить график по n точкам? Самое простое — отметить их маркерами на координатной сетке. Однако для наглядности их хочется соединить, чтобы получить легко читаемую линию. Соединять точки проще всего отрезками прямых. Но график-ломаная читается довольно тяжело: взгляд цепляется за углы, а не скользит вдоль линии. Да и выглядят изломы не очень красиво. Получается, что кроме ломаных нужно уметь строить и кривые. Однако тут нужно быть осторожным, чтобы не получилось вот такого:

Читать дальше →
Total votes 65: ↑65 and ↓0+65
Comments44
1

Information

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