Как ранее уже сообщалось, я начал активно изучать возможности IntelliJ IDEA. В частности, я стараюсь запомнить наиболее востребованные хоткеи, чтобы выполнять большую часть работы, не отрывая руки от клавиатуры, как это происходит при программировании в Vim. По моим наблюдениям, это реально экономит кучу времени. Я сделал для себя шпаргалку по хоткеям IDEA, которую вы найдете под катом. Полагаю, она также пригодится кому-то из посетителей данного блога.

Итак, мы с вами настроили окружение для программирования на Java. Давайте же теперь попробуем что ли написать на ней какую-нибудь несложную программку, посерьезнее, чем Hello World. Например, программу, которая ходит в реляционную базу данных, выполняет какие-то запросы и получает результат.

В общем, у меня новый ноутик. Мой ультрабук Toshiba Portege Z930-DKS все еще довольно хорош по нынешним меркам. Но если вам захочется запустить локально тяжелое серверное приложение, которым вы занимаетесь на работе, попрогать на Scala или, скажем, поэкспериментировать с распараллеливанием алгоритмов искусственного интеллекта, вы обнаружите, что для таких задач нынешние ультрабуки не годятся. К тому же, на Toshiba у меня стала отваливаться клавиша «N», а купить Fujitsu мне подвернулась возможность всего лишь за 70% его цены.

Темы восьмого выпуска: куда движется проект OpenBSD, как выглядит разработка проекта и как стать коммитером, разрушение мифов о Яндексе, обсуждаем алгоритмы искусственного интеллекта и машинного обучения, а также некоторые другие темы. Предыдущие выпуски: седьмой, шестой, пятый, четвертый.

Как ни крути, но Java — популярный язык программирования и программистам довольно часто приходится иметь с ним дело, нравится им это или нет. Причины могут быть разные. Возможно, вы хотите запустить примеры к прочитанной недавно книге. Или вы работаете с софтом, написанном на Java (Cassandra, Voldemort, Hadoop, ZooKeeper, Jenkins, …). Или вы просто играетесь с одним из относительно новых языков под JVM, например, Groovy, Scala, Clojure или даже каким-нибудь Frege. В общем, Java уже повсюду, и хочешь не хочешь, а приходится в ней немного разбираться.

Перед вашими глазами находится заключительная заметка из серии постов о взломе капчи. В предыдущей части мы успешно обучили многослойную нейронную сеть, распознающую буквы на капче по отдельности. Сегодня мы наконец-то соберем все полученные результаты воедино и узнаем, насколько хорошо все это хозяйство работает.

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

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

Итак, мы с вами полны решимости сломать какую-нибудь капчу. С одной стороны, капча не должна быть слишком простой или уже кем-то сломанной, потому что так не интересно. С другой, выбрав слишком сложную капчу можно потратить кучу времени на ее взлом и не добиться никакого результата. Также желательно, чтобы капча использовалась на каком-нибудь более-менее известном сайте, чтобы наш опыт имел хоть какое-то подобие практической значимости.

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