Как стать автором
Обновить
8
0
Иван Метальников @fairplay

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

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

Самообучение шахматной программы

Время на прочтение13 мин
Количество просмотров27K
Здравствуй, Хабр!

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

К сожалению, непосредственная подстановка скорректированных значений для фигур не усилила программу автора — во всяком случае, больше, чем в рамках статистической погрешности. Применение же исходного метода «в лоб» к другим параметрам оценочной функции давало несколько абсурдные результаты, алгоритм оптимизации явно нуждался в некоторой доработке. Тем временем, автор решил, что очередной релиз его движка станет заключительным в длинной серии версий, берущих своё начало в коде десятилетней давности. Была выпущена версия GreKo 2015, и дальнейшие изменения в ближайшем будущем не планировались.

Картинка для привлечения внимания

Всем интересующихся тем, что было дальше — после просмотра картинки для привлечения внимания добро пожаловать под кат.
Читать дальше →
Всего голосов 29: ↑29 и ↓0+29
Комментарии17

ES6 по-человечески

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

От переводчика:
Предлагаю вашему вниманию перевод краткого (действительно краткого) руководства по ES6. В нём можно ознакомиться с основными понятиями стандарта.
Оригинальный текст в некоторых случаях был дополнен или заменён на более подходящий источник. Например, часть определения ключевого слова const является переводом документации с MDN.
Чтобы лучше разобраться в некоторых концепциях (для выполнения качественного перевода) использовалось описание стандарта на сайте MDN, руководство "You Don't Know JS: ES6 & Beyond" и учебник Ильи Кантора.


Перевод выложил на Гитхаб: https://github.com/etnolover/ES6-for-humans-translation. В случае нахождения ошибок пишите, исправлю.
Ссылка на оригинальный текст: https://github.com/metagrover/ES6-for-humans


Update 22.07.2016: добавил опрос про const


Содержание



Читать дальше →
Всего голосов 62: ↑60 и ↓2+58
Комментарии87

Собеседование на программиста в Amazon

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

Представляю вашему вниманию перевод своей статьи Amazon software engineer interview, изначально опубликованной на английском на sobit.me.


Amazon - We Pioneer


Не так давно со мной связался технический рекрутер из Amazon. Компания организовывала трехдневное онсайт собеседование по найму программистов в их берлинский офис.


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


Если я не упомянул чего-то важного в статье, спрашивайте в комментариях. Постараюсь ответить максимально подробно.

Читать дальше →
Всего голосов 71: ↑62 и ↓9+53
Комментарии258

Фильтр Блума для веб-разработчиков

Время на прочтение4 мин
Количество просмотров17K
На хабре уже немало рассказано про фильтр Блума. Напомню, что это структура данных, которая позволяет проверить принадлежность элемента ко множеству, не храня при этом сам элемент. Существует вероятность ложно-положительного ответа, но отрицательный ответ всегда достоверен. В фильтре с точностью 1% требуется всего лишь несколько бит на элемент.

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

Однако есть трудности, которые могут сдерживать веб-разработчиков от применения фильтра Блума.
Читать дальше →
Всего голосов 17: ↑15 и ↓2+13
Комментарии11

Фильтр Блума

Время на прочтение3 мин
Количество просмотров62K
И снова здравствуйте! Сегодня я поведаю о фильтре Блума — структуре данных гениальной в своей простоте. По сути, этот фильтр реализует вероятностное множество всего с двумя операциями: добавление элемента к множеству и проверка принадлежности элемента множеству. Множество вероятностное потому, что последняя операция на вопрос «принадлежит ли этот элемент множеству?» даёт ответ не в форме «да/нет», а в форме «возможно/нет».

Как фильтр это делает?
Всего голосов 88: ↑85 и ↓3+82
Комментарии36

Анализ открытых данных в R, часть 1

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

Введение


