Pull to refresh
0
0
Send message

Лекция Дмитрия Ветрова о математике больших данных: тензоры, нейросети, байесовский вывод 

Reading time2 min
Views49K
Сегодня лекция одного из самых известных в России специалистов по машинному обучению Дмитрия Ветрова, который руководит департаментом больших данных и информационного поиска на факультете компьютерных наук, работающим во ВШЭ при поддержке Яндекса.

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



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

Делаем видеоконференции в браузере за 10 минут

Reading time9 min
Views30K
Обратите внимание, что данная статья устарела. Актуальная информация на тему создания видеоконференций доступна по ссылке.
Видеоконференции через Skype уже давно заняли свое место в ежедневных коммуникациях, пользователи оценили удобство такого формата общения и все больше компаний стараются проводить встречи именно в этом формате. Но у скайпа есть большой минус: это отдельное приложение, которое трудно интегрировать в другой сервис. А сервисов, куда можно с пользой для дела встроить видеоконференции великое множество, начиная от систем бизнес-автоматизации и заканчивая сервисами группового обучения иностранному языку. Сегодня я покажу вам, как с помощью подручных средств и voximplant за 10 минут собрать движок видеоконференций, работающий прямо из браузера на webRTC и спозволяющий подключаться к конференции с обычных телефонов.
Читать дальше →

XMPP отстой

Reading time5 min
Views61K
У нас было социальное приложение без чата, 2 недели на его разработку и абсолютно никаких знаний о существующих протоколах для реализации IM. Не то что бы это был необходимый набор для того чтобы выстрелить себе в ногу, но в процессе работы это произошло. Несколько раз.

— Паша, нам нужно сделать чат.
— Да всё просто, у меня тут знакомые использовали XMPP для чата в своём приложении.

Какие у нас были требования? Да ничего особенного, простой обмен сообщениями между пользователями, без групповых разговоров. Платформы: веб (с поддержкой работы через вебсокеты), Android, iOS. Создание пользователей должно автоматически производится только нашим серверным приложением. Конечно неплохо было бы иметь отметки о том прочитано сообщение или нет(предполагается, что приложение может быть использовано с разных девайсов), и иметь возможность просмотреть лог чата. В общем стандартный функционал для мгновенного обмена сообщениями в 2015 году. Бонусные баллы начисляются если сервер умеет горизонтально масштабироваться.
Читать дальше →

Пишем на JS в функционально-декларативном стиле

Reading time9 min
Views22K


Введение


Я люблю функциональные языки за их простоту, ясность и предсказуемость. Пишу в основном на Elixir / Erlang / OTP, пробовал другие языки, но Erlang с его акторами пока мне гораздо ближе чем например Lisp или Haskell. Как известно Erlang == web, а у чего-либо написанного для веба порой бывает клиентский веб-интерфейс: html, css, js — содержимое. Увы js это стандарт современного веба, для него есть библиотеки почти под любую задачу почти на все случаи жизни, да и это более-менее единственное доступное средство что-то выполнить в браузере на стороне клиента. Поэтому нам всё-таки нужен js. Сперва мне подумалось «Лямбды и функции высшего порядка есть, значит писать на js будет просто. Выучу синтаксис и буду писать так же как пишу в Erlang/Lisp/Haskell». Как же я ошибался.
Читать дальше →

Google сломал GCM в Chrome

Reading time3 min
Views8.2K
image

На Google IO была показана обновленная версия Google Cloud Messaging. Была представлена версия API для iOS, показан отчет по количеству уведомлений, приложений и т.д. публика ликовала. Все было хорошо, пока 2-3 дня назад GCM в хроме начисто не отвалилось. Если точнее, приходит только около 2-10% Push-сообщений.

Проблеме подвержены как дополнения Google Chrome, так и сайты отправляющие Push через Push API используя Service Workers. Наш проект попал прямо по двум фронтами в итоге, приём сообщения работает только в Chrome на Android и через приложение на Android. Ведется разработка реализации на WebSocket для работы при открытой вкладке.
Подробнее под катом.
Читать дальше →

