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

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

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

Time Series, метрики и статистика: знакомство с InfluxDB

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

Введение


Любому системному администратору постоянно приходится иметь дело с данными, представленными в форме временных рядов (time series): статистика скачивания файлов, статистика запросов к серверам, данные об использовании системных и аппаратных ресурсов виртуальными машинами…

Чтобы все это хранить и обрабатывать, нужен адекватный и производительный инструмент.
Читать дальше →
Всего голосов 31: ↑28 и ↓3+25
Комментарии26

52 системы управления проектами для командной работы в разных сферах

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

Привет, Хабр! Вам приходила мысль сделать свою систему управления проектами и задачами? Нам да! И мы делаем YouGile

Знаете, в чем самая большая сложность? Выбрать и сфокусироваться на одном востребованном направлении продукта. Вообще такая задача есть везде, но тут она особенно масштабная. 

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

У нас есть внутренний документ, в котором собран обзор 52 систем управления проектами, и он постоянно обновляется и используется в трудные моменты выбора приоритетов.

Текст невероятно длинный (проскроллите до конца?) Внизу есть таблица с кратким содержанием.

И если у вас есть свой взгляд на какую-либо систему – прошу дополнять, пишите в комментариях. 

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

Книга «Непрерывное развитие API. Правильные решения в изменчивом технологическом ландшафте»

Время на прочтение19 мин
Количество просмотров9.2K
image Для реализации API необходимо провести большую работу. Чрезмерное планирование может стать пустой тратой сил, а его недостаток приводит к катастрофическим последствиям. В этой книге вы получите решения, которые позволят вам распределить необходимые ресурсы и достичь требуемого уровня эффективности за оптимальное время. Как соблюсти баланс гибкости и производительности, сохранив надёжность и простоту настройки? Четыре эксперта из Академии API объясняют разработчикам ПО, руководителям продуктов и проектов, как максимально увеличить ценность их API, управляя интерфейсами как продуктами с непрерывным жизненным циклом.

Материал книги основан на наших (Мехди Меджуи, Эрик Уайлд, Ронни Митра, Майк Амундсен) коллективных знаниях, полученных за много лет создания, разработки и улучшения API — как своих, так и чужих. В ней изложен весь наш опыт. Мы определили два ключевых фактора для эффективной разработки API: необходимость продуктоориентированного подхода и формирование правильной команды. Мы также определили три важных фактора для управления этой работой: руководство, развитие продукта и разработка системы API.

Эти пять элементов формируют фундамент, на котором можно построить успешную программу по управлению API. Мы знакомим читателя со всеми этими темами и предоставляем руководство по тому, как вписать их в контекст вашей организации.
Читать дальше →
Всего голосов 11: ↑9 и ↓2+7
Комментарии3

О полезности contextvars

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

В Python есть множество возможностей и языковых конструкций. Какие-то мы используем каждый день, а о некоторых даже опытные программисты узнают с удивлением после нескольких лет работы с языком (привет, Ellipsis!). Совсем недавно вышел Python 3.9, но в этой статье я расскажу о функциональности, представленной еще в версии 3.7. На мой взгляд, она совершенно незаслуженно обделена пристальным вниманием. Речь, конечно же, о contextvars.
Читать дальше →
Всего голосов 46: ↑42 и ↓4+38
Комментарии9

Декартово дерево: Часть 1. Описание, операции, применения

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

Оглавление (на данный момент)


Часть 1. Описание, операции, применения.
Часть 2. Ценная информация в дереве и множественные операции с ней.
Часть 3. Декартово дерево по неявному ключу.
To be continued...

Декартово дерево (cartesian tree, treap) — красивая и легко реализующаяся структура данных, которая с минимальными усилиями позволит вам производить многие скоростные операции над массивами ваших данных. Что характерно, на Хабрахабре единственное его упоминание я нашел в обзорном посте многоуважаемого winger, но тогда продолжение тому циклу так и не последовало. Обидно, кстати.

