Pull to refresh
0
Егор Прохоренко @egorpread⁠-⁠only

User

Send message

Преобразование Фурье в действии: точное определение частоты сигнала и выделение нот

Reading time12 min
Views236K
последняя редакция статьи доступна на сайте makeloft.xyz

Начнём с пианино. Очень упрощёно этот музыкальный инструмент представляет собой набор белых и чёрных клавиш, при нажатии на каждую из которых извлекается определённый звук заранее заданной частоты от низкого до высокого. Конечно, каждый клавишный инструмент имеет свою уникальную тембральную окраску звучания, благодаря которой мы можем отличить, например, аккордеон от фортепиано, но если грубо обобщить, то каждая клавиша представляет собой просто генератор синусоидальных акустических волн определённой частоты.

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

image

Читать дальше →

Десять типичных вопросов на собеседованиях на знание HTML

Reading time7 min
Views100K
Аурэлио Де Роза несколько дней назад выпустил, на мой взгляд, очень привлекательную статью, которой я хочу с вами поделиться на тот случай, если у вас плохо с английским.
Читать дальше →

Подборка интересных CSS рецептов «Голые пятницы #3»

Reading time4 min
Views49K
голые пятницы

Здравствуй, дорогой читатель хабра!
Сегодня мы поговорим о градиентных границах, режимах наложения, о том, как рациональнее сверстать стандартную иконку меню. А так же откроем для себя заново старое css-свойство visibility и рассмотрим новое медиа-выражение @Supports.
Читать дальше →

Проектирование новостной ленты в социальных сетях

Reading time9 min
Views40K


Так сложилось, что за последние пару лет я успел поучаствовать в разработке нескольких социальных сетей. Главная задача, которую приходилось решать в каждом из этих проектов, заключалась в формировании новостной ленты пользователя. При чём важным условием была возможность масштабирования этой ленты в условиях роста числа пользователей (точнее, числа связей между ними) и, как следствие, — количества контента, который они деливерят друг другу.

Мой рассказ будет о том, как я, превозмогая трудности, решал задачу формирования новостной ленты. А также я расскажу о подходах, которые наработали ребята из проекта Socialite, и которыми они поделились на MongoDB World.
Читать дальше →

Что же там такого тяжелого в обработке исключений C++?

Reading time12 min
Views72K
image
Исключения и связанная с ними раскрутка стека – одна из самых приятных методик в C++. Обработка исключений интуитивно понятно согласуется с блочной структурой программы. Внешне, обработка исключений представляется очень логичной и естественной.

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

Тем не менее, в C++, исключения традиционно рассматриваются буквально как исключительные ситуации, связанные с восстановлением после ошибок. Трудно сказать, является ли это причиной или следствием того, что реализация обработки исключений компиляторами чрезвычайно дорога. Попробуем разобраться почему.
Читать дальше →

Машинное обучение для интеллектуализации ваших приложений

Reading time1 min
Views15K
Вводный доклад начального уровня о машинном обучении на конференции iForum'2014.

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

Для программистов, желающих стать распознавальщиками.



Цвета: ссылки, книги и инструменты, которые сделают вашу жизнь проще

Reading time2 min
Views37K
Цвет — конечно, очень важный элемент проекта, и выбор лучшей цветовой палитры для проекта является чем-то, чему действительно должны выделить время. Кроме понимания теории цвета нужно иметь еще и представление о психологии цвета, вы должны убедиться, что ваш выбор будет не только хорошо выглядеть, но и иметь хороший баланс и доставить правильное сообщение. Размышляя об этом, мы решили собрать некоторые советы, книжные рекомендации, ссылки к интересным статьям, а также некоторые инструменты и приложения, которые сделают вашу жизнь легче, когда речь идет о цвете.
Читать дальше →

Нейронные сети, «вредные» советы

Reading time6 min
Views170K
Исторически, искусственные нейронные сети за свою уже более чем полувековую историю испытывали как периоды стремительных взлетов и повышенного внимания общества, так и сменявшие их периоды скепсиса и равнодушия. В хорошие времена ученым и инженерам кажется, что наконец-то найдена универсальная технология, способная заменить человека в любых когнитивных задачах. Как грибы после дождя, появляются различные новые модели нейронных сетей, между их авторами, профессиональными учеными-математиками, идут напряженные споры о большей или меньшей степени биологичности предложенных ими моделей. Профессиональные ученые-биологи наблюдают эти дискуссии со стороны, периодически срываясь и восклицая «Да такого же в реальной природе не бывает!» – и без особого эффекта, поскольку нейросетевики-математики слушают биологов, как правило, только тогда, когда факты биологов согласуются с их собственными теориями. Однако, с течением времени, постепенно накапливается пул задач, на которых нейронные сети работают откровенно плохо и энтузиазм людей остывает.
Читать дальше →