Потоковая обработка данных при помощи Akka

Reading time5 min
Views40K
Привет, Хабр! Все привыкли ассоциировать обработку больших данных с Hadoop (или Spark), которые реализуют парадигму MapReduce (или его расширения). В этой статье я расскажу о недостатках MapReduce, о том, почему мы приняли решение отказываться от MapReduce, и как мы приспособили Akka + Akka Cluster на замену MapReduce.


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

Основные отличия Java IO и Java NIO

Reading time7 min
Views236K
Когда я начал изучать стандартный ввод/вывод в Java, то первое время был немного шокирован обилием интерфейсов и классов пакета java.io.*, дополненных еще и целым перечнем специфических исключений.

Потратив изрядное количество часов на изучение и реализацию кучи разнообразных туториалов из Интернета, начал чувствовать себя уверенно и вздохнул с облегчением. Но в один прекрасный момент понял, что для меня все только начинается, так как существует еще и пакет java.nio.*, известный ещё под названием Java NIO или Java New IO. Вначале казалось, что это тоже самое, ну типа вид сбоку. Однако, как оказалось, есть существенные отличия, как в принципе работы, так и в решаемых с их помощью задачах.

Разобраться во всем этом мне здорово помогла статья Джакоба Дженкова (Jakob Jenkov) – “Java NIO vs. IO”. Ниже она приводиться в адаптированном виде.

Поспешу заметить, что статья не является руководством по использованию Java IO и Java NIO. Её цель – дать людям, начинающим изучать Java, возможность понять концептуальные отличия между двумя указанными инструментами организации ввода/вывода.
Читать дальше →

9 анти-паттернов, о которых должен знать каждый программист

Reading time9 min
Views151K
В программировании самокритика – это умение распознать контрпродуктивные решения в дизайне, коде, процессах и поведении. Знание о вредных шаблонах решений полезно для программиста. В этой статье я опишу анти-паттерны, которые я встречал на своём личном опыте время от времени.

Некоторые из них напрямую или косвенно связаны с когнитивными искажениями человеческого сознания – в этих случаях я даю ссылки на соответствующие вики-статьи. Также интересен список известных когнитивных искажений.

1 Преждевременная оптимизация


В 97% случаев надо забыть об эффективности малых частей программы: преждевременная оптимизация – корень всех зол. Но в 3% случаев об оптимизации забывать не нужно.
Дональд Кнут

Хотя никогда зачастую лучше, чем прямо сейчас
Тим Питерс, Зен языка Python


Что это

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

Почему плохо

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

Как избежать

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

node.js для Java-разработчиков: первые шаги

Reading time9 min
Views99K


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

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

Думаю, что данная статья будет полезна не только разработчикам из мира Java, но и всем, кто начинает работу с платформой node.js.


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

Как я нашел лучший в мире язык программирования. Часть Йо (2.72)

Reading time21 min
Views116K
Поскольку после второй части у меня случился перерыв на работу, я поимел возможность получить некоторый фидбек, который я хоть и еще не обработал, все же заставляет меня написать внеплановую часть Йо, которая мне кажется важной для дальнейшего разговора. С тем же перерывом на работу связана задержка третьей части, прошу меня извинить тех, кто действительно ждал и пока не дождался.
Читать дальше →

Нативная реализация OmniDirectional теней в DirectX11

Reading time13 min
Views24K
image

Привет. Продолжая рассказывать про различные технологии из графического геймдева — хотел бы рассказать о том, как в DirectX 11 удобно работать с тенями. Расскажу о создании Point-источника света с полным использованием инструментов GAPI DirectX11, затрону такие понятия, как: Hardware Depth Bias, GS Cubemap Render, Native Shadow Map Depth, Hardware PCF.
Исходя из легкого серфинга по интернету – я пришел к выводу, что большинство статей о тенях в DX11 неверны, реализованы не совсем красиво или с использованием устаревших подходов. В статье постараюсь сравнить реализацию теней в DirectX 9 и DirectX 11. Все ниже описанное так же справедливо и для OpenGL.

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