Я постараюсь покрыть все, что мне известно по теме — несмотря на то, что известно мне сравнительно не так уж много, материала вполне хватит поста на два, а то и на три. Все алгоритмы иллюстрируются исходниками на C# (а так как я любитель функционального программирования, то где-нибудь в послесловии речь зайдет и о F# — но это читать не обязательно :). Итак, приступим.

Введение


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

Следующий пункт нашей обязательной программы — куча (heap). Думаю, также многим известная структура данных, однако краткий обзор я все же приведу.
Представьте себе двоичное дерево с какими-то данными (ключами) в вершинах. И для каждой вершины мы в обязательном порядке требуем следующее: ее ключ строго больше, чем ключи ее непосредственных сыновей. Вот небольшой пример корректной кучи:


На заметку сразу скажу, что совершенно не обязательно думать про кучу исключительно как структуру, у которой родитель больше, чем его потомки. Никто не запрещает взять противоположный вариант и считать, что родитель меньше потомков — главное, выберите что-то одно для всего дерева. Для нужд этой статьи гораздо удобнее будет использовать вариант со знаком «больше».

Сейчас за кадром остается вопрос, каким образом в кучу можно добавлять и удалять из нее элементы. Во-первых, эти алгоритмы требуют отдельного места на осмотр, а во-вторых, нам они все равно не понадобятся.
А теперь собственно про декартово дерево
Всего голосов 166: ↑161 и ↓5+156
Комментарии30

Практическое руководство по разработке бэкенд-сервиса на Python

Время на прочтение57 мин
Количество просмотров173K
Привет, меня зовут Александр Васин, я бэкенд-разработчик в Едадиле. Идея этого материала началась с того, что я хотел разобрать вступительное задание (Я.Диск) в Школу бэкенд-разработки Яндекса. Я начал описывать все тонкости выбора тех или иных технологий, методику тестирования… Получался совсем не разбор, а очень подробный гайд по тому, как писать бэкенды на Python. От первоначальной идеи остались только требования к сервису, на примере которых удобно разбирать инструменты и технологии. В итоге я очнулся на сотне тысяч символов. Ровно столько потребовалось, чтобы рассмотреть всё в мельчайших подробностях. Итак, программа на следующие 100 килобайт: как строить бэкенд сервиса, начиная от выбора инструментов и заканчивая деплоем.



TL;DR: Вот репка на GitHub с приложением, а кто любит (настоящие) лонгриды — прошу под кат.
Читать дальше →
Всего голосов 70: ↑68 и ↓2+66
Комментарии48

Паттерны проектирования в автоматизации тестирования

Время на прочтение22 мин
Количество просмотров162K
«Нельзя просто так взять и написать классный тест. Один тест написать можно, но сделать, так чтобы по мере того, как количество этих классных тестов росло, как количество людей, которые пишут эти классные тесты, и вы не теряли ни в скорости, ни во времени...»

Эта мысль красной нитью пойдет сквозь материал под катом, и она, пожалуй, требует пояснения. Статья основана на докладе Николая Алименкова, к которому он подошёл не просто прогретым, а горящим после дискуссии с Алексеем Виноградовым о подходах к написанию тестов: методом прямого кода или при помощи паттернов. Нужны ли какие-то еще паттерны, кроме PageElement, Steps, PageObject?! С чего кто-то решил, что паттерны усложняют код, заставляют нас тратить время на создание ненужных (?) boilerplate-простыней? SOLID вам не угодил? А ведь все они создавались с учётом всего накопленного опыта сообщества разработчиков и они знали, что делают.

Николай xpinjection Алименков – известный Java-разработчик, Java техлид и delivery-менеджер, основатель XP Injection. В настоящее время является независимым разработчиком и консультантом, Agile/XP коучем, спикером и организатором различных конференций

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



В основу этого материала легло выступление Николая Алименкова на конференции Heisenbug 2017 Piter под названием «Паттерны проектирования в автоматизации тестирования». Слайды здесь.
Всего голосов 30: ↑28 и ↓2+26
Комментарии4

Реализация функциональности многоуровневого undo/redo на примере прототипа электронной таблицы

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

Введение


