Pull to refresh
0
0
Николай Коршунов @Redwan

Инженер-разработчик

Send message

Эффективное использование Github

Reading time13 min
Views123K

Github — важная часть жизни современного разработчика: он стал стандартом для размещения opensource-проектов. В «2ГИС» мы используем гитхаб для разработки проектов web-отдела и хостинга проектов с открытым кодом.

Хотя большинство из нас пользуются сервисом практически каждый день, не все знают, что у него есть много фишек, помогающих облегчить работу или рутинные операции. Например, получение публичного ключа из URL; отслеживание того, с каких сайтов пользователи приходят в репозиторий; правильный шаринг ссылок на файлы, которые живут в репозиториях гитхаба; горячие клавиши и тому подобное. Цель этой статьи — рассказать о неочевидных вещах и вообще о том, что сделает вашу работу с гитхабом продуктивнее и веселее (я не буду рассматривать здесь работу с API гитхаба, так как эта тема заслуживает отдельной статьи).


Содержание



Читать дальше →
Total votes 149: ↑148 and ↓1+147
Comments38

Практическое применение преобразования Фурье для анализа сигналов. Введение для начинающих

Reading time9 min
Views278K

1. Преобразование Фурье и спектр сигнала


Во многих случаях задача получения (вычисления) спектра сигнала выглядит следующим образом. Имеется АЦП, который с частотой дискретизации Fd преобразует непрерывный сигнал, поступающий на его вход в течение времени Т, в цифровые отсчеты — N штук. Далее массив отсчетов подается в некую программку, которая выдает N/2 каких-то числовых значений (программист, который утянул из инета написал программку, уверяет, что она делает преобразование Фурье).

Чтобы проверить, правильно ли работает программа, сформируем массив отсчетов как сумму двух синусоид sin(10*2*pi*x)+0,5*sin(5*2*pi*x) и подсунем программке. Программа нарисовала следующее:

image
рис.1 График временной функции сигнала

image
рис.2 График спектра сигнала

На графике спектра имеется две палки (гармоники) 5 Гц с амплитудой 0.5 В и 10 Гц — с амплитудой 1 В, все как в формуле исходного сигнала. Все отлично, программист молодец! Программа работает правильно.

Это значит, что если мы подадим на вход АЦП реальный сигнал из смеси двух синусоид, то мы получим аналогичный спектр, состоящий из двух гармоник.

Итого, наш реальный измеренный сигнал, длительностью 5 сек, оцифрованный АЦП, то есть представленный дискретными отсчетами, имеет дискретный непериодический спектр.
С математической точки зрения — сколько ошибок в этой фразе?

Теперь начальство решило мы решили, что 5 секунд — это слишком долго, давай измерять сигнал за 0.5 сек.
Читать дальше →
Total votes 51: ↑46 and ↓5+41
Comments77

Эволюция структур данных в Яндекс.Метрике

Reading time17 min
Views44K
Яндекс.Метрика сегодня это не только система веб-аналитики, но и AppMetrica — система аналитики для приложений. На входе в Метрику мы имеем поток данных — событий, происходящих на сайтах или в приложениях. Наша задача — обработать эти данные и представить их в подходящем для анализа виде.



Но обработка данных — это не проблема. Проблема в том, как и в каком виде сохранять результаты обработки, чтобы с ними можно было удобно работать. В процессе разработки нам приходилось несколько раз полностью менять подход к организации хранения данных. Мы начинали с таблиц MyISAM, использовали LSM-деревья и в конце концов пришли к column-oriented базе данных. В этой статье я хочу рассказать, что нас вынуждало это делать.

Яндекс.Метрика работает с 2008 года — более семи лет. Каждый раз изменение подхода к хранению данных было обусловлено тем, что то или иное решение работало слишком плохо — с недостаточным запасом по производительности, недостаточно надёжно и с большим количеством проблем при эксплуатации, использовало слишком много вычислительных ресурсов, или же просто не позволяло нам реализовать то, что мы хотим.
Читать дальше →
Total votes 57: ↑55 and ↓2+53
Comments22

Диагностируем причину, выживаем в JAR hell: не дышим серой и не варимся в котле

Reading time6 min
Views20K
Бывает что в крупном проекте работающем в jvm, внезапно обнаруживается что приложение не работает и даже не запускается при обновлении какой-либо из зависимостей проекта. Такое же возможно из-за любого другого события, которое изменило порядок следования библиотек в classpath приложения.


Добро пожаловать в JAR hell
Total votes 19: ↑17 and ↓2+15
Comments0

Потоковая обработка данных при помощи Akka

Reading time5 min
Views39K
Привет, Хабр! Все привыкли ассоциировать обработку больших данных с Hadoop (или Spark), которые реализуют парадигму MapReduce (или его расширения). В этой статье я расскажу о недостатках MapReduce, о том, почему мы приняли решение отказываться от MapReduce, и как мы приспособили Akka + Akka Cluster на замену MapReduce.


Читать дальше →
Total votes 47: ↑44 and ↓3+41
Comments50

