Как стать автором
Обновить
11
0
Влад Тимофеев @pinchazer

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

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

Чудесный мир Word Embeddings: какие они бывают и зачем нужны?

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

Начать стоит от печки, то есть с постановки задачи. Откуда берется сама задача word embedding?
Лирическое отступление: К сожалению, русскоязычное сообщество еще не выработало единого термина для этого понятия, поэтому мы будем использовать англоязычный.
Сам по себе embedding — это сопоставление произвольной сущности (например, узла в графе или кусочка картинки) некоторому вектору.


image

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

Регулярные выражения в Python от простого к сложному. Подробности, примеры, картинки, упражнения

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

Регулярные выражения в Python от простого к сложному




Решил я давеча моим школьникам дать задачек на регулярные выражения для изучения. А к задачкам нужна какая-нибудь теория. И стал я искать хорошие тексты на русском. Пяток сносных нашёл, но всё не то. Что-то смято, что-то упущено. У этих текстов был не только фатальный недостаток. Мало картинок, мало примеров. И почти нет разумных задач. Ну неужели поиск IP-адреса — это самая частая задача для регулярных выражений? Вот и я думаю, что нет.
Про разницу (?:...) / (...) фиг найдёшь, а без этого знания в некоторых случаях можно только страдать.

Плюс в питоне есть немало регулярных плюшек. Например, re.split может добавлять тот кусок текста, по которому был разрез, в список частей. А в re.sub можно вместо шаблона для замены передать функцию. Это — реальные вещи, которые прямо очень нужны, но никто про это не пишет.
Так и родился этот достаточно многобуквенный материал с подробностями, тонкостями, картинками и задачами.

Надеюсь, вам удастся из него извлечь что-нибудь новое и полезное, даже если вы уже в ладах с регулярками.
Читать дальше →
Всего голосов 99: ↑98 и ↓1+97
Комментарии66

Готовим иерархическую кластеризацию или как я выявлял специализации у резюме

Время на прочтение9 мин
Количество просмотров27K
Я работаю разработчиком в hh.ru, и мне хочется перейти в датасайнс, но пока не хватает навыков. Поэтому в свободное от работы время я изучаю машинное обучение и стараюсь решать практические задачи из этой области. Недавно мне подкинули задачу по кластеризации наших резюме. Пост будет о том, как я решал её при помощи агломеративной иерархической кластеризации. Если не хочется читать, но интересен результат, то можно посмотреть сразу демо.

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

Как написать чат-бота для vk.com за 3 минуты

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

К сожалению, на данный момент нет хороших библиотек на Python2, для того, чтобы быстро создать чат-бота. Ниже я покажу, как легко можно написать примитивного чат бота для VK, используя API VK.


Статья написана для новичков, чтобы показать, что ничего сложного в написании ботов на Python нет.

Читать дальше →
Всего голосов 24: ↑15 и ↓9+6
Комментарии16

Как воплотить в жизнь мечту детства и запрограммировать что-нибудь для Dendy

Время на прочтение4 мин
Количество просмотров104K
Для меня Dendy всегда была чем-то большим, чем просто приставкой. Я не только играл в неё, но и значительное время провёл внутри неё с паяльником в руках для некоторых простых модификаций. По дороге куда-нибудь я часто размышлял о том, как же создаются эти игры и как это работает внутри. Наверняка, многие из вас когда-то задавались подобными вопросами, такова уж натура будущих IT-шников.

Прошли годы. С некоторой периодичностью погружался в эму-тему, изучая всё новое на тематических сайтах, но я не решался окунуться в изучение ассемблера 6502 и архитектуры NES. Внутренний конфликт рационального и иррационального. Я долго убеждал себя, что мне не нужно тратить на это время, но… сорвался. Глядя на то, какие интересные вещи делают энтузиасты эму-сцены, я взялся за свою давнюю идею со светлой мыслью: «Я тоже смогу!». Две недели пролетели незаметно, я еле смог остановить себя. И да, теперь я знаком с ассемблером без команд умножения, о чём раньше только слышал в песне о программистской молодости.



Очень вероятно, что сейчас вы вспомнили свой первый картридж для Dendy и меню с романтическим сюжетом и приятной музыкой. На таких картриджах никогда не было «серьёзных» игр, и не глядя на громкие надписи типа 9999-in-1, их обычно было что-то около пяти. Но это меню… Разве это не шедевр китайской мысли? :) Мне с детства нравилась эта мелодия (Unchained Melody), а фоновые изображения сейчас навевают кучу ностальгических воспоминаний. Поэтому я взял IDA и дизассемблировал меню 300-in-1, вырезал всё лишнее, исправил ошибки, добавил фейдинг да немного приятных мелочей — и получилась демка Unchained Nostalgia (для запуска нужен эмулятор, например, Nestopia), есть запись на YouTube.