Установка OpenStreetMap Nominatim для нахождения широты и долготы по введенному адресу

Reading time6 min
Views62K
image

Хотел бы поведать свою историю об установке геокодера Nominatim на выделенный сервер. Изначально предполагалось, что эта задача займёт у меня около 5-7 часов, но не тут то было… Поэтому было решено написать статью c описанием разворачивания Nominatim на сервер до полной работоспособности сайта. Но обо всём по порядку.
Читать дальше

Моделирование объектов для анимации на Canvas

Reading time9 min
Views12K
Быстрый и простой API, поддержка браузерами — это то, что делает Canvas привлекательным. Но, как это часто бывает, простота одновременно является и слабой стороной. Без труда, например, можно вывести прямоугольник, окружность, линию или навесить изображение. Но разработать на этой простой основе полезный контент — задача чуть сложнее.

Изображение - сила canvas

На примере разработки игры, показан подход к анимации и управлению игровым объектом.
Читать дальше →

Видео. Пишем полноценное клиент-сервер приложение под Android

Reading time2 min
Views75K
Приветствую вас, уважаемый Developer!

Хочу поделиться с вами серией уроков, которые мы пишем на нашем канале. Цель данных уроков поделится своими знаниями в сфере Java/Android Development-а, показать как мы строим процесс разработки, и в итоге написать готовое приложение, которое будет общаться с сервером.
Читать дальше →

Как Яндекс строил дата-центр с нуля

Reading time10 min
Views98K
Этой весной мы получили разрешение на эксплуатацию нашего нового дата-центра. Первого, для которого всё, даже здание, команда Яндекса спроектировала и построила с нуля. За те 18 лет, которые люди ищут в интернете Яндексом, мы прошли большой путь от сервера под столом одного из наших разработчиков до постройки дата-центра, где используем оборудование собственной разработки. По дороге у нас появилось несколько дата-центров в России, в которые мы перестроили прекратившие когда-то свою работу заводы и цеха.



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

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

Внезапный диван леопардовой расцветки

Reading time8 min
Views83K
Если вы интересуетесь искусственным интеллектом и прочим распознаванием, то наверняка уже видели эту картинку:


А если не видели, то это результаты Хинтона и Крижевского по классификации ImageNet-2010 глубокой сверточной сетью

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

Это вообще довольно любопытный результат, если задуматься. Потому что… скажем, вы знаете, как отличить одного большого пятнистого котика от другого большого пятнистого котика? Я, например, нет. Наверняка есть какие-то зоологические, достаточно тонкие различия, типа общей стройности/массивности и пропорций тела, но мы же все-таки говорим о компьютерном алгоритме, которые до сих пор допускают какие-то вот такие достаточно глупые с человеческой точки зрения ошибки. Как он это делает, черт возьми? Может, тут что-то связанное с контекстом и фоном (леопарда вероятнее обнаружить на дереве или в кустах, а гепарда в саванне)? В общем, когда я впервые задумался над конкретно этим результатом, мне показалось, что это очень круто и мощно, разумные машины где-то за углом и поджидают нас, да здравствует deep learning и все такое.

Так вот, на самом деле все совершенно не так.
под катом пятна

Игровой сервер на Scala + Akka: Разбор примера

Reading time7 min
Views27K


В прошлый раз я описал в общих чертах использование Akka для игрового сервера.
Сейчас разберем простой, но тем не менее рабочий пример сервера.
Подробности

AngularJS против Backbone.js против Ember.js

Reading time6 min
Views50K
image

1 Введение


В статье мы сравним три популярных MV* фреймворка для веб-разработки: AngularJS, Backbone и Ember. Выбор подходящего фреймворка для проекта кардинально влияет на вашу возможность выполнять задачи вовремя и поддерживать ваш код в будущем. Вам нужен надёжный, проверенный фреймворк, но вы не хотите, чтобы он вас ограничивал. Веб быстро развивается, и старые методики уходят в прошлое. Займёмся же подробным их сравнением.

