Синтаксический анализ в NLTK. Продолжение

Автор: admin от 18-11-2017, 23:55, посмотрело: 182

Здравствуйте. Это небольшое продолжение предыдущей статьи, где рассматривались основы синтаксического анализа с помощью пакета Natural Language Toolkit (сокращенно, NLTK). Как и в прошлой статье, в этой я буду сопровождать примеры кодом на языке Python (версии 2.7).



Вступление



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



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

Категория: Программирование » Game Development

 

UniRx — Rx для Unity3d

Автор: admin от 18-11-2017, 23:55, посмотрело: 235

Всем привет! Давно уже хотел написать статью о UniRx на Unity3d. Начнем с небольшой философии RX программирования. Например, разрабатывая игру, мы создаем кнопку, наблюдаем событие клика этой кнопки и реагируем на это каким нибудь кодом.

Реактивное программирование — это всё то же самое, только на стероидах, то есть мы можем создавать потоки данных всего. И также наблюдать за ними и реагировать. Update, OnCollisionEnter, Coroutine, Event, Mouse input, Keyboard input, Joystick input — все это потоки.
Все что нас окружает это потоки.

UniRx — Rx для Unity3d

Категория: Программирование » Game Development

 

Подробный разбор решения crackme01_x64

Автор: admin от 18-11-2017, 22:00, посмотрело: 259

Данная статья рассчитана на начинающих, интересующихся обратной разработкой, и имеющих базовые представления о работе ЦП, языке ассемблера. Этот crackme относительно старый и простой, но при его решении применяются в основном те же приемы, что и при решении более сложных. На просторах Сети можно найти несколько статей с его разбором такие как эта, а еще он здесь упоминается(crackme то с историей), однако те решения не такие подробные как это. В свое время мне сильно не хватало такого построчного разбора, куда можно было бы заглянуть, когда запутался и не понимаешь что делает тот или иной участок кода. Если этот пост окажется полезным хотя бы для одного человека, значит я не зря старался. Все скрины(кроме первого) кликабельны. Приятного прочтения.

Итак, перед нами простой crackme, запустим его и посмотрим как он работает.

Подробный разбор решения crackme01_x64

Ага, все довольно просто, мы должны ввести правильный серийник. Теперь откроем программу в дизассемблере. Как правило дизассемблерные листинги, даже относительно простых программ, довольно объемны. Для определения той части кода, которая проверяет ввод серийника, найдем где в памяти программы хранится строка с сообщением об ошибке «Fail, Serial is invalid !!!» и какой код к этой строке обращается.

Категория: Программирование

 

Опыт выявления одного бага или как не надо оформлять свой код

Автор: admin от 18-11-2017, 22:00, посмотрело: 127

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

Категория: Программирование

 

Как написать свой первый Linux device driver. Часть 3

Автор: admin от 18-11-2017, 19:35, посмотрело: 147

Добрый вечер, хаброчитатели!



В предыдущих статьях (один, два) мы определили понятие символьного устройства и написали простейший пример символьного драйвера. Последняя часть посвещена проверки его работоспособности. На Хабре уже есть примеры как можно протестировать драйвер, например: тык.



Я попытаюсь рассмотреть данный вопрос чуть подробнее, надеюсь, вам понравится.



Как написать свой первый Linux device driver. Часть 3

Категория: Операционные системы » Linux

 

Частное облако: «синяя изолента» для сурового энтерпрайза

Автор: admin от 18-11-2017, 18:25, посмотрело: 164

Вот вроде бы облака — это здорово. Арендуешь себе виртуальные ресурсы на виртуальном сервере, размазанном по дата-центрам всей планеты. И ни о чем не беспокоишься, кроме пополнения счета — вся поддержка и т.п. automagically выполняется сама собой. Но в один «прекрасный день» Hetzner или даже Amazon вдруг извинится за совершенно форс-мажорно упавший сервер и безвозвратно потерянные данные. В качестве компенсации за простой вам обязательно перечислят $10, согласно пункту соглашения 122.3(d). Слабая поддержка против контрагентов и клиентов, собравшихся вокруг центрального офиса с факелами, канистрами и странным блеском в глазах.

 

