Как стать автором
Обновить
0
0
Сергей @SergeyM

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

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

Распознавание лиц человеческим мозгом: 19 фактов, о которых должны знать исследователи компьютерного зрения

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

Как обычно, предлагаю сокращенный перевод, полный текст доступен в оригинале.

Читать дальше →
Всего голосов 185: ↑181 и ↓4+177
Комментарии66

«Чужой» Dalvik для запуска Android-приложений на ОС Maemo/MeeGo

Время на прочтение1 мин
Количество просмотров5.1K
Компания Myriad Group сегодня анонсировала выпуск Alien Dalvik — ява-машины, позволяющей запускать приложения ОC Android на Maemo. Как заявляется в пресс-релизе, «Чужой» Dalvik умеет запускать без каких-либо изменений большинство приложений, собранных под Андроид, просто пересобрав программный apk-пакет.

Самое приятное в том, что все приложения запускаются в Alien Dalvik абсолютно нативно и выглядят как родные приложения под Maemo. Согласно пресс-релизу, эта ява-машина станет доступна для покупки под ОС MeeGo в этом году. Несмотря на то, что заявлена поддержка только MeeGo, в демонстрации участвует N900 с ее родной Maemo 5, поэтому пользователи данной железки могут скрестить пальцы в надежде, что и им перепадет будущее счастье.
Видео и еще немного слов под катом
Всего голосов 40: ↑36 и ↓4+32
Комментарии35

Онлайн-курсы Stanford University, Berkley и MIT в доступном виде

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


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

Пример такого поста: habrahabr.ru/post/139542

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

Уверен, что курсов по данным дисциплинам, информативнее и понятнее выложенных, в природе не существует.

Под катом ссылки и список того, что было выложено, что ещё предстоит выложить…
Читать дальше →
Всего голосов 98: ↑92 и ↓6+86
Комментарии34

Планирование задач в сервере при помощи boost.task

Время на прочтение10 мин
Количество просмотров9.5K
Недавно на профильном ресурсе один программист задал вопрос: «Что использовать в сервере ММО для работы с потоками?». Программист склонялся к Intel TBB, но даже не к базовым примитивам, а к кастомному планированию задач (task scheduling). Ну нравится TBB — ну и ладно. А немного позже я увидел исходники сервера ММО другого программиста, который недавно начал переписываться его с нуля для улучшения архитектуры. И там было очень много велосипедов, которые писались самим программистом вместо того что бы использовать сторонние компоненты такие как boost (к примеру класы обертки над pthread-ом, и это в 2010 году, когда boost.thread уже почти в стандарте). Была там реализована и поддержка пула потоков с планировщиком задач. Тема эта мне очень интересна и я начал копать информацию о готовых решениях планировки задач (как в TBB) и нашел boost.task, про что и решил написать.
Читать дальше →
Всего голосов 42: ↑39 и ↓3+36
Комментарии29

Cmake — собираем переносимые приложения для Mac Os X и Windows

Время на прочтение4 мин
Количество просмотров16K
image
Рано или поздно наступает тот момент, когда приложения из наших лабораторий, полных чудес, вкусных библиотек и красивых фреймворков начинают проситься в большой мир, на компьютеры простых людей, не искушённых в магии. На их компьютерах не то, что не стоят наши новомодные фреймворки и средства разработки, там даже простого компилятора днём с огнем не сыщешь. Не может наше приложение жить без библиотек, которые так редко встречаются в дикой природе, зачахнет оно без них, никогда не видать ему белого света…
Но не всё так печально.
За подробностями под хабракат
Всего голосов 32: ↑31 и ↓1+30
Комментарии15

Алгоритм сортировки Timsort

Время на прочтение6 мин
Количество просмотров150K
Timsort, в отличии от всяких там «пузырьков» и «вставок», штука относительно новая — изобретен был в 2002 году Тимом Петерсом (в честь него и назван). С тех пор он уже стал стандартным алгоритмом сортировки в Python, OpenJDK 7 и Android JDK 1.5. А чтобы понять почему — достаточно взглянуть на вот эту табличку из Википедии.



Среди, на первый взгляд, огромного выбора в таблице есть всего 7 адекватных алгоритмов (со сложностью O(n logn) в среднем и худшем случае), среди которых только 2 могут похвастаться стабильностью и сложностью O(n) в лучшем случае. Один из этих двух — это давно и хорошо всем известная «Сортировка с помощью двоичного дерева». А вот второй как-раз таки Timsort.

Алгоритм построен на той идее, что в реальном мире сортируемый массив данных часто содержат в себе упорядоченные (не важно, по возрастанию или по убыванию) подмассивы. Это и вправду часто так. На таких данных Timsort рвёт в клочья все остальные алгоритмы.
Читать дальше →
Всего голосов 293: ↑286 и ↓7+279
Комментарии63

Перестройка окна браузера

Время на прочтение11 мин
Количество просмотров20K
Два месяца назад Хенрик Энерот, дизайнер из шведской веб-студии Antrop, написал замечательный пост — Redesigning the browser window — о том, как должен выглядеть современный браузер.



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

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

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

