Search
Write a publication
Pull to refresh
85
0
Изодёров Николай @Nico_izo

Веб-разработчик

Send message

Топ-10 data mining-алгоритмов простым языком

Reading time24 min
Views129K


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

Сегодня я постараюсь объяснить простыми словами принципы работы 10 самых эффективных data mining-алгоритмов, которые описаны в этом докладе.

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

Создание космической браузерной игры. Первый опыт

Reading time8 min
Views37K
В этой статье речь пойдет о первом опыте создания космической браузерной игры. О начальных шагах, первых результатах, о совершенных ошибках и наиболее интересных трудностях разработки, с которыми приходилось столкнуться. Мы будем рады, если читатели Хабра найдут в этой статье интересную для себя информацию.

В качестве вступления


Ранее, в течение последних 2-х лет, были попытки запуска некоторых браузерных игр малого масштаба, которые собирали менее 1000 игроков, но в этой статье мы их затрагивать не будем. Рассказ пойдет о первом опыте создания браузерной онлайн-игры, которая в будущем будет стремиться выйти в массы.

Идея создания космической игры родилась довольно давно. Почему космической? Отчасти потому, что космическая тема всегда вызывала мой личный интерес, а отчасти, по причине ностальгических воспоминаний от приятного времяпрепровождения за «Космическими рейнджерами», когда-то в далеком прошлом…

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

Команда математиков за полгода написала 600-страничную книгу, используя GitHub

Reading time4 min
Views61K
Перевод статьи Андрея Бауера — The HoTT book

Книга по HoTT закончена!

Начиная с весны, и даже раньше, я участвовал в командном проекте по написанию книги по гомотопической теории типов (Homotopy Type Theory). Она наконец написана и готова к употреблению. Вы можете скачать книгу бесплатно: homotopytypetheory.org/book. Майк Шульман рассказал о содержании книги, так что я не буду повторять то же самое. Вместо этого я бы хотел прокомментировать некоторые социо-технологические аспекты создания книги и, в частности, рассказать о том, чему нас научило сообщество Open source.
Читать дальше →

А ваш язык программирования необоснованный? (или почему предсказуемость важна)

Reading time15 min
Views35K
Как должно быть очевидно, одна из целей этого сайта — убедить принимать F# всерьёз в роли универсального языка разработки.

Но в то время как функциональный стиль всё больше проникает в массы, и C# уже получил такие функциональные средства как лямбды и LINQ, кажется, что C# всё больше и больше наступает на пятки F#. Так что, как это ни странно, но я стал всё чаще слышать как высказывают такие мысли:

  • «C# уже обладает большей частью инструментария F#, и зачем мне напрягаться с переходом?»
  • «Нет никакой необходимости что-то менять. Всё, что нам нужно сделать, так это пару лет подождать, и C# получит достаточно от F#, что обеспечит практически все плюшки.»
  • «F# только чуть лучше, чем C#, но не настолько, чтобы в самом деле тратить время с переходом на него.»
  • «F# кажется действительно неплох, хоть и пугает местами. Но я не могу найти ему практического применения, чтобы использовать вместо C#.»

Не сомневаюсь, что теперь, когда и в Java тоже добавлены лямбды, подобные комментарии зазвучали в экосистеме JVM при обсуждении «Scala и Closure против Java».

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

Как я, в итоге, написал новую RTOS, протестированную и стабильную

Level of difficultyMedium
Reading time40 min
Views84K
Я работаю со встраиваемыми системами в течение нескольких лет: наша компания разрабатывает и производит бортовые компьютеры для автомобилей, зарядные устройства, и т.д.

image


Процессоры, используемые в наших продуктах — это, в основном, 16- и 32-битные микроконтроллеры Microchip, имеющие RAM от 8 до 32 кБ, и ROM от 128 до 512 кБ, без MMU. Иногда, для самых простых устройств, используются еще более скромные 8-битные чипы.

Очевидно, что у нас нет (разумных) шансов использовать ядро Linux. Так что нам нужна какая-нибудь RTOS (Real-Time Operating System). Находятся даже люди, которые не используют никаких ОС в микроконтроллерах, но я не считаю это хорошей практикой: если железо позволяет мне использовать ОС, я ее использую.

Несколько лет назад, когда мы переходили с 8-битников на более мощные 16-битные микроконтроллеры, мои коллеги, которые были гораздо более опытными, чем я, рекомендовали вытесняющюю RTOS TNKernel. Так что это — та ОС, которую я использовал в разных проектах в течение пары лет.

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

SFINAE — это просто

Reading time7 min
Views105K
TLDR: как определять, есть ли в типе метод с данным именем и сигнатурой, а также узнавать другие свойства типов, не сойдя при этом с ума.
image

