Как стать автором
Обновить

Декодирование капчи на Python

Время на прочтение12 мин
Количество просмотров79K
Это перевод и форма повествования от первого лица сохранена. Автор — Бен Бойтер, бакалавр информационных технологий в Университете Чарльза Стерта (CSU).


Большинство людей не в курсе, но моей диссертацией была программа для чтения текста с изображения. Я думал, что, если смогу получить высокий уровень распознавания, то это можно будет использовать для улучшения результатов поиска. Мой отличный советник доктор Гао Джунбин предложил мне написать диссертацию на эту тему. Наконец-то я нашел время написать эту статью и здесь я постараюсь рассказать о всем том, что узнал. Если бы только было что-то подобное, когда я только начинал…

Как я уже говорил, я пытался взять обычные изображения из интернета и извлекать из них текст для улучшения результатов поиска. Большинство моих идей было основано на методах взлома капчи. Как всем известно, капча — это те самые всех раздражающее штуки, вроде «Введите буквы, которые вы видите на изображении» на страницах регистрации или обратной связи.

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

У меня неплохо получалось — более 60% изображений было успешно разгадано из моей небольшой коллекции. Довольно неплохо, учитывая количество разнообразных изображений в интернете.

Читать дальше →
Всего голосов 72: ↑63 и ↓9+54
Комментарии65

Связка ExtJS+Django+Apache+SVN deploy (и простой CRUD контроллер на Django)

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

Предисловие

Сразу хочу попросить прощения за столь перегруженную статью, но для меня сейчас всё это актуально и связано. Думаю что некоторым это может пригодиться для будущей разработки. Хочу обратить внимание, что в этой статье я не стану рассказывать вам как устанавливать те или иные тривиальные вещи, установка которых, к тому же, зависит от той или иной платформы. Также в статье я не описываю телодвижения по настройке прав доступа к файлам сервера, опять же, это зависит от реализации. В статье описан процесс настройки на PDC сервер с именем tci.lan, все имена сохранены, в вашем случае их следует заменить на соответствующие вам. Данная статья содержит код, для улучшения читаемости он спрятан в спойлерах.
Читать дальше →
Всего голосов 13: ↑6 и ↓7-1
Комментарии10

Использование Python в многопоточном приложении на C++ и настоящая многопоточность в Python

Время на прочтение7 мин
Количество просмотров40K
Все более или менее знающие Python разработчики знают про такую жуткую вещь как GIL. Глобальный блокировщик всего процесса до тех пор пока Python выполняется в одном из потоков. Он даёт потоко-защищённость методами сравнимыми с садизмом, поскольку любая неявная блокировка в многопоточном приложении смерти подобна, всё что опиралось на параллельное выполнение, умирает в мучениях, раз за разом натыкаясь на блокировку GIL.
Известно что по сей день из-за этого скорбного факта программисты на C++ используют Python-обёртки по большей части лишь в однопоточных приложениях, а программисты на Python пытаются всех убедить, что им и так неплохо живётся.
Казалось бы, если поток порождён в C++, он не знает ни о каком GIL, используй Python без блокировок и радуйся. Радость разработчика однако закончится уже на втором потоке запросившем область глобальных переменных без блокировки.
Однако есть путь ведущий к светлому будущему!
Этот путь был изначально в таком языке как Perl, он же поддерживается в Си-API языка Python и я ума не приложу почему подобный механизм не включен в один из стандартных модулей Python! Способ по сути сводит использование различных под-интерпретаторов Python в разных потоках, причём используя свой GIL для каждого(!!!) без всякого шаманства и магии, просто последовательно вызвав несколько функций и стандартного набора Си-API языка Python!
Читать дальше →
Всего голосов 76: ↑72 и ↓4+68
Комментарии50

Еще раз о многопоточности и Python

