Pull to refresh
4
0
Владимир Коркин @SaturnYar

User

Send message

Распознавание кириллической Яндекс капчи

Reading time3 min
Views46K
Эта статья продолжает цикл об особенностях, слабых сторонах и непосредственно о распознавании популярных капчей.
В предыдущей публикации мы затронули готовое решение KCAPTCHA, которое несмотря на неплохую защищенность было распознано без сколько-нибудь серьезной предварительной обработки и сегментации, обычным многослойным персептроном.

Теперь на очереди кириллическая Яндекс капча, с которой, уверен, многие из нас отлично знакомы.

Итак, мы имеем такую капчу:

imageimageimage
Читать дальше →
Total votes 51: ↑47 and ↓4+43
Comments17

Возможности роутера ZyXEL Keenetic на прошивке второго поколения NDMS v2.00

Reading time10 min
Views527K
Некоторое время назад на сайте ZyXEL в разделе загрузок для интернет-центра Keenetic появилась бета-версия прошивки под названием NDMS 2.0. Приглашение погонять ее получили также зарегистрированно-заинтересованные владельцы обычных «Кинетиков». В аннотации говорится, что это не очередное обновление, а второе поколение программной платформы, кардинально отличающееся от предыдущего и адресованное продвинутым пользователям. Наиболее интересное из заявленного (по сравнению с микропрограммами первого поколения):
  • Полнофункциональный механизм трансляции адресов (Full feature NAT) с поддержкой нескольких внешних IP-адресов; перенаправление портов с возможностью выбора порта назначения в локальной сети; переназначение ролей сетевых интерфейсов.
  • Поддержка множественных PPP-туннелей для доступа в Интернет и подключения к виртуальным частным сетям (VPN).
  • Возможность назначения нескольких дополнительных физических WAN-интерфейсов на порты встроенного коммутатора Ethernet.
  • Резервирование подключения к интернету через USB-модемы 3G/4G и дополнительно назначаемые WAN-интерфейсы.
  • Профессиональный интерфейс настройки через командную строку (Cisco like CLI). Все функции могут быть настроены с командной строки и сохранены в виде текстового файла.
  • Пакетная сборка прошивки «по требованию». Функциональность устройства выбирается пользователем в веб-интерфейсе устройства и прошивается автоматически.
Читать дальше →
Total votes 46: ↑44 and ↓2+42
Comments79

Быстрая, экономная, устойчивая…

Reading time10 min
Views60K

Если вам понадобится алгоритм сортировки массива, который:
  • Работал бы гарантированно за O(N*log(N)) операций (обменов и сравнений);
  • Требовал бы O(1) дополнительной памяти;
  • Был бы устойчивым (то есть, не менял порядок элементов с одинаковыми ключами)