Повышение удобства разработки и эффективности с помощью приложения Alfred (OSX)

Reading time3 min
Views24K
image

Введение


Не нашел на Хабре подробных статей о таком замечательном инструменте автоматизации под OSX, как Alfred.
Я бы хотел немного рассказать про упрощение рутинных запросов, и перечислить несколько интересных расширений (в оригинале workflows) для этой программы.

Большинство из них интересны прежде всего разработчикам и дизайнерам, но некоторые подойдут и для рядовых пользователей.
Читать дальше →

20 лет юности игровой индустрии в 5 минутах видео. Часть 2

Reading time1 min
Views27K
Вторая часть сборки о ретро-играх для DOS (286/386/486). Этот ролик немногим больше первой части — 8 минут.


Под катом ссылка на первую часть и загадка для старожилов

Готовим пользовательское соглашение своими руками

Reading time8 min
Views75K
Пользовательское соглашение или как его еще принято называть Соглашение об использовании сервиса, является ключевым документом, на котором строится юридическая защита интернет-сервиса.

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

Особую актуальность вопросы защиты интернет-сервиса приобретают в связи с принятием так называемого «антипиратского закона», которым возлагается ответственность на информационного посредника за размещение или предоставление доступа к материалам, нарушающим интеллектуальные права третьих лиц. Закон вступает в силу с 01 августа 2013 г., в связи с чем пользовательские соглашения и схему взаимодействия с пользователем необходимо привести в соответствие с ужесточившимися требованиями.
Читать дальше →

Мы проанализировали 20 лэндингов крутых стартапов и вот чему мы научились

Reading time9 min
Views86K
main

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

Это как собрать идеальную девушку из топ моделей или любимых актрис. Только про лэндинги.
Итак, запаситесь чашкой кофе, понеслась.
Читать дальше →

Почему ваша первая реализация FizzBuzz на Rust может не работать

Reading time14 min
Views21K
Полное оригинальное название статьи: «Why your first FizzBuzz implementation may not work: an exploration into some initially surprising but great parts of Rust (though you still might not like them)»

tl;dr;-версия: На первый взгляд некоторые аспекты Rust могут показаться странными и даже неудобными, однако, они оказываются весьма удачными для языка, который позиционируется как системный. Концепции владения (ownership) и времени жизни (lifetime) позволяют привнести в язык сильные статические гарантии и сделать программы на нём эффективными и безопасными, как по памяти, так и по времени.

Лицензия: CC-BY, автор Chris Morgan.

Почему ваша первая реализация FizzBuzz может не работать: исследование некоторых особенностей Rust, которые изначально шокируют, но в действительности являются его лучшими сторонами (хотя они всё равно могут вам не понравиться)

http://chrismorgan.info/media/images/rust-fizzbuzz.svgFizzBuzz предполагается как простое задание для новичка, но в Rust присутствуют несколько подводных камней, о которых лучше знать. Эти подводные камни не являются проблемами Rust, а, скорее, отличиями от того, с чем знакомо большиство программистов, ограничениями, которые на первый взгляд могут показаться очень жёсткими, но в действительности дают громадные преимущества за малой ценой.

Rust это «подвижная мишень», тем не менее, язык становится стабильней. Код из статьи работает с версией 0.12. Если что-то сломается, пожалуйста, свяжитесь со мной. Касательно кода на Python, он будет работать как в двойке, так и в тройке.
Читать дальше →

Асинхронность: назад в будущее

Reading time22 min
Views114K

Асинхронность… Услышав это слово, у программистов начинают блестеть глаза, дыхание становится поверхностным, руки начинают трястись, голос — заикаться, мозг начинает рисовать многочисленные уровни абстракции… У менеджеров округляются глаза, звуки становятся нечленораздельными, руки сжимаются в кулаки, а голос переходит на обертона… Единственное, что их объединяет — это учащенный пульс. Только причины этого различны: программисты рвутся в бой, а менеджеры пытаются заглянуть в хрустальный шар и осознать риски, начинают судорожно придумывать причины увеличения сроков в разы… И уже потом, когда большая часть кода написана, программисты начинают осознавать и познавать всю горечь асинхронности, проводя бесконечные ночи в дебаггере, отчаянно пытаясь понять, что же все-таки происходит…