Время на прочтение3 мин
Количество просмотров36K
Как известно, в основной реализации Питона CPython (python.org) используется Global Interpreter Lock (GIL). Эта штука позволяет одновременно запускать только один питоновский поток — остальные обязаны ждать переключения GIL на них.

Коллега Qualab недавно опубликовал на Хабре бойкую статью, предлагая новаторский подход: создавть по субинтерпретатору Питона на поток операционной системы, получая возможность запускать все наши субинтерпретаторы параллельно. Т.е. GIL как бы уже и не мешает совсем.

Идея свежая, но имеет один существенный недостаток — она не работает…
Читать дальше →
Всего голосов 56: ↑56 и ↓0+56
Комментарии18

Исследование защиты Wing IDE

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


Доброго здравия! Не удивлюсь, что Вы раньше даже не слышали об этой программе. Как и я, до того дня, когда мне пригодился Python Debugger. Да, знаю, есть pdb, но его функционал и то, как он представлен, мне совершенно не приглянулось. После непродолжительных поисков я наткнулся на этот замечательный продукт. Тут есть все, что может пригодиться в отладке ваших Python приложений (скажу сразу: данный язык я не изучал, поэтому, если какие-то неточности всплывут, просьба не ругаться).
Читать дальше →
Всего голосов 43: ↑35 и ↓8+27
Комментарии52

Предсказание оттока пользователей с помощью метода RFM

Время на прочтение5 мин
Количество просмотров6.3K
Представьте: телефонный звонок в три часа ночи, вы берете трубку и слышите крик о том, что больше никто не пользуется вашим продуктом. Страшно? В жизни, конечно, все не так, но если не уделять должное внимание проблеме оттока пользователей, можно оказаться в похожей ситуации.

Мы уже подробно рассказали, что такое отток: углубились в теорию и показали, как превратить нейросеть в цифрового оракула. Специалисты студии Plarium Krasnodar знают еще один способ предсказания. О нем мы и поговорим.

Читать дальше →
Всего голосов 7: ↑6 и ↓1+5
Комментарии4

Python + Raspberry Pi + Pixhawk и квадрокоптер. Или как не надо делать роботов

Время на прочтение9 мин
Количество просмотров30K
Привет, Хабр!

Меня зовут Алексей, уже 7 лет я ведущий разработчик Smart TV-решений в крупной компании из Ижевска, занимающейся заказной разработкой. Каждый год у нас проводится конкурс новогодних украшений, и каждый раз мы ничего не украшаем, а пилим всякие технологичные штуки. В этот раз скрестили дрон и Smart TV-приложение. А что из этого получилось — читайте ниже.

Идея была вполне реализуема. Хотели сделать квадрокоптер в виде саней Деда Мороза, который бы сам и под музыку развозил по офису подарки для сотрудников. При этом ориентироваться в пространстве он должен был с помощью анализа ArUco-меток, взаимодействуя с приложениями для телевизоров («сдувание» работающими винтами дыма из труб, выбегание зверушек для встречи/провожания квадрокоптера).

И на все три месяца. Конечно же, мы не успели.

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


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

Как создать свою собственную библиотеку AutoML в Python с нуля

Время на прочтение8 мин
Количество просмотров5.9K
Библиотеки и сервисы AutoML вошли в мир машинного обучения. Для дата-сайентиста это очень полезные инструменты, но иногда они должны быть адаптированы к потребностям бизнес-контекста, в котором работает дата-сайентист. Вот почему вам нужно создать свою собственную библиотеку AutoML. В преддверии старта нового потока курса «Машинное обучение» мы делимся материалом, в котором описано, как это сделать на Python.


Давайте начнём
Всего голосов 20: ↑20 и ↓0+20
Комментарии0

Вот ваш мозг на Питоне: исследователи расшифровали нейро-механику программирования

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


Как активизируются области мозга во время программирования, логических рассуждений и при использования языка. Иллюстрация Университета Джона Хопкинса.

