Pull to refresh
3
0.5
Дмитрий Померанцев @pda0

User

Send message

Парсим русский язык

Reading time8 min
Views70K

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

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

"Мама мыла раму":

(предложение
    (именная гр. (сущ мама))
    (глаг. гр. (глаг мыла)
        (именная гр. (сущ раму)))
    (. .)))


Это называется синтаксическим деревом предложения. В графическом виде его можно представить следующим образом (в упрощенном виде):

Читать дальше →
Total votes 128: ↑124 and ↓4+120
Comments97

Доказано, что игра Super Mario является NP-полной задачей

Reading time1 min
Views7.8K


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

Учёные проанализировали следующие игры: Mario, Donkey Kong, Legend of Zelda, Metroid и Pokemon. Как выяснилось, ко всем играм серий Mario и Donkey Kong применимо определение о NP-полноте. Отдельные игры других серий принадлежат к классу NP, а некоторые игры — к классу PSPACE.
Читать дальше →
Total votes 72: ↑54 and ↓18+36
Comments34

Составление строк из множества частей

Reading time3 min
Views12K
Роберто Иерусалимши рассказывает, как эффективно соединять немодифицируемые строки.
Несмотря на то, что код написан на Lua, алгоритм подойдёт и для других языков, в которых строки нельзя изменять.
Читать дальше →
Total votes 38: ↑28 and ↓10+18
Comments32

Панорама солнечного гало

Reading time1 min
Views32K

image
Интересное явление заснял Юрий Гнатюк на острове Соловки 24 Августа 2013 года — солнечное гало. Причем не просто гало, а ещё ряд паргелиев, зенитная дуга, два вида гало, паргелийная дуга, а также редкие ложные Солнца, которые отстоят от Солнца на 120°.

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

Панорама: http://gnatyuk.ru/3d/galo/1.html
Также, кого заинтересовали эти явления, то могу предложить посетить лучший ( по моему мнению) сайт на эту тему: http://www.atoptics.co.uk/halosim.htm
Total votes 82: ↑70 and ↓12+58
Comments27

Обзор метрик мобильного приложения

Reading time13 min
Views68K


Итак, вы опубликовали в сторе своё первое приложение. Начались первые скачивания, и сейчас самое время начать снимать метрики, чтобы проанализировать их и выявить возможные слабые места. Аналитика — важнейший инструмент в мире мобильных приложений. Она позволяет понять психологию пользователя, понять, как он взаимодействует с мобильным приложением, и в результате поможет сделать ваше детище лучше и прибыльнее.
Читать дальше →
Total votes 14: ↑13 and ↓1+12
Comments5

Пошаговая инструкция настройки LXD на Ubuntu 16.04

Reading time10 min
Views30K

Данная инструкция содержит пошаговый алгоритм установки и настройки LXD. Инструкция рассматривает следующие темы:


— Установка и запуск контейнера.
— Настройка сети.
— Настройка статических IP адресов для контейнеров.
— Настройка NAT и Iptables.
— Создание бэкапов и восстановление из них.
— Отличительные особенности от Docker.

Читать дальше →
Total votes 27: ↑25 and ↓2+23
Comments10

Управление контейнерами с LXD

Reading time7 min
Views34K
LXD Containers

Продолжаем наш цикл статей о контейнеризации. Если первые две статьи (1 и 2) были посвящены теории, то сегодня мы поговорим о вполне конкретном инструменте и об особенностях его практического использования. Предметом нашего рассмотрения будет LXD (сокращение от Linux Container Daemon), созданный канадцем Стефаном Грабе из компании Canonical.
Читать дальше →
Total votes 28: ↑28 and ↓0+28
Comments21

Почему существует «серый» рынок компьютерных игр

Reading time4 min
Views43K
image

Любой, кто интересовался игровым или околоигровым контентом в сети, будь то видео на youtube, игровые паблики в социальных сетях или просто стримы на Twitch, сталкивался с рекламой площадок G2A.com, gabe-game-easy-и-прочих-сторов.

Этой рекламы, вместе с рекламой различных сервисов ставок и не самых чистоплотных скин-рулеток настолько много, что часть аудитории уже перестала обращать на нее внимание, ведь кто поведется на текст «Купи любимую игру в два раза дешевле!», когда это возможно только в период скидок?

Как вообще подобные площадки существуют столько лет и чем они занимаются?
Читать дальше →
Total votes 36: ↑27 and ↓9+18
Comments77

Пишем на языке С/C++ в Windows под KolibriOS