Кнопки «Undo» и «Redo», позволяющие отменить и вернуть обратно любые пользовательские действия, а также посмотреть в списке перечень всех выполненных действий, являются стандартом де-факто для таких приложений, как текстовые процессоры и среды разработки, редакторы графики и САПР, системы редактирования и монтажа звука и видео. Они настолько привычны для пользователя, что последний воспринимает их наличие как данность, всего лишь одну функциональную возможность наряду с десятками других. Но с точки зрения разработчика требование к наличию undo является одним из факторов, влияющих на всю архитектуру проекта, определяемую на самых ранних стадиях проекта разработки.

Функции undo в приложениях LibreOffice и GIMP

В открытых источниках существует довольно мало информации о том, как практически реализовывать функциональность undo/redo. Классическая книга Э. Гаммы и др. «Приёмы объектно-ориентированного программирования. Паттерны проектирования» коротко упоминает о пригодности для этой цели паттерна «команда», в интернете на эту тему много общей информации, но нам не удалось найти достаточно полного, проработанного примера реализации. В нашей статье мы попытаемся восполнить этот пробел и, основываясь на опыте автора, продемонстрировать подробный пример архитектуры приложения, поддерживающей undo/redo, который может быть взят за основу других проектов.
Читать дальше →
Всего голосов 13: ↑13 и ↓0+13
Комментарии3

Паттерн проектирования «Команда» / «Command»

Время на прочтение4 мин
Количество просмотров80K
Почитать описание других паттернов.
A

Проблема


Необходимо иметь эффективное представление запросов к некоторой системе, не обладая при этом знаниями ни об их природе ни о способах их обработки.

Описание


Существует по крайней мере три мотивации к использованию шаблона “Команда”:
  • инкапсулирование запроса в виде объекта для последующего протоколирования/логирования и т.п.
  • наделение сущности “вызов метода объекта” свойствами самостоятельного объекта;
  • объектно-ориентированный обратный вызов (callback);

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

Telegram-bot + Google Analytics

Время на прочтение3 мин
Количество просмотров18K
Приветствую хабравчане. Хочу рассказать о том, как мы прикручивали Google Analytics к телеграмм-боту, с какими столкнулись проблемами, и что в итоге пока не получилось настроить.

По старинке Google Analytics устанавливается на сайт с доменом или в приложение с SDK. Погуглив тему, стало понятно, что примеров нет, поэтому решили сделать сами. В нашем случае не было сайта или мобильного приложения, но было желание отслеживать события в Телеграм боте. И частично это получилось сделать.

Проблема №1


Боты физически находятся по адресу t.me/benice_tools_bot. Это похоже на обычный сайт, но без прямого доступа к корневым файлам, для установки кода счетчика, и настройки событий.
Фронтенд в этом случает является сам Телеграм, к которому у нас нет доступа.

Наш бот работает с API Binance и API Телеграма, и соответственно есть бекэнд, через который стало возможно маневрировать c настройками аналитики.
Читать дальше →
Всего голосов 12: ↑10 и ↓2+8
Комментарии3

Julia. Веб-сервисы

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


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


Отметим, что в силу молодости Julia, имеется набор конкурирующих пакетов. Поэтому попробуем разобраться как и для чего их использовать. Попутно сравним реализации одного и того же JSON-веб-сервиса с их помощью.

Читать дальше →
Всего голосов 8: ↑7 и ↓1+6
Комментарии4

Как оценить уровень владения английским языком

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


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

В этой статье я собрал различные тесты, которые проходил сам. При этом я сверяю свою субъективную оценку владения языком с результатами тестов. А также сравниваю результаты между разными тестами.
Читать дальше →
Всего голосов 99: ↑95 и ↓4+91
Комментарии62

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

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

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

Кластеризация временных рядов — неблагодарное дело. Даже при группировке статических данных часто получаются сомнительные результаты, что уж говорить про информацию, рассеянную во времени. Однако нельзя игнорировать задачу, только потому что она сложна. Попробуем разобраться, как выжать из рядов без меток немного смысла. В этой статье рассматриваются подтипы кластеризации временных рядов, общие приёмы и популярные меры расстояния между рядами. Статья рассчитана на читателя, уже имевшего дело с последовательностями в data science: о базовых вещах (тренд, ARMA/ARIMA, спектральный анализ) рассказываться не будет.

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