Время на прочтение6 мин
Количество просмотров664K
На StackOverflow часто задают вопросы, подробно освещённые в документации. Ценность их в том, что на некоторые из них кто-нибудь даёт ответ, обладающий гораздо большей степенью ясности и наглядности, чем может себе позволить документация. Этот — один из них.

Вот исходный вопрос:
Как используется ключевое слово yield в Python? Что оно делает?

Например, я пытаюсь понять этот код (**):
def _get_child_candidates(self, distance, min_dist, max_dist):
    if self._leftchild and distance - max_dist < self._median:
        yield self._leftchild
    if self._rightchild and distance + max_dist >= self._median:
        yield self._rightchild

Вызывается он так:
result, candidates = list(), [self]
while candidates:
    node = candidates.pop()
    distance = node._get_dist(obj)
    if distance <= max_dist and distance >= min_dist:
        result.extend(node._values)
        candidates.extend(node._get_child_candidates(distance, min_dist, max_dist))
        return result


Что происходит при вызове метода _get_child_candidates? Возвращается список, какой-то элемент? Вызывается ли он снова? Когда последующие вызовы прекращаются?

** Код принадлежит Jochen Schulz (jrschulz), который написал отличную Python-библиотеку для метрических пространств. Вот ссылка на исходники: http://well-adjusted.de/~jrschulz/mspace/

Подробный и обстоятельный ответ
Всего голосов 141: ↑136 и ↓5+131
Комментарии41

Загрузка динамической библиотеки из памяти в Linux

Время на прочтение6 мин
Количество просмотров6.5K
В одном моем кроссплатформенном проекте мне понадобилась возможность проверять цифровые подписи плагинов перед загрузкой. Ни один из вариантов с созданием файла не является безопасным, так как можно подменить файл между проверкой подписи и его загрузкой, так же нельзя проверить подпись после загрузки, так как уже выполнились статические конструкторы. Поэтому необходимо загружать плагин, не создавая файла.

Перехватить функции open, mmap и прочие невозможно, так как ld.so слинкован с библиотекой си статически, исполняемые файлы, загруженные же своим загрузчиком, «неполноценны» (даже с перехватом функций в libdl): они не регистрируются в списке загруженных библиотек и/или их символы не видны через dlsym. Следовательно, остается только перехват системных вызовов.
Here be dragons
Всего голосов 45: ↑41 и ↓4+37
Комментарии26

RTCKit: API голосового и видео общения в браузере

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

Наиболее популярным протоколом IP-телефонии в настоящий момент является протокол SIP. Он позволяет взаимодействовать с большинством софтверных и железных телефонных компонентов, а также поддерживается многими сервисами. Существует несколько приличных реализаций стека данного протокола на языках C (PJSIP, Linphone) или Python (B2BUA, p2p-sip), с помощью которых легко встроить голосовые и видео коммуникации в настольное или серверное приложение.

Проблема


Совсем иначе обстоит дело с веб-приложениями: сегодняшние браузеры пока не поддерживают возможность использования телефонии без дополнительных плагинов. Работы в этом направлении, несомненно, ведутся. Есть некоторая надежда на проект WebRTC, поддерживаемый Google и W3C, но, к сожалению, даже он не является панацеей. Во-первых, перспектива его поддержки в Internet Explorer весьма туманна, а во-вторых, протокол SIP он все равно не поддерживает. И к тому же, эта технология — некоторое будущее. А что же делать, если есть желание встроить SIP-телефонию в веб-приложение уже сейчас?

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

Знакомство с межпроцессным взаимодействием на Linux

Время на прочтение11 мин
Количество просмотров206K
Межпроцессное взаимодействие (Inter-process communication (IPC)) — это набор методов для обмена данными между потоками процессов. Процессы могут быть запущены как на одном и том же компьютере, так и на разных, соединенных сетью. IPC бывают нескольких типов: «сигнал», «сокет», «семафор», «файл», «сообщение»…

В данной статье я хочу рассмотреть всего 3 типа IPC:
  1. именованный канал
  2. разделенная память
  3. семафор
Отступление: данная статья является учебной и расчитана на людей, только еще вступающих на путь системного программирования. Ее главный замысел — познакомиться с различными способами взаимодействия между процессами на POSIX-совместимой ОС.
Читать дальше →
Всего голосов 79: ↑78 и ↓1+77
Комментарии22

Популярные вопросы на собеседовании по C++ и ответы на них

Время на прочтение9 мин
Количество просмотров327K
Здравствуйте!

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

О том, что спрашивают на собеседовании у C++ программистов, а также об ответах на эти вопросы и пойдет речь в данном посте.
Читать дальше →
Всего голосов 199: ↑196 и ↓3+193
Комментарии174

Префиксная оптимизация регулярных выражений на Java

Время на прочтение3 мин
Количество просмотров4.8K
Я хочу рассказать о простом способе оптимизации регулярных выражений, а точнее словарей. Я видел некоторые проекты, которые оптимизируют конечные автоматы, пакеты которые делают быструю разметку словаря в тексте, но так чтобы просто взять словарь и собрать регулярное выражение, которое можно было бы передать любому движку регулярных выражений — такого пока не видел.
Читать дальше →
Всего голосов 17: ↑16 и ↓1+15
Комментарии44