2 Познакомьтесь с фреймворками


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

AngularJS родился в 2009 как часть большего коммерческого продукта GetAngular. Вскоре после этого Миско Хевери, один из инженеров-основателей GetAngular, сумел воссоздать при помощи этого продукта веб-приложение, состоявшее из 17 тысяч строк кода и делавшееся в течение 6 месяцев, всего за 3 недели, и уложиться при этом в тысячу строк кода. В Google впечатлились таким фактом и стали спонсировать проект с открытым кодом AngularJS. Среди его возможностей – двустороннее связывание данных, инъекции зависимостей, простой для тестирования код и расширение возможностей HTML при помощи директив.

Backbone.js – легковесный MVC-фреймворк, родившийся в 2010. Популярность набрал в качестве альтернативы тяжёлым фреймворкам вроде ExtJS.

Ember родом из 2007 года. Он начинался как SproutCore MVC фреймворк, и сначала его разрабатывали SproutIt, затем – Apple. В 2011 году его форкнул Иехуда Кац, один из главных программистов в проектах jQuery и Ruby on Rails.
Читать дальше →

100 лет спустя: заполненные пропуски в записях Рамануджана

Reading time4 min
Views53K

Перевод поста Олега Маричева и Майкла Тротта "After 100 Years, Ramanujan Gap Filled".
Скачать файл, содержащий текст статьи, интерактивные модели и весь код, приведенный в статье, можно здесь.
Выражаю огромную благодарность Кириллу Гузенко за помощь в переводе.

Сто лет назад Сриниваса Рамануджан и Г. Х. Харди начали знаменитую переписку о настолько поразительных вещах в математике, что Харди описал это как нечто едва возможное, чтобы в это поверить. Первого мая 1913-го года Рамануджан получил постоянную должность в Университете Кембриджа. Через пять лет и один день он стал научным сотрудником королевского общества, а его группа стала самой престижной на тот момент научной группой в мире. В 1919-ом году Рамануджан смертельно заболел во время длительного путешествия на пароходе Нагоя в Индию, которое проходило с 27-го февраля по 13-ое марта. Всё, что у него было — блокнот и ручка (да, никакой Mathematica в то время), и перед смертью он хотел оставить на бумаге свои уравнения. Он утверждал, что у него есть решения для целого ряда функций, однако ему хватало времени записать лишь несколько, прежде чем перейти к другим областям математики. Он записал следующее неполное уравнение и 14 других (см. ниже), из которых только три на данный момент решены.

One of Ramanujan's unsolved equations

Он умирал несколько месяцев, вероятно, от печёночного амёбиаза. Его последний блокнот был отправлен Университетом Мадраса к Г. Х. Харди, который затем передал его математику Г. Н. Уотсону. В 1965-ом году, когда Уотсон умер, директор колледжа нашёл блокнот в его офисе, отбирая документы на уничтожение. Джордж Эндрюс заново открыл этот блокнот в 1976 году и, наконец, в 1987 году он был опубликован. Брюс Берндт и Эндрюс писали об утерянном Блокноте Рамануджана в серии книг (Часть 1, Часть 2, и Часть 3). Как сказал Берндт: «Открытие этого „утерянного блокнота“ вызвало бум в математическом мире такой же, какой могло бы вызвать открытие десятой симфонии Бетховена в мире музыкальном».
Читать дальше →

Поиск периодических элементов защиты Паспорта РФ с помощью преобразования Фурье

Reading time7 min
Views31K
Многие документы содержат защитные элементы, такие как голограммы, водяные знаки, гильош и т.д. В процессе сканирования таких документов возникает проблема — защитные элементы мешают системам распознавания (OCR). При разработке Smart PassportReader мы провели исследование, направленное на поиск и устранение подобных защитных элементов с изображений документов.

Рассмотрим пример паспорта гражданина РФ, на котором легко увидеть периодический голографический узор.



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

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

Information

Rating
Does not participate
Registered
Activity