В такие моменты хочется купить билет куда-нибудь в Эквадор или Пуэрто-Рико. А взгляд падает на уютный запылившийся сервер в глубине офиса. Что делать?

 

Частное облако: «синяя изолента» для сурового энтерпрайза

Категория: Компании » Facebook

 

Facebook или Google? Где выгоднее давать рекламу в 2017 году

Автор: admin от 18-11-2017, 18:25, посмотрело: 304

Задача простая. Доступно 2 канала привлечения посетителей: Facebook и AdWords. Туроператор с годовым бюджетом примерно $60.000 долл на оба канала.



Владелец бизнеса спрашивает: Где выгоднее давать рекламу? Другими словами куда лучше инвестировать доллар чтобы заработать больше прибыли и заказов?



Facebook или Google? Где выгоднее давать рекламу в 2017 году


Итак по порядку.



Часть 1. Анализируем посещаемость.

Категория: Компании » Facebook

 

Паттерн Model-Update-View и зависимые типы

Автор: admin от 18-11-2017, 12:20, посмотрело: 136

Паттерн Model-Update-View и зависимые типы


Model-Updater-View — функциональный паттерн, успешно применяемый в языке Elm в основном для разработки пользовательских интерфейсов. Что бы им воспользоваться надо создать тип Model, представляющий полное состояние программы, тип Message, описывающий события внешней среды, на которые программа должна реагировать, меняя свое состояние, функцию updater, которая из старого состояния и сообщения создает новое состояние прораммы и функции view, которая вычисляет по состоянию программы требуемые воздействия на внешнюю среду, которые порождают события типа Message. Паттерн очень удобный, но у него есть маленький недостаток — он не позволяет описать какие события имеют смысл для конкретных состояний программы.



Схожая проблема возникает (и решается) и при использовании ОО-паттерна State.



Язык Elm простой, но очень строгий — он проверяет, что функция updater хоть как-то обрабатывает все возможные сочетания модели-состояние и сообщения-события. По этому приходится писать лишний, пусть и тривиальный — как правило оставляющий модель без изменений, код. Я хочу продемонстрировать, как этого можно избежать в более сложных языках — Idris, Scala, C++ и Haskell.

Категория: Программирование

 

Автоматное программирование. Часть 4. Эффективность автоматно-спроектированных программ

Автор: admin от 18-11-2017, 12:20, посмотрело: 177

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

Я бы сформулировал вопрос иначе: насколько эффективны автоматно-спроектированные программы? Такая формулировка вопроса намекает, что автоматное проектирование — источник высокой эффективности программ. Я ещё практически не касался столь важной темы как эффективность, и пример «Дисплей» идеально подходит для иллюстрации эффективности автоматного проектирования. В первой статье я познакомил читателей с «лабораторной» версией этого модуля, но тестировать я буду «боевой» вариант, процесс проектирования которого я приведу в следующей статье. Исследование эффективности будет выполнено для платформ msp430 и CortexM3.

Чтобы не быть субъективным, оценивая эффективность, нужно с чем-то сравнивать результаты. Поэтому я проведу тот же комплекс испытаний для неавтоматной реализации примера «Дисплей» любезно предоставленной michael_vostrikov, за что ему огромная благодарность и плюсы в карму.

Категория: Программирование

 

Советы самому себе в молодости (дизайнерская версия)

Автор: admin от 18-11-2017, 12:20, посмотрело: 136

Советы самому себе в молодости (дизайнерская версия)




Я переехал в Сан-Франциско в 2013 году будучи младшим дизайнером с довольно небольшим опытом и огромным желанием с головой окунуться в мир дизайна. Я много что испытал за последние 4 года — и мне все еще нужно многому учиться как дизайнеру и профессионалу в своей области — я решил записать некоторые из самых больших уроков, которые я хотел бы преподнести себе из прошлого, в то время, когда я только переехал в Сан-Франциско



Найдите наставников для всего



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



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

Категория: Программирование » Веб-разработка

 
Назад Вперед