Здравствуйте, коллеги.
Хочу рассказать о SFINAE, интересном и очень полезном (к сожалению*) механизме языка C++, который, однако, может представляться неподготовленному человеку весьма мозгоразрывающим. В действительности принцип его использования достаточно прост и ясен, будучи сформулирован в виде нескольких чётких положений. Эта заметка рассчитана на читателей, обладающих базовыми знаниями о шаблонах в C++ и знакомых, хотя бы шапочно, с C++11.
* Почему к сожалению? Хотя использование SFINAE — интересный и красивый приём, переросший в широко используемую идиому языка, гораздо лучше было бы иметь средства, явно описывающие работу с типами.
Читать дальше →

Как работает реляционная БД

Reading time51 min
Views559K
Реляционные базы данных (РБД) используются повсюду. Они бывают самых разных видов, от маленьких и полезных SQLite до мощных Teradata. Но в то же время существует очень немного статей, объясняющих принцип действия и устройство реляционных баз данных. Да и те, что есть — довольно поверхностные, без особых подробностей. Зато по более «модным» направлениям (большие данные, NoSQL или JS) написано гораздо больше статей, причём куда более глубоких. Вероятно, такая ситуация сложилась из-за того, что реляционные БД — вещь «старая» и слишком скучная, чтобы разбирать её вне университетских программ, исследовательских работ и книг.

На самом деле, мало кто действительно понимает, как работают реляционные БД. А многие разработчики очень не любят, когда они чего-то не понимают. Если реляционные БД используют порядка 40 лет, значит тому есть причина. РБД — штука очень интересная, поскольку в ее основе лежат полезные и широко используемые понятия. Если вы хотели бы разобраться в том, как работают РБД, то эта статья для вас.
Читать дальше →

Hash array mapped trie

Reading time5 min
Views22K
Hash array mapped trie — это ассоциативный контейнер, который обладает свойствами хэш таблиц и trie. Операции вставки пары ключ-значение и поиск по ключу — О(1) операции.
Про trie на хабре уже писали.

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

Динамические метаобъекты (part 1, изучение)

Reading time8 min
Views9.4K

Предисловие


Надеюсь, всем, кто использовал в разработке Qt, было интересно узнать, как же устроена метаинформация и что же происходит внутри этого прекрасного фреймворка? Об этом и будет эта запись — мы заглянем внутрь исходников и попробуем написать реализацию динамического метаобъекта (но не в этой записи). Метаобъекта, в котором можно создавать сигнали и слоты в realtime.
Читать дальше →

Как работают сигналы и слоты в Qt (часть 1)

Reading time10 min
Views121K


Qt хорошо известен своим механизмом сигналов и слотов. Но как это работает? В этом посте мы исследуем внутренности QObject и QMetaObject и раскроем их работу за кадром. Я буду давать примеры Qt5 кода, иногда отредактированные для краткости и добавления форматирования.
Читать дальше →

Путеводитель по реализации 2Д платформеров (окончание)

Reading time8 min
Views23K
Окончание перевода статьи «путеводитель по реализации 2Д платформеров».
Начало

Тип №3: Битовые маски


Он подобен тайловому (плавному) методу, но вместо использования больших тайлов используется картинка для проверки столкновений для каждого пиксела. Это позволяет лучше проработать игру, но и значительно увеличивает сложность, использует больше памяти и требует что-то схожее с графическим редактором для создания уровней. Такая маска обычно не используется непосредственно для визуализации, поэтому нужны дополнительные средства — например, большое графическое изображение (подложка), индивидуально для каждого уровня. Из-за подобных проблем эта техника довольно редка в использовании, но позволяет добиться более качественных результатов, чем варианты, основанные на тайлах. Этот метод удобен для создания динамического окружения — разрушения можно просто «рисовать» в битовую маску для изменения уровня. Хороший пример — игры серии Worms.

Worms World Party с разрушаемой топографией
Примеры: Worms, Talbot’s Odyssey

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

Linux 24 года

Reading time5 min
Views13K
18-летний Линус Торвальдс поступил в Хельсинский университет в 1988 году и осенью начал обучение. После первого курса ему пришлось год отслужить в Сухопутных войсках Финляндии. C Unix Торвальдс познакомился лишь осенью 1990 года. Unix — операционная система, созданная в начале семидесятых Кеном Томпсоном, Деннисом Ритчи и другими. К концу восьмидесятых ОС уже имела широкое влияние в научных кругах: существовали проекты BSD, System V и другие. Линус впервые познакомился с Unix в рамках короткого учебного курса.