Техно-Анархизм

Reading time17 min
Views36K


Будущее, каким его видели писатели фантасты, уже не стучится к нам в дверь. Оно сидит у нас на кухне.

В 2011г. Зак Борнхеймер, музыкант и, как он себя называет, профессиональный гик, написал статью под названием «Техно-Анархизм». В представленном мире, одним из ключевых устройств, вокруг которого, можно сказать, всё вертится, являются очки дополненной реальности, снабженные камерой и имеющие доступ к сети Интернет. Устройство, которого в 2011-м еще не было, сегодня уже выпущено в серию.

Описание одного из возможных вариантов будущего, в котором могли бы жить мы с вами, под катом.
Читать дальше →
Total votes 30: ↑22 and ↓8+14
Comments22

BOOTSTRA.386: тема для Bootstrap в духе 1980-х

Reading time1 min
Views109K
Оказывается, некоторые темы для Bootstrap — это маленькие произведения искусства. В рамках надвигающейся пятницы хотелось бы рассказать об одной из таких тем.

Крис МакКензи — явно один из тех, кто скучает по старым добрым временам DOS, EGA/VGA и Turbo Vision, иначе он вряд ли бы решился сделать что-то подобное. Так что если вы успели устать от засилья плоского дизайна, то добро пожаловать в мир BOOTSTRA.386!

Осторожно: будьте готовы к острому приступу ностальгии. Единственное, чего не хватает для полного погружения — так это навигации с клавиатуры, ну и курсора в виде прямоугольного блока.

image

Читать дальше →
Total votes 201: ↑192 and ↓9+183
Comments45

Logbroker: сбор и поставка больших объемов данных в Яндексе

Reading time11 min
Views54K
Привет! Меня зовут Алексей Озерицкий. В Яндексе я работаю в разработке технологий и инфраструктуры. Не только тем нашим сервисам, которыми пользуются миллионы людей, важно уметь работать с действительно большими объемами данных без сбоев. Один из наших ключевых внутренних инструментов — Я.Статистика, информация в котором предназначена только для сотрудников Яндекса и более того — является коммерческой тайной. Статистика занимается сбором, хранением и обработкой информации (в первую очередь логов) от сервисов Яндекса. Результатом нашей работы с ней являются статистические расчеты для дальнейшей аналитики и принятия продуктовых решений.

Один из ключевых компонентов Статистики – Logbroker, распределенное многодатацентровое решение по сбору и поставке данных. Ключевые особенности системы – возможность переживать отключение дата-центра, поддержка семантики exactly once на доставку сообщений и поддержка потоков реального времени (секунды задержки от возникновения события на источнике до получения на приемнике).

В ядре системы лежит Apache Kafka. Logbroker с помощью API изолирует пользователя от сырых потоков Apache Kafka, реализует процессы восстановления после сбоев (в том числе семантику exactly once) и сервисные процессы (междатацентровая репликация, раздача данных на кластеры расчета: YT, YaMR...).
Читать дальше →
Total votes 61: ↑56 and ↓5+51
Comments20

Папа, а почему на ноль делить нельзя?

Reading time6 min
Views237K
Моя трёхлетняя дочка София в последнее время частенько упоминает «ноль», например, в таком контексте:
— Соня, вот ты вроде сначала не послушалась, а затем послушалась, что же получается?..
— Ну… ноль!

Т.е. ощущение отрицательных чисел и нейтральности нуля уже имеет, о как. Скоро поинтересуется: почему же это на ноль делить нельзя?
И вот решил я простыми словами записать всё, что я ещё помню про деление на ноль и всё такое.
Читать дальше →
Total votes 262: ↑192 and ↓70+122
Comments281

Lock-free структуры данных. Эволюция стека

Reading time10 min
Views43K

В предыдущих своих заметках я описал основу, на которой строятся lock-free структуры данных, и базовые алгоритмы управления временем жизни элементов lock-free структур данных. Это была прелюдия к описанию собственно lock-free контейнеров. Но далее я столкнулся с проблемой: как построить дальнейший рассказ? Просто описывать известные мне алгоритмы? Это довольно скучно: много [псевдо-]кода, обилие деталей, важных, конечно, но весьма специфических. В конце концов, это есть в опубликованных работах, на которые я даю ссылки, и в гораздо более подробном и строгом изложении. Мне же хотелось рассказать интересно об интересных вещах, показать пути развития подходов к конструированию конкурентных контейнеров.
Хорошо, — подумал я, — тогда метод изложения должен быть такой: берем какой-то тип контейнера — очередь, map, hash map, — и делаем обзор известных на сегодняшний день оригинальных алгоритмов для этого типа контейнера. С чего начать? И тут я вспомнил о самой простой структуре данных — о стеке.
Читать дальше →
Total votes 73: ↑73 and ↓0+73
Comments14

Time for Coded UI Tests

Reading time6 min
Views53K
В данной статье я постараюсь детально рассказать о работе с Coded UI Test, одним из множества нововведений Visual Studio 2010, а так же упомянуть о проблемах, с которыми я столкнулся.