На момент написания статьи большинство приложений на основе открытых данных (на официальных сайтах data.mos.ru/apps и data.gov.ru) представляют собой интерактивные справочники по инфраструктуре города или поселения с наглядной визуализацией и часто с опцией выбора оптимального маршрута. Цель этой и последующих публикаций состоит в том, чтобы привлечь внимание сообщества к обсуждению стратегий анализа открытых данных, в т.ч. направленных на прогнозирование, построение статистических моделей и извлечение информации, не представленной в явном виде. В качестве инструментария используется язык R и среда разработки RStudio.
Читать дальше →
Всего голосов 17: ↑12 и ↓5+7
Комментарии7

Вероятностные модели: байесовские сети

Время на прочтение8 мин
Количество просмотров86K
В этом блоге мы уже много о чём поговорили: были краткие описания основных рекомендательных алгоритмов (постановка задачи, user-based и item-based, SVD: 1, 2, 3, 4), о нескольких моделях для работы с контентом (наивный Байес, LDA, обзор методов анализа текстов), был цикл статей о холодном старте (постановка задачи, текстмайнинг, теги), была мини-серия о многоруких бандитах (часть 1, часть 2).

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


Читать дальше →
Всего голосов 49: ↑47 и ↓2+45
Комментарии35

Байесовская нейронная сеть — потому что а почему бы и нет, черт возьми (часть 1)

Время на прочтение16 мин
Количество просмотров91K
То, о чем я попытаюсь сейчас рассказать, выглядит как настоящая магия.

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

Итак, магия:


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

Читать дальше →
Всего голосов 83: ↑82 и ↓1+81
Комментарии64

Байесовская нейронная сеть — теперь апельсиновая (часть 2)

Время на прочтение16 мин
Количество просмотров37K
Как вы думаете, чего в апельсине больше — кожуры, или, хм, апельсина?



Предлагаю, если есть возможность, пойти на кухню, взять апельсин, очистить и проверить. Если лень или нет под рукой — воспользуемся скучной математикой: объем шара мы помним из школы. Пусть, скажем, толщина кожуры равна от радиуса, тогда , ; вычтем одно из другого, поделим объем кожуры на объем апельсина… получается, что кожуры что-то около 16%. Не так уж мало, кстати.

Как насчет апельсина в тысячемерном пространстве?

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

  • во-первых, в тысячемерном гиперапельсине кожуры больше, чем мякоти
  • а во-вторых, ее больше примерно в 246993291800602563115535632700000000000000 раз

То есть, каким бы странным и противоречивым это ни казалось, но почти весь объем гиперапельсина содержится в ничтожно тонком слое прямо под его поверхностью.

Начнем с этого, пожалуй.

Читать дальше →
Всего голосов 53: ↑52 и ↓1+51
Комментарии26

Фильтрация смс спама с помощью наивного байесовского классификатора (код на R)

Время на прочтение8 мин
Количество просмотров28K
Привет. В этом посте мы рассмотрим простую модель фильтрации спама с помощью наивного байесовского классификатора с размытием по Лапласу, напишем несколько строк кода на R, и, наконец, протестируем на англоязычной базе данных смс спама. Вообще, на хабре я нашел две статьи посвященные данной теме, но ни в одной не было наглядного примера, чтобы можно было скачать код и посмотреть результат. Также не было упоминания про размытие, что существенно увеличивает качество модели, без особых затрат усилий, в отличие, скажем, от сложной предобработки текста. Но вообще, запилить очередной пост про наивного байеса меня побудило то, что я пишу методичку для студентов с примерами кода на R, вот и решил поделиться инфой.

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

Нейронные сети на Javascript

Время на прочтение7 мин
Количество просмотров164K
image
Идея для написания этой статьи возникла прошлым летом, когда я слушал доклад на конференции BigData по нейронным сетям. Лектор «посыпал» слушателей непривычными словечками «нейрон», «обучающая выборка», «тренировать модель»… «Ничего не понял — пора в менеджеры», — подумал я. Но недавно тема нейронных сетей все же коснулась моей работы и я решил на простом примере показать, как использовать этот инструмент на языке JavaScript.