то вам, скорее всего, предложат ограничиться любыми двумя из этих трёх пунктов. И, в зависимости от вашего выбора, вы получите, например, либо сортировку слиянием (требует O(N) дополнительной памяти), либо пирамидальную сортировку (неустойчив), либо сортировку пузырьком (работает за O(N2)). Если вы ослабите требование на память до O(log(N)) («на рекурсию»), то для вас найдётся алгоритм со сложностью O(N*(log(N)2) — довольно малоизвестный, хотя именно его версия используется в реализации метода std::stable_sort().

На вопрос, можно ли добиться выполнения одновременно всех трёх условий, большинство скажет «вряд ли». Википедия о таких алгоритмах не знает. Среди программистов ходят слухи, что вроде бы, что-то такое существует. Некоторые говорят, что есть «устойчивая быстрая сортировка» — но у той реализации, которую я видел, сложность была всё те же O(N*(log(N)2) (по таймеру). И только в одном обсуждении на StackOverflow дали ссылку на статью B-C. Huang и M. A. Langston, Fast Stable Merging and Sorting in Constant Extra Space (1989-1992), в которой описан алгоритм со всеми тремя свойствами.

Так что же это за алгоритм?
Total votes 155: ↑150 and ↓5+145
Comments29

Разбор регулярных выражений

Reading time1 min
Views100K


Хочу просто поделиться недавно найденным сервисом для работы с регулярными выражениями. Да, это еще один сервис. Но у него есть особенность — он позволяет не только составлять регулярные выражения, но и помогает разбирать уже написанные — эдакий regexp-декомпилятор.
Сервис называется Regex101.

Читать дальше →
Total votes 99: ↑94 and ↓5+89
Comments53

Мини-игра с отслеживанием положения головы или как я встретил headtrackr.js

Reading time6 min
Views25K

11.02.2013 г. Хабраюзер omfg опубликовал статью, с которой началось мое знакомство с headtrackr.js.
В этом топике я расскажу, как средствами браузера с поддержкой getUserMedia получить координаты и угол наклона головы пользователя перед монитором, как учесть дефекты изображения, принимаемого с веб-камеры и отфильтровать их, и как использовать данную технологию в своих проектах, задействовав лишь html + JavaScript.

Применений этому можно придумать огромное количество. Для простоты, в данном топике мы сделаем мини-игру, в которой змейка будет ползти сверху вниз и менять направление в зависимости от положения головы играющего.
Самым нетерпеливым: результат тут.
Читать дальше →
Total votes 59: ↑55 and ↓4+51
Comments38

Делаем приватный монитор из старого LCD монитора

Reading time2 min
Views975K


Вы наконец-то можете сделать кое-что со своим старым LCD монитором, который завалялся у Вас в гараже. Превратите его в шпионский монитор! Для всех вокруг он будет выглядеть просто белым экраном, но не для Вас, потому что у Вас будут специальные «волшебные» очки.

Всё что Вам нужно – это пара старых очков, нож для бумаги и растворитель для краски.

Читать дальше →
Total votes 1486: ↑1468 and ↓18+1450
Comments327

Рандомизированные деревья поиска

Reading time8 min
Views56K

Не знаю, как вы, уважаемый читатель, а я всегда поражался контрасту между изяществом базовой идеи, заложенной в концепцию двоичных деревьев поиска, и сложностью реализации сбалансированных двоичных деревьев поиска (красно-черные деревья, АВЛ-деревья, декартовы деревья). Недавно, перелистывая в очередной раз Седжвика [1], нашел описание рандомизированных деревьев поиска (нашлась и оригинальная работа [2]) — настолько простое, что занимает оно всего треть страницы (вставка узлов, еще страница — удаление узлов). Кроме того, при ближайшем рассмотрении обнаружился дополнительный бонус в виде очень красивой реализации операции удаления узлов из дерева поиска. Далее вы найдете описание (с цветными картинками) рандомизированных деревьев поиска, реализация на С++, а также результаты небольшого авторского исследования сбалансированности описываемых деревьев.
Читать дальше →
Total votes 88: ↑85 and ↓3+82
Comments18

Интеграция JavaScript cookies в CURL-запросы

Reading time10 min
Views25K
В этой статье я расскажу об одной необычной проблеме, с которой мне однажды пришлось столкнуться по роду своей деятельности. Внимание: эта статья не для начинающих. Предполагается, что читатель уже имеет опыт веб-программирования и знаком с языком PHP, библиотекой CURL и основами HTTP.

Перейдем к описанию проблемы.
Мне нужно было написать скрипт бота для одного сайта с целью автоматизации некоторого процесса из нескольких шагов, не считая авторизации.
Читать дальше →
Total votes 51: ↑40 and ↓11+29
Comments68

Git Wizardry

Reading time17 min
Views450K
1 Введение


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

Данный же топик задумывался как непосредственное введение в работу с git, нечто
среднее между tutorial и обобщенной справкой, до которого все же рекомендуется
прочитать упомянутое выше введение. Сознательно избегаются технические
подробности работы git, употребляются только общие для СКВ термины и
ограничивается список упоминаемых команд.

Читать дальше →
Total votes 89: ↑66 and ↓23+43
Comments76

PHP Namespace

Reading time6 min
Views112K
Недавно инкапсулировал свой проект в namespace и столкнулся с проблемой отсутствия нормальной документации. Все, что удалось найти датируется примерно 2009 годом, а на дворе почти 2012… В найденном материале куча нерабочих мест, использующих то, что в нынешней версии php нет. В связи с этим хочу немного осветить этот вопрос.
Читать дальше →
Total votes 86: ↑59 and ↓27+32
Comments46

Читаем QR код

Reading time5 min
Views1.1M
Иногда возникают такие ситуации, когда нужно прочитать QR код, а смартфона под рукой нет. Что же делать? В голову приходит лишь попробовать прочитать вручную. Если кто-нибудь сталкивался с такими ситуациями или кому просто интересно как же читается QR код машинами, то данная статья поможет вам разобраться в этой проблеме.

В статье рассмотрены базовые особенности QR кодов и методика дешифрирования информации без использования вычислительных машин.

Иллюстраций: 14, символов: 8 510.
Читать дальше →
Total votes 623: ↑614 and ↓9+605
Comments109

Алгоритм определения попадания точки в контур на основе комплексного анализа

Reading time4 min
Views130K
Привет всем Хабра людям. Хочу представить уважаемым читателям пример, когда сухая и далекая от жизни в нашем понимании высшая математика дала не плохой практический результат.

image
Читать дальше →
Total votes 83: ↑80 and ↓3+77
Comments100

Information

Rating
Does not participate
Location
Ярославль, Ярославская обл., Россия
Registered
Activity