Анализ алгоритмов аудиоаналитики

Время на прочтение13 мин
Количество просмотров29K
Разработки Синезис не ограничиваются одной лишь видеоаналитикой. Мы занимаемся и аудиоаналитикой. Вот о ней-то мы и хотели сегодня вам рассказать. Из этой статьи вы узнаете о наиболее известных аудиоаналитических системах, а также алгоритмах и их специфике. В конце материала – традиционно – список источников и полезных ссылок, в том числе аудиобиблиотек.

Осторожно: статья может долго грузиться — много картинок.
Автор: Михаил Антоненко.
Читать дальше →
Всего голосов 35: ↑35 и ↓0+35
Комментарии0

Python: советы, уловки, хаки (часть 1)

Время на прочтение8 мин
Количество просмотров263K
Предлагаю читателям «Хабрахабра» перевод статьи «Python Tips, Tricks, and Hacks». Статья будет полезна на начальном и среднем этапах изучения Python.

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

Содержание

1. Маленькие уловки. Четыре типа кавычек. Правдивость различных объектов. Проверка на вхождение подстроки. Красивый вывод списка. Целочисленное деление и деление с плавающей точкой. Лямбда-функции.
2. Списки. Генераторы списков и выражения-генераторы.
Читать дальше →
Всего голосов 98: ↑94 и ↓4+90
Комментарии67

Персональный рейтинг депутатов каждому при помощи JavaScript и браузера Chrome

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

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


Голоса депутатов находятся на vote.duma.gov.ru. Нам остаётся проголосовать за важные для нас законопроекты в соответствии со своим видением и получить рейтинг на основе которого и делать выбор на выборах.


Я выбрал наименее затратный путь и написал JavaScript расширение для Chrome. Работа с ним организованна через консоль браузера (Ctrl + Shift + J). Бонусом я протестировал поддержку русского языка в JavaScript без препроцессоров.


Под катом вас ждёт код с комментариями и комментарии к статье.


Читать дальше →
Всего голосов 44: ↑37 и ↓7+30
Комментарии54

Систематизация публикаций в web. Часть 1 из 3: Постановка задачи

Время на прочтение7 мин
Количество просмотров8.9K
«The future is already here — it's just not very evenly distributed.»
William Gibson


Данный цикл статей включает 3 части.
В первой части был проведен обзор статей на тему научной работы, опубликованных на habrahabr.ru, рассмотрено понятие индекса цитирования (h-index, индекс Хирша) и сделан вывод о необходимости навыков работы с наукометрическими базами данных для всех, кто встал на путь научной карьеры.
Во второй части рассмотрены три инструмента управления публикациями в web: 1) Scopus; 2) Google Scholar (Академия Google); 3) Research Gate.
В третьей части рассмотрен выбор стратегии научных публикаций в целях продвижения личного научного бренда. Примеры в статье рассмотрены для той научной области, которая знакома автору – Computer Science.

Эта статья о том, как систематизировать список собственных публикаций с помощью доступных on-line сервисов, и о том, какую пользу можно извлечь из этой, казалось бы, скучной работы. Статья будет полезна тем, кто уже написал или пишет научные статьи на английском языке, но не знает, с чего начать систематизацию и анализ информации о своих публикациях в интернете.
Читать дальше →
Всего голосов 3: ↑3 и ↓0+3
Комментарии9

Введение в D3

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

D3.js (или просто D3) это JavaScript-библиотека для обработки и визуализации данных. Она предоставляет удобные утилиты для обработки и загрузки массивов данных и создания DOM-элементов. Эта заметка описывает работу с основными методами библиотеки, она подойдёт для изучения основ библиотеки и погружения в её логику и возможности.

Для понимания статьи пригодятся знания JS, HTML и CSS.

Читать дальше →
Всего голосов 63: ↑59 и ↓4+55
Комментарии7

Информация

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