• Критерий статистики для оценки изменения порядка элементов

    barmaley_exe
    @barmaley_exe
    Расстояние между перестановками. Над этим расстоянием уже можно ввести статистику. А вообще, посмотрите эту статью.
    Ответ написан
    Комментировать
  • Трудно ли попасть в Google? Какие критерии для этого нужны кроме образование в сфере IT?

    barmaley_exe
    @barmaley_exe
    А с чего Вы решили что нужно образование в сфере IT?

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

    А вообще, советую почитать этот блог.
    Ответ написан
    Комментировать
  • Как распознавать человека на чистом Javascript или Node.JS?

    barmaley_exe
    @barmaley_exe
    Если Вы умеете выделять области лиц на изображениях, то ваша задача сводится к классификации этих областей. Классификация — известная задача машинного обучения. А у OpenCV есть модуль для машинного обучения (если не знаете, какой выбрать, выбирайте Support Vector Machines).

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

    Собственно, пайплайн сведётся к приблизительно следующему:
    1. Находите область лица (тут используется ваш каскад Хаара)
    2. По области строите какое-либо feature-представление лица (например, HoG-дескриптор, советую поискать в сети, какие фичи люди используют для лиц).
    3. Это представлние скармливается обученному классификатору (обученому на таких же представлениях, разумеется)
    4. Классификатор выдаёт желанный ответ.

    Очень буду рад, если подскажете какие-нибудь решения на JavaScript или Node.js с OpenCV. Хотя, PHP с его OpenCV тоже подойдут
    Известный мне OpenCV является библиотекой, написанной на C++, поэтому неясно, с чего бы биндинги для Node.JS отличались от биндингов для php. Хотя ни с теми, ни с другими я не встречался, могу ошибаться.

    Если говорить о реализации, то я бы реализовал этот модуль целиком на C++, который бы скопилировал (хоть бы и как модуль Node.JS) и вызывал уже из ноды. Собственно, посмотрите туториалы OpenCV на эту тему, там что-то должно быть.

    У Google+ есть функция "находить меня на фотографиях друзей". Собственно, реализована она наверное как-то так же.
    Google и Facebook, вероятно, используют гораздо более крутые алгоритмы, чем я описал (ещё бы: ведь там работают лучшие из лучших). Например, Facebook'овый DeepFace строит 3D модели лица.
    Ответ написан
    1 комментарий
  • Есть ли универсальная формула для определения угла прямой по двум точкам?

    barmaley_exe
    @barmaley_exe
    Да, atan2 :-)
    Из определения видно, что это функция двух аргументов, т.е. одной точки, и возвращает она угол между осью абсцисс и радиус-вектором нужной точки. Соответственно, для получения угла наклона отрезка следует перенести центр системы координат в одну из точек.
    Ответ написан
  • Как защититься от CSRF?

    barmaley_exe
    @barmaley_exe
    Сессию он может и будет иметь правильную, но вот указать правильный (совпадающий с тем, что записан в сессии) токен в форме злоумышленник не сможет, ибо у него нет никакой возможности узнать его.
    Ответ написан
    Комментировать
  • Чем заняться/выучить?

    barmaley_exe
    @barmaley_exe
    Android — Java
    iPhone — Objective-C
    Ответ написан
    Комментировать
  • Какие читать книги по machine learning?

    barmaley_exe
    @barmaley_exe
    Для начала можно взять какие-нибудь онлайн курсы, а потом уже переходить к серьёзной литературе.

    Здесь есть ревью многих книг по ML. Они все на английском, да.

    Насчёт русскоязычной литературы ничего не скажу, но на machinelearning.ru есть краткий список литературы.
    Ответ написан
    Комментировать
  • Есть ли описания алгоритмов поиска в БД по не ключевому атрибуту?

    barmaley_exe
    @barmaley_exe
    Посоветую книгу Системы баз данных. Полный курс. В ней довольно подробно (и с примерами) описываются различные аспекты баз данных без привязки к конкретным системам.
    Ответ написан
    Комментировать
  • Любые ли беспроводные наушники совместимы с любыми смартфонами?

    barmaley_exe
    @barmaley_exe
    Если и наушники, и телефон поддерживают A2DP (и, особенно, AVRCP), то всё должно быть хорошо. Если нет — то Вы, похоже, наткнулись на очень древние устройства.
    Ответ написан
    Комментировать
  • Где сейчас в IT применяется теория вероятности?

    barmaley_exe
    @barmaley_exe
    Data mining использует методы машинного обучения, которое, по сути, математическая статистика и теория вероятностей.

    Например, в задаче классификации один из подходов заключается в определении вероятности принадлежности объекта к каждому из классов по описанию этого объекта.

    Ещё существует множество рандомизирвованных алгоритмов. Например, в quicksort'е выбирать опорный элемент можно случайно. Тогда вероятность того, что глубина рекурсии будет порядка O(n) (а, следственно, и сложность сортировки O(n²)) будет мала.
    Ответ написан
    Комментировать
  • Кто сможет рассказать про HSL, HSV, HUE, как они работают, как ими пользуются?

    barmaley_exe
    @barmaley_exe
    Я не дизайнер, а программист, поэтому напишу немного с программистской точки зрения:
    Как я понимаю, основной профит модели с выделенной компонентой lightness, например, заключается в возможности легко её варьировать. Т.е. если Вы задаёте цвет в RGB, то задать его же, но чуть темнее довольно сложно, а в моделях с выделенной яркостной составляющей гораздо проще.

    Например: возьмём цвет #79D312. Ему соответствует HSL(88, 84, 45). Если мы увеличим lightness на 5, то получим #86EA14, что даже не близко к исходному RGB значению.

    Соответственно, принцип работы приведённой Вами строки весьма прост — это затемнение исходного цвета.
    Ответ написан
    Комментировать
  • Снаряд не попадает 2 раза в одно место — а как с точки зрения теории вероятности?

    barmaley_exe
    @barmaley_exe
    Теория вероятностей изучает вероятностные модели, так что и в Вашем случае всё зависит от выбранной модели. Если противник методично стреляет в одну и ту же точку, то утверждение, очевидно, неверно. Если же существует несколько точек с ненулевой вероятностью попадания в них, то очевидно, что если принять p за вероятность попадания по некоторой выбранной точке, то вероятность попасть в неё два раза подряд будет p² < p.
    Однако, это «априорные» вероятности. Т.е. предполагается, что ожидаемого нами события (двух подряд попаданий) ещё не произошло. Если же мы уже знаем, что снаряд попал в некоторую точку, то это не имеет никакого отношения к месту попадания следующего снаряда. Тут важна ещё одна черта модели — независимость событий. Опять же, если обстрел ведётся так, чтобы ни одна точка не накрывалась дважды, то действительно, можно прятаться в воронке :-)
    Ответ написан
    1 комментарий
  • Вопрос во выбору ВУЗа для будущего программиста

    barmaley_exe
    @barmaley_exe
    Я разделяю мнение NiceForce в плане схемы «сперва попробовать». IT бурно развивается, ВУЗ даст лишь фундамент, всё остальное придётся осваивать самому. К тому же, имея некоторую базу (пусть и весьма посредственную), я уверен, учиться будет проще. Если Вы не собираетесь совсем уходить в программирование, то лучше заняться самообразованием (благо, всевозможные онлайн курсы и обучающие ресурсы значительно облегчают задачу).

    Если же Вы решили стать настоящим программистом, то я бы посоветовал СПбАУ. Отзывы о нём можно найти на хабре. Одним из плюсов (особенно в Вашей ситуации) является то, что предлагают они магистерскую программу. Т.е. вы потратите как минимум 2 раза меньше времени, получив весьма достойное образование. Традиционные схемы 4+-летней продолжительности мне кажутся избыточными и бесполезными в Вашем случае, поскольку дают часть общих (и посему бесполезных, вроде историй, культурологий и обж), часть весьма устарелых знаний. При некоторых ВУЗах есть «факультеты переподготовки специалистов», где, казалось бы, за те же год с небольшим расскажут всё нужное. Но про такие я ничего путного сказать не могу, «историй успеха» не слышал.

    С более детальной информацией о поступлении в АУ можно ознакомиться здесь. Обратите внимание на «Список вопросов для экзамена». Там указаны как темы, так и книги, в которых эти темы описаны. Если вдруг обнаружите, что многого не знаете — не пугайтесь, это не так страшно. Ну Вы же хотите знаний :-)
    Ответ написан
    Комментировать
  • Как эмулировать браузерный запрос к google при помощи cURL?

    barmaley_exe
    @barmaley_exe
    Если хотите прикинуться браузером, то лучший способ — быть им. Например, с помощью phantomJS.
    Ответ написан
    2 комментария
  • Смотрят ли работодатели на степень кандидата наук?

    barmaley_exe
    @barmaley_exe
    Тут недавно был пост по теме, вызвавший обширное обсуждение.
    Ответ написан
    1 комментарий
  • Задача со множествами, помогите решить

    barmaley_exe
    @barmaley_exe
    Обозначим: n — количество множеств, m — суммарное количество элементов во множествах, k — количество уникальных элементов в объединении всех множеств.

    Решение за O(m):
    Создать k множеств из одного элемента. Далее проходим по исходным множествам, считая каждое множество запросом на объединение. А именно, проходим по элементам множества и объединяем множество, соответствующее текущему элементу со множеством, соответствующим предыдущему. Чтобы делать это быстро пригодится структура система непересекающихся множеств. Эта структура позволяет выполнять нужные операции в среднем столь быстро, что можно считать их O(1) (хотя, строго говоря, асимптотика там не константная, см. статью).
    В результате такого прохода мы обработаем каждый из m элементов один раз, затратив на него ≈O(1) времени. Отсюда получается оценка O(m).
    В худшем случае такой алгоритм будет работать за O(n*k) (в каждом множестве можно избавиться от повторов, поэтому элементов в нём будет не более k).

    Мне кажется, предложенный алгоритм является оптимальным: в любом случае нужно рассмотреть каждый элемент каждого множества, что даёт оценку в минимум O(m) операций.
    Ответ написан
    5 комментариев
  • Еще раз. Выбор ВУЗа?

    barmaley_exe
    @barmaley_exe
    Я — студент Мат-Меха СПбГУ (ещё и не олимпиадник), так что расскажу со своей колокольни:
    Про ценность матмеха у работодателей — весьма и весьма странное заявление. Во всех известных конторах Питера (JetBrains, EMC, Яндекс, Гугл, Oracle, HP) можно найти кучу выпускников МатМеха. Эмпирические наблюдения показывают, что особенно справедливо это в отношении Oracle, съевшей Sun, которая располагала центром разработок в Питере (где, по слухам, разрабатывается вся Java), весьма удобно расположенным для студентов ММ. С другой стороны, абстрактный выпускник ММ действительно никого не интересует — вопрос лишь в том, что находится у Вас в голове (а при некоторой степени изворотливости, видимо, можно закончить ММ, проигнорировав почти всё).

    Однако, не всё так гладко: лекции по информатике, читаемой на первом курсе, в их текущем виде — редкостная гадость (это про мат. обеспечение, если что, про другие специальности не берусь судить) и к посещению не рекомендуются. Практика — другое дело, тут как повезёт и как вывернетесь. Есть фиговые преподаватели, есть крутые. Если не повезёт попасть к крутым, то можно просто ходить к ним на пары и сдавать домашки — обычно никто не против. Можно перевестись в другую группу. Математики различной много, да. Пожалуй, даже больше, чем нужно. Не все преподаватели одинаково хороши, но жить можно. Да и к информатике в программистские специальности запишите дискретную математику. Это хоть и математика, но куда более важная и приближенная к деятельности программиста область, чем всякие мат. анализы и топологии.
    Ещё одной ложкой дёгтя является территориальная удалённость ММ от Питера: добраться до ближайшей станции метро на электричке стоит 30 рублей и 45 минут Вашей жизни или же 70р. + 40 минут жизни в случае использования маршрутки. Есть ещё вариант со студенческим проездным и автобусом, но он ещё более времязатратен.

    Помимо упоминавшихся студпроектов, каждое лето действует летняя школа (говорят, бывают и зимние), во время которой студенты в течение нескольких недель прохлаждаются под кондиционерами постигают дао разработки в приближенных к реальным условиях.
    Не так давно JetBrains открыла свою лабораторию на Мат-Мехе. Также с мат-мехом сотрудничают EMC, Digital Design, HP.


    Тут я уж было написал большой пассаж о ШАДе и CS-центре, но потом заметил, что Вы уже в курсе.
    Ответ написан
  • Что изучать веб-программисту самоучке, кроме самого языка?

    barmaley_exe
    @barmaley_exe
    Онлайн-курсы чем не угодили? Там и теория, и практика и с кровати вставать не надо.

    Если говорить предметно, то:
    1. Алгоритмы. Must have для программиста. Тут можно посоветовать известную книгу Кормена и Ко «Алгоритмы: Построение и анализ». Практиковаться можно на известных архивах вроде тимуса или площадках вроде codeforces.
    2. Дискретная математика. Тоже важная область. Сюда можно приписать теорию графов, логику, комбинаторику, основы теории вероятностей. Сильно пересекается с предыдущим пунктом.

    3. Что касается матана и теории чисел: особо углубляться без нужды не советую. Из матана хватит дифференциально-интегрального исчисления (с базой в виде пределов, конечно же). Обязательно линейную алгебру: матрицы, вектора, определители. Это следует изучать вместе с аналитической геометрией. Каких-то книг я, к сожалению, порекомендовать не могу.
    Есть ещё вычислительная математика (как решать задачи матанализа, дифуров, алгебры на компьютере), но, мне кажется, чем ближе компьютеры становятся к обычному человек, чем глубже проникают в нашу жизнь, тем менее важной становится эта область.

    Ну и что-нибудь про проектирование, ООП и паттерны. По паттернам библией считается книга банды четырёх, по ООП вроде прилична книга Гради Буча «Объектно-ориентированный анализ и проектирование». Но я не читал её.
    Ответ написан
    6 комментариев
  • Что не так с реализацией алгоритма Хаффмана?

    barmaley_exe
    @barmaley_exe
    Для последнего байта нужно знать количество значащих бит. Ведь разные символы, сжатые по Хаффману, имеют различную битовую длину, а писать можно только байты.
    Может быть, этот случай Вами уже учтён, но при поверхностном взгляде я этого не увидел.
    Ответ написан
    Комментировать
  • Шаблоны в cpp, что и как?

    barmaley_exe
    @barmaley_exe
    И что же компилятор должен скомпилировать из cpp файла? Какой объектный файл получится?
    Реализацию шаблонных методов / функций нельзя выносить в отдельный translation unit, следуйте совету Chaos_Optima
    Ответ написан
    2 комментария