Хотите также окунуться в олдскульное программирование? Делюсь самым полезным и интересным, что я нашёл по теме.
Читать дальше →
Всего голосов 102: ↑100 и ↓2+98
Комментарии61

Создаём собственный программный 3D-движок

Время на прочтение32 мин
Количество просмотров51K
image

Часть 1: точки, векторы и базовые принципы


Современные трёхмерные игровые движки, используемые в крупнейших проектах — это тонкая смесь математики и программирования. Многие программисты игр признают, что всецело понять их очень непросто. Если вам не хватает опыта (или профессионального образования, как мне), эта задача становится ещё более сложной. Я хочу познакомить вас с основами графических систем 3D-движков.

В этой части мы рассмотрим точки и векторы, а также всё интересное, что с ними связано. Если вы владеете основами алгебры (переменные и математика переменных) и информатики (основы любого объектно-ориентированного языка), то сможете разобраться в этой статье. Но учтите, некоторые из тем будут довольно сложными.
Читать дальше →
Всего голосов 36: ↑35 и ↓1+34
Комментарии12

Шифр Хила. Подробный разбор

Время на прочтение4 мин
Количество просмотров96K
В этой публикации я попытаюсь максимально подробно описать шифрования и дешифрование по алгоритму Хилла. Итак, без лишних слов сразу к делу.
Читать дальше →
Всего голосов 32: ↑32 и ↓0+32
Комментарии34

Классификация текста с помощью нейронной сети на Java

Время на прочтение12 мин
Количество просмотров79K
– Наша Лена уходит в декрет, – сообщил начальник, – поэтому нам надо искать замену на время ее отсутствия. Часть задач мы распределим, а вот как быть с задачей перенаправления обращений пользователей?

Лена – это наш сотрудник технической поддержки. Одна из ее обязанностей – распределение поступающих на электронную почту обращений между специалистами. Она анализирует обращение и определяет ряд характеристик. Например, «Тип обращения»: ошибка системы, пользователю просто нужна консультация, пользователь хочет какую-то новую функциональность. Определяет «Функциональный модуль системы»: модуль бухгалтерии, модуль паспортизации оборудования и т.д. Проставив все эти характеристики, она перенаправляет обращение соответствующему специалисту.

– Давай я напишу программу, которая это будет делать автоматически! – ответил я.

На этом увлекательный роман заканчиваем и переходим к технической части.

Читать дальше →
Всего голосов 33: ↑31 и ↓2+29
Комментарии28

Теория звука. Что нужно знать о звуке, чтобы с ним работать. Опыт Яндекс.Музыки

Время на прочтение14 мин
Количество просмотров213K
Звук, как и цвет, люди воспринимают по-разному. Например, то, что кажется слишком громким или некачественным одним, может быть нормальным для других.

Для работы над Яндекс.Музыкой нам всегда важно помнить о разных тонкостях, которые таит в себе звук. Что такое громкость, как она меняется и от чего зависит? Как работают звуковые фильтры? Какие бывают шумы? Как меняется звук? Как люди его воспринимают.



Мы довольно много узнали обо всём этом, работая над нашим проектом, и сегодня я попробую описать на пальцах некоторые основные понятия, которые требуется знать, если вы имеете дело с цифровой обработкой звука. В этой статье нет серьёзной математики вроде быстрых преобразований Фурье и прочего — эти формулы несложно найти в сети. Я опишу суть и смысл вещей, с которыми придётся столкнуться.

Поводом для этого поста можете считать то, что мы добавили в приложения Яндекс.Музыки возможность слушать треки в высоком качестве (320kbps). А можете не считать. Итак.
Читать дальше →
Всего голосов 83: ↑78 и ↓5+73
Комментарии52

Как работает FIFO

Время на прочтение17 мин
Количество просмотров37K
FIFO это один из ключевых элементов цифровой техники. Это память типа «первым вошёл-первым ушёл» (first input – first output). Меня как разработчика ПЛИС FIFO окружают повсюду. Собственно я только и делаю что беру данные из одного FIFO и перекладываю в другое. Но как оно работает? В современных САПР конечно уже есть готовые элементы, у Altera есть замечательные мегафункции. У Xilinx есть Core Generator. Но что делать если что-то не устраивает в стандартных решениях? Ответ один – разобраться и написать самому.
Читать дальше →
Всего голосов 18: ↑17 и ↓1+16
Комментарии43

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

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

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 сек.
Читать дальше →
Всего голосов 51: ↑46 и ↓5+41
Комментарии83