Reading time7 min
Views22K
image
KolibriOS – миниатюрная операционная система, ядро и большинство программ которой написано на языке ассемблер. Это, конечно же, не означает, что другим языкам программирования путь в KolibriOS закрыт. К примеру, за время эволюции этой операционной системы было несколько попыток разработать инструментарий или адаптировать библиотеки для создания приложений на языке C/C++. В репозитории KolibriOS до сих пор есть работающие примеры, использующие ранние наработки адаптации C/C++ кода, например (root)/programs/games/kosilka или (root)/programs/system/shell, использующие разные подходы и обертки C/Asm.

На текущее время самой перспективной из существующих библиотек, на мой взгляд, является newlib. Она состоит из адаптированной libc, C-оберкой над основными coreAPI функциями и toolchain’а для сборки.

К сожалению, в KolibriOS нативного компилятора C/C++ еще не существует, текущий toolchain предполагает сборку приложений в ОС Windows или Linux.

Данная статья является инструкцией по настройке newlib для ОС Windows.

Читать дальше →
Total votes 44: ↑40 and ↓4+36
Comments4

Portgen — обходим фильтрацию портов

Reading time4 min
Views22K
Привет, GT!

Не растекаясь мыслями по деревьям, приступим к делу. Для обеспечения себя быстрым и нецензурируемым интернетом я уже давно использую стандартную схему: OpenVPN и самый простой VPS за рубежом. В качестве транспортного протокола используется UDP.

Проблема
В один «прекрасный» момент я обнаружил, что VPN отвалился и больше не поднимается. Не буду описывать долгое исследование проблемы — скажу сразу итог: помогло изменение номера порта. Помогло ненадолго: через пару-тройку дней туннель оборвался снова и снова был восстановлен сменой порта.
Читать дальше →
Total votes 17: ↑15 and ↓2+13
Comments61

Механизм атомарного коммита в SQLite

Reading time23 min
Views29K
Эта статья — частичный перевод одной интересной статьи с sqlite.org, в которой подробно рассматривается реализация транзакций в SQLite. На самом деле я очень редко работаю с SQLite, но тем не менее мне очень понравилось это чтиво. Поэтому если хотите просто развить кругозор — будет интересно почитать. Первые две секции не включены в перевод, так как там нет ничего интересного, да и мне лень их набивать (пост и так огромный).

3.0 Однофайловый коммит

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

3.1 Начальное состояние


Состояние системы, когда соединение с БД только что было поднято, поверхностно изображено на рисунке справа. Справа показана информация, которая хранится на энерго-независимом носителе. Каждый прямоугольник — это сектор. Синий цвет говорит о том, что этот сектор содержит оригинальные данные. Посередине изображён дисковый кеш операционной системы. В самом начале нашего примера кеш холодный, это изображено белым цветом. На левой части рисунка — содержимое оперативной памяти процесса, который использует SQLite. Соединение с БД только что было открыто, и никакой информации прочитано не было.

Читать дальше →
Total votes 80: ↑79 and ↓1+78
Comments5

Вероятностное программирование

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



Лекция была прочитана Борисом hr0nix Янгелем на факультете компьютерных наук, открытом в Высшей школе экономики при поддержке Яндекса. Сам Борис окончил ВМиК МГУ и Школу анализа данных Яндекса. Работал в Microsoft Research Cambridge в группе Кристофера Бишопа над фреймворком Infer.NET. Сейчас Борис — ведущий разработчик поиска Яндекса.

Под катом — расшифровка рассказа.
Читать дальше →
Total votes 44: ↑41 and ↓3+38
Comments15

Вероятностное программирование – ключ к искусственному интеллекту?

Reading time12 min
Views38K

Немного воды


Уже более полутора лет назад прошла новость о том, что «DARPA намерено совершить революцию в машинном обучении». Конечно, DARPA всего лишь выделила деньги на исследовательскую программу, связанную с вероятностным программированием. Само же вероятностное программирование существует и развивается без DARPA достаточно давно, причем исследования ведутся, как в ведущих университетах, таких как MIT, так и в крупных корпорациях, таких как Microsoft. И вовсе не зря DARPA, Microsoft, MIT и т.д. обращают пристальное внимание на эту область, ведь она по-настоящему перспективна для машинного обучения, а, может, и для искусственного интеллекта в целом. Говорят, что вероятностное программирование для машинного обучения будет играть ту же роль, что и высокоуровневые языки для обычного программирования. Мы бы привели другую параллель – с ролью Пролога, которую он сыграл для старого доброго ИИ. Вот только в Рунете по данной теме до сих пор можно найти лишь единичные ссылки, и то в основном содержащие лишь описания общих принципов. Возможно, это связано с тем, что потенциал вероятностного программирования еще только начал раскрываться и оно не стало основным трендом. Однако на что же способны или будут способны вероятностные языки?
Читать дальше →
Total votes 41: ↑39 and ↓2+37
Comments25