Как правильно читать объявления в Си

Время на прочтение7 мин
Количество просмотров45K
Даже совсем зеленые программисты на Си, не испытывают проблем с чтением таких объявлений:
int foo[5]; // foo массив из 5 элементов типа int
char *foo; // foo указатель на char
double foo(); // foo функция возвращающая значение типа double

Но как только объявления становятся немного сложнее, проблематично точно сказать что это. Например:
char *(*(**foo[][8])())[];

Как же научиться их читать?
Всего голосов 125: ↑108 и ↓17+91
Комментарии88

Собираем данные с помощью Scrapy

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

scrapy

  • создать паука, выполняющего GET запросы,
  • извлекать данные из HTML документа,
  • обрабатывать и экспортировать данные.





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

Яндекс.Планшет

Время на прочтение1 мин
Количество просмотров8K
Планшетов становится больше, хороших и разных. А в Яндексе становится всё больше программ, предназначенных для мобильных устройств, в том числе планшетов. Так, для iPad у нас есть специальная версия Мобильных Яндекс.Карт. А для планшетов на базе Android у нас есть сразу несколько программ – их можно скачать в Андроид Маркете.

Недавно стартовали продажи нового планшета TM-7010 компании Texet. В нем уже установлены Яндекс.Карты, Яндекс.Метро и Яндекс.Почта, а также три виджета: Поиск, Пробки и Погода. Достаточно распечатать коробку и включить планшет, и вы сможете сразу же искать в интернете, смотреть карту города, проверить почту, узнать о дорожной ситуации.


Мы надеемся, что обладателям этого планшета наши программы окажутся полезными и нужными.

Мы готовы сотрудничать с компаниями, выпускающими планшеты. Если вы производите эти устройства и хотите, чтобы в них были установлены приложения Яндекса – пишите нам по адресу: offer@yandex-team.ru .
Всего голосов 50: ↑37 и ↓13+24
Комментарии28

MinHash — выявляем похожие множества

Время на прочтение4 мин
Количество просмотров25K
Категорически приветствую! В прошлый раз я писал о вероятностном алгоритме определения принадлежности элемента множеству, в этот раз будет про вероятностную оценку похожести. Не надо большого ума, чтобы додуматься до следующего показателя схожести двух множеств А и Б:

коэффициент Жаккара

То есть, количество элементов в пересечении делённое на количество элементов в объединении. Эта оценка называется коэффициентом Жаккара (Jaccard, поэтому «J»), коэффициент равен нулю, когда множества не имеют общих элементов, и единице, когда множества равны, в остальных случаях значение где-то посередине.

Как его посчитать?
Всего голосов 32: ↑31 и ↓1+30
Комментарии19

Хорошая новость для тех, кому нужен HPC, HA и просто SSI-кластер, наконец

Время на прочтение1 мин
Количество просмотров8.8K
У меня для вас есть хорошая новость. Кажется, я сегодня уломал отцов Kerrighed дебианизировать свои труды.

Что это означает для нас, для обычных людей? У вас есть компьютер, где стоит Ubuntu или ещё какой-то Дебиан-подобный Linux? Назовём его Компьютер №1. На нём вы сможете сделать что-то обычное, типа

apt-get install kerrighed-kernel...

ну, вероятно, придётся уж потратить и пару минут на конфигурацию. Далее, перезагрузив Ubuntu, вы увидите новоиспечённое ядро в grub-меню. Выбираете и попадаете в обычную Ubuntu с одним необычным свойством, назовём его "SSI with DRBL"…

Что за зверь «SSI with DRBL»?

Читать дальше →
Всего голосов 87: ↑84 и ↓3+81
Комментарии77

Python(x, y)

Время на прочтение9 мин
Количество просмотров54K
imagePython(x, y) — набор библиотек и программного обеспечения для численных расчетов, анализа и визуализации данных на основе Python. IDE представлены IDLE, Eclipse и Spyder, основой GUI избран Qt. Я расскажу вкратце о модулях, относящихся к самому Python, приведу несколько примеров их работы. Во время установки можно выбрать только то, что нужно, поэтому стоит разобраться что к этому нужному отнести. Кроме того, рассказ о модулях может пригодиться и сам по себе, поскольку их можно установить и по отдельности. Порядок следования модулей повторяет порядок оригинальной страницы и список чекбоксов установки.
Читать дальше →
Всего голосов 84: ↑82 и ↓2+80
Комментарии18

Номер телефона

Время на прочтение1 мин
Количество просмотров277K
Регулярное выражение для валидации номера телефона:

^((8|\+7)[\- ]?)?(\(?\d{3}\)?[\- ]?)?[\d\- ]{7,10}$

Ориентировано на российские мобильные + городские с кодом из 3 цифр (например, Москва).

Читать дальше →
Всего голосов 280: ↑166 и ↓114+52
Комментарии121
1

Информация

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