Простыми словами о преобразовании Фурье

Уровень сложностиСредний
Время на прочтение14 мин
Количество просмотров1.1M
Я полагаю что все в общих чертах знают о существовании такого замечательного математического инструмента как преобразование Фурье. Однако в ВУЗах его почему-то преподают настолько плохо, что понимают как это преобразование работает и как им правильно следует пользоваться сравнительно немного людей. Между тем математика данного преобразования на удивление красива, проста и изящна. Я предлагаю всем желающим узнать немного больше о преобразовании Фурье и близкой ему теме того как аналоговые сигналы удается эффективно превращать для вычислительной обработки в цифровые.

image (с) xkcd

Без использования сложных формул и матлаба я постараюсь ответить на следующие вопросы:
  • FT, DTF, DTFT — в чем отличия и как совершенно разные казалось бы формулы дают столь концептуально похожие результаты?
  • Как правильно интерпретировать результаты быстрого преобразования Фурье (FFT)
  • Что делать если дан сигнал из 179 сэмплов а БПФ требует на вход последовательность по длине равную степени двойки
  • Почему при попытке получить с помощью Фурье спектр синусоиды вместо ожидаемой одиночной “палки” на графике вылезает странная загогулина и что с этим можно сделать
  • Зачем перед АЦП и после ЦАП ставят аналоговые фильтры
  • Можно ли оцифровать АЦП сигнал с частотой выше половины частоты дискретизации (школьный ответ неверен, правильный ответ — можно)
  • Как по цифровой последовательности восстанавливают исходный сигнал


Я буду исходить из предположения что читатель понимает что такое интеграл, комплексное число (а так же его модуль и аргумент), свертка функций, плюс хотя бы “на пальцах” представляет себе что такое дельта-функция Дирака. Не знаете — не беда, прочитайте вышеприведенные ссылки. Под “произведением функций” в данном тексте я везде буду понимать “поточечное умножение”

Итак, приступим?
Всего голосов 203: ↑192 и ↓11+181
Комментарии190

Реализация узла БПФ с плавающей точкой на ПЛИС

Время на прочтение17 мин
Количество просмотров32K
Всем привет! В этой статье речь пойдет о реализации быстрого преобразования Фурье в формате с плавающей точкой на ПЛИС. Будут показаны основные особенности разработки ядра от самой первой стадии до готового конфигурируемого IP-ядра. В частности, будет проведено сравнение с готовыми ядрами фирмы Xilinx, показаны преимущества и недостатки тех или иных вариантов реализации. В статье будет рассказано о главной особенности ядра БПФ и ОБПФ — об отсутствии необходимости переводить данные в натуральный порядок после БПФ и ОБПФ для их совместной связки. В этой статье я постараюсь отразить всё тонкости реализации проекта под названием FP23FFTK, приведу реальные примеры использования готового ядра. Проект написан на языке VHDL и заточен под FPGA фирмы Xilinx последних семейств.


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

Как изготовить рабочий прототип электронного устройства

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


Мы продолжаем публиковать статьи о разработке и производстве сложной современной электроники. В этот раз расскажем об изготовлении прототипов и опытных образцов. Любой проект включает в себя эту стадию, от ее результатов зависит дальнейшая судьба устройства — выход на массовое производство или отправка на доработку.
 
Рабочий образец воплощает в себе результаты работы инженеров, программистов, промдизайнеров и технологов. Его щупают, рассматривают и оценивают, сравнивая ожидаемое с действительным.
 
Зачем вообще нужны эти прототипы? Сколько штук их нужно изготовить в рамках проекта и сколько это стоит? Какие документы нужны для производства опытных образцов? Ответы на эти вопросы вы найдете под катом.
 
Читать дальше →
Всего голосов 31: ↑29 и ↓2+27
Комментарии48

Реализация мечты, или Радио 86РК — 25 лет спустя

Время на прочтение13 мин
Количество просмотров183K
В уже далеком 1986 году у меня появилась мечта. Вернее, МЕЧТА – построить свою собственную микро-ЭВМ «Радио-86РК», схема которой была опубликована в журнале «Радио» (и который уже неоднократно упоминался на Хабре, например, здесь — habrahabr.ru/post/172405 ).
Читать дальше →
Всего голосов 249: ↑249 и ↓0+249
Комментарии88

