Ассоциация по защите прав в интернете (АЗАПИ), издатели и интернет-магазины Азбука-Аттикус, Альпина паблишер, АСТ, Аудиокнига, Литрес, Эксмо с одной стороны и ВКонтакте с другой, договорились, что уже на следующей неделе соцсеть запустит премодерацию для загружаемых рядовыми обитателями сети книг. Как Читать полностью »
Метка «AST»
ВК разлюбил пиратские книги, как только начал торговать книгами сам
2019-09-12 в 1:44, admin, рубрики: Biblio, азапи, Вконтакте, книги, Максим Рябыко, Медиа, пиратство, соцсети, Текучка, Эксмо, метки: AST, Biblio, LitRes, АЗАПИ, Вконтакте, книги, Максим Рябыко, медиа, пиратство, соцсети, Текучка, ЭксмоВКонтакте/Biblio предложили аудиокниги вдвое дешевле, чем «ЛитРес» и Storyte
2019-05-13 в 13:55, admin, рубрики: Storytel, Вконтакте, запуск, книги, Медиа, платный контент, соцсети, Текучка, Эксмо, метки: AST, LitRes, Storytel, Вконтакте, запуск, книги, медиа, платный контент, соцсети, Текучка, ЭксмоКомпания «Библио» Ильи Коротихина, Карена Мирзояна и Юлии Савчук стала поставщиком аудиокниг для запланированного к запуску нового подписного сервиса ВКонтакте. Представитель соцсети рассказал РБК, что книжный проект запустится в конце мая. ВК и Biblio разделят выручку от безлимитных подписок и от штучных продаж аудиокниг.
Партнёры уже договорились о распространении книг «Читать полностью »
MacroGroovy — работа с AST на Groovy ещё никогда не была такой простой
2013-12-06 в 10:58, admin, рубрики: AST, dsl, groovy, java, macro, метки: AST, dsl, groovy, java, macro
Последнее время часто приходится работать с такой мощной возможностью Groovy как Compile-time AST Transformations.
Так как я не люблю излишнюю динамику, то бОльшая часть проверок DSL на валидность у нас происходит на этапе компиляции, а так же мы используем очень много генерации кода. Поэтому каждый день приходится сталкиваться с составлением ASTNode-ов вручную.
def someVariable = new ConstantExpression("someValue");
def returnStatement = new ReturnStatement(
new ConstructorCallExpression(
ClassHelper.make(SomeCoolClass),
new ArgumentListExpression(someVariable)
)
);
До боли знакомые конструкции, не правда ли? Хотите, чтобы было вот так?
def someVariable = macro { "someValue" }
def returnStatement = macro { return new SomeCoolClass($v{ someVariable }) }
Или даже так?
def constructorCall = macro { new SomeCoolClass($v{ macro { "someValue" } }) }
В данной статье речь пойдёт о моём решении этой проблемы, максимально близком к родному решению Groovy — github.com/bsideup/MacroGroovy
Самая короткая запись асинхронных вызовов в tornado v2, или патчим AST
2012-10-08 в 7:51, admin, рубрики: AST, python, tornado, visitor, yield, Компиляторы, ненормальное программирование, метки: AST, python, tornado, visitor, yield, компиляторы Меня очень заинтересовала статья Самая короткая запись асинхронных вызовов в tornado или патчим байткод в декораторе, не столько с практической точки зрения, сколько с точки зрения реализации.
Всё-таки модификация байткода в рантайме это слишком опасная и ненадежная операция. И уж наверняка не поддерживаемая альтернативными интерпретаторами Python.
Попробуем исправить этот недостаток способом, который для этого предназначен куда больше и который применяется для схожих целей во многих других языках (я точно встречал в Lisp или Erlang). Этот способ — модификация Абстрактного синтаксического дерева (AST) программы.
Читать полностью »
Groovy и трансформации AST на службе безопасности приложения
2012-06-17 в 16:34, admin, рубрики: AST, bytecode, groovy, java, Программирование, метки: AST, bytecode, groovy, javaПредыстория
Мы разрабатываем небольшой портал на Grails и используем Spring Security для управления безопасностью. Плагин spring-security для Grails достаточно удобен и до последнего момента от него не требовалось сложной функциональности.
Недавно был обнаружен неприятный момент в использовании аннотаций @Secured для методов контроллеров Grails. Проблема заключается в том, что аннотации обрабатываются во время исполнения и преобразуются в набор правил для адресов «Адрес -> Набор требуемых ролей». Такой подход порождает ряд проблем в Grails-контроллерах сохранения/удаления данных, поскольку они отправляют данные на основной URL контроллера, то приходиться во-первых аннотировать контроллер, во вторых — невозможно задать различные ограничения для таких запросов.
Речь пойдёт о том, как решить проблему и приобрести хороший инструмент правил безопасности.
Читать полностью »
Использование parse_transform
2012-03-21 в 12:01, admin, рубрики: AST, erlang, Erlang/OTP, метки: AST, erlangDisclaimer: Описываемый инструмент имеет спорную репутацию. Я не призываю использовать его где ни попадя, только знакомлю с используемыми понятиями, дабы уменьшить некоторым трепет перед технологией.
Что такое parse_transform
parse_transform — механизм изменения AST перед компиляцией. Предназначен для изменения значения конструкций (семантики), не выходя за синтаксис Эрланга.
К сожалению, в Сети мало информации про это, что делает порог вхождения весьма высоким для не-гуру эрланга.
Что мы будем делать
В рамках данной статьи я немного рассказажу про AST эрланга, приведу пример простых трансформаций, а так же покажу процесс написания parse_transform для создания stateless gen_server-а (задача имеет не особо много смысла, но в качестве примера использования сгодится), а в конце дам ссылку на набор начинающего транформатора.