Исследователи из Университета Джона Хопкинса составили карту мозговой активности опытных компьютерных программистов, пока те ломали голову над кодом. В результате стала очевидной нейронная механика, лежащая в основе этого все более востребованного навыка.
Как ваш мозг справляется с Python?
Всего голосов 29: ↑29 и ↓0+29
Комментарии11

Хакатоны Зима 2020

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

Недавно мы с друзьями поучаствовали в хакатоне Агрокод, прошедший в течении выходных с 11 по 13 декабря. Хакатон проводил Россельхозбанк. В хакатоне мы участвовали командой из 5 человек. Мы выбрали трек – ‘Нейросеть для обнаружения заболеваний листьев яблони по фотографии’. В этом посте мы описали как прошел хакатон, какая у нас была модель, какая методика файн-тунинга, какой был веб интерфейс.

Читать далее
Всего голосов 5: ↑4 и ↓1+3
Комментарии0

Скрапинг современных веб-сайтов без headless-браузеров

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


Многие разработчики считают скрапинг сложной, медленной и неудобной для масштабирования задачей, особенно при работе с headless-браузерами. По моему опыту, можно заниматься скрапингом современных веб-сайтов даже не пользуясь безголовыми браузерами. Это очень простой, быстрый и хорошо масштабируемый процесс.

Для его демонстрации вместо Selenium, Puppeteer или любого другого решения на основе безголовых браузеров мы просто используем запросы на Python. Я объясню, как можно скрапить информацию из публичных API, которые потребляет на фронтэнде большинство современных веб-сайтов.

На традиционных веб-страницах наша задача заключается в парсинге HTML и извлечении нужной информации. На современных веб-сайтах фронтэнд скорее всего не будет содержать особо много HTML, потому что данные получаются асинхронно после первого запроса. Поэтому большинство людей использует безголовые браузеры — они способны выполнять JavaScript, делать дальнейшие запросы, после чего можно распарсить всю страницу целиком.

Но существует и другой способ, которым можно довольно часто пользоваться.
Читать дальше →
Всего голосов 48: ↑38 и ↓10+28
Комментарии31

Разрабатываем и развёртываем собственную платформу ИИ с Python и Django

Время на прочтение11 мин
Количество просмотров23K
Взлёт искусственного интеллекта привёл к популярности платформ машинного обучения MLaaS. Если ваша компания не собирается строить фреймворк и развёртывать свои собственные модели, есть шанс, что она использует некоторые платформы MLaaS, например H2O или KNIME. Многие исследователи данных, которые хотят сэкономить время, пользуются этими инструментами, чтобы быстро прототипировать и тестировать модели, а позже решают, будут ли их модели работать дальше. 

Но не бойтесь всей этой инфраструктуры; чтобы понять эту статью, достаточно минимума знаний языка Python и фреймворка Django.  Специально к старту нового потока курса по машинному обучению в этом посте покажем, как быстро создать собственную платформу ML, способную запускать самые популярные алгоритмы на лету.


Портрет Орнеллы Мути Джозефа Айерле (фрагмент), рассчитанный с помощью технологии искусственного интеллекта.
Приятного чтения!
Всего голосов 27: ↑23 и ↓4+19
Комментарии3

5++ способов в одну строку на Python решить первую задачу Проекта Эйлера

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

Однажды меня посетила мысль, а что если попробовать решить первую задачу Проекта Эйлера всевозможными способами, но с условием, что решение должно быть в одну строку. В итоге получилось более пяти однострочных решений с применением Filter, Map, Reduce, Generator Expression и т.д. В этой статье я покажу то, к чему я пришёл.

Читать далее
Всего голосов 15: ↑13 и ↓2+11
Комментарии13

Продолжаем велосипедостроение с Python, xml, csv, sqlite. Часть 2. Ищем и правим ошибки, пока не налетаем на…

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

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

окончание трилогии тут (часть 3): "Последний велосипедно-питоний бой с ошибками импорта sqlite за 2 174 433 строчки. Часть 3"