Не будем зря терять время и сразу приступим к тестированию.
Читать дальше →
Total votes 70: ↑55 and ↓15+40
Comments25

Опыт от Яндекса. Как делать свой отчет для автотестов

Reading time15 min
Views22K
Хочу поделиться опытом, о том, как создавать хорошие отчёты об автотестах и одновременно пригласить вас на первое мероприятие Яндекса специально про тестирование.

Сначала пару слов о событии. 30 ноября в Санкт-Петербурге мы проведём Тестовую среду — своё первое мероприятие специально для тестировщиков. Там мы расскажем, как у нас устроено тестирование, что мы сделали для его автоматизации, как работаем с ошибками, данными и графиками и о многом другом. Участие бесплатное, но мест всего 100, поэтому надо успеть зарегистрироваться.

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

Автоматизации тестирования на Тестовой среде будет посвящено несколько докладов, в том числе мой. Итак, начну.
image
Бывают unit-тесты, а бывают высокоуровневые. И когда их количество начинает расти, анализ результатов запусков становится проблемой. Скажите честно, кто из вас не думал сделать свой отчет?
Читать дальше →
Total votes 58: ↑56 and ↓2+54
Comments6

Как мы ускорили поиск в Яндекс.Почте и при этом освободили 25 серверов

Reading time5 min
Views51K
Мы уже писали о том, как организована работа поиска писем в Яндекс.Почте. С тех пор много всего изменилось и улучшилось, поэтому мы решили поделиться опытом и рассказать вам об этих изменениях.

В день в Почту приходит порядка 100M писем, 10M из которых — с аттачами. Несмотря на то, что лишь 10% писем содержат вложение, среди писем с вложениями существенная доля тех, в которых файлов больше одного. В среднем получается, что общее количество писем равно суммарному количеству аттачей к ним.

image

Средний размер письма с аттачем составляет 400 кб, а письма без аттача 4 кб. Суммарный размер аттачей в одном письме может достигать 30 мб. ТОП 10 типов аттачей: .jpg, .pdf, .xls, .rar, .doc, .zip, .eml, .mp3, .tif, .docx. Практически все файловые форматы кроме текстового, содержат существенное количество избыточной служебной информации. Так, например: .docx формат, содержит всреднем всего 10 % текстовой информации, а из jpg мы получаем всего 0,25% метаинформации для индексации в поиск.

Это дает суммарный объем входящего трафика порядка 25 Тб в сутки, который увеличивается в разы, чтобы обеспечить функционирование большого и сложного продукта Почта. Для обслуживания такой нагрузки в Яндекс.Почте создана большая сетевая, серверная и сервисная инфраструктура, в которую входит несколько кластеров, распределенных по разным датацентрам.
Читать дальше →
Total votes 120: ↑113 and ↓7+106
Comments48

Wi-Fi Mesh сети для самых маленьких

Reading time4 min
Views303K


Недавним постом мы выяснили, что довольно большая часть от аудитории хабра не знает о том, что такое Mesh сети, постараемся это исправить.

Сегодня мы поговорим о:
  • Что такое Mesh Wi-Fi
  • Полноценная Mesh Wi-Fi сеть
  • Зачем такие сети нужны
  • Какие проблемы решает эта технология
  • Плюсы и минусы Mesh сетей
  • Какие технологии и протоколы используются
  • Сравнительная таблица Mesh протоколов
  • Mesh сети и органы власти

Читать дальше →
Total votes 93: ↑85 and ↓8+77
Comments356

Lock-free структуры данных. 1 — Начало

Reading time12 min
Views145K

Я надеюсь, что эта статья станет началом цикла заметок о lock-free структурах данных. Я хочу поделиться с хабрасообществом своим опытом, наблюдениям и размышлениями о том, что такое lock-free структуры данных, как их реализовывать, подходят ли концепции контейнеров стандартной библиотеки STL к lock-free контейнерам, и когда стоит (и стоит ли вообще) применять lock-free структуры данных.

Читать дальше →
Total votes 165: ↑161 and ↓4+157
Comments39

Почему в WiMax и LTE используют OFDM

Reading time18 min
Views119K


Аббревиатура OFDM расшифровывается как Orthogonal frequency-division multiplexing. В русскоязычной литературе встречается несколько различных переводов, несущих, в принципе, один смысл: OFDM — это механизм мультиплексирования (уплотнения) посредством ортогональных поднесущих.



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





Иллюстраций: 18, символов: 27 399, строк кода: 99.



Читать дальше →
Total votes 273: ↑269 and ↓4+265
Comments61

Как прошел первый учебный год Data Mining Track

Reading time3 min
Views5.4K

5 октября лаборатория интеллектуального анализа данных Data Mining Labs запускает новый семестр обучения. Что это такое, как туда попасть и какие возможности получают студенты — добро пожаловать под кат.
Читать дальше →
Total votes 6: ↑6 and ↓0+6
Comments10

Information

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