Search
Write a publication
Pull to refresh
-2
1.8

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

Send message

GridStack ­— Пример практического применения flex+bison

Reading time31 min
Views11K
В последнее время на Хабре появились несколько статей, посвящённых грамматическому разбору выражений.
И это замечательно! По моему скромному мнению, каждый программист должен хоть раз в жизни написать разбор выражения. Постараюсь и я внести свою лепту в общее дело.

Методов разбора существует множество (рекомендую следующий обзор Dick Grune, Ceriel J. H. Jacobs — Parsing Techniques: A Practical Guide, ISBN 0-13-651431-6). Причём реализации методов варьируются от полностью ручных до использования автоматизированных генераторов, таких как bison, antlr, lemon и других.
В то время, как ручное написание лексических и синтаксических (далее я буду называть из лексер и парсер) разборов позволяет достичь максимальной скорости и контроля (особенно над ошибками и способами их преодоления), использование генераторов позволяет сосредоточиться непосредственно на задаче, облегчает модификацию грамматики и бережёт время. Умение владеть такими инструментами позволяет чаще прибегать к DSL (Domain Specific Language) и вообще видеть возможность их применения.

Я хочу привести пример использования bison (парсер) и flex (лексер) в реальной жизни: от возникновения задачи, до её решения.

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

Самозащита антивирусов или режем антивирус без ножа

Reading time4 min
Views8.6K
Привет всем!

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

Сегодня мы поговорим о другом спорном моменте антивирусов — самозащите. Некоторые вендоры очень серьёзно относятся к этому моменту, и их продукты выстаивают даже в сложных комплексных случаях активного заражения, эффективно снимая вирусные перехваты, устанавливаясь в систему и даже в последующем удаляя уже изрядно прописавшихся зловредов. Другие считают, что активное заражение — это битва с ветряными мельницами, не приводящая ни к чему путному, а потому — LiveCD, а в ряде случаев и format c:

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

Но не будем предаваться спорам — оставим это для следующей статьи :) Поговорим о простом: о самозащите системы даже на заведомо незаражённой системе. И примем априори:

1) имеется комплексный продукт антивирус+хипс+файервол;
2) система была незаражена, но каким-то образом проник вредоносный код;
3) вредоносный код имеет своим намерением удалить антивирус или повредить его настолько, чтобы обеспечить полную неработоспособность.

Вариант действий будет самым простым — попытка удаления жизненно важных файлов антивируса с правами Local System. Идея такого подхода принадлежит моему хорошему другу Алексею Баранову, который сообщил о ней в закрытых кругах некоторое время назад. Время прошло, будем считать, что вендоры подтянулись — проверим это.
Читать дальше →

Sage: математика open source

Reading time2 min
Views12K
Материал публикуется в рамках проекта Computer Science Student. Блога о математике с удивлением не обнаружил, возможность создать новый блог с удивлением не обнаружил тоже.

Сегодня я хочу познакомить вас с Sage.

Одним из курсов в последнем семестре у меня был Mathematical Software, где мы изучали фундаментальные алгоритмы, лежащие в основе почти всех математических операций, проводимых в компьютере (удобные для вычислений виды представления данных, быстрое умножение, трансформации Фурье, алгоритм Карацубы и т.д.). Курс не был похож на другие: к концу семестра в классе осталось только трое человек; не было никаких тестов или экзаменов, финальная оценка состояла из двух домашних заданий и одного проекта; и, наконец, я давно не исписывал сотню с лишним страниц тетради в течение одного курса. Практическая часть — работа с системой Sage.

Sage (анг. 'Мудрец') — система компьютерной алгебры покрывающая много областей математики, включая алгебру, комбинаторику, вычислительную математику и матанализ. Первая версия Sage была выпущена 24 февраля 2005 года в виде свободного программного обеспечения с лицензией GNU GPL. Первоначальной целью проекта было «создание открытого программного обеспечения альтернативного системам Magma, Maple, Mathematica, и MATLAB». Разработчиком Sage является Уильям Стейн — математик Университета Вашингтона.

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

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

Введение в разработку USB периферии

Reading time4 min
Views50K
Последние полгода я участвую в разработке первого в своей жизни USB-устройства и прикладного ПО к нему, и сейчас хочу поделиться своим пониманием того, как там всё работает: микроконтроллер, драйвер, прикладное ПО. Также затрону вопрос о выборе идентификаторов VID/PID. Список полезных ссылок для желающих более подробно разобраться в теме прилагается.
Читать дальше →

Пишем драйвер для USB девайса. Pipe 0: что такое usb?

Reading time3 min
Views24K
Случилось так, что пришлось мне писать с нуля драйвер для usb дисплея под windows. Имея возможность — расскажу о деталях столь занимательного процесса.
image

USB – это simple

Несмотря на то, что написание драйверов считается достаточно трудным, в сравнении с прикладным программированием – и в этом низкоуровневом мире программисты не были обделены вниманием, большим шагом в упрощении создания драйверов стала разработка шины usb.
Итак, почему же шина usb так удобна, и что скрывает за собой слово Universal в расшифровке аббревиатуры.
Читать дальше →
12 ...
331

Information

Rating
1,898-th
Registered
Activity