Поднимаем SOC: ARM + FPGA

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


На днях ко мне в руки попала EBV SoCrates Evaluation Board. В двух словах — это плата с SoC от фирмы Altera, на борту которой есть двухъядерный ARM и FPGA Cyclone V.

ARM и FPGA на одном чипе — это должно быть очень интересно! Но для начала всё это добро нужно «поднять».
Об этом процессе я и поведаю в данной статье.

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

А в качестве маленького бонуса измерим пропускную способность между CPU и FPGA.
Добро пожаловать
Всего голосов 58: ↑57 и ↓1+56
Комментарии29

Software Defined Radio (SDR)

Время на прочтение7 мин
Количество просмотров115K
«Подобные технологии могут стоить несметного состояния.
Представьте управление любым устройством… лишь посылая команды при помощи радиоволн.
Это будущее, Ватсон.»

Шерлок Холмс (Sherlock Holmes)-2009

Трудно представить сегодняшний мир без компьютеров и различных электронных устройств. А ведь с момента изобретения транзистора прошло всего 56 лет. При том, что электричеством люди владеют примерно с конца 18 века — просто поразительно как быстро в нашу жизнь ворвались компьютеры, телефоны, интернет и прочие блага цивилизации, так привычные нам, но о которых — лет 30 назад человечество могло только мечтать. Миллионы людей получили в свои руки мощнейший инструмент для самореализации и самовыражения — ведь правда — вы когда нибудь задумывались — как здорово, что мы можем вот просто так взять и реализовать свою идею без каких либо особых материальных вложений? Компьютер позволил умным и талантливым людям реализовать себя, интернет дал доступ к петабайтам информации, позволил миллионам людей общаться друг с другом, находить единомышленников, учиться, осваивать профессии, зарабатывать — и всё это не вставая с кресла… В общем — хватит лирики, в статье речь пойдет о Программно определяемом радио — что это и как оно работает — узнаете под катом
Читать дальше →
Всего голосов 54: ↑47 и ↓7+40
Комментарии32

Простой SDR приёмник на ПЛИС

Время на прочтение9 мин
Количество просмотров226K
В этой статье я расскажу о том, как на базе отладочной платы DE0-nano сделать достаточно простой КВ SDR приёмник.
Пример принимаемых сигналов:

Читать дальше →
Всего голосов 67: ↑66 и ↓1+65
Комментарии28

ПЛИС — мои первые шаги

Время на прочтение11 мин
Количество просмотров153K
Недавно я все-таки сделал свой первый шаг к ПЛИС и призвал вас за собой. Мое фанатическое увлечение ПЛИС и идея о том, что ПЛИС является лучшей платформой для создания любых устройств приобрела религиозный характер. Моя секта ПЛИСоводов проповедует полный отказ от микроконтроллеров, а особо экстремистская ветвь проповедует отказ не только от софт процессоров, но и вообще от последовательных вычислений!

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

Эта статья для новичков. В ней я опишу типичные проблемы, вопросы, заблуждения, ошибки, которые могут появиться в самом начале обучения (потому что они появились у меня). Однако, контекст статьи ограничен тем, что разработка ведется на ПЛИС от Altera в среде Quartus на языке Verilog.

Подробности
Всего голосов 37: ↑36 и ↓1+35
Комментарии41

ARM-ы для самых маленьких

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


Пару дней назад я опубликовал и потом внезапно убрал в черновики статью о плане написать про создание своей ОС для архитектуры ARM. Я сделал это, потому что получил много интересных отзывов как на Хабре, так и в G+.

Сегодня я попробую подойти к вопросу с другой стороны, я буду рассказывать о том, как программировать микроконтроллеры ARM на нарастающих по сложности примерах, пока мы не напишем свою ОС или пока мне не надоест. А может, мы перепрыгнем на ковыряние в Contiki, TinyOS, ChibiOS или FreeRTOS, кто знает, их там столько много разных и интересных (а у TinyOS еще и свой язык программирования!).

Итак, почему ARM? Возиться с 8-битными микроконтроллерами хотя и интересно, но скоро надоедает. Кроме того, средства разработки под ARM обкатаны долгим опытом и намного приятнее в работе. При этом, начать мигать светодиодами на каком-то «evaluation board» так же просто, как и на Arduino.

Читать дальше →
Всего голосов 129: ↑124 и ↓5+119
Комментарии66
2

Информация

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