Используем Secure Boot в Linux на всю катушку

Reading time17 min
Views116K


Технология Secure Boot нацелена на предотвращение исполнения недоверенного кода при загрузке операционной системы, то есть защиту от буткитов и атак типа Evil Maid. Устройства с Secure Boot содержат в энергонезависимой памяти базу данных открытых ключей, которыми проверяются подписи загружаемых UEFI-приложений вроде загрузчиков ОС и драйверов. Приложения, подписанные доверенным ключом и с правильной контрольной суммой, допускаются к загрузке, остальные блокируются.


Более подробно о Secure Boot можно узнать из цикла статей от CodeRush.



Чтобы Secure Boot обеспечивал безопасность, подписываемые приложения должны соблюдать некоторый «кодекс чести»: не иметь в себе лазеек для неограниченного доступа к системе и параметрам Secure Boot, а также требовать того же от загружаемых ими приложений. Если подписанное приложение предоставляет возможность недобросовестного использования напрямую или путём загрузки других приложений, оно становится угрозой безопасности всех пользователей, доверяющих этому приложению. Такую угрозу представляют загрузчик shim, подписываемый Microsoft, и загружаемый им GRUB.


Чтобы от этого защититься, мы установим Ubuntu с шифрованием всего диска на базе LUKS и LVM, защитим initramfs от изменений, объединив его с ядром в одно UEFI-приложение, и подпишем его собственными ключами.

Читать дальше →
Total votes 71: ↑71 and ↓0+71
Comments28

Сайт GameTutorials сделал все свои 350 уроков по программированию игр бесплатными

Reading time1 min
Views71K
image

Сайт GameTutorials, известный своими уроками по C/C++/Win32/OpenGL/Direct3D/C#/Java, открыл все свои материалы для свободного изучения. Все уроки проверены на совместимость с Visual Studio 2013, в самом ближайшем будущем ожидаются уроки по Unreal Engine и Unity Engine, кроме того, будут обновлены устаревшие уроки по OpenGL и DirectX (сейчас на сайте описана версия DirectX 9).

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

Для просмотра и скачивания уроков потребуется зарегистрироваться.
Total votes 90: ↑85 and ↓5+80
Comments12

История создания Blade Runner

Reading time11 min
Views15K
При оценке значения «Бегущего по лезвию» для мира видеоигр сложно удержаться от эпитетов вроде «священный Грааль» и тому подобного. Этот мрачный фильм-нуар, соединяющий вместе гении таких мастеров научной фантастики, как писателя Филипа Дика, художника Сида Мида, режиссёра Ридли Скотта и новатора в области спецэффектов Дугласа Трамбулла, фактически послужил прообразом для множества современных виртуальных миров.

Изображенный в нем перенаселенный Лос-Анджелес недалекого будущего, с высокоразвитой архитектурой, промышленностью и технологиями, остается источником вдохновения для многих художников. Тем не менее, по мере приближения 2019 года мы можем испытывать только сожаление — проблемы изоляции, приватизации и уничтожения природы нам слишком хорошо знакомы, но до летающих машин, заселения внеземных колоний и постройки возвышающихся над облаками небоскребов еще далеко. Неудивительно, что художники пытаются создать такое будущее сами.

image

Читать дальше →
Total votes 47: ↑45 and ↓2+43
Comments8

Как изменения в интернет-законодательстве США могут осложнить жизнь российским разработчикам игр и операторам игровых платформ