Именно такую картину рисует мое воспаленное воображение при слове “асинхронность”. Конечно, все это слишком эмоционально и не всегда правда. Ведь так?.. Возможны варианты. Некоторые скажут, что “при правильном подходе все будет работать хорошо”. Однако это можно сказать всегда и везде при всяком удобном и не удобном случае. Но лучше от этого не становится, баги не исправляются, а бессонница не проходит.

Так что же такое асинхронность? Почему она так привлекательна? А главное: что с ней не так?
Назад в будущее...

Как накормить мозг программиста… или feed your brain

Reading time12 min
Views375K

Введение


Из всех наслаждений, отпущенных человеку в жизни,
самое изысканное — шевелить мозгами.
(Борис Акунин)


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

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

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

Как решать проблемы пользователей не за сутки, а за минуты: ускоряем поиск по логам

Reading time6 min
Views29K
Мы в Почте Mail.Ru постоянно сталкиваемся с необходимостью работать с историей пользователей. Учитывая, что ежемесячная аудитория проекта составляет более 40 миллионов человек, история всех их действий – это порядка петабайта данных. Потребность в поиске по логам у нас возникает сотни раз в день, а на получение нужной информации в среднем уходило несколько часов. При этом, по нашим предположениям, извлечение информации из логов можно было ускорить до нескольких секунд.

Чтобы оценить целесообразность разработки системы для оптимизации поиска по логам, мы воспользовались вот этой таблицей с XKCD:



(на самом деле нет, но нам она все равно нравится).

Итак, мы всерьез взялись за оптимизацию. Итогом нашей работы стала разработка системы, благодаря которой мы можем поднять историю действий примерно в 100 000 (сто тысяч, это не опечатка) раз быстрее. Мы разработали big-data сервис, который позволяет хранить петабайты информации в структурированном виде: каждому ключу у нас соответствует лог каких-то событий. Хранилище устроено так, что оно способно работать и на самых дешевых SATA-дисках, и на больших многодисковых хранилищах с минимальным количеством процессорного времени, при этом оно полностью fault-толерантно — если вдруг какая-то машина выйдет из строя, это ни на что не влияет. Если в системе заканчивается место, в нее просто добавляется сервер или несколько: система автоматически увидит их и начнет записывать данные. Чтение данных происходит почти моментально.
Читать дальше →

В чем нарисовать MindMap? Детальный обзор 6 самых популярных программ для рисования mindmap

Reading time5 min
Views599K

Структура обзора


1. Вступление;
2. Сравнение основных 5-х программ по популярности, цене, совместимости, наличию на разных платформах;
3. Подробное описание функционала и особенностей 5-х основных программ.

Введение


Mindmapping (рисование древовидных карт или ментальных карт) прочно вошел в жизнь многих людей именно с появлением соответствующего софта. Используя mindmap, делают техзадания, консультанты-аналитики делают проекты, дизайнеры придумывают концепции, тренера делают презентации, менеджеры составляют планы и т.д.

Целью этой статьи не является пропаганда mindmapping. У древовидного представления данных есть свои плюсы и свои ограничения. Обсуждение уже было в комментариях к публикации "+10 к интеллекту".

Эта публикация для тех, кто хочет выбрать удобный инструмент и узнать какие-то новые фишки, о которых еще не знал.
Читать дальше →

Поиск кропнутых дубликатов изображений с помощью перцептуальных хешей

Reading time6 min
Views72K
В этой статье пойдет речь о том, как решалась небольшая задачка поиска дубликатов по фрагменту или кропу картинки.



Читать дальше →

Лучшие интересности и полезности за год

Reading time8 min
Views65K
Доброго времени суток, уважаемые хабравчане. Сегодня я хочу поделиться с вами одним небольшим событием — ровно год назад, 15 августа 2013 года я опубликовал свой первый дайджест для веб-разработчиков. С тех пор было опубликовано 25 выпусков и мои подборки обрели некоторую «популярность», а мне приятно ощущать себя «полезным» для хабраобщества.

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

Читать дальше →

Information

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