Мы создадим нейронную сеть, с помощью которой будем распознавать ручное написание цифры от 0 до 9. Рабочий пример займет несколько строк. Код будет понятен даже тем программистам, которые не имели дело с нейронными сетями ранее. Как это все работает, можно будет посмотреть прямо в браузере.
Читать дальше →
Всего голосов 58: ↑54 и ↓4+50
Комментарии79

Создаем приложение на JavaScript с помощью React Native

Время на прочтение27 мин
Количество просмотров155K
В этом уроке мы будем изучать React Native – фреймворк от компании Facebook для создания нативных приложений под iOS и Android. У него много общего с другим очень популярным фреймворком от Facebook – React Javascript, который предназначен для построения декларативных пользовательских интерфейсов.


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

Алан Кэй, создатель ООП, про разработку, Лисп и ООП

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

Если вы никогда не слышали про Алана Кэя, то как минимум слышали его знаменитые цитаты. Например, это высказывание 1971 года:
The best way to predict the future is to invent it.
Лучший способ предсказать будущее это изобрести его.


У Алана очень яркая карьера в информатике. Он получил Премию Киото и Премию Тьюринга за работу над парадигмой объектно-ориентированного программирования. Он был одним из первопроходцев в области персональных компьютеров и графического интерфейса, он разработал Smalltalk — один из первых самых влиятельных языков программирования всех времен.

У нас в Хекслете, особенно в чате, постоянно поднимается вопрос «что такое ООП» и «что имел ввиду Алан Кэй на самом деле». В этой заметке собраны интересные цитаты Алана о состоянии современной разработки, ООП и языке Лисп.
Читать дальше →
Всего голосов 42: ↑37 и ↓5+32
Комментарии139

Алгоритм вычисления комплексного корня полинома произвольной степени

Время на прочтение10 мин
Количество просмотров10K
Это завершение моей первой статьи: "Алгоритм расчёта вещественных корней полиномов".

Спасибо комментаторам, сделавшим более ясным мое слишком уж конспективное изложение метода Лобачевского. В самом деле, мне следовало явно написать, что квадрированный полином надо рассматривать как полином от аргумента x^2, где x — аргумент исходного полинома.

Главное же, там был описан простой алгоритм вычисления всех вещественных корней полинома произвольной степени.

Теперь на этом фундаменте будет построен вполне элементарный алгоритм вычисления комплексного корня полинома, не имеющего вещественных корней.
Читать дальше →
Всего голосов 27: ↑22 и ↓5+17
Комментарии3

Шаг за шагом: Трансляция данных на flightradar24

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


1. Введение


Моя текущая деятельность никак не связана с авиацией, но так случилось, что я заболел ею. В какой точно момент это произошло – сложно сказать, наверное, первый полет здорово поспособствовал этому. Через некоторое время я начал смотреть фильмы на авиационную тематику, интересоваться строением и отличиями в самолетах и искать, как связать свою деятельность хоть немного с моим увлечением. Так я познакомился с технологией ADS-B и ее неожиданным применением среди энтузиастов – радарспоттингом. На просторах Хабра не часто появляются статьи по данной тематике (раз, два). Поэтому здесь я хочу немного поговорить на тему радарспоттинга и подробно описать процесс создания самостоятельной трансляции данных на популярный ресурс flightradar24.
Итак, всем, кто интересуется (болен) темой авиации и наблюдения за самолетами, а также желает принять в этом свое непосредственное участие, добро пожаловать под кат.
Читать дальше →
Всего голосов 29: ↑29 и ↓0+29
Комментарии39

Palantir и отмывание денег

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


Palantir
[Контент удален по требованию Википедии]