Reading time4 min
Views24K
Хабравчане, здравствуйте. На днях по роду своей профессиональной деятельности я столкнулась с проблемой, которая практически не освещена в рунете. Речь идет об изменениях в американском «Законе о защите конфиденциальности детей в Интернете» (Children's Online Privacy Protection Act или COPPA), которые затрагивают в том числе и иностранных операторов веб сайтов, в особенности игровых, если оные посещаются юзерами из США.

What is COPPA

COPPA — вещь не новая. Этот федеральный закон вступил в силу в 2000 году и применяется к сбору персональной информации от детей младше 13 лет. Согласно его основным положениям, операторы веб сайтов и интернет сервисов не имеют права запрашивать и хранить личные данные детей без получения официального согласия их родителей или опекунов. Несмотря на то, что законодательством предусмотрено несколько способов испросить согласия, большинство сайтов (например, Facebook, Twitter и Google+) предпочитают попросту блокировать доступ пользователям, не достигшим 13 лет.

В июле 2013 года закон ужесточили. Что произошло? Было расширено определение термина «персональная информация». Теперь сюда входят:

• ФИО;
• Контактные данные, включая адрес проживания, номер телефона, E-Mail, номер ICQ или Skype и тп.
• Ник пользователя, виртуальное имя
• Номер социального страхования
• Фото и видео ребенка, запись его голоса
АХТУНГ: номер cookie, IP-адрес, номер процессора или серийный номер устройства, которое осуществляет доступ в сеть
• Информация о геолокации

Should I care?

Действие COPPA распространяется не только на местные компании, но и на операторов иностранных сайтов, если они ведут дела с США и привлекают американских пользователей. Под удар попадают, например, мобильные приложения, игровые платформы, плагины, рекламные сети.

При этом Федеральная торговая комиссия (FTC), отвечающая за надзор за исполнением закона, делает различия между сайтами, направленными на детей, и сайтами с «широкой аудиторией». Последние должны следовать COPPA лишь случае, когда им известно, что определенной доле их посетителей не исполнилось 13 лет.

Ирония заключается в том, что целевая аудитория сайта или мобильного приложения для FTC значения не имеет. Важно лишь то, кто на самом деле этот сайт посещает, и какие данные о посетителях сайтом фиксируются.
Читать дальше →
Total votes 58: ↑55 and ↓3+52
Comments85

Мошеннические методы монетизации в free-to-play играх

Reading time11 min
Views136K
Примечание переводчика: После публикации статьи с автором связался коммерческий директор из King.com, создателя Candy Crush Saga, и прояснил несколько моментов, после чего автор добавил пару замечаний. Добавленные абзацы отмечены курсивом.

Принудительная монетизация


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

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

Этот дополнительный стресс часто подаётся в форме того, что Роджер Дики из Zynga называет «весёлыми мучениями». Приём заключается в том, чтобы поставить потребителя в очень неудобное или неприятное положение в игре, а потом предложить ему убрать эти «мучения» в обмен на деньги. Эти деньги всегда замаскированы в слоях принудительной монетизации, поскольку потребитель, столкнувшийся с «реальной» покупкой, скорее всего не поведётся на трюк.
Читать дальше →
Total votes 138: ↑131 and ↓7+124
Comments76

Вычислительный интеллект в создании процедурно-генерируемого контента для видеоигр

Reading time2 min
Views5.6K
Профессор Университета Иннополис Джозеф Браун (Канада) записал вебинар для участия в конкурсе 2015 IEEE CIS Webinars Competition о вычислительном интеллекте в создании процедурно-генерируемого контента для видеоигр.

Процедурно-генерируемый контент (Procedural Content Generation — PCG) позволяет создавать контент по параметрам моделей проектных решений с минимальным вмешательством пользователя или предлагает несколько возможных решений. Техники, подразумевающие использование генеративных методов, алгоритмов поиска и эволюции позволяют разработчику контролировать область проектных параметров. Это передовые техники, применяемые в новейших инструментах и ресурсах разработки видео игр. Они обеспечивают увеличение «реиграбельности», снижение расходов и исходные пункты для создания ресурсов, а также учитывают индивидуальный игровой опыт. Данные методы уже применяются в других отраслях, в частности, в моде, архитектуре и промышленном дизайне.

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



Поддержите профессора на создание вебинаров, поставив Like, если вам понравилось.
The abstract of the webinar on English
Total votes 17: ↑12 and ↓5+7
Comments0

Новый пользователь вашего продукта — как ему помочь?

Reading time6 min
Views23K
Так ли понятен пользователю интерфейс Вашего продукта, как Вам кажется? Сможет ли пользователь быстро оценить его достоинства и остаться с Вами надолго?



В статье ниже я рассмотрю концепцию “обучения во взаимодействии” на примере абстрактной web-системы. Данный подход хорошо можно объяснить примером из современного игрового мира. Сначала вы проходите tutorial. Вам на плечи не вешают сразу килотонны обучающего материала. Вас ведут по ранней стадии игры, в нужное время выдавая подсказки. Например, при первом взаимодействии с новым объектом игры. Накапливается положительный опыт. Вы обучаетесь взаимодействовать. Рискну предположить, что скорее всего Вы считаете себя продвинутым пользователем, когда речь касается приложений. Как и большинство из них вы мгновенно жмёте на кнопку “Пропустить” / “Приступить к работе” …
Но на самом деле...
Total votes 43: ↑32 and ↓11+21
Comments48

Information

Rating
1,924-th
Location
Химки, Москва и Московская обл., Россия
Date of birth
Registered
Activity