Читать далее
Всего голосов 1: ↑0 и ↓1-1
Комментарии2

Когда одной ARIMA мало. Прогнозирование временных рядов нейросетями

Уровень сложностиСредний
Время на прочтение12 мин
Количество просмотров8K

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

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

Читать далее
Всего голосов 7: ↑7 и ↓0+7
Комментарии9

Работа с временными рядами в Python. Часть 1

Уровень сложностиПростой
Время на прочтение13 мин
Количество просмотров20K


Аналитика данных стала неотъемлемой частью современного бизнеса и научных исследований. И одним из ключевых аспектов анализа данных являются временные ряды. Эффективная работа с временными рядами играет критическую роль в прогнозировании, стратегическом планировании и принятии решений в различных отраслях.

Временные ряды — это наборы данных, где каждая точка данных связана с определенным моментом времени. Это может быть что угодно, от ежедневных финансовых показателей до ежечасных кликов на веб-сайте или даже месячных показателей погоды. Зачем нам это нужно? Потому что временные ряды предоставляют нам ценную информацию о том, как меняются данные со временем.
Читать дальше →
Всего голосов 25: ↑23 и ↓2+21
Комментарии2

Работа с временными рядами в Python. Часть 2

Уровень сложностиПростой
Время на прочтение10 мин
Количество просмотров8.4K


Добро пожаловать во вторую часть нашей серии статей "Работа с временными рядами в Python." В первой части, мы ознакомились с основами работы с временными рядами и научились анализировать и визуализировать их. Теперь мы переходим к более продвинутым аспектам этой увлекательной темы.
Читать дальше →
Всего голосов 25: ↑23 и ↓2+21
Комментарии3

Реверс мобильных приложений на cocos2dx

Уровень сложностиПростой
Время на прочтение2 мин
Количество просмотров2.4K

Хочу поделиться своим опытом в реверс инженеринге приложения на lua cocos2d-x. Файлы приложения зашифрованы xxtea, а ключи шифрования находятся в .so файле внутри приложения.

Читать далее
Всего голосов 12: ↑12 и ↓0+12
Комментарии3

Разработка алгоритмов обработки данных в реальном времени на Python

Уровень сложностиПростой
Время на прочтение14 мин
Количество просмотров7.4K


Привет, Хабр!

Разработчикам все чаще приходится создавать эффективные алгоритмы обработки и анализа данных по мере их поступления и без задержек. В этой статье мы рассмотрим ключевые аспекты разработки на Python начиная с выбора инструментов и заканчивая оптимизацией производительности и обеспечением безопасности системы. Погрузимся глубже в тему, предоставив вам множество примеров кода и практических рекомендаций для успешной разработки.
Читать дальше →
Всего голосов 13: ↑12 и ↓1+11
Комментарии0

Управление сетевыми устройствами: Orange Pi, OpenWRT и Python

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

Современный мир интернета вещей (IoT) и смарт-устройств требует гибкости и мощности при управлении сетевым оборудованием. Найти подходящее решение, сочетающее в себе одновременно простоту, надежность и доступность, может быть сложной задачей. Сегодня я хочу рассмотреть одну из таких комбинаций: одноплатный компьютер Orange Pi с операционкой OpenWRT + Python.

Orange Pi – мощная и компактная альтернатива другим одноплатным компьютерам. Он обладает большой вычислительной мощностью, расширяемыми возможностями и множеством интерфейсов. OpenWRT, в свою очередь, легкая и гибкая ОС, специально разработанная для маршрутизаторов и сетевых устройств. ОС предлагает широкие возможности настройки и расширения сетевых функций. Ну и Python – один из самых популярных языков программирования в мире, предоставляет простоту и эффективность для разработки скриптов и автоматизации задач.

Читать далее
Всего голосов 5: ↑5 и ↓0+5
Комментарии1