На официальном канале Palantir есть видео с демонстрацией работы аналитика, использующего систему Palantir в ходе расследования отмывания денег. По-моему, как-то так видели пользу информационных технологий «отцы-основатели» Вэнивар Буш («As We May Think»), Дуглас Энгельбарт («The Mother of All Demos») и Джозеф Ликлайдер («Интергалактическая компьютерная сеть» и «Симбиоз человека и компьютера»), о которых я писал немного ранее.

(За помощь с переводом спасибо Ворсину Алексею)

Всего голосов 27: ↑23 и ↓4+19
Комментарии17

Задачка 165-летней давности не даёт покоя математикам

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


В 1850 году преподобный Томас Киркман, британский математик и настоятель прихода в Ланкашире, сформулировал невинно выглядящую головоломку в развлекательном журнале для любителей математики «Записная книжка леди и джентльменов»:

«Пятнадцать юных школьниц выходят на прогулку семь дней рядами по трое: нужно каждый день располагать их так, чтобы одна и та же пара школьниц никогда не встречалась дважды в одном ряду».
Читать дальше →
Всего голосов 31: ↑28 и ↓3+25
Комментарии11

Математика на пальцах: мендосинский двигатель и теорема Ирншоу

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

Постановка задачи


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

Вот на этом видео крайне подробно описан (на русском языке) принцип работы:



Но ещё больше самого двигателя мне показалась любопытной следующая вещь. В описании этого видео Дмитрий Коржевский написал следующую вещь: «Боковую опору заменить магнитом НЕВОЗМОЖНО!!! Не задавайте больше этот вопрос!»

Читать дальше →
Всего голосов 98: ↑97 и ↓1+96
Комментарии226

BEM с человеческим лицом

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

Звучная аббревиатура BEM пришла к нам из лабораторий Яндекса. Там, как и в случае с XSLT, применение BEM решили возвести в абсолют: под BEM'ом в Яндексе понимают целое семейство утилит и подходов, объединенных единой идеологией блочной архитектуры веб-приложений. Как любая тоталитарная система, BEM требует соблюдения строгих правил при разработке, не редко вступающих в конфликт со здравым смыслом небольших проектов, не сравнимых по ресурсам с Яндексом. И да, то самое чувство, когда читаешь официальные доки по BEM.


Однако, как часто бывает в процессе эволюции больших систем, под давлением интеллекта и безлимитных сроков рождается технологический алмаз, настолько же маленький и самостоятельный, насколько и ценный, который огранят уже другие. Да, BEM с его спасительной строгостью — это явное откровение. Каждый, кто на моих глазах причащался, мгновенно становился счастливым. Однако, после первой волны наслаждения приходит осознание, что второй подход к этому снаряду может порвать ментальные связки по всему объему мозга. И вот уже слышны жалобы на слишком большую сложность освоения, на чрезмерную многословность, на (внимание!) увеличение количества мегабайт в HTML и CSS, и кто знает на что еще, не относящееся к делу.


Соглашусь, трудно взять и начать писать BEM без разбега: и нотация глаз колет, и старые трюки не проходят, и думать приходится системно. И вообще, писали как-то годами без BEM'а и писать будем! А ведь для легкого и непринужденного преодоления порога вхождения нужно сделать всего два движения. Во-первых, понизить сам порог, смягчив BEM. И во-вторых, немного подтянуться самим. Тогда переход будет ровненьким и мы мягко вкатимся в эру читабельного и поддерживаемого CSS.

Как мы дошли до жизни такой?
Всего голосов 17: ↑11 и ↓6+5
Комментарии56

AlphaGo на пальцах

Время на прочтение5 мин
Количество просмотров61K
Итак, пока наши новые повелители отдыхают, давайте я попробую рассказать как работает AlphaGo. Пост подразумевает некоторое знакомство читателя с предметом — нужно знать, чем отличается Fan Hui от Lee Sedol, и поверхностно представлять, как работают нейросети.
Читать дальше →
Всего голосов 71: ↑69 и ↓2+67
Комментарии46

Информация

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