Университет приобрёл машинку MicroVAX под управлением операционной системы Ultrix с лицензией на 16 пользователей. Изучающих действительно было 16. Ресурсов было мало: чтобы подойти к терминалу, приходилось ждать в очереди. Но даже эти материальные ограничения не помешали Линусу оценить Unix. Торвальдсу понравился интерфейс для программирования, а сложность Unix, которой так пугали, показалась Линусу простой.
Читать дальше →

Ритм игрового процесса – зачем нужна база

Reading time6 min
Views27K


Самое интересное в игре, как правило, связано с напряжением. С другой стороны, постоянно находиться в напряжении нельзя, поэтому требуется «отпускать» игрока и давать ему расслабиться.

Механика базы работает чертовски просто:
  1. В игре создаётся некое место, где игроку приятно и безопасно проводить время.
  2. После периода напряжения игрок отправляется в это место.
  3. Закончить в этот момент сложно. Кто будет отказываться от приятного «отдыха»? Нет, из игры не выходят перед приятной частью.
  4. Далее мы стараемся без перехода выводить игрока в следующий цикл, требующий напряжения – так, чтобы игрок не успел понять, как там оказался.

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

Метод функций Ляпунова в задаче об эффекте Джанибекова

Reading time8 min
Views22K

Введение


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

Интерпретация Мак-Куллага — наверно самое простое объяснение эффекта Джанибекова


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

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

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

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

Введение в machine learning: с чего начать изучение и как применять

Reading time1 min
Views30K
image
Машинное обучение — это математическая дисциплина, изучающая алгоритмы способные выделять знания из данных. Несмотря на то, что эта дисциплина в основном теоретическая, в жизни большинства людей она с каждым годом играет все большую и большую роль. Так, сложно сейчас встретить человека, который бы ничего не слышал о торговых роботах, Яндексе, Google Street View, Siri.

В докладе коллеги Алексадра Сенова из проекта Synqera для очередного нашего технического i-Free meet-up проведен небольшой экскурс в машинное обучение. Из него мы узнаем чуть больше про области применения, рассмотрим основные задачи, возникающие в рамках машинного обучения, а так же алгоритмы их решения. Уделим внимание проблемам, возникающим при их применении, приведем пару примеров и рекоммендаций по дальнейшему изучению.

Подробности

«Горбатый, я сказал горбатый!» Отладка «сервомоторов» и «драйверов» осанки

Reading time3 min
Views13K


Чего только не придумают гики, лишь бы не идти в армию на плавание или в качалку, чтобы иметь сильную и здоровую спину и осанку.
На рынке есть несколько приборов, которые должны все сделать за вас могут помочь достичь поставленной цели — ровной спины.

Я потестировал прибор Lumo Lift неделю сам и неделю на девушке. Вывод такой.
Прибор помогает. Я бы сказал он дает от +15% до +25% к вероятности успеха прокачать себе строевую выправку стройную осанку. Но. Он работает, как вспомогательное средство. (Примерно так же, как зеркало или весы влияют на уровень вашей красоты.) Есть две области, где он очень пригодится — это рабочее место за компом и метро. В остальных случаях он мало полезен.

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

На мой взгляд, наилучшее применение прибора — это месячный курс/тренинг, в ходе которого идет всяческая медитация физкультура, а прибор идет как волшебный атрибут. Или запустить квест: поправил себе осанку — подари прибор другу. Как Ice Bucket Challenge.

Устройство обладает ярковыраженной вирусностью — если его видят в раздевалке или в гостях и узнают его назначение — каждый хочет себе подобный. Вот если сделать цену в районе 1-2 тыс. рублей, то продаж было бы немерено.

Под катом обзор Lumo Lift и еще 11 устройств/систем (в том числе и DIY), направленных на «перепрошивку» осанки (в дополнение к посту История для позвоночника: обзор корректора осанки Lumo Lift, софта из Google Play и российского «Мастера осанки»).
Читать дальше →

Кооперативные потоки с нуля в 33 строках на Хаскеле

Level of difficultyEasy
Reading time6 min
Views12K
Хаскель отличает себя от большинства функциональных языков тем, что имеет глубокие культурные корни из области математики и информатики, которые дают обманчивое впечатление, что Хаскель плохо подходит для решения практических задач. Однако, чем больше вы знаете Хаскель, тем больше вы цените то, что теория часто является наиболее практическим решением многих общих проблем программирования. Этой статьёй хочется подчеркнуть эту точку зрения тем, что мы смешаем имеющиеся в наличии теоретические основы и создадим чистую пользовательскую систему потоков.

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

Чем хороши свободные монады

Reading time10 min
Views19K
Предлагаю читателям «Хабрахабра» перевод статьи «Why free monads matter».

Интерпретаторы


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

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

Information

Rating
Does not participate
Location
Санкт-Петербург, Санкт-Петербург и область, Россия
Date of birth
Registered
Activity